<?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>124615</bug_id>
          
          <creation_ts>2013-11-19 16:16:33 -0800</creation_ts>
          <short_desc>Update ANGLE</short_desc>
          <delta_ts>2013-11-22 10:59:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Roger Fong">roger_fong</reporter>
          <assigned_to name="Roger Fong">roger_fong</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>dino</cc>
    
    <cc>roger_fong</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>952292</commentid>
    <comment_count>0</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2013-11-19 16:16:33 -0800</bug_when>
    <thetext>Updating ANGLE, I&apos;ve udpated to 11/7 checkout a60e0805721f62c28a55faf2df74472cc5fc91fc

Patch adds files, removes old ones, modifies xcode project and resolves build errors.
It also removes the need for Derived Sources and makes the project just use modified versions of the generated sources that came with the ANGLE checkout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952308</commentid>
    <comment_count>1</comment_count>
      <attachid>217355</attachid>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2013-11-19 16:28:24 -0800</bug_when>
    <thetext>Created attachment 217355
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952322</commentid>
    <comment_count>2</comment_count>
      <attachid>217361</attachid>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2013-11-19 16:58:07 -0800</bug_when>
    <thetext>Created attachment 217361
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952333</commentid>
    <comment_count>3</comment_count>
      <attachid>217364</attachid>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2013-11-19 17:15:31 -0800</bug_when>
    <thetext>Created attachment 217364
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952336</commentid>
    <comment_count>4</comment_count>
      <attachid>217364</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-11-19 17:30:10 -0800</bug_when>
    <thetext>Comment on attachment 217364
Patch

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

&gt; Source/ThirdParty/ANGLE/ChangeLog:10
&gt; +        Update ANGLE to checkout a60e0805721f62c28a55faf2df74472cc5fc91fc.
&gt; +        Modify xcodeproj files as necessary, update plist.
&gt; +        Stop using DerivedSources.make and just use the generated sources that are checked into ANGLE.

Please add that Apple added a note clarifying the license we distribute under.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952350</commentid>
    <comment_count>5</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2013-11-19 17:51:35 -0800</bug_when>
    <thetext>Committed: http://trac.webkit.org/changeset/159533</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953114</commentid>
    <comment_count>6</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-11-21 08:56:31 -0800</bug_when>
    <thetext>Also incorporated to &lt;rdar://problem/15521222&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953620</commentid>
    <comment_count>7</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-11-22 10:55:32 -0800</bug_when>
    <thetext>&lt;rdar://problem/14748275&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953622</commentid>
    <comment_count>8</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-11-22 10:59:42 -0800</bug_when>
    <thetext>*** Bug 119851 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217355</attachid>
            <date>2013-11-19 16:28:24 -0800</date>
            <delta_ts>2013-11-19 16:58:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124615-20131119162823.patch</filename>
            <type>text/plain</type>
            <size>899521</size>
            <attacher name="Roger Fong">roger_fong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1OTUzMCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDQ4NiBAQAorMjAxMy0xMS0xOSAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgor
CisgICAgICAgIFVwZGF0ZSBBTkdMRSBzb3VyY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjE1LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBBTkdMRSB0byBjaGVja291dCBhNjBlMDgw
NTcyMWY2MmMyOGE1NWZhZjJkZjc0NDcyY2M1ZmM5MWZjLgorICAgICAgICBNb2RpZnkgeGNvZGVw
cm9qIGZpbGVzIGFzIG5lY2Vzc2FyeSwgdXBkYXRlIHBsaXN0LgorICAgICAgICBTdG9wIHVzaW5n
IERlcml2ZWRTb3VyY2VzLm1ha2UgYW5kIGp1c3QgdXNlIHRoZSBnZW5lcmF0ZWQgc291cmNlcyB0
aGF0IGFyZSBjaGVja2VkIGludG8gQU5HTEUuCisKKyAgICAgICAgKiBBTkdMRS5wbGlzdDoKKyAg
ICAgICAgKiBBTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIERlcml2
ZWRTb3VyY2VzLm1ha2U6IFJlbW92ZWQuCisgICAgICAgICogaW5jbHVkZS9FR0wvZWdsLmg6Cisg
ICAgICAgICogaW5jbHVkZS9FR0wvZWdsc29mdGxpbmtpbmcuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBpbmNsdWRlL0dMRVMyL2dsMi5oOgorICAgICAgICAqIGluY2x1ZGUvR0xFUzIvZ2wyc29mdGxp
bmtpbmcuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5o
OgorICAgICAgICAqIGluY2x1ZGUvS0hSL2tocnBsYXRmb3JtLmg6CisgICAgICAgICogc3JjL0FO
R0xFLnNsbjogQWRkZWQuCisgICAgICAgICogc3JjL2J1aWxkX2FuZ2xlLmd5cGk6CisgICAgICAg
ICogc3JjL2NvbW1vbi9kZWJ1Zy5oOgorICAgICAgICAqIHNyYy9jb21tb24vZXZlbnRfdHJhY2Vy
LmNwcDogQWRkZWQuCisgICAgICAgIChnbDo6VHJhY2VHZXRUcmFjZUNhdGVnb3J5RW5hYmxlZEZs
YWcpOgorICAgICAgICAoZ2w6OlRyYWNlQWRkVHJhY2VFdmVudCk6CisgICAgICAgICogc3JjL2Nv
bW1vbi9ldmVudF90cmFjZXIuaDogQWRkZWQuCisgICAgICAgICogc3JjL2NvbW1vbi92ZXJzaW9u
Lmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0NvZGVHZW4uY3BwOiBBZGRlZC4KKyAgICAgICAg
KENvbnN0cnVjdENvbXBpbGVyKToKKyAgICAgICAgKERlbGV0ZUNvbXBpbGVyKToKKyAgICAgICAg
KiBzcmMvY29tcGlsZXIvQ29kZUdlbkdMU0wuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9j
b21waWxlci9Db2RlR2VuSExTTC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3JjL2NvbXBpbGVy
L0NvbW1vbi5oOgorICAgICAgICAoTmV3UG9vbFRTdHJpbmcpOgorICAgICAgICAqIHNyYy9jb21w
aWxlci9Db21waWxlci5jcHA6CisgICAgICAgIChUQ29tcGlsZXI6OkluaXQpOgorICAgICAgICAo
VENvbXBpbGVyOjpjb21waWxlKToKKyAgICAgICAgKFRDb21waWxlcjo6SW5pdEJ1aWx0SW5TeW1i
b2xUYWJsZSk6CisgICAgICAgIChUQ29tcGlsZXI6OmNsZWFyUmVzdWx0cyk6CisgICAgICAgIChU
Q29tcGlsZXI6OmNvbGxlY3RWYXJpYWJsZXMpOgorICAgICAgICAqIHNyYy9jb21waWxlci9Db25z
dGFudFVuaW9uLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVpdHku
Y3BwOgorICAgICAgICAqIHNyYy9jb21waWxlci9JbmZvU2luay5oOgorICAgICAgICAqIHNyYy9j
b21waWxlci9Jbml0aWFsaXplRGxsLmNwcDoKKyAgICAgICAgKEluaXRQcm9jZXNzKToKKyAgICAg
ICAgKERldGFjaFByb2Nlc3MpOgorICAgICAgICAqIHNyYy9jb21waWxlci9Jbml0aWFsaXplRGxs
Lmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0luaXRpYWxpemVHTFBvc2l0aW9uLmNwcDogQWRk
ZWQuCisgICAgICAgIChJbml0aWFsaXplR0xQb3NpdGlvbjo6dmlzaXRBZ2dyZWdhdGUpOgorICAg
ICAgICAoSW5pdGlhbGl6ZUdMUG9zaXRpb246Omluc2VydENvZGUpOgorICAgICAgICAqIHNyYy9j
b21waWxlci9Jbml0aWFsaXplR0xQb3NpdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEluaXRpYWxp
emVHTFBvc2l0aW9uOjpJbml0aWFsaXplR0xQb3NpdGlvbik6CisgICAgICAgIChJbml0aWFsaXpl
R0xQb3NpdGlvbjo6dmlzaXRCaW5hcnkpOgorICAgICAgICAoSW5pdGlhbGl6ZUdMUG9zaXRpb246
OnZpc2l0VW5hcnkpOgorICAgICAgICAoSW5pdGlhbGl6ZUdMUG9zaXRpb246OnZpc2l0U2VsZWN0
aW9uKToKKyAgICAgICAgKEluaXRpYWxpemVHTFBvc2l0aW9uOjp2aXNpdExvb3ApOgorICAgICAg
ICAoSW5pdGlhbGl6ZUdMUG9zaXRpb246OnZpc2l0QnJhbmNoKToKKyAgICAgICAgKiBzcmMvY29t
cGlsZXIvSW5pdGlhbGl6ZUdsb2JhbHMuaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvSW5pdGlh
bGl6ZVBhcnNlQ29udGV4dC5jcHA6CisgICAgICAgIChJbml0aWFsaXplUGFyc2VDb250ZXh0SW5k
ZXgpOgorICAgICAgICAoRnJlZVBhcnNlQ29udGV4dEluZGV4KToKKyAgICAgICAgKFNldEdsb2Jh
bFBhcnNlQ29udGV4dCk6CisgICAgICAgIChHZXRHbG9iYWxQYXJzZUNvbnRleHQpOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9Jbml0aWFsaXplUGFyc2VDb250ZXh0Lmg6CisgICAgICAgICogc3Jj
L2NvbXBpbGVyL0ludGVybVRyYXZlcnNlLmNwcDoKKyAgICAgICAgKFRJbnRlcm1TeW1ib2w6OnRy
YXZlcnNlKToKKyAgICAgICAgKFRJbnRlcm1Db25zdGFudFVuaW9uOjp0cmF2ZXJzZSk6CisgICAg
ICAgIChUSW50ZXJtQmluYXJ5Ojp0cmF2ZXJzZSk6CisgICAgICAgIChUSW50ZXJtVW5hcnk6OnRy
YXZlcnNlKToKKyAgICAgICAgKFRJbnRlcm1BZ2dyZWdhdGU6OnRyYXZlcnNlKToKKyAgICAgICAg
KFRJbnRlcm1TZWxlY3Rpb246OnRyYXZlcnNlKToKKyAgICAgICAgKFRJbnRlcm1Mb29wOjp0cmF2
ZXJzZSk6CisgICAgICAgIChUSW50ZXJtQnJhbmNoOjp0cmF2ZXJzZSk6CisgICAgICAgICogc3Jj
L2NvbXBpbGVyL0ludGVybWVkaWF0ZS5jcHA6CisgICAgICAgIChHZXRIaWdoZXJQcmVjaXNpb24p
OgorICAgICAgICAoZ2V0T3BlcmF0b3JTdHJpbmcpOgorICAgICAgICAoVEludGVybUxvb3A6OnJl
cGxhY2VDaGlsZE5vZGUpOgorICAgICAgICAoVEludGVybUJyYW5jaDo6cmVwbGFjZUNoaWxkTm9k
ZSk6CisgICAgICAgIChUSW50ZXJtQmluYXJ5OjpyZXBsYWNlQ2hpbGROb2RlKToKKyAgICAgICAg
KFRJbnRlcm1VbmFyeTo6cmVwbGFjZUNoaWxkTm9kZSk6CisgICAgICAgIChUSW50ZXJtQWdncmVn
YXRlOjpyZXBsYWNlQ2hpbGROb2RlKToKKyAgICAgICAgKFRJbnRlcm1TZWxlY3Rpb246OnJlcGxh
Y2VDaGlsZE5vZGUpOgorICAgICAgICAoVEludGVybU9wZXJhdG9yOjppc0Fzc2lnbm1lbnQpOgor
ICAgICAgICAoVEludGVybWVkaWF0ZTo6cHJvbW90ZUNvbnN0YW50VW5pb24pOgorICAgICAgICAq
IHNyYy9jb21waWxlci9NYXBMb25nVmFyaWFibGVOYW1lcy5jcHA6CisgICAgICAgICogc3JjL2Nv
bXBpbGVyL01hcExvbmdWYXJpYWJsZU5hbWVzLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL05v
ZGVTZWFyY2guaDogQWRkZWQuCisgICAgICAgIChzaDo6Tm9kZVNlYXJjaFRyYXZlcnNlcjo6Tm9k
ZVNlYXJjaFRyYXZlcnNlcik6CisgICAgICAgIChzaDo6Tm9kZVNlYXJjaFRyYXZlcnNlcjo6Zm91
bmQpOgorICAgICAgICAoc2g6Ok5vZGVTZWFyY2hUcmF2ZXJzZXI6OnNlYXJjaCk6CisgICAgICAg
IChzaDo6RmluZERpc2NhcmQ6OnZpc2l0QnJhbmNoKToKKyAgICAgICAgKHNoOjpGaW5kU2lkZUVm
ZmVjdFJld3JpdGluZzo6dmlzaXRCaW5hcnkpOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRw
dXRHTFNMQmFzZS5jcHA6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6OnZpc2l0U2VsZWN0aW9u
KToKKyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRBZ2dyZWdhdGUpOgorICAgICAgICAo
VE91dHB1dEdMU0xCYXNlOjp2aXNpdExvb3ApOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRw
dXRHTFNMQmFzZS5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRITFNMLmNwcDoKKyAg
ICAgICAgKHNoOjpPdXRwdXRITFNMOjpPdXRwdXRITFNMKToKKyAgICAgICAgKHNoOjpPdXRwdXRI
TFNMOjpoZWFkZXIpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OnZpc2l0QmluYXJ5KToKKyAg
ICAgICAgKHNoOjpPdXRwdXRITFNMOjp2aXNpdFNlbGVjdGlvbik6CisgICAgICAgIChzaDo6T3V0
cHV0SExTTDo6dmlzaXRCcmFuY2gpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OmhhbmRsZUV4
Y2Vzc2l2ZUxvb3ApOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OmFkZENvbnN0cnVjdG9yKToK
KyAgICAgICAgKiBzcmMvY29tcGlsZXIvT3V0cHV0SExTTC5oOgorICAgICAgICAqIHNyYy9jb21w
aWxlci9QYXJzZUNvbnRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBh
cnNlVmVjdG9yRmllbGRzKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcnNlTWF0cml4Rmll
bGRzKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnJlY292ZXIpOgorICAgICAgICAoVFBhcnNl
Q29udGV4dDo6ZXJyb3IpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6d2FybmluZyk6CisgICAg
ICAgIChUUGFyc2VDb250ZXh0Ojp0cmFjZSk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojphc3Np
Z25FcnJvcik6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojp1bmFyeU9wRXJyb3IpOgorICAgICAg
ICAoVFBhcnNlQ29udGV4dDo6YmluYXJ5T3BFcnJvcik6CisgICAgICAgIChUUGFyc2VDb250ZXh0
OjpwcmVjaXNpb25FcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmxWYWx1ZUVy
cm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6Y29uc3RFcnJvckNoZWNrKToKKyAg
ICAgICAgKFRQYXJzZUNvbnRleHQ6OmludGVnZXJFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJz
ZUNvbnRleHQ6Omdsb2JhbEVycm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6cmVz
ZXJ2ZWRFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJy
b3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojp2b2lkRXJyb3JDaGVjayk6CisgICAg
ICAgIChUUGFyc2VDb250ZXh0Ojpib29sRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250
ZXh0OjpzYW1wbGVyRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpzdHJ1Y3RR
dWFsaWZpZXJFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcmFtZXRlclNh
bXBsZXJFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmNvbnRhaW5zU2FtcGxl
cik6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphcnJheVNpemVFcnJvckNoZWNrKToKKyAgICAg
ICAgKFRQYXJzZUNvbnRleHQ6OmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayk6CisgICAgICAgIChU
UGFyc2VDb250ZXh0OjphcnJheVR5cGVFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRl
eHQ6OmFycmF5RXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpub25Jbml0Q29u
c3RFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6Om5vbkluaXRFcnJvckNoZWNr
KToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcmFtRXJyb3JDaGVjayk6CisgICAgICAgIChU
UGFyc2VDb250ZXh0OjpleHRlbnNpb25FcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRl
eHQ6OnN1cHBvcnRzRXh0ZW5zaW9uKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmlzRXh0ZW5z
aW9uRW5hYmxlZCk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpmaW5kRnVuY3Rpb24pOgorICAg
ICAgICAoVFBhcnNlQ29udGV4dDo6ZXhlY3V0ZUluaXRpYWxpemVyKToKKyAgICAgICAgKFRQYXJz
ZUNvbnRleHQ6OmFyZUFsbENoaWxkQ29uc3QpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6YWRk
Q29uc3RydWN0b3IpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6Zm9sZENvbnN0Q29uc3RydWN0
b3IpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0QnVpbHRJbik6CisgICAgICAg
IChUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RTdHJ1Y3QpOgorICAgICAgICAoVFBhcnNlQ29udGV4
dDo6YWRkQ29uc3RWZWN0b3JOb2RlKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0
TWF0cml4Tm9kZSk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphZGRDb25zdEFycmF5Tm9kZSk6
CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphZGRDb25zdFN0cnVjdCk6CisgICAgICAgIChUUGFy
c2VDb250ZXh0OjplbnRlclN0cnVjdERlY2xhcmF0aW9uKToKKyAgICAgICAgKFRQYXJzZUNvbnRl
eHQ6OmV4aXRTdHJ1Y3REZWNsYXJhdGlvbik6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpzdHJ1
Y3ROZXN0aW5nRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphZGRJbmRleEV4
cHJlc3Npb24pOgorICAgICAgICAoUGFQYXJzZVN0cmluZ3MpOgorICAgICAgICAqIHNyYy9jb21w
aWxlci9QYXJzZUNvbnRleHQuaDogQWRkZWQuCisgICAgICAgIChUUGFyc2VDb250ZXh0OjpUUGFy
c2VDb250ZXh0KToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6Om51bUVycm9ycyk6CisgICAgICAg
IChUUGFyc2VDb250ZXh0OjppbmZvU2luayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpwcmFn
bWEpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6ZXh0ZW5zaW9uQmVoYXZpb3IpOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9QYXJzZUhlbHBlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3Jj
L2NvbXBpbGVyL1BhcnNlSGVscGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogc3JjL2NvbXBpbGVy
L1Bvb2xBbGxvYy5jcHA6CisgICAgICAgIChJbml0aWFsaXplUG9vbEluZGV4KToKKyAgICAgICAg
KEZyZWVQb29sSW5kZXgpOgorICAgICAgICAoR2V0R2xvYmFsUG9vbEFsbG9jYXRvcik6CisgICAg
ICAgIChTZXRHbG9iYWxQb29sQWxsb2NhdG9yKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvUG9v
bEFsbG9jLmg6CisgICAgICAgIChwb29sX2FsbG9jYXRvcjo6cG9vbF9hbGxvY2F0b3IpOgorICAg
ICAgICAqIHNyYy9jb21waWxlci9TZWFyY2hTeW1ib2wuaDoKKyAgICAgICAgKiBzcmMvY29tcGls
ZXIvU2hIYW5kbGUuaDoKKyAgICAgICAgKFRDb21waWxlcjo6Z2V0VmFyeWluZ3MpOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9TaGFkZXJMYW5nLmNwcDoKKyAgICAgICAgKGNoZWNrVmFyaWFibGVN
YXhMZW5ndGhzKToKKyAgICAgICAgKFNoSW5pdGlhbGl6ZSk6CisgICAgICAgIChTaEZpbmFsaXpl
KToKKyAgICAgICAgKFNoQ29uc3RydWN0Q29tcGlsZXIpOgorICAgICAgICAoU2hDb21waWxlKToK
KyAgICAgICAgKFNoR2V0SW5mbyk6CisgICAgICAgIChTaEdldFZhcmlhYmxlSW5mbyk6CisgICAg
ICAgIChTaENoZWNrVmFyaWFibGVzV2l0aGluUGFja2luZ0xpbWl0cyk6CisgICAgICAgICogc3Jj
L2NvbXBpbGVyL1N5bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKFRTeW1ib2xUYWJsZTo6flRTeW1i
b2xUYWJsZSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmg6CisgICAgICAg
IChUU3ltYm9sOjpUU3ltYm9sKToKKyAgICAgICAgKFRTeW1ib2xUYWJsZUxldmVsOjppbnNlcnQp
OgorICAgICAgICAoVFN5bWJvbFRhYmxlOjpwdXNoKToKKyAgICAgICAgKFRTeW1ib2xUYWJsZTo6
cG9wKToKKyAgICAgICAgKFRTeW1ib2xUYWJsZTo6ZmluZEJ1aWx0SW4pOgorICAgICAgICAoVFN5
bWJvbFRhYmxlOjpyZWxhdGVUb0V4dGVuc2lvbik6CisgICAgICAgIChUU3ltYm9sVGFibGU6OnNl
dERlZmF1bHRQcmVjaXNpb24pOgorICAgICAgICAoVFN5bWJvbFRhYmxlOjpnZXREZWZhdWx0UHJl
Y2lzaW9uKToKKyAgICAgICAgKFRTeW1ib2xUYWJsZTo6c3VwcG9ydHNQcmVjaXNpb24pOgorICAg
ICAgICAqIHNyYy9jb21waWxlci9UeXBlcy5oOgorICAgICAgICAoTmV3UG9vbFRGaWVsZExpc3Qp
OgorICAgICAgICAoVFR5cGU6OlRUeXBlKToKKyAgICAgICAgKFRUeXBlOjpzZXROb21pbmFsU2l6
ZSk6CisgICAgICAgIChUUHVibGljVHlwZTo6c2V0QWdncmVnYXRlKToKKyAgICAgICAgKiBzcmMv
Y29tcGlsZXIvVW5mb2xkU2hvcnRDaXJjdWl0LmNwcDoKKyAgICAgICAgKHNoOjpVbmZvbGRTaG9y
dENpcmN1aXQ6OnZpc2l0QmluYXJ5KToKKyAgICAgICAgKHNoOjpVbmZvbGRTaG9ydENpcmN1aXQ6
OnZpc2l0U2VsZWN0aW9uKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvVW5mb2xkU2hvcnRDaXJj
dWl0Lmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1VuZm9sZFNob3J0Q2lyY3VpdEFTVC5jcHA6
IEFkZGVkLgorICAgICAgICAoVW5mb2xkU2hvcnRDaXJjdWl0QVNUOjp2aXNpdEJpbmFyeSk6Cisg
ICAgICAgIChVbmZvbGRTaG9ydENpcmN1aXRBU1Q6OnVwZGF0ZVRyZWUpOgorICAgICAgICAqIHNy
Yy9jb21waWxlci9VbmZvbGRTaG9ydENpcmN1aXRBU1QuaDogQWRkZWQuCisgICAgICAgIChVbmZv
bGRTaG9ydENpcmN1aXRBU1Q6OlVuZm9sZFNob3J0Q2lyY3VpdEFTVCk6CisgICAgICAgIChVbmZv
bGRTaG9ydENpcmN1aXRBU1Q6Ok5vZGVVcGRhdGVFbnRyeTo6Tm9kZVVwZGF0ZUVudHJ5KToKKyAg
ICAgICAgKiBzcmMvY29tcGlsZXIvVW5pZm9ybS5jcHA6CisgICAgICAgIChzaDo6VW5pZm9ybTo6
VW5pZm9ybSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1VuaWZvcm0uaDoKKyAgICAgICAgKiBz
cmMvY29tcGlsZXIvVmFsaWRhdGVMaW1pdGF0aW9ucy5jcHA6CisgICAgICAgIChWYWxpZGF0ZUxp
bWl0YXRpb25zOjp2YWxpZGF0ZUZ1bmN0aW9uQ2FsbCk6CisgICAgICAgIChWYWxpZGF0ZUxpbWl0
YXRpb25zOjp2YWxpZGF0ZU9wZXJhdGlvbik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1Zhcmlh
YmxlSW5mby5jcHA6CisgICAgICAgIChUVmFyaWFibGVJbmZvOjpUVmFyaWFibGVJbmZvKToKKyAg
ICAgICAgKENvbGxlY3RWYXJpYWJsZXM6OkNvbGxlY3RWYXJpYWJsZXMpOgorICAgICAgICAoQ29s
bGVjdFZhcmlhYmxlczo6dmlzaXRTeW1ib2wpOgorICAgICAgICAoQ29sbGVjdFZhcmlhYmxlczo6
dmlzaXRBZ2dyZWdhdGUpOgorICAgICAgICAqIHNyYy9jb21waWxlci9WYXJpYWJsZUluZm8uaDoK
KyAgICAgICAgKiBzcmMvY29tcGlsZXIvZGVidWcuY3BwOgorICAgICAgICAqIHNyYy9jb21waWxl
ci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGguY3BwOgorICAgICAgICAqIHNyYy9jb21waWxlci9k
ZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcDoKKyAgICAgICAgKFREZXBlbmRlbmN5
R3JhcGhCdWlsZGVyOjp2aXNpdEJpbmFyeSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL2dlbmVy
YXRlX3BhcnNlci5zaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvZ2xzbGFuZy5sOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9nbHNsYW5nLnk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL2dsc2xh
bmdfbGV4LmNwcDoKKyAgICAgICAgKGlucHV0KToKKyAgICAgICAgKHl5ZXJyb3IpOgorICAgICAg
ICAoaW50X2NvbnN0YW50KToKKyAgICAgICAgKGZsb2F0X2NvbnN0YW50KToKKyAgICAgICAgKGds
c2xhbmdfc2Nhbik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmNwcDoKKyAg
ICAgICAgKHl5c3ludGF4X2Vycm9yKToKKyAgICAgICAgKGdsc2xhbmdfcGFyc2UpOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9nbHNsYW5nX3RhYi5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9p
bnRlcm1lZGlhdGUuaDoKKyAgICAgICAgKFRJbnRlcm1TeW1ib2w6Omhhc1NpZGVFZmZlY3RzKToK
KyAgICAgICAgKFRJbnRlcm1TeW1ib2w6OnJlcGxhY2VDaGlsZE5vZGUpOgorICAgICAgICAoVElu
dGVybUNvbnN0YW50VW5pb246Omhhc1NpZGVFZmZlY3RzKToKKyAgICAgICAgKFRJbnRlcm1Db25z
dGFudFVuaW9uOjpnZXRJQ29uc3QpOgorICAgICAgICAoVEludGVybUNvbnN0YW50VW5pb246Omdl
dEZDb25zdCk6CisgICAgICAgIChUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Z2V0QkNvbnN0KToKKyAg
ICAgICAgKFRJbnRlcm1Db25zdGFudFVuaW9uOjpyZXBsYWNlQ2hpbGROb2RlKToKKyAgICAgICAg
KFRJbnRlcm1PcGVyYXRvcjo6aGFzU2lkZUVmZmVjdHMpOgorICAgICAgICAoVEludGVybUJpbmFy
eTo6aGFzU2lkZUVmZmVjdHMpOgorICAgICAgICAoVEludGVybVVuYXJ5OjpoYXNTaWRlRWZmZWN0
cyk6CisgICAgICAgIChUSW50ZXJtQWdncmVnYXRlOjpoYXNTaWRlRWZmZWN0cyk6CisgICAgICAg
IChUSW50ZXJtU2VsZWN0aW9uOjpoYXNTaWRlRWZmZWN0cyk6CisgICAgICAgIChUSW50ZXJtVHJh
dmVyc2VyOjp+VEludGVybVRyYXZlcnNlcik6CisgICAgICAgIChUSW50ZXJtVHJhdmVyc2VyOjpp
bmNyZW1lbnREZXB0aCk6CisgICAgICAgIChUSW50ZXJtVHJhdmVyc2VyOjpkZWNyZW1lbnREZXB0
aCk6CisgICAgICAgIChUSW50ZXJtVHJhdmVyc2VyOjpnZXRQYXJlbnROb2RlKToKKyAgICAgICAg
KiBzcmMvY29tcGlsZXIvbG9jYWxpbnRlcm1lZGlhdGUuaDoKKyAgICAgICAgKiBzcmMvY29tcGls
ZXIvcGFyc2VDb25zdC5jcHA6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9F
eHByZXNzaW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKHl5X3N5bWJvbF9wcmludCk6CisgICAgICAg
ICh5eV9zdGFja19wcmludCk6CisgICAgICAgICh5eV9yZWR1Y2VfcHJpbnQpOgorICAgICAgICAo
eXlzdHJsZW4pOgorICAgICAgICAoeXlzdHBjcHkpOgorICAgICAgICAoeXl0bmFtZXJyKToKKyAg
ICAgICAgKHl5c3ludGF4X2Vycm9yKToKKyAgICAgICAgKHl5ZGVzdHJ1Y3QpOgorICAgICAgICAo
eXlwYXJzZSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9u
UGFyc2VyLnk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNz
b3IuY3BwOgorICAgICAgICAocHA6OlByZXByb2Nlc3Nvcjo6c2V0TWF4VG9rZW5MZW5ndGgpOgor
ICAgICAgICAocHA6OlByZXByb2Nlc3Nvcjo6bGV4KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIv
cHJlcHJvY2Vzc29yL1ByZXByb2Nlc3Nvci5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9wcmVw
cm9jZXNzb3IvVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKHBwOjpUb2tlbml6ZXI6OlRva2VuaXpl
cik6CisgICAgICAgIChwcDo6VG9rZW5pemVyOjpsZXgpOgorICAgICAgICAqIHNyYy9jb21waWxl
ci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmg6CisgICAgICAgIChwcDo6VG9rZW5pemVyOjpzZXRN
YXhUb2tlbkxlbmd0aCk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tl
bml6ZXIubDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL2dlbmVyYXRlX3Bh
cnNlci5zaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3ByZXByb2Nlc3Nv
ci52Y3hwcm9qOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3By
ZXByb2Nlc3Nvci52Y3hwcm9qLmZpbHRlcnM6IEFkZGVkLgorICAgICAgICAqIHNyYy9jb21waWxl
ci90aW1pbmcvUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZy5jcHA6CisgICAgICAgICogc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IudmN4cHJvajogQWRkZWQuCisgICAgICAgICogc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IudmN4cHJvai5maWx0ZXJzOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvY29t
cGlsZXIvdXRpbC5jcHA6CisgICAgICAgIChhdG9mX2NsYW1wKToKKyAgICAgICAgKGF0b2lfY2xh
bXApOgorICAgICAgICAqIHNyYy9jb21waWxlci91dGlsLmg6CisgICAgICAgICogc3JjL2xpYkVH
TC9TdXJmYWNlLmNwcDoKKyAgICAgICAgKGVnbDo6U3VyZmFjZTo6Y2hlY2tGb3JPdXRPZkRhdGVT
d2FwQ2hhaW4pOgorICAgICAgICAqIHNyYy9saWJFR0wvbGliRUdMLmNwcDoKKyAgICAgICAgKiBz
cmMvbGliRUdML2xpYkVHTC5yYzoKKyAgICAgICAgKiBzcmMvbGliRUdML2xpYkVHTC52Y3hwcm9q
OiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliRUdML2xpYkVHTC52Y3hwcm9qLmZpbHRlcnM6IEFk
ZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvQnVmZmVyLmNwcDoKKyAgICAgICAgKGdsOjpC
dWZmZXI6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoZ2w6OkJ1ZmZlcjo6YnVmZmVyU3ViRGF0YSk6
CisgICAgICAgIChnbDo6QnVmZmVyOjpzaXplKToKKyAgICAgICAgKGdsOjpCdWZmZXI6OmdldElu
ZGV4UmFuZ2VDYWNoZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9CdWZmZXIuaDoKKyAgICAg
ICAgKiBzcmMvbGliR0xFU3YyL0NvbnRleHQuY3BwOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmFw
cGx5VGV4dHVyZXMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldEJvdW5kRnJhbWVidWZmZXJU
ZXh0dXJlU2VyaWFscyk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9Db250ZXh0Lmg6CisgICAg
ICAgIChnbDo6Q29udGV4dDo6Z2V0UmVuZGVyZXIpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIv
RnJhbWVidWZmZXIuaDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuY3Bw
OgorICAgICAgICAoZ2w6OkRpc2NhcmRXb3JrYXJvdW5kKToKKyAgICAgICAgKGdsOjpQcm9ncmFt
QmluYXJ5Ojpsb2FkKToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpsaW5rKToKKyAgICAg
ICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpsaW5rQXR0cmlidXRlcyk6CisgICAgICAgIChnbDo6QXR0
cmlidXRlU29ydGVyOjpBdHRyaWJ1dGVTb3J0ZXIpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5h
cnk6OmluaXRBdHRyaWJ1dGVzQnlMYXlvdXQpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6
OnNvcnRBdHRyaWJ1dGVzQnlMYXlvdXQpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvUHJvZ3Jh
bUJpbmFyeS5oOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvUmVuZGVyYnVmZmVyLmNwcDoKKyAg
ICAgICAgKGdsOjpSZW5kZXJidWZmZXJUZXh0dXJlMkQ6OmdldFRleHR1cmVTZXJpYWwpOgorICAg
ICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwOjpnZXRUZXh0dXJlU2VyaWFsKToK
KyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXI6OmdldFRleHR1cmVTZXJpYWwpOgorICAgICAgICAq
IHNyYy9saWJHTEVTdjIvUmVuZGVyYnVmZmVyLmg6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVy
U3RvcmFnZTo6Z2V0VGV4dHVyZVNlcmlhbCk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9TaGFk
ZXIuY3BwOgorICAgICAgICAoZ2w6OlNoYWRlcjo6cGFyc2VWYXJ5aW5ncyk6CisgICAgICAgIChn
bDo6U2hhZGVyOjp1bmNvbXBpbGUpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvU2hhZGVyLmg6
CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9UZXh0dXJlLmNwcDoKKyAgICAgICAgKGdsOjpUZXh0
dXJlQ3ViZU1hcDo6c3RvcmFnZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9Vbmlmb3JtLmNw
cDoKKyAgICAgICAgKGdsOjpVbmlmb3JtOjpVbmlmb3JtKToKKyAgICAgICAgKGdsOjpVbmlmb3Jt
Ojp+VW5pZm9ybSk6CisgICAgICAgIChnbDo6VW5pZm9ybTo6aXNBcnJheSk6CisgICAgICAgIChn
bDo6VW5pZm9ybTo6ZWxlbWVudENvdW50KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL1VuaWZv
cm0uaDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL2NvbnN0YW50cy5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHNyYy9saWJHTEVTdjIvbGliR0xFU3YyLmRlZjoKKyAgICAgICAgKiBzcmMvbGliR0xF
U3YyL2xpYkdMRVN2Mi5yYzoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi52Y3hw
cm9qOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi52Y3hwcm9qLmZp
bHRlcnM6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcHJlY29tcGlsZWQuaDoKKyAg
ICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlMTEuY3BwOgorICAgICAgICAocng6
OkltYWdlMTE6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKHJ4OjpJbWFnZTExOjpsb2FkRGF0
YSk6CisgICAgICAgIChyeDo6SW1hZ2UxMTo6bG9hZENvbXByZXNzZWREYXRhKToKKyAgICAgICAg
KHJ4OjpJbWFnZTExOjpjb3B5KToKKyAgICAgICAgKHJ4OjpJbWFnZTExOjpjcmVhdGVTdGFnaW5n
VGV4dHVyZSk6CisgICAgICAgIChyeDo6SW1hZ2UxMTo6bWFwKToKKyAgICAgICAgKiBzcmMvbGli
R0xFU3YyL3JlbmRlcmVyL0ltYWdlMTEuaDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRl
cmVyL0luZGV4QnVmZmVyLmNwcDoKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlckludGVyZmFjZTo6
bWFwQnVmZmVyKToKKyAgICAgICAgKHJ4OjpTdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZTo6Z2V0
SW5kZXhSYW5nZUNhY2hlKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4
QnVmZmVyLmg6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlcjEx
LmNwcDoKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlcjExOjptYXBCdWZmZXIpOgorICAgICAgICAq
IHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhEYXRhTWFuYWdlci5jcHA6CisgICAgICAgIChy
eDo6SW5kZXhEYXRhTWFuYWdlcjo6cHJlcGFyZUluZGV4RGF0YSk6CisgICAgICAgIChyeDo6SW5k
ZXhEYXRhTWFuYWdlcjo6Z2V0Q291bnRpbmdJbmRpY2VzKToKKyAgICAgICAgKiBzcmMvbGliR0xF
U3YyL3JlbmRlcmVyL0luZGV4UmFuZ2VDYWNoZS5jcHA6IEFkZGVkLgorICAgICAgICAocng6Oklu
ZGV4UmFuZ2VDYWNoZTo6YWRkUmFuZ2UpOgorICAgICAgICAocng6OkluZGV4UmFuZ2VDYWNoZTo6
aW52YWxpZGF0ZVJhbmdlKToKKyAgICAgICAgKHJ4OjpJbmRleFJhbmdlQ2FjaGU6OmZpbmRSYW5n
ZSk6CisgICAgICAgIChyeDo6SW5kZXhSYW5nZUNhY2hlOjpjbGVhcik6CisgICAgICAgIChyeDo6
SW5kZXhSYW5nZUNhY2hlOjpJbmRleFJhbmdlOjpJbmRleFJhbmdlKToKKyAgICAgICAgKHJ4OjpJ
bmRleFJhbmdlQ2FjaGU6OkluZGV4UmFuZ2U6Om9wZXJhdG9yPCk6CisgICAgICAgIChyeDo6SW5k
ZXhSYW5nZUNhY2hlOjpJbmRleEJvdW5kczo6SW5kZXhCb3VuZHMpOgorICAgICAgICAqIHNyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhSYW5nZUNhY2hlLmg6IEFkZGVkLgorICAgICAgICAqIHNy
Yy9saWJHTEVTdjIvcmVuZGVyZXIvSW5wdXRMYXlvdXRDYWNoZS5jcHA6CisgICAgICAgIChyeDo6
SW5wdXRMYXlvdXRDYWNoZTo6SW5wdXRMYXlvdXRDYWNoZSk6CisgICAgICAgIChyeDo6SW5wdXRM
YXlvdXRDYWNoZTo6Y2xlYXIpOgorICAgICAgICAocng6OklucHV0TGF5b3V0Q2FjaGU6Om1hcmtE
aXJ0eSk6CisgICAgICAgIChyeDo6SW5wdXRMYXlvdXRDYWNoZTo6YXBwbHlWZXJ0ZXhCdWZmZXJz
KToKKyAgICAgICAgKHJ4OjpJbnB1dExheW91dENhY2hlOjpoYXNoSW5wdXRMYXlvdXQpOgorICAg
ICAgICAocng6OklucHV0TGF5b3V0Q2FjaGU6OmNvbXBhcmVJbnB1dExheW91dHMpOgorICAgICAg
ICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5wdXRMYXlvdXRDYWNoZS5oOgorICAgICAgICAo
cng6OklucHV0TGF5b3V0Q2FjaGU6OklucHV0TGF5b3V0S2V5OjpiZWdpbik6CisgICAgICAgIChy
eDo6SW5wdXRMYXlvdXRDYWNoZTo6SW5wdXRMYXlvdXRLZXk6OmVuZCk6CisgICAgICAgICogc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQxMS5jcHA6CisgICAgICAgIChyeDo6UmVu
ZGVyVGFyZ2V0MTE6OmdldFRleHR1cmUpOgorICAgICAgICAocng6OlJlbmRlclRhcmdldDExOjpn
ZXRSZW5kZXJUYXJnZXRWaWV3KToKKyAgICAgICAgKHJ4OjpSZW5kZXJUYXJnZXQxMTo6Z2V0RGVw
dGhTdGVuY2lsVmlldyk6CisgICAgICAgIChyeDo6UmVuZGVyVGFyZ2V0MTE6OmdldFNoYWRlclJl
c291cmNlVmlldyk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJn
ZXQxMS5oOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIuY3BwOgor
ICAgICAgICAocng6OlJlbmRlcmVyOjppbml0aWFsaXplQ29tcGlsZXIpOgorICAgICAgICAqIHNy
Yy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIuaDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL1JlbmRlcmVyMTEuY3BwOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmluaXRp
YWxpemUpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmFwcGx5UHJpbWl0aXZlVHlwZSk6Cisg
ICAgICAgIChyeDo6UmVuZGVyZXIxMTo6YXBwbHlSZW5kZXJUYXJnZXQpOgorICAgICAgICAocng6
OlJlbmRlcmVyMTE6OmRyYXdMaW5lTG9vcCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6ZHJh
d1RyaWFuZ2xlRmFuKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjphcHBseVVuaWZvcm1zKToK
KyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpjbGVhcik6CisgICAgICAgIChyeDo6UmVuZGVyZXIx
MTo6bWFya0FsbFN0YXRlRGlydHkpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmNvcHlJbWFn
ZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Y29tcGlsZVRvRXhlY3V0YWJsZSk6CisgICAg
ICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0UmVuZGVyVGFyZ2V0UmVzb3VyY2UpOgorICAgICAgICAo
cng6OlJlbmRlcmVyMTE6OmJsaXRSZW5kZXJidWZmZXJSZWN0KToKKyAgICAgICAgKiBzcmMvbGli
R0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyMTEuaDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1JlbmRlcmVyOS5jcHA6CisgICAgICAgIChyeDo6UmVuZGVyZXI5Ojppbml0aWFsaXpl
KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OnNldFZpZXdwb3J0KToKKyAgICAgICAgKHJ4OjpS
ZW5kZXJlcjk6OmRyYXdMaW5lTG9vcCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5Ojpjb21waWxl
VG9FeGVjdXRhYmxlKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVy
OS5oOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluLmg6CisgICAg
ICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW4xMS5jcHA6CisgICAgICAgIChy
eDo6U3dhcENoYWluMTE6OnJlc2V0T2Zmc2NyZWVuVGV4dHVyZSk6CisgICAgICAgIChyeDo6U3dh
cENoYWluMTE6OnJlc2V0KToKKyAgICAgICAgKHJ4OjpTd2FwQ2hhaW4xMTo6c3dhcFJlY3QpOgor
ICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluOS5jcHA6CisgICAgICAg
IChyeDo6Y29udmVydEludGVydmFsKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVy
L1RleHR1cmVTdG9yYWdlMTEuY3BwOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlMTE6Oklz
VGV4dHVyZUZvcm1hdFJlbmRlcmFibGUpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlMTE6
OmdlbmVyYXRlTWlwbWFwTGF5ZXIpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlMTFfQ3Vi
ZTo6Z2V0UmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1Zl
cnRleEJ1ZmZlci5jcHA6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVySW50ZXJmYWNlOjpzdG9y
ZVZlcnRleEF0dHJpYnV0ZXMpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlckludGVyZmFjZTo6
c3RvcmVSYXdEYXRhKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OnJlc2Vy
dmVWZXJ0ZXhTcGFjZSk6CisgICAgICAgIChyeDo6U3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNl
Ojpsb29rdXBBdHRyaWJ1dGUpOgorICAgICAgICAocng6OlN0YXRpY1ZlcnRleEJ1ZmZlckludGVy
ZmFjZTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1ZlcnRleEJ1ZmZlci5oOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIv
VmVydGV4QnVmZmVyMTEuY3BwOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjExOjpnZXRTcGFj
ZVJlcXVpcmVkKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZl
cjExLmg6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXI5LmNw
cDoKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXI5OjpzdG9yZVZlcnRleEF0dHJpYnV0ZXMpOgor
ICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjk6OmdldFNwYWNlUmVxdWlyZWQpOgorICAgICAgICAo
cng6OlZlcnRleEJ1ZmZlcjk6OnJlcXVpcmVzQ29udmVyc2lvbik6CisgICAgICAgIChyeDo6VmVy
dGV4QnVmZmVyOTo6Z2V0VmVydGV4U2l6ZSk6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyOTo6
c3BhY2VSZXF1aXJlZCk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhC
dWZmZXI5Lmg6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhEYXRhTWFu
YWdlci5jcHA6CisgICAgICAgIChyeDo6ZWxlbWVudHNJbkJ1ZmZlcik6CisgICAgICAgIChyeDo6
U3RyZWFtaW5nQnVmZmVyRWxlbWVudENvdW50KToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhEYXRhTWFu
YWdlcjo6cHJlcGFyZVZlcnRleERhdGEpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvVmVydGV4RGF0YU1hbmFnZXIuaDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVy
L3JlbmRlcmVyMTFfdXRpbHMuY3BwOgorICAgICAgICAoZ2xfZDNkMTE6OkNvbnZlcnRUZXh0dXJl
Rm9ybWF0KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGls
ZWQvY2xlYXIxMXZzLmg6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJz
L2NvbXBpbGVkL2NsZWFybXVsdGlwbGUxMXBzLmg6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NsZWFyc2luZ2xlMTFwcy5oOgorICAgICAgICAqIHNy
Yy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9jb21wb25lbnRtYXNrcHMuaDoK
KyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvZmxpcHl2
cy5oOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9s
dW1pbmFuY2Vwcy5oOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9j
b21waWxlZC9wYXNzdGhyb3VnaDExdnMuaDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRl
cmVyL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hsdW0xMXBzLmg6CisgICAgICAgICogc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdobHVtYWxwaGEx
MXBzLmg6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVk
L3Bhc3N0aHJvdWdocHMuaDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRl
cnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2IxMXBzLmg6CisgICAgICAgICogc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiYTExcHMuaDoKKyAgICAg
ICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvc3RhbmRhcmR2cy5o
OgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9nZW5lcmF0ZV9zaGFk
ZXJzLmJhdDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3V0aWxpdGllcy5jcHA6CisgICAgICAg
IChnbDo6Q29tcHV0ZVR5cGVTaXplKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3V0aWxpdGll
cy5oOgorICAgICAgICAqIHNyYy90aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL011cm11ckhhc2gzLmNw
cDoKKyAgICAgICAgKHJvdGwzMik6CisgICAgICAgIChyb3RsNjQpOgorICAgICAgICAoZ2V0Ymxv
Y2spOgorICAgICAgICAoZm1peCk6CisgICAgICAgIChNdXJtdXJIYXNoM194ODZfMzIpOgorICAg
ICAgICAoTXVybXVySGFzaDNfeDg2XzEyOCk6CisgICAgICAgIChNdXJtdXJIYXNoM194NjRfMTI4
KToKKyAgICAgICAgKiBzcmMvdGhpcmRfcGFydHkvbXVybXVyaGFzaC9NdXJtdXJIYXNoMy5oOgor
ICAgICAgICAqIHNyYy90aGlyZF9wYXJ0eS90cmFjZV9ldmVudDogQWRkZWQuCisgICAgICAgICog
c3JjL3RoaXJkX3BhcnR5L3RyYWNlX2V2ZW50L3RyYWNlX2V2ZW50Lmg6IEFkZGVkLgorICAgICAg
ICAoZ2w6OlRyYWNlRXZlbnQ6OlRyYWNlSUQ6OlRyYWNlSUQpOgorICAgICAgICAoZ2w6OlRyYWNl
RXZlbnQ6OlRyYWNlSUQ6OmRhdGEpOgorICAgICAgICAoZ2w6OlRyYWNlRXZlbnQ6OlRyYWNlU3Ry
aW5nV2l0aENvcHk6OlRyYWNlU3RyaW5nV2l0aENvcHkpOgorICAgICAgICAoZ2w6OlRyYWNlRXZl
bnQ6OlRyYWNlU3RyaW5nV2l0aENvcHk6Om9wZXJhdG9yIGNvbnN0IGNoYXIqICk6CisgICAgICAg
IChnbDo6VHJhY2VFdmVudDo6c2V0VHJhY2VWYWx1ZSk6CisgICAgICAgIChnbDo6VHJhY2VFdmVu
dDo6YWRkVHJhY2VFdmVudCk6CisgICAgICAgIChnbDo6VHJhY2VFdmVudDo6VHJhY2VFbmRPblNj
b3BlQ2xvc2U6OlRyYWNlRW5kT25TY29wZUNsb3NlKToKKyAgICAgICAgKGdsOjpUcmFjZUV2ZW50
OjpUcmFjZUVuZE9uU2NvcGVDbG9zZTo6flRyYWNlRW5kT25TY29wZUNsb3NlKToKKyAgICAgICAg
KGdsOjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZTo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChnbDo6VHJhY2VFdmVudDo6VHJhY2VFbmRPblNjb3BlQ2xvc2U6OmFkZEV2ZW50SWZFbmFi
bGVkKToKKyAgICAgICAgKGdsOjpUcmFjZUV2ZW50OjpTYW1wbGluZ1N0YXRlU2NvcGU6OlNhbXBs
aW5nU3RhdGVTY29wZSk6CisgICAgICAgIChnbDo6VHJhY2VFdmVudDo6U2FtcGxpbmdTdGF0ZVNj
b3BlOjp+U2FtcGxpbmdTdGF0ZVNjb3BlKToKKyAgICAgICAgKGdsOjpUcmFjZUV2ZW50OjpTYW1w
bGluZ1N0YXRlU2NvcGU6OmN1cnJlbnQpOgorICAgICAgICAoZ2w6OlRyYWNlRXZlbnQ6OlNhbXBs
aW5nU3RhdGVTY29wZTo6c2V0KToKKwogMjAxMy0xMS0xOCAgTWFyayBSb3dlICA8bXJvd2VAYXBw
bGUuY29tPgogCiAgICAgICAgIFVzZSBody5hY3RpdmVjcHUgZm9yIGRldGVybWluaW5nIGhvdyBt
YW55IHByb2Nlc3NlcyB0byBzcGF3bi4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FO
R0xFLnBsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnBs
aXN0CShyZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS5w
bGlzdAkod29ya2luZyBjb3B5KQpAQCAtMTAsOSArMTAsOSBAQAogCQk8a2V5Pk9wZW5Tb3VyY2VX
ZWJzaXRlVVJMPC9rZXk+CiAJCTxzdHJpbmc+aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2FuZ2xl
cHJvamVjdC88L3N0cmluZz4KIAkJPGtleT5PcGVuU291cmNlU0NNPC9rZXk+Ci0JCTxzdHJpbmc+
Z2l0IGNsb25lIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvYW5nbGVwcm9qZWN0LyAmJiBjZCBh
bmdsZXByb2plY3QgJiYgZ2l0IGNoZWNrb3V0IDA0NzM3M2FhM2ViNDA4YmU2MmJlNTJhZGU4NDBm
YTVmMTFlNzIzMzc8L3N0cmluZz4KKwkJPHN0cmluZz5naXQgY2xvbmUgaHR0cHM6Ly9jb2RlLmdv
b2dsZS5jb20vcC9hbmdsZXByb2plY3QvICYmIGNkIGFuZ2xlcHJvamVjdCAmJiBnaXQgY2hlY2tv
dXQgYTYwZTA4MDU3MjFmNjJjMjhhNTVmYWYyZGY3NDQ3MmNjNWZjOTFmYzwvc3RyaW5nPgogCQk8
a2V5Pk9wZW5Tb3VyY2VJbXBvcnREYXRlPC9rZXk+Ci0JCTxzdHJpbmc+MjAxMy0wNy0yMjwvc3Ry
aW5nPgorCQk8c3RyaW5nPjIwMTMtMTEtMDc8L3N0cmluZz4KIAkJPGtleT5PcGVuU291cmNlTGlj
ZW5zZTwva2V5PgogCQk8c3RyaW5nPkJTRDwvc3RyaW5nPgogCQk8a2V5Pk9wZW5Tb3VyY2VMaWNl
bnNlRmlsZTwva2V5PgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvRGVyaXZlZFNvdXJj
ZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9EZXJpdmVkU291
cmNlcy5tYWtlCShyZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9E
ZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ0ICswLDAgQEAKLSMgQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgCi0jIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMg
Ci0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0jIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0jIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKLSMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0jIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0jIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1TRUFSQ0hfUEFUSCA9ICQoQU5H
TEUpL3NyYy9jb21waWxlciAkKEFOR0xFKS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yCi0KLXZw
YXRoICUubCAkKFNFQVJDSF9QQVRIKQotdnBhdGggJS55ICQoU0VBUkNIX1BBVEgpCi0KLUZMRVgg
PSBmbGV4IC0tbm9saW5lIC0tbm91bmlzdGQKLUJJU09OID0gYmlzb24gLS1uby1saW5lcyAtLXNr
ZWxldG9uPXlhY2MuYwotCi1hbGwgOiBnbHNsYW5nX2xleC5jcHAgZ2xzbGFuZ190YWIuaCBnbHNs
YW5nX3RhYi5jcHAgRXhwcmVzc2lvblBhcnNlci5jcHAgVG9rZW5pemVyLmNwcAotCi1nbHNsYW5n
X3RhYiVoIGdsc2xhbmdfdGFiJWNwcCA6IGdsc2xhbmcueQotCSQoZXZhbCBPVVRQVVQgPSAkKGJh
c2VuYW1lICRAKSkKLQkkKEJJU09OKSAtLWRlZmluZXM9JChPVVRQVVQpLmggLS1vdXRwdXQ9JChP
VVRQVVQpLmNwcCAkPAotCi1FeHByZXNzaW9uUGFyc2VyLmNwcCA6IEV4cHJlc3Npb25QYXJzZXIu
eQotCSQoQklTT04pIC0tb3V0cHV0PSRAICQ8Ci0KLWdsc2xhbmdfbGV4LmNwcCA6IGdsc2xhbmcu
bAotCSQoRkxFWCkgLS1vdXRmaWxlPSRAICQ8Ci0KLVRva2VuaXplci5jcHAgOiBUb2tlbml6ZXIu
bAotCSQoRkxFWCkgLS1vdXRmaWxlPSRAICQ8ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCwxMSArMjgsMjkgQEAKIAkJNDk5NTFDMEExNEI3QUFEODAwNjBFOTZFIC8qIEJ1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0OTk1MUMwNjE0QjdBQUQ4MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0
b3IuaCAqLzsgfTsKIAkJNUNCMTNGRDQxNzlEQjNGRDAwMUY4NTFEIC8qIERldGVjdENhbGxEZXB0
aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0Ix
M0ZEMjE3OURCM0ZEMDAxRjg1MUQgLyogRGV0ZWN0Q2FsbERlcHRoLmNwcCAqLzsgfTsKIAkJNUNC
MTNGRDUxNzlEQjNGRDAwMUY4NTFEIC8qIERldGVjdENhbGxEZXB0aC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCMTNGRDMxNzlEQjNGRDAwMUY4NTFE
IC8qIERldGVjdENhbGxEZXB0aC5oICovOyB9OwotCQk1Q0IxM0ZFNDE3OUY0NjU4MDAxRjg1MUQg
LyogRXhwcmVzc2lvblBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1Q0IxM0ZERjE3OUY0NjU4MDAxRjg1MUQgLyogRXhwcmVzc2lvblBhcnNl
ci5jcHAgKi87IH07Ci0JCTVDQjEzRkU1MTc5RjQ2NTgwMDFGODUxRCAvKiBnbHNsYW5nX2xleC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IxM0ZF
MDE3OUY0NjU4MDAxRjg1MUQgLyogZ2xzbGFuZ19sZXguY3BwICovOyB9OwotCQk1Q0IxM0ZFNjE3
OUY0NjU4MDAxRjg1MUQgLyogZ2xzbGFuZ190YWIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCMTNGRTExNzlGNDY1ODAwMUY4NTFEIC8qIGdsc2xh
bmdfdGFiLmNwcCAqLzsgfTsKLQkJNUNCMTNGRTcxNzlGNDY1ODAwMUY4NTFEIC8qIGdsc2xhbmdf
dGFiLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0Ix
M0ZFMjE3OUY0NjU4MDAxRjg1MUQgLyogZ2xzbGFuZ190YWIuaCAqLzsgfTsKLQkJNUNCMTNGRTgx
NzlGNDY1ODAwMUY4NTFEIC8qIFRva2VuaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IxM0ZFMzE3OUY0NjU4MDAxRjg1MUQgLyogVG9rZW5p
emVyLmNwcCAqLzsgfTsKKwkJNzIzMDlBNEQxODNDMjU5MzAwMzcwQjkzIC8qIENvZGVHZW4uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2NTA5MzAx
ODNBQTIxMzAwRDI4QjQ4IC8qIENvZGVHZW4uY3BwICovOyB9OworCQk3MjMwOUE0RTE4M0MyNTlD
MDAzNzBCOTMgLyogVW5mb2xkU2hvcnRDaXJjdWl0QVNULmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNjUwOTM2MTgzQUEzQzYwMEQyOEI0OCAvKiBV
bmZvbGRTaG9ydENpcmN1aXRBU1QuY3BwICovOyB9OworCQk3MjMwOUE0RjE4M0MyNTlFMDAzNzBC
OTMgLyogVW5mb2xkU2hvcnRDaXJjdWl0QVNULmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MjY1MDkzNzE4M0FBM0M2MDBEMjhCNDggLyogVW5mb2xkU2hv
cnRDaXJjdWl0QVNULmggKi87IH07CisJCTcyMzA5QTUwMTgzQzI1QTEwMDM3MEI5MyAvKiBQYXJz
ZUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzI2NTA5MzQxODNBQTNCMjAwRDI4QjQ4IC8qIFBhcnNlQ29udGV4dC5jcHAgKi87IH07CisJ
CTcyMzA5QTUxMTgzQzI1QTUwMDM3MEI5MyAvKiBQYXJzZUNvbnRleHQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNjUwOTM1MTgzQUEzQjIwMEQyOEI0
OCAvKiBQYXJzZUNvbnRleHQuaCAqLzsgfTsKKwkJNzIzMDlBNTIxODNDMjVBNzAwMzcwQjkzIC8q
IE5vZGVTZWFyY2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcyNjUwOTMzMTgzQUEyODkwMEQyOEI0OCAvKiBOb2RlU2VhcmNoLmggKi87IH07CisJCTcy
MzA5QTUzMTgzQzI1QUEwMDM3MEI5MyAvKiBJbml0aWFsaXplR0xQb3NpdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjY1MDkzMTE4M0FBMjQ2
MDBEMjhCNDggLyogSW5pdGlhbGl6ZUdMUG9zaXRpb24uY3BwICovOyB9OworCQk3MjMwOUE1NDE4
M0MyNUFEMDAzNzBCOTMgLyogSW5pdGlhbGl6ZUdMUG9zaXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNjUwOTMyMTgzQUEyNDYwMEQyOEI0OCAv
KiBJbml0aWFsaXplR0xQb3NpdGlvbi5oICovOyB9OworCQk3MjMwOUE1NjE4M0MyN0RFMDAzNzBC
OTMgLyogVG9rZW5pemVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyMzA5QTU1MTgzQzI3REIwMDM3MEI5MyAvKiBUb2tlbml6ZXIuY3BwICovOyB9
OworCQk3MjMwOUE1ODE4M0MyN0YzMDAzNzBCOTMgLyogRXhwcmVzc2lvblBhcnNlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjMwOUE1NzE4M0My
N0YxMDAzNzBCOTMgLyogRXhwcmVzc2lvblBhcnNlci5jcHAgKi87IH07CisJCTcyMzA5QTVDMTgz
QzI4NTMwMDM3MEI5MyAvKiBnbHNsYW5nX2xleC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjMwOUE1OTE4M0MyODRFMDAzNzBCOTMgLyogZ2xzbGFu
Z19sZXguY3BwICovOyB9OworCQk3MjMwOUE1RDE4M0MyODUzMDAzNzBCOTMgLyogZ2xzbGFuZ190
YWIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIz
MDlBNUExODNDMjg0RTAwMzcwQjkzIC8qIGdsc2xhbmdfdGFiLmNwcCAqLzsgfTsKKwkJNzIzMDlB
NUUxODNDMjg1MzAwMzcwQjkzIC8qIGdsc2xhbmdfdGFiLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjMwOUE1QjE4M0MyODRFMDAzNzBCOTMgLyogZ2xz
bGFuZ190YWIuaCAqLzsgfTsKKwkJNzIzMDlBNjExODNDMkE3NDAwMzcwQjkzIC8qIFRyYW5zbGF0
b3JITFNMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcyMzA5QTVGMTgzQzJBNjQwMDM3MEI5MyAvKiBUcmFuc2xhdG9ySExTTC5jcHAgKi87IH07CisJ
CTcyMzA5QTYyMTgzQzJBNzQwMDM3MEI5MyAvKiBUcmFuc2xhdG9ySExTTC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIzMDlBNjAxODNDMkE2NDAwMzcw
QjkzIC8qIFRyYW5zbGF0b3JITFNMLmggKi87IH07CisJCTcyMzA5QTY1MTgzQzJBRTUwMDM3MEI5
MyAvKiBPdXRwdXRITFNMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyMzA5QTYzMTgzQzJBRTUwMDM3MEI5MyAvKiBPdXRwdXRITFNMLmNwcCAqLzsg
fTsKKwkJNzIzMDlBNjYxODNDMkFFNTAwMzcwQjkzIC8qIE91dHB1dEhMU0wuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMzA5QTY0MTgzQzJBRTUwMDM3
MEI5MyAvKiBPdXRwdXRITFNMLmggKi87IH07CisJCTcyMzA5QTZEMTgzQzJCRTgwMDM3MEI5MyAv
KiBEZXRlY3REaXNjb250aW51aXR5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcyMzA5QTY3MTgzQzJCRTgwMDM3MEI5MyAvKiBEZXRlY3REaXNjb250
aW51aXR5LmNwcCAqLzsgfTsKKwkJNzIzMDlBNkUxODNDMkJFODAwMzcwQjkzIC8qIERldGVjdERp
c2NvbnRpbnVpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcyMzA5QTY4MTgzQzJCRTgwMDM3MEI5MyAvKiBEZXRlY3REaXNjb250aW51aXR5LmggKi87
IH07CisJCTcyMzA5QTZGMTgzQzJCRTgwMDM3MEI5MyAvKiBVbmZvbGRTaG9ydENpcmN1aXQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIzMDlBNjkx
ODNDMkJFODAwMzcwQjkzIC8qIFVuZm9sZFNob3J0Q2lyY3VpdC5jcHAgKi87IH07CisJCTcyMzA5
QTcwMTgzQzJCRTgwMDM3MEI5MyAvKiBVbmZvbGRTaG9ydENpcmN1aXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMzA5QTZBMTgzQzJCRTgwMDM3MEI5
MyAvKiBVbmZvbGRTaG9ydENpcmN1aXQuaCAqLzsgfTsKKwkJNzIzMDlBNzExODNDMkJFODAwMzcw
QjkzIC8qIFVuaWZvcm0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzIzMDlBNkIxODNDMkJFODAwMzcwQjkzIC8qIFVuaWZvcm0uY3BwICovOyB9Owor
CQk3MjMwOUE3MjE4M0MyQkU4MDAzNzBCOTMgLyogVW5pZm9ybS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIzMDlBNkMxODNDMkJFODAwMzcwQjkzIC8q
IFVuaWZvcm0uaCAqLzsgfTsKIAkJOTBEOUIxMDIxMkUxMURDQjAwMkQ0MjU1IC8qIENvbXBpbGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwRDlC
MEY5MTJFMTFEQ0IwMDJENDI1NSAvKiBDb21waWxlci5jcHAgKi87IH07CiAJCTkwRDlCMTAzMTJF
MTFEQ0IwMDJENDI1NSAvKiBFeHRlbnNpb25CZWhhdmlvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTBEOUIwRkExMkUxMURDQjAwMkQ0MjU1IC8qIEV4
dGVuc2lvbkJlaGF2aW9yLmggKi87IH07CiAJCTkwRDlCMTA3MTJFMTFEQ0IwMDJENDI1NSAvKiBn
bHNsYW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MEQ5QjBGRTEyRTExRENCMDAyRDQyNTUgLyogZ2xzbGFuZy5oICovOyB9OwpAQCAtMTAzLDcgKzEy
MSw2IEBACiAJCUEyNjU2ODQxMTU5QzIzRTEwMDM5ODUzOSAvKiBSZXN0cmljdEZyYWdtZW50U2hh
ZGVyVGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMjY1NjgzNjE1OUMyM0UxMDAzOTg1MzkgLyogUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWlu
Zy5oICovOyB9OwogCQlBMjY1Njg0MjE1OUMyM0UxMDAzOTg1MzkgLyogUmVzdHJpY3RWZXJ0ZXhT
aGFkZXJUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTI2NTY4MzcxNTlDMjNFMTAwMzk4NTM5IC8qIFJlc3RyaWN0VmVydGV4U2hhZGVyVGlt
aW5nLmNwcCAqLzsgfTsKIAkJQTI2NTY4NDMxNTlDMjNFMTAwMzk4NTM5IC8qIFJlc3RyaWN0VmVy
dGV4U2hhZGVyVGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMjY1NjgzODE1OUMyM0UxMDAzOTg1MzkgLyogUmVzdHJpY3RWZXJ0ZXhTaGFkZXJU
aW1pbmcuaCAqLzsgfTsKLQkJRkIzOUQyNzExMjAwRjM1QTAwMDg4RTY5IC8qIENvZGVHZW5HTFNM
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCMzlE
MjIyMTIwMEYzNUEwMDA4OEU2OSAvKiBDb2RlR2VuR0xTTC5jcHAgKi87IH07CiAJCUZCMzlEMjc1
MTIwMEYzNUEwMDA4OEU2OSAvKiBkZWJ1Zy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGQjM5RDIyNjEyMDBGMzVBMDAwODhFNjkgLyogZGVidWcuY3Bw
ICovOyB9OwogCQlGQjM5RDI3OTEyMDBGMzVBMDAwODhFNjkgLyogSW5mb1NpbmsuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkIzOUQyMkExMjAwRjM1
QTAwMDg4RTY5IC8qIEluZm9TaW5rLmNwcCAqLzsgfTsKIAkJRkIzOUQyN0IxMjAwRjM1QTAwMDg4
RTY5IC8qIEluaXRpYWxpemUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkIzOUQyMkMxMjAwRjM1QTAwMDg4RTY5IC8qIEluaXRpYWxpemUuY3BwICov
OyB9OwpAQCAtMTE0LDcgKzEzMSw2IEBACiAJCUZCMzlEMjg4MTIwMEYzNUEwMDA4OEU2OSAvKiBv
c3NvdXJjZV9wb3NpeC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGQjM5RDIzOTEyMDBGMzVBMDAwODhFNjkgLyogb3Nzb3VyY2VfcG9zaXguY3BwICov
OyB9OwogCQlGQjM5RDI4QTEyMDBGMzVBMDAwODhFNjkgLyogT3V0cHV0R0xTTC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjM5RDIzQjEyMDBGMzVB
MDAwODhFNjkgLyogT3V0cHV0R0xTTC5jcHAgKi87IH07CiAJCUZCMzlEMjhFMTIwMEYzNUEwMDA4
OEU2OSAvKiBwYXJzZUNvbnN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZCMzlEMjNGMTIwMEYzNUEwMDA4OEU2OSAvKiBwYXJzZUNvbnN0LmNwcCAq
LzsgfTsKLQkJRkIzOUQyOEYxMjAwRjM1QTAwMDg4RTY5IC8qIFBhcnNlSGVscGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCMzlEMjQwMTIwMEYz
NUEwMDA4OEU2OSAvKiBQYXJzZUhlbHBlci5jcHAgKi87IH07CiAJCUZCMzlEMjkxMTIwMEYzNUEw
MDA4OEU2OSAvKiBQb29sQWxsb2MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkIzOUQyNDIxMjAwRjM1QTAwMDg4RTY5IC8qIFBvb2xBbGxvYy5jcHAg
Ki87IH07CiAJCUZCMzlEMkE0MTIwMEYzNUEwMDA4OEU2OSAvKiBRdWFsaWZpZXJBbGl2ZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjM5RDI1NjEy
MDBGMzVBMDAwODhFNjkgLyogUXVhbGlmaWVyQWxpdmUuY3BwICovOyB9OwogCQlGQjM5RDJBNjEy
MDBGMzVBMDAwODhFNjkgLyogUmVtb3ZlVHJlZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjM5RDI1ODEyMDBGMzVBMDAwODhFNjkgLyogUmVtb3Zl
VHJlZS5jcHAgKi87IH07CkBAIC0xNjYsMTQgKzE4MiwzMiBAQAogCQk0OTk1MUMwNjE0QjdBQUQ4
MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNUNCMTNGRDIxNzlEQjNGRDAwMUY4NTFEIC8qIERldGVjdENhbGxEZXB0
aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXRlY3RDYWxsRGVw
dGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0IxM0ZEMzE3OURCM0ZEMDAx
Rjg1MUQgLyogRGV0ZWN0Q2FsbERlcHRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERldGVjdENhbGxEZXB0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1Q0Ix
M0ZERjE3OUY0NjU4MDAxRjg1MUQgLyogRXhwcmVzc2lvblBhcnNlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHByZXNzaW9uUGFyc2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNCMTNGRTAxNzlGNDY1ODAwMUY4NTFEIC8qIGdsc2xhbmdf
bGV4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGdsc2xhbmdfbGV4
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNCMTNGRTExNzlGNDY1ODAwMUY4
NTFEIC8qIGdsc2xhbmdfdGFiLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IGdsc2xhbmdfdGFiLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNCMTNG
RTIxNzlGNDY1ODAwMUY4NTFEIC8qIGdsc2xhbmdfdGFiLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IGdsc2xhbmdfdGFiLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTVDQjEzRkUzMTc5RjQ2NTgwMDFGODUxRCAvKiBUb2tlbml6ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVG9rZW5pemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUQ3QzU5QzUxMjA4QzY4QjAwMUM4NzNFIC8qIEFOR0xFLnhjY29uZmlnICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEFOR0xFLnhjY29uZmlnOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1RDdDNTlDNjEyMDhDNjhCMDAxQzg3M0UgLyogQmFzZS54Y2Nv
bmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDdDNTlDNzEyMDhDNjhCMDAxQzg3M0UgLyogRGVi
dWdSZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IERlYnVn
UmVsZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIzMDlBNTUx
ODNDMjdEQjAwMzcwQjkzIC8qIFRva2VuaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUb2tl
bml6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjMwOUE1NzE4M0MyN0Yx
MDAzNzBCOTMgLyogRXhwcmVzc2lvblBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHBy
ZXNzaW9uUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIzMDlBNTkx
ODNDMjg0RTAwMzcwQjkzIC8qIGdsc2xhbmdfbGV4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGds
c2xhbmdfbGV4LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIzMDlBNUExODND
Mjg0RTAwMzcwQjkzIC8qIGdsc2xhbmdfdGFiLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGdsc2xh
bmdfdGFiLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIzMDlBNUIxODNDMjg0
RTAwMzcwQjkzIC8qIGdsc2xhbmdfdGFiLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGdsc2xhbmdfdGFiLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMzA5QTVGMTgzQzJBNjQwMDM3MEI5MyAv
KiBUcmFuc2xhdG9ySExTTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmFuc2xhdG9ySExTTC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMzA5QTYwMTgzQzJBNjQwMDM3MEI5
MyAvKiBUcmFuc2xhdG9ySExTTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFuc2xhdG9ySExTTC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjMwOUE2MzE4M0MyQUU1MDAzNzBCOTMgLyog
T3V0cHV0SExTTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPdXRw
dXRITFNMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIzMDlBNjQxODNDMkFF
NTAwMzcwQjkzIC8qIE91dHB1dEhMU0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gT3V0cHV0SExTTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjMwOUE2NzE4
M0MyQkU4MDAzNzBCOTMgLyogRGV0ZWN0RGlzY29udGludWl0eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXRlY3REaXNjb250aW51aXR5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIzMDlBNjgxODNDMkJFODAwMzcwQjkzIC8qIERldGVjdERp
c2NvbnRpbnVpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV0ZWN0RGlz
Y29udGludWl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjMwOUE2OTE4M0My
QkU4MDAzNzBCOTMgLyogVW5mb2xkU2hvcnRDaXJjdWl0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFVuZm9sZFNob3J0Q2lyY3VpdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTcyMzA5QTZBMTgzQzJCRTgwMDM3MEI5MyAvKiBVbmZvbGRTaG9ydENp
cmN1aXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5mb2xkU2hvcnRDaXJj
dWl0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMzA5QTZCMTgzQzJCRTgwMDM3
MEI5MyAvKiBVbmlmb3JtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFVuaWZvcm0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjMwOUE2QzE4M0My
QkU4MDAzNzBCOTMgLyogVW5pZm9ybS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBVbmlmb3JtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNjUwOTMwMTgzQUEy
MTMwMEQyOEI0OCAvKiBDb2RlR2VuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvZGVHZW4uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjY1MDkzMTE4M0FBMjQ2MDBEMjhCNDgg
LyogSW5pdGlhbGl6ZUdMUG9zaXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5pdGlhbGl6
ZUdMUG9zaXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjY1MDkzMjE4
M0FBMjQ2MDBEMjhCNDggLyogSW5pdGlhbGl6ZUdMUG9zaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5pdGlhbGl6ZUdMUG9zaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI2
NTA5MzMxODNBQTI4OTAwRDI4QjQ4IC8qIE5vZGVTZWFyY2guaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm9k
ZVNlYXJjaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjY1MDkzNDE4M0FBM0Iy
MDBEMjhCNDggLyogUGFyc2VDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcnNlQ29u
dGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNjUwOTM1MTgzQUEzQjIw
MEQyOEI0OCAvKiBQYXJzZUNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFyc2VDb250ZXh0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNjUwOTM2MTgzQUEzQzYwMEQyOEI0OCAv
KiBVbmZvbGRTaG9ydENpcmN1aXRBU1QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5mb2xkU2hv
cnRDaXJjdWl0QVNULmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI2NTA5Mzcx
ODNBQTNDNjAwRDI4QjQ4IC8qIFVuZm9sZFNob3J0Q2lyY3VpdEFTVC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBVbmZvbGRTaG9ydENpcmN1aXRBU1QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTBEOUIwRjkxMkUxMURDQjAwMkQ0MjU1IC8qIENvbXBpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbXBpbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTBEOUIwRkExMkUxMURDQjAwMkQ0MjU1IC8qIEV4dGVuc2lvbkJlaGF2aW9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVuc2lvbkJlaGF2aW9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkwRDlCMEZFMTJFMTFEQ0IwMDJENDI1NSAvKiBn
bHNsYW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGdsc2xhbmcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0Niw3ICsyODAsNiBAQAogCQlBMjY1NjgzODE1
OUMyM0UxMDAzOTg1MzkgLyogUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkIzOUQwRDExMjAwRjBFMzAwMDg4RTY5IC8qIGxp
YkFOR0xFLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9
IGFyY2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYkFOR0xFLmE7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUZCMzlEMjIxMTIwMEYzNUEwMDA4OEU2
OSAvKiBCYXNlVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IEJhc2VU
eXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGQjM5RDIyMjEyMDBGMzVBMDAw
ODhFNjkgLyogQ29kZUdlbkdMU0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ29kZUdlbkdMU0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQjM5
RDIyNDEyMDBGMzVBMDAwODhFNjkgLyogQ29tbW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVFbmNvZGluZyA9
IDQ7IHBhdGggPSBDb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkIzOUQy
MjUxMjAwRjM1QTAwMDg4RTY5IC8qIENvbnN0YW50VW5pb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgZmlsZUVuY29k
aW5nID0gNDsgcGF0aCA9IENvbnN0YW50VW5pb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkIzOUQyMjYxMjAwRjM1QTAwMDg4RTY5IC8qIGRlYnVnLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGRlYnVnLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI3MSw4ICszMDQsNiBAQAogCQlGQjM5RDIzQjEyMDBGMzVBMDAwODhFNjkgLyog
T3V0cHV0R0xTTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPdXRw
dXRHTFNMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkIzOUQyM0MxMjAwRjM1
QTAwMDg4RTY5IC8qIE91dHB1dEdMU0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBl
eHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgZmlsZUVuY29kaW5nID0gNDsgcGF0
aCA9IE91dHB1dEdMU0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkIzOUQyM0Yx
MjAwRjM1QTAwMDg4RTY5IC8qIHBhcnNlQ29uc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gcGFyc2VDb25zdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUZCMzlEMjQwMTIwMEYzNUEwMDA4OEU2OSAvKiBQYXJzZUhlbHBlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXJzZUhlbHBlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUZCMzlEMjQxMTIwMEYzNUEwMDA4OEU2OSAvKiBQYXJzZUhlbHBl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5oOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gUGFyc2VIZWxwZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkIzOUQyNDIxMjAwRjM1QTAwMDg4RTY5IC8qIFBv
b2xBbGxvYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb29sQWxs
b2MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQjM5RDI0MzEyMDBGMzVBMDAw
ODhFNjkgLyogUG9vbEFsbG9jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGlj
aXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBQ
b29sQWxsb2MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkIzOUQyNTYxMjAwRjM1
QTAwMDg4RTY5IC8qIFF1YWxpZmllckFsaXZlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFF1YWxpZmllckFsaXZlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTMwOSwxOSArMzQwLDYgQEAKIAkJCW5hbWUgPSBtaXNjOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKIAkJfTsKLQkJNUNCMTNGREUxNzlGNDU3QjAwMUY4NTFEIC8qIERlcml2ZWQg
U291cmNlcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJ
NUNCMTNGREYxNzlGNDY1ODAwMUY4NTFEIC8qIEV4cHJlc3Npb25QYXJzZXIuY3BwICovLAotCQkJ
CTVDQjEzRkUwMTc5RjQ2NTgwMDFGODUxRCAvKiBnbHNsYW5nX2xleC5jcHAgKi8sCi0JCQkJNUNC
MTNGRTExNzlGNDY1ODAwMUY4NTFEIC8qIGdsc2xhbmdfdGFiLmNwcCAqLywKLQkJCQk1Q0IxM0ZF
MjE3OUY0NjU4MDAxRjg1MUQgLyogZ2xzbGFuZ190YWIuaCAqLywKLQkJCQk1Q0IxM0ZFMzE3OUY0
NjU4MDAxRjg1MUQgLyogVG9rZW5pemVyLmNwcCAqLywKLQkJCSk7Ci0JCQluYW1lID0gIkRlcml2
ZWQgU291cmNlcyI7Ci0JCQlwYXRoID0gRGVyaXZlZFNvdXJjZXMvQU5HTEU7Ci0JCQlzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOwotCQl9OwogCQk1RDdDNTlDNDEyMDhDNjhCMDAxQzg3
M0UgLyogQ29uZmlndXJhdGlvbnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKApAQCAtMzk2LDcgKzQxNCw2IEBACiAJCUZCMzlEMDZFMTIwMEVEOTIwMDA4OEU2OSA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNUNCMTNGREUxNzlG
NDU3QjAwMUY4NTFEIC8qIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQk1RDdDNTlDNDEyMDhDNjhC
MDAxQzg3M0UgLyogQ29uZmlndXJhdGlvbnMgKi8sCiAJCQkJQTI5QjE1RTkxNjk3OEI3RDAwMTEx
RDk3IC8qIGluY2x1ZGUgKi8sCiAJCQkJMzEyQkRCMDcxNUZFQzhFNjAwOTdFQkM3IC8qIG1pc2Mg
Ki8sCkBAIC00MzAsOCArNDQ3LDIxIEBACiAJCQkJQTI2NTY4MzQxNTlDMjNFMTAwMzk4NTM5IC8q
IHRpbWluZyAqLywKIAkJCQlGQjM5RDIyMTEyMDBGMzVBMDAwODhFNjkgLyogQmFzZVR5cGVzLmgg
Ki8sCiAJCQkJNDk5NTFDMDUxNEI3QUFENzAwNjBFOTZFIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxh
dG9yLmNwcCAqLywKKwkJCQk3MjY1MDkzNjE4M0FBM0M2MDBEMjhCNDggLyogVW5mb2xkU2hvcnRD
aXJjdWl0QVNULmNwcCAqLywKKwkJCQk3MjY1MDkzNzE4M0FBM0M2MDBEMjhCNDggLyogVW5mb2xk
U2hvcnRDaXJjdWl0QVNULmggKi8sCisJCQkJNzI2NTA5MzQxODNBQTNCMjAwRDI4QjQ4IC8qIFBh
cnNlQ29udGV4dC5jcHAgKi8sCisJCQkJNzIzMDlBNjcxODNDMkJFODAwMzcwQjkzIC8qIERldGVj
dERpc2NvbnRpbnVpdHkuY3BwICovLAorCQkJCTcyMzA5QTY4MTgzQzJCRTgwMDM3MEI5MyAvKiBE
ZXRlY3REaXNjb250aW51aXR5LmggKi8sCisJCQkJNzIzMDlBNjkxODNDMkJFODAwMzcwQjkzIC8q
IFVuZm9sZFNob3J0Q2lyY3VpdC5jcHAgKi8sCisJCQkJNzIzMDlBNkExODNDMkJFODAwMzcwQjkz
IC8qIFVuZm9sZFNob3J0Q2lyY3VpdC5oICovLAorCQkJCTcyMzA5QTZCMTgzQzJCRTgwMDM3MEI5
MyAvKiBVbmlmb3JtLmNwcCAqLywKKwkJCQk3MjMwOUE2QzE4M0MyQkU4MDAzNzBCOTMgLyogVW5p
Zm9ybS5oICovLAorCQkJCTcyNjUwOTM1MTgzQUEzQjIwMEQyOEI0OCAvKiBQYXJzZUNvbnRleHQu
aCAqLywKKwkJCQk3MjY1MDkzMzE4M0FBMjg5MDBEMjhCNDggLyogTm9kZVNlYXJjaC5oICovLAor
CQkJCTcyNjUwOTMxMTgzQUEyNDYwMEQyOEI0OCAvKiBJbml0aWFsaXplR0xQb3NpdGlvbi5jcHAg
Ki8sCisJCQkJNzI2NTA5MzIxODNBQTI0NjAwRDI4QjQ4IC8qIEluaXRpYWxpemVHTFBvc2l0aW9u
LmggKi8sCiAJCQkJNDk5NTFDMDYxNEI3QUFEODAwNjBFOTZFIC8qIEJ1aWx0SW5GdW5jdGlvbkVt
dWxhdG9yLmggKi8sCi0JCQkJRkIzOUQyMjIxMjAwRjM1QTAwMDg4RTY5IC8qIENvZGVHZW5HTFNM
LmNwcCAqLywKKwkJCQk3MjY1MDkzMDE4M0FBMjEzMDBEMjhCNDggLyogQ29kZUdlbi5jcHAgKi8s
CiAJCQkJRkIzOUQyMjQxMjAwRjM1QTAwMDg4RTY5IC8qIENvbW1vbi5oICovLAogCQkJCTkwRDlC
MEY5MTJFMTFEQ0IwMDJENDI1NSAvKiBDb21waWxlci5jcHAgKi8sCiAJCQkJRkIzOUQyMjUxMjAw
RjM1QTAwMDg4RTY5IC8qIENvbnN0YW50VW5pb24uaCAqLywKQEAgLTQ0Nyw2ICs0NzcsOSBAQAog
CQkJCUEwQUFCRTJBMTNBRkU4MTAwMEYyRUJEMSAvKiBGb3JMb29wVW5yb2xsLmNwcCAqLywKIAkJ
CQlBMEFBQkUyQjEzQUZFODEwMDBGMkVCRDEgLyogRm9yTG9vcFVucm9sbC5oICovLAogCQkJCTkw
RDlCMEZFMTJFMTFEQ0IwMDJENDI1NSAvKiBnbHNsYW5nLmggKi8sCisJCQkJNzIzMDlBNTkxODND
Mjg0RTAwMzcwQjkzIC8qIGdsc2xhbmdfbGV4LmNwcCAqLywKKwkJCQk3MjMwOUE1QTE4M0MyODRF
MDAzNzBCOTMgLyogZ2xzbGFuZ190YWIuY3BwICovLAorCQkJCTcyMzA5QTVCMTgzQzI4NEUwMDM3
MEI5MyAvKiBnbHNsYW5nX3RhYi5oICovLAogCQkJCUEyNjRGOEM1MTY5NzRFMkEwMDZGQUE1QSAv
KiBIYXNoTmFtZXMuaCAqLywKIAkJCQlGQjM5RDIyQTEyMDBGMzVBMDAwODhFNjkgLyogSW5mb1Np
bmsuY3BwICovLAogCQkJCUZCMzlEMjJCMTIwMEYzNUEwMDA4OEU2OSAvKiBJbmZvU2luay5oICov
LApAQCAtNDc0LDkgKzUwNyw5IEBACiAJCQkJRkIzOUQyM0MxMjAwRjM1QTAwMDg4RTY5IC8qIE91
dHB1dEdMU0wuaCAqLywKIAkJCQlBMEFBQkUzMjEzQUZFODQ3MDBGMkVCRDEgLyogT3V0cHV0R0xT
TEJhc2UuY3BwICovLAogCQkJCUEwQUFCRTMzMTNBRkU4NDcwMEYyRUJEMSAvKiBPdXRwdXRHTFNM
QmFzZS5oICovLAorCQkJCTcyMzA5QTYzMTgzQzJBRTUwMDM3MEI5MyAvKiBPdXRwdXRITFNMLmNw
cCAqLywKKwkJCQk3MjMwOUE2NDE4M0MyQUU1MDAzNzBCOTMgLyogT3V0cHV0SExTTC5oICovLAog
CQkJCUZCMzlEMjNGMTIwMEYzNUEwMDA4OEU2OSAvKiBwYXJzZUNvbnN0LmNwcCAqLywKLQkJCQlG
QjM5RDI0MDEyMDBGMzVBMDAwODhFNjkgLyogUGFyc2VIZWxwZXIuY3BwICovLAotCQkJCUZCMzlE
MjQxMTIwMEYzNUEwMDA4OEU2OSAvKiBQYXJzZUhlbHBlci5oICovLAogCQkJCUZCMzlEMjQyMTIw
MEYzNUEwMDA4OEU2OSAvKiBQb29sQWxsb2MuY3BwICovLAogCQkJCUZCMzlEMjQzMTIwMEYzNUEw
MDA4OEU2OSAvKiBQb29sQWxsb2MuaCAqLywKIAkJCQlBMjY1NjdCNTE1OUMyMUIxMDAzOTg1Mzkg
LyogUHJhZ21hLmggKi8sCkBAIC00OTUsNiArNTI4LDggQEAKIAkJCQlBMEFBQkU0NzEzQUZFOTYx
MDBGMkVCRDEgLyogVHJhbnNsYXRvckVTU0wuaCAqLywKIAkJCQlGQjM5RDI2ODEyMDBGMzVBMDAw
ODhFNjkgLyogVHJhbnNsYXRvckdMU0wuY3BwICovLAogCQkJCUZCMzlEMjY5MTIwMEYzNUEwMDA4
OEU2OSAvKiBUcmFuc2xhdG9yR0xTTC5oICovLAorCQkJCTcyMzA5QTVGMTgzQzJBNjQwMDM3MEI5
MyAvKiBUcmFuc2xhdG9ySExTTC5jcHAgKi8sCisJCQkJNzIzMDlBNjAxODNDMkE2NDAwMzcwQjkz
IC8qIFRyYW5zbGF0b3JITFNMLmggKi8sCiAJCQkJRkIzOUQyNkMxMjAwRjM1QTAwMDg4RTY5IC8q
IFR5cGVzLmggKi8sCiAJCQkJOTBEOUIxMEIxMkUxMURENjAwMkQ0MjU1IC8qIHV0aWwuY3BwICov
LAogCQkJCTkwRDlCMTBDMTJFMTFERDYwMDJENDI1NSAvKiB1dGlsLmggKi8sCkBAIC01MTQsNiAr
NTQ5LDggQEAKIAkJRkIzOUQyNDQxMjAwRjM1QTAwMDg4RTY5IC8qIHByZXByb2Nlc3NvciAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNzIzMDlBNTcxODND
MjdGMTAwMzcwQjkzIC8qIEV4cHJlc3Npb25QYXJzZXIuY3BwICovLAorCQkJCTcyMzA5QTU1MTgz
QzI3REIwMDM3MEI5MyAvKiBUb2tlbml6ZXIuY3BwICovLAogCQkJCUEyNjRGODkzMTY5NzRERUQw
MDZGQUE1QSAvKiBEaWFnbm9zdGljc0Jhc2UuY3BwICovLAogCQkJCUEyNjRGODk0MTY5NzRERUQw
MDZGQUE1QSAvKiBEaWFnbm9zdGljc0Jhc2UuaCAqLywKIAkJCQlBMjY0Rjg5NTE2OTc0REVEMDA2
RkFBNUEgLyogRGlyZWN0aXZlSGFuZGxlckJhc2UuY3BwICovLApAQCAtNTY5LDI1ICs2MDYsMzQg
QEAKIAkJCQlBMjY0RjhBRjE2OTc0REVEMDA2RkFBNUEgLyogRGlyZWN0aXZlSGFuZGxlckJhc2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRGOEIxMTY5NzRERUQwMDZGQUE1QSAvKiBEaXJlY3Rp
dmVQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRGOEIzMTY5NzRERUQwMDZGQUE1QSAv
KiBFeHByZXNzaW9uUGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjMwOUE0RjE4M0MyNTlF
MDAzNzBCOTMgLyogVW5mb2xkU2hvcnRDaXJjdWl0QVNULmggaW4gSGVhZGVycyAqLywKIAkJCQk5
MEQ5QjEwMzEyRTExRENCMDAyRDQyNTUgLyogRXh0ZW5zaW9uQmVoYXZpb3IuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTcyMzA5QTVFMTgzQzI4NTMwMDM3MEI5MyAvKiBnbHNsYW5nX3RhYi5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNzIzMDlBNzIxODNDMkJFODAwMzcwQjkzIC8qIFVuaWZvcm0uaCBpbiBI
ZWFkZXJzICovLAorCQkJCTcyMzA5QTY2MTgzQzJBRTUwMDM3MEI5MyAvKiBPdXRwdXRITFNMLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMEFBQkUyRDEzQUZFODEwMDBGMkVCRDEgLyogRm9yTG9vcFVu
cm9sbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTBEOUIxMDcxMkUxMURDQjAwMkQ0MjU1IC8qIGds
c2xhbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRGOEM4MTY5NzRFMkEwMDZGQUE1QSAvKiBI
YXNoTmFtZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyMzA5QTYyMTgzQzJBNzQwMDM3MEI5MyAv
KiBUcmFuc2xhdG9ySExTTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NEY4QjUxNjk3NERFRDAw
NkZBQTVBIC8qIElucHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY0RjhDRDE2OTc2MkFBMDA2
RkFBNUEgLyoga2hycGxhdGZvcm0uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5OTUxQzAzMTRCN0FB
QjMwMDYwRTk2RSAvKiBsZW5ndGhfbGltaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY0RjhC
NzE2OTc0REVEMDA2RkFBNUEgLyogTGV4ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRGOEI5
MTY5NzRERUQwMDZGQUE1QSAvKiBNYWNyby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NEY4QkIx
Njk3NERFRDAwNkZBQTVBIC8qIE1hY3JvRXhwYW5kZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTcy
MzA5QTU0MTgzQzI1QUQwMDM3MEI5MyAvKiBJbml0aWFsaXplR0xQb3NpdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTBBQUJFMzExM0FGRTgzMDAwRjJFQkQxIC8qIE1hcExvbmdWYXJpYWJsZU5h
bWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY0RjhCQzE2OTc0REVEMDA2RkFBNUEgLyogbnVt
ZXJpY19sZXguaCBpbiBIZWFkZXJzICovLAogCQkJCUEwQUFCRTQ1MTNBRkU5NDUwMEYyRUJEMSAv
KiBPdXRwdXRFU1NMLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjMwOUE3MDE4M0MyQkU4MDAzNzBC
OTMgLyogVW5mb2xkU2hvcnRDaXJjdWl0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMEFBQkUzNTEz
QUZFODQ3MDBGMkVCRDEgLyogT3V0cHV0R0xTTEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUEy
NjRGOEJEMTY5NzRERUQwMDZGQUE1QSAvKiBwcF91dGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTI2NTY3QzAxNTlDMjFCMTAwMzk4NTM5IC8qIFByYWdtYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTI2NEY4QkYxNjk3NERFRDAwNkZBQTVBIC8qIFByZXByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTI2NTY3QzExNTlDMjFCMTAwMzk4NTM5IC8qIFJlbmFtZUZ1bmN0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3MjMwOUE1MjE4M0MyNUE3MDAzNzBCOTMgLyogTm9kZVNlYXJjaC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTI2NTY4NDExNTlDMjNFMTAwMzk4NTM5IC8qIFJlc3RyaWN0RnJh
Z21lbnRTaGFkZXJUaW1pbmcuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyMzA5QTZFMTgzQzJCRTgw
MDM3MEI5MyAvKiBEZXRlY3REaXNjb250aW51aXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY1
Njg0MzE1OUMyM0UxMDAzOTg1MzkgLyogUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkwRDlCMTBBMTJFMTFEQ0IwMDJENDI1NSAvKiBTZWFyY2hTeW1ib2wu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZCMzlENzZFMTIwMTEwRkMwMDA4OEU2OSAvKiBTaGFkZXJM
YW5nLmggaW4gSGVhZGVycyAqLywKQEAgLTU5NywxMSArNjQzLDExIEBACiAJCQkJQTBBQUJFNDkx
M0FGRTk2MTAwRjJFQkQxIC8qIFRyYW5zbGF0b3JFU1NMLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
MEQ5QjExNDEyRTExREQ2MDAyRDQyNTUgLyogdXRpbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTBE
OUIxMTYxMkUxMURENjAwMkQ0MjU1IC8qIFZhbGlkYXRlTGltaXRhdGlvbnMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTcyMzA5QTUxMTgzQzI1QTUwMDM3MEI5MyAvKiBQYXJzZUNvbnRleHQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkwRDlCMTE4MTJFMTFERDYwMDJENDI1NSAvKiBWYXJpYWJsZUluZm8u
aCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRGOENBMTY5NzRFMkEwMDZGQUE1QSAvKiBWYXJpYWJs
ZVBhY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTBEOUIxMUExMkUxMURENjAwMkQ0MjU1IC8q
IFZlcnNpb25HTFNMLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0IxM0ZENTE3OURCM0ZEMDAxRjg1
MUQgLyogRGV0ZWN0Q2FsbERlcHRoLmggaW4gSGVhZGVycyAqLywKLQkJCQk1Q0IxM0ZFNzE3OUY0
NjU4MDAxRjg1MUQgLyogZ2xzbGFuZ190YWIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNjY4LDcgKzcx
NCw3IEBACiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCQlzaGVsbFBhdGggPSAvYmluL3NoOwotCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIk
e0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvQU5HTEVcIlxuY2QgXCIke0JVSUxU
X1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvQU5HTEVcIlxuXG4vYmluL2xuIC1zZmggXCIk
e1NSQ1JPT1R9XCIgQU5HTEVcbmV4cG9ydCBBTkdMRT1cIkFOR0xFXCJcblxubWFrZSAgLS1uby1i
dWlsdGluLXJ1bGVzIC1mIFwiQU5HTEUvRGVyaXZlZFNvdXJjZXMubWFrZVwiIC1qIGAvdXNyL3Ni
aW4vc3lzY3RsIC1uIGh3LmF2YWlsY3B1YCI7CisJCQlzaGVsbFNjcmlwdCA9ICIiOwogCQl9Owog
LyogRW5kIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCiAKQEAgLTY3OSw3ICs3
MjUsNyBAQAogCQkJZmlsZXMgPSAoCiAJCQkJQTA4QzNDREMxNkQ2Q0I2MTAwM0YwQjgzIC8qIEFy
cmF5Qm91bmRzQ2xhbXBlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTk1MUMwOTE0QjdBQUQ4
MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJRkIzOUQyNzExMjAwRjM1QTAwMDg4RTY5IC8qIENvZGVHZW5HTFNMLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTcyMzA5QTVEMTgzQzI4NTMwMDM3MEI5MyAvKiBnbHNsYW5nX3RhYi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5MEQ5QjEwMjEyRTExRENCMDAyRDQyNTUgLyogQ29tcGlsZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkIzOUQyNzUxMjAwRjM1QTAwMDg4RTY5IC8qIGRlYnVnLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjU2ODM5MTU5QzIzRTEwMDM5ODUzOSAvKiBEZXBlbmRl
bmN5R3JhcGguY3BwIGluIFNvdXJjZXMgKi8sCkBAIC02ODcsMTQgKzczMywxOSBAQAogCQkJCUEy
NjU2ODNEMTU5QzIzRTEwMDM5ODUzOSAvKiBEZXBlbmRlbmN5R3JhcGhPdXRwdXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTI2NTY4M0YxNTlDMjNFMTAwMzk4NTM5IC8qIERlcGVuZGVuY3lHcmFw
aFRyYXZlcnNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjU2N0JCMTU5QzIxQjEwMDM5ODUz
OSAvKiBEaWFnbm9zdGljcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MjMwOUE1NjE4M0MyN0RF
MDAzNzBCOTMgLyogVG9rZW5pemVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcyMzA5QTUwMTgz
QzI1QTEwMDM3MEI5MyAvKiBQYXJzZUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzIz
MDlBNzExODNDMkJFODAwMzcwQjkzIC8qIFVuaWZvcm0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTI2NEY4QUMxNjk3NERFRDAwNkZBQTVBIC8qIERpYWdub3N0aWNzQmFzZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBMjY1NjdCRDE1OUMyMUIxMDAzOTg1MzkgLyogRGlyZWN0aXZlSGFuZGxlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBMjY0RjhBRTE2OTc0REVEMDA2RkFBNUEgLyogRGlyZWN0
aXZlSGFuZGxlckJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTI2NEY4QjAxNjk3NERFRDAw
NkZBQTVBIC8qIERpcmVjdGl2ZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMEFBQkUy
QzEzQUZFODEwMDBGMkVCRDEgLyogRm9yTG9vcFVucm9sbC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGQjM5RDI3OTEyMDBGMzVBMDAwODhFNjkgLyogSW5mb1NpbmsuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNzIzMDlBNjExODNDMkE3NDAwMzcwQjkzIC8qIFRyYW5zbGF0b3JITFNMLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUZCMzlEMjdCMTIwMEYzNUEwMDA4OEU2OSAvKiBJbml0aWFsaXplLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUZCMzlEMjdEMTIwMEYzNUEwMDA4OEU2OSAvKiBJbml0aWFs
aXplRGxsLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcyMzA5QTU4MTgzQzI3RjMwMDM3MEI5MyAv
KiBFeHByZXNzaW9uUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjU2N0JGMTU5QzIx
QjEwMDM5ODUzOSAvKiBJbml0aWFsaXplUGFyc2VDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUEyNjRGOEI0MTY5NzRERUQwMDZGQUE1QSAvKiBJbnB1dC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGQjM5RDI4MTEyMDBGMzVBMDAwODhFNjkgLyogSW50ZXJtZWRpYXRlLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtNzA5LDkgKzc2MCwxNCBAQAogCQkJCUZCMzlEMjhBMTIwMEYzNUEwMDA4OEU2
OSAvKiBPdXRwdXRHTFNMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEwQUFCRTM0MTNBRkU4NDcw
MEYyRUJEMSAvKiBPdXRwdXRHTFNMQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGQjM5RDI4
RTEyMDBGMzVBMDAwODhFNjkgLyogcGFyc2VDb25zdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlG
QjM5RDI4RjEyMDBGMzVBMDAwODhFNjkgLyogUGFyc2VIZWxwZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNzIzMDlBNjUxODNDMkFFNTAwMzcwQjkzIC8qIE91dHB1dEhMU0wuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRkIzOUQyOTExMjAwRjM1QTAwMDg4RTY5IC8qIFBvb2xBbGxvYy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk3MjMwOUE1MzE4M0MyNUFBMDAzNzBCOTMgLyogSW5pdGlhbGl6ZUdM
UG9zaXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzIzMDlBNkQxODNDMkJFODAwMzcwQjkz
IC8qIERldGVjdERpc2NvbnRpbnVpdHkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzIzMDlBNkYx
ODNDMkJFODAwMzcwQjkzIC8qIFVuZm9sZFNob3J0Q2lyY3VpdC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk3MjMwOUE1QzE4M0MyODUzMDAzNzBCOTMgLyogZ2xzbGFuZ19sZXguY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTI2NEY4QkUxNjk3NERFRDAwNkZBQTVBIC8qIFByZXByb2Nlc3Nvci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk3MjMwOUE0RDE4M0MyNTkzMDAzNzBCOTMgLyogQ29kZUdlbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGQjM5RDJBNDEyMDBGMzVBMDAwODhFNjkgLyogUXVhbGlm
aWVyQWxpdmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkIzOUQyQTYxMjAwRjM1QTAwMDg4RTY5
IC8qIFJlbW92ZVRyZWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTI2NTY4NDAxNTlDMjNFMTAw
Mzk4NTM5IC8qIFJlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC03MjgsMTAgKzc4NCw3IEBACiAJCQkJQTI2NEY4QzkxNjk3NEUyQTAwNkZBQTVBIC8qIFZh
cmlhYmxlUGFja2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkwRDlCMTE5MTJFMTFERDYwMDJE
NDI1NSAvKiBWZXJzaW9uR0xTTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0IxM0ZENDE3OURC
M0ZEMDAxRjg1MUQgLyogRGV0ZWN0Q2FsbERlcHRoLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTVD
QjEzRkU0MTc5RjQ2NTgwMDFGODUxRCAvKiBFeHByZXNzaW9uUGFyc2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTVDQjEzRkU1MTc5RjQ2NTgwMDFGODUxRCAvKiBnbHNsYW5nX2xleC5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQk1Q0IxM0ZFNjE3OUY0NjU4MDAxRjg1MUQgLyogZ2xzbGFuZ190YWIu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNUNCMTNGRTgxNzlGNDY1ODAwMUY4NTFEIC8qIFRva2Vu
aXplci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MjMwOUE0RTE4M0MyNTlDMDAzNzBCOTMgLyog
VW5mb2xkU2hvcnRDaXJjdWl0QVNULmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvaW5jbHVkZS9FR0wvZWdsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvaW5jbHVkZS9FR0wvZWdsLmgJKHJldmlzaW9uIDE1OTA5MCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvRUdML2VnbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNDYsMTAgKzI0Niw2IEBAIHR5cGVkZWYgdm9pZCAqRUdMQ2xpZW50QnVmZmVyOwogCiAvKiBF
R0wgRnVuY3Rpb25zICovCiAKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChBTkdM
RV9XRUJLSVRfV0lOKQotI2luY2x1ZGUgPEVHTC9lZ2xzb2Z0bGlua2luZy5oPgotI2Vsc2UKLQog
RUdMQVBJIEVHTGludCBFR0xBUElFTlRSWSBlZ2xHZXRFcnJvcih2b2lkKTsKIAogRUdMQVBJIEVH
TERpc3BsYXkgRUdMQVBJRU5UUlkgZWdsR2V0RGlzcGxheShFR0xOYXRpdmVEaXNwbGF5VHlwZSBk
aXNwbGF5X2lkKTsKQEAgLTMyNiw4ICszMjIsNiBAQCB0eXBlZGVmIHZvaWQgKCpfX2VnbE11c3RD
YXN0VG9Qcm9wZXJGdW5jCiBFR0xBUEkgX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2lu
dGVyVHlwZSBFR0xBUElFTlRSWQogICAgICAgIGVnbEdldFByb2NBZGRyZXNzKGNvbnN0IGNoYXIg
KnByb2NuYW1lKTsKIAotI2VuZGlmCi0KICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0VHTC9lZ2xzb2Z0bGlua2luZy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvRUdML2VnbHNv
ZnRsaW5raW5nLmgJKHJldmlzaW9uIDE1OTIzOSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L2luY2x1ZGUvRUdML2VnbHNvZnRsaW5raW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjMgKzAs
MCBAQAotLyogCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiU29mdExpbmtpbmcuaCIKLQotU09GVF9M
SU5LX0xJQlJBUlkobGliRUdMKQotCi1TT0ZUX0xJTksobGliRUdMLCBlZ2xHZXRFcnJvciwgRUdM
aW50LCBFR0xBUElFTlRSWSwgKHZvaWQpLCAoKSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xHZXRE
aXNwbGF5LCBFR0xEaXNwbGF5LCBFR0xBUElFTlRSWSwgKEVHTE5hdGl2ZURpc3BsYXlUeXBlIGRp
c3BsYXlfaWQpLCAoZGlzcGxheV9pZCkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsSW5pdGlhbGl6
ZSwgRUdMQm9vbGVhbiwgRUdMQVBJRU5UUlksIChFR0xEaXNwbGF5IGRweSwgRUdMaW50ICptYWpv
ciwgRUdMaW50ICptaW5vciksIChkcHksIG1ham9yLCBtaW5vcikpOwotU09GVF9MSU5LKGxpYkVH
TCwgZWdsVGVybWluYXRlLCBFR0xCb29sZWFuLCBFR0xBUElFTlRSWSwgKEVHTERpc3BsYXkgZHB5
KSwgKGRweSkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsUXVlcnlTdHJpbmcsIGNvbnN0IGNoYXIg
KiwgRUdMQVBJRU5UUlksIChFR0xEaXNwbGF5IGRweSwgRUdMaW50IG5hbWUpLCAoZHB5LCBuYW1l
KSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xHZXRDb25maWdzLCBFR0xCb29sZWFuLCBFR0xBUElF
TlRSWSwgKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgKmNvbmZpZ3MsIEVHTGludCBjb25maWdf
c2l6ZSwgRUdMaW50ICpudW1fY29uZmlnKSwgKGRweSwgY29uZmlncywgY29uZmlnX3NpemUsIG51
bV9jb25maWcpKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbENob29zZUNvbmZpZywgRUdMQm9vbGVh
biwgRUdMQVBJRU5UUlksIChFR0xEaXNwbGF5IGRweSwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlz
dCwgRUdMQ29uZmlnICpjb25maWdzLCBFR0xpbnQgY29uZmlnX3NpemUsIEVHTGludCAqbnVtX2Nv
bmZpZyksIChkcHksIGF0dHJpYl9saXN0LCBjb25maWdzLCBjb25maWdfc2l6ZSwgbnVtX2NvbmZp
ZykpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsR2V0Q29uZmlnQXR0cmliLCBFR0xpbnQsIEVHTEFQ
SUVOVFJZLCAoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcsIEVHTGludCBhdHRyaWJ1
dGUsIEVHTGludCAqdmFsdWUpLCAoZHB5LCBjb25maWcsIGF0dHJpYnV0ZSwgdmFsdWUpKTsKLVNP
RlRfTElOSyhsaWJFR0wsIGVnbENyZWF0ZVdpbmRvd1N1cmZhY2UsIEVHTFN1cmZhY2UsIEVHTEFQ
SUVOVFJZLCAoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcsIEVHTE5hdGl2ZVdpbmRv
d1R5cGUgd2luLCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KSwgKGRweSwgY29uZmlnLCB3aW4s
IGF0dHJpYl9saXN0KSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xDcmVhdGVQYnVmZmVyU3VyZmFj
ZSwgRUdMU3VyZmFjZSwgRUdMQVBJRU5UUlksIChFR0xEaXNwbGF5IGRweSwgRUdMQ29uZmlnIGNv
bmZpZywgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCksIChkcHksIGNvbmZpZywgYXR0cmliX2xp
c3QpKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbENyZWF0ZVBpeG1hcFN1cmZhY2UsIEVHTFN1cmZh
Y2UsIEVHTEFQSUVOVFJZLCAoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcsIEVHTE5h
dGl2ZVBpeG1hcFR5cGUgcGl4bWFwLCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KSwgKGRweSwg
Y29uZmlnLCBwaXhtYXAsIGF0dHJpYl9saXN0KSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xEZXN0
cm95U3VyZmFjZSwgRUdMQm9vbGVhbiwgRUdMQVBJRU5UUlksIChFR0xEaXNwbGF5IGRweSwgRUdM
U3VyZmFjZSBzdXJmYWNlKSwgKGRweSwgc3VyZmFjZSkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWds
UXVlcnlTdXJmYWNlLCBFR0xCb29sZWFuLCBFR0xBUElFTlRSWSwgKEVHTERpc3BsYXkgZHB5LCBF
R0xTdXJmYWNlIHN1cmZhY2UsIEVHTGludCBhdHRyaWJ1dGUsIEVHTGludCAqdmFsdWUpLCAoZHB5
LCBzdXJmYWNlLCBhdHRyaWJ1dGUsIHZhbHVlKSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xCaW5k
QVBJLCBFR0xCb29sZWFuLCBFR0xBUElFTlRSWSwgKEVHTGVudW0gYXBpKSwgKGFwaSkpOwotU09G
VF9MSU5LKGxpYkVHTCwgZWdsUXVlcnlBUEksIEVHTGVudW0sIEVHTEFQSUVOVFJZLCAodm9pZCks
ICgpKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbFdhaXRDbGllbnQsIEVHTEJvb2xlYW4sIEVHTEFQ
SUVOVFJZLCAodm9pZCksICgpKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbFJlbGVhc2VUaHJlYWQs
IEVHTEJvb2xlYW4sIEVHTEFQSUVOVFJZLCAodm9pZCksICgpKTsKLVNPRlRfTElOSyhsaWJFR0ws
IGVnbENyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyLCBFR0xTdXJmYWNlLCBFR0xBUElFTlRS
WSwgKEVHTERpc3BsYXkgZHB5LCBFR0xlbnVtIGJ1ZnR5cGUsIEVHTENsaWVudEJ1ZmZlciBidWZm
ZXIsIEVHTENvbmZpZyBjb25maWcsIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpLCAoZHB5LCBi
dWZ0eXBlLCBidWZmZXIsIGNvbmZpZywgYXR0cmliX2xpc3QpKTsKLVNPRlRfTElOSyhsaWJFR0ws
IGVnbFN1cmZhY2VBdHRyaWIsIEVHTEJvb2xlYW4sIEVHTEFQSUVOVFJZLCAoRUdMRGlzcGxheSBk
cHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IGF0dHJpYnV0ZSwgRUdMaW50IHZhbHVlKSwg
KGRweSwgc3VyZmFjZSwgYXR0cmlidXRlLCB2YWx1ZSkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWds
QmluZFRleEltYWdlLCBFR0xCb29sZWFuLCBFR0xBUElFTlRSWSwgKEVHTERpc3BsYXkgZHB5LCBF
R0xTdXJmYWNlIHN1cmZhY2UsIEVHTGludCBidWZmZXIpLCAoZHB5LCBzdXJmYWNlLCBidWZmZXIp
KTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbFJlbGVhc2VUZXhJbWFnZSwgRUdMQm9vbGVhbiwgRUdM
QVBJRU5UUlksIChFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xpbnQgYnVm
ZmVyKSwgKGRweSwgc3VyZmFjZSwgYnVmZmVyKSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xTd2Fw
SW50ZXJ2YWwsIEVHTEJvb2xlYW4sIEVHTEFQSUVOVFJZLCAoRUdMRGlzcGxheSBkcHksIEVHTGlu
dCBpbnRlcnZhbCksIChkcHksIGludGVydmFsKSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xDcmVh
dGVDb250ZXh0LCBFR0xDb250ZXh0LCBFR0xBUElFTlRSWSwgKEVHTERpc3BsYXkgZHB5LCBFR0xD
b25maWcgY29uZmlnLCBFR0xDb250ZXh0IHNoYXJlX2NvbnRleHQsIGNvbnN0IEVHTGludCAqYXR0
cmliX2xpc3QpLCAoZHB5LCBjb25maWcsIHNoYXJlX2NvbnRleHQsIGF0dHJpYl9saXN0KSk7Ci1T
T0ZUX0xJTksobGliRUdMLCBlZ2xEZXN0cm95Q29udGV4dCwgRUdMQm9vbGVhbiwgRUdMQVBJRU5U
UlksIChFR0xEaXNwbGF5IGRweSwgRUdMQ29udGV4dCBjdHgpLCAoZHB5LCBjdHgpKTsKLVNPRlRf
TElOSyhsaWJFR0wsIGVnbE1ha2VDdXJyZW50LCBFR0xCb29sZWFuLCBFR0xBUElFTlRSWSwgKEVH
TERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIGRyYXcsIEVHTFN1cmZhY2UgcmVhZCwgRUdMQ29udGV4
dCBjdHgpLCAoZHB5LCBkcmF3LCByZWFkLCBjdHgpKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbEdl
dEN1cnJlbnRDb250ZXh0LCBFR0xDb250ZXh0LCBFR0xBUElFTlRSWSwgKHZvaWQpLCAoKSk7Ci1T
T0ZUX0xJTksobGliRUdMLCBlZ2xHZXRDdXJyZW50U3VyZmFjZSwgRUdMU3VyZmFjZSwgRUdMQVBJ
RU5UUlksIChFR0xpbnQgcmVhZGRyYXcpLCAocmVhZGRyYXcpKTsKLVNPRlRfTElOSyhsaWJFR0ws
IGVnbEdldEN1cnJlbnREaXNwbGF5LCBFR0xEaXNwbGF5LCBFR0xBUElFTlRSWSwgKHZvaWQpLCAo
KSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xRdWVyeUNvbnRleHQsIEVHTEJvb2xlYW4sIEVHTEFQ
SUVOVFJZLCAoRUdMRGlzcGxheSBkcHksIEVHTENvbnRleHQgY3R4LCBFR0xpbnQgYXR0cmlidXRl
LCBFR0xpbnQgKnZhbHVlKSwgKGRweSwgY3R4LCBhdHRyaWJ1dGUsIHZhbHVlKSk7Ci1TT0ZUX0xJ
TksobGliRUdMLCBlZ2xXYWl0R0wsIEVHTEJvb2xlYW4sIEVHTEFQSUVOVFJZLCAodm9pZCksICgp
KTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbFdhaXROYXRpdmUsIEVHTEJvb2xlYW4sIEVHTEFQSUVO
VFJZLCAoRUdMaW50IGVuZ2luZSksIChlbmdpbmUpKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbFN3
YXBCdWZmZXJzLCBFR0xCb29sZWFuLCBFR0xBUElFTlRSWSwgKEVHTERpc3BsYXkgZHB5LCBFR0xT
dXJmYWNlIHN1cmZhY2UpLCAoZHB5LCBzdXJmYWNlKSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xD
b3B5QnVmZmVycywgRUdMQm9vbGVhbiwgRUdMQVBJRU5UUlksIChFR0xEaXNwbGF5IGRweSwgRUdM
U3VyZmFjZSBzdXJmYWNlLCBFR0xOYXRpdmVQaXhtYXBUeXBlIHRhcmdldCksIChkcHksIHN1cmZh
Y2UsIHRhcmdldCkpOwotdHlwZWRlZiB2b2lkICgqX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rp
b25Qb2ludGVyVHlwZSkodm9pZCk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xHZXRQcm9jQWRkcmVz
cywgX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSwgRUdMQVBJRU5UUlks
IChjb25zdCBjaGFyICpwcm9jbmFtZSksIChwcm9jbmFtZSkpOwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMi9nbDIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMyL2dsMi5oCShyZXZpc2lvbiAxNTkwOTApCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMyL2dsMi5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NzEsMTAgKzQ3MSw2IEBAIHR5cGVkZWYga2hyb25vc19zc2l6ZV90ICBHTHNpemVpcHRy
OwogICogR0wgY29yZSBmdW5jdGlvbnMuCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAotI2lmIGRlZmlu
ZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKEFOR0xFX1dFQktJVF9XSU4pCi0jaW5jbHVkZSA8R0xF
UzIvZ2wyc29mdGxpbmtpbmcuaD4KLSNlbHNlCi0KIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdM
X0FQSUVOVFJZIGdsQWN0aXZlVGV4dHVyZSAoR0xlbnVtIHRleHR1cmUpOwogR0xfQVBJQ0FMTCB2
b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xBdHRhY2hTaGFkZXIgKEdMdWludCBwcm9ncmFtLCBH
THVpbnQgc2hhZGVyKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsQmlu
ZEF0dHJpYkxvY2F0aW9uIChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGluZGV4LCBjb25zdCBHTGNo
YXIqIG5hbWUpOwpAQCAtNjE4LDggKzYxNCw2IEBAIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdM
X0FQSUVOVFJZIGdsVmUKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsVmVy
dGV4QXR0cmliUG9pbnRlciAoR0x1aW50IGluZHgsIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBH
TGJvb2xlYW4gbm9ybWFsaXplZCwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCogcHRyKTsK
IEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsVmlld3BvcnQgKEdMaW50IHgs
IEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKIAotI2VuZGlmCi0KICNp
ZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9pbmNsdWRlL0dMRVMyL2dsMnNvZnRsaW5raW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMi9nbDJzb2Z0bGlua2luZy5oCShyZXZpc2lvbiAx
NTkyMzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMyL2dsMnNvZnRs
aW5raW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTcwICswLDAgQEAKLS8qIAotICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
LSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgiCi0KLVNPRlRfTElOS19MSUJSQVJZKGxpYkdMRVN2
MikKLQotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xBY3RpdmVUZXh0dXJlLCB2b2lkLCBHTF9BUElF
TlRSWSwgKEdMZW51bSB0ZXh0dXJlKSwgKHRleHR1cmUpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIs
IGdsQXR0YWNoU2hhZGVyLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBwcm9ncmFtLCBHTHVp
bnQgc2hhZGVyKSwgKHByb2dyYW0sIHNoYWRlcikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xC
aW5kQXR0cmliTG9jYXRpb24sIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IHByb2dyYW0sIEdM
dWludCBpbmRleCwgY29uc3QgR0xjaGFyKiBuYW1lKSwgKHByb2dyYW0sIGluZGV4LCBuYW1lKSk7
Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEJpbmRCdWZmZXIsIHZvaWQsIEdMX0FQSUVOVFJZLCAo
R0xlbnVtIHRhcmdldCwgR0x1aW50IGJ1ZmZlciksICh0YXJnZXQsIGJ1ZmZlcikpOwotU09GVF9M
SU5LKGxpYkdMRVN2MiwgZ2xCaW5kRnJhbWVidWZmZXIsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xl
bnVtIHRhcmdldCwgR0x1aW50IGZyYW1lYnVmZmVyKSwgKHRhcmdldCwgZnJhbWVidWZmZXIpKTsK
LVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQmluZFJlbmRlcmJ1ZmZlciwgdm9pZCwgR0xfQVBJRU5U
UlksIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgcmVuZGVyYnVmZmVyKSwgKHRhcmdldCwgcmVuZGVy
YnVmZmVyKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEJpbmRUZXh0dXJlLCB2b2lkLCBHTF9B
UElFTlRSWSwgKEdMZW51bSB0YXJnZXQsIEdMdWludCB0ZXh0dXJlKSwgKHRhcmdldCwgdGV4dHVy
ZSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xCbGVuZENvbG9yLCB2b2lkLCBHTF9BUElFTlRS
WSwgKEdMY2xhbXBmIHJlZCwgR0xjbGFtcGYgZ3JlZW4sIEdMY2xhbXBmIGJsdWUsIEdMY2xhbXBm
IGFscGhhKSwgKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSk7Ci1TT0ZUX0xJTksobGliR0xFU3Yy
LCBnbEJsZW5kRXF1YXRpb24sIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIG1vZGUpLCAobW9k
ZSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUsIHZvaWQs
IEdMX0FQSUVOVFJZLCAoR0xlbnVtIG1vZGVSR0IsIEdMZW51bSBtb2RlQWxwaGEpLCAobW9kZVJH
QiwgbW9kZUFscGhhKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEJsZW5kRnVuYywgdm9pZCwg
R0xfQVBJRU5UUlksIChHTGVudW0gc2ZhY3RvciwgR0xlbnVtIGRmYWN0b3IpLCAoc2ZhY3Rvciwg
ZGZhY3RvcikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xCbGVuZEZ1bmNTZXBhcmF0ZSwgdm9p
ZCwgR0xfQVBJRU5UUlksIChHTGVudW0gc3JjUkdCLCBHTGVudW0gZHN0UkdCLCBHTGVudW0gc3Jj
QWxwaGEsIEdMZW51bSBkc3RBbHBoYSksIChzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFs
cGhhKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEJ1ZmZlckRhdGEsIHZvaWQsIEdMX0FQSUVO
VFJZLCAoR0xlbnVtIHRhcmdldCwgR0xzaXplaXB0ciBzaXplLCBjb25zdCBHTHZvaWQqIGRhdGEs
IEdMZW51bSB1c2FnZSksICh0YXJnZXQsIHNpemUsIGRhdGEsIHVzYWdlKSk7Ci1TT0ZUX0xJTkso
bGliR0xFU3YyLCBnbEJ1ZmZlclN1YkRhdGEsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRh
cmdldCwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIHNpemUsIGNvbnN0IEdMdm9pZCogZGF0
YSksICh0YXJnZXQsIG9mZnNldCwgc2l6ZSwgZGF0YSkpOwotU09GVF9MSU5LKGxpYkdMRVN2Miwg
Z2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzLCBHTGVudW0sIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRh
cmdldCksICh0YXJnZXQpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQ2xlYXIsIHZvaWQsIEdM
X0FQSUVOVFJZLCAoR0xiaXRmaWVsZCBtYXNrKSwgKG1hc2spKTsKLVNPRlRfTElOSyhsaWJHTEVT
djIsIGdsQ2xlYXJDb2xvciwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGNsYW1wZiByZWQsIEdMY2xh
bXBmIGdyZWVuLCBHTGNsYW1wZiBibHVlLCBHTGNsYW1wZiBhbHBoYSksIChyZWQsIGdyZWVuLCBi
bHVlLCBhbHBoYSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xDbGVhckRlcHRoZiwgdm9pZCwg
R0xfQVBJRU5UUlksIChHTGNsYW1wZiBkZXB0aCksIChkZXB0aCkpOwotU09GVF9MSU5LKGxpYkdM
RVN2MiwgZ2xDbGVhclN0ZW5jaWwsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xpbnQgcyksIChzKSk7
Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbENvbG9yTWFzaywgdm9pZCwgR0xfQVBJRU5UUlksIChH
TGJvb2xlYW4gcmVkLCBHTGJvb2xlYW4gZ3JlZW4sIEdMYm9vbGVhbiBibHVlLCBHTGJvb2xlYW4g
YWxwaGEpLCAocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIs
IGdsQ29tcGlsZVNoYWRlciwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgc2hhZGVyKSwgKHNo
YWRlcikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRCwgdm9p
ZCwgR0xfQVBJRU5UUlksIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBH
THNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkKiBkYXRhKSwgKHRhcmdldCwgbGV2ZWwsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgZGF0YSkpOwot
U09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCwgdm9pZCwgR0xf
QVBJRU5UUlksIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xp
bnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQs
IEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZvaWQqIGRhdGEpLCAodGFyZ2V0LCBsZXZlbCwg
eG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEp
KTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQ29weVRleEltYWdlMkQsIHZvaWQsIEdMX0FQSUVO
VFJZLCAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGJv
cmRlciksICh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lkdGgsIGhlaWdo
dCwgYm9yZGVyKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbENvcHlUZXhTdWJJbWFnZTJELCB2
b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zm
c2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCksICh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0
aCwgaGVpZ2h0KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbENyZWF0ZVByb2dyYW0sIEdMdWlu
dCwgR0xfQVBJRU5UUlksICh2b2lkKSwgKCkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xDcmVh
dGVTaGFkZXIsIEdMdWludCwgR0xfQVBJRU5UUlksIChHTGVudW0gdHlwZSksICh0eXBlKSk7Ci1T
T0ZUX0xJTksobGliR0xFU3YyLCBnbEN1bGxGYWNlLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51
bSBtb2RlKSwgKG1vZGUpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsRGVsZXRlQnVmZmVycywg
dm9pZCwgR0xfQVBJRU5UUlksIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCogYnVmZmVycyksIChu
LCBidWZmZXJzKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbERlbGV0ZUZyYW1lYnVmZmVycywg
dm9pZCwgR0xfQVBJRU5UUlksIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCogZnJhbWVidWZmZXJz
KSwgKG4sIGZyYW1lYnVmZmVycykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xEZWxldGVQcm9n
cmFtLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBwcm9ncmFtKSwgKHByb2dyYW0pKTsKLVNP
RlRfTElOSyhsaWJHTEVTdjIsIGdsRGVsZXRlUmVuZGVyYnVmZmVycywgdm9pZCwgR0xfQVBJRU5U
UlksIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCogcmVuZGVyYnVmZmVycyksIChuLCByZW5kZXJi
dWZmZXJzKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbERlbGV0ZVNoYWRlciwgdm9pZCwgR0xf
QVBJRU5UUlksIChHTHVpbnQgc2hhZGVyKSwgKHNoYWRlcikpOwotU09GVF9MSU5LKGxpYkdMRVN2
MiwgZ2xEZWxldGVUZXh0dXJlcywgdm9pZCwgR0xfQVBJRU5UUlksIChHTHNpemVpIG4sIGNvbnN0
IEdMdWludCogdGV4dHVyZXMpLCAobiwgdGV4dHVyZXMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIs
IGdsRGVwdGhGdW5jLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSBmdW5jKSwgKGZ1bmMpKTsK
LVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsRGVwdGhNYXNrLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdM
Ym9vbGVhbiBmbGFnKSwgKGZsYWcpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsRGVwdGhSYW5n
ZWYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xjbGFtcGYgek5lYXIsIEdMY2xhbXBmIHpGYXIpLCAo
ek5lYXIsIHpGYXIpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsRGV0YWNoU2hhZGVyLCB2b2lk
LCBHTF9BUElFTlRSWSwgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgc2hhZGVyKSwgKHByb2dyYW0s
IHNoYWRlcikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xEaXNhYmxlLCB2b2lkLCBHTF9BUElF
TlRSWSwgKEdMZW51bSBjYXApLCAoY2FwKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbERpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgaW5kZXgpLCAo
aW5kZXgpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsRHJhd0FycmF5cywgdm9pZCwgR0xfQVBJ
RU5UUlksIChHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpLCAobW9kZSwg
Zmlyc3QsIGNvdW50KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbERyYXdFbGVtZW50cywgdm9p
ZCwgR0xfQVBJRU5UUlksIChHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUs
IGNvbnN0IEdMdm9pZCogaW5kaWNlcyksIChtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcykpOwot
U09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xFbmFibGUsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVt
IGNhcCksIChjYXApKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsRW5hYmxlVmVydGV4QXR0cmli
QXJyYXksIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IGluZGV4KSwgKGluZGV4KSk7Ci1TT0ZU
X0xJTksobGliR0xFU3YyLCBnbEZpbmlzaCwgdm9pZCwgR0xfQVBJRU5UUlksICh2b2lkKSwgKCkp
OwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xGbHVzaCwgdm9pZCwgR0xfQVBJRU5UUlksICh2b2lk
KSwgKCkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciwg
dm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xl
bnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgR0x1aW50IHJlbmRlcmJ1ZmZlciksICh0YXJnZXQsIGF0
dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgcmVuZGVyYnVmZmVyKSk7Ci1TT0ZUX0xJTkso
bGliR0xFU3YyLCBnbEZyYW1lYnVmZmVyVGV4dHVyZTJELCB2b2lkLCBHTF9BUElFTlRSWSwgKEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0gdGV4dGFyZ2V0LCBHTHVpbnQg
dGV4dHVyZSwgR0xpbnQgbGV2ZWwpLCAodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIHRl
eHR1cmUsIGxldmVsKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEZyb250RmFjZSwgdm9pZCwg
R0xfQVBJRU5UUlksIChHTGVudW0gbW9kZSksIChtb2RlKSk7Ci1TT0ZUX0xJTksobGliR0xFU3Yy
LCBnbEdlbkJ1ZmZlcnMsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xzaXplaSBuLCBHTHVpbnQqIGJ1
ZmZlcnMpLCAobiwgYnVmZmVycykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xHZW5lcmF0ZU1p
cG1hcCwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gdGFyZ2V0KSwgKHRhcmdldCkpOwotU09G
VF9MSU5LKGxpYkdMRVN2MiwgZ2xHZW5GcmFtZWJ1ZmZlcnMsIHZvaWQsIEdMX0FQSUVOVFJZLCAo
R0xzaXplaSBuLCBHTHVpbnQqIGZyYW1lYnVmZmVycyksIChuLCBmcmFtZWJ1ZmZlcnMpKTsKLVNP
RlRfTElOSyhsaWJHTEVTdjIsIGdsR2VuUmVuZGVyYnVmZmVycywgaW50LCBHTF9BUElFTlRSWSwg
KEdMc2l6ZWkgbiwgR0x1aW50KiByZW5kZXJidWZmZXJzKSwgKG4sIHJlbmRlcmJ1ZmZlcnMpKTsK
LVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2VuVGV4dHVyZXMsIHZvaWQsIEdMX0FQSUVOVFJZLCAo
R0xzaXplaSBuLCBHTHVpbnQqIHRleHR1cmVzKSwgKG4sIHRleHR1cmVzKSk7Ci1TT0ZUX0xJTkso
bGliR0xFU3YyLCBnbEdldEFjdGl2ZUF0dHJpYiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQg
cHJvZ3JhbSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwg
R0xpbnQqIHNpemUsIEdMZW51bSogdHlwZSwgR0xjaGFyKiBuYW1lKSwgKHByb2dyYW0sIGluZGV4
LCBidWZzaXplLCBsZW5ndGgsIHNpemUsIHR5cGUsIG5hbWUpKTsKLVNPRlRfTElOSyhsaWJHTEVT
djIsIGdsR2V0QWN0aXZlVW5pZm9ybSwgR0xlbnVtLCBHTF9BUElFTlRSWSwgKEdMdWludCBwcm9n
cmFtLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBHTGlu
dCogc2l6ZSwgR0xlbnVtKiB0eXBlLCBHTGNoYXIqIG5hbWUpLCAocHJvZ3JhbSwgaW5kZXgsIGJ1
ZnNpemUsIGxlbmd0aCwgc2l6ZSwgdHlwZSwgbmFtZSkpOwotU09GVF9MSU5LKGxpYkdMRVN2Miwg
Z2xHZXRBdHRhY2hlZFNoYWRlcnMsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IHByb2dyYW0s
IEdMc2l6ZWkgbWF4Y291bnQsIEdMc2l6ZWkqIGNvdW50LCBHTHVpbnQqIHNoYWRlcnMpLCAocHJv
Z3JhbSwgbWF4Y291bnQsIGNvdW50LCBzaGFkZXJzKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBn
bEdldEF0dHJpYkxvY2F0aW9uLCBpbnQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IHByb2dyYW0sIGNv
bnN0IEdMY2hhciogbmFtZSksIChwcm9ncmFtLCBuYW1lKSk7Ci1TT0ZUX0xJTksobGliR0xFU3Yy
LCBnbEdldEJvb2xlYW52LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSBwbmFtZSwgR0xib29s
ZWFuKiBwYXJhbXMpLCAocG5hbWUsIHBhcmFtcykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xH
ZXRCdWZmZXJQYXJhbWV0ZXJpdiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gdGFyZ2V0LCBH
TGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpLCAodGFyZ2V0LCBwbmFtZSwgcGFyYW1zKSk7Ci1T
T0ZUX0xJTksobGliR0xFU3YyLCBnbEdldEVycm9yLCBHTGVudW0sIEdMX0FQSUVOVFJZLCAodm9p
ZCksICgpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2V0RmxvYXR2LCB2b2lkLCBHTF9BUElF
TlRSWSwgKEdMZW51bSBwbmFtZSwgR0xmbG9hdCogcGFyYW1zKSwgKHBuYW1lLCBwYXJhbXMpKTsK
LVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aXYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQs
IEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcyksICh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1l
LCBwYXJhbXMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2V0SW50ZWdlcnYsIHZvaWQsIEdM
X0FQSUVOVFJZLCAoR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKSwgKHBuYW1lLCBwYXJhbXMp
KTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2V0UHJvZ3JhbWl2LCB2b2lkLCBHTF9BUElFTlRS
WSwgKEdMdWludCBwcm9ncmFtLCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpLCAocHJvZ3Jh
bSwgcG5hbWUsIHBhcmFtcykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xHZXRQcm9ncmFtSW5m
b0xvZywgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSBidWZzaXpl
LCBHTHNpemVpKiBsZW5ndGgsIEdMY2hhciogaW5mb2xvZyksIChwcm9ncmFtLCBidWZzaXplLCBs
ZW5ndGgsIGluZm9sb2cpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyaXYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBu
YW1lLCBHTGludCogcGFyYW1zKSwgKHRhcmdldCwgcG5hbWUsIHBhcmFtcykpOwotU09GVF9MSU5L
KGxpYkdMRVN2MiwgZ2xHZXRTaGFkZXJpdiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgc2hh
ZGVyLCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpLCAoc2hhZGVyLCBwbmFtZSwgcGFyYW1z
KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdldFNoYWRlckluZm9Mb2csIHZvaWQsIEdMX0FQ
SUVOVFJZLCAoR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgs
IEdMY2hhciogaW5mb2xvZyksIChzaGFkZXIsIGJ1ZnNpemUsIGxlbmd0aCwgaW5mb2xvZykpOwot
U09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQsIHZvaWQsIEdM
X0FQSUVOVFJZLCAoR0xlbnVtIHNoYWRlcnR5cGUsIEdMZW51bSBwcmVjaXNpb250eXBlLCBHTGlu
dCogcmFuZ2UsIEdMaW50KiBwcmVjaXNpb24pLCAoc2hhZGVydHlwZSwgcHJlY2lzaW9udHlwZSwg
cmFuZ2UsIHByZWNpc2lvbikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xHZXRTaGFkZXJTb3Vy
Y2UsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZzaXplLCBH
THNpemVpKiBsZW5ndGgsIEdMY2hhciogc291cmNlKSwgKHNoYWRlciwgYnVmc2l6ZSwgbGVuZ3Ro
LCBzb3VyY2UpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2V0U3RyaW5nLCBjb25zdCBHTHVi
eXRlKiwgR0xfQVBJRU5UUlksIChHTGVudW0gbmFtZSksIChuYW1lKSk7Ci1TT0ZUX0xJTksobGli
R0xFU3YyLCBnbEdldFRleFBhcmFtZXRlcmZ2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSB0
YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCogcGFyYW1zKSwgKHRhcmdldCwgcG5hbWUsIHBh
cmFtcykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xHZXRUZXhQYXJhbWV0ZXJpdiwgdm9pZCwg
R0xfQVBJRU5UUlksIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMp
LCAodGFyZ2V0LCBwbmFtZSwgcGFyYW1zKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdldFVu
aWZvcm1mdiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRp
b24sIEdMZmxvYXQqIHBhcmFtcyksIChwcm9ncmFtLCBsb2NhdGlvbiwgcGFyYW1zKSk7Ci1TT0ZU
X0xJTksobGliR0xFU3YyLCBnbEdldFVuaWZvcm1pdiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVp
bnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50KiBwYXJhbXMpLCAocHJvZ3JhbSwgbG9j
YXRpb24sIHBhcmFtcykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xHZXRVbmlmb3JtTG9jYXRp
b24sIGludCwgR0xfQVBJRU5UUlksIChHTHVpbnQgcHJvZ3JhbSwgY29uc3QgR0xjaGFyKiBuYW1l
KSwgKHByb2dyYW0sIG5hbWUpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2V0VmVydGV4QXR0
cmliZnYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdM
ZmxvYXQqIHBhcmFtcyksIChpbmRleCwgcG5hbWUsIHBhcmFtcykpOwotU09GVF9MSU5LKGxpYkdM
RVN2MiwgZ2xHZXRWZXJ0ZXhBdHRyaWJpdiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gdGFy
Z2V0LCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpLCAodGFyZ2V0LCBwbmFtZSwgcGFyYW1z
KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2LCB2b2lk
LCBHTF9BUElFTlRSWSwgKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTHZvaWQqKiBwb2lu
dGVyKSwgKGluZGV4LCBwbmFtZSwgcG9pbnRlcikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xI
aW50LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBtb2RlKSwgKHRh
cmdldCwgbW9kZSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xJc0J1ZmZlciwgR0xib29sZWFu
LCBHTF9BUElFTlRSWSwgKEdMdWludCBidWZmZXIpLCAoYnVmZmVyKSk7Ci1TT0ZUX0xJTksobGli
R0xFU3YyLCBnbElzRW5hYmxlZCwgR0xib29sZWFuLCBHTF9BUElFTlRSWSwgKEdMZW51bSBjYXAp
LCAoY2FwKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbElzRnJhbWVidWZmZXIsIEdMYm9vbGVh
biwgR0xfQVBJRU5UUlksIChHTHVpbnQgZnJhbWVidWZmZXIpLCAoZnJhbWVidWZmZXIpKTsKLVNP
RlRfTElOSyhsaWJHTEVTdjIsIGdsSXNQcm9ncmFtLCBHTGJvb2xlYW4sIEdMX0FQSUVOVFJZLCAo
R0x1aW50IHByb2dyYW0pLCAocHJvZ3JhbSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xJc1Jl
bmRlcmJ1ZmZlciwgR0xib29sZWFuLCBHTF9BUElFTlRSWSwgKEdMdWludCByZW5kZXJidWZmZXIp
LCAocmVuZGVyYnVmZmVyKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbElzU2hhZGVyLCBHTGJv
b2xlYW4sIEdMX0FQSUVOVFJZLCAoR0x1aW50IHNoYWRlciksIChzaGFkZXIpKTsKLVNPRlRfTElO
SyhsaWJHTEVTdjIsIGdsSXNUZXh0dXJlLCBHTGJvb2xlYW4sIEdMX0FQSUVOVFJZLCAoR0x1aW50
IHRleHR1cmUpLCAodGV4dHVyZSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xMaW5lV2lkdGgs
IHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xmbG9hdCB3aWR0aCksICh3aWR0aCkpOwotU09GVF9MSU5L
KGxpYkdMRVN2MiwgZ2xMaW5rUHJvZ3JhbSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgcHJv
Z3JhbSksIChwcm9ncmFtKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFBpeGVsU3RvcmVpLCB2
b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pLCAocG5hbWUsIHBh
cmFtKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFBvbHlnb25PZmZzZXQsIHZvaWQsIEdMX0FQ
SUVOVFJZLCAoR0xmbG9hdCBmYWN0b3IsIEdMZmxvYXQgdW5pdHMpLCAoZmFjdG9yLCB1bml0cykp
OwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xSZWFkUGl4ZWxzLCB2b2lkLCBHTF9BUElFTlRSWSwg
KEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0g
Zm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkKiBwaXhlbHMpLCAoeCwgeSwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsUmVsZWFz
ZVNoYWRlckNvbXBpbGVyLCB2b2lkLCBHTF9BUElFTlRSWSwgKHZvaWQpLCAoKSk7Ci1TT0ZUX0xJ
TksobGliR0xFU3YyLCBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UsIHZvaWQsIEdMX0FQSUVOVFJZLCAo
R0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCksICh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSk7Ci1T
T0ZUX0xJTksobGliR0xFU3YyLCBnbFNhbXBsZUNvdmVyYWdlLCB2b2lkLCBHTF9BUElFTlRSWSwg
KEdMY2xhbXBmIHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0KSwgKHZhbHVlLCBpbnZlcnQpKTsKLVNP
RlRfTElOSyhsaWJHTEVTdjIsIGdsU2Npc3Nvciwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGludCB4
LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCksICh4LCB5LCB3aWR0aCwg
aGVpZ2h0KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFNoYWRlckJpbmFyeSwgdm9pZCwgR0xf
QVBJRU5UUlksIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCogc2hhZGVycywgR0xlbnVtIGJpbmFy
eWZvcm1hdCwgY29uc3QgR0x2b2lkKiBiaW5hcnksIEdMc2l6ZWkgbGVuZ3RoKSwgKG4sIHNoYWRl
cnMsIGJpbmFyeWZvcm1hdCwgYmluYXJ5LCBsZW5ndGgpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIs
IGdsU2hhZGVyU291cmNlLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBzaGFkZXIsIEdMc2l6
ZWkgY291bnQsIGNvbnN0IEdMY2hhcioqIHN0cmluZywgY29uc3QgR0xpbnQqIGxlbmd0aCksIChz
aGFkZXIsIGNvdW50LCBzdHJpbmcsIGxlbmd0aCkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xT
dGVuY2lsRnVuYywgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBH
THVpbnQgbWFzayksIChmdW5jLCByZWYsIG1hc2spKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGds
U3RlbmNpbEZ1bmNTZXBhcmF0ZSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gZmFjZSwgR0xl
bnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spLCAoZmFjZSwgZnVuYywgcmVmLCBtYXNr
KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFN0ZW5jaWxNYXNrLCB2b2lkLCBHTF9BUElFTlRS
WSwgKEdMdWludCBtYXNrKSwgKG1hc2spKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsU3RlbmNp
bE1hc2tTZXBhcmF0ZSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gZmFjZSwgR0x1aW50IG1h
c2spLCAoZmFjZSwgbWFzaykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xTdGVuY2lsT3AsIHZv
aWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xlbnVtIHpwYXNz
KSwgKGZhaWwsIHpmYWlsLCB6cGFzcykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xTdGVuY2ls
T3BTZXBhcmF0ZSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gZmFjZSwgR0xlbnVtIGZhaWws
IEdMZW51bSB6ZmFpbCwgR0xlbnVtIHpwYXNzKSwgKGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcykp
OwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xUZXhJbWFnZTJELCB2b2lkLCBHTF9BUElFTlRSWSwg
KEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xl
bnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogcGl4ZWxzKSwgKHRhcmdldCwgbGV2ZWwsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKSk7Ci1T
T0ZUX0xJTksobGliR0xFU3YyLCBnbFRleFBhcmFtZXRlcmYsIHZvaWQsIEdMX0FQSUVOVFJZLCAo
R0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKSwgKHRhcmdldCwgcG5h
bWUsIHBhcmFtKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFRleFBhcmFtZXRlcmZ2LCB2b2lk
LCBHTF9BUElFTlRSWSwgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9h
dCogcGFyYW1zKSwgKHRhcmdldCwgcG5hbWUsIHBhcmFtcykpOwotU09GVF9MSU5LKGxpYkdMRVN2
MiwgZ2xUZXhQYXJhbWV0ZXJpLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSB0YXJnZXQsIEdM
ZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pLCAodGFyZ2V0LCBwbmFtZSwgcGFyYW0pKTsKLVNPRlRf
TElOSyhsaWJHTEVTdjIsIGdsVGV4UGFyYW1ldGVyaXYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xl
bnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCogcGFyYW1zKSwgKHRhcmdldCwg
cG5hbWUsIHBhcmFtcykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xUZXhTdWJJbWFnZTJELCB2
b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zm
c2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVt
IGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogcGl4ZWxzKSwgKHRhcmdldCwgbGV2
ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxz
KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFVuaWZvcm0xZiwgdm9pZCwgR0xfQVBJRU5UUlks
IChHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4KSwgKGxvY2F0aW9uLCB4KSk7Ci1TT0ZUX0xJTkso
bGliR0xFU3YyLCBnbFVuaWZvcm0xZnYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQqIHYpLCAobG9jYXRpb24sIGNvdW50LCB2
KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFVuaWZvcm0xaSwgdm9pZCwgR0xfQVBJRU5UUlks
IChHTGludCBsb2NhdGlvbiwgR0xpbnQgeCksIChsb2NhdGlvbiwgeCkpOwotU09GVF9MSU5LKGxp
YkdMRVN2MiwgZ2xVbmlmb3JtMWl2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCogdiksIChsb2NhdGlvbiwgY291bnQsIHYpKTsK
LVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVW5pZm9ybTJmLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdM
aW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSksIChsb2NhdGlvbiwgeCwgeSkpOwot
U09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xVbmlmb3JtMmZ2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0KiB2KSwgKGxvY2F0aW9u
LCBjb3VudCwgdikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xVbmlmb3JtMmksIHZvaWQsIEdM
X0FQSUVOVFJZLCAoR0xpbnQgbG9jYXRpb24sIEdMaW50IHgsIEdMaW50IHkpLCAobG9jYXRpb24s
IHgsIHkpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVW5pZm9ybTJpdiwgdm9pZCwgR0xfQVBJ
RU5UUlksIChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQqIHYpLCAo
bG9jYXRpb24sIGNvdW50LCB2KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFVuaWZvcm0zZiwg
dm9pZCwgR0xfQVBJRU5UUlksIChHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHks
IEdMZmxvYXQgeiksIChsb2NhdGlvbiwgeCwgeSwgeikpOwotU09GVF9MSU5LKGxpYkdMRVN2Miwg
Z2xVbmlmb3JtM2Z2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGNvdW50LCBjb25zdCBHTGZsb2F0KiB2KSwgKGxvY2F0aW9uLCBjb3VudCwgdikpOwotU09GVF9M
SU5LKGxpYkdMRVN2MiwgZ2xVbmlmb3JtM2ksIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xpbnQgbG9j
YXRpb24sIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHopLCAobG9jYXRpb24sIHgsIHksIHopKTsK
LVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVW5pZm9ybTNpdiwgdm9pZCwgR0xfQVBJRU5UUlksIChH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQqIHYpLCAobG9jYXRpb24s
IGNvdW50LCB2KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFVuaWZvcm00Ziwgdm9pZCwgR0xf
QVBJRU5UUlksIChHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQg
eiwgR0xmbG9hdCB3KSwgKGxvY2F0aW9uLCB4LCB5LCB6LCB3KSk7Ci1TT0ZUX0xJTksobGliR0xF
U3YyLCBnbFVuaWZvcm00ZnYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQqIHYpLCAobG9jYXRpb24sIGNvdW50LCB2KSk7Ci1T
T0ZUX0xJTksobGliR0xFU3YyLCBnbFVuaWZvcm00aSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGlu
dCBsb2NhdGlvbiwgR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQgdyksIChsb2NhdGlv
biwgeCwgeSwgeiwgdykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xVbmlmb3JtNGl2LCB2b2lk
LCBHTF9BUElFTlRSWSwgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGlu
dCogdiksIChsb2NhdGlvbiwgY291bnQsIHYpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVW5p
Zm9ybU1hdHJpeDJmdiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGludCBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCogdmFsdWUpLCAobG9j
YXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBn
bFVuaWZvcm1NYXRyaXgzZnYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQqIHZhbHVlKSwg
KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwotU09GVF9MSU5LKGxpYkdMRVN2
MiwgZ2xVbmlmb3JtTWF0cml4NGZ2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0KiB2YWx1
ZSksIChsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKLVNPRlRfTElOSyhsaWJH
TEVTdjIsIGdsVXNlUHJvZ3JhbSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgcHJvZ3JhbSks
IChwcm9ncmFtKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFZhbGlkYXRlUHJvZ3JhbSwgdm9p
ZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgcHJvZ3JhbSksIChwcm9ncmFtKSk7Ci1TT0ZUX0xJTkso
bGliR0xFU3YyLCBnbFZlcnRleEF0dHJpYjFmLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBp
bmR4LCBHTGZsb2F0IHgpLCAoaW5keCwgeCkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xWZXJ0
ZXhBdHRyaWIxZnYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IGluZHgsIGNvbnN0IEdMZmxv
YXQqIHZhbHVlcyksIChpbmR4LCB2YWx1ZXMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVmVy
dGV4QXR0cmliMmYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IGluZHgsIEdMZmxvYXQgeCwg
R0xmbG9hdCB5KSwgKGluZHgsIHgsIHkpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVmVydGV4
QXR0cmliMmZ2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBpbmR4LCBjb25zdCBHTGZsb2F0
KiB2YWx1ZXMpLCAoaW5keCwgdmFsdWVzKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFZlcnRl
eEF0dHJpYjNmLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBpbmR4LCBHTGZsb2F0IHgsIEdM
ZmxvYXQgeSwgR0xmbG9hdCB6KSwgKGluZHgsIHgsIHksIHopKTsKLVNPRlRfTElOSyhsaWJHTEVT
djIsIGdsVmVydGV4QXR0cmliM2Z2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBpbmR4LCBj
b25zdCBHTGZsb2F0KiB2YWx1ZXMpLCAoaW5keCwgdmFsdWVzKSk7Ci1TT0ZUX0xJTksobGliR0xF
U3YyLCBnbFZlcnRleEF0dHJpYjRmLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBpbmR4LCBH
TGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcpLCAoaW5keCwgeCwgeSwg
eiwgdykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xWZXJ0ZXhBdHRyaWI0ZnYsIHZvaWQsIEdM
X0FQSUVOVFJZLCAoR0x1aW50IGluZHgsIGNvbnN0IEdMZmxvYXQqIHZhbHVlcyksIChpbmR4LCB2
YWx1ZXMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVmVydGV4QXR0cmliUG9pbnRlciwgdm9p
ZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgaW5keCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdM
Ym9vbGVhbiBub3JtYWxpemVkLCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkKiBwdHIpLCAo
aW5keCwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgc3RyaWRlLCBwdHIpKTsKLVNPRlRfTElOSyhs
aWJHTEVTdjIsIGdsVmlld3BvcnQsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xpbnQgeCwgR0xpbnQg
eSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpLCAoeCwgeSwgd2lkdGgsIGhlaWdodCkp
OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxh
bmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMU0xB
TkcvU2hhZGVyTGFuZy5oCShyZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oCSh3b3JraW5nIGNvcHkpCkBAIC02LDIw
ICs2LDIwIEBACiAjaWZuZGVmIF9DT01QSUxFUl9JTlRFUkZBQ0VfSU5DTFVERURfCiAjZGVmaW5l
IF9DT01QSUxFUl9JTlRFUkZBQ0VfSU5DTFVERURfCiAKLSNpZiBkZWZpbmVkKENPTVBPTkVOVF9C
VUlMRCkKKyNpZiBkZWZpbmVkKENPTVBPTkVOVF9CVUlMRCkgJiYgIWRlZmluZWQoQU5HTEVfVFJB
TlNMQVRPUl9TVEFUSUMpCiAjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX1dJTjY0KQog
Ci0jaWYgZGVmaW5lZChDT01QSUxFUl9JTVBMRU1FTlRBVElPTikKKyNpZiBkZWZpbmVkKEFOR0xF
X1RSQU5TTEFUT1JfSU1QTEVNRU5UQVRJT04pCiAjZGVmaW5lIENPTVBJTEVSX0VYUE9SVCBfX2Rl
Y2xzcGVjKGRsbGV4cG9ydCkKICNlbHNlCiAjZGVmaW5lIENPTVBJTEVSX0VYUE9SVCBfX2RlY2xz
cGVjKGRsbGltcG9ydCkKLSNlbmRpZiAgLy8gZGVmaW5lZChDT01QSUxFUl9JTVBMRU1FTlRBVElP
TikKKyNlbmRpZiAgLy8gZGVmaW5lZChBTkdMRV9UUkFOU0xBVE9SX0lNUExFTUVOVEFUSU9OKQog
Ci0jZWxzZSAgLy8gZGVmaW5lZChXSU4zMikKKyNlbHNlICAvLyBkZWZpbmVkKF9XSU4zMikgfHwg
ZGVmaW5lZChfV0lONjQpCiAjZGVmaW5lIENPTVBJTEVSX0VYUE9SVCBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KCJkZWZhdWx0IikpKQogI2VuZGlmCiAKLSNlbHNlICAvLyBkZWZpbmVkKENPTVBP
TkVOVF9CVUlMRCkKKyNlbHNlICAvLyBkZWZpbmVkKENPTVBPTkVOVF9CVUlMRCkgJiYgIWRlZmlu
ZWQoQU5HTEVfVFJBTlNMQVRPUl9TVEFUSUMpCiAjZGVmaW5lIENPTVBJTEVSX0VYUE9SVAogI2Vu
ZGlmCiAKQEAgLTM3LDcgKzM3LDcgQEAgZXh0ZXJuICJDIiB7CiAKIC8vIFZlcnNpb24gbnVtYmVy
IGZvciBzaGFkZXIgdHJhbnNsYXRpb24gQVBJLgogLy8gSXQgaXMgaW5jcmVtZW50ZWQgZXZlcnl0
aW1lIHRoZSBBUEkgY2hhbmdlcy4KLSNkZWZpbmUgQU5HTEVfU0hfVkVSU0lPTiAxMTAKKyNkZWZp
bmUgQU5HTEVfU0hfVkVSU0lPTiAxMTIKIAogLy8KIC8vIFRoZSBuYW1lcyBvZiB0aGUgZm9sbG93
aW5nIGVudW1zIGhhdmUgYmVlbiBkZXJpdmVkIGJ5IHJlcGxhY2luZyBHTCBwcmVmaXgKQEAgLTEw
OSwxMiArMTA5LDIxIEBAIHR5cGVkZWYgZW51bSB7CiB9IFNoRGF0YVR5cGU7CiAKIHR5cGVkZWYg
ZW51bSB7CisgIFNIX1BSRUNJU0lPTl9ISUdIUCAgICAgPSAweDUwMDEsCisgIFNIX1BSRUNJU0lP
Tl9NRURJVU1QICAgPSAweDUwMDIsCisgIFNIX1BSRUNJU0lPTl9MT1dQICAgICAgPSAweDUwMDMs
CisgIFNIX1BSRUNJU0lPTl9VTkRFRklORUQgPSAwCit9IFNoUHJlY2lzaW9uVHlwZTsKKwordHlw
ZWRlZiBlbnVtIHsKICAgU0hfSU5GT19MT0dfTEVOR1RIICAgICAgICAgICAgID0gIDB4OEI4NCwK
ICAgU0hfT0JKRUNUX0NPREVfTEVOR1RIICAgICAgICAgID0gIDB4OEI4OCwgIC8vIEdMX1NIQURF
Ul9TT1VSQ0VfTEVOR1RICiAgIFNIX0FDVElWRV9VTklGT1JNUyAgICAgICAgICAgICA9ICAweDhC
ODYsCiAgIFNIX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEggICA9ICAweDhCODcsCiAgIFNIX0FD
VElWRV9BVFRSSUJVVEVTICAgICAgICAgICA9ICAweDhCODksCiAgIFNIX0FDVElWRV9BVFRSSUJV
VEVfTUFYX0xFTkdUSCA9ICAweDhCOEEsCisgIFNIX1ZBUllJTkdTICAgICAgICAgICAgICAgICAg
ICA9ICAweDhCQkIsCisgIFNIX1ZBUllJTkdfTUFYX0xFTkdUSCAgICAgICAgICA9ICAweDhCQkMs
CiAgIFNIX01BUFBFRF9OQU1FX01BWF9MRU5HVEggICAgICA9ICAweDYwMDAsCiAgIFNIX05BTUVf
TUFYX0xFTkdUSCAgICAgICAgICAgICA9ICAweDYwMDEsCiAgIFNIX0hBU0hFRF9OQU1FX01BWF9M
RU5HVEggICAgICA9ICAweDYwMDIsCkBAIC0xMjgsNyArMTM3LDcgQEAgdHlwZWRlZiBlbnVtIHsK
ICAgU0hfVkFMSURBVEVfTE9PUF9JTkRFWElORyAgPSAweDAwMDEsCiAgIFNIX0lOVEVSTUVESUFU
RV9UUkVFICAgICAgID0gMHgwMDAyLAogICBTSF9PQkpFQ1RfQ09ERSAgICAgICAgICAgICA9IDB4
MDAwNCwKLSAgU0hfQVRUUklCVVRFU19VTklGT1JNUyAgICAgPSAweDAwMDgsCisgIFNIX1ZBUklB
QkxFUyAgICAgICAgICAgICAgID0gMHgwMDA4LAogICBTSF9MSU5FX0RJUkVDVElWRVMgICAgICAg
ICA9IDB4MDAxMCwKICAgU0hfU09VUkNFX1BBVEggICAgICAgICAgICAgPSAweDAwMjAsCiAgIFNI
X01BUF9MT05HX1ZBUklBQkxFX05BTUVTID0gMHgwMDQwLApAQCAtMTM3LDE0ICsxNDYsMTQgQEAg
dHlwZWRlZiBlbnVtIHsKICAgLy8gVGhpcyBpcyBuZWVkZWQgb25seSBhcyBhIHdvcmthcm91bmQg
Zm9yIGNlcnRhaW4gT3BlbkdMIGRyaXZlciBidWdzLgogICBTSF9FTVVMQVRFX0JVSUxUX0lOX0ZV
TkNUSU9OUyA9IDB4MDEwMCwKIAotICAvLyBUaGlzIGlzIGFuIGV4cGVyaW1lbnRhbCBmbGFnIHRv
IGVuZm9yY2UgcmVzdHJpY3Rpb25zIHRoYXQgYWltIHRvIHByZXZlbnQgCisgIC8vIFRoaXMgaXMg
YW4gZXhwZXJpbWVudGFsIGZsYWcgdG8gZW5mb3JjZSByZXN0cmljdGlvbnMgdGhhdCBhaW0gdG8g
cHJldmVudAogICAvLyB0aW1pbmcgYXR0YWNrcy4KICAgLy8gSXQgZ2VuZXJhdGVzIGNvbXBpbGF0
aW9uIGVycm9ycyBmb3Igc2hhZGVycyB0aGF0IGNvdWxkIGV4cG9zZSBzZW5zaXRpdmUKICAgLy8g
dGV4dHVyZSBpbmZvcm1hdGlvbiB2aWEgdGhlIHRpbWluZyBjaGFubmVsLgogICAvLyBUbyB1c2Ug
dGhpcyBmbGFnLCB5b3UgbXVzdCBjb21waWxlIHRoZSBzaGFkZXIgdW5kZXIgdGhlIFdlYkdMIHNw
ZWMKICAgLy8gKHVzaW5nIHRoZSBTSF9XRUJHTF9TUEVDIGZsYWcpLgogICBTSF9USU1JTkdfUkVT
VFJJQ1RJT05TID0gMHgwMjAwLAotICAgIAorCiAgIC8vIFRoaXMgZmxhZyBwcmludHMgdGhlIGRl
cGVuZGVuY3kgZ3JhcGggdGhhdCBpcyB1c2VkIHRvIGVuZm9yY2UgdGltaW5nCiAgIC8vIHJlc3Ry
aWN0aW9ucyBvbiBmcmFnbWVudCBzaGFkZXJzLgogICAvLyBUaGlzIGZsYWcgb25seSBoYXMgYW4g
ZWZmZWN0IGlmIGFsbCBvZiB0aGUgZm9sbG93aW5nIGFyZSB0cnVlOgpAQCAtMTU0LDYgKzE2Mywx
MSBAQCB0eXBlZGVmIGVudW0gewogICBTSF9ERVBFTkRFTkNZX0dSQVBIID0gMHgwNDAwLAogCiAg
IC8vIEVuZm9yY2UgdGhlIEdMU0wgMS4wMTcgQXBwZW5kaXggQSBzZWN0aW9uIDcgcGFja2luZyBy
ZXN0cmljdGlvbnMuCisgIC8vIFRoaXMgZmxhZyBvbmx5IGVuZm9yY2VzIChhbmQgY2FuIG9ubHkg
ZW5mb3JjZSkgdGhlIHBhY2tpbmcKKyAgLy8gcmVzdHJpY3Rpb25zIGZvciB1bmlmb3JtIHZhcmlh
YmxlcyBpbiBib3RoIHZlcnRleCBhbmQgZnJhZ21lbnQKKyAgLy8gc2hhZGVycy4gU2hDaGVja1Zh
cmlhYmxlc1dpdGhpblBhY2tpbmdMaW1pdHMoKSBsZXRzIGVtYmVkZGVycworICAvLyBlbmZvcmNl
IHRoZSBwYWNraW5nIHJlc3RyaWN0aW9ucyBmb3IgdmFyeWluZyB2YXJpYWJsZXMgZHVyaW5nCisg
IC8vIHByb2dyYW0gbGluayB0aW1lLgogICBTSF9FTkZPUkNFX1BBQ0tJTkdfUkVTVFJJQ1RJT05T
ID0gMHgwODAwLAogCiAgIC8vIFRoaXMgZmxhZyBlbnN1cmVzIGFsbCBpbmRpcmVjdCAoZXhwcmVz
c2lvbi1iYXNlZCkgYXJyYXkgaW5kZXhpbmcKQEAgLTE2OSw2ICsxODMsMTkgQEAgdHlwZWRlZiBl
bnVtIHsKIAogICAvLyBUaGlzIGZsYWcgbGltaXRzIHRoZSBkZXB0aCBvZiB0aGUgY2FsbCBzdGFj
ay4KICAgU0hfTElNSVRfQ0FMTF9TVEFDS19ERVBUSCA9IDB4NDAwMCwKKworICAvLyBUaGlzIGZs
YWcgaW5pdGlhbGl6ZXMgZ2xfUG9zaXRpb24gdG8gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApIGF0
CisgIC8vIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHZlcnRleCBzaGFkZXIsIGFuZCBoYXMgbm8gZWZm
ZWN0IGluIHRoZQorICAvLyBmcmFnbWVudCBzaGFkZXIuIEl0IGlzIGludGVuZGVkIGFzIGEgd29y
a2Fyb3VuZCBmb3IgZHJpdmVycyB3aGljaAorICAvLyBpbmNvcnJlY3RseSBmYWlsIHRvIGxpbmsg
cHJvZ3JhbXMgaWYgZ2xfUG9zaXRpb24gaXMgbm90IHdyaXR0ZW4uCisgIFNIX0lOSVRfR0xfUE9T
SVRJT04gPSAweDgwMDAsCisKKyAgLy8gVGhpcyBmbGFnIHJlcGxhY2VzCisgIC8vICAgImEgJiYg
YiIgd2l0aCAiYSA/IGIgOiBmYWxzZSIsCisgIC8vICAgImEgfHwgYiIgd2l0aCAiYSA/IHRydWUg
OiBiIi4KKyAgLy8gVGhpcyBpcyB0byB3b3JrIGFyb3VuZCBhIE1hY09TWCBkcml2ZXIgYnVnIHRo
YXQgfGJ8IGlzIGV4ZWN1dGVkCisgIC8vIGluZGVwZW5kZW50IG9mIHxhfCdzIHZhbHVlLgorICBT
SF9VTkZPTERfU0hPUlRfQ0lSQ1VJVCA9IDB4MTAwMDAsCiB9IFNoQ29tcGlsZU9wdGlvbnM7CiAK
IC8vIERlZmluZXMgYWx0ZXJuYXRlIHN0cmF0ZWdpZXMgZm9yIGltcGxlbWVudGluZyBhcnJheSBp
bmRleCBjbGFtcGluZy4KQEAgLTI0Nyw3ICsyNzQsNyBAQCBDT01QSUxFUl9FWFBPUlQgdm9pZCBT
aEluaXRCdWlsdEluUmVzb3VyCiAKIC8vCiAvLyBTaEhhbmRsZSBoZWxkIGJ5IGJ1dCBvcGFxdWUg
dG8gdGhlIGRyaXZlci4gIEl0IGlzIGFsbG9jYXRlZCwKLS8vIG1hbmFnZWQsIGFuZCBkZS1hbGxv
Y2F0ZWQgYnkgdGhlIGNvbXBpbGVyLiBJdCdzIGNvbnRlbnRzIAorLy8gbWFuYWdlZCwgYW5kIGRl
LWFsbG9jYXRlZCBieSB0aGUgY29tcGlsZXIuIEl0J3MgY29udGVudHMKIC8vIGFyZSBkZWZpbmVk
IGJ5IGFuZCB1c2VkIGJ5IHRoZSBjb21waWxlci4KIC8vCiAvLyBJZiBoYW5kbGUgY3JlYXRpb24g
ZmFpbHMsIDAgd2lsbCBiZSByZXR1cm5lZC4KQEAgLTI5NCw5ICszMjEsOCBAQCBDT01QSUxFUl9F
WFBPUlQgdm9pZCBTaERlc3RydWN0KFNoSGFuZGxlCiAvLyAgICAgICAgICAgICAgICAgICAgICAg
Q2FuIGJlIHF1ZXJpZWQgYnkgY2FsbGluZyBTaEdldEluZm9Mb2coKS4KIC8vIFNIX09CSkVDVF9D
T0RFOiBUcmFuc2xhdGVzIGludGVybWVkaWF0ZSB0cmVlIHRvIGdsc2wgb3IgaGxzbCBzaGFkZXIu
CiAvLyAgICAgICAgICAgICAgICAgQ2FuIGJlIHF1ZXJpZWQgYnkgY2FsbGluZyBTaEdldE9iamVj
dENvZGUoKS4KLS8vIFNIX0FUVFJJQlVURVNfVU5JRk9STVM6IEV4dHJhY3RzIGF0dHJpYnV0ZXMg
YW5kIHVuaWZvcm1zLgotLy8gICAgICAgICAgICAgICAgICAgICAgICAgQ2FuIGJlIHF1ZXJpZWQg
YnkgY2FsbGluZyBTaEdldEFjdGl2ZUF0dHJpYigpIGFuZAotLy8gICAgICAgICAgICAgICAgICAg
ICAgICAgU2hHZXRBY3RpdmVVbmlmb3JtKCkuCisvLyBTSF9WQVJJQUJMRVM6IEV4dHJhY3RzIGF0
dHJpYnV0ZXMsIHVuaWZvcm1zLCBhbmQgdmFyeWluZ3MuCisvLyAgICAgICAgICAgICAgIENhbiBi
ZSBxdWVyaWVkIGJ5IGNhbGxpbmcgU2hHZXRWYXJpYWJsZUluZm8oKS4KIC8vCiBDT01QSUxFUl9F
WFBPUlQgaW50IFNoQ29tcGlsZSgKICAgICBjb25zdCBTaEhhbmRsZSBoYW5kbGUsCkBAIC0zMjIs
NiArMzQ4LDkgQEAgQ09NUElMRVJfRVhQT1JUIGludCBTaENvbXBpbGUoCiAvLyBTSF9BQ1RJVkVf
VU5JRk9STV9NQVhfTEVOR1RIOiB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IGFjdGl2ZSB1bmlm
b3JtCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBuYW1lIGluY2x1
ZGluZyB0aGUgbnVsbAogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybWluYXRp
b24gY2hhcmFjdGVyLgorLy8gU0hfVkFSWUlOR1M6IHRoZSBudW1iZXIgb2YgdmFyeWluZyB2YXJp
YWJsZXMuCisvLyBTSF9WQVJZSU5HX01BWF9MRU5HVEg6IHRoZSBsZW5ndGggb2YgdGhlIGxvbmdl
c3QgdmFyeWluZyB2YXJpYWJsZSBuYW1lCisvLyAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1
ZGluZyB0aGUgbnVsbCB0ZXJtaW5hdGlvbiBjaGFyYWN0ZXIuCiAvLyBTSF9NQVBQRURfTkFNRV9N
QVhfTEVOR1RIOiB0aGUgbGVuZ3RoIG9mIHRoZSBtYXBwZWQgdmFyaWFibGUgbmFtZSBpbmNsdWRp
bmcKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBudWxsIHRlcm1pbmF0aW9uIGNo
YXJhY3Rlci4KIC8vIFNIX05BTUVfTUFYX0xFTkdUSDogdGhlIG1heCBsZW5ndGggb2YgYSB1c2Vy
LWRlZmluZWQgbmFtZSBpbmNsdWRpbmcgdGhlCkBAIC0zNTUsNjAgKzM4NCw0NCBAQCBDT01QSUxF
Ul9FWFBPUlQgdm9pZCBTaEdldEluZm9Mb2coY29uc3QgCiAvLyAgICAgICAgICBTaEdldEluZm8g
d2l0aCBTSF9PQkpFQ1RfQ09ERV9MRU5HVEguCiBDT01QSUxFUl9FWFBPUlQgdm9pZCBTaEdldE9i
amVjdENvZGUoY29uc3QgU2hIYW5kbGUgaGFuZGxlLCBjaGFyKiBvYmpDb2RlKTsKIAotLy8gUmV0
dXJucyBpbmZvcm1hdGlvbiBhYm91dCBhbiBhY3RpdmUgYXR0cmlidXRlIHZhcmlhYmxlLgorLy8g
UmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCBhIHNoYWRlciB2YXJpYWJsZS4KIC8vIFBhcmFtZXRl
cnM6CiAvLyBoYW5kbGU6IFNwZWNpZmllcyB0aGUgY29tcGlsZXIKLS8vIGluZGV4OiBTcGVjaWZp
ZXMgdGhlIGluZGV4IG9mIHRoZSBhdHRyaWJ1dGUgdmFyaWFibGUgdG8gYmUgcXVlcmllZC4KKy8v
IHZhcmlhYmxlVHlwZTogU3BlY2lmaWVzIHRoZSB2YXJpYWJsZSB0eXBlOyBvcHRpb25zIGluY2x1
ZGUKKy8vICAgICAgICAgICAgICAgU0hfQUNUSVZFX0FUVFJJQlVURVMsIFNIX0FDVElWRV9VTklG
T1JNUywgU0hfVkFSWUlOR1MuCisvLyBpbmRleDogU3BlY2lmaWVzIHRoZSBpbmRleCBvZiB0aGUg
dmFyaWFibGUgdG8gYmUgcXVlcmllZC4KIC8vIGxlbmd0aDogUmV0dXJucyB0aGUgbnVtYmVyIG9m
IGNoYXJhY3RlcnMgYWN0dWFsbHkgd3JpdHRlbiBpbiB0aGUgc3RyaW5nCiAvLyAgICAgICAgIGlu
ZGljYXRlZCBieSBuYW1lIChleGNsdWRpbmcgdGhlIG51bGwgdGVybWluYXRvcikgaWYgYSB2YWx1
ZSBvdGhlcgogLy8gICAgICAgICB0aGFuIE5VTEwgaXMgcGFzc2VkLgotLy8gc2l6ZTogUmV0dXJu
cyB0aGUgc2l6ZSBvZiB0aGUgYXR0cmlidXRlIHZhcmlhYmxlLgotLy8gdHlwZTogUmV0dXJucyB0
aGUgZGF0YSB0eXBlIG9mIHRoZSBhdHRyaWJ1dGUgdmFyaWFibGUuCisvLyBzaXplOiBSZXR1cm5z
IHRoZSBzaXplIG9mIHRoZSB2YXJpYWJsZS4KKy8vIHR5cGU6IFJldHVybnMgdGhlIGRhdGEgdHlw
ZSBvZiB0aGUgdmFyaWFibGUuCisvLyBwcmVjaXNpb246IFJldHVybnMgdGhlIHByZWNpc2lvbiBv
ZiB0aGUgdmFyaWFibGUuCisvLyBzdGF0aWNVc2U6IFJldHVybnMgMSBpZiB0aGUgdmFyaWFibGUg
aXMgYWNjZXNzZWQgaW4gYSBzdGF0ZW1lbnQgYWZ0ZXIKKy8vICAgICAgICAgICAgcHJlLXByb2Nl
c3NpbmcsIHdoZXRoZXIgb3Igbm90IHJ1bi10aW1lIGZsb3cgb2YgY29udHJvbCB3aWxsCisvLyAg
ICAgICAgICAgIGNhdXNlIHRoYXQgc3RhdGVtZW50IHRvIGJlIGV4ZWN1dGVkLgorLy8gICAgICAg
ICAgICBSZXR1cm5zIDAgb3RoZXJ3aXNlLgogLy8gbmFtZTogUmV0dXJucyBhIG51bGwgdGVybWlu
YXRlZCBzdHJpbmcgY29udGFpbmluZyB0aGUgbmFtZSBvZiB0aGUKLS8vICAgICAgIGF0dHJpYnV0
ZSB2YXJpYWJsZS4gSXQgaXMgYXNzdW1lZCB0aGF0IG5hbWUgaGFzIGVub3VnaCBtZW1vcnkgdG8K
LS8vICAgICAgIGFjY29tb2RhdGUgdGhlIGF0dHJpYnV0ZSB2YXJpYWJsZSBuYW1lLiBUaGUgc2l6
ZSBvZiB0aGUgYnVmZmVyCi0vLyAgICAgICByZXF1aXJlZCB0byBzdG9yZSB0aGUgYXR0cmlidXRl
IHZhcmlhYmxlIG5hbWUgY2FuIGJlIG9idGFpbmVkIGJ5Ci0vLyAgICAgICBjYWxsaW5nIFNoR2V0
SW5mbyB3aXRoIFNIX0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSC4KKy8vICAgICAgIHZhcmlh
YmxlLiBJdCBpcyBhc3N1bWVkIHRoYXQgbmFtZSBoYXMgZW5vdWdoIG1lbW9yeSB0byBhY2Nvcm1v
ZGF0ZQorLy8gICAgICAgdGhlIHZhcmlhYmxlIG5hbWUuIFRoZSBzaXplIG9mIHRoZSBidWZmZXIg
cmVxdWlyZWQgdG8gc3RvcmUgdGhlCisvLyAgICAgICB2YXJpYWJsZSBuYW1lIGNhbiBiZSBvYnRh
aW5lZCBieSBjYWxsaW5nIFNoR2V0SW5mbyB3aXRoCisvLyAgICAgICBTSF9BQ1RJVkVfQVRUUklC
VVRFX01BWF9MRU5HVEgsIFNIX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEgsCisvLyAgICAgICBT
SF9WQVJZSU5HX01BWF9MRU5HVEguCiAvLyBtYXBwZWROYW1lOiBSZXR1cm5zIGEgbnVsbCB0ZXJt
aW5hdGVkIHN0cmluZyBjb250YWluaW5nIHRoZSBtYXBwZWQgbmFtZSBvZgotLy8gICAgICAgICAg
ICAgdGhlIGF0dHJpYnV0ZSB2YXJpYWJsZSwgSXQgaXMgYXNzdW1lZCB0aGF0IG1hcHBlZE5hbWUg
aGFzIGVub3VnaAotLy8gICAgICAgICAgICAgbWVtb3J5IChTSF9NQVBQRURfTkFNRV9NQVhfTEVO
R1RIKSwgb3IgTlVMTCBpZiBkb24ndCBjYXJlCi0vLyAgICAgICAgICAgICBhYm91dCB0aGUgbWFw
cGVkIG5hbWUuIElmIHRoZSBuYW1lIGlzIG5vdCBtYXBwZWQsIHRoZW4gbmFtZSBhbmQKLS8vICAg
ICAgICAgICAgIG1hcHBlZE5hbWUgYXJlIHRoZSBzYW1lLgotQ09NUElMRVJfRVhQT1JUIHZvaWQg
U2hHZXRBY3RpdmVBdHRyaWIoY29uc3QgU2hIYW5kbGUgaGFuZGxlLAorLy8gICAgICAgICAgICAg
dGhlIHZhcmlhYmxlLCBJdCBpcyBhc3N1bWVkIHRoYXQgbWFwcGVkTmFtZSBoYXMgZW5vdWdoIG1l
bW9yeQorLy8gICAgICAgICAgICAgKFNIX01BUFBFRF9OQU1FX01BWF9MRU5HVEgpLCBvciBOVUxM
IGlmIGRvbid0IGNhcmUgYWJvdXQgdGhlCisvLyAgICAgICAgICAgICBtYXBwZWQgbmFtZS4gSWYg
dGhlIG5hbWUgaXMgbm90IG1hcHBlZCwgdGhlbiBuYW1lIGFuZCBtYXBwZWROYW1lCisvLyAgICAg
ICAgICAgICBhcmUgdGhlIHNhbWUuCitDT01QSUxFUl9FWFBPUlQgdm9pZCBTaEdldFZhcmlhYmxl
SW5mbyhjb25zdCBTaEhhbmRsZSBoYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTaFNoYWRlckluZm8gdmFyaWFibGVUeXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90KiBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQqIHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTaERhdGFUeXBlKiB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2hQcmVjaXNpb25UeXBlKiBwcmVjaXNpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQqIHN0YXRpY1VzZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIqIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFyKiBtYXBwZWROYW1lKTsKIAotLy8gUmV0dXJucyBpbmZvcm1hdGlv
biBhYm91dCBhbiBhY3RpdmUgdW5pZm9ybSB2YXJpYWJsZS4KLS8vIFBhcmFtZXRlcnM6Ci0vLyBo
YW5kbGU6IFNwZWNpZmllcyB0aGUgY29tcGlsZXIKLS8vIGluZGV4OiBTcGVjaWZpZXMgdGhlIGlu
ZGV4IG9mIHRoZSB1bmlmb3JtIHZhcmlhYmxlIHRvIGJlIHF1ZXJpZWQuCi0vLyBsZW5ndGg6IFJl
dHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGFjdHVhbGx5IHdyaXR0ZW4gaW4gdGhlIHN0
cmluZwotLy8gICAgICAgICBpbmRpY2F0ZWQgYnkgbmFtZSAoZXhjbHVkaW5nIHRoZSBudWxsIHRl
cm1pbmF0b3IpIGlmIGEgdmFsdWUKLS8vICAgICAgICAgb3RoZXIgdGhhbiBOVUxMIGlzIHBhc3Nl
ZC4KLS8vIHNpemU6IFJldHVybnMgdGhlIHNpemUgb2YgdGhlIHVuaWZvcm0gdmFyaWFibGUuCi0v
LyB0eXBlOiBSZXR1cm5zIHRoZSBkYXRhIHR5cGUgb2YgdGhlIHVuaWZvcm0gdmFyaWFibGUuCi0v
LyBuYW1lOiBSZXR1cm5zIGEgbnVsbCB0ZXJtaW5hdGVkIHN0cmluZyBjb250YWluaW5nIHRoZSBu
YW1lIG9mIHRoZQotLy8gICAgICAgdW5pZm9ybSB2YXJpYWJsZS4gSXQgaXMgYXNzdW1lZCB0aGF0
IG5hbWUgaGFzIGVub3VnaCBtZW1vcnkgdG8KLS8vICAgICAgIGFjY29tb2RhdGUgdGhlIHVuaWZv
cm0gdmFyaWFibGUgbmFtZS4gVGhlIHNpemUgb2YgdGhlIGJ1ZmZlciByZXF1aXJlZAotLy8gICAg
ICAgdG8gc3RvcmUgdGhlIHVuaWZvcm0gdmFyaWFibGUgbmFtZSBjYW4gYmUgb2J0YWluZWQgYnkg
Y2FsbGluZwotLy8gICAgICAgU2hHZXRJbmZvIHdpdGggU0hfQUNUSVZFX1VOSUZPUk1TX01BWF9M
RU5HVEguCi0vLyBtYXBwZWROYW1lOiBSZXR1cm5zIGEgbnVsbCB0ZXJtaW5hdGVkIHN0cmluZyBj
b250YWluaW5nIHRoZSBtYXBwZWQgbmFtZSBvZgotLy8gICAgICAgICAgICAgdGhlIHVuaWZvcm0g
dmFyaWFibGUsIEl0IGlzIGFzc3VtZWQgdGhhdCBtYXBwZWROYW1lIGhhcyBlbm91Z2gKLS8vICAg
ICAgICAgICAgIG1lbW9yeSAoU0hfTUFQUEVEX05BTUVfTUFYX0xFTkdUSCksIG9yIE5VTEwgaWYg
ZG9uJ3QgY2FyZQotLy8gICAgICAgICAgICAgYWJvdXQgdGhlIG1hcHBlZCBuYW1lLiBJZiB0aGUg
bmFtZSBpcyBub3QgbWFwcGVkLCB0aGVuIG5hbWUgYW5kCi0vLyAgICAgICAgICAgICBtYXBwZWRO
YW1lIGFyZSB0aGUgc2FtZS4KLUNPTVBJTEVSX0VYUE9SVCB2b2lkIFNoR2V0QWN0aXZlVW5pZm9y
bShjb25zdCBTaEhhbmRsZSBoYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCogbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCogc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
aERhdGFUeXBlKiB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXIqIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciogbWFwcGVkTmFtZSk7Ci0KIC8vIFJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgYSBuYW1lIGhh
c2hpbmcgZW50cnkgZnJvbSB0aGUgbGF0ZXN0IGNvbXBpbGUuCiAvLyBQYXJhbWV0ZXJzOgogLy8g
aGFuZGxlOiBTcGVjaWZpZXMgdGhlIGNvbXBpbGVyCkBAIC00MzksNiArNDUyLDI1IEBAIENPTVBJ
TEVSX0VYUE9SVCB2b2lkIFNoR2V0SW5mb1BvaW50ZXIoY28KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2hTaGFkZXJJbmZvIHBuYW1lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2b2lkKiogcGFyYW1zKTsKIAordHlwZWRlZiBzdHJ1Y3QKK3sK
KyAgICBTaERhdGFUeXBlIHR5cGU7CisgICAgaW50IHNpemU7Cit9IFNoVmFyaWFibGVJbmZvOwor
CisvLyBSZXR1cm5zIDEgaWYgdGhlIHBhc3NlZCBpbiB2YXJpYWJsZXMgcGFjayBpbiBtYXhWZWN0
b3JzIGZvbGxvd2luZworLy8gdGhlIHBhY2tpbmcgcnVsZXMgZnJvbSB0aGUgR0xTTCAxLjAxNyBz
cGVjLCBBcHBlbmRpeCBBLCBzZWN0aW9uIDcuCisvLyBSZXR1cm5zIDAgb3RoZXJ3aXNlLiBBbHNv
IGxvb2sgYXQgdGhlIFNIX0VORk9SQ0VfUEFDS0lOR19SRVNUUklDVElPTlMKKy8vIGZsYWcgYWJv
dmUuCisvLyBQYXJhbWV0ZXJzOgorLy8gbWF4VmVjdG9yczogdGhlIGF2YWlsYWJsZSByb3dzIG9m
IHJlZ2lzdGVycy4KKy8vIHZhckluZm9BcnJheTogYW4gYXJyYXkgb2YgdmFyaWFibGUgaW5mbyAo
dHlwZXMgYW5kIHNpemVzKS4KKy8vIHZhckluZm9BcnJheVNpemU6IHRoZSBzaXplIG9mIHRoZSB2
YXJpYWJsZSBhcnJheS4KK0NPTVBJTEVSX0VYUE9SVCBpbnQgU2hDaGVja1ZhcmlhYmxlc1dpdGhp
blBhY2tpbmdMaW1pdHMoCisgICAgaW50IG1heFZlY3RvcnMsCisgICAgU2hWYXJpYWJsZUluZm8q
IHZhckluZm9BcnJheSwKKyAgICBzaXplX3QgdmFySW5mb0FycmF5U2l6ZSk7CisKICNpZmRlZiBf
X2NwbHVzcGx1cwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNs
dWRlL0tIUi9raHJwbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL2luY2x1ZGUvS0hSL2tocnBsYXRmb3JtLmgJKHJldmlzaW9uIDE1OTA5MCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvS0hSL2tocnBsYXRmb3JtLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDcgKzI2LDcgQEAKIAogLyogS2hyb25vcyBwbGF0Zm9ybS1zcGVjaWZpYyB0eXBl
cyBhbmQgZGVmaW5pdGlvbnMuCiAgKgotICogJFJldmlzaW9uOiA5MzU2ICQgb24gJERhdGU6IDIw
MDktMTAtMjEgMDI6NTI6MjUgLTA3MDAgKFdlZCwgMjEgT2N0IDIwMDkpICQKKyAqICRSZXZpc2lv
bjogMjMyOTggJCBvbiAkRGF0ZTogMjAxMy0wOS0zMCAxNzowNzoxMyAtMDcwMCAoTW9uLCAzMCBT
ZXAgMjAxMykgJAogICoKICAqIEFkb3B0ZXJzIG1heSBtb2RpZnkgdGhpcyBmaWxlIHRvIHN1aXQg
dGhlaXIgcGxhdGZvcm0uIEFkb3B0ZXJzIGFyZQogICogZW5jb3VyYWdlZCB0byBzdWJtaXQgcGxh
dGZvcm0gc3BlY2lmaWMgbW9kaWZpY2F0aW9ucyB0byB0aGUgS2hyb25vcwpAQCAtMjIxLDEwICsy
MjEsMjMgQEAgdHlwZWRlZiBzaWduZWQgICBjaGFyICAgICAgICAgIGtocm9ub3NfaQogdHlwZWRl
ZiB1bnNpZ25lZCBjaGFyICAgICAgICAgIGtocm9ub3NfdWludDhfdDsKIHR5cGVkZWYgc2lnbmVk
ICAgc2hvcnQgaW50ICAgICBraHJvbm9zX2ludDE2X3Q7CiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0
IGludCAgICAga2hyb25vc191aW50MTZfdDsKKworLyoKKyAqIFR5cGVzIHRoYXQgZGlmZmVyIGJl
dHdlZW4gTExQNjQgYW5kIExQNjQgYXJjaGl0ZWN0dXJlcyAtIGluIExMUDY0LCAKKyAqIHBvaW50
ZXJzIGFyZSA2NCBiaXRzLCBidXQgJ2xvbmcnIGlzIHN0aWxsIDMyIGJpdHMuIFdpbjY0IGFwcGVh
cnMKKyAqIHRvIGJlIHRoZSBvbmx5IExMUDY0IGFyY2hpdGVjdHVyZSBpbiBjdXJyZW50IHVzZS4K
KyAqLworI2lmZGVmIF9XSU42NAordHlwZWRlZiBzaWduZWQgICBsb25nIGxvbmcgaW50IGtocm9u
b3NfaW50cHRyX3Q7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQga2hyb25vc191aW50
cHRyX3Q7Cit0eXBlZGVmIHNpZ25lZCAgIGxvbmcgbG9uZyBpbnQga2hyb25vc19zc2l6ZV90Owor
dHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IGtocm9ub3NfdXNpemVfdDsKKyNlbHNlCiB0
eXBlZGVmIHNpZ25lZCAgIGxvbmcgIGludCAgICAga2hyb25vc19pbnRwdHJfdDsKIHR5cGVkZWYg
dW5zaWduZWQgbG9uZyAgaW50ICAgICBraHJvbm9zX3VpbnRwdHJfdDsKIHR5cGVkZWYgc2lnbmVk
ICAgbG9uZyAgaW50ICAgICBraHJvbm9zX3NzaXplX3Q7CiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
IGludCAgICAga2hyb25vc191c2l6ZV90OworI2VuZGlmCiAKICNpZiBLSFJPTk9TX1NVUFBPUlRf
RkxPQVQKIC8qCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvQU5HTEUuc2xuCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9BTkdMRS5zbG4JKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvQU5HTEUuc2xuCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKK++7vw0KK01pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNv
bHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDExLjAwDQorIyBWaXN1YWwgQysrIEV4cHJlc3Mg
MjAxMA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9Iikg
PSAibGliRUdMIiwgImxpYkVHTFxsaWJFR0wudmN4cHJvaiIsICJ7RTc0NkZDQTktNjRDMy00MzNF
LTg1RTgtOUE1QTY3QUI3RUQ2fSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThC
NEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJsaWJHTEVTdjIiLCAibGliR0xFU3YyXGxp
YkdMRVN2Mi52Y3hwcm9qIiwgIntCNTg3MUE3QS05NjhDLTQyRTMtQTMzQi05ODFFNkY0NDhFNzh9
Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5
MUJDOTQyfSIpID0gInRyYW5zbGF0b3IiLCAiY29tcGlsZXJcdHJhbnNsYXRvci52Y3hwcm9qIiwg
Ins1QjNBNkRCOC0xRTdFLTQwRDctOTJCOS1EQThBQUU2MTlGQUR9Ig0KK0VuZFByb2plY3QNCitQ
cm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInByZXBy
b2Nlc3NvciIsICJjb21waWxlclxwcmVwcm9jZXNzb3JccHJlcHJvY2Vzc29yLnZjeHByb2oiLCAi
e0ZCRTMyREYzLTBGQjAtNEYyRi1BNDI0LTJDMjFCRDdCQzMyNX0iDQorRW5kUHJvamVjdA0KK0ds
b2JhbA0KKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBw
cmVTb2x1dGlvbg0KKwkJRGVidWd8V2luMzIgPSBEZWJ1Z3xXaW4zMg0KKwkJRGVidWd8eDY0ID0g
RGVidWd8eDY0DQorCQlSZWxlYXNlfFdpbjMyID0gUmVsZWFzZXxXaW4zMg0KKwkJUmVsZWFzZXx4
NjQgPSBSZWxlYXNlfHg2NA0KKwlFbmRHbG9iYWxTZWN0aW9uDQorCUdsb2JhbFNlY3Rpb24oUHJv
amVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcG9zdFNvbHV0aW9uDQorCQl7RTc0NkZDQTkt
NjRDMy00MzNFLTg1RTgtOUE1QTY3QUI3RUQ2fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1
Z3xXaW4zMg0KKwkJe0U3NDZGQ0E5LTY0QzMtNDMzRS04NUU4LTlBNUE2N0FCN0VENn0uRGVidWd8
V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7RTc0NkZDQTktNjRDMy00MzNFLTg1RTgt
OUE1QTY3QUI3RUQ2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7RTc0NkZD
QTktNjRDMy00MzNFLTg1RTgtOUE1QTY3QUI3RUQ2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVn
fHg2NA0KKwkJe0U3NDZGQ0E5LTY0QzMtNDMzRS04NUU4LTlBNUE2N0FCN0VENn0uUmVsZWFzZXxX
aW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RTc0NkZDQTktNjRDMy00MzNFLTg1
RTgtOUE1QTY3QUI3RUQ2fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQor
CQl7RTc0NkZDQTktNjRDMy00MzNFLTg1RTgtOUE1QTY3QUI3RUQ2fS5SZWxlYXNlfHg2NC5BY3Rp
dmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0U3NDZGQ0E5LTY0QzMtNDMzRS04NUU4LTlBNUE2N0FC
N0VENn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7QjU4NzFBN0EtOTY4
Qy00MkUzLUEzM0ItOTgxRTZGNDQ4RTc4fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xX
aW4zMg0KKwkJe0I1ODcxQTdBLTk2OEMtNDJFMy1BMzNCLTk4MUU2RjQ0OEU3OH0uRGVidWd8V2lu
MzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7QjU4NzFBN0EtOTY4Qy00MkUzLUEzM0ItOTgx
RTZGNDQ4RTc4fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7QjU4NzFBN0Et
OTY4Qy00MkUzLUEzM0ItOTgxRTZGNDQ4RTc4fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2
NA0KKwkJe0I1ODcxQTdBLTk2OEMtNDJFMy1BMzNCLTk4MUU2RjQ0OEU3OH0uUmVsZWFzZXxXaW4z
Mi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjU4NzFBN0EtOTY4Qy00MkUzLUEzM0It
OTgxRTZGNDQ4RTc4fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7
QjU4NzFBN0EtOTY4Qy00MkUzLUEzM0ItOTgxRTZGNDQ4RTc4fS5SZWxlYXNlfHg2NC5BY3RpdmVD
ZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0I1ODcxQTdBLTk2OEMtNDJFMy1BMzNCLTk4MUU2RjQ0OEU3
OH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7NUIzQTZEQjgtMUU3RS00
MEQ3LTkyQjktREE4QUFFNjE5RkFEfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4z
Mg0KKwkJezVCM0E2REI4LTFFN0UtNDBENy05MkI5LURBOEFBRTYxOUZBRH0uRGVidWd8V2luMzIu
QnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7NUIzQTZEQjgtMUU3RS00MEQ3LTkyQjktREE4QUFF
NjE5RkFEfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7NUIzQTZEQjgtMUU3
RS00MEQ3LTkyQjktREE4QUFFNjE5RkFEfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0K
KwkJezVCM0E2REI4LTFFN0UtNDBENy05MkI5LURBOEFBRTYxOUZBRH0uUmVsZWFzZXxXaW4zMi5B
Y3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7NUIzQTZEQjgtMUU3RS00MEQ3LTkyQjktREE4
QUFFNjE5RkFEfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7NUIz
QTZEQjgtMUU3RS00MEQ3LTkyQjktREE4QUFFNjE5RkFEfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcg
PSBSZWxlYXNlfHg2NA0KKwkJezVCM0E2REI4LTFFN0UtNDBENy05MkI5LURBOEFBRTYxOUZBRH0u
UmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7RkJFMzJERjMtMEZCMC00RjJG
LUE0MjQtMkMyMUJEN0JDMzI1fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0K
KwkJe0ZCRTMyREYzLTBGQjAtNEYyRi1BNDI0LTJDMjFCRDdCQzMyNX0uRGVidWd8V2luMzIuQnVp
bGQuMCA9IERlYnVnfFdpbjMyDQorCQl7RkJFMzJERjMtMEZCMC00RjJGLUE0MjQtMkMyMUJEN0JD
MzI1fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7RkJFMzJERjMtMEZCMC00
RjJGLUE0MjQtMkMyMUJEN0JDMzI1fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJ
e0ZCRTMyREYzLTBGQjAtNEYyRi1BNDI0LTJDMjFCRDdCQzMyNX0uUmVsZWFzZXxXaW4zMi5BY3Rp
dmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RkJFMzJERjMtMEZCMC00RjJGLUE0MjQtMkMyMUJE
N0JDMzI1fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7RkJFMzJE
RjMtMEZCMC00RjJGLUE0MjQtMkMyMUJEN0JDMzI1fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBS
ZWxlYXNlfHg2NA0KKwkJe0ZCRTMyREYzLTBGQjAtNEYyRi1BNDI0LTJDMjFCRDdCQzMyNX0uUmVs
ZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCUVuZEdsb2JhbFNlY3Rpb24NCisJR2xv
YmFsU2VjdGlvbihTb2x1dGlvblByb3BlcnRpZXMpID0gcHJlU29sdXRpb24NCisJCUhpZGVTb2x1
dGlvbk5vZGUgPSBGQUxTRQ0KKwlFbmRHbG9iYWxTZWN0aW9uDQorRW5kR2xvYmFsDQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2J1aWxkX2FuZ2xlLmd5cGkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2J1aWxkX2FuZ2xlLmd5cGkJKHJldmlzaW9u
IDE1OTA5MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9idWlsZF9hbmdsZS5neXBp
CSh3b3JraW5nIGNvcHkpCkBAIC01LDY4ICs1LDExIEBACiB7CiAgICd2YXJpYWJsZXMnOiB7CiAg
ICAgJ2FuZ2xlX2NvZGUnOiAxLAotICB9LAotICAndGFyZ2V0X2RlZmF1bHRzJzogewotICAgICdk
ZWZpbmVzJzogWwotICAgICAgJ0FOR0xFX0RJU0FCTEVfVFJBQ0UnLAotICAgICAgJ0FOR0xFX0NP
TVBJTEVfT1BUSU1JWkFUSU9OX0xFVkVMPUQzRENPTVBJTEVfT1BUSU1JWkFUSU9OX0xFVkVMMScs
Ci0gICAgICAnQU5HTEVfUFJFTE9BREVEX0QzRENPTVBJTEVSX01PRFVMRV9OQU1FUz17IFRFWFQo
ImQzZGNvbXBpbGVyXzQ2LmRsbCIpLCBURVhUKCJkM2Rjb21waWxlcl80My5kbGwiKSB9JywKLSAg
ICBdLAotICB9LAotICAndGFyZ2V0cyc6IFsKLSAgICB7Ci0gICAgICAndGFyZ2V0X25hbWUnOiAn
cHJlcHJvY2Vzc29yJywKLSAgICAgICd0eXBlJzogJ3N0YXRpY19saWJyYXJ5JywKLSAgICAgICdp
bmNsdWRlX2RpcnMnOiBbCi0gICAgICBdLAotICAgICAgJ3NvdXJjZXMnOiBbCi0gICAgICAgICdj
b21waWxlci9wcmVwcm9jZXNzb3IvRGlhZ25vc3RpY3NCYXNlLmNwcCcsCi0gICAgICAgICdjb21w
aWxlci9wcmVwcm9jZXNzb3IvRGlhZ25vc3RpY3NCYXNlLmgnLAotICAgICAgICAnY29tcGlsZXIv
cHJlcHJvY2Vzc29yL0RpcmVjdGl2ZUhhbmRsZXJCYXNlLmNwcCcsCi0gICAgICAgICdjb21waWxl
ci9wcmVwcm9jZXNzb3IvRGlyZWN0aXZlSGFuZGxlckJhc2UuaCcsCi0gICAgICAgICdjb21waWxl
ci9wcmVwcm9jZXNzb3IvRGlyZWN0aXZlUGFyc2VyLmNwcCcsCi0gICAgICAgICdjb21waWxlci9w
cmVwcm9jZXNzb3IvRGlyZWN0aXZlUGFyc2VyLmgnLAotICAgICAgICAnY29tcGlsZXIvcHJlcHJv
Y2Vzc29yL0V4cHJlc3Npb25QYXJzZXIuY3BwJywKLSAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nl
c3Nvci9FeHByZXNzaW9uUGFyc2VyLmgnLAotICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29y
L0lucHV0LmNwcCcsCi0gICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvSW5wdXQuaCcsCi0g
ICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvbGVuZ3RoX2xpbWl0cy5oJywKLSAgICAgICAg
J2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9MZXhlci5jcHAnLAotICAgICAgICAnY29tcGlsZXIvcHJl
cHJvY2Vzc29yL0xleGVyLmgnLAotICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3Jv
LmNwcCcsCi0gICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvTWFjcm8uaCcsCi0gICAgICAg
ICdjb21waWxlci9wcmVwcm9jZXNzb3IvTWFjcm9FeHBhbmRlci5jcHAnLAotICAgICAgICAnY29t
cGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvRXhwYW5kZXIuaCcsCi0gICAgICAgICdjb21waWxlci9w
cmVwcm9jZXNzb3IvbnVtZXJpY19sZXguaCcsCi0gICAgICAgICdjb21waWxlci9wcmVwcm9jZXNz
b3IvcHBfdXRpbHMuaCcsCi0gICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvUHJlcHJvY2Vz
c29yLmNwcCcsCi0gICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvUHJlcHJvY2Vzc29yLmgn
LAotICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL1NvdXJjZUxvY2F0aW9uLmgnLAotICAg
ICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmNwcCcsCi0gICAgICAgICdjb21waWxl
ci9wcmVwcm9jZXNzb3IvVG9rZW4uaCcsCi0gICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3Iv
VG9rZW5pemVyLmNwcCcsCi0gICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVy
LmgnLAotICAgICAgXSwKLSAgICAgICMgVE9ETyhqc2NodWgpOiBodHRwOi8vY3JidWcuY29tLzE2
NzE4NwotICAgICAgJ21zdnNfZGlzYWJsZWRfd2FybmluZ3MnOiBbCi0gICAgICAgIDQyNjcsCi0g
ICAgICBdLCAgICAgIAotICAgIH0sCi0gICAgewotICAgICAgJ3RhcmdldF9uYW1lJzogJ3RyYW5z
bGF0b3JfY29tbW9uJywKLSAgICAgICd0eXBlJzogJ3N0YXRpY19saWJyYXJ5JywKLSAgICAgICdk
ZXBlbmRlbmNpZXMnOiBbJ3ByZXByb2Nlc3NvciddLAotICAgICAgJ2luY2x1ZGVfZGlycyc6IFsK
LSAgICAgICAgJy4nLAotICAgICAgICAnLi4vaW5jbHVkZScsCi0gICAgICBdLAotICAgICAgJ2Rl
ZmluZXMnOiBbCi0gICAgICAgICdDT01QSUxFUl9JTVBMRU1FTlRBVElPTicsCi0gICAgICBdLAot
ICAgICAgJ3NvdXJjZXMnOiBbCisgICAgJ3RyYW5zbGF0b3Jfc291cmNlcyc6IFsKICAgICAgICAg
J2NvbXBpbGVyL0Jhc2VUeXBlcy5oJywKICAgICAgICAgJ2NvbXBpbGVyL0J1aWx0SW5GdW5jdGlv
bkVtdWxhdG9yLmNwcCcsCiAgICAgICAgICdjb21waWxlci9CdWlsdEluRnVuY3Rpb25FbXVsYXRv
ci5oJywKKyAgICAgICAgJ2NvbXBpbGVyL0NvZGVHZW4uY3BwJywKICAgICAgICAgJ2NvbXBpbGVy
L0NvbW1vbi5oJywKICAgICAgICAgJ2NvbXBpbGVyL0NvbXBpbGVyLmNwcCcsCiAgICAgICAgICdj
b21waWxlci9Db25zdGFudFVuaW9uLmgnLApAQCAtNzQsNiArMTcsOCBAQAogICAgICAgICAnY29t
cGlsZXIvZGVidWcuaCcsCiAgICAgICAgICdjb21waWxlci9EZXRlY3RDYWxsRGVwdGguY3BwJywK
ICAgICAgICAgJ2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oJywKKyAgICAgICAgJ2NvbXBpbGVy
L0RldGVjdERpc2NvbnRpbnVpdHkuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL0RldGVjdERpc2Nv
bnRpbnVpdHkuaCcsCiAgICAgICAgICdjb21waWxlci9EaWFnbm9zdGljcy5oJywKICAgICAgICAg
J2NvbXBpbGVyL0RpYWdub3N0aWNzLmNwcCcsCiAgICAgICAgICdjb21waWxlci9EaXJlY3RpdmVI
YW5kbGVyLmgnLApAQCAtOTMsNiArMzgsOCBAQAogICAgICAgICAnY29tcGlsZXIvSW5pdGlhbGl6
ZURsbC5jcHAnLAogICAgICAgICAnY29tcGlsZXIvSW5pdGlhbGl6ZURsbC5oJywKICAgICAgICAg
J2NvbXBpbGVyL0luaXRpYWxpemVHbG9iYWxzLmgnLAorICAgICAgICAnY29tcGlsZXIvSW5pdGlh
bGl6ZUdMUG9zaXRpb24uY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL0luaXRpYWxpemVHTFBvc2l0
aW9uLmgnLAogICAgICAgICAnY29tcGlsZXIvSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5jcHAnLAog
ICAgICAgICAnY29tcGlsZXIvSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5oJywKICAgICAgICAgJ2Nv
bXBpbGVyL0ludGVybWVkaWF0ZS5jcHAnLApAQCAtMTA0LDkgKzUxLDE3IEBACiAgICAgICAgICdj
b21waWxlci9NYXBMb25nVmFyaWFibGVOYW1lcy5oJywKICAgICAgICAgJ2NvbXBpbGVyL01NYXAu
aCcsCiAgICAgICAgICdjb21waWxlci9vc2luY2x1ZGUuaCcsCisgICAgICAgICdjb21waWxlci9P
dXRwdXRFU1NMLmNwcCcsCisgICAgICAgICdjb21waWxlci9PdXRwdXRFU1NMLmgnLAorICAgICAg
ICAnY29tcGlsZXIvT3V0cHV0R0xTTEJhc2UuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL091dHB1
dEdMU0xCYXNlLmgnLAorICAgICAgICAnY29tcGlsZXIvT3V0cHV0R0xTTC5jcHAnLAorICAgICAg
ICAnY29tcGlsZXIvT3V0cHV0R0xTTC5oJywKKyAgICAgICAgJ2NvbXBpbGVyL091dHB1dEhMU0wu
Y3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL091dHB1dEhMU0wuaCcsCiAgICAgICAgICdjb21waWxl
ci9wYXJzZUNvbnN0LmNwcCcsCi0gICAgICAgICdjb21waWxlci9QYXJzZUhlbHBlci5jcHAnLAot
ICAgICAgICAnY29tcGlsZXIvUGFyc2VIZWxwZXIuaCcsCisgICAgICAgICdjb21waWxlci9QYXJz
ZUNvbnRleHQuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL1BhcnNlQ29udGV4dC5oJywKICAgICAg
ICAgJ2NvbXBpbGVyL1Bvb2xBbGxvYy5jcHAnLAogICAgICAgICAnY29tcGlsZXIvUG9vbEFsbG9j
LmgnLAogICAgICAgICAnY29tcGlsZXIvUXVhbGlmaWVyQWxpdmUuY3BwJywKQEAgLTExNCwxMCAr
NjksMjMgQEAKICAgICAgICAgJ2NvbXBpbGVyL1JlbW92ZVRyZWUuY3BwJywKICAgICAgICAgJ2Nv
bXBpbGVyL1JlbW92ZVRyZWUuaCcsCiAgICAgICAgICdjb21waWxlci9SZW5hbWVGdW5jdGlvbi5o
JywKKyAgICAgICAgJ2NvbXBpbGVyL1NlYXJjaFN5bWJvbC5jcHAnLAorICAgICAgICAnY29tcGls
ZXIvU2VhcmNoU3ltYm9sLmgnLAorICAgICAgICAnY29tcGlsZXIvU2hhZGVyTGFuZy5jcHAnLAog
ICAgICAgICAnY29tcGlsZXIvU2hIYW5kbGUuaCcsCiAgICAgICAgICdjb21waWxlci9TeW1ib2xU
YWJsZS5jcHAnLAogICAgICAgICAnY29tcGlsZXIvU3ltYm9sVGFibGUuaCcsCisgICAgICAgICdj
b21waWxlci9UcmFuc2xhdG9yRVNTTC5jcHAnLAorICAgICAgICAnY29tcGlsZXIvVHJhbnNsYXRv
ckVTU0wuaCcsCisgICAgICAgICdjb21waWxlci9UcmFuc2xhdG9yR0xTTC5jcHAnLAorICAgICAg
ICAnY29tcGlsZXIvVHJhbnNsYXRvckdMU0wuaCcsCisgICAgICAgICdjb21waWxlci9UcmFuc2xh
dG9ySExTTC5jcHAnLAorICAgICAgICAnY29tcGlsZXIvVHJhbnNsYXRvckhMU0wuaCcsCiAgICAg
ICAgICdjb21waWxlci9UeXBlcy5oJywKKyAgICAgICAgJ2NvbXBpbGVyL1VuZm9sZFNob3J0Q2ly
Y3VpdEFTVC5jcHAnLAorICAgICAgICAnY29tcGlsZXIvVW5mb2xkU2hvcnRDaXJjdWl0QVNULmgn
LAorICAgICAgICAnY29tcGlsZXIvVW5mb2xkU2hvcnRDaXJjdWl0LmNwcCcsCisgICAgICAgICdj
b21waWxlci9VbmZvbGRTaG9ydENpcmN1aXQuaCcsCiAgICAgICAgICdjb21waWxlci9Vbmlmb3Jt
LmNwcCcsCiAgICAgICAgICdjb21waWxlci9Vbmlmb3JtLmgnLAogICAgICAgICAnY29tcGlsZXIv
dXRpbC5jcHAnLApAQCAtMTI4LDYgKzk2LDggQEAKICAgICAgICAgJ2NvbXBpbGVyL1ZhcmlhYmxl
SW5mby5oJywKICAgICAgICAgJ2NvbXBpbGVyL1ZhcmlhYmxlUGFja2VyLmNwcCcsCiAgICAgICAg
ICdjb21waWxlci9WYXJpYWJsZVBhY2tlci5oJywKKyAgICAgICAgJ2NvbXBpbGVyL1ZlcnNpb25H
TFNMLmNwcCcsCisgICAgICAgICdjb21waWxlci9WZXJzaW9uR0xTTC5oJywKICAgICAgICAgIyBE
ZXBlbmRlbmN5IGdyYXBoCiAgICAgICAgICdjb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3Jh
cGguY3BwJywKICAgICAgICAgJ2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaC5oJywK
QEAgLTE0NCwxMCArMTE0LDY5IEBACiAgICAgICAgICd0aGlyZF9wYXJ0eS9jb21waWxlci9BcnJh
eUJvdW5kc0NsYW1wZXIuY3BwJywKICAgICAgICAgJ3RoaXJkX3BhcnR5L2NvbXBpbGVyL0FycmF5
Qm91bmRzQ2xhbXBlci5oJywKICAgICAgIF0sCisgIH0sCisgICd0YXJnZXRfZGVmYXVsdHMnOiB7
CisgICAgJ2RlZmluZXMnOiBbCisgICAgICAnQU5HTEVfRElTQUJMRV9UUkFDRScsCisgICAgICAn
QU5HTEVfQ09NUElMRV9PUFRJTUlaQVRJT05fTEVWRUw9RDNEQ09NUElMRV9PUFRJTUlaQVRJT05f
TEVWRUwxJywKKyAgICAgICdBTkdMRV9QUkVMT0FERURfRDNEQ09NUElMRVJfTU9EVUxFX05BTUVT
PXsgVEVYVCgiZDNkY29tcGlsZXJfNDYuZGxsIiksIFRFWFQoImQzZGNvbXBpbGVyXzQzLmRsbCIp
IH0nLAorICAgIF0sCisgIH0sCisgICd0YXJnZXRzJzogWworICAgIHsKKyAgICAgICd0YXJnZXRf
bmFtZSc6ICdwcmVwcm9jZXNzb3InLAorICAgICAgJ3R5cGUnOiAnc3RhdGljX2xpYnJhcnknLAor
ICAgICAgJ2luY2x1ZGVfZGlycyc6IFsKKyAgICAgIF0sCisgICAgICAnc291cmNlcyc6IFsKKyAg
ICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaWFnbm9zdGljc0Jhc2UuY3BwJywKKyAgICAg
ICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaWFnbm9zdGljc0Jhc2UuaCcsCisgICAgICAgICdj
b21waWxlci9wcmVwcm9jZXNzb3IvRGlyZWN0aXZlSGFuZGxlckJhc2UuY3BwJywKKyAgICAgICAg
J2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaXJlY3RpdmVIYW5kbGVyQmFzZS5oJywKKyAgICAgICAg
J2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaXJlY3RpdmVQYXJzZXIuY3BwJywKKyAgICAgICAgJ2Nv
bXBpbGVyL3ByZXByb2Nlc3Nvci9EaXJlY3RpdmVQYXJzZXIuaCcsCisgICAgICAgICdjb21waWxl
ci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci5jcHAnLAorICAgICAgICAnY29tcGlsZXIv
cHJlcHJvY2Vzc29yL0V4cHJlc3Npb25QYXJzZXIuaCcsCisgICAgICAgICdjb21waWxlci9wcmVw
cm9jZXNzb3IvSW5wdXQuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9JbnB1
dC5oJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9sZW5ndGhfbGltaXRzLmgnLAor
ICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL0xleGVyLmNwcCcsCisgICAgICAgICdjb21w
aWxlci9wcmVwcm9jZXNzb3IvTGV4ZXIuaCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNz
b3IvTWFjcm8uY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9NYWNyby5oJywK
KyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9NYWNyb0V4cGFuZGVyLmNwcCcsCisgICAg
ICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvTWFjcm9FeHBhbmRlci5oJywKKyAgICAgICAgJ2Nv
bXBpbGVyL3ByZXByb2Nlc3Nvci9udW1lcmljX2xleC5oJywKKyAgICAgICAgJ2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9wcF91dGlscy5oJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Q
cmVwcm9jZXNzb3IuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9j
ZXNzb3IuaCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvU291cmNlTG9jYXRpb24u
aCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uY3BwJywKKyAgICAgICAg
J2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5oJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9Ub2tlbml6ZXIuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9U
b2tlbml6ZXIuaCcsCisgICAgICBdLAorICAgICAgIyBUT0RPKGpzY2h1aCk6IGh0dHA6Ly9jcmJ1
Zy5jb20vMTY3MTg3CisgICAgICAnbXN2c19kaXNhYmxlZF93YXJuaW5ncyc6IFsKKyAgICAgICAg
NDI2NywKKyAgICAgIF0sCisgICAgfSwKKyAgICB7CisgICAgICAndGFyZ2V0X25hbWUnOiAndHJh
bnNsYXRvcicsCisgICAgICAndHlwZSc6ICc8KGNvbXBvbmVudCknLAorICAgICAgJ2RlcGVuZGVu
Y2llcyc6IFsncHJlcHJvY2Vzc29yJ10sCisgICAgICAnaW5jbHVkZV9kaXJzJzogWworICAgICAg
ICAnLicsCisgICAgICAgICcuLi9pbmNsdWRlJywKKyAgICAgIF0sCisgICAgICAnZGVmaW5lcyc6
IFsKKyAgICAgICAgJ0FOR0xFX1RSQU5TTEFUT1JfSU1QTEVNRU5UQVRJT04nLAorICAgICAgXSwK
KyAgICAgICdzb3VyY2VzJzogWyc8QCh0cmFuc2xhdG9yX3NvdXJjZXMpJ10sCisgICAgICAjIFRP
RE8oanNjaHVoKTogaHR0cDovL2NyYnVnLmNvbS8xNjcxODcgc2l6ZV90IC0+IGludAorICAgICAg
J21zdnNfZGlzYWJsZWRfd2FybmluZ3MnOiBbIDQyNjcgXSwKICAgICAgICdjb25kaXRpb25zJzog
WwogICAgICAgICBbJ09TPT0id2luIicsIHsKLSAgICAgICAgICAjIFRPRE8oanNjaHVoKTogaHR0
cDovL2NyYnVnLmNvbS8xNjcxODcgc2l6ZV90IC0+IGludAotICAgICAgICAgICdtc3ZzX2Rpc2Fi
bGVkX3dhcm5pbmdzJzogWyA0MjY3IF0sCiAgICAgICAgICAgJ3NvdXJjZXMnOiBbJ2NvbXBpbGVy
L29zc291cmNlX3dpbi5jcHAnXSwKICAgICAgICAgfSwgeyAjIGVsc2U6IHBvc2l4CiAgICAgICAg
ICAgJ3NvdXJjZXMnOiBbJ2NvbXBpbGVyL29zc291cmNlX3Bvc2l4LmNwcCddLApAQCAtMTU1LDcx
ICsxODQsNDAgQEAKICAgICAgIF0sCiAgICAgfSwKICAgICB7Ci0gICAgICAndGFyZ2V0X25hbWUn
OiAndHJhbnNsYXRvcl9nbHNsJywKLSAgICAgICd0eXBlJzogJzwoY29tcG9uZW50KScsCi0gICAg
ICAnZGVwZW5kZW5jaWVzJzogWyd0cmFuc2xhdG9yX2NvbW1vbiddLAorICAgICAgJ3RhcmdldF9u
YW1lJzogJ3RyYW5zbGF0b3Jfc3RhdGljJywKKyAgICAgICd0eXBlJzogJ3N0YXRpY19saWJyYXJ5
JywKKyAgICAgICdkZXBlbmRlbmNpZXMnOiBbJ3ByZXByb2Nlc3NvciddLAogICAgICAgJ2luY2x1
ZGVfZGlycyc6IFsKICAgICAgICAgJy4nLAogICAgICAgICAnLi4vaW5jbHVkZScsCiAgICAgICBd
LAorICAgICAgJ2RpcmVjdF9kZXBlbmRlbnRfc2V0dGluZ3MnOiB7CisgICAgICAgICdkZWZpbmVz
JzogWworICAgICAgICAgICdBTkdMRV9UUkFOU0xBVE9SX1NUQVRJQycsCisgICAgICAgIF0sCisg
ICAgICB9LAogICAgICAgJ2RlZmluZXMnOiBbCi0gICAgICAgICdDT01QSUxFUl9JTVBMRU1FTlRB
VElPTicsCi0gICAgICBdLAotICAgICAgJ3NvdXJjZXMnOiBbCi0gICAgICAgICdjb21waWxlci9D
b2RlR2VuR0xTTC5jcHAnLAotICAgICAgICAnY29tcGlsZXIvT3V0cHV0RVNTTC5jcHAnLAotICAg
ICAgICAnY29tcGlsZXIvT3V0cHV0RVNTTC5oJywgICAgICAgIAotICAgICAgICAnY29tcGlsZXIv
T3V0cHV0R0xTTEJhc2UuY3BwJywKLSAgICAgICAgJ2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmgn
LAotICAgICAgICAnY29tcGlsZXIvT3V0cHV0R0xTTC5jcHAnLAotICAgICAgICAnY29tcGlsZXIv
T3V0cHV0R0xTTC5oJywKLSAgICAgICAgJ2NvbXBpbGVyL1NoYWRlckxhbmcuY3BwJywKLSAgICAg
ICAgJ2NvbXBpbGVyL1RyYW5zbGF0b3JFU1NMLmNwcCcsCi0gICAgICAgICdjb21waWxlci9UcmFu
c2xhdG9yRVNTTC5oJywKLSAgICAgICAgJ2NvbXBpbGVyL1RyYW5zbGF0b3JHTFNMLmNwcCcsCi0g
ICAgICAgICdjb21waWxlci9UcmFuc2xhdG9yR0xTTC5oJywKLSAgICAgICAgJ2NvbXBpbGVyL1Zl
cnNpb25HTFNMLmNwcCcsCi0gICAgICAgICdjb21waWxlci9WZXJzaW9uR0xTTC5oJywKKyAgICAg
ICAgJ0FOR0xFX1RSQU5TTEFUT1JfU1RBVElDJywKICAgICAgIF0sCisgICAgICAnc291cmNlcyc6
IFsnPEAodHJhbnNsYXRvcl9zb3VyY2VzKSddLAogICAgICAgIyBUT0RPKGpzY2h1aCk6IGh0dHA6
Ly9jcmJ1Zy5jb20vMTY3MTg3IHNpemVfdCAtPiBpbnQKICAgICAgICdtc3ZzX2Rpc2FibGVkX3dh
cm5pbmdzJzogWyA0MjY3IF0sCisgICAgICAnY29uZGl0aW9ucyc6IFsKKyAgICAgICAgWydPUz09
IndpbiInLCB7CisgICAgICAgICAgJ3NvdXJjZXMnOiBbJ2NvbXBpbGVyL29zc291cmNlX3dpbi5j
cHAnXSwKKyAgICAgICAgfSwgeyAjIGVsc2U6IHBvc2l4CisgICAgICAgICAgJ3NvdXJjZXMnOiBb
J2NvbXBpbGVyL29zc291cmNlX3Bvc2l4LmNwcCddLAorICAgICAgICB9XSwKKyAgICAgIF0sCiAg
ICAgfSwKICAgXSwKICAgJ2NvbmRpdGlvbnMnOiBbCiAgICAgWydPUz09IndpbiInLCB7CiAgICAg
ICAndGFyZ2V0cyc6IFsKICAgICAgICAgewotICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICd0cmFu
c2xhdG9yX2hsc2wnLAotICAgICAgICAgICd0eXBlJzogJzwoY29tcG9uZW50KScsCi0gICAgICAg
ICAgJ2RlcGVuZGVuY2llcyc6IFsndHJhbnNsYXRvcl9jb21tb24nXSwKLSAgICAgICAgICAnaW5j
bHVkZV9kaXJzJzogWwotICAgICAgICAgICAgJy4nLAotICAgICAgICAgICAgJy4uL2luY2x1ZGUn
LAotICAgICAgICAgIF0sCi0gICAgICAgICAgJ2RlZmluZXMnOiBbCi0gICAgICAgICAgICAnQ09N
UElMRVJfSU1QTEVNRU5UQVRJT04nLAotICAgICAgICAgIF0sCi0gICAgICAgICAgJ3NvdXJjZXMn
OiBbCi0gICAgICAgICAgICAnY29tcGlsZXIvU2hhZGVyTGFuZy5jcHAnLAotICAgICAgICAgICAg
J2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVpdHkuY3BwJywKLSAgICAgICAgICAgICdjb21waWxl
ci9EZXRlY3REaXNjb250aW51aXR5LmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL0NvZGVHZW5I
TFNMLmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvT3V0cHV0SExTTC5jcHAnLAotICAgICAg
ICAgICAgJ2NvbXBpbGVyL091dHB1dEhMU0wuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvVHJh
bnNsYXRvckhMU0wuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci9UcmFuc2xhdG9ySExTTC5o
JywKLSAgICAgICAgICAgICdjb21waWxlci9VbmZvbGRTaG9ydENpcmN1aXQuY3BwJywKLSAgICAg
ICAgICAgICdjb21waWxlci9VbmZvbGRTaG9ydENpcmN1aXQuaCcsCi0gICAgICAgICAgICAnY29t
cGlsZXIvU2VhcmNoU3ltYm9sLmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvU2VhcmNoU3lt
Ym9sLmgnLAotICAgICAgICAgIF0sCi0gICAgICAgICAgIyBUT0RPKGpzY2h1aCk6IGh0dHA6Ly9j
cmJ1Zy5jb20vMTY3MTg3IHNpemVfdCAtPiBpbnQKLSAgICAgICAgICAnbXN2c19kaXNhYmxlZF93
YXJuaW5ncyc6IFsgNDI2NyBdLAotICAgICAgICB9LAotICAgICAgICB7CiAgICAgICAgICAgJ3Rh
cmdldF9uYW1lJzogJ2xpYkdMRVN2MicsCiAgICAgICAgICAgJ3R5cGUnOiAnc2hhcmVkX2xpYnJh
cnknLAotICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiBbJ3RyYW5zbGF0b3JfaGxzbCddLAorICAg
ICAgICAgICdkZXBlbmRlbmNpZXMnOiBbJ3RyYW5zbGF0b3InXSwKICAgICAgICAgICAnaW5jbHVk
ZV9kaXJzJzogWwogICAgICAgICAgICAgJy4nLAogICAgICAgICAgICAgJy4uL2luY2x1ZGUnLApA
QCAtMjI4LDkgKzIyNiwxMiBAQAogICAgICAgICAgICdzb3VyY2VzJzogWwogICAgICAgICAgICAg
J3RoaXJkX3BhcnR5L211cm11cmhhc2gvTXVybXVySGFzaDMuaCcsCiAgICAgICAgICAgICAndGhp
cmRfcGFydHkvbXVybXVyaGFzaC9NdXJtdXJIYXNoMy5jcHAnLAorICAgICAgICAgICAgJ3RoaXJk
X3BhcnR5L3RyYWNlX2V2ZW50L3RyYWNlX2V2ZW50LmgnLAogICAgICAgICAgICAgJ2NvbW1vbi9h
bmdsZXV0aWxzLmgnLAogICAgICAgICAgICAgJ2NvbW1vbi9kZWJ1Zy5jcHAnLAogICAgICAgICAg
ICAgJ2NvbW1vbi9kZWJ1Zy5oJywKKyAgICAgICAgICAgICdjb21tb24vZXZlbnRfdHJhY2VyLmNw
cCcsCisgICAgICAgICAgICAnY29tbW9uL2V2ZW50X3RyYWNlci5oJywKICAgICAgICAgICAgICdj
b21tb24vUmVmQ291bnRPYmplY3QuY3BwJywKICAgICAgICAgICAgICdjb21tb24vUmVmQ291bnRP
YmplY3QuaCcsCiAgICAgICAgICAgICAnY29tbW9uL3ZlcnNpb24uaCcsCkBAIC0yOTMsNiArMjk0
LDggQEAKICAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhCdWZmZXIxMS5oJywK
ICAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhEYXRhTWFuYWdlci5jcHAnLAog
ICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleERhdGFNYW5hZ2VyLmgnLAorICAg
ICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleFJhbmdlQ2FjaGUuY3BwJywKKyAgICAg
ICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhSYW5nZUNhY2hlLmgnLAogICAgICAgICAg
ICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9JbnB1dExheW91dENhY2hlLmNwcCcsCiAgICAgICAgICAg
ICAnbGliR0xFU3YyL3JlbmRlcmVyL0lucHV0TGF5b3V0Q2FjaGUuaCcsCiAgICAgICAgICAgICAn
bGliR0xFU3YyL3JlbmRlcmVyL1F1ZXJ5SW1wbC5oJywKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21tb24vZGVidWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmgJKHJldmlzaW9uIDE1OTA5MCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZGVidWcuaAkod29ya2luZyBjb3B5KQpAQCAtOTks
OCArOTksMTAgQEAgbmFtZXNwYWNlIGdsCiAgICAgI2RlZmluZSBVTlJFQUNIQUJMRSgpIEVSUigi
XHQhIFVucmVhY2hhYmxlIHJlYWNoZWQ6ICVzKCVkKVxuIiwgX19GVU5DVElPTl9fLCBfX0xJTkVf
XykKICNlbmRpZgogCi0vLyBBIG1hY3JvIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIGFuIG9iamVj
dCBoYXMgYSBnaXZlbiBydW50aW1lIHR5cGUuCi0jaWYgIWRlZmluZWQoTkRFQlVHKSAmJiAoIWRl
ZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX0NQUFJUVEkpKQorLy8gQSBtYWNybyB0aGF0IGRl
dGVybWluZXMgd2hldGhlciBhbiBvYmplY3QgaGFzIGEgZ2l2ZW4gcnVudGltZSB0eXBlLiBNU1ZD
IHVzZXMgX0NQUFJUVEkuCisvLyBHQ0MgdXNlcyBfX0dYWF9SVFRJLCBidXQgdGhlIG1hY3JvIHdh
cyBpbnRyb2R1Y2VkIGluIHZlcnNpb24gNC4zLCBzbyB3ZSBhc3N1bWUgdGhhdCBhbGwgb2xkZXIK
Ky8vIHZlcnNpb25zIHN1cHBvcnQgUlRUSS4KKyNpZiAhZGVmaW5lZChOREVCVUcpICYmICghZGVm
aW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfQ1BQUlRUSSkpICYmICghZGVmaW5lZChfX0dOVUNf
XykgfHwgX19HTlVDX18gPCA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwg
MykgfHwgZGVmaW5lZChfX0dYWF9SVFRJKSkKICNkZWZpbmUgSEFTX0RZTkFNSUNfVFlQRSh0eXBl
LCBvYmopIChkeW5hbWljX2Nhc3Q8dHlwZSA+KG9iaikgIT0gTlVMTCkKICNlbHNlCiAjZGVmaW5l
IEhBU19EWU5BTUlDX1RZUEUodHlwZSwgb2JqKSB0cnVlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tbW9uL2V2ZW50X3RyYWNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9ldmVudF90cmFjZXIuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9ldmVudF90cmFjZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8vIENvcHlyaWdodCAoYykgMjAxMiBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworI2luY2x1ZGUgImNvbW1v
bi9ldmVudF90cmFjZXIuaCIKKworbmFtZXNwYWNlIGdsCit7CisKK0dldENhdGVnb3J5RW5hYmxl
ZEZsYWdGdW5jIGdfZ2V0Q2F0ZWdvcnlFbmFibGVkRmxhZzsKK0FkZFRyYWNlRXZlbnRGdW5jIGdf
YWRkVHJhY2VFdmVudDsKKworfSAgLy8gbmFtZXNwYWNlIGdsCisKK2V4dGVybiAiQyIgeworCit2
b2lkIF9fc3RkY2FsbCBTZXRUcmFjZUZ1bmN0aW9uUG9pbnRlcnMoR2V0Q2F0ZWdvcnlFbmFibGVk
RmxhZ0Z1bmMgZ2V0Q2F0ZWdvcnlFbmFibGVkRmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBZGRUcmFjZUV2ZW50RnVuYyBhZGRUcmFjZUV2ZW50KQoreworICAg
IGdsOjpnX2dldENhdGVnb3J5RW5hYmxlZEZsYWcgPSBnZXRDYXRlZ29yeUVuYWJsZWRGbGFnOwor
ICAgIGdsOjpnX2FkZFRyYWNlRXZlbnQgPSBhZGRUcmFjZUV2ZW50OworfQorCit9ICAvLyBleHRl
cm4gIkMiCisKK25hbWVzcGFjZSBnbAoreworCitjb25zdCB1bnNpZ25lZCBjaGFyKiBUcmFjZUdl
dFRyYWNlQ2F0ZWdvcnlFbmFibGVkRmxhZyhjb25zdCBjaGFyKiBuYW1lKQoreworICAgIGlmIChn
X2dldENhdGVnb3J5RW5hYmxlZEZsYWcpCisgICAgeworICAgICAgICByZXR1cm4gZ19nZXRDYXRl
Z29yeUVuYWJsZWRGbGFnKG5hbWUpOworICAgIH0KKyAgICBzdGF0aWMgdW5zaWduZWQgY2hhciBk
aXNhYmxlZCA9IDA7CisgICAgcmV0dXJuICZkaXNhYmxlZDsKK30KKwordm9pZCBUcmFjZUFkZFRy
YWNlRXZlbnQoY2hhciBwaGFzZSwgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlHcm91cEVu
YWJsZWQsIGNvbnN0IGNoYXIqIG5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBudW1BcmdzLCBjb25zdCBjaGFyKiogYXJnTmFtZXMsIGNvbnN0
IHVuc2lnbmVkIGNoYXIqIGFyZ1R5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dW5zaWduZWQgbG9uZyBsb25nKiBhcmdWYWx1ZXMsIHVuc2lnbmVkIGNoYXIgZmxhZ3MpCit7Cisg
ICAgaWYgKGdfYWRkVHJhY2VFdmVudCkKKyAgICB7CisgICAgICAgIGdfYWRkVHJhY2VFdmVudChw
aGFzZSwgY2F0ZWdvcnlHcm91cEVuYWJsZWQsIG5hbWUsIGlkLCBudW1BcmdzLCBhcmdOYW1lcywg
YXJnVHlwZXMsIGFyZ1ZhbHVlcywgZmxhZ3MpOworICAgIH0KK30KKworfSAgLy8gbmFtZXNwYWNl
IGdsCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2V2ZW50X3RyYWNl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZXZl
bnRfdHJhY2VyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tbW9uL2V2ZW50X3RyYWNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKy8v
IENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKworI2lmbmRlZiBDT01NT05fRVZFTlRfVFJBQ0VSX0hfCisjZGVmaW5lIENPTU1PTl9FVkVO
VF9UUkFDRVJfSF8KKworZXh0ZXJuICJDIiB7CisKK3R5cGVkZWYgY29uc3QgdW5zaWduZWQgY2hh
ciogKCpHZXRDYXRlZ29yeUVuYWJsZWRGbGFnRnVuYykoY29uc3QgY2hhciogbmFtZSk7Cit0eXBl
ZGVmIHZvaWQgKCpBZGRUcmFjZUV2ZW50RnVuYykoY2hhciBwaGFzZSwgY29uc3QgdW5zaWduZWQg
Y2hhciogY2F0ZWdvcnlHcm91cEVuYWJsZWQsIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGlkLCBpbnQgbnVtQXJn
cywgY29uc3QgY2hhcioqIGFyZ05hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGFyZ1R5cGVzLCBjb25zdCB1bnNpZ25lZCBsb25nIGxv
bmcqIGFyZ1ZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBjaGFyIGZsYWdzKTsKKworLy8gZXh0ZXJuICJDIiBzbyB0aGF0IGl0IGhhcyBhIHJlYXNvbmFi
bGUgbmFtZSBmb3IgR2V0UHJvY0FkZHJlc3MuCit2b2lkIF9fc3RkY2FsbCBTZXRUcmFjZUZ1bmN0
aW9uUG9pbnRlcnMoR2V0Q2F0ZWdvcnlFbmFibGVkRmxhZ0Z1bmMgZ2V0X2NhdGVnb3J5X2VuYWJs
ZWRfZmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRUcmFj
ZUV2ZW50RnVuYyBhZGRfdHJhY2VfZXZlbnRfZnVuYyk7CisKK30KKworbmFtZXNwYWNlIGdsCit7
CisKK2NvbnN0IHVuc2lnbmVkIGNoYXIqIFRyYWNlR2V0VHJhY2VDYXRlZ29yeUVuYWJsZWRGbGFn
KGNvbnN0IGNoYXIqIG5hbWUpOworCit2b2lkIFRyYWNlQWRkVHJhY2VFdmVudChjaGFyIHBoYXNl
LCBjb25zdCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUdyb3VwRW5hYmxlZCwgY29uc3QgY2hhciog
bmFtZSwgdW5zaWduZWQgbG9uZyBsb25nIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50
IG51bUFyZ3MsIGNvbnN0IGNoYXIqKiBhcmdOYW1lcywgY29uc3QgdW5zaWduZWQgY2hhciogYXJn
VHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcq
IGFyZ1ZhbHVlcywgdW5zaWduZWQgY2hhciBmbGFncyk7CisKK30KKworI2VuZGlmICAvLyBDT01N
T05fRVZFTlRfVFJBQ0VSX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
bW9uL3ZlcnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tbW9uL3ZlcnNpb24uaAkocmV2aXNpb24gMTU5MDkwKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbW1vbi92ZXJzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBA
CiAjZGVmaW5lIE1BSk9SX1ZFUlNJT04gMQogI2RlZmluZSBNSU5PUl9WRVJTSU9OIDIKICNkZWZp
bmUgQlVJTERfVkVSU0lPTiAwCi0jZGVmaW5lIEJVSUxEX1JFVklTSU9OIDI0MjYKKyNkZWZpbmUg
QlVJTERfUkVWSVNJT04gMjQ1MAogCiAjZGVmaW5lIFNUUklOR0lGWSh4KSAjeAogI2RlZmluZSBN
QUNST19TVFJJTkdJRlkoeCkgU1RSSU5HSUZZKHgpCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvQ29kZUdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvZGVHZW4uY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvZGVHZW4uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJjb21w
aWxlci9UcmFuc2xhdG9yRVNTTC5oIgorI2luY2x1ZGUgImNvbXBpbGVyL1RyYW5zbGF0b3JHTFNM
LmgiCisjaW5jbHVkZSAiY29tcGlsZXIvVHJhbnNsYXRvckhMU0wuaCIKKworLy8KKy8vIFRoaXMg
ZnVuY3Rpb24gbXVzdCBiZSBwcm92aWRlZCB0byBjcmVhdGUgdGhlIGFjdHVhbAorLy8gY29tcGls
ZSBvYmplY3QgdXNlZCBieSBoaWdoZXIgbGV2ZWwgY29kZS4gIEl0IHJldHVybnMKKy8vIGEgc3Vi
Y2xhc3Mgb2YgVENvbXBpbGVyLgorLy8KK1RDb21waWxlciogQ29uc3RydWN0Q29tcGlsZXIoCisg
ICAgU2hTaGFkZXJUeXBlIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjLCBTaFNoYWRlck91dHB1dCBv
dXRwdXQpCit7CisgICAgc3dpdGNoIChvdXRwdXQpIHsKKyAgICAgIGNhc2UgU0hfRVNTTF9PVVRQ
VVQ6CisgICAgICAgIHJldHVybiBuZXcgVHJhbnNsYXRvckVTU0wodHlwZSwgc3BlYyk7CisgICAg
ICBjYXNlIFNIX0dMU0xfT1VUUFVUOgorICAgICAgICByZXR1cm4gbmV3IFRyYW5zbGF0b3JHTFNM
KHR5cGUsIHNwZWMpOworICAgICAgY2FzZSBTSF9ITFNMOV9PVVRQVVQ6CisgICAgICBjYXNlIFNI
X0hMU0wxMV9PVVRQVVQ6CisgICAgICAgIHJldHVybiBuZXcgVHJhbnNsYXRvckhMU0wodHlwZSwg
c3BlYywgb3V0cHV0KTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBOVUxMOworICAg
IH0KK30KKworLy8KKy8vIERlbGV0ZSB0aGUgY29tcGlsZXIgbWFkZSBieSBDb25zdHJ1Y3RDb21w
aWxlcgorLy8KK3ZvaWQgRGVsZXRlQ29tcGlsZXIoVENvbXBpbGVyKiBjb21waWxlcikKK3sKKyAg
ICBkZWxldGUgY29tcGlsZXI7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvQ29kZUdlbkdMU0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9Db2RlR2VuR0xTTC5jcHAJKHJldmlzaW9uIDE1OTIzOSkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db2RlR2VuR0xTTC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsMzQgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0y
MDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1
ZGUgImNvbXBpbGVyL1RyYW5zbGF0b3JHTFNMLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvVHJhbnNs
YXRvckVTU0wuaCIKLQotLy8KLS8vIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBwcm92aWRlZCB0byBj
cmVhdGUgdGhlIGFjdHVhbAotLy8gY29tcGlsZSBvYmplY3QgdXNlZCBieSBoaWdoZXIgbGV2ZWwg
Y29kZS4gIEl0IHJldHVybnMKLS8vIGEgc3ViY2xhc3Mgb2YgVENvbXBpbGVyLgotLy8KLVRDb21w
aWxlciogQ29uc3RydWN0Q29tcGlsZXIoCi0gICAgU2hTaGFkZXJUeXBlIHR5cGUsIFNoU2hhZGVy
U3BlYyBzcGVjLCBTaFNoYWRlck91dHB1dCBvdXRwdXQpCi17Ci0gICAgc3dpdGNoIChvdXRwdXQp
IHsKLSAgICAgIGNhc2UgU0hfR0xTTF9PVVRQVVQ6Ci0gICAgICAgIHJldHVybiBuZXcgVHJhbnNs
YXRvckdMU0wodHlwZSwgc3BlYyk7Ci0gICAgICBjYXNlIFNIX0VTU0xfT1VUUFVUOgotICAgICAg
ICByZXR1cm4gbmV3IFRyYW5zbGF0b3JFU1NMKHR5cGUsIHNwZWMpOwotICAgICAgZGVmYXVsdDoK
LSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotfQotCi0vLwotLy8gRGVsZXRlIHRoZSBjb21w
aWxlciBtYWRlIGJ5IENvbnN0cnVjdENvbXBpbGVyCi0vLwotdm9pZCBEZWxldGVDb21waWxlcihU
Q29tcGlsZXIqIGNvbXBpbGVyKQotewotICAgIGRlbGV0ZSBjb21waWxlcjsKLX0KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db2RlR2VuSExTTC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvZGVHZW5ITFNM
LmNwcAkocmV2aXNpb24gMTU5MjM5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL0NvZGVHZW5ITFNMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwzMyArMCwwIEBACi0v
LwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAiY29tcGlsZXIvVHJhbnNsYXRvckhMU0wuaCIK
LQotLy8KLS8vIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBwcm92aWRlZCB0byBjcmVhdGUgdGhlIGFj
dHVhbAotLy8gY29tcGlsZSBvYmplY3QgdXNlZCBieSBoaWdoZXIgbGV2ZWwgY29kZS4gIEl0IHJl
dHVybnMKLS8vIGEgc3ViY2xhc3Mgb2YgVENvbXBpbGVyLgotLy8KLVRDb21waWxlciogQ29uc3Ry
dWN0Q29tcGlsZXIoCi0gICAgU2hTaGFkZXJUeXBlIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjLCBT
aFNoYWRlck91dHB1dCBvdXRwdXQpCi17Ci0gIHN3aXRjaCAob3V0cHV0KQotICB7Ci0gICAgY2Fz
ZSBTSF9ITFNMOV9PVVRQVVQ6Ci0gICAgY2FzZSBTSF9ITFNMMTFfT1VUUFVUOgotICAgICAgcmV0
dXJuIG5ldyBUcmFuc2xhdG9ySExTTCh0eXBlLCBzcGVjLCBvdXRwdXQpOwotICAgIGRlZmF1bHQ6
Ci0gICAgICByZXR1cm4gTlVMTDsKLSAgfQotfQotCi0vLwotLy8gRGVsZXRlIHRoZSBjb21waWxl
ciBtYWRlIGJ5IENvbnN0cnVjdENvbXBpbGVyCi0vLwotdm9pZCBEZWxldGVDb21waWxlcihUQ29t
cGlsZXIqIGNvbXBpbGVyKQotewotICAgIGRlbGV0ZSBjb21waWxlcjsKLX0KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db21tb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29tbW9uLmgJKHJldmlzaW9uIDE1
OTA5MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db21tb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMjQsMTQgKzI0LDE0IEBAIHN0cnVjdCBUU291cmNlTG9jIHsKIC8v
CiAvLyBQdXQgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURSBpbiBiYXNlIGNsYXNzZXMgdG8gbWFr
ZSB0aGVtIHVzZSB0aGlzIHNjaGVtZS4KIC8vCi0jZGVmaW5lIFBPT0xfQUxMT0NBVE9SX05FV19E
RUxFVEUoQSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQqIG9w
ZXJhdG9yIG5ldyhzaXplX3QgcykgeyByZXR1cm4gKEEpLmFsbG9jYXRlKHMpOyB9ICAgICAgICAg
IFwKLSAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkICpfV2hlcmUpIHsgcmV0dXJu
IChfV2hlcmUpOwl9ICAgICBcCi0gICAgdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCopIHsgfSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgb3BlcmF0b3IgZGVs
ZXRlKHZvaWQgKiwgdm9pZCAqKSB7IH0gICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2
b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QgcykgeyByZXR1cm4gKEEpLmFsbG9jYXRlKHMpOyB9
ICAgICAgICBcCi0gICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkICpfV2hlcmUp
IHsgcmV0dXJuIChfV2hlcmUpOwl9IFwKLSAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQq
KSB7IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIFBPT0xfQUxM
T0NBVE9SX05FV19ERUxFVEUoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QgcykgeyByZXR1cm4g
R2V0R2xvYmFsUG9vbEFsbG9jYXRvcigpLT5hbGxvY2F0ZShzKTsgfSAgIFwKKyAgICB2b2lkKiBv
cGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkICpfV2hlcmUpIHsgcmV0dXJuIChfV2hlcmUpOyB9ICAg
ICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCopIHsgfSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZv
aWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQgKiwgdm9pZCAqKSB7IH0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qg
cykgeyByZXR1cm4gR2V0R2xvYmFsUG9vbEFsbG9jYXRvcigpLT5hbGxvY2F0ZShzKTsgfSBcCisg
ICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkICpfV2hlcmUpIHsgcmV0dXJuIChf
V2hlcmUpOyB9ICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlW10o
dm9pZCopIHsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQgKiwgdm9pZCAqKSB7IH0KIAogLy8K
QEAgLTQyLDcgKzQyLDcgQEAgdHlwZWRlZiBzdGQ6OmJhc2ljX3N0cmluZyA8Y2hhciwgc3RkOjpj
aAogdHlwZWRlZiBzdGQ6OmJhc2ljX29zdHJpbmdzdHJlYW08Y2hhciwgc3RkOjpjaGFyX3RyYWl0
czxjaGFyPiwgVFN0cmluZ0FsbG9jYXRvcj4gVFN0cmluZ1N0cmVhbTsKIGlubGluZSBUU3RyaW5n
KiBOZXdQb29sVFN0cmluZyhjb25zdCBjaGFyKiBzKQogewotCXZvaWQqIG1lbW9yeSA9IEdsb2Jh
bFBvb2xBbGxvY2F0b3IuYWxsb2NhdGUoc2l6ZW9mKFRTdHJpbmcpKTsKKwl2b2lkKiBtZW1vcnkg
PSBHZXRHbG9iYWxQb29sQWxsb2NhdG9yKCktPmFsbG9jYXRlKHNpemVvZihUU3RyaW5nKSk7CiAJ
cmV0dXJuIG5ldyhtZW1vcnkpIFRTdHJpbmcocyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9Db21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcAkocmV2aXNpb24gMTU5
MDkwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOCwxMSArOCwxMyBAQAogI2luY2x1ZGUgImNvbXBpbGVyL0Rl
dGVjdENhbGxEZXB0aC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0Zvckxvb3BVbnJvbGwuaCIKICNp
bmNsdWRlICJjb21waWxlci9Jbml0aWFsaXplLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvSW5pdGlh
bGl6ZUdMUG9zaXRpb24uaCIKICNpbmNsdWRlICJjb21waWxlci9Jbml0aWFsaXplUGFyc2VDb250
ZXh0LmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuaCIKLSNpbmNs
dWRlICJjb21waWxlci9QYXJzZUhlbHBlci5oIgorI2luY2x1ZGUgImNvbXBpbGVyL1BhcnNlQ29u
dGV4dC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL1JlbmFtZUZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAi
Y29tcGlsZXIvU2hIYW5kbGUuaCIKKyNpbmNsdWRlICJjb21waWxlci9VbmZvbGRTaG9ydENpcmN1
aXRBU1QuaCIKICNpbmNsdWRlICJjb21waWxlci9WYWxpZGF0ZUxpbWl0YXRpb25zLmgiCiAjaW5j
bHVkZSAiY29tcGlsZXIvVmFyaWFibGVQYWNrZXIuaCIKICNpbmNsdWRlICJjb21waWxlci9kZXBn
cmFwaC9EZXBlbmRlbmN5R3JhcGguaCIKQEAgLTI5LDE5ICszMSwzMiBAQCBib29sIGlzV2ViR0xC
YXNlZFNwZWMoU2hTaGFkZXJTcGVjIHNwZWMpCiBuYW1lc3BhY2UgewogY2xhc3MgVFNjb3BlZFBv
b2xBbGxvY2F0b3IgewogcHVibGljOgotICAgIFRTY29wZWRQb29sQWxsb2NhdG9yKFRQb29sQWxs
b2NhdG9yKiBhbGxvY2F0b3IsIGJvb2wgcHVzaFBvcCkKLSAgICAgICAgOiBtQWxsb2NhdG9yKGFs
bG9jYXRvciksIG1QdXNoUG9wQWxsb2NhdG9yKHB1c2hQb3ApIHsKLSAgICAgICAgaWYgKG1QdXNo
UG9wQWxsb2NhdG9yKSBtQWxsb2NhdG9yLT5wdXNoKCk7CisgICAgVFNjb3BlZFBvb2xBbGxvY2F0
b3IoVFBvb2xBbGxvY2F0b3IqIGFsbG9jYXRvcikgOiBtQWxsb2NhdG9yKGFsbG9jYXRvcikgewor
ICAgICAgICBtQWxsb2NhdG9yLT5wdXNoKCk7CiAgICAgICAgIFNldEdsb2JhbFBvb2xBbGxvY2F0
b3IobUFsbG9jYXRvcik7CiAgICAgfQogICAgIH5UU2NvcGVkUG9vbEFsbG9jYXRvcigpIHsKICAg
ICAgICAgU2V0R2xvYmFsUG9vbEFsbG9jYXRvcihOVUxMKTsKLSAgICAgICAgaWYgKG1QdXNoUG9w
QWxsb2NhdG9yKSBtQWxsb2NhdG9yLT5wb3AoKTsKKyAgICAgICAgbUFsbG9jYXRvci0+cG9wKCk7
CiAgICAgfQogCiBwcml2YXRlOgogICAgIFRQb29sQWxsb2NhdG9yKiBtQWxsb2NhdG9yOwotICAg
IGJvb2wgbVB1c2hQb3BBbGxvY2F0b3I7Cit9OworCitjbGFzcyBUU2NvcGVkU3ltYm9sVGFibGVM
ZXZlbCB7CitwdWJsaWM6CisgICAgVFNjb3BlZFN5bWJvbFRhYmxlTGV2ZWwoVFN5bWJvbFRhYmxl
KiB0YWJsZSkgOiBtVGFibGUodGFibGUpIHsKKyAgICAgICAgQVNTRVJUKG1UYWJsZS0+YXRCdWls
dEluTGV2ZWwoKSk7CisgICAgICAgIG1UYWJsZS0+cHVzaCgpOworICAgIH0KKyAgICB+VFNjb3Bl
ZFN5bWJvbFRhYmxlTGV2ZWwoKSB7CisgICAgICAgIHdoaWxlICghbVRhYmxlLT5hdEJ1aWx0SW5M
ZXZlbCgpKQorICAgICAgICAgICAgbVRhYmxlLT5wb3AoKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgVFN5bWJvbFRhYmxlKiBtVGFibGU7CiB9OwogfSAgLy8gbmFtZXNwYWNlCiAKQEAgLTgxLDcg
Kzk2LDggQEAgYm9vbCBUQ29tcGlsZXI6OkluaXQoY29uc3QgU2hCdWlsdEluUmVzbwogICAgICAg
ICByZXNvdXJjZXMuTWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9yczsKICAgICBtYXhFeHByZXNzaW9u
Q29tcGxleGl0eSA9IHJlc291cmNlcy5NYXhFeHByZXNzaW9uQ29tcGxleGl0eTsKICAgICBtYXhD
YWxsU3RhY2tEZXB0aCA9IHJlc291cmNlcy5NYXhDYWxsU3RhY2tEZXB0aDsKLSAgICBUU2NvcGVk
UG9vbEFsbG9jYXRvciBzY29wZWRBbGxvYygmYWxsb2NhdG9yLCBmYWxzZSk7CisKKyAgICBTZXRH
bG9iYWxQb29sQWxsb2NhdG9yKCZhbGxvY2F0b3IpOwogCiAgICAgLy8gR2VuZXJhdGUgYnVpbHQt
aW4gc3ltYm9sIHRhYmxlLgogICAgIGlmICghSW5pdEJ1aWx0SW5TeW1ib2xUYWJsZShyZXNvdXJj
ZXMpKQpAQCAtMTAxLDcgKzExNyw3IEBAIGJvb2wgVENvbXBpbGVyOjpjb21waWxlKGNvbnN0IGNo
YXIqIGNvbnMKICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBudW1TdHJpbmdzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGNvbXBpbGVPcHRpb25zKQogewotICAgIFRTY29wZWRQ
b29sQWxsb2NhdG9yIHNjb3BlZEFsbG9jKCZhbGxvY2F0b3IsIHRydWUpOworICAgIFRTY29wZWRQ
b29sQWxsb2NhdG9yIHNjb3BlZEFsbG9jKCZhbGxvY2F0b3IpOwogICAgIGNsZWFyUmVzdWx0cygp
OwogCiAgICAgaWYgKG51bVN0cmluZ3MgPT0gMCkKQEAgLTEyNSwxNSArMTQxLDExIEBAIGJvb2wg
VENvbXBpbGVyOjpjb21waWxlKGNvbnN0IGNoYXIqIGNvbnMKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaGFkZXJUeXBlLCBzaGFkZXJTcGVjLCBjb21waWxlT3B0aW9ucywgdHJ1ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VQYXRoLCBpbmZvU2luayk7CiAg
ICAgcGFyc2VDb250ZXh0LmZyYWdtZW50UHJlY2lzaW9uSGlnaCA9IGZyYWdtZW50UHJlY2lzaW9u
SGlnaDsKLSAgICBHbG9iYWxQYXJzZUNvbnRleHQgPSAmcGFyc2VDb250ZXh0OworICAgIFNldEds
b2JhbFBhcnNlQ29udGV4dCgmcGFyc2VDb250ZXh0KTsKIAogICAgIC8vIFdlIHByZXNlcnZlIHN5
bWJvbHMgYXQgdGhlIGJ1aWx0LWluIGxldmVsIGZyb20gY29tcGlsZS10by1jb21waWxlLgogICAg
IC8vIFN0YXJ0IHB1c2hpbmcgdGhlIHVzZXItZGVmaW5lZCBzeW1ib2xzIGF0IGdsb2JhbCBsZXZl
bC4KLSAgICBzeW1ib2xUYWJsZS5wdXNoKCk7Ci0gICAgaWYgKCFzeW1ib2xUYWJsZS5hdEdsb2Jh
bExldmVsKCkpIHsKLSAgICAgICAgaW5mb1NpbmsuaW5mby5wcmVmaXgoRVByZWZpeEludGVybmFs
RXJyb3IpOwotICAgICAgICBpbmZvU2luay5pbmZvIDw8ICJXcm9uZyBzeW1ib2wgdGFibGUgbGV2
ZWwiOwotICAgIH0KKyAgICBUU2NvcGVkU3ltYm9sVGFibGVMZXZlbCBzY29wZWRTeW1ib2xMZXZl
bCgmc3ltYm9sVGFibGUpOwogCiAgICAgLy8gUGFyc2Ugc2hhZGVyLgogICAgIGJvb2wgc3VjY2Vz
cyA9CkBAIC0xNzgsOCArMTkwLDE5IEBAIGJvb2wgVENvbXBpbGVyOjpjb21waWxlKGNvbnN0IGNo
YXIqIGNvbnMKICAgICAgICAgaWYgKHN1Y2Nlc3MgJiYgKGNvbXBpbGVPcHRpb25zICYgU0hfTUFQ
X0xPTkdfVkFSSUFCTEVfTkFNRVMpICYmIGhhc2hGdW5jdGlvbiA9PSBOVUxMKQogICAgICAgICAg
ICAgbWFwTG9uZ1ZhcmlhYmxlTmFtZXMocm9vdCk7CiAKLSAgICAgICAgaWYgKHN1Y2Nlc3MgJiYg
KGNvbXBpbGVPcHRpb25zICYgU0hfQVRUUklCVVRFU19VTklGT1JNUykpIHsKLSAgICAgICAgICAg
IGNvbGxlY3RBdHRyaWJzVW5pZm9ybXMocm9vdCk7CisgICAgICAgIGlmIChzdWNjZXNzICYmIHNo
YWRlclR5cGUgPT0gU0hfVkVSVEVYX1NIQURFUiAmJiAoY29tcGlsZU9wdGlvbnMgJiBTSF9JTklU
X0dMX1BPU0lUSU9OKSkgeworICAgICAgICAgICAgSW5pdGlhbGl6ZUdMUG9zaXRpb24gaW5pdEdM
UG9zaXRpb247CisgICAgICAgICAgICByb290LT50cmF2ZXJzZSgmaW5pdEdMUG9zaXRpb24pOwor
ICAgICAgICB9CisKKwlpZiAoc3VjY2VzcyAmJiAoY29tcGlsZU9wdGlvbnMgJiBTSF9VTkZPTERf
U0hPUlRfQ0lSQ1VJVCkpIHsKKyAgICAgICAgICAgIFVuZm9sZFNob3J0Q2lyY3VpdEFTVCB1bmZv
bGRTaG9ydENpcmN1aXQ7CisgICAgICAgICAgICByb290LT50cmF2ZXJzZSgmdW5mb2xkU2hvcnRD
aXJjdWl0KTsKKyAgICAgICAgICAgIHVuZm9sZFNob3J0Q2lyY3VpdC51cGRhdGVUcmVlKCk7CisJ
fQorCisgICAgICAgIGlmIChzdWNjZXNzICYmIChjb21waWxlT3B0aW9ucyAmIFNIX1ZBUklBQkxF
UykpIHsKKyAgICAgICAgICAgIGNvbGxlY3RWYXJpYWJsZXMocm9vdCk7CiAgICAgICAgICAgICBp
ZiAoY29tcGlsZU9wdGlvbnMgJiBTSF9FTkZPUkNFX1BBQ0tJTkdfUkVTVFJJQ1RJT05TKSB7CiAg
ICAgICAgICAgICAgICAgc3VjY2VzcyA9IGVuZm9yY2VQYWNraW5nUmVzdHJpY3Rpb25zKCk7CiAg
ICAgICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7CkBAIC0xOTgsMTAgKzIyMSw2IEBAIGJvb2wg
VENvbXBpbGVyOjpjb21waWxlKGNvbnN0IGNoYXIqIGNvbnMKIAogICAgIC8vIENsZWFudXAgbWVt
b3J5LgogICAgIGludGVybWVkaWF0ZS5yZW1vdmUocGFyc2VDb250ZXh0LnRyZWVSb290KTsKLSAg
ICAvLyBFbnN1cmUgc3ltYm9sIHRhYmxlIGlzIHJldHVybmVkIHRvIHRoZSBidWlsdC1pbiBsZXZl
bCwKLSAgICAvLyB0aHJvd2luZyBhd2F5IGFsbCBidXQgdGhlIGJ1aWx0LWlucy4KLSAgICB3aGls
ZSAoIXN5bWJvbFRhYmxlLmF0QnVpbHRJbkxldmVsKCkpCi0gICAgICAgIHN5bWJvbFRhYmxlLnBv
cCgpOwogCiAgICAgcmV0dXJuIHN1Y2Nlc3M7CiB9CkBAIC0yMjUsNiArMjQ0LDExIEBAIGJvb2wg
VENvbXBpbGVyOjpJbml0QnVpbHRJblN5bWJvbFRhYmxlKGMKICAgICBmbG9hdGluZ1BvaW50Lm1h
dHJpeCA9IGZhbHNlOwogICAgIGZsb2F0aW5nUG9pbnQuYXJyYXkgPSBmYWxzZTsKIAorICAgIFRQ
dWJsaWNUeXBlIHNhbXBsZXI7CisgICAgc2FtcGxlci5zaXplID0gMTsKKyAgICBzYW1wbGVyLm1h
dHJpeCA9IGZhbHNlOworICAgIHNhbXBsZXIuYXJyYXkgPSBmYWxzZTsKKwogICAgIHN3aXRjaChz
aGFkZXJUeXBlKQogICAgIHsKICAgICAgIGNhc2UgU0hfRlJBR01FTlRfU0hBREVSOgpAQCAtMjM2
LDYgKzI2MCwxMyBAQCBib29sIFRDb21waWxlcjo6SW5pdEJ1aWx0SW5TeW1ib2xUYWJsZShjCiAg
ICAgICAgIGJyZWFrOwogICAgICAgZGVmYXVsdDogYXNzZXJ0KGZhbHNlICYmICJMYW5ndWFnZSBu
b3Qgc3VwcG9ydGVkIik7CiAgICAgfQorICAgIC8vIFdlIHNldCBkZWZhdWx0cyBmb3IgYWxsIHRo
ZSBzYW1wbGVyIHR5cGVzLCBldmVuIHRob3NlIHRoYXQgYXJlCisgICAgLy8gb25seSBhdmFpbGFi
bGUgaWYgYW4gZXh0ZW5zaW9uIGV4aXN0cy4KKyAgICBmb3IgKGludCBzYW1wbGVyVHlwZSA9IEVi
dEd1YXJkU2FtcGxlckJlZ2luICsgMTsKKyAgICAgICAgIHNhbXBsZXJUeXBlIDwgRWJ0R3VhcmRT
YW1wbGVyRW5kOyArK3NhbXBsZXJUeXBlKSB7CisgICAgICAgIHNhbXBsZXIudHlwZSA9IHN0YXRp
Y19jYXN0PFRCYXNpY1R5cGU+KHNhbXBsZXJUeXBlKTsKKyAgICAgICAgc3ltYm9sVGFibGUuc2V0
RGVmYXVsdFByZWNpc2lvbihzYW1wbGVyLCBFYnBMb3cpOworICAgIH0KIAogICAgIEluc2VydEJ1
aWx0SW5GdW5jdGlvbnMoc2hhZGVyVHlwZSwgc2hhZGVyU3BlYywgcmVzb3VyY2VzLCBzeW1ib2xU
YWJsZSk7CiAKQEAgLTI1Myw2ICsyODQsNyBAQCB2b2lkIFRDb21waWxlcjo6Y2xlYXJSZXN1bHRz
KCkKIAogICAgIGF0dHJpYnMuY2xlYXIoKTsKICAgICB1bmlmb3Jtcy5jbGVhcigpOworICAgIHZh
cnlpbmdzLmNsZWFyKCk7CiAKICAgICBidWlsdEluRnVuY3Rpb25FbXVsYXRvci5DbGVhbnVwKCk7
CiAKQEAgLTM1OCw5ICszOTAsOSBAQCBib29sIFRDb21waWxlcjo6ZW5mb3JjZVZlcnRleFNoYWRl
clRpbWluCiAgICAgcmV0dXJuIHJlc3RyaWN0b3IubnVtRXJyb3JzKCkgPT0gMDsKIH0KIAotdm9p
ZCBUQ29tcGlsZXI6OmNvbGxlY3RBdHRyaWJzVW5pZm9ybXMoVEludGVybU5vZGUqIHJvb3QpCit2
b2lkIFRDb21waWxlcjo6Y29sbGVjdFZhcmlhYmxlcyhUSW50ZXJtTm9kZSogcm9vdCkKIHsKLSAg
ICBDb2xsZWN0QXR0cmlic1VuaWZvcm1zIGNvbGxlY3QoYXR0cmlicywgdW5pZm9ybXMsIGhhc2hG
dW5jdGlvbik7CisgICAgQ29sbGVjdFZhcmlhYmxlcyBjb2xsZWN0KGF0dHJpYnMsIHVuaWZvcm1z
LCB2YXJ5aW5ncywgaGFzaEZ1bmN0aW9uKTsKICAgICByb290LT50cmF2ZXJzZSgmY29sbGVjdCk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db25zdGFu
dFVuaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL0NvbnN0YW50VW5pb24uaAkocmV2aXNpb24gMTU5MDkwKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbnN0YW50VW5pb24uaAkod29ya2luZyBjb3B5KQpAQCAt
MTEsMTMgKzExLDEzIEBACiAKIGNsYXNzIENvbnN0YW50VW5pb24gewogcHVibGljOgorICAgIFBP
T0xfQUxMT0NBVE9SX05FV19ERUxFVEUoKTsKICAgICBDb25zdGFudFVuaW9uKCkKICAgICB7CiAg
ICAgICAgIGlDb25zdCA9IDA7CiAgICAgICAgIHR5cGUgPSBFYnRWb2lkOwogICAgIH0KIAotICAg
IFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xvYmFsUG9vbEFsbG9jYXRvcikgICAgICAgIAog
ICAgIHZvaWQgc2V0SUNvbnN0KGludCBpKSB7aUNvbnN0ID0gaTsgdHlwZSA9IEVidEludDsgfQog
ICAgIHZvaWQgc2V0RkNvbnN0KGZsb2F0IGYpIHtmQ29uc3QgPSBmOyB0eXBlID0gRWJ0RmxvYXQ7
IH0KICAgICB2b2lkIHNldEJDb25zdChib29sIGIpIHtiQ29uc3QgPSBiOyB0eXBlID0gRWJ0Qm9v
bDsgfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdERp
c2NvbnRpbnVpdHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9EZXRlY3REaXNjb250aW51aXR5LmNwcAkocmV2aXNpb24gMTU5MDkwKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVpdHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw3ICsxMCw3IEBACiAKICNpbmNsdWRlICJjb21waWxl
ci9EZXRlY3REaXNjb250aW51aXR5LmgiCiAKLSNpbmNsdWRlICJjb21waWxlci9QYXJzZUhlbHBl
ci5oIgorI2luY2x1ZGUgImNvbXBpbGVyL1BhcnNlQ29udGV4dC5oIgogCiBuYW1lc3BhY2Ugc2gK
IHsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbmZvU2luay5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbmZv
U2luay5oCShyZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvSW5mb1NpbmsuaAkod29ya2luZyBjb3B5KQpAQCAtOCw2ICs4LDcgQEAKICNkZWZp
bmUgX0lORk9TSU5LX0lOQ0xVREVEXwogCiAjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHN0
ZGxpYi5oPgogI2luY2x1ZGUgImNvbXBpbGVyL0NvbW1vbi5oIgogCiAvLyBSZXR1cm5zIHRoZSBm
cmFjdGlvbmFsIHBhcnQgb2YgdGhlIGdpdmVuIGZsb2F0aW5nLXBvaW50IG51bWJlci4KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Jbml0aWFsaXplRGxsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlh
bGl6ZURsbC5jcHAJKHJldmlzaW9uIDE1OTA5MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9Jbml0aWFsaXplRGxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAsMjUg
KzEwLDggQEAKICNpbmNsdWRlICJjb21waWxlci9Jbml0aWFsaXplUGFyc2VDb250ZXh0LmgiCiAj
aW5jbHVkZSAiY29tcGlsZXIvb3NpbmNsdWRlLmgiCiAKLU9TX1RMU0luZGV4IFRocmVhZEluaXRp
YWxpemVJbmRleCA9IE9TX0lOVkFMSURfVExTX0lOREVYOwotCiBib29sIEluaXRQcm9jZXNzKCkK
IHsKLSAgICBpZiAoVGhyZWFkSW5pdGlhbGl6ZUluZGV4ICE9IE9TX0lOVkFMSURfVExTX0lOREVY
KSB7Ci0gICAgICAgIC8vCi0gICAgICAgIC8vIEZ1bmN0aW9uIGlzIHJlLWVudHJhbnQuCi0gICAg
ICAgIC8vCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIFRocmVhZEluaXRpYWxp
emVJbmRleCA9IE9TX0FsbG9jVExTSW5kZXgoKTsKLQotICAgIGlmIChUaHJlYWRJbml0aWFsaXpl
SW5kZXggPT0gT1NfSU5WQUxJRF9UTFNfSU5ERVgpIHsKLSAgICAgICAgYXNzZXJ0KDAgJiYgIklu
aXRQcm9jZXNzKCk6IEZhaWxlZCB0byBhbGxvY2F0ZSBUTFMgYXJlYSBmb3IgaW5pdCBmbGFnIik7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLQogICAgIGlmICghSW5pdGlhbGl6ZVBv
b2xJbmRleCgpKSB7CiAgICAgICAgIGFzc2VydCgwICYmICJJbml0UHJvY2VzcygpOiBGYWlsZWQg
dG8gaW5pdGFsaXplIGdsb2JhbCBwb29sIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM5
LDc3ICsyMiwxMSBAQCBib29sIEluaXRQcm9jZXNzKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIHJldHVybiBJbml0VGhyZWFkKCk7Ci19Ci0KLWJvb2wgRGV0YWNoUHJvY2Vz
cygpCi17Ci0gICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKLQotICAgIGlmIChUaHJlYWRJbml0aWFs
aXplSW5kZXggPT0gT1NfSU5WQUxJRF9UTFNfSU5ERVgpCi0gICAgICAgIHJldHVybiB0cnVlOwot
Ci0gICAgc3VjY2VzcyA9IERldGFjaFRocmVhZCgpOwotCi0gICAgaWYgKCFGcmVlUGFyc2VDb250
ZXh0SW5kZXgoKSkKLSAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwotCi0gICAgRnJlZVBvb2xJbmRl
eCgpOwotCi0gICAgT1NfRnJlZVRMU0luZGV4KFRocmVhZEluaXRpYWxpemVJbmRleCk7Ci0gICAg
VGhyZWFkSW5pdGlhbGl6ZUluZGV4ID0gT1NfSU5WQUxJRF9UTFNfSU5ERVg7Ci0KLSAgICByZXR1
cm4gc3VjY2VzczsKLX0KLQotYm9vbCBJbml0VGhyZWFkKCkKLXsKLSAgICAvLwotICAgIC8vIFRo
aXMgZnVuY3Rpb24gaXMgcmUtZW50cmFudAotICAgIC8vCi0gICAgaWYgKFRocmVhZEluaXRpYWxp
emVJbmRleCA9PSBPU19JTlZBTElEX1RMU19JTkRFWCkgewotICAgICAgICBhc3NlcnQoMCAmJiAi
SW5pdFRocmVhZCgpOiBQcm9jZXNzIGhhc24ndCBiZWVuIGluaXRhbGlzZWQuIik7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoT1NfR2V0VExTVmFsdWUoVGhyZWFkSW5p
dGlhbGl6ZUluZGV4KSAhPSAwKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIEluaXRpYWxp
emVHbG9iYWxQb29scygpOwotCi0gICAgaWYgKCFJbml0aWFsaXplR2xvYmFsUGFyc2VDb250ZXh0
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghT1NfU2V0VExTVmFsdWUoVGhy
ZWFkSW5pdGlhbGl6ZUluZGV4LCAodm9pZCAqKTEpKSB7Ci0gICAgICAgIGFzc2VydCgwICYmICJJ
bml0VGhyZWFkKCk6IFVuYWJsZSB0byBzZXQgaW5pdCBmbGFnLiIpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRGV0YWNoVGhyZWFk
KCkKK3ZvaWQgRGV0YWNoUHJvY2VzcygpCiB7Ci0gICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKLQot
ICAgIGlmIChUaHJlYWRJbml0aWFsaXplSW5kZXggPT0gT1NfSU5WQUxJRF9UTFNfSU5ERVgpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8KLSAgICAvLyBGdW5jdGlvbiBpcyByZS1lbnRy
YW50IGFuZCB0aGlzIHRocmVhZCBtYXkgbm90IGhhdmUgYmVlbiBpbml0YWxpc2VkLgotICAgIC8v
Ci0gICAgaWYgKE9TX0dldFRMU1ZhbHVlKFRocmVhZEluaXRpYWxpemVJbmRleCkgIT0gMCkgewot
ICAgICAgICBpZiAoIU9TX1NldFRMU1ZhbHVlKFRocmVhZEluaXRpYWxpemVJbmRleCwgKHZvaWQg
KikwKSkgewotICAgICAgICAgICAgYXNzZXJ0KDAgJiYgIkRldGFjaFRocmVhZCgpOiBVbmFibGUg
dG8gY2xlYXIgaW5pdCBmbGFnLiIpOwotICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKCFGcmVlUGFyc2VDb250ZXh0KCkpCi0gICAgICAgICAgICBz
dWNjZXNzID0gZmFsc2U7Ci0KLSAgICAgICAgRnJlZUdsb2JhbFBvb2xzKCk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIHN1Y2Nlc3M7CisgICAgRnJlZVBhcnNlQ29udGV4dEluZGV4KCk7CisgICAgRnJl
ZVBvb2xJbmRleCgpOwogfQotCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvSW5pdGlhbGl6ZURsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9Jbml0aWFsaXplRGxsLmgJKHJldmlzaW9uIDE1OTA5MCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Jbml0aWFsaXplRGxsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTcsMTAgKzcsNyBAQAogI2RlZmluZSBfX0lOSVRJQUxJWkVETExfSAogCiBi
b29sIEluaXRQcm9jZXNzKCk7Ci1ib29sIERldGFjaFByb2Nlc3MoKTsKLQotYm9vbCBJbml0VGhy
ZWFkKCk7Ci1ib29sIERldGFjaFRocmVhZCgpOwordm9pZCBEZXRhY2hQcm9jZXNzKCk7CiAKICNl
bmRpZiAvLyBfX0lOSVRJQUxJWkVETExfSAogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZUdMUG9zaXRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Jbml0aWFsaXplR0xQb3NpdGlvbi5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
SW5pdGlhbGl6ZUdMUG9zaXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjEgQEAK
Ky8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJjb21waWxlci9Jbml0aWFsaXplR0xQb3Np
dGlvbi5oIgorI2luY2x1ZGUgImNvbXBpbGVyL2RlYnVnLmgiCisKK2Jvb2wgSW5pdGlhbGl6ZUdM
UG9zaXRpb246OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlKiBu
b2RlKQoreworICAgIGJvb2wgdmlzaXRDaGlsZHJlbiA9ICFtQ29kZUluc2VydGVkOworICAgIHN3
aXRjaCAobm9kZS0+Z2V0T3AoKSkKKyAgICB7CisgICAgICBjYXNlIEVPcFNlcXVlbmNlOiBicmVh
azsKKyAgICAgIGNhc2UgRU9wRnVuY3Rpb246CisgICAgICB7CisgICAgICAgIC8vIEZ1bmN0aW9u
IGRlZmluaXRpb24uCisgICAgICAgIEFTU0VSVCh2aXNpdCA9PSBQcmVWaXNpdCk7CisgICAgICAg
IGlmIChub2RlLT5nZXROYW1lKCkgPT0gIm1haW4oIikKKyAgICAgICAgeworICAgICAgICAgICAg
VEludGVybVNlcXVlbmNlICZzZXF1ZW5jZSA9IG5vZGUtPmdldFNlcXVlbmNlKCk7CisgICAgICAg
ICAgICBBU1NFUlQoKHNlcXVlbmNlLnNpemUoKSA9PSAxKSB8fCAoc2VxdWVuY2Uuc2l6ZSgpID09
IDIpKTsKKyAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmJvZHkgPSBOVUxMOworICAgICAg
ICAgICAgaWYgKHNlcXVlbmNlLnNpemUoKSA9PSAxKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGJvZHkgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BTZXF1ZW5jZSk7CisgICAgICAg
ICAgICAgICAgc2VxdWVuY2UucHVzaF9iYWNrKGJvZHkpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGJvZHkgPSBzZXF1ZW5j
ZVsxXS0+Z2V0QXNBZ2dyZWdhdGUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VS
VChib2R5KTsKKyAgICAgICAgICAgIGluc2VydENvZGUoYm9keS0+Z2V0U2VxdWVuY2UoKSk7Cisg
ICAgICAgICAgICBtQ29kZUluc2VydGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBicmVh
azsKKyAgICAgIH0KKyAgICAgIGRlZmF1bHQ6IHZpc2l0Q2hpbGRyZW4gPSBmYWxzZTsgYnJlYWs7
CisgICAgfQorICAgIHJldHVybiB2aXNpdENoaWxkcmVuOworfQorCit2b2lkIEluaXRpYWxpemVH
TFBvc2l0aW9uOjppbnNlcnRDb2RlKFRJbnRlcm1TZXF1ZW5jZSYgc2VxdWVuY2UpCit7CisgICAg
VEludGVybUJpbmFyeSAqYmluYXJ5ID0gbmV3IFRJbnRlcm1CaW5hcnkoRU9wQXNzaWduKTsKKyAg
ICBzZXF1ZW5jZS5pbnNlcnQoc2VxdWVuY2UuYmVnaW4oKSwgYmluYXJ5KTsKKworICAgIFRJbnRl
cm1TeW1ib2wgKmxlZnQgPSBuZXcgVEludGVybVN5bWJvbCgKKyAgICAgICAgMCwgImdsX1Bvc2l0
aW9uIiwgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxUG9zaXRpb24sIDQpKTsKKyAg
ICBiaW5hcnktPnNldExlZnQobGVmdCk7CisKKyAgICBDb25zdGFudFVuaW9uICp1ID0gbmV3IENv
bnN0YW50VW5pb25bNF07CisgICAgZm9yIChpbnQgaWkgPSAwOyBpaSA8IDM7ICsraWkpCisgICAg
ICAgIHVbaWldLnNldEZDb25zdCgwLjBmKTsKKyAgICB1WzNdLnNldEZDb25zdCgxLjBmKTsKKyAg
ICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqcmlnaHQgPSBuZXcgVEludGVybUNvbnN0YW50VW5pb24o
CisgICAgICAgIHUsIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0LCA0KSk7
CisgICAgYmluYXJ5LT5zZXRSaWdodChyaWdodCk7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZUdMUG9zaXRpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZUdMUG9zaXRp
b24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9Jbml0aWFsaXplR0xQb3NpdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAK
Ky8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpZm5kZWYgQ09NUElMRVJfSU5JVElBTElaRV9HTF9QT1NJ
VElPTl9IXworI2RlZmluZSBDT01QSUxFUl9JTklUSUFMSVpFX0dMX1BPU0lUSU9OX0hfCisKKyNp
bmNsdWRlICJjb21waWxlci9pbnRlcm1lZGlhdGUuaCIKKworY2xhc3MgSW5pdGlhbGl6ZUdMUG9z
aXRpb24gOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgoreworcHVibGljOgorICAgIEluaXRpYWxp
emVHTFBvc2l0aW9uKCkgOiBtQ29kZUluc2VydGVkKGZhbHNlKSB7IH0KKworcHJvdGVjdGVkOgor
ICAgIHZpcnR1YWwgYm9vbCB2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSog
bm9kZSkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgdmlzaXRVbmFyeShWaXNp
dCB2aXNpdCwgVEludGVybVVuYXJ5KiBub2RlKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgYm9vbCB2aXNpdFNlbGVjdGlvbihWaXNpdCB2aXNpdCwgVEludGVybVNlbGVjdGlvbiogbm9k
ZSkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgdmlzaXRMb29wKFZpc2l0IHZp
c2l0LCBUSW50ZXJtTG9vcCogbm9kZSkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgdmlzaXRCcmFuY2goVmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFuY2gqIG5vZGUpIHsgcmV0dXJu
IGZhbHNlOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQs
IFRJbnRlcm1BZ2dyZWdhdGUqIG5vZGUpOworCitwcml2YXRlOgorICAgIC8vIEluc2VydCBBU1Qg
bm9kZSBpbiB0aGUgYmVnaW5uaW5nIG9mIG1haW4oKSBmb3IgImdsX1Bvc2l0aW9uID0gdmVjNCgw
LjAsIDAuMCwgMC4wLCAxLjApOyIuCisgICAgdm9pZCBpbnNlcnRDb2RlKFRJbnRlcm1TZXF1ZW5j
ZSYgc2VxdWVuY2UpOworCisgICAgYm9vbCBtQ29kZUluc2VydGVkOworfTsKKworI2VuZGlmICAv
LyBDT01QSUxFUl9JTklUSUFMSVpFX0dMX1BPU0lUSU9OX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZUdsb2JhbHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZUdsb2JhbHMu
aAkocmV2aXNpb24gMTU5MDkwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL0luaXRpYWxpemVHbG9iYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTcsOCArNyw2IEBACiAj
aWZuZGVmIF9fSU5JVElBTElaRV9HTE9CQUxTX0lOQ0xVREVEXwogI2RlZmluZSBfX0lOSVRJQUxJ
WkVfR0xPQkFMU19JTkNMVURFRF8KIAotdm9pZCBJbml0aWFsaXplR2xvYmFsUG9vbHMoKTsKLXZv
aWQgRnJlZUdsb2JhbFBvb2xzKCk7CiBib29sIEluaXRpYWxpemVQb29sSW5kZXgoKTsKIHZvaWQg
RnJlZVBvb2xJbmRleCgpOwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemVQYXJzZUNvbnRleHQuY3BwCShy
ZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
SW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyLDg1ICsxMiwy
OSBAQCBPU19UTFNJbmRleCBHbG9iYWxQYXJzZUNvbnRleHRJbmRleCA9IE9TCiAKIGJvb2wgSW5p
dGlhbGl6ZVBhcnNlQ29udGV4dEluZGV4KCkKIHsKLSAgICBpZiAoR2xvYmFsUGFyc2VDb250ZXh0
SW5kZXggIT0gT1NfSU5WQUxJRF9UTFNfSU5ERVgpIHsKLSAgICAgICAgYXNzZXJ0KDAgJiYgIklu
aXRpYWxpemVQYXJzZUNvbnRleHRJbmRleCgpOiBQYXJzZSBDb250ZXh0IGFscmVhZHkgaW5pdGFs
aXplZCIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8KLSAgICAvLyBB
bGxvY2F0ZSBhIFRMUyBpbmRleC4KLSAgICAvLwotICAgIEdsb2JhbFBhcnNlQ29udGV4dEluZGV4
ID0gT1NfQWxsb2NUTFNJbmRleCgpOwotICAgIAotICAgIGlmIChHbG9iYWxQYXJzZUNvbnRleHRJ
bmRleCA9PSBPU19JTlZBTElEX1RMU19JTkRFWCkgewotICAgICAgICBhc3NlcnQoMCAmJiAiSW5p
dGlhbGl6ZVBhcnNlQ29udGV4dEluZGV4KCk6IFBhcnNlIENvbnRleHQgYWxyZWFkeSBpbml0YWxp
emVkIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgYXNzZXJ0KEdsb2JhbFBh
cnNlQ29udGV4dEluZGV4ID09IE9TX0lOVkFMSURfVExTX0lOREVYKTsKIAotICAgIHJldHVybiB0
cnVlOworICAgIEdsb2JhbFBhcnNlQ29udGV4dEluZGV4ID0gT1NfQWxsb2NUTFNJbmRleCgpOwor
ICAgIHJldHVybiBHbG9iYWxQYXJzZUNvbnRleHRJbmRleCAhPSBPU19JTlZBTElEX1RMU19JTkRF
WDsKIH0KIAotYm9vbCBGcmVlUGFyc2VDb250ZXh0SW5kZXgoKQordm9pZCBGcmVlUGFyc2VDb250
ZXh0SW5kZXgoKQogewotICAgIE9TX1RMU0luZGV4IHRsc2lJbmRleCA9IEdsb2JhbFBhcnNlQ29u
dGV4dEluZGV4OwotCi0gICAgaWYgKEdsb2JhbFBhcnNlQ29udGV4dEluZGV4ID09IE9TX0lOVkFM
SURfVExTX0lOREVYKSB7Ci0gICAgICAgIGFzc2VydCgwICYmICJGcmVlUGFyc2VDb250ZXh0SW5k
ZXgoKTogUGFyc2UgQ29udGV4dCBpbmRleCBub3QgaW5pdGFsaXplZCIpOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQorICAgIGFzc2VydChHbG9iYWxQYXJzZUNvbnRleHRJbmRleCAhPSBP
U19JTlZBTElEX1RMU19JTkRFWCk7CiAKKyAgICBPU19GcmVlVExTSW5kZXgoR2xvYmFsUGFyc2VD
b250ZXh0SW5kZXgpOwogICAgIEdsb2JhbFBhcnNlQ29udGV4dEluZGV4ID0gT1NfSU5WQUxJRF9U
TFNfSU5ERVg7Ci0KLSAgICByZXR1cm4gT1NfRnJlZVRMU0luZGV4KHRsc2lJbmRleCk7Ci19Ci0K
LWJvb2wgSW5pdGlhbGl6ZUdsb2JhbFBhcnNlQ29udGV4dCgpCi17Ci0gICAgaWYgKEdsb2JhbFBh
cnNlQ29udGV4dEluZGV4ID09IE9TX0lOVkFMSURfVExTX0lOREVYKSB7Ci0gICAgICAgIGFzc2Vy
dCgwICYmICJJbml0aWFsaXplR2xvYmFsUGFyc2VDb250ZXh0KCk6IFBhcnNlIENvbnRleHQgaW5k
ZXggbm90IGluaXRhbGl6ZWQiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAg
IFRUaHJlYWRQYXJzZUNvbnRleHQgKmxwUGFyc2VDb250ZXh0ID0gc3RhdGljX2Nhc3Q8VFRocmVh
ZFBhcnNlQ29udGV4dCAqPihPU19HZXRUTFNWYWx1ZShHbG9iYWxQYXJzZUNvbnRleHRJbmRleCkp
OwotICAgIGlmIChscFBhcnNlQ29udGV4dCAhPSAwKSB7Ci0gICAgICAgIGFzc2VydCgwICYmICJJ
bml0aWFsaXplUGFyc2VDb250ZXh0SW5kZXgoKTogUGFyc2UgQ29udGV4dCBhbHJlYWR5IGluaXRh
bGl6ZWQiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIFRUaHJlYWRQYXJz
ZUNvbnRleHQgKmxwVGhyZWFkRGF0YSA9IG5ldyBUVGhyZWFkUGFyc2VDb250ZXh0KCk7Ci0gICAg
aWYgKGxwVGhyZWFkRGF0YSA9PSAwKSB7Ci0gICAgICAgIGFzc2VydCgwICYmICJJbml0aWFsaXpl
R2xvYmFsUGFyc2VDb250ZXh0KCk6IFVuYWJsZSB0byBjcmVhdGUgdGhyZWFkIHBhcnNlIGNvbnRl
eHQiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGxwVGhyZWFkRGF0YS0+
bHBHbG9iYWxQYXJzZUNvbnRleHQgPSAwOwotICAgIE9TX1NldFRMU1ZhbHVlKEdsb2JhbFBhcnNl
Q29udGV4dEluZGV4LCBscFRocmVhZERhdGEpOwotCi0gICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgRnJlZVBhcnNlQ29udGV4dCgpCit2b2lkIFNldEdsb2JhbFBhcnNlQ29udGV4dChUUGFyc2VD
b250ZXh0KiBjb250ZXh0KQogewotICAgIGlmIChHbG9iYWxQYXJzZUNvbnRleHRJbmRleCA9PSBP
U19JTlZBTElEX1RMU19JTkRFWCkgewotICAgICAgICBhc3NlcnQoMCAmJiAiRnJlZVBhcnNlQ29u
dGV4dCgpOiBQYXJzZSBDb250ZXh0IGluZGV4IG5vdCBpbml0YWxpemVkIik7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBUVGhyZWFkUGFyc2VDb250ZXh0ICpscFBhcnNlQ29u
dGV4dCA9IHN0YXRpY19jYXN0PFRUaHJlYWRQYXJzZUNvbnRleHQgKj4oT1NfR2V0VExTVmFsdWUo
R2xvYmFsUGFyc2VDb250ZXh0SW5kZXgpKTsKLSAgICBpZiAobHBQYXJzZUNvbnRleHQpCi0gICAg
ICAgIGRlbGV0ZSBscFBhcnNlQ29udGV4dDsKLQotICAgIHJldHVybiB0cnVlOworICAgIGFzc2Vy
dChHbG9iYWxQYXJzZUNvbnRleHRJbmRleCAhPSBPU19JTlZBTElEX1RMU19JTkRFWCk7CisgICAg
T1NfU2V0VExTVmFsdWUoR2xvYmFsUGFyc2VDb250ZXh0SW5kZXgsIGNvbnRleHQpOwogfQogCi1U
UGFyc2VDb250ZXh0UG9pbnRlciYgR2V0R2xvYmFsUGFyc2VDb250ZXh0KCkKK1RQYXJzZUNvbnRl
eHQqIEdldEdsb2JhbFBhcnNlQ29udGV4dCgpCiB7Ci0gICAgLy8KLSAgICAvLyBNaW5pbWFsIGVy
cm9yIGNoZWNraW5nIGZvciBzcGVlZAotICAgIC8vCi0KLSAgICBUVGhyZWFkUGFyc2VDb250ZXh0
ICpscFBhcnNlQ29udGV4dCA9IHN0YXRpY19jYXN0PFRUaHJlYWRQYXJzZUNvbnRleHQgKj4oT1Nf
R2V0VExTVmFsdWUoR2xvYmFsUGFyc2VDb250ZXh0SW5kZXgpKTsKLQotICAgIHJldHVybiBscFBh
cnNlQ29udGV4dC0+bHBHbG9iYWxQYXJzZUNvbnRleHQ7CisgICAgYXNzZXJ0KEdsb2JhbFBhcnNl
Q29udGV4dEluZGV4ICE9IE9TX0lOVkFMSURfVExTX0lOREVYKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8VFBhcnNlQ29udGV4dCo+KE9TX0dldFRMU1ZhbHVlKEdsb2JhbFBhcnNlQ29udGV4dElu
ZGV4KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9J
bml0aWFsaXplUGFyc2VDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemVQYXJzZUNvbnRleHQuaAkocmV2aXNpb24gMTU5
MDkwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemVQ
YXJzZUNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtOCwxOSArOCwxMCBAQAogI2RlZmluZSBf
X0lOSVRJQUxJWkVfUEFSU0VfQ09OVEVYVF9JTkNMVURFRF8KIAogYm9vbCBJbml0aWFsaXplUGFy
c2VDb250ZXh0SW5kZXgoKTsKLWJvb2wgRnJlZVBhcnNlQ29udGV4dEluZGV4KCk7Ci0KLWJvb2wg
SW5pdGlhbGl6ZUdsb2JhbFBhcnNlQ29udGV4dCgpOwotYm9vbCBGcmVlUGFyc2VDb250ZXh0KCk7
Cit2b2lkIEZyZWVQYXJzZUNvbnRleHRJbmRleCgpOwogCiBzdHJ1Y3QgVFBhcnNlQ29udGV4dDsK
LXR5cGVkZWYgVFBhcnNlQ29udGV4dCogVFBhcnNlQ29udGV4dFBvaW50ZXI7Ci1leHRlcm4gVFBh
cnNlQ29udGV4dFBvaW50ZXImIEdldEdsb2JhbFBhcnNlQ29udGV4dCgpOwotI2RlZmluZSBHbG9i
YWxQYXJzZUNvbnRleHQgR2V0R2xvYmFsUGFyc2VDb250ZXh0KCkKLQotdHlwZWRlZiBzdHJ1Y3Qg
VFRocmVhZFBhcnNlQ29udGV4dFJlYwotewotICAgIFRQYXJzZUNvbnRleHQgKmxwR2xvYmFsUGFy
c2VDb250ZXh0OwotfSBUVGhyZWFkUGFyc2VDb250ZXh0OworZXh0ZXJuIHZvaWQgU2V0R2xvYmFs
UGFyc2VDb250ZXh0KFRQYXJzZUNvbnRleHQqIGNvbnRleHQpOworZXh0ZXJuIFRQYXJzZUNvbnRl
eHQqIEdldEdsb2JhbFBhcnNlQ29udGV4dCgpOwogCiAjZW5kaWYgLy8gX19JTklUSUFMSVpFX1BB
UlNFX0NPTlRFWFRfSU5DTFVERURfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvSW50ZXJtVHJhdmVyc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9JbnRlcm1UcmF2ZXJzZS5jcHAJKHJldmlzaW9uIDE1OTA5
MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbnRlcm1UcmF2ZXJz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDI3MSArMjMsMjM3IEBACiAvLwogLy8gVHJhdmVy
c2FsIGZ1bmN0aW9ucyBmb3IgdGVybWluYWxzIGFyZSBzdHJhaWdoZm9yd2FyZC4uLi4KIC8vCi12
b2lkIFRJbnRlcm1TeW1ib2w6OnRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIqIGl0KQordm9pZCBU
SW50ZXJtU3ltYm9sOjp0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyICppdCkKIHsKLQlpdC0+dmlz
aXRTeW1ib2wodGhpcyk7CisgICAgaXQtPnZpc2l0U3ltYm9sKHRoaXMpOwogfQogCi12b2lkIFRJ
bnRlcm1Db25zdGFudFVuaW9uOjp0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyKiBpdCkKK3ZvaWQg
VEludGVybUNvbnN0YW50VW5pb246OnRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIgKml0KQogewot
CWl0LT52aXNpdENvbnN0YW50VW5pb24odGhpcyk7CisgICAgaXQtPnZpc2l0Q29uc3RhbnRVbmlv
bih0aGlzKTsKIH0KIAogLy8KIC8vIFRyYXZlcnNlIGEgYmluYXJ5IG5vZGUuCiAvLwotdm9pZCBU
SW50ZXJtQmluYXJ5Ojp0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyKiBpdCkKK3ZvaWQgVEludGVy
bUJpbmFyeTo6dHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqaXQpCiB7Ci0JYm9vbCB2aXNpdCA9
IHRydWU7CisgICAgYm9vbCB2aXNpdCA9IHRydWU7CiAKLQkvLwotCS8vIHZpc2l0IHRoZSBub2Rl
IGJlZm9yZSBjaGlsZHJlbiBpZiBwcmUtdmlzaXRpbmcuCi0JLy8KLQlpZihpdC0+cHJlVmlzaXQp
Ci0JewotCQl2aXNpdCA9IGl0LT52aXNpdEJpbmFyeShQcmVWaXNpdCwgdGhpcyk7Ci0JfQotCQot
CS8vCi0JLy8gVmlzaXQgdGhlIGNoaWxkcmVuLCBpbiB0aGUgcmlnaHQgb3JkZXIuCi0JLy8KLQlp
Zih2aXNpdCkKLQl7Ci0JCWl0LT5pbmNyZW1lbnREZXB0aCgpOwotCi0JCWlmKGl0LT5yaWdodFRv
TGVmdCkgCi0JCXsKLQkJCWlmKHJpZ2h0KQotCQkJewotCQkJCXJpZ2h0LT50cmF2ZXJzZShpdCk7
Ci0JCQl9Ci0JCQkKLQkJCWlmKGl0LT5pblZpc2l0KQotCQkJewotCQkJCXZpc2l0ID0gaXQtPnZp
c2l0QmluYXJ5KEluVmlzaXQsIHRoaXMpOwotCQkJfQotCi0JCQlpZih2aXNpdCAmJiBsZWZ0KQot
CQkJewotCQkJCWxlZnQtPnRyYXZlcnNlKGl0KTsKLQkJCX0KLQkJfQotCQllbHNlCi0JCXsKLQkJ
CWlmKGxlZnQpCi0JCQl7Ci0JCQkJbGVmdC0+dHJhdmVyc2UoaXQpOwotCQkJfQotCQkJCi0JCQlp
ZihpdC0+aW5WaXNpdCkKLQkJCXsKLQkJCQl2aXNpdCA9IGl0LT52aXNpdEJpbmFyeShJblZpc2l0
LCB0aGlzKTsKLQkJCX0KLQotCQkJaWYodmlzaXQgJiYgcmlnaHQpCi0JCQl7Ci0JCQkJcmlnaHQt
PnRyYXZlcnNlKGl0KTsKLQkJCX0KLQkJfQotCi0JCWl0LT5kZWNyZW1lbnREZXB0aCgpOwotCX0K
LQotCS8vCi0JLy8gVmlzaXQgdGhlIG5vZGUgYWZ0ZXIgdGhlIGNoaWxkcmVuLCBpZiByZXF1ZXN0
ZWQgYW5kIHRoZSB0cmF2ZXJzYWwKLQkvLyBoYXNuJ3QgYmVlbiBjYW5jZWxsZWQgeWV0LgotCS8v
Ci0JaWYodmlzaXQgJiYgaXQtPnBvc3RWaXNpdCkKLQl7Ci0JCWl0LT52aXNpdEJpbmFyeShQb3N0
VmlzaXQsIHRoaXMpOwotCX0KKyAgICAvLworICAgIC8vIHZpc2l0IHRoZSBub2RlIGJlZm9yZSBj
aGlsZHJlbiBpZiBwcmUtdmlzaXRpbmcuCisgICAgLy8KKyAgICBpZiAoaXQtPnByZVZpc2l0KQor
ICAgICAgICB2aXNpdCA9IGl0LT52aXNpdEJpbmFyeShQcmVWaXNpdCwgdGhpcyk7CisgICAgCisg
ICAgLy8KKyAgICAvLyBWaXNpdCB0aGUgY2hpbGRyZW4sIGluIHRoZSByaWdodCBvcmRlci4KKyAg
ICAvLworICAgIGlmICh2aXNpdCkKKyAgICB7CisgICAgICAgIGl0LT5pbmNyZW1lbnREZXB0aCh0
aGlzKTsKKworICAgICAgICBpZiAoaXQtPnJpZ2h0VG9MZWZ0KSAKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHJpZ2h0KQorICAgICAgICAgICAgICAgIHJpZ2h0LT50cmF2ZXJzZShpdCk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChpdC0+aW5WaXNpdCkKKyAgICAgICAgICAgICAg
ICB2aXNpdCA9IGl0LT52aXNpdEJpbmFyeShJblZpc2l0LCB0aGlzKTsKKworICAgICAgICAgICAg
aWYgKHZpc2l0ICYmIGxlZnQpCisgICAgICAgICAgICAgICAgbGVmdC0+dHJhdmVyc2UoaXQpOwor
ICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGxlZnQp
CisgICAgICAgICAgICAgICAgbGVmdC0+dHJhdmVyc2UoaXQpOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBpZiAoaXQtPmluVmlzaXQpCisgICAgICAgICAgICAgICAgdmlzaXQgPSBpdC0+dmlz
aXRCaW5hcnkoSW5WaXNpdCwgdGhpcyk7CisKKyAgICAgICAgICAgIGlmICh2aXNpdCAmJiByaWdo
dCkKKyAgICAgICAgICAgICAgICByaWdodC0+dHJhdmVyc2UoaXQpOworICAgICAgICB9CisKKyAg
ICAgICAgaXQtPmRlY3JlbWVudERlcHRoKCk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBWaXNp
dCB0aGUgbm9kZSBhZnRlciB0aGUgY2hpbGRyZW4sIGlmIHJlcXVlc3RlZCBhbmQgdGhlIHRyYXZl
cnNhbAorICAgIC8vIGhhc24ndCBiZWVuIGNhbmNlbGxlZCB5ZXQuCisgICAgLy8KKyAgICBpZiAo
dmlzaXQgJiYgaXQtPnBvc3RWaXNpdCkKKyAgICAgICAgaXQtPnZpc2l0QmluYXJ5KFBvc3RWaXNp
dCwgdGhpcyk7CiB9CiAKIC8vCiAvLyBUcmF2ZXJzZSBhIHVuYXJ5IG5vZGUuICBTYW1lIGNvbW1l
bnRzIGluIGJpbmFyeSBub2RlIGFwcGx5IGhlcmUuCiAvLwotdm9pZCBUSW50ZXJtVW5hcnk6OnRy
YXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIqIGl0KQordm9pZCBUSW50ZXJtVW5hcnk6OnRyYXZlcnNl
KFRJbnRlcm1UcmF2ZXJzZXIgKml0KQogewotCWJvb2wgdmlzaXQgPSB0cnVlOworICAgIGJvb2wg
dmlzaXQgPSB0cnVlOwogCi0JaWYgKGl0LT5wcmVWaXNpdCkKLQkJdmlzaXQgPSBpdC0+dmlzaXRV
bmFyeShQcmVWaXNpdCwgdGhpcyk7CisgICAgaWYgKGl0LT5wcmVWaXNpdCkKKyAgICAgICAgdmlz
aXQgPSBpdC0+dmlzaXRVbmFyeShQcmVWaXNpdCwgdGhpcyk7CiAKLQlpZiAodmlzaXQpIHsKLQkJ
aXQtPmluY3JlbWVudERlcHRoKCk7Ci0JCW9wZXJhbmQtPnRyYXZlcnNlKGl0KTsKLQkJaXQtPmRl
Y3JlbWVudERlcHRoKCk7Ci0JfQotCQotCWlmICh2aXNpdCAmJiBpdC0+cG9zdFZpc2l0KQotCQlp
dC0+dmlzaXRVbmFyeShQb3N0VmlzaXQsIHRoaXMpOworICAgIGlmICh2aXNpdCkgeworICAgICAg
ICBpdC0+aW5jcmVtZW50RGVwdGgodGhpcyk7CisgICAgICAgIG9wZXJhbmQtPnRyYXZlcnNlKGl0
KTsKKyAgICAgICAgaXQtPmRlY3JlbWVudERlcHRoKCk7CisgICAgfQorICAgIAorICAgIGlmICh2
aXNpdCAmJiBpdC0+cG9zdFZpc2l0KQorICAgICAgICBpdC0+dmlzaXRVbmFyeShQb3N0VmlzaXQs
IHRoaXMpOwogfQogCiAvLwogLy8gVHJhdmVyc2UgYW4gYWdncmVnYXRlIG5vZGUuICBTYW1lIGNv
bW1lbnRzIGluIGJpbmFyeSBub2RlIGFwcGx5IGhlcmUuCiAvLwotdm9pZCBUSW50ZXJtQWdncmVn
YXRlOjp0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyKiBpdCkKK3ZvaWQgVEludGVybUFnZ3JlZ2F0
ZTo6dHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqaXQpCiB7Ci0JYm9vbCB2aXNpdCA9IHRydWU7
Ci0JCi0JaWYoaXQtPnByZVZpc2l0KQotCXsKLQkJdmlzaXQgPSBpdC0+dmlzaXRBZ2dyZWdhdGUo
UHJlVmlzaXQsIHRoaXMpOwotCX0KLQkKLQlpZih2aXNpdCkKLQl7Ci0JCWl0LT5pbmNyZW1lbnRE
ZXB0aCgpOwotCi0JCWlmKGl0LT5yaWdodFRvTGVmdCkKLQkJewotCQkJZm9yKFRJbnRlcm1TZXF1
ZW5jZTo6cmV2ZXJzZV9pdGVyYXRvciBzaXQgPSBzZXF1ZW5jZS5yYmVnaW4oKTsgc2l0ICE9IHNl
cXVlbmNlLnJlbmQoKTsgc2l0KyspCi0JCQl7Ci0JCQkJKCpzaXQpLT50cmF2ZXJzZShpdCk7Ci0K
LQkJCQlpZih2aXNpdCAmJiBpdC0+aW5WaXNpdCkKLQkJCQl7Ci0JCQkJCWlmKCpzaXQgIT0gc2Vx
dWVuY2UuZnJvbnQoKSkKLQkJCQkJewotCQkJCQkJdmlzaXQgPSBpdC0+dmlzaXRBZ2dyZWdhdGUo
SW5WaXNpdCwgdGhpcyk7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCX0KLQkJZWxzZQotCQl7Ci0J
CQlmb3IoVEludGVybVNlcXVlbmNlOjppdGVyYXRvciBzaXQgPSBzZXF1ZW5jZS5iZWdpbigpOyBz
aXQgIT0gc2VxdWVuY2UuZW5kKCk7IHNpdCsrKQotCQkJewotCQkJCSgqc2l0KS0+dHJhdmVyc2Uo
aXQpOwotCi0JCQkJaWYodmlzaXQgJiYgaXQtPmluVmlzaXQpCi0JCQkJewotCQkJCQlpZigqc2l0
ICE9IHNlcXVlbmNlLmJhY2soKSkKLQkJCQkJewotCQkJCQkJdmlzaXQgPSBpdC0+dmlzaXRBZ2dy
ZWdhdGUoSW5WaXNpdCwgdGhpcyk7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCX0KLQkJCi0JCWl0
LT5kZWNyZW1lbnREZXB0aCgpOwotCX0KLQotCWlmKHZpc2l0ICYmIGl0LT5wb3N0VmlzaXQpCi0J
ewotCQlpdC0+dmlzaXRBZ2dyZWdhdGUoUG9zdFZpc2l0LCB0aGlzKTsKLQl9CisgICAgYm9vbCB2
aXNpdCA9IHRydWU7CisgICAgCisgICAgaWYgKGl0LT5wcmVWaXNpdCkKKyAgICAgICAgdmlzaXQg
PSBpdC0+dmlzaXRBZ2dyZWdhdGUoUHJlVmlzaXQsIHRoaXMpOworICAgIAorICAgIGlmICh2aXNp
dCkKKyAgICB7CisgICAgICAgIGl0LT5pbmNyZW1lbnREZXB0aCh0aGlzKTsKKworICAgICAgICBp
ZiAoaXQtPnJpZ2h0VG9MZWZ0KQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKFRJbnRlcm1T
ZXF1ZW5jZTo6cmV2ZXJzZV9pdGVyYXRvciBzaXQgPSBzZXF1ZW5jZS5yYmVnaW4oKTsgc2l0ICE9
IHNlcXVlbmNlLnJlbmQoKTsgc2l0KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
KCpzaXQpLT50cmF2ZXJzZShpdCk7CisKKyAgICAgICAgICAgICAgICBpZiAodmlzaXQgJiYgaXQt
PmluVmlzaXQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpZiAoKnNp
dCAhPSBzZXF1ZW5jZS5mcm9udCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgdmlzaXQgPSBp
dC0+dmlzaXRBZ2dyZWdhdGUoSW5WaXNpdCwgdGhpcyk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAg
ICAgZm9yIChUSW50ZXJtU2VxdWVuY2U6Oml0ZXJhdG9yIHNpdCA9IHNlcXVlbmNlLmJlZ2luKCk7
IHNpdCAhPSBzZXF1ZW5jZS5lbmQoKTsgc2l0KyspCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgKCpzaXQpLT50cmF2ZXJzZShpdCk7CisKKyAgICAgICAgICAgICAgICBpZiAodmlzaXQg
JiYgaXQtPmluVmlzaXQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBp
ZiAoKnNpdCAhPSBzZXF1ZW5jZS5iYWNrKCkpCisgICAgICAgICAgICAgICAgICAgICAgICB2aXNp
dCA9IGl0LT52aXNpdEFnZ3JlZ2F0ZShJblZpc2l0LCB0aGlzKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGl0LT5kZWNyZW1l
bnREZXB0aCgpOworICAgIH0KKworICAgIGlmICh2aXNpdCAmJiBpdC0+cG9zdFZpc2l0KQorICAg
ICAgICBpdC0+dmlzaXRBZ2dyZWdhdGUoUG9zdFZpc2l0LCB0aGlzKTsKIH0KIAogLy8KIC8vIFRy
YXZlcnNlIGEgc2VsZWN0aW9uIG5vZGUuICBTYW1lIGNvbW1lbnRzIGluIGJpbmFyeSBub2RlIGFw
cGx5IGhlcmUuCiAvLwotdm9pZCBUSW50ZXJtU2VsZWN0aW9uOjp0cmF2ZXJzZShUSW50ZXJtVHJh
dmVyc2VyKiBpdCkKK3ZvaWQgVEludGVybVNlbGVjdGlvbjo6dHJhdmVyc2UoVEludGVybVRyYXZl
cnNlciAqaXQpCiB7Ci0JYm9vbCB2aXNpdCA9IHRydWU7CisgICAgYm9vbCB2aXNpdCA9IHRydWU7
CiAKLQlpZiAoaXQtPnByZVZpc2l0KQotCQl2aXNpdCA9IGl0LT52aXNpdFNlbGVjdGlvbihQcmVW
aXNpdCwgdGhpcyk7Ci0JCi0JaWYgKHZpc2l0KSB7Ci0JCWl0LT5pbmNyZW1lbnREZXB0aCgpOwot
CQlpZiAoaXQtPnJpZ2h0VG9MZWZ0KSB7Ci0JCQlpZiAoZmFsc2VCbG9jaykKLQkJCQlmYWxzZUJs
b2NrLT50cmF2ZXJzZShpdCk7Ci0JCQlpZiAodHJ1ZUJsb2NrKQotCQkJCXRydWVCbG9jay0+dHJh
dmVyc2UoaXQpOwotCQkJY29uZGl0aW9uLT50cmF2ZXJzZShpdCk7Ci0JCX0gZWxzZSB7Ci0JCQlj
b25kaXRpb24tPnRyYXZlcnNlKGl0KTsKLQkJCWlmICh0cnVlQmxvY2spCi0JCQkJdHJ1ZUJsb2Nr
LT50cmF2ZXJzZShpdCk7Ci0JCQlpZiAoZmFsc2VCbG9jaykKLQkJCQlmYWxzZUJsb2NrLT50cmF2
ZXJzZShpdCk7Ci0JCX0KLQkJaXQtPmRlY3JlbWVudERlcHRoKCk7Ci0JfQorICAgIGlmIChpdC0+
cHJlVmlzaXQpCisgICAgICAgIHZpc2l0ID0gaXQtPnZpc2l0U2VsZWN0aW9uKFByZVZpc2l0LCB0
aGlzKTsKKyAgICAKKyAgICBpZiAodmlzaXQpIHsKKyAgICAgICAgaXQtPmluY3JlbWVudERlcHRo
KHRoaXMpOworICAgICAgICBpZiAoaXQtPnJpZ2h0VG9MZWZ0KSB7CisgICAgICAgICAgICBpZiAo
ZmFsc2VCbG9jaykKKyAgICAgICAgICAgICAgICBmYWxzZUJsb2NrLT50cmF2ZXJzZShpdCk7Cisg
ICAgICAgICAgICBpZiAodHJ1ZUJsb2NrKQorICAgICAgICAgICAgICAgIHRydWVCbG9jay0+dHJh
dmVyc2UoaXQpOworICAgICAgICAgICAgY29uZGl0aW9uLT50cmF2ZXJzZShpdCk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBjb25kaXRpb24tPnRyYXZlcnNlKGl0KTsKKyAgICAgICAg
ICAgIGlmICh0cnVlQmxvY2spCisgICAgICAgICAgICAgICAgdHJ1ZUJsb2NrLT50cmF2ZXJzZShp
dCk7CisgICAgICAgICAgICBpZiAoZmFsc2VCbG9jaykKKyAgICAgICAgICAgICAgICBmYWxzZUJs
b2NrLT50cmF2ZXJzZShpdCk7CisgICAgICAgIH0KKyAgICAgICAgaXQtPmRlY3JlbWVudERlcHRo
KCk7CisgICAgfQogCi0JaWYgKHZpc2l0ICYmIGl0LT5wb3N0VmlzaXQpCi0JCWl0LT52aXNpdFNl
bGVjdGlvbihQb3N0VmlzaXQsIHRoaXMpOworICAgIGlmICh2aXNpdCAmJiBpdC0+cG9zdFZpc2l0
KQorICAgICAgICBpdC0+dmlzaXRTZWxlY3Rpb24oUG9zdFZpc2l0LCB0aGlzKTsKIH0KIAogLy8K
IC8vIFRyYXZlcnNlIGEgbG9vcCBub2RlLiAgU2FtZSBjb21tZW50cyBpbiBiaW5hcnkgbm9kZSBh
cHBseSBoZXJlLgogLy8KLXZvaWQgVEludGVybUxvb3A6OnRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJz
ZXIqIGl0KQordm9pZCBUSW50ZXJtTG9vcDo6dHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqaXQp
CiB7Ci0JYm9vbCB2aXNpdCA9IHRydWU7CisgICAgYm9vbCB2aXNpdCA9IHRydWU7CisKKyAgICBp
ZiAoaXQtPnByZVZpc2l0KQorICAgICAgICB2aXNpdCA9IGl0LT52aXNpdExvb3AoUHJlVmlzaXQs
IHRoaXMpOworICAgIAorICAgIGlmICh2aXNpdCkKKyAgICB7CisgICAgICAgIGl0LT5pbmNyZW1l
bnREZXB0aCh0aGlzKTsKKworICAgICAgICBpZiAoaXQtPnJpZ2h0VG9MZWZ0KQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAoZXhwcikKKyAgICAgICAgICAgICAgICBleHByLT50cmF2ZXJzZShp
dCk7CisKKyAgICAgICAgICAgIGlmIChib2R5KQorICAgICAgICAgICAgICAgIGJvZHktPnRyYXZl
cnNlKGl0KTsKKworICAgICAgICAgICAgaWYgKGNvbmQpCisgICAgICAgICAgICAgICAgY29uZC0+
dHJhdmVyc2UoaXQpOworCisgICAgICAgICAgICBpZiAoaW5pdCkKKyAgICAgICAgICAgICAgICBp
bml0LT50cmF2ZXJzZShpdCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoaW5pdCkKKyAgICAgICAgICAgICAgICBpbml0LT50cmF2ZXJzZShpdCk7
CisKKyAgICAgICAgICAgIGlmIChjb25kKQorICAgICAgICAgICAgICAgIGNvbmQtPnRyYXZlcnNl
KGl0KTsKKworICAgICAgICAgICAgaWYgKGJvZHkpCisgICAgICAgICAgICAgICAgYm9keS0+dHJh
dmVyc2UoaXQpOworCisgICAgICAgICAgICBpZiAoZXhwcikKKyAgICAgICAgICAgICAgICBleHBy
LT50cmF2ZXJzZShpdCk7CisgICAgICAgIH0KKworICAgICAgICBpdC0+ZGVjcmVtZW50RGVwdGgo
KTsKKyAgICB9CiAKLQlpZihpdC0+cHJlVmlzaXQpCi0JewotCQl2aXNpdCA9IGl0LT52aXNpdExv
b3AoUHJlVmlzaXQsIHRoaXMpOwotCX0KLQkKLQlpZih2aXNpdCkKLQl7Ci0JCWl0LT5pbmNyZW1l
bnREZXB0aCgpOwotCi0JCWlmKGl0LT5yaWdodFRvTGVmdCkKLQkJewotCQkJaWYoZXhwcikKLQkJ
CXsKLQkJCQlleHByLT50cmF2ZXJzZShpdCk7Ci0JCQl9Ci0KLQkJCWlmKGJvZHkpCi0JCQl7Ci0J
CQkJYm9keS0+dHJhdmVyc2UoaXQpOwotCQkJfQotCi0JCQlpZihjb25kKQotCQkJewotCQkJCWNv
bmQtPnRyYXZlcnNlKGl0KTsKLQkJCX0KLQkJfQotCQllbHNlCi0JCXsKLQkJCWlmKGNvbmQpCi0J
CQl7Ci0JCQkJY29uZC0+dHJhdmVyc2UoaXQpOwotCQkJfQotCi0JCQlpZihib2R5KQotCQkJewot
CQkJCWJvZHktPnRyYXZlcnNlKGl0KTsKLQkJCX0KLQotCQkJaWYoZXhwcikKLQkJCXsKLQkJCQll
eHByLT50cmF2ZXJzZShpdCk7Ci0JCQl9Ci0JCX0KLQotCQlpdC0+ZGVjcmVtZW50RGVwdGgoKTsK
LQl9Ci0KLQlpZih2aXNpdCAmJiBpdC0+cG9zdFZpc2l0KQotCXsKLQkJaXQtPnZpc2l0TG9vcChQ
b3N0VmlzaXQsIHRoaXMpOwotCX0KKyAgICBpZiAodmlzaXQgJiYgaXQtPnBvc3RWaXNpdCkKKyAg
ICAgICAgaXQtPnZpc2l0TG9vcChQb3N0VmlzaXQsIHRoaXMpOwogfQogCiAvLwogLy8gVHJhdmVy
c2UgYSBicmFuY2ggbm9kZS4gIFNhbWUgY29tbWVudHMgaW4gYmluYXJ5IG5vZGUgYXBwbHkgaGVy
ZS4KIC8vCi12b2lkIFRJbnRlcm1CcmFuY2g6OnRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIqIGl0
KQordm9pZCBUSW50ZXJtQnJhbmNoOjp0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyICppdCkKIHsK
LQlib29sIHZpc2l0ID0gdHJ1ZTsKKyAgICBib29sIHZpc2l0ID0gdHJ1ZTsKIAotCWlmIChpdC0+
cHJlVmlzaXQpCi0JCXZpc2l0ID0gaXQtPnZpc2l0QnJhbmNoKFByZVZpc2l0LCB0aGlzKTsKLQkK
LQlpZiAodmlzaXQgJiYgZXhwcmVzc2lvbikgewotCQlpdC0+aW5jcmVtZW50RGVwdGgoKTsKLQkJ
ZXhwcmVzc2lvbi0+dHJhdmVyc2UoaXQpOwotCQlpdC0+ZGVjcmVtZW50RGVwdGgoKTsKLQl9Cisg
ICAgaWYgKGl0LT5wcmVWaXNpdCkKKyAgICAgICAgdmlzaXQgPSBpdC0+dmlzaXRCcmFuY2goUHJl
VmlzaXQsIHRoaXMpOworICAgIAorICAgIGlmICh2aXNpdCAmJiBleHByZXNzaW9uKSB7CisgICAg
ICAgIGl0LT5pbmNyZW1lbnREZXB0aCh0aGlzKTsKKyAgICAgICAgZXhwcmVzc2lvbi0+dHJhdmVy
c2UoaXQpOworICAgICAgICBpdC0+ZGVjcmVtZW50RGVwdGgoKTsKKyAgICB9CiAKLQlpZiAodmlz
aXQgJiYgaXQtPnBvc3RWaXNpdCkKLQkJaXQtPnZpc2l0QnJhbmNoKFBvc3RWaXNpdCwgdGhpcyk7
CisgICAgaWYgKHZpc2l0ICYmIGl0LT5wb3N0VmlzaXQpCisgICAgICAgIGl0LT52aXNpdEJyYW5j
aChQb3N0VmlzaXQsIHRoaXMpOwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvSW50ZXJtZWRpYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW50ZXJtZWRpYXRlLmNwcAkocmV2aXNpb24gMTU5MDkw
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0ludGVybWVkaWF0ZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE5LDExICsxOSwxMyBAQAogCiBib29sIENvbXBhcmVTdHJ1
Y3R1cmUoY29uc3QgVFR5cGUmIGxlZnROb2RlVHlwZSwgQ29uc3RhbnRVbmlvbiogcmlnaHRVbmlv
bkFycmF5LCBDb25zdGFudFVuaW9uKiBsZWZ0VW5pb25BcnJheSk7CiAKLXN0YXRpYyBUUHJlY2lz
aW9uIEdldEhpZ2hlclByZWNpc2lvbiggVFByZWNpc2lvbiBsZWZ0LCBUUHJlY2lzaW9uIHJpZ2h0
ICl7CitzdGF0aWMgVFByZWNpc2lvbiBHZXRIaWdoZXJQcmVjaXNpb24oVFByZWNpc2lvbiBsZWZ0
LCBUUHJlY2lzaW9uIHJpZ2h0KQorewogICAgIHJldHVybiBsZWZ0ID4gcmlnaHQgPyBsZWZ0IDog
cmlnaHQ7CiB9CiAKLWNvbnN0IGNoYXIqIGdldE9wZXJhdG9yU3RyaW5nKFRPcGVyYXRvciBvcCkg
eworY29uc3QgY2hhciogZ2V0T3BlcmF0b3JTdHJpbmcoVE9wZXJhdG9yIG9wKQorewogICAgIHN3
aXRjaCAob3ApIHsKICAgICAgIGNhc2UgRU9wSW5pdGlhbGl6ZTogcmV0dXJuICI9IjsKICAgICAg
IGNhc2UgRU9wQXNzaWduOiByZXR1cm4gIj0iOwpAQCAtNzQyLDEyICs3NDQsNjcgQEAgdm9pZCBU
SW50ZXJtZWRpYXRlOjpyZW1vdmUoVEludGVybU5vZGUqIAogLy8KIC8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAorI2RlZmlu
ZSBSRVBMQUNFX0lGX0lTKG5vZGUsIHR5cGUsIG9yaWdpbmFsLCByZXBsYWNlbWVudCkgXAorICAg
IGlmIChub2RlID09IG9yaWdpbmFsKSB7IFwKKyAgICAgICAgbm9kZSA9IHN0YXRpY19jYXN0PHR5
cGUgKj4ocmVwbGFjZW1lbnQpOyBcCisgICAgICAgIHJldHVybiB0cnVlOyBcCisgICAgfQorCiti
b29sIFRJbnRlcm1Mb29wOjpyZXBsYWNlQ2hpbGROb2RlKAorICAgIFRJbnRlcm1Ob2RlICpvcmln
aW5hbCwgVEludGVybU5vZGUgKnJlcGxhY2VtZW50KQoreworICAgIFJFUExBQ0VfSUZfSVMoaW5p
dCwgVEludGVybU5vZGUsIG9yaWdpbmFsLCByZXBsYWNlbWVudCk7CisgICAgUkVQTEFDRV9JRl9J
Uyhjb25kLCBUSW50ZXJtVHlwZWQsIG9yaWdpbmFsLCByZXBsYWNlbWVudCk7CisgICAgUkVQTEFD
RV9JRl9JUyhleHByLCBUSW50ZXJtVHlwZWQsIG9yaWdpbmFsLCByZXBsYWNlbWVudCk7CisgICAg
UkVQTEFDRV9JRl9JUyhib2R5LCBUSW50ZXJtTm9kZSwgb3JpZ2luYWwsIHJlcGxhY2VtZW50KTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgVEludGVybUJyYW5jaDo6cmVwbGFjZUNoaWxk
Tm9kZSgKKyAgICBUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVu
dCkKK3sKKyAgICBSRVBMQUNFX0lGX0lTKGV4cHJlc3Npb24sIFRJbnRlcm1UeXBlZCwgb3JpZ2lu
YWwsIHJlcGxhY2VtZW50KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgVEludGVybUJp
bmFyeTo6cmVwbGFjZUNoaWxkTm9kZSgKKyAgICBUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRl
cm1Ob2RlICpyZXBsYWNlbWVudCkKK3sKKyAgICBSRVBMQUNFX0lGX0lTKGxlZnQsIFRJbnRlcm1U
eXBlZCwgb3JpZ2luYWwsIHJlcGxhY2VtZW50KTsKKyAgICBSRVBMQUNFX0lGX0lTKHJpZ2h0LCBU
SW50ZXJtVHlwZWQsIG9yaWdpbmFsLCByZXBsYWNlbWVudCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIFRJbnRlcm1VbmFyeTo6cmVwbGFjZUNoaWxkTm9kZSgKKyAgICBUSW50ZXJtTm9k
ZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCkKK3sKKyAgICBSRVBMQUNFX0lG
X0lTKG9wZXJhbmQsIFRJbnRlcm1UeXBlZCwgb3JpZ2luYWwsIHJlcGxhY2VtZW50KTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgVEludGVybUFnZ3JlZ2F0ZTo6cmVwbGFjZUNoaWxkTm9k
ZSgKKyAgICBUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCkK
K3sKKyAgICBmb3IgKHNpemVfdCBpaSA9IDA7IGlpIDwgc2VxdWVuY2Uuc2l6ZSgpOyArK2lpKQor
ICAgIHsKKyAgICAgICAgUkVQTEFDRV9JRl9JUyhzZXF1ZW5jZVtpaV0sIFRJbnRlcm1Ob2RlLCBv
cmlnaW5hbCwgcmVwbGFjZW1lbnQpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jv
b2wgVEludGVybVNlbGVjdGlvbjo6cmVwbGFjZUNoaWxkTm9kZSgKKyAgICBUSW50ZXJtTm9kZSAq
b3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCkKK3sKKyAgICBSRVBMQUNFX0lGX0lT
KGNvbmRpdGlvbiwgVEludGVybVR5cGVkLCBvcmlnaW5hbCwgcmVwbGFjZW1lbnQpOworICAgIFJF
UExBQ0VfSUZfSVModHJ1ZUJsb2NrLCBUSW50ZXJtTm9kZSwgb3JpZ2luYWwsIHJlcGxhY2VtZW50
KTsKKyAgICBSRVBMQUNFX0lGX0lTKGZhbHNlQmxvY2ssIFRJbnRlcm1Ob2RlLCBvcmlnaW5hbCwg
cmVwbGFjZW1lbnQpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogLy8KIC8vIFNheSB3aGV0aGVy
IG9yIG5vdCBhbiBvcGVyYXRpb24gbm9kZSBjaGFuZ2VzIHRoZSB2YWx1ZSBvZiBhIHZhcmlhYmxl
LgogLy8KLS8vIFJldHVybnMgdHJ1ZSBpZiBzdGF0ZSBpcyBtb2RpZmllZC4KLS8vCi1ib29sIFRJ
bnRlcm1PcGVyYXRvcjo6bW9kaWZpZXNTdGF0ZSgpIGNvbnN0Citib29sIFRJbnRlcm1PcGVyYXRv
cjo6aXNBc3NpZ25tZW50KCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG9wKSB7CiAgICAgICAgIGNh
c2UgRU9wUG9zdEluY3JlbWVudDoKQEAgLTc5Niw2ICs4NTMsNyBAQCBib29sIFRJbnRlcm1PcGVy
YXRvcjo6aXNDb25zdHJ1Y3RvcigpIGNvCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogfQorCiAvLwogLy8gTWFrZSBzdXJlIHRoZSB0eXBlIG9mIGEgdW5hcnkgb3BlcmF0b3IgaXMg
YXBwcm9wcmlhdGUgZm9yIGl0cwogLy8gY29tYmluYXRpb24gb2Ygb3BlcmF0aW9uIGFuZCBvcGVy
YW5kIHR5cGUuCkBAIC0xMzY2LDE4ICsxNDI0LDE4IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVk
aWF0ZTo6cHJvbW90ZUNvbnMKICAgICBDb25zdGFudFVuaW9uICpsZWZ0VW5pb25BcnJheSA9IG5l
dyBDb25zdGFudFVuaW9uW3NpemVdOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl
OyBpKyspIHsKLQorICAgICAgICBpbnQgaW5kZXggPSBzdGF0aWNfY2FzdDxpbnQ+KGkpOwogICAg
ICAgICBzd2l0Y2ggKHByb21vdGVUbykgewogICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkgewog
ICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKLSAgICAgICAgICAgICAgICAgICAgICAg
IGxlZnRVbmlvbkFycmF5W2ldLnNldEZDb25zdChzdGF0aWNfY2FzdDxmbG9hdD4obm9kZS0+Z2V0
SUNvbnN0KGkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5z
ZXRGQ29uc3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vZGUtPmdldElDb25zdChpbmRleCkpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEVi
dEJvb2w6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRGQ29u
c3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vZGUtPmdldEJDb25zdChpKSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0
Pihub2RlLT5nZXRCQ29uc3QoaW5kZXgpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEZDb25zdChzdGF0aWNfY2FzdDxmbG9hdD4obm9k
ZS0+Z2V0RkNvbnN0KGkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJh
eVtpXS5zZXRGQ29uc3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vZGUtPmdldEZDb25zdChpbmRleCkp
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQ
cmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJDYW5ub3QgcHJvbW90ZSIpOwpA
QCAtMTM4NywxMyArMTQ0NSwxMyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OnByb21v
dGVDb25zCiAgICAgICAgICAgICBjYXNlIEVidEludDoKICAgICAgICAgICAgICAgICBzd2l0Y2gg
KG5vZGUtPmdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkgewogICAgICAgICAgICAgICAgICAgICBj
YXNlIEVidEludDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNl
dElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KG5vZGUtPmdldElDb25zdChpKSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0SUNvbnN0KHN0YXRpY19jYXN0PGlu
dD4obm9kZS0+Z2V0SUNvbnN0KGluZGV4KSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KG5vZGUt
PmdldEJDb25zdChpKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlb
aV0uc2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4obm9kZS0+Z2V0QkNvbnN0KGluZGV4KSkpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
RWJ0RmxvYXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRJ
Q29uc3Qoc3RhdGljX2Nhc3Q8aW50Pihub2RlLT5nZXRGQ29uc3QoaSkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+
KG5vZGUtPmdldEZDb25zdChpbmRleCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAg
aW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5l
KCksICJDYW5ub3QgcHJvbW90ZSIpOwpAQCAtMTQwMywxMyArMTQ2MSwxMyBAQCBUSW50ZXJtVHlw
ZWQqIFRJbnRlcm1lZGlhdGU6OnByb21vdGVDb25zCiAgICAgICAgICAgICBjYXNlIEVidEJvb2w6
CiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5nZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkp
IHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRCQ29uc3Qobm9kZS0+Z2V0SUNvbnN0KGkpICE9IDAp
OworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0QkNvbnN0KG5v
ZGUtPmdldElDb25zdChpbmRleCkgIT0gMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOgotICAgICAgICAgICAgICAgICAg
ICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0QkNvbnN0KG5vZGUtPmdldEJDb25zdChpKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRCQ29uc3Qobm9kZS0+
Z2V0QkNvbnN0KGluZGV4KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxl
ZnRVbmlvbkFycmF5W2ldLnNldEJDb25zdChub2RlLT5nZXRGQ29uc3QoaSkgIT0gMC4wZik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRCQ29uc3Qobm9kZS0+
Z2V0RkNvbnN0KGluZGV4KSAhPSAwLjBmKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAg
aW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5l
KCksICJDYW5ub3QgcHJvbW90ZSIpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL01hcExvbmdWYXJpYWJsZU5hbWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuY3BwCShy
ZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
TWFwTG9uZ1ZhcmlhYmxlTmFtZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsMTMgKzEwMiw2
IEBAIHZvaWQgTWFwTG9uZ1ZhcmlhYmxlTmFtZXM6OnZpc2l0U3ltYm9sKFQKICAgICB9CiB9CiAK
LWJvb2wgTWFwTG9uZ1ZhcmlhYmxlTmFtZXM6OnZpc2l0TG9vcChWaXNpdCwgVEludGVybUxvb3Aq
IG5vZGUpCi17Ci0gICAgaWYgKG5vZGUtPmdldEluaXQoKSkKLSAgICAgICAgbm9kZS0+Z2V0SW5p
dCgpLT50cmF2ZXJzZSh0aGlzKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogVFN0cmluZyBNYXBM
b25nVmFyaWFibGVOYW1lczo6bWFwR2xvYmFsTG9uZ05hbWUoY29uc3QgVFN0cmluZyYgbmFtZSkK
IHsKICAgICBBU1NFUlQobUdsb2JhbE1hcCk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuaAko
cmV2aXNpb24gMTU5MDkwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L01hcExvbmdWYXJpYWJsZU5hbWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAg
cHVibGljOgogICAgIE1hcExvbmdWYXJpYWJsZU5hbWVzKExvbmdOYW1lTWFwKiBnbG9iYWxNYXAp
OwogCiAgICAgdmlydHVhbCB2b2lkIHZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wqKTsKLSAgICB2
aXJ0dWFsIGJvb2wgdmlzaXRMb29wKFZpc2l0LCBUSW50ZXJtTG9vcCopOwogCiBwcml2YXRlOgog
ICAgIFRTdHJpbmcgbWFwR2xvYmFsTG9uZ05hbWUoY29uc3QgVFN0cmluZyYgbmFtZSk7CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvTm9kZVNlYXJjaC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Ob2RlU2VhcmNo
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
Tm9kZVNlYXJjaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzggQEAKKy8vCisvLyBDb3B5
cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisvLyBOb2RlU2VhcmNoLmg6IFV0aWxpdGllcyBmb3Igc2VhcmNoaW5nIHRyYW5zbGF0
b3Igbm9kZSBncmFwaHMKKy8vCisKKyNpZm5kZWYgVFJBTlNMQVRPUl9OT0RFU0VBUkNIX0hfCisj
ZGVmaW5lIFRSQU5TTEFUT1JfTk9ERVNFQVJDSF9IXworCituYW1lc3BhY2Ugc2gKK3sKKwordGVt
cGxhdGUgPGNsYXNzIFBhcmVudD4KK2NsYXNzIE5vZGVTZWFyY2hUcmF2ZXJzZXIgOiBwdWJsaWMg
VEludGVybVRyYXZlcnNlcgoreworICBwdWJsaWM6CisgICAgTm9kZVNlYXJjaFRyYXZlcnNlcigp
CisgICAgICAgIDogbUZvdW5kKGZhbHNlKQorICAgIHt9CisKKyAgICBib29sIGZvdW5kKCkgY29u
c3QgeyByZXR1cm4gbUZvdW5kOyB9CisKKyAgICBzdGF0aWMgYm9vbCBzZWFyY2goVEludGVybU5v
ZGUgKm5vZGUpCisgICAgeworICAgICAgICBQYXJlbnQgc2VhcmNoVHJhdmVyc2VyOworICAgICAg
ICBub2RlLT50cmF2ZXJzZSgmc2VhcmNoVHJhdmVyc2VyKTsKKyAgICAgICAgcmV0dXJuIHNlYXJj
aFRyYXZlcnNlci5mb3VuZCgpOworICAgIH0KKworICBwcm90ZWN0ZWQ6CisgICAgYm9vbCBtRm91
bmQ7Cit9OworCitjbGFzcyBGaW5kRGlzY2FyZCA6IHB1YmxpYyBOb2RlU2VhcmNoVHJhdmVyc2Vy
PEZpbmREaXNjYXJkPgoreworICBwdWJsaWM6CisgICAgdmlydHVhbCBib29sIHZpc2l0QnJhbmNo
KFZpc2l0IHZpc2l0LCBUSW50ZXJtQnJhbmNoICpub2RlKQorICAgIHsKKyAgICAgICAgc3dpdGNo
IChub2RlLT5nZXRGbG93T3AoKSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgRU9wS2lsbDoK
KyAgICAgICAgICAgIG1Gb3VuZCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgIGRlZmF1bHQ6IGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuICFtRm91bmQ7
CisgICAgfQorfTsKKworY2xhc3MgRmluZFNpZGVFZmZlY3RSZXdyaXRpbmcgOiBwdWJsaWMgTm9k
ZVNlYXJjaFRyYXZlcnNlcjxGaW5kU2lkZUVmZmVjdFJld3JpdGluZz4KK3sKKyAgcHVibGljOgor
ICAgIHZpcnR1YWwgYm9vbCB2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAq
bm9kZSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkKKyAgICAgICAgewor
ICAgICAgICAgIGNhc2UgRU9wTG9naWNhbE9yOgorICAgICAgICAgIGNhc2UgRU9wTG9naWNhbEFu
ZDoKKyAgICAgICAgICAgIGlmIChub2RlLT5nZXRSaWdodCgpLT5oYXNTaWRlRWZmZWN0cygpKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1Gb3VuZCA9IHRydWU7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGRlZmF1bHQ6IGJyZWFrOworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuICFtRm91bmQ7CisgICAgfQorfTsKKworfQorCisjZW5k
aWYgLy8gVFJBTlNMQVRPUl9OT0RFU0VBUkNIX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5jcHAJKHJldmlz
aW9uIDE1OTA5MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRw
dXRHTFNMQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzNSw3ICs0MzUsNyBAQCBib29sIFRP
dXRwdXRHTFNMQmFzZTo6dmlzaXRTZWxlY3Rpb24oVmlzCiAgICAgICAgIG5vZGUtPmdldENvbmRp
dGlvbigpLT50cmF2ZXJzZSh0aGlzKTsKICAgICAgICAgb3V0IDw8ICIpXG4iOwogCi0gICAgICAg
IGluY3JlbWVudERlcHRoKCk7CisgICAgICAgIGluY3JlbWVudERlcHRoKG5vZGUpOwogICAgICAg
ICB2aXNpdENvZGVCbG9jayhub2RlLT5nZXRUcnVlQmxvY2soKSk7CiAKICAgICAgICAgaWYgKG5v
ZGUtPmdldEZhbHNlQmxvY2soKSkKQEAgLTQ2MCw3ICs0NjAsNyBAQCBib29sIFRPdXRwdXRHTFNM
QmFzZTo6dmlzaXRBZ2dyZWdhdGUoVmlzCiAgICAgICAgICAgICAvLyBTY29wZSB0aGUgc2VxdWVu
Y2VzIGV4Y2VwdCB3aGVuIGF0IHRoZSBnbG9iYWwgc2NvcGUuCiAgICAgICAgICAgICBpZiAoZGVw
dGggPiAwKSBvdXQgPDwgIntcbiI7CiAKLSAgICAgICAgICAgIGluY3JlbWVudERlcHRoKCk7Cisg
ICAgICAgICAgICBpbmNyZW1lbnREZXB0aChub2RlKTsKICAgICAgICAgICAgIGNvbnN0IFRJbnRl
cm1TZXF1ZW5jZSYgc2VxdWVuY2UgPSBub2RlLT5nZXRTZXF1ZW5jZSgpOwogICAgICAgICAgICAg
Zm9yIChUSW50ZXJtU2VxdWVuY2U6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBzZXF1ZW5jZS5iZWdp
bigpOwogICAgICAgICAgICAgICAgICBpdGVyICE9IHNlcXVlbmNlLmVuZCgpOyArK2l0ZXIpCkBA
IC00OTgsNyArNDk4LDcgQEAgYm9vbCBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0QWdncmVnYXRlKFZp
cwogICAgICAgICAgICAgd3JpdGVWYXJpYWJsZVR5cGUobm9kZS0+Z2V0VHlwZSgpKTsKICAgICAg
ICAgICAgIG91dCA8PCAiICIgPDwgaGFzaEZ1bmN0aW9uTmFtZShub2RlLT5nZXROYW1lKCkpOwog
Ci0gICAgICAgICAgICBpbmNyZW1lbnREZXB0aCgpOworICAgICAgICAgICAgaW5jcmVtZW50RGVw
dGgobm9kZSk7CiAgICAgICAgICAgICAvLyBGdW5jdGlvbiBkZWZpbml0aW9uIG5vZGUgY29udGFp
bnMgb25lIG9yIHR3byBjaGlsZHJlbiBub2RlcwogICAgICAgICAgICAgLy8gcmVwcmVzZW50aW5n
IGZ1bmN0aW9uIHBhcmFtZXRlcnMgYW5kIGZ1bmN0aW9uIGJvZHkuIFRoZSBsYXR0ZXIKICAgICAg
ICAgICAgIC8vIGlzIG5vdCBwcmVzZW50IGluIGNhc2Ugb2YgZW1wdHkgZnVuY3Rpb24gYm9kaWVz
LgpAQCAtNjM4LDcgKzYzOCw3IEBAIGJvb2wgVE91dHB1dEdMU0xCYXNlOjp2aXNpdExvb3AoVmlz
aXQgdmkKIHsKICAgICBUSW5mb1NpbmtCYXNlJiBvdXQgPSBvYmpTaW5rKCk7CiAKLSAgICBpbmNy
ZW1lbnREZXB0aCgpOworICAgIGluY3JlbWVudERlcHRoKG5vZGUpOwogICAgIC8vIExvb3AgaGVh
ZGVyLgogICAgIFRMb29wVHlwZSBsb29wVHlwZSA9IG5vZGUtPmdldFR5cGUoKTsKICAgICBpZiAo
bG9vcFR5cGUgPT0gRUxvb3BGb3IpICAvLyBmb3IgbG9vcApJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmgJKHJldmlz
aW9uIDE1OTA5MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRw
dXRHTFNMQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw3ICsxMSw3IEBACiAKICNpbmNsdWRl
ICJjb21waWxlci9Gb3JMb29wVW5yb2xsLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvaW50ZXJtZWRp
YXRlLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvUGFyc2VIZWxwZXIuaCIKKyNpbmNsdWRlICJjb21w
aWxlci9QYXJzZUNvbnRleHQuaCIKIAogY2xhc3MgVE91dHB1dEdMU0xCYXNlIDogcHVibGljIFRJ
bnRlcm1UcmF2ZXJzZXIKIHsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9PdXRwdXRITFNMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvT3V0cHV0SExTTC5jcHAJKHJldmlzaW9uIDE1OTA5MCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRITFNMLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIsNiArMTIsNyBAQAogI2luY2x1ZGUgImNvbXBpbGVyL0luZm9TaW5rLmgiCiAj
aW5jbHVkZSAiY29tcGlsZXIvU2VhcmNoU3ltYm9sLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvVW5m
b2xkU2hvcnRDaXJjdWl0LmgiCisjaW5jbHVkZSAiY29tcGlsZXIvTm9kZVNlYXJjaC5oIgogCiAj
aW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGNmbG9hdD4KQEAgLTY4LDIyICs2OSwxMSBA
QCBPdXRwdXRITFNMOjpPdXRwdXRITFNMKFRQYXJzZUNvbnRleHQgJmNvCiAgICAgbVVzZXNGYWNl
Zm9yd2FyZDIgPSBmYWxzZTsKICAgICBtVXNlc0ZhY2Vmb3J3YXJkMyA9IGZhbHNlOwogICAgIG1V
c2VzRmFjZWZvcndhcmQ0ID0gZmFsc2U7Ci0gICAgbVVzZXNFcXVhbE1hdDIgPSBmYWxzZTsKLSAg
ICBtVXNlc0VxdWFsTWF0MyA9IGZhbHNlOwotICAgIG1Vc2VzRXF1YWxNYXQ0ID0gZmFsc2U7Ci0g
ICAgbVVzZXNFcXVhbFZlYzIgPSBmYWxzZTsKLSAgICBtVXNlc0VxdWFsVmVjMyA9IGZhbHNlOwot
ICAgIG1Vc2VzRXF1YWxWZWM0ID0gZmFsc2U7Ci0gICAgbVVzZXNFcXVhbElWZWMyID0gZmFsc2U7
Ci0gICAgbVVzZXNFcXVhbElWZWMzID0gZmFsc2U7Ci0gICAgbVVzZXNFcXVhbElWZWM0ID0gZmFs
c2U7Ci0gICAgbVVzZXNFcXVhbEJWZWMyID0gZmFsc2U7Ci0gICAgbVVzZXNFcXVhbEJWZWMzID0g
ZmFsc2U7Ci0gICAgbVVzZXNFcXVhbEJWZWM0ID0gZmFsc2U7CiAgICAgbVVzZXNBdGFuMl8xID0g
ZmFsc2U7CiAgICAgbVVzZXNBdGFuMl8yID0gZmFsc2U7CiAgICAgbVVzZXNBdGFuMl8zID0gZmFs
c2U7CiAgICAgbVVzZXNBdGFuMl80ID0gZmFsc2U7CisgICAgbVVzZXNEaXNjYXJkUmV3cml0aW5n
ID0gZmFsc2U7CiAKICAgICBtTnVtUmVuZGVyVGFyZ2V0cyA9IHJlc291cmNlcy5FWFRfZHJhd19i
dWZmZXJzID8gcmVzb3VyY2VzLk1heERyYXdCdWZmZXJzIDogMTsKIApAQCAtMjA4LDYgKzE5OCwx
MSBAQCB2b2lkIE91dHB1dEhMU0w6OmhlYWRlcigpCiAgICAgICAgIGF0dHJpYnV0ZXMgKz0gInN0
YXRpYyAiICsgdHlwZVN0cmluZyh0eXBlKSArICIgIiArIGRlY29yYXRlKG5hbWUpICsgYXJyYXlT
dHJpbmcodHlwZSkgKyAiID0gIiArIGluaXRpYWxpemVyKHR5cGUpICsgIjtcbiI7CiAgICAgfQog
CisgICAgaWYgKG1Vc2VzRGlzY2FyZFJld3JpdGluZykKKyAgICB7CisgICAgICAgIG91dCA8PCAi
I2RlZmluZSBBTkdMRV9VU0VTX0RJU0NBUkRfUkVXUklUSU5HIiA8PCAiXG4iOworICAgIH0KKwog
ICAgIGlmIChzaGFkZXJUeXBlID09IFNIX0ZSQUdNRU5UX1NIQURFUikKICAgICB7CiAgICAgICAg
IFRFeHRlbnNpb25CZWhhdmlvcjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1Db250ZXh0LmV4dGVu
c2lvbkJlaGF2aW9yKCkuZmluZCgiR0xfRVhUX2RyYXdfYnVmZmVycyIpOwpAQCAtOTk2LDEwOCAr
OTkxLDYgQEAgdm9pZCBPdXRwdXRITFNMOjpoZWFkZXIoKQogICAgICAgICAgICAgICAgIlxuIjsK
ICAgICB9CiAKLSAgICBpZiAobVVzZXNFcXVhbE1hdDIpCi0gICAgewotICAgICAgICBvdXQgPDwg
ImJvb2wgZXF1YWwoZmxvYXQyeDIgbSwgZmxvYXQyeDIgbilcbiIKLSAgICAgICAgICAgICAgICJ7
XG4iCi0gICAgICAgICAgICAgICAiICAgIHJldHVybiBtWzBdWzBdID09IG5bMF1bMF0gJiYgbVsw
XVsxXSA9PSBuWzBdWzFdICYmXG4iCi0gICAgICAgICAgICAgICAiICAgICAgICAgICBtWzFdWzBd
ID09IG5bMV1bMF0gJiYgbVsxXVsxXSA9PSBuWzFdWzFdO1xuIgotICAgICAgICAgICAgICAgIn1c
biI7Ci0gICAgfQotCi0gICAgaWYgKG1Vc2VzRXF1YWxNYXQzKQotICAgIHsKLSAgICAgICAgb3V0
IDw8ICJib29sIGVxdWFsKGZsb2F0M3gzIG0sIGZsb2F0M3gzIG4pXG4iCi0gICAgICAgICAgICAg
ICAie1xuIgotICAgICAgICAgICAgICAgIiAgICByZXR1cm4gbVswXVswXSA9PSBuWzBdWzBdICYm
IG1bMF1bMV0gPT0gblswXVsxXSAmJiBtWzBdWzJdID09IG5bMF1bMl0gJiZcbiIKLSAgICAgICAg
ICAgICAgICIgICAgICAgICAgIG1bMV1bMF0gPT0gblsxXVswXSAmJiBtWzFdWzFdID09IG5bMV1b
MV0gJiYgbVsxXVsyXSA9PSBuWzFdWzJdICYmXG4iCi0gICAgICAgICAgICAgICAiICAgICAgICAg
ICBtWzJdWzBdID09IG5bMl1bMF0gJiYgbVsyXVsxXSA9PSBuWzJdWzFdICYmIG1bMl1bMl0gPT0g
blsyXVsyXTtcbiIKLSAgICAgICAgICAgICAgICJ9XG4iOwotICAgIH0KLQotICAgIGlmIChtVXNl
c0VxdWFsTWF0NCkKLSAgICB7Ci0gICAgICAgIG91dCA8PCAiYm9vbCBlcXVhbChmbG9hdDR4NCBt
LCBmbG9hdDR4NCBuKVxuIgotICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICIg
ICAgcmV0dXJuIG1bMF1bMF0gPT0gblswXVswXSAmJiBtWzBdWzFdID09IG5bMF1bMV0gJiYgbVsw
XVsyXSA9PSBuWzBdWzJdICYmIG1bMF1bM10gPT0gblswXVszXSAmJlxuIgotICAgICAgICAgICAg
ICAgIiAgICAgICAgICAgbVsxXVswXSA9PSBuWzFdWzBdICYmIG1bMV1bMV0gPT0gblsxXVsxXSAm
JiBtWzFdWzJdID09IG5bMV1bMl0gJiYgbVsxXVszXSA9PSBuWzFdWzNdICYmXG4iCi0gICAgICAg
ICAgICAgICAiICAgICAgICAgICBtWzJdWzBdID09IG5bMl1bMF0gJiYgbVsyXVsxXSA9PSBuWzJd
WzFdICYmIG1bMl1bMl0gPT0gblsyXVsyXSAmJiBtWzJdWzNdID09IG5bMl1bM10gJiZcbiIKLSAg
ICAgICAgICAgICAgICIgICAgICAgICAgIG1bM11bMF0gPT0gblszXVswXSAmJiBtWzNdWzFdID09
IG5bM11bMV0gJiYgbVszXVsyXSA9PSBuWzNdWzJdICYmIG1bM11bM10gPT0gblszXVszXTtcbiIK
LSAgICAgICAgICAgICAgICJ9XG4iOwotICAgIH0KLQotICAgIGlmIChtVXNlc0VxdWFsVmVjMikK
LSAgICB7Ci0gICAgICAgIG91dCA8PCAiYm9vbCBlcXVhbChmbG9hdDIgdiwgZmxvYXQyIHUpXG4i
Ci0gICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdi54ID09
IHUueCAmJiB2LnkgPT0gdS55O1xuIgotICAgICAgICAgICAgICAgIn1cbiI7Ci0gICAgfQotCi0g
ICAgaWYgKG1Vc2VzRXF1YWxWZWMzKQotICAgIHsKLSAgICAgICAgb3V0IDw8ICJib29sIGVxdWFs
KGZsb2F0MyB2LCBmbG9hdDMgdSlcbiIKLSAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAg
ICAgICAiICAgIHJldHVybiB2LnggPT0gdS54ICYmIHYueSA9PSB1LnkgJiYgdi56ID09IHUuejtc
biIKLSAgICAgICAgICAgICAgICJ9XG4iOwotICAgIH0KLQotICAgIGlmIChtVXNlc0VxdWFsVmVj
NCkKLSAgICB7Ci0gICAgICAgIG91dCA8PCAiYm9vbCBlcXVhbChmbG9hdDQgdiwgZmxvYXQ0IHUp
XG4iCi0gICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdi54
ID09IHUueCAmJiB2LnkgPT0gdS55ICYmIHYueiA9PSB1LnogJiYgdi53ID09IHUudztcbiIKLSAg
ICAgICAgICAgICAgICJ9XG4iOwotICAgIH0KLQotICAgIGlmIChtVXNlc0VxdWFsSVZlYzIpCi0g
ICAgewotICAgICAgICBvdXQgPDwgImJvb2wgZXF1YWwoaW50MiB2LCBpbnQyIHUpXG4iCi0gICAg
ICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdi54ID09IHUueCAm
JiB2LnkgPT0gdS55O1xuIgotICAgICAgICAgICAgICAgIn1cbiI7Ci0gICAgfQotCi0gICAgaWYg
KG1Vc2VzRXF1YWxJVmVjMykKLSAgICB7Ci0gICAgICAgIG91dCA8PCAiYm9vbCBlcXVhbChpbnQz
IHYsIGludDMgdSlcbiIKLSAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAiICAg
IHJldHVybiB2LnggPT0gdS54ICYmIHYueSA9PSB1LnkgJiYgdi56ID09IHUuejtcbiIKLSAgICAg
ICAgICAgICAgICJ9XG4iOwotICAgIH0KLQotICAgIGlmIChtVXNlc0VxdWFsSVZlYzQpCi0gICAg
ewotICAgICAgICBvdXQgPDwgImJvb2wgZXF1YWwoaW50NCB2LCBpbnQ0IHUpXG4iCi0gICAgICAg
ICAgICAgICAie1xuIgotICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdi54ID09IHUueCAmJiB2
LnkgPT0gdS55ICYmIHYueiA9PSB1LnogJiYgdi53ID09IHUudztcbiIKLSAgICAgICAgICAgICAg
ICJ9XG4iOwotICAgIH0KLQotICAgIGlmIChtVXNlc0VxdWFsQlZlYzIpCi0gICAgewotICAgICAg
ICBvdXQgPDwgImJvb2wgZXF1YWwoYm9vbDIgdiwgYm9vbDIgdSlcbiIKLSAgICAgICAgICAgICAg
ICJ7XG4iCi0gICAgICAgICAgICAgICAiICAgIHJldHVybiB2LnggPT0gdS54ICYmIHYueSA9PSB1
Lnk7XG4iCi0gICAgICAgICAgICAgICAifVxuIjsKLSAgICB9Ci0KLSAgICBpZiAobVVzZXNFcXVh
bEJWZWMzKQotICAgIHsKLSAgICAgICAgb3V0IDw8ICJib29sIGVxdWFsKGJvb2wzIHYsIGJvb2wz
IHUpXG4iCi0gICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAgIiAgICByZXR1cm4g
di54ID09IHUueCAmJiB2LnkgPT0gdS55ICYmIHYueiA9PSB1Lno7XG4iCi0gICAgICAgICAgICAg
ICAifVxuIjsKLSAgICB9Ci0KLSAgICBpZiAobVVzZXNFcXVhbEJWZWM0KQotICAgIHsKLSAgICAg
ICAgb3V0IDw8ICJib29sIGVxdWFsKGJvb2w0IHYsIGJvb2w0IHUpXG4iCi0gICAgICAgICAgICAg
ICAie1xuIgotICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdi54ID09IHUueCAmJiB2LnkgPT0g
dS55ICYmIHYueiA9PSB1LnogJiYgdi53ID09IHUudztcbiIKLSAgICAgICAgICAgICAgICJ9XG4i
OwotICAgIH0KLQogICAgIGlmIChtVXNlc0F0YW4yXzEpCiAgICAgewogICAgICAgICBvdXQgPDwg
ImZsb2F0IGF0YW55eChmbG9hdCB5LCBmbG9hdCB4KVxuIgpAQCAtMTM5MSw1OSArMTI4NCwxNSBA
QCBib29sIE91dHB1dEhMU0w6OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0CiAgICAgICAgIH0KICAg
ICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobm9kZS0+Z2V0TGVmdCgpLT5p
c01hdHJpeCgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+
Z2V0TGVmdCgpLT5nZXROb21pbmFsU2l6ZSgpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgIGNhc2UgMjogbVVzZXNFcXVhbE1hdDIgPSB0cnVlOyBicmVhazsKLSAgICAgICAg
ICAgICAgICAgIGNhc2UgMzogbVVzZXNFcXVhbE1hdDMgPSB0cnVlOyBicmVhazsKLSAgICAgICAg
ICAgICAgICAgIGNhc2UgNDogbVVzZXNFcXVhbE1hdDQgPSB0cnVlOyBicmVhazsKLSAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Z2V0TGVmdCgpLT5pc1ZlY3Rv
cigpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0TGVm
dCgpLT5nZXRCYXNpY1R5cGUoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICBjYXNlIEVidEZsb2F0OgotICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmdldExl
ZnQoKS0+Z2V0Tm9taW5hbFNpemUoKSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgMjogbVVzZXNFcXVhbFZlYzIgPSB0cnVlOyBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgICBjYXNlIDM6IG1Vc2VzRXF1YWxWZWMzID0gdHJ1ZTsgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiBtVXNlc0VxdWFsVmVjNCA9IHRydWU7IGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICBjYXNlIEVidEludDoKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5nZXRM
ZWZ0KCktPmdldE5vbWluYWxTaXplKCkpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICBjYXNlIDI6IG1Vc2VzRXF1YWxJVmVjMiA9IHRydWU7IGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgMzogbVVzZXNFcXVhbElWZWMzID0gdHJ1ZTsgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiBtVXNlc0VxdWFsSVZlYzQgPSB0cnVlOyBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgY2FzZSBFYnRCb29sOgotICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUt
PmdldExlZnQoKS0+Z2V0Tm9taW5hbFNpemUoKSkKLSAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgMjogbVVzZXNFcXVhbEJWZWMyID0gdHJ1ZTsgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiBtVXNlc0VxdWFsQlZlYzMgPSB0cnVlOyBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IG1Vc2VzRXF1YWxCVmVjNCA9IHRy
dWU7IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
ICAgIEFTU0VSVChub2RlLT5nZXRMZWZ0KCktPmlzTWF0cml4KCkgfHwgbm9kZS0+Z2V0TGVmdCgp
LT5pc1ZlY3RvcigpKTsKIAogICAgICAgICAgICAgaWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wRXF1
YWwpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwg
ImVxdWFsKCIsICIsICIsICIpIik7CisgICAgICAgICAgICAgICAgb3V0cHV0VHJpcGxldCh2aXNp
dCwgImFsbCgiLCAiID09ICIsICIpIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgIiFl
cXVhbCgiLCAiLCAiLCAiKSIpOworICAgICAgICAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQs
ICIhYWxsKCIsICIgPT0gIiwgIikiKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg
ICBicmVhazsKQEAgLTE0NTcsMTUgKzEzMDYsMzEgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEJp
bmFyeShWaXNpdCB2aXNpdAogICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1ZlY3Rvcjogb3V0cHV0
VHJpcGxldCh2aXNpdCwgIm11bCh0cmFuc3Bvc2UoIiwgIiksICIsICIpIik7IGJyZWFrOwogICAg
ICAgY2FzZSBFT3BNYXRyaXhUaW1lc01hdHJpeDogb3V0cHV0VHJpcGxldCh2aXNpdCwgInRyYW5z
cG9zZShtdWwodHJhbnNwb3NlKCIsICIpLCB0cmFuc3Bvc2UoIiwgIikpKSIpOyBicmVhazsKICAg
ICAgIGNhc2UgRU9wTG9naWNhbE9yOgotICAgICAgICBvdXQgPDwgInMiIDw8IG1VbmZvbGRTaG9y
dENpcmN1aXQtPmdldE5leHRUZW1wb3JhcnlJbmRleCgpOwotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIGlmIChub2RlLT5nZXRSaWdodCgpLT5oYXNTaWRlRWZmZWN0cygpKQorICAgICAg
ICB7CisgICAgICAgICAgICBvdXQgPDwgInMiIDw8IG1VbmZvbGRTaG9ydENpcmN1aXQtPmdldE5l
eHRUZW1wb3JhcnlJbmRleCgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0
LCAiKCIsICIgfHwgIiwgIikiKTsKKyAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
ICAgICAgIGNhc2UgRU9wTG9naWNhbFhvcjoKICAgICAgICAgbVVzZXNYb3IgPSB0cnVlOwogICAg
ICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAieG9yKCIsICIsICIsICIpIik7CiAgICAgICAgIGJy
ZWFrOwogICAgICAgY2FzZSBFT3BMb2dpY2FsQW5kOgotICAgICAgICBvdXQgPDwgInMiIDw8IG1V
bmZvbGRTaG9ydENpcmN1aXQtPmdldE5leHRUZW1wb3JhcnlJbmRleCgpOwotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGlmIChub2RlLT5nZXRSaWdodCgpLT5oYXNTaWRlRWZmZWN0cygp
KQorICAgICAgICB7CisgICAgICAgICAgICBvdXQgPDwgInMiIDw8IG1VbmZvbGRTaG9ydENpcmN1
aXQtPmdldE5leHRUZW1wb3JhcnlJbmRleCgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICBvdXRwdXRUcmlw
bGV0KHZpc2l0LCAiKCIsICIgJiYgIiwgIikiKTsKKyAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CiAgICAgfQogCkBAIC0yMTAy
LDcgKzE5NjcsNyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0U2VsZWN0aW9uKFZpc2l0IHZpCiAg
ICAgewogICAgICAgICBtVW5mb2xkU2hvcnRDaXJjdWl0LT50cmF2ZXJzZShub2RlLT5nZXRDb25k
aXRpb24oKSk7CiAKLSAgICAgICAgb3V0IDw8ICJpZigiOworICAgICAgICBvdXQgPDwgImlmICgi
OwogCiAgICAgICAgIG5vZGUtPmdldENvbmRpdGlvbigpLT50cmF2ZXJzZSh0aGlzKTsKIApAQCAt
MjExMSw5ICsxOTc2LDE0IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRTZWxlY3Rpb24oVmlzaXQg
dmkKICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkuZmlyc3RfbGlu
ZSk7CiAgICAgICAgIG91dCA8PCAie1xuIjsKIAorICAgICAgICBib29sIGRpc2NhcmQgPSBmYWxz
ZTsKKwogICAgICAgICBpZiAobm9kZS0+Z2V0VHJ1ZUJsb2NrKCkpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHRyYXZlcnNlU3RhdGVtZW50cyhub2RlLT5nZXRUcnVlQmxvY2soKSk7CisKKyAgICAg
ICAgICAgIC8vIERldGVjdCB0cnVlIGRpc2NhcmQKKyAgICAgICAgICAgIGRpc2NhcmQgPSAoZGlz
Y2FyZCB8fCBGaW5kRGlzY2FyZDo6c2VhcmNoKG5vZGUtPmdldFRydWVCbG9jaygpKSk7CiAgICAg
ICAgIH0KIAogICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJz
dF9saW5lKTsKQEAgLTIxMzEsNiArMjAwMSwxNSBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0U2Vs
ZWN0aW9uKFZpc2l0IHZpCiAKICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+
Z2V0RmFsc2VCbG9jaygpLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgICAgICBvdXQg
PDwgIjtcbn1cbiI7CisKKyAgICAgICAgICAgIC8vIERldGVjdCBmYWxzZSBkaXNjYXJkCisgICAg
ICAgICAgICBkaXNjYXJkID0gKGRpc2NhcmQgfHwgRmluZERpc2NhcmQ6OnNlYXJjaChub2RlLT5n
ZXRGYWxzZUJsb2NrKCkpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEFOR0xFIGlzc3VlIDQ4
NjogRGV0ZWN0IHByb2JsZW1hdGljIGNvbmRpdGlvbmFsIGRpc2NhcmQKKyAgICAgICAgaWYgKGRp
c2NhcmQgJiYgRmluZFNpZGVFZmZlY3RSZXdyaXRpbmc6OnNlYXJjaChub2RlKSkKKyAgICAgICAg
eworICAgICAgICAgICAgbVVzZXNEaXNjYXJkUmV3cml0aW5nID0gdHJ1ZTsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtMjIyOCw3ICsyMTA3LDkgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEJyYW5j
aChWaXNpdCB2aXNpdAogCiAgICAgc3dpdGNoIChub2RlLT5nZXRGbG93T3AoKSkKICAgICB7Ci0g
ICAgICBjYXNlIEVPcEtpbGw6ICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiZGlzY2FyZDtcbiIs
ICIiLCAiIik7ICBicmVhazsKKyAgICAgIGNhc2UgRU9wS2lsbDoKKyAgICAgICAgb3V0cHV0VHJp
cGxldCh2aXNpdCwgImRpc2NhcmQ7XG4iLCAiIiwgIiIpOworICAgICAgICBicmVhazsKICAgICAg
IGNhc2UgRU9wQnJlYWs6CiAgICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkKICAgICAgICAg
ewpAQCAtMjQ1MSw3ICsyMzMyLDcgQEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVM
b29wKFRJbgogCiAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdExvb3BGcmFnbWVudCkKICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIG91dCA8PCAiaWYoIUJyZWFrIjsKKyAg
ICAgICAgICAgICAgICAgICAgb3V0IDw8ICJpZiAoIUJyZWFrIjsKICAgICAgICAgICAgICAgICAg
ICAgaW5kZXgtPnRyYXZlcnNlKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIikg
e1xuIjsKICAgICAgICAgICAgICAgICB9CkBAIC0yODYzLDcgKzI3NDQsNyBAQCB2b2lkIE91dHB1
dEhMU0w6OmFkZENvbnN0cnVjdG9yKGNvbnN0IFRUCiAgICAgICAgICAgICBjb25zdCBzaXplX3Qg
cGFyYW1ldGVyU2l6ZSA9IHBhcmFtZXRlci5nZXRPYmplY3RTaXplKCk7CiAgICAgICAgICAgICBi
b29sIG1vcmVQYXJhbWV0ZXJzID0gcGFyYW1ldGVySW5kZXggKyAxIDwgY3RvclBhcmFtZXRlcnMu
c2l6ZSgpOwogCi0gICAgICAgICAgICBjb25zdHJ1Y3RvciArPSAieCIgKyBzdHIocGFyYW1ldGVy
SW5kZXgpOworICAgICAgICAgICAgY29uc3RydWN0b3IgKz0gIngiICsgc3RyKHN0YXRpY19jYXN0
PGludD4ocGFyYW1ldGVySW5kZXgpKTsKIAogICAgICAgICAgICAgaWYgKHBhcmFtZXRlci5pc1Nj
YWxhcigpKQogICAgICAgICAgICAgewpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL091dHB1dEhMU0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0SExTTC5oCShyZXZpc2lvbiAxNTkwOTApCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0SExTTC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNSw3ICsxNSw3IEBACiAjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CiAKICNpbmNsdWRl
ICJjb21waWxlci9pbnRlcm1lZGlhdGUuaCIKLSNpbmNsdWRlICJjb21waWxlci9QYXJzZUhlbHBl
ci5oIgorI2luY2x1ZGUgImNvbXBpbGVyL1BhcnNlQ29udGV4dC5oIgogI2luY2x1ZGUgImNvbXBp
bGVyL1VuaWZvcm0uaCIKIAogbmFtZXNwYWNlIHNoCkBAIC0xMjEsMjIgKzEyMSwxMSBAQCBjbGFz
cyBPdXRwdXRITFNMIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzCiAgICAgYm9vbCBtVXNlc0ZhY2Vm
b3J3YXJkMjsKICAgICBib29sIG1Vc2VzRmFjZWZvcndhcmQzOwogICAgIGJvb2wgbVVzZXNGYWNl
Zm9yd2FyZDQ7Ci0gICAgYm9vbCBtVXNlc0VxdWFsTWF0MjsKLSAgICBib29sIG1Vc2VzRXF1YWxN
YXQzOwotICAgIGJvb2wgbVVzZXNFcXVhbE1hdDQ7Ci0gICAgYm9vbCBtVXNlc0VxdWFsVmVjMjsK
LSAgICBib29sIG1Vc2VzRXF1YWxWZWMzOwotICAgIGJvb2wgbVVzZXNFcXVhbFZlYzQ7Ci0gICAg
Ym9vbCBtVXNlc0VxdWFsSVZlYzI7Ci0gICAgYm9vbCBtVXNlc0VxdWFsSVZlYzM7Ci0gICAgYm9v
bCBtVXNlc0VxdWFsSVZlYzQ7Ci0gICAgYm9vbCBtVXNlc0VxdWFsQlZlYzI7Ci0gICAgYm9vbCBt
VXNlc0VxdWFsQlZlYzM7Ci0gICAgYm9vbCBtVXNlc0VxdWFsQlZlYzQ7CiAgICAgYm9vbCBtVXNl
c0F0YW4yXzE7CiAgICAgYm9vbCBtVXNlc0F0YW4yXzI7CiAgICAgYm9vbCBtVXNlc0F0YW4yXzM7
CiAgICAgYm9vbCBtVXNlc0F0YW4yXzQ7CisgICAgYm9vbCBtVXNlc0Rpc2NhcmRSZXdyaXRpbmc7
CiAKICAgICBpbnQgbU51bVJlbmRlclRhcmdldHM7CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUNvbnRleHQuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1BhcnNlQ29udGV4
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNjAyIEBACisvLworLy8gQ29weXJpZ2h0
IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworCisjaW5jbHVkZSAiY29tcGlsZXIvUGFyc2VDb250ZXh0LmgiCisKKyNpbmNsdWRlIDxzdGRh
cmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaW5jbHVkZSAiY29tcGlsZXIvZ2xzbGFuZy5o
IgorI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Tb3VyY2VMb2NhdGlvbi5oIgorCisv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLworLy8KKy8vIFN1Yi0gdmVjdG9yIGFuZCBtYXRyaXggZmllbGRzCisvLwor
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCisKKy8vCisvLyBMb29rIGF0IGEgJy4nIGZpZWxkIHNlbGVjdG9yIHN0
cmluZyBhbmQgY2hhbmdlIGl0IGludG8gb2Zmc2V0cworLy8gZm9yIGEgdmVjdG9yLgorLy8KK2Jv
b2wgVFBhcnNlQ29udGV4dDo6cGFyc2VWZWN0b3JGaWVsZHMoY29uc3QgVFN0cmluZyYgY29tcFN0
cmluZywgaW50IHZlY1NpemUsIFRWZWN0b3JGaWVsZHMmIGZpZWxkcywgY29uc3QgVFNvdXJjZUxv
YyYgbGluZSkKK3sKKyAgICBmaWVsZHMubnVtID0gKGludCkgY29tcFN0cmluZy5zaXplKCk7Cisg
ICAgaWYgKGZpZWxkcy5udW0gPiA0KSB7CisgICAgICAgIGVycm9yKGxpbmUsICJpbGxlZ2FsIHZl
Y3RvciBmaWVsZCBzZWxlY3Rpb24iLCBjb21wU3RyaW5nLmNfc3RyKCkpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgZW51bSB7CisgICAgICAgIGV4eXp3LAorICAgICAgICBl
cmdiYSwKKyAgICAgICAgZXN0cHEKKyAgICB9IGZpZWxkU2V0WzRdOworCisgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBmaWVsZHMubnVtOyArK2kpIHsKKyAgICAgICAgc3dpdGNoIChjb21wU3RyaW5n
W2ldKSAgeworICAgICAgICBjYXNlICd4JzogCisgICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1tp
XSA9IDA7CisgICAgICAgICAgICBmaWVsZFNldFtpXSA9IGV4eXp3OworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgJ3InOiAKKyAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzW2ldID0g
MDsKKyAgICAgICAgICAgIGZpZWxkU2V0W2ldID0gZXJnYmE7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSAncyc6CisgICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1tpXSA9IDA7Cisg
ICAgICAgICAgICBmaWVsZFNldFtpXSA9IGVzdHBxOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgJ3knOiAKKyAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzW2ldID0gMTsKKyAgICAg
ICAgICAgIGZpZWxkU2V0W2ldID0gZXh5enc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSAnZyc6IAorICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbaV0gPSAxOworICAgICAgICAg
ICAgZmllbGRTZXRbaV0gPSBlcmdiYTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
ICd0JzoKKyAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzW2ldID0gMTsKKyAgICAgICAgICAgIGZp
ZWxkU2V0W2ldID0gZXN0cHE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAneic6
IAorICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbaV0gPSAyOworICAgICAgICAgICAgZmllbGRT
ZXRbaV0gPSBleHl6dzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdiJzogCisg
ICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1tpXSA9IDI7CisgICAgICAgICAgICBmaWVsZFNldFtp
XSA9IGVyZ2JhOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ3AnOgorICAgICAg
ICAgICAgZmllbGRzLm9mZnNldHNbaV0gPSAyOworICAgICAgICAgICAgZmllbGRTZXRbaV0gPSBl
c3RwcTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICAgICAgY2FzZSAndyc6IAor
ICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbaV0gPSAzOworICAgICAgICAgICAgZmllbGRTZXRb
aV0gPSBleHl6dzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdhJzogCisgICAg
ICAgICAgICBmaWVsZHMub2Zmc2V0c1tpXSA9IDM7CisgICAgICAgICAgICBmaWVsZFNldFtpXSA9
IGVyZ2JhOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ3EnOgorICAgICAgICAg
ICAgZmllbGRzLm9mZnNldHNbaV0gPSAzOworICAgICAgICAgICAgZmllbGRTZXRbaV0gPSBlc3Rw
cTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgZXJy
b3IobGluZSwgImlsbGVnYWwgdmVjdG9yIGZpZWxkIHNlbGVjdGlvbiIsIGNvbXBTdHJpbmcuY19z
dHIoKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGZpZWxkcy5udW07ICsraSkgeworICAgICAgICBpZiAoZmll
bGRzLm9mZnNldHNbaV0gPj0gdmVjU2l6ZSkgeworICAgICAgICAgICAgZXJyb3IobGluZSwgInZl
Y3RvciBmaWVsZCBzZWxlY3Rpb24gb3V0IG9mIHJhbmdlIiwgIGNvbXBTdHJpbmcuY19zdHIoKSk7
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaSA+
IDApIHsKKyAgICAgICAgICAgIGlmIChmaWVsZFNldFtpXSAhPSBmaWVsZFNldFtpLTFdKSB7Cisg
ICAgICAgICAgICAgICAgZXJyb3IobGluZSwgImlsbGVnYWwgLSB2ZWN0b3IgY29tcG9uZW50IGZp
ZWxkcyBub3QgZnJvbSB0aGUgc2FtZSBzZXQiLCBjb21wU3RyaW5nLmNfc3RyKCkpOworICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiB0cnVlOworfQorCisKKy8vCisvLyBMb29rIGF0IGEgJy4nIGZpZWxkIHNl
bGVjdG9yIHN0cmluZyBhbmQgY2hhbmdlIGl0IGludG8gb2Zmc2V0cworLy8gZm9yIGEgbWF0cml4
LgorLy8KK2Jvb2wgVFBhcnNlQ29udGV4dDo6cGFyc2VNYXRyaXhGaWVsZHMoY29uc3QgVFN0cmlu
ZyYgY29tcFN0cmluZywgaW50IG1hdFNpemUsIFRNYXRyaXhGaWVsZHMmIGZpZWxkcywgY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSkKK3sKKyAgICBmaWVsZHMud2hvbGVSb3cgPSBmYWxzZTsKKyAgICBm
aWVsZHMud2hvbGVDb2wgPSBmYWxzZTsKKyAgICBmaWVsZHMucm93ID0gLTE7CisgICAgZmllbGRz
LmNvbCA9IC0xOworCisgICAgaWYgKGNvbXBTdHJpbmcuc2l6ZSgpICE9IDIpIHsKKyAgICAgICAg
ZXJyb3IobGluZSwgImlsbGVnYWwgbGVuZ3RoIG9mIG1hdHJpeCBmaWVsZCBzZWxlY3Rpb24iLCBj
b21wU3RyaW5nLmNfc3RyKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
aWYgKGNvbXBTdHJpbmdbMF0gPT0gJ18nKSB7CisgICAgICAgIGlmIChjb21wU3RyaW5nWzFdIDwg
JzAnIHx8IGNvbXBTdHJpbmdbMV0gPiAnMycpIHsKKyAgICAgICAgICAgIGVycm9yKGxpbmUsICJp
bGxlZ2FsIG1hdHJpeCBmaWVsZCBzZWxlY3Rpb24iLCBjb21wU3RyaW5nLmNfc3RyKCkpOworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGZpZWxkcy53aG9sZUNv
bCA9IHRydWU7CisgICAgICAgIGZpZWxkcy5jb2wgPSBjb21wU3RyaW5nWzFdIC0gJzAnOworICAg
IH0gZWxzZSBpZiAoY29tcFN0cmluZ1sxXSA9PSAnXycpIHsKKyAgICAgICAgaWYgKGNvbXBTdHJp
bmdbMF0gPCAnMCcgfHwgY29tcFN0cmluZ1swXSA+ICczJykgeworICAgICAgICAgICAgZXJyb3Io
bGluZSwgImlsbGVnYWwgbWF0cml4IGZpZWxkIHNlbGVjdGlvbiIsIGNvbXBTdHJpbmcuY19zdHIo
KSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZmllbGRz
Lndob2xlUm93ID0gdHJ1ZTsKKyAgICAgICAgZmllbGRzLnJvdyA9IGNvbXBTdHJpbmdbMF0gLSAn
MCc7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGNvbXBTdHJpbmdbMF0gPCAnMCcgfHwgY29t
cFN0cmluZ1swXSA+ICczJyB8fAorICAgICAgICAgICAgY29tcFN0cmluZ1sxXSA8ICcwJyB8fCBj
b21wU3RyaW5nWzFdID4gJzMnKSB7CisgICAgICAgICAgICBlcnJvcihsaW5lLCAiaWxsZWdhbCBt
YXRyaXggZmllbGQgc2VsZWN0aW9uIiwgY29tcFN0cmluZy5jX3N0cigpKTsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBmaWVsZHMucm93ID0gY29tcFN0cmlu
Z1swXSAtICcwJzsKKyAgICAgICAgZmllbGRzLmNvbCA9IGNvbXBTdHJpbmdbMV0gLSAnMCc7Cisg
ICAgfQorCisgICAgaWYgKGZpZWxkcy5yb3cgPj0gbWF0U2l6ZSB8fCBmaWVsZHMuY29sID49IG1h
dFNpemUpIHsKKyAgICAgICAgZXJyb3IobGluZSwgIm1hdHJpeCBmaWVsZCBzZWxlY3Rpb24gb3V0
IG9mIHJhbmdlIiwgY29tcFN0cmluZy5jX3N0cigpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIEVy
cm9ycworLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisvLworLy8gVHJhY2sgd2hldGhlciBlcnJvcnMg
aGF2ZSBvY2N1cnJlZC4KKy8vCit2b2lkIFRQYXJzZUNvbnRleHQ6OnJlY292ZXIoKQoreworfQor
CisvLworLy8gVXNlZCBieSBmbGV4L2Jpc29uIHRvIG91dHB1dCBhbGwgc3ludGF4IGFuZCBwYXJz
aW5nIGVycm9ycy4KKy8vCit2b2lkIFRQYXJzZUNvbnRleHQ6OmVycm9yKGNvbnN0IFRTb3VyY2VM
b2MmIGxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmVhc29uLCBj
b25zdCBjaGFyKiB0b2tlbiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGV4dHJhSW5mbykKK3sKKyAgICBwcDo6U291cmNlTG9jYXRpb24gc3JjTG9jOworICAgIHNyY0xv
Yy5maWxlID0gbG9jLmZpcnN0X2ZpbGU7CisgICAgc3JjTG9jLmxpbmUgPSBsb2MuZmlyc3RfbGlu
ZTsKKyAgICBkaWFnbm9zdGljcy53cml0ZUluZm8ocHA6OkRpYWdub3N0aWNzOjpFUlJPUiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3JjTG9jLCByZWFzb24sIHRva2VuLCBleHRyYUluZm8p
OworCit9CisKK3ZvaWQgVFBhcnNlQ29udGV4dDo6d2FybmluZyhjb25zdCBUU291cmNlTG9jJiBs
b2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmVhc29uLCBjb25z
dCBjaGFyKiB0b2tlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBl
eHRyYUluZm8pIHsKKyAgICBwcDo6U291cmNlTG9jYXRpb24gc3JjTG9jOworICAgIHNyY0xvYy5m
aWxlID0gbG9jLmZpcnN0X2ZpbGU7CisgICAgc3JjTG9jLmxpbmUgPSBsb2MuZmlyc3RfbGluZTsK
KyAgICBkaWFnbm9zdGljcy53cml0ZUluZm8ocHA6OkRpYWdub3N0aWNzOjpXQVJOSU5HLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBzcmNMb2MsIHJlYXNvbiwgdG9rZW4sIGV4dHJhSW5mbyk7
Cit9CisKK3ZvaWQgVFBhcnNlQ29udGV4dDo6dHJhY2UoY29uc3QgY2hhciogc3RyKQoreworICAg
IGRpYWdub3N0aWNzLndyaXRlRGVidWcoc3RyKTsKK30KKworLy8KKy8vIFNhbWUgZXJyb3IgbWVz
c2FnZSBmb3IgYWxsIHBsYWNlcyBhc3NpZ25tZW50cyBkb24ndCB3b3JrLgorLy8KK3ZvaWQgVFBh
cnNlQ29udGV4dDo6YXNzaWduRXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hh
ciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCkKK3sKKyAgICBzdGQ6OnN0cmluZ3N0
cmVhbSBleHRyYUluZm9TdHJlYW07CisgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJjYW5ub3QgY29u
dmVydCBmcm9tICciIDw8IHJpZ2h0IDw8ICInIHRvICciIDw8IGxlZnQgPDwgIiciOworICAgIHN0
ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKKyAgICBlcnJvcihs
aW5lLCAiIiwgb3AsIGV4dHJhSW5mby5jX3N0cigpKTsKK30KKworLy8KKy8vIFNhbWUgZXJyb3Ig
bWVzc2FnZSBmb3IgYWxsIHBsYWNlcyB1bmFyeSBvcGVyYXRpb25zIGRvbid0IHdvcmsuCisvLwor
dm9pZCBUUGFyc2VDb250ZXh0Ojp1bmFyeU9wRXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwg
Y29uc3QgY2hhciogb3AsIFRTdHJpbmcgb3BlcmFuZCkKK3sKKyAgICBzdGQ6OnN0cmluZ3N0cmVh
bSBleHRyYUluZm9TdHJlYW07CisgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJubyBvcGVyYXRpb24g
JyIgPDwgb3AgPDwgIicgZXhpc3RzIHRoYXQgdGFrZXMgYW4gb3BlcmFuZCBvZiB0eXBlICIgPDwg
b3BlcmFuZCAKKyAgICAgICAgICAgICAgICAgICAgPDwgIiAob3IgdGhlcmUgaXMgbm8gYWNjZXB0
YWJsZSBjb252ZXJzaW9uKSI7CisgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZv
U3RyZWFtLnN0cigpOworICAgIGVycm9yKGxpbmUsICIgd3Jvbmcgb3BlcmFuZCB0eXBlIiwgb3As
IGV4dHJhSW5mby5jX3N0cigpKTsKK30KKworLy8KKy8vIFNhbWUgZXJyb3IgbWVzc2FnZSBmb3Ig
YWxsIGJpbmFyeSBvcGVyYXRpb25zIGRvbid0IHdvcmsuCisvLwordm9pZCBUUGFyc2VDb250ZXh0
OjpiaW5hcnlPcEVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBU
U3RyaW5nIGxlZnQsIFRTdHJpbmcgcmlnaHQpCit7CisgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0
cmFJbmZvU3RyZWFtOworICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAibm8gb3BlcmF0aW9uICciIDw8
IG9wIDw8ICInIGV4aXN0cyB0aGF0IHRha2VzIGEgbGVmdC1oYW5kIG9wZXJhbmQgb2YgdHlwZSAn
IiA8PCBsZWZ0IAorICAgICAgICAgICAgICAgICAgICA8PCAiJyBhbmQgYSByaWdodCBvcGVyYW5k
IG9mIHR5cGUgJyIgPDwgcmlnaHQgPDwgIicgKG9yIHRoZXJlIGlzIG5vIGFjY2VwdGFibGUgY29u
dmVyc2lvbikiOworICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5z
dHIoKTsKKyAgICBlcnJvcihsaW5lLCAiIHdyb25nIG9wZXJhbmQgdHlwZXMgIiwgb3AsIGV4dHJh
SW5mby5jX3N0cigpKTsgCit9CisKK2Jvb2wgVFBhcnNlQ29udGV4dDo6cHJlY2lzaW9uRXJyb3JD
aGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUHJlY2lzaW9uIHByZWNpc2lvbiwgVEJhc2lj
VHlwZSB0eXBlKXsKKyAgICBpZiAoIWNoZWNrc1ByZWNpc2lvbkVycm9ycykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIHN3aXRjaCggdHlwZSApeworICAgIGNhc2UgRWJ0RmxvYXQ6CisgICAg
ICAgIGlmKCBwcmVjaXNpb24gPT0gRWJwVW5kZWZpbmVkICl7CisgICAgICAgICAgICBlcnJvcigg
bGluZSwgIk5vIHByZWNpc2lvbiBzcGVjaWZpZWQgZm9yIChmbG9hdCkiLCAiIiApOworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBF
YnRJbnQ6CisgICAgICAgIGlmKCBwcmVjaXNpb24gPT0gRWJwVW5kZWZpbmVkICl7CisgICAgICAg
ICAgICBlcnJvciggbGluZSwgIk5vIHByZWNpc2lvbiBzcGVjaWZpZWQgKGludCkiLCAiIiApOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKKy8vCisvLyBCb3RoIHRlc3QgYW5kIGlmIG5lY2Vzc2FyeSwgc3BpdCBvdXQgYW4gZXJy
b3IsIHRvIHNlZSBpZiB0aGUgbm9kZSBpcyByZWFsbHkKKy8vIGFuIGwtdmFsdWUgdGhhdCBjYW4g
YmUgb3BlcmF0ZWQgb24gdGhpcyB3YXkuCisvLworLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB3YXMg
YW4gZXJyb3IuCisvLworYm9vbCBUUGFyc2VDb250ZXh0OjpsVmFsdWVFcnJvckNoZWNrKGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUSW50ZXJtVHlwZWQqIG5vZGUpCit7
CisgICAgVEludGVybVN5bWJvbCogc3ltTm9kZSA9IG5vZGUtPmdldEFzU3ltYm9sTm9kZSgpOwor
ICAgIFRJbnRlcm1CaW5hcnkqIGJpbmFyeU5vZGUgPSBub2RlLT5nZXRBc0JpbmFyeU5vZGUoKTsK
KworICAgIGlmIChiaW5hcnlOb2RlKSB7CisgICAgICAgIGJvb2wgZXJyb3JSZXR1cm47CisKKyAg
ICAgICAgc3dpdGNoKGJpbmFyeU5vZGUtPmdldE9wKCkpIHsKKyAgICAgICAgY2FzZSBFT3BJbmRl
eERpcmVjdDoKKyAgICAgICAgY2FzZSBFT3BJbmRleEluZGlyZWN0OgorICAgICAgICBjYXNlIEVP
cEluZGV4RGlyZWN0U3RydWN0OgorICAgICAgICAgICAgcmV0dXJuIGxWYWx1ZUVycm9yQ2hlY2so
bGluZSwgb3AsIGJpbmFyeU5vZGUtPmdldExlZnQoKSk7CisgICAgICAgIGNhc2UgRU9wVmVjdG9y
U3dpenpsZToKKyAgICAgICAgICAgIGVycm9yUmV0dXJuID0gbFZhbHVlRXJyb3JDaGVjayhsaW5l
LCBvcCwgYmluYXJ5Tm9kZS0+Z2V0TGVmdCgpKTsKKyAgICAgICAgICAgIGlmICghZXJyb3JSZXR1
cm4pIHsKKyAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0WzRdID0gezAsMCwwLDB9OworCisgICAg
ICAgICAgICAgICAgVEludGVybVR5cGVkKiByaWdodE5vZGUgPSBiaW5hcnlOb2RlLT5nZXRSaWdo
dCgpOworICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JOb2RlID0gcmlnaHRO
b2RlLT5nZXRBc0FnZ3JlZ2F0ZSgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IGZvciAoVEludGVybVNlcXVlbmNlOjppdGVyYXRvciBwID0gYWdnck5vZGUtPmdldFNlcXVlbmNl
KCkuYmVnaW4oKTsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHAgIT0gYWdnck5vZGUtPmdldFNlcXVlbmNlKCkuZW5kKCk7IHArKykgeworICAgICAgICAg
ICAgICAgICAgICBpbnQgdmFsdWUgPSAoKnApLT5nZXRBc1R5cGVkKCktPmdldEFzQ29uc3RhbnRV
bmlvbigpLT5nZXRJQ29uc3QoMCk7CisgICAgICAgICAgICAgICAgICAgIG9mZnNldFt2YWx1ZV0r
KzsgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0W3ZhbHVlXSA+IDEpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGVycm9yKGxpbmUsICIgbC12YWx1ZSBvZiBzd2l6emxlIGNh
bm5vdCBoYXZlIGR1cGxpY2F0ZSBjb21wb25lbnRzIiwgb3ApOworCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0gCisKKyAgICAgICAgICAgIHJldHVybiBlcnJvclJldHVybjsK
KyAgICAgICAgZGVmYXVsdDogCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBlcnJvcihsaW5lLCAiIGwtdmFsdWUgcmVxdWlyZWQiLCBvcCk7CisKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisKKyAgICBjb25zdCBjaGFyKiBzeW1ib2wgPSAwOworICAgIGlmIChz
eW1Ob2RlICE9IDApCisgICAgICAgIHN5bWJvbCA9IHN5bU5vZGUtPmdldFN5bWJvbCgpLmNfc3Ry
KCk7CisKKyAgICBjb25zdCBjaGFyKiBtZXNzYWdlID0gMDsKKyAgICBzd2l0Y2ggKG5vZGUtPmdl
dFF1YWxpZmllcigpKSB7CisgICAgY2FzZSBFdnFDb25zdDogICAgICAgICAgbWVzc2FnZSA9ICJj
YW4ndCBtb2RpZnkgYSBjb25zdCI7ICAgICAgICBicmVhazsKKyAgICBjYXNlIEV2cUNvbnN0UmVh
ZE9ubHk6ICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBhIGNvbnN0IjsgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgRXZxQXR0cmlidXRlOiAgICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGFuIGF0
dHJpYnV0ZSI7ICAgYnJlYWs7CisgICAgY2FzZSBFdnFVbmlmb3JtOiAgICAgICAgbWVzc2FnZSA9
ICJjYW4ndCBtb2RpZnkgYSB1bmlmb3JtIjsgICAgICBicmVhazsKKyAgICBjYXNlIEV2cVZhcnlp
bmdJbjogICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBhIHZhcnlpbmciOyAgICAgIGJyZWFr
OworICAgIGNhc2UgRXZxRnJhZ0Nvb3JkOiAgICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGds
X0ZyYWdDb29yZCI7ICAgYnJlYWs7CisgICAgY2FzZSBFdnFGcm9udEZhY2luZzogICAgbWVzc2Fn
ZSA9ICJjYW4ndCBtb2RpZnkgZ2xfRnJvbnRGYWNpbmciOyBicmVhazsKKyAgICBjYXNlIEV2cVBv
aW50Q29vcmQ6ICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBnbF9Qb2ludENvb3JkIjsgIGJy
ZWFrOworICAgIGRlZmF1bHQ6CisKKyAgICAgICAgLy8KKyAgICAgICAgLy8gVHlwZSB0aGF0IGNh
bid0IGJlIHdyaXR0ZW4gdG8/CisgICAgICAgIC8vCisgICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0
QmFzaWNUeXBlKCkpIHsKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkQ6CisgICAgICAgIGNhc2Ug
RWJ0U2FtcGxlckN1YmU6CisgICAgICAgICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBhIHNh
bXBsZXIiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRWJ0Vm9pZDoKKyAgICAg
ICAgICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IHZvaWQiOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRlZmF1bHQ6IAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBpZiAobWVzc2FnZSA9PSAwICYmIGJpbmFyeU5vZGUgPT0gMCAmJiBzeW1Ob2RlID09
IDApIHsKKyAgICAgICAgZXJyb3IobGluZSwgIiBsLXZhbHVlIHJlcXVpcmVkIiwgb3ApOworCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworCisgICAgLy8KKyAgICAvLyBFdmVyeXRoaW5n
IGVsc2UgaXMgb2theSwgbm8gZXJyb3IuCisgICAgLy8KKyAgICBpZiAobWVzc2FnZSA9PSAwKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLworICAgIC8vIElmIHdlIGdldCBoZXJlLCB3
ZSBoYXZlIGFuIGVycm9yIGFuZCBhIG1lc3NhZ2UuCisgICAgLy8KKyAgICBpZiAoc3ltTm9kZSkg
eworICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07CisgICAgICAgIGV4
dHJhSW5mb1N0cmVhbSA8PCAiXCIiIDw8IHN5bWJvbCA8PCAiXCIgKCIgPDwgbWVzc2FnZSA8PCAi
KSI7CisgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIo
KTsKKyAgICAgICAgZXJyb3IobGluZSwgIiBsLXZhbHVlIHJlcXVpcmVkIiwgb3AsIGV4dHJhSW5m
by5jX3N0cigpKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFt
IGV4dHJhSW5mb1N0cmVhbTsKKyAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICIoIiA8PCBtZXNz
YWdlIDw8ICIpIjsKKyAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3Ry
ZWFtLnN0cigpOworICAgICAgICBlcnJvcihsaW5lLCAiIGwtdmFsdWUgcmVxdWlyZWQiLCBvcCwg
ZXh0cmFJbmZvLmNfc3RyKCkpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCisvLwor
Ly8gQm90aCB0ZXN0LCBhbmQgaWYgbmVjZXNzYXJ5IHNwaXQgb3V0IGFuIGVycm9yLCB0byBzZWUg
aWYgdGhlIG5vZGUgaXMgcmVhbGx5CisvLyBhIGNvbnN0YW50LgorLy8KKy8vIFJldHVybnMgdHJ1
ZSBpZiB0aGUgd2FzIGFuIGVycm9yLgorLy8KK2Jvb2wgVFBhcnNlQ29udGV4dDo6Y29uc3RFcnJv
ckNoZWNrKFRJbnRlcm1UeXBlZCogbm9kZSkKK3sKKyAgICBpZiAobm9kZS0+Z2V0UXVhbGlmaWVy
KCkgPT0gRXZxQ29uc3QpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGVycm9yKG5vZGUt
PmdldExpbmUoKSwgImNvbnN0YW50IGV4cHJlc3Npb24gcmVxdWlyZWQiLCAiIik7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworLy8KKy8vIEJvdGggdGVzdCwgYW5kIGlmIG5lY2Vzc2FyeSBzcGl0
IG91dCBhbiBlcnJvciwgdG8gc2VlIGlmIHRoZSBub2RlIGlzIHJlYWxseQorLy8gYW4gaW50ZWdl
ci4KKy8vCisvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHdhcyBhbiBlcnJvci4KKy8vCitib29sIFRQ
YXJzZUNvbnRleHQ6OmludGVnZXJFcnJvckNoZWNrKFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3Qg
Y2hhciogdG9rZW4pCit7CisgICAgaWYgKG5vZGUtPmdldEJhc2ljVHlwZSgpID09IEVidEludCAm
JiBub2RlLT5nZXROb21pbmFsU2l6ZSgpID09IDEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGVycm9yKG5vZGUtPmdldExpbmUoKSwgImludGVnZXIgZXhwcmVzc2lvbiByZXF1aXJlZCIs
IHRva2VuKTsKKworICAgIHJldHVybiB0cnVlOworfQorCisvLworLy8gQm90aCB0ZXN0LCBhbmQg
aWYgbmVjZXNzYXJ5IHNwaXQgb3V0IGFuIGVycm9yLCB0byBzZWUgaWYgd2UgYXJlIGN1cnJlbnRs
eQorLy8gZ2xvYmFsbHkgc2NvcGVkLgorLy8KKy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgd2FzIGFu
IGVycm9yLgorLy8KK2Jvb2wgVFBhcnNlQ29udGV4dDo6Z2xvYmFsRXJyb3JDaGVjayhjb25zdCBU
U291cmNlTG9jJiBsaW5lLCBib29sIGdsb2JhbCwgY29uc3QgY2hhciogdG9rZW4pCit7CisgICAg
aWYgKGdsb2JhbCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZXJyb3IobGluZSwgIm9u
bHkgYWxsb3dlZCBhdCBnbG9iYWwgc2NvcGUiLCB0b2tlbik7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworLy8KKy8vIEZvciBub3csIGtlZXAgaXQgc2ltcGxlOiAgaWYgaXQgc3RhcnRzICJnbF8i
LCBpdCdzIHJlc2VydmVkLCBpbmRlcGVuZGVudAorLy8gb2Ygc2NvcGUuICBFeGNlcHQsIGlmIHRo
ZSBzeW1ib2wgdGFibGUgaXMgYXQgdGhlIGJ1aWx0LWluIHB1c2gtbGV2ZWwsCisvLyB3aGljaCBp
cyB3aGVuIHdlIGFyZSBwYXJzaW5nIGJ1aWx0LWlucy4KKy8vIEFsc28gY2hlY2tzIGZvciAid2Vi
Z2xfIiBhbmQgIl93ZWJnbF8iIHJlc2VydmVkIGlkZW50aWZpZXJzIGlmIHBhcnNpbmcgYQorLy8g
d2ViZ2wgc2hhZGVyLgorLy8KKy8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3Iu
CisvLworYm9vbCBUUGFyc2VDb250ZXh0OjpyZXNlcnZlZEVycm9yQ2hlY2soY29uc3QgVFNvdXJj
ZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllcikKK3sKKyAgICBzdGF0aWMgY29u
c3QgY2hhciogcmVzZXJ2ZWRFcnJNc2cgPSAicmVzZXJ2ZWQgYnVpbHQtaW4gbmFtZSI7CisgICAg
aWYgKCFzeW1ib2xUYWJsZS5hdEJ1aWx0SW5MZXZlbCgpKSB7CisgICAgICAgIGlmIChpZGVudGlm
aWVyLmNvbXBhcmUoMCwgMywgImdsXyIpID09IDApIHsKKyAgICAgICAgICAgIGVycm9yKGxpbmUs
IHJlc2VydmVkRXJyTXNnLCAiZ2xfIik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoaXNXZWJHTEJhc2VkU3BlYyhzaGFkZXJTcGVjKSkgeworICAgICAg
ICAgICAgaWYgKGlkZW50aWZpZXIuY29tcGFyZSgwLCA2LCAid2ViZ2xfIikgPT0gMCkgeworICAg
ICAgICAgICAgICAgIGVycm9yKGxpbmUsIHJlc2VydmVkRXJyTXNnLCAid2ViZ2xfIik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
aWRlbnRpZmllci5jb21wYXJlKDAsIDcsICJfd2ViZ2xfIikgPT0gMCkgeworICAgICAgICAgICAg
ICAgIGVycm9yKGxpbmUsIHJlc2VydmVkRXJyTXNnLCAiX3dlYmdsXyIpOworICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNoYWRlclNw
ZWMgPT0gU0hfQ1NTX1NIQURFUlNfU1BFQyAmJiBpZGVudGlmaWVyLmNvbXBhcmUoMCwgNCwgImNz
c18iKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgZXJyb3IobGluZSwgcmVzZXJ2ZWRFcnJNc2cs
ICJjc3NfIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGlkZW50aWZpZXIuZmluZCgiX18iKSAhPSBUU3RyaW5nOjpu
cG9zKSB7CisgICAgICAgICAgICBlcnJvcihsaW5lLCAiaWRlbnRpZmllcnMgY29udGFpbmluZyB0
d28gY29uc2VjdXRpdmUgdW5kZXJzY29yZXMgKF9fKSBhcmUgcmVzZXJ2ZWQgYXMgcG9zc2libGUg
ZnV0dXJlIGtleXdvcmRzIiwgaWRlbnRpZmllci5jX3N0cigpKTsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCisvLwor
Ly8gTWFrZSBzdXJlIHRoZXJlIGlzIGVub3VnaCBkYXRhIHByb3ZpZGVkIHRvIHRoZSBjb25zdHJ1
Y3RvciB0byBidWlsZAorLy8gc29tZXRoaW5nIG9mIHRoZSB0eXBlIG9mIHRoZSBjb25zdHJ1Y3Rv
ci4gIEFsc28gcmV0dXJucyB0aGUgdHlwZSBvZgorLy8gdGhlIGNvbnN0cnVjdG9yLgorLy8KKy8v
IFJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgaW4gY29uc3RydWN0aW9uLgorLy8K
K2Jvb2wgVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0b3JFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUsIFRJbnRlcm1Ob2RlKiBub2RlLCBURnVuY3Rpb24mIGZ1bmN0aW9uLCBUT3BlcmF0
b3Igb3AsIFRUeXBlKiB0eXBlKQoreworICAgICp0eXBlID0gZnVuY3Rpb24uZ2V0UmV0dXJuVHlw
ZSgpOworCisgICAgYm9vbCBjb25zdHJ1Y3RpbmdNYXRyaXggPSBmYWxzZTsKKyAgICBzd2l0Y2go
b3ApIHsKKyAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDI6CisgICAgY2FzZSBFT3BDb25zdHJ1Y3RN
YXQzOgorICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0NDoKKyAgICAgICAgY29uc3RydWN0aW5nTWF0
cml4ID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDogCisgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIC8vCisgICAgLy8gTm90ZTogSXQncyBva2F5IHRvIGhhdmUgdG9vIG1h
bnkgY29tcG9uZW50cyBhdmFpbGFibGUsIGJ1dCBub3Qgb2theSB0byBoYXZlIHVudXNlZAorICAg
IC8vIGFyZ3VtZW50cy4gICdmdWxsJyB3aWxsIGdvIHRvIHRydWUgd2hlbiBlbm91Z2ggYXJncyBo
YXZlIGJlZW4gc2Vlbi4gIElmIHdlIGxvb3AKKyAgICAvLyBhZ2FpbiwgdGhlcmUgaXMgYW4gZXh0
cmEgYXJndW1lbnQsIHNvICdvdmVyZnVsbCcgd2lsbCBiZWNvbWUgdHJ1ZS4KKyAgICAvLworCisg
ICAgc2l6ZV90IHNpemUgPSAwOworICAgIGJvb2wgY29uc3RUeXBlID0gdHJ1ZTsKKyAgICBib29s
IGZ1bGwgPSBmYWxzZTsKKyAgICBib29sIG92ZXJGdWxsID0gZmFsc2U7CisgICAgYm9vbCBtYXRy
aXhJbk1hdHJpeCA9IGZhbHNlOworICAgIGJvb2wgYXJyYXlBcmcgPSBmYWxzZTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9uLmdldFBhcmFtQ291bnQoKTsgKytpKSB7CisgICAg
ICAgIGNvbnN0IFRQYXJhbWV0ZXImIHBhcmFtID0gZnVuY3Rpb24uZ2V0UGFyYW0oaSk7CisgICAg
ICAgIHNpemUgKz0gcGFyYW0udHlwZS0+Z2V0T2JqZWN0U2l6ZSgpOworICAgICAgICAKKyAgICAg
ICAgaWYgKGNvbnN0cnVjdGluZ01hdHJpeCAmJiBwYXJhbS50eXBlLT5pc01hdHJpeCgpKQorICAg
ICAgICAgICAgbWF0cml4SW5NYXRyaXggPSB0cnVlOworICAgICAgICBpZiAoZnVsbCkKKyAgICAg
ICAgICAgIG92ZXJGdWxsID0gdHJ1ZTsKKyAgICAgICAgaWYgKG9wICE9IEVPcENvbnN0cnVjdFN0
cnVjdCAmJiAhdHlwZS0+aXNBcnJheSgpICYmIHNpemUgPj0gdHlwZS0+Z2V0T2JqZWN0U2l6ZSgp
KQorICAgICAgICAgICAgZnVsbCA9IHRydWU7CisgICAgICAgIGlmIChwYXJhbS50eXBlLT5nZXRR
dWFsaWZpZXIoKSAhPSBFdnFDb25zdCkKKyAgICAgICAgICAgIGNvbnN0VHlwZSA9IGZhbHNlOwor
ICAgICAgICBpZiAocGFyYW0udHlwZS0+aXNBcnJheSgpKQorICAgICAgICAgICAgYXJyYXlBcmcg
PSB0cnVlOworICAgIH0KKyAgICAKKyAgICBpZiAoY29uc3RUeXBlKQorICAgICAgICB0eXBlLT5z
ZXRRdWFsaWZpZXIoRXZxQ29uc3QpOworCisgICAgaWYgKHR5cGUtPmlzQXJyYXkoKSAmJiBzdGF0
aWNfY2FzdDxzaXplX3Q+KHR5cGUtPmdldEFycmF5U2l6ZSgpKSAhPSBmdW5jdGlvbi5nZXRQYXJh
bUNvdW50KCkpIHsKKyAgICAgICAgZXJyb3IobGluZSwgImFycmF5IGNvbnN0cnVjdG9yIG5lZWRz
IG9uZSBhcmd1bWVudCBwZXIgYXJyYXkgZWxlbWVudCIsICJjb25zdHJ1Y3RvciIpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoYXJyYXlBcmcgJiYgb3AgIT0gRU9wQ29u
c3RydWN0U3RydWN0KSB7CisgICAgICAgIGVycm9yKGxpbmUsICJjb25zdHJ1Y3RpbmcgZnJvbSBh
IG5vbi1kZXJlZmVyZW5jZWQgYXJyYXkiLCAiY29uc3RydWN0b3IiKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgaWYgKG1hdHJpeEluTWF0cml4ICYmICF0eXBlLT5pc0FycmF5
KCkpIHsKKyAgICAgICAgaWYgKGZ1bmN0aW9uLmdldFBhcmFtQ291bnQoKSAhPSAxKSB7CisgICAg
ICAgICAgZXJyb3IobGluZSwgImNvbnN0cnVjdGluZyBtYXRyaXggZnJvbSBtYXRyaXggY2FuIG9u
bHkgdGFrZSBvbmUgYXJndW1lbnQiLCAiY29uc3RydWN0b3IiKTsKKyAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChvdmVyRnVsbCkgeworICAgICAgICBl
cnJvcihsaW5lLCAidG9vIG1hbnkgYXJndW1lbnRzIiwgImNvbnN0cnVjdG9yIik7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICBpZiAob3AgPT0gRU9wQ29uc3RydWN0U3Ry
dWN0ICYmICF0eXBlLT5pc0FycmF5KCkgJiYgaW50KHR5cGUtPmdldFN0cnVjdCgpLT5maWVsZHMo
KS5zaXplKCkpICE9IGZ1bmN0aW9uLmdldFBhcmFtQ291bnQoKSkgeworICAgICAgICBlcnJvcihs
aW5lLCAiTnVtYmVyIG9mIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMgZG9lcyBub3QgbWF0Y2ggdGhl
IG51bWJlciBvZiBzdHJ1Y3R1cmUgZmllbGRzIiwgImNvbnN0cnVjdG9yIik7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKworICAgIGlmICghdHlwZS0+aXNNYXRyaXgoKSB8fCAhbWF0cml4
SW5NYXRyaXgpIHsKKyAgICAgICAgaWYgKChvcCAhPSBFT3BDb25zdHJ1Y3RTdHJ1Y3QgJiYgc2l6
ZSAhPSAxICYmIHNpemUgPCB0eXBlLT5nZXRPYmplY3RTaXplKCkpIHx8CisgICAgICAgICAgICAo
b3AgPT0gRU9wQ29uc3RydWN0U3RydWN0ICYmIHNpemUgPCB0eXBlLT5nZXRPYmplY3RTaXplKCkp
KSB7CisgICAgICAgICAgICBlcnJvcihsaW5lLCAibm90IGVub3VnaCBkYXRhIHByb3ZpZGVkIGZv
ciBjb25zdHJ1Y3Rpb24iLCAiY29uc3RydWN0b3IiKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisgICAgfQorCisgICAgVEludGVybVR5cGVkICp0eXBlZCA9IG5vZGUgPyBu
b2RlLT5nZXRBc1R5cGVkKCkgOiAwOworICAgIGlmICh0eXBlZCA9PSAwKSB7CisgICAgICAgIGVy
cm9yKGxpbmUsICJjb25zdHJ1Y3RvciBhcmd1bWVudCBkb2VzIG5vdCBoYXZlIGEgdHlwZSIsICJj
b25zdHJ1Y3RvciIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKG9wICE9
IEVPcENvbnN0cnVjdFN0cnVjdCAmJiBJc1NhbXBsZXIodHlwZWQtPmdldEJhc2ljVHlwZSgpKSkg
eworICAgICAgICBlcnJvcihsaW5lLCAiY2Fubm90IGNvbnZlcnQgYSBzYW1wbGVyIiwgImNvbnN0
cnVjdG9yIik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAodHlwZWQtPmdl
dEJhc2ljVHlwZSgpID09IEVidFZvaWQpIHsKKyAgICAgICAgZXJyb3IobGluZSwgImNhbm5vdCBj
b252ZXJ0IGEgdm9pZCIsICJjb25zdHJ1Y3RvciIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIHRv
IHNlZSBpZiBhIHZvaWQgdmFyaWFibGUgaGFzIGJlZW4gZGVjbGFyZWQgYW5kIHJhaXNlIGFuIGVy
cm9yIG1lc3NhZ2UgZm9yIHN1Y2ggYSBjYXNlCisvLworLy8gcmV0dXJucyB0cnVlIGluIGNhc2Ug
b2YgYW4gZXJyb3IKKy8vCitib29sIFRQYXJzZUNvbnRleHQ6OnZvaWRFcnJvckNoZWNrKGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFRQdWJs
aWNUeXBlJiBwdWJUeXBlKQoreworICAgIGlmIChwdWJUeXBlLnR5cGUgPT0gRWJ0Vm9pZCkgewor
ICAgICAgICBlcnJvcihsaW5lLCAiaWxsZWdhbCB1c2Ugb2YgdHlwZSAndm9pZCciLCBpZGVudGlm
aWVyLmNfc3RyKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9IAorCisgICAgcmV0dXJu
IGZhbHNlOworfQorCisvLyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyB0byBzZWUgaWYgdGhlIG5vZGUg
KGZvciB0aGUgZXhwcmVzc2lvbikgY29udGFpbnMgYSBzY2FsYXIgYm9vbGVhbiBleHByZXNzaW9u
IG9yIG5vdAorLy8KKy8vIHJldHVybnMgdHJ1ZSBpbiBjYXNlIG9mIGFuIGVycm9yCisvLworYm9v
bCBUUGFyc2VDb250ZXh0Ojpib29sRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBj
b25zdCBUSW50ZXJtVHlwZWQqIHR5cGUpCit7CisgICAgaWYgKHR5cGUtPmdldEJhc2ljVHlwZSgp
ICE9IEVidEJvb2wgfHwgdHlwZS0+aXNBcnJheSgpIHx8IHR5cGUtPmlzTWF0cml4KCkgfHwgdHlw
ZS0+aXNWZWN0b3IoKSkgeworICAgICAgICBlcnJvcihsaW5lLCAiYm9vbGVhbiBleHByZXNzaW9u
IGV4cGVjdGVkIiwgIiIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9IAorCisgICAgcmV0
dXJuIGZhbHNlOworfQorCisvLyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyB0byBzZWUgaWYgdGhlIG5v
ZGUgKGZvciB0aGUgZXhwcmVzc2lvbikgY29udGFpbnMgYSBzY2FsYXIgYm9vbGVhbiBleHByZXNz
aW9uIG9yIG5vdAorLy8KKy8vIHJldHVybnMgdHJ1ZSBpbiBjYXNlIG9mIGFuIGVycm9yCisvLwor
Ym9vbCBUUGFyc2VDb250ZXh0Ojpib29sRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5l
LCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUpCit7CisgICAgaWYgKHBUeXBlLnR5cGUgIT0gRWJ0
Qm9vbCB8fCBwVHlwZS5hcnJheSB8fCBwVHlwZS5tYXRyaXggfHwgKHBUeXBlLnNpemUgPiAxKSkg
eworICAgICAgICBlcnJvcihsaW5lLCAiYm9vbGVhbiBleHByZXNzaW9uIGV4cGVjdGVkIiwgIiIp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9IAorCisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIFRQYXJzZUNvbnRleHQ6OnNhbXBsZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2Mm
IGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSwgY29uc3QgY2hhciogcmVhc29uKQorewor
ICAgIGlmIChwVHlwZS50eXBlID09IEVidFN0cnVjdCkgeworICAgICAgICBpZiAoY29udGFpbnNT
YW1wbGVyKCpwVHlwZS51c2VyRGVmKSkgeworICAgICAgICAgICAgZXJyb3IobGluZSwgcmVhc29u
LCBnZXRCYXNpY1N0cmluZyhwVHlwZS50eXBlKSwgIihzdHJ1Y3R1cmUgY29udGFpbnMgYSBzYW1w
bGVyKSIpOworICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSBlbHNlIGlmIChJc1NhbXBsZXIo
cFR5cGUudHlwZSkpIHsKKyAgICAgICAgZXJyb3IobGluZSwgcmVhc29uLCBnZXRCYXNpY1N0cmlu
ZyhwVHlwZS50eXBlKSk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdFF1YWxpZmllckVycm9y
Q2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlKQor
eworICAgIGlmICgocFR5cGUucXVhbGlmaWVyID09IEV2cVZhcnlpbmdJbiB8fCBwVHlwZS5xdWFs
aWZpZXIgPT0gRXZxVmFyeWluZ091dCB8fCBwVHlwZS5xdWFsaWZpZXIgPT0gRXZxQXR0cmlidXRl
KSAmJgorICAgICAgICBwVHlwZS50eXBlID09IEVidFN0cnVjdCkgeworICAgICAgICBlcnJvcihs
aW5lLCAiY2Fubm90IGJlIHVzZWQgd2l0aCBhIHN0cnVjdHVyZSIsIGdldFF1YWxpZmllclN0cmlu
ZyhwVHlwZS5xdWFsaWZpZXIpKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIGlmIChwVHlwZS5xdWFsaWZpZXIgIT0gRXZxVW5pZm9ybSAmJiBzYW1wbGVyRXJy
b3JDaGVjayhsaW5lLCBwVHlwZSwgInNhbXBsZXJzIG11c3QgYmUgdW5pZm9ybSIpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBUUGFyc2VDb250
ZXh0OjpwYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBU
UXVhbGlmaWVyIHF1YWxpZmllciwgY29uc3QgVFR5cGUmIHR5cGUpCit7CisgICAgaWYgKChxdWFs
aWZpZXIgPT0gRXZxT3V0IHx8IHF1YWxpZmllciA9PSBFdnFJbk91dCkgJiYgCisgICAgICAgICAg
ICAgdHlwZS5nZXRCYXNpY1R5cGUoKSAhPSBFYnRTdHJ1Y3QgJiYgSXNTYW1wbGVyKHR5cGUuZ2V0
QmFzaWNUeXBlKCkpKSB7CisgICAgICAgIGVycm9yKGxpbmUsICJzYW1wbGVycyBjYW5ub3QgYmUg
b3V0cHV0IHBhcmFtZXRlcnMiLCB0eXBlLmdldEJhc2ljU3RyaW5nKCkpOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgVFBhcnNlQ29u
dGV4dDo6Y29udGFpbnNTYW1wbGVyKFRUeXBlJiB0eXBlKQoreworICAgIGlmIChJc1NhbXBsZXIo
dHlwZS5nZXRCYXNpY1R5cGUoKSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKHR5
cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KSB7CisgICAgICAgIGNvbnN0IFRGaWVsZExp
c3QmIGZpZWxkcyA9IHR5cGUuZ2V0U3RydWN0KCktPmZpZWxkcygpOworICAgICAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAg
aWYgKGNvbnRhaW5zU2FtcGxlcigqZmllbGRzW2ldLT50eXBlKCkpKQorICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQor
CisvLworLy8gRG8gc2l6ZSBjaGVja2luZyBmb3IgYW4gYXJyYXkgdHlwZSdzIHNpemUuCisvLwor
Ly8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KKy8vCitib29sIFRQYXJzZUNv
bnRleHQ6OmFycmF5U2l6ZUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEludGVy
bVR5cGVkKiBleHByLCBpbnQmIHNpemUpCit7CisgICAgVEludGVybUNvbnN0YW50VW5pb24qIGNv
bnN0YW50ID0gZXhwci0+Z2V0QXNDb25zdGFudFVuaW9uKCk7CisgICAgaWYgKGNvbnN0YW50ID09
IDAgfHwgY29uc3RhbnQtPmdldEJhc2ljVHlwZSgpICE9IEVidEludCkgeworICAgICAgICBlcnJv
cihsaW5lLCAiYXJyYXkgc2l6ZSBtdXN0IGJlIGEgY29uc3RhbnQgaW50ZWdlciBleHByZXNzaW9u
IiwgIiIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBzaXplID0gY29uc3Rh
bnQtPmdldElDb25zdCgwKTsKKworICAgIGlmIChzaXplIDw9IDApIHsKKyAgICAgICAgZXJyb3Io
bGluZSwgImFycmF5IHNpemUgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIiLCAiIik7CisgICAg
ICAgIHNpemUgPSAxOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKKy8vCisvLyBTZWUgaWYgdGhpcyBxdWFsaWZpZXIgY2FuIGJlIGFuIGFycmF5
LgorLy8KKy8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhbiBlcnJvci4KKy8vCitib29sIFRQ
YXJzZUNvbnRleHQ6OmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBs
aW5lLCBUUHVibGljVHlwZSB0eXBlKQoreworICAgIGlmICgodHlwZS5xdWFsaWZpZXIgPT0gRXZx
QXR0cmlidXRlKSB8fCAodHlwZS5xdWFsaWZpZXIgPT0gRXZxQ29uc3QpKSB7CisgICAgICAgIGVy
cm9yKGxpbmUsICJjYW5ub3QgZGVjbGFyZSBhcnJheXMgb2YgdGhpcyBxdWFsaWZpZXIiLCBUVHlw
ZSh0eXBlKS5nZXRDb21wbGV0ZVN0cmluZygpLmNfc3RyKCkpOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8vCisvLyBTZWUgaWYgdGhpcyB0
eXBlIGNhbiBiZSBhbiBhcnJheS4KKy8vCisvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgaXMgYW4g
ZXJyb3IuCisvLworYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVR5cGVFcnJvckNoZWNrKGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpCit7CisgICAgLy8KKyAgICAvLyBD
YW4gdGhlIHR5cGUgYmUgYW4gYXJyYXk/CisgICAgLy8KKyAgICBpZiAodHlwZS5hcnJheSkgewor
ICAgICAgICBlcnJvcihsaW5lLCAiY2Fubm90IGRlY2xhcmUgYXJyYXlzIG9mIGFycmF5cyIsIFRU
eXBlKHR5cGUpLmdldENvbXBsZXRlU3RyaW5nKCkuY19zdHIoKSk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8KKy8vIERvIGFsbCB0aGUg
c2VtYW50aWMgY2hlY2tpbmcgZm9yIGRlY2xhcmluZyBhbiBhcnJheSwgd2l0aCBhbmQgCisvLyB3
aXRob3V0IGEgc2l6ZSwgYW5kIG1ha2UgdGhlIHJpZ2h0IGNoYW5nZXMgdG8gdGhlIHN5bWJvbCB0
YWJsZS4KKy8vCisvLyBzaXplID09IDAgbWVhbnMgbm8gc3BlY2lmaWVkIHNpemUuCisvLworLy8g
UmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KKy8vCitib29sIFRQYXJzZUNvbnRl
eHQ6OmFycmF5RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVu
dGlmaWVyLCBUUHVibGljVHlwZSB0eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSkKK3sKKyAgICAv
LworICAgIC8vIERvbid0IGNoZWNrIGZvciByZXNlcnZlZCB3b3JkIHVzZSB1bnRpbCBhZnRlciB3
ZSBrbm93IGl0J3Mgbm90IGluIHRoZSBzeW1ib2wgdGFibGUsCisgICAgLy8gYmVjYXVzZSByZXNl
cnZlZCBhcnJheXMgY2FuIGJlIHJlZGVjbGFyZWQuCisgICAgLy8KKworICAgIGJvb2wgYnVpbHRJ
biA9IGZhbHNlOyAKKyAgICBib29sIHNhbWVTY29wZSA9IGZhbHNlOworICAgIFRTeW1ib2wqIHN5
bWJvbCA9IHN5bWJvbFRhYmxlLmZpbmQoaWRlbnRpZmllciwgJmJ1aWx0SW4sICZzYW1lU2NvcGUp
OworICAgIGlmIChzeW1ib2wgPT0gMCB8fCAhc2FtZVNjb3BlKSB7CisgICAgICAgIGlmIChyZXNl
cnZlZEVycm9yQ2hlY2sobGluZSwgaWRlbnRpZmllcikpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgCisgICAgICAgIHZhcmlhYmxlID0gbmV3IFRWYXJpYWJsZSgmaWRlbnRpZmll
ciwgVFR5cGUodHlwZSkpOworCisgICAgICAgIGlmICh0eXBlLmFycmF5U2l6ZSkKKyAgICAgICAg
ICAgIHZhcmlhYmxlLT5nZXRUeXBlKCkuc2V0QXJyYXlTaXplKHR5cGUuYXJyYXlTaXplKTsKKwor
ICAgICAgICBpZiAoISBzeW1ib2xUYWJsZS5pbnNlcnQoKnZhcmlhYmxlKSkgeworICAgICAgICAg
ICAgZGVsZXRlIHZhcmlhYmxlOworICAgICAgICAgICAgZXJyb3IobGluZSwgIklOVEVSTkFMIEVS
Uk9SIGluc2VydGluZyBuZXcgc3ltYm9sIiwgaWRlbnRpZmllci5jX3N0cigpKTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCEg
c3ltYm9sLT5pc1ZhcmlhYmxlKCkpIHsKKyAgICAgICAgICAgIGVycm9yKGxpbmUsICJ2YXJpYWJs
ZSBleHBlY3RlZCIsIGlkZW50aWZpZXIuY19zdHIoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZhcmlhYmxlID0gc3RhdGljX2Nhc3Q8VFZhcmlhYmxl
Kj4oc3ltYm9sKTsKKyAgICAgICAgaWYgKCEgdmFyaWFibGUtPmdldFR5cGUoKS5pc0FycmF5KCkp
IHsKKyAgICAgICAgICAgIGVycm9yKGxpbmUsICJyZWRlY2xhcmluZyBub24tYXJyYXkgYXMgYXJy
YXkiLCBpZGVudGlmaWVyLmNfc3RyKCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkgPiAw
KSB7CisgICAgICAgICAgICBlcnJvcihsaW5lLCAicmVkZWNsYXJhdGlvbiBvZiBhcnJheSB3aXRo
IHNpemUiLCBpZGVudGlmaWVyLmNfc3RyKCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmICghIHZhcmlhYmxlLT5nZXRUeXBlKCkuc2Ft
ZUVsZW1lbnRUeXBlKFRUeXBlKHR5cGUpKSkgeworICAgICAgICAgICAgZXJyb3IobGluZSwgInJl
ZGVjbGFyYXRpb24gb2YgYXJyYXkgd2l0aCBhIGRpZmZlcmVudCB0eXBlIiwgaWRlbnRpZmllci5j
X3N0cigpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKHR5cGUuYXJyYXlTaXplKQorICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKS5zZXRB
cnJheVNpemUodHlwZS5hcnJheVNpemUpOworICAgIH0gCisKKyAgICBpZiAodm9pZEVycm9yQ2hl
Y2sobGluZSwgaWRlbnRpZmllciwgdHlwZSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
cmV0dXJuIGZhbHNlOworfQorCisvLworLy8gRW5mb3JjZSBub24taW5pdGlhbGl6ZXIgdHlwZS9x
dWFsaWZpZXIgcnVsZXMuCisvLworLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJv
ci4KKy8vCitib29sIFRQYXJzZUNvbnRleHQ6Om5vbkluaXRDb25zdEVycm9yQ2hlY2soY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHR5cGUs
IGJvb2wgYXJyYXkpCit7CisgICAgaWYgKHR5cGUucXVhbGlmaWVyID09IEV2cUNvbnN0KQorICAg
IHsKKyAgICAgICAgLy8gTWFrZSB0aGUgcXVhbGlmaWVyIG1ha2Ugc2Vuc2UuCisgICAgICAgIHR5
cGUucXVhbGlmaWVyID0gRXZxVGVtcG9yYXJ5OworICAgICAgICAKKyAgICAgICAgaWYgKGFycmF5
KQorICAgICAgICB7CisgICAgICAgICAgICBlcnJvcihsaW5lLCAiYXJyYXlzIG1heSBub3QgYmUg
ZGVjbGFyZWQgY29uc3RhbnQgc2luY2UgdGhleSBjYW5ub3QgYmUgaW5pdGlhbGl6ZWQiLCBpZGVu
dGlmaWVyLmNfc3RyKCkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHR5cGUuaXNTdHJ1
Y3R1cmVDb250YWluaW5nQXJyYXlzKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVycm9yKGxp
bmUsICJzdHJ1Y3R1cmVzIGNvbnRhaW5pbmcgYXJyYXlzIG1heSBub3QgYmUgZGVjbGFyZWQgY29u
c3RhbnQgc2luY2UgdGhleSBjYW5ub3QgYmUgaW5pdGlhbGl6ZWQiLCBpZGVudGlmaWVyLmNfc3Ry
KCkpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgZXJy
b3IobGluZSwgInZhcmlhYmxlcyB3aXRoIHF1YWxpZmllciAnY29uc3QnIG11c3QgYmUgaW5pdGlh
bGl6ZWQiLCBpZGVudGlmaWVyLmNfc3RyKCkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCisvLworLy8gRG8gc2VtYW50
aWMgY2hlY2tpbmcgZm9yIGEgdmFyaWFibGUgZGVjbGFyYXRpb24gdGhhdCBoYXMgbm8gaW5pdGlh
bGl6ZXIsCisvLyBhbmQgdXBkYXRlIHRoZSBzeW1ib2wgdGFibGUuCisvLworLy8gUmV0dXJucyB0
cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KKy8vCitib29sIFRQYXJzZUNvbnRleHQ6Om5vbklu
aXRFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIs
IFRQdWJsaWNUeXBlJiB0eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSkKK3sKKyAgICBpZiAocmVz
ZXJ2ZWRFcnJvckNoZWNrKGxpbmUsIGlkZW50aWZpZXIpKQorICAgICAgICByZWNvdmVyKCk7CisK
KyAgICB2YXJpYWJsZSA9IG5ldyBUVmFyaWFibGUoJmlkZW50aWZpZXIsIFRUeXBlKHR5cGUpKTsK
KworICAgIGlmICghIHN5bWJvbFRhYmxlLmluc2VydCgqdmFyaWFibGUpKSB7CisgICAgICAgIGVy
cm9yKGxpbmUsICJyZWRlZmluaXRpb24iLCB2YXJpYWJsZS0+Z2V0TmFtZSgpLmNfc3RyKCkpOwor
ICAgICAgICBkZWxldGUgdmFyaWFibGU7CisgICAgICAgIHZhcmlhYmxlID0gMDsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKHZvaWRFcnJvckNoZWNrKGxpbmUsIGlkZW50
aWZpZXIsIHR5cGUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBUUGFyc2VDb250ZXh0OjpwYXJhbUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxv
YyYgbGluZSwgVFF1YWxpZmllciBxdWFsaWZpZXIsIFRRdWFsaWZpZXIgcGFyYW1RdWFsaWZpZXIs
IFRUeXBlKiB0eXBlKQoreyAgICAKKyAgICBpZiAocXVhbGlmaWVyICE9IEV2cUNvbnN0ICYmIHF1
YWxpZmllciAhPSBFdnFUZW1wb3JhcnkpIHsKKyAgICAgICAgZXJyb3IobGluZSwgInF1YWxpZmll
ciBub3QgYWxsb3dlZCBvbiBmdW5jdGlvbiBwYXJhbWV0ZXIiLCBnZXRRdWFsaWZpZXJTdHJpbmco
cXVhbGlmaWVyKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAocXVhbGlm
aWVyID09IEV2cUNvbnN0ICYmIHBhcmFtUXVhbGlmaWVyICE9IEV2cUluKSB7CisgICAgICAgIGVy
cm9yKGxpbmUsICJxdWFsaWZpZXIgbm90IGFsbG93ZWQgd2l0aCAiLCBnZXRRdWFsaWZpZXJTdHJp
bmcocXVhbGlmaWVyKSwgZ2V0UXVhbGlmaWVyU3RyaW5nKHBhcmFtUXVhbGlmaWVyKSk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmIChxdWFsaWZpZXIgPT0gRXZxQ29uc3Qp
CisgICAgICAgIHR5cGUtPnNldFF1YWxpZmllcihFdnFDb25zdFJlYWRPbmx5KTsKKyAgICBlbHNl
CisgICAgICAgIHR5cGUtPnNldFF1YWxpZmllcihwYXJhbVF1YWxpZmllcik7CisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgVFBhcnNlQ29udGV4dDo6ZXh0ZW5zaW9uRXJyb3JDaGVjayhj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJiBleHRlbnNpb24pCit7CisgICAg
Y29uc3QgVEV4dGVuc2lvbkJlaGF2aW9yJiBleHRCZWhhdmlvciA9IGV4dGVuc2lvbkJlaGF2aW9y
KCk7CisgICAgVEV4dGVuc2lvbkJlaGF2aW9yOjpjb25zdF9pdGVyYXRvciBpdGVyID0gZXh0QmVo
YXZpb3IuZmluZChleHRlbnNpb24uY19zdHIoKSk7CisgICAgaWYgKGl0ZXIgPT0gZXh0QmVoYXZp
b3IuZW5kKCkpIHsKKyAgICAgICAgZXJyb3IobGluZSwgImV4dGVuc2lvbiIsIGV4dGVuc2lvbi5j
X3N0cigpLCAiaXMgbm90IHN1cHBvcnRlZCIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisgICAgLy8gSW4gR0xTTCBFUywgYW4gZXh0ZW5zaW9uJ3MgZGVmYXVsdCBiZWhhdmlvciBpcyAi
ZGlzYWJsZSIuCisgICAgaWYgKGl0ZXItPnNlY29uZCA9PSBFQmhEaXNhYmxlIHx8IGl0ZXItPnNl
Y29uZCA9PSBFQmhVbmRlZmluZWQpIHsKKyAgICAgICAgZXJyb3IobGluZSwgImV4dGVuc2lvbiIs
IGV4dGVuc2lvbi5jX3N0cigpLCAiaXMgZGlzYWJsZWQiKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIGlmIChpdGVyLT5zZWNvbmQgPT0gRUJoV2FybikgeworICAgICAgICB3YXJu
aW5nKGxpbmUsICJleHRlbnNpb24iLCBleHRlbnNpb24uY19zdHIoKSwgImlzIGJlaW5nIHVzZWQi
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBUUGFyc2VDb250ZXh0OjpzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBjaGFyKiBleHRl
bnNpb24pCit7CisgICAgY29uc3QgVEV4dGVuc2lvbkJlaGF2aW9yJiBleHRiZWhhdmlvciA9IGV4
dGVuc2lvbkJlaGF2aW9yKCk7CisgICAgVEV4dGVuc2lvbkJlaGF2aW9yOjpjb25zdF9pdGVyYXRv
ciBpdGVyID0gZXh0YmVoYXZpb3IuZmluZChleHRlbnNpb24pOworICAgIHJldHVybiAoaXRlciAh
PSBleHRiZWhhdmlvci5lbmQoKSk7Cit9CisKK2Jvb2wgVFBhcnNlQ29udGV4dDo6aXNFeHRlbnNp
b25FbmFibGVkKGNvbnN0IGNoYXIqIGV4dGVuc2lvbikgY29uc3QKK3sKKyAgICBjb25zdCBURXh0
ZW5zaW9uQmVoYXZpb3ImIGV4dGJlaGF2aW9yID0gZXh0ZW5zaW9uQmVoYXZpb3IoKTsKKyAgICBU
RXh0ZW5zaW9uQmVoYXZpb3I6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBleHRiZWhhdmlvci5maW5k
KGV4dGVuc2lvbik7CisKKyAgICBpZiAoaXRlciA9PSBleHRiZWhhdmlvci5lbmQoKSkKKyAgICB7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gKGl0ZXItPnNlY29u
ZCA9PSBFQmhFbmFibGUgfHwgaXRlci0+c2Vjb25kID09IEVCaFJlcXVpcmUpOworfQorCisvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBOb24tRXJyb3JzLgorLy8KKy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLworCisvLworLy8gTG9vayB1cCBhIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIHN5
bWJvbCB0YWJsZSwgYW5kIG1ha2Ugc3VyZSBpdCBpcyBhIGZ1bmN0aW9uLgorLy8KKy8vIFJldHVy
biB0aGUgZnVuY3Rpb24gc3ltYm9sIGlmIGZvdW5kLCBvdGhlcndpc2UgMC4KKy8vCitjb25zdCBU
RnVuY3Rpb24qIFRQYXJzZUNvbnRleHQ6OmZpbmRGdW5jdGlvbihjb25zdCBUU291cmNlTG9jJiBs
aW5lLCBURnVuY3Rpb24qIGNhbGwsIGJvb2wgKmJ1aWx0SW4pCit7CisgICAgLy8gRmlyc3QgZmlu
ZCBieSB1bm1hbmdsZWQgbmFtZSB0byBjaGVjayB3aGV0aGVyIHRoZSBmdW5jdGlvbiBuYW1lIGhh
cyBiZWVuCisgICAgLy8gaGlkZGVuIGJ5IGEgdmFyaWFibGUgbmFtZSBvciBzdHJ1Y3QgdHlwZW5h
bWUuCisgICAgLy8gSWYgYSBmdW5jdGlvbiBpcyBmb3VuZCwgY2hlY2sgZm9yIG9uZSB3aXRoIGEg
bWF0Y2hpbmcgYXJndW1lbnQgbGlzdC4KKyAgICBjb25zdCBUU3ltYm9sKiBzeW1ib2wgPSBzeW1i
b2xUYWJsZS5maW5kKGNhbGwtPmdldE5hbWUoKSwgYnVpbHRJbik7CisgICAgaWYgKHN5bWJvbCA9
PSAwIHx8IHN5bWJvbC0+aXNGdW5jdGlvbigpKSB7CisgICAgICAgIHN5bWJvbCA9IHN5bWJvbFRh
YmxlLmZpbmQoY2FsbC0+Z2V0TWFuZ2xlZE5hbWUoKSwgYnVpbHRJbik7CisgICAgfQorCisgICAg
aWYgKHN5bWJvbCA9PSAwKSB7CisgICAgICAgIGVycm9yKGxpbmUsICJubyBtYXRjaGluZyBvdmVy
bG9hZGVkIGZ1bmN0aW9uIGZvdW5kIiwgY2FsbC0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoIXN5bWJvbC0+aXNGdW5jdGlvbigpKSB7Cisg
ICAgICAgIGVycm9yKGxpbmUsICJmdW5jdGlvbiBuYW1lIGV4cGVjdGVkIiwgY2FsbC0+Z2V0TmFt
ZSgpLmNfc3RyKCkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgVEZ1bmN0aW9uKj4oc3ltYm9sKTsKK30KKworLy8KKy8vIEluaXRpYWxp
emVycyBzaG93IHVwIGluIHNldmVyYWwgcGxhY2VzIGluIHRoZSBncmFtbWFyLiAgSGF2ZSBvbmUg
c2V0IG9mCisvLyBjb2RlIHRvIGhhbmRsZSB0aGVtIGhlcmUuCisvLworYm9vbCBUUGFyc2VDb250
ZXh0OjpleGVjdXRlSW5pdGlhbGl6ZXIoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYg
aWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHBUeXBlLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5pdGlhbGl6ZXIsIFRJbnRlcm1Ob2RlKiYg
aW50ZXJtTm9kZSwgVFZhcmlhYmxlKiB2YXJpYWJsZSkKK3sKKyAgICBUVHlwZSB0eXBlID0gVFR5
cGUocFR5cGUpOworCisgICAgaWYgKHZhcmlhYmxlID09IDApIHsKKyAgICAgICAgaWYgKHJlc2Vy
dmVkRXJyb3JDaGVjayhsaW5lLCBpZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgICAgIGlmICh2b2lkRXJyb3JDaGVjayhsaW5lLCBpZGVudGlmaWVyLCBwVHlwZSkp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAvLworICAgICAgICAvLyBhZGQg
dmFyaWFibGUgdG8gc3ltYm9sIHRhYmxlCisgICAgICAgIC8vCisgICAgICAgIHZhcmlhYmxlID0g
bmV3IFRWYXJpYWJsZSgmaWRlbnRpZmllciwgdHlwZSk7CisgICAgICAgIGlmICghIHN5bWJvbFRh
YmxlLmluc2VydCgqdmFyaWFibGUpKSB7CisgICAgICAgICAgICBlcnJvcihsaW5lLCAicmVkZWZp
bml0aW9uIiwgdmFyaWFibGUtPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgLy8gZG9uJ3QgZGVsZXRlIHZhcmlhYmxlLCBpdCdzIHVzZWQg
YnkgZXJyb3IgcmVjb3ZlcnksIGFuZCB0aGUgcG9vbCAKKyAgICAgICAgICAgIC8vIHBvcCB3aWxs
IHRha2UgY2FyZSBvZiB0aGUgbWVtb3J5CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLworICAg
IC8vIGlkZW50aWZpZXIgbXVzdCBiZSBvZiB0eXBlIGNvbnN0YW50LCBhIGdsb2JhbCwgb3IgYSB0
ZW1wb3JhcnkKKyAgICAvLworICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gdmFyaWFibGUtPmdl
dFR5cGUoKS5nZXRRdWFsaWZpZXIoKTsKKyAgICBpZiAoKHF1YWxpZmllciAhPSBFdnFUZW1wb3Jh
cnkpICYmIChxdWFsaWZpZXIgIT0gRXZxR2xvYmFsKSAmJiAocXVhbGlmaWVyICE9IEV2cUNvbnN0
KSkgeworICAgICAgICBlcnJvcihsaW5lLCAiIGNhbm5vdCBpbml0aWFsaXplIHRoaXMgdHlwZSBv
ZiBxdWFsaWZpZXIgIiwgdmFyaWFibGUtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXJTdHJpbmcoKSk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAvLworICAgIC8vIHRlc3QgZm9yIGFu
ZCBwcm9wYWdhdGUgY29uc3RhbnQKKyAgICAvLworCisgICAgaWYgKHF1YWxpZmllciA9PSBFdnFD
b25zdCkgeworICAgICAgICBpZiAocXVhbGlmaWVyICE9IGluaXRpYWxpemVyLT5nZXRUeXBlKCku
Z2V0UXVhbGlmaWVyKCkpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5m
b1N0cmVhbTsKKyAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiJyIgPDwgdmFyaWFibGUt
PmdldFR5cGUoKS5nZXRDb21wbGV0ZVN0cmluZygpIDw8ICInIjsKKyAgICAgICAgICAgIHN0ZDo6
c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKKyAgICAgICAgICAgIGVy
cm9yKGxpbmUsICIgYXNzaWduaW5nIG5vbi1jb25zdGFudCB0byIsICI9IiwgZXh0cmFJbmZvLmNf
c3RyKCkpOworICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKS5zZXRRdWFsaWZpZXIoRXZx
VGVtcG9yYXJ5KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAg
IGlmICh0eXBlICE9IGluaXRpYWxpemVyLT5nZXRUeXBlKCkpIHsKKyAgICAgICAgICAgIGVycm9y
KGxpbmUsICIgbm9uLW1hdGNoaW5nIHR5cGVzIGZvciBjb25zdCBpbml0aWFsaXplciAiLCAKKyAg
ICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllclN0cmluZygpKTsK
KyAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCkuc2V0UXVhbGlmaWVyKEV2cVRlbXBvcmFy
eSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaW5p
dGlhbGl6ZXItPmdldEFzQ29uc3RhbnRVbmlvbigpKSB7IAorICAgICAgICAgICAgdmFyaWFibGUt
PnNoYXJlQ29uc3RQb2ludGVyKGluaXRpYWxpemVyLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0
VW5pb25BcnJheVBvaW50ZXIoKSk7CisgICAgICAgIH0gZWxzZSBpZiAoaW5pdGlhbGl6ZXItPmdl
dEFzU3ltYm9sTm9kZSgpKSB7CisgICAgICAgICAgICBjb25zdCBUU3ltYm9sKiBzeW1ib2wgPSBz
eW1ib2xUYWJsZS5maW5kKGluaXRpYWxpemVyLT5nZXRBc1N5bWJvbE5vZGUoKS0+Z2V0U3ltYm9s
KCkpOworICAgICAgICAgICAgY29uc3QgVFZhcmlhYmxlKiB0VmFyID0gc3RhdGljX2Nhc3Q8Y29u
c3QgVFZhcmlhYmxlKj4oc3ltYm9sKTsKKworICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiogY29u
c3RBcnJheSA9IHRWYXItPmdldENvbnN0UG9pbnRlcigpOworICAgICAgICAgICAgdmFyaWFibGUt
PnNoYXJlQ29uc3RQb2ludGVyKGNvbnN0QXJyYXkpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOworICAgICAgICAgICAgZXh0
cmFJbmZvU3RyZWFtIDw8ICInIiA8PCB2YXJpYWJsZS0+Z2V0VHlwZSgpLmdldENvbXBsZXRlU3Ry
aW5nKCkgPDwgIiciOworICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJ
bmZvU3RyZWFtLnN0cigpOworICAgICAgICAgICAgZXJyb3IobGluZSwgIiBjYW5ub3QgYXNzaWdu
IHRvIiwgIj0iLCBleHRyYUluZm8uY19zdHIoKSk7CisgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0
VHlwZSgpLnNldFF1YWxpZmllcihFdnFUZW1wb3JhcnkpOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICB9CisgCisgICAgaWYgKHF1YWxpZmllciAhPSBFdnFDb25zdCkg
eworICAgICAgICBUSW50ZXJtU3ltYm9sKiBpbnRlcm1TeW1ib2wgPSBpbnRlcm1lZGlhdGUuYWRk
U3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpLCB2YXJpYWJsZS0+Z2V0TmFtZSgpLCB2YXJp
YWJsZS0+Z2V0VHlwZSgpLCBsaW5lKTsKKyAgICAgICAgaW50ZXJtTm9kZSA9IGludGVybWVkaWF0
ZS5hZGRBc3NpZ24oRU9wSW5pdGlhbGl6ZSwgaW50ZXJtU3ltYm9sLCBpbml0aWFsaXplciwgbGlu
ZSk7CisgICAgICAgIGlmIChpbnRlcm1Ob2RlID09IDApIHsKKyAgICAgICAgICAgIGFzc2lnbkVy
cm9yKGxpbmUsICI9IiwgaW50ZXJtU3ltYm9sLT5nZXRDb21wbGV0ZVN0cmluZygpLCBpbml0aWFs
aXplci0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQorICAgIH0gZWxzZSAKKyAgICAgICAgaW50ZXJtTm9kZSA9IDA7CisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgVFBhcnNlQ29udGV4dDo6YXJlQWxsQ2hpbGRDb25zdChUSW50
ZXJtQWdncmVnYXRlKiBhZ2dyTm9kZSkKK3sKKyAgICBBU1NFUlQoYWdnck5vZGUgIT0gTlVMTCk7
CisgICAgaWYgKCFhZ2dyTm9kZS0+aXNDb25zdHJ1Y3RvcigpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBib29sIGFsbENvbnN0YW50ID0gdHJ1ZTsKKworICAgIC8vIGNoZWNrIGlmIGFs
bCB0aGUgY2hpbGQgbm9kZXMgYXJlIGNvbnN0YW50cyBzbyB0aGF0IHRoZXkgY2FuIGJlIGluc2Vy
dGVkIGludG8gCisgICAgLy8gdGhlIHBhcmVudCBub2RlCisgICAgVEludGVybVNlcXVlbmNlICZz
ZXF1ZW5jZSA9IGFnZ3JOb2RlLT5nZXRTZXF1ZW5jZSgpIDsKKyAgICBmb3IgKFRJbnRlcm1TZXF1
ZW5jZTo6aXRlcmF0b3IgcCA9IHNlcXVlbmNlLmJlZ2luKCk7IHAgIT0gc2VxdWVuY2UuZW5kKCk7
ICsrcCkgeworICAgICAgICBpZiAoISgqcCktPmdldEFzVHlwZWQoKS0+Z2V0QXNDb25zdGFudFVu
aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIGFs
bENvbnN0YW50OworfQorCisvLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gdGVzdCBmb3IgdGhl
IGNvcnJlY3RuZXNzIG9mIHRoZSBwYXJhbWV0ZXJzIHBhc3NlZCB0byB2YXJpb3VzIGNvbnN0cnVj
dG9yIGZ1bmN0aW9ucworLy8gYW5kIGFsc28gY29udmVydCB0aGVtIHRvIHRoZSByaWdodCBkYXRh
dHlwZSBpZiBpdCBpcyBhbGxvd2VkIGFuZCByZXF1aXJlZC4gCisvLworLy8gUmV0dXJucyAwIGZv
ciBhbiBlcnJvciBvciB0aGUgY29uc3RydWN0ZWQgbm9kZSAoYWdncmVnYXRlIG9yIHR5cGVkKSBm
b3Igbm8gZXJyb3IuCisvLworVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdHJ1
Y3RvcihUSW50ZXJtTm9kZSogbm9kZSwgY29uc3QgVFR5cGUqIHR5cGUsIFRPcGVyYXRvciBvcCwg
VEZ1bmN0aW9uKiBmbkNhbGwsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCit7CisgICAgaWYgKG5v
ZGUgPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBUSW50ZXJtQWdncmVnYXRlKiBhZ2dy
Tm9kZSA9IG5vZGUtPmdldEFzQWdncmVnYXRlKCk7CisgICAgCisgICAgVEZpZWxkTGlzdDo6Y29u
c3RfaXRlcmF0b3IgbWVtYmVyRmllbGRzOworICAgIGlmIChvcCA9PSBFT3BDb25zdHJ1Y3RTdHJ1
Y3QpCisgICAgICAgIG1lbWJlckZpZWxkcyA9IHR5cGUtPmdldFN0cnVjdCgpLT5maWVsZHMoKS5i
ZWdpbigpOworICAgIAorICAgIFRUeXBlIGVsZW1lbnRUeXBlID0gKnR5cGU7CisgICAgaWYgKHR5
cGUtPmlzQXJyYXkoKSkKKyAgICAgICAgZWxlbWVudFR5cGUuY2xlYXJBcnJheW5lc3MoKTsKKwor
ICAgIGJvb2wgc2luZ2xlQXJnOworICAgIGlmIChhZ2dyTm9kZSkgeworICAgICAgICBpZiAoYWdn
ck5vZGUtPmdldE9wKCkgIT0gRU9wTnVsbCB8fCBhZ2dyTm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXpl
KCkgPT0gMSkKKyAgICAgICAgICAgIHNpbmdsZUFyZyA9IHRydWU7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHNpbmdsZUFyZyA9IGZhbHNlOworICAgIH0gZWxzZQorICAgICAgICBzaW5nbGVB
cmcgPSB0cnVlOworCisgICAgVEludGVybVR5cGVkICpuZXdOb2RlOworICAgIGlmIChzaW5nbGVB
cmcpIHsKKyAgICAgICAgLy8gSWYgc3RydWN0dXJlIGNvbnN0cnVjdG9yIG9yIGFycmF5IGNvbnN0
cnVjdG9yIGlzIGJlaW5nIGNhbGxlZCAKKyAgICAgICAgLy8gZm9yIG9ubHkgb25lIHBhcmFtZXRl
ciBpbnNpZGUgdGhlIHN0cnVjdHVyZSwgd2UgbmVlZCB0byBjYWxsIGNvbnN0cnVjdFN0cnVjdCBm
dW5jdGlvbiBvbmNlLgorICAgICAgICBpZiAodHlwZS0+aXNBcnJheSgpKQorICAgICAgICAgICAg
bmV3Tm9kZSA9IGNvbnN0cnVjdFN0cnVjdChub2RlLCAmZWxlbWVudFR5cGUsIDEsIG5vZGUtPmdl
dExpbmUoKSwgZmFsc2UpOworICAgICAgICBlbHNlIGlmIChvcCA9PSBFT3BDb25zdHJ1Y3RTdHJ1
Y3QpCisgICAgICAgICAgICBuZXdOb2RlID0gY29uc3RydWN0U3RydWN0KG5vZGUsICgqbWVtYmVy
RmllbGRzKS0+dHlwZSgpLCAxLCBub2RlLT5nZXRMaW5lKCksIGZhbHNlKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbmV3Tm9kZSA9IGNvbnN0cnVjdEJ1aWx0SW4odHlwZSwgb3AsIG5vZGUs
IG5vZGUtPmdldExpbmUoKSwgZmFsc2UpOworCisgICAgICAgIGlmIChuZXdOb2RlICYmIG5ld05v
ZGUtPmdldEFzQWdncmVnYXRlKCkpIHsKKyAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogY29uc3RD
b25zdHJ1Y3RvciA9IGZvbGRDb25zdENvbnN0cnVjdG9yKG5ld05vZGUtPmdldEFzQWdncmVnYXRl
KCksICp0eXBlKTsKKyAgICAgICAgICAgIGlmIChjb25zdENvbnN0cnVjdG9yKQorICAgICAgICAg
ICAgICAgIHJldHVybiBjb25zdENvbnN0cnVjdG9yOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIG5ld05vZGU7CisgICAgfQorICAgIAorICAgIC8vCisgICAgLy8gSGFuZGxlIGxpc3Qgb2Yg
YXJndW1lbnRzLgorICAgIC8vCisgICAgVEludGVybVNlcXVlbmNlICZzZXF1ZW5jZVZlY3RvciA9
IGFnZ3JOb2RlLT5nZXRTZXF1ZW5jZSgpIDsgICAgLy8gU3RvcmVzIHRoZSBpbmZvcm1hdGlvbiBh
Ym91dCB0aGUgcGFyYW1ldGVyIHRvIHRoZSBjb25zdHJ1Y3RvcgorICAgIC8vIGlmIHRoZSBzdHJ1
Y3R1cmUgY29uc3RydWN0b3IgY29udGFpbnMgbW9yZSB0aGFuIG9uZSBwYXJhbWV0ZXIsIHRoZW4g
Y29uc3RydWN0CisgICAgLy8gZWFjaCBwYXJhbWV0ZXIKKyAgICAKKyAgICBpbnQgcGFyYW1Db3Vu
dCA9IDA7ICAvLyBrZWVwcyBhIHRyYWNrIG9mIHRoZSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIgbnVt
YmVyIGJlaW5nIGNoZWNrZWQgICAgCisgICAgCisgICAgLy8gZm9yIGVhY2ggcGFyYW1ldGVyIHRv
IHRoZSBjb25zdHJ1Y3RvciBjYWxsLCBjaGVjayB0byBzZWUgaWYgdGhlIHJpZ2h0IHR5cGUgaXMg
cGFzc2VkIG9yIGNvbnZlcnQgdGhlbSAKKyAgICAvLyB0byB0aGUgcmlnaHQgdHlwZSBpZiBwb3Nz
aWJsZSAoYW5kIGFsbG93ZWQpLgorICAgIC8vIGZvciBzdHJ1Y3R1cmUgY29uc3RydWN0b3JzLCBq
dXN0IGNoZWNrIGlmIHRoZSByaWdodCB0eXBlIGlzIHBhc3NlZCwgbm8gY29udmVyc2lvbiBpcyBh
bGxvd2VkLgorICAgIAorICAgIGZvciAoVEludGVybVNlcXVlbmNlOjppdGVyYXRvciBwID0gc2Vx
dWVuY2VWZWN0b3IuYmVnaW4oKTsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHAgIT0gc2VxdWVuY2VWZWN0b3IuZW5kKCk7IHArKywgcGFyYW1Db3VudCsrKSB7CisgICAgICAg
IGlmICh0eXBlLT5pc0FycmF5KCkpCisgICAgICAgICAgICBuZXdOb2RlID0gY29uc3RydWN0U3Ry
dWN0KCpwLCAmZWxlbWVudFR5cGUsIHBhcmFtQ291bnQrMSwgbm9kZS0+Z2V0TGluZSgpLCB0cnVl
KTsKKyAgICAgICAgZWxzZSBpZiAob3AgPT0gRU9wQ29uc3RydWN0U3RydWN0KQorICAgICAgICAg
ICAgbmV3Tm9kZSA9IGNvbnN0cnVjdFN0cnVjdCgqcCwgbWVtYmVyRmllbGRzW3BhcmFtQ291bnRd
LT50eXBlKCksIHBhcmFtQ291bnQrMSwgbm9kZS0+Z2V0TGluZSgpLCB0cnVlKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgbmV3Tm9kZSA9IGNvbnN0cnVjdEJ1aWx0SW4odHlwZSwgb3AsICpw
LCBub2RlLT5nZXRMaW5lKCksIHRydWUpOworICAgICAgICAKKyAgICAgICAgaWYgKG5ld05vZGUp
IHsKKyAgICAgICAgICAgICpwID0gbmV3Tm9kZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFRJ
bnRlcm1UeXBlZCogY29uc3RydWN0b3IgPSBpbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0
b3IoYWdnck5vZGUsIG9wLCBsaW5lKTsKKyAgICBUSW50ZXJtVHlwZWQqIGNvbnN0Q29uc3RydWN0
b3IgPSBmb2xkQ29uc3RDb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rvci0+Z2V0QXNBZ2dyZWdhdGUoKSwg
KnR5cGUpOworICAgIGlmIChjb25zdENvbnN0cnVjdG9yKQorICAgICAgICByZXR1cm4gY29uc3RD
b25zdHJ1Y3RvcjsKKworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworVEludGVybVR5cGVk
KiBUUGFyc2VDb250ZXh0Ojpmb2xkQ29uc3RDb25zdHJ1Y3RvcihUSW50ZXJtQWdncmVnYXRlKiBh
Z2dyTm9kZSwgY29uc3QgVFR5cGUmIHR5cGUpCit7CisgICAgYm9vbCBjYW5CZUZvbGRlZCA9IGFy
ZUFsbENoaWxkQ29uc3QoYWdnck5vZGUpOworICAgIGFnZ3JOb2RlLT5zZXRUeXBlKHR5cGUpOwor
ICAgIGlmIChjYW5CZUZvbGRlZCkgeworICAgICAgICBib29sIHJldHVyblZhbCA9IGZhbHNlOwor
ICAgICAgICBDb25zdGFudFVuaW9uKiB1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bdHlw
ZS5nZXRPYmplY3RTaXplKCldOworICAgICAgICBpZiAoYWdnck5vZGUtPmdldFNlcXVlbmNlKCku
c2l6ZSgpID09IDEpICB7CisgICAgICAgICAgICByZXR1cm5WYWwgPSBpbnRlcm1lZGlhdGUucGFy
c2VDb25zdFRyZWUoYWdnck5vZGUtPmdldExpbmUoKSwgYWdnck5vZGUsIHVuaW9uQXJyYXksIGFn
Z3JOb2RlLT5nZXRPcCgpLCBzeW1ib2xUYWJsZSwgIHR5cGUsIHRydWUpOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuVmFsID0gaW50ZXJtZWRpYXRlLnBhcnNl
Q29uc3RUcmVlKGFnZ3JOb2RlLT5nZXRMaW5lKCksIGFnZ3JOb2RlLCB1bmlvbkFycmF5LCBhZ2dy
Tm9kZS0+Z2V0T3AoKSwgc3ltYm9sVGFibGUsICB0eXBlKTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAocmV0dXJuVmFsKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgcmV0dXJuIGlu
dGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIHR5cGUsIGFnZ3JOb2RlLT5n
ZXRMaW5lKCkpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvLyBGdW5jdGlvbiBmb3Ig
Y29uc3RydWN0b3IgaW1wbGVtZW50YXRpb24uIENhbGxzIGFkZFVuYXJ5TWF0aCB3aXRoIGFwcHJv
cHJpYXRlIEVPcCB2YWx1ZQorLy8gZm9yIHRoZSBwYXJhbWV0ZXIgdG8gdGhlIGNvbnN0cnVjdG9y
IChwYXNzZWQgdG8gdGhpcyBmdW5jdGlvbikuIEVzc2VudGlhbGx5LCBpdCBjb252ZXJ0cworLy8g
dGhlIHBhcmFtZXRlciB0eXBlcyBjb3JyZWN0bHkuIElmIGEgY29uc3RydWN0b3IgZXhwZWN0cyBh
biBpbnQgKGxpa2UgaXZlYzIpIGFuZCBpcyBwYXNzZWQgYSAKKy8vIGZsb2F0LCB0aGVuIGZsb2F0
IGlzIGNvbnZlcnRlZCB0byBpbnQuCisvLworLy8gUmV0dXJucyAwIGZvciBhbiBlcnJvciBvciB0
aGUgY29uc3RydWN0ZWQgbm9kZS4KKy8vCitUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmNv
bnN0cnVjdEJ1aWx0SW4oY29uc3QgVFR5cGUqIHR5cGUsIFRPcGVyYXRvciBvcCwgVEludGVybU5v
ZGUqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGJvb2wgc3Vic2V0KQoreworICAgIFRJ
bnRlcm1UeXBlZCogbmV3Tm9kZTsKKyAgICBUT3BlcmF0b3IgYmFzaWNPcDsKKworICAgIC8vCisg
ICAgLy8gRmlyc3QsIGNvbnZlcnQgdHlwZXMgYXMgbmVlZGVkLgorICAgIC8vCisgICAgc3dpdGNo
IChvcCkgeworICAgIGNhc2UgRU9wQ29uc3RydWN0VmVjMjoKKyAgICBjYXNlIEVPcENvbnN0cnVj
dFZlYzM6CisgICAgY2FzZSBFT3BDb25zdHJ1Y3RWZWM0OgorICAgIGNhc2UgRU9wQ29uc3RydWN0
TWF0MjoKKyAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDM6CisgICAgY2FzZSBFT3BDb25zdHJ1Y3RN
YXQ0OgorICAgIGNhc2UgRU9wQ29uc3RydWN0RmxvYXQ6CisgICAgICAgIGJhc2ljT3AgPSBFT3BD
b25zdHJ1Y3RGbG9hdDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEVPcENvbnN0cnVjdElW
ZWMyOgorICAgIGNhc2UgRU9wQ29uc3RydWN0SVZlYzM6CisgICAgY2FzZSBFT3BDb25zdHJ1Y3RJ
VmVjNDoKKyAgICBjYXNlIEVPcENvbnN0cnVjdEludDoKKyAgICAgICAgYmFzaWNPcCA9IEVPcENv
bnN0cnVjdEludDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEVPcENvbnN0cnVjdEJWZWMy
OgorICAgIGNhc2UgRU9wQ29uc3RydWN0QlZlYzM6CisgICAgY2FzZSBFT3BDb25zdHJ1Y3RCVmVj
NDoKKyAgICBjYXNlIEVPcENvbnN0cnVjdEJvb2w6CisgICAgICAgIGJhc2ljT3AgPSBFT3BDb25z
dHJ1Y3RCb29sOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIGVycm9y
KGxpbmUsICJ1bnN1cHBvcnRlZCBjb25zdHJ1Y3Rpb24iLCAiIik7CisgICAgICAgIHJlY292ZXIo
KTsKKworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgbmV3Tm9kZSA9IGludGVybWVkaWF0
ZS5hZGRVbmFyeU1hdGgoYmFzaWNPcCwgbm9kZSwgbm9kZS0+Z2V0TGluZSgpLCBzeW1ib2xUYWJs
ZSk7CisgICAgaWYgKG5ld05vZGUgPT0gMCkgeworICAgICAgICBlcnJvcihsaW5lLCAiY2FuJ3Qg
Y29udmVydCIsICJjb25zdHJ1Y3RvciIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAg
ICAvLworICAgIC8vIE5vdywgaWYgdGhlcmUgc3RpbGwgaXNuJ3QgYW4gb3BlcmF0aW9uIHRvIGRv
IHRoZSBjb25zdHJ1Y3Rpb24sIGFuZCB3ZSBuZWVkIG9uZSwgYWRkIG9uZS4KKyAgICAvLworICAg
IAorICAgIC8vIE90aGVyd2lzZSwgc2tpcCBvdXQgZWFybHkuCisgICAgaWYgKHN1YnNldCB8fCAo
bmV3Tm9kZSAhPSBub2RlICYmIG5ld05vZGUtPmdldFR5cGUoKSA9PSAqdHlwZSkpCisgICAgICAg
IHJldHVybiBuZXdOb2RlOworCisgICAgLy8gc2V0QWdncmVnYXRlT3BlcmF0b3Igd2lsbCBpbnNl
cnQgYSBuZXcgbm9kZSBmb3IgdGhlIGNvbnN0cnVjdG9yLCBhcyBuZWVkZWQuCisgICAgcmV0dXJu
IGludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcihuZXdOb2RlLCBvcCwgbGluZSk7Cit9
CisKKy8vIFRoaXMgZnVuY3Rpb24gdGVzdHMgZm9yIHRoZSB0eXBlIG9mIHRoZSBwYXJhbWV0ZXJz
IHRvIHRoZSBzdHJ1Y3R1cmVzIGNvbnN0cnVjdG9ycy4gUmFpc2VzCisvLyBhbiBlcnJvciBtZXNz
YWdlIGlmIHRoZSBleHBlY3RlZCB0eXBlIGRvZXMgbm90IG1hdGNoIHRoZSBwYXJhbWV0ZXIgcGFz
c2VkIHRvIHRoZSBjb25zdHJ1Y3Rvci4KKy8vCisvLyBSZXR1cm5zIDAgZm9yIGFuIGVycm9yIG9y
IHRoZSBpbnB1dCBub2RlIGl0c2VsZiBpZiB0aGUgZXhwZWN0ZWQgYW5kIHRoZSBnaXZlbiBwYXJh
bWV0ZXIgdHlwZXMgbWF0Y2guCisvLworVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0Ojpjb25z
dHJ1Y3RTdHJ1Y3QoVEludGVybU5vZGUqIG5vZGUsIFRUeXBlKiB0eXBlLCBpbnQgcGFyYW1Db3Vu
dCwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgYm9vbCBzdWJzZXQpCit7CisgICAgaWYgKCp0eXBl
ID09IG5vZGUtPmdldEFzVHlwZWQoKS0+Z2V0VHlwZSgpKSB7CisgICAgICAgIGlmIChzdWJzZXQp
CisgICAgICAgICAgICByZXR1cm4gbm9kZS0+Z2V0QXNUeXBlZCgpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICByZXR1cm4gaW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKG5vZGUt
PmdldEFzVHlwZWQoKSwgRU9wQ29uc3RydWN0U3RydWN0LCBsaW5lKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07CisgICAgICAgIGV4dHJh
SW5mb1N0cmVhbSA8PCAiY2Fubm90IGNvbnZlcnQgcGFyYW1ldGVyICIgPDwgcGFyYW1Db3VudCAK
KyAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgZnJvbSAnIiA8PCBub2RlLT5nZXRBc1R5cGVk
KCktPmdldFR5cGUoKS5nZXRCYXNpY1N0cmluZygpCisgICAgICAgICAgICAgICAgICAgICAgICA8
PCAiJyB0byAnIiA8PCB0eXBlLT5nZXRCYXNpY1N0cmluZygpIDw8ICInIjsKKyAgICAgICAgc3Rk
OjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOworICAgICAgICBlcnJv
cihsaW5lLCAiIiwgImNvbnN0cnVjdG9yIiwgZXh0cmFJbmZvLmNfc3RyKCkpOworICAgICAgICBy
ZWNvdmVyKCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKy8vCisvLyBUaGlzIGZ1bmN0
aW9uIHJldHVybnMgdGhlIHRyZWUgcmVwcmVzZW50YXRpb24gZm9yIHRoZSB2ZWN0b3IgZmllbGQo
cykgYmVpbmcgYWNjZXNzZWQgZnJvbSBjb250YW50IHZlY3Rvci4KKy8vIElmIG9ubHkgb25lIGNv
bXBvbmVudCBvZiB2ZWN0b3IgaXMgYWNjZXNzZWQgKHYueCBvciB2WzBdIHdoZXJlIHYgaXMgYSBj
b250YW50IHZlY3RvciksIHRoZW4gYSBjb250YW50IG5vZGUgaXMKKy8vIHJldHVybmVkLCBlbHNl
IGFuIGFnZ3JlZ2F0ZSBub2RlIGlzIHJldHVybmVkIChmb3Igdi54eSkuIFRoZSBpbnB1dCB0byB0
aGlzIGZ1bmN0aW9uIGNvdWxkIGVpdGhlciBiZSB0aGUgc3ltYm9sCisvLyBub2RlIG9yIGl0IGNv
dWxkIGJlIHRoZSBpbnRlcm1lZGlhdGUgdHJlZSByZXByZXNlbnRhdGlvbiBvZiBhY2Nlc3Npbmcg
ZmllbGRzIGluIGEgY29uc3RhbnQgc3RydWN0dXJlIG9yIGNvbHVtbiBvZiAKKy8vIGEgY29uc3Rh
bnQgbWF0cml4LgorLy8KK1RJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RWZWN0
b3JOb2RlKFRWZWN0b3JGaWVsZHMmIGZpZWxkcywgVEludGVybVR5cGVkKiBub2RlLCBjb25zdCBU
U291cmNlTG9jJiBsaW5lKQoreworICAgIFRJbnRlcm1UeXBlZCogdHlwZWROb2RlOworICAgIFRJ
bnRlcm1Db25zdGFudFVuaW9uKiB0ZW1wQ29uc3RhbnROb2RlID0gbm9kZS0+Z2V0QXNDb25zdGFu
dFVuaW9uKCk7CisKKyAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5OworICAgIGlmICh0ZW1w
Q29uc3RhbnROb2RlKSB7CisgICAgICAgIHVuaW9uQXJyYXkgPSB0ZW1wQ29uc3RhbnROb2RlLT5n
ZXRVbmlvbkFycmF5UG9pbnRlcigpOworCisgICAgICAgIGlmICghdW5pb25BcnJheSkgeworICAg
ICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeyAvLyBUaGUgbm9k
ZSBoYXMgdG8gYmUgZWl0aGVyIGEgc3ltYm9sIG5vZGUgb3IgYW4gYWdncmVnYXRlIG5vZGUgb3Ig
YSB0ZW1wQ29uc3RhbnQgbm9kZSwgZWxzZSwgaXRzIGFuIGVycm9yCisgICAgICAgIGVycm9yKGxp
bmUsICJDYW5ub3Qgb2Zmc2V0IGludG8gdGhlIHZlY3RvciIsICJFcnJvciIpOworICAgICAgICBy
ZWNvdmVyKCk7CisKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgQ29uc3RhbnRVbmlv
biogY29uc3RBcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW2ZpZWxkcy5udW1dOworCisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBmaWVsZHMubnVtOyBpKyspIHsKKyAgICAgICAgaWYgKGZpZWxkcy5v
ZmZzZXRzW2ldID49IG5vZGUtPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpKSB7CisgICAgICAg
ICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07CisgICAgICAgICAgICBleHRy
YUluZm9TdHJlYW0gPDwgInZlY3RvciBmaWVsZCBzZWxlY3Rpb24gb3V0IG9mIHJhbmdlICciIDw8
IGZpZWxkcy5vZmZzZXRzW2ldIDw8ICInIjsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJh
SW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKKyAgICAgICAgICAgIGVycm9yKGxpbmUsICIi
LCAiWyIsIGV4dHJhSW5mby5jX3N0cigpKTsKKyAgICAgICAgICAgIHJlY292ZXIoKTsKKyAgICAg
ICAgICAgIGZpZWxkcy5vZmZzZXRzW2ldID0gMDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgY29uc3RBcnJheVtpXSA9IHVuaW9uQXJyYXlbZmllbGRzLm9mZnNldHNbaV1dOworCisgICAg
fSAKKyAgICB0eXBlZE5vZGUgPSBpbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbihjb25zdEFy
cmF5LCBub2RlLT5nZXRUeXBlKCksIGxpbmUpOworICAgIHJldHVybiB0eXBlZE5vZGU7Cit9CisK
Ky8vCisvLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGNvbHVtbiBiZWluZyBhY2Nlc3NlZCBm
cm9tIGEgY29uc3RhbnQgbWF0cml4LiBUaGUgdmFsdWVzIGFyZSByZXRyaWV2ZWQgZnJvbQorLy8g
dGhlIHN5bWJvbCB0YWJsZSBhbmQgcGFyc2UtdHJlZSBpcyBidWlsdCBmb3IgYSB2ZWN0b3IgKGVh
Y2ggY29sdW1uIG9mIGEgbWF0cml4IGlzIGEgdmVjdG9yKS4gVGhlIGlucHV0IAorLy8gdG8gdGhl
IGZ1bmN0aW9uIGNvdWxkIGVpdGhlciBiZSBhIHN5bWJvbCBub2RlIChtWzBdIHdoZXJlIG0gaXMg
YSBjb25zdGFudCBtYXRyaXgpdGhhdCByZXByZXNlbnRzIGEgCisvLyBjb25zdGFudCBtYXRyaXgg
b3IgaXQgY291bGQgYmUgdGhlIHRyZWUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbnN0YW50IG1h
dHJpeCAocy5tMVswXSB3aGVyZSBzIGlzIGEgY29uc3RhbnQgc3RydWN0dXJlKQorLy8KK1RJbnRl
cm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RNYXRyaXhOb2RlKGludCBpbmRleCwgVElu
dGVybVR5cGVkKiBub2RlLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQoreworICAgIFRJbnRlcm1U
eXBlZCogdHlwZWROb2RlOworICAgIFRJbnRlcm1Db25zdGFudFVuaW9uKiB0ZW1wQ29uc3RhbnRO
b2RlID0gbm9kZS0+Z2V0QXNDb25zdGFudFVuaW9uKCk7CisKKyAgICBpZiAoaW5kZXggPj0gbm9k
ZS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkpIHsKKyAgICAgICAgc3RkOjpzdHJpbmdzdHJl
YW0gZXh0cmFJbmZvU3RyZWFtOworICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgIm1hdHJpeCBm
aWVsZCBzZWxlY3Rpb24gb3V0IG9mIHJhbmdlICciIDw8IGluZGV4IDw8ICInIjsKKyAgICAgICAg
c3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOworICAgICAgICBl
cnJvcihsaW5lLCAiIiwgIlsiLCBleHRyYUluZm8uY19zdHIoKSk7CisgICAgICAgIHJlY292ZXIo
KTsKKyAgICAgICAgaW5kZXggPSAwOworICAgIH0KKworICAgIGlmICh0ZW1wQ29uc3RhbnROb2Rl
KSB7CisgICAgICAgICBDb25zdGFudFVuaW9uKiB1bmlvbkFycmF5ID0gdGVtcENvbnN0YW50Tm9k
ZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKKyAgICAgICAgIGludCBzaXplID0gdGVtcENvbnN0
YW50Tm9kZS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCk7CisgICAgICAgICB0eXBlZE5vZGUg
PSBpbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbigmdW5pb25BcnJheVtzaXplKmluZGV4XSwg
dGVtcENvbnN0YW50Tm9kZS0+Z2V0VHlwZSgpLCBsaW5lKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBlcnJvcihsaW5lLCAiQ2Fubm90IG9mZnNldCBpbnRvIHRoZSBtYXRyaXgiLCAiRXJyb3IiKTsK
KyAgICAgICAgcmVjb3ZlcigpOworCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJl
dHVybiB0eXBlZE5vZGU7Cit9CisKKworLy8KKy8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbiBl
bGVtZW50IG9mIGFuIGFycmF5IGFjY2Vzc2VkIGZyb20gYSBjb25zdGFudCBhcnJheS4gVGhlIHZh
bHVlcyBhcmUgcmV0cmlldmVkIGZyb20KKy8vIHRoZSBzeW1ib2wgdGFibGUgYW5kIHBhcnNlLXRy
ZWUgaXMgYnVpbHQgZm9yIHRoZSB0eXBlIG9mIHRoZSBlbGVtZW50LiBUaGUgaW5wdXQgCisvLyB0
byB0aGUgZnVuY3Rpb24gY291bGQgZWl0aGVyIGJlIGEgc3ltYm9sIG5vZGUgKGFbMF0gd2hlcmUg
YSBpcyBhIGNvbnN0YW50IGFycmF5KXRoYXQgcmVwcmVzZW50cyBhIAorLy8gY29uc3RhbnQgYXJy
YXkgb3IgaXQgY291bGQgYmUgdGhlIHRyZWUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbnN0YW50
IGFycmF5IChzLmExWzBdIHdoZXJlIHMgaXMgYSBjb25zdGFudCBzdHJ1Y3R1cmUpCisvLworVElu
dGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdEFycmF5Tm9kZShpbnQgaW5kZXgsIFRJ
bnRlcm1UeXBlZCogbm9kZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKK3sKKyAgICBUSW50ZXJt
VHlwZWQqIHR5cGVkTm9kZTsKKyAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiogdGVtcENvbnN0YW50
Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3RhbnRVbmlvbigpOworICAgIFRUeXBlIGFycmF5RWxlbWVu
dFR5cGUgPSBub2RlLT5nZXRUeXBlKCk7CisgICAgYXJyYXlFbGVtZW50VHlwZS5jbGVhckFycmF5
bmVzcygpOworCisgICAgaWYgKGluZGV4ID49IG5vZGUtPmdldFR5cGUoKS5nZXRBcnJheVNpemUo
KSkgeworICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07CisgICAgICAg
IGV4dHJhSW5mb1N0cmVhbSA8PCAiYXJyYXkgZmllbGQgc2VsZWN0aW9uIG91dCBvZiByYW5nZSAn
IiA8PCBpbmRleCA8PCAiJyI7CisgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJh
SW5mb1N0cmVhbS5zdHIoKTsKKyAgICAgICAgZXJyb3IobGluZSwgIiIsICJbIiwgZXh0cmFJbmZv
LmNfc3RyKCkpOworICAgICAgICByZWNvdmVyKCk7CisgICAgICAgIGluZGV4ID0gMDsKKyAgICB9
CisKKyAgICBpZiAodGVtcENvbnN0YW50Tm9kZSkgeworICAgICAgICAgc2l6ZV90IGFycmF5RWxl
bWVudFNpemUgPSBhcnJheUVsZW1lbnRUeXBlLmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgIENv
bnN0YW50VW5pb24qIHVuaW9uQXJyYXkgPSB0ZW1wQ29uc3RhbnROb2RlLT5nZXRVbmlvbkFycmF5
UG9pbnRlcigpOworICAgICAgICAgdHlwZWROb2RlID0gaW50ZXJtZWRpYXRlLmFkZENvbnN0YW50
VW5pb24oJnVuaW9uQXJyYXlbYXJyYXlFbGVtZW50U2l6ZSAqIGluZGV4XSwgdGVtcENvbnN0YW50
Tm9kZS0+Z2V0VHlwZSgpLCBsaW5lKTsKKyAgICB9IGVsc2UgeworICAgICAgICBlcnJvcihsaW5l
LCAiQ2Fubm90IG9mZnNldCBpbnRvIHRoZSBhcnJheSIsICJFcnJvciIpOworICAgICAgICByZWNv
dmVyKCk7CisKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIHR5cGVkTm9k
ZTsKK30KKworCisvLworLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB2YWx1ZSBvZiBhIHBh
cnRpY3VsYXIgZmllbGQgaW5zaWRlIGEgY29uc3RhbnQgc3RydWN0dXJlIGZyb20gdGhlIHN5bWJv
bCB0YWJsZS4gCisvLyBJZiB0aGVyZSBpcyBhbiBlbWJlZGRlZC9uZXN0ZWQgc3RydWN0LCBpdCBh
cHByb3ByaWF0ZWx5IGNhbGxzIGFkZENvbnN0U3RydWN0TmVzdGVkIG9yIGFkZENvbnN0U3RydWN0
RnJvbUFnZ3IKKy8vIGZ1bmN0aW9uIGFuZCByZXR1cm5zIHRoZSBwYXJzZS10cmVlIHdpdGggdGhl
IHZhbHVlcyBvZiB0aGUgZW1iZWRkZWQvbmVzdGVkIHN0cnVjdC4KKy8vCitUSW50ZXJtVHlwZWQq
IFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0U3RydWN0KFRTdHJpbmcmIGlkZW50aWZpZXIsIFRJbnRl
cm1UeXBlZCogbm9kZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKK3sKKyAgICBjb25zdCBURmll
bGRMaXN0JiBmaWVsZHMgPSBub2RlLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCktPmZpZWxkcygpOwor
CisgICAgc2l6ZV90IGluc3RhbmNlU2l6ZSA9IDA7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAw
OyBpbmRleCA8IGZpZWxkcy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKGZpZWxkc1tp
bmRleF0tPm5hbWUoKSA9PSBpZGVudGlmaWVyKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGluc3RhbmNlU2l6ZSArPSBmaWVsZHNbaW5kZXhdLT50
eXBlKCktPmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFRJbnRlcm1U
eXBlZCogdHlwZWROb2RlID0gMDsKKyAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiogdGVtcENvbnN0
YW50Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3RhbnRVbmlvbigpOworICAgIGlmICh0ZW1wQ29uc3Rh
bnROb2RlKSB7CisgICAgICAgICBDb25zdGFudFVuaW9uKiBjb25zdEFycmF5ID0gdGVtcENvbnN0
YW50Tm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKKworICAgICAgICAgdHlwZWROb2RlID0g
aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24oY29uc3RBcnJheStpbnN0YW5jZVNpemUsIHRl
bXBDb25zdGFudE5vZGUtPmdldFR5cGUoKSwgbGluZSk7IC8vIHR5cGUgd2lsbCBiZSBjaGFuZ2Vk
IGluIHRoZSBjYWxsaW5nIGZ1bmN0aW9uCisgICAgfSBlbHNlIHsKKyAgICAgICAgZXJyb3IobGlu
ZSwgIkNhbm5vdCBvZmZzZXQgaW50byB0aGUgc3RydWN0dXJlIiwgIkVycm9yIik7CisgICAgICAg
IHJlY292ZXIoKTsKKworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gdHlw
ZWROb2RlOworfQorCitib29sIFRQYXJzZUNvbnRleHQ6OmVudGVyU3RydWN0RGVjbGFyYXRpb24o
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllcikKK3sKKyAg
ICArK3N0cnVjdE5lc3RpbmdMZXZlbDsKKworICAgIC8vIEVtYmVkZGVkIHN0cnVjdHVyZSBkZWZp
bml0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBwZXIgR0xTTCBFUyBzcGVjLgorICAgIC8vIFRoZXkg
YXJlbid0IGFsbG93ZWQgaW4gR0xTTCBlaXRoZXIsIGJ1dCB3ZSBuZWVkIHRvIGRldGVjdCB0aGlz
IGhlcmUKKyAgICAvLyBzbyB3ZSBkb24ndCByZWx5IG9uIHRoZSBHTFNMIGNvbXBpbGVyIHRvIGNh
dGNoIGl0LgorICAgIGlmIChzdHJ1Y3ROZXN0aW5nTGV2ZWwgPiAxKSB7CisgICAgICAgIGVycm9y
KGxpbmUsICIiLCAiRW1iZWRkZWQgc3RydWN0IGRlZmluaXRpb25zIGFyZSBub3QgYWxsb3dlZCIp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3ZvaWQgVFBhcnNlQ29udGV4dDo6ZXhpdFN0cnVjdERlY2xhcmF0aW9uKCkKK3sKKyAgICAtLXN0
cnVjdE5lc3RpbmdMZXZlbDsKK30KKworbmFtZXNwYWNlIHsKKworY29uc3QgaW50IGtXZWJHTE1h
eFN0cnVjdE5lc3RpbmcgPSA0OworCit9ICAvLyBuYW1lc3BhY2UKKworYm9vbCBUUGFyc2VDb250
ZXh0OjpzdHJ1Y3ROZXN0aW5nRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25z
dCBURmllbGQmIGZpZWxkKQoreworICAgIGlmICghaXNXZWJHTEJhc2VkU3BlYyhzaGFkZXJTcGVj
KSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGZpZWxkLnR5cGUo
KS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0KSB7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICAvLyBXZSdyZSBhbHJlYWR5IGluc2lkZSBhIHN0cnVjdHVyZSBkZWZpbml0
aW9uIGF0IHRoaXMgcG9pbnQsIHNvIGFkZAorICAgIC8vIG9uZSB0byB0aGUgZmllbGQncyBzdHJ1
Y3QgbmVzdGluZy4KKyAgICBpZiAoMSArIGZpZWxkLnR5cGUoKS0+Z2V0RGVlcGVzdFN0cnVjdE5l
c3RpbmcoKSA+IGtXZWJHTE1heFN0cnVjdE5lc3RpbmcpIHsKKyAgICAgICAgc3RkOjpzdHJpbmdz
dHJlYW0gcmVhc29uU3RyZWFtOworICAgICAgICByZWFzb25TdHJlYW0gPDwgIlJlZmVyZW5jZSBv
ZiBzdHJ1Y3QgdHlwZSAiCisgICAgICAgICAgICAgICAgICAgICA8PCBmaWVsZC50eXBlKCktPmdl
dFN0cnVjdCgpLT5uYW1lKCkuY19zdHIoKQorICAgICAgICAgICAgICAgICAgICAgPDwgIiBleGNl
ZWRzIG1heGltdW0gYWxsb3dlZCBuZXN0aW5nIGxldmVsIG9mICIKKyAgICAgICAgICAgICAgICAg
ICAgIDw8IGtXZWJHTE1heFN0cnVjdE5lc3Rpbmc7CisgICAgICAgIHN0ZDo6c3RyaW5nIHJlYXNv
biA9IHJlYXNvblN0cmVhbS5zdHIoKTsKKyAgICAgICAgZXJyb3IobGluZSwgcmVhc29uLmNfc3Ry
KCksIGZpZWxkLm5hbWUoKS5jX3N0cigpLCAiIik7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8KKy8vIFBhcnNlIGFuIGFycmF5IGluZGV4
IGV4cHJlc3Npb24KKy8vCitUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZEluZGV4RXhw
cmVzc2lvbihUSW50ZXJtVHlwZWQgKmJhc2VFeHByZXNzaW9uLCBjb25zdCBUU291cmNlTG9jJiBs
b2NhdGlvbiwgVEludGVybVR5cGVkICppbmRleEV4cHJlc3Npb24pCit7CisgICAgVEludGVybVR5
cGVkICppbmRleGVkRXhwcmVzc2lvbiA9IE5VTEw7CisKKyAgICBpZiAoIWJhc2VFeHByZXNzaW9u
LT5pc0FycmF5KCkgJiYgIWJhc2VFeHByZXNzaW9uLT5pc01hdHJpeCgpICYmICFiYXNlRXhwcmVz
c2lvbi0+aXNWZWN0b3IoKSkKKyAgICB7CisgICAgICAgIGlmIChiYXNlRXhwcmVzc2lvbi0+Z2V0
QXNTeW1ib2xOb2RlKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAi
IGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZlY3RvciAiLCBi
YXNlRXhwcmVzc2lvbi0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgpLmNfc3RyKCkpOwor
ICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgZXJyb3IobG9j
YXRpb24sICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXksIG1hdHJpeCwgb3IgdmVj
dG9yICIsICJleHByZXNzaW9uIik7CisgICAgICAgIH0KKyAgICAgICAgcmVjb3ZlcigpOworICAg
IH0KKworICAgIGlmIChpbmRleEV4cHJlc3Npb24tPmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0
KQorICAgIHsKKyAgICAgICAgaW50IGluZGV4ID0gaW5kZXhFeHByZXNzaW9uLT5nZXRBc0NvbnN0
YW50VW5pb24oKS0+Z2V0SUNvbnN0KDApOworICAgICAgICBpZiAoaW5kZXggPCAwKQorICAgICAg
ICB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBpbmZvU3RyZWFtOworICAgICAgICAg
ICAgaW5mb1N0cmVhbSA8PCBpbmRleDsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGluZm8gPSBp
bmZvU3RyZWFtLnN0cigpOworICAgICAgICAgICAgZXJyb3IobG9jYXRpb24sICJuZWdhdGl2ZSBp
bmRleCIsIGluZm8uY19zdHIoKSk7CisgICAgICAgICAgICByZWNvdmVyKCk7CisgICAgICAgICAg
ICBpbmRleCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGJhc2VFeHByZXNzaW9uLT5nZXRU
eXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmIChiYXNlRXhwcmVzc2lvbi0+aXNBcnJheSgpKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIC8vIGNvbnN0YW50IGZvbGRpbmcgZm9yIGFycmF5cworICAgICAgICAgICAgICAgIGlu
ZGV4ZWRFeHByZXNzaW9uID0gYWRkQ29uc3RBcnJheU5vZGUoaW5kZXgsIGJhc2VFeHByZXNzaW9u
LCBsb2NhdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChiYXNlRXhw
cmVzc2lvbi0+aXNWZWN0b3IoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBj
b25zdGFudCBmb2xkaW5nIGZvciB2ZWN0b3JzCisgICAgICAgICAgICAgICAgVFZlY3RvckZpZWxk
cyBmaWVsZHM7CisgICAgICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7CisgICAgICAgICAgICAg
ICAgZmllbGRzLm9mZnNldHNbMF0gPSBpbmRleDsgLy8gbmVlZCB0byBkbyBpdCB0aGlzIHdheSBi
ZWNhdXNlIHYueHkgc2VuZHMgZmllbGRzIGludGVnZXIgYXJyYXkKKyAgICAgICAgICAgICAgICBp
bmRleGVkRXhwcmVzc2lvbiA9IGFkZENvbnN0VmVjdG9yTm9kZShmaWVsZHMsIGJhc2VFeHByZXNz
aW9uLCBsb2NhdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChiYXNl
RXhwcmVzc2lvbi0+aXNNYXRyaXgoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAv
LyBjb25zdGFudCBmb2xkaW5nIGZvciBtYXRyaWNlcworICAgICAgICAgICAgICAgIGluZGV4ZWRF
eHByZXNzaW9uID0gYWRkQ29uc3RNYXRyaXhOb2RlKGluZGV4LCBiYXNlRXhwcmVzc2lvbiwgbG9j
YXRpb24pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKGJhc2VFeHByZXNzaW9uLT5pc0FycmF5KCkpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IGJhc2VFeHByZXNzaW9uLT5nZXRUeXBl
KCkuZ2V0QXJyYXlTaXplKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07CisgICAgICAgICAgICAgICAgICAg
IGV4dHJhSW5mb1N0cmVhbSA8PCAiYXJyYXkgaW5kZXggb3V0IG9mIHJhbmdlICciIDw8IGluZGV4
IDw8ICInIjsKKyAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0
cmFJbmZvU3RyZWFtLnN0cigpOworICAgICAgICAgICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwg
IiIsICJbIiwgZXh0cmFJbmZvLmNfc3RyKCkpOworICAgICAgICAgICAgICAgICAgICByZWNvdmVy
KCk7CisgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gYmFzZUV4cHJlc3Npb24tPmdldFR5cGUo
KS5nZXRBcnJheVNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGVsc2UgaWYgKGJhc2VFeHByZXNzaW9uLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFGcmFnRGF0YSAm
JiBpbmRleCA+IDAgJiYgIWlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyIp
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IobG9jYXRpb24s
ICIiLCAiWyIsICJhcnJheSBpbmRleGVzIGZvciBnbF9GcmFnRGF0YSBtdXN0IGJlIHplcm8gd2hl
biBHTF9FWFRfZHJhd19idWZmZXJzIGlzIGRpc2FibGVkIik7CisgICAgICAgICAgICAgICAgICAg
IHJlY292ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgaW5kZXggPSAwOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKChiYXNlRXhwcmVzc2lv
bi0+aXNWZWN0b3IoKSB8fCBiYXNlRXhwcmVzc2lvbi0+aXNNYXRyaXgoKSkgJiYgYmFzZUV4cHJl
c3Npb24tPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpIDw9IGluZGV4KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKKyAg
ICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImZpZWxkIHNlbGVjdGlvbiBvdXQgb2Yg
cmFuZ2UgJyIgPDwgaW5kZXggPDwgIiciOworICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4
dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKKyAgICAgICAgICAgICAgICBlcnJvcihs
b2NhdGlvbiwgIiIsICJbIiwgZXh0cmFJbmZvLmNfc3RyKCkpOworICAgICAgICAgICAgICAgIHJl
Y292ZXIoKTsKKyAgICAgICAgICAgICAgICBpbmRleCA9IGJhc2VFeHByZXNzaW9uLT5nZXRUeXBl
KCkuZ2V0Tm9taW5hbFNpemUoKSAtIDE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlu
ZGV4RXhwcmVzc2lvbi0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVy
KCktPnNldElDb25zdChpbmRleCk7CisgICAgICAgICAgICBpbmRleGVkRXhwcmVzc2lvbiA9IGlu
dGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgYmFzZUV4cHJlc3Npb24sIGluZGV4
RXhwcmVzc2lvbiwgbG9jYXRpb24pOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0gaW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcElu
ZGV4SW5kaXJlY3QsIGJhc2VFeHByZXNzaW9uLCBpbmRleEV4cHJlc3Npb24sIGxvY2F0aW9uKTsK
KyAgICB9CisKKyAgICBpZiAoaW5kZXhlZEV4cHJlc3Npb24gPT0gMCkKKyAgICB7CisgICAgICAg
IENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKKyAgICAg
ICAgdW5pb25BcnJheS0+c2V0RkNvbnN0KDAuMGYpOworICAgICAgICBpbmRleGVkRXhwcmVzc2lv
biA9IGludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZs
b2F0LCBFYnBIaWdoLCBFdnFDb25zdCksIGxvY2F0aW9uKTsKKyAgICB9CisgICAgZWxzZSBpZiAo
YmFzZUV4cHJlc3Npb24tPmlzQXJyYXkoKSkKKyAgICB7CisgICAgICAgIGNvbnN0IFRUeXBlICZi
YXNlVHlwZSA9IGJhc2VFeHByZXNzaW9uLT5nZXRUeXBlKCk7CisgICAgICAgIGlmIChiYXNlVHlw
ZS5nZXRTdHJ1Y3QoKSkKKyAgICAgICAgeworICAgICAgICAgICAgVFR5cGUgY29weU9mVHlwZShi
YXNlVHlwZS5nZXRTdHJ1Y3QoKSk7CisgICAgICAgICAgICBpbmRleGVkRXhwcmVzc2lvbi0+c2V0
VHlwZShjb3B5T2ZUeXBlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uLT5zZXRUeXBlKFRUeXBlKGJhc2VFeHByZXNzaW9u
LT5nZXRCYXNpY1R5cGUoKSwgYmFzZUV4cHJlc3Npb24tPmdldFByZWNpc2lvbigpLCBFdnFUZW1w
b3JhcnksIGJhc2VFeHByZXNzaW9uLT5nZXROb21pbmFsU2l6ZSgpLCBiYXNlRXhwcmVzc2lvbi0+
aXNNYXRyaXgoKSkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGJhc2VFeHByZXNzaW9uLT5n
ZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGluZGV4ZWRFeHByZXNzaW9uLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIoRXZx
Q29uc3QpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKGJhc2VFeHByZXNzaW9uLT5p
c01hdHJpeCgpKQorICAgIHsKKyAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSBiYXNlRXhw
cmVzc2lvbi0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0ID8gRXZxQ29uc3Qg
OiBFdnFUZW1wb3Jhcnk7CisgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uLT5zZXRUeXBlKFRUeXBl
KGJhc2VFeHByZXNzaW9uLT5nZXRCYXNpY1R5cGUoKSwgYmFzZUV4cHJlc3Npb24tPmdldFByZWNp
c2lvbigpLCBxdWFsaWZpZXIsIGJhc2VFeHByZXNzaW9uLT5nZXROb21pbmFsU2l6ZSgpKSk7Cisg
ICAgfQorICAgIGVsc2UgaWYgKGJhc2VFeHByZXNzaW9uLT5pc1ZlY3RvcigpKQorICAgIHsKKyAg
ICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSBiYXNlRXhwcmVzc2lvbi0+Z2V0VHlwZSgpLmdl
dFF1YWxpZmllcigpID09IEV2cUNvbnN0ID8gRXZxQ29uc3QgOiBFdnFUZW1wb3Jhcnk7CisgICAg
ICAgIGluZGV4ZWRFeHByZXNzaW9uLT5zZXRUeXBlKFRUeXBlKGJhc2VFeHByZXNzaW9uLT5nZXRC
YXNpY1R5cGUoKSwgYmFzZUV4cHJlc3Npb24tPmdldFByZWNpc2lvbigpLCBxdWFsaWZpZXIpKTsK
KyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24tPnNldFR5
cGUoYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKSk7CisgICAgfQorCisgICAgcmV0dXJuIGluZGV4
ZWRFeHByZXNzaW9uOworfQorCisvLworLy8gUGFyc2UgYW4gYXJyYXkgb2Ygc3RyaW5ncyB1c2lu
ZyB5eXBhcnNlLgorLy8KKy8vIFJldHVybnMgMCBmb3Igc3VjY2Vzcy4KKy8vCitpbnQgUGFQYXJz
ZVN0cmluZ3Moc2l6ZV90IGNvdW50LCBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3Qg
aW50IGxlbmd0aFtdLAorICAgICAgICAgICAgICAgICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQp
IHsKKyAgICBpZiAoKGNvdW50ID09IDApIHx8IChzdHJpbmcgPT0gTlVMTCkpCisgICAgICAgIHJl
dHVybiAxOworCisgICAgaWYgKGdsc2xhbmdfaW5pdGlhbGl6ZShjb250ZXh0KSkKKyAgICAgICAg
cmV0dXJuIDE7CisKKyAgICBpbnQgZXJyb3IgPSBnbHNsYW5nX3NjYW4oY291bnQsIHN0cmluZywg
bGVuZ3RoLCBjb250ZXh0KTsKKyAgICBpZiAoIWVycm9yKQorICAgICAgICBlcnJvciA9IGdsc2xh
bmdfcGFyc2UoY29udGV4dCk7CisKKyAgICBnbHNsYW5nX2ZpbmFsaXplKGNvbnRleHQpOworCisg
ICAgcmV0dXJuIChlcnJvciA9PSAwKSAmJiAoY29udGV4dC0+bnVtRXJyb3JzKCkgPT0gMCkgPyAw
IDogMTsKK30KKworCisKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9QYXJzZUNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvUGFyc2VDb250ZXh0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMzQgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisjaWZuZGVmIF9QQVJTRVJfSEVMUEVS
X0lOQ0xVREVEXworI2RlZmluZSBfUEFSU0VSX0hFTFBFUl9JTkNMVURFRF8KKworI2luY2x1ZGUg
ImNvbXBpbGVyL0RpYWdub3N0aWNzLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvRGlyZWN0aXZlSGFu
ZGxlci5oIgorI2luY2x1ZGUgImNvbXBpbGVyL2xvY2FsaW50ZXJtZWRpYXRlLmgiCisjaW5jbHVk
ZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL1ByZXByb2Nlc3Nvci5oIgorI2luY2x1ZGUgImNvbXBp
bGVyL1NoSGFuZGxlLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvU3ltYm9sVGFibGUuaCIKKworc3Ry
dWN0IFRNYXRyaXhGaWVsZHMgeworICAgIGJvb2wgd2hvbGVSb3c7CisgICAgYm9vbCB3aG9sZUNv
bDsKKyAgICBpbnQgcm93OworICAgIGludCBjb2w7Cit9OworCisvLworLy8gVGhlIGZvbGxvd2lu
ZyBhcmUgZXh0cmEgdmFyaWFibGVzIG5lZWRlZCBkdXJpbmcgcGFyc2luZywgZ3JvdXBlZCB0b2dl
dGhlciBzbworLy8gdGhleSBjYW4gYmUgcGFzc2VkIHRvIHRoZSBwYXJzZXIgd2l0aG91dCBuZWVk
aW5nIGEgZ2xvYmFsLgorLy8KK3N0cnVjdCBUUGFyc2VDb250ZXh0IHsKKyAgICBUUGFyc2VDb250
ZXh0KFRTeW1ib2xUYWJsZSYgc3ltdCwgVEV4dGVuc2lvbkJlaGF2aW9yJiBleHQsIFRJbnRlcm1l
ZGlhdGUmIGludGVybSwgU2hTaGFkZXJUeXBlIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjLCBpbnQg
b3B0aW9ucywgYm9vbCBjaGVja3NQcmVjRXJyb3JzLCBjb25zdCBjaGFyKiBzb3VyY2VQYXRoLCBU
SW5mb1NpbmsmIGlzKSA6CisgICAgICAgICAgICBpbnRlcm1lZGlhdGUoaW50ZXJtKSwKKyAgICAg
ICAgICAgIHN5bWJvbFRhYmxlKHN5bXQpLAorICAgICAgICAgICAgc2hhZGVyVHlwZSh0eXBlKSwK
KyAgICAgICAgICAgIHNoYWRlclNwZWMoc3BlYyksCisgICAgICAgICAgICBjb21waWxlT3B0aW9u
cyhvcHRpb25zKSwKKyAgICAgICAgICAgIHNvdXJjZVBhdGgoc291cmNlUGF0aCksCisgICAgICAg
ICAgICB0cmVlUm9vdCgwKSwKKyAgICAgICAgICAgIGxvb3BOZXN0aW5nTGV2ZWwoMCksCisgICAg
ICAgICAgICBzdHJ1Y3ROZXN0aW5nTGV2ZWwoMCksCisgICAgICAgICAgICBjdXJyZW50RnVuY3Rp
b25UeXBlKE5VTEwpLAorICAgICAgICAgICAgZnVuY3Rpb25SZXR1cm5zVmFsdWUoZmFsc2UpLAor
ICAgICAgICAgICAgY2hlY2tzUHJlY2lzaW9uRXJyb3JzKGNoZWNrc1ByZWNFcnJvcnMpLAorICAg
ICAgICAgICAgZGlhZ25vc3RpY3MoaXMpLAorICAgICAgICAgICAgZGlyZWN0aXZlSGFuZGxlcihl
eHQsIGRpYWdub3N0aWNzKSwKKyAgICAgICAgICAgIHByZXByb2Nlc3NvcigmZGlhZ25vc3RpY3Ms
ICZkaXJlY3RpdmVIYW5kbGVyKSwKKyAgICAgICAgICAgIHNjYW5uZXIoTlVMTCkgeyAgfQorICAg
IFRJbnRlcm1lZGlhdGUmIGludGVybWVkaWF0ZTsgLy8gdG8gaG9sZCBhbmQgYnVpbGQgYSBwYXJz
ZSB0cmVlCisgICAgVFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZTsgICAvLyBzeW1ib2wgdGFibGUg
dGhhdCBnb2VzIHdpdGggdGhlIGxhbmd1YWdlIGN1cnJlbnRseSBiZWluZyBwYXJzZWQKKyAgICBT
aFNoYWRlclR5cGUgc2hhZGVyVHlwZTsgICAgICAgICAgICAgIC8vIHZlcnRleCBvciBmcmFnbWVu
dCBsYW5ndWFnZSAoZnV0dXJlOiBwYWNrIG9yIHVucGFjaykKKyAgICBTaFNoYWRlclNwZWMgc2hh
ZGVyU3BlYzsgICAgICAgICAgICAgIC8vIFRoZSBsYW5ndWFnZSBzcGVjaWZpY2F0aW9uIGNvbXBp
bGVyIGNvbmZvcm1zIHRvIC0gR0xFUzIgb3IgV2ViR0wuCisgICAgaW50IGNvbXBpbGVPcHRpb25z
OworICAgIGNvbnN0IGNoYXIqIHNvdXJjZVBhdGg7ICAgICAgLy8gUGF0aCBvZiBzb3VyY2UgZmls
ZSBvciBOVUxMLgorICAgIFRJbnRlcm1Ob2RlKiB0cmVlUm9vdDsgICAgICAgLy8gcm9vdCBvZiBw
YXJzZSB0cmVlIGJlaW5nIGNyZWF0ZWQKKyAgICBpbnQgbG9vcE5lc3RpbmdMZXZlbDsgICAgICAg
IC8vIDAgaWYgb3V0c2lkZSBhbGwgbG9vcHMKKyAgICBpbnQgc3RydWN0TmVzdGluZ0xldmVsOyAg
ICAgIC8vIGluY3JlbWVudGVkIHdoaWxlIHBhcnNpbmcgYSBzdHJ1Y3QgZGVjbGFyYXRpb24KKyAg
ICBjb25zdCBUVHlwZSogY3VycmVudEZ1bmN0aW9uVHlwZTsgIC8vIHRoZSByZXR1cm4gdHlwZSBv
ZiB0aGUgZnVuY3Rpb24gdGhhdCdzIGN1cnJlbnRseSBiZWluZyBwYXJzZWQKKyAgICBib29sIGZ1
bmN0aW9uUmV0dXJuc1ZhbHVlOyAgIC8vIHRydWUgaWYgYSBub24tdm9pZCBmdW5jdGlvbiBoYXMg
YSByZXR1cm4KKyAgICBib29sIGNoZWNrc1ByZWNpc2lvbkVycm9yczsgIC8vIHRydWUgaWYgYW4g
ZXJyb3Igd2lsbCBiZSBnZW5lcmF0ZWQgd2hlbiBhIHZhcmlhYmxlIGlzIGRlY2xhcmVkIHdpdGhv
dXQgcHJlY2lzaW9uLCBleHBsaWNpdCBvciBpbXBsaWNpdC4KKyAgICBib29sIGZyYWdtZW50UHJl
Y2lzaW9uSGlnaDsgIC8vIHRydWUgaWYgaGlnaHAgcHJlY2lzaW9uIGlzIHN1cHBvcnRlZCBpbiB0
aGUgZnJhZ21lbnQgbGFuZ3VhZ2UuCisgICAgVFN0cmluZyBIYXNoRXJyTXNnOworICAgIFREaWFn
bm9zdGljcyBkaWFnbm9zdGljczsKKyAgICBURGlyZWN0aXZlSGFuZGxlciBkaXJlY3RpdmVIYW5k
bGVyOworICAgIHBwOjpQcmVwcm9jZXNzb3IgcHJlcHJvY2Vzc29yOworICAgIHZvaWQqIHNjYW5u
ZXI7CisKKyAgICBpbnQgbnVtRXJyb3JzKCkgY29uc3QgeyByZXR1cm4gZGlhZ25vc3RpY3MubnVt
RXJyb3JzKCk7IH0KKyAgICBUSW5mb1NpbmsmIGluZm9TaW5rKCkgeyByZXR1cm4gZGlhZ25vc3Rp
Y3MuaW5mb1NpbmsoKTsgfQorICAgIHZvaWQgZXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbG9jLCBj
b25zdCBjaGFyICpyZWFzb24sIGNvbnN0IGNoYXIqIHRva2VuLAorICAgICAgICAgICAgICAgY29u
c3QgY2hhciogZXh0cmFJbmZvPSIiKTsKKyAgICB2b2lkIHdhcm5pbmcoY29uc3QgVFNvdXJjZUxv
YyYgbG9jLCBjb25zdCBjaGFyKiByZWFzb24sIGNvbnN0IGNoYXIqIHRva2VuLAorICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBleHRyYUluZm89IiIpOworICAgIHZvaWQgdHJhY2UoY29uc3Qg
Y2hhciogc3RyKTsKKyAgICB2b2lkIHJlY292ZXIoKTsKKworICAgIGJvb2wgcGFyc2VWZWN0b3JG
aWVsZHMoY29uc3QgVFN0cmluZyYsIGludCB2ZWNTaXplLCBUVmVjdG9yRmllbGRzJiwgY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSk7CisgICAgYm9vbCBwYXJzZU1hdHJpeEZpZWxkcyhjb25zdCBUU3Ry
aW5nJiwgaW50IG1hdFNpemUsIFRNYXRyaXhGaWVsZHMmLCBjb25zdCBUU291cmNlTG9jJiBsaW5l
KTsKKworICAgIGJvb2wgcmVzZXJ2ZWRFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUs
IGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIpOworICAgIHZvaWQgYXNzaWduRXJyb3IoY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyBy
aWdodCk7CisgICAgdm9pZCB1bmFyeU9wRXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29u
c3QgY2hhciogb3AsIFRTdHJpbmcgb3BlcmFuZCk7CisgICAgdm9pZCBiaW5hcnlPcEVycm9yKGNv
bnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIGxlZnQsIFRTdHJp
bmcgcmlnaHQpOworICAgIGJvb2wgcHJlY2lzaW9uRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9j
JiBsaW5lLCBUUHJlY2lzaW9uIHByZWNpc2lvbiwgVEJhc2ljVHlwZSB0eXBlKTsKKyAgICBib29s
IGxWYWx1ZUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hhciogb3As
IFRJbnRlcm1UeXBlZCopOworICAgIGJvb2wgY29uc3RFcnJvckNoZWNrKFRJbnRlcm1UeXBlZCog
bm9kZSk7CisgICAgYm9vbCBpbnRlZ2VyRXJyb3JDaGVjayhUSW50ZXJtVHlwZWQqIG5vZGUsIGNv
bnN0IGNoYXIqIHRva2VuKTsKKyAgICBib29sIGdsb2JhbEVycm9yQ2hlY2soY29uc3QgVFNvdXJj
ZUxvYyYgbGluZSwgYm9vbCBnbG9iYWwsIGNvbnN0IGNoYXIqIHRva2VuKTsKKyAgICBib29sIGNv
bnN0cnVjdG9yRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUSW50ZXJtTm9kZSos
IFRGdW5jdGlvbiYsIFRPcGVyYXRvciwgVFR5cGUqKTsKKyAgICBib29sIGFycmF5U2l6ZUVycm9y
Q2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEludGVybVR5cGVkKiBleHByLCBpbnQmIHNp
emUpOworICAgIGJvb2wgYXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2Mm
IGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpOworICAgIGJvb2wgYXJyYXlUeXBlRXJyb3JDaGVjayhj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBUUHVibGljVHlwZSB0eXBlKTsKKyAgICBib29sIGFycmF5
RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBU
UHVibGljVHlwZSB0eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSk7CisgICAgYm9vbCB2b2lkRXJy
b3JDaGVjayhjb25zdCBUU291cmNlTG9jJiwgY29uc3QgVFN0cmluZyYsIGNvbnN0IFRQdWJsaWNU
eXBlJik7CisgICAgYm9vbCBib29sRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiwgY29uc3Qg
VEludGVybVR5cGVkKik7CisgICAgYm9vbCBib29sRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9j
JiwgY29uc3QgVFB1YmxpY1R5cGUmKTsKKyAgICBib29sIHNhbXBsZXJFcnJvckNoZWNrKGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSwgY29uc3QgY2hhciog
cmVhc29uKTsKKyAgICBib29sIHN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soY29uc3QgVFNvdXJj
ZUxvYyYgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlKTsKKyAgICBib29sIHBhcmFtZXRl
clNhbXBsZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRRdWFsaWZpZXIgcXVh
bGlmaWVyLCBjb25zdCBUVHlwZSYgdHlwZSk7CisgICAgYm9vbCBub25Jbml0Q29uc3RFcnJvckNo
ZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNU
eXBlJiB0eXBlLCBib29sIGFycmF5KTsKKyAgICBib29sIG5vbkluaXRFcnJvckNoZWNrKGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiB0eXBl
LCBUVmFyaWFibGUqJiB2YXJpYWJsZSk7CisgICAgYm9vbCBwYXJhbUVycm9yQ2hlY2soY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSwgVFF1YWxpZmllciBxdWFsaWZpZXIsIFRRdWFsaWZpZXIgcGFyYW1R
dWFsaWZpZXIsIFRUeXBlKiB0eXBlKTsKKyAgICBib29sIGV4dGVuc2lvbkVycm9yQ2hlY2soY29u
c3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYpOworCisgICAgY29uc3QgVFByYWdt
YSYgcHJhZ21hKCkgY29uc3QgeyByZXR1cm4gZGlyZWN0aXZlSGFuZGxlci5wcmFnbWEoKTsgfQor
ICAgIGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciYgZXh0ZW5zaW9uQmVoYXZpb3IoKSBjb25zdCB7
IHJldHVybiBkaXJlY3RpdmVIYW5kbGVyLmV4dGVuc2lvbkJlaGF2aW9yKCk7IH0KKyAgICBib29s
IHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IGNoYXIqIGV4dGVuc2lvbik7CisgICAgYm9vbCBpc0V4
dGVuc2lvbkVuYWJsZWQoY29uc3QgY2hhciogZXh0ZW5zaW9uKSBjb25zdDsKKworICAgIGJvb2wg
Y29udGFpbnNTYW1wbGVyKFRUeXBlJiB0eXBlKTsKKyAgICBib29sIGFyZUFsbENoaWxkQ29uc3Qo
VEludGVybUFnZ3JlZ2F0ZSogYWdnck5vZGUpOworICAgIGNvbnN0IFRGdW5jdGlvbiogZmluZEZ1
bmN0aW9uKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRGdW5jdGlvbiogcGZuQ2FsbCwgYm9vbCAq
YnVpbHRJbiA9IDApOworICAgIGJvb2wgZXhlY3V0ZUluaXRpYWxpemVyKGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiBwVHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluaXRpYWxpemVyLCBUSW50ZXJt
Tm9kZSomIGludGVybU5vZGUsIFRWYXJpYWJsZSogdmFyaWFibGUgPSAwKTsKKworICAgIFRJbnRl
cm1UeXBlZCogYWRkQ29uc3RydWN0b3IoVEludGVybU5vZGUqLCBjb25zdCBUVHlwZSosIFRPcGVy
YXRvciwgVEZ1bmN0aW9uKiwgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1UeXBlZCog
Zm9sZENvbnN0Q29uc3RydWN0b3IoVEludGVybUFnZ3JlZ2F0ZSogYWdnck5vZGUsIGNvbnN0IFRU
eXBlJiB0eXBlKTsKKyAgICBUSW50ZXJtVHlwZWQqIGNvbnN0cnVjdFN0cnVjdChUSW50ZXJtTm9k
ZSosIFRUeXBlKiwgaW50LCBjb25zdCBUU291cmNlTG9jJiwgYm9vbCBzdWJzZXQpOworICAgIFRJ
bnRlcm1UeXBlZCogY29uc3RydWN0QnVpbHRJbihjb25zdCBUVHlwZSosIFRPcGVyYXRvciwgVElu
dGVybU5vZGUqLCBjb25zdCBUU291cmNlTG9jJiwgYm9vbCBzdWJzZXQpOworICAgIFRJbnRlcm1U
eXBlZCogYWRkQ29uc3RWZWN0b3JOb2RlKFRWZWN0b3JGaWVsZHMmLCBUSW50ZXJtVHlwZWQqLCBj
b25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybVR5cGVkKiBhZGRDb25zdE1hdHJpeE5vZGUo
aW50ICwgVEludGVybVR5cGVkKiwgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1UeXBl
ZCogYWRkQ29uc3RBcnJheU5vZGUoaW50IGluZGV4LCBUSW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUpOworICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RTdHJ1Y3QoVFN0
cmluZyYgLCBUSW50ZXJtVHlwZWQqLCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybVR5
cGVkKiBhZGRJbmRleEV4cHJlc3Npb24oVEludGVybVR5cGVkICpiYXNlRXhwcmVzc2lvbiwgY29u
c3QgVFNvdXJjZUxvYyYgbG9jYXRpb24sIFRJbnRlcm1UeXBlZCAqaW5kZXhFeHByZXNzaW9uKTsK
KworICAgIC8vIFBlcmZvcm1zIGFuIGVycm9yIGNoZWNrIGZvciBlbWJlZGRlZCBzdHJ1Y3QgZGVj
bGFyYXRpb25zLgorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhbiBlcnJvciB3YXMgcmFpc2VkIGR1
ZSB0byB0aGUgZGVjbGFyYXRpb24gb2YKKyAgICAvLyB0aGlzIHN0cnVjdC4KKyAgICBib29sIGVu
dGVyU3RydWN0RGVjbGFyYXRpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0cmlu
ZyYgaWRlbnRpZmllcik7CisgICAgdm9pZCBleGl0U3RydWN0RGVjbGFyYXRpb24oKTsKKworICAg
IGJvb2wgc3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29u
c3QgVEZpZWxkJiBmaWVsZCk7Cit9OworCitpbnQgUGFQYXJzZVN0cmluZ3Moc2l6ZV90IGNvdW50
LCBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdLAorICAgICAg
ICAgICAgICAgICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpOworCisjZW5kaWYgLy8gX1BBUlNF
Ul9IRUxQRVJfSU5DTFVERURfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvUGFyc2VIZWxwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5jcHAJKHJldmlzaW9uIDE1OTIzOSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTYwMCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIw
MTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVk
ZSAiY29tcGlsZXIvUGFyc2VIZWxwZXIuaCIKLQotI2luY2x1ZGUgPHN0ZGFyZy5oPgotI2luY2x1
ZGUgPHN0ZGlvLmg+Ci0KLSNpbmNsdWRlICJjb21waWxlci9nbHNsYW5nLmgiCi0jaW5jbHVkZSAi
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL1NvdXJjZUxvY2F0aW9uLmgiCi0KLS8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ci0vLwotLy8gU3ViLSB2ZWN0b3IgYW5kIG1hdHJpeCBmaWVsZHMKLS8vCi0vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KLQotLy8KLS8vIExvb2sgYXQgYSAnLicgZmllbGQgc2VsZWN0b3Igc3RyaW5nIGFuZCBjaGFu
Z2UgaXQgaW50byBvZmZzZXRzCi0vLyBmb3IgYSB2ZWN0b3IuCi0vLwotYm9vbCBUUGFyc2VDb250
ZXh0OjpwYXJzZVZlY3RvckZpZWxkcyhjb25zdCBUU3RyaW5nJiBjb21wU3RyaW5nLCBpbnQgdmVj
U2l6ZSwgVFZlY3RvckZpZWxkcyYgZmllbGRzLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQotewot
ICAgIGZpZWxkcy5udW0gPSAoaW50KSBjb21wU3RyaW5nLnNpemUoKTsKLSAgICBpZiAoZmllbGRz
Lm51bSA+IDQpIHsKLSAgICAgICAgZXJyb3IobGluZSwgImlsbGVnYWwgdmVjdG9yIGZpZWxkIHNl
bGVjdGlvbiIsIGNvbXBTdHJpbmcuY19zdHIoKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0KLSAgICBlbnVtIHsKLSAgICAgICAgZXh5encsCi0gICAgICAgIGVyZ2JhLAotICAgICAg
ICBlc3RwcQotICAgIH0gZmllbGRTZXRbNF07Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGZp
ZWxkcy5udW07ICsraSkgewotICAgICAgICBzd2l0Y2ggKGNvbXBTdHJpbmdbaV0pICB7Ci0gICAg
ICAgIGNhc2UgJ3gnOiAKLSAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzW2ldID0gMDsKLSAgICAg
ICAgICAgIGZpZWxkU2V0W2ldID0gZXh5enc7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSAncic6IAotICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbaV0gPSAwOwotICAgICAgICAg
ICAgZmllbGRTZXRbaV0gPSBlcmdiYTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
ICdzJzoKLSAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzW2ldID0gMDsKLSAgICAgICAgICAgIGZp
ZWxkU2V0W2ldID0gZXN0cHE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAneSc6
IAotICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbaV0gPSAxOwotICAgICAgICAgICAgZmllbGRT
ZXRbaV0gPSBleHl6dzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICdnJzogCi0g
ICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1tpXSA9IDE7Ci0gICAgICAgICAgICBmaWVsZFNldFtp
XSA9IGVyZ2JhOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3QnOgotICAgICAg
ICAgICAgZmllbGRzLm9mZnNldHNbaV0gPSAxOwotICAgICAgICAgICAgZmllbGRTZXRbaV0gPSBl
c3RwcTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICd6JzogCi0gICAgICAgICAg
ICBmaWVsZHMub2Zmc2V0c1tpXSA9IDI7Ci0gICAgICAgICAgICBmaWVsZFNldFtpXSA9IGV4eXp3
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ2InOiAKLSAgICAgICAgICAgIGZp
ZWxkcy5vZmZzZXRzW2ldID0gMjsKLSAgICAgICAgICAgIGZpZWxkU2V0W2ldID0gZXJnYmE7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAncCc6Ci0gICAgICAgICAgICBmaWVsZHMu
b2Zmc2V0c1tpXSA9IDI7Ci0gICAgICAgICAgICBmaWVsZFNldFtpXSA9IGVzdHBxOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICBjYXNlICd3JzogCi0gICAgICAgICAgICBm
aWVsZHMub2Zmc2V0c1tpXSA9IDM7Ci0gICAgICAgICAgICBmaWVsZFNldFtpXSA9IGV4eXp3Owot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ2EnOiAKLSAgICAgICAgICAgIGZpZWxk
cy5vZmZzZXRzW2ldID0gMzsKLSAgICAgICAgICAgIGZpZWxkU2V0W2ldID0gZXJnYmE7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAncSc6Ci0gICAgICAgICAgICBmaWVsZHMub2Zm
c2V0c1tpXSA9IDM7Ci0gICAgICAgICAgICBmaWVsZFNldFtpXSA9IGVzdHBxOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBlcnJvcihsaW5lLCAiaWxs
ZWdhbCB2ZWN0b3IgZmllbGQgc2VsZWN0aW9uIiwgY29tcFN0cmluZy5jX3N0cigpKTsKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgZmllbGRzLm51bTsgKytpKSB7Ci0gICAgICAgIGlmIChmaWVsZHMub2Zmc2V0c1tp
XSA+PSB2ZWNTaXplKSB7Ci0gICAgICAgICAgICBlcnJvcihsaW5lLCAidmVjdG9yIGZpZWxkIHNl
bGVjdGlvbiBvdXQgb2YgcmFuZ2UiLCAgY29tcFN0cmluZy5jX3N0cigpKTsKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpID4gMCkgewotICAgICAg
ICAgICAgaWYgKGZpZWxkU2V0W2ldICE9IGZpZWxkU2V0W2ktMV0pIHsKLSAgICAgICAgICAgICAg
ICBlcnJvcihsaW5lLCAiaWxsZWdhbCAtIHZlY3RvciBjb21wb25lbnQgZmllbGRzIG5vdCBmcm9t
IHRoZSBzYW1lIHNldCIsIGNvbXBTdHJpbmcuY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLQotLy8KLS8vIExvb2sgYXQgYSAnLicgZmllbGQgc2VsZWN0b3Igc3RyaW5n
IGFuZCBjaGFuZ2UgaXQgaW50byBvZmZzZXRzCi0vLyBmb3IgYSBtYXRyaXguCi0vLwotYm9vbCBU
UGFyc2VDb250ZXh0OjpwYXJzZU1hdHJpeEZpZWxkcyhjb25zdCBUU3RyaW5nJiBjb21wU3RyaW5n
LCBpbnQgbWF0U2l6ZSwgVE1hdHJpeEZpZWxkcyYgZmllbGRzLCBjb25zdCBUU291cmNlTG9jJiBs
aW5lKQotewotICAgIGZpZWxkcy53aG9sZVJvdyA9IGZhbHNlOwotICAgIGZpZWxkcy53aG9sZUNv
bCA9IGZhbHNlOwotICAgIGZpZWxkcy5yb3cgPSAtMTsKLSAgICBmaWVsZHMuY29sID0gLTE7Ci0K
LSAgICBpZiAoY29tcFN0cmluZy5zaXplKCkgIT0gMikgewotICAgICAgICBlcnJvcihsaW5lLCAi
aWxsZWdhbCBsZW5ndGggb2YgbWF0cml4IGZpZWxkIHNlbGVjdGlvbiIsIGNvbXBTdHJpbmcuY19z
dHIoKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoY29tcFN0cmlu
Z1swXSA9PSAnXycpIHsKLSAgICAgICAgaWYgKGNvbXBTdHJpbmdbMV0gPCAnMCcgfHwgY29tcFN0
cmluZ1sxXSA+ICczJykgewotICAgICAgICAgICAgZXJyb3IobGluZSwgImlsbGVnYWwgbWF0cml4
IGZpZWxkIHNlbGVjdGlvbiIsIGNvbXBTdHJpbmcuY19zdHIoKSk7Ci0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgZmllbGRzLndob2xlQ29sID0gdHJ1ZTsKLSAg
ICAgICAgZmllbGRzLmNvbCA9IGNvbXBTdHJpbmdbMV0gLSAnMCc7Ci0gICAgfSBlbHNlIGlmIChj
b21wU3RyaW5nWzFdID09ICdfJykgewotICAgICAgICBpZiAoY29tcFN0cmluZ1swXSA8ICcwJyB8
fCBjb21wU3RyaW5nWzBdID4gJzMnKSB7Ci0gICAgICAgICAgICBlcnJvcihsaW5lLCAiaWxsZWdh
bCBtYXRyaXggZmllbGQgc2VsZWN0aW9uIiwgY29tcFN0cmluZy5jX3N0cigpKTsKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBmaWVsZHMud2hvbGVSb3cgPSB0
cnVlOwotICAgICAgICBmaWVsZHMucm93ID0gY29tcFN0cmluZ1swXSAtICcwJzsKLSAgICB9IGVs
c2UgewotICAgICAgICBpZiAoY29tcFN0cmluZ1swXSA8ICcwJyB8fCBjb21wU3RyaW5nWzBdID4g
JzMnIHx8Ci0gICAgICAgICAgICBjb21wU3RyaW5nWzFdIDwgJzAnIHx8IGNvbXBTdHJpbmdbMV0g
PiAnMycpIHsKLSAgICAgICAgICAgIGVycm9yKGxpbmUsICJpbGxlZ2FsIG1hdHJpeCBmaWVsZCBz
ZWxlY3Rpb24iLCBjb21wU3RyaW5nLmNfc3RyKCkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB9Ci0gICAgICAgIGZpZWxkcy5yb3cgPSBjb21wU3RyaW5nWzBdIC0gJzAnOwot
ICAgICAgICBmaWVsZHMuY29sID0gY29tcFN0cmluZ1sxXSAtICcwJzsKLSAgICB9Ci0KLSAgICBp
ZiAoZmllbGRzLnJvdyA+PSBtYXRTaXplIHx8IGZpZWxkcy5jb2wgPj0gbWF0U2l6ZSkgewotICAg
ICAgICBlcnJvcihsaW5lLCAibWF0cml4IGZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UiLCBj
b21wU3RyaW5nLmNfc3RyKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gRXJyb3JzCi0vLwotLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCi0KLS8vCi0vLyBUcmFjayB3aGV0aGVyIGVycm9ycyBoYXZlIG9jY3VycmVk
LgotLy8KLXZvaWQgVFBhcnNlQ29udGV4dDo6cmVjb3ZlcigpCi17Ci19Ci0KLS8vCi0vLyBVc2Vk
IGJ5IGZsZXgvYmlzb24gdG8gb3V0cHV0IGFsbCBzeW50YXggYW5kIHBhcnNpbmcgZXJyb3JzLgot
Ly8KLXZvaWQgVFBhcnNlQ29udGV4dDo6ZXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbG9jLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByZWFzb24sIGNvbnN0IGNoYXIqIHRv
a2VuLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXh0cmFJbmZvKQot
ewotICAgIHBwOjpTb3VyY2VMb2NhdGlvbiBzcmNMb2M7Ci0gICAgc3JjTG9jLmZpbGUgPSBsb2Mu
Zmlyc3RfZmlsZTsKLSAgICBzcmNMb2MubGluZSA9IGxvYy5maXJzdF9saW5lOwotICAgIGRpYWdu
b3N0aWNzLndyaXRlSW5mbyhwcDo6RGlhZ25vc3RpY3M6OkVSUk9SLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBzcmNMb2MsIHJlYXNvbiwgdG9rZW4sIGV4dHJhSW5mbyk7Ci0KLX0KLQotdm9p
ZCBUUGFyc2VDb250ZXh0Ojp3YXJuaW5nKGNvbnN0IFRTb3VyY2VMb2MmIGxvYywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByZWFzb24sIGNvbnN0IGNoYXIqIHRva2Vu
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4dHJhSW5mbykgewot
ICAgIHBwOjpTb3VyY2VMb2NhdGlvbiBzcmNMb2M7Ci0gICAgc3JjTG9jLmZpbGUgPSBsb2MuZmly
c3RfZmlsZTsKLSAgICBzcmNMb2MubGluZSA9IGxvYy5maXJzdF9saW5lOwotICAgIGRpYWdub3N0
aWNzLndyaXRlSW5mbyhwcDo6RGlhZ25vc3RpY3M6OldBUk5JTkcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIHNyY0xvYywgcmVhc29uLCB0b2tlbiwgZXh0cmFJbmZvKTsKLX0KLQotdm9pZCBU
UGFyc2VDb250ZXh0Ojp0cmFjZShjb25zdCBjaGFyKiBzdHIpCi17Ci0gICAgZGlhZ25vc3RpY3Mu
d3JpdGVEZWJ1ZyhzdHIpOwotfQotCi0vLwotLy8gU2FtZSBlcnJvciBtZXNzYWdlIGZvciBhbGwg
cGxhY2VzIGFzc2lnbm1lbnRzIGRvbid0IHdvcmsuCi0vLwotdm9pZCBUUGFyc2VDb250ZXh0Ojph
c3NpZ25FcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmlu
ZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KQotewotICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5m
b1N0cmVhbTsKLSAgICBleHRyYUluZm9TdHJlYW0gPDwgImNhbm5vdCBjb252ZXJ0IGZyb20gJyIg
PDwgcmlnaHQgPDwgIicgdG8gJyIgPDwgbGVmdCA8PCAiJyI7Ci0gICAgc3RkOjpzdHJpbmcgZXh0
cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwotICAgIGVycm9yKGxpbmUsICIiLCBvcCwg
ZXh0cmFJbmZvLmNfc3RyKCkpOwotfQotCi0vLwotLy8gU2FtZSBlcnJvciBtZXNzYWdlIGZvciBh
bGwgcGxhY2VzIHVuYXJ5IG9wZXJhdGlvbnMgZG9uJ3Qgd29yay4KLS8vCi12b2lkIFRQYXJzZUNv
bnRleHQ6OnVuYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBv
cCwgVFN0cmluZyBvcGVyYW5kKQotewotICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0
cmVhbTsKLSAgICBleHRyYUluZm9TdHJlYW0gPDwgIm5vIG9wZXJhdGlvbiAnIiA8PCBvcCA8PCAi
JyBleGlzdHMgdGhhdCB0YWtlcyBhbiBvcGVyYW5kIG9mIHR5cGUgIiA8PCBvcGVyYW5kIAotICAg
ICAgICAgICAgICAgICAgICA8PCAiIChvciB0aGVyZSBpcyBubyBhY2NlcHRhYmxlIGNvbnZlcnNp
b24pIjsKLSAgICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7
Ci0gICAgZXJyb3IobGluZSwgIiB3cm9uZyBvcGVyYW5kIHR5cGUiLCBvcCwgZXh0cmFJbmZvLmNf
c3RyKCkpOwotfQotCi0vLwotLy8gU2FtZSBlcnJvciBtZXNzYWdlIGZvciBhbGwgYmluYXJ5IG9w
ZXJhdGlvbnMgZG9uJ3Qgd29yay4KLS8vCi12b2lkIFRQYXJzZUNvbnRleHQ6OmJpbmFyeU9wRXJy
b3IoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgbGVmdCwg
VFN0cmluZyByaWdodCkKLXsKLSAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07
Ci0gICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJubyBvcGVyYXRpb24gJyIgPDwgb3AgPDwgIicgZXhp
c3RzIHRoYXQgdGFrZXMgYSBsZWZ0LWhhbmQgb3BlcmFuZCBvZiB0eXBlICciIDw8IGxlZnQgCi0g
ICAgICAgICAgICAgICAgICAgIDw8ICInIGFuZCBhIHJpZ2h0IG9wZXJhbmQgb2YgdHlwZSAnIiA8
PCByaWdodCA8PCAiJyAob3IgdGhlcmUgaXMgbm8gYWNjZXB0YWJsZSBjb252ZXJzaW9uKSI7Ci0g
ICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwotICAgIGVy
cm9yKGxpbmUsICIgd3Jvbmcgb3BlcmFuZCB0eXBlcyAiLCBvcCwgZXh0cmFJbmZvLmNfc3RyKCkp
OyAKLX0KLQotYm9vbCBUUGFyc2VDb250ZXh0OjpwcmVjaXNpb25FcnJvckNoZWNrKGNvbnN0IFRT
b3VyY2VMb2MmIGxpbmUsIFRQcmVjaXNpb24gcHJlY2lzaW9uLCBUQmFzaWNUeXBlIHR5cGUpewot
ICAgIGlmICghY2hlY2tzUHJlY2lzaW9uRXJyb3JzKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgc3dpdGNoKCB0eXBlICl7Ci0gICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgaWYoIHByZWNp
c2lvbiA9PSBFYnBVbmRlZmluZWQgKXsKLSAgICAgICAgICAgIGVycm9yKCBsaW5lLCAiTm8gcHJl
Y2lzaW9uIHNwZWNpZmllZCBmb3IgKGZsb2F0KSIsICIiICk7Ci0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICBjYXNlIEVidEludDoKLSAgICAg
ICAgaWYoIHByZWNpc2lvbiA9PSBFYnBVbmRlZmluZWQgKXsKLSAgICAgICAgICAgIGVycm9yKCBs
aW5lLCAiTm8gcHJlY2lzaW9uIHNwZWNpZmllZCAoaW50KSIsICIiICk7Ci0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotLy8KLS8v
IEJvdGggdGVzdCBhbmQgaWYgbmVjZXNzYXJ5LCBzcGl0IG91dCBhbiBlcnJvciwgdG8gc2VlIGlm
IHRoZSBub2RlIGlzIHJlYWxseQotLy8gYW4gbC12YWx1ZSB0aGF0IGNhbiBiZSBvcGVyYXRlZCBv
biB0aGlzIHdheS4KLS8vCi0vLyBSZXR1cm5zIHRydWUgaWYgdGhlIHdhcyBhbiBlcnJvci4KLS8v
Ci1ib29sIFRQYXJzZUNvbnRleHQ6OmxWYWx1ZUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYg
bGluZSwgY29uc3QgY2hhciogb3AsIFRJbnRlcm1UeXBlZCogbm9kZSkKLXsKLSAgICBUSW50ZXJt
U3ltYm9sKiBzeW1Ob2RlID0gbm9kZS0+Z2V0QXNTeW1ib2xOb2RlKCk7Ci0gICAgVEludGVybUJp
bmFyeSogYmluYXJ5Tm9kZSA9IG5vZGUtPmdldEFzQmluYXJ5Tm9kZSgpOwotCi0gICAgaWYgKGJp
bmFyeU5vZGUpIHsKLSAgICAgICAgYm9vbCBlcnJvclJldHVybjsKLQotICAgICAgICBzd2l0Y2go
YmluYXJ5Tm9kZS0+Z2V0T3AoKSkgewotICAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0OgotICAg
ICAgICBjYXNlIEVPcEluZGV4SW5kaXJlY3Q6Ci0gICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RT
dHJ1Y3Q6Ci0gICAgICAgICAgICByZXR1cm4gbFZhbHVlRXJyb3JDaGVjayhsaW5lLCBvcCwgYmlu
YXJ5Tm9kZS0+Z2V0TGVmdCgpKTsKLSAgICAgICAgY2FzZSBFT3BWZWN0b3JTd2l6emxlOgotICAg
ICAgICAgICAgZXJyb3JSZXR1cm4gPSBsVmFsdWVFcnJvckNoZWNrKGxpbmUsIG9wLCBiaW5hcnlO
b2RlLT5nZXRMZWZ0KCkpOwotICAgICAgICAgICAgaWYgKCFlcnJvclJldHVybikgewotICAgICAg
ICAgICAgICAgIGludCBvZmZzZXRbNF0gPSB7MCwwLDAsMH07Ci0KLSAgICAgICAgICAgICAgICBU
SW50ZXJtVHlwZWQqIHJpZ2h0Tm9kZSA9IGJpbmFyeU5vZGUtPmdldFJpZ2h0KCk7Ci0gICAgICAg
ICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqYWdnck5vZGUgPSByaWdodE5vZGUtPmdldEFzQWdn
cmVnYXRlKCk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgZm9yIChUSW50ZXJt
U2VxdWVuY2U6Oml0ZXJhdG9yIHAgPSBhZ2dyTm9kZS0+Z2V0U2VxdWVuY2UoKS5iZWdpbigpOyAK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCAhPSBhZ2dy
Tm9kZS0+Z2V0U2VxdWVuY2UoKS5lbmQoKTsgcCsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlu
dCB2YWx1ZSA9ICgqcCktPmdldEFzVHlwZWQoKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldElD
b25zdCgwKTsKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0W3ZhbHVlXSsrOyAgICAgCi0gICAg
ICAgICAgICAgICAgICAgIGlmIChvZmZzZXRbdmFsdWVdID4gMSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgZXJyb3IobGluZSwgIiBsLXZhbHVlIG9mIHN3aXp6bGUgY2Fubm90IGhhdmUgZHVw
bGljYXRlIGNvbXBvbmVudHMiLCBvcCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfSAKLQotICAgICAgICAgICAgcmV0dXJuIGVycm9yUmV0dXJuOwotICAgICAgICBkZWZh
dWx0OiAKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGVycm9yKGxpbmUs
ICIgbC12YWx1ZSByZXF1aXJlZCIsIG9wKTsKLQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci0KLQotICAgIGNvbnN0IGNoYXIqIHN5bWJvbCA9IDA7Ci0gICAgaWYgKHN5bU5vZGUgIT0gMCkK
LSAgICAgICAgc3ltYm9sID0gc3ltTm9kZS0+Z2V0U3ltYm9sKCkuY19zdHIoKTsKLQotICAgIGNv
bnN0IGNoYXIqIG1lc3NhZ2UgPSAwOwotICAgIHN3aXRjaCAobm9kZS0+Z2V0UXVhbGlmaWVyKCkp
IHsKLSAgICBjYXNlIEV2cUNvbnN0OiAgICAgICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBh
IGNvbnN0IjsgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXZxQ29uc3RSZWFkT25seTogIG1lc3Nh
Z2UgPSAiY2FuJ3QgbW9kaWZ5IGEgY29uc3QiOyAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdnFB
dHRyaWJ1dGU6ICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgYW4gYXR0cmlidXRlIjsgICBi
cmVhazsKLSAgICBjYXNlIEV2cVVuaWZvcm06ICAgICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlm
eSBhIHVuaWZvcm0iOyAgICAgIGJyZWFrOwotICAgIGNhc2UgRXZxVmFyeWluZ0luOiAgICAgIG1l
c3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGEgdmFyeWluZyI7ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBF
dnFGcmFnQ29vcmQ6ICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgZ2xfRnJhZ0Nvb3JkIjsg
ICBicmVhazsKLSAgICBjYXNlIEV2cUZyb250RmFjaW5nOiAgICBtZXNzYWdlID0gImNhbid0IG1v
ZGlmeSBnbF9Gcm9udEZhY2luZyI7IGJyZWFrOwotICAgIGNhc2UgRXZxUG9pbnRDb29yZDogICAg
IG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGdsX1BvaW50Q29vcmQiOyAgYnJlYWs7Ci0gICAgZGVm
YXVsdDoKLQotICAgICAgICAvLwotICAgICAgICAvLyBUeXBlIHRoYXQgY2FuJ3QgYmUgd3JpdHRl
biB0bz8KLSAgICAgICAgLy8KLSAgICAgICAgc3dpdGNoIChub2RlLT5nZXRCYXNpY1R5cGUoKSkg
ewotICAgICAgICBjYXNlIEVidFNhbXBsZXIyRDoKLSAgICAgICAgY2FzZSBFYnRTYW1wbGVyQ3Vi
ZToKLSAgICAgICAgICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGEgc2FtcGxlciI7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBFYnRWb2lkOgotICAgICAgICAgICAgbWVzc2Fn
ZSA9ICJjYW4ndCBtb2RpZnkgdm9pZCI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVm
YXVsdDogCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICht
ZXNzYWdlID09IDAgJiYgYmluYXJ5Tm9kZSA9PSAwICYmIHN5bU5vZGUgPT0gMCkgewotICAgICAg
ICBlcnJvcihsaW5lLCAiIGwtdmFsdWUgcmVxdWlyZWQiLCBvcCk7Ci0KLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotCi0KLSAgICAvLwotICAgIC8vIEV2ZXJ5dGhpbmcgZWxzZSBpcyBva2F5
LCBubyBlcnJvci4KLSAgICAvLwotICAgIGlmIChtZXNzYWdlID09IDApCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIC8vCi0gICAgLy8gSWYgd2UgZ2V0IGhlcmUsIHdlIGhhdmUgYW4gZXJy
b3IgYW5kIGEgbWVzc2FnZS4KLSAgICAvLwotICAgIGlmIChzeW1Ob2RlKSB7Ci0gICAgICAgIHN0
ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKLSAgICAgICAgZXh0cmFJbmZvU3RyZWFt
IDw8ICJcIiIgPDwgc3ltYm9sIDw8ICJcIiAoIiA8PCBtZXNzYWdlIDw8ICIpIjsKLSAgICAgICAg
c3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwotICAgICAgICBl
cnJvcihsaW5lLCAiIGwtdmFsdWUgcmVxdWlyZWQiLCBvcCwgZXh0cmFJbmZvLmNfc3RyKCkpOwot
ICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3Ry
ZWFtOwotICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgIigiIDw8IG1lc3NhZ2UgPDwgIikiOwot
ICAgICAgICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7Ci0g
ICAgICAgIGVycm9yKGxpbmUsICIgbC12YWx1ZSByZXF1aXJlZCIsIG9wLCBleHRyYUluZm8uY19z
dHIoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vCi0vLyBCb3RoIHRlc3Qs
IGFuZCBpZiBuZWNlc3Nhcnkgc3BpdCBvdXQgYW4gZXJyb3IsIHRvIHNlZSBpZiB0aGUgbm9kZSBp
cyByZWFsbHkKLS8vIGEgY29uc3RhbnQuCi0vLwotLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB3YXMg
YW4gZXJyb3IuCi0vLwotYm9vbCBUUGFyc2VDb250ZXh0Ojpjb25zdEVycm9yQ2hlY2soVEludGVy
bVR5cGVkKiBub2RlKQotewotICAgIGlmIChub2RlLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25z
dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZXJyb3Iobm9kZS0+Z2V0TGluZSgpLCAi
Y29uc3RhbnQgZXhwcmVzc2lvbiByZXF1aXJlZCIsICIiKTsKLQotICAgIHJldHVybiB0cnVlOwot
fQotCi0vLwotLy8gQm90aCB0ZXN0LCBhbmQgaWYgbmVjZXNzYXJ5IHNwaXQgb3V0IGFuIGVycm9y
LCB0byBzZWUgaWYgdGhlIG5vZGUgaXMgcmVhbGx5Ci0vLyBhbiBpbnRlZ2VyLgotLy8KLS8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGUgd2FzIGFuIGVycm9yLgotLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6
aW50ZWdlckVycm9yQ2hlY2soVEludGVybVR5cGVkKiBub2RlLCBjb25zdCBjaGFyKiB0b2tlbikK
LXsKLSAgICBpZiAobm9kZS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0SW50ICYmIG5vZGUtPmdldE5v
bWluYWxTaXplKCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZXJyb3Iobm9k
ZS0+Z2V0TGluZSgpLCAiaW50ZWdlciBleHByZXNzaW9uIHJlcXVpcmVkIiwgdG9rZW4pOwotCi0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vCi0vLyBCb3RoIHRlc3QsIGFuZCBpZiBuZWNlc3Nhcnkg
c3BpdCBvdXQgYW4gZXJyb3IsIHRvIHNlZSBpZiB3ZSBhcmUgY3VycmVudGx5Ci0vLyBnbG9iYWxs
eSBzY29wZWQuCi0vLwotLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB3YXMgYW4gZXJyb3IuCi0vLwot
Ym9vbCBUUGFyc2VDb250ZXh0OjpnbG9iYWxFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxp
bmUsIGJvb2wgZ2xvYmFsLCBjb25zdCBjaGFyKiB0b2tlbikKLXsKLSAgICBpZiAoZ2xvYmFsKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBlcnJvcihsaW5lLCAib25seSBhbGxvd2VkIGF0
IGdsb2JhbCBzY29wZSIsIHRva2VuKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi0vLwotLy8g
Rm9yIG5vdywga2VlcCBpdCBzaW1wbGU6ICBpZiBpdCBzdGFydHMgImdsXyIsIGl0J3MgcmVzZXJ2
ZWQsIGluZGVwZW5kZW50Ci0vLyBvZiBzY29wZS4gIEV4Y2VwdCwgaWYgdGhlIHN5bWJvbCB0YWJs
ZSBpcyBhdCB0aGUgYnVpbHQtaW4gcHVzaC1sZXZlbCwKLS8vIHdoaWNoIGlzIHdoZW4gd2UgYXJl
IHBhcnNpbmcgYnVpbHQtaW5zLgotLy8gQWxzbyBjaGVja3MgZm9yICJ3ZWJnbF8iIGFuZCAiX3dl
YmdsXyIgcmVzZXJ2ZWQgaWRlbnRpZmllcnMgaWYgcGFyc2luZyBhCi0vLyB3ZWJnbCBzaGFkZXIu
Ci0vLwotLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KLS8vCi1ib29sIFRQ
YXJzZUNvbnRleHQ6OnJlc2VydmVkRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBj
b25zdCBUU3RyaW5nJiBpZGVudGlmaWVyKQotewotICAgIHN0YXRpYyBjb25zdCBjaGFyKiByZXNl
cnZlZEVyck1zZyA9ICJyZXNlcnZlZCBidWlsdC1pbiBuYW1lIjsKLSAgICBpZiAoIXN5bWJvbFRh
YmxlLmF0QnVpbHRJbkxldmVsKCkpIHsKLSAgICAgICAgaWYgKGlkZW50aWZpZXIuY29tcGFyZSgw
LCAzLCAiZ2xfIikgPT0gMCkgewotICAgICAgICAgICAgZXJyb3IobGluZSwgcmVzZXJ2ZWRFcnJN
c2csICJnbF8iKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAg
IGlmIChpc1dlYkdMQmFzZWRTcGVjKHNoYWRlclNwZWMpKSB7Ci0gICAgICAgICAgICBpZiAoaWRl
bnRpZmllci5jb21wYXJlKDAsIDYsICJ3ZWJnbF8iKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAg
ZXJyb3IobGluZSwgcmVzZXJ2ZWRFcnJNc2csICJ3ZWJnbF8iKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChpZGVudGlmaWVyLmNv
bXBhcmUoMCwgNywgIl93ZWJnbF8iKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgZXJyb3IobGlu
ZSwgcmVzZXJ2ZWRFcnJNc2csICJfd2ViZ2xfIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoc2hhZGVyU3BlYyA9PSBTSF9DU1Nf
U0hBREVSU19TUEVDICYmIGlkZW50aWZpZXIuY29tcGFyZSgwLCA0LCAiY3NzXyIpID09IDApIHsK
LSAgICAgICAgICAgICAgICBlcnJvcihsaW5lLCByZXNlcnZlZEVyck1zZywgImNzc18iKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
ICAgICBpZiAoaWRlbnRpZmllci5maW5kKCJfXyIpICE9IFRTdHJpbmc6Om5wb3MpIHsKLSAgICAg
ICAgICAgIGVycm9yKGxpbmUsICJpZGVudGlmaWVycyBjb250YWluaW5nIHR3byBjb25zZWN1dGl2
ZSB1bmRlcnNjb3JlcyAoX18pIGFyZSByZXNlcnZlZCBhcyBwb3NzaWJsZSBmdXR1cmUga2V5d29y
ZHMiLCBpZGVudGlmaWVyLmNfc3RyKCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLS8vCi0vLyBNYWtlIHN1cmUg
dGhlcmUgaXMgZW5vdWdoIGRhdGEgcHJvdmlkZWQgdG8gdGhlIGNvbnN0cnVjdG9yIHRvIGJ1aWxk
Ci0vLyBzb21ldGhpbmcgb2YgdGhlIHR5cGUgb2YgdGhlIGNvbnN0cnVjdG9yLiAgQWxzbyByZXR1
cm5zIHRoZSB0eXBlIG9mCi0vLyB0aGUgY29uc3RydWN0b3IuCi0vLwotLy8gUmV0dXJucyB0cnVl
IGlmIHRoZXJlIHdhcyBhbiBlcnJvciBpbiBjb25zdHJ1Y3Rpb24uCi0vLwotYm9vbCBUUGFyc2VD
b250ZXh0Ojpjb25zdHJ1Y3RvckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVElu
dGVybU5vZGUqIG5vZGUsIFRGdW5jdGlvbiYgZnVuY3Rpb24sIFRPcGVyYXRvciBvcCwgVFR5cGUq
IHR5cGUpCi17Ci0gICAgKnR5cGUgPSBmdW5jdGlvbi5nZXRSZXR1cm5UeXBlKCk7Ci0KLSAgICBi
b29sIGNvbnN0cnVjdGluZ01hdHJpeCA9IGZhbHNlOwotICAgIHN3aXRjaChvcCkgewotICAgIGNh
c2UgRU9wQ29uc3RydWN0TWF0MjoKLSAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDM6Ci0gICAgY2Fz
ZSBFT3BDb25zdHJ1Y3RNYXQ0OgotICAgICAgICBjb25zdHJ1Y3RpbmdNYXRyaXggPSB0cnVlOwot
ICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OiAKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0g
ICAgLy8KLSAgICAvLyBOb3RlOiBJdCdzIG9rYXkgdG8gaGF2ZSB0b28gbWFueSBjb21wb25lbnRz
IGF2YWlsYWJsZSwgYnV0IG5vdCBva2F5IHRvIGhhdmUgdW51c2VkCi0gICAgLy8gYXJndW1lbnRz
LiAgJ2Z1bGwnIHdpbGwgZ28gdG8gdHJ1ZSB3aGVuIGVub3VnaCBhcmdzIGhhdmUgYmVlbiBzZWVu
LiAgSWYgd2UgbG9vcAotICAgIC8vIGFnYWluLCB0aGVyZSBpcyBhbiBleHRyYSBhcmd1bWVudCwg
c28gJ292ZXJmdWxsJyB3aWxsIGJlY29tZSB0cnVlLgotICAgIC8vCi0KLSAgICBzaXplX3Qgc2l6
ZSA9IDA7Ci0gICAgYm9vbCBjb25zdFR5cGUgPSB0cnVlOwotICAgIGJvb2wgZnVsbCA9IGZhbHNl
OwotICAgIGJvb2wgb3ZlckZ1bGwgPSBmYWxzZTsKLSAgICBib29sIG1hdHJpeEluTWF0cml4ID0g
ZmFsc2U7Ci0gICAgYm9vbCBhcnJheUFyZyA9IGZhbHNlOwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgpOyArK2kpIHsKLSAgICAgICAgY29uc3QgVFBh
cmFtZXRlciYgcGFyYW0gPSBmdW5jdGlvbi5nZXRQYXJhbShpKTsKLSAgICAgICAgc2l6ZSArPSBw
YXJhbS50eXBlLT5nZXRPYmplY3RTaXplKCk7Ci0gICAgICAgIAotICAgICAgICBpZiAoY29uc3Ry
dWN0aW5nTWF0cml4ICYmIHBhcmFtLnR5cGUtPmlzTWF0cml4KCkpCi0gICAgICAgICAgICBtYXRy
aXhJbk1hdHJpeCA9IHRydWU7Ci0gICAgICAgIGlmIChmdWxsKQotICAgICAgICAgICAgb3ZlckZ1
bGwgPSB0cnVlOwotICAgICAgICBpZiAob3AgIT0gRU9wQ29uc3RydWN0U3RydWN0ICYmICF0eXBl
LT5pc0FycmF5KCkgJiYgc2l6ZSA+PSB0eXBlLT5nZXRPYmplY3RTaXplKCkpCi0gICAgICAgICAg
ICBmdWxsID0gdHJ1ZTsKLSAgICAgICAgaWYgKHBhcmFtLnR5cGUtPmdldFF1YWxpZmllcigpICE9
IEV2cUNvbnN0KQotICAgICAgICAgICAgY29uc3RUeXBlID0gZmFsc2U7Ci0gICAgICAgIGlmIChw
YXJhbS50eXBlLT5pc0FycmF5KCkpCi0gICAgICAgICAgICBhcnJheUFyZyA9IHRydWU7Ci0gICAg
fQotICAgIAotICAgIGlmIChjb25zdFR5cGUpCi0gICAgICAgIHR5cGUtPnNldFF1YWxpZmllcihF
dnFDb25zdCk7Ci0KLSAgICBpZiAodHlwZS0+aXNBcnJheSgpICYmIHN0YXRpY19jYXN0PHNpemVf
dD4odHlwZS0+Z2V0QXJyYXlTaXplKCkpICE9IGZ1bmN0aW9uLmdldFBhcmFtQ291bnQoKSkgewot
ICAgICAgICBlcnJvcihsaW5lLCAiYXJyYXkgY29uc3RydWN0b3IgbmVlZHMgb25lIGFyZ3VtZW50
IHBlciBhcnJheSBlbGVtZW50IiwgImNvbnN0cnVjdG9yIik7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLQotICAgIGlmIChhcnJheUFyZyAmJiBvcCAhPSBFT3BDb25zdHJ1Y3RTdHJ1Y3Qp
IHsKLSAgICAgICAgZXJyb3IobGluZSwgImNvbnN0cnVjdGluZyBmcm9tIGEgbm9uLWRlcmVmZXJl
bmNlZCBhcnJheSIsICJjb25zdHJ1Y3RvciIpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci0KLSAgICBpZiAobWF0cml4SW5NYXRyaXggJiYgIXR5cGUtPmlzQXJyYXkoKSkgewotICAgICAg
ICBpZiAoZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgpICE9IDEpIHsKLSAgICAgICAgICBlcnJvcihs
aW5lLCAiY29uc3RydWN0aW5nIG1hdHJpeCBmcm9tIG1hdHJpeCBjYW4gb25seSB0YWtlIG9uZSBh
cmd1bWVudCIsICJjb25zdHJ1Y3RvciIpOwotICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgaWYgKG92ZXJGdWxsKSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJ0
b28gbWFueSBhcmd1bWVudHMiLCAiY29uc3RydWN0b3IiKTsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotICAgIAotICAgIGlmIChvcCA9PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QgJiYgIXR5cGUt
PmlzQXJyYXkoKSAmJiBpbnQodHlwZS0+Z2V0U3RydWN0KCktPmZpZWxkcygpLnNpemUoKSkgIT0g
ZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgpKSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJOdW1iZXIg
b2YgY29uc3RydWN0b3IgcGFyYW1ldGVycyBkb2VzIG5vdCBtYXRjaCB0aGUgbnVtYmVyIG9mIHN0
cnVjdHVyZSBmaWVsZHMiLCAiY29uc3RydWN0b3IiKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfQotCi0gICAgaWYgKCF0eXBlLT5pc01hdHJpeCgpIHx8ICFtYXRyaXhJbk1hdHJpeCkgewot
ICAgICAgICBpZiAoKG9wICE9IEVPcENvbnN0cnVjdFN0cnVjdCAmJiBzaXplICE9IDEgJiYgc2l6
ZSA8IHR5cGUtPmdldE9iamVjdFNpemUoKSkgfHwKLSAgICAgICAgICAgIChvcCA9PSBFT3BDb25z
dHJ1Y3RTdHJ1Y3QgJiYgc2l6ZSA8IHR5cGUtPmdldE9iamVjdFNpemUoKSkpIHsKLSAgICAgICAg
ICAgIGVycm9yKGxpbmUsICJub3QgZW5vdWdoIGRhdGEgcHJvdmlkZWQgZm9yIGNvbnN0cnVjdGlv
biIsICJjb25zdHJ1Y3RvciIpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBUSW50ZXJtVHlwZWQgKnR5cGVkID0gbm9kZSA/IG5vZGUtPmdldEFzVHlw
ZWQoKSA6IDA7Ci0gICAgaWYgKHR5cGVkID09IDApIHsKLSAgICAgICAgZXJyb3IobGluZSwgImNv
bnN0cnVjdG9yIGFyZ3VtZW50IGRvZXMgbm90IGhhdmUgYSB0eXBlIiwgImNvbnN0cnVjdG9yIik7
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBpZiAob3AgIT0gRU9wQ29uc3RydWN0
U3RydWN0ICYmIElzU2FtcGxlcih0eXBlZC0+Z2V0QmFzaWNUeXBlKCkpKSB7Ci0gICAgICAgIGVy
cm9yKGxpbmUsICJjYW5ub3QgY29udmVydCBhIHNhbXBsZXIiLCAiY29uc3RydWN0b3IiKTsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmICh0eXBlZC0+Z2V0QmFzaWNUeXBlKCkg
PT0gRWJ0Vm9pZCkgewotICAgICAgICBlcnJvcihsaW5lLCAiY2Fubm90IGNvbnZlcnQgYSB2b2lk
IiwgImNvbnN0cnVjdG9yIik7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotLy8gVGhpcyBmdW5jdGlvbiBjaGVja3MgdG8gc2VlIGlmIGEgdm9p
ZCB2YXJpYWJsZSBoYXMgYmVlbiBkZWNsYXJlZCBhbmQgcmFpc2UgYW4gZXJyb3IgbWVzc2FnZSBm
b3Igc3VjaCBhIGNhc2UKLS8vCi0vLyByZXR1cm5zIHRydWUgaW4gY2FzZSBvZiBhbiBlcnJvcgot
Ly8KLWJvb2wgVFBhcnNlQ29udGV4dDo6dm9pZEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYg
bGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgVFB1YmxpY1R5cGUmIHB1YlR5
cGUpCi17Ci0gICAgaWYgKHB1YlR5cGUudHlwZSA9PSBFYnRWb2lkKSB7Ci0gICAgICAgIGVycm9y
KGxpbmUsICJpbGxlZ2FsIHVzZSBvZiB0eXBlICd2b2lkJyIsIGlkZW50aWZpZXIuY19zdHIoKSk7
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0gCi0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LS8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIHRvIHNlZSBpZiB0aGUgbm9kZSAoZm9yIHRoZSBleHBy
ZXNzaW9uKSBjb250YWlucyBhIHNjYWxhciBib29sZWFuIGV4cHJlc3Npb24gb3Igbm90Ci0vLwot
Ly8gcmV0dXJucyB0cnVlIGluIGNhc2Ugb2YgYW4gZXJyb3IKLS8vCi1ib29sIFRQYXJzZUNvbnRl
eHQ6OmJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRJbnRlcm1U
eXBlZCogdHlwZSkKLXsKLSAgICBpZiAodHlwZS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0Qm9vbCB8
fCB0eXBlLT5pc0FycmF5KCkgfHwgdHlwZS0+aXNNYXRyaXgoKSB8fCB0eXBlLT5pc1ZlY3Rvcigp
KSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJib29sZWFuIGV4cHJlc3Npb24gZXhwZWN0ZWQiLCAi
Iik7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0gCi0KLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KLS8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIHRvIHNlZSBpZiB0aGUgbm9kZSAoZm9yIHRoZSBl
eHByZXNzaW9uKSBjb250YWlucyBhIHNjYWxhciBib29sZWFuIGV4cHJlc3Npb24gb3Igbm90Ci0v
LwotLy8gcmV0dXJucyB0cnVlIGluIGNhc2Ugb2YgYW4gZXJyb3IKLS8vCi1ib29sIFRQYXJzZUNv
bnRleHQ6OmJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRQdWJs
aWNUeXBlJiBwVHlwZSkKLXsKLSAgICBpZiAocFR5cGUudHlwZSAhPSBFYnRCb29sIHx8IHBUeXBl
LmFycmF5IHx8IHBUeXBlLm1hdHJpeCB8fCAocFR5cGUuc2l6ZSA+IDEpKSB7Ci0gICAgICAgIGVy
cm9yKGxpbmUsICJib29sZWFuIGV4cHJlc3Npb24gZXhwZWN0ZWQiLCAiIik7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0gCi0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgVFBhcnNl
Q29udGV4dDo6c2FtcGxlckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3Qg
VFB1YmxpY1R5cGUmIHBUeXBlLCBjb25zdCBjaGFyKiByZWFzb24pCi17Ci0gICAgaWYgKHBUeXBl
LnR5cGUgPT0gRWJ0U3RydWN0KSB7Ci0gICAgICAgIGlmIChjb250YWluc1NhbXBsZXIoKnBUeXBl
LnVzZXJEZWYpKSB7Ci0gICAgICAgICAgICBlcnJvcihsaW5lLCByZWFzb24sIGdldEJhc2ljU3Ry
aW5nKHBUeXBlLnR5cGUpLCAiKHN0cnVjdHVyZSBjb250YWlucyBhIHNhbXBsZXIpIik7Ci0gICAg
ICAgIAotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9IGVsc2UgaWYgKElzU2FtcGxlcihwVHlwZS50eXBlKSkg
ewotICAgICAgICBlcnJvcihsaW5lLCByZWFzb24sIGdldEJhc2ljU3RyaW5nKHBUeXBlLnR5cGUp
KTsKLQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KLWJvb2wgVFBhcnNlQ29udGV4dDo6c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhjb25zdCBU
U291cmNlTG9jJiBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUpCi17Ci0gICAgaWYgKChw
VHlwZS5xdWFsaWZpZXIgPT0gRXZxVmFyeWluZ0luIHx8IHBUeXBlLnF1YWxpZmllciA9PSBFdnFW
YXJ5aW5nT3V0IHx8IHBUeXBlLnF1YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUpICYmCi0gICAgICAg
IHBUeXBlLnR5cGUgPT0gRWJ0U3RydWN0KSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJjYW5ub3Qg
YmUgdXNlZCB3aXRoIGEgc3RydWN0dXJlIiwgZ2V0UXVhbGlmaWVyU3RyaW5nKHBUeXBlLnF1YWxp
ZmllcikpOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgaWYg
KHBUeXBlLnF1YWxpZmllciAhPSBFdnFVbmlmb3JtICYmIHNhbXBsZXJFcnJvckNoZWNrKGxpbmUs
IHBUeXBlLCAic2FtcGxlcnMgbXVzdCBiZSB1bmlmb3JtIikpCi0gICAgICAgIHJldHVybiB0cnVl
OwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFRQYXJzZUNvbnRleHQ6OnBhcmFtZXRl
clNhbXBsZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRRdWFsaWZpZXIgcXVh
bGlmaWVyLCBjb25zdCBUVHlwZSYgdHlwZSkKLXsKLSAgICBpZiAoKHF1YWxpZmllciA9PSBFdnFP
dXQgfHwgcXVhbGlmaWVyID09IEV2cUluT3V0KSAmJiAKLSAgICAgICAgICAgICB0eXBlLmdldEJh
c2ljVHlwZSgpICE9IEVidFN0cnVjdCAmJiBJc1NhbXBsZXIodHlwZS5nZXRCYXNpY1R5cGUoKSkp
IHsKLSAgICAgICAgZXJyb3IobGluZSwgInNhbXBsZXJzIGNhbm5vdCBiZSBvdXRwdXQgcGFyYW1l
dGVycyIsIHR5cGUuZ2V0QmFzaWNTdHJpbmcoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBUUGFyc2VDb250ZXh0Ojpjb250YWlu
c1NhbXBsZXIoVFR5cGUmIHR5cGUpCi17Ci0gICAgaWYgKElzU2FtcGxlcih0eXBlLmdldEJhc2lj
VHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAodHlwZS5nZXRCYXNpY1R5
cGUoKSA9PSBFYnRTdHJ1Y3QpIHsKLSAgICAgICAgY29uc3QgVEZpZWxkTGlzdCYgZmllbGRzID0g
dHlwZS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaW50IGkg
PSAwOyBpIDwgZmllbGRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoY29udGFpbnNT
YW1wbGVyKCpmaWVsZHNbaV0tPnR5cGUoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLS8vCi0vLyBEbyBz
aXplIGNoZWNraW5nIGZvciBhbiBhcnJheSB0eXBlJ3Mgc2l6ZS4KLS8vCi0vLyBSZXR1cm5zIHRy
dWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgotLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlT
aXplRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUSW50ZXJtVHlwZWQqIGV4cHIs
IGludCYgc2l6ZSkKLXsKLSAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiogY29uc3RhbnQgPSBleHBy
LT5nZXRBc0NvbnN0YW50VW5pb24oKTsKLSAgICBpZiAoY29uc3RhbnQgPT0gMCB8fCBjb25zdGFu
dC0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0SW50KSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJhcnJh
eSBzaXplIG11c3QgYmUgYSBjb25zdGFudCBpbnRlZ2VyIGV4cHJlc3Npb24iLCAiIik7Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHNpemUgPSBjb25zdGFudC0+Z2V0SUNvbnN0
KDApOwotCi0gICAgaWYgKHNpemUgPD0gMCkgewotICAgICAgICBlcnJvcihsaW5lLCAiYXJyYXkg
c2l6ZSBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciIsICIiKTsKLSAgICAgICAgc2l6ZSA9IDE7
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQot
Ly8KLS8vIFNlZSBpZiB0aGlzIHF1YWxpZmllciBjYW4gYmUgYW4gYXJyYXkuCi0vLwotLy8gUmV0
dXJucyB0cnVlIGlmIHRoZXJlIGlzIGFuIGVycm9yLgotLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6
YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQdWJsaWNU
eXBlIHR5cGUpCi17Ci0gICAgaWYgKCh0eXBlLnF1YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUpIHx8
ICh0eXBlLnF1YWxpZmllciA9PSBFdnFDb25zdCkpIHsKLSAgICAgICAgZXJyb3IobGluZSwgImNh
bm5vdCBkZWNsYXJlIGFycmF5cyBvZiB0aGlzIHF1YWxpZmllciIsIFRUeXBlKHR5cGUpLmdldENv
bXBsZXRlU3RyaW5nKCkuY19zdHIoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotLy8KLS8vIFNlZSBpZiB0aGlzIHR5cGUgY2FuIGJlIGFu
IGFycmF5LgotLy8KLS8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhbiBlcnJvci4KLS8vCi1i
b29sIFRQYXJzZUNvbnRleHQ6OmFycmF5VHlwZUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYg
bGluZSwgVFB1YmxpY1R5cGUgdHlwZSkKLXsKLSAgICAvLwotICAgIC8vIENhbiB0aGUgdHlwZSBi
ZSBhbiBhcnJheT8KLSAgICAvLwotICAgIGlmICh0eXBlLmFycmF5KSB7Ci0gICAgICAgIGVycm9y
KGxpbmUsICJjYW5ub3QgZGVjbGFyZSBhcnJheXMgb2YgYXJyYXlzIiwgVFR5cGUodHlwZSkuZ2V0
Q29tcGxldGVTdHJpbmcoKS5jX3N0cigpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0vLwotLy8gRG8gYWxsIHRoZSBzZW1hbnRpYyBjaGVj
a2luZyBmb3IgZGVjbGFyaW5nIGFuIGFycmF5LCB3aXRoIGFuZCAKLS8vIHdpdGhvdXQgYSBzaXpl
LCBhbmQgbWFrZSB0aGUgcmlnaHQgY2hhbmdlcyB0byB0aGUgc3ltYm9sIHRhYmxlLgotLy8KLS8v
IHNpemUgPT0gMCBtZWFucyBubyBzcGVjaWZpZWQgc2l6ZS4KLS8vCi0vLyBSZXR1cm5zIHRydWUg
aWYgdGhlcmUgd2FzIGFuIGVycm9yLgotLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlFcnJv
ckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJs
aWNUeXBlIHR5cGUsIFRWYXJpYWJsZSomIHZhcmlhYmxlKQotewotICAgIC8vCi0gICAgLy8gRG9u
J3QgY2hlY2sgZm9yIHJlc2VydmVkIHdvcmQgdXNlIHVudGlsIGFmdGVyIHdlIGtub3cgaXQncyBu
b3QgaW4gdGhlIHN5bWJvbCB0YWJsZSwKLSAgICAvLyBiZWNhdXNlIHJlc2VydmVkIGFycmF5cyBj
YW4gYmUgcmVkZWNsYXJlZC4KLSAgICAvLwotCi0gICAgYm9vbCBidWlsdEluID0gZmFsc2U7IAot
ICAgIGJvb2wgc2FtZVNjb3BlID0gZmFsc2U7Ci0gICAgVFN5bWJvbCogc3ltYm9sID0gc3ltYm9s
VGFibGUuZmluZChpZGVudGlmaWVyLCAmYnVpbHRJbiwgJnNhbWVTY29wZSk7Ci0gICAgaWYgKHN5
bWJvbCA9PSAwIHx8ICFzYW1lU2NvcGUpIHsKLSAgICAgICAgaWYgKHJlc2VydmVkRXJyb3JDaGVj
ayhsaW5lLCBpZGVudGlmaWVyKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAK
LSAgICAgICAgdmFyaWFibGUgPSBuZXcgVFZhcmlhYmxlKCZpZGVudGlmaWVyLCBUVHlwZSh0eXBl
KSk7Ci0KLSAgICAgICAgaWYgKHR5cGUuYXJyYXlTaXplKQotICAgICAgICAgICAgdmFyaWFibGUt
PmdldFR5cGUoKS5zZXRBcnJheVNpemUodHlwZS5hcnJheVNpemUpOwotCi0gICAgICAgIGlmICgh
IHN5bWJvbFRhYmxlLmluc2VydCgqdmFyaWFibGUpKSB7Ci0gICAgICAgICAgICBkZWxldGUgdmFy
aWFibGU7Ci0gICAgICAgICAgICBlcnJvcihsaW5lLCAiSU5URVJOQUwgRVJST1IgaW5zZXJ0aW5n
IG5ldyBzeW1ib2wiLCBpZGVudGlmaWVyLmNfc3RyKCkpOwotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoISBzeW1ib2wtPmlzVmFy
aWFibGUoKSkgewotICAgICAgICAgICAgZXJyb3IobGluZSwgInZhcmlhYmxlIGV4cGVjdGVkIiwg
aWRlbnRpZmllci5jX3N0cigpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
Ci0KLSAgICAgICAgdmFyaWFibGUgPSBzdGF0aWNfY2FzdDxUVmFyaWFibGUqPihzeW1ib2wpOwot
ICAgICAgICBpZiAoISB2YXJpYWJsZS0+Z2V0VHlwZSgpLmlzQXJyYXkoKSkgewotICAgICAgICAg
ICAgZXJyb3IobGluZSwgInJlZGVjbGFyaW5nIG5vbi1hcnJheSBhcyBhcnJheSIsIGlkZW50aWZp
ZXIuY19zdHIoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAg
ICBpZiAodmFyaWFibGUtPmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSA+IDApIHsKLSAgICAgICAg
ICAgIGVycm9yKGxpbmUsICJyZWRlY2xhcmF0aW9uIG9mIGFycmF5IHdpdGggc2l6ZSIsIGlkZW50
aWZpZXIuY19zdHIoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgaWYgKCEgdmFyaWFibGUtPmdldFR5cGUoKS5zYW1lRWxlbWVudFR5cGUo
VFR5cGUodHlwZSkpKSB7Ci0gICAgICAgICAgICBlcnJvcihsaW5lLCAicmVkZWNsYXJhdGlvbiBv
ZiBhcnJheSB3aXRoIGEgZGlmZmVyZW50IHR5cGUiLCBpZGVudGlmaWVyLmNfc3RyKCkpOwotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodHlwZS5hcnJh
eVNpemUpCi0gICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLnNldEFycmF5U2l6ZSh0eXBl
LmFycmF5U2l6ZSk7Ci0gICAgfSAKLQotICAgIGlmICh2b2lkRXJyb3JDaGVjayhsaW5lLCBpZGVu
dGlmaWVyLCB0eXBlKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLS8vCi0vLyBFbmZvcmNlIG5vbi1pbml0aWFsaXplciB0eXBlL3F1YWxpZmllciBydWxl
cy4KLS8vCi0vLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgotLy8KLWJvb2wg
VFBhcnNlQ29udGV4dDo6bm9uSW5pdENvbnN0RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBs
aW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgdHlwZSwgYm9vbCBhcnJheSkK
LXsKLSAgICBpZiAodHlwZS5xdWFsaWZpZXIgPT0gRXZxQ29uc3QpCi0gICAgewotICAgICAgICAv
LyBNYWtlIHRoZSBxdWFsaWZpZXIgbWFrZSBzZW5zZS4KLSAgICAgICAgdHlwZS5xdWFsaWZpZXIg
PSBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgIAotICAgICAgICBpZiAoYXJyYXkpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGVycm9yKGxpbmUsICJhcnJheXMgbWF5IG5vdCBiZSBkZWNsYXJlZCBjb25z
dGFudCBzaW5jZSB0aGV5IGNhbm5vdCBiZSBpbml0aWFsaXplZCIsIGlkZW50aWZpZXIuY19zdHIo
KSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAodHlwZS5pc1N0cnVjdHVyZUNvbnRhaW5p
bmdBcnJheXMoKSkKLSAgICAgICAgewotICAgICAgICAgICAgZXJyb3IobGluZSwgInN0cnVjdHVy
ZXMgY29udGFpbmluZyBhcnJheXMgbWF5IG5vdCBiZSBkZWNsYXJlZCBjb25zdGFudCBzaW5jZSB0
aGV5IGNhbm5vdCBiZSBpbml0aWFsaXplZCIsIGlkZW50aWZpZXIuY19zdHIoKSk7Ci0gICAgICAg
IH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBlcnJvcihsaW5lLCAidmFy
aWFibGVzIHdpdGggcXVhbGlmaWVyICdjb25zdCcgbXVzdCBiZSBpbml0aWFsaXplZCIsIGlkZW50
aWZpZXIuY19zdHIoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLS8vCi0vLyBEbyBzZW1hbnRpYyBjaGVja2luZyBm
b3IgYSB2YXJpYWJsZSBkZWNsYXJhdGlvbiB0aGF0IGhhcyBubyBpbml0aWFsaXplciwKLS8vIGFu
ZCB1cGRhdGUgdGhlIHN5bWJvbCB0YWJsZS4KLS8vCi0vLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUg
d2FzIGFuIGVycm9yLgotLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6bm9uSW5pdEVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUm
IHR5cGUsIFRWYXJpYWJsZSomIHZhcmlhYmxlKQotewotICAgIGlmIChyZXNlcnZlZEVycm9yQ2hl
Y2sobGluZSwgaWRlbnRpZmllcikpCi0gICAgICAgIHJlY292ZXIoKTsKLQotICAgIHZhcmlhYmxl
ID0gbmV3IFRWYXJpYWJsZSgmaWRlbnRpZmllciwgVFR5cGUodHlwZSkpOwotCi0gICAgaWYgKCEg
c3ltYm9sVGFibGUuaW5zZXJ0KCp2YXJpYWJsZSkpIHsKLSAgICAgICAgZXJyb3IobGluZSwgInJl
ZGVmaW5pdGlvbiIsIHZhcmlhYmxlLT5nZXROYW1lKCkuY19zdHIoKSk7Ci0gICAgICAgIGRlbGV0
ZSB2YXJpYWJsZTsKLSAgICAgICAgdmFyaWFibGUgPSAwOwotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9Ci0KLSAgICBpZiAodm9pZEVycm9yQ2hlY2sobGluZSwgaWRlbnRpZmllciwgdHlwZSkp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFRQ
YXJzZUNvbnRleHQ6OnBhcmFtRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUXVh
bGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1YWxpZmllciwgVFR5cGUqIHR5cGUp
Ci17ICAgIAotICAgIGlmIChxdWFsaWZpZXIgIT0gRXZxQ29uc3QgJiYgcXVhbGlmaWVyICE9IEV2
cVRlbXBvcmFyeSkgewotICAgICAgICBlcnJvcihsaW5lLCAicXVhbGlmaWVyIG5vdCBhbGxvd2Vk
IG9uIGZ1bmN0aW9uIHBhcmFtZXRlciIsIGdldFF1YWxpZmllclN0cmluZyhxdWFsaWZpZXIpKTsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmIChxdWFsaWZpZXIgPT0gRXZxQ29u
c3QgJiYgcGFyYW1RdWFsaWZpZXIgIT0gRXZxSW4pIHsKLSAgICAgICAgZXJyb3IobGluZSwgInF1
YWxpZmllciBub3QgYWxsb3dlZCB3aXRoICIsIGdldFF1YWxpZmllclN0cmluZyhxdWFsaWZpZXIp
LCBnZXRRdWFsaWZpZXJTdHJpbmcocGFyYW1RdWFsaWZpZXIpKTsKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotCi0gICAgaWYgKHF1YWxpZmllciA9PSBFdnFDb25zdCkKLSAgICAgICAgdHlw
ZS0+c2V0UXVhbGlmaWVyKEV2cUNvbnN0UmVhZE9ubHkpOwotICAgIGVsc2UKLSAgICAgICAgdHlw
ZS0+c2V0UXVhbGlmaWVyKHBhcmFtUXVhbGlmaWVyKTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotYm9vbCBUUGFyc2VDb250ZXh0OjpleHRlbnNpb25FcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGV4dGVuc2lvbikKLXsKLSAgICBjb25zdCBURXh0ZW5z
aW9uQmVoYXZpb3ImIGV4dEJlaGF2aW9yID0gZXh0ZW5zaW9uQmVoYXZpb3IoKTsKLSAgICBURXh0
ZW5zaW9uQmVoYXZpb3I6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBleHRCZWhhdmlvci5maW5kKGV4
dGVuc2lvbi5jX3N0cigpKTsKLSAgICBpZiAoaXRlciA9PSBleHRCZWhhdmlvci5lbmQoKSkgewot
ICAgICAgICBlcnJvcihsaW5lLCAiZXh0ZW5zaW9uIiwgZXh0ZW5zaW9uLmNfc3RyKCksICJpcyBu
b3Qgc3VwcG9ydGVkIik7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAvLyBJbiBH
TFNMIEVTLCBhbiBleHRlbnNpb24ncyBkZWZhdWx0IGJlaGF2aW9yIGlzICJkaXNhYmxlIi4KLSAg
ICBpZiAoaXRlci0+c2Vjb25kID09IEVCaERpc2FibGUgfHwgaXRlci0+c2Vjb25kID09IEVCaFVu
ZGVmaW5lZCkgewotICAgICAgICBlcnJvcihsaW5lLCAiZXh0ZW5zaW9uIiwgZXh0ZW5zaW9uLmNf
c3RyKCksICJpcyBkaXNhYmxlZCIpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAg
aWYgKGl0ZXItPnNlY29uZCA9PSBFQmhXYXJuKSB7Ci0gICAgICAgIHdhcm5pbmcobGluZSwgImV4
dGVuc2lvbiIsIGV4dGVuc2lvbi5jX3N0cigpLCAiaXMgYmVpbmcgdXNlZCIpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFRQYXJz
ZUNvbnRleHQ6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IGNoYXIqIGV4dGVuc2lvbikKLXsKLSAg
ICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIGV4dGJlaGF2aW9yID0gZXh0ZW5zaW9uQmVoYXZp
b3IoKTsKLSAgICBURXh0ZW5zaW9uQmVoYXZpb3I6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBleHRi
ZWhhdmlvci5maW5kKGV4dGVuc2lvbik7Ci0gICAgcmV0dXJuIChpdGVyICE9IGV4dGJlaGF2aW9y
LmVuZCgpKTsKLX0KLQotYm9vbCBUUGFyc2VDb250ZXh0Ojppc0V4dGVuc2lvbkVuYWJsZWQoY29u
c3QgY2hhciogZXh0ZW5zaW9uKSBjb25zdAotewotICAgIGNvbnN0IFRFeHRlbnNpb25CZWhhdmlv
ciYgZXh0YmVoYXZpb3IgPSBleHRlbnNpb25CZWhhdmlvcigpOwotICAgIHN0ZDo6bWFwPHN0ZDo6
c3RyaW5nLCBUQmVoYXZpb3I+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gZXh0YmVoYXZpb3IuZmlu
ZChleHRlbnNpb24pOwotCi0gICAgaWYgKGl0ZXIgPT0gZXh0YmVoYXZpb3IuZW5kKCkpCi0gICAg
ewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIChpdGVyLT5zZWNv
bmQgPT0gRUJoRW5hYmxlIHx8IGl0ZXItPnNlY29uZCA9PSBFQmhSZXF1aXJlKTsKLX0KLQotLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gTm9uLUVycm9ycy4KLS8vCi0vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KLQotLy8KLS8vIExvb2sgdXAgYSBmdW5jdGlvbiBuYW1lIGluIHRoZSBz
eW1ib2wgdGFibGUsIGFuZCBtYWtlIHN1cmUgaXQgaXMgYSBmdW5jdGlvbi4KLS8vCi0vLyBSZXR1
cm4gdGhlIGZ1bmN0aW9uIHN5bWJvbCBpZiBmb3VuZCwgb3RoZXJ3aXNlIDAuCi0vLwotY29uc3Qg
VEZ1bmN0aW9uKiBUUGFyc2VDb250ZXh0OjpmaW5kRnVuY3Rpb24oY29uc3QgVFNvdXJjZUxvYyYg
bGluZSwgVEZ1bmN0aW9uKiBjYWxsLCBib29sICpidWlsdEluKQotewotICAgIC8vIEZpcnN0IGZp
bmQgYnkgdW5tYW5nbGVkIG5hbWUgdG8gY2hlY2sgd2hldGhlciB0aGUgZnVuY3Rpb24gbmFtZSBo
YXMgYmVlbgotICAgIC8vIGhpZGRlbiBieSBhIHZhcmlhYmxlIG5hbWUgb3Igc3RydWN0IHR5cGVu
YW1lLgotICAgIC8vIElmIGEgZnVuY3Rpb24gaXMgZm91bmQsIGNoZWNrIGZvciBvbmUgd2l0aCBh
IG1hdGNoaW5nIGFyZ3VtZW50IGxpc3QuCi0gICAgY29uc3QgVFN5bWJvbCogc3ltYm9sID0gc3lt
Ym9sVGFibGUuZmluZChjYWxsLT5nZXROYW1lKCksIGJ1aWx0SW4pOwotICAgIGlmIChzeW1ib2wg
PT0gMCB8fCBzeW1ib2wtPmlzRnVuY3Rpb24oKSkgewotICAgICAgICBzeW1ib2wgPSBzeW1ib2xU
YWJsZS5maW5kKGNhbGwtPmdldE1hbmdsZWROYW1lKCksIGJ1aWx0SW4pOwotICAgIH0KLQotICAg
IGlmIChzeW1ib2wgPT0gMCkgewotICAgICAgICBlcnJvcihsaW5lLCAibm8gbWF0Y2hpbmcgb3Zl
cmxvYWRlZCBmdW5jdGlvbiBmb3VuZCIsIGNhbGwtPmdldE5hbWUoKS5jX3N0cigpKTsKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgaWYgKCFzeW1ib2wtPmlzRnVuY3Rpb24oKSkgewot
ICAgICAgICBlcnJvcihsaW5lLCAiZnVuY3Rpb24gbmFtZSBleHBlY3RlZCIsIGNhbGwtPmdldE5h
bWUoKS5jX3N0cigpKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IFRGdW5jdGlvbio+KHN5bWJvbCk7Ci19Ci0KLS8vCi0vLyBJbml0aWFs
aXplcnMgc2hvdyB1cCBpbiBzZXZlcmFsIHBsYWNlcyBpbiB0aGUgZ3JhbW1hci4gIEhhdmUgb25l
IHNldCBvZgotLy8gY29kZSB0byBoYW5kbGUgdGhlbSBoZXJlLgotLy8KLWJvb2wgVFBhcnNlQ29u
dGV4dDo6ZXhlY3V0ZUluaXRpYWxpemVyKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcm
IGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiBwVHlwZSwgCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluaXRpYWxpemVyLCBUSW50ZXJtTm9kZSom
IGludGVybU5vZGUsIFRWYXJpYWJsZSogdmFyaWFibGUpCi17Ci0gICAgVFR5cGUgdHlwZSA9IFRU
eXBlKHBUeXBlKTsKLQotICAgIGlmICh2YXJpYWJsZSA9PSAwKSB7Ci0gICAgICAgIGlmIChyZXNl
cnZlZEVycm9yQ2hlY2sobGluZSwgaWRlbnRpZmllcikpCi0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgICAgICBpZiAodm9pZEVycm9yQ2hlY2sobGluZSwgaWRlbnRpZmllciwgcFR5cGUp
KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgLy8KLSAgICAgICAgLy8gYWRk
IHZhcmlhYmxlIHRvIHN5bWJvbCB0YWJsZQotICAgICAgICAvLwotICAgICAgICB2YXJpYWJsZSA9
IG5ldyBUVmFyaWFibGUoJmlkZW50aWZpZXIsIHR5cGUpOwotICAgICAgICBpZiAoISBzeW1ib2xU
YWJsZS5pbnNlcnQoKnZhcmlhYmxlKSkgewotICAgICAgICAgICAgZXJyb3IobGluZSwgInJlZGVm
aW5pdGlvbiIsIHZhcmlhYmxlLT5nZXROYW1lKCkuY19zdHIoKSk7Ci0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgICAgIC8vIGRvbid0IGRlbGV0ZSB2YXJpYWJsZSwgaXQncyB1c2Vk
IGJ5IGVycm9yIHJlY292ZXJ5LCBhbmQgdGhlIHBvb2wgCi0gICAgICAgICAgICAvLyBwb3Agd2ls
bCB0YWtlIGNhcmUgb2YgdGhlIG1lbW9yeQotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8KLSAg
ICAvLyBpZGVudGlmaWVyIG11c3QgYmUgb2YgdHlwZSBjb25zdGFudCwgYSBnbG9iYWwsIG9yIGEg
dGVtcG9yYXJ5Ci0gICAgLy8KLSAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA9IHZhcmlhYmxlLT5n
ZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCk7Ci0gICAgaWYgKChxdWFsaWZpZXIgIT0gRXZxVGVtcG9y
YXJ5KSAmJiAocXVhbGlmaWVyICE9IEV2cUdsb2JhbCkgJiYgKHF1YWxpZmllciAhPSBFdnFDb25z
dCkpIHsKLSAgICAgICAgZXJyb3IobGluZSwgIiBjYW5ub3QgaW5pdGlhbGl6ZSB0aGlzIHR5cGUg
b2YgcXVhbGlmaWVyICIsIHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyU3RyaW5nKCkp
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgLy8KLSAgICAvLyB0ZXN0IGZvciBh
bmQgcHJvcGFnYXRlIGNvbnN0YW50Ci0gICAgLy8KLQotICAgIGlmIChxdWFsaWZpZXIgPT0gRXZx
Q29uc3QpIHsKLSAgICAgICAgaWYgKHF1YWxpZmllciAhPSBpbml0aWFsaXplci0+Z2V0VHlwZSgp
LmdldFF1YWxpZmllcigpKSB7Ci0gICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUlu
Zm9TdHJlYW07Ci0gICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgIiciIDw8IHZhcmlhYmxl
LT5nZXRUeXBlKCkuZ2V0Q29tcGxldGVTdHJpbmcoKSA8PCAiJyI7Ci0gICAgICAgICAgICBzdGQ6
OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7Ci0gICAgICAgICAgICBl
cnJvcihsaW5lLCAiIGFzc2lnbmluZyBub24tY29uc3RhbnQgdG8iLCAiPSIsIGV4dHJhSW5mby5j
X3N0cigpKTsKLSAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCkuc2V0UXVhbGlmaWVyKEV2
cVRlbXBvcmFyeSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAg
ICBpZiAodHlwZSAhPSBpbml0aWFsaXplci0+Z2V0VHlwZSgpKSB7Ci0gICAgICAgICAgICBlcnJv
cihsaW5lLCAiIG5vbi1tYXRjaGluZyB0eXBlcyBmb3IgY29uc3QgaW5pdGlhbGl6ZXIgIiwgCi0g
ICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXJTdHJpbmcoKSk7
Ci0gICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLnNldFF1YWxpZmllcihFdnFUZW1wb3Jh
cnkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlu
aXRpYWxpemVyLT5nZXRBc0NvbnN0YW50VW5pb24oKSkgeyAKLSAgICAgICAgICAgIHZhcmlhYmxl
LT5zaGFyZUNvbnN0UG9pbnRlcihpbml0aWFsaXplci0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdl
dFVuaW9uQXJyYXlQb2ludGVyKCkpOwotICAgICAgICB9IGVsc2UgaWYgKGluaXRpYWxpemVyLT5n
ZXRBc1N5bWJvbE5vZGUoKSkgewotICAgICAgICAgICAgY29uc3QgVFN5bWJvbCogc3ltYm9sID0g
c3ltYm9sVGFibGUuZmluZChpbml0aWFsaXplci0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJv
bCgpKTsKLSAgICAgICAgICAgIGNvbnN0IFRWYXJpYWJsZSogdFZhciA9IHN0YXRpY19jYXN0PGNv
bnN0IFRWYXJpYWJsZSo+KHN5bWJvbCk7Ci0KLSAgICAgICAgICAgIENvbnN0YW50VW5pb24qIGNv
bnN0QXJyYXkgPSB0VmFyLT5nZXRDb25zdFBvaW50ZXIoKTsKLSAgICAgICAgICAgIHZhcmlhYmxl
LT5zaGFyZUNvbnN0UG9pbnRlcihjb25zdEFycmF5KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKLSAgICAgICAgICAgIGV4
dHJhSW5mb1N0cmVhbSA8PCAiJyIgPDwgdmFyaWFibGUtPmdldFR5cGUoKS5nZXRDb21wbGV0ZVN0
cmluZygpIDw8ICInIjsKLSAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJh
SW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAgICAgIGVycm9yKGxpbmUsICIgY2Fubm90IGFzc2ln
biB0byIsICI9IiwgZXh0cmFJbmZvLmNfc3RyKCkpOwotICAgICAgICAgICAgdmFyaWFibGUtPmdl
dFR5cGUoKS5zZXRRdWFsaWZpZXIoRXZxVGVtcG9yYXJ5KTsKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICB9Ci0gICAgfQotIAotICAgIGlmIChxdWFsaWZpZXIgIT0gRXZxQ29uc3Qp
IHsKLSAgICAgICAgVEludGVybVN5bWJvbCogaW50ZXJtU3ltYm9sID0gaW50ZXJtZWRpYXRlLmFk
ZFN5bWJvbCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwgdmFyaWFibGUtPmdldE5hbWUoKSwgdmFy
aWFibGUtPmdldFR5cGUoKSwgbGluZSk7Ci0gICAgICAgIGludGVybU5vZGUgPSBpbnRlcm1lZGlh
dGUuYWRkQXNzaWduKEVPcEluaXRpYWxpemUsIGludGVybVN5bWJvbCwgaW5pdGlhbGl6ZXIsIGxp
bmUpOwotICAgICAgICBpZiAoaW50ZXJtTm9kZSA9PSAwKSB7Ci0gICAgICAgICAgICBhc3NpZ25F
cnJvcihsaW5lLCAiPSIsIGludGVybVN5bWJvbC0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgaW5pdGlh
bGl6ZXItPmdldENvbXBsZXRlU3RyaW5nKCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIH0KLSAgICB9IGVsc2UgCi0gICAgICAgIGludGVybU5vZGUgPSAwOwotCi0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi1ib29sIFRQYXJzZUNvbnRleHQ6OmFyZUFsbENoaWxkQ29uc3QoVElu
dGVybUFnZ3JlZ2F0ZSogYWdnck5vZGUpCi17Ci0gICAgQVNTRVJUKGFnZ3JOb2RlICE9IE5VTEwp
OwotICAgIGlmICghYWdnck5vZGUtPmlzQ29uc3RydWN0b3IoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgYm9vbCBhbGxDb25zdGFudCA9IHRydWU7Ci0KLSAgICAvLyBjaGVjayBpZiBh
bGwgdGhlIGNoaWxkIG5vZGVzIGFyZSBjb25zdGFudHMgc28gdGhhdCB0aGV5IGNhbiBiZSBpbnNl
cnRlZCBpbnRvIAotICAgIC8vIHRoZSBwYXJlbnQgbm9kZQotICAgIFRJbnRlcm1TZXF1ZW5jZSAm
c2VxdWVuY2UgPSBhZ2dyTm9kZS0+Z2V0U2VxdWVuY2UoKSA7Ci0gICAgZm9yIChUSW50ZXJtU2Vx
dWVuY2U6Oml0ZXJhdG9yIHAgPSBzZXF1ZW5jZS5iZWdpbigpOyBwICE9IHNlcXVlbmNlLmVuZCgp
OyArK3ApIHsKLSAgICAgICAgaWYgKCEoKnApLT5nZXRBc1R5cGVkKCktPmdldEFzQ29uc3RhbnRV
bmlvbigpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiBh
bGxDb25zdGFudDsKLX0KLQotLy8gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHRlc3QgZm9yIHRo
ZSBjb3JyZWN0bmVzcyBvZiB0aGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gdmFyaW91cyBjb25zdHJ1
Y3RvciBmdW5jdGlvbnMKLS8vIGFuZCBhbHNvIGNvbnZlcnQgdGhlbSB0byB0aGUgcmlnaHQgZGF0
YXR5cGUgaWYgaXQgaXMgYWxsb3dlZCBhbmQgcmVxdWlyZWQuIAotLy8KLS8vIFJldHVybnMgMCBm
b3IgYW4gZXJyb3Igb3IgdGhlIGNvbnN0cnVjdGVkIG5vZGUgKGFnZ3JlZ2F0ZSBvciB0eXBlZCkg
Zm9yIG5vIGVycm9yLgotLy8KLVRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3Ry
dWN0b3IoVEludGVybU5vZGUqIG5vZGUsIGNvbnN0IFRUeXBlKiB0eXBlLCBUT3BlcmF0b3Igb3As
IFRGdW5jdGlvbiogZm5DYWxsLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQotewotICAgIGlmIChu
b2RlID09IDApCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgVEludGVybUFnZ3JlZ2F0ZSogYWdn
ck5vZGUgPSBub2RlLT5nZXRBc0FnZ3JlZ2F0ZSgpOwotICAgIAotICAgIFRGaWVsZExpc3Q6OmNv
bnN0X2l0ZXJhdG9yIG1lbWJlckZpZWxkczsKLSAgICBpZiAob3AgPT0gRU9wQ29uc3RydWN0U3Ry
dWN0KQotICAgICAgICBtZW1iZXJGaWVsZHMgPSB0eXBlLT5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCku
YmVnaW4oKTsKLSAgICAKLSAgICBUVHlwZSBlbGVtZW50VHlwZSA9ICp0eXBlOwotICAgIGlmICh0
eXBlLT5pc0FycmF5KCkpCi0gICAgICAgIGVsZW1lbnRUeXBlLmNsZWFyQXJyYXluZXNzKCk7Ci0K
LSAgICBib29sIHNpbmdsZUFyZzsKLSAgICBpZiAoYWdnck5vZGUpIHsKLSAgICAgICAgaWYgKGFn
Z3JOb2RlLT5nZXRPcCgpICE9IEVPcE51bGwgfHwgYWdnck5vZGUtPmdldFNlcXVlbmNlKCkuc2l6
ZSgpID09IDEpCi0gICAgICAgICAgICBzaW5nbGVBcmcgPSB0cnVlOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBzaW5nbGVBcmcgPSBmYWxzZTsKLSAgICB9IGVsc2UKLSAgICAgICAgc2luZ2xl
QXJnID0gdHJ1ZTsKLQotICAgIFRJbnRlcm1UeXBlZCAqbmV3Tm9kZTsKLSAgICBpZiAoc2luZ2xl
QXJnKSB7Ci0gICAgICAgIC8vIElmIHN0cnVjdHVyZSBjb25zdHJ1Y3RvciBvciBhcnJheSBjb25z
dHJ1Y3RvciBpcyBiZWluZyBjYWxsZWQgCi0gICAgICAgIC8vIGZvciBvbmx5IG9uZSBwYXJhbWV0
ZXIgaW5zaWRlIHRoZSBzdHJ1Y3R1cmUsIHdlIG5lZWQgdG8gY2FsbCBjb25zdHJ1Y3RTdHJ1Y3Qg
ZnVuY3Rpb24gb25jZS4KLSAgICAgICAgaWYgKHR5cGUtPmlzQXJyYXkoKSkKLSAgICAgICAgICAg
IG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qobm9kZSwgJmVsZW1lbnRUeXBlLCAxLCBub2RlLT5n
ZXRMaW5lKCksIGZhbHNlKTsKLSAgICAgICAgZWxzZSBpZiAob3AgPT0gRU9wQ29uc3RydWN0U3Ry
dWN0KQotICAgICAgICAgICAgbmV3Tm9kZSA9IGNvbnN0cnVjdFN0cnVjdChub2RlLCAoKm1lbWJl
ckZpZWxkcyktPnR5cGUoKSwgMSwgbm9kZS0+Z2V0TGluZSgpLCBmYWxzZSk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RCdWlsdEluKHR5cGUsIG9wLCBub2Rl
LCBub2RlLT5nZXRMaW5lKCksIGZhbHNlKTsKLQotICAgICAgICBpZiAobmV3Tm9kZSAmJiBuZXdO
b2RlLT5nZXRBc0FnZ3JlZ2F0ZSgpKSB7Ci0gICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGNvbnN0
Q29uc3RydWN0b3IgPSBmb2xkQ29uc3RDb25zdHJ1Y3RvcihuZXdOb2RlLT5nZXRBc0FnZ3JlZ2F0
ZSgpLCAqdHlwZSk7Ci0gICAgICAgICAgICBpZiAoY29uc3RDb25zdHJ1Y3RvcikKLSAgICAgICAg
ICAgICAgICByZXR1cm4gY29uc3RDb25zdHJ1Y3RvcjsKLSAgICAgICAgfQotCi0gICAgICAgIHJl
dHVybiBuZXdOb2RlOwotICAgIH0KLSAgICAKLSAgICAvLwotICAgIC8vIEhhbmRsZSBsaXN0IG9m
IGFyZ3VtZW50cy4KLSAgICAvLwotICAgIFRJbnRlcm1TZXF1ZW5jZSAmc2VxdWVuY2VWZWN0b3Ig
PSBhZ2dyTm9kZS0+Z2V0U2VxdWVuY2UoKSA7ICAgIC8vIFN0b3JlcyB0aGUgaW5mb3JtYXRpb24g
YWJvdXQgdGhlIHBhcmFtZXRlciB0byB0aGUgY29uc3RydWN0b3IKLSAgICAvLyBpZiB0aGUgc3Ry
dWN0dXJlIGNvbnN0cnVjdG9yIGNvbnRhaW5zIG1vcmUgdGhhbiBvbmUgcGFyYW1ldGVyLCB0aGVu
IGNvbnN0cnVjdAotICAgIC8vIGVhY2ggcGFyYW1ldGVyCi0gICAgCi0gICAgaW50IHBhcmFtQ291
bnQgPSAwOyAgLy8ga2VlcHMgYSB0cmFjayBvZiB0aGUgY29uc3RydWN0b3IgcGFyYW1ldGVyIG51
bWJlciBiZWluZyBjaGVja2VkICAgIAotICAgIAotICAgIC8vIGZvciBlYWNoIHBhcmFtZXRlciB0
byB0aGUgY29uc3RydWN0b3IgY2FsbCwgY2hlY2sgdG8gc2VlIGlmIHRoZSByaWdodCB0eXBlIGlz
IHBhc3NlZCBvciBjb252ZXJ0IHRoZW0gCi0gICAgLy8gdG8gdGhlIHJpZ2h0IHR5cGUgaWYgcG9z
c2libGUgKGFuZCBhbGxvd2VkKS4KLSAgICAvLyBmb3Igc3RydWN0dXJlIGNvbnN0cnVjdG9ycywg
anVzdCBjaGVjayBpZiB0aGUgcmlnaHQgdHlwZSBpcyBwYXNzZWQsIG5vIGNvbnZlcnNpb24gaXMg
YWxsb3dlZC4KLSAgICAKLSAgICBmb3IgKFRJbnRlcm1TZXF1ZW5jZTo6aXRlcmF0b3IgcCA9IHNl
cXVlbmNlVmVjdG9yLmJlZ2luKCk7IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwICE9IHNlcXVlbmNlVmVjdG9yLmVuZCgpOyBwKyssIHBhcmFtQ291bnQrKykgewotICAgICAg
ICBpZiAodHlwZS0+aXNBcnJheSgpKQotICAgICAgICAgICAgbmV3Tm9kZSA9IGNvbnN0cnVjdFN0
cnVjdCgqcCwgJmVsZW1lbnRUeXBlLCBwYXJhbUNvdW50KzEsIG5vZGUtPmdldExpbmUoKSwgdHJ1
ZSk7Ci0gICAgICAgIGVsc2UgaWYgKG9wID09IEVPcENvbnN0cnVjdFN0cnVjdCkKLSAgICAgICAg
ICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3QoKnAsIG1lbWJlckZpZWxkc1twYXJhbUNvdW50
XS0+dHlwZSgpLCBwYXJhbUNvdW50KzEsIG5vZGUtPmdldExpbmUoKSwgdHJ1ZSk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RCdWlsdEluKHR5cGUsIG9wLCAq
cCwgbm9kZS0+Z2V0TGluZSgpLCB0cnVlKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChuZXdOb2Rl
KSB7Ci0gICAgICAgICAgICAqcCA9IG5ld05vZGU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBU
SW50ZXJtVHlwZWQqIGNvbnN0cnVjdG9yID0gaW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJh
dG9yKGFnZ3JOb2RlLCBvcCwgbGluZSk7Ci0gICAgVEludGVybVR5cGVkKiBjb25zdENvbnN0cnVj
dG9yID0gZm9sZENvbnN0Q29uc3RydWN0b3IoY29uc3RydWN0b3ItPmdldEFzQWdncmVnYXRlKCks
ICp0eXBlKTsKLSAgICBpZiAoY29uc3RDb25zdHJ1Y3RvcikKLSAgICAgICAgcmV0dXJuIGNvbnN0
Q29uc3RydWN0b3I7Ci0KLSAgICByZXR1cm4gY29uc3RydWN0b3I7Ci19Ci0KLVRJbnRlcm1UeXBl
ZCogVFBhcnNlQ29udGV4dDo6Zm9sZENvbnN0Q29uc3RydWN0b3IoVEludGVybUFnZ3JlZ2F0ZSog
YWdnck5vZGUsIGNvbnN0IFRUeXBlJiB0eXBlKQotewotICAgIGJvb2wgY2FuQmVGb2xkZWQgPSBh
cmVBbGxDaGlsZENvbnN0KGFnZ3JOb2RlKTsKLSAgICBhZ2dyTm9kZS0+c2V0VHlwZSh0eXBlKTsK
LSAgICBpZiAoY2FuQmVGb2xkZWQpIHsKLSAgICAgICAgYm9vbCByZXR1cm5WYWwgPSBmYWxzZTsK
LSAgICAgICAgQ29uc3RhbnRVbmlvbiogdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW3R5
cGUuZ2V0T2JqZWN0U2l6ZSgpXTsKLSAgICAgICAgaWYgKGFnZ3JOb2RlLT5nZXRTZXF1ZW5jZSgp
LnNpemUoKSA9PSAxKSAgewotICAgICAgICAgICAgcmV0dXJuVmFsID0gaW50ZXJtZWRpYXRlLnBh
cnNlQ29uc3RUcmVlKGFnZ3JOb2RlLT5nZXRMaW5lKCksIGFnZ3JOb2RlLCB1bmlvbkFycmF5LCBh
Z2dyTm9kZS0+Z2V0T3AoKSwgc3ltYm9sVGFibGUsICB0eXBlLCB0cnVlKTsKLSAgICAgICAgfQot
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJldHVyblZhbCA9IGludGVybWVkaWF0ZS5wYXJz
ZUNvbnN0VHJlZShhZ2dyTm9kZS0+Z2V0TGluZSgpLCBhZ2dyTm9kZSwgdW5pb25BcnJheSwgYWdn
ck5vZGUtPmdldE9wKCksIHN5bWJvbFRhYmxlLCAgdHlwZSk7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKHJldHVyblZhbCkKLSAgICAgICAgICAgIHJldHVybiAwOwotCi0gICAgICAgIHJldHVybiBp
bnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCB0eXBlLCBhZ2dyTm9kZS0+
Z2V0TGluZSgpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotLy8gRnVuY3Rpb24gZm9y
IGNvbnN0cnVjdG9yIGltcGxlbWVudGF0aW9uLiBDYWxscyBhZGRVbmFyeU1hdGggd2l0aCBhcHBy
b3ByaWF0ZSBFT3AgdmFsdWUKLS8vIGZvciB0aGUgcGFyYW1ldGVyIHRvIHRoZSBjb25zdHJ1Y3Rv
ciAocGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24pLiBFc3NlbnRpYWxseSwgaXQgY29udmVydHMKLS8v
IHRoZSBwYXJhbWV0ZXIgdHlwZXMgY29ycmVjdGx5LiBJZiBhIGNvbnN0cnVjdG9yIGV4cGVjdHMg
YW4gaW50IChsaWtlIGl2ZWMyKSBhbmQgaXMgcGFzc2VkIGEgCi0vLyBmbG9hdCwgdGhlbiBmbG9h
dCBpcyBjb252ZXJ0ZWQgdG8gaW50LgotLy8KLS8vIFJldHVybnMgMCBmb3IgYW4gZXJyb3Igb3Ig
dGhlIGNvbnN0cnVjdGVkIG5vZGUuCi0vLwotVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0Ojpj
b25zdHJ1Y3RCdWlsdEluKGNvbnN0IFRUeXBlKiB0eXBlLCBUT3BlcmF0b3Igb3AsIFRJbnRlcm1O
b2RlKiBub2RlLCBjb25zdCBUU291cmNlTG9jJiBsaW5lLCBib29sIHN1YnNldCkKLXsKLSAgICBU
SW50ZXJtVHlwZWQqIG5ld05vZGU7Ci0gICAgVE9wZXJhdG9yIGJhc2ljT3A7Ci0KLSAgICAvLwot
ICAgIC8vIEZpcnN0LCBjb252ZXJ0IHR5cGVzIGFzIG5lZWRlZC4KLSAgICAvLwotICAgIHN3aXRj
aCAob3ApIHsKLSAgICBjYXNlIEVPcENvbnN0cnVjdFZlYzI6Ci0gICAgY2FzZSBFT3BDb25zdHJ1
Y3RWZWMzOgotICAgIGNhc2UgRU9wQ29uc3RydWN0VmVjNDoKLSAgICBjYXNlIEVPcENvbnN0cnVj
dE1hdDI6Ci0gICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQzOgotICAgIGNhc2UgRU9wQ29uc3RydWN0
TWF0NDoKLSAgICBjYXNlIEVPcENvbnN0cnVjdEZsb2F0OgotICAgICAgICBiYXNpY09wID0gRU9w
Q29uc3RydWN0RmxvYXQ7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBFT3BDb25zdHJ1Y3RJ
VmVjMjoKLSAgICBjYXNlIEVPcENvbnN0cnVjdElWZWMzOgotICAgIGNhc2UgRU9wQ29uc3RydWN0
SVZlYzQ6Ci0gICAgY2FzZSBFT3BDb25zdHJ1Y3RJbnQ6Ci0gICAgICAgIGJhc2ljT3AgPSBFT3BD
b25zdHJ1Y3RJbnQ7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBFT3BDb25zdHJ1Y3RCVmVj
MjoKLSAgICBjYXNlIEVPcENvbnN0cnVjdEJWZWMzOgotICAgIGNhc2UgRU9wQ29uc3RydWN0QlZl
YzQ6Ci0gICAgY2FzZSBFT3BDb25zdHJ1Y3RCb29sOgotICAgICAgICBiYXNpY09wID0gRU9wQ29u
c3RydWN0Qm9vbDsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICBlcnJv
cihsaW5lLCAidW5zdXBwb3J0ZWQgY29uc3RydWN0aW9uIiwgIiIpOwotICAgICAgICByZWNvdmVy
KCk7Ci0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIG5ld05vZGUgPSBpbnRlcm1lZGlh
dGUuYWRkVW5hcnlNYXRoKGJhc2ljT3AsIG5vZGUsIG5vZGUtPmdldExpbmUoKSwgc3ltYm9sVGFi
bGUpOwotICAgIGlmIChuZXdOb2RlID09IDApIHsKLSAgICAgICAgZXJyb3IobGluZSwgImNhbid0
IGNvbnZlcnQiLCAiY29uc3RydWN0b3IiKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0g
ICAgLy8KLSAgICAvLyBOb3csIGlmIHRoZXJlIHN0aWxsIGlzbid0IGFuIG9wZXJhdGlvbiB0byBk
byB0aGUgY29uc3RydWN0aW9uLCBhbmQgd2UgbmVlZCBvbmUsIGFkZCBvbmUuCi0gICAgLy8KLSAg
ICAKLSAgICAvLyBPdGhlcndpc2UsIHNraXAgb3V0IGVhcmx5LgotICAgIGlmIChzdWJzZXQgfHwg
KG5ld05vZGUgIT0gbm9kZSAmJiBuZXdOb2RlLT5nZXRUeXBlKCkgPT0gKnR5cGUpKQotICAgICAg
ICByZXR1cm4gbmV3Tm9kZTsKLQotICAgIC8vIHNldEFnZ3JlZ2F0ZU9wZXJhdG9yIHdpbGwgaW5z
ZXJ0IGEgbmV3IG5vZGUgZm9yIHRoZSBjb25zdHJ1Y3RvciwgYXMgbmVlZGVkLgotICAgIHJldHVy
biBpbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IobmV3Tm9kZSwgb3AsIGxpbmUpOwot
fQotCi0vLyBUaGlzIGZ1bmN0aW9uIHRlc3RzIGZvciB0aGUgdHlwZSBvZiB0aGUgcGFyYW1ldGVy
cyB0byB0aGUgc3RydWN0dXJlcyBjb25zdHJ1Y3RvcnMuIFJhaXNlcwotLy8gYW4gZXJyb3IgbWVz
c2FnZSBpZiB0aGUgZXhwZWN0ZWQgdHlwZSBkb2VzIG5vdCBtYXRjaCB0aGUgcGFyYW1ldGVyIHBh
c3NlZCB0byB0aGUgY29uc3RydWN0b3IuCi0vLwotLy8gUmV0dXJucyAwIGZvciBhbiBlcnJvciBv
ciB0aGUgaW5wdXQgbm9kZSBpdHNlbGYgaWYgdGhlIGV4cGVjdGVkIGFuZCB0aGUgZ2l2ZW4gcGFy
YW1ldGVyIHR5cGVzIG1hdGNoLgotLy8KLVRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6Y29u
c3RydWN0U3RydWN0KFRJbnRlcm1Ob2RlKiBub2RlLCBUVHlwZSogdHlwZSwgaW50IHBhcmFtQ291
bnQsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGJvb2wgc3Vic2V0KQotewotICAgIGlmICgqdHlw
ZSA9PSBub2RlLT5nZXRBc1R5cGVkKCktPmdldFR5cGUoKSkgewotICAgICAgICBpZiAoc3Vic2V0
KQotICAgICAgICAgICAgcmV0dXJuIG5vZGUtPmdldEFzVHlwZWQoKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgcmV0dXJuIGludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcihub2Rl
LT5nZXRBc1R5cGVkKCksIEVPcENvbnN0cnVjdFN0cnVjdCwgbGluZSk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICBleHRy
YUluZm9TdHJlYW0gPDwgImNhbm5vdCBjb252ZXJ0IHBhcmFtZXRlciAiIDw8IHBhcmFtQ291bnQg
Ci0gICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGZyb20gJyIgPDwgbm9kZS0+Z2V0QXNUeXBl
ZCgpLT5nZXRUeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKQotICAgICAgICAgICAgICAgICAgICAgICAg
PDwgIicgdG8gJyIgPDwgdHlwZS0+Z2V0QmFzaWNTdHJpbmcoKSA8PCAiJyI7Ci0gICAgICAgIHN0
ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAgZXJy
b3IobGluZSwgIiIsICJjb25zdHJ1Y3RvciIsIGV4dHJhSW5mby5jX3N0cigpKTsKLSAgICAgICAg
cmVjb3ZlcigpOwotICAgIH0KLQotICAgIHJldHVybiAwOwotfQotCi0vLwotLy8gVGhpcyBmdW5j
dGlvbiByZXR1cm5zIHRoZSB0cmVlIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgdmVjdG9yIGZpZWxk
KHMpIGJlaW5nIGFjY2Vzc2VkIGZyb20gY29udGFudCB2ZWN0b3IuCi0vLyBJZiBvbmx5IG9uZSBj
b21wb25lbnQgb2YgdmVjdG9yIGlzIGFjY2Vzc2VkICh2Lnggb3IgdlswXSB3aGVyZSB2IGlzIGEg
Y29udGFudCB2ZWN0b3IpLCB0aGVuIGEgY29udGFudCBub2RlIGlzCi0vLyByZXR1cm5lZCwgZWxz
ZSBhbiBhZ2dyZWdhdGUgbm9kZSBpcyByZXR1cm5lZCAoZm9yIHYueHkpLiBUaGUgaW5wdXQgdG8g
dGhpcyBmdW5jdGlvbiBjb3VsZCBlaXRoZXIgYmUgdGhlIHN5bWJvbAotLy8gbm9kZSBvciBpdCBj
b3VsZCBiZSB0aGUgaW50ZXJtZWRpYXRlIHRyZWUgcmVwcmVzZW50YXRpb24gb2YgYWNjZXNzaW5n
IGZpZWxkcyBpbiBhIGNvbnN0YW50IHN0cnVjdHVyZSBvciBjb2x1bW4gb2YgCi0vLyBhIGNvbnN0
YW50IG1hdHJpeC4KLS8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0VmVj
dG9yTm9kZShUVmVjdG9yRmllbGRzJiBmaWVsZHMsIFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSkKLXsKLSAgICBUSW50ZXJtVHlwZWQqIHR5cGVkTm9kZTsKLSAgICBU
SW50ZXJtQ29uc3RhbnRVbmlvbiogdGVtcENvbnN0YW50Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3Rh
bnRVbmlvbigpOwotCi0gICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheTsKLSAgICBpZiAodGVt
cENvbnN0YW50Tm9kZSkgewotICAgICAgICB1bmlvbkFycmF5ID0gdGVtcENvbnN0YW50Tm9kZS0+
Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKLQotICAgICAgICBpZiAoIXVuaW9uQXJyYXkpIHsKLSAg
ICAgICAgICAgIHJldHVybiBub2RlOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsgLy8gVGhlIG5v
ZGUgaGFzIHRvIGJlIGVpdGhlciBhIHN5bWJvbCBub2RlIG9yIGFuIGFnZ3JlZ2F0ZSBub2RlIG9y
IGEgdGVtcENvbnN0YW50IG5vZGUsIGVsc2UsIGl0cyBhbiBlcnJvcgotICAgICAgICBlcnJvcihs
aW5lLCAiQ2Fubm90IG9mZnNldCBpbnRvIHRoZSB2ZWN0b3IiLCAiRXJyb3IiKTsKLSAgICAgICAg
cmVjb3ZlcigpOwotCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIENvbnN0YW50VW5p
b24qIGNvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltmaWVsZHMubnVtXTsKLQotICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgZmllbGRzLm51bTsgaSsrKSB7Ci0gICAgICAgIGlmIChmaWVsZHMu
b2Zmc2V0c1tpXSA+PSBub2RlLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSkgewotICAgICAg
ICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICAgICAgZXh0
cmFJbmZvU3RyZWFtIDw8ICJ2ZWN0b3IgZmllbGQgc2VsZWN0aW9uIG91dCBvZiByYW5nZSAnIiA8
PCBmaWVsZHMub2Zmc2V0c1tpXSA8PCAiJyI7Ci0gICAgICAgICAgICBzdGQ6OnN0cmluZyBleHRy
YUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7Ci0gICAgICAgICAgICBlcnJvcihsaW5lLCAi
IiwgIlsiLCBleHRyYUluZm8uY19zdHIoKSk7Ci0gICAgICAgICAgICByZWNvdmVyKCk7Ci0gICAg
ICAgICAgICBmaWVsZHMub2Zmc2V0c1tpXSA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIGNvbnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ZpZWxkcy5vZmZzZXRzW2ldXTsKLQotICAg
IH0gCi0gICAgdHlwZWROb2RlID0gaW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24oY29uc3RB
cnJheSwgbm9kZS0+Z2V0VHlwZSgpLCBsaW5lKTsKLSAgICByZXR1cm4gdHlwZWROb2RlOwotfQot
Ci0vLwotLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBjb2x1bW4gYmVpbmcgYWNjZXNzZWQg
ZnJvbSBhIGNvbnN0YW50IG1hdHJpeC4gVGhlIHZhbHVlcyBhcmUgcmV0cmlldmVkIGZyb20KLS8v
IHRoZSBzeW1ib2wgdGFibGUgYW5kIHBhcnNlLXRyZWUgaXMgYnVpbHQgZm9yIGEgdmVjdG9yIChl
YWNoIGNvbHVtbiBvZiBhIG1hdHJpeCBpcyBhIHZlY3RvcikuIFRoZSBpbnB1dCAKLS8vIHRvIHRo
ZSBmdW5jdGlvbiBjb3VsZCBlaXRoZXIgYmUgYSBzeW1ib2wgbm9kZSAobVswXSB3aGVyZSBtIGlz
IGEgY29uc3RhbnQgbWF0cml4KXRoYXQgcmVwcmVzZW50cyBhIAotLy8gY29uc3RhbnQgbWF0cml4
IG9yIGl0IGNvdWxkIGJlIHRoZSB0cmVlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb25zdGFudCBt
YXRyaXggKHMubTFbMF0gd2hlcmUgcyBpcyBhIGNvbnN0YW50IHN0cnVjdHVyZSkKLS8vCi1USW50
ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0TWF0cml4Tm9kZShpbnQgaW5kZXgsIFRJ
bnRlcm1UeXBlZCogbm9kZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKLXsKLSAgICBUSW50ZXJt
VHlwZWQqIHR5cGVkTm9kZTsKLSAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiogdGVtcENvbnN0YW50
Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3RhbnRVbmlvbigpOwotCi0gICAgaWYgKGluZGV4ID49IG5v
ZGUtPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpKSB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nc3Ry
ZWFtIGV4dHJhSW5mb1N0cmVhbTsKLSAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJtYXRyaXgg
ZmllbGQgc2VsZWN0aW9uIG91dCBvZiByYW5nZSAnIiA8PCBpbmRleCA8PCAiJyI7Ci0gICAgICAg
IHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAg
ZXJyb3IobGluZSwgIiIsICJbIiwgZXh0cmFJbmZvLmNfc3RyKCkpOwotICAgICAgICByZWNvdmVy
KCk7Ci0gICAgICAgIGluZGV4ID0gMDsKLSAgICB9Ci0KLSAgICBpZiAodGVtcENvbnN0YW50Tm9k
ZSkgewotICAgICAgICAgQ29uc3RhbnRVbmlvbiogdW5pb25BcnJheSA9IHRlbXBDb25zdGFudE5v
ZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCk7Ci0gICAgICAgICBpbnQgc2l6ZSA9IHRlbXBDb25z
dGFudE5vZGUtPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpOwotICAgICAgICAgdHlwZWROb2Rl
ID0gaW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24oJnVuaW9uQXJyYXlbc2l6ZSppbmRleF0s
IHRlbXBDb25zdGFudE5vZGUtPmdldFR5cGUoKSwgbGluZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgZXJyb3IobGluZSwgIkNhbm5vdCBvZmZzZXQgaW50byB0aGUgbWF0cml4IiwgIkVycm9yIik7
Ci0gICAgICAgIHJlY292ZXIoKTsKLQotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gdHlwZWROb2RlOwotfQotCi0KLS8vCi0vLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYW4g
ZWxlbWVudCBvZiBhbiBhcnJheSBhY2Nlc3NlZCBmcm9tIGEgY29uc3RhbnQgYXJyYXkuIFRoZSB2
YWx1ZXMgYXJlIHJldHJpZXZlZCBmcm9tCi0vLyB0aGUgc3ltYm9sIHRhYmxlIGFuZCBwYXJzZS10
cmVlIGlzIGJ1aWx0IGZvciB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudC4gVGhlIGlucHV0IAotLy8g
dG8gdGhlIGZ1bmN0aW9uIGNvdWxkIGVpdGhlciBiZSBhIHN5bWJvbCBub2RlIChhWzBdIHdoZXJl
IGEgaXMgYSBjb25zdGFudCBhcnJheSl0aGF0IHJlcHJlc2VudHMgYSAKLS8vIGNvbnN0YW50IGFy
cmF5IG9yIGl0IGNvdWxkIGJlIHRoZSB0cmVlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb25zdGFu
dCBhcnJheSAocy5hMVswXSB3aGVyZSBzIGlzIGEgY29uc3RhbnQgc3RydWN0dXJlKQotLy8KLVRJ
bnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RBcnJheU5vZGUoaW50IGluZGV4LCBU
SW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCi17Ci0gICAgVEludGVy
bVR5cGVkKiB0eXBlZE5vZGU7Ci0gICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFu
dE5vZGUgPSBub2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKLSAgICBUVHlwZSBhcnJheUVsZW1l
bnRUeXBlID0gbm9kZS0+Z2V0VHlwZSgpOwotICAgIGFycmF5RWxlbWVudFR5cGUuY2xlYXJBcnJh
eW5lc3MoKTsKLQotICAgIGlmIChpbmRleCA+PSBub2RlLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXpl
KCkpIHsKLSAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAg
ICBleHRyYUluZm9TdHJlYW0gPDwgImFycmF5IGZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2Ug
JyIgPDwgaW5kZXggPDwgIiciOwotICAgICAgICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRy
YUluZm9TdHJlYW0uc3RyKCk7Ci0gICAgICAgIGVycm9yKGxpbmUsICIiLCAiWyIsIGV4dHJhSW5m
by5jX3N0cigpKTsKLSAgICAgICAgcmVjb3ZlcigpOwotICAgICAgICBpbmRleCA9IDA7Ci0gICAg
fQotCi0gICAgaWYgKHRlbXBDb25zdGFudE5vZGUpIHsKLSAgICAgICAgIHNpemVfdCBhcnJheUVs
ZW1lbnRTaXplID0gYXJyYXlFbGVtZW50VHlwZS5nZXRPYmplY3RTaXplKCk7Ci0gICAgICAgICBD
b25zdGFudFVuaW9uKiB1bmlvbkFycmF5ID0gdGVtcENvbnN0YW50Tm9kZS0+Z2V0VW5pb25BcnJh
eVBvaW50ZXIoKTsKLSAgICAgICAgIHR5cGVkTm9kZSA9IGludGVybWVkaWF0ZS5hZGRDb25zdGFu
dFVuaW9uKCZ1bmlvbkFycmF5W2FycmF5RWxlbWVudFNpemUgKiBpbmRleF0sIHRlbXBDb25zdGFu
dE5vZGUtPmdldFR5cGUoKSwgbGluZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZXJyb3IobGlu
ZSwgIkNhbm5vdCBvZmZzZXQgaW50byB0aGUgYXJyYXkiLCAiRXJyb3IiKTsKLSAgICAgICAgcmVj
b3ZlcigpOwotCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIHJldHVybiB0eXBlZE5v
ZGU7Ci19Ci0KLQotLy8KLS8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdmFsdWUgb2YgYSBw
YXJ0aWN1bGFyIGZpZWxkIGluc2lkZSBhIGNvbnN0YW50IHN0cnVjdHVyZSBmcm9tIHRoZSBzeW1i
b2wgdGFibGUuIAotLy8gSWYgdGhlcmUgaXMgYW4gZW1iZWRkZWQvbmVzdGVkIHN0cnVjdCwgaXQg
YXBwcm9wcmlhdGVseSBjYWxscyBhZGRDb25zdFN0cnVjdE5lc3RlZCBvciBhZGRDb25zdFN0cnVj
dEZyb21BZ2dyCi0vLyBmdW5jdGlvbiBhbmQgcmV0dXJucyB0aGUgcGFyc2UtdHJlZSB3aXRoIHRo
ZSB2YWx1ZXMgb2YgdGhlIGVtYmVkZGVkL25lc3RlZCBzdHJ1Y3QuCi0vLwotVEludGVybVR5cGVk
KiBUUGFyc2VDb250ZXh0OjphZGRDb25zdFN0cnVjdChUU3RyaW5nJiBpZGVudGlmaWVyLCBUSW50
ZXJtVHlwZWQqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCi17Ci0gICAgY29uc3QgVEZp
ZWxkTGlzdCYgZmllbGRzID0gbm9kZS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5maWVsZHMoKTsK
LQotICAgIHNpemVfdCBpbnN0YW5jZVNpemUgPSAwOwotICAgIGZvciAoc2l6ZV90IGluZGV4ID0g
MDsgaW5kZXggPCBmaWVsZHMuc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgIGlmIChmaWVsZHNb
aW5kZXhdLT5uYW1lKCkgPT0gaWRlbnRpZmllcikgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpbnN0YW5jZVNpemUgKz0gZmllbGRzW2luZGV4XS0+
dHlwZSgpLT5nZXRPYmplY3RTaXplKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBUSW50ZXJt
VHlwZWQqIHR5cGVkTm9kZSA9IDA7Ci0gICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25z
dGFudE5vZGUgPSBub2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKLSAgICBpZiAodGVtcENvbnN0
YW50Tm9kZSkgewotICAgICAgICAgQ29uc3RhbnRVbmlvbiogY29uc3RBcnJheSA9IHRlbXBDb25z
dGFudE5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCk7Ci0KLSAgICAgICAgIHR5cGVkTm9kZSA9
IGludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKGNvbnN0QXJyYXkraW5zdGFuY2VTaXplLCB0
ZW1wQ29uc3RhbnROb2RlLT5nZXRUeXBlKCksIGxpbmUpOyAvLyB0eXBlIHdpbGwgYmUgY2hhbmdl
ZCBpbiB0aGUgY2FsbGluZyBmdW5jdGlvbgotICAgIH0gZWxzZSB7Ci0gICAgICAgIGVycm9yKGxp
bmUsICJDYW5ub3Qgb2Zmc2V0IGludG8gdGhlIHN0cnVjdHVyZSIsICJFcnJvciIpOwotICAgICAg
ICByZWNvdmVyKCk7Ci0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgcmV0dXJuIHR5
cGVkTm9kZTsKLX0KLQotYm9vbCBUUGFyc2VDb250ZXh0OjplbnRlclN0cnVjdERlY2xhcmF0aW9u
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIpCi17Ci0g
ICAgKytzdHJ1Y3ROZXN0aW5nTGV2ZWw7Ci0KLSAgICAvLyBFbWJlZGRlZCBzdHJ1Y3R1cmUgZGVm
aW5pdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgcGVyIEdMU0wgRVMgc3BlYy4KLSAgICAvLyBUaGV5
IGFyZW4ndCBhbGxvd2VkIGluIEdMU0wgZWl0aGVyLCBidXQgd2UgbmVlZCB0byBkZXRlY3QgdGhp
cyBoZXJlCi0gICAgLy8gc28gd2UgZG9uJ3QgcmVseSBvbiB0aGUgR0xTTCBjb21waWxlciB0byBj
YXRjaCBpdC4KLSAgICBpZiAoc3RydWN0TmVzdGluZ0xldmVsID4gMSkgewotICAgICAgICBlcnJv
cihsaW5lLCAiIiwgIkVtYmVkZGVkIHN0cnVjdCBkZWZpbml0aW9ucyBhcmUgbm90IGFsbG93ZWQi
KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci12b2lkIFRQYXJzZUNvbnRleHQ6OmV4aXRTdHJ1Y3REZWNsYXJhdGlvbigpCi17Ci0gICAgLS1z
dHJ1Y3ROZXN0aW5nTGV2ZWw7Ci19Ci0KLW5hbWVzcGFjZSB7Ci0KLWNvbnN0IGludCBrV2ViR0xN
YXhTdHJ1Y3ROZXN0aW5nID0gNDsKLQotfSAgLy8gbmFtZXNwYWNlCi0KLWJvb2wgVFBhcnNlQ29u
dGV4dDo6c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29u
c3QgVEZpZWxkJiBmaWVsZCkKLXsKLSAgICBpZiAoIWlzV2ViR0xCYXNlZFNwZWMoc2hhZGVyU3Bl
YykpIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChmaWVsZC50eXBl
KCktPmdldEJhc2ljVHlwZSgpICE9IEVidFN0cnVjdCkgewotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgLy8gV2UncmUgYWxyZWFkeSBpbnNpZGUgYSBzdHJ1Y3R1cmUgZGVmaW5p
dGlvbiBhdCB0aGlzIHBvaW50LCBzbyBhZGQKLSAgICAvLyBvbmUgdG8gdGhlIGZpZWxkJ3Mgc3Ry
dWN0IG5lc3RpbmcuCi0gICAgaWYgKDEgKyBmaWVsZC50eXBlKCktPmdldERlZXBlc3RTdHJ1Y3RO
ZXN0aW5nKCkgPiBrV2ViR0xNYXhTdHJ1Y3ROZXN0aW5nKSB7Ci0gICAgICAgIHN0ZDo6c3RyaW5n
c3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKLSAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJSZWZl
cmVuY2Ugb2Ygc3RydWN0IHR5cGUgIiA8PCBmaWVsZC5uYW1lKCkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIDw8ICIgZXhjZWVkcyBtYXhpbXVtIHN0cnVjdCBuZXN0aW5nIG9mICIgPDwga1dlYkdM
TWF4U3RydWN0TmVzdGluZzsKLSAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJ
bmZvU3RyZWFtLnN0cigpOwotICAgICAgICBlcnJvcihsaW5lLCAiIiwgIiIsIGV4dHJhSW5mby5j
X3N0cigpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi0vLwotLy8gUGFyc2UgYW4gYXJyYXkgaW5kZXggZXhwcmVzc2lvbgotLy8KLVRJbnRl
cm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkSW5kZXhFeHByZXNzaW9uKFRJbnRlcm1UeXBlZCAq
YmFzZUV4cHJlc3Npb24sIGNvbnN0IFRTb3VyY2VMb2MmIGxvY2F0aW9uLCBUSW50ZXJtVHlwZWQg
KmluZGV4RXhwcmVzc2lvbikKLXsKLSAgICBUSW50ZXJtVHlwZWQgKmluZGV4ZWRFeHByZXNzaW9u
ID0gTlVMTDsKLQotICAgIGlmICghYmFzZUV4cHJlc3Npb24tPmlzQXJyYXkoKSAmJiAhYmFzZUV4
cHJlc3Npb24tPmlzTWF0cml4KCkgJiYgIWJhc2VFeHByZXNzaW9uLT5pc1ZlY3RvcigpKQotICAg
IHsKLSAgICAgICAgaWYgKGJhc2VFeHByZXNzaW9uLT5nZXRBc1N5bWJvbE5vZGUoKSkKLSAgICAg
ICAgewotICAgICAgICAgICAgZXJyb3IobG9jYXRpb24sICIgbGVmdCBvZiAnWycgaXMgbm90IG9m
IHR5cGUgYXJyYXksIG1hdHJpeCwgb3IgdmVjdG9yICIsIGJhc2VFeHByZXNzaW9uLT5nZXRBc1N5
bWJvbE5vZGUoKS0+Z2V0U3ltYm9sKCkuY19zdHIoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxz
ZQotICAgICAgICB7Ci0gICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwgIiBsZWZ0IG9mICdbJyBp
cyBub3Qgb2YgdHlwZSBhcnJheSwgbWF0cml4LCBvciB2ZWN0b3IgIiwgImV4cHJlc3Npb24iKTsK
LSAgICAgICAgfQotICAgICAgICByZWNvdmVyKCk7Ci0gICAgfQotCi0gICAgaWYgKGluZGV4RXhw
cmVzc2lvbi0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCi0gICAgewotICAgICAgICBpbnQg
aW5kZXggPSBpbmRleEV4cHJlc3Npb24tPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRJQ29uc3Qo
MCk7Ci0gICAgICAgIGlmIChpbmRleCA8IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6
c3RyaW5nc3RyZWFtIGluZm9TdHJlYW07Ci0gICAgICAgICAgICBpbmZvU3RyZWFtIDw8IGluZGV4
OwotICAgICAgICAgICAgc3RkOjpzdHJpbmcgaW5mbyA9IGluZm9TdHJlYW0uc3RyKCk7Ci0gICAg
ICAgICAgICBlcnJvcihsb2NhdGlvbiwgIm5lZ2F0aXZlIGluZGV4IiwgaW5mby5jX3N0cigpKTsK
LSAgICAgICAgICAgIHJlY292ZXIoKTsKLSAgICAgICAgICAgIGluZGV4ID0gMDsKLSAgICAgICAg
fQotICAgICAgICBpZiAoYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9
PSBFdnFDb25zdCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGJhc2VFeHByZXNzaW9uLT5p
c0FycmF5KCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gY29uc3RhbnQgZm9s
ZGluZyBmb3IgYXJyYXlzCi0gICAgICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24gPSBhZGRD
b25zdEFycmF5Tm9kZShpbmRleCwgYmFzZUV4cHJlc3Npb24sIGxvY2F0aW9uKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGJhc2VFeHByZXNzaW9uLT5pc1ZlY3RvcigpKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIGNvbnN0YW50IGZvbGRpbmcgZm9yIHZl
Y3RvcnMKLSAgICAgICAgICAgICAgICBUVmVjdG9yRmllbGRzIGZpZWxkczsKLSAgICAgICAgICAg
ICAgICBmaWVsZHMubnVtID0gMTsKLSAgICAgICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1swXSA9
IGluZGV4OyAvLyBuZWVkIHRvIGRvIGl0IHRoaXMgd2F5IGJlY2F1c2Ugdi54eSBzZW5kcyBmaWVs
ZHMgaW50ZWdlciBhcnJheQotICAgICAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0gYWRk
Q29uc3RWZWN0b3JOb2RlKGZpZWxkcywgYmFzZUV4cHJlc3Npb24sIGxvY2F0aW9uKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGJhc2VFeHByZXNzaW9uLT5pc01hdHJpeCgp
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIGNvbnN0YW50IGZvbGRpbmcgZm9y
IG1hdHJpY2VzCi0gICAgICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24gPSBhZGRDb25zdE1h
dHJpeE5vZGUoaW5kZXgsIGJhc2VFeHByZXNzaW9uLCBsb2NhdGlvbik7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoYmFz
ZUV4cHJlc3Npb24tPmlzQXJyYXkoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBp
ZiAoaW5kZXggPj0gYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSkKLSAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4
dHJhSW5mb1N0cmVhbTsKLSAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJh
cnJheSBpbmRleCBvdXQgb2YgcmFuZ2UgJyIgPDwgaW5kZXggPDwgIiciOwotICAgICAgICAgICAg
ICAgICAgICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAiIiwgIlsiLCBleHRyYUluZm8uY19z
dHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAg
ICAgaW5kZXggPSBiYXNlRXhwcmVzc2lvbi0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpIC0gMTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoYmFzZUV4cHJlc3Np
b24tPmdldFF1YWxpZmllcigpID09IEV2cUZyYWdEYXRhICYmIGluZGV4ID4gMCAmJiAhaXNFeHRl
bnNpb25FbmFibGVkKCJHTF9FWFRfZHJhd19idWZmZXJzIikpCi0gICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwgIiIsICJbIiwgImFycmF5IGluZGV4
ZXMgZm9yIGdsX0ZyYWdEYXRhIG11c3QgYmUgemVybyB3aGVuIEdMX0VYVF9kcmF3X2J1ZmZlcnMg
aXMgZGlzYWJsZWQiKTsKLSAgICAgICAgICAgICAgICAgICAgcmVjb3ZlcigpOwotICAgICAgICAg
ICAgICAgICAgICBpbmRleCA9IDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgZWxzZSBpZiAoKGJhc2VFeHByZXNzaW9uLT5pc1ZlY3RvcigpIHx8IGJhc2VF
eHByZXNzaW9uLT5pc01hdHJpeCgpKSAmJiBiYXNlRXhwcmVzc2lvbi0+Z2V0VHlwZSgpLmdldE5v
bWluYWxTaXplKCkgPD0gaW5kZXgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3Rk
OjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICAgICAgICAgIGV4dHJhSW5m
b1N0cmVhbSA8PCAiZmllbGQgc2VsZWN0aW9uIG91dCBvZiByYW5nZSAnIiA8PCBpbmRleCA8PCAi
JyI7Ci0gICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3Ry
ZWFtLnN0cigpOwotICAgICAgICAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAiIiwgIlsiLCBleHRy
YUluZm8uY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgcmVjb3ZlcigpOwotICAgICAgICAgICAg
ICAgIGluZGV4ID0gYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpIC0g
MTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaW5kZXhFeHByZXNzaW9uLT5nZXRBc0Nv
bnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+c2V0SUNvbnN0KGluZGV4KTsK
LSAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0gaW50ZXJtZWRpYXRlLmFkZEluZGV4KEVP
cEluZGV4RGlyZWN0LCBiYXNlRXhwcmVzc2lvbiwgaW5kZXhFeHByZXNzaW9uLCBsb2NhdGlvbik7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgaW5kZXhlZEV4cHJl
c3Npb24gPSBpbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhJbmRpcmVjdCwgYmFzZUV4cHJl
c3Npb24sIGluZGV4RXhwcmVzc2lvbiwgbG9jYXRpb24pOwotICAgIH0KLQotICAgIGlmIChpbmRl
eGVkRXhwcmVzc2lvbiA9PSAwKQotICAgIHsKLSAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25B
cnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwotICAgICAgICB1bmlvbkFycmF5LT5zZXRGQ29u
c3QoMC4wZik7Ci0gICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0gaW50ZXJtZWRpYXRlLmFkZENv
bnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gsIEV2cUNvbnN0
KSwgbG9jYXRpb24pOwotICAgIH0KLSAgICBlbHNlIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNBcnJh
eSgpKQotICAgIHsKLSAgICAgICAgY29uc3QgVFR5cGUgJmJhc2VUeXBlID0gYmFzZUV4cHJlc3Np
b24tPmdldFR5cGUoKTsKLSAgICAgICAgaWYgKGJhc2VUeXBlLmdldFN0cnVjdCgpKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBUVHlwZSBjb3B5T2ZUeXBlKGJhc2VUeXBlLmdldFN0cnVjdCgpKTsK
LSAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uLT5zZXRUeXBlKGNvcHlPZlR5cGUpOwotICAg
ICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgaW5kZXhlZEV4cHJl
c3Npb24tPnNldFR5cGUoVFR5cGUoYmFzZUV4cHJlc3Npb24tPmdldEJhc2ljVHlwZSgpLCBiYXNl
RXhwcmVzc2lvbi0+Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgYmFzZUV4cHJlc3Npb24t
PmdldE5vbWluYWxTaXplKCksIGJhc2VFeHByZXNzaW9uLT5pc01hdHJpeCgpKSk7Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIo
KSA9PSBFdnFDb25zdCkKLSAgICAgICAgewotICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24t
PmdldFR5cGVQb2ludGVyKCktPnNldFF1YWxpZmllcihFdnFDb25zdCk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgZWxzZSBpZiAoYmFzZUV4cHJlc3Npb24tPmlzTWF0cml4KCkpCi0gICAgewotICAg
ICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA9IGJhc2VFeHByZXNzaW9uLT5nZXRUeXBlKCkuZ2V0
UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgPyBFdnFDb25zdCA6IEV2cVRlbXBvcmFyeTsKLSAgICAg
ICAgaW5kZXhlZEV4cHJlc3Npb24tPnNldFR5cGUoVFR5cGUoYmFzZUV4cHJlc3Npb24tPmdldEJh
c2ljVHlwZSgpLCBiYXNlRXhwcmVzc2lvbi0+Z2V0UHJlY2lzaW9uKCksIHF1YWxpZmllciwgYmFz
ZUV4cHJlc3Npb24tPmdldE5vbWluYWxTaXplKCkpKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoYmFz
ZUV4cHJlc3Npb24tPmlzVmVjdG9yKCkpCi0gICAgewotICAgICAgICBUUXVhbGlmaWVyIHF1YWxp
ZmllciA9IGJhc2VFeHByZXNzaW9uLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29u
c3QgPyBFdnFDb25zdCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24t
PnNldFR5cGUoVFR5cGUoYmFzZUV4cHJlc3Npb24tPmdldEJhc2ljVHlwZSgpLCBiYXNlRXhwcmVz
c2lvbi0+Z2V0UHJlY2lzaW9uKCksIHF1YWxpZmllcikpOwotICAgIH0KLSAgICBlbHNlCi0gICAg
ewotICAgICAgICBpbmRleGVkRXhwcmVzc2lvbi0+c2V0VHlwZShiYXNlRXhwcmVzc2lvbi0+Z2V0
VHlwZSgpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gaW5kZXhlZEV4cHJlc3Npb247Ci19Ci0KLS8v
Ci0vLyBQYXJzZSBhbiBhcnJheSBvZiBzdHJpbmdzIHVzaW5nIHl5cGFyc2UuCi0vLwotLy8gUmV0
dXJucyAwIGZvciBzdWNjZXNzLgotLy8KLWludCBQYVBhcnNlU3RyaW5ncyhzaXplX3QgY291bnQs
IGNvbnN0IGNoYXIqIGNvbnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10sCi0gICAgICAg
ICAgICAgICAgICAgVFBhcnNlQ29udGV4dCogY29udGV4dCkgewotICAgIGlmICgoY291bnQgPT0g
MCkgfHwgKHN0cmluZyA9PSBOVUxMKSkKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICBpZiAoZ2xz
bGFuZ19pbml0aWFsaXplKGNvbnRleHQpKQotICAgICAgICByZXR1cm4gMTsKLQotICAgIGludCBl
cnJvciA9IGdsc2xhbmdfc2Nhbihjb3VudCwgc3RyaW5nLCBsZW5ndGgsIGNvbnRleHQpOwotICAg
IGlmICghZXJyb3IpCi0gICAgICAgIGVycm9yID0gZ2xzbGFuZ19wYXJzZShjb250ZXh0KTsKLQot
ICAgIGdsc2xhbmdfZmluYWxpemUoY29udGV4dCk7Ci0KLSAgICByZXR1cm4gKGVycm9yID09IDAp
ICYmIChjb250ZXh0LT5udW1FcnJvcnMoKSA9PSAwKSA/IDAgOiAxOwotfQotCi0KLQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1BhcnNlSGVscGVy
LmgJKHJldmlzaW9uIDE1OTIzOSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9QYXJzZUhlbHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEzNCArMCwwIEBACi0vLwot
Ly8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCi0vLwotI2lmbmRlZiBfUEFSU0VSX0hFTFBFUl9JTkNMVURFRF8KLSNkZWZpbmUg
X1BBUlNFUl9IRUxQRVJfSU5DTFVERURfCi0KLSNpbmNsdWRlICJjb21waWxlci9EaWFnbm9zdGlj
cy5oIgotI2luY2x1ZGUgImNvbXBpbGVyL0RpcmVjdGl2ZUhhbmRsZXIuaCIKLSNpbmNsdWRlICJj
b21waWxlci9sb2NhbGludGVybWVkaWF0ZS5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nl
c3Nvci9QcmVwcm9jZXNzb3IuaCIKLSNpbmNsdWRlICJjb21waWxlci9TaEhhbmRsZS5oIgotI2lu
Y2x1ZGUgImNvbXBpbGVyL1N5bWJvbFRhYmxlLmgiCi0KLXN0cnVjdCBUTWF0cml4RmllbGRzIHsK
LSAgICBib29sIHdob2xlUm93OwotICAgIGJvb2wgd2hvbGVDb2w7Ci0gICAgaW50IHJvdzsKLSAg
ICBpbnQgY29sOwotfTsKLQotLy8KLS8vIFRoZSBmb2xsb3dpbmcgYXJlIGV4dHJhIHZhcmlhYmxl
cyBuZWVkZWQgZHVyaW5nIHBhcnNpbmcsIGdyb3VwZWQgdG9nZXRoZXIgc28KLS8vIHRoZXkgY2Fu
IGJlIHBhc3NlZCB0byB0aGUgcGFyc2VyIHdpdGhvdXQgbmVlZGluZyBhIGdsb2JhbC4KLS8vCi1z
dHJ1Y3QgVFBhcnNlQ29udGV4dCB7Ci0gICAgVFBhcnNlQ29udGV4dChUU3ltYm9sVGFibGUmIHN5
bXQsIFRFeHRlbnNpb25CZWhhdmlvciYgZXh0LCBUSW50ZXJtZWRpYXRlJiBpbnRlcm0sIFNoU2hh
ZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywgaW50IG9wdGlvbnMsIGJvb2wgY2hlY2tz
UHJlY0Vycm9ycywgY29uc3QgY2hhciogc291cmNlUGF0aCwgVEluZm9TaW5rJiBpcykgOgotICAg
ICAgICAgICAgaW50ZXJtZWRpYXRlKGludGVybSksCi0gICAgICAgICAgICBzeW1ib2xUYWJsZShz
eW10KSwKLSAgICAgICAgICAgIHNoYWRlclR5cGUodHlwZSksCi0gICAgICAgICAgICBzaGFkZXJT
cGVjKHNwZWMpLAotICAgICAgICAgICAgY29tcGlsZU9wdGlvbnMob3B0aW9ucyksCi0gICAgICAg
ICAgICBzb3VyY2VQYXRoKHNvdXJjZVBhdGgpLAotICAgICAgICAgICAgdHJlZVJvb3QoMCksCi0g
ICAgICAgICAgICBsb29wTmVzdGluZ0xldmVsKDApLAotICAgICAgICAgICAgc3RydWN0TmVzdGlu
Z0xldmVsKDApLAotICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9uVHlwZShOVUxMKSwKLSAgICAg
ICAgICAgIGZ1bmN0aW9uUmV0dXJuc1ZhbHVlKGZhbHNlKSwKLSAgICAgICAgICAgIGNoZWNrc1By
ZWNpc2lvbkVycm9ycyhjaGVja3NQcmVjRXJyb3JzKSwKLSAgICAgICAgICAgIGRpYWdub3N0aWNz
KGlzKSwKLSAgICAgICAgICAgIGRpcmVjdGl2ZUhhbmRsZXIoZXh0LCBkaWFnbm9zdGljcyksCi0g
ICAgICAgICAgICBwcmVwcm9jZXNzb3IoJmRpYWdub3N0aWNzLCAmZGlyZWN0aXZlSGFuZGxlciks
Ci0gICAgICAgICAgICBzY2FubmVyKE5VTEwpIHsgIH0KLSAgICBUSW50ZXJtZWRpYXRlJiBpbnRl
cm1lZGlhdGU7IC8vIHRvIGhvbGQgYW5kIGJ1aWxkIGEgcGFyc2UgdHJlZQotICAgIFRTeW1ib2xU
YWJsZSYgc3ltYm9sVGFibGU7ICAgLy8gc3ltYm9sIHRhYmxlIHRoYXQgZ29lcyB3aXRoIHRoZSBs
YW5ndWFnZSBjdXJyZW50bHkgYmVpbmcgcGFyc2VkCi0gICAgU2hTaGFkZXJUeXBlIHNoYWRlclR5
cGU7ICAgICAgICAgICAgICAvLyB2ZXJ0ZXggb3IgZnJhZ21lbnQgbGFuZ3VhZ2UgKGZ1dHVyZTog
cGFjayBvciB1bnBhY2spCi0gICAgU2hTaGFkZXJTcGVjIHNoYWRlclNwZWM7ICAgICAgICAgICAg
ICAvLyBUaGUgbGFuZ3VhZ2Ugc3BlY2lmaWNhdGlvbiBjb21waWxlciBjb25mb3JtcyB0byAtIEdM
RVMyIG9yIFdlYkdMLgotICAgIGludCBjb21waWxlT3B0aW9uczsKLSAgICBjb25zdCBjaGFyKiBz
b3VyY2VQYXRoOyAgICAgIC8vIFBhdGggb2Ygc291cmNlIGZpbGUgb3IgTlVMTC4KLSAgICBUSW50
ZXJtTm9kZSogdHJlZVJvb3Q7ICAgICAgIC8vIHJvb3Qgb2YgcGFyc2UgdHJlZSBiZWluZyBjcmVh
dGVkCi0gICAgaW50IGxvb3BOZXN0aW5nTGV2ZWw7ICAgICAgICAvLyAwIGlmIG91dHNpZGUgYWxs
IGxvb3BzCi0gICAgaW50IHN0cnVjdE5lc3RpbmdMZXZlbDsgICAgICAvLyBpbmNyZW1lbnRlZCB3
aGlsZSBwYXJzaW5nIGEgc3RydWN0IGRlY2xhcmF0aW9uCi0gICAgY29uc3QgVFR5cGUqIGN1cnJl
bnRGdW5jdGlvblR5cGU7ICAvLyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlIGZ1bmN0aW9uIHRoYXQn
cyBjdXJyZW50bHkgYmVpbmcgcGFyc2VkCi0gICAgYm9vbCBmdW5jdGlvblJldHVybnNWYWx1ZTsg
ICAvLyB0cnVlIGlmIGEgbm9uLXZvaWQgZnVuY3Rpb24gaGFzIGEgcmV0dXJuCi0gICAgYm9vbCBj
aGVja3NQcmVjaXNpb25FcnJvcnM7ICAvLyB0cnVlIGlmIGFuIGVycm9yIHdpbGwgYmUgZ2VuZXJh
dGVkIHdoZW4gYSB2YXJpYWJsZSBpcyBkZWNsYXJlZCB3aXRob3V0IHByZWNpc2lvbiwgZXhwbGlj
aXQgb3IgaW1wbGljaXQuCi0gICAgYm9vbCBmcmFnbWVudFByZWNpc2lvbkhpZ2g7ICAvLyB0cnVl
IGlmIGhpZ2hwIHByZWNpc2lvbiBpcyBzdXBwb3J0ZWQgaW4gdGhlIGZyYWdtZW50IGxhbmd1YWdl
LgotICAgIFRTdHJpbmcgSGFzaEVyck1zZzsKLSAgICBURGlhZ25vc3RpY3MgZGlhZ25vc3RpY3M7
Ci0gICAgVERpcmVjdGl2ZUhhbmRsZXIgZGlyZWN0aXZlSGFuZGxlcjsKLSAgICBwcDo6UHJlcHJv
Y2Vzc29yIHByZXByb2Nlc3NvcjsKLSAgICB2b2lkKiBzY2FubmVyOwotCi0gICAgaW50IG51bUVy
cm9ycygpIGNvbnN0IHsgcmV0dXJuIGRpYWdub3N0aWNzLm51bUVycm9ycygpOyB9Ci0gICAgVElu
Zm9TaW5rJiBpbmZvU2luaygpIHsgcmV0dXJuIGRpYWdub3N0aWNzLmluZm9TaW5rKCk7IH0KLSAg
ICB2b2lkIGVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxvYywgY29uc3QgY2hhciAqcmVhc29uLCBj
b25zdCBjaGFyKiB0b2tlbiwKLSAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4dHJhSW5mbz0i
Iik7Ci0gICAgdm9pZCB3YXJuaW5nKGNvbnN0IFRTb3VyY2VMb2MmIGxvYywgY29uc3QgY2hhciog
cmVhc29uLCBjb25zdCBjaGFyKiB0b2tlbiwKLSAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
ZXh0cmFJbmZvPSIiKTsKLSAgICB2b2lkIHRyYWNlKGNvbnN0IGNoYXIqIHN0cik7Ci0gICAgdm9p
ZCByZWNvdmVyKCk7Ci0KLSAgICBib29sIHBhcnNlVmVjdG9yRmllbGRzKGNvbnN0IFRTdHJpbmcm
LCBpbnQgdmVjU2l6ZSwgVFZlY3RvckZpZWxkcyYsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpOwot
ICAgIGJvb2wgcGFyc2VNYXRyaXhGaWVsZHMoY29uc3QgVFN0cmluZyYsIGludCBtYXRTaXplLCBU
TWF0cml4RmllbGRzJiwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSk7Ci0KLSAgICBib29sIHJlc2Vy
dmVkRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVu
dGlmaWVyKTsKLSAgICB2b2lkIGFzc2lnbkVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNv
bnN0IGNoYXIqIG9wLCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcgcmlnaHQpOwotICAgIHZvaWQgdW5h
cnlPcEVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5n
IG9wZXJhbmQpOwotICAgIHZvaWQgYmluYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5l
LCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KTsKLSAgICBib29s
IHByZWNpc2lvbkVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFByZWNpc2lvbiBw
cmVjaXNpb24sIFRCYXNpY1R5cGUgdHlwZSk7Ci0gICAgYm9vbCBsVmFsdWVFcnJvckNoZWNrKGNv
bnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUSW50ZXJtVHlwZWQqKTsKLSAg
ICBib29sIGNvbnN0RXJyb3JDaGVjayhUSW50ZXJtVHlwZWQqIG5vZGUpOwotICAgIGJvb2wgaW50
ZWdlckVycm9yQ2hlY2soVEludGVybVR5cGVkKiBub2RlLCBjb25zdCBjaGFyKiB0b2tlbik7Ci0g
ICAgYm9vbCBnbG9iYWxFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGJvb2wgZ2xv
YmFsLCBjb25zdCBjaGFyKiB0b2tlbik7Ci0gICAgYm9vbCBjb25zdHJ1Y3RvckVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEludGVybU5vZGUqLCBURnVuY3Rpb24mLCBUT3BlcmF0
b3IsIFRUeXBlKik7Ci0gICAgYm9vbCBhcnJheVNpemVFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUsIFRJbnRlcm1UeXBlZCogZXhwciwgaW50JiBzaXplKTsKLSAgICBib29sIGFycmF5
UXVhbGlmaWVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUHVibGljVHlwZSB0
eXBlKTsKLSAgICBib29sIGFycmF5VHlwZUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGlu
ZSwgVFB1YmxpY1R5cGUgdHlwZSk7Ci0gICAgYm9vbCBhcnJheUVycm9yQ2hlY2soY29uc3QgVFNv
dXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUgdHlwZSwgVFZh
cmlhYmxlKiYgdmFyaWFibGUpOwotICAgIGJvb2wgdm9pZEVycm9yQ2hlY2soY29uc3QgVFNvdXJj
ZUxvYyYsIGNvbnN0IFRTdHJpbmcmLCBjb25zdCBUUHVibGljVHlwZSYpOwotICAgIGJvb2wgYm9v
bEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYsIGNvbnN0IFRJbnRlcm1UeXBlZCopOwotICAg
IGJvb2wgYm9vbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYsIGNvbnN0IFRQdWJsaWNUeXBl
Jik7Ci0gICAgYm9vbCBzYW1wbGVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBj
b25zdCBUUHVibGljVHlwZSYgcFR5cGUsIGNvbnN0IGNoYXIqIHJlYXNvbik7Ci0gICAgYm9vbCBz
dHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRQ
dWJsaWNUeXBlJiBwVHlwZSk7Ci0gICAgYm9vbCBwYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjayhj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgY29uc3QgVFR5cGUm
IHR5cGUpOwotICAgIGJvb2wgbm9uSW5pdENvbnN0RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9j
JiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgdHlwZSwgYm9vbCBhcnJh
eSk7Ci0gICAgYm9vbCBub25Jbml0RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBU
U3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgdHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFi
bGUpOwotICAgIGJvb2wgcGFyYW1FcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRR
dWFsaWZpZXIgcXVhbGlmaWVyLCBUUXVhbGlmaWVyIHBhcmFtUXVhbGlmaWVyLCBUVHlwZSogdHlw
ZSk7Ci0gICAgYm9vbCBleHRlbnNpb25FcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUs
IGNvbnN0IFRTdHJpbmcmKTsKLQotICAgIGNvbnN0IFRQcmFnbWEmIHByYWdtYSgpIGNvbnN0IHsg
cmV0dXJuIGRpcmVjdGl2ZUhhbmRsZXIucHJhZ21hKCk7IH0KLSAgICBjb25zdCBURXh0ZW5zaW9u
QmVoYXZpb3ImIGV4dGVuc2lvbkJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gZGlyZWN0aXZlSGFu
ZGxlci5leHRlbnNpb25CZWhhdmlvcigpOyB9Ci0gICAgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihj
b25zdCBjaGFyKiBleHRlbnNpb24pOwotICAgIGJvb2wgaXNFeHRlbnNpb25FbmFibGVkKGNvbnN0
IGNoYXIqIGV4dGVuc2lvbikgY29uc3Q7Ci0KLSAgICBib29sIGNvbnRhaW5zU2FtcGxlcihUVHlw
ZSYgdHlwZSk7Ci0gICAgYm9vbCBhcmVBbGxDaGlsZENvbnN0KFRJbnRlcm1BZ2dyZWdhdGUqIGFn
Z3JOb2RlKTsKLSAgICBjb25zdCBURnVuY3Rpb24qIGZpbmRGdW5jdGlvbihjb25zdCBUU291cmNl
TG9jJiBsaW5lLCBURnVuY3Rpb24qIHBmbkNhbGwsIGJvb2wgKmJ1aWx0SW4gPSAwKTsKLSAgICBi
b29sIGV4ZWN1dGVJbml0aWFsaXplcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBp
ZGVudGlmaWVyLCBUUHVibGljVHlwZSYgcFR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVEludGVybVR5cGVkKiBpbml0aWFsaXplciwgVEludGVybU5vZGUqJiBpbnRlcm1Ob2RlLCBU
VmFyaWFibGUqIHZhcmlhYmxlID0gMCk7Ci0KLSAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0cnVj
dG9yKFRJbnRlcm1Ob2RlKiwgY29uc3QgVFR5cGUqLCBUT3BlcmF0b3IsIFRGdW5jdGlvbiosIGNv
bnN0IFRTb3VyY2VMb2MmKTsKLSAgICBUSW50ZXJtVHlwZWQqIGZvbGRDb25zdENvbnN0cnVjdG9y
KFRJbnRlcm1BZ2dyZWdhdGUqIGFnZ3JOb2RlLCBjb25zdCBUVHlwZSYgdHlwZSk7Ci0gICAgVElu
dGVybVR5cGVkKiBjb25zdHJ1Y3RTdHJ1Y3QoVEludGVybU5vZGUqLCBUVHlwZSosIGludCwgY29u
c3QgVFNvdXJjZUxvYyYsIGJvb2wgc3Vic2V0KTsKLSAgICBUSW50ZXJtVHlwZWQqIGNvbnN0cnVj
dEJ1aWx0SW4oY29uc3QgVFR5cGUqLCBUT3BlcmF0b3IsIFRJbnRlcm1Ob2RlKiwgY29uc3QgVFNv
dXJjZUxvYyYsIGJvb2wgc3Vic2V0KTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0VmVjdG9y
Tm9kZShUVmVjdG9yRmllbGRzJiwgVEludGVybVR5cGVkKiwgY29uc3QgVFNvdXJjZUxvYyYpOwot
ICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RNYXRyaXhOb2RlKGludCAsIFRJbnRlcm1UeXBlZCos
IGNvbnN0IFRTb3VyY2VMb2MmKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0QXJyYXlOb2Rl
KGludCBpbmRleCwgVEludGVybVR5cGVkKiBub2RlLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKTsK
LSAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0U3RydWN0KFRTdHJpbmcmICwgVEludGVybVR5cGVk
KiwgY29uc3QgVFNvdXJjZUxvYyYpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkSW5kZXhFeHByZXNz
aW9uKFRJbnRlcm1UeXBlZCAqYmFzZUV4cHJlc3Npb24sIGNvbnN0IFRTb3VyY2VMb2MmIGxvY2F0
aW9uLCBUSW50ZXJtVHlwZWQgKmluZGV4RXhwcmVzc2lvbik7Ci0KLSAgICAvLyBQZXJmb3JtcyBh
biBlcnJvciBjaGVjayBmb3IgZW1iZWRkZWQgc3RydWN0IGRlY2xhcmF0aW9ucy4KLSAgICAvLyBS
ZXR1cm5zIHRydWUgaWYgYW4gZXJyb3Igd2FzIHJhaXNlZCBkdWUgdG8gdGhlIGRlY2xhcmF0aW9u
IG9mCi0gICAgLy8gdGhpcyBzdHJ1Y3QuCi0gICAgYm9vbCBlbnRlclN0cnVjdERlY2xhcmF0aW9u
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIpOwotICAg
IHZvaWQgZXhpdFN0cnVjdERlY2xhcmF0aW9uKCk7Ci0KLSAgICBib29sIHN0cnVjdE5lc3RpbmdF
cnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRGaWVsZCYgZmllbGQpOwot
fTsKLQotaW50IFBhUGFyc2VTdHJpbmdzKHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qg
c3RyaW5nW10sIGNvbnN0IGludCBsZW5ndGhbXSwKLSAgICAgICAgICAgICAgICAgICBUUGFyc2VD
b250ZXh0KiBjb250ZXh0KTsKLQotI2VuZGlmIC8vIF9QQVJTRVJfSEVMUEVSX0lOQ0xVREVEXwpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1Bvb2xBbGxvYy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1Bvb2xB
bGxvYy5jcHAJKHJldmlzaW9uIDE1OTA5MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9Qb29sQWxsb2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw1NSArMTcsMzIg
QEAKIAogT1NfVExTSW5kZXggUG9vbEluZGV4ID0gT1NfSU5WQUxJRF9UTFNfSU5ERVg7CiAKLXZv
aWQgSW5pdGlhbGl6ZUdsb2JhbFBvb2xzKCkKLXsKLSAgICBUVGhyZWFkR2xvYmFsUG9vbHMqIGds
b2JhbFBvb2xzPSBzdGF0aWNfY2FzdDxUVGhyZWFkR2xvYmFsUG9vbHMqPihPU19HZXRUTFNWYWx1
ZShQb29sSW5kZXgpKTsgICAgCi0gICAgaWYgKGdsb2JhbFBvb2xzKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBUVGhyZWFkR2xvYmFsUG9vbHMqIHRocmVhZERhdGEgPSBuZXcgVFRocmVhZEdsb2Jh
bFBvb2xzKCk7Ci0gICAgdGhyZWFkRGF0YS0+Z2xvYmFsUG9vbEFsbG9jYXRvciA9IDA7Ci0KLSAg
ICBPU19TZXRUTFNWYWx1ZShQb29sSW5kZXgsIHRocmVhZERhdGEpOwotfQotCi12b2lkIEZyZWVH
bG9iYWxQb29scygpCi17Ci0gICAgLy8gUmVsZWFzZSB0aGUgYWxsb2NhdGVkIG1lbW9yeSBmb3Ig
dGhpcyB0aHJlYWQuCi0gICAgVFRocmVhZEdsb2JhbFBvb2xzKiBnbG9iYWxQb29scz0gc3RhdGlj
X2Nhc3Q8VFRocmVhZEdsb2JhbFBvb2xzKj4oT1NfR2V0VExTVmFsdWUoUG9vbEluZGV4KSk7ICAg
IAotICAgIGlmICghZ2xvYmFsUG9vbHMpCi0gICAgICAgIHJldHVybjsKLSAKLSAgICBkZWxldGUg
Z2xvYmFsUG9vbHM7Ci19Ci0KIGJvb2wgSW5pdGlhbGl6ZVBvb2xJbmRleCgpCiB7Ci0gICAgLy8g
QWxsb2NhdGUgYSBUTFMgaW5kZXguCi0gICAgaWYgKChQb29sSW5kZXggPSBPU19BbGxvY1RMU0lu
ZGV4KCkpID09IE9TX0lOVkFMSURfVExTX0lOREVYKQotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgYXNzZXJ0KFBvb2xJbmRleCA9PSBPU19JTlZBTElEX1RMU19JTkRFWCk7CiAKLSAgICByZXR1
cm4gdHJ1ZTsKKyAgICBQb29sSW5kZXggPSBPU19BbGxvY1RMU0luZGV4KCk7CisgICAgcmV0dXJu
IFBvb2xJbmRleCAhPSBPU19JTlZBTElEX1RMU19JTkRFWDsKIH0KIAogdm9pZCBGcmVlUG9vbElu
ZGV4KCkKIHsKLSAgICAvLyBSZWxlYXNlIHRoZSBUTFMgaW5kZXguCisgICAgYXNzZXJ0KFBvb2xJ
bmRleCAhPSBPU19JTlZBTElEX1RMU19JTkRFWCk7CisKICAgICBPU19GcmVlVExTSW5kZXgoUG9v
bEluZGV4KTsKKyAgICBQb29sSW5kZXggPSBPU19JTlZBTElEX1RMU19JTkRFWDsKIH0KIAotVFBv
b2xBbGxvY2F0b3ImIEdldEdsb2JhbFBvb2xBbGxvY2F0b3IoKQorVFBvb2xBbGxvY2F0b3IqIEdl
dEdsb2JhbFBvb2xBbGxvY2F0b3IoKQogewotICAgIFRUaHJlYWRHbG9iYWxQb29scyogdGhyZWFk
RGF0YSA9IHN0YXRpY19jYXN0PFRUaHJlYWRHbG9iYWxQb29scyo+KE9TX0dldFRMU1ZhbHVlKFBv
b2xJbmRleCkpOwotCi0gICAgcmV0dXJuICp0aHJlYWREYXRhLT5nbG9iYWxQb29sQWxsb2NhdG9y
OworICAgIGFzc2VydChQb29sSW5kZXggIT0gT1NfSU5WQUxJRF9UTFNfSU5ERVgpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxUUG9vbEFsbG9jYXRvcio+KE9TX0dldFRMU1ZhbHVlKFBvb2xJbmRl
eCkpOwogfQogCiB2b2lkIFNldEdsb2JhbFBvb2xBbGxvY2F0b3IoVFBvb2xBbGxvY2F0b3IqIHBv
b2xBbGxvY2F0b3IpCiB7Ci0gICAgVFRocmVhZEdsb2JhbFBvb2xzKiB0aHJlYWREYXRhID0gc3Rh
dGljX2Nhc3Q8VFRocmVhZEdsb2JhbFBvb2xzKj4oT1NfR2V0VExTVmFsdWUoUG9vbEluZGV4KSk7
Ci0KLSAgICB0aHJlYWREYXRhLT5nbG9iYWxQb29sQWxsb2NhdG9yID0gcG9vbEFsbG9jYXRvcjsK
KyAgICBhc3NlcnQoUG9vbEluZGV4ICE9IE9TX0lOVkFMSURfVExTX0lOREVYKTsKKyAgICBPU19T
ZXRUTFNWYWx1ZShQb29sSW5kZXgsIHBvb2xBbGxvY2F0b3IpOwogfQogCiAvLwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1Bvb2xBbGxvYy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Qb29sQWxsb2MuaAkocmV2
aXNpb24gMTU5MDkwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1Bv
b2xBbGxvYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTksMTQgKzIxOSw4IEBAIHByaXZhdGU6CiAv
LyBkaWZmZXJlbnQgdGltZXMuICBCdXQgYSBzaW1wbGUgdXNlIGlzIHRvIGhhdmUgYSBnbG9iYWwg
cG9wCiAvLyB3aXRoIGV2ZXJ5b25lIHVzaW5nIHRoZSBzYW1lIGdsb2JhbCBhbGxvY2F0b3IuCiAv
LwotZXh0ZXJuIFRQb29sQWxsb2NhdG9yJiBHZXRHbG9iYWxQb29sQWxsb2NhdG9yKCk7CitleHRl
cm4gVFBvb2xBbGxvY2F0b3IqIEdldEdsb2JhbFBvb2xBbGxvY2F0b3IoKTsKIGV4dGVybiB2b2lk
IFNldEdsb2JhbFBvb2xBbGxvY2F0b3IoVFBvb2xBbGxvY2F0b3IqIHBvb2xBbGxvY2F0b3IpOwot
I2RlZmluZSBHbG9iYWxQb29sQWxsb2NhdG9yIEdldEdsb2JhbFBvb2xBbGxvY2F0b3IoKQotCi1z
dHJ1Y3QgVFRocmVhZEdsb2JhbFBvb2xzCi17Ci0gICAgVFBvb2xBbGxvY2F0b3IqIGdsb2JhbFBv
b2xBbGxvY2F0b3I7Ci19OwogCiAvLwogLy8gVGhpcyBTVEwgY29tcGF0aWJsZSBhbGxvY2F0b3Ig
aXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcyB0aGUgYWxsb2NhdG9yCkBAIC0yNTMsNyArMjQ3LDcg
QEAgcHVibGljOgogICAgIHBvaW50ZXIgYWRkcmVzcyhyZWZlcmVuY2UgeCkgY29uc3QgeyByZXR1
cm4gJng7IH0KICAgICBjb25zdF9wb2ludGVyIGFkZHJlc3MoY29uc3RfcmVmZXJlbmNlIHgpIGNv
bnN0IHsgcmV0dXJuICZ4OyB9CiAKLSAgICBwb29sX2FsbG9jYXRvcigpIDogYWxsb2NhdG9yKCZH
bG9iYWxQb29sQWxsb2NhdG9yKSB7IH0KKyAgICBwb29sX2FsbG9jYXRvcigpIDogYWxsb2NhdG9y
KEdldEdsb2JhbFBvb2xBbGxvY2F0b3IoKSkgeyB9CiAgICAgcG9vbF9hbGxvY2F0b3IoVFBvb2xB
bGxvY2F0b3ImIGEpIDogYWxsb2NhdG9yKCZhKSB7IH0KICAgICBwb29sX2FsbG9jYXRvcihjb25z
dCBwb29sX2FsbG9jYXRvcjxUPiYgcCkgOiBhbGxvY2F0b3IocC5hbGxvY2F0b3IpIHsgfQogCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU2VhcmNoU3ltYm9sLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1NlYXJj
aFN5bWJvbC5oCShyZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvU2VhcmNoU3ltYm9sLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwLDcgKzEwLDcg
QEAKICNkZWZpbmUgQ09NUElMRVJfU0VBUkNIU1lNQk9MX0hfCiAKICNpbmNsdWRlICJjb21waWxl
ci9pbnRlcm1lZGlhdGUuaCIKLSNpbmNsdWRlICJjb21waWxlci9QYXJzZUhlbHBlci5oIgorI2lu
Y2x1ZGUgImNvbXBpbGVyL1BhcnNlQ29udGV4dC5oIgogCiBuYW1lc3BhY2Ugc2gKIHsKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaEhhbmRsZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaEhhbmRsZS5oCShy
ZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
U2hIYW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQCBwdWJsaWM6CiAgICAg
VEluZm9TaW5rJiBnZXRJbmZvU2luaygpIHsgcmV0dXJuIGluZm9TaW5rOyB9CiAgICAgY29uc3Qg
VFZhcmlhYmxlSW5mb0xpc3QmIGdldEF0dHJpYnMoKSBjb25zdCB7IHJldHVybiBhdHRyaWJzOyB9
CiAgICAgY29uc3QgVFZhcmlhYmxlSW5mb0xpc3QmIGdldFVuaWZvcm1zKCkgY29uc3QgeyByZXR1
cm4gdW5pZm9ybXM7IH0KKyAgICBjb25zdCBUVmFyaWFibGVJbmZvTGlzdCYgZ2V0VmFyeWluZ3Mo
KSBjb25zdCB7IHJldHVybiB2YXJ5aW5nczsgfQogICAgIGludCBnZXRNYXBwZWROYW1lTWF4TGVu
Z3RoKCkgY29uc3Q7CiAKICAgICBTaEhhc2hGdW5jdGlvbjY0IGdldEhhc2hGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIGhhc2hGdW5jdGlvbjsgfQpAQCAtOTAsOCArOTEsOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBzaGFkZXIgZG9lcyBub3QgZXhjZWVk
IHRoZSBtaW5pbXVtCiAgICAgLy8gZnVuY3Rpb25hbGl0eSBtYW5kYXRlZCBpbiBHTFNMIDEuMCBz
cGVjIEFwcGVuZGl4IEEuCiAgICAgYm9vbCB2YWxpZGF0ZUxpbWl0YXRpb25zKFRJbnRlcm1Ob2Rl
KiByb290KTsKLSAgICAvLyBDb2xsZWN0IGluZm8gZm9yIGFsbCBhdHRyaWJzIGFuZCB1bmlmb3Jt
cy4KLSAgICB2b2lkIGNvbGxlY3RBdHRyaWJzVW5pZm9ybXMoVEludGVybU5vZGUqIHJvb3QpOwor
ICAgIC8vIENvbGxlY3QgaW5mbyBmb3IgYWxsIGF0dHJpYnMsIHVuaWZvcm1zLCB2YXJ5aW5ncy4K
KyAgICB2b2lkIGNvbGxlY3RWYXJpYWJsZXMoVEludGVybU5vZGUqIHJvb3QpOwogICAgIC8vIE1h
cCBsb25nIHZhcmlhYmxlIG5hbWVzIGludG8gc2hvcnRlciBvbmVzLgogICAgIHZvaWQgbWFwTG9u
Z1ZhcmlhYmxlTmFtZXMoVEludGVybU5vZGUqIHJvb3QpOwogICAgIC8vIFRyYW5zbGF0ZSB0byBv
YmplY3QgY29kZS4KQEAgLTE0Miw2ICsxNDMsNyBAQCBwcml2YXRlOgogICAgIFRJbmZvU2luayBp
bmZvU2luazsgIC8vIE91dHB1dCBzaW5rLgogICAgIFRWYXJpYWJsZUluZm9MaXN0IGF0dHJpYnM7
ICAvLyBBY3RpdmUgYXR0cmlidXRlcyBpbiB0aGUgY29tcGlsZWQgc2hhZGVyLgogICAgIFRWYXJp
YWJsZUluZm9MaXN0IHVuaWZvcm1zOyAgLy8gQWN0aXZlIHVuaWZvcm1zIGluIHRoZSBjb21waWxl
ZCBzaGFkZXIuCisgICAgVFZhcmlhYmxlSW5mb0xpc3QgdmFyeWluZ3M7ICAvLyBWYXJ5aW5ncyBp
biB0aGUgY29tcGlsZWQgc2hhZGVyLgogCiAgICAgLy8gQ2FjaGVkIGNvcHkgb2YgdGhlIHJlZi1j
b3VudGVkIHNpbmdsZXRvbi4KICAgICBMb25nTmFtZU1hcCogbG9uZ05hbWVNYXA7CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU2hhZGVyTGFuZy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1NoYWRlckxhbmcu
Y3BwCShyZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvU2hhZGVyTGFuZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1LDIwICsxNSwyNSBAQAog
I2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9sZW5ndGhfbGltaXRzLmgiCiAjaW5jbHVk
ZSAiY29tcGlsZXIvU2hIYW5kbGUuaCIKICNpbmNsdWRlICJjb21waWxlci9UcmFuc2xhdG9ySExT
TC5oIgorI2luY2x1ZGUgImNvbXBpbGVyL1ZhcmlhYmxlUGFja2VyLmgiCiAKIC8vCiAvLyBUaGlz
IGlzIHRoZSBwbGF0Zm9ybSBpbmRlcGVuZGVudCBpbnRlcmZhY2UgYmV0d2VlbiBhbiBPR0wgZHJp
dmVyCiAvLyBhbmQgdGhlIHNoYWRpbmcgbGFuZ3VhZ2UgY29tcGlsZXIuCiAvLwogCi1zdGF0aWMg
Ym9vbCBjaGVja0FjdGl2ZVVuaWZvcm1BbmRBdHRyaWJNYXhMZW5ndGhzKGNvbnN0IFNoSGFuZGxl
IGhhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGV4cGVjdGVkVmFsdWUpCitzdGF0aWMgYm9vbCBjaGVja1ZhcmlhYmxlTWF4TGVu
Z3Rocyhjb25zdCBTaEhhbmRsZSBoYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgZXhwZWN0ZWRWYWx1ZSkKIHsKICAgICBzaXplX3QgYWN0aXZlVW5pZm9y
bUxpbWl0ID0gMDsKICAgICBTaEdldEluZm8oaGFuZGxlLCBTSF9BQ1RJVkVfVU5JRk9STV9NQVhf
TEVOR1RILCAmYWN0aXZlVW5pZm9ybUxpbWl0KTsKICAgICBzaXplX3QgYWN0aXZlQXR0cmliTGlt
aXQgPSAwOwogICAgIFNoR2V0SW5mbyhoYW5kbGUsIFNIX0FDVElWRV9BVFRSSUJVVEVfTUFYX0xF
TkdUSCwgJmFjdGl2ZUF0dHJpYkxpbWl0KTsKLSAgICByZXR1cm4gKGV4cGVjdGVkVmFsdWUgPT0g
YWN0aXZlVW5pZm9ybUxpbWl0ICYmIGV4cGVjdGVkVmFsdWUgPT0gYWN0aXZlQXR0cmliTGltaXQp
OworICAgIHNpemVfdCB2YXJ5aW5nTGltaXQgPSAwOworICAgIFNoR2V0SW5mbyhoYW5kbGUsIFNI
X1ZBUllJTkdfTUFYX0xFTkdUSCwgJnZhcnlpbmdMaW1pdCk7CisgICAgcmV0dXJuIChleHBlY3Rl
ZFZhbHVlID09IGFjdGl2ZVVuaWZvcm1MaW1pdCAmJgorICAgICAgICAgICAgZXhwZWN0ZWRWYWx1
ZSA9PSBhY3RpdmVBdHRyaWJMaW1pdCAmJgorICAgICAgICAgICAgZXhwZWN0ZWRWYWx1ZSA9PSB2
YXJ5aW5nTGltaXQpOwogfQogCiBzdGF0aWMgYm9vbCBjaGVja01hcHBlZE5hbWVNYXhMZW5ndGgo
Y29uc3QgU2hIYW5kbGUgaGFuZGxlLCBzaXplX3QgZXhwZWN0ZWRWYWx1ZSkKQEAgLTM4LDYyICs0
MywxNCBAQCBzdGF0aWMgYm9vbCBjaGVja01hcHBlZE5hbWVNYXhMZW5ndGgoY29uCiAgICAgcmV0
dXJuIChleHBlY3RlZFZhbHVlID09IG1hcHBlZE5hbWVNYXhMZW5ndGgpOwogfQogCi1zdGF0aWMg
dm9pZCBnZXRWYXJpYWJsZUluZm8oU2hTaGFkZXJJbmZvIHZhclR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU2hIYW5kbGUgaGFuZGxlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qq
IGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIHNpemUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2hEYXRhVHlwZSogdHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyKiBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIq
IG1hcHBlZE5hbWUpCi17Ci0gICAgaWYgKCFoYW5kbGUgfHwgIXNpemUgfHwgIXR5cGUgfHwgIW5h
bWUpCi0gICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQoKHZhclR5cGUgPT0gU0hfQUNUSVZFX0FU
VFJJQlVURVMpIHx8Ci0gICAgICAgICAgICh2YXJUeXBlID09IFNIX0FDVElWRV9VTklGT1JNUykp
OwotCi0gICAgVFNoSGFuZGxlQmFzZSogYmFzZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VFNoSGFuZGxl
QmFzZSo+KGhhbmRsZSk7Ci0gICAgVENvbXBpbGVyKiBjb21waWxlciA9IGJhc2UtPmdldEFzQ29t
cGlsZXIoKTsKLSAgICBpZiAoY29tcGlsZXIgPT0gMCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Y29uc3QgVFZhcmlhYmxlSW5mb0xpc3QmIHZhckxpc3QgPSB2YXJUeXBlID09IFNIX0FDVElWRV9B
VFRSSUJVVEVTID8KLSAgICAgICAgY29tcGlsZXItPmdldEF0dHJpYnMoKSA6IGNvbXBpbGVyLT5n
ZXRVbmlmb3JtcygpOwotICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gc3RhdGljX2Nhc3Q8
aW50Pih2YXJMaXN0LnNpemUoKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNvbnN0IFRWYXJp
YWJsZUluZm8mIHZhckluZm8gPSB2YXJMaXN0W2luZGV4XTsKLSAgICBpZiAobGVuZ3RoKSAqbGVu
Z3RoID0gdmFySW5mby5uYW1lLnNpemUoKTsKLSAgICAqc2l6ZSA9IHZhckluZm8uc2l6ZTsKLSAg
ICAqdHlwZSA9IHZhckluZm8udHlwZTsKLQotICAgIC8vIFRoaXMgc2l6ZSBtdXN0IG1hdGNoIHRo
YXQgcXVlcmllZCBieQotICAgIC8vIFNIX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEggYW5kIFNI
X0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSAotICAgIC8vIGluIFNoR2V0SW5mbywgYmVsb3cu
Ci0gICAgc2l6ZV90IGFjdGl2ZVVuaWZvcm1BbmRBdHRyaWJMZW5ndGggPSAxICsgTUFYX1NZTUJP
TF9OQU1FX0xFTjsKLSAgICBBU1NFUlQoY2hlY2tBY3RpdmVVbmlmb3JtQW5kQXR0cmliTWF4TGVu
Z3RocyhoYW5kbGUsIGFjdGl2ZVVuaWZvcm1BbmRBdHRyaWJMZW5ndGgpKTsKLSAgICBzdHJuY3B5
KG5hbWUsIHZhckluZm8ubmFtZS5jX3N0cigpLCBhY3RpdmVVbmlmb3JtQW5kQXR0cmliTGVuZ3Ro
KTsKLSAgICBuYW1lW2FjdGl2ZVVuaWZvcm1BbmRBdHRyaWJMZW5ndGggLSAxXSA9IDA7Ci0gICAg
aWYgKG1hcHBlZE5hbWUpIHsKLSAgICAgICAgLy8gVGhpcyBzaXplIG11c3QgbWF0Y2ggdGhhdCBx
dWVyaWVkIGJ5Ci0gICAgICAgIC8vIFNIX01BUFBFRF9OQU1FX01BWF9MRU5HVEggaW4gU2hHZXRJ
bmZvLCBiZWxvdy4KLSAgICAgICAgc2l6ZV90IG1heE1hcHBlZE5hbWVMZW5ndGggPSAxICsgTUFY
X1NZTUJPTF9OQU1FX0xFTjsKLSAgICAgICAgQVNTRVJUKGNoZWNrTWFwcGVkTmFtZU1heExlbmd0
aChoYW5kbGUsIG1heE1hcHBlZE5hbWVMZW5ndGgpKTsKLSAgICAgICAgc3RybmNweShtYXBwZWRO
YW1lLCB2YXJJbmZvLm1hcHBlZE5hbWUuY19zdHIoKSwgbWF4TWFwcGVkTmFtZUxlbmd0aCk7Ci0g
ICAgICAgIG1hcHBlZE5hbWVbbWF4TWFwcGVkTmFtZUxlbmd0aCAtIDFdID0gMDsKLSAgICB9Ci19
Ci0KIC8vCi0vLyBEcml2ZXIgbXVzdCBjYWxsIHRoaXMgZmlyc3QsIG9uY2UsIGJlZm9yZSBkb2lu
ZyBhbnkgb3RoZXIKLS8vIGNvbXBpbGVyIG9wZXJhdGlvbnMuCisvLyBEcml2ZXIgbXVzdCBjYWxs
IHRoaXMgZmlyc3QsIG9uY2UsIGJlZm9yZSBkb2luZyBhbnkgb3RoZXIgY29tcGlsZXIgb3BlcmF0
aW9ucy4KKy8vIFN1YnNlcXVlbnQgY2FsbHMgdG8gdGhpcyBmdW5jdGlvbiBhcmUgbm8tb3AuCiAv
LwogaW50IFNoSW5pdGlhbGl6ZSgpCiB7Ci0gICAgaWYgKCFJbml0UHJvY2VzcygpKQotICAgICAg
ICByZXR1cm4gMDsKLQotICAgIHJldHVybiAxOworICAgIHN0YXRpYyBjb25zdCBib29sIGtJbml0
aWFsaXplZCA9IEluaXRQcm9jZXNzKCk7CisgICAgcmV0dXJuIGtJbml0aWFsaXplZCA/IDEgOiAw
OwogfQogCiAvLwpAQCAtMTAxLDkgKzU4LDcgQEAgaW50IFNoSW5pdGlhbGl6ZSgpCiAvLwogaW50
IFNoRmluYWxpemUoKQogewotICAgIGlmICghRGV0YWNoUHJvY2VzcygpKQotICAgICAgICByZXR1
cm4gMDsKLQorICAgIERldGFjaFByb2Nlc3MoKTsKICAgICByZXR1cm4gMTsKIH0KIApAQCAtMTQ1
LDkgKzEwMCw2IEBAIFNoSGFuZGxlIFNoQ29uc3RydWN0Q29tcGlsZXIoU2hTaGFkZXJUeXAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hTaGFkZXJPdXRwdXQgb3V0cHV0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMqIHJlc291cmNl
cykKIHsKLSAgICBpZiAoIUluaXRUaHJlYWQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KICAgICBU
U2hIYW5kbGVCYXNlKiBiYXNlID0gc3RhdGljX2Nhc3Q8VFNoSGFuZGxlQmFzZSo+KENvbnN0cnVj
dENvbXBpbGVyKHR5cGUsIHNwZWMsIG91dHB1dCkpOwogICAgIFRDb21waWxlciogY29tcGlsZXIg
PSBiYXNlLT5nZXRBc0NvbXBpbGVyKCk7CiAgICAgaWYgKGNvbXBpbGVyID09IDApCkBAIC0xODYs
OSArMTM4LDYgQEAgaW50IFNoQ29tcGlsZSgKICAgICBzaXplX3QgbnVtU3RyaW5ncywKICAgICBp
bnQgY29tcGlsZU9wdGlvbnMpCiB7Ci0gICAgaWYgKCFJbml0VGhyZWFkKCkpCi0gICAgICAgIHJl
dHVybiAwOwotCiAgICAgaWYgKGhhbmRsZSA9PSAwKQogICAgICAgICByZXR1cm4gMDsKIApAQCAt
MjMwLDYgKzE3OSwxMiBAQCB2b2lkIFNoR2V0SW5mbyhjb25zdCBTaEhhbmRsZSBoYW5kbGUsIFNo
CiAgICAgY2FzZSBTSF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEg6CiAgICAgICAgICpwYXJh
bXMgPSAxICsgTUFYX1NZTUJPTF9OQU1FX0xFTjsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBT
SF9WQVJZSU5HUzoKKyAgICAgICAgKnBhcmFtcyA9IGNvbXBpbGVyLT5nZXRWYXJ5aW5ncygpLnNp
emUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTSF9WQVJZSU5HX01BWF9MRU5HVEg6Cisg
ICAgICAgICpwYXJhbXMgPSAxICsgTUFYX1NZTUJPTF9OQU1FX0xFTjsKKyAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBTSF9NQVBQRURfTkFNRV9NQVhfTEVOR1RIOgogICAgICAgICAvLyBVc2UgbG9u
Z2VyIGxlbmd0aCB0aGFuIE1BWF9TSE9SVEVORURfSURFTlRJRklFUl9TSVpFIHRvCiAgICAgICAg
IC8vIGhhbmRsZSBhcnJheSBhbmQgc3RydWN0IGRlcmVmZXJlbmNlcy4KQEAgLTI4NywyOCArMjQy
LDcxIEBAIHZvaWQgU2hHZXRPYmplY3RDb2RlKGNvbnN0IFNoSGFuZGxlIGhhbmQKICAgICBzdHJj
cHkob2JqQ29kZSwgaW5mb1Npbmsub2JqLmNfc3RyKCkpOwogfQogCi12b2lkIFNoR2V0QWN0aXZl
QXR0cmliKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwKK3ZvaWQgU2hHZXRWYXJpYWJsZUluZm8oY29u
c3QgU2hIYW5kbGUgaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICBTaFNoYWRlckluZm8g
dmFyVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluZGV4LAogICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QqIGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBz
aXplLAogICAgICAgICAgICAgICAgICAgICAgICBTaERhdGFUeXBlKiB0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICBTaFByZWNpc2lvblR5cGUqIHByZWNpc2lvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgaW50KiBzdGF0aWNVc2UsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIG5h
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIG1hcHBlZE5hbWUpCiB7Ci0gICAgZ2V0
VmFyaWFibGVJbmZvKFNIX0FDVElWRV9BVFRSSUJVVEVTLAotICAgICAgICAgICAgICAgICAgICBo
YW5kbGUsIGluZGV4LCBsZW5ndGgsIHNpemUsIHR5cGUsIG5hbWUsIG1hcHBlZE5hbWUpOwotfQor
ICAgIGlmICghaGFuZGxlIHx8ICFzaXplIHx8ICF0eXBlIHx8ICFwcmVjaXNpb24gfHwgIXN0YXRp
Y1VzZSB8fCAhbmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVCgodmFyVHlwZSA9PSBT
SF9BQ1RJVkVfQVRUUklCVVRFUykgfHwKKyAgICAgICAgICAgKHZhclR5cGUgPT0gU0hfQUNUSVZF
X1VOSUZPUk1TKSB8fAorICAgICAgICAgICAodmFyVHlwZSA9PSBTSF9WQVJZSU5HUykpOwogCi12
b2lkIFNoR2V0QWN0aXZlVW5pZm9ybShjb25zdCBTaEhhbmRsZSBoYW5kbGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qq
IGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCogc2l6ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIFNoRGF0YVR5cGUqIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBj
aGFyKiBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgY2hhciogbWFwcGVkTmFtZSkKLXsK
LSAgICBnZXRWYXJpYWJsZUluZm8oU0hfQUNUSVZFX1VOSUZPUk1TLAotICAgICAgICAgICAgICAg
ICAgICBoYW5kbGUsIGluZGV4LCBsZW5ndGgsIHNpemUsIHR5cGUsIG5hbWUsIG1hcHBlZE5hbWUp
OworICAgIFRTaEhhbmRsZUJhc2UqIGJhc2UgPSByZWludGVycHJldF9jYXN0PFRTaEhhbmRsZUJh
c2UqPihoYW5kbGUpOworICAgIFRDb21waWxlciogY29tcGlsZXIgPSBiYXNlLT5nZXRBc0NvbXBp
bGVyKCk7CisgICAgaWYgKGNvbXBpbGVyID09IDApCisgICAgICAgIHJldHVybjsKKworICAgIGNv
bnN0IFRWYXJpYWJsZUluZm9MaXN0JiB2YXJMaXN0ID0KKyAgICAgICAgdmFyVHlwZSA9PSBTSF9B
Q1RJVkVfQVRUUklCVVRFUyA/IGNvbXBpbGVyLT5nZXRBdHRyaWJzKCkgOgorICAgICAgICAgICAg
KHZhclR5cGUgPT0gU0hfQUNUSVZFX1VOSUZPUk1TID8gY29tcGlsZXItPmdldFVuaWZvcm1zKCkg
OgorICAgICAgICAgICAgICAgIGNvbXBpbGVyLT5nZXRWYXJ5aW5ncygpKTsKKyAgICBpZiAoaW5k
ZXggPCAwIHx8IGluZGV4ID49IHN0YXRpY19jYXN0PGludD4odmFyTGlzdC5zaXplKCkpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBjb25zdCBUVmFyaWFibGVJbmZvJiB2YXJJbmZvID0gdmFyTGlz
dFtpbmRleF07CisgICAgaWYgKGxlbmd0aCkgKmxlbmd0aCA9IHZhckluZm8ubmFtZS5zaXplKCk7
CisgICAgKnNpemUgPSB2YXJJbmZvLnNpemU7CisgICAgKnR5cGUgPSB2YXJJbmZvLnR5cGU7Cisg
ICAgc3dpdGNoICh2YXJJbmZvLnByZWNpc2lvbikgeworICAgIGNhc2UgRWJwTG93OgorICAgICAg
ICAqcHJlY2lzaW9uID0gU0hfUFJFQ0lTSU9OX0xPV1A7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgRWJwTWVkaXVtOgorICAgICAgICAqcHJlY2lzaW9uID0gU0hfUFJFQ0lTSU9OX01FRElVTVA7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRWJwSGlnaDoKKyAgICAgICAgKnByZWNpc2lvbiA9
IFNIX1BSRUNJU0lPTl9ISUdIUDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgLy8gU29tZSB0eXBlcyBkb2VzIG5vdCBzdXBwb3J0IHByZWNpc2lvbiwgZm9yIGV4YW1wbGUs
IGJvb2xlYW4uCisgICAgICAgICpwcmVjaXNpb24gPSBTSF9QUkVDSVNJT05fVU5ERUZJTkVEOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgKnN0YXRpY1VzZSA9IHZhckluZm8uc3RhdGljVXNl
ID8gMSA6IDA7CisKKyAgICAvLyBUaGlzIHNpemUgbXVzdCBtYXRjaCB0aGF0IHF1ZXJpZWQgYnkK
KyAgICAvLyBTSF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RILCBTSF9BQ1RJVkVfQVRUUklCVVRF
X01BWF9MRU5HVEgsIFNIX1ZBUllJTkdfTUFYX0xFTkdUSAorICAgIC8vIGluIFNoR2V0SW5mbywg
YmVsb3cuCisgICAgc2l6ZV90IHZhcmlhYmxlTGVuZ3RoID0gMSArIE1BWF9TWU1CT0xfTkFNRV9M
RU47CisgICAgQVNTRVJUKGNoZWNrVmFyaWFibGVNYXhMZW5ndGhzKGhhbmRsZSwgdmFyaWFibGVM
ZW5ndGgpKTsKKyAgICBzdHJuY3B5KG5hbWUsIHZhckluZm8ubmFtZS5jX3N0cigpLCB2YXJpYWJs
ZUxlbmd0aCk7CisgICAgbmFtZVt2YXJpYWJsZUxlbmd0aCAtIDFdID0gMDsKKyAgICBpZiAobWFw
cGVkTmFtZSkgeworICAgICAgICAvLyBUaGlzIHNpemUgbXVzdCBtYXRjaCB0aGF0IHF1ZXJpZWQg
YnkKKyAgICAgICAgLy8gU0hfTUFQUEVEX05BTUVfTUFYX0xFTkdUSCBpbiBTaEdldEluZm8sIGJl
bG93LgorICAgICAgICBzaXplX3QgbWF4TWFwcGVkTmFtZUxlbmd0aCA9IDEgKyBNQVhfU1lNQk9M
X05BTUVfTEVOOworICAgICAgICBBU1NFUlQoY2hlY2tNYXBwZWROYW1lTWF4TGVuZ3RoKGhhbmRs
ZSwgbWF4TWFwcGVkTmFtZUxlbmd0aCkpOworICAgICAgICBzdHJuY3B5KG1hcHBlZE5hbWUsIHZh
ckluZm8ubWFwcGVkTmFtZS5jX3N0cigpLCBtYXhNYXBwZWROYW1lTGVuZ3RoKTsKKyAgICAgICAg
bWFwcGVkTmFtZVttYXhNYXBwZWROYW1lTGVuZ3RoIC0gMV0gPSAwOworICAgIH0KIH0KIAogdm9p
ZCBTaEdldE5hbWVIYXNoaW5nRW50cnkoY29uc3QgU2hIYW5kbGUgaGFuZGxlLApAQCAtMzcxLDMg
KzM2OSwxOSBAQCB2b2lkIFNoR2V0SW5mb1BvaW50ZXIoY29uc3QgU2hIYW5kbGUgaGFuCiAgICAg
ZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKICAgICB9CiB9CisKK2ludCBTaENoZWNrVmFyaWFibGVz
V2l0aGluUGFja2luZ0xpbWl0cygKKyAgICBpbnQgbWF4VmVjdG9ycywgU2hWYXJpYWJsZUluZm8q
IHZhckluZm9BcnJheSwgc2l6ZV90IHZhckluZm9BcnJheVNpemUpCit7CisgICAgaWYgKHZhcklu
Zm9BcnJheVNpemUgPT0gMCkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgQVNTRVJUKHZhckluZm9B
cnJheSk7CisgICAgVFZhcmlhYmxlSW5mb0xpc3QgdmFyaWFibGVzOworICAgIGZvciAoc2l6ZV90
IGlpID0gMDsgaWkgPCB2YXJJbmZvQXJyYXlTaXplOyArK2lpKQorICAgIHsKKyAgICAgICAgVFZh
cmlhYmxlSW5mbyB2YXIodmFySW5mb0FycmF5W2lpXS50eXBlLCB2YXJJbmZvQXJyYXlbaWldLnNp
emUpOworICAgICAgICB2YXJpYWJsZXMucHVzaF9iYWNrKHZhcik7CisgICAgfQorICAgIFZhcmlh
YmxlUGFja2VyIHBhY2tlcjsKKyAgICByZXR1cm4gcGFja2VyLkNoZWNrVmFyaWFibGVzV2l0aGlu
UGFja2luZ0xpbWl0cyhtYXhWZWN0b3JzLCB2YXJpYWJsZXMpID8gMSA6IDA7Cit9CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TeW1ib2xUYWJs
ZS5jcHAJKHJldmlzaW9uIDE1OTA5MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9TeW1ib2xUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNiwzICsyMDYsMTEg
QEAgdm9pZCBUU3ltYm9sVGFibGVMZXZlbDo6cmVsYXRlVG9FeHRlbnNpbwogICAgICAgICAgICAg
c3ltYm9sLT5yZWxhdGVUb0V4dGVuc2lvbihleHQpOwogICAgIH0KIH0KKworVFN5bWJvbFRhYmxl
Ojp+VFN5bWJvbFRhYmxlKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRhYmxlLnNp
emUoKTsgKytpKQorICAgICAgICBkZWxldGUgdGFibGVbaV07CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBwcmVjaXNpb25TdGFjay5zaXplKCk7ICsraSkKKyAgICAgICAgZGVsZXRlIHByZWNp
c2lvblN0YWNrW2ldOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL1N5bWJvbFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmgJKHJldmlzaW9uIDE1OTA5MCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TeW1ib2xUYWJsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MSw5ICs0MSwxMCBAQAogLy8KIGNsYXNzIFRTeW1ib2wgeyAgICAKIHB1YmxpYzoKLSAg
ICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKEdsb2JhbFBvb2xBbGxvY2F0b3IpCi0gICAgVFN5
bWJvbChjb25zdCBUU3RyaW5nICpuKSA6ICBuYW1lKG4pIHsgfQorICAgIFBPT0xfQUxMT0NBVE9S
X05FV19ERUxFVEUoKTsKKyAgICBUU3ltYm9sKGNvbnN0IFRTdHJpbmcqIG4pIDogIHVuaXF1ZUlk
KDApLCBuYW1lKG4pIHsgfQogICAgIHZpcnR1YWwgflRTeW1ib2woKSB7IC8qIGRvbid0IGRlbGV0
ZSBuYW1lLCBpdCdzIGZyb20gdGhlIHBvb2wgKi8gfQorCiAgICAgY29uc3QgVFN0cmluZyYgZ2V0
TmFtZSgpIGNvbnN0IHsgcmV0dXJuICpuYW1lOyB9CiAgICAgdmlydHVhbCBjb25zdCBUU3RyaW5n
JiBnZXRNYW5nbGVkTmFtZSgpIGNvbnN0IHsgcmV0dXJuIGdldE5hbWUoKTsgfQogICAgIHZpcnR1
YWwgYm9vbCBpc0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTU3LDggKzU4
LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVFN5
bWJvbCk7CiAKKyAgICBpbnQgdW5pcXVlSWQ7ICAgICAgLy8gRm9yIHJlYWwgY29tcGFyaW5nIGR1
cmluZyBjb2RlIGdlbmVyYXRpb24KICAgICBjb25zdCBUU3RyaW5nICpuYW1lOwotICAgIHVuc2ln
bmVkIGludCB1bmlxdWVJZDsgICAgICAvLyBGb3IgcmVhbCBjb21wYXJpbmcgZHVyaW5nIGNvZGUg
Z2VuZXJhdGlvbgogICAgIFRTdHJpbmcgZXh0ZW5zaW9uOwogfTsKIApAQCAtMTg2LDcgKzE4Nyw2
IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIGNvbnN0IHRMZXZlbDo6dmFsdWVfdHlwZSB0TGV2ZWxQ
YWlyOwogICAgIHR5cGVkZWYgc3RkOjpwYWlyPHRMZXZlbDo6aXRlcmF0b3IsIGJvb2w+IHRJbnNl
cnRSZXN1bHQ7CiAKLSAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKEdsb2JhbFBvb2xBbGxv
Y2F0b3IpCiAgICAgVFN5bWJvbFRhYmxlTGV2ZWwoKSB7IH0KICAgICB+VFN5bWJvbFRhYmxlTGV2
ZWwoKTsKIApAQCAtMTk1LDggKzE5NSw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8KICAgICAgICAg
Ly8gcmV0dXJuaW5nIHRydWUgbWVhbnMgc3ltYm9sIHdhcyBhZGRlZCB0byB0aGUgdGFibGUKICAg
ICAgICAgLy8KLSAgICAgICAgdEluc2VydFJlc3VsdCByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdCA9
IGxldmVsLmluc2VydCh0TGV2ZWxQYWlyKG5hbWUsICZzeW1ib2wpKTsKKyAgICAgICAgdEluc2Vy
dFJlc3VsdCByZXN1bHQgPSBsZXZlbC5pbnNlcnQodExldmVsUGFpcihuYW1lLCAmc3ltYm9sKSk7
CiAKICAgICAgICAgcmV0dXJuIHJlc3VsdC5zZWNvbmQ7CiAgICAgfQpAQCAtMjQzLDEzICsyNDIs
NyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIHRoYXQgdGhlIHN5bWJvbCB0YWJsZSBoYXMgbm90IGJl
ZW4gcHJlbG9hZGVkIHdpdGggYnVpbHQtaW5zLgogICAgICAgICAvLwogICAgIH0KLQotICAgIH5U
U3ltYm9sVGFibGUoKQotICAgIHsKLSAgICAgICAgLy8gbGV2ZWwgMCBpcyBhbHdheXMgYnVpbHQg
SW4gc3ltYm9scywgc28gd2UgbmV2ZXIgcG9wIHRoYXQgb3V0Ci0gICAgICAgIHdoaWxlICh0YWJs
ZS5zaXplKCkgPiAxKQotICAgICAgICAgICAgcG9wKCk7Ci0gICAgfQorICAgIH5UU3ltYm9sVGFi
bGUoKTsKIAogICAgIC8vCiAgICAgLy8gV2hlbiB0aGUgc3ltYm9sIHRhYmxlIGlzIGluaXRpYWxp
emVkIHdpdGggdGhlIGJ1aWx0LWlucywgdGhlcmUgc2hvdWxkCkBAIC0yNjIsMTMgKzI1NSwxNSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBwdXNoKCkKICAgICB7CiAgICAgICAgIHRhYmxlLnB1c2hfYmFj
ayhuZXcgVFN5bWJvbFRhYmxlTGV2ZWwpOwotICAgICAgICBwcmVjaXNpb25TdGFjay5wdXNoX2Jh
Y2soIFByZWNpc2lvblN0YWNrTGV2ZWwoKSApOworICAgICAgICBwcmVjaXNpb25TdGFjay5wdXNo
X2JhY2sobmV3IFByZWNpc2lvblN0YWNrTGV2ZWwpOwogICAgIH0KIAogICAgIHZvaWQgcG9wKCkK
LSAgICB7IAotICAgICAgICBkZWxldGUgdGFibGVbY3VycmVudExldmVsKCldOyAKLSAgICAgICAg
dGFibGUucG9wX2JhY2soKTsgCisgICAgeworICAgICAgICBkZWxldGUgdGFibGUuYmFjaygpOwor
ICAgICAgICB0YWJsZS5wb3BfYmFjaygpOworCisgICAgICAgIGRlbGV0ZSBwcmVjaXNpb25TdGFj
ay5iYWNrKCk7CiAgICAgICAgIHByZWNpc2lvblN0YWNrLnBvcF9iYWNrKCk7CiAgICAgfQogCkBA
IC0zMjMsMTYgKzMxOCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzeW1ib2w7CiAgICAg
fQogCi0gICAgVFN5bWJvbCAqZmluZEJ1aWx0SW4oY29uc3QgVFN0cmluZyAmbmFtZSkKKyAgICBU
U3ltYm9sKiBmaW5kQnVpbHRJbihjb25zdCBUU3RyaW5nICZuYW1lKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRhYmxlWzBdLT5maW5kKG5hbWUpOwogICAgIH0KIAotICAgIFRTeW1ib2xUYWJsZUxl
dmVsKiBnZXRHbG9iYWxMZXZlbCgpIHsKLSAgICAgICAgYXNzZXJ0KHRhYmxlLnNpemUoKSA+PSAy
KTsKLSAgICAgICAgcmV0dXJuIHRhYmxlWzFdOwotICAgIH0KLQogICAgIFRTeW1ib2xUYWJsZUxl
dmVsKiBnZXRPdXRlckxldmVsKCkgewogICAgICAgICBhc3NlcnQodGFibGUuc2l6ZSgpID49IDIp
OwogICAgICAgICByZXR1cm4gdGFibGVbY3VycmVudExldmVsKCkgLSAxXTsKQEAgLTM0NCwzMSAr
MzM0LDI5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbGF0ZVRvRXh0ZW5zaW9uKGNvbnN0IGNoYXIq
IG5hbWUsIGNvbnN0IFRTdHJpbmcmIGV4dCkgewogICAgICAgICB0YWJsZVswXS0+cmVsYXRlVG9F
eHRlbnNpb24obmFtZSwgZXh0KTsKICAgICB9Ci0gICAgaW50IGdldE1heFN5bWJvbElkKCkgeyBy
ZXR1cm4gdW5pcXVlSWQ7IH0KICAgICB2b2lkIGR1bXAoVEluZm9TaW5rICZpbmZvU2luaykgY29u
c3Q7CiAKLSAgICBib29sIHNldERlZmF1bHRQcmVjaXNpb24oIGNvbnN0IFRQdWJsaWNUeXBlJiB0
eXBlLCBUUHJlY2lzaW9uIHByZWMgKXsKLSAgICAgICAgaWYgKElzU2FtcGxlcih0eXBlLnR5cGUp
KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7ICAvLyBTa2lwIHNhbXBsZXIgdHlwZXMgZm9yIHRo
ZSB0aW1lIGJlaW5nCi0gICAgICAgIGlmICh0eXBlLnR5cGUgIT0gRWJ0RmxvYXQgJiYgdHlwZS50
eXBlICE9IEVidEludCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gT25seSBzZXQgZGVm
YXVsdCBwcmVjaXNpb24gZm9yIGludC9mbG9hdAorICAgIGJvb2wgc2V0RGVmYXVsdFByZWNpc2lv
bihjb25zdCBUUHVibGljVHlwZSYgdHlwZSwgVFByZWNpc2lvbiBwcmVjKSB7CisgICAgICAgIGlm
ICghc3VwcG9ydHNQcmVjaXNpb24odHlwZS50eXBlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgaWYgKHR5cGUuc2l6ZSAhPSAxIHx8IHR5cGUubWF0cml4IHx8IHR5cGUuYXJy
YXkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIE5vdCBhbGxvd2VkIHRvIHNldCBmb3Ig
YWdncmVnYXRlIHR5cGVzCiAgICAgICAgIGludCBpbmRleE9mTGFzdEVsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxpbnQ+KHByZWNpc2lvblN0YWNrLnNpemUoKSkgLSAxOwotICAgICAgICBwcmVjaXNpb25T
dGFja1tpbmRleE9mTGFzdEVsZW1lbnRdW3R5cGUudHlwZV0gPSBwcmVjOyAvLyBVc2VzIG1hcCBv
cGVyYXRvciBbXSwgb3ZlcndyaXRlcyB0aGUgY3VycmVudCB2YWx1ZQorICAgICAgICAoKnByZWNp
c2lvblN0YWNrW2luZGV4T2ZMYXN0RWxlbWVudF0pW3R5cGUudHlwZV0gPSBwcmVjOyAvLyBVc2Vz
IG1hcCBvcGVyYXRvciBbXSwgb3ZlcndyaXRlcyB0aGUgY3VycmVudCB2YWx1ZQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICAvLyBTZWFyY2hlcyBkb3duIHRoZSBwcmVjaXNpb25T
dGFjayBmb3IgYSBwcmVjaXNpb24gcXVhbGlmaWVyIGZvciB0aGUgc3BlY2lmaWVkIFRCYXNpY1R5
cGUKLSAgICBUUHJlY2lzaW9uIGdldERlZmF1bHRQcmVjaXNpb24oIFRCYXNpY1R5cGUgdHlwZSl7
Ci0gICAgICAgIGlmKCB0eXBlICE9IEVidEZsb2F0ICYmIHR5cGUgIT0gRWJ0SW50ICkgcmV0dXJu
IEVicFVuZGVmaW5lZDsKKyAgICBUUHJlY2lzaW9uIGdldERlZmF1bHRQcmVjaXNpb24oVEJhc2lj
VHlwZSB0eXBlKSB7CisgICAgICAgIGlmICghc3VwcG9ydHNQcmVjaXNpb24odHlwZSkpCisgICAg
ICAgICAgICByZXR1cm4gRWJwVW5kZWZpbmVkOwogICAgICAgICBpbnQgbGV2ZWwgPSBzdGF0aWNf
Y2FzdDxpbnQ+KHByZWNpc2lvblN0YWNrLnNpemUoKSkgLSAxOwotICAgICAgICBhc3NlcnQoIGxl
dmVsID49IDApOyAvLyBKdXN0IHRvIGJlIHNhZmUuIFNob3VsZCBub3QgaGFwcGVuLgorICAgICAg
ICBhc3NlcnQobGV2ZWwgPj0gMCk7IC8vIEp1c3QgdG8gYmUgc2FmZS4gU2hvdWxkIG5vdCBoYXBw
ZW4uCiAgICAgICAgIFByZWNpc2lvblN0YWNrTGV2ZWw6Oml0ZXJhdG9yIGl0OwogICAgICAgICBU
UHJlY2lzaW9uIHByZWMgPSBFYnBVbmRlZmluZWQ7IC8vIElmIHdlIGRvbnQgZmluZCBhbnl0aGlu
ZyB3ZSByZXR1cm4gdGhpcy4gU2hvdWxkIHdlIGVycm9yIGNoZWNrIHRoaXM/Ci0gICAgICAgIHdo
aWxlKCBsZXZlbCA+PSAwICl7Ci0gICAgICAgICAgICBpdCA9IHByZWNpc2lvblN0YWNrW2xldmVs
XS5maW5kKCB0eXBlICk7Ci0gICAgICAgICAgICBpZiggaXQgIT0gcHJlY2lzaW9uU3RhY2tbbGV2
ZWxdLmVuZCgpICl7CisgICAgICAgIHdoaWxlIChsZXZlbCA+PSAwKSB7CisgICAgICAgICAgICBp
dCA9IHByZWNpc2lvblN0YWNrW2xldmVsXS0+ZmluZCh0eXBlKTsKKyAgICAgICAgICAgIGlmIChp
dCAhPSBwcmVjaXNpb25TdGFja1tsZXZlbF0tPmVuZCgpKSB7CiAgICAgICAgICAgICAgICAgcHJl
YyA9ICgqaXQpLnNlY29uZDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
QEAgLTM3NywxMyArMzY1LDE4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHByZWM7CiAgICAg
fQogCi1wcm90ZWN0ZWQ6ICAgIAorcHJpdmF0ZToKICAgICBpbnQgY3VycmVudExldmVsKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pih0YWJsZS5zaXplKCkpIC0gMTsgfQogCi0gICAg
c3RkOjp2ZWN0b3I8VFN5bWJvbFRhYmxlTGV2ZWwqPiB0YWJsZTsKLSAgICB0eXBlZGVmIHN0ZDo6
bWFwPCBUQmFzaWNUeXBlLCBUUHJlY2lzaW9uID4gUHJlY2lzaW9uU3RhY2tMZXZlbDsKLSAgICBz
dGQ6OnZlY3RvcjwgUHJlY2lzaW9uU3RhY2tMZXZlbCA+IHByZWNpc2lvblN0YWNrOworICAgIGJv
b2wgc3VwcG9ydHNQcmVjaXNpb24oVEJhc2ljVHlwZSB0eXBlKSB7CisgICAgICAvLyBPbmx5IHN1
cHBvcnRzIHByZWNpc2lvbiBmb3IgaW50LCBmbG9hdCwgYW5kIHNhbXBsZXIgdHlwZXMuCisgICAg
ICByZXR1cm4gdHlwZSA9PSBFYnRGbG9hdCB8fCB0eXBlID09IEVidEludCB8fCBJc1NhbXBsZXIo
dHlwZSk7CisgICAgfQorCiAgICAgaW50IHVuaXF1ZUlkOyAgICAgLy8gZm9yIHVuaXF1ZSBpZGVu
dGlmaWNhdGlvbiBpbiBjb2RlIGdlbmVyYXRpb24KKyAgICBzdGQ6OnZlY3RvcjxUU3ltYm9sVGFi
bGVMZXZlbCo+IHRhYmxlOworICAgIHR5cGVkZWYgVE1hcDxUQmFzaWNUeXBlLCBUUHJlY2lzaW9u
PiBQcmVjaXNpb25TdGFja0xldmVsOworICAgIHN0ZDo6dmVjdG9yPFByZWNpc2lvblN0YWNrTGV2
ZWwqPiBwcmVjaXNpb25TdGFjazsKIH07CiAKICNlbmRpZiAvLyBfU1lNQk9MX1RBQkxFX0lOQ0xV
REVEXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1R5cGVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1R5cGVz
LmgJKHJldmlzaW9uIDE1OTA5MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9UeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENvcHly
aWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0xOSw3ICsxOSw3IEBAIGNsYXNzIFRUeXBlOwog
Y2xhc3MgVEZpZWxkCiB7CiBwdWJsaWM6Ci0gICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShH
bG9iYWxQb29sQWxsb2NhdG9yKTsKKyAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKCk7CiAg
ICAgVEZpZWxkKFRUeXBlKiB0eXBlLCBUU3RyaW5nKiBuYW1lKSA6IG1UeXBlKHR5cGUpLCBtTmFt
ZShuYW1lKSB7fQogCiAgICAgLy8gVE9ETyhhbG9rcCk6IFdlIHNob3VsZCBvbmx5IHJldHVybiBj
b25zdCB0eXBlLgpAQCAtMzgsMTQgKzM4LDE0IEBAIHByaXZhdGU6CiB0eXBlZGVmIFRWZWN0b3I8
VEZpZWxkKj4gVEZpZWxkTGlzdDsKIGlubGluZSBURmllbGRMaXN0KiBOZXdQb29sVEZpZWxkTGlz
dCgpCiB7Ci0gICAgdm9pZCogbWVtb3J5ID0gR2xvYmFsUG9vbEFsbG9jYXRvci5hbGxvY2F0ZShz
aXplb2YoVEZpZWxkTGlzdCkpOworICAgIHZvaWQqIG1lbW9yeSA9IEdldEdsb2JhbFBvb2xBbGxv
Y2F0b3IoKS0+YWxsb2NhdGUoc2l6ZW9mKFRGaWVsZExpc3QpKTsKICAgICByZXR1cm4gbmV3KG1l
bW9yeSkgVEZpZWxkTGlzdDsKIH0KIAogY2xhc3MgVFN0cnVjdHVyZQogewogcHVibGljOgotICAg
IFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xvYmFsUG9vbEFsbG9jYXRvcik7CisgICAgUE9P
TF9BTExPQ0FUT1JfTkVXX0RFTEVURSgpOwogICAgIFRTdHJ1Y3R1cmUoVFN0cmluZyogbmFtZSwg
VEZpZWxkTGlzdCogZmllbGRzKQogICAgICAgICA6IG1OYW1lKG5hbWUpLAogICAgICAgICAgIG1G
aWVsZHMoZmllbGRzKSwKQEAgLTkzLDkgKzkzLDkgQEAgcHJpdmF0ZToKIGNsYXNzIFRUeXBlCiB7
CiBwdWJsaWM6Ci0gICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxsb2Nh
dG9yKQorICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoKTsKICAgICBUVHlwZSgpIHt9Ci0g
ICAgVFR5cGUoVEJhc2ljVHlwZSB0LCBUUHJlY2lzaW9uIHAsIFRRdWFsaWZpZXIgcSA9IEV2cVRl
bXBvcmFyeSwgaW50IHMgPSAxLCBib29sIG0gPSBmYWxzZSwgYm9vbCBhID0gZmFsc2UpIDoKKyAg
ICBUVHlwZShUQmFzaWNUeXBlIHQsIFRQcmVjaXNpb24gcCwgVFF1YWxpZmllciBxID0gRXZxVGVt
cG9yYXJ5LCB1bnNpZ25lZCBjaGFyIHMgPSAxLCBib29sIG0gPSBmYWxzZSwgYm9vbCBhID0gZmFs
c2UpIDoKICAgICAgICAgICAgIHR5cGUodCksIHByZWNpc2lvbihwKSwgcXVhbGlmaWVyKHEpLCBz
aXplKHMpLCBtYXRyaXgobSksIGFycmF5KGEpLCBhcnJheVNpemUoMCksIHN0cnVjdHVyZSgwKQog
ICAgIHsKICAgICB9CkBAIC0xMTYsNyArMTE2LDcgQEAgcHVibGljOgogCiAgICAgLy8gT25lLWRp
bWVuc2lvbmFsIHNpemUgb2Ygc2luZ2xlIGluc3RhbmNlIHR5cGUKICAgICBpbnQgZ2V0Tm9taW5h
bFNpemUoKSBjb25zdCB7IHJldHVybiBzaXplOyB9Ci0gICAgdm9pZCBzZXROb21pbmFsU2l6ZShp
bnQgcykgeyBzaXplID0gczsgfQorICAgIHZvaWQgc2V0Tm9taW5hbFNpemUodW5zaWduZWQgY2hh
ciBzKSB7IHNpemUgPSBzOyB9CiAgICAgLy8gRnVsbCBzaXplIG9mIHNpbmdsZSBpbnN0YW5jZSBv
ZiB0eXBlCiAgICAgc2l6ZV90IGdldE9iamVjdFNpemUoKSBjb25zdDsKIApAQCAtMjM0LDE4ICsy
MzQsMTIgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBUU3RyaW5nIGJ1aWxkTWFuZ2xlZE5hbWUo
KSBjb25zdDsKIAotI2lmZGVmIF9fR05VQ19fCiAgICAgVEJhc2ljVHlwZSB0eXBlOwogICAgIFRQ
cmVjaXNpb24gcHJlY2lzaW9uOwogICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyOwotI2Vsc2UKLSAg
ICBUQmFzaWNUeXBlIHR5cGUgICAgICA6IDY7Ci0gICAgVFByZWNpc2lvbiBwcmVjaXNpb247Ci0g
ICAgVFF1YWxpZmllciBxdWFsaWZpZXIgOiA3OwotI2VuZGlmCi0gICAgaW50IHNpemUgICAgICAg
ICAgICAgOiA4OyAvLyBzaXplIG9mIHZlY3RvciBvciBtYXRyaXgsIG5vdCBzaXplIG9mIGFycmF5
Ci0gICAgdW5zaWduZWQgaW50IG1hdHJpeCAgOiAxOwotICAgIHVuc2lnbmVkIGludCBhcnJheSAg
IDogMTsKKyAgICB1bnNpZ25lZCBjaGFyIHNpemU7CisgICAgYm9vbCBtYXRyaXg7CisgICAgYm9v
bCBhcnJheTsKICAgICBpbnQgYXJyYXlTaXplOwogCiAgICAgVFN0cnVjdHVyZSogc3RydWN0dXJl
OyAgICAgIC8vIDAgdW5sZXNzIHRoaXMgaXMgYSBzdHJ1Y3QKQEAgLTI2Nyw3ICsyNjEsNyBAQCBz
dHJ1Y3QgVFB1YmxpY1R5cGUKICAgICBUQmFzaWNUeXBlIHR5cGU7CiAgICAgVFF1YWxpZmllciBx
dWFsaWZpZXI7CiAgICAgVFByZWNpc2lvbiBwcmVjaXNpb247Ci0gICAgaW50IHNpemU7ICAgICAg
ICAgIC8vIHNpemUgb2YgdmVjdG9yIG9yIG1hdHJpeCwgbm90IHNpemUgb2YgYXJyYXkKKyAgICB1
bnNpZ25lZCBjaGFyIHNpemU7ICAgICAgICAgIC8vIHNpemUgb2YgdmVjdG9yIG9yIG1hdHJpeCwg
bm90IHNpemUgb2YgYXJyYXkKICAgICBib29sIG1hdHJpeDsKICAgICBib29sIGFycmF5OwogICAg
IGludCBhcnJheVNpemU7CkBAIC0yODcsNyArMjgxLDcgQEAgc3RydWN0IFRQdWJsaWNUeXBlCiAg
ICAgICAgIGxpbmUgPSBsbjsKICAgICB9CiAKLSAgICB2b2lkIHNldEFnZ3JlZ2F0ZShpbnQgcywg
Ym9vbCBtID0gZmFsc2UpCisgICAgdm9pZCBzZXRBZ2dyZWdhdGUodW5zaWduZWQgY2hhciBzLCBi
b29sIG0gPSBmYWxzZSkKICAgICB7CiAgICAgICAgIHNpemUgPSBzOwogICAgICAgICBtYXRyaXgg
PSBtOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1VuZm9sZFNo
b3J0Q2lyY3VpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL1VuZm9sZFNob3J0Q2lyY3VpdC5jcHAJKHJldmlzaW9uIDE1OTA5MCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9VbmZvbGRTaG9ydENpcmN1aXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSwxNCBAQCBib29sIFVuZm9sZFNob3J0Q2lyY3Vp
dDo6dmlzaXRCaW5hcnkoVmlzCiB7CiAgICAgVEluZm9TaW5rQmFzZSAmb3V0ID0gbU91dHB1dEhM
U0wtPmdldEJvZHlTdHJlYW0oKTsKIAorICAgIC8vIElmIG91ciByaWdodCBub2RlIGRvZXNuJ3Qg
aGF2ZSBzaWRlIGVmZmVjdHMsIHdlIGtub3cgd2UgZG9uJ3QgbmVlZCB0byB1bmZvbGQgdGhpcwor
ICAgIC8vIGV4cHJlc3Npb246IHRoZXJlIHdpbGwgYmUgbm8gc2hvcnQtY2lyY3VpdGluZyBzaWRl
IGVmZmVjdHMgdG8gYXZvaWQKKyAgICAvLyAobm90ZTogdW5mb2xkaW5nIGRvZXNuJ3QgZGVwZW5k
IG9uIHRoZSBsZWZ0IG5vZGUgLS0gaXQgd2lsbCBhbHdheXMgYmUgZXZhbHVhdGVkKQorICAgIGlm
ICghbm9kZS0+Z2V0UmlnaHQoKS0+aGFzU2lkZUVmZmVjdHMoKSkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKwogICAgIHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkKICAgICB7CiAg
ICAgICBjYXNlIEVPcExvZ2ljYWxPcjoKQEAgLTQ5LDcgKzU3LDcgQEAgYm9vbCBVbmZvbGRTaG9y
dENpcmN1aXQ6OnZpc2l0QmluYXJ5KFZpcwogICAgICAgICAgICAgbVRlbXBvcmFyeUluZGV4ID0g
aSArIDE7CiAgICAgICAgICAgICBub2RlLT5nZXRMZWZ0KCktPnRyYXZlcnNlKG1PdXRwdXRITFNM
KTsKICAgICAgICAgICAgIG91dCA8PCAiO1xuIjsKLSAgICAgICAgICAgIG91dCA8PCAiaWYoIXMi
IDw8IGkgPDwgIilcbiIKKyAgICAgICAgICAgIG91dCA8PCAiaWYgKCFzIiA8PCBpIDw8ICIpXG4i
CiAgICAgICAgICAgICAgICAgICAgIntcbiI7CiAgICAgICAgICAgICBtVGVtcG9yYXJ5SW5kZXgg
PSBpICsgMTsKICAgICAgICAgICAgIG5vZGUtPmdldFJpZ2h0KCktPnRyYXZlcnNlKHRoaXMpOwpA
QCAtODAsNyArODgsNyBAQCBib29sIFVuZm9sZFNob3J0Q2lyY3VpdDo6dmlzaXRCaW5hcnkoVmlz
CiAgICAgICAgICAgICBtVGVtcG9yYXJ5SW5kZXggPSBpICsgMTsKICAgICAgICAgICAgIG5vZGUt
PmdldExlZnQoKS0+dHJhdmVyc2UobU91dHB1dEhMU0wpOwogICAgICAgICAgICAgb3V0IDw8ICI7
XG4iOwotICAgICAgICAgICAgb3V0IDw8ICJpZihzIiA8PCBpIDw8ICIpXG4iCisgICAgICAgICAg
ICBvdXQgPDwgImlmIChzIiA8PCBpIDw8ICIpXG4iCiAgICAgICAgICAgICAgICAgICAgIntcbiI7
CiAgICAgICAgICAgICBtVGVtcG9yYXJ5SW5kZXggPSBpICsgMTsKICAgICAgICAgICAgIG5vZGUt
PmdldFJpZ2h0KCktPnRyYXZlcnNlKHRoaXMpOwpAQCAtMTE1LDcgKzEyMyw3IEBAIGJvb2wgVW5m
b2xkU2hvcnRDaXJjdWl0Ojp2aXNpdFNlbGVjdGlvbigKIAogICAgICAgICBtVGVtcG9yYXJ5SW5k
ZXggPSBpICsgMTsKICAgICAgICAgbm9kZS0+Z2V0Q29uZGl0aW9uKCktPnRyYXZlcnNlKHRoaXMp
OwotICAgICAgICBvdXQgPDwgImlmKCI7CisgICAgICAgIG91dCA8PCAiaWYgKCI7CiAgICAgICAg
IG1UZW1wb3JhcnlJbmRleCA9IGkgKyAxOwogICAgICAgICBub2RlLT5nZXRDb25kaXRpb24oKS0+
dHJhdmVyc2UobU91dHB1dEhMU0wpOwogICAgICAgICBvdXQgPDwgIilcbiIKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9VbmZvbGRTaG9ydENpcmN1aXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVW5mb2xkU2hv
cnRDaXJjdWl0LmgJKHJldmlzaW9uIDE1OTA5MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9VbmZvbGRTaG9ydENpcmN1aXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTAs
NyArMTAsNyBAQAogI2RlZmluZSBDT01QSUxFUl9VTkZPTERTSE9SVENJUkNVSVRfSF8KIAogI2lu
Y2x1ZGUgImNvbXBpbGVyL2ludGVybWVkaWF0ZS5oIgotI2luY2x1ZGUgImNvbXBpbGVyL1BhcnNl
SGVscGVyLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvUGFyc2VDb250ZXh0LmgiCiAKIG5hbWVzcGFj
ZSBzaAogewpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1VuZm9s
ZFNob3J0Q2lyY3VpdEFTVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL1VuZm9sZFNob3J0Q2lyY3VpdEFTVC5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVW5mb2xkU2hvcnRDaXJjdWl0
QVNULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgxIEBACisvLworLy8gQ29weXJpZ2h0
IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworCisjaW5jbHVkZSAiY29tcGlsZXIvVW5mb2xkU2hvcnRDaXJjdWl0QVNULmgiCisKK25hbWVz
cGFjZQoreworCisvLyAieCB8fCB5IiBpcyBlcXVpdmFsZW50IHRvICJ4ID8gdHJ1ZSA6IHkiLgor
VEludGVybVNlbGVjdGlvbiAqVW5mb2xkT1IoVEludGVybVR5cGVkICp4LCBUSW50ZXJtVHlwZWQg
KnkpCit7CisgICAgY29uc3QgVFR5cGUgYm9vbFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkKTsK
KyAgICBDb25zdGFudFVuaW9uICp1ID0gbmV3IENvbnN0YW50VW5pb247CisgICAgdS0+c2V0QkNv
bnN0KHRydWUpOworICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICp0cnVlTm9kZSA9IG5ldyBUSW50
ZXJtQ29uc3RhbnRVbmlvbigKKyAgICAgICAgdSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVk
LCBFdnFDb25zdCwgMSkpOworICAgIHJldHVybiBuZXcgVEludGVybVNlbGVjdGlvbih4LCB0cnVl
Tm9kZSwgeSwgYm9vbFR5cGUpOworfQorCisvLyAieCAmJiB5IiBpcyBlcXVpdmFsZW50IHRvICJ4
ID8geSA6IGZhbHNlIi4KK1RJbnRlcm1TZWxlY3Rpb24gKlVuZm9sZEFORChUSW50ZXJtVHlwZWQg
KngsIFRJbnRlcm1UeXBlZCAqeSkKK3sKKyAgICBjb25zdCBUVHlwZSBib29sVHlwZShFYnRCb29s
LCBFYnBVbmRlZmluZWQpOworICAgIENvbnN0YW50VW5pb24gKnUgPSBuZXcgQ29uc3RhbnRVbmlv
bjsKKyAgICB1LT5zZXRCQ29uc3QoZmFsc2UpOworICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpm
YWxzZU5vZGUgPSBuZXcgVEludGVybUNvbnN0YW50VW5pb24oCisgICAgICAgIHUsIFRUeXBlKEVi
dEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QsIDEpKTsKKyAgICByZXR1cm4gbmV3IFRJbnRl
cm1TZWxlY3Rpb24oeCwgeSwgZmFsc2VOb2RlLCBib29sVHlwZSk7Cit9CisKK30gIC8vIG5hbWVz
cGFjZSBhbm9ueW1vdXMKKworYm9vbCBVbmZvbGRTaG9ydENpcmN1aXRBU1Q6OnZpc2l0QmluYXJ5
KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5ICpub2RlKQoreworICAgIFRJbnRlcm1TZWxlY3Rp
b24gKnJlcGxhY2VtZW50ID0gTlVMTDsKKworICAgIHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkKKyAg
ICB7CisgICAgICBjYXNlIEVPcExvZ2ljYWxPcjoKKyAgICAgICAgcmVwbGFjZW1lbnQgPSBVbmZv
bGRPUihub2RlLT5nZXRMZWZ0KCksIG5vZGUtPmdldFJpZ2h0KCkpOworICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgRU9wTG9naWNhbEFuZDoKKyAgICAgICAgcmVwbGFjZW1lbnQgPSBVbmZvbGRB
TkQobm9kZS0+Z2V0TGVmdCgpLCBub2RlLT5nZXRSaWdodCgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKHJlcGxhY2VtZW50
KQorICAgIHsKKyAgICAgICAgcmVwbGFjZW1lbnRzLnB1c2hfYmFjaygKKyAgICAgICAgICAgIE5v
ZGVVcGRhdGVFbnRyeShnZXRQYXJlbnROb2RlKCksIG5vZGUsIHJlcGxhY2VtZW50KSk7CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFVuZm9sZFNob3J0Q2lyY3VpdEFTVDo6dXBk
YXRlVHJlZSgpCit7CisgICAgZm9yIChzaXplX3QgaWkgPSAwOyBpaSA8IHJlcGxhY2VtZW50cy5z
aXplKCk7ICsraWkpCisgICAgeworICAgICAgICBjb25zdCBOb2RlVXBkYXRlRW50cnkmIGVudHJ5
ID0gcmVwbGFjZW1lbnRzW2lpXTsKKyAgICAgICAgQVNTRVJUKGVudHJ5LnBhcmVudCk7CisgICAg
ICAgIGJvb2wgcmVwbGFjZWQgPSBlbnRyeS5wYXJlbnQtPnJlcGxhY2VDaGlsZE5vZGUoCisgICAg
ICAgICAgICBlbnRyeS5vcmlnaW5hbCwgZW50cnkucmVwbGFjZW1lbnQpOworICAgICAgICBBU1NF
UlQocmVwbGFjZWQpOworCisgICAgICAgIC8vIEluIEFTVCB0cmF2ZXJzaW5nLCBhIHBhcmVudCBp
cyB2aXNpdGVkIGJlZm9yZSBpdHMgY2hpbGRyZW4uCisgICAgICAgIC8vIEFmdGVyIHdlIHJlcGxh
Y2UgYSBub2RlLCBpZiBhbiBpbW1lZGlhdGUgY2hpbGQgaXMgdG8KKyAgICAgICAgLy8gYmUgcmVw
bGFjZWQsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGRvbid0IHVwZGF0ZSB0aGUgcmVwbGFjZWQK
KwkvLyBub2RlOyBpbnN0ZWFkLCB3ZSB1cGRhdGUgdGhlIHJlcGxhY2VtZW50IG5vZGUuCisgICAg
ICAgIGZvciAoc2l6ZV90IGpqID0gaWkgKyAxOyBqaiA8IHJlcGxhY2VtZW50cy5zaXplKCk7ICsr
amopCisgICAgICAgIHsKKyAgICAgICAgICAgIE5vZGVVcGRhdGVFbnRyeSYgZW50cnkyID0gcmVw
bGFjZW1lbnRzW2pqXTsKKyAgICAgICAgICAgIGlmIChlbnRyeTIucGFyZW50ID09IGVudHJ5Lm9y
aWdpbmFsKQorICAgICAgICAgICAgICAgIGVudHJ5Mi5wYXJlbnQgPSBlbnRyeS5yZXBsYWNlbWVu
dDsKKyAgICAgICAgfQorICAgIH0KK30KKwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL1VuZm9sZFNob3J0Q2lyY3VpdEFTVC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9VbmZvbGRTaG9ydENpcmN1aXRBU1QuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9VbmZv
bGRTaG9ydENpcmN1aXRBU1QuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisvLwor
Ly8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworLy8gVW5mb2xkU2hvcnRDaXJjdWl0QVNUIGlzIGFuIEFTVCB0cmF2ZXJz
ZXIgdG8gcmVwbGFjZSBzaG9ydC1jaXJjdWl0aW5nCisvLyBvcGVyYXRpb25zIHdpdGggdGVybmFy
eSBvcGVyYXRpb25zLgorLy8KKworI2lmbmRlZiBDT01QSUxFUl9VTkZPTERfU0hPUlRfQ0lSQ1VJ
VF9BU1RfSF8KKyNkZWZpbmUgQ09NUElMRVJfVU5GT0xEX1NIT1JUX0NJUkNVSVRfQVNUX0hfCisK
KyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorI2luY2x1ZGUgImNvbXBpbGVyL2ludGVy
bWVkaWF0ZS5oIgorCisvLyBUaGlzIHRyYXZlcnNlciBpZGVudGlmaWVzIGFsbCB0aGUgc2hvcnQg
Y2lyY3VpdCBiaW5hcnkgIG5vZGVzIHRoYXQgbmVlZCB0bworLy8gYmUgcmVwbGFjZWQsIGFuZCBj
cmVhdGVzIHRoZSBjb3JyZXNwb25kaW5nIHJlcGxhY2VtZW50IG5vZGVzLiBIb3dldmVyLAorLy8g
dGhlIGFjdHVhbCByZXBsYWNlbWVudHMgaGFwcGVuIGFmdGVyIHRoZSB0cmF2ZXJzZSB0aHJvdWdo
IHVwZGF0ZVRyZWUoKS4KKworY2xhc3MgVW5mb2xkU2hvcnRDaXJjdWl0QVNUIDogcHVibGljIFRJ
bnRlcm1UcmF2ZXJzZXIKK3sKKyAgcHVibGljOgorICAgIFVuZm9sZFNob3J0Q2lyY3VpdEFTVCgp
IHsgfQorCisgICAgdmlydHVhbCBib29sIHZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJt
QmluYXJ5ICopOworCisgICAgdm9pZCB1cGRhdGVUcmVlKCk7CisKKyAgcHJpdmF0ZToKKyAgICBz
dHJ1Y3QgTm9kZVVwZGF0ZUVudHJ5CisgICAgeworICAgICAgICBOb2RlVXBkYXRlRW50cnkoVElu
dGVybU5vZGUgKl9wYXJlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtTm9kZSAq
X29yaWdpbmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybU5vZGUgKl9yZXBsYWNl
bWVudCkKKyAgICAgICAgICAgIDogcGFyZW50KF9wYXJlbnQpLAorICAgICAgICAgICAgICBvcmln
aW5hbChfb3JpZ2luYWwpLAorICAgICAgICAgICAgICByZXBsYWNlbWVudChfcmVwbGFjZW1lbnQp
IHt9CisKKyAgICAgICAgVEludGVybU5vZGUgKnBhcmVudDsKKyAgICAgICAgVEludGVybU5vZGUg
Km9yaWdpbmFsOworICAgICAgICBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQ7CisgICAgfTsKKwor
ICAgIC8vIER1cmluZyB0cmF2ZXJzaW5nLCBzYXZlIGFsbCB0aGUgcmVwbGFjZW1lbnRzIHRoYXQg
bmVlZCB0byBoYXBwZW47CisgICAgLy8gdGhlbiByZXBsYWNlIHRoZW0gYnkgY2FsbGluZyB1cGRh
dGVOb2RlcygpLgorICAgIHN0ZDo6dmVjdG9yPE5vZGVVcGRhdGVFbnRyeT4gcmVwbGFjZW1lbnRz
OworCisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFVuZm9sZFNob3J0Q2lyY3VpdEFTVCk7
Cit9OworCisjZW5kaWYgIC8vIENPTVBJTEVSX1VORk9MRF9TSE9SVF9DSVJDVUlUX0FTVF9IXwpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1VuaWZvcm0uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Vbmlmb3Jt
LmNwcAkocmV2aXNpb24gMTU5MDkwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL1VuaWZvcm0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIxICsxLDIxIEBACi0vLw0K
LS8vIENvcHlyaWdodCAoYykgMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLg0KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLg0KLS8vDQotDQotI2luY2x1ZGUgImNvbXBpbGVyL1VuaWZvcm0uaCINCi0NCi1uYW1l
c3BhY2Ugc2gNCi17DQotDQotVW5pZm9ybTo6VW5pZm9ybShHTGVudW0gdHlwZSwgR0xlbnVtIHBy
ZWNpc2lvbiwgY29uc3QgY2hhciAqbmFtZSwgaW50IGFycmF5U2l6ZSwgaW50IHJlZ2lzdGVySW5k
ZXgpDQotew0KLSAgICB0aGlzLT50eXBlID0gdHlwZTsNCi0gICAgdGhpcy0+cHJlY2lzaW9uID0g
cHJlY2lzaW9uOw0KLSAgICB0aGlzLT5uYW1lID0gbmFtZTsNCi0gICAgdGhpcy0+YXJyYXlTaXpl
ID0gYXJyYXlTaXplOw0KLSAgICB0aGlzLT5yZWdpc3RlckluZGV4ID0gcmVnaXN0ZXJJbmRleDsN
Ci19DQotDQotfQ0KKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAiY29tcGlsZXIvVW5pZm9ybS5o
IgorCituYW1lc3BhY2Ugc2gKK3sKKworVW5pZm9ybTo6VW5pZm9ybShHTGVudW0gdHlwZSwgR0xl
bnVtIHByZWNpc2lvbiwgY29uc3QgY2hhciAqbmFtZSwgaW50IGFycmF5U2l6ZSwgaW50IHJlZ2lz
dGVySW5kZXgpCit7CisgICAgdGhpcy0+dHlwZSA9IHR5cGU7CisgICAgdGhpcy0+cHJlY2lzaW9u
ID0gcHJlY2lzaW9uOworICAgIHRoaXMtPm5hbWUgPSBuYW1lOworICAgIHRoaXMtPmFycmF5U2l6
ZSA9IGFycmF5U2l6ZTsKKyAgICB0aGlzLT5yZWdpc3RlckluZGV4ID0gcmVnaXN0ZXJJbmRleDsK
K30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1VuaWZv
cm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
VW5pZm9ybS5oCShyZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvVW5pZm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM1ICsxLDM1IEBACi0v
Lw0KLS8vIENvcHlyaWdodCAoYykgMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLg0KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCi0vLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLg0KLS8vDQotDQotI2lmbmRlZiBDT01QSUxFUl9VTklGT1JNX0hfDQotI2RlZmlu
ZSBDT01QSUxFUl9VTklGT1JNX0hfDQotDQotI2luY2x1ZGUgPHN0cmluZz4NCi0jaW5jbHVkZSA8
dmVjdG9yPg0KLQ0KLSNkZWZpbmUgR0xfQVBJQ0FMTA0KLSNpbmNsdWRlIDxHTEVTMi9nbDIuaD4N
Ci0NCi1uYW1lc3BhY2Ugc2gNCi17DQotDQotc3RydWN0IFVuaWZvcm0NCi17DQotICAgIFVuaWZv
cm0oR0xlbnVtIHR5cGUsIEdMZW51bSBwcmVjaXNpb24sIGNvbnN0IGNoYXIgKm5hbWUsIGludCBh
cnJheVNpemUsIGludCByZWdpc3RlckluZGV4KTsNCi0NCi0gICAgR0xlbnVtIHR5cGU7DQotICAg
IEdMZW51bSBwcmVjaXNpb247DQotICAgIHN0ZDo6c3RyaW5nIG5hbWU7DQotICAgIHVuc2lnbmVk
IGludCBhcnJheVNpemU7DQotICAgIA0KLSAgICBpbnQgcmVnaXN0ZXJJbmRleDsNCi19Ow0KLQ0K
LXR5cGVkZWYgc3RkOjp2ZWN0b3I8VW5pZm9ybT4gQWN0aXZlVW5pZm9ybXM7DQotDQotfQ0KLQ0K
LSNlbmRpZiAgIC8vIENPTVBJTEVSX1VOSUZPUk1fSF8NCisvLworLy8gQ29weXJpZ2h0IChjKSAy
MDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2lmbmRl
ZiBDT01QSUxFUl9VTklGT1JNX0hfCisjZGVmaW5lIENPTVBJTEVSX1VOSUZPUk1fSF8KKworI2lu
Y2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNkZWZpbmUgR0xfQVBJQ0FMTAor
I2luY2x1ZGUgPEdMRVMyL2dsMi5oPgorCituYW1lc3BhY2Ugc2gKK3sKKworc3RydWN0IFVuaWZv
cm0KK3sKKyAgICBVbmlmb3JtKEdMZW51bSB0eXBlLCBHTGVudW0gcHJlY2lzaW9uLCBjb25zdCBj
aGFyICpuYW1lLCBpbnQgYXJyYXlTaXplLCBpbnQgcmVnaXN0ZXJJbmRleCk7CisKKyAgICBHTGVu
dW0gdHlwZTsKKyAgICBHTGVudW0gcHJlY2lzaW9uOworICAgIHN0ZDo6c3RyaW5nIG5hbWU7Cisg
ICAgdW5zaWduZWQgaW50IGFycmF5U2l6ZTsKKyAgICAKKyAgICBpbnQgcmVnaXN0ZXJJbmRleDsK
K307CisKK3R5cGVkZWYgc3RkOjp2ZWN0b3I8VW5pZm9ybT4gQWN0aXZlVW5pZm9ybXM7CisKK30K
KworI2VuZGlmICAgLy8gQ09NUElMRVJfVU5JRk9STV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL1ZhbGlkYXRlTGltaXRhdGlvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9WYWxpZGF0ZUxpbWl0YXRp
b25zLmNwcAkocmV2aXNpb24gMTU5MDkwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL1ZhbGlkYXRlTGltaXRhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03LDcg
KzcsNyBAQAogI2luY2x1ZGUgImNvbXBpbGVyL1ZhbGlkYXRlTGltaXRhdGlvbnMuaCIKICNpbmNs
dWRlICJjb21waWxlci9JbmZvU2luay5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0luaXRpYWxpemVQ
YXJzZUNvbnRleHQuaCIKLSNpbmNsdWRlICJjb21waWxlci9QYXJzZUhlbHBlci5oIgorI2luY2x1
ZGUgImNvbXBpbGVyL1BhcnNlQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgewogYm9vbCBJc0xvb3BJ
bmRleChjb25zdCBUSW50ZXJtU3ltYm9sKiBzeW1ib2wsIGNvbnN0IFRMb29wU3RhY2smIHN0YWNr
KSB7CkBAIC00MzUsNyArNDM1LDcgQEAgYm9vbCBWYWxpZGF0ZUxpbWl0YXRpb25zOjp2YWxpZGF0
ZUZ1bmN0aQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGJvb2wgdmFsaWQgPSB0cnVlOwot
ICAgIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSBHbG9iYWxQYXJzZUNvbnRleHQtPnN5bWJv
bFRhYmxlOworICAgIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSBHZXRHbG9iYWxQYXJzZUNv
bnRleHQoKS0+c3ltYm9sVGFibGU7CiAgICAgVFN5bWJvbCogc3ltYm9sID0gc3ltYm9sVGFibGUu
ZmluZChub2RlLT5nZXROYW1lKCkpOwogICAgIEFTU0VSVChzeW1ib2wgJiYgc3ltYm9sLT5pc0Z1
bmN0aW9uKCkpOwogICAgIFRGdW5jdGlvbiogZnVuY3Rpb24gPSBzdGF0aWNfY2FzdDxURnVuY3Rp
b24qPihzeW1ib2wpOwpAQCAtNDU3LDcgKzQ1Nyw3IEBAIGJvb2wgVmFsaWRhdGVMaW1pdGF0aW9u
czo6dmFsaWRhdGVGdW5jdGkKIGJvb2wgVmFsaWRhdGVMaW1pdGF0aW9uczo6dmFsaWRhdGVPcGVy
YXRpb24oVEludGVybU9wZXJhdG9yKiBub2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUSW50ZXJtTm9kZSogb3BlcmFuZCkgewogICAgIC8vIENoZWNrIGlm
IGxvb3AgaW5kZXggaXMgbW9kaWZpZWQgaW4gdGhlIGxvb3AgYm9keS4KLSAgICBpZiAoIXdpdGhp
bkxvb3BCb2R5KCkgfHwgIW5vZGUtPm1vZGlmaWVzU3RhdGUoKSkKKyAgICBpZiAoIXdpdGhpbkxv
b3BCb2R5KCkgfHwgIW5vZGUtPmlzQXNzaWdubWVudCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIGNvbnN0IFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IG9wZXJhbmQtPmdldEFzU3ltYm9s
Tm9kZSgpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1Zhcmlh
YmxlSW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL1ZhcmlhYmxlSW5mby5jcHAJKHJldmlzaW9uIDE1OTA5MCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9WYXJpYWJsZUluZm8uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02LDE1ICs2LDE3IEBACiAKICNpbmNsdWRlICJjb21waWxlci9WYXJpYWJsZUluZm8uaCIK
IAotc3RhdGljIFRTdHJpbmcgYXJyYXlCcmFja2V0cyhpbnQgaW5kZXgpCituYW1lc3BhY2Ugewor
CitUU3RyaW5nIGFycmF5QnJhY2tldHMoaW50IGluZGV4KQogewogICAgIFRTdHJpbmdTdHJlYW0g
c3RyZWFtOwogICAgIHN0cmVhbSA8PCAiWyIgPDwgaW5kZXggPDwgIl0iOwogICAgIHJldHVybiBz
dHJlYW0uc3RyKCk7CiB9CiAKLS8vIFJldHVybnMgdGhlIGRhdGEgdHlwZSBmb3IgYW4gYXR0cmli
dXRlIG9yIHVuaWZvcm0uCi1zdGF0aWMgU2hEYXRhVHlwZSBnZXRWYXJpYWJsZURhdGFUeXBlKGNv
bnN0IFRUeXBlJiB0eXBlKQorLy8gUmV0dXJucyB0aGUgZGF0YSB0eXBlIGZvciBhbiBhdHRyaWJ1
dGUsIHVuaWZvcm0sIG9yIHZhcnlpbmcuCitTaERhdGFUeXBlIGdldFZhcmlhYmxlRGF0YVR5cGUo
Y29uc3QgVFR5cGUmIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlLmdldEJhc2ljVHlwZSgpKSB7
CiAgICAgICBjYXNlIEVidEZsb2F0OgpAQCAtNzAsMjIgKzcyLDIyIEBAIHN0YXRpYyBTaERhdGFU
eXBlIGdldFZhcmlhYmxlRGF0YVR5cGUoY28KICAgICByZXR1cm4gU0hfTk9ORTsKIH0KIAotc3Rh
dGljIHZvaWQgZ2V0QnVpbHRJblZhcmlhYmxlSW5mbyhjb25zdCBUVHlwZSYgdHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyYgbmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyYgbWFwcGVkTmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFZhcmlhYmxlSW5mb0xpc3QmIGlu
Zm9MaXN0KTsKLXN0YXRpYyB2b2lkIGdldFVzZXJEZWZpbmVkVmFyaWFibGVJbmZvKGNvbnN0IFRU
eXBlJiB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFN0cmluZyYgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRTdHJpbmcmIG1hcHBlZE5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUVmFyaWFibGVJbmZvTGlzdCYgaW5mb0xpc3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTaEhhc2hGdW5jdGlvbjY0IGhhc2hGdW5jdGlvbik7Ci0KLS8v
IFJldHVybnMgaW5mbyBmb3IgYW4gYXR0cmlidXRlIG9yIHVuaWZvcm0uCi1zdGF0aWMgdm9pZCBn
ZXRWYXJpYWJsZUluZm8oY29uc3QgVFR5cGUmIHR5cGUsCit2b2lkIGdldEJ1aWx0SW5WYXJpYWJs
ZUluZm8oY29uc3QgVFR5cGUmIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVFN0cmluZyYgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3Ry
aW5nJiBtYXBwZWROYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRWYXJpYWJsZUlu
Zm9MaXN0JiBpbmZvTGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaEhhc2hGdW5j
dGlvbjY0IGhhc2hGdW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVmFyaWFi
bGVJbmZvTGlzdCYgaW5mb0xpc3QpOwordm9pZCBnZXRVc2VyRGVmaW5lZFZhcmlhYmxlSW5mbyhj
b25zdCBUVHlwZSYgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFN0cmluZyYgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0
cmluZyYgbWFwcGVkTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFZhcmlh
YmxlSW5mb0xpc3QmIGluZm9MaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
aEhhc2hGdW5jdGlvbjY0IGhhc2hGdW5jdGlvbik7CisKKy8vIFJldHVybnMgaW5mbyBmb3IgYW4g
YXR0cmlidXRlLCB1bmlmb3JtLCBvciB2YXJ5aW5nLgordm9pZCBnZXRWYXJpYWJsZUluZm8oY29u
c3QgVFR5cGUmIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nJiBuYW1l
LAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyYgbWFwcGVkTmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgIFRWYXJpYWJsZUluZm9MaXN0JiBpbmZvTGlzdCwKKyAgICAgICAgICAg
ICAgICAgICAgIFNoSGFzaEZ1bmN0aW9uNjQgaGFzaEZ1bmN0aW9uKQogewogICAgIGlmICh0eXBl
LmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkgewogICAgICAgICBpZiAodHlwZS5pc0FycmF5
KCkpIHsKQEAgLTExOSw2ICsxMjEsNyBAQCB2b2lkIGdldEJ1aWx0SW5WYXJpYWJsZUluZm8oY29u
c3QgVFR5cGUmCiAgICAgICAgIHZhckluZm8ubWFwcGVkTmFtZSA9IG1hcHBlZE5hbWUuY19zdHIo
KTsKICAgICAgICAgdmFySW5mby5zaXplID0gMTsKICAgICB9CisgICAgdmFySW5mby5wcmVjaXNp
b24gPSB0eXBlLmdldFByZWNpc2lvbigpOwogICAgIHZhckluZm8udHlwZSA9IGdldFZhcmlhYmxl
RGF0YVR5cGUodHlwZSk7CiAgICAgaW5mb0xpc3QucHVzaF9iYWNrKHZhckluZm8pOwogfQpAQCAt
MTQzLDc1ICsxNDYsMTQ0IEBAIHZvaWQgZ2V0VXNlckRlZmluZWRWYXJpYWJsZUluZm8oY29uc3Qg
VFQKICAgICB9CiB9CiAKK1RWYXJpYWJsZUluZm8qIGZpbmRWYXJpYWJsZShjb25zdCBUVHlwZSYg
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nJiBuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRWYXJpYWJsZUluZm9MaXN0JiBpbmZvTGlzdCkK
K3sKKyAgICAvLyBUT0RPKHptbyk6IG9wdGltaXplIHRoaXMgZnVuY3Rpb24uCisgICAgVFN0cmlu
ZyBteU5hbWUgPSBuYW1lOworICAgIGlmICh0eXBlLmlzQXJyYXkoKSkKKyAgICAgICAgbXlOYW1l
ICs9ICJbMF0iOworICAgIGZvciAoc2l6ZV90IGlpID0gMDsgaWkgPCBpbmZvTGlzdC5zaXplKCk7
ICsraWkpCisgICAgeworICAgICAgICBpZiAoaW5mb0xpc3RbaWldLm5hbWUuY19zdHIoKSA9PSBt
eU5hbWUpCisgICAgICAgICAgICByZXR1cm4gJihpbmZvTGlzdFtpaV0pOworICAgIH0KKyAgICBy
ZXR1cm4gTlVMTDsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFub255bW91cworCiBUVmFyaWFibGVJ
bmZvOjpUVmFyaWFibGVJbmZvKCkKKyAgICA6IHR5cGUoU0hfTk9ORSksCisgICAgICBzaXplKDAp
LAorICAgICAgcHJlY2lzaW9uKEVicFVuZGVmaW5lZCksCisgICAgICBzdGF0aWNVc2UoZmFsc2Up
CiB7CiB9CiAKIFRWYXJpYWJsZUluZm86OlRWYXJpYWJsZUluZm8oU2hEYXRhVHlwZSB0eXBlLCBp
bnQgc2l6ZSkKICAgICA6IHR5cGUodHlwZSksCi0gICAgICBzaXplKHNpemUpCisgICAgICBzaXpl
KHNpemUpLAorICAgICAgcHJlY2lzaW9uKEVicFVuZGVmaW5lZCksCisgICAgICBzdGF0aWNVc2Uo
ZmFsc2UpCiB7CiB9CiAKLUNvbGxlY3RBdHRyaWJzVW5pZm9ybXM6OkNvbGxlY3RBdHRyaWJzVW5p
Zm9ybXMoVFZhcmlhYmxlSW5mb0xpc3QmIGF0dHJpYnMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRWYXJpYWJsZUluZm9MaXN0JiB1bmlmb3JtcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hIYXNoRnVuY3Rp
b242NCBoYXNoRnVuY3Rpb24pCitDb2xsZWN0VmFyaWFibGVzOjpDb2xsZWN0VmFyaWFibGVzKFRW
YXJpYWJsZUluZm9MaXN0JiBhdHRyaWJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUVmFyaWFibGVJbmZvTGlzdCYgdW5pZm9ybXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRWYXJpYWJsZUluZm9MaXN0JiB2YXJ5aW5ncywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2hIYXNoRnVuY3Rpb242NCBoYXNoRnVuY3Rpb24pCiAgICAg
OiBtQXR0cmlicyhhdHRyaWJzKSwKICAgICAgIG1Vbmlmb3Jtcyh1bmlmb3JtcyksCisgICAgICBt
VmFyeWluZ3ModmFyeWluZ3MpLAorICAgICAgbVBvaW50Q29vcmRBZGRlZChmYWxzZSksCisgICAg
ICBtRnJvbnRGYWNpbmdBZGRlZChmYWxzZSksCisgICAgICBtRnJhZ0Nvb3JkQWRkZWQoZmFsc2Up
LAogICAgICAgbUhhc2hGdW5jdGlvbihoYXNoRnVuY3Rpb24pCiB7CiB9CiAKLS8vIFdlIGFyZSBv
bmx5IGludGVyZXN0ZWQgaW4gYXR0cmlidXRlIGFuZCB1bmlmb3JtIHZhcmlhYmxlIGRlY2xhcmF0
aW9uLgotdm9pZCBDb2xsZWN0QXR0cmlic1VuaWZvcm1zOjp2aXNpdFN5bWJvbChUSW50ZXJtU3lt
Ym9sKikKLXsKLX0KLQotdm9pZCBDb2xsZWN0QXR0cmlic1VuaWZvcm1zOjp2aXNpdENvbnN0YW50
VW5pb24oVEludGVybUNvbnN0YW50VW5pb24qKQotewotfQotCi1ib29sIENvbGxlY3RBdHRyaWJz
VW5pZm9ybXM6OnZpc2l0QmluYXJ5KFZpc2l0LCBUSW50ZXJtQmluYXJ5KikKLXsKLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLWJvb2wgQ29sbGVjdEF0dHJpYnNVbmlmb3Jtczo6dmlzaXRVbmFyeShW
aXNpdCwgVEludGVybVVuYXJ5KikKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgQ29s
bGVjdEF0dHJpYnNVbmlmb3Jtczo6dmlzaXRTZWxlY3Rpb24oVmlzaXQsIFRJbnRlcm1TZWxlY3Rp
b24qKQotewotICAgIHJldHVybiBmYWxzZTsKKy8vIFdlIHdhbnQgdG8gY2hlY2sgd2hldGhlciBh
IHVuaWZvcm0vdmFyeWluZyBpcyBzdGF0aWNhbGx5IHVzZWQKKy8vIGJlY2F1c2Ugd2Ugb25seSBj
b3VudCB0aGUgdXNlZCBvbmVzIGluIHBhY2tpbmcgY29tcHV0aW5nLgorLy8gQWxzbywgZ2xfRnJh
Z0Nvb3JkLCBnbF9Qb2ludENvb3JkLCBhbmQgZ2xfRnJvbnRGYWNpbmcgY291bnQKKy8vIHRvd2Fy
ZCB2YXJ5aW5nIGNvdW50aW5nIGlmIHRoZXkgYXJlIHN0YXRpY2FsbHkgdXNlZCBpbiBhIGZyYWdt
ZW50CisvLyBzaGFkZXIuCit2b2lkIENvbGxlY3RWYXJpYWJsZXM6OnZpc2l0U3ltYm9sKFRJbnRl
cm1TeW1ib2wqIHN5bWJvbCkKK3sKKyAgICBBU1NFUlQoc3ltYm9sICE9IE5VTEwpOworICAgIFRW
YXJpYWJsZUluZm8qIHZhciA9IE5VTEw7CisgICAgc3dpdGNoIChzeW1ib2wtPmdldFF1YWxpZmll
cigpKQorICAgIHsKKyAgICBjYXNlIEV2cVZhcnlpbmdPdXQ6CisgICAgY2FzZSBFdnFJbnZhcmlh
bnRWYXJ5aW5nT3V0OgorICAgIGNhc2UgRXZxVmFyeWluZ0luOgorICAgIGNhc2UgRXZxSW52YXJp
YW50VmFyeWluZ0luOgorICAgICAgICB2YXIgPSBmaW5kVmFyaWFibGUoc3ltYm9sLT5nZXRUeXBl
KCksIHN5bWJvbC0+Z2V0U3ltYm9sKCksIG1WYXJ5aW5ncyk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgRXZxVW5pZm9ybToKKyAgICAgICAgdmFyID0gZmluZFZhcmlhYmxlKHN5bWJvbC0+Z2V0
VHlwZSgpLCBzeW1ib2wtPmdldFN5bWJvbCgpLCBtVW5pZm9ybXMpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEV2cUZyYWdDb29yZDoKKyAgICAgICAgaWYgKCFtRnJhZ0Nvb3JkQWRkZWQpIHsK
KyAgICAgICAgICAgIFRWYXJpYWJsZUluZm8gaW5mbzsKKyAgICAgICAgICAgIGluZm8ubmFtZSA9
ICJnbF9GcmFnQ29vcmQiOworICAgICAgICAgICAgaW5mby5tYXBwZWROYW1lID0gImdsX0ZyYWdD
b29yZCI7CisgICAgICAgICAgICBpbmZvLnR5cGUgPSBTSF9GTE9BVF9WRUM0OworICAgICAgICAg
ICAgaW5mby5zaXplID0gMTsKKyAgICAgICAgICAgIGluZm8ucHJlY2lzaW9uID0gRWJwTWVkaXVt
OyAgLy8gVXNlIG1lZGl1bXAgYXMgaXQgZG9lc24ndCByZWFsbHkgbWF0dGVyLgorICAgICAgICAg
ICAgaW5mby5zdGF0aWNVc2UgPSB0cnVlOworCSAgICBtVmFyeWluZ3MucHVzaF9iYWNrKGluZm8p
OworICAgICAgICAgICAgbUZyYWdDb29yZEFkZGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBFdnFGcm9udEZhY2luZzoKKyAgICAgICAgaWYgKCFtRnJvbnRG
YWNpbmdBZGRlZCkgeworICAgICAgICAgICAgVFZhcmlhYmxlSW5mbyBpbmZvOworICAgICAgICAg
ICAgaW5mby5uYW1lID0gImdsX0Zyb250RmFjaW5nIjsKKyAgICAgICAgICAgIGluZm8ubWFwcGVk
TmFtZSA9ICJnbF9Gcm9udEZhY2luZyI7CisgICAgICAgICAgICBpbmZvLnR5cGUgPSBTSF9CT09M
OworICAgICAgICAgICAgaW5mby5zaXplID0gMTsKKyAgICAgICAgICAgIGluZm8ucHJlY2lzaW9u
ID0gRWJwVW5kZWZpbmVkOworICAgICAgICAgICAgaW5mby5zdGF0aWNVc2UgPSB0cnVlOworCSAg
ICBtVmFyeWluZ3MucHVzaF9iYWNrKGluZm8pOworICAgICAgICAgICAgbUZyb250RmFjaW5nQWRk
ZWQgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEV2cVBvaW50
Q29vcmQ6CisgICAgICAgIGlmICghbVBvaW50Q29vcmRBZGRlZCkgeworICAgICAgICAgICAgVFZh
cmlhYmxlSW5mbyBpbmZvOworICAgICAgICAgICAgaW5mby5uYW1lID0gImdsX1BvaW50Q29vcmQi
OworICAgICAgICAgICAgaW5mby5tYXBwZWROYW1lID0gImdsX1BvaW50Q29vcmQiOworICAgICAg
ICAgICAgaW5mby50eXBlID0gU0hfRkxPQVRfVkVDMjsKKyAgICAgICAgICAgIGluZm8uc2l6ZSA9
IDE7CisgICAgICAgICAgICBpbmZvLnByZWNpc2lvbiA9IEVicE1lZGl1bTsgIC8vIFVzZSBtZWRp
dW1wIGFzIGl0IGRvZXNuJ3QgcmVhbGx5IG1hdHRlci4KKyAgICAgICAgICAgIGluZm8uc3RhdGlj
VXNlID0gdHJ1ZTsKKwkgICAgbVZhcnlpbmdzLnB1c2hfYmFjayhpbmZvKTsKKyAgICAgICAgICAg
IG1Qb2ludENvb3JkQWRkZWQgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKHZhcikKKyAgICAgICAg
dmFyLT5zdGF0aWNVc2UgPSB0cnVlOwogfQogCi1ib29sIENvbGxlY3RBdHRyaWJzVW5pZm9ybXM6
OnZpc2l0QWdncmVnYXRlKFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlKiBub2RlKQorYm9vbCBDb2xs
ZWN0VmFyaWFibGVzOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0ZSogbm9k
ZSkKIHsKLSAgICBib29sIHZpc2l0Q2hpbGRyZW4gPSBmYWxzZTsKKyAgICBib29sIHZpc2l0Q2hp
bGRyZW4gPSB0cnVlOwogCiAgICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQogICAgIHsKLSAgICBj
YXNlIEVPcFNlcXVlbmNlOgotICAgICAgICAvLyBXZSBuZWVkIHRvIHZpc2l0IHNlcXVlbmNlIGNo
aWxkcmVuIHRvIGdldCB0byB2YXJpYWJsZSBkZWNsYXJhdGlvbnMuCi0gICAgICAgIHZpc2l0Q2hp
bGRyZW4gPSB0cnVlOwotICAgICAgICBicmVhazsKICAgICBjYXNlIEVPcERlY2xhcmF0aW9uOiB7
CiAgICAgICAgIGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSYgc2VxdWVuY2UgPSBub2RlLT5nZXRTZXF1
ZW5jZSgpOwogICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA9IHNlcXVlbmNlLmZyb250KCkt
PmdldEFzVHlwZWQoKS0+Z2V0UXVhbGlmaWVyKCk7Ci0gICAgICAgIGlmIChxdWFsaWZpZXIgPT0g
RXZxQXR0cmlidXRlIHx8IHF1YWxpZmllciA9PSBFdnFVbmlmb3JtKQorICAgICAgICBpZiAocXVh
bGlmaWVyID09IEV2cUF0dHJpYnV0ZSB8fCBxdWFsaWZpZXIgPT0gRXZxVW5pZm9ybSB8fAorICAg
ICAgICAgICAgcXVhbGlmaWVyID09IEV2cVZhcnlpbmdJbiB8fCBxdWFsaWZpZXIgPT0gRXZxVmFy
eWluZ091dCB8fAorICAgICAgICAgICAgcXVhbGlmaWVyID09IEV2cUludmFyaWFudFZhcnlpbmdJ
biB8fCBxdWFsaWZpZXIgPT0gRXZxSW52YXJpYW50VmFyeWluZ091dCkKICAgICAgICAgewotICAg
ICAgICAgICAgVFZhcmlhYmxlSW5mb0xpc3QmIGluZm9MaXN0ID0gcXVhbGlmaWVyID09IEV2cUF0
dHJpYnV0ZSA/Ci0gICAgICAgICAgICAgICAgbUF0dHJpYnMgOiBtVW5pZm9ybXM7CisgICAgICAg
ICAgICBUVmFyaWFibGVJbmZvTGlzdCYgaW5mb0xpc3QgPSBxdWFsaWZpZXIgPT0gRXZxQXR0cmli
dXRlID8gbUF0dHJpYnMgOgorICAgICAgICAgICAgICAgIChxdWFsaWZpZXIgPT0gRXZxVW5pZm9y
bSA/IG1Vbmlmb3JtcyA6IG1WYXJ5aW5ncyk7CiAgICAgICAgICAgICBmb3IgKFRJbnRlcm1TZXF1
ZW5jZTo6Y29uc3RfaXRlcmF0b3IgaSA9IHNlcXVlbmNlLmJlZ2luKCk7CiAgICAgICAgICAgICAg
ICAgIGkgIT0gc2VxdWVuY2UuZW5kKCk7ICsraSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICBjb25zdCBUSW50ZXJtU3ltYm9sKiB2YXJpYWJsZSA9ICgqaSktPmdldEFzU3ltYm9sTm9k
ZSgpOwogICAgICAgICAgICAgICAgIC8vIFRoZSBvbmx5IGNhc2UgaW4gd2hpY2ggdGhlIHNlcXVl
bmNlIHdpbGwgbm90IGNvbnRhaW4gYQogICAgICAgICAgICAgICAgIC8vIFRJbnRlcm1TeW1ib2wg
bm9kZSBpcyBpbml0aWFsaXphdGlvbi4gSXQgd2lsbCBjb250YWluIGEKLSAgICAgICAgICAgICAg
ICAvLyBUSW50ZXJCaW5hcnkgbm9kZSBpbiB0aGF0IGNhc2UuIFNpbmNlIGF0dHJpYnV0ZXMgYW5k
IHVuaWZyb21zCi0gICAgICAgICAgICAgICAgLy8gY2Fubm90IGJlIGluaXRpYWxpemVkIGluIGEg
c2hhZGVyLCB3ZSBtdXN0IGhhdmUgb25seQotICAgICAgICAgICAgICAgIC8vIFRJbnRlcm1TeW1i
b2wgbm9kZXMgaW4gdGhlIHNlcXVlbmNlLgorICAgICAgICAgICAgICAgIC8vIFRJbnRlckJpbmFy
eSBub2RlIGluIHRoYXQgY2FzZS4gU2luY2UgYXR0cmlidXRlcywgdW5pZm9ybXMsCisgICAgICAg
ICAgICAgICAgLy8gYW5kIHZhcnlpbmdzIGNhbm5vdCBiZSBpbml0aWFsaXplZCBpbiBhIHNoYWRl
ciwgd2UgbXVzdCBoYXZlCisgICAgICAgICAgICAgICAgLy8gb25seSBUSW50ZXJtU3ltYm9sIG5v
ZGVzIGluIHRoZSBzZXF1ZW5jZS4KICAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFibGUgIT0g
TlVMTCk7CiAgICAgICAgICAgICAgICAgVFN0cmluZyBwcm9jZXNzZWRTeW1ib2w7CiAgICAgICAg
ICAgICAgICAgaWYgKG1IYXNoRnVuY3Rpb24gPT0gTlVMTCkKQEAgLTIyMyw2ICsyOTUsNyBAQCBi
b29sIENvbGxlY3RBdHRyaWJzVW5pZm9ybXM6OnZpc2l0QWdncmVnCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByb2Nlc3NlZFN5bWJvbCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5mb0xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1IYXNo
RnVuY3Rpb24pOworICAgICAgICAgICAgICAgIHZpc2l0Q2hpbGRyZW4gPSBmYWxzZTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTIzMywxMyArMzA2LDMgQEAg
Ym9vbCBDb2xsZWN0QXR0cmlic1VuaWZvcm1zOjp2aXNpdEFnZ3JlZwogICAgIHJldHVybiB2aXNp
dENoaWxkcmVuOwogfQogCi1ib29sIENvbGxlY3RBdHRyaWJzVW5pZm9ybXM6OnZpc2l0TG9vcChW
aXNpdCwgVEludGVybUxvb3AqKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBDb2xs
ZWN0QXR0cmlic1VuaWZvcm1zOjp2aXNpdEJyYW5jaChWaXNpdCwgVEludGVybUJyYW5jaCopCi17
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvVmFyaWFibGVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL1ZhcmlhYmxlSW5mby5oCShyZXZpc2lvbiAxNTkwOTApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVmFyaWFibGVJbmZvLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIwLDI4ICsyMCwzMCBAQCBzdHJ1Y3QgVFZhcmlhYmxlSW5mbyB7CiAg
ICAgVFBlcnNpc3RTdHJpbmcgbWFwcGVkTmFtZTsKICAgICBTaERhdGFUeXBlIHR5cGU7CiAgICAg
aW50IHNpemU7CisgICAgVFByZWNpc2lvbiBwcmVjaXNpb247CisgICAgYm9vbCBzdGF0aWNVc2U7
CiB9OwogdHlwZWRlZiBzdGQ6OnZlY3RvcjxUVmFyaWFibGVJbmZvPiBUVmFyaWFibGVJbmZvTGlz
dDsKIAotLy8gVHJhdmVyc2VzIGludGVybWVkaWF0ZSB0cmVlIHRvIGNvbGxlY3QgYWxsIGF0dHJp
YnV0ZXMgYW5kIHVuaWZvcm1zLgotY2xhc3MgQ29sbGVjdEF0dHJpYnNVbmlmb3JtcyA6IHB1Ymxp
YyBUSW50ZXJtVHJhdmVyc2VyIHsKKy8vIFRyYXZlcnNlcyBpbnRlcm1lZGlhdGUgdHJlZSB0byBj
b2xsZWN0IGFsbCBhdHRyaWJ1dGVzLCB1bmlmb3JtcywgdmFyeWluZ3MuCitjbGFzcyBDb2xsZWN0
VmFyaWFibGVzIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIgewogcHVibGljOgotICAgIENvbGxl
Y3RBdHRyaWJzVW5pZm9ybXMoVFZhcmlhYmxlSW5mb0xpc3QmIGF0dHJpYnMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICBUVmFyaWFibGVJbmZvTGlzdCYgdW5pZm9ybXMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICBTaEhhc2hGdW5jdGlvbjY0IGhhc2hGdW5jdGlvbik7CisgICAgQ29s
bGVjdFZhcmlhYmxlcyhUVmFyaWFibGVJbmZvTGlzdCYgYXR0cmlicywKKyAgICAgICAgICAgICAg
ICAgICAgIFRWYXJpYWJsZUluZm9MaXN0JiB1bmlmb3JtcywKKyAgICAgICAgICAgICAgICAgICAg
IFRWYXJpYWJsZUluZm9MaXN0JiB2YXJ5aW5ncywKKyAgICAgICAgICAgICAgICAgICAgIFNoSGFz
aEZ1bmN0aW9uNjQgaGFzaEZ1bmN0aW9uKTsKIAogICAgIHZpcnR1YWwgdm9pZCB2aXNpdFN5bWJv
bChUSW50ZXJtU3ltYm9sKik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0Q29uc3RhbnRVbmlvbihU
SW50ZXJtQ29uc3RhbnRVbmlvbiopOwotICAgIHZpcnR1YWwgYm9vbCB2aXNpdEJpbmFyeShWaXNp
dCwgVEludGVybUJpbmFyeSopOwotICAgIHZpcnR1YWwgYm9vbCB2aXNpdFVuYXJ5KFZpc2l0LCBU
SW50ZXJtVW5hcnkqKTsKLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRTZWxlY3Rpb24oVmlzaXQsIFRJ
bnRlcm1TZWxlY3Rpb24qKTsKICAgICB2aXJ0dWFsIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQs
IFRJbnRlcm1BZ2dyZWdhdGUqKTsKLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRMb29wKFZpc2l0LCBU
SW50ZXJtTG9vcCopOwotICAgIHZpcnR1YWwgYm9vbCB2aXNpdEJyYW5jaChWaXNpdCwgVEludGVy
bUJyYW5jaCopOwogCiBwcml2YXRlOgogICAgIFRWYXJpYWJsZUluZm9MaXN0JiBtQXR0cmliczsK
ICAgICBUVmFyaWFibGVJbmZvTGlzdCYgbVVuaWZvcm1zOworICAgIFRWYXJpYWJsZUluZm9MaXN0
JiBtVmFyeWluZ3M7CisKKyAgICBib29sIG1Qb2ludENvb3JkQWRkZWQ7CisgICAgYm9vbCBtRnJv
bnRGYWNpbmdBZGRlZDsKKyAgICBib29sIG1GcmFnQ29vcmRBZGRlZDsKIAogICAgIFNoSGFzaEZ1
bmN0aW9uNjQgbUhhc2hGdW5jdGlvbjsKIH07CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvZGVidWcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9kZWJ1Zy5jcHAJKHJldmlzaW9uIDE1OTA5MCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9kZWJ1Zy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyLDE5ICsxMiwxMCBAQAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKICNpbmNsdWRlICJjb21w
aWxlci9Jbml0aWFsaXplUGFyc2VDb250ZXh0LmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvUGFyc2VI
ZWxwZXIuaCIKLQotI2lmIGRlZmluZWQoX19jbGFuZ19fKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHB1c2gKLSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bnVzZWQtdmFyaWFi
bGUiCi0jZW5kaWYKKyNpbmNsdWRlICJjb21waWxlci9QYXJzZUNvbnRleHQuaCIKIAogc3RhdGlj
IGNvbnN0IGludCBrVHJhY2VCdWZmZXJMZW4gPSAxMDI0OwogCi0jaWYgZGVmaW5lZChfX2NsYW5n
X18pCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0jZW5kaWYKLQogI2lmZGVmIFRSQUNF
X0VOQUJMRUQKIGV4dGVybiAiQyIgewogdm9pZCBUcmFjZShjb25zdCBjaGFyICpmb3JtYXQsIC4u
LikgewpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dlbmVyYXRl
X3BhcnNlci5zaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvZ2VuZXJhdGVfcGFyc2VyLnNoCShyZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2VuZXJhdGVfcGFyc2VyLnNoCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSwzICsyNSw0IEBAIHNjcmlwdF9kaXI9JChkaXJuYW1lICQwKQogIyBHZW5lcmF0
ZSBQYXJzZXIKIHJ1bl9mbGV4IGdsc2xhbmcKIHJ1bl9iaXNvbiBnbHNsYW5nCitwYXRjaCAtLXNp
bGVudCAtLWZvcndhcmQgPCA2NGJpdC1sZXhlci1zYWZldHkucGF0Y2gKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLmwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcubAkocmV2aXNpb24gMTU5
MDkwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcubAko
d29ya2luZyBjb3B5KQpAQCAtMzMsMTcgKzMzLDExIEBAIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xT
TCBFUyBMRVhFUiAoZ2xzbGEKICNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NTA1KQogI3ByYWdt
YSB3YXJuaW5nKGRpc2FibGU6IDQ3MDEpCiAjZW5kaWYKLQotI2lmIGRlZmluZWQoX19jbGFuZ19f
KQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBpZ25vcmVkICItV3Vua25vd24tcHJhZ21hcyIKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBp
Z25vcmVkICItV2RlcHJlY2F0ZWQtcmVnaXN0ZXIiCi0jZW5kaWYKIH0KIAogJXsKICNpbmNsdWRl
ICJjb21waWxlci9nbHNsYW5nLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvUGFyc2VIZWxwZXIuaCIK
KyNpbmNsdWRlICJjb21waWxlci9QYXJzZUNvbnRleHQuaCIKICNpbmNsdWRlICJjb21waWxlci9w
cmVwcm9jZXNzb3IvVG9rZW4uaCIKICNpbmNsdWRlICJjb21waWxlci91dGlsLmgiCiAjaW5jbHVk
ZSAiZ2xzbGFuZ190YWIuaCIKQEAgLTYzLDYgKzU3LDggQEAgV0hJQ0ggR0VORVJBVEVTIFRIRSBH
TFNMIEVTIExFWEVSIChnbHNsYQogc3RhdGljIHl5X3NpemVfdCBzdHJpbmdfaW5wdXQoY2hhciog
YnVmLCB5eV9zaXplX3QgbWF4X3NpemUsIHl5c2Nhbl90IHl5c2Nhbm5lcik7CiBzdGF0aWMgaW50
IGNoZWNrX3R5cGUoeXlzY2FuX3QgeXlzY2FubmVyKTsKIHN0YXRpYyBpbnQgcmVzZXJ2ZWRfd29y
ZCh5eXNjYW5fdCB5eXNjYW5uZXIpOworc3RhdGljIGludCBpbnRfY29uc3RhbnQoeXlzY2FuX3Qg
eXlzY2FubmVyKTsKK3N0YXRpYyBpbnQgZmxvYXRfY29uc3RhbnQoeXlzY2FuX3QgeXlzY2FubmVy
KTsKICV9CiAKICVvcHRpb24gbm95eXdyYXAgbm91bnB1dCBuZXZlci1pbnRlcmFjdGl2ZQpAQCAt
MTk1LDEzICsxOTEsMTMgQEAgTyAgICAgICAgICAgWzAtN10KICAgIHJldHVybiBjaGVja190eXBl
KHl5c2Nhbm5lcik7CiB9CiAKLTBbeFhde0h9KyAgICAgICAgIHsgeXlsdmFsLT5sZXguaSA9IHN0
YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4gSU5UQ09OU1RBTlQ7
IH0KLTB7T30rICAgICAgICAgICAgIHsgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4o
c3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4gSU5UQ09OU1RBTlQ7IH0KLXtEfSsgICAgICAg
ICAgICAgIHsgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwg
MCwgMCkpOyByZXR1cm4gSU5UQ09OU1RBTlQ7IH0KLQote0R9K3tFfSAgICAgICAgICAgeyB5eWx2
YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkpOyByZXR1cm4g
RkxPQVRDT05TVEFOVDsgfQote0R9KyIuIntEfSooe0V9KT8geyB5eWx2YWwtPmxleC5mID0gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkpOyByZXR1cm4gRkxPQVRDT05TVEFOVDsg
fQotIi4ie0R9Kyh7RX0pPyAgICAgeyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KGF0b2ZfZG90KHl5dGV4dCkpOyByZXR1cm4gRkxPQVRDT05TVEFOVDsgfQorMFt4WF17SH0rICAg
ICAgICAgeyByZXR1cm4gaW50X2NvbnN0YW50KHl5c2Nhbm5lcik7IH0KKzB7T30rICAgICAgICAg
ICAgIHsgcmV0dXJuIGludF9jb25zdGFudCh5eXNjYW5uZXIpOyB9Cit7RH0rICAgICAgICAgICAg
ICB7IHJldHVybiBpbnRfY29uc3RhbnQoeXlzY2FubmVyKTsgfQorCit7RH0re0V9ICAgICAgICAg
ICB7IHJldHVybiBmbG9hdF9jb25zdGFudCh5eXNjYW5uZXIpOyB9Cit7RH0rIi4ie0R9Kih7RX0p
PyB7IHJldHVybiBmbG9hdF9jb25zdGFudCh5eXNjYW5uZXIpOyB9CisiLiJ7RH0rKHtFfSk/ICAg
ICB7IHJldHVybiBmbG9hdF9jb25zdGFudCh5eXNjYW5uZXIpOyB9CiAKICIrPSIgICAgICAgICAg
ICB7IHJldHVybiBBRERfQVNTSUdOOyB9CiAiLT0iICAgICAgICAgICAgeyByZXR1cm4gU1VCX0FT
U0lHTjsgfQpAQCAtMjU2LDEwICsyNTIsNiBAQCBPICAgICAgICAgICBbMC03XQogCiAlJQogCi0j
aWYgZGVmaW5lZChfX2NsYW5nX18pCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0jZW5k
aWYKLQogeXlfc2l6ZV90IHN0cmluZ19pbnB1dChjaGFyKiBidWYsIHl5X3NpemVfdCBtYXhfc2l6
ZSwgeXlzY2FuX3QgeXlzY2FubmVyKSB7CiAgICAgcHA6OlRva2VuIHRva2VuOwogICAgIHl5Z2V0
X2V4dHJhKHl5c2Nhbm5lciktPnByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKQEAgLTI5OCw2ICsy
OTAsMjcgQEAgaW50IHJlc2VydmVkX3dvcmQoeXlzY2FuX3QgeXlzY2FubmVyKSB7CiAgICAgcmV0
dXJuIDA7CiB9CiAKK3ZvaWQgeXllcnJvcihZWUxUWVBFKiBsbG9jLCBUUGFyc2VDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pIHsKKyAgICBjb250ZXh0LT5lcnJvcigqbGxvYywg
cmVhc29uLCB5eWdldF90ZXh0KGNvbnRleHQtPnNjYW5uZXIpKTsKKyAgICBjb250ZXh0LT5yZWNv
dmVyKCk7Cit9CisKK2ludCBpbnRfY29uc3RhbnQoeXlzY2FuX3QgeXlzY2FubmVyKSB7CisgICAg
c3RydWN0IHl5Z3V0c190KiB5eWcgPSAoc3RydWN0IHl5Z3V0c190KikgeXlzY2FubmVyOworCisg
ICAgaWYgKCFhdG9pX2NsYW1wKHl5dGV4dCwgJih5eWx2YWwtPmxleC5pKSkpCisgICAgICAgIHl5
ZXh0cmEtPndhcm5pbmcoKnl5bGxvYywgIkludGVnZXIgb3ZlcmZsb3ciLCB5eXRleHQsICIiKTsK
KyAgICByZXR1cm4gSU5UQ09OU1RBTlQ7Cit9CisKK2ludCBmbG9hdF9jb25zdGFudCh5eXNjYW5f
dCB5eXNjYW5uZXIpIHsKKyAgICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRz
X3QqKSB5eXNjYW5uZXI7CisKKyAgICBpZiAoIWF0b2ZfY2xhbXAoeXl0ZXh0LCAmKHl5bHZhbC0+
bGV4LmYpKSkKKyAgICAgICAgeXlleHRyYS0+d2FybmluZygqeXlsbG9jLCAiRmxvYXQgb3ZlcmZs
b3ciLCB5eXRleHQsICIiKTsKKyAgICByZXR1cm4gRkxPQVRDT05TVEFOVDsKK30KKwogaW50IGds
c2xhbmdfaW5pdGlhbGl6ZShUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7CiAgICAgeXlzY2FuX3Qg
c2Nhbm5lciA9IE5VTEw7CiAgICAgaWYgKHl5bGV4X2luaXRfZXh0cmEoY29udGV4dCwgJnNjYW5u
ZXIpKQpAQCAtMzI2LDYgKzMzOSw3IEBAIGludCBnbHNsYW5nX3NjYW4oc2l6ZV90IGNvdW50LCBj
b25zdCBjaGEKICAgICAvLyBJbml0aWFsaXplIHByZXByb2Nlc3Nvci4KICAgICBpZiAoIWNvbnRl
eHQtPnByZXByb2Nlc3Nvci5pbml0KGNvdW50LCBzdHJpbmcsIGxlbmd0aCkpCiAgICAgICAgIHJl
dHVybiAxOworICAgIGNvbnRleHQtPnByZXByb2Nlc3Nvci5zZXRNYXhUb2tlbkxlbmd0aChTSF9N
QVhfVE9LRU5fTEVOR1RIKTsKIAogICAgIC8vIERlZmluZSBleHRlbnNpb24gbWFjcm9zLgogICAg
IGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciYgZXh0QmVoYXZpb3IgPSBjb250ZXh0LT5leHRlbnNp
b25CZWhhdmlvcigpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L2dsc2xhbmcueQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvZ2xzbGFuZy55CShyZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy55CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3
IEBAIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBQQVJTRVIgKGdsc2wKICNlbmRpZgogCiAj
aW5jbHVkZSAiY29tcGlsZXIvU3ltYm9sVGFibGUuaCIKLSNpbmNsdWRlICJjb21waWxlci9QYXJz
ZUhlbHBlci5oIgorI2luY2x1ZGUgImNvbXBpbGVyL1BhcnNlQ29udGV4dC5oIgogI2luY2x1ZGUg
IkdMU0xBTkcvU2hhZGVyTGFuZy5oIgogCiAjZGVmaW5lIFlZRU5BQkxFX05MUyAwCkBAIC00Nywx
MSArNDcsMTQgQEAgV0hJQ0ggR0VORVJBVEVTIFRIRSBHTFNMIEVTIFBBUlNFUiAoZ2xzbAogJXB1
cmUtcGFyc2VyCiAlcGFyc2UtcGFyYW0ge1RQYXJzZUNvbnRleHQqIGNvbnRleHR9CiAlbG9jYXRp
b25zCi0lbGV4LXBhcmFtIHtZWUxFWF9QQVJBTX0KIAotJXVuaW9uIHsKKyVjb2RlIHJlcXVpcmVz
IHsKICNkZWZpbmUgWVlMVFlQRSBUU291cmNlTG9jCiAjZGVmaW5lIFlZTFRZUEVfSVNfREVDTEFS
RUQgMQorI2RlZmluZSBTSF9NQVhfVE9LRU5fTEVOR1RIIDI1NiAgLy8gV2ViR0wgc3BlYy4KK30K
KworJXVuaW9uIHsKICAgICBzdHJ1Y3QgewogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBU
U3RyaW5nICpzdHJpbmc7CkBAIC04MywxMSArODYsMTEgQEAgV0hJQ0ggR0VORVJBVEVTIFRIRSBH
TFNMIEVTIFBBUlNFUiAoZ2xzbAogCiAlewogZXh0ZXJuIGludCB5eWxleChZWVNUWVBFKiB5eWx2
YWwsIFlZTFRZUEUqIHl5bGxvYywgdm9pZCogeXlzY2FubmVyKTsKLXN0YXRpYyB2b2lkIHl5ZXJy
b3IoWVlMVFlQRSogeXlsbG9jLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiBy
ZWFzb24pOworZXh0ZXJuIHZvaWQgeXllcnJvcihZWUxUWVBFKiB5eWxsb2MsIFRQYXJzZUNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbik7CiAKICNkZWZpbmUgWVlMTE9DX0RFRkFV
TFQoQ3VycmVudCwgUmhzLCBOKSAgICAgICAgICAgICAgICAgICAgICBcCiAgIGRvIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
aWYgKE4pIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgIGlmIChZWUlEKE4pKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgICAgIChDdXJyZW50KS5maXJzdF9maWxlID0gWVlSSFNMT0MoUmhzLCAxKS5m
aXJzdF9maWxlOyAgXAogICAgICAgICAoQ3VycmVudCkuZmlyc3RfbGluZSA9IFlZUkhTTE9DKFJo
cywgMSkuZmlyc3RfbGluZTsgIFwKICAgICAgICAgKEN1cnJlbnQpLmxhc3RfZmlsZSA9IFlZUkhT
TE9DKFJocywgTikubGFzdF9maWxlOyAgICBcCkBAIC0yMjUsMTQgKzIyOCw2IEBAIHByaW1hcnlf
ZXhwcmVzc2lvbgogICAgICAgICAkJCA9ICQxOwogICAgIH0KICAgICB8IElOVENPTlNUQU5UIHsK
LSAgICAgICAgLy8KLSAgICAgICAgLy8gSU5UX1RZUEUgaXMgb25seSAxNi1iaXQgcGx1cyBzaWdu
IGJpdCBmb3IgdmVydGV4L2ZyYWdtZW50IHNoYWRlcnMsCi0gICAgICAgIC8vIGNoZWNrIGZvciBv
dmVyZmxvdyBmb3IgY29uc3RhbnRzCi0gICAgICAgIC8vCi0gICAgICAgIGlmIChhYnMoJDEuaSkg
Pj0gKDEgPDwgMTYpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgIiBpbnRlZ2Vy
IGNvbnN0YW50IG92ZXJmbG93IiwgIiIpOwotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwotICAgICAgICB9CiAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29u
c3RhbnRVbmlvblsxXTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KCQxLmkpOwogICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJy
YXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksIEAxKTsKQEAgLTIwMDIs
MTEgKzE5OTcsNiBAQCBmdW5jdGlvbl9kZWZpbml0aW9uCiAKICUlCiAKLXZvaWQgeXllcnJvcihZ
WUxUWVBFKiB5eWxsb2MsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNv
bikgewotICAgIGNvbnRleHQtPmVycm9yKCp5eWxsb2MsIHJlYXNvbiwgIiIpOwotICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKLX0KLQogaW50IGdsc2xhbmdfcGFyc2UoVFBhcnNlQ29udGV4dCogY29u
dGV4dCkgewogICAgIHJldHVybiB5eXBhcnNlKGNvbnRleHQpOwogfQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfbGV4LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ19sZXguY3BwCShy
ZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
Z2xzbGFuZ19sZXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOSwxMiArMTksNiBAQAogI3ByYWdt
YSB3YXJuaW5nKGRpc2FibGU6IDQ3MDEpCiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19jbGFuZ19f
KQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBpZ25vcmVkICItV3Vua25vd24tcHJhZ21hcyIKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBp
Z25vcmVkICItV2RlcHJlY2F0ZWQtcmVnaXN0ZXIiCi0jZW5kaWYKLQogCiAKICNsaW5lIDI1ICIu
L2dsc2xhbmdfbGV4LmNwcCIKQEAgLTc4OCw3ICs3ODIsNyBAQCBXSElDSCBHRU5FUkFURVMgVEhF
IEdMU0wgRVMgTEVYRVIgKGdsc2xhCiAqLwogCiAjaW5jbHVkZSAiY29tcGlsZXIvZ2xzbGFuZy5o
IgotI2luY2x1ZGUgImNvbXBpbGVyL1BhcnNlSGVscGVyLmgiCisjaW5jbHVkZSAiY29tcGlsZXIv
UGFyc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmgi
CiAjaW5jbHVkZSAiY29tcGlsZXIvdXRpbC5oIgogI2luY2x1ZGUgImdsc2xhbmdfdGFiLmgiCkBA
IC04MDgsNiArODAyLDggQEAgV0hJQ0ggR0VORVJBVEVTIFRIRSBHTFNMIEVTIExFWEVSIChnbHNs
YQogc3RhdGljIHl5X3NpemVfdCBzdHJpbmdfaW5wdXQoY2hhciogYnVmLCB5eV9zaXplX3QgbWF4
X3NpemUsIHl5c2Nhbl90IHl5c2Nhbm5lcik7CiBzdGF0aWMgaW50IGNoZWNrX3R5cGUoeXlzY2Fu
X3QgeXlzY2FubmVyKTsKIHN0YXRpYyBpbnQgcmVzZXJ2ZWRfd29yZCh5eXNjYW5fdCB5eXNjYW5u
ZXIpOworc3RhdGljIGludCBpbnRfY29uc3RhbnQoeXlzY2FuX3QgeXlzY2FubmVyKTsKK3N0YXRp
YyBpbnQgZmxvYXRfY29uc3RhbnQoeXlzY2FuX3QgeXlzY2FubmVyKTsKIAogI2RlZmluZSBJTklU
SUFMIDAKIApAQCAtMTUwNiwyNyArMTUwMiwyNyBAQCBZWV9SVUxFX1NFVFVQCiAJWVlfQlJFQUsK
IGNhc2UgOTQ6CiBZWV9SVUxFX1NFVFVQCi17IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxp
bnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9Cit7IHJldHVy
biBpbnRfY29uc3RhbnQoeXlzY2FubmVyKTsgfQogCVlZX0JSRUFLCiBjYXNlIDk1OgogWVlfUlVM
RV9TRVRVUAoteyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0
LCAwLCAwKSk7IHJldHVybiBJTlRDT05TVEFOVDsgfQoreyByZXR1cm4gaW50X2NvbnN0YW50KHl5
c2Nhbm5lcik7IH0KIAlZWV9CUkVBSwogY2FzZSA5NjoKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFs
LT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4g
SU5UQ09OU1RBTlQ7IH0KK3sgcmV0dXJuIGludF9jb25zdGFudCh5eXNjYW5uZXIpOyB9CiAJWVlf
QlJFQUsKIGNhc2UgOTc6CiBZWV9SVUxFX1NFVFVQCi17IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNf
Y2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybiBGTE9BVENPTlNUQU5UOyB9Cit7
IHJldHVybiBmbG9hdF9jb25zdGFudCh5eXNjYW5uZXIpOyB9CiAJWVlfQlJFQUsKIGNhc2UgOTg6
CiBZWV9SVUxFX1NFVFVQCi17IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRv
Zl9kb3QoeXl0ZXh0KSk7IHJldHVybiBGTE9BVENPTlNUQU5UOyB9Cit7IHJldHVybiBmbG9hdF9j
b25zdGFudCh5eXNjYW5uZXIpOyB9CiAJWVlfQlJFQUsKIGNhc2UgOTk6CiBZWV9SVUxFX1NFVFVQ
Ci17IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7
IHJldHVybiBGTE9BVENPTlNUQU5UOyB9Cit7IHJldHVybiBmbG9hdF9jb25zdGFudCh5eXNjYW5u
ZXIpOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTAwOgogWVlfUlVMRV9TRVRVUApAQCAtMjEwMyw3ICsy
MDk5LDcgQEAgc3RhdGljIGludCB5eV9nZXRfbmV4dF9idWZmZXIgKHl5c2Nhbl90IAogCQkJCWNh
c2UgRU9CX0FDVF9FTkRfT0ZfRklMRToKIAkJCQkJewogCQkJCQlpZiAoIHl5d3JhcCh5eXNjYW5u
ZXIgKSApCi0JCQkJCQlyZXR1cm4gMDsKKwkJCQkJCXJldHVybiBFT0Y7CiAKIAkJCQkJaWYgKCAh
IHl5Zy0+eXlfZGlkX2J1ZmZlcl9zd2l0Y2hfb25fZW9mICkKIAkJCQkJCVlZX05FV19GSUxFOwpA
QCAtMjg2NSwxMCArMjg2MSw2IEBAIHZvaWQgeXlmcmVlICh2b2lkICogcHRyICwgeXlzY2FuX3Qg
eXlzY2EKIAogI2RlZmluZSBZWVRBQkxFU19OQU1FICJ5eXRhYmxlcyIKIAotI2lmIGRlZmluZWQo
X19jbGFuZ19fKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotI2VuZGlmCi0KIHl5X3Np
emVfdCBzdHJpbmdfaW5wdXQoY2hhciogYnVmLCB5eV9zaXplX3QgbWF4X3NpemUsIHl5c2Nhbl90
IHl5c2Nhbm5lcikgewogICAgIHBwOjpUb2tlbiB0b2tlbjsKICAgICB5eWdldF9leHRyYSh5eXNj
YW5uZXIpLT5wcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7CkBAIC0yOTA3LDYgKzI4OTksMjcgQEAg
aW50IHJlc2VydmVkX3dvcmQoeXlzY2FuX3QgeXlzY2FubmVyKSB7CiAgICAgcmV0dXJuIDA7CiB9
CiAKK3ZvaWQgeXllcnJvcihZWUxUWVBFKiBsbG9jLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBjaGFyKiByZWFzb24pIHsKKyAgICBjb250ZXh0LT5lcnJvcigqbGxvYywgcmVhc29uLCB5
eWdldF90ZXh0KGNvbnRleHQtPnNjYW5uZXIpKTsKKyAgICBjb250ZXh0LT5yZWNvdmVyKCk7Cit9
CisKK2ludCBpbnRfY29uc3RhbnQoeXlzY2FuX3QgeXlzY2FubmVyKSB7CisgICAgc3RydWN0IHl5
Z3V0c190KiB5eWcgPSAoc3RydWN0IHl5Z3V0c190KikgeXlzY2FubmVyOworCisgICAgaWYgKCFh
dG9pX2NsYW1wKHl5dGV4dCwgJih5eWx2YWwtPmxleC5pKSkpCisgICAgICAgIHl5ZXh0cmEtPndh
cm5pbmcoKnl5bGxvYywgIkludGVnZXIgb3ZlcmZsb3ciLCB5eXRleHQsICIiKTsKKyAgICByZXR1
cm4gSU5UQ09OU1RBTlQ7Cit9CisKK2ludCBmbG9hdF9jb25zdGFudCh5eXNjYW5fdCB5eXNjYW5u
ZXIpIHsKKyAgICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKSB5eXNj
YW5uZXI7CisKKyAgICBpZiAoIWF0b2ZfY2xhbXAoeXl0ZXh0LCAmKHl5bHZhbC0+bGV4LmYpKSkK
KyAgICAgICAgeXlleHRyYS0+d2FybmluZygqeXlsbG9jLCAiRmxvYXQgb3ZlcmZsb3ciLCB5eXRl
eHQsICIiKTsKKyAgICByZXR1cm4gRkxPQVRDT05TVEFOVDsKK30KKwogaW50IGdsc2xhbmdfaW5p
dGlhbGl6ZShUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7CiAgICAgeXlzY2FuX3Qgc2Nhbm5lciA9
IE5VTEw7CiAgICAgaWYgKHl5bGV4X2luaXRfZXh0cmEoY29udGV4dCwmc2Nhbm5lcikpCkBAIC0y
OTM1LDYgKzI5NDgsNyBAQCBpbnQgZ2xzbGFuZ19zY2FuKHNpemVfdCBjb3VudCwgY29uc3QgY2hh
CiAgICAgLy8gSW5pdGlhbGl6ZSBwcmVwcm9jZXNzb3IuCiAgICAgaWYgKCFjb250ZXh0LT5wcmVw
cm9jZXNzb3IuaW5pdChjb3VudCwgc3RyaW5nLCBsZW5ndGgpKQogICAgICAgICByZXR1cm4gMTsK
KyAgICBjb250ZXh0LT5wcmVwcm9jZXNzb3Iuc2V0TWF4VG9rZW5MZW5ndGgoU0hfTUFYX1RPS0VO
X0xFTkdUSCk7CiAKICAgICAvLyBEZWZpbmUgZXh0ZW5zaW9uIG1hY3Jvcy4KICAgICBjb25zdCBU
RXh0ZW5zaW9uQmVoYXZpb3ImIGV4dEJlaGF2aW9yID0gY29udGV4dC0+ZXh0ZW5zaW9uQmVoYXZp
b3IoKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5n
X3RhYi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL2dsc2xhbmdfdGFiLmNwcAkocmV2aXNpb24gMTU5MDkwKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSwyNCArMSwyMSBAQAotLyogQSBCaXNvbiBwYXJzZXIsIG1hZGUgYnkgR05VIEJpc29uIDIuMy4g
ICovCisvKiBBIEJpc29uIHBhcnNlciwgbWFkZSBieSBHTlUgQmlzb24gMi43LiAgKi8KIAotLyog
U2tlbGV0b24gaW1wbGVtZW50YXRpb24gZm9yIEJpc29uJ3MgWWFjYy1saWtlIHBhcnNlcnMgaW4g
QwotCi0gICBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5ODksIDE5OTAsIDIwMDAsIDIwMDEsIDIwMDIs
IDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYKLSAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LgotCi0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yIG1vZGlmeQorLyogQmlzb24gaW1wbGVtZW50YXRpb24gZm9yIFlhY2MtbGlr
ZSBwYXJzZXJzIGluIEMKKyAgIAorICAgICAgQ29weXJpZ2h0IChDKSAxOTg0LCAxOTg5LTE5OTAs
IDIwMDAtMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIAorICAgVGhpcyBw
cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt
b2RpZnkKICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0gICBhbnkgbGF0ZXIgdmVyc2lv
bi4KLQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBv
ZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgICAKICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICAgIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KKyAgIAogICAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgIGFsb25n
IHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0g
ICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuICAqLworICAgYWxvbmcgd2l0aCB0aGlzIHByb2dy
YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogCiAv
KiBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IGNyZWF0ZSBhIGxhcmdlciB3b3JrIHRo
YXQgY29udGFpbnMKICAgIHBhcnQgb3IgYWxsIG9mIHRoZSBCaXNvbiBwYXJzZXIgc2tlbGV0b24g
YW5kIGRpc3RyaWJ1dGUgdGhhdCB3b3JrCkBAIC0yOSw3ICsyNiw3IEBACiAgICBzcGVjaWFsIGV4
Y2VwdGlvbiwgd2hpY2ggd2lsbCBjYXVzZSB0aGUgc2tlbGV0b24gYW5kIHRoZSByZXN1bHRpbmcK
ICAgIEJpc29uIG91dHB1dCBmaWxlcyB0byBiZSBsaWNlbnNlZCB1bmRlciB0aGUgR05VIEdlbmVy
YWwgUHVibGljCiAgICBMaWNlbnNlIHdpdGhvdXQgdGhpcyBzcGVjaWFsIGV4Y2VwdGlvbi4KLQor
ICAgCiAgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHdhcyBhZGRlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uIGluCiAgICB2ZXJzaW9uIDIuMiBvZiBCaXNvbi4gICovCiAKQEAgLTQ3
LDcgKzQ0LDcgQEAKICNkZWZpbmUgWVlCSVNPTiAxCiAKIC8qIEJpc29uIHZlcnNpb24uICAqLwot
I2RlZmluZSBZWUJJU09OX1ZFUlNJT04gIjIuMyIKKyNkZWZpbmUgWVlCSVNPTl9WRVJTSU9OICIy
LjciCiAKIC8qIFNrZWxldG9uIG5hbWUuICAqLwogI2RlZmluZSBZWVNLRUxFVE9OX05BTUUgInlh
Y2MuYyIKQEAgLTU1LDggKzUyLDgyIEBACiAvKiBQdXJlIHBhcnNlcnMuICAqLwogI2RlZmluZSBZ
WVBVUkUgMQogCi0vKiBVc2luZyBsb2NhdGlvbnMuICAqLwotI2RlZmluZSBZWUxTUF9ORUVERUQg
MQorLyogUHVzaCBwYXJzZXJzLiAgKi8KKyNkZWZpbmUgWVlQVVNIIDAKKworLyogUHVsbCBwYXJz
ZXJzLiAgKi8KKyNkZWZpbmUgWVlQVUxMIDEKKworCisKKworLyogQ29weSB0aGUgZmlyc3QgcGFy
dCBvZiB1c2VyIGRlY2xhcmF0aW9ucy4gICovCisKKworLy8KKy8vIENvcHlyaWdodCAoYykgMjAw
Mi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8g
VGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlX3BhcnNlci5zaC4gRE8gTk9U
IEVESVQhCisKKy8vIElnbm9yZSBlcnJvcnMgaW4gYXV0by1nZW5lcmF0ZWQgY29kZS4KKyNpZiBk
ZWZpbmVkKF9fR05VQ19fKQorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNl
ZC1mdW5jdGlvbiIKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bnVzZWQtdmFy
aWFibGUiCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc3dpdGNoLWVudW0iCisj
ZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQwNjUpCisj
cHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDE4OSkKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0
NTA1KQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ3MDEpCisjZW5kaWYKKworI2luY2x1ZGUg
ImNvbXBpbGVyL1N5bWJvbFRhYmxlLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvUGFyc2VDb250ZXh0
LmgiCisjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCisKKyNkZWZpbmUgWVlFTkFCTEVf
TkxTIDAKKworI2RlZmluZSBZWUxFWF9QQVJBTSBjb250ZXh0LT5zY2FubmVyCisKKworCisjIGlm
bmRlZiBZWV9OVUxMCisjICBpZiBkZWZpbmVkIF9fY3BsdXNwbHVzICYmIDIwMTEwM0wgPD0gX19j
cGx1c3BsdXMKKyMgICBkZWZpbmUgWVlfTlVMTCBudWxscHRyCisjICBlbHNlCisjICAgZGVmaW5l
IFlZX05VTEwgMAorIyAgZW5kaWYKKyMgZW5kaWYKKworLyogRW5hYmxpbmcgdmVyYm9zZSBlcnJv
ciBtZXNzYWdlcy4gICovCisjaWZkZWYgWVlFUlJPUl9WRVJCT1NFCisjIHVuZGVmIFlZRVJST1Jf
VkVSQk9TRQorIyBkZWZpbmUgWVlFUlJPUl9WRVJCT1NFIDEKKyNlbHNlCisjIGRlZmluZSBZWUVS
Uk9SX1ZFUkJPU0UgMAorI2VuZGlmCisKKy8qIEluIGEgZnV0dXJlIHJlbGVhc2Ugb2YgQmlzb24s
IHRoaXMgc2VjdGlvbiB3aWxsIGJlIHJlcGxhY2VkCisgICBieSAjaW5jbHVkZSAiZ2xzbGFuZ190
YWIuaCIuICAqLworI2lmbmRlZiBZWV9ZWV9HTFNMQU5HX1RBQl9IX0lOQ0xVREVECisjIGRlZmlu
ZSBZWV9ZWV9HTFNMQU5HX1RBQl9IX0lOQ0xVREVECisvKiBFbmFibGluZyB0cmFjZXMuICAqLwor
I2lmbmRlZiBZWURFQlVHCisjIGRlZmluZSBZWURFQlVHIDAKKyNlbmRpZgorI2lmIFlZREVCVUcK
K2V4dGVybiBpbnQgeXlkZWJ1ZzsKKyNlbmRpZgorLyogIiVjb2RlIHJlcXVpcmVzIiBibG9ja3Mu
ICAqLworCisKKyNkZWZpbmUgWVlMVFlQRSBUU291cmNlTG9jCisjZGVmaW5lIFlZTFRZUEVfSVNf
REVDTEFSRUQgMQorI2RlZmluZSBTSF9NQVhfVE9LRU5fTEVOR1RIIDI1NiAgLy8gV2ViR0wgc3Bl
Yy4KKwogCiAKIApAQCAtMTYwLDE1OSArMjMxLDEzIEBACiAgICAgIFFVRVNUSU9OID0gMzQ5CiAg
ICB9OwogI2VuZGlmCi0vKiBUb2tlbnMuICAqLwotI2RlZmluZSBJTlZBUklBTlQgMjU4Ci0jZGVm
aW5lIEhJR0hfUFJFQ0lTSU9OIDI1OQotI2RlZmluZSBNRURJVU1fUFJFQ0lTSU9OIDI2MAotI2Rl
ZmluZSBMT1dfUFJFQ0lTSU9OIDI2MQotI2RlZmluZSBQUkVDSVNJT04gMjYyCi0jZGVmaW5lIEFU
VFJJQlVURSAyNjMKLSNkZWZpbmUgQ09OU1RfUVVBTCAyNjQKLSNkZWZpbmUgQk9PTF9UWVBFIDI2
NQotI2RlZmluZSBGTE9BVF9UWVBFIDI2NgotI2RlZmluZSBJTlRfVFlQRSAyNjcKLSNkZWZpbmUg
QlJFQUsgMjY4Ci0jZGVmaW5lIENPTlRJTlVFIDI2OQotI2RlZmluZSBETyAyNzAKLSNkZWZpbmUg
RUxTRSAyNzEKLSNkZWZpbmUgRk9SIDI3MgotI2RlZmluZSBJRiAyNzMKLSNkZWZpbmUgRElTQ0FS
RCAyNzQKLSNkZWZpbmUgUkVUVVJOIDI3NQotI2RlZmluZSBCVkVDMiAyNzYKLSNkZWZpbmUgQlZF
QzMgMjc3Ci0jZGVmaW5lIEJWRUM0IDI3OAotI2RlZmluZSBJVkVDMiAyNzkKLSNkZWZpbmUgSVZF
QzMgMjgwCi0jZGVmaW5lIElWRUM0IDI4MQotI2RlZmluZSBWRUMyIDI4MgotI2RlZmluZSBWRUMz
IDI4MwotI2RlZmluZSBWRUM0IDI4NAotI2RlZmluZSBNQVRSSVgyIDI4NQotI2RlZmluZSBNQVRS
SVgzIDI4NgotI2RlZmluZSBNQVRSSVg0IDI4NwotI2RlZmluZSBJTl9RVUFMIDI4OAotI2RlZmlu
ZSBPVVRfUVVBTCAyODkKLSNkZWZpbmUgSU5PVVRfUVVBTCAyOTAKLSNkZWZpbmUgVU5JRk9STSAy
OTEKLSNkZWZpbmUgVkFSWUlORyAyOTIKLSNkZWZpbmUgU1RSVUNUIDI5MwotI2RlZmluZSBWT0lE
X1RZUEUgMjk0Ci0jZGVmaW5lIFdISUxFIDI5NQotI2RlZmluZSBTQU1QTEVSMkQgMjk2Ci0jZGVm
aW5lIFNBTVBMRVJDVUJFIDI5NwotI2RlZmluZSBTQU1QTEVSX0VYVEVSTkFMX09FUyAyOTgKLSNk
ZWZpbmUgU0FNUExFUjJEUkVDVCAyOTkKLSNkZWZpbmUgSURFTlRJRklFUiAzMDAKLSNkZWZpbmUg
VFlQRV9OQU1FIDMwMQotI2RlZmluZSBGTE9BVENPTlNUQU5UIDMwMgotI2RlZmluZSBJTlRDT05T
VEFOVCAzMDMKLSNkZWZpbmUgQk9PTENPTlNUQU5UIDMwNAotI2RlZmluZSBMRUZUX09QIDMwNQot
I2RlZmluZSBSSUdIVF9PUCAzMDYKLSNkZWZpbmUgSU5DX09QIDMwNwotI2RlZmluZSBERUNfT1Ag
MzA4Ci0jZGVmaW5lIExFX09QIDMwOQotI2RlZmluZSBHRV9PUCAzMTAKLSNkZWZpbmUgRVFfT1Ag
MzExCi0jZGVmaW5lIE5FX09QIDMxMgotI2RlZmluZSBBTkRfT1AgMzEzCi0jZGVmaW5lIE9SX09Q
IDMxNAotI2RlZmluZSBYT1JfT1AgMzE1Ci0jZGVmaW5lIE1VTF9BU1NJR04gMzE2Ci0jZGVmaW5l
IERJVl9BU1NJR04gMzE3Ci0jZGVmaW5lIEFERF9BU1NJR04gMzE4Ci0jZGVmaW5lIE1PRF9BU1NJ
R04gMzE5Ci0jZGVmaW5lIExFRlRfQVNTSUdOIDMyMAotI2RlZmluZSBSSUdIVF9BU1NJR04gMzIx
Ci0jZGVmaW5lIEFORF9BU1NJR04gMzIyCi0jZGVmaW5lIFhPUl9BU1NJR04gMzIzCi0jZGVmaW5l
IE9SX0FTU0lHTiAzMjQKLSNkZWZpbmUgU1VCX0FTU0lHTiAzMjUKLSNkZWZpbmUgTEVGVF9QQVJF
TiAzMjYKLSNkZWZpbmUgUklHSFRfUEFSRU4gMzI3Ci0jZGVmaW5lIExFRlRfQlJBQ0tFVCAzMjgK
LSNkZWZpbmUgUklHSFRfQlJBQ0tFVCAzMjkKLSNkZWZpbmUgTEVGVF9CUkFDRSAzMzAKLSNkZWZp
bmUgUklHSFRfQlJBQ0UgMzMxCi0jZGVmaW5lIERPVCAzMzIKLSNkZWZpbmUgQ09NTUEgMzMzCi0j
ZGVmaW5lIENPTE9OIDMzNAotI2RlZmluZSBFUVVBTCAzMzUKLSNkZWZpbmUgU0VNSUNPTE9OIDMz
NgotI2RlZmluZSBCQU5HIDMzNwotI2RlZmluZSBEQVNIIDMzOAotI2RlZmluZSBUSUxERSAzMzkK
LSNkZWZpbmUgUExVUyAzNDAKLSNkZWZpbmUgU1RBUiAzNDEKLSNkZWZpbmUgU0xBU0ggMzQyCi0j
ZGVmaW5lIFBFUkNFTlQgMzQzCi0jZGVmaW5lIExFRlRfQU5HTEUgMzQ0Ci0jZGVmaW5lIFJJR0hU
X0FOR0xFIDM0NQotI2RlZmluZSBWRVJUSUNBTF9CQVIgMzQ2Ci0jZGVmaW5lIENBUkVUIDM0Nwot
I2RlZmluZSBBTVBFUlNBTkQgMzQ4Ci0jZGVmaW5lIFFVRVNUSU9OIDM0OQotCi0KLQotCi0vKiBD
b3B5IHRoZSBmaXJzdCBwYXJ0IG9mIHVzZXIgZGVjbGFyYXRpb25zLiAgKi8KLQotCi0vLwotLy8g
Q29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCi0vLwotCi0vLyBUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgZ2VuZXJhdGVf
cGFyc2VyLnNoLiBETyBOT1QgRURJVCEKLQotLy8gSWdub3JlIGVycm9ycyBpbiBhdXRvLWdlbmVy
YXRlZCBjb2RlLgotI2lmIGRlZmluZWQoX19HTlVDX18pCi0jcHJhZ21hIEdDQyBkaWFnbm9zdGlj
IGlnbm9yZWQgIi1XdW51c2VkLWZ1bmN0aW9uIgotI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25v
cmVkICItV3VudXNlZC12YXJpYWJsZSIKLSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAi
LVdzd2l0Y2gtZW51bSIKLSNlbGlmIGRlZmluZWQoX01TQ19WRVIpCi0jcHJhZ21hIHdhcm5pbmco
ZGlzYWJsZTogNDA2NSkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTg5KQotI3ByYWdtYSB3
YXJuaW5nKGRpc2FibGU6IDQ1MDUpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDcwMSkKLSNl
bmRpZgotCi0jaW5jbHVkZSAiY29tcGlsZXIvU3ltYm9sVGFibGUuaCIKLSNpbmNsdWRlICJjb21w
aWxlci9QYXJzZUhlbHBlci5oIgotI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgotCi0j
ZGVmaW5lIFlZRU5BQkxFX05MUyAwCi0KLSNkZWZpbmUgWVlMRVhfUEFSQU0gY29udGV4dC0+c2Nh
bm5lcgotCi0KLS8qIEVuYWJsaW5nIHRyYWNlcy4gICovCi0jaWZuZGVmIFlZREVCVUcKLSMgZGVm
aW5lIFlZREVCVUcgMAotI2VuZGlmCi0KLS8qIEVuYWJsaW5nIHZlcmJvc2UgZXJyb3IgbWVzc2Fn
ZXMuICAqLwotI2lmZGVmIFlZRVJST1JfVkVSQk9TRQotIyB1bmRlZiBZWUVSUk9SX1ZFUkJPU0UK
LSMgZGVmaW5lIFlZRVJST1JfVkVSQk9TRSAxCi0jZWxzZQotIyBkZWZpbmUgWVlFUlJPUl9WRVJC
T1NFIDAKLSNlbmRpZgogCi0vKiBFbmFibGluZyB0aGUgdG9rZW4gdGFibGUuICAqLwotI2lmbmRl
ZiBZWVRPS0VOX1RBQkxFCi0jIGRlZmluZSBZWVRPS0VOX1RBQkxFIDAKLSNlbmRpZgogCiAjaWYg
ISBkZWZpbmVkIFlZU1RZUEUgJiYgISBkZWZpbmVkIFlZU1RZUEVfSVNfREVDTEFSRUQKIHR5cGVk
ZWYgdW5pb24gWVlTVFlQRQotCiB7Ci0jZGVmaW5lIFlZTFRZUEUgVFNvdXJjZUxvYwotI2RlZmlu
ZSBZWUxUWVBFX0lTX0RFQ0xBUkVEIDEKKworCiAgICAgc3RydWN0IHsKICAgICAgICAgdW5pb24g
ewogICAgICAgICAgICAgVFN0cmluZyAqc3RyaW5nOwpAQCAtMzQwLDEzICsyNjUsMTMgQEAgdHlw
ZWRlZiB1bmlvbiBZWVNUWVBFCiAgICAgICAgICAgICBURmllbGRMaXN0KiBmaWVsZExpc3Q7CiAg
ICAgICAgIH07CiAgICAgfSBpbnRlcm07Ci19Ci0vKiBMaW5lIDE5MyBvZiB5YWNjLmMuICAqLwog
Ci0JWVlTVFlQRTsKKworCit9IFlZU1RZUEU7CisjIGRlZmluZSBZWVNUWVBFX0lTX1RSSVZJQUwg
MQogIyBkZWZpbmUgeXlzdHlwZSBZWVNUWVBFIC8qIG9ic29sZXNjZW50OyB3aWxsIGJlIHdpdGhk
cmF3biAqLwogIyBkZWZpbmUgWVlTVFlQRV9JU19ERUNMQVJFRCAxCi0jIGRlZmluZSBZWVNUWVBF
X0lTX1RSSVZJQUwgMQogI2VuZGlmCiAKICNpZiAhIGRlZmluZWQgWVlMVFlQRSAmJiAhIGRlZmlu
ZWQgWVlMVFlQRV9JU19ERUNMQVJFRApAQCAtMzYzLDExICsyODgsMjcgQEAgdHlwZWRlZiBzdHJ1
Y3QgWVlMVFlQRQogI2VuZGlmCiAKIAorI2lmZGVmIFlZUEFSU0VfUEFSQU0KKyNpZiBkZWZpbmVk
IF9fU1REQ19fIHx8IGRlZmluZWQgX19jcGx1c3BsdXMKK2ludCB5eXBhcnNlICh2b2lkICpZWVBB
UlNFX1BBUkFNKTsKKyNlbHNlCitpbnQgeXlwYXJzZSAoKTsKKyNlbmRpZgorI2Vsc2UgLyogISBZ
WVBBUlNFX1BBUkFNICovCisjaWYgZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fY3BsdXNw
bHVzCitpbnQgeXlwYXJzZSAoVFBhcnNlQ29udGV4dCogY29udGV4dCk7CisjZWxzZQoraW50IHl5
cGFyc2UgKCk7CisjZW5kaWYKKyNlbmRpZiAvKiAhIFlZUEFSU0VfUEFSQU0gKi8KKworI2VuZGlm
IC8qICFZWV9ZWV9HTFNMQU5HX1RBQl9IX0lOQ0xVREVEICAqLworCiAvKiBDb3B5IHRoZSBzZWNv
bmQgcGFydCBvZiB1c2VyIGRlY2xhcmF0aW9ucy4gICovCiAKIAogZXh0ZXJuIGludCB5eWxleChZ
WVNUWVBFKiB5eWx2YWwsIFlZTFRZUEUqIHl5bGxvYywgdm9pZCogeXlzY2FubmVyKTsKLXN0YXRp
YyB2b2lkIHl5ZXJyb3IoWVlMVFlQRSogeXlsbG9jLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBjaGFyKiByZWFzb24pOworZXh0ZXJuIHZvaWQgeXllcnJvcihZWUxUWVBFKiB5eWxsb2Ms
IFRQYXJzZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbik7CiAKICNkZWZpbmUg
WVlMTE9DX0RFRkFVTFQoQ3VycmVudCwgUmhzLCBOKSAgICAgICAgICAgICAgICAgICAgICBcCiAg
IGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXApAQCAtNDAwLDggKzM0MSw2IEBAIHN0YXRpYyB2b2lkIHl5ZXJyb3IoWVlMVFlQRSogeXls
bG9jLCBUUGEKIH0KIAogCi0vKiBMaW5lIDIxNiBvZiB5YWNjLmMuICAqLwotCiAKICNpZmRlZiBz
aG9ydAogIyB1bmRlZiBzaG9ydApAQCAtNDU0LDM2ICszOTMsMzYgQEAgdHlwZWRlZiBzaG9ydCBp
bnQgeXl0eXBlX2ludDE2OwogIyBpZiBkZWZpbmVkIFlZRU5BQkxFX05MUyAmJiBZWUVOQUJMRV9O
TFMKICMgIGlmIEVOQUJMRV9OTFMKICMgICBpbmNsdWRlIDxsaWJpbnRsLmg+IC8qIElORlJJTkdF
UyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KLSMgICBkZWZpbmUgWVlfKG1zZ2lkKSBkZ2V0dGV4dCAo
ImJpc29uLXJ1bnRpbWUiLCBtc2dpZCkKKyMgICBkZWZpbmUgWVlfKE1zZ2lkKSBkZ2V0dGV4dCAo
ImJpc29uLXJ1bnRpbWUiLCBNc2dpZCkKICMgIGVuZGlmCiAjIGVuZGlmCiAjIGlmbmRlZiBZWV8K
LSMgIGRlZmluZSBZWV8obXNnaWQpIG1zZ2lkCisjICBkZWZpbmUgWVlfKE1zZ2lkKSBNc2dpZAog
IyBlbmRpZgogI2VuZGlmCiAKIC8qIFN1cHByZXNzIHVudXNlZC12YXJpYWJsZSB3YXJuaW5ncyBi
eSAidXNpbmciIEUuICAqLwogI2lmICEgZGVmaW5lZCBsaW50IHx8IGRlZmluZWQgX19HTlVDX18K
LSMgZGVmaW5lIFlZVVNFKGUpICgodm9pZCkgKGUpKQorIyBkZWZpbmUgWVlVU0UoRSkgKCh2b2lk
KSAoRSkpCiAjZWxzZQotIyBkZWZpbmUgWVlVU0UoZSkgLyogZW1wdHkgKi8KKyMgZGVmaW5lIFlZ
VVNFKEUpIC8qIGVtcHR5ICovCiAjZW5kaWYKIAogLyogSWRlbnRpdHkgZnVuY3Rpb24sIHVzZWQg
dG8gc3VwcHJlc3Mgd2FybmluZ3MgYWJvdXQgY29uc3RhbnQgY29uZGl0aW9ucy4gICovCiAjaWZu
ZGVmIGxpbnQKLSMgZGVmaW5lIFlZSUQobikgKG4pCisjIGRlZmluZSBZWUlEKE4pIChOKQogI2Vs
c2UKICNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAogICAg
ICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCiBzdGF0aWMgaW50
Ci1ZWUlEIChpbnQgaSkKK1lZSUQgKGludCB5eWkpCiAjZWxzZQogc3RhdGljIGludAotWVlJRCAo
aSkKLSAgICBpbnQgaTsKK1lZSUQgKHl5aSkKKyAgICBpbnQgeXlpOwogI2VuZGlmCiB7Ci0gIHJl
dHVybiBpOworICByZXR1cm4geXlpOwogfQogI2VuZGlmCiAKQEAgLTUwNCwxMSArNDQzLDEyIEBA
IFlZSUQgKGkpCiAjICAgIGRlZmluZSBhbGxvY2EgX2FsbG9jYQogIyAgIGVsc2UKICMgICAgZGVm
aW5lIFlZU1RBQ0tfQUxMT0MgYWxsb2NhCi0jICAgIGlmICEgZGVmaW5lZCBfQUxMT0NBX0ggJiYg
ISBkZWZpbmVkIF9TVERMSUJfSCAmJiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5
X19GVU5DX18gXAorIyAgICBpZiAhIGRlZmluZWQgX0FMTE9DQV9IICYmICEgZGVmaW5lZCBFWElU
X1NVQ0NFU1MgJiYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwK
ICAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogIyAgICAg
aW5jbHVkZSA8c3RkbGliLmg+IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KLSMg
ICAgIGlmbmRlZiBfU1RETElCX0gKLSMgICAgICBkZWZpbmUgX1NURExJQl9IIDEKKyAgICAgIC8q
IFVzZSBFWElUX1NVQ0NFU1MgYXMgYSB3aXRuZXNzIGZvciBzdGRsaWIuaC4gICovCisjICAgICBp
Zm5kZWYgRVhJVF9TVUNDRVNTCisjICAgICAgZGVmaW5lIEVYSVRfU1VDQ0VTUyAwCiAjICAgICBl
bmRpZgogIyAgICBlbmRpZgogIyAgIGVuZGlmCkBAIC01MzEsMjQgKzQ3MSwyNCBAQCBZWUlEIChp
KQogIyAgaWZuZGVmIFlZU1RBQ0tfQUxMT0NfTUFYSU1VTQogIyAgIGRlZmluZSBZWVNUQUNLX0FM
TE9DX01BWElNVU0gWVlTSVpFX01BWElNVU0KICMgIGVuZGlmCi0jICBpZiAoZGVmaW5lZCBfX2Nw
bHVzcGx1cyAmJiAhIGRlZmluZWQgX1NURExJQl9IIFwKKyMgIGlmIChkZWZpbmVkIF9fY3BsdXNw
bHVzICYmICEgZGVmaW5lZCBFWElUX1NVQ0NFU1MgXAogICAgICAgICYmICEgKChkZWZpbmVkIFlZ
TUFMTE9DIHx8IGRlZmluZWQgbWFsbG9jKSBcCiAJICAgICAmJiAoZGVmaW5lZCBZWUZSRUUgfHwg
ZGVmaW5lZCBmcmVlKSkpCiAjICAgaW5jbHVkZSA8c3RkbGliLmg+IC8qIElORlJJTkdFUyBPTiBV
U0VSIE5BTUUgU1BBQ0UgKi8KLSMgICBpZm5kZWYgX1NURExJQl9ICi0jICAgIGRlZmluZSBfU1RE
TElCX0ggMQorIyAgIGlmbmRlZiBFWElUX1NVQ0NFU1MKKyMgICAgZGVmaW5lIEVYSVRfU1VDQ0VT
UyAwCiAjICAgZW5kaWYKICMgIGVuZGlmCiAjICBpZm5kZWYgWVlNQUxMT0MKICMgICBkZWZpbmUg
WVlNQUxMT0MgbWFsbG9jCi0jICAgaWYgISBkZWZpbmVkIG1hbGxvYyAmJiAhIGRlZmluZWQgX1NU
RExJQl9IICYmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCisj
ICAgaWYgISBkZWZpbmVkIG1hbGxvYyAmJiAhIGRlZmluZWQgRVhJVF9TVUNDRVNTICYmIChkZWZp
bmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAgIHx8IGRlZmluZWQg
X19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHZvaWQgKm1hbGxvYyAoWVlTSVpFX1Qp
OyAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCiAjICAgZW5kaWYKICMgIGVuZGlm
CiAjICBpZm5kZWYgWVlGUkVFCiAjICAgZGVmaW5lIFlZRlJFRSBmcmVlCi0jICAgaWYgISBkZWZp
bmVkIGZyZWUgJiYgISBkZWZpbmVkIF9TVERMSUJfSCAmJiAoZGVmaW5lZCBfX1NURENfXyB8fCBk
ZWZpbmVkIF9fQzk5X19GVU5DX18gXAorIyAgIGlmICEgZGVmaW5lZCBmcmVlICYmICEgZGVmaW5l
ZCBFWElUX1NVQ0NFU1MgJiYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVO
Q19fIFwKICAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQog
dm9pZCBmcmVlICh2b2lkICopOyAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCiAj
ICAgZW5kaWYKQEAgLTU2NSw5ICs1MDUsOSBAQCB2b2lkIGZyZWUgKHZvaWQgKik7IC8qIElORlJJ
TkdFUyBPTiBVU0VSCiAvKiBBIHR5cGUgdGhhdCBpcyBwcm9wZXJseSBhbGlnbmVkIGZvciBhbnkg
c3RhY2sgbWVtYmVyLiAgKi8KIHVuaW9uIHl5YWxsb2MKIHsKLSAgeXl0eXBlX2ludDE2IHl5c3M7
Ci0gIFlZU1RZUEUgeXl2czsKLSAgICBZWUxUWVBFIHl5bHM7CisgIHl5dHlwZV9pbnQxNiB5eXNz
X2FsbG9jOworICBZWVNUWVBFIHl5dnNfYWxsb2M7CisgIFlZTFRZUEUgeXlsc19hbGxvYzsKIH07
CiAKIC8qIFRoZSBzaXplIG9mIHRoZSBtYXhpbXVtIGdhcCBiZXR3ZWVuIG9uZSBhbGlnbmVkIHN0
YWNrIGFuZCB0aGUgbmV4dC4gICovCkBAIC01NzksMzUgKzUxOSwxOSBAQCB1bmlvbiB5eWFsbG9j
CiAgICAgICgoTikgKiAoc2l6ZW9mICh5eXR5cGVfaW50MTYpICsgc2l6ZW9mIChZWVNUWVBFKSAr
IHNpemVvZiAoWVlMVFlQRSkpIFwKICAgICAgICsgMiAqIFlZU1RBQ0tfR0FQX01BWElNVU0pCiAK
LS8qIENvcHkgQ09VTlQgb2JqZWN0cyBmcm9tIEZST00gdG8gVE8uICBUaGUgc291cmNlIGFuZCBk
ZXN0aW5hdGlvbiBkbwotICAgbm90IG92ZXJsYXAuICAqLwotIyBpZm5kZWYgWVlDT1BZCi0jICBp
ZiBkZWZpbmVkIF9fR05VQ19fICYmIDEgPCBfX0dOVUNfXwotIyAgIGRlZmluZSBZWUNPUFkoVG8s
IEZyb20sIENvdW50KSBcCi0gICAgICBfX2J1aWx0aW5fbWVtY3B5IChUbywgRnJvbSwgKENvdW50
KSAqIHNpemVvZiAoKihGcm9tKSkpCi0jICBlbHNlCi0jICAgZGVmaW5lIFlZQ09QWShUbywgRnJv
bSwgQ291bnQpCQlcCi0gICAgICBkbwkJCQkJXAotCXsJCQkJCVwKLQkgIFlZU0laRV9UIHl5aTsJ
CQkJXAotCSAgZm9yICh5eWkgPSAwOyB5eWkgPCAoQ291bnQpOyB5eWkrKykJXAotCSAgICAoVG8p
W3l5aV0gPSAoRnJvbSlbeXlpXTsJCVwKLQl9CQkJCQlcCi0gICAgICB3aGlsZSAoWVlJRCAoMCkp
Ci0jICBlbmRpZgotIyBlbmRpZgorIyBkZWZpbmUgWVlDT1BZX05FRURFRCAxCiAKIC8qIFJlbG9j
YXRlIFNUQUNLIGZyb20gaXRzIG9sZCBsb2NhdGlvbiB0byB0aGUgbmV3IG9uZS4gIFRoZQogICAg
bG9jYWwgdmFyaWFibGVzIFlZU0laRSBhbmQgWVlTVEFDS1NJWkUgZ2l2ZSB0aGUgb2xkIGFuZCBu
ZXcgbnVtYmVyIG9mCiAgICBlbGVtZW50cyBpbiB0aGUgc3RhY2ssIGFuZCBZWVBUUiBnaXZlcyB0
aGUgbmV3IGxvY2F0aW9uIG9mIHRoZQogICAgc3RhY2suICBBZHZhbmNlIFlZUFRSIHRvIGEgcHJv
cGVybHkgYWxpZ25lZCBsb2NhdGlvbiBmb3IgdGhlIG5leHQKICAgIHN0YWNrLiAgKi8KLSMgZGVm
aW5lIFlZU1RBQ0tfUkVMT0NBVEUoU3RhY2spCQkJCQlcCisjIGRlZmluZSBZWVNUQUNLX1JFTE9D
QVRFKFN0YWNrX2FsbG9jLCBTdGFjaykJCQkJXAogICAgIGRvCQkJCQkJCQkJXAogICAgICAgewkJ
CQkJCQkJCVwKIAlZWVNJWkVfVCB5eW5ld2J5dGVzOwkJCQkJCVwKLQlZWUNPUFkgKCZ5eXB0ci0+
U3RhY2ssIFN0YWNrLCB5eXNpemUpOwkJCQlcCi0JU3RhY2sgPSAmeXlwdHItPlN0YWNrOwkJCQkJ
CVwKKwlZWUNPUFkgKCZ5eXB0ci0+U3RhY2tfYWxsb2MsIFN0YWNrLCB5eXNpemUpOwkJCVwKKwlT
dGFjayA9ICZ5eXB0ci0+U3RhY2tfYWxsb2M7CQkJCQlcCiAJeXluZXdieXRlcyA9IHl5c3RhY2tz
aXplICogc2l6ZW9mICgqU3RhY2spICsgWVlTVEFDS19HQVBfTUFYSU1VTTsgXAogCXl5cHRyICs9
IHl5bmV3Ynl0ZXMgLyBzaXplb2YgKCp5eXB0cik7CQkJCVwKICAgICAgIH0JCQkJCQkJCQlcCkBA
IC02MTUsNiArNTM5LDI2IEBAIHVuaW9uIHl5YWxsb2MKIAogI2VuZGlmCiAKKyNpZiBkZWZpbmVk
IFlZQ09QWV9ORUVERUQgJiYgWVlDT1BZX05FRURFRAorLyogQ29weSBDT1VOVCBvYmplY3RzIGZy
b20gU1JDIHRvIERTVC4gIFRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGRvCisgICBub3Qgb3Zl
cmxhcC4gICovCisjIGlmbmRlZiBZWUNPUFkKKyMgIGlmIGRlZmluZWQgX19HTlVDX18gJiYgMSA8
IF9fR05VQ19fCisjICAgZGVmaW5lIFlZQ09QWShEc3QsIFNyYywgQ291bnQpIFwKKyAgICAgIF9f
YnVpbHRpbl9tZW1jcHkgKERzdCwgU3JjLCAoQ291bnQpICogc2l6ZW9mICgqKFNyYykpKQorIyAg
ZWxzZQorIyAgIGRlZmluZSBZWUNPUFkoRHN0LCBTcmMsIENvdW50KSAgICAgICAgICAgICAgXAor
ICAgICAgZG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIFlZ
U0laRV9UIHl5aTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGZvciAoeXlp
ID0gMDsgeXlpIDwgKENvdW50KTsgeXlpKyspICAgXAorICAgICAgICAgICAgKERzdClbeXlpXSA9
IChTcmMpW3l5aV07ICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgd2hpbGUgKFlZSUQgKDApKQorIyAgZW5kaWYKKyMg
ZW5kaWYKKyNlbmRpZiAvKiAhWVlDT1BZX05FRURFRCAqLworCiAvKiBZWUZJTkFMIC0tIFN0YXRl
IG51bWJlciBvZiB0aGUgdGVybWluYXRpb24gc3RhdGUuICAqLwogI2RlZmluZSBZWUZJTkFMICA3
NAogLyogWVlMQVNUIC0tIExhc3QgaW5kZXggaW4gWVlUQUJMRS4gICovCkBAIC03NzAsMzEgKzcx
NCwzMSBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDE2IHl5cmhzW10gPQogLyogWVlSTElORVtZ
WU5dIC0tIHNvdXJjZSBsaW5lIHdoZXJlIHJ1bGUgbnVtYmVyIFlZTiB3YXMgZGVmaW5lZC4gICov
CiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5eXJsaW5lW10gPQogewotICAgICAgIDAsICAg
MTc2LCAgIDE3NiwgICAxNzcsICAgMTgwLCAgIDIyMywgICAyMjYsICAgMjM5LCAgIDI0NCwgICAy
NDksCi0gICAgIDI1NSwgICAyNTgsICAgMjYxLCAgIDI2NCwgICAzNTksICAgMzY5LCAgIDM4Miwg
ICAzOTAsICAgNDkwLCAgIDQ5MywKLSAgICAgNTAxLCAgIDUwNCwgICA1MTAsICAgNTE0LCAgIDUy
MSwgICA1MjcsICAgNTM2LCAgIDU0NCwgICA1OTksICAgNjA5LAotICAgICA2MTIsICAgNjIyLCAg
IDYzMiwgICA2NTMsICAgNjU0LCAgIDY1NSwgICA2NjAsICAgNjYxLCAgIDY2OSwgICA2ODAsCi0g
ICAgIDY4MSwgICA2ODksICAgNzAwLCAgIDcwNCwgICA3MDUsICAgNzE1LCAgIDcyNSwgICA3MzUs
ICAgNzQ4LCAgIDc0OSwKLSAgICAgNzU5LCAgIDc3MiwgICA3NzYsICAgNzgwLCAgIDc4NCwgICA3
ODUsICAgNzk4LCAgIDc5OSwgICA4MTIsICAgODEzLAotICAgICA4MjYsICAgODI3LCAgIDg0NCwg
ICA4NDUsICAgODU4LCAgIDg1OSwgICA4NjAsICAgODYxLCAgIDg2MiwgICA4NjYsCi0gICAgIDg2
OSwgICA4ODAsICAgODg4LCAgIDkxNSwgICA5MjAsICAgOTM0LCAgIDk4OSwgICA5OTIsICAgOTk5
LCAgMTAwNywKLSAgICAxMDI4LCAgMTA0OSwgIDEwNTksICAxMDg3LCAgMTA5MiwgIDExMDIsICAx
MTA3LCAgMTExNywgIDExMjAsICAxMTIzLAotICAgIDExMjYsICAxMTMyLCAgMTEzOSwgIDExNDIs
ICAxMTY0LCAgMTE4MiwgIDEyMDYsICAxMjI5LCAgMTIzMywgIDEyNTEsCi0gICAgMTI1OSwgIDEy
OTEsICAxMzExLCAgMTMzMiwgIDEzNDEsICAxMzY0LCAgMTM2NywgIDEzNzMsICAxMzgxLCAgMTM4
OSwKLSAgICAxMzk3LCAgMTQwNywgIDE0MTQsICAxNDE3LCAgMTQyMCwgIDE0MjYsICAxNDI5LCAg
MTQ0NCwgIDE0NDgsICAxNDUyLAotICAgIDE0NTYsICAxNDYwLCAgMTQ2NSwgIDE0NzAsICAxNDc1
LCAgMTQ4MCwgIDE0ODUsICAxNDkwLCAgMTQ5NSwgIDE1MDAsCi0gICAgMTUwNSwgIDE1MTAsICAx
NTE1LCAgMTUyMCwgIDE1MjQsICAxNTI4LCAgMTUzNiwgIDE1NDQsICAxNTQ4LCAgMTU2MSwKLSAg
ICAxNTYxLCAgMTU3NSwgIDE1NzUsICAxNTg0LCAgMTU4NywgIDE2MDMsICAxNjM2LCAgMTY0MCwg
IDE2NDYsICAxNjUzLAotICAgIDE2NjgsICAxNjcyLCAgMTY3NiwgIDE2NzcsICAxNjgzLCAgMTY4
NCwgIDE2ODUsICAxNjg2LCAgMTY4NywgIDE2OTEsCi0gICAgMTY5MiwgIDE2OTIsICAxNjkyLCAg
MTcwMiwgIDE3MDMsICAxNzA3LCAgMTcwNywgIDE3MDgsICAxNzA4LCAgMTcxMywKLSAgICAxNzE2
LCAgMTcyNiwgIDE3MjksICAxNzM1LCAgMTczNiwgIDE3NDAsICAxNzQ4LCAgMTc1MiwgIDE3NjIs
ICAxNzY3LAotICAgIDE3ODQsICAxNzg0LCAgMTc4OSwgIDE3ODksICAxNzk2LCAgMTc5NiwgIDE4
MDQsICAxODA3LCAgMTgxMywgIDE4MTYsCi0gICAgMTgyMiwgIDE4MjYsICAxODMzLCAgMTg0MCwg
IDE4NDcsICAxODU0LCAgMTg2NSwgIDE4NzQsICAxODc4LCAgMTg4NSwKLSAgICAxODg4LCAgMTg5
NCwgIDE4OTQKKyAgICAgICAwLCAgIDE4MCwgICAxODAsICAgMTgxLCAgIDE4NCwgICAyMjcsICAg
MjMwLCAgIDI0MywgICAyNDgsICAgMjUzLAorICAgICAyNTksICAgMjYyLCAgIDI2NSwgICAyNjgs
ICAgMzYzLCAgIDM3MywgICAzODYsICAgMzk0LCAgIDQ5NCwgICA0OTcsCisgICAgIDUwNSwgICA1
MDgsICAgNTE0LCAgIDUxOCwgICA1MjUsICAgNTMxLCAgIDU0MCwgICA1NDgsICAgNjAzLCAgIDYx
MywKKyAgICAgNjE2LCAgIDYyNiwgICA2MzYsICAgNjU3LCAgIDY1OCwgICA2NTksICAgNjY0LCAg
IDY2NSwgICA2NzMsICAgNjg0LAorICAgICA2ODUsICAgNjkzLCAgIDcwNCwgICA3MDgsICAgNzA5
LCAgIDcxOSwgICA3MjksICAgNzM5LCAgIDc1MiwgICA3NTMsCisgICAgIDc2MywgICA3NzYsICAg
NzgwLCAgIDc4NCwgICA3ODgsICAgNzg5LCAgIDgwMiwgICA4MDMsICAgODE2LCAgIDgxNywKKyAg
ICAgODMwLCAgIDgzMSwgICA4NDgsICAgODQ5LCAgIDg2MiwgICA4NjMsICAgODY0LCAgIDg2NSwg
ICA4NjYsICAgODcwLAorICAgICA4NzMsICAgODg0LCAgIDg5MiwgICA5MTksICAgOTI0LCAgIDkz
OCwgICA5OTMsICAgOTk2LCAgMTAwMywgIDEwMTEsCisgICAgMTAzMiwgIDEwNTMsICAxMDYzLCAg
MTA5MSwgIDEwOTYsICAxMTA2LCAgMTExMSwgIDExMjEsICAxMTI0LCAgMTEyNywKKyAgICAxMTMw
LCAgMTEzNiwgIDExNDMsICAxMTQ2LCAgMTE2OCwgIDExODYsICAxMjEwLCAgMTIzMywgIDEyMzcs
ICAxMjU1LAorICAgIDEyNjMsICAxMjk1LCAgMTMxNSwgIDEzMzYsICAxMzQ1LCAgMTM2OCwgIDEz
NzEsICAxMzc3LCAgMTM4NSwgIDEzOTMsCisgICAgMTQwMSwgIDE0MTEsICAxNDE4LCAgMTQyMSwg
IDE0MjQsICAxNDMwLCAgMTQzMywgIDE0NDgsICAxNDUyLCAgMTQ1NiwKKyAgICAxNDYwLCAgMTQ2
NCwgIDE0NjksICAxNDc0LCAgMTQ3OSwgIDE0ODQsICAxNDg5LCAgMTQ5NCwgIDE0OTksICAxNTA0
LAorICAgIDE1MDksICAxNTE0LCAgMTUxOSwgIDE1MjQsICAxNTI4LCAgMTUzMiwgIDE1NDAsICAx
NTQ4LCAgMTU1MiwgIDE1NjUsCisgICAgMTU2NSwgIDE1NzksICAxNTc5LCAgMTU4OCwgIDE1OTEs
ICAxNjA3LCAgMTY0MCwgIDE2NDQsICAxNjUwLCAgMTY1NywKKyAgICAxNjcyLCAgMTY3NiwgIDE2
ODAsICAxNjgxLCAgMTY4NywgIDE2ODgsICAxNjg5LCAgMTY5MCwgIDE2OTEsICAxNjk1LAorICAg
IDE2OTYsICAxNjk2LCAgMTY5NiwgIDE3MDYsICAxNzA3LCAgMTcxMSwgIDE3MTEsICAxNzEyLCAg
MTcxMiwgIDE3MTcsCisgICAgMTcyMCwgIDE3MzAsICAxNzMzLCAgMTczOSwgIDE3NDAsICAxNzQ0
LCAgMTc1MiwgIDE3NTYsICAxNzY2LCAgMTc3MSwKKyAgICAxNzg4LCAgMTc4OCwgIDE3OTMsICAx
NzkzLCAgMTgwMCwgIDE4MDAsICAxODA4LCAgMTgxMSwgIDE4MTcsICAxODIwLAorICAgIDE4MjYs
ICAxODMwLCAgMTgzNywgIDE4NDQsICAxODUxLCAgMTg1OCwgIDE4NjksICAxODc4LCAgMTg4Miwg
IDE4ODksCisgICAgMTg5MiwgIDE4OTgsICAxODk4CiB9OwogI2VuZGlmCiAKLSNpZiBZWURFQlVH
IHx8IFlZRVJST1JfVkVSQk9TRSB8fCBZWVRPS0VOX1RBQkxFCisjaWYgWVlERUJVRyB8fCBZWUVS
Uk9SX1ZFUkJPU0UgfHwgMAogLyogWVlUTkFNRVtTWU1CT0wtTlVNXSAtLSBTdHJpbmcgbmFtZSBv
ZiB0aGUgc3ltYm9sIFNZTUJPTC1OVU0uCiAgICBGaXJzdCwgdGhlIHRlcm1pbmFscywgdGhlbiwg
c3RhcnRpbmcgYXQgWVlOVE9LRU5TLCBub250ZXJtaW5hbHMuICAqLwogc3RhdGljIGNvbnN0IGNo
YXIgKmNvbnN0IHl5dG5hbWVbXSA9CkBAIC04MzQsMTYgKzc3OCwxNiBAQCBzdGF0aWMgY29uc3Qg
Y2hhciAqY29uc3QgeXl0bmFtZVtdID0KICAgImluaXRfZGVjbGFyYXRvcl9saXN0IiwgInNpbmds
ZV9kZWNsYXJhdGlvbiIsICJmdWxseV9zcGVjaWZpZWRfdHlwZSIsCiAgICJ0eXBlX3F1YWxpZmll
ciIsICJ0eXBlX3NwZWNpZmllciIsICJwcmVjaXNpb25fcXVhbGlmaWVyIiwKICAgInR5cGVfc3Bl
Y2lmaWVyX25vX3ByZWMiLCAidHlwZV9zcGVjaWZpZXJfbm9uYXJyYXkiLCAic3RydWN0X3NwZWNp
ZmllciIsCi0gICJAMSIsICJAMiIsICJzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdCIsICJzdHJ1Y3Rf
ZGVjbGFyYXRpb24iLAorICAiJEAxIiwgIiRAMiIsICJzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdCIs
ICJzdHJ1Y3RfZGVjbGFyYXRpb24iLAogICAic3RydWN0X2RlY2xhcmF0b3JfbGlzdCIsICJzdHJ1
Y3RfZGVjbGFyYXRvciIsICJpbml0aWFsaXplciIsCiAgICJkZWNsYXJhdGlvbl9zdGF0ZW1lbnQi
LCAic3RhdGVtZW50IiwgInNpbXBsZV9zdGF0ZW1lbnQiLAotICAiY29tcG91bmRfc3RhdGVtZW50
IiwgIkAzIiwgIkA0IiwgInN0YXRlbWVudF9ub19uZXdfc2NvcGUiLAotICAic3RhdGVtZW50X3dp
dGhfc2NvcGUiLCAiQDUiLCAiQDYiLCAiY29tcG91bmRfc3RhdGVtZW50X25vX25ld19zY29wZSIs
CisgICJjb21wb3VuZF9zdGF0ZW1lbnQiLCAiJEAzIiwgIiRANCIsICJzdGF0ZW1lbnRfbm9fbmV3
X3Njb3BlIiwKKyAgInN0YXRlbWVudF93aXRoX3Njb3BlIiwgIiRANSIsICIkQDYiLCAiY29tcG91
bmRfc3RhdGVtZW50X25vX25ld19zY29wZSIsCiAgICJzdGF0ZW1lbnRfbGlzdCIsICJleHByZXNz
aW9uX3N0YXRlbWVudCIsICJzZWxlY3Rpb25fc3RhdGVtZW50IiwKLSAgInNlbGVjdGlvbl9yZXN0
X3N0YXRlbWVudCIsICJjb25kaXRpb24iLCAiaXRlcmF0aW9uX3N0YXRlbWVudCIsICJANyIsCi0g
ICJAOCIsICJAOSIsICJmb3JfaW5pdF9zdGF0ZW1lbnQiLCAiY29uZGl0aW9ub3B0IiwgImZvcl9y
ZXN0X3N0YXRlbWVudCIsCisgICJzZWxlY3Rpb25fcmVzdF9zdGF0ZW1lbnQiLCAiY29uZGl0aW9u
IiwgIml0ZXJhdGlvbl9zdGF0ZW1lbnQiLCAiJEA3IiwKKyAgIiRAOCIsICIkQDkiLCAiZm9yX2lu
aXRfc3RhdGVtZW50IiwgImNvbmRpdGlvbm9wdCIsICJmb3JfcmVzdF9zdGF0ZW1lbnQiLAogICAi
anVtcF9zdGF0ZW1lbnQiLCAidHJhbnNsYXRpb25fdW5pdCIsICJleHRlcm5hbF9kZWNsYXJhdGlv
biIsCi0gICJmdW5jdGlvbl9kZWZpbml0aW9uIiwgIkAxMCIsIDAKKyAgImZ1bmN0aW9uX2RlZmlu
aXRpb24iLCAiJEAxMCIsIFlZX05VTEwKIH07CiAjZW5kaWYKIApAQCAtOTE3LDggKzg2MSw4IEBA
IHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlyMltdID0KICAgICAgICAxLCAgICAgMCwgICAg
IDMKIH07CiAKLS8qIFlZREVGQUNUW1NUQVRFLU5BTUVdIC0tIERlZmF1bHQgcnVsZSB0byByZWR1
Y2Ugd2l0aCBpbiBzdGF0ZQotICAgU1RBVEUtTlVNIHdoZW4gWVlUQUJMRSBkb2Vzbid0IHNwZWNp
Znkgc29tZXRoaW5nIGVsc2UgdG8gZG8uICBaZXJvCisvKiBZWURFRkFDVFtTVEFURS1OQU1FXSAt
LSBEZWZhdWx0IHJlZHVjdGlvbiBudW1iZXIgaW4gc3RhdGUgU1RBVEUtTlVNLgorICAgUGVyZm9y
bWVkIHdoZW4gWVlUQUJMRSBkb2Vzbid0IHNwZWNpZnkgc29tZXRoaW5nIGVsc2UgdG8gZG8uICBa
ZXJvCiAgICBtZWFucyB0aGUgZGVmYXVsdCBpcyBhbiBlcnJvci4gICovCiBzdGF0aWMgY29uc3Qg
eXl0eXBlX3VpbnQ4IHl5ZGVmYWN0W10gPQogewpAQCAtMTAyMyw4ICs5NjcsNyBAQCBzdGF0aWMg
Y29uc3QgeXl0eXBlX2ludDE2IHl5cGdvdG9bXSA9CiAKIC8qIFlZVEFCTEVbWVlQQUNUW1NUQVRF
LU5VTV1dLiAgV2hhdCB0byBkbyBpbiBzdGF0ZSBTVEFURS1OVU0uICBJZgogICAgcG9zaXRpdmUs
IHNoaWZ0IHRoYXQgdG9rZW4uICBJZiBuZWdhdGl2ZSwgcmVkdWNlIHRoZSBydWxlIHdoaWNoCi0g
ICBudW1iZXIgaXMgdGhlIG9wcG9zaXRlLiAgSWYgemVybywgZG8gd2hhdCBZWURFRkFDVCBzYXlz
LgotICAgSWYgWVlUQUJMRV9OSU5GLCBzeW50YXggZXJyb3IuICAqLworICAgbnVtYmVyIGlzIHRo
ZSBvcHBvc2l0ZS4gIElmIFlZVEFCTEVfTklORiwgc3ludGF4IGVycm9yLiAgKi8KICNkZWZpbmUg
WVlUQUJMRV9OSU5GIC0xNjYKIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXl0YWJsZVtdID0K
IHsKQEAgLTExODAsNiArMTEyMywxMiBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDE2IHl5dGFi
bGVbXSA9CiAgICAgICAzMQogfTsKIAorI2RlZmluZSB5eXBhY3RfdmFsdWVfaXNfZGVmYXVsdChZ
eXN0YXRlKSBcCisgICghISgoWXlzdGF0ZSkgPT0gKC0yNjEpKSkKKworI2RlZmluZSB5eXRhYmxl
X3ZhbHVlX2lzX2Vycm9yKFl5dGFibGVfdmFsdWUpIFwKKyAgWVlJRCAoMCkKKwogc3RhdGljIGNv
bnN0IHl5dHlwZV9pbnQxNiB5eWNoZWNrW10gPQogewogICAgICAgIDAsICAgIDI1LCAgICA4OSwg
ICAgODgsICAgIDk2LCAgICA1NywgICAxNjIsICAgIDczLCAgIDE1MywgICAxMjgsCkBAIC0xMzgz
LDMwICsxMzMyLDM5IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlzdG9zW10gPQogCiAv
KiBMaWtlIFlZRVJST1IgZXhjZXB0IGRvIGNhbGwgeXllcnJvci4gIFRoaXMgcmVtYWlucyBoZXJl
IHRlbXBvcmFyaWx5CiAgICB0byBlYXNlIHRoZSB0cmFuc2l0aW9uIHRvIHRoZSBuZXcgbWVhbmlu
ZyBvZiBZWUVSUk9SLCBmb3IgR0NDLgotICAgT25jZSBHQ0MgdmVyc2lvbiAyIGhhcyBzdXBwbGFu
dGVkIHZlcnNpb24gMSwgdGhpcyBjYW4gZ28uICAqLworICAgT25jZSBHQ0MgdmVyc2lvbiAyIGhh
cyBzdXBwbGFudGVkIHZlcnNpb24gMSwgdGhpcyBjYW4gZ28uICBIb3dldmVyLAorICAgWVlGQUlM
IGFwcGVhcnMgdG8gYmUgaW4gdXNlLiAgTmV2ZXJ0aGVsZXNzLCBpdCBpcyBmb3JtYWxseSBkZXBy
ZWNhdGVkCisgICBpbiBCaXNvbiAyLjQuMidzIE5FV1MgZW50cnksIHdoZXJlIGEgcGxhbiB0byBw
aGFzZSBpdCBvdXQgaXMKKyAgIGRpc2N1c3NlZC4gICovCiAKICNkZWZpbmUgWVlGQUlMCQlnb3Rv
IHl5ZXJybGFiCisjaWYgZGVmaW5lZCBZWUZBSUwKKyAgLyogVGhpcyBpcyBoZXJlIHRvIHN1cHBy
ZXNzIHdhcm5pbmdzIGZyb20gdGhlIEdDQyBjcHAncworICAgICAtV3VudXNlZC1tYWNyb3MuICBO
b3JtYWxseSB3ZSBkb24ndCB3b3JyeSBhYm91dCB0aGF0IHdhcm5pbmcsIGJ1dAorICAgICBzb21l
IHVzZXJzIGRvLCBhbmQgd2Ugd2FudCB0byBtYWtlIGl0IGVhc3kgZm9yIHVzZXJzIHRvIHJlbW92
ZQorICAgICBZWUZBSUwgdXNlcywgd2hpY2ggd2lsbCBwcm9kdWNlIHdhcm5pbmdzIGZyb20gQmlz
b24gMi41LiAgKi8KKyNlbmRpZgogCiAjZGVmaW5lIFlZUkVDT1ZFUklORygpICAoISF5eWVycnN0
YXR1cykKIAotI2RlZmluZSBZWUJBQ0tVUChUb2tlbiwgVmFsdWUpCQkJCQlcCi1kbwkJCQkJCQkJ
XAotICBpZiAoeXljaGFyID09IFlZRU1QVFkgJiYgeXlsZW4gPT0gMSkJCQkJXAotICAgIHsJCQkJ
CQkJCVwKLSAgICAgIHl5Y2hhciA9IChUb2tlbik7CQkJCQkJXAotICAgICAgeXlsdmFsID0gKFZh
bHVlKTsJCQkJCQlcCi0gICAgICB5eXRva2VuID0gWVlUUkFOU0xBVEUgKHl5Y2hhcik7CQkJCVwK
LSAgICAgIFlZUE9QU1RBQ0sgKDEpOwkJCQkJCVwKLSAgICAgIGdvdG8geXliYWNrdXA7CQkJCQkJ
XAotICAgIH0JCQkJCQkJCVwKLSAgZWxzZQkJCQkJCQkJXAotICAgIHsJCQkJCQkJCVwKKyNkZWZp
bmUgWVlCQUNLVVAoVG9rZW4sIFZhbHVlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCitkbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICBpZiAoeXljaGFyID09IFlZRU1QVFkpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICB5eWNoYXIgPSAoVG9rZW4p
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgeXlsdmFs
ID0gKFZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgIFlZUE9QU1RBQ0sgKHl5bGVuKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICB5eXN0YXRlID0gKnl5c3NwOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgZ290byB5eWJhY2t1cDsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGVsc2UgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
ICAgICAgIHl5ZXJyb3IgKCZ5eWxsb2MsIGNvbnRleHQsIFlZXygic3ludGF4IGVycm9yOiBjYW5u
b3QgYmFjayB1cCIpKTsgXAogICAgICAgWVlFUlJPUjsJCQkJCQkJXAogICAgIH0JCQkJCQkJCVwK
IHdoaWxlIChZWUlEICgwKSkKIAotCisvKiBFcnJvciB0b2tlbiBudW1iZXIgKi8KICNkZWZpbmUg
WVlURVJST1IJMQogI2RlZmluZSBZWUVSUkNPREUJMjU2CiAKQEAgLTE0MTUsMjcgKzEzNzMsMjgg
QEAgd2hpbGUgKFlZSUQgKDApKQogICAgSWYgTiBpcyAwLCB0aGVuIHNldCBDVVJSRU5UIHRvIHRo
ZSBlbXB0eSBsb2NhdGlvbiB3aGljaCBlbmRzCiAgICB0aGUgcHJldmlvdXMgc3ltYm9sOiBSSFNb
MF0gKGFsd2F5cyBkZWZpbmVkKS4gICovCiAKLSNkZWZpbmUgWVlSSFNMT0MoUmhzLCBLKSAoKFJo
cylbS10pCiAjaWZuZGVmIFlZTExPQ19ERUZBVUxUCi0jIGRlZmluZSBZWUxMT0NfREVGQVVMVChD
dXJyZW50LCBSaHMsIE4pCQkJCVwKLSAgICBkbwkJCQkJCQkJCVwKLSAgICAgIGlmIChZWUlEIChO
KSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
CXsJCQkJCQkJCVwKLQkgIChDdXJyZW50KS5maXJzdF9saW5lICAgPSBZWVJIU0xPQyAoUmhzLCAx
KS5maXJzdF9saW5lOwlcCi0JICAoQ3VycmVudCkuZmlyc3RfY29sdW1uID0gWVlSSFNMT0MgKFJo
cywgMSkuZmlyc3RfY29sdW1uOwlcCi0JICAoQ3VycmVudCkubGFzdF9saW5lICAgID0gWVlSSFNM
T0MgKFJocywgTikubGFzdF9saW5lOwkJXAotCSAgKEN1cnJlbnQpLmxhc3RfY29sdW1uICA9IFlZ
UkhTTE9DIChSaHMsIE4pLmxhc3RfY29sdW1uOwlcCi0JfQkJCQkJCQkJXAotICAgICAgZWxzZQkJ
CQkJCQkJXAotCXsJCQkJCQkJCVwKLQkgIChDdXJyZW50KS5maXJzdF9saW5lICAgPSAoQ3VycmVu
dCkubGFzdF9saW5lICAgPQkJXAotCSAgICBZWVJIU0xPQyAoUmhzLCAwKS5sYXN0X2xpbmU7CQkJ
CVwKLQkgIChDdXJyZW50KS5maXJzdF9jb2x1bW4gPSAoQ3VycmVudCkubGFzdF9jb2x1bW4gPQkJ
XAotCSAgICBZWVJIU0xPQyAoUmhzLCAwKS5sYXN0X2NvbHVtbjsJCQkJXAotCX0JCQkJCQkJCVwK
KyMgZGVmaW5lIFlZTExPQ19ERUZBVUxUKEN1cnJlbnQsIFJocywgTikgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBkbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGlmIChZWUlEIChOKSkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgICAoQ3VycmVudCkuZmlyc3RfbGluZSAgID0gWVlSSFNM
T0MgKFJocywgMSkuZmlyc3RfbGluZTsgICAgICAgIFwKKyAgICAgICAgICAoQ3VycmVudCkuZmly
c3RfY29sdW1uID0gWVlSSFNMT0MgKFJocywgMSkuZmlyc3RfY29sdW1uOyAgICAgIFwKKyAgICAg
ICAgICAoQ3VycmVudCkubGFzdF9saW5lICAgID0gWVlSSFNMT0MgKFJocywgTikubGFzdF9saW5l
OyAgICAgICAgIFwKKyAgICAgICAgICAoQ3VycmVudCkubGFzdF9jb2x1bW4gID0gWVlSSFNMT0Mg
KFJocywgTikubGFzdF9jb2x1bW47ICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGVs
c2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoQ3VycmVudCkuZmlyc3RfbGlu
ZSAgID0gKEN1cnJlbnQpLmxhc3RfbGluZSAgID0gICAgICAgICAgICAgIFwKKyAgICAgICAgICAg
IFlZUkhTTE9DIChSaHMsIDApLmxhc3RfbGluZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAoQ3VycmVudCkuZmlyc3RfY29sdW1uID0gKEN1cnJlbnQpLmxhc3Rf
Y29sdW1uID0gICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFlZUkhTTE9DIChSaHMsIDApLmxh
c3RfY29sdW1uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICB3aGlsZSAoWVlJRCAoMCkpCiAjZW5kaWYKIAorI2RlZmluZSBZWVJIU0xPQyhSaHMs
IEspICgoUmhzKVtLXSkKKwogCiAvKiBZWV9MT0NBVElPTl9QUklOVCAtLSBQcmludCB0aGUgbG9j
YXRpb24gb24gdGhlIHN0cmVhbS4KICAgIFRoaXMgbWFjcm8gd2FzIG5vdCBtYW5kYXRlZCBvcmln
aW5hbGx5OiBkZWZpbmUgb25seSBpZiB3ZSBrbm93CkBAIC0xNDQzLDEwICsxNDAyLDQ2IEBAIHdo
aWxlIChZWUlEICgwKSkKIAogI2lmbmRlZiBZWV9MT0NBVElPTl9QUklOVAogIyBpZiBkZWZpbmVk
IFlZTFRZUEVfSVNfVFJJVklBTCAmJiBZWUxUWVBFX0lTX1RSSVZJQUwKLSMgIGRlZmluZSBZWV9M
T0NBVElPTl9QUklOVChGaWxlLCBMb2MpCQkJXAotICAgICBmcHJpbnRmIChGaWxlLCAiJWQuJWQt
JWQuJWQiLAkJCVwKLQkgICAgICAoTG9jKS5maXJzdF9saW5lLCAoTG9jKS5maXJzdF9jb2x1bW4s
CVwKLQkgICAgICAoTG9jKS5sYXN0X2xpbmUsICAoTG9jKS5sYXN0X2NvbHVtbikKKworLyogUHJp
bnQgKllZTE9DUCBvbiBZWU8uICBQcml2YXRlLCBkbyBub3QgcmVseSBvbiBpdHMgZXhpc3RlbmNl
LiAqLworCitfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkKKyNpZiAoZGVmaW5lZCBfX1NURENf
XyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAorICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVz
IHx8IGRlZmluZWQgX01TQ19WRVIpCitzdGF0aWMgdW5zaWduZWQKK3l5X2xvY2F0aW9uX3ByaW50
XyAoRklMRSAqeXlvLCBZWUxUWVBFIGNvbnN0ICogY29uc3QgeXlsb2NwKQorI2Vsc2UKK3N0YXRp
YyB1bnNpZ25lZAoreXlfbG9jYXRpb25fcHJpbnRfICh5eW8sIHl5bG9jcCkKKyAgICBGSUxFICp5
eW87CisgICAgWVlMVFlQRSBjb25zdCAqIGNvbnN0IHl5bG9jcDsKKyNlbmRpZgoreworICB1bnNp
Z25lZCByZXMgPSAwOworICBpbnQgZW5kX2NvbCA9IDAgIT0geXlsb2NwLT5sYXN0X2NvbHVtbiA/
IHl5bG9jcC0+bGFzdF9jb2x1bW4gLSAxIDogMDsKKyAgaWYgKDAgPD0geXlsb2NwLT5maXJzdF9s
aW5lKQorICAgIHsKKyAgICAgIHJlcyArPSBmcHJpbnRmICh5eW8sICIlZCIsIHl5bG9jcC0+Zmly
c3RfbGluZSk7CisgICAgICBpZiAoMCA8PSB5eWxvY3AtPmZpcnN0X2NvbHVtbikKKyAgICAgICAg
cmVzICs9IGZwcmludGYgKHl5bywgIi4lZCIsIHl5bG9jcC0+Zmlyc3RfY29sdW1uKTsKKyAgICB9
CisgIGlmICgwIDw9IHl5bG9jcC0+bGFzdF9saW5lKQorICAgIHsKKyAgICAgIGlmICh5eWxvY3At
PmZpcnN0X2xpbmUgPCB5eWxvY3AtPmxhc3RfbGluZSkKKyAgICAgICAgeworICAgICAgICAgIHJl
cyArPSBmcHJpbnRmICh5eW8sICItJWQiLCB5eWxvY3AtPmxhc3RfbGluZSk7CisgICAgICAgICAg
aWYgKDAgPD0gZW5kX2NvbCkKKyAgICAgICAgICAgIHJlcyArPSBmcHJpbnRmICh5eW8sICIuJWQi
LCBlbmRfY29sKTsKKyAgICAgICAgfQorICAgICAgZWxzZSBpZiAoMCA8PSBlbmRfY29sICYmIHl5
bG9jcC0+Zmlyc3RfY29sdW1uIDwgZW5kX2NvbCkKKyAgICAgICAgcmVzICs9IGZwcmludGYgKHl5
bywgIi0lZCIsIGVuZF9jb2wpOworICAgIH0KKyAgcmV0dXJuIHJlczsKKyB9CisKKyMgIGRlZmlu
ZSBZWV9MT0NBVElPTl9QUklOVChGaWxlLCBMb2MpICAgICAgICAgIFwKKyAgeXlfbG9jYXRpb25f
cHJpbnRfIChGaWxlLCAmKExvYykpCisKICMgZWxzZQogIyAgZGVmaW5lIFlZX0xPQ0FUSU9OX1BS
SU5UKEZpbGUsIExvYykgKCh2b2lkKSAwKQogIyBlbmRpZgpAQCAtMTQ1NCw3ICsxNDQ5LDYgQEAg
d2hpbGUgKFlZSUQgKDApKQogCiAKIC8qIFlZTEVYIC0tIGNhbGxpbmcgYHl5bGV4JyB3aXRoIHRo
ZSByaWdodCBhcmd1bWVudHMuICAqLwotCiAjaWZkZWYgWVlMRVhfUEFSQU0KICMgZGVmaW5lIFlZ
TEVYIHl5bGV4ICgmeXlsdmFsLCAmeXlsbG9jLCBZWUxFWF9QQVJBTSkKICNlbHNlCkBAIC0xNTA2
LDYgKzE1MDAsOCBAQCB5eV9zeW1ib2xfdmFsdWVfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsCiAg
ICAgVFBhcnNlQ29udGV4dCogY29udGV4dDsKICNlbmRpZgogeworICBGSUxFICp5eW8gPSB5eW91
dHB1dDsKKyAgWVlVU0UgKHl5byk7CiAgIGlmICgheXl2YWx1ZXApCiAgICAgcmV0dXJuOwogICBZ
WVVTRSAoeXlsb2NhdGlvbnApOwpAQCAtMTUxOSw3ICsxNTE1LDcgQEAgeXlfc3ltYm9sX3ZhbHVl
X3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLAogICBzd2l0Y2ggKHl5dHlwZSkKICAgICB7CiAgICAg
ICBkZWZhdWx0OgotCWJyZWFrOworICAgICAgICBicmVhazsKICAgICB9CiB9CiAKQEAgLTE1NjEs
MTcgKzE1NTcsMjAgQEAgeXlfc3ltYm9sX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbAog
I2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAgIHx8
IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lkCi15
eV9zdGFja19wcmludCAoeXl0eXBlX2ludDE2ICpib3R0b20sIHl5dHlwZV9pbnQxNiAqdG9wKQor
eXlfc3RhY2tfcHJpbnQgKHl5dHlwZV9pbnQxNiAqeXlib3R0b20sIHl5dHlwZV9pbnQxNiAqeXl0
b3ApCiAjZWxzZQogc3RhdGljIHZvaWQKLXl5X3N0YWNrX3ByaW50IChib3R0b20sIHRvcCkKLSAg
ICB5eXR5cGVfaW50MTYgKmJvdHRvbTsKLSAgICB5eXR5cGVfaW50MTYgKnRvcDsKK3l5X3N0YWNr
X3ByaW50ICh5eWJvdHRvbSwgeXl0b3ApCisgICAgeXl0eXBlX2ludDE2ICp5eWJvdHRvbTsKKyAg
ICB5eXR5cGVfaW50MTYgKnl5dG9wOwogI2VuZGlmCiB7CiAgIFlZRlBSSU5URiAoc3RkZXJyLCAi
U3RhY2sgbm93Iik7Ci0gIGZvciAoOyBib3R0b20gPD0gdG9wOyArK2JvdHRvbSkKLSAgICBZWUZQ
UklOVEYgKHN0ZGVyciwgIiAlZCIsICpib3R0b20pOworICBmb3IgKDsgeXlib3R0b20gPD0geXl0
b3A7IHl5Ym90dG9tKyspCisgICAgeworICAgICAgaW50IHl5Ym90ID0gKnl5Ym90dG9tOworICAg
ICAgWVlGUFJJTlRGIChzdGRlcnIsICIgJWQiLCB5eWJvdCk7CisgICAgfQogICBZWUZQUklOVEYg
KHN0ZGVyciwgIlxuIik7CiB9CiAKQEAgLTE2MDcsMTEgKzE2MDYsMTEgQEAgeXlfcmVkdWNlX3By
aW50ICh5eXZzcCwgeXlsc3AsIHl5cnVsZSwgYwogICAvKiBUaGUgc3ltYm9scyBiZWluZyByZWR1
Y2VkLiAgKi8KICAgZm9yICh5eWkgPSAwOyB5eWkgPCB5eW5yaHM7IHl5aSsrKQogICAgIHsKLSAg
ICAgIGZwcmludGYgKHN0ZGVyciwgIiAgICQlZCA9ICIsIHl5aSArIDEpOworICAgICAgWVlGUFJJ
TlRGIChzdGRlcnIsICIgICAkJWQgPSAiLCB5eWkgKyAxKTsKICAgICAgIHl5X3N5bWJvbF9wcmlu
dCAoc3RkZXJyLCB5eXJoc1t5eXByaHNbeXlydWxlXSArIHl5aV0sCiAJCSAgICAgICAmKHl5dnNw
Wyh5eWkgKyAxKSAtICh5eW5yaHMpXSkKIAkJICAgICAgICwgJih5eWxzcFsoeXlpICsgMSkgLSAo
eXlucmhzKV0pCQkgICAgICAgLCBjb250ZXh0KTsKLSAgICAgIGZwcmludGYgKHN0ZGVyciwgIlxu
Iik7CisgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIlxuIik7CiAgICAgfQogfQogCkBAIC0xNjQ4
LDcgKzE2NDcsNiBAQCBpbnQgeXlkZWJ1ZzsKICMgZGVmaW5lIFlZTUFYREVQVEggMTAwMDAKICNl
bmRpZgogCi0MCiAKICNpZiBZWUVSUk9SX1ZFUkJPU0UKIApAQCAtMTc1MSwxMTUgKzE3NDksMTQ1
IEBAIHl5dG5hbWVyciAoY2hhciAqeXlyZXMsIGNvbnN0IGNoYXIgKnl5c3QKIH0KICMgZW5kaWYK
IAotLyogQ29weSBpbnRvIFlZUkVTVUxUIGFuIGVycm9yIG1lc3NhZ2UgYWJvdXQgdGhlIHVuZXhw
ZWN0ZWQgdG9rZW4KLSAgIFlZQ0hBUiB3aGlsZSBpbiBzdGF0ZSBZWVNUQVRFLiAgUmV0dXJuIHRo
ZSBudW1iZXIgb2YgYnl0ZXMgY29waWVkLAotICAgaW5jbHVkaW5nIHRoZSB0ZXJtaW5hdGluZyBu
dWxsIGJ5dGUuICBJZiBZWVJFU1VMVCBpcyBudWxsLCBkbyBub3QKLSAgIGNvcHkgYW55dGhpbmc7
IGp1c3QgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCB3b3VsZCBiZQotICAgY29waWVk
LiAgQXMgYSBzcGVjaWFsIGNhc2UsIHJldHVybiAwIGlmIGFuIG9yZGluYXJ5ICJzeW50YXggZXJy
b3IiCi0gICBtZXNzYWdlIHdpbGwgZG8uICBSZXR1cm4gWVlTSVpFX01BWElNVU0gaWYgb3ZlcmZs
b3cgb2NjdXJzIGR1cmluZwotICAgc2l6ZSBjYWxjdWxhdGlvbi4gICovCi1zdGF0aWMgWVlTSVpF
X1QKLXl5c3ludGF4X2Vycm9yIChjaGFyICp5eXJlc3VsdCwgaW50IHl5c3RhdGUsIGludCB5eWNo
YXIpCisvKiBDb3B5IGludG8gKllZTVNHLCB3aGljaCBpcyBvZiBzaXplICpZWU1TR19BTExPQywg
YW4gZXJyb3IgbWVzc2FnZQorICAgYWJvdXQgdGhlIHVuZXhwZWN0ZWQgdG9rZW4gWVlUT0tFTiBm
b3IgdGhlIHN0YXRlIHN0YWNrIHdob3NlIHRvcCBpcworICAgWVlTU1AuCisKKyAgIFJldHVybiAw
IGlmICpZWU1TRyB3YXMgc3VjY2Vzc2Z1bGx5IHdyaXR0ZW4uICBSZXR1cm4gMSBpZiAqWVlNU0cg
aXMKKyAgIG5vdCBsYXJnZSBlbm91Z2ggdG8gaG9sZCB0aGUgbWVzc2FnZS4gIEluIHRoYXQgY2Fz
ZSwgYWxzbyBzZXQKKyAgICpZWU1TR19BTExPQyB0byB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIGJ5
dGVzLiAgUmV0dXJuIDIgaWYgdGhlCisgICByZXF1aXJlZCBudW1iZXIgb2YgYnl0ZXMgaXMgdG9v
IGxhcmdlIHRvIHN0b3JlLiAgKi8KK3N0YXRpYyBpbnQKK3l5c3ludGF4X2Vycm9yIChZWVNJWkVf
VCAqeXltc2dfYWxsb2MsIGNoYXIgKip5eW1zZywKKyAgICAgICAgICAgICAgICB5eXR5cGVfaW50
MTYgKnl5c3NwLCBpbnQgeXl0b2tlbikKIHsKLSAgaW50IHl5biA9IHl5cGFjdFt5eXN0YXRlXTsK
KyAgWVlTSVpFX1QgeXlzaXplMCA9IHl5dG5hbWVyciAoWVlfTlVMTCwgeXl0bmFtZVt5eXRva2Vu
XSk7CisgIFlZU0laRV9UIHl5c2l6ZSA9IHl5c2l6ZTA7CisgIGVudW0geyBZWUVSUk9SX1ZFUkJP
U0VfQVJHU19NQVhJTVVNID0gNSB9OworICAvKiBJbnRlcm5hdGlvbmFsaXplZCBmb3JtYXQgc3Ry
aW5nLiAqLworICBjb25zdCBjaGFyICp5eWZvcm1hdCA9IFlZX05VTEw7CisgIC8qIEFyZ3VtZW50
cyBvZiB5eWZvcm1hdC4gKi8KKyAgY2hhciBjb25zdCAqeXlhcmdbWVlFUlJPUl9WRVJCT1NFX0FS
R1NfTUFYSU1VTV07CisgIC8qIE51bWJlciBvZiByZXBvcnRlZCB0b2tlbnMgKG9uZSBmb3IgdGhl
ICJ1bmV4cGVjdGVkIiwgb25lIHBlcgorICAgICAiZXhwZWN0ZWQiKS4gKi8KKyAgaW50IHl5Y291
bnQgPSAwOworCisgIC8qIFRoZXJlIGFyZSBtYW55IHBvc3NpYmlsaXRpZXMgaGVyZSB0byBjb25z
aWRlcjoKKyAgICAgLSBBc3N1bWUgWVlGQUlMIGlzIG5vdCB1c2VkLiAgSXQncyB0b28gZmxhd2Vk
IHRvIGNvbnNpZGVyLiAgU2VlCisgICAgICAgPGh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUv
aHRtbC9iaXNvbi1wYXRjaGVzLzIwMDktMTIvbXNnMDAwMjQuaHRtbD4KKyAgICAgICBmb3IgZGV0
YWlscy4gIFlZRVJST1IgaXMgZmluZSBhcyBpdCBkb2VzIG5vdCBpbnZva2UgdGhpcworICAgICAg
IGZ1bmN0aW9uLgorICAgICAtIElmIHRoaXMgc3RhdGUgaXMgYSBjb25zaXN0ZW50IHN0YXRlIHdp
dGggYSBkZWZhdWx0IGFjdGlvbiwgdGhlbgorICAgICAgIHRoZSBvbmx5IHdheSB0aGlzIGZ1bmN0
aW9uIHdhcyBpbnZva2VkIGlzIGlmIHRoZSBkZWZhdWx0IGFjdGlvbgorICAgICAgIGlzIGFuIGVy
cm9yIGFjdGlvbi4gIEluIHRoYXQgY2FzZSwgZG9uJ3QgY2hlY2sgZm9yIGV4cGVjdGVkCisgICAg
ICAgdG9rZW5zIGJlY2F1c2UgdGhlcmUgYXJlIG5vbmUuCisgICAgIC0gVGhlIG9ubHkgd2F5IHRo
ZXJlIGNhbiBiZSBubyBsb29rYWhlYWQgcHJlc2VudCAoaW4geXljaGFyKSBpcyBpZgorICAgICAg
IHRoaXMgc3RhdGUgaXMgYSBjb25zaXN0ZW50IHN0YXRlIHdpdGggYSBkZWZhdWx0IGFjdGlvbi4g
IFRodXMsCisgICAgICAgZGV0ZWN0aW5nIHRoZSBhYnNlbmNlIG9mIGEgbG9va2FoZWFkIGlzIHN1
ZmZpY2llbnQgdG8gZGV0ZXJtaW5lCisgICAgICAgdGhhdCB0aGVyZSBpcyBubyB1bmV4cGVjdGVk
IG9yIGV4cGVjdGVkIHRva2VuIHRvIHJlcG9ydC4gIEluIHRoYXQKKyAgICAgICBjYXNlLCBqdXN0
IHJlcG9ydCBhIHNpbXBsZSAic3ludGF4IGVycm9yIi4KKyAgICAgLSBEb24ndCBhc3N1bWUgdGhl
cmUgaXNuJ3QgYSBsb29rYWhlYWQganVzdCBiZWNhdXNlIHRoaXMgc3RhdGUgaXMgYQorICAgICAg
IGNvbnNpc3RlbnQgc3RhdGUgd2l0aCBhIGRlZmF1bHQgYWN0aW9uLiAgVGhlcmUgbWlnaHQgaGF2
ZSBiZWVuIGEKKyAgICAgICBwcmV2aW91cyBpbmNvbnNpc3RlbnQgc3RhdGUsIGNvbnNpc3RlbnQg
c3RhdGUgd2l0aCBhIG5vbi1kZWZhdWx0CisgICAgICAgYWN0aW9uLCBvciB1c2VyIHNlbWFudGlj
IGFjdGlvbiB0aGF0IG1hbmlwdWxhdGVkIHl5Y2hhci4KKyAgICAgLSBPZiBjb3Vyc2UsIHRoZSBl
eHBlY3RlZCB0b2tlbiBsaXN0IGRlcGVuZHMgb24gc3RhdGVzIHRvIGhhdmUKKyAgICAgICBjb3Jy
ZWN0IGxvb2thaGVhZCBpbmZvcm1hdGlvbiwgYW5kIGl0IGRlcGVuZHMgb24gdGhlIHBhcnNlciBu
b3QKKyAgICAgICB0byBwZXJmb3JtIGV4dHJhIHJlZHVjdGlvbnMgYWZ0ZXIgZmV0Y2hpbmcgYSBs
b29rYWhlYWQgZnJvbSB0aGUKKyAgICAgICBzY2FubmVyIGFuZCBiZWZvcmUgZGV0ZWN0aW5nIGEg
c3ludGF4IGVycm9yLiAgVGh1cywgc3RhdGUgbWVyZ2luZworICAgICAgIChmcm9tIExBTFIgb3Ig
SUVMUikgYW5kIGRlZmF1bHQgcmVkdWN0aW9ucyBjb3JydXB0IHRoZSBleHBlY3RlZAorICAgICAg
IHRva2VuIGxpc3QuICBIb3dldmVyLCB0aGUgbGlzdCBpcyBjb3JyZWN0IGZvciBjYW5vbmljYWwg
TFIgd2l0aAorICAgICAgIG9uZSBleGNlcHRpb246IGl0IHdpbGwgc3RpbGwgY29udGFpbiBhbnkg
dG9rZW4gdGhhdCB3aWxsIG5vdCBiZQorICAgICAgIGFjY2VwdGVkIGR1ZSB0byBhbiBlcnJvciBh
Y3Rpb24gaW4gYSBsYXRlciBzdGF0ZS4KKyAgKi8KKyAgaWYgKHl5dG9rZW4gIT0gWVlFTVBUWSkK
KyAgICB7CisgICAgICBpbnQgeXluID0geXlwYWN0Wyp5eXNzcF07CisgICAgICB5eWFyZ1t5eWNv
dW50KytdID0geXl0bmFtZVt5eXRva2VuXTsKKyAgICAgIGlmICgheXlwYWN0X3ZhbHVlX2lzX2Rl
ZmF1bHQgKHl5bikpCisgICAgICAgIHsKKyAgICAgICAgICAvKiBTdGFydCBZWVggYXQgLVlZTiBp
ZiBuZWdhdGl2ZSB0byBhdm9pZCBuZWdhdGl2ZSBpbmRleGVzIGluCisgICAgICAgICAgICAgWVlD
SEVDSy4gIEluIG90aGVyIHdvcmRzLCBza2lwIHRoZSBmaXJzdCAtWVlOIGFjdGlvbnMgZm9yCisg
ICAgICAgICAgICAgdGhpcyBzdGF0ZSBiZWNhdXNlIHRoZXkgYXJlIGRlZmF1bHQgYWN0aW9ucy4g
ICovCisgICAgICAgICAgaW50IHl5eGJlZ2luID0geXluIDwgMCA/IC15eW4gOiAwOworICAgICAg
ICAgIC8qIFN0YXkgd2l0aGluIGJvdW5kcyBvZiBib3RoIHl5Y2hlY2sgYW5kIHl5dG5hbWUuICAq
LworICAgICAgICAgIGludCB5eWNoZWNrbGltID0gWVlMQVNUIC0geXluICsgMTsKKyAgICAgICAg
ICBpbnQgeXl4ZW5kID0geXljaGVja2xpbSA8IFlZTlRPS0VOUyA/IHl5Y2hlY2tsaW0gOiBZWU5U
T0tFTlM7CisgICAgICAgICAgaW50IHl5eDsKKworICAgICAgICAgIGZvciAoeXl4ID0geXl4YmVn
aW47IHl5eCA8IHl5eGVuZDsgKyt5eXgpCisgICAgICAgICAgICBpZiAoeXljaGVja1t5eXggKyB5
eW5dID09IHl5eCAmJiB5eXggIT0gWVlURVJST1IKKyAgICAgICAgICAgICAgICAmJiAheXl0YWJs
ZV92YWx1ZV9pc19lcnJvciAoeXl0YWJsZVt5eXggKyB5eW5dKSkKKyAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGlmICh5eWNvdW50ID09IFlZRVJST1JfVkVSQk9TRV9BUkdTX01BWElN
VU0pCisgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHl5Y291bnQgPSAx
OworICAgICAgICAgICAgICAgICAgICB5eXNpemUgPSB5eXNpemUwOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB5eWFyZ1t5
eWNvdW50KytdID0geXl0bmFtZVt5eXhdOworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgIFlZU0laRV9UIHl5c2l6ZTEgPSB5eXNpemUgKyB5eXRuYW1lcnIgKFlZX05VTEwsIHl5
dG5hbWVbeXl4XSk7CisgICAgICAgICAgICAgICAgICBpZiAoISAoeXlzaXplIDw9IHl5c2l6ZTEK
KyAgICAgICAgICAgICAgICAgICAgICAgICAmJiB5eXNpemUxIDw9IFlZU1RBQ0tfQUxMT0NfTUFY
SU1VTSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgICAgICAg
eXlzaXplID0geXlzaXplMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KIAotICBpZiAoISAoWVlQQUNUX05JTkYgPCB5eW4gJiYgeXluIDw9IFlZ
TEFTVCkpCi0gICAgcmV0dXJuIDA7Ci0gIGVsc2UKKyAgc3dpdGNoICh5eWNvdW50KQogICAgIHsK
LSAgICAgIGludCB5eXR5cGUgPSBZWVRSQU5TTEFURSAoeXljaGFyKTsKLSAgICAgIFlZU0laRV9U
IHl5c2l6ZTAgPSB5eXRuYW1lcnIgKDAsIHl5dG5hbWVbeXl0eXBlXSk7Ci0gICAgICBZWVNJWkVf
VCB5eXNpemUgPSB5eXNpemUwOwotICAgICAgWVlTSVpFX1QgeXlzaXplMTsKLSAgICAgIGludCB5
eXNpemVfb3ZlcmZsb3cgPSAwOwotICAgICAgZW51bSB7IFlZRVJST1JfVkVSQk9TRV9BUkdTX01B
WElNVU0gPSA1IH07Ci0gICAgICBjaGFyIGNvbnN0ICp5eWFyZ1tZWUVSUk9SX1ZFUkJPU0VfQVJH
U19NQVhJTVVNXTsKLSAgICAgIGludCB5eXg7Ci0KLSMgaWYgMAotICAgICAgLyogVGhpcyBpcyBz
byB4Z2V0dGV4dCBzZWVzIHRoZSB0cmFuc2xhdGFibGUgZm9ybWF0cyB0aGF0IGFyZQotCSBjb25z
dHJ1Y3RlZCBvbiB0aGUgZmx5LiAgKi8KLSAgICAgIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVj
dGVkICVzIik7Ci0gICAgICBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0
aW5nICVzIik7Ci0gICAgICBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0
aW5nICVzIG9yICVzIik7Ci0gICAgICBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywg
ZXhwZWN0aW5nICVzIG9yICVzIG9yICVzIik7Ci0gICAgICBZWV8oInN5bnRheCBlcnJvciwgdW5l
eHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIG9yICVzIG9yICVzIG9yICVzIik7Ci0jIGVuZGlmCi0g
ICAgICBjaGFyICp5eWZtdDsKLSAgICAgIGNoYXIgY29uc3QgKnl5ZjsKLSAgICAgIHN0YXRpYyBj
aGFyIGNvbnN0IHl5dW5leHBlY3RlZFtdID0gInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcyI7
Ci0gICAgICBzdGF0aWMgY2hhciBjb25zdCB5eWV4cGVjdGluZ1tdID0gIiwgZXhwZWN0aW5nICVz
IjsKLSAgICAgIHN0YXRpYyBjaGFyIGNvbnN0IHl5b3JbXSA9ICIgb3IgJXMiOwotICAgICAgY2hh
ciB5eWZvcm1hdFtzaXplb2YgeXl1bmV4cGVjdGVkCi0JCSAgICArIHNpemVvZiB5eWV4cGVjdGlu
ZyAtIDEKLQkJICAgICsgKChZWUVSUk9SX1ZFUkJPU0VfQVJHU19NQVhJTVVNIC0gMikKLQkJICAg
ICAgICogKHNpemVvZiB5eW9yIC0gMSkpXTsKLSAgICAgIGNoYXIgY29uc3QgKnl5cHJlZml4ID0g
eXlleHBlY3Rpbmc7Ci0KLSAgICAgIC8qIFN0YXJ0IFlZWCBhdCAtWVlOIGlmIG5lZ2F0aXZlIHRv
IGF2b2lkIG5lZ2F0aXZlIGluZGV4ZXMgaW4KLQkgWVlDSEVDSy4gICovCi0gICAgICBpbnQgeXl4
YmVnaW4gPSB5eW4gPCAwID8gLXl5biA6IDA7Ci0KLSAgICAgIC8qIFN0YXkgd2l0aGluIGJvdW5k
cyBvZiBib3RoIHl5Y2hlY2sgYW5kIHl5dG5hbWUuICAqLwotICAgICAgaW50IHl5Y2hlY2tsaW0g
PSBZWUxBU1QgLSB5eW4gKyAxOwotICAgICAgaW50IHl5eGVuZCA9IHl5Y2hlY2tsaW0gPCBZWU5U
T0tFTlMgPyB5eWNoZWNrbGltIDogWVlOVE9LRU5TOwotICAgICAgaW50IHl5Y291bnQgPSAxOwot
Ci0gICAgICB5eWFyZ1swXSA9IHl5dG5hbWVbeXl0eXBlXTsKLSAgICAgIHl5Zm10ID0geXlzdHBj
cHkgKHl5Zm9ybWF0LCB5eXVuZXhwZWN0ZWQpOwotCi0gICAgICBmb3IgKHl5eCA9IHl5eGJlZ2lu
OyB5eXggPCB5eXhlbmQ7ICsreXl4KQotCWlmICh5eWNoZWNrW3l5eCArIHl5bl0gPT0geXl4ICYm
IHl5eCAhPSBZWVRFUlJPUikKLQkgIHsKLQkgICAgaWYgKHl5Y291bnQgPT0gWVlFUlJPUl9WRVJC
T1NFX0FSR1NfTUFYSU1VTSkKLQkgICAgICB7Ci0JCXl5Y291bnQgPSAxOwotCQl5eXNpemUgPSB5
eXNpemUwOwotCQl5eWZvcm1hdFtzaXplb2YgeXl1bmV4cGVjdGVkIC0gMV0gPSAnXDAnOwotCQli
cmVhazsKLQkgICAgICB9Ci0JICAgIHl5YXJnW3l5Y291bnQrK10gPSB5eXRuYW1lW3l5eF07Ci0J
ICAgIHl5c2l6ZTEgPSB5eXNpemUgKyB5eXRuYW1lcnIgKDAsIHl5dG5hbWVbeXl4XSk7Ci0JICAg
IHl5c2l6ZV9vdmVyZmxvdyB8PSAoeXlzaXplMSA8IHl5c2l6ZSk7Ci0JICAgIHl5c2l6ZSA9IHl5
c2l6ZTE7Ci0JICAgIHl5Zm10ID0geXlzdHBjcHkgKHl5Zm10LCB5eXByZWZpeCk7Ci0JICAgIHl5
cHJlZml4ID0geXlvcjsKLQkgIH0KLQotICAgICAgeXlmID0gWVlfKHl5Zm9ybWF0KTsKLSAgICAg
IHl5c2l6ZTEgPSB5eXNpemUgKyB5eXN0cmxlbiAoeXlmKTsKLSAgICAgIHl5c2l6ZV9vdmVyZmxv
dyB8PSAoeXlzaXplMSA8IHl5c2l6ZSk7Ci0gICAgICB5eXNpemUgPSB5eXNpemUxOwotCi0gICAg
ICBpZiAoeXlzaXplX292ZXJmbG93KQotCXJldHVybiBZWVNJWkVfTUFYSU1VTTsKKyMgZGVmaW5l
IFlZQ0FTRV8oTiwgUykgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgY2FzZSBOOiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHl5Zm9ybWF0ID0gUzsgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgIGJyZWFrCisgICAgICBZWUNBU0VfKDAsIFlZXygic3lu
dGF4IGVycm9yIikpOworICAgICAgWVlDQVNFXygxLCBZWV8oInN5bnRheCBlcnJvciwgdW5leHBl
Y3RlZCAlcyIpKTsKKyAgICAgIFlZQ0FTRV8oMiwgWVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0
ZWQgJXMsIGV4cGVjdGluZyAlcyIpKTsKKyAgICAgIFlZQ0FTRV8oMywgWVlfKCJzeW50YXggZXJy
b3IsIHVuZXhwZWN0ZWQgJXMsIGV4cGVjdGluZyAlcyBvciAlcyIpKTsKKyAgICAgIFlZQ0FTRV8o
NCwgWVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMsIGV4cGVjdGluZyAlcyBvciAlcyBv
ciAlcyIpKTsKKyAgICAgIFlZQ0FTRV8oNSwgWVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQg
JXMsIGV4cGVjdGluZyAlcyBvciAlcyBvciAlcyBvciAlcyIpKTsKKyMgdW5kZWYgWVlDQVNFXwor
ICAgIH0KIAotICAgICAgaWYgKHl5cmVzdWx0KQotCXsKLQkgIC8qIEF2b2lkIHNwcmludGYsIGFz
IHRoYXQgaW5mcmluZ2VzIG9uIHRoZSB1c2VyJ3MgbmFtZSBzcGFjZS4KLQkgICAgIERvbid0IGhh
dmUgdW5kZWZpbmVkIGJlaGF2aW9yIGV2ZW4gaWYgdGhlIHRyYW5zbGF0aW9uCi0JICAgICBwcm9k
dWNlZCBhIHN0cmluZyB3aXRoIHRoZSB3cm9uZyBudW1iZXIgb2YgIiVzInMuICAqLwotCSAgY2hh
ciAqeXlwID0geXlyZXN1bHQ7Ci0JICBpbnQgeXlpID0gMDsKLQkgIHdoaWxlICgoKnl5cCA9ICp5
eWYpICE9ICdcMCcpCi0JICAgIHsKLQkgICAgICBpZiAoKnl5cCA9PSAnJScgJiYgeXlmWzFdID09
ICdzJyAmJiB5eWkgPCB5eWNvdW50KQotCQl7Ci0JCSAgeXlwICs9IHl5dG5hbWVyciAoeXlwLCB5
eWFyZ1t5eWkrK10pOwotCQkgIHl5ZiArPSAyOwotCQl9Ci0JICAgICAgZWxzZQotCQl7Ci0JCSAg
eXlwKys7Ci0JCSAgeXlmKys7Ci0JCX0KLQkgICAgfQotCX0KLSAgICAgIHJldHVybiB5eXNpemU7
CisgIHsKKyAgICBZWVNJWkVfVCB5eXNpemUxID0geXlzaXplICsgeXlzdHJsZW4gKHl5Zm9ybWF0
KTsKKyAgICBpZiAoISAoeXlzaXplIDw9IHl5c2l6ZTEgJiYgeXlzaXplMSA8PSBZWVNUQUNLX0FM
TE9DX01BWElNVU0pKQorICAgICAgcmV0dXJuIDI7CisgICAgeXlzaXplID0geXlzaXplMTsKKyAg
fQorCisgIGlmICgqeXltc2dfYWxsb2MgPCB5eXNpemUpCisgICAgeworICAgICAgKnl5bXNnX2Fs
bG9jID0gMiAqIHl5c2l6ZTsKKyAgICAgIGlmICghICh5eXNpemUgPD0gKnl5bXNnX2FsbG9jCisg
ICAgICAgICAgICAgJiYgKnl5bXNnX2FsbG9jIDw9IFlZU1RBQ0tfQUxMT0NfTUFYSU1VTSkpCisg
ICAgICAgICp5eW1zZ19hbGxvYyA9IFlZU1RBQ0tfQUxMT0NfTUFYSU1VTTsKKyAgICAgIHJldHVy
biAxOwogICAgIH0KKworICAvKiBBdm9pZCBzcHJpbnRmLCBhcyB0aGF0IGluZnJpbmdlcyBvbiB0
aGUgdXNlcidzIG5hbWUgc3BhY2UuCisgICAgIERvbid0IGhhdmUgdW5kZWZpbmVkIGJlaGF2aW9y
IGV2ZW4gaWYgdGhlIHRyYW5zbGF0aW9uCisgICAgIHByb2R1Y2VkIGEgc3RyaW5nIHdpdGggdGhl
IHdyb25nIG51bWJlciBvZiAiJXMicy4gICovCisgIHsKKyAgICBjaGFyICp5eXAgPSAqeXltc2c7
CisgICAgaW50IHl5aSA9IDA7CisgICAgd2hpbGUgKCgqeXlwID0gKnl5Zm9ybWF0KSAhPSAnXDAn
KQorICAgICAgaWYgKCp5eXAgPT0gJyUnICYmIHl5Zm9ybWF0WzFdID09ICdzJyAmJiB5eWkgPCB5
eWNvdW50KQorICAgICAgICB7CisgICAgICAgICAgeXlwICs9IHl5dG5hbWVyciAoeXlwLCB5eWFy
Z1t5eWkrK10pOworICAgICAgICAgIHl5Zm9ybWF0ICs9IDI7CisgICAgICAgIH0KKyAgICAgIGVs
c2UKKyAgICAgICAgeworICAgICAgICAgIHl5cCsrOworICAgICAgICAgIHl5Zm9ybWF0Kys7Cisg
ICAgICAgIH0KKyAgfQorICByZXR1cm4gMDsKIH0KICNlbmRpZiAvKiBZWUVSUk9SX1ZFUkJPU0Ug
Ki8KLQwKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS4KIHwgUmVsZWFzZSB0aGUgbWVtb3J5IGFzc29jaWF0ZWQgdG8gdGhpcyBzeW1ib2wuICB8CkBA
IC0xODkyLDI4ICsxOTIwLDkgQEAgeXlkZXN0cnVjdCAoeXltc2csIHl5dHlwZSwgeXl2YWx1ZXAs
IHl5bAogICAgIHsKIAogICAgICAgZGVmYXVsdDoKLQlicmVhazsKKyAgICAgICAgYnJlYWs7CiAg
ICAgfQogfQotDAotCi0vKiBQcmV2ZW50IHdhcm5pbmdzIGZyb20gLVdtaXNzaW5nLXByb3RvdHlw
ZXMuICAqLwotCi0jaWZkZWYgWVlQQVJTRV9QQVJBTQotI2lmIGRlZmluZWQgX19TVERDX18gfHwg
ZGVmaW5lZCBfX2NwbHVzcGx1cwotaW50IHl5cGFyc2UgKHZvaWQgKllZUEFSU0VfUEFSQU0pOwot
I2Vsc2UKLWludCB5eXBhcnNlICgpOwotI2VuZGlmCi0jZWxzZSAvKiAhIFlZUEFSU0VfUEFSQU0g
Ki8KLSNpZiBkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19jcGx1c3BsdXMKLWludCB5eXBh
cnNlIChUUGFyc2VDb250ZXh0KiBjb250ZXh0KTsKLSNlbHNlCi1pbnQgeXlwYXJzZSAoKTsKLSNl
bmRpZgotI2VuZGlmIC8qICEgWVlQQVJTRV9QQVJBTSAqLwotCi0KIAogCiAKQEAgLTE5NDQsMjQg
KzE5NTMsODggQEAgeXlwYXJzZSAoY29udGV4dCkKICNlbmRpZgogI2VuZGlmCiB7Ci0gIC8qIFRo
ZSBsb29rLWFoZWFkIHN5bWJvbC4gICovCisvKiBUaGUgbG9va2FoZWFkIHN5bWJvbC4gICovCiBp
bnQgeXljaGFyOwogCi0vKiBUaGUgc2VtYW50aWMgdmFsdWUgb2YgdGhlIGxvb2stYWhlYWQgc3lt
Ym9sLiAgKi8KLVlZU1RZUEUgeXlsdmFsOwogCi0vKiBOdW1iZXIgb2Ygc3ludGF4IGVycm9ycyBz
byBmYXIuICAqLwotaW50IHl5bmVycnM7Ci0vKiBMb2NhdGlvbiBkYXRhIGZvciB0aGUgbG9vay1h
aGVhZCBzeW1ib2wuICAqLwotWVlMVFlQRSB5eWxsb2M7CisjaWYgZGVmaW5lZCBfX0dOVUNfXyAm
JiA0MDcgPD0gX19HTlVDX18gKiAxMDAgKyBfX0dOVUNfTUlOT1JfXworLyogU3VwcHJlc3MgYW4g
aW5jb3JyZWN0IGRpYWdub3N0aWMgYWJvdXQgeXlsdmFsIGJlaW5nIHVuaW5pdGlhbGl6ZWQuICAq
LworIyBkZWZpbmUgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfQkVHSU4gXAorICAgIF9Q
cmFnbWEgKCJHQ0MgZGlhZ25vc3RpYyBwdXNoIikgXAorICAgIF9QcmFnbWEgKCJHQ0MgZGlhZ25v
c3RpYyBpZ25vcmVkIFwiLVd1bmluaXRpYWxpemVkXCIiKVwKKyAgICBfUHJhZ21hICgiR0NDIGRp
YWdub3N0aWMgaWdub3JlZCBcIi1XbWF5YmUtdW5pbml0aWFsaXplZFwiIikKKyMgZGVmaW5lIFlZ
X0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0VORCBcCisgICAgX1ByYWdtYSAoIkdDQyBkaWFn
bm9zdGljIHBvcCIpCisjZWxzZQorLyogRGVmYXVsdCB2YWx1ZSB1c2VkIGZvciBpbml0aWFsaXph
dGlvbiwgZm9yIHBhY2lmeWluZyBvbGRlciBHQ0NzCisgICBvciBub24tR0NDIGNvbXBpbGVycy4g
ICovCitzdGF0aWMgWVlTVFlQRSB5eXZhbF9kZWZhdWx0OworIyBkZWZpbmUgWVlfSU5JVElBTF9W
QUxVRShWYWx1ZSkgPSBWYWx1ZQorI2VuZGlmCitzdGF0aWMgWVlMVFlQRSB5eWxvY19kZWZhdWx0
CisjIGlmIGRlZmluZWQgWVlMVFlQRV9JU19UUklWSUFMICYmIFlZTFRZUEVfSVNfVFJJVklBTAor
ICA9IHsgMSwgMSwgMSwgMSB9CisjIGVuZGlmCis7CisjaWZuZGVmIFlZX0lHTk9SRV9NQVlCRV9V
TklOSVRJQUxJWkVEX0JFR0lOCisjIGRlZmluZSBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpF
RF9CRUdJTgorIyBkZWZpbmUgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfRU5ECisjZW5k
aWYKKyNpZm5kZWYgWVlfSU5JVElBTF9WQUxVRQorIyBkZWZpbmUgWVlfSU5JVElBTF9WQUxVRShW
YWx1ZSkgLyogTm90aGluZy4gKi8KKyNlbmRpZgorCisvKiBUaGUgc2VtYW50aWMgdmFsdWUgb2Yg
dGhlIGxvb2thaGVhZCBzeW1ib2wuICAqLworWVlTVFlQRSB5eWx2YWwgWVlfSU5JVElBTF9WQUxV
RSh5eXZhbF9kZWZhdWx0KTsKKworLyogTG9jYXRpb24gZGF0YSBmb3IgdGhlIGxvb2thaGVhZCBz
eW1ib2wuICAqLworWVlMVFlQRSB5eWxsb2MgPSB5eWxvY19kZWZhdWx0OworCisKKyAgICAvKiBO
dW1iZXIgb2Ygc3ludGF4IGVycm9ycyBzbyBmYXIuICAqLworICAgIGludCB5eW5lcnJzOworCisg
ICAgaW50IHl5c3RhdGU7CisgICAgLyogTnVtYmVyIG9mIHRva2VucyB0byBzaGlmdCBiZWZvcmUg
ZXJyb3IgbWVzc2FnZXMgZW5hYmxlZC4gICovCisgICAgaW50IHl5ZXJyc3RhdHVzOworCisgICAg
LyogVGhlIHN0YWNrcyBhbmQgdGhlaXIgdG9vbHM6CisgICAgICAgYHl5c3MnOiByZWxhdGVkIHRv
IHN0YXRlcy4KKyAgICAgICBgeXl2cyc6IHJlbGF0ZWQgdG8gc2VtYW50aWMgdmFsdWVzLgorICAg
ICAgIGB5eWxzJzogcmVsYXRlZCB0byBsb2NhdGlvbnMuCisKKyAgICAgICBSZWZlciB0byB0aGUg
c3RhY2tzIHRocm91Z2ggc2VwYXJhdGUgcG9pbnRlcnMsIHRvIGFsbG93IHl5b3ZlcmZsb3cKKyAg
ICAgICB0byByZWFsbG9jYXRlIHRoZW0gZWxzZXdoZXJlLiAgKi8KKworICAgIC8qIFRoZSBzdGF0
ZSBzdGFjay4gICovCisgICAgeXl0eXBlX2ludDE2IHl5c3NhW1lZSU5JVERFUFRIXTsKKyAgICB5
eXR5cGVfaW50MTYgKnl5c3M7CisgICAgeXl0eXBlX2ludDE2ICp5eXNzcDsKKworICAgIC8qIFRo
ZSBzZW1hbnRpYyB2YWx1ZSBzdGFjay4gICovCisgICAgWVlTVFlQRSB5eXZzYVtZWUlOSVRERVBU
SF07CisgICAgWVlTVFlQRSAqeXl2czsKKyAgICBZWVNUWVBFICp5eXZzcDsKKworICAgIC8qIFRo
ZSBsb2NhdGlvbiBzdGFjay4gICovCisgICAgWVlMVFlQRSB5eWxzYVtZWUlOSVRERVBUSF07Cisg
ICAgWVlMVFlQRSAqeXlsczsKKyAgICBZWUxUWVBFICp5eWxzcDsKKworICAgIC8qIFRoZSBsb2Nh
dGlvbnMgd2hlcmUgdGhlIGVycm9yIHN0YXJ0ZWQgYW5kIGVuZGVkLiAgKi8KKyAgICBZWUxUWVBF
IHl5ZXJyb3JfcmFuZ2VbM107CisKKyAgICBZWVNJWkVfVCB5eXN0YWNrc2l6ZTsKIAotICBpbnQg
eXlzdGF0ZTsKICAgaW50IHl5bjsKICAgaW50IHl5cmVzdWx0OwotICAvKiBOdW1iZXIgb2YgdG9r
ZW5zIHRvIHNoaWZ0IGJlZm9yZSBlcnJvciBtZXNzYWdlcyBlbmFibGVkLiAgKi8KLSAgaW50IHl5
ZXJyc3RhdHVzOwotICAvKiBMb29rLWFoZWFkIHRva2VuIGFzIGFuIGludGVybmFsICh0cmFuc2xh
dGVkKSB0b2tlbiBudW1iZXIuICAqLworICAvKiBMb29rYWhlYWQgdG9rZW4gYXMgYW4gaW50ZXJu
YWwgKHRyYW5zbGF0ZWQpIHRva2VuIG51bWJlci4gICovCiAgIGludCB5eXRva2VuID0gMDsKKyAg
LyogVGhlIHZhcmlhYmxlcyB1c2VkIHRvIHJldHVybiBzZW1hbnRpYyB2YWx1ZSBhbmQgbG9jYXRp
b24gZnJvbSB0aGUKKyAgICAgYWN0aW9uIHJvdXRpbmVzLiAgKi8KKyAgWVlTVFlQRSB5eXZhbDsK
KyAgWVlMVFlQRSB5eWxvYzsKKwogI2lmIFlZRVJST1JfVkVSQk9TRQogICAvKiBCdWZmZXIgZm9y
IGVycm9yIG1lc3NhZ2VzLCBhbmQgaXRzIGFsbG9jYXRlZCBzaXplLiAgKi8KICAgY2hhciB5eW1z
Z2J1ZlsxMjhdOwpAQCAtMTk2OSw2NSArMjA0MiwyNCBAQCBZWUxUWVBFIHl5bGxvYzsKICAgWVlT
SVpFX1QgeXltc2dfYWxsb2MgPSBzaXplb2YgeXltc2didWY7CiAjZW5kaWYKIAotICAvKiBUaHJl
ZSBzdGFja3MgYW5kIHRoZWlyIHRvb2xzOgotICAgICBgeXlzcyc6IHJlbGF0ZWQgdG8gc3RhdGVz
LAotICAgICBgeXl2cyc6IHJlbGF0ZWQgdG8gc2VtYW50aWMgdmFsdWVzLAotICAgICBgeXlscyc6
IHJlbGF0ZWQgdG8gbG9jYXRpb25zLgotCi0gICAgIFJlZmVyIHRvIHRoZSBzdGFja3MgdGhydSBz
ZXBhcmF0ZSBwb2ludGVycywgdG8gYWxsb3cgeXlvdmVyZmxvdwotICAgICB0byByZWFsbG9jYXRl
IHRoZW0gZWxzZXdoZXJlLiAgKi8KLQotICAvKiBUaGUgc3RhdGUgc3RhY2suICAqLwotICB5eXR5
cGVfaW50MTYgeXlzc2FbWVlJTklUREVQVEhdOwotICB5eXR5cGVfaW50MTYgKnl5c3MgPSB5eXNz
YTsKLSAgeXl0eXBlX2ludDE2ICp5eXNzcDsKLQotICAvKiBUaGUgc2VtYW50aWMgdmFsdWUgc3Rh
Y2suICAqLwotICBZWVNUWVBFIHl5dnNhW1lZSU5JVERFUFRIXTsKLSAgWVlTVFlQRSAqeXl2cyA9
IHl5dnNhOwotICBZWVNUWVBFICp5eXZzcDsKLQotICAvKiBUaGUgbG9jYXRpb24gc3RhY2suICAq
LwotICBZWUxUWVBFIHl5bHNhW1lZSU5JVERFUFRIXTsKLSAgWVlMVFlQRSAqeXlscyA9IHl5bHNh
OwotICBZWUxUWVBFICp5eWxzcDsKLSAgLyogVGhlIGxvY2F0aW9ucyB3aGVyZSB0aGUgZXJyb3Ig
c3RhcnRlZCBhbmQgZW5kZWQuICAqLwotICBZWUxUWVBFIHl5ZXJyb3JfcmFuZ2VbMl07Ci0KICNk
ZWZpbmUgWVlQT1BTVEFDSyhOKSAgICh5eXZzcCAtPSAoTiksIHl5c3NwIC09IChOKSwgeXlsc3Ag
LT0gKE4pKQogCi0gIFlZU0laRV9UIHl5c3RhY2tzaXplID0gWVlJTklUREVQVEg7Ci0KLSAgLyog
VGhlIHZhcmlhYmxlcyB1c2VkIHRvIHJldHVybiBzZW1hbnRpYyB2YWx1ZSBhbmQgbG9jYXRpb24g
ZnJvbSB0aGUKLSAgICAgYWN0aW9uIHJvdXRpbmVzLiAgKi8KLSAgWVlTVFlQRSB5eXZhbDsKLSAg
WVlMVFlQRSB5eWxvYzsKLQogICAvKiBUaGUgbnVtYmVyIG9mIHN5bWJvbHMgb24gdGhlIFJIUyBv
ZiB0aGUgcmVkdWNlZCBydWxlLgogICAgICBLZWVwIHRvIHplcm8gd2hlbiBubyBzeW1ib2wgc2hv
dWxkIGJlIHBvcHBlZC4gICovCiAgIGludCB5eWxlbiA9IDA7CiAKKyAgeXlzc3AgPSB5eXNzID0g
eXlzc2E7CisgIHl5dnNwID0geXl2cyA9IHl5dnNhOworICB5eWxzcCA9IHl5bHMgPSB5eWxzYTsK
KyAgeXlzdGFja3NpemUgPSBZWUlOSVRERVBUSDsKKwogICBZWURQUklOVEYgKChzdGRlcnIsICJT
dGFydGluZyBwYXJzZVxuIikpOwogCiAgIHl5c3RhdGUgPSAwOwogICB5eWVycnN0YXR1cyA9IDA7
CiAgIHl5bmVycnMgPSAwOwotICB5eWNoYXIgPSBZWUVNUFRZOwkJLyogQ2F1c2UgYSB0b2tlbiB0
byBiZSByZWFkLiAgKi8KLQotICAvKiBJbml0aWFsaXplIHN0YWNrIHBvaW50ZXJzLgotICAgICBX
YXN0ZSBvbmUgZWxlbWVudCBvZiB2YWx1ZSBhbmQgbG9jYXRpb24gc3RhY2sKLSAgICAgc28gdGhh
dCB0aGV5IHN0YXkgb24gdGhlIHNhbWUgbGV2ZWwgYXMgdGhlIHN0YXRlIHN0YWNrLgotICAgICBU
aGUgd2FzdGVkIGVsZW1lbnRzIGFyZSBuZXZlciBpbml0aWFsaXplZC4gICovCi0KLSAgeXlzc3Ag
PSB5eXNzOwotICB5eXZzcCA9IHl5dnM7Ci0gIHl5bHNwID0geXlsczsKLSNpZiBkZWZpbmVkIFlZ
TFRZUEVfSVNfVFJJVklBTCAmJiBZWUxUWVBFX0lTX1RSSVZJQUwKLSAgLyogSW5pdGlhbGl6ZSB0
aGUgZGVmYXVsdCBsb2NhdGlvbiBiZWZvcmUgcGFyc2luZyBzdGFydHMuICAqLwotICB5eWxsb2Mu
Zmlyc3RfbGluZSAgID0geXlsbG9jLmxhc3RfbGluZSAgID0gMTsKLSAgeXlsbG9jLmZpcnN0X2Nv
bHVtbiA9IHl5bGxvYy5sYXN0X2NvbHVtbiA9IDA7Ci0jZW5kaWYKLQorICB5eWNoYXIgPSBZWUVN
UFRZOyAvKiBDYXVzZSBhIHRva2VuIHRvIGJlIHJlYWQuICAqLworICB5eWxzcFswXSA9IHl5bGxv
YzsKICAgZ290byB5eXNldHN0YXRlOwogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KQEAgLTIwNjQsNiArMjA5Niw3IEBAIFlZ
TFRZUEUgeXlsbG9jOwogCQkgICAgJnl5dnMxLCB5eXNpemUgKiBzaXplb2YgKCp5eXZzcCksCiAJ
CSAgICAmeXlsczEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5bHNwKSwKIAkJICAgICZ5eXN0YWNrc2l6
ZSk7CisKIAl5eWxzID0geXlsczE7CiAJeXlzcyA9IHl5c3MxOwogCXl5dnMgPSB5eXZzMTsKQEAg
LTIwODUsOSArMjExOCw5IEBAIFlZTFRZUEUgeXlsbG9jOwogCSAgKHVuaW9uIHl5YWxsb2MgKikg
WVlTVEFDS19BTExPQyAoWVlTVEFDS19CWVRFUyAoeXlzdGFja3NpemUpKTsKIAlpZiAoISB5eXB0
cikKIAkgIGdvdG8geXlleGhhdXN0ZWRsYWI7Ci0JWVlTVEFDS19SRUxPQ0FURSAoeXlzcyk7Ci0J
WVlTVEFDS19SRUxPQ0FURSAoeXl2cyk7Ci0JWVlTVEFDS19SRUxPQ0FURSAoeXlscyk7CisJWVlT
VEFDS19SRUxPQ0FURSAoeXlzc19hbGxvYywgeXlzcyk7CisJWVlTVEFDS19SRUxPQ0FURSAoeXl2
c19hbGxvYywgeXl2cyk7CisJWVlTVEFDS19SRUxPQ0FURSAoeXlsc19hbGxvYywgeXlscyk7CiAj
ICB1bmRlZiBZWVNUQUNLX1JFTE9DQVRFCiAJaWYgKHl5c3MxICE9IHl5c3NhKQogCSAgWVlTVEFD
S19GUkVFICh5eXNzMSk7CkBAIC0yMTA4LDYgKzIxNDEsOSBAQCBZWUxUWVBFIHl5bGxvYzsKIAog
ICBZWURQUklOVEYgKChzdGRlcnIsICJFbnRlcmluZyBzdGF0ZSAlZFxuIiwgeXlzdGF0ZSkpOwog
CisgIGlmICh5eXN0YXRlID09IFlZRklOQUwpCisgICAgWVlBQ0NFUFQ7CisKICAgZ290byB5eWJh
Y2t1cDsKIAogLyotLS0tLS0tLS0tLS4KQEAgLTIxMTYsMTYgKzIxNTIsMTYgQEAgWVlMVFlQRSB5
eWxsb2M7CiB5eWJhY2t1cDoKIAogICAvKiBEbyBhcHByb3ByaWF0ZSBwcm9jZXNzaW5nIGdpdmVu
IHRoZSBjdXJyZW50IHN0YXRlLiAgUmVhZCBhCi0gICAgIGxvb2stYWhlYWQgdG9rZW4gaWYgd2Ug
bmVlZCBvbmUgYW5kIGRvbid0IGFscmVhZHkgaGF2ZSBvbmUuICAqLworICAgICBsb29rYWhlYWQg
dG9rZW4gaWYgd2UgbmVlZCBvbmUgYW5kIGRvbid0IGFscmVhZHkgaGF2ZSBvbmUuICAqLwogCi0g
IC8qIEZpcnN0IHRyeSB0byBkZWNpZGUgd2hhdCB0byBkbyB3aXRob3V0IHJlZmVyZW5jZSB0byBs
b29rLWFoZWFkIHRva2VuLiAgKi8KKyAgLyogRmlyc3QgdHJ5IHRvIGRlY2lkZSB3aGF0IHRvIGRv
IHdpdGhvdXQgcmVmZXJlbmNlIHRvIGxvb2thaGVhZCB0b2tlbi4gICovCiAgIHl5biA9IHl5cGFj
dFt5eXN0YXRlXTsKLSAgaWYgKHl5biA9PSBZWVBBQ1RfTklORikKKyAgaWYgKHl5cGFjdF92YWx1
ZV9pc19kZWZhdWx0ICh5eW4pKQogICAgIGdvdG8geXlkZWZhdWx0OwogCi0gIC8qIE5vdCBrbm93
biA9PiBnZXQgYSBsb29rLWFoZWFkIHRva2VuIGlmIGRvbid0IGFscmVhZHkgaGF2ZSBvbmUuICAq
LworICAvKiBOb3Qga25vd24gPT4gZ2V0IGEgbG9va2FoZWFkIHRva2VuIGlmIGRvbid0IGFscmVh
ZHkgaGF2ZSBvbmUuICAqLwogCi0gIC8qIFlZQ0hBUiBpcyBlaXRoZXIgWVlFTVBUWSBvciBZWUVP
RiBvciBhIHZhbGlkIGxvb2stYWhlYWQgc3ltYm9sLiAgKi8KKyAgLyogWVlDSEFSIGlzIGVpdGhl
ciBZWUVNUFRZIG9yIFlZRU9GIG9yIGEgdmFsaWQgbG9va2FoZWFkIHN5bWJvbC4gICovCiAgIGlm
ICh5eWNoYXIgPT0gWVlFTVBUWSkKICAgICB7CiAgICAgICBZWURQUklOVEYgKChzdGRlcnIsICJS
ZWFkaW5nIGEgdG9rZW46ICIpKTsKQEAgLTIxNTEsMjkgKzIxODcsMjcgQEAgeXliYWNrdXA6CiAg
IHl5biA9IHl5dGFibGVbeXluXTsKICAgaWYgKHl5biA8PSAwKQogICAgIHsKLSAgICAgIGlmICh5
eW4gPT0gMCB8fCB5eW4gPT0gWVlUQUJMRV9OSU5GKQotCWdvdG8geXllcnJsYWI7CisgICAgICBp
ZiAoeXl0YWJsZV92YWx1ZV9pc19lcnJvciAoeXluKSkKKyAgICAgICAgZ290byB5eWVycmxhYjsK
ICAgICAgIHl5biA9IC15eW47CiAgICAgICBnb3RvIHl5cmVkdWNlOwogICAgIH0KIAotICBpZiAo
eXluID09IFlZRklOQUwpCi0gICAgWVlBQ0NFUFQ7Ci0KICAgLyogQ291bnQgdG9rZW5zIHNoaWZ0
ZWQgc2luY2UgZXJyb3I7IGFmdGVyIHRocmVlLCB0dXJuIG9mZiBlcnJvcgogICAgICBzdGF0dXMu
ICAqLwogICBpZiAoeXllcnJzdGF0dXMpCiAgICAgeXllcnJzdGF0dXMtLTsKIAotICAvKiBTaGlm
dCB0aGUgbG9vay1haGVhZCB0b2tlbi4gICovCisgIC8qIFNoaWZ0IHRoZSBsb29rYWhlYWQgdG9r
ZW4uICAqLwogICBZWV9TWU1CT0xfUFJJTlQgKCJTaGlmdGluZyIsIHl5dG9rZW4sICZ5eWx2YWws
ICZ5eWxsb2MpOwogCi0gIC8qIERpc2NhcmQgdGhlIHNoaWZ0ZWQgdG9rZW4gdW5sZXNzIGl0IGlz
IGVvZi4gICovCi0gIGlmICh5eWNoYXIgIT0gWVlFT0YpCi0gICAgeXljaGFyID0gWVlFTVBUWTsK
KyAgLyogRGlzY2FyZCB0aGUgc2hpZnRlZCB0b2tlbi4gICovCisgIHl5Y2hhciA9IFlZRU1QVFk7
CiAKICAgeXlzdGF0ZSA9IHl5bjsKKyAgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfQkVH
SU4KICAgKisreXl2c3AgPSB5eWx2YWw7CisgIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVE
X0VORAogICAqKyt5eWxzcCA9IHl5bGxvYzsKICAgZ290byB5eW5ld3N0YXRlOwogCkBAIC0yMjUx
LDMxICsyMjg1LDIzIEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXROYW1lKCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeXlsc3BbKDEp
IC0gKDEpXSkpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNToKIAogICAg
IHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSA2OgogCiAgICAgewotICAgICAgICAvLwotICAgICAgICAvLyBJTlRfVFlQRSBp
cyBvbmx5IDE2LWJpdCBwbHVzIHNpZ24gYml0IGZvciB2ZXJ0ZXgvZnJhZ21lbnQgc2hhZGVycywK
LSAgICAgICAgLy8gY2hlY2sgZm9yIG92ZXJmbG93IGZvciBjb25zdGFudHMKLSAgICAgICAgLy8K
LSAgICAgICAgaWYgKGFicygoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmkpID49ICgxIDw8IDE2KSkg
ewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAiIGludGVn
ZXIgY29uc3RhbnQgb3ZlcmZsb3ciLCAiIik7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7Ci0gICAgICAgIH0KICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBD
b25zdGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoKHl5dnNwWygx
KSAtICgxKV0ubGV4KS5pKTsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5
cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygxKSAtICgxKV0pKTsK
LSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDc6CkBAIC0yMjg0LDcgKzIzMTAs
NyBAQCB5eXJlZHVjZToKICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBD
b25zdGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRGQ29uc3QoKHl5dnNwWygx
KSAtICgxKV0ubGV4KS5mKTsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDEpIC0gKDEpXSkp
OwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgODoKQEAgLTIyOTMsMzUgKzIz
MTksMzUgQEAgeXlyZWR1Y2U6CiAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBu
ZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KCh5eXZz
cFsoMSkgLSAoMSldLmxleCkuYik7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXks
IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDEpIC0gKDEp
XSkpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgOToKIAogICAgIHsKICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAg
Y2FzZSAxMDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAgO30KKyAg
ICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkSW5kZXhFeHByZXNzaW9uKCh5eXZz
cFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDQpXSks
ICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKTsKLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAogICBjYXNlIDEyOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEzOgpAQCAtMjQy
MCw3ICsyNDQ2LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsK
ICAgICAgICAgfQogICAgICAgICAvLyBkb24ndCBkZWxldGUgJDMuc3RyaW5nLCBpdCdzIGZyb20g
dGhlIHBvb2wKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE0OgpAQCAtMjQz
NCw3ICsyNDYwLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEp
IC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTU6CkBAIC0yNDQ4LDcgKzI0NzQsNyBAQCB5eXJlZHVj
ZToKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSAxNjoKQEAgLTI0NTcsNyArMjQ4Myw3IEBAIHl5cmVkdWNlOgogICAgICAgICBpZiAoY29udGV4
dC0+aW50ZWdlckVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksICJbXSIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE3
OgpAQCAtMjU1OCwxNCArMjU4NCwxNCBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgICAgICBkZWxldGUgZm5DYWxsOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwog
CiAgIGNhc2UgMTg6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE5
OgpAQCAtMjU3NCwyMSArMjYwMCwyMSBAQCB5eXJlZHVjZToKICAgICAgICAgY29udGV4dC0+ZXJy
b3IoKHl5bHNwWygzKSAtICgzKV0pLCAibWV0aG9kcyBhcmUgbm90IHN1cHBvcnRlZCIsICIiKTsK
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5
eXZzcFsoMykgLSAoMyldLmludGVybSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAg
Y2FzZSAyMDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDEpIC0g
KDIpXS5pbnRlcm0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjE6CiAK
ICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJt
KTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDIyOgpAQCAtMjU5Niw3ICsy
NjIyLDcgQEAgeXlyZWR1Y2U6CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKS5mdW5jdGlv
biA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5jdGlvbik7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0pLmludGVybU5vZGUgPSAwOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNh
c2UgMjM6CkBAIC0yNjA0LDcgKzI2MzAsNyBAQCB5eXJlZHVjZToKICAgICB7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0pLmZ1bmN0aW9uID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmZ1bmN0aW9u
KTsKICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtTm9kZSA9IDA7Ci0gICAgO30KKyAgICB9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyNDoKQEAgLTI2MTQsNyArMjY0MCw3IEBAIHl5cmVkdWNl
OgogICAgICAgICAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5hZGRQYXJhbWV0
ZXIocGFyYW0pOwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5mdW5jdGlvbiA9ICh5eXZzcFsoMSkg
LSAoMildLmludGVybS5mdW5jdGlvbik7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybU5v
ZGUgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICA7fQor
ICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDI1OgpAQCAtMjYyNCwxNCArMjY1MCwxNCBAQCB5
eXJlZHVjZToKICAgICAgICAgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5mdW5jdGlvbi0+YWRk
UGFyYW1ldGVyKHBhcmFtKTsKICAgICAgICAgKHl5dmFsLmludGVybSkuZnVuY3Rpb24gPSAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmZ1bmN0aW9uOwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5p
bnRlcm1Ob2RlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygx
KSAtICgzKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pKTsKLSAgICA7fQorICAgIH0KICAgICBi
cmVhazsKIAogICBjYXNlIDI2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1bmN0
aW9uKSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5jdGlvbik7Ci0gICAgO30KKyAgICB9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyNzoKQEAgLTI2OTAsNyArMjcxNiw3IEBAIHl5cmVkdWNl
OgogICAgICAgICBUVHlwZSB0eXBlKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKSk7CiAg
ICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24gPSBuZXcgVEZ1bmN0aW9uKCZ0ZW1wU3RyaW5nLCB0
eXBlLCBvcCk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gZnVuY3Rpb247Ci0g
ICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyODoKQEAgLTI3MDEsMTQgKzI3Mjcs
MTQgQEAgeXlyZWR1Y2U6CiAgICAgICAgIFRUeXBlIHR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVk
KTsKICAgICAgICAgVEZ1bmN0aW9uICpmdW5jdGlvbiA9IG5ldyBURnVuY3Rpb24oKHl5dnNwWygx
KSAtICgxKV0ubGV4KS5zdHJpbmcsIHR5cGUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1bmN0
aW9uKSA9IGZ1bmN0aW9uOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjk6
CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAgIDt9CisgICAgfQogICAg
IGJyZWFrOwogCiAgIGNhc2UgMzA6CkBAIC0yNzIyLDcgKzI3NDgsNyBAQCB5eXJlZHVjZToKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAzMToK
QEAgLTI3MzYsNyArMjc2Miw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5
dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0KLSAgICA7
fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDMyOgpAQCAtMjc1NywyNyArMjc4MywyNyBA
QCB5eXJlZHVjZToKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDMz
OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcE51bGw7IDt9CisgICAgeyAoeXl2YWwu
aW50ZXJtKS5vcCA9IEVPcE51bGw7IH0KICAgICBicmVhazsKIAogICBjYXNlIDM0OgogCi0gICAg
eyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcE5lZ2F0aXZlOyA7fQorICAgIHsgKHl5dmFsLmludGVy
bSkub3AgPSBFT3BOZWdhdGl2ZTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMzU6CiAKLSAgICB7
ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wTG9naWNhbE5vdDsgO30KKyAgICB7ICh5eXZhbC5pbnRl
cm0pLm9wID0gRU9wTG9naWNhbE5vdDsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMzY6CiAKLSAg
ICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KICAg
ICBicmVhazsKIAogICBjYXNlIDM3OgpAQCAtMjc4OSw3ICsyODE1LDcgQEAgeXlyZWR1Y2U6CiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMzg6
CkBAIC0yODAxLDEyICsyODI3LDEyIEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0g
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0KLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDM5OgogCi0gICAgeyAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAKICAg
Y2FzZSA0MDoKQEAgLTI4MTgsNyArMjg0NCw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAg
IH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDQxOgpAQCAtMjgzMCwxNyAr
Mjg1NiwxNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSA0MjoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9Cisg
ICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNDM6CiAKLSAg
ICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KICAg
ICBicmVhazsKIAogICBjYXNlIDQ0OgpAQCAtMjg1NCw3ICsyODgwLDcgQEAgeXlyZWR1Y2U6CiAg
ICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwogICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENv
bnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFD
b25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAg
ICBicmVhazsKIAogICBjYXNlIDQ1OgpAQCAtMjg2OCw3ICsyODk0LDcgQEAgeXlyZWR1Y2U6CiAg
ICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwogICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENv
bnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFD
b25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAg
ICBicmVhazsKIAogICBjYXNlIDQ2OgpAQCAtMjg4Miw3ICsyOTA4LDcgQEAgeXlyZWR1Y2U6CiAg
ICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwogICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENv
bnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFD
b25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAg
ICBicmVhazsKIAogICBjYXNlIDQ3OgpAQCAtMjg5NiwxMiArMjkyMiwxMiBAQCB5eXJlZHVjZToK
ICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7CiAgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
Q29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2
cUNvbnN0KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgNDg6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQor
ICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDQ5OgpAQCAt
MjkxNSw3ICsyOTQxLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRC
Q29uc3QoZmFsc2UpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5
cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7
CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDUwOgpAQCAt
MjkyOSwyNyArMjk1NSwyNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNl
dEJDb25zdChmYWxzZSk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBU
VHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAtICgzKV0p
KTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNTE6CiAK
LSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0K
ICAgICBicmVhazsKIAogICBjYXNlIDUyOgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30K
KyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA1MzoKIAot
ICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgNTQ6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQor
ICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDU1OgpAQCAt
Mjk2MywxMiArMjk4OSwxMiBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNl
dEJDb25zdChmYWxzZSk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBU
VHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAtICgzKV0p
KTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNTY6CiAK
LSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0K
ICAgICBicmVhazsKIAogICBjYXNlIDU3OgpAQCAtMjk4MiwxMiArMzAwOCwxMiBAQCB5eXJlZHVj
ZToKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7CiAgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQs
IEV2cUNvbnN0KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgfQotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgNTg6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7
fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDU5OgpA
QCAtMzAwMSwxMiArMzAyNywxMiBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIHVuaW9uQXJyYXkt
PnNldEJDb25zdChmYWxzZSk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5
LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAtICgz
KV0pKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNjA6
CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAo
MSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7
IH0KICAgICBicmVhazsKIAogICBjYXNlIDYxOgpAQCAtMzAyNCwxMiArMzA1MCwxMiBAQCB5eXJl
ZHVjZToKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoNSkgLSAoNSldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAg
Y2FzZSA2MjoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNw
WygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNjM6CkBAIC0zMDQzLDM5ICszMDY5LDM5
IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVh
azsKIAogICBjYXNlIDY0OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcEFzc2lnbjsg
O30KKyAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wQXNzaWduOyB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSA2NToKIAotICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BNdWxBc3NpZ247IDt9
CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcE11bEFzc2lnbjsgfQogICAgIGJyZWFrOwog
CiAgIGNhc2UgNjY6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wRGl2QXNzaWduOyA7
fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BEaXZBc3NpZ247IH0KICAgICBicmVhazsK
IAogICBjYXNlIDY3OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcEFkZEFzc2lnbjsg
O30KKyAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wQWRkQXNzaWduOyB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSA2ODoKIAotICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BTdWJBc3NpZ247
IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcFN1YkFzc2lnbjsgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgNjk6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAg
IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNzA6CkBAIC0zMDg3LDcgKzMxMTMsNyBA
QCB5eXJlZHVjZToKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMykgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSA3MToKQEAgLTMwOTYsNyArMzEyMiw3IEBAIHl5cmVkdWNlOgogICAgICAgICBp
ZiAoY29udGV4dC0+Y29uc3RFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA3
MjoKQEAgLTMxMjcsNyArMzE1Myw3IEBAIHl5cmVkdWNlOgogICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybU5vZGUpID0gcHJvdG90eXBlOwogCiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxl
LnBvcCgpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNzM6CkBAIC0zMTM2
LDcgKzMxNjIsNyBAQCB5eXJlZHVjZToKICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMildLmlu
dGVybSkuaW50ZXJtQWdncmVnYXRlKQogICAgICAgICAgICAgKHl5dnNwWygxKSAtICgyKV0uaW50
ZXJtKS5pbnRlcm1BZ2dyZWdhdGUtPnNldE9wKEVPcERlY2xhcmF0aW9uKTsKICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybSkuaW50ZXJt
QWdncmVnYXRlOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNzQ6CkBAIC0z
MTUxLDcgKzMxNzcsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgfQogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gMDsKLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDc1OgpAQCAtMzIwNywyMSArMzIzMywy
MSBAQCB5eXJlZHVjZToKICAgICAgICAgLy8gV2UncmUgYXQgdGhlIGlubmVyIHNjb3BlIGxldmVs
IG9mIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50cyBhbmQgYm9keSBzdGF0ZW1lbnQuCiAgICAgICAg
IC8vIEFkZCB0aGUgZnVuY3Rpb24gcHJvdG90eXBlIHRvIHRoZSBzdXJyb3VuZGluZyBzY29wZSBp
bnN0ZWFkLgogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5nZXRPdXRlckxldmVsKCktPmlu
c2VydCgqKHl5dmFsLmludGVybSkuZnVuY3Rpb24pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgNzY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24p
ID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmZ1bmN0aW9uKTsKLSAgICA7fQorICAgIH0KICAg
ICBicmVhazsKIAogICBjYXNlIDc3OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1
bmN0aW9uKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5mdW5jdGlvbik7Ci0gICAgO30KKyAg
ICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA3ODoKQEAgLTMyMzMsNyArMzI1OSw3IEBAIHl5cmVk
dWNlOgogICAgICAgICAgICAgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+YWRk
UGFyYW1ldGVyKCh5eXZzcFsoMikgLSAoMildLmludGVybSkucGFyYW0pOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBkZWxldGUgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtKS5wYXJhbS50eXBl
OwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNzk6CkBAIC0zMjU1LDcgKzMy
ODEsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0g
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmZ1bmN0aW9uKTsKICAgICAgICAgICAgICh5eXZzcFso
MSkgLSAoMyldLmludGVybS5mdW5jdGlvbiktPmFkZFBhcmFtZXRlcigoeXl2c3BbKDMpIC0gKDMp
XS5pbnRlcm0pLnBhcmFtKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwog
CiAgIGNhc2UgODA6CkBAIC0zMjc2LDcgKzMzMDIsNyBAQCB5eXJlZHVjZToKICAgICAgICAgKHl5
dmFsLmludGVybS5mdW5jdGlvbikgPSBmdW5jdGlvbjsKICAgICAgICAgCiAgICAgICAgIGNvbnRl
eHQtPnN5bWJvbFRhYmxlLnB1c2goKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBj
YXNlIDgxOgpAQCAtMzI5MCw3ICszMzE2LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7KHl5dnNwWygyKSAt
ICgyKV0ubGV4KS5zdHJpbmcsIG5ldyBUVHlwZSgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlw
ZSkpfTsKICAgICAgICAgKHl5dmFsLmludGVybSkucGFyYW0gPSBwYXJhbTsKLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAogICBjYXNlIDgyOgpAQCAtMzMxMSw3ICszMzM3LDcgQEAgeXlyZWR1
Y2U6CiAgICAgICAgIFRUeXBlKiB0eXBlID0gbmV3IFRUeXBlKCh5eXZzcFsoMSkgLSAoNSldLmlu
dGVybS50eXBlKSk7CiAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7ICh5eXZzcFsoMikgLSAo
NSldLmxleCkuc3RyaW5nLCB0eXBlIH07CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnBhcmFtID0g
cGFyYW07Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA4MzoKQEAgLTMzMjAs
NyArMzM0Niw3IEBAIHl5cmVkdWNlOgogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFso
MykgLSAoMyldLmludGVybSk7CiAgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2so
KHl5bHNwWygzKSAtICgzKV0pLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkucXVhbGlm
aWVyLCAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSku
cGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgO30KKyAg
ICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA4NDoKQEAgLTMzMzEsNyArMzM1Nyw3IEBAIHl5cmVk
dWNlOgogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoY29udGV4
dC0+cGFyYW1FcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMildKSwgRXZxVGVtcG9yYXJ5LCAoeXl2
c3BbKDEpIC0gKDIpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlw
ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSA4NToKQEAgLTMzNDAsNyArMzM2Niw3IEBAIHl5cmVkdWNlOgogICAg
ICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMykgLSAoMyldLmludGVybSk7CiAgICAgICAg
IGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5bHNwWygzKSAtICgzKV0pLCAoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyLCAoeXl2c3BbKDIpIC0gKDMpXS5pbnRl
cm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA4
NjoKQEAgLTMzNTEsMzUgKzMzNzcsMzUgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5bHNw
WygyKSAtICgyKV0pLCBFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkgLSAoMildLmludGVybS5xdWFs
aWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDg3OgogCiAg
ICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcikgPSBFdnFJbjsKLSAgICA7fQor
ICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDg4OgogCiAgICAgewogICAgICAgICAoeXl2YWwu
aW50ZXJtLnF1YWxpZmllcikgPSBFdnFJbjsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAog
ICBjYXNlIDg5OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcikgPSBF
dnFPdXQ7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA5MDoKIAogICAgIHsK
ICAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxSW5PdXQ7Ci0gICAgO30KKyAg
ICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA5MToKQEAgLTMzODcsMTQgKzM0MTMsMTQgQEAgeXly
ZWR1Y2U6CiAgICAgewogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyAwLCBuZXcgVFR5cGUo
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpKSB9OwogICAgICAgICAoeXl2YWwuaW50ZXJt
KS5wYXJhbSA9IHBhcmFtOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgOTI6
CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDkzOgpAQCAtMzQyMCw3
ICszNDQ2LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgIGlmIChzeW1ib2wgJiYgdmFyaWFibGUpCiAgICAgICAgICAgICBzeW1ib2wtPnNldElk
KHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAog
ICBjYXNlIDk0OgpAQCAtMzQ0Miw3ICszNDY4LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBp
ZiAoY29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCh5eWxzcFsoNCkgLSAoNSldKSwgKih5eXZzcFso
MykgLSAoNSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUsIHZh
cmlhYmxlKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0K
LSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDk1OgpAQCAtMzQ3MCw3ICszNDk2
LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICB0eXBlLnNldEFycmF5U2l6ZShzaXplKTsKICAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoNildLmludGVybSkuaW50ZXJtTm9k
ZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZSA/IHZhcmlhYmxlLT5n
ZXRVbmlxdWVJZCgpIDogMCwgKih5eXZzcFsoMykgLSAoNildLmxleCkuc3RyaW5nLCB0eXBlLCAo
eXlsc3BbKDMpIC0gKDYpXSkpLCAoeXlsc3BbKDMpIC0gKDYpXSkpOwogICAgICAgICB9Ci0gICAg
O30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA5NjoKQEAgLTM0OTQsNyArMzUyMCw3IEBA
IHl5cmVkdWNlOgogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAg
KHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gMDsKICAgICAgICAgfQotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgOTc6CkBAIC0zNTAyLDcgKzM1MjgsNyBAQCB5eXJl
ZHVjZToKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0udHlwZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0
ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRTeW1ib2woMCwgIiIsIFRUeXBlKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBl
KSksICh5eWxzcFsoMSkgLSAoMSldKSksICh5eWxzcFsoMSkgLSAoMSldKSk7Ci0gICAgO30KKyAg
ICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA5ODoKQEAgLTM1MjQsNyArMzU1MCw3IEBAIHl5cmVk
dWNlOgogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAodmFyaWFi
bGUgJiYgc3ltYm9sKQogICAgICAgICAgICAgc3ltYm9sLT5zZXRJZCh2YXJpYWJsZS0+Z2V0VW5p
cXVlSWQoKSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA5OToKQEAgLTM1
MzYsNyArMzU2Miw3IEBAIHl5cmVkdWNlOgogICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICooeXl2c3BbKDIpIC0gKDQpXS5s
ZXgpLnN0cmluZywgVFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpKSwgKHl5bHNw
WygyKSAtICg0KV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXlsc3BbKDIpIC0g
KDQpXSkpOwogICAgICAgICAoeXl2YWwuaW50ZXJtKS50eXBlID0gKHl5dnNwWygxKSAtICg0KV0u
aW50ZXJtLnR5cGUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTAwOgpA
QCAtMzU3Miw3ICszNTk4LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBpZiAodmFyaWFibGUg
JiYgc3ltYm9sKQogICAgICAgICAgICAgICAgIHN5bWJvbC0+c2V0SWQodmFyaWFibGUtPmdldFVu
aXF1ZUlkKCkpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSAxMDE6CkBAIC0zNTk2LDcgKzM2MjIsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0
ZSA9IDA7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEw
MjoKQEAgLTM2MTgsNyArMzY0NCw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgVEludGVybVN5
bWJvbCAqc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNw
WygyKSAtICgyKV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZhbC5pbnRlcm0pLnR5cGUpLCAoeXls
c3BbKDIpIC0gKDIpXSkpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVn
YXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXlsc3Bb
KDIpIC0gKDIpXSkpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAg
Y2FzZSAxMDM6CkBAIC0zNjMxLDcgKzM2NTcsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50
eXBlKS5zZXRBcnJheShmYWxzZSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVh
azsKIAogICBjYXNlIDEwNDoKQEAgLTM2NTUsMTQgKzM2ODEsMTQgQEAgeXlyZWR1Y2U6CiAgICAg
ICAgIH0KICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFsoMikgLSAoMildLmlu
dGVybS50eXBlKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5xdWFsaWZpZXIgPSAoeXl2
c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyOwotICAgIDt9CisgICAgfQogICAg
IGJyZWFrOwogCiAgIGNhc2UgMTA1OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cUNvbnN0LCAoeXlsc3BbKDEpIC0gKDEpXSkpOwotICAg
IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTA2OgpAQCAtMzY3Miw3ICszNjk4LDcg
QEAgeXlyZWR1Y2U6CiAgICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCh5eWxz
cFsoMSkgLSAoMSldKSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiYXR0
cmlidXRlIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxQXR0cmlidXRlLCAoeXlsc3BbKDEp
IC0gKDEpXSkpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTA3OgpAQCAt
MzY4NCw3ICszNzEwLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdPdXQsICh5eWxzcFsoMSkgLSAoMSldKSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMo
RWJ0Vm9pZCwgRXZxVmFyeWluZ0luLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTA4OgpAQCAtMzY5Niw3ICszNzIyLDcgQEAgeXlyZWR1
Y2U6CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2
cUludmFyaWFudFZhcnlpbmdPdXQsICh5eWxzcFsoMSkgLSAoMildKSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxSW52
YXJpYW50VmFyeWluZ0luLCAoeXlsc3BbKDEpIC0gKDIpXSkpOwotICAgIDt9CisgICAgfQogICAg
IGJyZWFrOwogCiAgIGNhc2UgMTA5OgpAQCAtMzcwNSw3ICszNzMxLDcgQEAgeXlyZWR1Y2U6CiAg
ICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMSldKSwg
Y29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidW5pZm9ybSIpKQogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNl
dEJhc2ljKEVidFZvaWQsIEV2cVVuaWZvcm0sICh5eWxzcFsoMSkgLSAoMSldKSk7Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMTA6CkBAIC0zNzE5LDcgKzM3NDUsNyBAQCB5
eXJlZHVjZToKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDExMToK
QEAgLTM3MjcsMzUgKzM3NTMsMzUgQEAgeXlyZWR1Y2U6CiAgICAgewogICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpOwogICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lvbiA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5w
cmVjaXNpb24pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTEyOgogCiAg
ICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnByZWNpc2lvbikgPSBFYnBIaWdoOwotICAgIDt9
CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTEzOgogCiAgICAgewogICAgICAgICAoeXl2
YWwuaW50ZXJtLnByZWNpc2lvbikgPSBFYnBNZWRpdW07Ci0gICAgO30KKyAgICB9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSAxMTQ6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucHJlY2lz
aW9uKSA9IEVicExvdzsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDExNToK
IAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS50eXBlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDExNjoK
QEAgLTM3NzEsNyArMzc5Nyw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QXJyYXkodHJ1
ZSwgc2l6ZSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNl
IDExNzoKQEAgLTM3NzksNyArMzgwNSw3IEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAgICAgVFF1
YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZx
R2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJh
c2ljKEVidFZvaWQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAxMTg6CkBAIC0zNzg3LDcgKzM4MTMsNyBAQCB5eXJlZHVjZToK
ICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0p
KTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDExOToKQEAgLTM3OTUsNyAr
MzgyMSw3IEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29u
dGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9y
YXJ5OwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEludCwgcXVhbCwg
KHl5bHNwWygxKSAtICgxKV0pKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNl
IDEyMDoKQEAgLTM4MDMsNyArMzgyOSw3IEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAgICAgVFF1
YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZx
R2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJh
c2ljKEVidEJvb2wsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAxMjE6CkBAIC0zODEyLDcgKzM4MzgsNyBAQCB5eXJlZHVjZToK
ICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxM
ZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKLSAgICA7fQorICAgIH0K
ICAgICBicmVhazsKIAogICBjYXNlIDEyMjoKQEAgLTM4MjEsNyArMzg0Nyw3IEBAIHl5cmVkdWNl
OgogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2Jh
bExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDMpOwotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTIzOgpAQCAtMzgzMCw3ICszODU2LDcgQEAgeXlyZWR1
Y2U6CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xv
YmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsK
ICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7Ci0gICAgO30KKyAg
ICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjQ6CkBAIC0zODM5LDcgKzM4NjUsNyBAQCB5eXJl
ZHVjZToKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRH
bG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7
CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDIpOwotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTI1OgpAQCAtMzg0OCw3ICszODc0LDcgQEAgeXly
ZWR1Y2U6CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkp
OwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzKTsKLSAgICA7fQor
ICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEyNjoKQEAgLTM4NTcsNyArMzg4Myw3IEBAIHl5
cmVkdWNlOgogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5h
dEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0p
KTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjc6CkBAIC0zODY2LDcgKzM4OTIsNyBAQCB5
eXJlZHVjZToKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0p
KTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMik7Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjg6CkBAIC0zODc1LDcgKzM5MDEsNyBAQCB5
eXJlZHVjZToKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0p
KTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMyk7Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjk6CkBAIC0zODg0LDcgKzM5MTAsNyBAQCB5
eXJlZHVjZToKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0p
KTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzA6CkBAIC0zODkzLDcgKzM5MTksNyBAQCB5
eXJlZHVjZToKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEp
XSkpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyLCB0cnVlKTsK
LSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEzMToKQEAgLTM5MDIsNyArMzky
OCw3IEBAIHl5cmVkdWNlOgogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1i
b2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eWxzcFso
MSkgLSAoMSldKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDMs
IHRydWUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTMyOgpAQCAtMzkx
MSw3ICszOTM3LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFy
eTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwg
KHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dy
ZWdhdGUoNCwgdHJ1ZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzM6
CkBAIC0zOTE5LDcgKzM5NDUsNyBAQCB5eXJlZHVjZToKICAgICB7CiAgICAgICAgIFRRdWFsaWZp
ZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2Jh
bCA6IEV2cVRlbXBvcmFyeTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhF
YnRTYW1wbGVyMkQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAxMzQ6CkBAIC0zOTI3LDcgKzM5NTMsNyBAQCB5eXJlZHVjZToK
ICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyQ3ViZSwgcXVhbCwgKHl5bHNwWygxKSAt
ICgxKV0pKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEzNToKQEAgLTM5
MzksNyArMzk2NSw3IEBAIHl5cmVkdWNlOgogICAgICAgICB9CiAgICAgICAgIFRRdWFsaWZpZXIg
cXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6
IEV2cVRlbXBvcmFyeTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRT
YW1wbGVyRXh0ZXJuYWxPRVMsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7Ci0gICAgO30KKyAg
ICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzY6CkBAIC0zOTUxLDcgKzM5NzcsNyBAQCB5eXJl
ZHVjZToKICAgICAgICAgfQogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1i
b2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U2FtcGxlcjJEUmVjdCwgcXVhbCwg
KHl5bHNwWygxKSAtICgxKV0pKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNl
IDEzNzoKQEAgLTM5NTksNyArMzk4NSw3IEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKTsKICAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS5xdWFsaWZpZXIgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5h
dEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgO30KKyAgICB9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzg6CkBAIC0zOTczLDEyICszOTk5LDEyIEBAIHl5cmVk
dWNlOgogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U3RydWN0LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkp
OwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnVzZXJEZWYgPSAmc3RydWN0dXJlOwotICAg
IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTM5OgogCi0gICAgeyBpZiAoY29udGV4
dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbigoeXlsc3BbKDIpIC0gKDMpXSksICooeXl2c3BbKDIp
IC0gKDMpXS5sZXgpLnN0cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgO30KKyAgICB7IGlmIChj
b250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKCh5eWxzcFsoMikgLSAoMyldKSwgKih5eXZz
cFsoMikgLSAoMyldLmxleCkuc3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyB9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSAxNDA6CkBAIC0zOTk2LDEyICs0MDIyLDEyIEBAIHl5cmVkdWNlOgogICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFN0cnVjdCwgRXZxVGVtcG9yYXJ5
LCAoeXlsc3BbKDEpIC0gKDYpXSkpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnVzZXJE
ZWYgPSBzdHJ1Y3R1cmU7CiAgICAgICAgIGNvbnRleHQtPmV4aXRTdHJ1Y3REZWNsYXJhdGlvbigp
OwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTQxOgogCi0gICAgeyBpZiAo
Y29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbigoeXlsc3BbKDIpIC0gKDIpXSksICooeXl2
c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgO30KKyAgICB7
IGlmIChjb250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKCh5eWxzcFsoMikgLSAoMildKSwg
Kih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAxNDI6CkBAIC00MDExLDE0ICs0MDM3LDE0IEBAIHl5cmVkdWNl
OgogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFN0cnVjdCwgRXZxVGVt
cG9yYXJ5LCAoeXlsc3BbKDEpIC0gKDUpXSkpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnVzZXJEZWYgPSBzdHJ1Y3R1cmU7CiAgICAgICAgIGNvbnRleHQtPmV4aXRTdHJ1Y3REZWNsYXJh
dGlvbigpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTQzOgogCiAgICAg
ewogICAgICAgICAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkgPSAoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0uZmllbGRMaXN0KTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE0
NDoKQEAgLTQwMzUsNyArNDA2MSw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgKHl5dmFsLmludGVybS5maWVsZExpc3QpLT5wdXNoX2JhY2soZmllbGQpOwogICAgICAg
ICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNDU6CkBAIC00MDY5LDcg
KzQwOTUsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3ROZXN0
aW5nRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDMpXSksICooKih5eXZhbC5pbnRlcm0uZmllbGRM
aXN0KSlbaV0pKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
fQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTQ2OgpAQCAtNDA3NywxNCAr
NDEwMywxNCBAQCB5eXJlZHVjZToKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRM
aXN0KSA9IE5ld1Bvb2xURmllbGRMaXN0KCk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRM
aXN0KS0+cHVzaF9iYWNrKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS5maWVsZCkpOwotICAgIDt9
CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTQ3OgogCiAgICAgewogICAgICAgICAoeXl2
YWwuaW50ZXJtLmZpZWxkTGlzdCktPnB1c2hfYmFjaygoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0u
ZmllbGQpKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE0ODoKQEAgLTQw
OTUsNyArNDEyMSw3IEBAIHl5cmVkdWNlOgogCiAgICAgICAgIFRUeXBlKiB0eXBlID0gbmV3IFRU
eXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGQp
ID0gbmV3IFRGaWVsZCh0eXBlLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZyk7Ci0gICAg
O30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNDk6CkBAIC00MTExLDY3ICs0MTM3LDY3
IEBAIHl5cmVkdWNlOgogICAgICAgICB0eXBlLT5zZXRBcnJheVNpemUoc2l6ZSk7CiAKICAgICAg
ICAgKHl5dmFsLmludGVybS5maWVsZCkgPSBuZXcgVEZpZWxkKHR5cGUsICh5eXZzcFsoMSkgLSAo
NCldLmxleCkuc3RyaW5nKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE1
MDoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTUxOgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmlu
dGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQorICAg
IHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5p
bnRlcm1Ob2RlKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTUyOgogCi0gICAgeyAoeXl2YWwu
aW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybUFnZ3Jl
Z2F0ZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1
MzoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkg
PSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAog
ICBjYXNlIDE1NDoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFso
MSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50
ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBi
cmVhazsKIAogICBjYXNlIDE1NToKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7
IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1NjoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRl
cm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7
ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50
ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1NzoKIAotICAgIHsgKHl5dmFsLmlu
dGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsg
O30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1ODoKIAotICAgIHsg
KHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRl
cm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1OToK
IAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpID0gMDsgO30KKyAgICB7ICh5
eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSA9IDA7IH0KICAgICBicmVhazsKIAogICBjYXNl
IDE2MDoKIAotICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyA7fQorICAgIHsgY29u
dGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNjE6CiAK
LSAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyA7fQorICAgIHsgY29udGV4dC0+c3lt
Ym9sVGFibGUucG9wKCk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE2MjoKQEAgLTQxODIsNDQg
KzQyMDgsNDQgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAoeXl2c3BbKDMpIC0gKDUpXS5pbnRl
cm0uaW50ZXJtQWdncmVnYXRlKS0+c2V0TGluZSgoeXlsb2MpKTsKICAgICAgICAgfQogICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkgPSAoeXl2c3BbKDMpIC0gKDUpXS5pbnRl
cm0uaW50ZXJtQWdncmVnYXRlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNl
IDE2MzoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAo
MSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9k
ZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsK
IAogICBjYXNlIDE2NDoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0u
aW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAg
ICBicmVhazsKIAogICBjYXNlIDE2NToKIAotICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVz
aCgpOyA7fQorICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAxNjY6CiAKLSAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyAoeXl2
YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybU5v
ZGUpOyA7fQorICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7ICh5eXZhbC5pbnRlcm0u
aW50ZXJtTm9kZSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAg
ICBicmVhazsKIAogICBjYXNlIDE2NzoKIAotICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVz
aCgpOyA7fQorICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAxNjg6CiAKLSAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyAoeXl2
YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybU5v
ZGUpOyA7fQorICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7ICh5eXZhbC5pbnRlcm0u
aW50ZXJtTm9kZSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAg
ICBicmVhazsKIAogICBjYXNlIDE2OToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1Ob2RlKSA9IDA7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNzA6
CkBAIC00MjMwLDMxICs0MjU2LDMxIEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgKHl5dnNwWygy
KSAtICgzKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldExpbmUoKHl5bG9jKSk7CiAgICAg
ICAgIH0KICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMikgLSAo
MyldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwog
CiAgIGNhc2UgMTcxOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybUFnZ3Jl
Z2F0ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxvYykpOwotICAgIDt9CisgICAgfQogICAgIGJy
ZWFrOwogCiAgIGNhc2UgMTcyOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bUFnZ3JlZ2F0ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3Bb
KDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSwgKHl5dnNwWygyKSAtICgyKV0uaW50
ZXJtLmludGVybU5vZGUpLCAoeXlsb2MpKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAog
ICBjYXNlIDE3MzoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IDA7IDt9Cisg
ICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gMDsgfQogICAgIGJyZWFrOwogCiAgIGNh
c2UgMTc0OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gc3RhdGljX2Nhc3Q8
VEludGVybU5vZGUqPigoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSk7
IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gc3RhdGljX2Nhc3Q8VEludGVy
bU5vZGUqPigoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSk7IH0KICAg
ICBicmVhazsKIAogICBjYXNlIDE3NToKQEAgLTQyNjMsNyArNDI4OSw3IEBAIHl5cmVkdWNlOgog
ICAgICAgICBpZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICg1KV0pLCAo
eXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9uKCh5eXZzcFsoMykgLSAoNSldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDUpIC0gKDUpXS5pbnRlcm0ubm9kZVBhaXIpLCAo
eXlsc3BbKDEpIC0gKDUpXSkpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2Ug
MTc2OgpAQCAtNDI3MSw3ICs0Mjk3LDcgQEAgeXlyZWR1Y2U6CiAgICAgewogICAgICAgICAoeXl2
YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2RlMSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRl
cm1Ob2RlKTsKICAgICAgICAgKHl5dmFsLmludGVybS5ub2RlUGFpcikubm9kZTIgPSAoeXl2c3Bb
KDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAxNzc6CkBAIC00Mjc5LDcgKzQzMDUsNyBAQCB5eXJlZHVjZToKICAgICB7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLmludGVybU5vZGUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2Rl
MiA9IDA7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNzg6CkBAIC00Mjg4
LDcgKzQzMTQsNyBAQCB5eXJlZHVjZToKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAg
ICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0TGluZSgpLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNzk6CkBAIC00MzA2LDEyICs0MzMyLDEyIEBA
IHl5cmVkdWNlOgogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gMDsKICAgICAgICAgfQotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTgwOgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xU
YWJsZS5wdXNoKCk7ICsrY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgO30KKyAgICB7IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgKytjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsOyB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAxODE6CkBAIC00MzIwLDEyICs0MzQ2LDEyIEBAIHl5cmVkdWNl
OgogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKICAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wV2hp
bGUsIDAsICh5eXZzcFsoNCkgLSAoNildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAwLCAoeXl2
c3BbKDYpIC0gKDYpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxzcFsoMSkgLSAoNildKSk7CiAg
ICAgICAgIC0tY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKLSAgICA7fQorICAgIH0KICAgICBi
cmVhazsKIAogICBjYXNlIDE4MjoKIAotICAgIHsgKytjb250ZXh0LT5sb29wTmVzdGluZ0xldmVs
OyA7fQorICAgIHsgKytjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsOyB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAxODM6CkBAIC00MzM2LDEyICs0MzYyLDEyIEBAIHl5cmVkdWNlOgogCiAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9v
cChFTG9vcERvV2hpbGUsIDAsICh5eXZzcFsoNikgLSAoOCldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAwLCAoeXl2c3BbKDMpIC0gKDgpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxzcFsoNCkg
LSAoOCldKSk7CiAgICAgICAgIC0tY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKLSAgICA7fQor
ICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE4NDoKIAotICAgIHsgY29udGV4dC0+c3ltYm9s
VGFibGUucHVzaCgpOyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IDt9CisgICAgeyBjb250
ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7ICsrY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgMTg1OgpAQCAtNDM1MCwzNSArNDM3NiwzNSBAQCB5eXJlZHVj
ZToKICAgICAgICAgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcEZv
ciwgKHl5dnNwWyg0KSAtICg3KV0uaW50ZXJtLmludGVybU5vZGUpLCByZWludGVycHJldF9jYXN0
PFRJbnRlcm1UeXBlZCo+KCh5eXZzcFsoNSkgLSAoNyldLmludGVybS5ub2RlUGFpcikubm9kZTEp
LCByZWludGVycHJldF9jYXN0PFRJbnRlcm1UeXBlZCo+KCh5eXZzcFsoNSkgLSAoNyldLmludGVy
bS5ub2RlUGFpcikubm9kZTIpLCAoeXl2c3BbKDcpIC0gKDcpXS5pbnRlcm0uaW50ZXJtTm9kZSks
ICh5eWxzcFsoMSkgLSAoNyldKSk7CiAgICAgICAgIC0tY29udGV4dC0+bG9vcE5lc3RpbmdMZXZl
bDsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE4NjoKIAogICAgIHsKICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVy
bS5pbnRlcm1Ob2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE4NzoK
IAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkg
LSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAog
ICBjYXNlIDE4ODoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxODk6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IDA7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAxOTA6CkBAIC00Mzg2LDcgKzQ0MTIsNyBAQCB5eXJlZHVjZToKICAgICB7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWygxKSAtICgyKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIp
Lm5vZGUyID0gMDsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE5MToKQEAg
LTQzOTQsNyArNDQyMCw3IEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVy
bS5ub2RlUGFpcikubm9kZTEgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKTsKICAgICAgICAgKHl5dmFsLmludGVybS5ub2RlUGFpcikubm9kZTIgPSAoeXl2c3BbKDMp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVh
azsKIAogICBjYXNlIDE5MjoKQEAgLTQ0MDUsNyArNDQzMSw3IEBAIHl5cmVkdWNlOgogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcENvbnRp
bnVlLCAoeXlsc3BbKDEpIC0gKDIpXSkpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAg
IGNhc2UgMTkzOgpAQCAtNDQxNiw3ICs0NDQyLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQnJlYWssICh5eWxz
cFsoMSkgLSAoMildKSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxOTQ6
CkBAIC00NDI3LDcgKzQ0NTMsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCh5eWxzcFsoMSkgLSAoMildKSwgIm5vbi12b2lkIGZ1bmN0aW9uIG11c3QgcmV0dXJuIGEg
dmFsdWUiLCAicmV0dXJuIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE5NToKQEAgLTQ0NDIs
NyArNDQ2OCw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNw
WygxKSAtICgzKV0pLCAiZnVuY3Rpb24gcmV0dXJuIGlzIG5vdCBtYXRjaGluZyB0eXBlOiIsICJy
ZXR1cm4iKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAg
IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTk2OgpAQCAtNDQ1MCw3ICs0NDc2LDcg
QEAgeXlyZWR1Y2U6CiAgICAgewogICAgICAgICBGUkFHX09OTFkoImRpc2NhcmQiLCAoeXlsc3Bb
KDEpIC0gKDIpXSkpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BLaWxsLCAoeXlsc3BbKDEpIC0gKDIpXSkpOwot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTk3OgpAQCAtNDQ1OCw3ICs0NDg0
LDcgQEAgeXlyZWR1Y2U6CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUp
ID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOwogICAgICAgICBjb250ZXh0
LT50cmVlUm9vdCA9ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSk7Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAxOTg6CkBAIC00NDY2LDIxICs0NDkyLDIxIEBAIHl5cmVkdWNl
OgogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1O
b2RlKSwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXlsb2MpKTsKICAg
ICAgICAgY29udGV4dC0+dHJlZVJvb3QgPSAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpOwotICAg
IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTk5OgogCiAgICAgewogICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVy
bU5vZGUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjAwOgogCiAgICAg
ewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLmludGVybU5vZGUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2Ug
MjAxOgpAQCAtNDU3MCw3ICs0NTk2LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcihwYXJhbU5vZGVzLCBFT3BQYXJhbWV0ZXJz
LCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0p
LmludGVybUFnZ3JlZ2F0ZSA9IHBhcmFtTm9kZXM7CiAgICAgICAgIGNvbnRleHQtPmxvb3BOZXN0
aW5nTGV2ZWwgPSAwOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjAyOgpA
QCAtNDU5NCwxNCArNDYyMCwyNCBAQCB5eXJlZHVjZToKICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1Ob2RlKS0+Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0RGVidWcoY29udGV4dC0+cHJhZ21hKCku
ZGVidWcpOwogCiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOwotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCiAKLS8qIExpbmUgMTI2NyBvZiB5YWNjLmMuICAqLwogCiAgICAg
ICBkZWZhdWx0OiBicmVhazsKICAgICB9CisgIC8qIFVzZXIgc2VtYW50aWMgYWN0aW9ucyBzb21l
dGltZXMgYWx0ZXIgeXljaGFyLCBhbmQgdGhhdCByZXF1aXJlcworICAgICB0aGF0IHl5dG9rZW4g
YmUgdXBkYXRlZCB3aXRoIHRoZSBuZXcgdHJhbnNsYXRpb24uICBXZSB0YWtlIHRoZQorICAgICBh
cHByb2FjaCBvZiB0cmFuc2xhdGluZyBpbW1lZGlhdGVseSBiZWZvcmUgZXZlcnkgdXNlIG9mIHl5
dG9rZW4uCisgICAgIE9uZSBhbHRlcm5hdGl2ZSBpcyB0cmFuc2xhdGluZyBoZXJlIGFmdGVyIGV2
ZXJ5IHNlbWFudGljIGFjdGlvbiwKKyAgICAgYnV0IHRoYXQgdHJhbnNsYXRpb24gd291bGQgYmUg
bWlzc2VkIGlmIHRoZSBzZW1hbnRpYyBhY3Rpb24gaW52b2tlcworICAgICBZWUFCT1JULCBZWUFD
Q0VQVCwgb3IgWVlFUlJPUiBpbW1lZGlhdGVseSBhZnRlciBhbHRlcmluZyB5eWNoYXIgb3IKKyAg
ICAgaWYgaXQgaW52b2tlcyBZWUJBQ0tVUC4gIEluIHRoZSBjYXNlIG9mIFlZQUJPUlQgb3IgWVlB
Q0NFUFQsIGFuCisgICAgIGluY29ycmVjdCBkZXN0cnVjdG9yIG1pZ2h0IHRoZW4gYmUgaW52b2tl
ZCBpbW1lZGlhdGVseS4gIEluIHRoZQorICAgICBjYXNlIG9mIFlZRVJST1Igb3IgWVlCQUNLVVAs
IHN1YnNlcXVlbnQgcGFyc2VyIGFjdGlvbnMgbWlnaHQgbGVhZAorICAgICB0byBhbiBpbmNvcnJl
Y3QgZGVzdHJ1Y3RvciBjYWxsIG9yIHZlcmJvc2Ugc3ludGF4IGVycm9yIG1lc3NhZ2UKKyAgICAg
YmVmb3JlIHRoZSBsb29rYWhlYWQgaXMgdHJhbnNsYXRlZC4gICovCiAgIFlZX1NZTUJPTF9QUklO
VCAoIi0+ICQkID0iLCB5eXIxW3l5bl0sICZ5eXZhbCwgJnl5bG9jKTsKIAogICBZWVBPUFNUQUNL
ICh5eWxlbik7CkBAIC00NjMwLDYgKzQ2NjYsMTAgQEAgeXlyZWR1Y2U6CiB8IHl5ZXJybGFiIC0t
IGhlcmUgb24gZGV0ZWN0aW5nIGVycm9yIHwKIGAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0qLwogeXllcnJsYWI6CisgIC8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGxhdGVzdCBsb29r
YWhlYWQgdHJhbnNsYXRpb24uICBTZWUgY29tbWVudHMgYXQKKyAgICAgdXNlciBzZW1hbnRpYyBh
Y3Rpb25zIGZvciB3aHkgdGhpcyBpcyBuZWNlc3NhcnkuICAqLworICB5eXRva2VuID0geXljaGFy
ID09IFlZRU1QVFkgPyBZWUVNUFRZIDogWVlUUkFOU0xBVEUgKHl5Y2hhcik7CisKICAgLyogSWYg
bm90IGFscmVhZHkgcmVjb3ZlcmluZyBmcm9tIGFuIGVycm9yLCByZXBvcnQgdGhpcyBlcnJvci4g
ICovCiAgIGlmICgheXllcnJzdGF0dXMpCiAgICAgewpAQCAtNDYzNyw0NSArNDY3Nyw0NCBAQCB5
eWVycmxhYjoKICNpZiAhIFlZRVJST1JfVkVSQk9TRQogICAgICAgeXllcnJvciAoJnl5bGxvYywg
Y29udGV4dCwgWVlfKCJzeW50YXggZXJyb3IiKSk7CiAjZWxzZQorIyBkZWZpbmUgWVlTWU5UQVhf
RVJST1IgeXlzeW50YXhfZXJyb3IgKCZ5eW1zZ19hbGxvYywgJnl5bXNnLCBcCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXlzc3AsIHl5dG9rZW4pCiAgICAgICB7Ci0J
WVlTSVpFX1QgeXlzaXplID0geXlzeW50YXhfZXJyb3IgKDAsIHl5c3RhdGUsIHl5Y2hhcik7Ci0J
aWYgKHl5bXNnX2FsbG9jIDwgeXlzaXplICYmIHl5bXNnX2FsbG9jIDwgWVlTVEFDS19BTExPQ19N
QVhJTVVNKQotCSAgewotCSAgICBZWVNJWkVfVCB5eWFsbG9jID0gMiAqIHl5c2l6ZTsKLQkgICAg
aWYgKCEgKHl5c2l6ZSA8PSB5eWFsbG9jICYmIHl5YWxsb2MgPD0gWVlTVEFDS19BTExPQ19NQVhJ
TVVNKSkKLQkgICAgICB5eWFsbG9jID0gWVlTVEFDS19BTExPQ19NQVhJTVVNOwotCSAgICBpZiAo
eXltc2cgIT0geXltc2didWYpCi0JICAgICAgWVlTVEFDS19GUkVFICh5eW1zZyk7Ci0JICAgIHl5
bXNnID0gKGNoYXIgKikgWVlTVEFDS19BTExPQyAoeXlhbGxvYyk7Ci0JICAgIGlmICh5eW1zZykK
LQkgICAgICB5eW1zZ19hbGxvYyA9IHl5YWxsb2M7Ci0JICAgIGVsc2UKLQkgICAgICB7Ci0JCXl5
bXNnID0geXltc2didWY7Ci0JCXl5bXNnX2FsbG9jID0gc2l6ZW9mIHl5bXNnYnVmOwotCSAgICAg
IH0KLQkgIH0KLQotCWlmICgwIDwgeXlzaXplICYmIHl5c2l6ZSA8PSB5eW1zZ19hbGxvYykKLQkg
IHsKLQkgICAgKHZvaWQpIHl5c3ludGF4X2Vycm9yICh5eW1zZywgeXlzdGF0ZSwgeXljaGFyKTsK
LQkgICAgeXllcnJvciAoJnl5bGxvYywgY29udGV4dCwgeXltc2cpOwotCSAgfQotCWVsc2UKLQkg
IHsKLQkgICAgeXllcnJvciAoJnl5bGxvYywgY29udGV4dCwgWVlfKCJzeW50YXggZXJyb3IiKSk7
Ci0JICAgIGlmICh5eXNpemUgIT0gMCkKLQkgICAgICBnb3RvIHl5ZXhoYXVzdGVkbGFiOwotCSAg
fQorICAgICAgICBjaGFyIGNvbnN0ICp5eW1zZ3AgPSBZWV8oInN5bnRheCBlcnJvciIpOworICAg
ICAgICBpbnQgeXlzeW50YXhfZXJyb3Jfc3RhdHVzOworICAgICAgICB5eXN5bnRheF9lcnJvcl9z
dGF0dXMgPSBZWVNZTlRBWF9FUlJPUjsKKyAgICAgICAgaWYgKHl5c3ludGF4X2Vycm9yX3N0YXR1
cyA9PSAwKQorICAgICAgICAgIHl5bXNncCA9IHl5bXNnOworICAgICAgICBlbHNlIGlmICh5eXN5
bnRheF9lcnJvcl9zdGF0dXMgPT0gMSkKKyAgICAgICAgICB7CisgICAgICAgICAgICBpZiAoeXlt
c2cgIT0geXltc2didWYpCisgICAgICAgICAgICAgIFlZU1RBQ0tfRlJFRSAoeXltc2cpOworICAg
ICAgICAgICAgeXltc2cgPSAoY2hhciAqKSBZWVNUQUNLX0FMTE9DICh5eW1zZ19hbGxvYyk7Cisg
ICAgICAgICAgICBpZiAoIXl5bXNnKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
eXltc2cgPSB5eW1zZ2J1ZjsKKyAgICAgICAgICAgICAgICB5eW1zZ19hbGxvYyA9IHNpemVvZiB5
eW1zZ2J1ZjsKKyAgICAgICAgICAgICAgICB5eXN5bnRheF9lcnJvcl9zdGF0dXMgPSAyOworICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICB5eXN5bnRheF9lcnJvcl9zdGF0dXMgPSBZWVNZTlRBWF9FUlJPUjsKKyAgICAgICAg
ICAgICAgICB5eW1zZ3AgPSB5eW1zZzsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAg
ICAgICAgeXllcnJvciAoJnl5bGxvYywgY29udGV4dCwgeXltc2dwKTsKKyAgICAgICAgaWYgKHl5
c3ludGF4X2Vycm9yX3N0YXR1cyA9PSAyKQorICAgICAgICAgIGdvdG8geXlleGhhdXN0ZWRsYWI7
CiAgICAgICB9CisjIHVuZGVmIFlZU1lOVEFYX0VSUk9SCiAjZW5kaWYKICAgICB9CiAKLSAgeXll
cnJvcl9yYW5nZVswXSA9IHl5bGxvYzsKKyAgeXllcnJvcl9yYW5nZVsxXSA9IHl5bGxvYzsKIAog
ICBpZiAoeXllcnJzdGF0dXMgPT0gMykKICAgICB7Ci0gICAgICAvKiBJZiBqdXN0IHRyaWVkIGFu
ZCBmYWlsZWQgdG8gcmV1c2UgbG9vay1haGVhZCB0b2tlbiBhZnRlciBhbgorICAgICAgLyogSWYg
anVzdCB0cmllZCBhbmQgZmFpbGVkIHRvIHJldXNlIGxvb2thaGVhZCB0b2tlbiBhZnRlciBhbgog
CSBlcnJvciwgZGlzY2FyZCBpdC4gICovCiAKICAgICAgIGlmICh5eWNoYXIgPD0gWVlFT0YpCkBA
IC00NjkyLDcgKzQ3MzEsNyBAQCB5eWVycmxhYjoKIAl9CiAgICAgfQogCi0gIC8qIEVsc2Ugd2ls
bCB0cnkgdG8gcmV1c2UgbG9vay1haGVhZCB0b2tlbiBhZnRlciBzaGlmdGluZyB0aGUgZXJyb3IK
KyAgLyogRWxzZSB3aWxsIHRyeSB0byByZXVzZSBsb29rYWhlYWQgdG9rZW4gYWZ0ZXIgc2hpZnRp
bmcgdGhlIGVycm9yCiAgICAgIHRva2VuLiAgKi8KICAgZ290byB5eWVycmxhYjE7CiAKQEAgLTQ3
MDgsNyArNDc0Nyw3IEBAIHl5ZXJyb3JsYWI6CiAgIGlmICgvKkNPTlNUQ09ORCovIDApCiAgICAg
IGdvdG8geXllcnJvcmxhYjsKIAotICB5eWVycm9yX3JhbmdlWzBdID0geXlsc3BbMS15eWxlbl07
CisgIHl5ZXJyb3JfcmFuZ2VbMV0gPSB5eWxzcFsxLXl5bGVuXTsKICAgLyogRG8gbm90IHJlY2xh
aW0gdGhlIHN5bWJvbHMgb2YgdGhlIHJ1bGUgd2hpY2ggYWN0aW9uIHRyaWdnZXJlZAogICAgICB0
aGlzIFlZRVJST1IuICAqLwogICBZWVBPUFNUQUNLICh5eWxlbik7CkBAIC00NzI3LDcgKzQ3NjYs
NyBAQCB5eWVycmxhYjE6CiAgIGZvciAoOzspCiAgICAgewogICAgICAgeXluID0geXlwYWN0W3l5
c3RhdGVdOwotICAgICAgaWYgKHl5biAhPSBZWVBBQ1RfTklORikKKyAgICAgIGlmICgheXlwYWN0
X3ZhbHVlX2lzX2RlZmF1bHQgKHl5bikpCiAJewogCSAgeXluICs9IFlZVEVSUk9SOwogCSAgaWYg
KDAgPD0geXluICYmIHl5biA8PSBZWUxBU1QgJiYgeXljaGVja1t5eW5dID09IFlZVEVSUk9SKQpA
QCAtNDc0Miw3ICs0NzgxLDcgQEAgeXllcnJsYWIxOgogICAgICAgaWYgKHl5c3NwID09IHl5c3Mp
CiAJWVlBQk9SVDsKIAotICAgICAgeXllcnJvcl9yYW5nZVswXSA9ICp5eWxzcDsKKyAgICAgIHl5
ZXJyb3JfcmFuZ2VbMV0gPSAqeXlsc3A7CiAgICAgICB5eWRlc3RydWN0ICgiRXJyb3I6IHBvcHBp
bmciLAogCQkgIHl5c3Rvc1t5eXN0YXRlXSwgeXl2c3AsIHl5bHNwLCBjb250ZXh0KTsKICAgICAg
IFlZUE9QU1RBQ0sgKDEpOwpAQCAtNDc1MCwxNSArNDc4OSwxNCBAQCB5eWVycmxhYjE6CiAgICAg
ICBZWV9TVEFDS19QUklOVCAoeXlzcywgeXlzc3ApOwogICAgIH0KIAotICBpZiAoeXluID09IFlZ
RklOQUwpCi0gICAgWVlBQ0NFUFQ7Ci0KKyAgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURf
QkVHSU4KICAgKisreXl2c3AgPSB5eWx2YWw7CisgIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJ
WkVEX0VORAogCi0gIHl5ZXJyb3JfcmFuZ2VbMV0gPSB5eWxsb2M7CisgIHl5ZXJyb3JfcmFuZ2Vb
Ml0gPSB5eWxsb2M7CiAgIC8qIFVzaW5nIFlZTExPQyBpcyB0ZW1wdGluZywgYnV0IHdvdWxkIGNo
YW5nZSB0aGUgbG9jYXRpb24gb2YKLSAgICAgdGhlIGxvb2stYWhlYWQuICBZWUxPQyBpcyBhdmFp
bGFibGUgdGhvdWdoLiAgKi8KLSAgWVlMTE9DX0RFRkFVTFQgKHl5bG9jLCAoeXllcnJvcl9yYW5n
ZSAtIDEpLCAyKTsKKyAgICAgdGhlIGxvb2thaGVhZC4gIFlZTE9DIGlzIGF2YWlsYWJsZSB0aG91
Z2guICAqLworICBZWUxMT0NfREVGQVVMVCAoeXlsb2MsIHl5ZXJyb3JfcmFuZ2UsIDIpOwogICAq
Kyt5eWxzcCA9IHl5bG9jOwogCiAgIC8qIFNoaWZ0IHRoZSBlcnJvciB0b2tlbi4gICovCkBAIC00
NzgyLDcgKzQ4MjAsNyBAQCB5eWFib3J0bGFiOgogICB5eXJlc3VsdCA9IDE7CiAgIGdvdG8geXly
ZXR1cm47CiAKLSNpZm5kZWYgeXlvdmVyZmxvdworI2lmICFkZWZpbmVkIHl5b3ZlcmZsb3cgfHwg
WVlFUlJPUl9WRVJCT1NFCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0uCiB8IHl5ZXhoYXVzdGVkbGFiIC0tIG1lbW9yeSBleGhhdXN0aW9uIGNvbWVz
IGhlcmUuICB8CiBgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSovCkBAIC00NzkzLDkgKzQ4MzEsMTQgQEAgeXlleGhhdXN0ZWRsYWI6CiAjZW5kaWYKIAog
eXlyZXR1cm46Ci0gIGlmICh5eWNoYXIgIT0gWVlFT0YgJiYgeXljaGFyICE9IFlZRU1QVFkpCi0g
ICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBkaXNjYXJkaW5nIGxvb2thaGVhZCIsCi0JCSB5eXRv
a2VuLCAmeXlsdmFsLCAmeXlsbG9jLCBjb250ZXh0KTsKKyAgaWYgKHl5Y2hhciAhPSBZWUVNUFRZ
KQorICAgIHsKKyAgICAgIC8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGxhdGVzdCBsb29rYWhlYWQgdHJh
bnNsYXRpb24uICBTZWUgY29tbWVudHMgYXQKKyAgICAgICAgIHVzZXIgc2VtYW50aWMgYWN0aW9u
cyBmb3Igd2h5IHRoaXMgaXMgbmVjZXNzYXJ5LiAgKi8KKyAgICAgIHl5dG9rZW4gPSBZWVRSQU5T
TEFURSAoeXljaGFyKTsKKyAgICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBkaXNjYXJkaW5nIGxv
b2thaGVhZCIsCisgICAgICAgICAgICAgICAgICB5eXRva2VuLCAmeXlsdmFsLCAmeXlsbG9jLCBj
b250ZXh0KTsKKyAgICB9CiAgIC8qIERvIG5vdCByZWNsYWltIHRoZSBzeW1ib2xzIG9mIHRoZSBy
dWxlIHdoaWNoIGFjdGlvbiB0cmlnZ2VyZWQKICAgICAgdGhpcyBZWUFCT1JUIG9yIFlZQUNDRVBU
LiAgKi8KICAgWVlQT1BTVEFDSyAoeXlsZW4pOwpAQCAtNDgyMiwxMiArNDg2NSw2IEBAIHl5cmV0
dXJuOgogCiAKIAotdm9pZCB5eWVycm9yKFlZTFRZUEUqIHl5bGxvYywgVFBhcnNlQ29udGV4dCog
Y29udGV4dCwgY29uc3QgY2hhciogcmVhc29uKSB7Ci0gICAgY29udGV4dC0+ZXJyb3IoKnl5bGxv
YywgcmVhc29uLCAiIik7Ci0gICAgY29udGV4dC0+cmVjb3ZlcigpOwotfQotCiBpbnQgZ2xzbGFu
Z19wYXJzZShUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7CiAgICAgcmV0dXJuIHl5cGFyc2UoY29u
dGV4dCk7CiB9Ci0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9n
bHNsYW5nX3RhYi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9nbHNsYW5nX3RhYi5oCShyZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuaAkod29ya2luZyBjb3B5KQpAQCAt
MSwyNCArMSwyMSBAQAotLyogQSBCaXNvbiBwYXJzZXIsIG1hZGUgYnkgR05VIEJpc29uIDIuMy4g
ICovCisvKiBBIEJpc29uIHBhcnNlciwgbWFkZSBieSBHTlUgQmlzb24gMi43LiAgKi8KIAotLyog
U2tlbGV0b24gaW50ZXJmYWNlIGZvciBCaXNvbidzIFlhY2MtbGlrZSBwYXJzZXJzIGluIEMKLQot
ICAgQ29weXJpZ2h0IChDKSAxOTg0LCAxOTg5LCAxOTkwLCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAz
LCAyMDA0LCAyMDA1LCAyMDA2Ci0gICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLQot
ICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vciBtb2RpZnkKKy8qIEJpc29uIGludGVyZmFjZSBmb3IgWWFjYy1saWtlIHBhcnNlcnMg
aW4gQworICAgCisgICAgICBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5ODktMTk5MCwgMjAwMC0yMDEy
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgCisgICBUaGlzIHByb2dyYW0gaXMg
ZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkKLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz
aW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSAgIGFueSBsYXRlciB2ZXJzaW9uLgotCisgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl
bnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAgIAogICAg
VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLQorICAgCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgYWxvbmcgd2l0aCB0aGlz
IHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAgIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4gICovCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v
dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiAKIC8qIEFzIGEgc3Bl
Y2lhbCBleGNlcHRpb24sIHlvdSBtYXkgY3JlYXRlIGEgbGFyZ2VyIHdvcmsgdGhhdCBjb250YWlu
cwogICAgcGFydCBvciBhbGwgb2YgdGhlIEJpc29uIHBhcnNlciBza2VsZXRvbiBhbmQgZGlzdHJp
YnV0ZSB0aGF0IHdvcmsKQEAgLTI5LDEwICsyNiwyOSBAQAogICAgc3BlY2lhbCBleGNlcHRpb24s
IHdoaWNoIHdpbGwgY2F1c2UgdGhlIHNrZWxldG9uIGFuZCB0aGUgcmVzdWx0aW5nCiAgICBCaXNv
biBvdXRwdXQgZmlsZXMgdG8gYmUgbGljZW5zZWQgdW5kZXIgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YwogICAgTGljZW5zZSB3aXRob3V0IHRoaXMgc3BlY2lhbCBleGNlcHRpb24uCi0KKyAgIAogICAg
VGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB3YXMgYWRkZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiBpbgogICAgdmVyc2lvbiAyLjIgb2YgQmlzb24uICAqLwogCisjaWZuZGVmIFlZX1lZ
X0dMU0xBTkdfVEFCX0hfSU5DTFVERUQKKyMgZGVmaW5lIFlZX1lZX0dMU0xBTkdfVEFCX0hfSU5D
TFVERUQKKy8qIEVuYWJsaW5nIHRyYWNlcy4gICovCisjaWZuZGVmIFlZREVCVUcKKyMgZGVmaW5l
IFlZREVCVUcgMAorI2VuZGlmCisjaWYgWVlERUJVRworZXh0ZXJuIGludCB5eWRlYnVnOworI2Vu
ZGlmCisvKiAiJWNvZGUgcmVxdWlyZXMiIGJsb2Nrcy4gICovCisKKworI2RlZmluZSBZWUxUWVBF
IFRTb3VyY2VMb2MKKyNkZWZpbmUgWVlMVFlQRV9JU19ERUNMQVJFRCAxCisjZGVmaW5lIFNIX01B
WF9UT0tFTl9MRU5HVEggMjU2ICAvLyBXZWJHTCBzcGVjLgorCisKKworCiAvKiBUb2tlbnMuICAq
LwogI2lmbmRlZiBZWVRPS0VOVFlQRQogIyBkZWZpbmUgWVlUT0tFTlRZUEUKQEAgLTEzMywxMDkg
KzE0OSwxMyBAQAogICAgICBRVUVTVElPTiA9IDM0OQogICAgfTsKICNlbmRpZgotLyogVG9rZW5z
LiAgKi8KLSNkZWZpbmUgSU5WQVJJQU5UIDI1OAotI2RlZmluZSBISUdIX1BSRUNJU0lPTiAyNTkK
LSNkZWZpbmUgTUVESVVNX1BSRUNJU0lPTiAyNjAKLSNkZWZpbmUgTE9XX1BSRUNJU0lPTiAyNjEK
LSNkZWZpbmUgUFJFQ0lTSU9OIDI2MgotI2RlZmluZSBBVFRSSUJVVEUgMjYzCi0jZGVmaW5lIENP
TlNUX1FVQUwgMjY0Ci0jZGVmaW5lIEJPT0xfVFlQRSAyNjUKLSNkZWZpbmUgRkxPQVRfVFlQRSAy
NjYKLSNkZWZpbmUgSU5UX1RZUEUgMjY3Ci0jZGVmaW5lIEJSRUFLIDI2OAotI2RlZmluZSBDT05U
SU5VRSAyNjkKLSNkZWZpbmUgRE8gMjcwCi0jZGVmaW5lIEVMU0UgMjcxCi0jZGVmaW5lIEZPUiAy
NzIKLSNkZWZpbmUgSUYgMjczCi0jZGVmaW5lIERJU0NBUkQgMjc0Ci0jZGVmaW5lIFJFVFVSTiAy
NzUKLSNkZWZpbmUgQlZFQzIgMjc2Ci0jZGVmaW5lIEJWRUMzIDI3NwotI2RlZmluZSBCVkVDNCAy
NzgKLSNkZWZpbmUgSVZFQzIgMjc5Ci0jZGVmaW5lIElWRUMzIDI4MAotI2RlZmluZSBJVkVDNCAy
ODEKLSNkZWZpbmUgVkVDMiAyODIKLSNkZWZpbmUgVkVDMyAyODMKLSNkZWZpbmUgVkVDNCAyODQK
LSNkZWZpbmUgTUFUUklYMiAyODUKLSNkZWZpbmUgTUFUUklYMyAyODYKLSNkZWZpbmUgTUFUUklY
NCAyODcKLSNkZWZpbmUgSU5fUVVBTCAyODgKLSNkZWZpbmUgT1VUX1FVQUwgMjg5Ci0jZGVmaW5l
IElOT1VUX1FVQUwgMjkwCi0jZGVmaW5lIFVOSUZPUk0gMjkxCi0jZGVmaW5lIFZBUllJTkcgMjky
Ci0jZGVmaW5lIFNUUlVDVCAyOTMKLSNkZWZpbmUgVk9JRF9UWVBFIDI5NAotI2RlZmluZSBXSElM
RSAyOTUKLSNkZWZpbmUgU0FNUExFUjJEIDI5NgotI2RlZmluZSBTQU1QTEVSQ1VCRSAyOTcKLSNk
ZWZpbmUgU0FNUExFUl9FWFRFUk5BTF9PRVMgMjk4Ci0jZGVmaW5lIFNBTVBMRVIyRFJFQ1QgMjk5
Ci0jZGVmaW5lIElERU5USUZJRVIgMzAwCi0jZGVmaW5lIFRZUEVfTkFNRSAzMDEKLSNkZWZpbmUg
RkxPQVRDT05TVEFOVCAzMDIKLSNkZWZpbmUgSU5UQ09OU1RBTlQgMzAzCi0jZGVmaW5lIEJPT0xD
T05TVEFOVCAzMDQKLSNkZWZpbmUgTEVGVF9PUCAzMDUKLSNkZWZpbmUgUklHSFRfT1AgMzA2Ci0j
ZGVmaW5lIElOQ19PUCAzMDcKLSNkZWZpbmUgREVDX09QIDMwOAotI2RlZmluZSBMRV9PUCAzMDkK
LSNkZWZpbmUgR0VfT1AgMzEwCi0jZGVmaW5lIEVRX09QIDMxMQotI2RlZmluZSBORV9PUCAzMTIK
LSNkZWZpbmUgQU5EX09QIDMxMwotI2RlZmluZSBPUl9PUCAzMTQKLSNkZWZpbmUgWE9SX09QIDMx
NQotI2RlZmluZSBNVUxfQVNTSUdOIDMxNgotI2RlZmluZSBESVZfQVNTSUdOIDMxNwotI2RlZmlu
ZSBBRERfQVNTSUdOIDMxOAotI2RlZmluZSBNT0RfQVNTSUdOIDMxOQotI2RlZmluZSBMRUZUX0FT
U0lHTiAzMjAKLSNkZWZpbmUgUklHSFRfQVNTSUdOIDMyMQotI2RlZmluZSBBTkRfQVNTSUdOIDMy
MgotI2RlZmluZSBYT1JfQVNTSUdOIDMyMwotI2RlZmluZSBPUl9BU1NJR04gMzI0Ci0jZGVmaW5l
IFNVQl9BU1NJR04gMzI1Ci0jZGVmaW5lIExFRlRfUEFSRU4gMzI2Ci0jZGVmaW5lIFJJR0hUX1BB
UkVOIDMyNwotI2RlZmluZSBMRUZUX0JSQUNLRVQgMzI4Ci0jZGVmaW5lIFJJR0hUX0JSQUNLRVQg
MzI5Ci0jZGVmaW5lIExFRlRfQlJBQ0UgMzMwCi0jZGVmaW5lIFJJR0hUX0JSQUNFIDMzMQotI2Rl
ZmluZSBET1QgMzMyCi0jZGVmaW5lIENPTU1BIDMzMwotI2RlZmluZSBDT0xPTiAzMzQKLSNkZWZp
bmUgRVFVQUwgMzM1Ci0jZGVmaW5lIFNFTUlDT0xPTiAzMzYKLSNkZWZpbmUgQkFORyAzMzcKLSNk
ZWZpbmUgREFTSCAzMzgKLSNkZWZpbmUgVElMREUgMzM5Ci0jZGVmaW5lIFBMVVMgMzQwCi0jZGVm
aW5lIFNUQVIgMzQxCi0jZGVmaW5lIFNMQVNIIDM0MgotI2RlZmluZSBQRVJDRU5UIDM0MwotI2Rl
ZmluZSBMRUZUX0FOR0xFIDM0NAotI2RlZmluZSBSSUdIVF9BTkdMRSAzNDUKLSNkZWZpbmUgVkVS
VElDQUxfQkFSIDM0NgotI2RlZmluZSBDQVJFVCAzNDcKLSNkZWZpbmUgQU1QRVJTQU5EIDM0OAot
I2RlZmluZSBRVUVTVElPTiAzNDkKLQotCiAKIAogI2lmICEgZGVmaW5lZCBZWVNUWVBFICYmICEg
ZGVmaW5lZCBZWVNUWVBFX0lTX0RFQ0xBUkVECiB0eXBlZGVmIHVuaW9uIFlZU1RZUEUKLQogewot
I2RlZmluZSBZWUxUWVBFIFRTb3VyY2VMb2MKLSNkZWZpbmUgWVlMVFlQRV9JU19ERUNMQVJFRCAx
CisKKwogICAgIHN0cnVjdCB7CiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIFRTdHJpbmcg
KnN0cmluZzsKQEAgLTI2MywxNyArMTgzLDE1IEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQRQogICAg
ICAgICAgICAgVEZpZWxkTGlzdCogZmllbGRMaXN0OwogICAgICAgICB9OwogICAgIH0gaW50ZXJt
OwotfQotLyogTGluZSAxNTI5IG9mIHlhY2MuYy4gICovCiAKLQlZWVNUWVBFOworCisKK30gWVlT
VFlQRTsKKyMgZGVmaW5lIFlZU1RZUEVfSVNfVFJJVklBTCAxCiAjIGRlZmluZSB5eXN0eXBlIFlZ
U1RZUEUgLyogb2Jzb2xlc2NlbnQ7IHdpbGwgYmUgd2l0aGRyYXduICovCiAjIGRlZmluZSBZWVNU
WVBFX0lTX0RFQ0xBUkVEIDEKLSMgZGVmaW5lIFlZU1RZUEVfSVNfVFJJVklBTCAxCiAjZW5kaWYK
IAotCi0KICNpZiAhIGRlZmluZWQgWVlMVFlQRSAmJiAhIGRlZmluZWQgWVlMVFlQRV9JU19ERUNM
QVJFRAogdHlwZWRlZiBzdHJ1Y3QgWVlMVFlQRQogewpAQCAtMjg4LDMgKzIwNiwxOCBAQCB0eXBl
ZGVmIHN0cnVjdCBZWUxUWVBFCiAjZW5kaWYKIAogCisjaWZkZWYgWVlQQVJTRV9QQVJBTQorI2lm
IGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX2NwbHVzcGx1cworaW50IHl5cGFyc2UgKHZv
aWQgKllZUEFSU0VfUEFSQU0pOworI2Vsc2UKK2ludCB5eXBhcnNlICgpOworI2VuZGlmCisjZWxz
ZSAvKiAhIFlZUEFSU0VfUEFSQU0gKi8KKyNpZiBkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQg
X19jcGx1c3BsdXMKK2ludCB5eXBhcnNlIChUUGFyc2VDb250ZXh0KiBjb250ZXh0KTsKKyNlbHNl
CitpbnQgeXlwYXJzZSAoKTsKKyNlbmRpZgorI2VuZGlmIC8qICEgWVlQQVJTRV9QQVJBTSAqLwor
CisjZW5kaWYgLyogIVlZX1lZX0dMU0xBTkdfVEFCX0hfSU5DTFVERUQgICovCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2ludGVybWVkaWF0ZS5o
CShyZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvaW50ZXJtZWRpYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNSw4ICsyMDUsNyBAQCBjbGFz
cyBUSW5mb1Npbms7CiAvLwogY2xhc3MgVEludGVybU5vZGUgewogcHVibGljOgotICAgIFBPT0xf
QUxMT0NBVE9SX05FV19ERUxFVEUoR2xvYmFsUG9vbEFsbG9jYXRvcikKLQorICAgIFBPT0xfQUxM
T0NBVE9SX05FV19ERUxFVEUoKTsKICAgICBUSW50ZXJtTm9kZSgpIHsKICAgICAgICAgLy8gVE9E
TzogTW92ZSB0aGlzIHRvIFRTb3VyY2VMb2MgY29uc3RydWN0b3IKICAgICAgICAgLy8gYWZ0ZXIg
Z2V0dGluZyByaWQgb2YgVFB1YmxpY1R5cGUuCkBAIC0yMjgsNiArMjI3LDExIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFRJbnRlcm1TeW1ib2wqIGdldEFzU3ltYm9sTm9kZSgpIHsgcmV0dXJuIDA7
IH0KICAgICB2aXJ0dWFsIFRJbnRlcm1Mb29wKiBnZXRBc0xvb3BOb2RlKCkgeyByZXR1cm4gMDsg
fQogCisgICAgLy8gUmVwbGFjZSBhIGNoaWxkIG5vZGUuIFJldHVybiB0cnVlIGlmIHxvcmlnaW5h
bHwgaXMgYSBjaGlsZAorICAgIC8vIG5vZGUgYW5kIGl0IGlzIHJlcGxhY2VkOyBvdGhlcndpc2Us
IHJldHVybiBmYWxzZS4KKyAgICB2aXJ0dWFsIGJvb2wgcmVwbGFjZUNoaWxkTm9kZSgKKyAgICAg
ICAgVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpID0gMDsK
KwogcHJvdGVjdGVkOgogICAgIFRTb3VyY2VMb2MgbGluZTsKIH07CkBAIC0yNDgsNiArMjUyLDgg
QEAgcHVibGljOgogICAgIFRJbnRlcm1UeXBlZChjb25zdCBUVHlwZSYgdCkgOiB0eXBlKHQpICB7
IH0KICAgICB2aXJ0dWFsIFRJbnRlcm1UeXBlZCogZ2V0QXNUeXBlZCgpIHsgcmV0dXJuIHRoaXM7
IH0KIAorICAgIHZpcnR1YWwgYm9vbCBoYXNTaWRlRWZmZWN0cygpIGNvbnN0ID0gMDsKKwogICAg
IHZvaWQgc2V0VHlwZShjb25zdCBUVHlwZSYgdCkgeyB0eXBlID0gdDsgfQogICAgIGNvbnN0IFRU
eXBlJiBnZXRUeXBlKCkgY29uc3QgeyByZXR1cm4gdHlwZTsgfQogICAgIFRUeXBlKiBnZXRUeXBl
UG9pbnRlcigpIHsgcmV0dXJuICZ0eXBlOyB9CkBAIC0yOTYsNiArMzAyLDggQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBUSW50ZXJtTG9vcCogZ2V0QXNMb29wTm9kZSgpIHsgcmV0dXJuIHRoaXM7
IH0KICAgICB2aXJ0dWFsIHZvaWQgdHJhdmVyc2UoVEludGVybVRyYXZlcnNlciopOworICAgIHZp
cnR1YWwgYm9vbCByZXBsYWNlQ2hpbGROb2RlKAorICAgICAgICBUSW50ZXJtTm9kZSAqb3JpZ2lu
YWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCk7CiAKICAgICBUTG9vcFR5cGUgZ2V0VHlwZSgp
IGNvbnN0IHsgcmV0dXJuIHR5cGU7IH0KICAgICBUSW50ZXJtTm9kZSogZ2V0SW5pdCgpIHsgcmV0
dXJuIGluaXQ7IH0KQEAgLTMyNiw2ICszMzQsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBleHBy
ZXNzaW9uKGUpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJz
ZXIqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVwbGFjZUNoaWxkTm9kZSgKKyAgICAgICAgVEludGVy
bU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpOwogCiAgICAgVE9wZXJh
dG9yIGdldEZsb3dPcCgpIHsgcmV0dXJuIGZsb3dPcDsgfQogICAgIFRJbnRlcm1UeXBlZCogZ2V0
RXhwcmVzc2lvbigpIHsgcmV0dXJuIGV4cHJlc3Npb247IH0KQEAgLTM0Niw2ICszNTYsOCBAQCBw
dWJsaWM6CiAgICAgVEludGVybVN5bWJvbChpbnQgaSwgY29uc3QgVFN0cmluZyYgc3ltLCBjb25z
dCBUVHlwZSYgdCkgOiAKICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCh0KSwgaWQoaSkgIHsgc3lt
Ym9sID0gc3ltOyBvcmlnaW5hbFN5bWJvbCA9IHN5bTsgfSAKIAorICAgIHZpcnR1YWwgYm9vbCBo
YXNTaWRlRWZmZWN0cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICBpbnQgZ2V0SWQo
KSBjb25zdCB7IHJldHVybiBpZDsgfQogICAgIGNvbnN0IFRTdHJpbmcmIGdldFN5bWJvbCgpIGNv
bnN0IHsgcmV0dXJuIHN5bWJvbDsgfQogCkBAIC0zNTYsNiArMzY4LDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIqKTsKICAgICB2aXJ0dWFs
IFRJbnRlcm1TeW1ib2wqIGdldEFzU3ltYm9sTm9kZSgpIHsgcmV0dXJuIHRoaXM7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgcmVwbGFjZUNoaWxkTm9kZShUSW50ZXJtTm9kZSAqLCBUSW50ZXJtTm9kZSAq
KSB7IHJldHVybiBmYWxzZTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgaW50IGlkOwpAQCAtMzY3LDE0
ICszODAsMTcgQEAgY2xhc3MgVEludGVybUNvbnN0YW50VW5pb24gOiBwdWJsaWMgVEludAogcHVi
bGljOgogICAgIFRJbnRlcm1Db25zdGFudFVuaW9uKENvbnN0YW50VW5pb24gKnVuaW9uUG9pbnRl
ciwgY29uc3QgVFR5cGUmIHQpIDogVEludGVybVR5cGVkKHQpLCB1bmlvbkFycmF5UG9pbnRlcih1
bmlvblBvaW50ZXIpIHsgfQogCisgICAgdmlydHVhbCBib29sIGhhc1NpZGVFZmZlY3RzKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIENvbnN0YW50VW5pb24qIGdldFVuaW9uQXJyYXlQ
b2ludGVyKCkgY29uc3QgeyByZXR1cm4gdW5pb25BcnJheVBvaW50ZXI7IH0KICAgICAKLSAgICBp
bnQgZ2V0SUNvbnN0KHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gdW5pb25BcnJheVBvaW50
ZXIgPyB1bmlvbkFycmF5UG9pbnRlcltpbmRleF0uZ2V0SUNvbnN0KCkgOiAwOyB9Ci0gICAgZmxv
YXQgZ2V0RkNvbnN0KHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gdW5pb25BcnJheVBvaW50
ZXIgPyB1bmlvbkFycmF5UG9pbnRlcltpbmRleF0uZ2V0RkNvbnN0KCkgOiAwLjBmOyB9Ci0gICAg
Ym9vbCBnZXRCQ29uc3Qoc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiB1bmlvbkFycmF5UG9p
bnRlciA/IHVuaW9uQXJyYXlQb2ludGVyW2luZGV4XS5nZXRCQ29uc3QoKSA6IGZhbHNlOyB9Cisg
ICAgaW50IGdldElDb25zdChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHVuaW9uQXJyYXlQb2lu
dGVyID8gdW5pb25BcnJheVBvaW50ZXJbaW5kZXhdLmdldElDb25zdCgpIDogMDsgfQorICAgIGZs
b2F0IGdldEZDb25zdChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHVuaW9uQXJyYXlQb2ludGVy
ID8gdW5pb25BcnJheVBvaW50ZXJbaW5kZXhdLmdldEZDb25zdCgpIDogMC4wZjsgfQorICAgIGJv
b2wgZ2V0QkNvbnN0KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gdW5pb25BcnJheVBvaW50ZXIg
PyB1bmlvbkFycmF5UG9pbnRlcltpbmRleF0uZ2V0QkNvbnN0KCkgOiBmYWxzZTsgfQogCiAgICAg
dmlydHVhbCBUSW50ZXJtQ29uc3RhbnRVbmlvbiogZ2V0QXNDb25zdGFudFVuaW9uKCkgIHsgcmV0
dXJuIHRoaXM7IH0KICAgICB2aXJ0dWFsIHZvaWQgdHJhdmVyc2UoVEludGVybVRyYXZlcnNlciop
OworICAgIHZpcnR1YWwgYm9vbCByZXBsYWNlQ2hpbGROb2RlKFRJbnRlcm1Ob2RlICosIFRJbnRl
cm1Ob2RlICopIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBUSW50ZXJtVHlwZWQqIGZvbGQoVE9w
ZXJhdG9yLCBUSW50ZXJtVHlwZWQqLCBUSW5mb1NpbmsmKTsKIApAQCAtMzkwLDkgKzQwNiwxMSBA
QCBwdWJsaWM6CiAgICAgVE9wZXJhdG9yIGdldE9wKCkgY29uc3QgeyByZXR1cm4gb3A7IH0KICAg
ICB2b2lkIHNldE9wKFRPcGVyYXRvciBvKSB7IG9wID0gbzsgfQogCi0gICAgYm9vbCBtb2RpZmll
c1N0YXRlKCkgY29uc3Q7CisgICAgYm9vbCBpc0Fzc2lnbm1lbnQoKSBjb25zdDsKICAgICBib29s
IGlzQ29uc3RydWN0b3IoKSBjb25zdDsKIAorICAgIHZpcnR1YWwgYm9vbCBoYXNTaWRlRWZmZWN0
cygpIGNvbnN0IHsgcmV0dXJuIGlzQXNzaWdubWVudCgpOyB9CisKIHByb3RlY3RlZDoKICAgICBU
SW50ZXJtT3BlcmF0b3IoVE9wZXJhdG9yIG8pIDogVEludGVybVR5cGVkKFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQpKSwgb3Aobykge30KICAgICBUSW50ZXJtT3BlcmF0b3IoVE9wZXJhdG9y
IG8sIFRUeXBlJiB0KSA6IFRJbnRlcm1UeXBlZCh0KSwgb3Aobykge30gICAKQEAgLTQwOCw2ICs0
MjYsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBUSW50ZXJtQmluYXJ5KiBnZXRBc0JpbmFy
eU5vZGUoKSB7IHJldHVybiB0aGlzOyB9CiAgICAgdmlydHVhbCB2b2lkIHRyYXZlcnNlKFRJbnRl
cm1UcmF2ZXJzZXIqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVwbGFjZUNoaWxkTm9kZSgKKyAgICAg
ICAgVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpOworCisg
ICAgdmlydHVhbCBib29sIGhhc1NpZGVFZmZlY3RzKCkgY29uc3QgeyByZXR1cm4gKGlzQXNzaWdu
bWVudCgpIHx8IGxlZnQtPmhhc1NpZGVFZmZlY3RzKCkgfHwgcmlnaHQtPmhhc1NpZGVFZmZlY3Rz
KCkpOyB9CiAKICAgICB2b2lkIHNldExlZnQoVEludGVybVR5cGVkKiBuKSB7IGxlZnQgPSBuOyB9
CiAgICAgdm9pZCBzZXRSaWdodChUSW50ZXJtVHlwZWQqIG4pIHsgcmlnaHQgPSBuOyB9CkBAIC00
MzYsNiArNDU4LDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZShUSW50
ZXJtVHJhdmVyc2VyKik7CiAgICAgdmlydHVhbCBUSW50ZXJtVW5hcnkqIGdldEFzVW5hcnlOb2Rl
KCkgeyByZXR1cm4gdGhpczsgfQorICAgIHZpcnR1YWwgYm9vbCByZXBsYWNlQ2hpbGROb2RlKAor
ICAgICAgICBUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCk7
CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFzU2lkZUVmZmVjdHMoKSBjb25zdCB7IHJldHVybiAoaXNB
c3NpZ25tZW50KCkgfHwgb3BlcmFuZC0+aGFzU2lkZUVmZmVjdHMoKSk7IH0KIAogICAgIHZvaWQg
c2V0T3BlcmFuZChUSW50ZXJtVHlwZWQqIG8pIHsgb3BlcmFuZCA9IG87IH0KICAgICBUSW50ZXJt
VHlwZWQqIGdldE9wZXJhbmQoKSB7IHJldHVybiBvcGVyYW5kOyB9ICAgIApAQCAtNDY2LDYgKzQ5
MiwxMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFRJbnRlcm1BZ2dyZWdhdGUqIGdldEFzQWdn
cmVnYXRlKCkgeyByZXR1cm4gdGhpczsgfQogICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZShUSW50
ZXJtVHJhdmVyc2VyKik7CisgICAgdmlydHVhbCBib29sIHJlcGxhY2VDaGlsZE5vZGUoCisgICAg
ICAgIFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwgVEludGVybU5vZGUgKnJlcGxhY2VtZW50KTsKKwor
ICAgIC8vIENvbnNlcnZhdGl2ZWx5IGFzc3VtZSBmdW5jdGlvbiBjYWxscyBhbmQgb3RoZXIgYWdn
cmVnYXRlIG9wZXJhdG9ycyBoYXZlIHNpZGUtZWZmZWN0cworICAgIHZpcnR1YWwgYm9vbCBoYXNT
aWRlRWZmZWN0cygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFRJbnRlcm1TZXF1ZW5j
ZSYgZ2V0U2VxdWVuY2UoKSB7IHJldHVybiBzZXF1ZW5jZTsgfQogCkBAIC01MDksNiArNTQwLDEx
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCh0eXBlKSwgY29uZGl0aW9uKGNv
bmQpLCB0cnVlQmxvY2sodHJ1ZUIpLCBmYWxzZUJsb2NrKGZhbHNlQikge30KIAogICAgIHZpcnR1
YWwgdm9pZCB0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyKik7CisgICAgdmlydHVhbCBib29sIHJl
cGxhY2VDaGlsZE5vZGUoCisgICAgICAgIFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwgVEludGVybU5v
ZGUgKnJlcGxhY2VtZW50KTsKKworICAgIC8vIENvbnNlcnZhdGl2ZWx5IGFzc3VtZSBzZWxlY3Rp
b25zIGhhdmUgc2lkZS1lZmZlY3RzCisgICAgdmlydHVhbCBib29sIGhhc1NpZGVFZmZlY3RzKCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCB1c2VzVGVybmFyeU9wZXJhdG9yKCkg
Y29uc3QgeyByZXR1cm4gZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0Vm9pZDsgfQogICAgIFRJbnRlcm1O
b2RlKiBnZXRDb25kaXRpb24oKSBjb25zdCB7IHJldHVybiBjb25kaXRpb247IH0KQEAgLTU0MCw4
ICs1NzYsNyBAQCBlbnVtIFZpc2l0CiBjbGFzcyBUSW50ZXJtVHJhdmVyc2VyCiB7CiBwdWJsaWM6
Ci0gICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxsb2NhdG9yKQotCisg
ICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURSgpOwogICAgIFRJbnRlcm1UcmF2ZXJzZXIoYm9v
bCBwcmVWaXNpdCA9IHRydWUsIGJvb2wgaW5WaXNpdCA9IGZhbHNlLCBib29sIHBvc3RWaXNpdCA9
IGZhbHNlLCBib29sIHJpZ2h0VG9MZWZ0ID0gZmFsc2UpIDogCiAgICAgICAgICAgICBwcmVWaXNp
dChwcmVWaXNpdCksCiAgICAgICAgICAgICBpblZpc2l0KGluVmlzaXQpLApAQCAtNTQ5LDcgKzU4
NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJpZ2h0VG9MZWZ0KHJpZ2h0VG9MZWZ0KSwKICAg
ICAgICAgICAgIGRlcHRoKDApLAogICAgICAgICAgICAgbWF4RGVwdGgoMCkge30KLSAgICB2aXJ0
dWFsIH5USW50ZXJtVHJhdmVyc2VyKCkge307CisgICAgdmlydHVhbCB+VEludGVybVRyYXZlcnNl
cigpIHt9CiAKICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCopIHt9
CiAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q29uc3RhbnRVbmlvbihUSW50ZXJtQ29uc3RhbnRVbmlv
biopIHt9CkBAIC01NjEsOCArNTk2LDI0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgdmlz
aXRCcmFuY2goVmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFuY2gqKSB7cmV0dXJuIHRydWU7fQogCiAg
ICAgaW50IGdldE1heERlcHRoKCkgY29uc3Qge3JldHVybiBtYXhEZXB0aDt9Ci0gICAgdm9pZCBp
bmNyZW1lbnREZXB0aCgpIHtkZXB0aCsrOyBtYXhEZXB0aCA9IHN0ZDo6bWF4KG1heERlcHRoLCBk
ZXB0aCk7IH0KLSAgICB2b2lkIGRlY3JlbWVudERlcHRoKCkge2RlcHRoLS07fQorCisgICAgdm9p
ZCBpbmNyZW1lbnREZXB0aChUSW50ZXJtTm9kZSAqY3VycmVudCkKKyAgICB7CisgICAgICAgIGRl
cHRoKys7CisgICAgICAgIG1heERlcHRoID0gc3RkOjptYXgobWF4RGVwdGgsIGRlcHRoKTsKKyAg
ICAgICAgcGF0aC5wdXNoX2JhY2soY3VycmVudCk7CisgICAgfQorCisgICAgdm9pZCBkZWNyZW1l
bnREZXB0aCgpCisgICAgeworICAgICAgICBkZXB0aC0tOworICAgICAgICBwYXRoLnBvcF9iYWNr
KCk7CisgICAgfQorCisgICAgVEludGVybU5vZGUgKmdldFBhcmVudE5vZGUoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHBhdGguc2l6ZSgpID09IDAgPyBOVUxMIDogcGF0aC5iYWNrKCk7CisgICAg
fQogCiAgICAgLy8gUmV0dXJuIHRoZSBvcmlnaW5hbCBuYW1lIGlmIGhhc2ggZnVuY3Rpb24gcG9p
bnRlciBpcyBOVUxMOwogICAgIC8vIG90aGVyd2lzZSByZXR1cm4gdGhlIGhhc2hlZCBuYW1lLgpA
QCAtNTc2LDYgKzYyNyw5IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBpbnQgZGVwdGg7CiAg
ICAgaW50IG1heERlcHRoOworCisgICAgLy8gQWxsIHRoZSBub2RlcyBmcm9tIHJvb3QgdG8gdGhl
IGN1cnJlbnQgbm9kZSdzIHBhcmVudCBkdXJpbmcgdHJhdmVyc2luZy4KKyAgICBUVmVjdG9yPFRJ
bnRlcm1Ob2RlICo+IHBhdGg7CiB9OwogCiAjZW5kaWYgLy8gX19JTlRFUk1FRElBVEVfSApJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2xvY2FsaW50ZXJtZWRpYXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2xv
Y2FsaW50ZXJtZWRpYXRlLmgJKHJldmlzaW9uIDE1OTA5MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9sb2NhbGludGVybWVkaWF0ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMiw5ICsyMiw5IEBAIHN0cnVjdCBUVmVjdG9yRmllbGRzIHsKIGNsYXNzIFRJbmZvU2luazsK
IGNsYXNzIFRJbnRlcm1lZGlhdGUgewogcHVibGljOiAgICAKLSAgICBQT09MX0FMTE9DQVRPUl9O
RVdfREVMRVRFKEdsb2JhbFBvb2xBbGxvY2F0b3IpCi0KKyAgICBQT09MX0FMTE9DQVRPUl9ORVdf
REVMRVRFKCk7CiAgICAgVEludGVybWVkaWF0ZShUSW5mb1NpbmsmIGkpIDogaW5mb1NpbmsoaSkg
eyB9CisKICAgICBUSW50ZXJtU3ltYm9sKiBhZGRTeW1ib2woaW50IElkLCBjb25zdCBUU3RyaW5n
JiwgY29uc3QgVFR5cGUmLCBjb25zdCBUU291cmNlTG9jJik7CiAgICAgVEludGVybVR5cGVkKiBh
ZGRDb252ZXJzaW9uKFRPcGVyYXRvciwgY29uc3QgVFR5cGUmLCBUSW50ZXJtVHlwZWQqKTsKICAg
ICBUSW50ZXJtVHlwZWQqIGFkZEJpbmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQq
IGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MmLCBUU3ltYm9sVGFi
bGUmKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wYXJzZUNv
bnN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvcGFyc2VDb25zdC5jcHAJKHJldmlzaW9uIDE1OTA5MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9wYXJzZUNvbnN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNCw3
ICs0LDcgQEAKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwogCi0jaW5jbHVkZSAi
Y29tcGlsZXIvUGFyc2VIZWxwZXIuaCIKKyNpbmNsdWRlICJjb21waWxlci9QYXJzZUNvbnRleHQu
aCIKIAogLy8KIC8vIFVzZSB0aGlzIGNsYXNzIHRvIGNhcnJ5IGFsb25nIGRhdGEgZnJvbSBub2Rl
IHRvIG5vZGUgaW4gCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yLnZjeHByb2oJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci52Y3hwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzA0IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5n
PSJ1dGYtOCI/Pg0KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9u
PSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1
aWxkLzIwMDMiPg0KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4N
CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4NCisgICAg
ICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+
V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJv
amVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4NCisgICAgICA8Q29uZmlndXJh
dGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9y
bT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0
aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVh
c2U8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisg
ICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIElu
Y2x1ZGU9IlJlbGVhc2V8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25m
aWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2pl
Y3RDb25maWd1cmF0aW9uPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJl
bD0iR2xvYmFscyI+DQorICAgIDxQcm9qZWN0R3VpZD57NUIzQTZEQjgtMUU3RS00MEQ3LTkyQjkt
REE4QUFFNjE5RkFEfTwvUHJvamVjdEd1aWQ+DQorICAgIDxSb290TmFtZXNwYWNlPmNvbXBpbGVy
PC9Sb290TmFtZXNwYWNlPg0KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+DQorICAg
IDxQcm9qZWN0TmFtZT50cmFuc2xhdG9yPC9Qcm9qZWN0TmFtZT4NCisgIDwvUHJvcGVydHlHcm91
cD4NCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRl
ZmF1bHQucHJvcHMiIC8+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlv
biI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9u
VHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4NCisgICAgPFdo
b2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+DQor
ICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRp
b24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlv
blR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+DQorICA8L1By
b3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0K
KyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+
DQorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+DQorICAgIDxXaG9sZVBy
b2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgPC9Q
cm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQor
ICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4N
CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlH
cm91cD4NCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3Bw
LnByb3BzIiAvPg0KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+DQor
ICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0
cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4k
KFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilc
TWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERh
dGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVs
PSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilc
TWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygn
JChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExh
YmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1w
b3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0i
JChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25k
aXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51
c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0
R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1w
b3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNl
ci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAu
JChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+
DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3Mi
IC8+DQorICA8UHJvcGVydHlHcm91cD4NCisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40
MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKFNvbHV0aW9uRGly
KSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoQ29uZmlndXJhdGlv
bilcY29tbW9uXDwvSW50RGlyPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChTb2x1dGlvbkRpcikkKFBsYXRmb3Jt
KVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChQbGF0Zm9ybSlcJChD
b25maWd1cmF0aW9uKVw8L0ludERpcj4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKFNvbHV0aW9uRGlyKSQo
Q29uZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChDb25maWd1cmF0aW9u
KVxjb21tb25cPC9JbnREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9y
bSlcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChQbGF0Zm9ybSlc
JChDb25maWd1cmF0aW9uKVw8L0ludERpcj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJdGVt
RGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9u
PkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM+JChQcm9qZWN0RGlyKTskKFByb2plY3REaXIpLi4vOyQoUHJvamVjdERpcikuLi8uLi9p
bmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJV
RztfTElCO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtOT01JTk1BWDslKFByZXByb2Nlc3NvckRl
ZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPE1pbmltYWxSZWJ1
aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPg0KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5h
YmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPg0KKyAgICAgIDxSdW50aW1lTGlicmFy
eT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxl
ZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2
ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1
ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5F
ZGl0QW5kQ29udGludWU8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPERpc2FibGVT
cGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0NDs0MjQ1OzQ1MTI7NDcwMjs0
NzE4OyUoRGlzYWJsZVNwZWNpZmljV2FybmluZ3MpPC9EaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz4N
CisgICAgPC9DbENvbXBpbGU+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURl
ZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfHg2NCciPg0KKyAgICA8TWlkbD4NCisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0
PC9UYXJnZXRFbnZpcm9ubWVudD4NCisgICAgPC9NaWRsPg0KKyAgICA8Q2xDb21waWxlPg0KKyAg
ICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8QWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpOyQoUHJvamVjdERpcikuLi87JChQ
cm9qZWN0RGlyKS4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwv
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM+V0lOMzI7X0RFQlVHO19MSUI7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05PTUlOTUFY
OyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisg
ICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+DQorICAgICAgPEJhc2lj
UnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+DQorICAg
ICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+DQor
ICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQor
ICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8VHJlYXRX
YXJuaW5nQXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICAgIDxEZWJ1Z0lu
Zm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4N
CisgICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0
OzQyNDU7NDI2Nzs0NTEyOzQ3MDI7NDcxODslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlz
YWJsZVNwZWNpZmljV2FybmluZ3M+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9JdGVtRGVmaW5p
dGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+
DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxJ
bmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5BbnlTdWl0YWJsZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNp
b24+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKTsk
KFByb2plY3REaXIpLi4vOyQoUHJvamVjdERpcikuLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAg
PFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfTElCO19DUlRfU0VDVVJFX05P
X0RFUFJFQ0FURTtOT01JTk1BWDtfU0VDVVJFX1NDTD0wOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVs
dGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0K
KyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8
L1dhcm5pbmdMZXZlbD4NCisgICAgICA8VHJlYXRXYXJuaW5nQXNFcnJvcj50cnVlPC9UcmVhdFdh
cm5pbmdBc0Vycm9yPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRh
YmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8RGlzYWJsZVNwZWNpZmljV2Fy
bmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7NDUxMjs0NzAyOzQ3MTg7JShEaXNh
YmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICA8L0Ns
Q29tcGlsZT4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4
NjQnIj4NCisgICAgPE1pZGw+DQorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0
RW52aXJvbm1lbnQ+DQorICAgIDwvTWlkbD4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0
aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPElubGluZUZ1bmN0aW9u
RXhwYW5zaW9uPkFueVN1aXRhYmxlPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4NCisgICAgICA8
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpOyQoUHJvamVjdERpciku
Li87JChQcm9qZWN0RGlyKS4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19MSUI7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05P
TUlOTUFYO19TRUNVUkVfU0NMPTA7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nl
c3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9S
dW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVj
b21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVs
Pg0KKyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+
DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0lu
Zm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40MTAwOzQx
Mjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0MjY3OzQ1MTI7NDcwMjs0NzE4OyUoRGlzYWJsZVNwZWNp
ZmljV2FybmluZ3MpPC9EaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz4NCisgICAgPC9DbENvbXBpbGU+
DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9IkJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCIgLz4NCisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSJDb2RlR2VuLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJD
b21waWxlci5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iZGVidWcuY3BwIiAvPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkRldGVjdENhbGxEZXB0aC5jcHAiIC8+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iRGV0ZWN0RGlzY29udGludWl0eS5jcHAiIC8+DQorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iRGlhZ25vc3RpY3MuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9IkRpcmVjdGl2ZUhhbmRsZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkZv
ckxvb3BVbnJvbGwuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkluZm9TaW5rLmNw
cCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJJbml0aWFsaXplLmNwcCIgLz4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJJbml0aWFsaXplRGxsLmNwcCIgLz4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJJbml0aWFsaXplR0xQb3NpdGlvbi5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iSW50ZXJtZWRpYXRlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJp
bnRlcm1PdXQuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkludGVybVRyYXZlcnNl
LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJNYXBMb25nVmFyaWFibGVOYW1lcy5j
cHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ib3Nzb3VyY2Vfd2luLmNwcCIgLz4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJPdXRwdXRFU1NMLmNwcCIgLz4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJPdXRwdXRHTFNMLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJP
dXRwdXRHTFNMQmFzZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iT3V0cHV0SExT
TC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icGFyc2VDb25zdC5jcHAiIC8+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUGFyc2VDb250ZXh0LmNwcCIgLz4NCisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSJQb29sQWxsb2MuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
IlF1YWxpZmllckFsaXZlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJSZW1vdmVU
cmVlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJTZWFyY2hTeW1ib2wuY3BwIiAv
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlNoYWRlckxhbmcuY3BwIiAvPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9IlN5bWJvbFRhYmxlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSJUcmFuc2xhdG9yRVNTTC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVHJh
bnNsYXRvckdMU0wuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlRyYW5zbGF0b3JI
TFNMLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJVbmZvbGRTaG9ydENpcmN1aXQu
Y3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlVuZm9sZFNob3J0Q2lyY3VpdEFTVC5j
cHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVW5pZm9ybS5jcHAiIC8+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0idXRpbC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
VmFsaWRhdGVMaW1pdGF0aW9ucy5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVmFy
aWFibGVJbmZvLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJWYXJpYWJsZVBhY2tl
ci5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iZ2xzbGFuZ19sZXguY3BwIiAvPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Imdsc2xhbmdfdGFiLmNwcCIgLz4NCisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSJkZXBncmFwaFxEZXBlbmRlbmN5R3JhcGguY3BwIiAvPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9ImRlcGdyYXBoXERlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuY3BwIiAvPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImRlcGdyYXBoXERlcGVuZGVuY3lHcmFwaE91dHB1dC5j
cHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iZGVwZ3JhcGhcRGVwZW5kZW5jeUdyYXBo
VHJhdmVyc2UuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InRpbWluZ1xSZXN0cmlj
dEZyYWdtZW50U2hhZGVyVGltaW5nLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJ0
aW1pbmdcUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHRoaXJkX3BhcnR5XGNvbXBpbGVyXEFycmF5Qm91bmRzQ2xhbXBlci5jcHAi
IC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVmVyc2lvbkdMU0wuY3BwIiAvPg0KKyAgPC9J
dGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q3VzdG9tQnVpbGQgSW5jbHVkZT0iZ2xz
bGFuZy5sIj4NCisgICAgICA8TWVzc2FnZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+DQorICAgICAgPC9NZXNzYWdlPg0KKyAgICAgIDxD
b21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIj4NCisgICAgICA8L0NvbW1hbmQ+DQorICAgICAgPEFkZGl0aW9uYWxJbnB1dHMgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiUo
QWRkaXRpb25hbElucHV0cyk8L0FkZGl0aW9uYWxJbnB1dHM+DQorICAgICAgPE91dHB1dHMgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiUo
T3V0cHV0cyk8L091dHB1dHM+DQorICAgICAgPE1lc3NhZ2UgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4NCisgICAgICA8L01lc3NhZ2U+DQor
ICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIj4NCisgICAgICA8L0NvbW1hbmQ+DQorICAgICAgPEFkZGl0aW9uYWxJbnB1
dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQn
Ij4lKEFkZGl0aW9uYWxJbnB1dHMpPC9BZGRpdGlvbmFsSW5wdXRzPg0KKyAgICAgIDxPdXRwdXRz
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+
JShPdXRwdXRzKTwvT3V0cHV0cz4NCisgICAgICA8TWVzc2FnZSBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4NCisgICAgICA8L01lc3Nh
Z2U+DQorICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgICAgPC9Db21tYW5kPg0KKyAgICAgIDxBZGRp
dGlvbmFsSW5wdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXxXaW4zMiciPiUoQWRkaXRpb25hbElucHV0cyk8L0FkZGl0aW9uYWxJbnB1dHM+DQor
ICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfFdpbjMyJyI+JShPdXRwdXRzKTwvT3V0cHV0cz4NCisgICAgICA8TWVzc2FnZSBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+
DQorICAgICAgPC9NZXNzYWdlPg0KKyAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4NCisgICAgICA8L0NvbW1hbmQ+
DQorICAgICAgPEFkZGl0aW9uYWxJbnB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiUoQWRkaXRpb25hbElucHV0cyk8L0FkZGl0aW9u
YWxJbnB1dHM+DQorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiUoT3V0cHV0cyk8L091dHB1dHM+DQorICAgIDwv
Q3VzdG9tQnVpbGQ+DQorICAgIDxDdXN0b21CdWlsZCBJbmNsdWRlPSJnbHNsYW5nLnkiPg0KKyAg
ICAgIDxNZXNzYWdlIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8V2luMzInIj4NCisgICAgICA8L01lc3NhZ2U+DQorICAgICAgPENvbW1hbmQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPg0KKyAg
ICAgIDwvQ29tbWFuZD4NCisgICAgICA8T3V0cHV0cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JShPdXRwdXRzKTwvT3V0cHV0cz4NCisg
ICAgICA8TWVzc2FnZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfHg2NCciPg0KKyAgICAgIDwvTWVzc2FnZT4NCisgICAgICA8Q29tbWFuZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPg0KKyAgICAg
IDwvQ29tbWFuZD4NCisgICAgICA8T3V0cHV0cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiUoT3V0cHV0cyk8L091dHB1dHM+DQorICAgICAg
PE1lc3NhZ2UgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfFdpbjMyJyI+DQorICAgICAgPC9NZXNzYWdlPg0KKyAgICAgIDxDb21tYW5kIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPg0KKyAg
ICAgIDwvQ29tbWFuZD4NCisgICAgICA8T3V0cHV0cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4lKE91dHB1dHMpPC9PdXRwdXRzPg0K
KyAgICAgIDxNZXNzYWdlIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXx4NjQnIj4NCisgICAgICA8L01lc3NhZ2U+DQorICAgICAgPENvbW1hbmQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPg0K
KyAgICAgIDwvQ29tbWFuZD4NCisgICAgICA8T3V0cHV0cyBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JShPdXRwdXRzKTwvT3V0cHV0cz4N
CisgICAgPC9DdXN0b21CdWlsZD4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJCYXNlVHlwZXMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IkNvbW1vbi5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkNvbnN0YW50VW5p
b24uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJkZWJ1Zy5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9IkRldGVjdENhbGxEZXB0aC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IkRldGVjdERpc2NvbnRpbnVpdHkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSJEaWFnbm9zdGljcy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkRpcmVjdGl2ZUhh
bmRsZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJGb3JMb29wVW5yb2xsLmgiIC8+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iSGFzaE5hbWVzLmgiIC8+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iSW5mb1NpbmsuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJJbml0
aWFsaXplLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iSW5pdGlhbGl6ZURsbC5oIiAv
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkluaXRpYWxpemVHbG9iYWxzLmgiIC8+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iSW5pdGlhbGl6ZUdMUG9zaXRpb24uaCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJJbml0aWFsaXplUGFyc2VDb250ZXh0LmgiIC8+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iaW50ZXJtZWRpYXRlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0ibG9jYWxpbnRlcm1lZGlhdGUuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJNYXBM
b25nVmFyaWFibGVOYW1lcy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ik1NYXAuaCIg
Lz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJOb2RlU2VhcmNoLmgiIC8+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0ib3NpbmNsdWRlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
T3V0cHV0RVNTTC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ik91dHB1dEdMU0wuaCIg
Lz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJPdXRwdXRHTFNMQmFzZS5oIiAvPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ik91dHB1dEhMU0wuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJQYXJzZUNvbnRleHQuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJQb29sQWxs
b2MuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJRdWFsaWZpZXJBbGl2ZS5oIiAvPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlJlbW92ZVRyZWUuaCIgLz4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJSZW5hbWVGdW5jdGlvbi5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXC4uXGluY2x1ZGVcR0xTTEFOR1xTaGFkZXJMYW5nLmgiIC8+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iU2VhcmNoU3ltYm9sLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iU2hI
YW5kbGUuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJTeW1ib2xUYWJsZS5oIiAvPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlRyYW5zbGF0b3JFU1NMLmgiIC8+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iVHJhbnNsYXRvckdMU0wuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJUcmFuc2xhdG9ySExTTC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlR5cGVz
LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVW5mb2xkU2hvcnRDaXJjdWl0LmgiIC8+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVW5mb2xkU2hvcnRDaXJjdWl0QVNULmgiIC8+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVW5pZm9ybS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9InV0aWwuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJWYWxpZGF0ZUxpbWl0
YXRpb25zLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVmFyaWFibGVJbmZvLmgiIC8+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVmFyaWFibGVQYWNrZXIuaCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJnbHNsYW5nX3RhYi5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9InRpbWluZ1xSZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nLmgiIC8+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0idGltaW5nXFJlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmgiIC8+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iZGVwZ3JhcGhcRGVwZW5kZW5jeUdyYXBoLmgiIC8+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iZGVwZ3JhcGhcRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5o
IiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9ImRlcGdyYXBoXERlcGVuZGVuY3lHcmFwaE91
dHB1dC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHRoaXJkX3BhcnR5XGNvbXBp
bGVyXEFycmF5Qm91bmRzQ2xhbXBlci5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlZl
cnNpb25HTFNMLmgiIC8+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJbXBvcnQgUHJvamVjdD0iJChW
Q1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+DQorICA8SW1wb3J0R3JvdXAg
TGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPg0KKyAgPC9JbXBvcnRHcm91cD4NCis8L1Byb2plY3Q+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yLnZjeHByb2ou
ZmlsdGVycwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDM2MSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCis8UHJv
amVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5j
b20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8RmlsdGVy
IEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzcz
N0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+DQorICAg
ICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8
L0V4dGVuc2lvbnM+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJj
ZSBGaWxlc1xnZW5lcmF0ZWQiPg0KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntlYjhkYTE1Ny1i
MjljLTQzYzMtODgwZC01NDY3OWUxNzZkYzV9PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICA8L0Zp
bHRlcj4NCisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXNcZGVwZ3JhcGgiPg0KKyAg
ICAgIDxVbmlxdWVJZGVudGlmaWVyPntiNTQxMGQzYS1jM2M4LTRhZTYtODQzYS1iMDAwZDY1MjYz
MmV9PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICA8L0ZpbHRlcj4NCisgICAgPEZpbHRlciBJbmNs
dWRlPSJTb3VyY2UgRmlsZXNcdGltaW5nIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57YTk4
NDc2MTEtZGNkNS00Yzg5LTgyNjItYTIyYjk2YzdjOThkfTwvVW5pcXVlSWRlbnRpZmllcj4NCisg
ICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4NCisgICAg
ICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZC
fTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5s
O2luYzt4c2Q8L0V4dGVuc2lvbnM+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1
ZGU9IkhlYWRlciBGaWxlc1xnZW5lcmF0ZWQiPg0KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnsw
OTRmNzExNS0zNWQzLTRjNjMtODcwYy1hYjVmMzkzZGMyYzJ9PC9VbmlxdWVJZGVudGlmaWVyPg0K
KyAgICA8L0ZpbHRlcj4NCisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXNcdGltaW5n
Ij4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NWY1NzQyZTktMTVlMS00M2I0LWIxZTctMGMx
MThiZTE0ZTA0fTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0
ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzXGRlcGdyYXBoIj4NCisgICAgICA8VW5pcXVlSWRlbnRp
Zmllcj57YzQwMDdlMzUtM2MxMS00NGQ2LTk1ZjctYmI4MWRiNTI4MDY4fTwvVW5pcXVlSWRlbnRp
Zmllcj4NCisgICAgPC9GaWx0ZXI+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwIj4NCisg
ICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJDb21waWxlci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291
cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9ImRlYnVnLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4N
CisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRGV0ZWN0Q2FsbERl
cHRoLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9D
bENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRGlhZ25vc3RpY3MuY3BwIj4NCisg
ICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEaXJlY3RpdmVIYW5kbGVyLmNwcCI+DQorICAgICAgPEZp
bHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iRm9yTG9vcFVucm9sbC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNl
IEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9IkluZm9TaW5rLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4N
CisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW5pdGlhbGl6ZS5j
cHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21w
aWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkluaXRpYWxpemVEbGwuY3BwIj4NCisgICAg
ICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJJbml0aWFsaXplUGFyc2VDb250ZXh0LmNwcCI+DQorICAgICAg
PEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iSW50ZXJtZWRpYXRlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iaW50ZXJtT3V0LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRl
cj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW50ZXJtVHJh
dmVyc2UuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8
L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJNYXBMb25nVmFyaWFibGVOYW1l
cy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xD
b21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Im9zc291cmNlX3dpbi5jcHAiPg0KKyAg
ICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9InBhcnNlQ29uc3QuY3BwIj4NCisgICAgICA8RmlsdGVyPlNv
dXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJQb29sQWxsb2MuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmls
dGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJRdWFsaWZp
ZXJBbGl2ZS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAg
IDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlJlbW92ZVRyZWUuY3BwIj4N
CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJTaGFkZXJMYW5nLmNwcCI+DQorICAgICAgPEZpbHRl
cj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iU3ltYm9sVGFibGUuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxl
czwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJ1
dGlsLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9D
bENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVmFsaWRhdGVMaW1pdGF0aW9ucy5j
cHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21w
aWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlZhcmlhYmxlSW5mby5jcHAiPg0KKyAgICAg
IDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9IlZhcmlhYmxlUGFja2VyLmNwcCI+DQorICAgICAgPEZpbHRlcj5T
b3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iZ2xzbGFuZ19sZXguY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xn
ZW5lcmF0ZWQ8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iZ2xzbGFuZ190YWIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xnZW5l
cmF0ZWQ8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iZGVwZ3JhcGhcRGVwZW5kZW5jeUdyYXBoLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2Ug
RmlsZXNcZGVwZ3JhcGg8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iZGVwZ3JhcGhcRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5jcHAiPg0KKyAgICAg
IDxGaWx0ZXI+U291cmNlIEZpbGVzXGRlcGdyYXBoPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxl
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImRlcGdyYXBoXERlcGVuZGVuY3lHcmFwaE91dHB1
dC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXGRlcGdyYXBoPC9GaWx0ZXI+DQor
ICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImRlcGdyYXBoXERlcGVu
ZGVuY3lHcmFwaFRyYXZlcnNlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcZGVw
Z3JhcGg8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0idGltaW5nXFJlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmcuY3BwIj4NCisgICAgICA8Rmls
dGVyPlNvdXJjZSBGaWxlc1x0aW1pbmc8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0idGltaW5nXFJlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmNw
cCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcdGltaW5nPC9GaWx0ZXI+DQorICAgIDwv
Q2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHRoaXJkX3BhcnR5XGNvbXBp
bGVyXEFycmF5Qm91bmRzQ2xhbXBlci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVz
PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Iklu
aXRpYWxpemVHTFBvc2l0aW9uLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0Zp
bHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRGV0ZWN0
RGlzY29udGludWl0eS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+
DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ik91dHB1dEhMU0wu
Y3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29t
cGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJTZWFyY2hTeW1ib2wuY3BwIj4NCisgICAg
ICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJUcmFuc2xhdG9ySExTTC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+
U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IlVuZm9sZFNob3J0Q2lyY3VpdC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNl
IEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9IlVuaWZvcm0uY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0K
KyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJDb2RlR2VuLmNwcCI+
DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVHJhbnNsYXRvckdMU0wuY3BwIj4NCisgICAgICA8
RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSJUcmFuc2xhdG9yRVNTTC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291
cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ik91dHB1dEVTU0wuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmls
dGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJPdXRwdXRH
TFNMLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9D
bENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iT3V0cHV0R0xTTEJhc2UuY3BwIj4N
CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJWZXJzaW9uR0xTTC5jcHAiPg0KKyAgICAgIDxGaWx0
ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9IlVuZm9sZFNob3J0Q2lyY3VpdEFTVC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+
U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IlBhcnNlQ29udGV4dC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVz
PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdy
b3VwPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkJhc2VUeXBlcy5oIj4NCisgICAgICA8Rmls
dGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oIj4NCisgICAgICA8RmlsdGVy
PkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJDb21tb24uaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRl
cj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQ29uc3RhbnRV
bmlvbi5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0Ns
SW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJkZWJ1Zy5oIj4NCisgICAgICA8Rmls
dGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJEZXRlY3RDYWxsRGVwdGguaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIg
RmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iRGlhZ25vc3RpY3MuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRGlyZWN0aXZlSGFu
ZGxlci5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0Ns
SW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJGb3JMb29wVW5yb2xsLmgiPg0KKyAg
ICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkluZm9TaW5rLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVy
IEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IkluaXRpYWxpemUuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iSW5pdGlhbGl6ZURs
bC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5j
bHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJJbml0aWFsaXplR2xvYmFscy5oIj4NCisg
ICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJJbml0aWFsaXplUGFyc2VDb250ZXh0LmgiPg0KKyAgICAg
IDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9ImludGVybWVkaWF0ZS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRl
ciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJsb2NhbGludGVybWVkaWF0ZS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwv
RmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJNYXBM
b25nVmFyaWFibGVOYW1lcy5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVy
Pg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJNTWFwLmgiPg0K
KyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Im9zaW5jbHVkZS5oIj4NCisgICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJQb29sQWxsb2MuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRl
cj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUXVhbGlmaWVy
QWxpdmUuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9D
bEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUmVtb3ZlVHJlZS5oIj4NCisgICAg
ICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJSZW5hbWVGdW5jdGlvbi5oIj4NCisgICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlwuLlxpbmNsdWRlXEdMU0xBTkdcU2hhZGVyTGFuZy5oIj4NCisgICAgICA8Rmls
dGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJTaEhhbmRsZS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwv
RmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJTeW1i
b2xUYWJsZS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8
L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJUeXBlcy5oIj4NCisgICAgICA8
RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJ1dGlsLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9G
aWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlZhbGlk
YXRlTGltaXRhdGlvbnMuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVmFyaWFibGVJbmZv
LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNs
dWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlZhcmlhYmxlUGFja2VyLmgiPg0KKyAgICAg
IDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Imdsc2xhbmdfdGFiLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVy
IEZpbGVzXGdlbmVyYXRlZDwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJ0aW1pbmdcUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZy5oIj4NCisg
ICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1x0aW1pbmc8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1
ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0idGltaW5nXFJlc3RyaWN0VmVydGV4U2hhZGVy
VGltaW5nLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXHRpbWluZzwvRmlsdGVyPg0K
KyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJkZXBncmFwaFxEZXBl
bmRlbmN5R3JhcGguaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcZGVwZ3JhcGg8L0Zp
bHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iZGVwZ3Jh
cGhcRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
c1xkZXBncmFwaDwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJkZXBncmFwaFxEZXBlbmRlbmN5R3JhcGhPdXRwdXQuaCI+DQorICAgICAgPEZpbHRl
cj5IZWFkZXIgRmlsZXNcZGVwZ3JhcGg8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iSGFzaE5hbWVzLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVy
IEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IkluaXRpYWxpemVHTFBvc2l0aW9uLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVz
PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHRoaXJkX3BhcnR5XGNvbXBpbGVyXEFycmF5Qm91bmRzQ2xhbXBlci5oIj4NCisgICAgICA8Rmls
dGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJEZXRlY3REaXNjb250aW51aXR5LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVh
ZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ik91dHB1dEhMU0wuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRl
cj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iU2VhcmNoU3lt
Ym9sLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJ
bmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlRyYW5zbGF0b3JITFNMLmgiPg0KKyAg
ICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlVuZm9sZFNob3J0Q2lyY3VpdC5oIj4NCisgICAgICA8Rmls
dGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJVbmlmb3JtLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9G
aWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlRyYW5z
bGF0b3JHTFNMLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAg
IDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlRyYW5zbGF0b3JFU1NMLmgi
Pg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRl
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ik91dHB1dEVTU0wuaCI+DQorICAgICAgPEZpbHRl
cj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iT3V0cHV0R0xTTC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwv
RmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJPdXRw
dXRHTFNMQmFzZS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAg
ICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJWZXJzaW9uR0xTTC5oIj4N
CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJVbmZvbGRTaG9ydENpcmN1aXRBU1QuaCI+DQorICAg
ICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iUGFyc2VDb250ZXh0LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVh
ZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ik5vZGVTZWFyY2guaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRl
cj4NCisgICAgPC9DbEluY2x1ZGU+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQor
ICAgIDxDdXN0b21CdWlsZCBJbmNsdWRlPSJnbHNsYW5nLmwiPg0KKyAgICAgIDxGaWx0ZXI+U291
cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ3VzdG9tQnVpbGQ+DQorICAgIDxDdXN0b21CdWls
ZCBJbmNsdWRlPSJnbHNsYW5nLnkiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ3VzdG9tQnVpbGQ+DQorICA8L0l0ZW1Hcm91cD4NCis8L1Byb2plY3Q+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3V0aWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci91dGlsLmNwcAkocmV2aXNpb24gMTU5MDkwKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3V0aWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
LDMwICs0LDI1IEBACiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KIAotI2luY2x1
ZGUgPG1hdGguaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlICJjb21waWxlci91dGls
LmgiCiAKLSNpbmNsdWRlICJ1dGlsLmgiCisjaW5jbHVkZSA8bGltaXRzPgogCi0jaWZkZWYgX01T
Q19WRVIKLSAgICAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0jZWxzZQotICAgICNpbmNsdWRlIDxzc3Ry
ZWFtPgotI2VuZGlmCisjaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL251bWVyaWNfbGV4
LmgiCiAKLWRvdWJsZSBhdG9mX2RvdChjb25zdCBjaGFyICpzdHIpCitib29sIGF0b2ZfY2xhbXAo
Y29uc3QgY2hhciAqc3RyLCBmbG9hdCAqdmFsdWUpCiB7Ci0jaWZkZWYgX01TQ19WRVIKLSAgICBf
bG9jYWxlX3QgbCA9IF9jcmVhdGVfbG9jYWxlKExDX05VTUVSSUMsICJDIik7Ci0gICAgZG91Ymxl
IHJlc3VsdCA9IF9hdG9mX2woc3RyLCBsKTsKLSAgICBfZnJlZV9sb2NhbGUobCk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgZG91YmxlIHJlc3VsdDsKLSAgICBzdGQ6OmlzdHJpbmdz
dHJlYW0gcyhzdHIpOwotICAgIHN0ZDo6bG9jYWxlIGwoIkMiKTsKLSAgICBzLmltYnVlKGwpOwot
ICAgIHMgPj4gcmVzdWx0OwotICAgIHJldHVybiByZXN1bHQ7Ci0jZW5kaWYKKyAgICBib29sIHN1
Y2Nlc3MgPSBwcDo6bnVtZXJpY19sZXhfZmxvYXQoc3RyLCB2YWx1ZSk7CisgICAgaWYgKCFzdWNj
ZXNzKQorICAgICAgICAqdmFsdWUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCk7
CisgICAgcmV0dXJuIHN1Y2Nlc3M7CiB9CisKK2Jvb2wgYXRvaV9jbGFtcChjb25zdCBjaGFyICpz
dHIsIGludCAqdmFsdWUpCit7CisgICAgYm9vbCBzdWNjZXNzID0gcHA6Om51bWVyaWNfbGV4X2lu
dChzdHIsIHZhbHVlKTsKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgICp2YWx1ZSA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CisgICAgcmV0dXJuIHN1Y2Nlc3M7Cit9CisKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci91dGlsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3V0aWwuaAkocmV2aXNp
b24gMTU5MDkwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3V0aWwu
aAkod29ya2luZyBjb3B5KQpAQCAtNywxNSArNywxNCBAQAogI2lmbmRlZiBDT01QSUxFUl9VVElM
X0gKICNkZWZpbmUgQ09NUElMRVJfVVRJTF9ICiAKLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJu
ICJDIiB7Ci0jZW5kaWYKKy8vIGF0b2ZfY2xhbXAgaXMgbGlrZSBhdG9mIGJ1dAorLy8gICAxLiBp
dCBmb3JjZXMgQyBsb2NhbGUsIGkuZS4gZm9yY2luZyAnLicgYXMgZGVjaW1hbCBwb2ludC4KKy8v
ICAgMi4gaXQgY2xhbXBzIHRoZSB2YWx1ZSB0byAtRkxUX01BWCBvciBGTFRfTUFYIGlmIG92ZXJm
bG93IGhhcHBlbnMuCisvLyBSZXR1cm4gZmFsc2UgaWYgb3ZlcmZsb3cgaGFwcGVucy4KK2V4dGVy
biBib29sIGF0b2ZfY2xhbXAoY29uc3QgY2hhciAqc3RyLCBmbG9hdCAqdmFsdWUpOwogCi0vLyBh
dG9mX2RvdCBpcyBsaWtlIGF0b2YgYnV0IGZvcmNpbmcgQyBsb2NhbGUsIGkuZS4gZm9yY2luZyAn
LicgYXMgZGVjaW1hbCBwb2ludC4KLWRvdWJsZSBhdG9mX2RvdChjb25zdCBjaGFyICpzdHIpOwot
Ci0jaWZkZWYgX19jcGx1c3BsdXMKLX0gLy8gZW5kIGV4dGVybiAiQyIKLSNlbmRpZgorLy8gSWYg
b3ZlcmZsb3cgaGFwcGVucywgY2xhbXAgdGhlIHZhbHVlIHRvIElOVF9NSU4gb3IgSU5UX01BWC4K
Ky8vIFJldHVybiBmYWxzZSBpZiBvdmVyZmxvdyBoYXBwZW5zLgorZXh0ZXJuIGJvb2wgYXRvaV9j
bGFtcChjb25zdCBjaGFyICpzdHIsIGludCAqdmFsdWUpOwogCiAjZW5kaWYgLy8gQ09NUElMRVJf
VVRJTF9ICkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZGVwZ3Jh
cGgvRGVwZW5kZW5jeUdyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoLmNwcAkocmV2aXNpb24g
MTU5MDkwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2RlcGdyYXBo
L0RlcGVuZGVuY3lHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQsOSArNCw3IEBACiAvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KIAotI2lmIGRlZmluZWQoX01TQ19WRVIpCiAj
cHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDcxOCkKLSNlbmRpZgogCiAjaW5jbHVkZSAiY29tcGls
ZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvZGVwZ3Jh
cGgvRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5oIgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9kZXBncmFwaC9E
ZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcAkocmV2aXNpb24gMTU5MDkwKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaEJ1aWxk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgVERlcGVuZGVuY3lH
cmFwaEJ1aWxkZXI6OnZpc2l0U3ltYm8KIGJvb2wgVERlcGVuZGVuY3lHcmFwaEJ1aWxkZXI6OnZp
c2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5KiBpbnRlcm1CaW5hcnkpCiB7CiAg
ICAgVE9wZXJhdG9yIG9wID0gaW50ZXJtQmluYXJ5LT5nZXRPcCgpOwotICAgIGlmIChvcCA9PSBF
T3BJbml0aWFsaXplIHx8IGludGVybUJpbmFyeS0+bW9kaWZpZXNTdGF0ZSgpKQorICAgIGlmIChv
cCA9PSBFT3BJbml0aWFsaXplIHx8IGludGVybUJpbmFyeS0+aXNBc3NpZ25tZW50KCkpCiAgICAg
ICAgIHZpc2l0QXNzaWdubWVudChpbnRlcm1CaW5hcnkpOwogICAgIGVsc2UgaWYgKG9wID09IEVP
cExvZ2ljYWxBbmQgfHwgb3AgPT0gRU9wTG9naWNhbE9yKQogICAgICAgICB2aXNpdExvZ2ljYWxP
cChpbnRlcm1CaW5hcnkpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25Q
YXJzZXIuY3BwCShyZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25QYXJzZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDE0ICsxLDEzIEBACi0vKiBBIEJpc29uIHBhcnNlciwgbWFkZSBieSBHTlUgQmlz
b24gMi4zLiAgKi8KKy8qIEEgQmlzb24gcGFyc2VyLCBtYWRlIGJ5IEdOVSBCaXNvbiAzLjAuMS4g
ICovCiAKLS8qIFNrZWxldG9uIGltcGxlbWVudGF0aW9uIGZvciBCaXNvbidzIFlhY2MtbGlrZSBw
YXJzZXJzIGluIEMKKy8qIEJpc29uIGltcGxlbWVudGF0aW9uIGZvciBZYWNjLWxpa2UgcGFyc2Vy
cyBpbiBDCiAKLSAgIENvcHlyaWdodCAoQykgMTk4NCwgMTk4OSwgMTk5MCwgMjAwMCwgMjAwMSwg
MjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNgotICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuCisgICBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5ODktMTk5MCwgMjAwMC0yMDEzIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCi0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgVGhpcyBwcm9n
cmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp
ZnkKICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5Ci0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0gICBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl
IExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogCiAg
ICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCkBAIC0xNiw5ICsxNSw3IEBACiAgICBHTlUgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgYWxvbmcgd2l0
aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAgIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4gICovCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g
IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiAKIC8qIEFz
IGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgY3JlYXRlIGEgbGFyZ2VyIHdvcmsgdGhhdCBj
b250YWlucwogICAgcGFydCBvciBhbGwgb2YgdGhlIEJpc29uIHBhcnNlciBza2VsZXRvbiBhbmQg
ZGlzdHJpYnV0ZSB0aGF0IHdvcmsKQEAgLTQ3LDcgKzQ0LDcgQEAKICNkZWZpbmUgWVlCSVNPTiAx
CiAKIC8qIEJpc29uIHZlcnNpb24uICAqLwotI2RlZmluZSBZWUJJU09OX1ZFUlNJT04gIjIuMyIK
KyNkZWZpbmUgWVlCSVNPTl9WRVJTSU9OICIzLjAuMSIKIAogLyogU2tlbGV0b24gbmFtZS4gICov
CiAjZGVmaW5lIFlZU0tFTEVUT05fTkFNRSAieWFjYy5jIgpAQCAtNTUsNTAgKzUyLDE5IEBACiAv
KiBQdXJlIHBhcnNlcnMuICAqLwogI2RlZmluZSBZWVBVUkUgMQogCi0vKiBVc2luZyBsb2NhdGlv
bnMuICAqLwotI2RlZmluZSBZWUxTUF9ORUVERUQgMAorLyogUHVzaCBwYXJzZXJzLiAgKi8KKyNk
ZWZpbmUgWVlQVVNIIDAKIAotLyogU3Vic3RpdHV0ZSB0aGUgdmFyaWFibGUgYW5kIGZ1bmN0aW9u
IG5hbWVzLiAgKi8KLSNkZWZpbmUgeXlwYXJzZSBwcHBhcnNlCi0jZGVmaW5lIHl5bGV4ICAgcHBs
ZXgKLSNkZWZpbmUgeXllcnJvciBwcGVycm9yCi0jZGVmaW5lIHl5bHZhbCAgcHBsdmFsCi0jZGVm
aW5lIHl5Y2hhciAgcHBjaGFyCi0jZGVmaW5lIHl5ZGVidWcgcHBkZWJ1ZwotI2RlZmluZSB5eW5l
cnJzIHBwbmVycnMKLQotCi0vKiBUb2tlbnMuICAqLwotI2lmbmRlZiBZWVRPS0VOVFlQRQotIyBk
ZWZpbmUgWVlUT0tFTlRZUEUKLSAgIC8qIFB1dCB0aGUgdG9rZW5zIGludG8gdGhlIHN5bWJvbCB0
YWJsZSwgc28gdGhhdCBHREIgYW5kIG90aGVyIGRlYnVnZ2VycwotICAgICAga25vdyBhYm91dCB0
aGVtLiAgKi8KLSAgIGVudW0geXl0b2tlbnR5cGUgewotICAgICBUT0tfQ09OU1RfSU5UID0gMjU4
LAotICAgICBUT0tfT1BfT1IgPSAyNTksCi0gICAgIFRPS19PUF9BTkQgPSAyNjAsCi0gICAgIFRP
S19PUF9ORSA9IDI2MSwKLSAgICAgVE9LX09QX0VRID0gMjYyLAotICAgICBUT0tfT1BfR0UgPSAy
NjMsCi0gICAgIFRPS19PUF9MRSA9IDI2NCwKLSAgICAgVE9LX09QX1JJR0hUID0gMjY1LAotICAg
ICBUT0tfT1BfTEVGVCA9IDI2NiwKLSAgICAgVE9LX1VOQVJZID0gMjY3Ci0gICB9OwotI2VuZGlm
Ci0vKiBUb2tlbnMuICAqLwotI2RlZmluZSBUT0tfQ09OU1RfSU5UIDI1OAotI2RlZmluZSBUT0tf
T1BfT1IgMjU5Ci0jZGVmaW5lIFRPS19PUF9BTkQgMjYwCi0jZGVmaW5lIFRPS19PUF9ORSAyNjEK
LSNkZWZpbmUgVE9LX09QX0VRIDI2MgotI2RlZmluZSBUT0tfT1BfR0UgMjYzCi0jZGVmaW5lIFRP
S19PUF9MRSAyNjQKLSNkZWZpbmUgVE9LX09QX1JJR0hUIDI2NQotI2RlZmluZSBUT0tfT1BfTEVG
VCAyNjYKLSNkZWZpbmUgVE9LX1VOQVJZIDI2NworLyogUHVsbCBwYXJzZXJzLiAgKi8KKyNkZWZp
bmUgWVlQVUxMIDEKIAogCisvKiBTdWJzdGl0dXRlIHRoZSB2YXJpYWJsZSBhbmQgZnVuY3Rpb24g
bmFtZXMuICAqLworI2RlZmluZSB5eXBhcnNlICAgICAgICAgcHBwYXJzZQorI2RlZmluZSB5eWxl
eCAgICAgICAgICAgcHBsZXgKKyNkZWZpbmUgeXllcnJvciAgICAgICAgIHBwZXJyb3IKKyNkZWZp
bmUgeXlkZWJ1ZyAgICAgICAgIHBwZGVidWcKKyNkZWZpbmUgeXluZXJycyAgICAgICAgIHBwbmVy
cnMKIAogCiAvKiBDb3B5IHRoZSBmaXJzdCBwYXJ0IG9mIHVzZXIgZGVjbGFyYXRpb25zLiAgKi8K
QEAgLTEyNSw2ICs5MSwxMiBAQAogCiAjaW5jbHVkZSAiRXhwcmVzc2lvblBhcnNlci5oIgogCisj
aWYgZGVmaW5lZChfTVNDX1ZFUikKKyNpbmNsdWRlIDxtYWxsb2MuaD4KKyNlbHNlCisjaW5jbHVk
ZSA8c3RkbGliLmg+CisjZW5kaWYKKwogI2luY2x1ZGUgPGNhc3NlcnQ+CiAjaW5jbHVkZSA8c3N0
cmVhbT4KIApAQCAtMTU4LDEwICsxMzAsMTQgQEAgc3RhdGljIGludCB5eWxleChZWVNUWVBFKiBs
dmFscCwgQ29udGV4dAogc3RhdGljIHZvaWQgeXllcnJvcihDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiByZWFzb24pOwogCiAKLS8qIEVuYWJsaW5nIHRyYWNlcy4gICovCi0jaWZuZGVmIFlZ
REVCVUcKLSMgZGVmaW5lIFlZREVCVUcgMAotI2VuZGlmCisKKyMgaWZuZGVmIFlZX05VTExQVFIK
KyMgIGlmIGRlZmluZWQgX19jcGx1c3BsdXMgJiYgMjAxMTAzTCA8PSBfX2NwbHVzcGx1cworIyAg
IGRlZmluZSBZWV9OVUxMUFRSIG51bGxwdHIKKyMgIGVsc2UKKyMgICBkZWZpbmUgWVlfTlVMTFBU
UiAwCisjICBlbmRpZgorIyBlbmRpZgogCiAvKiBFbmFibGluZyB2ZXJib3NlIGVycm9yIG1lc3Nh
Z2VzLiAgKi8KICNpZmRlZiBZWUVSUk9SX1ZFUkJPU0UKQEAgLTE3MSwyNCArMTQ3LDQ4IEBAIHN0
YXRpYyB2b2lkIHl5ZXJyb3IoQ29udGV4dCogY29udGV4dCwgY28KICMgZGVmaW5lIFlZRVJST1Jf
VkVSQk9TRSAwCiAjZW5kaWYKIAotLyogRW5hYmxpbmcgdGhlIHRva2VuIHRhYmxlLiAgKi8KLSNp
Zm5kZWYgWVlUT0tFTl9UQUJMRQotIyBkZWZpbmUgWVlUT0tFTl9UQUJMRSAwCisKKy8qIERlYnVn
IHRyYWNlcy4gICovCisjaWZuZGVmIFlZREVCVUcKKyMgZGVmaW5lIFlZREVCVUcgMAorI2VuZGlm
CisjaWYgWVlERUJVRworZXh0ZXJuIGludCBwcGRlYnVnOworI2VuZGlmCisKKy8qIFRva2VuIHR5
cGUuICAqLworI2lmbmRlZiBZWVRPS0VOVFlQRQorIyBkZWZpbmUgWVlUT0tFTlRZUEUKKyAgZW51
bSB5eXRva2VudHlwZQorICB7CisgICAgVE9LX0NPTlNUX0lOVCA9IDI1OCwKKyAgICBUT0tfT1Bf
T1IgPSAyNTksCisgICAgVE9LX09QX0FORCA9IDI2MCwKKyAgICBUT0tfT1BfRVEgPSAyNjEsCisg
ICAgVE9LX09QX05FID0gMjYyLAorICAgIFRPS19PUF9MRSA9IDI2MywKKyAgICBUT0tfT1BfR0Ug
PSAyNjQsCisgICAgVE9LX09QX0xFRlQgPSAyNjUsCisgICAgVE9LX09QX1JJR0hUID0gMjY2LAor
ICAgIFRPS19VTkFSWSA9IDI2NworICB9OwogI2VuZGlmCiAKKy8qIFZhbHVlIHR5cGUuICAqLwog
I2lmICEgZGVmaW5lZCBZWVNUWVBFICYmICEgZGVmaW5lZCBZWVNUWVBFX0lTX0RFQ0xBUkVECiB0
eXBlZGVmIGludCBZWVNUWVBFOwotIyBkZWZpbmUgeXlzdHlwZSBZWVNUWVBFIC8qIG9ic29sZXNj
ZW50OyB3aWxsIGJlIHdpdGhkcmF3biAqLwotIyBkZWZpbmUgWVlTVFlQRV9JU19ERUNMQVJFRCAx
CiAjIGRlZmluZSBZWVNUWVBFX0lTX1RSSVZJQUwgMQorIyBkZWZpbmUgWVlTVFlQRV9JU19ERUNM
QVJFRCAxCiAjZW5kaWYKIAogCiAKLS8qIENvcHkgdGhlIHNlY29uZCBwYXJ0IG9mIHVzZXIgZGVj
bGFyYXRpb25zLiAgKi8KK2ludCBwcHBhcnNlIChDb250ZXh0ICpjb250ZXh0KTsKIAogCi0vKiBM
aW5lIDIxNiBvZiB5YWNjLmMuICAqLworCisvKiBDb3B5IHRoZSBzZWNvbmQgcGFydCBvZiB1c2Vy
IGRlY2xhcmF0aW9ucy4gICovCisKIAogCiAjaWZkZWYgc2hvcnQKQEAgLTIwMywxMSArMjAzLDgg
QEAgdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHl5dHlwZV91aW50ODsKIAogI2lmZGVmIFlZVFlQRV9J
TlQ4CiB0eXBlZGVmIFlZVFlQRV9JTlQ4IHl5dHlwZV9pbnQ4OwotI2VsaWYgKGRlZmluZWQgX19T
VERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKLSAgICAgfHwgZGVmaW5lZCBfX2NwbHVz
cGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQotdHlwZWRlZiBzaWduZWQgY2hhciB5eXR5cGVfaW50
ODsKICNlbHNlCi10eXBlZGVmIHNob3J0IGludCB5eXR5cGVfaW50ODsKK3R5cGVkZWYgc2lnbmVk
IGNoYXIgeXl0eXBlX2ludDg7CiAjZW5kaWYKIAogI2lmZGVmIFlZVFlQRV9VSU5UMTYKQEAgLTIy
Nyw4ICsyMjQsNyBAQCB0eXBlZGVmIHNob3J0IGludCB5eXR5cGVfaW50MTY7CiAjICBkZWZpbmUg
WVlTSVpFX1QgX19TSVpFX1RZUEVfXwogIyBlbGlmIGRlZmluZWQgc2l6ZV90CiAjICBkZWZpbmUg
WVlTSVpFX1Qgc2l6ZV90Ci0jIGVsaWYgISBkZWZpbmVkIFlZU0laRV9UICYmIChkZWZpbmVkIF9f
U1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCi0gICAgIHx8IGRlZmluZWQgX19jcGx1
c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKKyMgZWxpZiAhIGRlZmluZWQgWVlTSVpFX1QKICMg
IGluY2x1ZGUgPHN0ZGRlZi5oPiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCiAj
ICBkZWZpbmUgWVlTSVpFX1Qgc2l6ZV90CiAjIGVsc2UKQEAgLTI0MiwzOCArMjM4LDY3IEBAIHR5
cGVkZWYgc2hvcnQgaW50IHl5dHlwZV9pbnQxNjsKICMgaWYgZGVmaW5lZCBZWUVOQUJMRV9OTFMg
JiYgWVlFTkFCTEVfTkxTCiAjICBpZiBFTkFCTEVfTkxTCiAjICAgaW5jbHVkZSA8bGliaW50bC5o
PiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCi0jICAgZGVmaW5lIFlZXyhtc2dp
ZCkgZGdldHRleHQgKCJiaXNvbi1ydW50aW1lIiwgbXNnaWQpCisjICAgZGVmaW5lIFlZXyhNc2dp
ZCkgZGdldHRleHQgKCJiaXNvbi1ydW50aW1lIiwgTXNnaWQpCiAjICBlbmRpZgogIyBlbmRpZgog
IyBpZm5kZWYgWVlfCi0jICBkZWZpbmUgWVlfKG1zZ2lkKSBtc2dpZAorIyAgZGVmaW5lIFlZXyhN
c2dpZCkgTXNnaWQKKyMgZW5kaWYKKyNlbmRpZgorCisjaWZuZGVmIFlZX0FUVFJJQlVURQorIyBp
ZiAoZGVmaW5lZCBfX0dOVUNfXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgJiYgKDIgPCBfX0dOVUNfXyB8fCAoX19HTlVDX18gPT0gMiAmJiA5
NiA8PSBfX0dOVUNfTUlOT1JfXykpKSAgXAorICAgICB8fCBkZWZpbmVkIF9fU1VOUFJPX0MgJiYg
MHg1MTEwIDw9IF9fU1VOUFJPX0MKKyMgIGRlZmluZSBZWV9BVFRSSUJVVEUoU3BlYykgX19hdHRy
aWJ1dGVfXyhTcGVjKQorIyBlbHNlCisjICBkZWZpbmUgWVlfQVRUUklCVVRFKFNwZWMpIC8qIGVt
cHR5ICovCisjIGVuZGlmCisjZW5kaWYKKworI2lmbmRlZiBZWV9BVFRSSUJVVEVfUFVSRQorIyBk
ZWZpbmUgWVlfQVRUUklCVVRFX1BVUkUgICBZWV9BVFRSSUJVVEUgKChfX3B1cmVfXykpCisjZW5k
aWYKKworI2lmbmRlZiBZWV9BVFRSSUJVVEVfVU5VU0VECisjIGRlZmluZSBZWV9BVFRSSUJVVEVf
VU5VU0VEIFlZX0FUVFJJQlVURSAoKF9fdW51c2VkX18pKQorI2VuZGlmCisKKyNpZiAhZGVmaW5l
ZCBfTm9yZXR1cm4gXAorICAgICAmJiAoIWRlZmluZWQgX19TVERDX1ZFUlNJT05fXyB8fCBfX1NU
RENfVkVSU0lPTl9fIDwgMjAxMTEyKQorIyBpZiBkZWZpbmVkIF9NU0NfVkVSICYmIDEyMDAgPD0g
X01TQ19WRVIKKyMgIGRlZmluZSBfTm9yZXR1cm4gX19kZWNsc3BlYyAobm9yZXR1cm4pCisjIGVs
c2UKKyMgIGRlZmluZSBfTm9yZXR1cm4gWVlfQVRUUklCVVRFICgoX19ub3JldHVybl9fKSkKICMg
ZW5kaWYKICNlbmRpZgogCiAvKiBTdXBwcmVzcyB1bnVzZWQtdmFyaWFibGUgd2FybmluZ3MgYnkg
InVzaW5nIiBFLiAgKi8KICNpZiAhIGRlZmluZWQgbGludCB8fCBkZWZpbmVkIF9fR05VQ19fCi0j
IGRlZmluZSBZWVVTRShlKSAoKHZvaWQpIChlKSkKKyMgZGVmaW5lIFlZVVNFKEUpICgodm9pZCkg
KEUpKQogI2Vsc2UKLSMgZGVmaW5lIFlZVVNFKGUpIC8qIGVtcHR5ICovCisjIGRlZmluZSBZWVVT
RShFKSAvKiBlbXB0eSAqLwogI2VuZGlmCiAKLS8qIElkZW50aXR5IGZ1bmN0aW9uLCB1c2VkIHRv
IHN1cHByZXNzIHdhcm5pbmdzIGFib3V0IGNvbnN0YW50IGNvbmRpdGlvbnMuICAqLwotI2lmbmRl
ZiBsaW50Ci0jIGRlZmluZSBZWUlEKG4pIChuKQotI2Vsc2UKLSNpZiAoZGVmaW5lZCBfX1NURENf
XyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAotICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVz
IHx8IGRlZmluZWQgX01TQ19WRVIpCi1zdGF0aWMgaW50Ci1ZWUlEIChpbnQgaSkKKyNpZiBkZWZp
bmVkIF9fR05VQ19fICYmIDQwNyA8PSBfX0dOVUNfXyAqIDEwMCArIF9fR05VQ19NSU5PUl9fCisv
KiBTdXBwcmVzcyBhbiBpbmNvcnJlY3QgZGlhZ25vc3RpYyBhYm91dCB5eWx2YWwgYmVpbmcgdW5p
bml0aWFsaXplZC4gICovCisjIGRlZmluZSBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9C
RUdJTiBcCisgICAgX1ByYWdtYSAoIkdDQyBkaWFnbm9zdGljIHB1c2giKSBcCisgICAgX1ByYWdt
YSAoIkdDQyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV3VuaW5pdGlhbGl6ZWRcIiIpXAorICAgIF9Q
cmFnbWEgKCJHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkIFwiLVdtYXliZS11bmluaXRpYWxpemVkXCIi
KQorIyBkZWZpbmUgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfRU5EIFwKKyAgICBfUHJh
Z21hICgiR0NDIGRpYWdub3N0aWMgcG9wIikKICNlbHNlCi1zdGF0aWMgaW50Ci1ZWUlEIChpKQot
ICAgIGludCBpOworIyBkZWZpbmUgWVlfSU5JVElBTF9WQUxVRShWYWx1ZSkgVmFsdWUKICNlbmRp
ZgotewotICByZXR1cm4gaTsKLX0KKyNpZm5kZWYgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTEla
RURfQkVHSU4KKyMgZGVmaW5lIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0JFR0lOCisj
IGRlZmluZSBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9FTkQKICNlbmRpZgorI2lmbmRl
ZiBZWV9JTklUSUFMX1ZBTFVFCisjIGRlZmluZSBZWV9JTklUSUFMX1ZBTFVFKFZhbHVlKSAvKiBO
b3RoaW5nLiAqLworI2VuZGlmCisKIAogI2lmICEgZGVmaW5lZCB5eW92ZXJmbG93IHx8IFlZRVJS
T1JfVkVSQk9TRQogCkBAIC0yOTIsMTEgKzMxNywxMSBAQCBZWUlEIChpKQogIyAgICBkZWZpbmUg
YWxsb2NhIF9hbGxvY2EKICMgICBlbHNlCiAjICAgIGRlZmluZSBZWVNUQUNLX0FMTE9DIGFsbG9j
YQotIyAgICBpZiAhIGRlZmluZWQgX0FMTE9DQV9IICYmICEgZGVmaW5lZCBfU1RETElCX0ggJiYg
KGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKLSAgICAgfHwgZGVm
aW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQorIyAgICBpZiAhIGRlZmluZWQg
X0FMTE9DQV9IICYmICEgZGVmaW5lZCBFWElUX1NVQ0NFU1MKICMgICAgIGluY2x1ZGUgPHN0ZGxp
Yi5oPiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCi0jICAgICBpZm5kZWYgX1NU
RExJQl9ICi0jICAgICAgZGVmaW5lIF9TVERMSUJfSCAxCisgICAgICAvKiBVc2UgRVhJVF9TVUND
RVNTIGFzIGEgd2l0bmVzcyBmb3Igc3RkbGliLmguICAqLworIyAgICAgaWZuZGVmIEVYSVRfU1VD
Q0VTUworIyAgICAgIGRlZmluZSBFWElUX1NVQ0NFU1MgMAogIyAgICAgZW5kaWYKICMgICAgZW5k
aWYKICMgICBlbmRpZgpAQCAtMzA0LDggKzMyOSw4IEBAIFlZSUQgKGkpCiAjIGVuZGlmCiAKICMg
aWZkZWYgWVlTVEFDS19BTExPQwotICAgLyogUGFjaWZ5IEdDQydzIGBlbXB0eSBpZi1ib2R5JyB3
YXJuaW5nLiAgKi8KLSMgIGRlZmluZSBZWVNUQUNLX0ZSRUUoUHRyKSBkbyB7IC8qIGVtcHR5ICov
OyB9IHdoaWxlIChZWUlEICgwKSkKKyAgIC8qIFBhY2lmeSBHQ0MncyAnZW1wdHkgaWYtYm9keScg
d2FybmluZy4gICovCisjICBkZWZpbmUgWVlTVEFDS19GUkVFKFB0cikgZG8geyAvKiBlbXB0eSAq
LzsgfSB3aGlsZSAoMCkKICMgIGlmbmRlZiBZWVNUQUNLX0FMTE9DX01BWElNVU0KICAgICAvKiBU
aGUgT1MgbWlnaHQgZ3VhcmFudGVlIG9ubHkgb25lIGd1YXJkIHBhZ2UgYXQgdGhlIGJvdHRvbSBv
ZiB0aGUgc3RhY2ssCiAgICAgICAgYW5kIGEgcGFnZSBzaXplIGNhbiBiZSBhcyBzbWFsbCBhcyA0
MDk2IGJ5dGVzLiAgU28gd2UgY2Fubm90IHNhZmVseQpAQCAtMzE5LDI1ICszNDQsMjMgQEAgWVlJ
RCAoaSkKICMgIGlmbmRlZiBZWVNUQUNLX0FMTE9DX01BWElNVU0KICMgICBkZWZpbmUgWVlTVEFD
S19BTExPQ19NQVhJTVVNIFlZU0laRV9NQVhJTVVNCiAjICBlbmRpZgotIyAgaWYgKGRlZmluZWQg
X19jcGx1c3BsdXMgJiYgISBkZWZpbmVkIF9TVERMSUJfSCBcCisjICBpZiAoZGVmaW5lZCBfX2Nw
bHVzcGx1cyAmJiAhIGRlZmluZWQgRVhJVF9TVUNDRVNTIFwKICAgICAgICAmJiAhICgoZGVmaW5l
ZCBZWU1BTExPQyB8fCBkZWZpbmVkIG1hbGxvYykgXAotCSAgICAgJiYgKGRlZmluZWQgWVlGUkVF
IHx8IGRlZmluZWQgZnJlZSkpKQorICAgICAgICAgICAgICYmIChkZWZpbmVkIFlZRlJFRSB8fCBk
ZWZpbmVkIGZyZWUpKSkKICMgICBpbmNsdWRlIDxzdGRsaWIuaD4gLyogSU5GUklOR0VTIE9OIFVT
RVIgTkFNRSBTUEFDRSAqLwotIyAgIGlmbmRlZiBfU1RETElCX0gKLSMgICAgZGVmaW5lIF9TVERM
SUJfSCAxCisjICAgaWZuZGVmIEVYSVRfU1VDQ0VTUworIyAgICBkZWZpbmUgRVhJVF9TVUNDRVNT
IDAKICMgICBlbmRpZgogIyAgZW5kaWYKICMgIGlmbmRlZiBZWU1BTExPQwogIyAgIGRlZmluZSBZ
WU1BTExPQyBtYWxsb2MKLSMgICBpZiAhIGRlZmluZWQgbWFsbG9jICYmICEgZGVmaW5lZCBfU1RE
TElCX0ggJiYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKLSAg
ICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQorIyAgIGlmICEg
ZGVmaW5lZCBtYWxsb2MgJiYgISBkZWZpbmVkIEVYSVRfU1VDQ0VTUwogdm9pZCAqbWFsbG9jIChZ
WVNJWkVfVCk7IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KICMgICBlbmRpZgog
IyAgZW5kaWYKICMgIGlmbmRlZiBZWUZSRUUKICMgICBkZWZpbmUgWVlGUkVFIGZyZWUKLSMgICBp
ZiAhIGRlZmluZWQgZnJlZSAmJiAhIGRlZmluZWQgX1NURExJQl9IICYmIChkZWZpbmVkIF9fU1RE
Q19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCi0gICAgIHx8IGRlZmluZWQgX19jcGx1c3Bs
dXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKKyMgICBpZiAhIGRlZmluZWQgZnJlZSAmJiAhIGRlZmlu
ZWQgRVhJVF9TVUNDRVNTCiB2b2lkIGZyZWUgKHZvaWQgKik7IC8qIElORlJJTkdFUyBPTiBVU0VS
IE5BTUUgU1BBQ0UgKi8KICMgICBlbmRpZgogIyAgZW5kaWYKQEAgLTM0NywxNCArMzcwLDE0IEBA
IHZvaWQgZnJlZSAodm9pZCAqKTsgLyogSU5GUklOR0VTIE9OIFVTRVIKIAogI2lmICghIGRlZmlu
ZWQgeXlvdmVyZmxvdyBcCiAgICAgICYmICghIGRlZmluZWQgX19jcGx1c3BsdXMgXAotCSB8fCAo
ZGVmaW5lZCBZWVNUWVBFX0lTX1RSSVZJQUwgJiYgWVlTVFlQRV9JU19UUklWSUFMKSkpCisgICAg
ICAgICB8fCAoZGVmaW5lZCBZWVNUWVBFX0lTX1RSSVZJQUwgJiYgWVlTVFlQRV9JU19UUklWSUFM
KSkpCiAKIC8qIEEgdHlwZSB0aGF0IGlzIHByb3Blcmx5IGFsaWduZWQgZm9yIGFueSBzdGFjayBt
ZW1iZXIuICAqLwogdW5pb24geXlhbGxvYwogewotICB5eXR5cGVfaW50MTYgeXlzczsKLSAgWVlT
VFlQRSB5eXZzOwotICB9OworICB5eXR5cGVfaW50MTYgeXlzc19hbGxvYzsKKyAgWVlTVFlQRSB5
eXZzX2FsbG9jOworfTsKIAogLyogVGhlIHNpemUgb2YgdGhlIG1heGltdW0gZ2FwIGJldHdlZW4g
b25lIGFsaWduZWQgc3RhY2sgYW5kIHRoZSBuZXh0LiAgKi8KICMgZGVmaW5lIFlZU1RBQ0tfR0FQ
X01BWElNVU0gKHNpemVvZiAodW5pb24geXlhbGxvYykgLSAxKQpAQCAtMzY1LDQyICszODgsNDYg
QEAgdW5pb24geXlhbGxvYwogICAgICAoKE4pICogKHNpemVvZiAoeXl0eXBlX2ludDE2KSArIHNp
emVvZiAoWVlTVFlQRSkpIFwKICAgICAgICsgWVlTVEFDS19HQVBfTUFYSU1VTSkKIAotLyogQ29w
eSBDT1VOVCBvYmplY3RzIGZyb20gRlJPTSB0byBUTy4gIFRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0
aW9uIGRvCi0gICBub3Qgb3ZlcmxhcC4gICovCi0jIGlmbmRlZiBZWUNPUFkKLSMgIGlmIGRlZmlu
ZWQgX19HTlVDX18gJiYgMSA8IF9fR05VQ19fCi0jICAgZGVmaW5lIFlZQ09QWShUbywgRnJvbSwg
Q291bnQpIFwKLSAgICAgIF9fYnVpbHRpbl9tZW1jcHkgKFRvLCBGcm9tLCAoQ291bnQpICogc2l6
ZW9mICgqKEZyb20pKSkKLSMgIGVsc2UKLSMgICBkZWZpbmUgWVlDT1BZKFRvLCBGcm9tLCBDb3Vu
dCkJCVwKLSAgICAgIGRvCQkJCQlcCi0JewkJCQkJXAotCSAgWVlTSVpFX1QgeXlpOwkJCQlcCi0J
ICBmb3IgKHl5aSA9IDA7IHl5aSA8IChDb3VudCk7IHl5aSsrKQlcCi0JICAgIChUbylbeXlpXSA9
IChGcm9tKVt5eWldOwkJXAotCX0JCQkJCVwKLSAgICAgIHdoaWxlIChZWUlEICgwKSkKLSMgIGVu
ZGlmCi0jIGVuZGlmCisjIGRlZmluZSBZWUNPUFlfTkVFREVEIDEKIAogLyogUmVsb2NhdGUgU1RB
Q0sgZnJvbSBpdHMgb2xkIGxvY2F0aW9uIHRvIHRoZSBuZXcgb25lLiAgVGhlCiAgICBsb2NhbCB2
YXJpYWJsZXMgWVlTSVpFIGFuZCBZWVNUQUNLU0laRSBnaXZlIHRoZSBvbGQgYW5kIG5ldyBudW1i
ZXIgb2YKICAgIGVsZW1lbnRzIGluIHRoZSBzdGFjaywgYW5kIFlZUFRSIGdpdmVzIHRoZSBuZXcg
bG9jYXRpb24gb2YgdGhlCiAgICBzdGFjay4gIEFkdmFuY2UgWVlQVFIgdG8gYSBwcm9wZXJseSBh
bGlnbmVkIGxvY2F0aW9uIGZvciB0aGUgbmV4dAogICAgc3RhY2suICAqLwotIyBkZWZpbmUgWVlT
VEFDS19SRUxPQ0FURShTdGFjaykJCQkJCVwKLSAgICBkbwkJCQkJCQkJCVwKLSAgICAgIHsJCQkJ
CQkJCQlcCi0JWVlTSVpFX1QgeXluZXdieXRlczsJCQkJCQlcCi0JWVlDT1BZICgmeXlwdHItPlN0
YWNrLCBTdGFjaywgeXlzaXplKTsJCQkJXAotCVN0YWNrID0gJnl5cHRyLT5TdGFjazsJCQkJCQlc
Ci0JeXluZXdieXRlcyA9IHl5c3RhY2tzaXplICogc2l6ZW9mICgqU3RhY2spICsgWVlTVEFDS19H
QVBfTUFYSU1VTTsgXAotCXl5cHRyICs9IHl5bmV3Ynl0ZXMgLyBzaXplb2YgKCp5eXB0cik7CQkJ
CVwKLSAgICAgIH0JCQkJCQkJCQlcCi0gICAgd2hpbGUgKFlZSUQgKDApKQorIyBkZWZpbmUgWVlT
VEFDS19SRUxPQ0FURShTdGFja19hbGxvYywgU3RhY2spICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIGRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBZWVNJWkVf
VCB5eW5ld2J5dGVzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBZWUNPUFkgKCZ5eXB0ci0+U3RhY2tfYWxsb2MsIFN0YWNrLCB5eXNpemUpOyAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBTdGFjayA9ICZ5eXB0ci0+U3RhY2tfYWxsb2M7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB5eW5ld2J5dGVz
ID0geXlzdGFja3NpemUgKiBzaXplb2YgKCpTdGFjaykgKyBZWVNUQUNLX0dBUF9NQVhJTVVNOyBc
CisgICAgICAgIHl5cHRyICs9IHl5bmV3Ynl0ZXMgLyBzaXplb2YgKCp5eXB0cik7ICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgd2hpbGUgKDApCiAKICNl
bmRpZgogCisjaWYgZGVmaW5lZCBZWUNPUFlfTkVFREVEICYmIFlZQ09QWV9ORUVERUQKKy8qIENv
cHkgQ09VTlQgb2JqZWN0cyBmcm9tIFNSQyB0byBEU1QuICBUaGUgc291cmNlIGFuZCBkZXN0aW5h
dGlvbiBkbworICAgbm90IG92ZXJsYXAuICAqLworIyBpZm5kZWYgWVlDT1BZCisjICBpZiBkZWZp
bmVkIF9fR05VQ19fICYmIDEgPCBfX0dOVUNfXworIyAgIGRlZmluZSBZWUNPUFkoRHN0LCBTcmMs
IENvdW50KSBcCisgICAgICBfX2J1aWx0aW5fbWVtY3B5IChEc3QsIFNyYywgKENvdW50KSAqIHNp
emVvZiAoKihTcmMpKSkKKyMgIGVsc2UKKyMgICBkZWZpbmUgWVlDT1BZKERzdCwgU3JjLCBDb3Vu
dCkgICAgICAgICAgICAgIFwKKyAgICAgIGRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICBZWVNJWkVfVCB5eWk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgICBmb3IgKHl5aSA9IDA7IHl5aSA8IChDb3VudCk7IHl5aSsrKSAgIFwKKyAgICAg
ICAgICAgIChEc3QpW3l5aV0gPSAoU3JjKVt5eWldOyAgICAgICAgICAgIFwKKyAgICAgICAgfSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHdoaWxlICgwKQor
IyAgZW5kaWYKKyMgZW5kaWYKKyNlbmRpZiAvKiAhWVlDT1BZX05FRURFRCAqLworCiAvKiBZWUZJ
TkFMIC0tIFN0YXRlIG51bWJlciBvZiB0aGUgdGVybWluYXRpb24gc3RhdGUuICAqLwogI2RlZmlu
ZSBZWUZJTkFMICAxNAogLyogWVlMQVNUIC0tIExhc3QgaW5kZXggaW4gWVlUQUJMRS4gICovCkBA
IC00MTIsMTcgKzQzOSwxOSBAQCB1bmlvbiB5eWFsbG9jCiAjZGVmaW5lIFlZTk5UUyAgMwogLyog
WVlOUlVMRVMgLS0gTnVtYmVyIG9mIHJ1bGVzLiAgKi8KICNkZWZpbmUgWVlOUlVMRVMgIDI2Ci0v
KiBZWU5SVUxFUyAtLSBOdW1iZXIgb2Ygc3RhdGVzLiAgKi8KKy8qIFlZTlNUQVRFUyAtLSBOdW1i
ZXIgb2Ygc3RhdGVzLiAgKi8KICNkZWZpbmUgWVlOU1RBVEVTICA1MgogCi0vKiBZWVRSQU5TTEFU
RShZWUxFWCkgLS0gQmlzb24gc3ltYm9sIG51bWJlciBjb3JyZXNwb25kaW5nIHRvIFlZTEVYLiAg
Ki8KKy8qIFlZVFJBTlNMQVRFW1lZWF0gLS0gU3ltYm9sIG51bWJlciBjb3JyZXNwb25kaW5nIHRv
IFlZWCBhcyByZXR1cm5lZAorICAgYnkgeXlsZXgsIHdpdGggb3V0LW9mLWJvdW5kcyBjaGVja2lu
Zy4gICovCiAjZGVmaW5lIFlZVU5ERUZUT0sgIDIKICNkZWZpbmUgWVlNQVhVVE9LICAgMjY3CiAK
LSNkZWZpbmUgWVlUUkFOU0xBVEUoWVlYKQkJCQkJCVwKKyNkZWZpbmUgWVlUUkFOU0xBVEUoWVlY
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgKCh1
bnNpZ25lZCBpbnQpIChZWVgpIDw9IFlZTUFYVVRPSyA/IHl5dHJhbnNsYXRlW1lZWF0gOiBZWVVO
REVGVE9LKQogCi0vKiBZWVRSQU5TTEFURVtZWUxFWF0gLS0gQmlzb24gc3ltYm9sIG51bWJlciBj
b3JyZXNwb25kaW5nIHRvIFlZTEVYLiAgKi8KKy8qIFlZVFJBTlNMQVRFW1RPS0VOLU5VTV0gLS0g
U3ltYm9sIG51bWJlciBjb3JyZXNwb25kaW5nIHRvIFRPS0VOLU5VTQorICAgYXMgcmV0dXJuZWQg
YnkgeXlsZXgsIHdpdGhvdXQgb3V0LW9mLWJvdW5kcyBjaGVja2luZy4gICovCiBzdGF0aWMgY29u
c3QgeXl0eXBlX3VpbnQ4IHl5dHJhbnNsYXRlW10gPQogewogICAgICAgIDAsICAgICAyLCAgICAg
MiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCkBAIC00
NTUsNTUgKzQ4NCwzMSBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5dHJhbnNsYXRlW10g
CiB9OwogCiAjaWYgWVlERUJVRwotLyogWVlQUkhTW1lZTl0gLS0gSW5kZXggb2YgdGhlIGZpcnN0
IFJIUyBzeW1ib2wgb2YgcnVsZSBudW1iZXIgWVlOIGluCi0gICBZWVJIUy4gICovCi1zdGF0aWMg
Y29uc3QgeXl0eXBlX3VpbnQ4IHl5cHJoc1tdID0KLXsKLSAgICAgICAwLCAgICAgMCwgICAgIDMs
ICAgICA1LCAgICAgNywgICAgMTEsICAgIDE1LCAgICAxOSwgICAgMjMsICAgIDI3LAotICAgICAg
MzEsICAgIDM1LCAgICAzOSwgICAgNDMsICAgIDQ3LCAgICA1MSwgICAgNTUsICAgIDU5LCAgICA2
MywgICAgNjcsCi0gICAgICA3MSwgICAgNzUsICAgIDc5LCAgICA4MiwgICAgODUsICAgIDg4LCAg
ICA5MQotfTsKLQotLyogWVlSSFMgLS0gQSBgLTEnLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSBydWxl
cycgUkhTLiAgKi8KLXN0YXRpYyBjb25zdCB5eXR5cGVfaW50OCB5eXJoc1tdID0KLXsKLSAgICAg
IDI4LCAgICAgMCwgICAgLTEsICAgIDI5LCAgICAtMSwgICAgIDMsICAgIC0xLCAgICAyOSwgICAg
IDQsICAgIDI5LAotICAgICAgLTEsICAgIDI5LCAgICAgNSwgICAgMjksICAgIC0xLCAgICAyOSwg
ICAgIDYsICAgIDI5LCAgICAtMSwgICAgMjksCi0gICAgICAgNywgICAgMjksICAgIC0xLCAgICAy
OSwgICAgIDgsICAgIDI5LCAgICAtMSwgICAgMjksICAgICA5LCAgICAyOSwKLSAgICAgIC0xLCAg
ICAyOSwgICAgMTAsICAgIDI5LCAgICAtMSwgICAgMjksICAgIDEzLCAgICAyOSwgICAgLTEsICAg
IDI5LAotICAgICAgMTQsICAgIDI5LCAgICAtMSwgICAgMjksICAgIDEyLCAgICAyOSwgICAgLTEs
ICAgIDI5LCAgICAxMSwgICAgMjksCi0gICAgICAtMSwgICAgMjksICAgIDE1LCAgICAyOSwgICAg
LTEsICAgIDI5LCAgICAxNiwgICAgMjksICAgIC0xLCAgICAyOSwKLSAgICAgIDE4LCAgICAyOSwg
ICAgLTEsICAgIDI5LCAgICAxNywgICAgMjksICAgIC0xLCAgICAyOSwgICAgMjEsICAgIDI5LAot
ICAgICAgLTEsICAgIDI5LCAgICAyMCwgICAgMjksICAgIC0xLCAgICAyOSwgICAgMTksICAgIDI5
LCAgICAtMSwgICAgMjMsCi0gICAgICAyOSwgICAgLTEsICAgIDI0LCAgICAyOSwgICAgLTEsICAg
IDE4LCAgICAyOSwgICAgLTEsICAgIDE3LCAgICAyOSwKLSAgICAgIC0xLCAgICAyNSwgICAgMjks
ICAgIDI2LCAgICAtMQotfTsKLQotLyogWVlSTElORVtZWU5dIC0tIHNvdXJjZSBsaW5lIHdoZXJl
IHJ1bGUgbnVtYmVyIFlZTiB3YXMgZGVmaW5lZC4gICovCisgIC8qIFlZUkxJTkVbWVlOXSAtLSBT
b3VyY2UgbGluZSB3aGVyZSBydWxlIG51bWJlciBZWU4gd2FzIGRlZmluZWQuICAqLwogc3RhdGlj
IGNvbnN0IHl5dHlwZV91aW50OCB5eXJsaW5lW10gPQogewotICAgICAgIDAsICAgIDkxLCAgICA5
MSwgICAgOTgsICAgIDk5LCAgIDEwMiwgICAxMDUsICAgMTA4LCAgIDExMSwgICAxMTQsCi0gICAg
IDExNywgICAxMjAsICAgMTIzLCAgIDEyNiwgICAxMjksICAgMTMyLCAgIDEzNSwgICAxMzgsICAg
MTQxLCAgIDE0NCwKLSAgICAgMTU3LCAgIDE3MCwgICAxNzMsICAgMTc2LCAgIDE3OSwgICAxODIs
ICAgMTg1CisgICAgICAgMCwgICAgOTcsICAgIDk3LCAgIDEwNCwgICAxMDUsICAgMTA4LCAgIDEx
MSwgICAxMTQsICAgMTE3LCAgIDEyMCwKKyAgICAgMTIzLCAgIDEyNiwgICAxMjksICAgMTMyLCAg
IDEzNSwgICAxMzgsICAgMTQxLCAgIDE0NCwgICAxNDcsICAgMTUwLAorICAgICAxNjMsICAgMTc2
LCAgIDE3OSwgICAxODIsICAgMTg1LCAgIDE4OCwgICAxOTEKIH07CiAjZW5kaWYKIAotI2lmIFlZ
REVCVUcgfHwgWVlFUlJPUl9WRVJCT1NFIHx8IFlZVE9LRU5fVEFCTEUKKyNpZiBZWURFQlVHIHx8
IFlZRVJST1JfVkVSQk9TRSB8fCAwCiAvKiBZWVROQU1FW1NZTUJPTC1OVU1dIC0tIFN0cmluZyBu
YW1lIG9mIHRoZSBzeW1ib2wgU1lNQk9MLU5VTS4KICAgIEZpcnN0LCB0aGUgdGVybWluYWxzLCB0
aGVuLCBzdGFydGluZyBhdCBZWU5UT0tFTlMsIG5vbnRlcm1pbmFscy4gICovCiBzdGF0aWMgY29u
c3QgY2hhciAqY29uc3QgeXl0bmFtZVtdID0KIHsKICAgIiRlbmQiLCAiZXJyb3IiLCAiJHVuZGVm
aW5lZCIsICJUT0tfQ09OU1RfSU5UIiwgIlRPS19PUF9PUiIsCi0gICJUT0tfT1BfQU5EIiwgIid8
JyIsICInXiciLCAiJyYnIiwgIlRPS19PUF9ORSIsICJUT0tfT1BfRVEiLCAiJzwnIiwKLSAgIic+
JyIsICJUT0tfT1BfR0UiLCAiVE9LX09QX0xFIiwgIlRPS19PUF9SSUdIVCIsICJUT0tfT1BfTEVG
VCIsICInKyciLAorICAiVE9LX09QX0FORCIsICInfCciLCAiJ14nIiwgIicmJyIsICJUT0tfT1Bf
RVEiLCAiVE9LX09QX05FIiwgIic8JyIsCisgICInPiciLCAiVE9LX09QX0xFIiwgIlRPS19PUF9H
RSIsICJUT0tfT1BfTEVGVCIsICJUT0tfT1BfUklHSFQiLCAiJysnIiwKICAgIictJyIsICInKici
LCAiJy8nIiwgIiclJyIsICJUT0tfVU5BUlkiLCAiJyEnIiwgIid+JyIsICInKCciLCAiJyknIiwK
LSAgIiRhY2NlcHQiLCAiaW5wdXQiLCAiZXhwcmVzc2lvbiIsIDAKKyAgIiRhY2NlcHQiLCAiaW5w
dXQiLCAiZXhwcmVzc2lvbiIsIFlZX05VTExQVFIKIH07CiAjZW5kaWYKIAogIyBpZmRlZiBZWVBS
SU5UCi0vKiBZWVRPS05VTVtZWUxFWC1OVU1dIC0tIEludGVybmFsIHRva2VuIG51bWJlciBjb3Jy
ZXNwb25kaW5nIHRvCi0gICB0b2tlbiBZWUxFWC1OVU0uICAqLworLyogWVlUT0tOVU1bTlVNXSAt
LSAoRXh0ZXJuYWwpIHRva2VuIG51bWJlciBjb3JyZXNwb25kaW5nIHRvIHRoZQorICAgKGludGVy
bmFsKSBzeW1ib2wgbnVtYmVyIE5VTSAod2hpY2ggbXVzdCBiZSB0aGF0IG9mIGEgdG9rZW4pLiAg
Ki8KIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDE2IHl5dG9rbnVtW10gPQogewogICAgICAgIDAs
ICAgMjU2LCAgIDI1NywgICAyNTgsICAgMjU5LCAgIDI2MCwgICAxMjQsICAgIDk0LCAgICAzOCwg
ICAyNjEsCkBAIC01MTIsNDQgKzUxNywxOCBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5
eXRva251bVtdID0KIH07CiAjIGVuZGlmCiAKLS8qIFlZUjFbWVlOXSAtLSBTeW1ib2wgbnVtYmVy
IG9mIHN5bWJvbCB0aGF0IHJ1bGUgWVlOIGRlcml2ZXMuICAqLwotc3RhdGljIGNvbnN0IHl5dHlw
ZV91aW50OCB5eXIxW10gPQotewotICAgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDI5
LCAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwgICAgMjksCi0gICAgICAyOSwgICAgMjksICAg
IDI5LCAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwKLSAg
ICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5Ci19OworI2Rl
ZmluZSBZWVBBQ1RfTklORiAtMTEKIAotLyogWVlSMltZWU5dIC0tIE51bWJlciBvZiBzeW1ib2xz
IGNvbXBvc2luZyByaWdodCBoYW5kIHNpZGUgb2YgcnVsZSBZWU4uICAqLwotc3RhdGljIGNvbnN0
IHl5dHlwZV91aW50OCB5eXIyW10gPQotewotICAgICAgIDAsICAgICAyLCAgICAgMSwgICAgIDEs
ICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsCi0gICAgICAgMywgICAg
IDMsICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAg
MywKLSAgICAgICAzLCAgICAgMywgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAzCi19
OworI2RlZmluZSB5eXBhY3RfdmFsdWVfaXNfZGVmYXVsdChZeXN0YXRlKSBcCisgICghISgoWXlz
dGF0ZSkgPT0gKC0xMSkpKQogCi0vKiBZWURFRkFDVFtTVEFURS1OQU1FXSAtLSBEZWZhdWx0IHJ1
bGUgdG8gcmVkdWNlIHdpdGggaW4gc3RhdGUKLSAgIFNUQVRFLU5VTSB3aGVuIFlZVEFCTEUgZG9l
c24ndCBzcGVjaWZ5IHNvbWV0aGluZyBlbHNlIHRvIGRvLiAgWmVybwotICAgbWVhbnMgdGhlIGRl
ZmF1bHQgaXMgYW4gZXJyb3IuICAqLwotc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eWRlZmFj
dFtdID0KLXsKLSAgICAgICAwLCAgICAgMywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDIsICAgIDI1LAotICAgICAgMjQsICAgIDIyLCAgICAyMywgICAgIDAs
ICAgICAxLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI2LCAgICAgNCwgICAgIDUsICAgICA2LCAg
ICAgNywgICAgIDgsICAgICA5LAotICAgICAgMTAsICAgIDE0LCAgICAxMywgICAgMTEsICAgIDEy
LCAgICAxNSwgICAgMTYsICAgIDE4LCAgICAxNywgICAgMjEsCi0gICAgICAyMCwgICAgMTkKLX07
CisjZGVmaW5lIFlZVEFCTEVfTklORiAtMQogCi0vKiBZWURFRkdPVE9bTlRFUk0tTlVNXS4gICov
Ci1zdGF0aWMgY29uc3QgeXl0eXBlX2ludDggeXlkZWZnb3RvW10gPQotewotICAgICAgLTEsICAg
ICA3LCAgICAgOAotfTsKKyNkZWZpbmUgeXl0YWJsZV92YWx1ZV9pc19lcnJvcihZeXRhYmxlX3Zh
bHVlKSBcCisgIDAKIAotLyogWVlQQUNUW1NUQVRFLU5VTV0gLS0gSW5kZXggaW4gWVlUQUJMRSBv
ZiB0aGUgcG9ydGlvbiBkZXNjcmliaW5nCi0gICBTVEFURS1OVU0uICAqLwotI2RlZmluZSBZWVBB
Q1RfTklORiAtMTEKKyAgLyogWVlQQUNUW1NUQVRFLU5VTV0gLS0gSW5kZXggaW4gWVlUQUJMRSBv
ZiB0aGUgcG9ydGlvbiBkZXNjcmliaW5nCisgICAgIFNUQVRFLU5VTS4gICovCiBzdGF0aWMgY29u
c3QgeXl0eXBlX2ludDE2IHl5cGFjdFtdID0KIHsKICAgICAgIDQ2LCAgIC0xMSwgICAgNDYsICAg
IDQ2LCAgICA0NiwgICAgNDYsICAgIDQ2LCAgICAxMiwgICAgNjgsICAgLTExLApAQCAtNTYwLDE3
ICs1MzksMzQgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eXBhY3RbXSA9CiAgICAgIC0x
MSwgICAtMTEKIH07CiAKLS8qIFlZUEdPVE9bTlRFUk0tTlVNXS4gICovCisgIC8qIFlZREVGQUNU
W1NUQVRFLU5VTV0gLS0gRGVmYXVsdCByZWR1Y3Rpb24gbnVtYmVyIGluIHN0YXRlIFNUQVRFLU5V
TS4KKyAgICAgUGVyZm9ybWVkIHdoZW4gWVlUQUJMRSBkb2VzIG5vdCBzcGVjaWZ5IHNvbWV0aGlu
ZyBlbHNlIHRvIGRvLiAgWmVybworICAgICBtZWFucyB0aGUgZGVmYXVsdCBpcyBhbiBlcnJvci4g
ICovCitzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5ZGVmYWN0W10gPQoreworICAgICAgIDAs
ICAgICAzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMiwg
ICAgMjUsCisgICAgICAyNCwgICAgMjIsICAgIDIzLCAgICAgMCwgICAgIDEsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAw
LCAgICAgMCwgICAgMjYsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgMTAs
CisgICAgICAgOSwgICAgMTQsICAgIDEzLCAgICAxMiwgICAgMTEsICAgIDE2LCAgICAxNSwgICAg
MTgsICAgIDE3LCAgICAyMSwKKyAgICAgIDIwLCAgICAxOQorfTsKKworICAvKiBZWVBHT1RPW05U
RVJNLU5VTV0uICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQ4IHl5cGdvdG9bXSA9CiB7CiAg
ICAgIC0xMSwgICAtMTEsICAgIC0yCiB9OwogCi0vKiBZWVRBQkxFW1lZUEFDVFtTVEFURS1OVU1d
XS4gIFdoYXQgdG8gZG8gaW4gc3RhdGUgU1RBVEUtTlVNLiAgSWYKLSAgIHBvc2l0aXZlLCBzaGlm
dCB0aGF0IHRva2VuLiAgSWYgbmVnYXRpdmUsIHJlZHVjZSB0aGUgcnVsZSB3aGljaAotICAgbnVt
YmVyIGlzIHRoZSBvcHBvc2l0ZS4gIElmIHplcm8sIGRvIHdoYXQgWVlERUZBQ1Qgc2F5cy4KLSAg
IElmIFlZVEFCTEVfTklORiwgc3ludGF4IGVycm9yLiAgKi8KLSNkZWZpbmUgWVlUQUJMRV9OSU5G
IC0xCisgIC8qIFlZREVGR09UT1tOVEVSTS1OVU1dLiAgKi8KK3N0YXRpYyBjb25zdCB5eXR5cGVf
aW50OCB5eWRlZmdvdG9bXSA9Cit7CisgICAgICAtMSwgICAgIDcsICAgICA4Cit9OworCisgIC8q
IFlZVEFCTEVbWVlQQUNUW1NUQVRFLU5VTV1dIC0tIFdoYXQgdG8gZG8gaW4gc3RhdGUgU1RBVEUt
TlVNLiAgSWYKKyAgICAgcG9zaXRpdmUsIHNoaWZ0IHRoYXQgdG9rZW4uICBJZiBuZWdhdGl2ZSwg
cmVkdWNlIHRoZSBydWxlIHdob3NlCisgICAgIG51bWJlciBpcyB0aGUgb3Bwb3NpdGUuICBJZiBZ
WVRBQkxFX05JTkYsIHN5bnRheCBlcnJvci4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4
IHl5dGFibGVbXSA9CiB7CiAgICAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAg
IDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwKQEAgLTYxNSw4ICs2MTEsOCBAQCBzdGF0
aWMgY29uc3QgeXl0eXBlX2ludDggeXljaGVja1tdID0KICAgICAgIDE2LCAgICAxNywgICAgMTgs
ICAgIDE5LCAgICAyMCwgICAgMjEKIH07CiAKLS8qIFlZU1RPU1tTVEFURS1OVU1dIC0tIFRoZSAo
aW50ZXJuYWwgbnVtYmVyIG9mIHRoZSkgYWNjZXNzaW5nCi0gICBzeW1ib2wgb2Ygc3RhdGUgU1RB
VEUtTlVNLiAgKi8KKyAgLyogWVlTVE9TW1NUQVRFLU5VTV0gLS0gVGhlIChpbnRlcm5hbCBudW1i
ZXIgb2YgdGhlKSBhY2Nlc3NpbmcKKyAgICAgc3ltYm9sIG9mIHN0YXRlIFNUQVRFLU5VTS4gICov
CiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5c3Rvc1tdID0KIHsKICAgICAgICAwLCAgICAg
MywgICAgMTcsICAgIDE4LCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyOCwgICAgMjksICAgIDI5
LApAQCAtNjI3LDk1ICs2MjMsNTcgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXN0b3Nb
XSA9CiAgICAgICAyOSwgICAgMjkKIH07CiAKLSNkZWZpbmUgeXllcnJvawkJKHl5ZXJyc3RhdHVz
ID0gMCkKLSNkZWZpbmUgeXljbGVhcmluCSh5eWNoYXIgPSBZWUVNUFRZKQotI2RlZmluZSBZWUVN
UFRZCQkoLTIpCi0jZGVmaW5lIFlZRU9GCQkwCisgIC8qIFlZUjFbWVlOXSAtLSBTeW1ib2wgbnVt
YmVyIG9mIHN5bWJvbCB0aGF0IHJ1bGUgWVlOIGRlcml2ZXMuICAqLworc3RhdGljIGNvbnN0IHl5
dHlwZV91aW50OCB5eXIxW10gPQoreworICAgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAg
IDI5LCAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwgICAgMjksCisgICAgICAyOSwgICAgMjks
ICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwK
KyAgICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5Cit9Owog
Ci0jZGVmaW5lIFlZQUNDRVBUCWdvdG8geXlhY2NlcHRsYWIKLSNkZWZpbmUgWVlBQk9SVAkJZ290
byB5eWFib3J0bGFiCi0jZGVmaW5lIFlZRVJST1IJCWdvdG8geXllcnJvcmxhYgorICAvKiBZWVIy
W1lZTl0gLS0gTnVtYmVyIG9mIHN5bWJvbHMgb24gdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZiBydWxl
IFlZTi4gICovCitzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5cjJbXSA9Cit7CisgICAgICAg
MCwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsICAgICAz
LCAgICAgMywKKyAgICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsICAg
ICAzLCAgICAgMywgICAgIDMsICAgICAzLAorICAgICAgIDMsICAgICAzLCAgICAgMiwgICAgIDIs
ICAgICAyLCAgICAgMiwgICAgIDMKK307CiAKIAotLyogTGlrZSBZWUVSUk9SIGV4Y2VwdCBkbyBj
YWxsIHl5ZXJyb3IuICBUaGlzIHJlbWFpbnMgaGVyZSB0ZW1wb3JhcmlseQotICAgdG8gZWFzZSB0
aGUgdHJhbnNpdGlvbiB0byB0aGUgbmV3IG1lYW5pbmcgb2YgWVlFUlJPUiwgZm9yIEdDQy4KLSAg
IE9uY2UgR0NDIHZlcnNpb24gMiBoYXMgc3VwcGxhbnRlZCB2ZXJzaW9uIDEsIHRoaXMgY2FuIGdv
LiAgKi8KKyNkZWZpbmUgeXllcnJvayAgICAgICAgICh5eWVycnN0YXR1cyA9IDApCisjZGVmaW5l
IHl5Y2xlYXJpbiAgICAgICAoeXljaGFyID0gWVlFTVBUWSkKKyNkZWZpbmUgWVlFTVBUWSAgICAg
ICAgICgtMikKKyNkZWZpbmUgWVlFT0YgICAgICAgICAgIDAKKworI2RlZmluZSBZWUFDQ0VQVCAg
ICAgICAgZ290byB5eWFjY2VwdGxhYgorI2RlZmluZSBZWUFCT1JUICAgICAgICAgZ290byB5eWFi
b3J0bGFiCisjZGVmaW5lIFlZRVJST1IgICAgICAgICBnb3RvIHl5ZXJyb3JsYWIKIAotI2RlZmlu
ZSBZWUZBSUwJCWdvdG8geXllcnJsYWIKIAogI2RlZmluZSBZWVJFQ09WRVJJTkcoKSAgKCEheXll
cnJzdGF0dXMpCiAKLSNkZWZpbmUgWVlCQUNLVVAoVG9rZW4sIFZhbHVlKQkJCQkJXAotZG8JCQkJ
CQkJCVwKLSAgaWYgKHl5Y2hhciA9PSBZWUVNUFRZICYmIHl5bGVuID09IDEpCQkJCVwKLSAgICB7
CQkJCQkJCQlcCi0gICAgICB5eWNoYXIgPSAoVG9rZW4pOwkJCQkJCVwKLSAgICAgIHl5bHZhbCA9
IChWYWx1ZSk7CQkJCQkJXAotICAgICAgeXl0b2tlbiA9IFlZVFJBTlNMQVRFICh5eWNoYXIpOwkJ
CQlcCi0gICAgICBZWVBPUFNUQUNLICgxKTsJCQkJCQlcCi0gICAgICBnb3RvIHl5YmFja3VwOwkJ
CQkJCVwKLSAgICB9CQkJCQkJCQlcCi0gIGVsc2UJCQkJCQkJCVwKLSAgICB7CQkJCQkJCQlcCisj
ZGVmaW5lIFlZQkFDS1VQKFRva2VuLCBWYWx1ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorZG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgaWYgKHl5Y2hhciA9PSBZWUVNUFRZKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgeXljaGFyID0gKFRv
a2VuKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHl5
bHZhbCA9IChWYWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICBZWVBPUFNUQUNLICh5eWxlbik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgeXlzdGF0ZSA9ICp5eXNzcDsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGdvdG8geXliYWNrdXA7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBlbHNlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgICB5eWVycm9yIChjb250ZXh0LCBZWV8oInN5bnRheCBlcnJvcjogY2Fubm90IGJh
Y2sgdXAiKSk7IFwKLSAgICAgIFlZRVJST1I7CQkJCQkJCVwKLSAgICB9CQkJCQkJCQlcCi13aGls
ZSAoWVlJRCAoMCkpCi0KLQotI2RlZmluZSBZWVRFUlJPUgkxCi0jZGVmaW5lIFlZRVJSQ09ERQky
NTYKLQotCi0vKiBZWUxMT0NfREVGQVVMVCAtLSBTZXQgQ1VSUkVOVCB0byBzcGFuIGZyb20gUkhT
WzFdIHRvIFJIU1tOXS4KLSAgIElmIE4gaXMgMCwgdGhlbiBzZXQgQ1VSUkVOVCB0byB0aGUgZW1w
dHkgbG9jYXRpb24gd2hpY2ggZW5kcwotICAgdGhlIHByZXZpb3VzIHN5bWJvbDogUkhTWzBdIChh
bHdheXMgZGVmaW5lZCkuICAqLwotCi0jZGVmaW5lIFlZUkhTTE9DKFJocywgSykgKChSaHMpW0td
KQotI2lmbmRlZiBZWUxMT0NfREVGQVVMVAotIyBkZWZpbmUgWVlMTE9DX0RFRkFVTFQoQ3VycmVu
dCwgUmhzLCBOKQkJCQlcCi0gICAgZG8JCQkJCQkJCQlcCi0gICAgICBpZiAoWVlJRCAoTikpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLQl7CQkJ
CQkJCQlcCi0JICAoQ3VycmVudCkuZmlyc3RfbGluZSAgID0gWVlSSFNMT0MgKFJocywgMSkuZmly
c3RfbGluZTsJXAotCSAgKEN1cnJlbnQpLmZpcnN0X2NvbHVtbiA9IFlZUkhTTE9DIChSaHMsIDEp
LmZpcnN0X2NvbHVtbjsJXAotCSAgKEN1cnJlbnQpLmxhc3RfbGluZSAgICA9IFlZUkhTTE9DIChS
aHMsIE4pLmxhc3RfbGluZTsJCVwKLQkgIChDdXJyZW50KS5sYXN0X2NvbHVtbiAgPSBZWVJIU0xP
QyAoUmhzLCBOKS5sYXN0X2NvbHVtbjsJXAotCX0JCQkJCQkJCVwKLSAgICAgIGVsc2UJCQkJCQkJ
CVwKLQl7CQkJCQkJCQlcCi0JICAoQ3VycmVudCkuZmlyc3RfbGluZSAgID0gKEN1cnJlbnQpLmxh
c3RfbGluZSAgID0JCVwKLQkgICAgWVlSSFNMT0MgKFJocywgMCkubGFzdF9saW5lOwkJCQlcCi0J
ICAoQ3VycmVudCkuZmlyc3RfY29sdW1uID0gKEN1cnJlbnQpLmxhc3RfY29sdW1uID0JCVwKLQkg
ICAgWVlSSFNMT0MgKFJocywgMCkubGFzdF9jb2x1bW47CQkJCVwKLQl9CQkJCQkJCQlcCi0gICAg
d2hpbGUgKFlZSUQgKDApKQotI2VuZGlmCi0KLQotLyogWVlfTE9DQVRJT05fUFJJTlQgLS0gUHJp
bnQgdGhlIGxvY2F0aW9uIG9uIHRoZSBzdHJlYW0uCi0gICBUaGlzIG1hY3JvIHdhcyBub3QgbWFu
ZGF0ZWQgb3JpZ2luYWxseTogZGVmaW5lIG9ubHkgaWYgd2Uga25vdwotICAgd2Ugd29uJ3QgYnJl
YWsgdXNlciBjb2RlOiB3aGVuIHRoZXNlIGFyZSB0aGUgbG9jYXRpb25zIHdlIGtub3cuICAqLwot
Ci0jaWZuZGVmIFlZX0xPQ0FUSU9OX1BSSU5UCi0jIGlmIGRlZmluZWQgWVlMVFlQRV9JU19UUklW
SUFMICYmIFlZTFRZUEVfSVNfVFJJVklBTAotIyAgZGVmaW5lIFlZX0xPQ0FUSU9OX1BSSU5UKEZp
bGUsIExvYykJCQlcCi0gICAgIGZwcmludGYgKEZpbGUsICIlZC4lZC0lZC4lZCIsCQkJXAotCSAg
ICAgIChMb2MpLmZpcnN0X2xpbmUsIChMb2MpLmZpcnN0X2NvbHVtbiwJXAotCSAgICAgIChMb2Mp
Lmxhc3RfbGluZSwgIChMb2MpLmxhc3RfY29sdW1uKQotIyBlbHNlCi0jICBkZWZpbmUgWVlfTE9D
QVRJT05fUFJJTlQoRmlsZSwgTG9jKSAoKHZvaWQpIDApCi0jIGVuZGlmCi0jZW5kaWYKLQorICAg
ICAgWVlFUlJPUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCit3aGlsZSAoMCkKKworLyogRXJyb3IgdG9rZW4gbnVtYmVyICovCisj
ZGVmaW5lIFlZVEVSUk9SICAgICAgICAxCisjZGVmaW5lIFlZRVJSQ09ERSAgICAgICAyNTYKIAot
LyogWVlMRVggLS0gY2FsbGluZyBgeXlsZXgnIHdpdGggdGhlIHJpZ2h0IGFyZ3VtZW50cy4gICov
CiAKLSNpZmRlZiBZWUxFWF9QQVJBTQotIyBkZWZpbmUgWVlMRVggeXlsZXggKCZ5eWx2YWwsIFlZ
TEVYX1BBUkFNKQotI2Vsc2UKLSMgZGVmaW5lIFlZTEVYIHl5bGV4ICgmeXlsdmFsLCBjb250ZXh0
KQotI2VuZGlmCiAKIC8qIEVuYWJsZSBkZWJ1Z2dpbmcgaWYgcmVxdWVzdGVkLiAgKi8KICNpZiBZ
WURFQlVHCkBAIC03MjUsNTYgKzY4Myw0NyBAQCB3aGlsZSAoWVlJRCAoMCkpCiAjICBkZWZpbmUg
WVlGUFJJTlRGIGZwcmludGYKICMgZW5kaWYKIAotIyBkZWZpbmUgWVlEUFJJTlRGKEFyZ3MpCQkJ
XAotZG8gewkJCQkJCVwKLSAgaWYgKHl5ZGVidWcpCQkJCQlcCi0gICAgWVlGUFJJTlRGIEFyZ3M7
CQkJCVwKLX0gd2hpbGUgKFlZSUQgKDApKQotCi0jIGRlZmluZSBZWV9TWU1CT0xfUFJJTlQoVGl0
bGUsIFR5cGUsIFZhbHVlLCBMb2NhdGlvbikJCQkgIFwKLWRvIHsJCQkJCQkJCQkgIFwKLSAgaWYg
KHl5ZGVidWcpCQkJCQkJCQkgIFwKLSAgICB7CQkJCQkJCQkJICBcCi0gICAgICBZWUZQUklOVEYg
KHN0ZGVyciwgIiVzICIsIFRpdGxlKTsJCQkJCSAgXAotICAgICAgeXlfc3ltYm9sX3ByaW50IChz
dGRlcnIsCQkJCQkJICBcCi0JCSAgVHlwZSwgVmFsdWUsIGNvbnRleHQpOyBcCi0gICAgICBZWUZQ
UklOVEYgKHN0ZGVyciwgIlxuIik7CQkJCQkJICBcCi0gICAgfQkJCQkJCQkJCSAgXAotfSB3aGls
ZSAoWVlJRCAoMCkpCisjIGRlZmluZSBZWURQUklOVEYoQXJncykgICAgICAgICAgICAgICAgICAg
ICAgICBcCitkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgIGlmICh5eWRlYnVnKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
WVlGUFJJTlRGIEFyZ3M7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9IHdoaWxlICgw
KQogCisvKiBUaGlzIG1hY3JvIGlzIHByb3ZpZGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5
LiAqLworI2lmbmRlZiBZWV9MT0NBVElPTl9QUklOVAorIyBkZWZpbmUgWVlfTE9DQVRJT05fUFJJ
TlQoRmlsZSwgTG9jKSAoKHZvaWQpIDApCisjZW5kaWYKIAotLyotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS4KLXwgUHJpbnQgdGhpcyBzeW1ib2wgb24gWVlPVVRQVVQuICB8Ci1gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCi0vKkFSR1NVU0VEKi8KLSNpZiAoZGVm
aW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAotICAgICB8fCBkZWZpbmVk
IF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCisjIGRlZmluZSBZWV9TWU1CT0xfUFJJ
TlQoVGl0bGUsIFR5cGUsIFZhbHVlLCBMb2NhdGlvbikgICAgICAgICAgICAgICAgICAgIFwKK2Rv
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICBpZiAoeXlkZWJ1ZykgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiJXMgIiwgVGl0bGUpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgeXlfc3ltYm9sX3ByaW50IChzdGRlcnIsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAg
ICBUeXBlLCBWYWx1ZSwgY29udGV4dCk7IFwKKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiXG4i
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCit9IHdoaWxlICgwKQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS4KK3wgUHJpbnQgdGhpcyBzeW1ib2wncyB2YWx1ZSBvbiBZWU9VVFBVVC4g
IHwKK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKwogc3RhdGlj
IHZvaWQKIHl5X3N5bWJvbF92YWx1ZV9wcmludCAoRklMRSAqeXlvdXRwdXQsIGludCB5eXR5cGUs
IFlZU1RZUEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcCwgQ29udGV4dCAqY29udGV4dCkKLSNlbHNl
Ci1zdGF0aWMgdm9pZAoteXlfc3ltYm9sX3ZhbHVlX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLCB5
eXZhbHVlcCwgY29udGV4dCkKLSAgICBGSUxFICp5eW91dHB1dDsKLSAgICBpbnQgeXl0eXBlOwot
ICAgIFlZU1RZUEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcDsKLSAgICBDb250ZXh0ICpjb250ZXh0
OwotI2VuZGlmCiB7CisgIEZJTEUgKnl5byA9IHl5b3V0cHV0OworICBZWVVTRSAoeXlvKTsKKyAg
WVlVU0UgKGNvbnRleHQpOwogICBpZiAoIXl5dmFsdWVwKQogICAgIHJldHVybjsKLSAgWVlVU0Ug
KGNvbnRleHQpOwogIyBpZmRlZiBZWVBSSU5UCiAgIGlmICh5eXR5cGUgPCBZWU5UT0tFTlMpCiAg
ICAgWVlQUklOVCAoeXlvdXRwdXQsIHl5dG9rbnVtW3l5dHlwZV0sICp5eXZhbHVlcCk7Ci0jIGVs
c2UKLSAgWVlVU0UgKHl5b3V0cHV0KTsKICMgZW5kaWYKLSAgc3dpdGNoICh5eXR5cGUpCi0gICAg
ewotICAgICAgZGVmYXVsdDoKLQlicmVhazsKLSAgICB9CisgIFlZVVNFICh5eXR5cGUpOwogfQog
CiAKQEAgLTc4MiwyMyArNzMxLDExIEBAIHl5X3N5bWJvbF92YWx1ZV9wcmludCAoeXlvdXRwdXQs
IHl5dHlwZSwKIHwgUHJpbnQgdGhpcyBzeW1ib2wgb24gWVlPVVRQVVQuICB8CiBgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCi0jaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVm
aW5lZCBfX0M5OV9fRlVOQ19fIFwKLSAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZp
bmVkIF9NU0NfVkVSKQogc3RhdGljIHZvaWQKIHl5X3N5bWJvbF9wcmludCAoRklMRSAqeXlvdXRw
dXQsIGludCB5eXR5cGUsIFlZU1RZUEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcCwgQ29udGV4dCAq
Y29udGV4dCkKLSNlbHNlCi1zdGF0aWMgdm9pZAoteXlfc3ltYm9sX3ByaW50ICh5eW91dHB1dCwg
eXl0eXBlLCB5eXZhbHVlcCwgY29udGV4dCkKLSAgICBGSUxFICp5eW91dHB1dDsKLSAgICBpbnQg
eXl0eXBlOwotICAgIFlZU1RZUEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcDsKLSAgICBDb250ZXh0
ICpjb250ZXh0OwotI2VuZGlmCiB7Ci0gIGlmICh5eXR5cGUgPCBZWU5UT0tFTlMpCi0gICAgWVlG
UFJJTlRGICh5eW91dHB1dCwgInRva2VuICVzICgiLCB5eXRuYW1lW3l5dHlwZV0pOwotICBlbHNl
Ci0gICAgWVlGUFJJTlRGICh5eW91dHB1dCwgIm50ZXJtICVzICgiLCB5eXRuYW1lW3l5dHlwZV0p
OworICBZWUZQUklOVEYgKHl5b3V0cHV0LCAiJXMgJXMgKCIsCisgICAgICAgICAgICAgeXl0eXBl
IDwgWVlOVE9LRU5TID8gInRva2VuIiA6ICJudGVybSIsIHl5dG5hbWVbeXl0eXBlXSk7CiAKICAg
eXlfc3ltYm9sX3ZhbHVlX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbHVlcCwgY29udGV4
dCk7CiAgIFlZRlBSSU5URiAoeXlvdXRwdXQsICIpIik7CkBAIC04MDksNjcgKzc0Niw1NCBAQCB5
eV9zeW1ib2xfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsCiB8IFRPUCAoaW5jbHVkZWQp
LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKIGAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0qLwogCi0jaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVO
Q19fIFwKLSAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQog
c3RhdGljIHZvaWQKLXl5X3N0YWNrX3ByaW50ICh5eXR5cGVfaW50MTYgKmJvdHRvbSwgeXl0eXBl
X2ludDE2ICp0b3ApCi0jZWxzZQotc3RhdGljIHZvaWQKLXl5X3N0YWNrX3ByaW50IChib3R0b20s
IHRvcCkKLSAgICB5eXR5cGVfaW50MTYgKmJvdHRvbTsKLSAgICB5eXR5cGVfaW50MTYgKnRvcDsK
LSNlbmRpZgoreXlfc3RhY2tfcHJpbnQgKHl5dHlwZV9pbnQxNiAqeXlib3R0b20sIHl5dHlwZV9p
bnQxNiAqeXl0b3ApCiB7CiAgIFlZRlBSSU5URiAoc3RkZXJyLCAiU3RhY2sgbm93Iik7Ci0gIGZv
ciAoOyBib3R0b20gPD0gdG9wOyArK2JvdHRvbSkKLSAgICBZWUZQUklOVEYgKHN0ZGVyciwgIiAl
ZCIsICpib3R0b20pOworICBmb3IgKDsgeXlib3R0b20gPD0geXl0b3A7IHl5Ym90dG9tKyspCisg
ICAgeworICAgICAgaW50IHl5Ym90ID0gKnl5Ym90dG9tOworICAgICAgWVlGUFJJTlRGIChzdGRl
cnIsICIgJWQiLCB5eWJvdCk7CisgICAgfQogICBZWUZQUklOVEYgKHN0ZGVyciwgIlxuIik7CiB9
CiAKLSMgZGVmaW5lIFlZX1NUQUNLX1BSSU5UKEJvdHRvbSwgVG9wKQkJCQlcCi1kbyB7CQkJCQkJ
CQlcCi0gIGlmICh5eWRlYnVnKQkJCQkJCQlcCi0gICAgeXlfc3RhY2tfcHJpbnQgKChCb3R0b20p
LCAoVG9wKSk7CQkJCVwKLX0gd2hpbGUgKFlZSUQgKDApKQorIyBkZWZpbmUgWVlfU1RBQ0tfUFJJ
TlQoQm90dG9tLCBUb3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2RvIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
IGlmICh5eWRlYnVnKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIHl5X3N0YWNrX3ByaW50ICgoQm90dG9tKSwgKFRvcCkpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKK30gd2hpbGUgKDApCiAKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCiB8IFJlcG9ydCB0aGF0IHRoZSBZWVJVTEUg
aXMgZ29pbmcgdG8gYmUgcmVkdWNlZC4gIHwKIGAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCi0jaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5l
ZCBfX0M5OV9fRlVOQ19fIFwKLSAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVk
IF9NU0NfVkVSKQogc3RhdGljIHZvaWQKLXl5X3JlZHVjZV9wcmludCAoWVlTVFlQRSAqeXl2c3As
IGludCB5eXJ1bGUsIENvbnRleHQgKmNvbnRleHQpCi0jZWxzZQotc3RhdGljIHZvaWQKLXl5X3Jl
ZHVjZV9wcmludCAoeXl2c3AsIHl5cnVsZSwgY29udGV4dCkKLSAgICBZWVNUWVBFICp5eXZzcDsK
LSAgICBpbnQgeXlydWxlOwotICAgIENvbnRleHQgKmNvbnRleHQ7Ci0jZW5kaWYKK3l5X3JlZHVj
ZV9wcmludCAoeXl0eXBlX2ludDE2ICp5eXNzcCwgWVlTVFlQRSAqeXl2c3AsIGludCB5eXJ1bGUs
IENvbnRleHQgKmNvbnRleHQpCiB7CisgIHVuc2lnbmVkIGxvbmcgaW50IHl5bG5vID0geXlybGlu
ZVt5eXJ1bGVdOwogICBpbnQgeXlucmhzID0geXlyMlt5eXJ1bGVdOwogICBpbnQgeXlpOwotICB1
bnNpZ25lZCBsb25nIGludCB5eWxubyA9IHl5cmxpbmVbeXlydWxlXTsKICAgWVlGUFJJTlRGIChz
dGRlcnIsICJSZWR1Y2luZyBzdGFjayBieSBydWxlICVkIChsaW5lICVsdSk6XG4iLAotCSAgICAg
eXlydWxlIC0gMSwgeXlsbm8pOworICAgICAgICAgICAgIHl5cnVsZSAtIDEsIHl5bG5vKTsKICAg
LyogVGhlIHN5bWJvbHMgYmVpbmcgcmVkdWNlZC4gICovCiAgIGZvciAoeXlpID0gMDsgeXlpIDwg
eXlucmhzOyB5eWkrKykKICAgICB7Ci0gICAgICBmcHJpbnRmIChzdGRlcnIsICIgICAkJWQgPSAi
LCB5eWkgKyAxKTsKLSAgICAgIHl5X3N5bWJvbF9wcmludCAoc3RkZXJyLCB5eXJoc1t5eXByaHNb
eXlydWxlXSArIHl5aV0sCi0JCSAgICAgICAmKHl5dnNwWyh5eWkgKyAxKSAtICh5eW5yaHMpXSkK
LQkJICAgICAgIAkJICAgICAgICwgY29udGV4dCk7Ci0gICAgICBmcHJpbnRmIChzdGRlcnIsICJc
biIpOworICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICIgICAkJWQgPSAiLCB5eWkgKyAxKTsKKyAg
ICAgIHl5X3N5bWJvbF9wcmludCAoc3RkZXJyLAorICAgICAgICAgICAgICAgICAgICAgICB5eXN0
b3NbeXlzc3BbeXlpICsgMSAtIHl5bnJoc11dLAorICAgICAgICAgICAgICAgICAgICAgICAmKHl5
dnNwWyh5eWkgKyAxKSAtICh5eW5yaHMpXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAsIGNvbnRleHQpOworICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICJc
biIpOwogICAgIH0KIH0KIAotIyBkZWZpbmUgWVlfUkVEVUNFX1BSSU5UKFJ1bGUpCQlcCi1kbyB7
CQkJCQlcCi0gIGlmICh5eWRlYnVnKQkJCQlcCi0gICAgeXlfcmVkdWNlX3ByaW50ICh5eXZzcCwg
UnVsZSwgY29udGV4dCk7IFwKLX0gd2hpbGUgKFlZSUQgKDApKQorIyBkZWZpbmUgWVlfUkVEVUNF
X1BSSU5UKFJ1bGUpICAgICAgICAgIFwKK2RvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgIGlmICh5eWRlYnVnKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IHl5X3JlZHVjZV9wcmludCAoeXlzc3AsIHl5dnNwLCBSdWxlLCBjb250ZXh0KTsgXAorfSB3aGls
ZSAoMCkKIAogLyogTm9uemVybyBtZWFucyBwcmludCBwYXJzZSB0cmFjZS4gIEl0IGlzIGxlZnQg
dW5pbml0aWFsaXplZCBzbyB0aGF0CiAgICBtdWx0aXBsZSBwYXJzZXJzIGNhbiBjb2V4aXN0LiAg
Ki8KQEAgLTg4Myw3ICs4MDcsNyBAQCBpbnQgeXlkZWJ1ZzsKIAogCiAvKiBZWUlOSVRERVBUSCAt
LSBpbml0aWFsIHNpemUgb2YgdGhlIHBhcnNlcidzIHN0YWNrcy4gICovCi0jaWZuZGVmCVlZSU5J
VERFUFRICisjaWZuZGVmIFlZSU5JVERFUFRICiAjIGRlZmluZSBZWUlOSVRERVBUSCAyMDAKICNl
bmRpZgogCkBAIC04OTgsNyArODIyLDYgQEAgaW50IHl5ZGVidWc7CiAjIGRlZmluZSBZWU1BWERF
UFRIIDEwMDAwCiAjZW5kaWYKIAotDAogCiAjaWYgWVlFUlJPUl9WRVJCT1NFCiAKQEAgLTkwNywx
NSArODMwLDggQEAgaW50IHl5ZGVidWc7CiAjICAgZGVmaW5lIHl5c3RybGVuIHN0cmxlbgogIyAg
ZWxzZQogLyogUmV0dXJuIHRoZSBsZW5ndGggb2YgWVlTVFIuICAqLwotI2lmIChkZWZpbmVkIF9f
U1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCi0gICAgIHx8IGRlZmluZWQgX19jcGx1
c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyBZWVNJWkVfVAogeXlzdHJsZW4gKGNv
bnN0IGNoYXIgKnl5c3RyKQotI2Vsc2UKLXN0YXRpYyBZWVNJWkVfVAoteXlzdHJsZW4gKHl5c3Ry
KQotICAgIGNvbnN0IGNoYXIgKnl5c3RyOwotI2VuZGlmCiB7CiAgIFlZU0laRV9UIHl5bGVuOwog
ICBmb3IgKHl5bGVuID0gMDsgeXlzdHJbeXlsZW5dOyB5eWxlbisrKQpAQCAtOTMxLDE2ICs4NDcs
OCBAQCB5eXN0cmxlbiAoeXlzdHIpCiAjICBlbHNlCiAvKiBDb3B5IFlZU1JDIHRvIFlZREVTVCwg
cmV0dXJuaW5nIHRoZSBhZGRyZXNzIG9mIHRoZSB0ZXJtaW5hdGluZyAnXDAnIGluCiAgICBZWURF
U1QuICAqLwotI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBc
Ci0gICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRp
YyBjaGFyICoKIHl5c3RwY3B5IChjaGFyICp5eWRlc3QsIGNvbnN0IGNoYXIgKnl5c3JjKQotI2Vs
c2UKLXN0YXRpYyBjaGFyICoKLXl5c3RwY3B5ICh5eWRlc3QsIHl5c3JjKQotICAgIGNoYXIgKnl5
ZGVzdDsKLSAgICBjb25zdCBjaGFyICp5eXNyYzsKLSNlbmRpZgogewogICBjaGFyICp5eWQgPSB5
eWRlc3Q7CiAgIGNvbnN0IGNoYXIgKnl5cyA9IHl5c3JjOwpAQCAtOTcwLDI3ICs4NzgsMjcgQEAg
eXl0bmFtZXJyIChjaGFyICp5eXJlcywgY29uc3QgY2hhciAqeXlzdAogICAgICAgY2hhciBjb25z
dCAqeXlwID0geXlzdHI7CiAKICAgICAgIGZvciAoOzspCi0Jc3dpdGNoICgqKyt5eXApCi0JICB7
Ci0JICBjYXNlICdcJyc6Ci0JICBjYXNlICcsJzoKLQkgICAgZ290byBkb19ub3Rfc3RyaXBfcXVv
dGVzOwotCi0JICBjYXNlICdcXCc6Ci0JICAgIGlmICgqKyt5eXAgIT0gJ1xcJykKLQkgICAgICBn
b3RvIGRvX25vdF9zdHJpcF9xdW90ZXM7Ci0JICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCi0JICBk
ZWZhdWx0OgotCSAgICBpZiAoeXlyZXMpCi0JICAgICAgeXlyZXNbeXluXSA9ICp5eXA7Ci0JICAg
IHl5bisrOwotCSAgICBicmVhazsKLQotCSAgY2FzZSAnIic6Ci0JICAgIGlmICh5eXJlcykKLQkg
ICAgICB5eXJlc1t5eW5dID0gJ1wwJzsKLQkgICAgcmV0dXJuIHl5bjsKLQkgIH0KKyAgICAgICAg
c3dpdGNoICgqKyt5eXApCisgICAgICAgICAgeworICAgICAgICAgIGNhc2UgJ1wnJzoKKyAgICAg
ICAgICBjYXNlICcsJzoKKyAgICAgICAgICAgIGdvdG8gZG9fbm90X3N0cmlwX3F1b3RlczsKKwor
ICAgICAgICAgIGNhc2UgJ1xcJzoKKyAgICAgICAgICAgIGlmICgqKyt5eXAgIT0gJ1xcJykKKyAg
ICAgICAgICAgICAgZ290byBkb19ub3Rfc3RyaXBfcXVvdGVzOworICAgICAgICAgICAgLyogRmFs
bCB0aHJvdWdoLiAgKi8KKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKHl5cmVz
KQorICAgICAgICAgICAgICB5eXJlc1t5eW5dID0gKnl5cDsKKyAgICAgICAgICAgIHl5bisrOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBjYXNlICciJzoKKyAgICAgICAgICAgIGlm
ICh5eXJlcykKKyAgICAgICAgICAgICAgeXlyZXNbeXluXSA9ICdcMCc7CisgICAgICAgICAgICBy
ZXR1cm4geXluOworICAgICAgICAgIH0KICAgICBkb19ub3Rfc3RyaXBfcXVvdGVzOiA7CiAgICAg
fQogCkBAIC0xMDAxLDE2NyArOTA5LDE1OSBAQCB5eXRuYW1lcnIgKGNoYXIgKnl5cmVzLCBjb25z
dCBjaGFyICp5eXN0CiB9CiAjIGVuZGlmCiAKLS8qIENvcHkgaW50byBZWVJFU1VMVCBhbiBlcnJv
ciBtZXNzYWdlIGFib3V0IHRoZSB1bmV4cGVjdGVkIHRva2VuCi0gICBZWUNIQVIgd2hpbGUgaW4g
c3RhdGUgWVlTVEFURS4gIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGNvcGllZCwKLSAgIGlu
Y2x1ZGluZyB0aGUgdGVybWluYXRpbmcgbnVsbCBieXRlLiAgSWYgWVlSRVNVTFQgaXMgbnVsbCwg
ZG8gbm90Ci0gICBjb3B5IGFueXRoaW5nOyBqdXN0IHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVz
IHRoYXQgd291bGQgYmUKLSAgIGNvcGllZC4gIEFzIGEgc3BlY2lhbCBjYXNlLCByZXR1cm4gMCBp
ZiBhbiBvcmRpbmFyeSAic3ludGF4IGVycm9yIgotICAgbWVzc2FnZSB3aWxsIGRvLiAgUmV0dXJu
IFlZU0laRV9NQVhJTVVNIGlmIG92ZXJmbG93IG9jY3VycyBkdXJpbmcKLSAgIHNpemUgY2FsY3Vs
YXRpb24uICAqLwotc3RhdGljIFlZU0laRV9UCi15eXN5bnRheF9lcnJvciAoY2hhciAqeXlyZXN1
bHQsIGludCB5eXN0YXRlLCBpbnQgeXljaGFyKQorLyogQ29weSBpbnRvICpZWU1TRywgd2hpY2gg
aXMgb2Ygc2l6ZSAqWVlNU0dfQUxMT0MsIGFuIGVycm9yIG1lc3NhZ2UKKyAgIGFib3V0IHRoZSB1
bmV4cGVjdGVkIHRva2VuIFlZVE9LRU4gZm9yIHRoZSBzdGF0ZSBzdGFjayB3aG9zZSB0b3AgaXMK
KyAgIFlZU1NQLgorCisgICBSZXR1cm4gMCBpZiAqWVlNU0cgd2FzIHN1Y2Nlc3NmdWxseSB3cml0
dGVuLiAgUmV0dXJuIDEgaWYgKllZTVNHIGlzCisgICBub3QgbGFyZ2UgZW5vdWdoIHRvIGhvbGQg
dGhlIG1lc3NhZ2UuICBJbiB0aGF0IGNhc2UsIGFsc28gc2V0CisgICAqWVlNU0dfQUxMT0MgdG8g
dGhlIHJlcXVpcmVkIG51bWJlciBvZiBieXRlcy4gIFJldHVybiAyIGlmIHRoZQorICAgcmVxdWly
ZWQgbnVtYmVyIG9mIGJ5dGVzIGlzIHRvbyBsYXJnZSB0byBzdG9yZS4gICovCitzdGF0aWMgaW50
Cit5eXN5bnRheF9lcnJvciAoWVlTSVpFX1QgKnl5bXNnX2FsbG9jLCBjaGFyICoqeXltc2csCisg
ICAgICAgICAgICAgICAgeXl0eXBlX2ludDE2ICp5eXNzcCwgaW50IHl5dG9rZW4pCiB7Ci0gIGlu
dCB5eW4gPSB5eXBhY3RbeXlzdGF0ZV07CisgIFlZU0laRV9UIHl5c2l6ZTAgPSB5eXRuYW1lcnIg
KFlZX05VTExQVFIsIHl5dG5hbWVbeXl0b2tlbl0pOworICBZWVNJWkVfVCB5eXNpemUgPSB5eXNp
emUwOworICBlbnVtIHsgWVlFUlJPUl9WRVJCT1NFX0FSR1NfTUFYSU1VTSA9IDUgfTsKKyAgLyog
SW50ZXJuYXRpb25hbGl6ZWQgZm9ybWF0IHN0cmluZy4gKi8KKyAgY29uc3QgY2hhciAqeXlmb3Jt
YXQgPSBZWV9OVUxMUFRSOworICAvKiBBcmd1bWVudHMgb2YgeXlmb3JtYXQuICovCisgIGNoYXIg
Y29uc3QgKnl5YXJnW1lZRVJST1JfVkVSQk9TRV9BUkdTX01BWElNVU1dOworICAvKiBOdW1iZXIg
b2YgcmVwb3J0ZWQgdG9rZW5zIChvbmUgZm9yIHRoZSAidW5leHBlY3RlZCIsIG9uZSBwZXIKKyAg
ICAgImV4cGVjdGVkIikuICovCisgIGludCB5eWNvdW50ID0gMDsKKworICAvKiBUaGVyZSBhcmUg
bWFueSBwb3NzaWJpbGl0aWVzIGhlcmUgdG8gY29uc2lkZXI6CisgICAgIC0gSWYgdGhpcyBzdGF0
ZSBpcyBhIGNvbnNpc3RlbnQgc3RhdGUgd2l0aCBhIGRlZmF1bHQgYWN0aW9uLCB0aGVuCisgICAg
ICAgdGhlIG9ubHkgd2F5IHRoaXMgZnVuY3Rpb24gd2FzIGludm9rZWQgaXMgaWYgdGhlIGRlZmF1
bHQgYWN0aW9uCisgICAgICAgaXMgYW4gZXJyb3IgYWN0aW9uLiAgSW4gdGhhdCBjYXNlLCBkb24n
dCBjaGVjayBmb3IgZXhwZWN0ZWQKKyAgICAgICB0b2tlbnMgYmVjYXVzZSB0aGVyZSBhcmUgbm9u
ZS4KKyAgICAgLSBUaGUgb25seSB3YXkgdGhlcmUgY2FuIGJlIG5vIGxvb2thaGVhZCBwcmVzZW50
IChpbiB5eWNoYXIpIGlzIGlmCisgICAgICAgdGhpcyBzdGF0ZSBpcyBhIGNvbnNpc3RlbnQgc3Rh
dGUgd2l0aCBhIGRlZmF1bHQgYWN0aW9uLiAgVGh1cywKKyAgICAgICBkZXRlY3RpbmcgdGhlIGFi
c2VuY2Ugb2YgYSBsb29rYWhlYWQgaXMgc3VmZmljaWVudCB0byBkZXRlcm1pbmUKKyAgICAgICB0
aGF0IHRoZXJlIGlzIG5vIHVuZXhwZWN0ZWQgb3IgZXhwZWN0ZWQgdG9rZW4gdG8gcmVwb3J0LiAg
SW4gdGhhdAorICAgICAgIGNhc2UsIGp1c3QgcmVwb3J0IGEgc2ltcGxlICJzeW50YXggZXJyb3Ii
LgorICAgICAtIERvbid0IGFzc3VtZSB0aGVyZSBpc24ndCBhIGxvb2thaGVhZCBqdXN0IGJlY2F1
c2UgdGhpcyBzdGF0ZSBpcyBhCisgICAgICAgY29uc2lzdGVudCBzdGF0ZSB3aXRoIGEgZGVmYXVs
dCBhY3Rpb24uICBUaGVyZSBtaWdodCBoYXZlIGJlZW4gYQorICAgICAgIHByZXZpb3VzIGluY29u
c2lzdGVudCBzdGF0ZSwgY29uc2lzdGVudCBzdGF0ZSB3aXRoIGEgbm9uLWRlZmF1bHQKKyAgICAg
ICBhY3Rpb24sIG9yIHVzZXIgc2VtYW50aWMgYWN0aW9uIHRoYXQgbWFuaXB1bGF0ZWQgeXljaGFy
LgorICAgICAtIE9mIGNvdXJzZSwgdGhlIGV4cGVjdGVkIHRva2VuIGxpc3QgZGVwZW5kcyBvbiBz
dGF0ZXMgdG8gaGF2ZQorICAgICAgIGNvcnJlY3QgbG9va2FoZWFkIGluZm9ybWF0aW9uLCBhbmQg
aXQgZGVwZW5kcyBvbiB0aGUgcGFyc2VyIG5vdAorICAgICAgIHRvIHBlcmZvcm0gZXh0cmEgcmVk
dWN0aW9ucyBhZnRlciBmZXRjaGluZyBhIGxvb2thaGVhZCBmcm9tIHRoZQorICAgICAgIHNjYW5u
ZXIgYW5kIGJlZm9yZSBkZXRlY3RpbmcgYSBzeW50YXggZXJyb3IuICBUaHVzLCBzdGF0ZSBtZXJn
aW5nCisgICAgICAgKGZyb20gTEFMUiBvciBJRUxSKSBhbmQgZGVmYXVsdCByZWR1Y3Rpb25zIGNv
cnJ1cHQgdGhlIGV4cGVjdGVkCisgICAgICAgdG9rZW4gbGlzdC4gIEhvd2V2ZXIsIHRoZSBsaXN0
IGlzIGNvcnJlY3QgZm9yIGNhbm9uaWNhbCBMUiB3aXRoCisgICAgICAgb25lIGV4Y2VwdGlvbjog
aXQgd2lsbCBzdGlsbCBjb250YWluIGFueSB0b2tlbiB0aGF0IHdpbGwgbm90IGJlCisgICAgICAg
YWNjZXB0ZWQgZHVlIHRvIGFuIGVycm9yIGFjdGlvbiBpbiBhIGxhdGVyIHN0YXRlLgorICAqLwor
ICBpZiAoeXl0b2tlbiAhPSBZWUVNUFRZKQorICAgIHsKKyAgICAgIGludCB5eW4gPSB5eXBhY3Rb
Knl5c3NwXTsKKyAgICAgIHl5YXJnW3l5Y291bnQrK10gPSB5eXRuYW1lW3l5dG9rZW5dOworICAg
ICAgaWYgKCF5eXBhY3RfdmFsdWVfaXNfZGVmYXVsdCAoeXluKSkKKyAgICAgICAgeworICAgICAg
ICAgIC8qIFN0YXJ0IFlZWCBhdCAtWVlOIGlmIG5lZ2F0aXZlIHRvIGF2b2lkIG5lZ2F0aXZlIGlu
ZGV4ZXMgaW4KKyAgICAgICAgICAgICBZWUNIRUNLLiAgSW4gb3RoZXIgd29yZHMsIHNraXAgdGhl
IGZpcnN0IC1ZWU4gYWN0aW9ucyBmb3IKKyAgICAgICAgICAgICB0aGlzIHN0YXRlIGJlY2F1c2Ug
dGhleSBhcmUgZGVmYXVsdCBhY3Rpb25zLiAgKi8KKyAgICAgICAgICBpbnQgeXl4YmVnaW4gPSB5
eW4gPCAwID8gLXl5biA6IDA7CisgICAgICAgICAgLyogU3RheSB3aXRoaW4gYm91bmRzIG9mIGJv
dGggeXljaGVjayBhbmQgeXl0bmFtZS4gICovCisgICAgICAgICAgaW50IHl5Y2hlY2tsaW0gPSBZ
WUxBU1QgLSB5eW4gKyAxOworICAgICAgICAgIGludCB5eXhlbmQgPSB5eWNoZWNrbGltIDwgWVlO
VE9LRU5TID8geXljaGVja2xpbSA6IFlZTlRPS0VOUzsKKyAgICAgICAgICBpbnQgeXl4OworCisg
ICAgICAgICAgZm9yICh5eXggPSB5eXhiZWdpbjsgeXl4IDwgeXl4ZW5kOyArK3l5eCkKKyAgICAg
ICAgICAgIGlmICh5eWNoZWNrW3l5eCArIHl5bl0gPT0geXl4ICYmIHl5eCAhPSBZWVRFUlJPUgor
ICAgICAgICAgICAgICAgICYmICF5eXRhYmxlX3ZhbHVlX2lzX2Vycm9yICh5eXRhYmxlW3l5eCAr
IHl5bl0pKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKHl5Y291bnQgPT0g
WVlFUlJPUl9WRVJCT1NFX0FSR1NfTUFYSU1VTSkKKyAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgeXljb3VudCA9IDE7CisgICAgICAgICAgICAgICAgICAgIHl5c2l6ZSA9
IHl5c2l6ZTA7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIHl5YXJnW3l5Y291bnQrK10gPSB5eXRuYW1lW3l5eF07CisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgWVlTSVpFX1QgeXlzaXplMSA9IHl5c2l6
ZSArIHl5dG5hbWVyciAoWVlfTlVMTFBUUiwgeXl0bmFtZVt5eXhdKTsKKyAgICAgICAgICAgICAg
ICAgIGlmICghICh5eXNpemUgPD0geXlzaXplMQorICAgICAgICAgICAgICAgICAgICAgICAgICYm
IHl5c2l6ZTEgPD0gWVlTVEFDS19BTExPQ19NQVhJTVVNKSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDI7CisgICAgICAgICAgICAgICAgICB5eXNpemUgPSB5eXNpemUxOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQogCi0gIGlmICghIChZ
WVBBQ1RfTklORiA8IHl5biAmJiB5eW4gPD0gWVlMQVNUKSkKLSAgICByZXR1cm4gMDsKLSAgZWxz
ZQorICBzd2l0Y2ggKHl5Y291bnQpCiAgICAgewotICAgICAgaW50IHl5dHlwZSA9IFlZVFJBTlNM
QVRFICh5eWNoYXIpOwotICAgICAgWVlTSVpFX1QgeXlzaXplMCA9IHl5dG5hbWVyciAoMCwgeXl0
bmFtZVt5eXR5cGVdKTsKLSAgICAgIFlZU0laRV9UIHl5c2l6ZSA9IHl5c2l6ZTA7Ci0gICAgICBZ
WVNJWkVfVCB5eXNpemUxOwotICAgICAgaW50IHl5c2l6ZV9vdmVyZmxvdyA9IDA7Ci0gICAgICBl
bnVtIHsgWVlFUlJPUl9WRVJCT1NFX0FSR1NfTUFYSU1VTSA9IDUgfTsKLSAgICAgIGNoYXIgY29u
c3QgKnl5YXJnW1lZRVJST1JfVkVSQk9TRV9BUkdTX01BWElNVU1dOwotICAgICAgaW50IHl5eDsK
LQotIyBpZiAwCi0gICAgICAvKiBUaGlzIGlzIHNvIHhnZXR0ZXh0IHNlZXMgdGhlIHRyYW5zbGF0
YWJsZSBmb3JtYXRzIHRoYXQgYXJlCi0JIGNvbnN0cnVjdGVkIG9uIHRoZSBmbHkuICAqLwotICAg
ICAgWVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMiKTsKLSAgICAgIFlZXygic3ludGF4
IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMiKTsKLSAgICAgIFlZXygic3ludGF4
IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMgb3IgJXMiKTsKLSAgICAgIFlZXygi
c3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMgb3IgJXMgb3IgJXMiKTsK
LSAgICAgIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMgb3Ig
JXMgb3IgJXMgb3IgJXMiKTsKLSMgZW5kaWYKLSAgICAgIGNoYXIgKnl5Zm10OwotICAgICAgY2hh
ciBjb25zdCAqeXlmOwotICAgICAgc3RhdGljIGNoYXIgY29uc3QgeXl1bmV4cGVjdGVkW10gPSAi
c3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzIjsKLSAgICAgIHN0YXRpYyBjaGFyIGNvbnN0IHl5
ZXhwZWN0aW5nW10gPSAiLCBleHBlY3RpbmcgJXMiOwotICAgICAgc3RhdGljIGNoYXIgY29uc3Qg
eXlvcltdID0gIiBvciAlcyI7Ci0gICAgICBjaGFyIHl5Zm9ybWF0W3NpemVvZiB5eXVuZXhwZWN0
ZWQKLQkJICAgICsgc2l6ZW9mIHl5ZXhwZWN0aW5nIC0gMQotCQkgICAgKyAoKFlZRVJST1JfVkVS
Qk9TRV9BUkdTX01BWElNVU0gLSAyKQotCQkgICAgICAgKiAoc2l6ZW9mIHl5b3IgLSAxKSldOwot
ICAgICAgY2hhciBjb25zdCAqeXlwcmVmaXggPSB5eWV4cGVjdGluZzsKLQotICAgICAgLyogU3Rh
cnQgWVlYIGF0IC1ZWU4gaWYgbmVnYXRpdmUgdG8gYXZvaWQgbmVnYXRpdmUgaW5kZXhlcyBpbgot
CSBZWUNIRUNLLiAgKi8KLSAgICAgIGludCB5eXhiZWdpbiA9IHl5biA8IDAgPyAteXluIDogMDsK
LQotICAgICAgLyogU3RheSB3aXRoaW4gYm91bmRzIG9mIGJvdGggeXljaGVjayBhbmQgeXl0bmFt
ZS4gICovCi0gICAgICBpbnQgeXljaGVja2xpbSA9IFlZTEFTVCAtIHl5biArIDE7Ci0gICAgICBp
bnQgeXl4ZW5kID0geXljaGVja2xpbSA8IFlZTlRPS0VOUyA/IHl5Y2hlY2tsaW0gOiBZWU5UT0tF
TlM7Ci0gICAgICBpbnQgeXljb3VudCA9IDE7Ci0KLSAgICAgIHl5YXJnWzBdID0geXl0bmFtZVt5
eXR5cGVdOwotICAgICAgeXlmbXQgPSB5eXN0cGNweSAoeXlmb3JtYXQsIHl5dW5leHBlY3RlZCk7
Ci0KLSAgICAgIGZvciAoeXl4ID0geXl4YmVnaW47IHl5eCA8IHl5eGVuZDsgKyt5eXgpCi0JaWYg
KHl5Y2hlY2tbeXl4ICsgeXluXSA9PSB5eXggJiYgeXl4ICE9IFlZVEVSUk9SKQotCSAgewotCSAg
ICBpZiAoeXljb3VudCA9PSBZWUVSUk9SX1ZFUkJPU0VfQVJHU19NQVhJTVVNKQotCSAgICAgIHsK
LQkJeXljb3VudCA9IDE7Ci0JCXl5c2l6ZSA9IHl5c2l6ZTA7Ci0JCXl5Zm9ybWF0W3NpemVvZiB5
eXVuZXhwZWN0ZWQgLSAxXSA9ICdcMCc7Ci0JCWJyZWFrOwotCSAgICAgIH0KLQkgICAgeXlhcmdb
eXljb3VudCsrXSA9IHl5dG5hbWVbeXl4XTsKLQkgICAgeXlzaXplMSA9IHl5c2l6ZSArIHl5dG5h
bWVyciAoMCwgeXl0bmFtZVt5eXhdKTsKLQkgICAgeXlzaXplX292ZXJmbG93IHw9ICh5eXNpemUx
IDwgeXlzaXplKTsKLQkgICAgeXlzaXplID0geXlzaXplMTsKLQkgICAgeXlmbXQgPSB5eXN0cGNw
eSAoeXlmbXQsIHl5cHJlZml4KTsKLQkgICAgeXlwcmVmaXggPSB5eW9yOwotCSAgfQotCi0gICAg
ICB5eWYgPSBZWV8oeXlmb3JtYXQpOwotICAgICAgeXlzaXplMSA9IHl5c2l6ZSArIHl5c3RybGVu
ICh5eWYpOwotICAgICAgeXlzaXplX292ZXJmbG93IHw9ICh5eXNpemUxIDwgeXlzaXplKTsKLSAg
ICAgIHl5c2l6ZSA9IHl5c2l6ZTE7Ci0KLSAgICAgIGlmICh5eXNpemVfb3ZlcmZsb3cpCi0JcmV0
dXJuIFlZU0laRV9NQVhJTVVNOwotCi0gICAgICBpZiAoeXlyZXN1bHQpCi0JewotCSAgLyogQXZv
aWQgc3ByaW50ZiwgYXMgdGhhdCBpbmZyaW5nZXMgb24gdGhlIHVzZXIncyBuYW1lIHNwYWNlLgot
CSAgICAgRG9uJ3QgaGF2ZSB1bmRlZmluZWQgYmVoYXZpb3IgZXZlbiBpZiB0aGUgdHJhbnNsYXRp
b24KLQkgICAgIHByb2R1Y2VkIGEgc3RyaW5nIHdpdGggdGhlIHdyb25nIG51bWJlciBvZiAiJXMi
cy4gICovCi0JICBjaGFyICp5eXAgPSB5eXJlc3VsdDsKLQkgIGludCB5eWkgPSAwOwotCSAgd2hp
bGUgKCgqeXlwID0gKnl5ZikgIT0gJ1wwJykKLQkgICAgewotCSAgICAgIGlmICgqeXlwID09ICcl
JyAmJiB5eWZbMV0gPT0gJ3MnICYmIHl5aSA8IHl5Y291bnQpCi0JCXsKLQkJICB5eXAgKz0geXl0
bmFtZXJyICh5eXAsIHl5YXJnW3l5aSsrXSk7Ci0JCSAgeXlmICs9IDI7Ci0JCX0KLQkgICAgICBl
bHNlCi0JCXsKLQkJICB5eXArKzsKLQkJICB5eWYrKzsKLQkJfQotCSAgICB9Ci0JfQotICAgICAg
cmV0dXJuIHl5c2l6ZTsKKyMgZGVmaW5lIFlZQ0FTRV8oTiwgUykgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgY2FzZSBOOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIHl5Zm9ybWF0ID0gUzsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGJyZWFrCisg
ICAgICBZWUNBU0VfKDAsIFlZXygic3ludGF4IGVycm9yIikpOworICAgICAgWVlDQVNFXygxLCBZ
WV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcyIpKTsKKyAgICAgIFlZQ0FTRV8oMiwgWVlf
KCJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMsIGV4cGVjdGluZyAlcyIpKTsKKyAgICAgIFlZ
Q0FTRV8oMywgWVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMsIGV4cGVjdGluZyAlcyBv
ciAlcyIpKTsKKyAgICAgIFlZQ0FTRV8oNCwgWVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQg
JXMsIGV4cGVjdGluZyAlcyBvciAlcyBvciAlcyIpKTsKKyAgICAgIFlZQ0FTRV8oNSwgWVlfKCJz
eW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMsIGV4cGVjdGluZyAlcyBvciAlcyBvciAlcyBvciAl
cyIpKTsKKyMgdW5kZWYgWVlDQVNFXwogICAgIH0KKworICB7CisgICAgWVlTSVpFX1QgeXlzaXpl
MSA9IHl5c2l6ZSArIHl5c3RybGVuICh5eWZvcm1hdCk7CisgICAgaWYgKCEgKHl5c2l6ZSA8PSB5
eXNpemUxICYmIHl5c2l6ZTEgPD0gWVlTVEFDS19BTExPQ19NQVhJTVVNKSkKKyAgICAgIHJldHVy
biAyOworICAgIHl5c2l6ZSA9IHl5c2l6ZTE7CisgIH0KKworICBpZiAoKnl5bXNnX2FsbG9jIDwg
eXlzaXplKQorICAgIHsKKyAgICAgICp5eW1zZ19hbGxvYyA9IDIgKiB5eXNpemU7CisgICAgICBp
ZiAoISAoeXlzaXplIDw9ICp5eW1zZ19hbGxvYworICAgICAgICAgICAgICYmICp5eW1zZ19hbGxv
YyA8PSBZWVNUQUNLX0FMTE9DX01BWElNVU0pKQorICAgICAgICAqeXltc2dfYWxsb2MgPSBZWVNU
QUNLX0FMTE9DX01BWElNVU07CisgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgLyogQXZvaWQg
c3ByaW50ZiwgYXMgdGhhdCBpbmZyaW5nZXMgb24gdGhlIHVzZXIncyBuYW1lIHNwYWNlLgorICAg
ICBEb24ndCBoYXZlIHVuZGVmaW5lZCBiZWhhdmlvciBldmVuIGlmIHRoZSB0cmFuc2xhdGlvbgor
ICAgICBwcm9kdWNlZCBhIHN0cmluZyB3aXRoIHRoZSB3cm9uZyBudW1iZXIgb2YgIiVzInMuICAq
LworICB7CisgICAgY2hhciAqeXlwID0gKnl5bXNnOworICAgIGludCB5eWkgPSAwOworICAgIHdo
aWxlICgoKnl5cCA9ICp5eWZvcm1hdCkgIT0gJ1wwJykKKyAgICAgIGlmICgqeXlwID09ICclJyAm
JiB5eWZvcm1hdFsxXSA9PSAncycgJiYgeXlpIDwgeXljb3VudCkKKyAgICAgICAgeworICAgICAg
ICAgIHl5cCArPSB5eXRuYW1lcnIgKHl5cCwgeXlhcmdbeXlpKytdKTsKKyAgICAgICAgICB5eWZv
cm1hdCArPSAyOworICAgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICB5
eXArKzsKKyAgICAgICAgICB5eWZvcm1hdCsrOworICAgICAgICB9CisgIH0KKyAgcmV0dXJuIDA7
CiB9CiAjZW5kaWYgLyogWVlFUlJPUl9WRVJCT1NFICovCi0MCiAKIC8qLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCiB8IFJlbGVhc2UgdGhlIG1lbW9yeSBh
c3NvY2lhdGVkIHRvIHRoaXMgc3ltYm9sLiAgfAogYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAotLypBUkdTVVNFRCovCi0jaWYgKGRlZmluZWQgX19T
VERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKLSAgICAgfHwgZGVmaW5lZCBfX2NwbHVz
cGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogc3RhdGljIHZvaWQKIHl5ZGVzdHJ1Y3QgKGNvbnN0
IGNoYXIgKnl5bXNnLCBpbnQgeXl0eXBlLCBZWVNUWVBFICp5eXZhbHVlcCwgQ29udGV4dCAqY29u
dGV4dCkKLSNlbHNlCi1zdGF0aWMgdm9pZAoteXlkZXN0cnVjdCAoeXltc2csIHl5dHlwZSwgeXl2
YWx1ZXAsIGNvbnRleHQpCi0gICAgY29uc3QgY2hhciAqeXltc2c7Ci0gICAgaW50IHl5dHlwZTsK
LSAgICBZWVNUWVBFICp5eXZhbHVlcDsKLSAgICBDb250ZXh0ICpjb250ZXh0OwotI2VuZGlmCiB7
CiAgIFlZVVNFICh5eXZhbHVlcCk7CiAgIFlZVVNFIChjb250ZXh0KTsKLQogICBpZiAoIXl5bXNn
KQogICAgIHl5bXNnID0gIkRlbGV0aW5nIjsKICAgWVlfU1lNQk9MX1BSSU5UICh5eW1zZywgeXl0
eXBlLCB5eXZhbHVlcCwgeXlsb2NhdGlvbnApOwogCi0gIHN3aXRjaCAoeXl0eXBlKQotICAgIHsK
LQotICAgICAgZGVmYXVsdDoKLQlicmVhazsKLSAgICB9CisgIFlZX0lHTk9SRV9NQVlCRV9VTklO
SVRJQUxJWkVEX0JFR0lOCisgIFlZVVNFICh5eXR5cGUpOworICBZWV9JR05PUkVfTUFZQkVfVU5J
TklUSUFMSVpFRF9FTkQKIH0KLQwKLQotLyogUHJldmVudCB3YXJuaW5ncyBmcm9tIC1XbWlzc2lu
Zy1wcm90b3R5cGVzLiAgKi8KLQotI2lmZGVmIFlZUEFSU0VfUEFSQU0KLSNpZiBkZWZpbmVkIF9f
U1REQ19fIHx8IGRlZmluZWQgX19jcGx1c3BsdXMKLWludCB5eXBhcnNlICh2b2lkICpZWVBBUlNF
X1BBUkFNKTsKLSNlbHNlCi1pbnQgeXlwYXJzZSAoKTsKLSNlbmRpZgotI2Vsc2UgLyogISBZWVBB
UlNFX1BBUkFNICovCi0jaWYgZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fY3BsdXNwbHVz
Ci1pbnQgeXlwYXJzZSAoQ29udGV4dCAqY29udGV4dCk7Ci0jZWxzZQotaW50IHl5cGFyc2UgKCk7
Ci0jZW5kaWYKLSNlbmRpZiAvKiAhIFlZUEFSU0VfUEFSQU0gKi8KLQotCiAKIAogCkBAIC0xMTcw
LDQ0ICsxMDcwLDUzIEBAIGludCB5eXBhcnNlICgpOwogfCB5eXBhcnNlLiAgfAogYC0tLS0tLS0t
LS0qLwogCi0jaWZkZWYgWVlQQVJTRV9QQVJBTQotI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRl
ZmluZWQgX19DOTlfX0ZVTkNfXyBcCi0gICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVm
aW5lZCBfTVNDX1ZFUikKLWludAoteXlwYXJzZSAodm9pZCAqWVlQQVJTRV9QQVJBTSkKLSNlbHNl
Ci1pbnQKLXl5cGFyc2UgKFlZUEFSU0VfUEFSQU0pCi0gICAgdm9pZCAqWVlQQVJTRV9QQVJBTTsK
LSNlbmRpZgotI2Vsc2UgLyogISBZWVBBUlNFX1BBUkFNICovCi0jaWYgKGRlZmluZWQgX19TVERD
X18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKLSAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1
cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogaW50CiB5eXBhcnNlIChDb250ZXh0ICpjb250ZXh0KQot
I2Vsc2UKLWludAoteXlwYXJzZSAoY29udGV4dCkKLSAgICBDb250ZXh0ICpjb250ZXh0OwotI2Vu
ZGlmCi0jZW5kaWYKIHsKLSAgLyogVGhlIGxvb2stYWhlYWQgc3ltYm9sLiAgKi8KKy8qIFRoZSBs
b29rYWhlYWQgc3ltYm9sLiAgKi8KIGludCB5eWNoYXI7CiAKLS8qIFRoZSBzZW1hbnRpYyB2YWx1
ZSBvZiB0aGUgbG9vay1haGVhZCBzeW1ib2wuICAqLwotWVlTVFlQRSB5eWx2YWw7CiAKLS8qIE51
bWJlciBvZiBzeW50YXggZXJyb3JzIHNvIGZhci4gICovCi1pbnQgeXluZXJyczsKKy8qIFRoZSBz
ZW1hbnRpYyB2YWx1ZSBvZiB0aGUgbG9va2FoZWFkIHN5bWJvbC4gICovCisvKiBEZWZhdWx0IHZh
bHVlIHVzZWQgZm9yIGluaXRpYWxpemF0aW9uLCBmb3IgcGFjaWZ5aW5nIG9sZGVyIEdDQ3MKKyAg
IG9yIG5vbi1HQ0MgY29tcGlsZXJzLiAgKi8KK1lZX0lOSVRJQUxfVkFMVUUgKHN0YXRpYyBZWVNU
WVBFIHl5dmFsX2RlZmF1bHQ7KQorWVlTVFlQRSB5eWx2YWwgWVlfSU5JVElBTF9WQUxVRSAoPSB5
eXZhbF9kZWZhdWx0KTsKKworICAgIC8qIE51bWJlciBvZiBzeW50YXggZXJyb3JzIHNvIGZhci4g
ICovCisgICAgaW50IHl5bmVycnM7CisKKyAgICBpbnQgeXlzdGF0ZTsKKyAgICAvKiBOdW1iZXIg
b2YgdG9rZW5zIHRvIHNoaWZ0IGJlZm9yZSBlcnJvciBtZXNzYWdlcyBlbmFibGVkLiAgKi8KKyAg
ICBpbnQgeXllcnJzdGF0dXM7CisKKyAgICAvKiBUaGUgc3RhY2tzIGFuZCB0aGVpciB0b29sczoK
KyAgICAgICAneXlzcyc6IHJlbGF0ZWQgdG8gc3RhdGVzLgorICAgICAgICd5eXZzJzogcmVsYXRl
ZCB0byBzZW1hbnRpYyB2YWx1ZXMuCisKKyAgICAgICBSZWZlciB0byB0aGUgc3RhY2tzIHRocm91
Z2ggc2VwYXJhdGUgcG9pbnRlcnMsIHRvIGFsbG93IHl5b3ZlcmZsb3cKKyAgICAgICB0byByZWFs
bG9jYXRlIHRoZW0gZWxzZXdoZXJlLiAgKi8KKworICAgIC8qIFRoZSBzdGF0ZSBzdGFjay4gICov
CisgICAgeXl0eXBlX2ludDE2IHl5c3NhW1lZSU5JVERFUFRIXTsKKyAgICB5eXR5cGVfaW50MTYg
Knl5c3M7CisgICAgeXl0eXBlX2ludDE2ICp5eXNzcDsKKworICAgIC8qIFRoZSBzZW1hbnRpYyB2
YWx1ZSBzdGFjay4gICovCisgICAgWVlTVFlQRSB5eXZzYVtZWUlOSVRERVBUSF07CisgICAgWVlT
VFlQRSAqeXl2czsKKyAgICBZWVNUWVBFICp5eXZzcDsKKworICAgIFlZU0laRV9UIHl5c3RhY2tz
aXplOwogCi0gIGludCB5eXN0YXRlOwogICBpbnQgeXluOwogICBpbnQgeXlyZXN1bHQ7Ci0gIC8q
IE51bWJlciBvZiB0b2tlbnMgdG8gc2hpZnQgYmVmb3JlIGVycm9yIG1lc3NhZ2VzIGVuYWJsZWQu
ICAqLwotICBpbnQgeXllcnJzdGF0dXM7Ci0gIC8qIExvb2stYWhlYWQgdG9rZW4gYXMgYW4gaW50
ZXJuYWwgKHRyYW5zbGF0ZWQpIHRva2VuIG51bWJlci4gICovCisgIC8qIExvb2thaGVhZCB0b2tl
biBhcyBhbiBpbnRlcm5hbCAodHJhbnNsYXRlZCkgdG9rZW4gbnVtYmVyLiAgKi8KICAgaW50IHl5
dG9rZW4gPSAwOworICAvKiBUaGUgdmFyaWFibGVzIHVzZWQgdG8gcmV0dXJuIHNlbWFudGljIHZh
bHVlIGFuZCBsb2NhdGlvbiBmcm9tIHRoZQorICAgICBhY3Rpb24gcm91dGluZXMuICAqLworICBZ
WVNUWVBFIHl5dmFsOworCiAjaWYgWVlFUlJPUl9WRVJCT1NFCiAgIC8qIEJ1ZmZlciBmb3IgZXJy
b3IgbWVzc2FnZXMsIGFuZCBpdHMgYWxsb2NhdGVkIHNpemUuICAqLwogICBjaGFyIHl5bXNnYnVm
WzEyOF07CkBAIC0xMjE1LDU0ICsxMTI0LDIyIEBAIGludCB5eW5lcnJzOwogICBZWVNJWkVfVCB5
eW1zZ19hbGxvYyA9IHNpemVvZiB5eW1zZ2J1ZjsKICNlbmRpZgogCi0gIC8qIFRocmVlIHN0YWNr
cyBhbmQgdGhlaXIgdG9vbHM6Ci0gICAgIGB5eXNzJzogcmVsYXRlZCB0byBzdGF0ZXMsCi0gICAg
IGB5eXZzJzogcmVsYXRlZCB0byBzZW1hbnRpYyB2YWx1ZXMsCi0gICAgIGB5eWxzJzogcmVsYXRl
ZCB0byBsb2NhdGlvbnMuCi0KLSAgICAgUmVmZXIgdG8gdGhlIHN0YWNrcyB0aHJ1IHNlcGFyYXRl
IHBvaW50ZXJzLCB0byBhbGxvdyB5eW92ZXJmbG93Ci0gICAgIHRvIHJlYWxsb2NhdGUgdGhlbSBl
bHNld2hlcmUuICAqLwotCi0gIC8qIFRoZSBzdGF0ZSBzdGFjay4gICovCi0gIHl5dHlwZV9pbnQx
NiB5eXNzYVtZWUlOSVRERVBUSF07Ci0gIHl5dHlwZV9pbnQxNiAqeXlzcyA9IHl5c3NhOwotICB5
eXR5cGVfaW50MTYgKnl5c3NwOwotCi0gIC8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBzdGFjay4gICov
Ci0gIFlZU1RZUEUgeXl2c2FbWVlJTklUREVQVEhdOwotICBZWVNUWVBFICp5eXZzID0geXl2c2E7
Ci0gIFlZU1RZUEUgKnl5dnNwOwotCi0KLQogI2RlZmluZSBZWVBPUFNUQUNLKE4pICAgKHl5dnNw
IC09IChOKSwgeXlzc3AgLT0gKE4pKQogCi0gIFlZU0laRV9UIHl5c3RhY2tzaXplID0gWVlJTklU
REVQVEg7Ci0KLSAgLyogVGhlIHZhcmlhYmxlcyB1c2VkIHRvIHJldHVybiBzZW1hbnRpYyB2YWx1
ZSBhbmQgbG9jYXRpb24gZnJvbSB0aGUKLSAgICAgYWN0aW9uIHJvdXRpbmVzLiAgKi8KLSAgWVlT
VFlQRSB5eXZhbDsKLQotCiAgIC8qIFRoZSBudW1iZXIgb2Ygc3ltYm9scyBvbiB0aGUgUkhTIG9m
IHRoZSByZWR1Y2VkIHJ1bGUuCiAgICAgIEtlZXAgdG8gemVybyB3aGVuIG5vIHN5bWJvbCBzaG91
bGQgYmUgcG9wcGVkLiAgKi8KICAgaW50IHl5bGVuID0gMDsKIAorICB5eXNzcCA9IHl5c3MgPSB5
eXNzYTsKKyAgeXl2c3AgPSB5eXZzID0geXl2c2E7CisgIHl5c3RhY2tzaXplID0gWVlJTklUREVQ
VEg7CisKICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiU3RhcnRpbmcgcGFyc2VcbiIpKTsKIAogICB5
eXN0YXRlID0gMDsKICAgeXllcnJzdGF0dXMgPSAwOwogICB5eW5lcnJzID0gMDsKLSAgeXljaGFy
ID0gWVlFTVBUWTsJCS8qIENhdXNlIGEgdG9rZW4gdG8gYmUgcmVhZC4gICovCi0KLSAgLyogSW5p
dGlhbGl6ZSBzdGFjayBwb2ludGVycy4KLSAgICAgV2FzdGUgb25lIGVsZW1lbnQgb2YgdmFsdWUg
YW5kIGxvY2F0aW9uIHN0YWNrCi0gICAgIHNvIHRoYXQgdGhleSBzdGF5IG9uIHRoZSBzYW1lIGxl
dmVsIGFzIHRoZSBzdGF0ZSBzdGFjay4KLSAgICAgVGhlIHdhc3RlZCBlbGVtZW50cyBhcmUgbmV2
ZXIgaW5pdGlhbGl6ZWQuICAqLwotCi0gIHl5c3NwID0geXlzczsKLSAgeXl2c3AgPSB5eXZzOwot
CisgIHl5Y2hhciA9IFlZRU1QVFk7IC8qIENhdXNlIGEgdG9rZW4gdG8gYmUgcmVhZC4gICovCiAg
IGdvdG8geXlzZXRzdGF0ZTsKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCkBAIC0xMjgzLDI1ICsxMTYwLDIzIEBAIGludCB5
eW5lcnJzOwogCiAjaWZkZWYgeXlvdmVyZmxvdwogICAgICAgewotCS8qIEdpdmUgdXNlciBhIGNo
YW5jZSB0byByZWFsbG9jYXRlIHRoZSBzdGFjay4gIFVzZSBjb3BpZXMgb2YKLQkgICB0aGVzZSBz
byB0aGF0IHRoZSAmJ3MgZG9uJ3QgZm9yY2UgdGhlIHJlYWwgb25lcyBpbnRvCi0JICAgbWVtb3J5
LiAgKi8KLQlZWVNUWVBFICp5eXZzMSA9IHl5dnM7Ci0JeXl0eXBlX2ludDE2ICp5eXNzMSA9IHl5
c3M7Ci0KLQotCS8qIEVhY2ggc3RhY2sgcG9pbnRlciBhZGRyZXNzIGlzIGZvbGxvd2VkIGJ5IHRo
ZSBzaXplIG9mIHRoZQotCSAgIGRhdGEgaW4gdXNlIGluIHRoYXQgc3RhY2ssIGluIGJ5dGVzLiAg
VGhpcyB1c2VkIHRvIGJlIGEKLQkgICBjb25kaXRpb25hbCBhcm91bmQganVzdCB0aGUgdHdvIGV4
dHJhIGFyZ3MsIGJ1dCB0aGF0IG1pZ2h0Ci0JICAgYmUgdW5kZWZpbmVkIGlmIHl5b3ZlcmZsb3cg
aXMgYSBtYWNyby4gICovCi0JeXlvdmVyZmxvdyAoWVlfKCJtZW1vcnkgZXhoYXVzdGVkIiksCi0J
CSAgICAmeXlzczEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5c3NwKSwKLQkJICAgICZ5eXZzMSwgeXlz
aXplICogc2l6ZW9mICgqeXl2c3ApLAorICAgICAgICAvKiBHaXZlIHVzZXIgYSBjaGFuY2UgdG8g
cmVhbGxvY2F0ZSB0aGUgc3RhY2suICBVc2UgY29waWVzIG9mCisgICAgICAgICAgIHRoZXNlIHNv
IHRoYXQgdGhlICYncyBkb24ndCBmb3JjZSB0aGUgcmVhbCBvbmVzIGludG8KKyAgICAgICAgICAg
bWVtb3J5LiAgKi8KKyAgICAgICAgWVlTVFlQRSAqeXl2czEgPSB5eXZzOworICAgICAgICB5eXR5
cGVfaW50MTYgKnl5c3MxID0geXlzczsKKworICAgICAgICAvKiBFYWNoIHN0YWNrIHBvaW50ZXIg
YWRkcmVzcyBpcyBmb2xsb3dlZCBieSB0aGUgc2l6ZSBvZiB0aGUKKyAgICAgICAgICAgZGF0YSBp
biB1c2UgaW4gdGhhdCBzdGFjaywgaW4gYnl0ZXMuICBUaGlzIHVzZWQgdG8gYmUgYQorICAgICAg
ICAgICBjb25kaXRpb25hbCBhcm91bmQganVzdCB0aGUgdHdvIGV4dHJhIGFyZ3MsIGJ1dCB0aGF0
IG1pZ2h0CisgICAgICAgICAgIGJlIHVuZGVmaW5lZCBpZiB5eW92ZXJmbG93IGlzIGEgbWFjcm8u
ICAqLworICAgICAgICB5eW92ZXJmbG93IChZWV8oIm1lbW9yeSBleGhhdXN0ZWQiKSwKKyAgICAg
ICAgICAgICAgICAgICAgJnl5c3MxLCB5eXNpemUgKiBzaXplb2YgKCp5eXNzcCksCisgICAgICAg
ICAgICAgICAgICAgICZ5eXZzMSwgeXlzaXplICogc2l6ZW9mICgqeXl2c3ApLAorICAgICAgICAg
ICAgICAgICAgICAmeXlzdGFja3NpemUpOwogCi0JCSAgICAmeXlzdGFja3NpemUpOwotCi0JeXlz
cyA9IHl5c3MxOwotCXl5dnMgPSB5eXZzMTsKKyAgICAgICAgeXlzcyA9IHl5c3MxOworICAgICAg
ICB5eXZzID0geXl2czE7CiAgICAgICB9CiAjZWxzZSAvKiBubyB5eW92ZXJmbG93ICovCiAjIGlm
bmRlZiBZWVNUQUNLX1JFTE9DQVRFCkBAIC0xMzA5LDIzICsxMTg0LDIyIEBAIGludCB5eW5lcnJz
OwogIyBlbHNlCiAgICAgICAvKiBFeHRlbmQgdGhlIHN0YWNrIG91ciBvd24gd2F5LiAgKi8KICAg
ICAgIGlmIChZWU1BWERFUFRIIDw9IHl5c3RhY2tzaXplKQotCWdvdG8geXlleGhhdXN0ZWRsYWI7
CisgICAgICAgIGdvdG8geXlleGhhdXN0ZWRsYWI7CiAgICAgICB5eXN0YWNrc2l6ZSAqPSAyOwog
ICAgICAgaWYgKFlZTUFYREVQVEggPCB5eXN0YWNrc2l6ZSkKLQl5eXN0YWNrc2l6ZSA9IFlZTUFY
REVQVEg7CisgICAgICAgIHl5c3RhY2tzaXplID0gWVlNQVhERVBUSDsKIAogICAgICAgewotCXl5
dHlwZV9pbnQxNiAqeXlzczEgPSB5eXNzOwotCXVuaW9uIHl5YWxsb2MgKnl5cHRyID0KLQkgICh1
bmlvbiB5eWFsbG9jICopIFlZU1RBQ0tfQUxMT0MgKFlZU1RBQ0tfQllURVMgKHl5c3RhY2tzaXpl
KSk7Ci0JaWYgKCEgeXlwdHIpCi0JICBnb3RvIHl5ZXhoYXVzdGVkbGFiOwotCVlZU1RBQ0tfUkVM
T0NBVEUgKHl5c3MpOwotCVlZU1RBQ0tfUkVMT0NBVEUgKHl5dnMpOwotCisgICAgICAgIHl5dHlw
ZV9pbnQxNiAqeXlzczEgPSB5eXNzOworICAgICAgICB1bmlvbiB5eWFsbG9jICp5eXB0ciA9Cisg
ICAgICAgICAgKHVuaW9uIHl5YWxsb2MgKikgWVlTVEFDS19BTExPQyAoWVlTVEFDS19CWVRFUyAo
eXlzdGFja3NpemUpKTsKKyAgICAgICAgaWYgKCEgeXlwdHIpCisgICAgICAgICAgZ290byB5eWV4
aGF1c3RlZGxhYjsKKyAgICAgICAgWVlTVEFDS19SRUxPQ0FURSAoeXlzc19hbGxvYywgeXlzcyk7
CisgICAgICAgIFlZU1RBQ0tfUkVMT0NBVEUgKHl5dnNfYWxsb2MsIHl5dnMpOwogIyAgdW5kZWYg
WVlTVEFDS19SRUxPQ0FURQotCWlmICh5eXNzMSAhPSB5eXNzYSkKLQkgIFlZU1RBQ0tfRlJFRSAo
eXlzczEpOworICAgICAgICBpZiAoeXlzczEgIT0geXlzc2EpCisgICAgICAgICAgWVlTVEFDS19G
UkVFICh5eXNzMSk7CiAgICAgICB9CiAjIGVuZGlmCiAjZW5kaWYgLyogbm8geXlvdmVyZmxvdyAq
LwpAQCAtMTMzMywxNiArMTIwNywxOCBAQCBpbnQgeXluZXJyczsKICAgICAgIHl5c3NwID0geXlz
cyArIHl5c2l6ZSAtIDE7CiAgICAgICB5eXZzcCA9IHl5dnMgKyB5eXNpemUgLSAxOwogCi0KICAg
ICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlN0YWNrIHNpemUgaW5jcmVhc2VkIHRvICVsdVxuIiwK
LQkJICAodW5zaWduZWQgbG9uZyBpbnQpIHl5c3RhY2tzaXplKSk7CisgICAgICAgICAgICAgICAg
ICAodW5zaWduZWQgbG9uZyBpbnQpIHl5c3RhY2tzaXplKSk7CiAKICAgICAgIGlmICh5eXNzICsg
eXlzdGFja3NpemUgLSAxIDw9IHl5c3NwKQotCVlZQUJPUlQ7CisgICAgICAgIFlZQUJPUlQ7CiAg
ICAgfQogCiAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIkVudGVyaW5nIHN0YXRlICVkXG4iLCB5eXN0
YXRlKSk7CiAKKyAgaWYgKHl5c3RhdGUgPT0gWVlGSU5BTCkKKyAgICBZWUFDQ0VQVDsKKwogICBn
b3RvIHl5YmFja3VwOwogCiAvKi0tLS0tLS0tLS0tLgpAQCAtMTM1MSwyMCArMTIyNywyMCBAQCBp
bnQgeXluZXJyczsKIHl5YmFja3VwOgogCiAgIC8qIERvIGFwcHJvcHJpYXRlIHByb2Nlc3Npbmcg
Z2l2ZW4gdGhlIGN1cnJlbnQgc3RhdGUuICBSZWFkIGEKLSAgICAgbG9vay1haGVhZCB0b2tlbiBp
ZiB3ZSBuZWVkIG9uZSBhbmQgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4gICovCisgICAgIGxvb2th
aGVhZCB0b2tlbiBpZiB3ZSBuZWVkIG9uZSBhbmQgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4gICov
CiAKLSAgLyogRmlyc3QgdHJ5IHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGhvdXQgcmVmZXJlbmNl
IHRvIGxvb2stYWhlYWQgdG9rZW4uICAqLworICAvKiBGaXJzdCB0cnkgdG8gZGVjaWRlIHdoYXQg
dG8gZG8gd2l0aG91dCByZWZlcmVuY2UgdG8gbG9va2FoZWFkIHRva2VuLiAgKi8KICAgeXluID0g
eXlwYWN0W3l5c3RhdGVdOwotICBpZiAoeXluID09IFlZUEFDVF9OSU5GKQorICBpZiAoeXlwYWN0
X3ZhbHVlX2lzX2RlZmF1bHQgKHl5bikpCiAgICAgZ290byB5eWRlZmF1bHQ7CiAKLSAgLyogTm90
IGtub3duID0+IGdldCBhIGxvb2stYWhlYWQgdG9rZW4gaWYgZG9uJ3QgYWxyZWFkeSBoYXZlIG9u
ZS4gICovCisgIC8qIE5vdCBrbm93biA9PiBnZXQgYSBsb29rYWhlYWQgdG9rZW4gaWYgZG9uJ3Qg
YWxyZWFkeSBoYXZlIG9uZS4gICovCiAKLSAgLyogWVlDSEFSIGlzIGVpdGhlciBZWUVNUFRZIG9y
IFlZRU9GIG9yIGEgdmFsaWQgbG9vay1haGVhZCBzeW1ib2wuICAqLworICAvKiBZWUNIQVIgaXMg
ZWl0aGVyIFlZRU1QVFkgb3IgWVlFT0Ygb3IgYSB2YWxpZCBsb29rYWhlYWQgc3ltYm9sLiAgKi8K
ICAgaWYgKHl5Y2hhciA9PSBZWUVNUFRZKQogICAgIHsKICAgICAgIFlZRFBSSU5URiAoKHN0ZGVy
ciwgIlJlYWRpbmcgYSB0b2tlbjogIikpOwotICAgICAgeXljaGFyID0gWVlMRVg7CisgICAgICB5
eWNoYXIgPSB5eWxleCAoJnl5bHZhbCwgY29udGV4dCk7CiAgICAgfQogCiAgIGlmICh5eWNoYXIg
PD0gWVlFT0YpCkBAIC0xMzg2LDI5ICsxMjYyLDI3IEBAIHl5YmFja3VwOgogICB5eW4gPSB5eXRh
YmxlW3l5bl07CiAgIGlmICh5eW4gPD0gMCkKICAgICB7Ci0gICAgICBpZiAoeXluID09IDAgfHwg
eXluID09IFlZVEFCTEVfTklORikKLQlnb3RvIHl5ZXJybGFiOworICAgICAgaWYgKHl5dGFibGVf
dmFsdWVfaXNfZXJyb3IgKHl5bikpCisgICAgICAgIGdvdG8geXllcnJsYWI7CiAgICAgICB5eW4g
PSAteXluOwogICAgICAgZ290byB5eXJlZHVjZTsKICAgICB9CiAKLSAgaWYgKHl5biA9PSBZWUZJ
TkFMKQotICAgIFlZQUNDRVBUOwotCiAgIC8qIENvdW50IHRva2VucyBzaGlmdGVkIHNpbmNlIGVy
cm9yOyBhZnRlciB0aHJlZSwgdHVybiBvZmYgZXJyb3IKICAgICAgc3RhdHVzLiAgKi8KICAgaWYg
KHl5ZXJyc3RhdHVzKQogICAgIHl5ZXJyc3RhdHVzLS07CiAKLSAgLyogU2hpZnQgdGhlIGxvb2st
YWhlYWQgdG9rZW4uICAqLworICAvKiBTaGlmdCB0aGUgbG9va2FoZWFkIHRva2VuLiAgKi8KICAg
WVlfU1lNQk9MX1BSSU5UICgiU2hpZnRpbmciLCB5eXRva2VuLCAmeXlsdmFsLCAmeXlsbG9jKTsK
IAotICAvKiBEaXNjYXJkIHRoZSBzaGlmdGVkIHRva2VuIHVubGVzcyBpdCBpcyBlb2YuICAqLwot
ICBpZiAoeXljaGFyICE9IFlZRU9GKQotICAgIHl5Y2hhciA9IFlZRU1QVFk7CisgIC8qIERpc2Nh
cmQgdGhlIHNoaWZ0ZWQgdG9rZW4uICAqLworICB5eWNoYXIgPSBZWUVNUFRZOwogCiAgIHl5c3Rh
dGUgPSB5eW47CisgIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0JFR0lOCiAgICorK3l5
dnNwID0geXlsdmFsOworICBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9FTkQKIAogICBn
b3RvIHl5bmV3c3RhdGU7CiAKQEAgLTE0MzEsNyArMTMwNSw3IEBAIHl5cmVkdWNlOgogICB5eWxl
biA9IHl5cjJbeXluXTsKIAogICAvKiBJZiBZWUxFTiBpcyBub256ZXJvLCBpbXBsZW1lbnQgdGhl
IGRlZmF1bHQgdmFsdWUgb2YgdGhlIGFjdGlvbjoKLSAgICAgYCQkID0gJDEnLgorICAgICAnJCQg
PSAkMScuCiAKICAgICAgT3RoZXJ3aXNlLCB0aGUgZm9sbG93aW5nIGxpbmUgc2V0cyBZWVZBTCB0
byBnYXJiYWdlLgogICAgICBUaGlzIGJlaGF2aW9yIGlzIHVuZG9jdW1lbnRlZCBhbmQgQmlzb24K
QEAgLTE0NDcsMTk3ICsxMzIxLDIzMSBAQCB5eXJlZHVjZToKICAgICAgICAgY2FzZSAyOgogCiAg
ICAgewotICAgICAgICAqKGNvbnRleHQtPnJlc3VsdCkgPSBzdGF0aWNfY2FzdDxpbnQ+KCh5eXZz
cFsoMSkgLSAoMSldKSk7CisgICAgICAgICooY29udGV4dC0+cmVzdWx0KSA9IHN0YXRpY19jYXN0
PGludD4oKHl5dnNwWzBdKSk7CiAgICAgICAgIFlZQUNDRVBUOwotICAgIDt9CisgICAgfQorCiAg
ICAgYnJlYWs7CiAKICAgY2FzZSA0OgogCiAgICAgewotICAgICAgICAoeXl2YWwpID0gKHl5dnNw
WygxKSAtICgzKV0pIHx8ICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgICAgICAoeXl2
YWwpID0gKHl5dnNwWy0yXSkgfHwgKHl5dnNwWzBdKTsKKyAgICB9CisKICAgICBicmVhazsKIAog
ICBjYXNlIDU6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkg
JiYgKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgICAgICh5eXZhbCkgPSAoeXl2c3Bb
LTJdKSAmJiAoeXl2c3BbMF0pOworICAgIH0KKwogICAgIGJyZWFrOwogCiAgIGNhc2UgNjoKIAog
ICAgIHsKLSAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSB8ICh5eXZzcFsoMykg
LSAoMyldKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkgfCAoeXl2c3Bb
MF0pOworICAgIH0KKwogICAgIGJyZWFrOwogCiAgIGNhc2UgNzoKIAogICAgIHsKLSAgICAgICAg
KHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSBeICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7
fQorICAgICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkgXiAoeXl2c3BbMF0pOworICAgIH0KKwog
ICAgIGJyZWFrOwogCiAgIGNhc2UgODoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsKSA9ICh5eXZz
cFsoMSkgLSAoMyldKSAmICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgICAgICAoeXl2
YWwpID0gKHl5dnNwWy0yXSkgJiAoeXl2c3BbMF0pOworICAgIH0KKwogICAgIGJyZWFrOwogCiAg
IGNhc2UgOToKIAogICAgIHsKLSAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSAh
PSAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFst
Ml0pICE9ICh5eXZzcFswXSk7CisgICAgfQorCiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMDoKIAog
ICAgIHsKLSAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSA9PSAoeXl2c3BbKDMp
IC0gKDMpXSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFstMl0pID09ICh5eXZz
cFswXSk7CisgICAgfQorCiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMToKIAogICAgIHsKLSAgICAg
ICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSA+PSAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0g
ICAgO30KKyAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFstMl0pID49ICh5eXZzcFswXSk7CisgICAg
fQorCiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsKSA9
ICh5eXZzcFsoMSkgLSAoMyldKSA8PSAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICAg
ICAgKHl5dmFsKSA9ICh5eXZzcFstMl0pIDw9ICh5eXZzcFswXSk7CisgICAgfQorCiAgICAgYnJl
YWs7CiAKICAgY2FzZSAxMzoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkg
LSAoMyldKSA+ICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwpID0g
KHl5dnNwWy0yXSkgPiAoeXl2c3BbMF0pOworICAgIH0KKwogICAgIGJyZWFrOwogCiAgIGNhc2Ug
MTQ6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgPCAoeXl2
c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFstMl0pIDwg
KHl5dnNwWzBdKTsKKyAgICB9CisKICAgICBicmVhazsKIAogICBjYXNlIDE1OgogCiAgICAgewot
ICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pID4+ICh5eXZzcFsoMykgLSAoMyld
KTsKLSAgICA7fQorICAgICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkgPj4gKHl5dnNwWzBdKTsK
KyAgICB9CisKICAgICBicmVhazsKIAogICBjYXNlIDE2OgogCiAgICAgewotICAgICAgICAoeXl2
YWwpID0gKHl5dnNwWygxKSAtICgzKV0pIDw8ICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQor
ICAgICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkgPDwgKHl5dnNwWzBdKTsKKyAgICB9CisKICAg
ICBicmVhazsKIAogICBjYXNlIDE3OgogCiAgICAgewotICAgICAgICAoeXl2YWwpID0gKHl5dnNw
WygxKSAtICgzKV0pIC0gKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgICAgICh5eXZh
bCkgPSAoeXl2c3BbLTJdKSAtICh5eXZzcFswXSk7CisgICAgfQorCiAgICAgYnJlYWs7CiAKICAg
Y2FzZSAxODoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSAr
ICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwpID0gKHl5dnNwWy0y
XSkgKyAoeXl2c3BbMF0pOworICAgIH0KKwogICAgIGJyZWFrOwogCiAgIGNhc2UgMTk6CiAKICAg
ICB7Ci0gICAgICAgIGlmICgoeXl2c3BbKDMpIC0gKDMpXSkgPT0gMCkgeworICAgICAgICBpZiAo
KHl5dnNwWzBdKSA9PSAwKSB7CiAgICAgICAgICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gc3RyZWFt
OwotICAgICAgICAgICAgc3RyZWFtIDw8ICh5eXZzcFsoMSkgLSAoMyldKSA8PCAiICUgIiA8PCAo
eXl2c3BbKDMpIC0gKDMpXSk7CisgICAgICAgICAgICBzdHJlYW0gPDwgKHl5dnNwWy0yXSkgPDwg
IiAlICIgPDwgKHl5dnNwWzBdKTsKICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHRleHQgPSBzdHJl
YW0uc3RyKCk7CiAgICAgICAgICAgICBjb250ZXh0LT5kaWFnbm9zdGljcy0+cmVwb3J0KHBwOjpE
aWFnbm9zdGljczo6RElWSVNJT05fQllfWkVSTywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+dG9rZW4tPmxvY2F0aW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LmNfc3RyKCkpOwogICAgICAgICAgICAgWVlB
Qk9SVDsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEp
IC0gKDMpXSkgJSAoeXl2c3BbKDMpIC0gKDMpXSk7CisgICAgICAgICAgICAoeXl2YWwpID0gKHl5
dnNwWy0yXSkgJSAoeXl2c3BbMF0pOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CisKICAgICBi
cmVhazsKIAogICBjYXNlIDIwOgogCiAgICAgewotICAgICAgICBpZiAoKHl5dnNwWygzKSAtICgz
KV0pID09IDApIHsKKyAgICAgICAgaWYgKCh5eXZzcFswXSkgPT0gMCkgewogICAgICAgICAgICAg
c3RkOjpvc3RyaW5nc3RyZWFtIHN0cmVhbTsKLSAgICAgICAgICAgIHN0cmVhbSA8PCAoeXl2c3Bb
KDEpIC0gKDMpXSkgPDwgIiAvICIgPDwgKHl5dnNwWygzKSAtICgzKV0pOworICAgICAgICAgICAg
c3RyZWFtIDw8ICh5eXZzcFstMl0pIDw8ICIgLyAiIDw8ICh5eXZzcFswXSk7CiAgICAgICAgICAg
ICBzdGQ6OnN0cmluZyB0ZXh0ID0gc3RyZWFtLnN0cigpOwogICAgICAgICAgICAgY29udGV4dC0+
ZGlhZ25vc3RpY3MtPnJlcG9ydChwcDo6RGlhZ25vc3RpY3M6OkRJVklTSU9OX0JZX1pFUk8sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnRva2VuLT5s
b2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC5j
X3N0cigpKTsKICAgICAgICAgICAgIFlZQUJPUlQ7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pIC8gKHl5dnNwWygzKSAtICgzKV0pOwor
ICAgICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFstMl0pIC8gKHl5dnNwWzBdKTsKICAgICAgICAg
fQotICAgIDt9CisgICAgfQorCiAgICAgYnJlYWs7CiAKICAgY2FzZSAyMToKIAogICAgIHsKLSAg
ICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSAqICh5eXZzcFsoMykgLSAoMyldKTsK
LSAgICA7fQorICAgICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkgKiAoeXl2c3BbMF0pOworICAg
IH0KKwogICAgIGJyZWFrOwogCiAgIGNhc2UgMjI6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbCkg
PSAhICh5eXZzcFsoMikgLSAoMildKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwpID0gISAoeXl2
c3BbMF0pOworICAgIH0KKwogICAgIGJyZWFrOwogCiAgIGNhc2UgMjM6CiAKICAgICB7Ci0gICAg
ICAgICh5eXZhbCkgPSB+ICh5eXZzcFsoMikgLSAoMildKTsKLSAgICA7fQorICAgICAgICAoeXl2
YWwpID0gfiAoeXl2c3BbMF0pOworICAgIH0KKwogICAgIGJyZWFrOwogCiAgIGNhc2UgMjQ6CiAK
ICAgICB7Ci0gICAgICAgICh5eXZhbCkgPSAtICh5eXZzcFsoMikgLSAoMildKTsKLSAgICA7fQor
ICAgICAgICAoeXl2YWwpID0gLSAoeXl2c3BbMF0pOworICAgIH0KKwogICAgIGJyZWFrOwogCiAg
IGNhc2UgMjU6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbCkgPSArICh5eXZzcFsoMikgLSAoMild
KTsKLSAgICA7fQorICAgICAgICAoeXl2YWwpID0gKyAoeXl2c3BbMF0pOworICAgIH0KKwogICAg
IGJyZWFrOwogCiAgIGNhc2UgMjY6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbCkgPSAoeXl2c3Bb
KDIpIC0gKDMpXSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFstMV0pOworICAg
IH0KKwogICAgIGJyZWFrOwogCiAKLS8qIExpbmUgMTI2NyBvZiB5YWNjLmMuICAqLwogCiAgICAg
ICBkZWZhdWx0OiBicmVhazsKICAgICB9CisgIC8qIFVzZXIgc2VtYW50aWMgYWN0aW9ucyBzb21l
dGltZXMgYWx0ZXIgeXljaGFyLCBhbmQgdGhhdCByZXF1aXJlcworICAgICB0aGF0IHl5dG9rZW4g
YmUgdXBkYXRlZCB3aXRoIHRoZSBuZXcgdHJhbnNsYXRpb24uICBXZSB0YWtlIHRoZQorICAgICBh
cHByb2FjaCBvZiB0cmFuc2xhdGluZyBpbW1lZGlhdGVseSBiZWZvcmUgZXZlcnkgdXNlIG9mIHl5
dG9rZW4uCisgICAgIE9uZSBhbHRlcm5hdGl2ZSBpcyB0cmFuc2xhdGluZyBoZXJlIGFmdGVyIGV2
ZXJ5IHNlbWFudGljIGFjdGlvbiwKKyAgICAgYnV0IHRoYXQgdHJhbnNsYXRpb24gd291bGQgYmUg
bWlzc2VkIGlmIHRoZSBzZW1hbnRpYyBhY3Rpb24gaW52b2tlcworICAgICBZWUFCT1JULCBZWUFD
Q0VQVCwgb3IgWVlFUlJPUiBpbW1lZGlhdGVseSBhZnRlciBhbHRlcmluZyB5eWNoYXIgb3IKKyAg
ICAgaWYgaXQgaW52b2tlcyBZWUJBQ0tVUC4gIEluIHRoZSBjYXNlIG9mIFlZQUJPUlQgb3IgWVlB
Q0NFUFQsIGFuCisgICAgIGluY29ycmVjdCBkZXN0cnVjdG9yIG1pZ2h0IHRoZW4gYmUgaW52b2tl
ZCBpbW1lZGlhdGVseS4gIEluIHRoZQorICAgICBjYXNlIG9mIFlZRVJST1Igb3IgWVlCQUNLVVAs
IHN1YnNlcXVlbnQgcGFyc2VyIGFjdGlvbnMgbWlnaHQgbGVhZAorICAgICB0byBhbiBpbmNvcnJl
Y3QgZGVzdHJ1Y3RvciBjYWxsIG9yIHZlcmJvc2Ugc3ludGF4IGVycm9yIG1lc3NhZ2UKKyAgICAg
YmVmb3JlIHRoZSBsb29rYWhlYWQgaXMgdHJhbnNsYXRlZC4gICovCiAgIFlZX1NZTUJPTF9QUklO
VCAoIi0+ICQkID0iLCB5eXIxW3l5bl0sICZ5eXZhbCwgJnl5bG9jKTsKIAogICBZWVBPUFNUQUNL
ICh5eWxlbik7CkBAIC0xNjQ2LDggKzE1NTQsNyBAQCB5eXJlZHVjZToKIAogICAqKyt5eXZzcCA9
IHl5dmFsOwogCi0KLSAgLyogTm93IGBzaGlmdCcgdGhlIHJlc3VsdCBvZiB0aGUgcmVkdWN0aW9u
LiAgRGV0ZXJtaW5lIHdoYXQgc3RhdGUKKyAgLyogTm93ICdzaGlmdCcgdGhlIHJlc3VsdCBvZiB0
aGUgcmVkdWN0aW9uLiAgRGV0ZXJtaW5lIHdoYXQgc3RhdGUKICAgICAgdGhhdCBnb2VzIHRvLCBi
YXNlZCBvbiB0aGUgc3RhdGUgd2UgcG9wcGVkIGJhY2sgdG8gYW5kIHRoZSBydWxlCiAgICAgIG51
bWJlciByZWR1Y2VkIGJ5LiAgKi8KIApAQCAtMTY2MiwxMCArMTU2OSwxNCBAQCB5eXJlZHVjZToK
ICAgZ290byB5eW5ld3N0YXRlOwogCiAKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLgotfCB5eWVycmxhYiAtLSBoZXJlIG9uIGRldGVjdGluZyBlcnJvciB8Ci1gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0uCit8IHl5ZXJybGFiIC0tIGhlcmUgb24gZGV0ZWN0aW5nIGVycm9y
LiAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIHl5ZXJybGFi
OgorICAvKiBNYWtlIHN1cmUgd2UgaGF2ZSBsYXRlc3QgbG9va2FoZWFkIHRyYW5zbGF0aW9uLiAg
U2VlIGNvbW1lbnRzIGF0CisgICAgIHVzZXIgc2VtYW50aWMgYWN0aW9ucyBmb3Igd2h5IHRoaXMg
aXMgbmVjZXNzYXJ5LiAgKi8KKyAgeXl0b2tlbiA9IHl5Y2hhciA9PSBZWUVNUFRZID8gWVlFTVBU
WSA6IFlZVFJBTlNMQVRFICh5eWNoYXIpOworCiAgIC8qIElmIG5vdCBhbHJlYWR5IHJlY292ZXJp
bmcgZnJvbSBhbiBlcnJvciwgcmVwb3J0IHRoaXMgZXJyb3IuICAqLwogICBpZiAoIXl5ZXJyc3Rh
dHVzKQogICAgIHsKQEAgLTE2NzMsMzcgKzE1ODQsMzYgQEAgeXllcnJsYWI6CiAjaWYgISBZWUVS
Uk9SX1ZFUkJPU0UKICAgICAgIHl5ZXJyb3IgKGNvbnRleHQsIFlZXygic3ludGF4IGVycm9yIikp
OwogI2Vsc2UKKyMgZGVmaW5lIFlZU1lOVEFYX0VSUk9SIHl5c3ludGF4X2Vycm9yICgmeXltc2df
YWxsb2MsICZ5eW1zZywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHl5c3NwLCB5eXRva2VuKQogICAgICAgewotCVlZU0laRV9UIHl5c2l6ZSA9IHl5c3ludGF4X2Vy
cm9yICgwLCB5eXN0YXRlLCB5eWNoYXIpOwotCWlmICh5eW1zZ19hbGxvYyA8IHl5c2l6ZSAmJiB5
eW1zZ19hbGxvYyA8IFlZU1RBQ0tfQUxMT0NfTUFYSU1VTSkKLQkgIHsKLQkgICAgWVlTSVpFX1Qg
eXlhbGxvYyA9IDIgKiB5eXNpemU7Ci0JICAgIGlmICghICh5eXNpemUgPD0geXlhbGxvYyAmJiB5
eWFsbG9jIDw9IFlZU1RBQ0tfQUxMT0NfTUFYSU1VTSkpCi0JICAgICAgeXlhbGxvYyA9IFlZU1RB
Q0tfQUxMT0NfTUFYSU1VTTsKLQkgICAgaWYgKHl5bXNnICE9IHl5bXNnYnVmKQotCSAgICAgIFlZ
U1RBQ0tfRlJFRSAoeXltc2cpOwotCSAgICB5eW1zZyA9IChjaGFyICopIFlZU1RBQ0tfQUxMT0Mg
KHl5YWxsb2MpOwotCSAgICBpZiAoeXltc2cpCi0JICAgICAgeXltc2dfYWxsb2MgPSB5eWFsbG9j
OwotCSAgICBlbHNlCi0JICAgICAgewotCQl5eW1zZyA9IHl5bXNnYnVmOwotCQl5eW1zZ19hbGxv
YyA9IHNpemVvZiB5eW1zZ2J1ZjsKLQkgICAgICB9Ci0JICB9Ci0KLQlpZiAoMCA8IHl5c2l6ZSAm
JiB5eXNpemUgPD0geXltc2dfYWxsb2MpCi0JICB7Ci0JICAgICh2b2lkKSB5eXN5bnRheF9lcnJv
ciAoeXltc2csIHl5c3RhdGUsIHl5Y2hhcik7Ci0JICAgIHl5ZXJyb3IgKGNvbnRleHQsIHl5bXNn
KTsKLQkgIH0KLQllbHNlCi0JICB7Ci0JICAgIHl5ZXJyb3IgKGNvbnRleHQsIFlZXygic3ludGF4
IGVycm9yIikpOwotCSAgICBpZiAoeXlzaXplICE9IDApCi0JICAgICAgZ290byB5eWV4aGF1c3Rl
ZGxhYjsKLQkgIH0KKyAgICAgICAgY2hhciBjb25zdCAqeXltc2dwID0gWVlfKCJzeW50YXggZXJy
b3IiKTsKKyAgICAgICAgaW50IHl5c3ludGF4X2Vycm9yX3N0YXR1czsKKyAgICAgICAgeXlzeW50
YXhfZXJyb3Jfc3RhdHVzID0gWVlTWU5UQVhfRVJST1I7CisgICAgICAgIGlmICh5eXN5bnRheF9l
cnJvcl9zdGF0dXMgPT0gMCkKKyAgICAgICAgICB5eW1zZ3AgPSB5eW1zZzsKKyAgICAgICAgZWxz
ZSBpZiAoeXlzeW50YXhfZXJyb3Jfc3RhdHVzID09IDEpCisgICAgICAgICAgeworICAgICAgICAg
ICAgaWYgKHl5bXNnICE9IHl5bXNnYnVmKQorICAgICAgICAgICAgICBZWVNUQUNLX0ZSRUUgKHl5
bXNnKTsKKyAgICAgICAgICAgIHl5bXNnID0gKGNoYXIgKikgWVlTVEFDS19BTExPQyAoeXltc2df
YWxsb2MpOworICAgICAgICAgICAgaWYgKCF5eW1zZykKKyAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHl5bXNnID0geXltc2didWY7CisgICAgICAgICAgICAgICAgeXltc2dfYWxsb2Mg
PSBzaXplb2YgeXltc2didWY7CisgICAgICAgICAgICAgICAgeXlzeW50YXhfZXJyb3Jfc3RhdHVz
ID0gMjsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgeXlzeW50YXhfZXJyb3Jfc3RhdHVzID0gWVlTWU5UQVhfRVJST1I7
CisgICAgICAgICAgICAgICAgeXltc2dwID0geXltc2c7CisgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICB9CisgICAgICAgIHl5ZXJyb3IgKGNvbnRleHQsIHl5bXNncCk7CisgICAgICAgIGlmICh5
eXN5bnRheF9lcnJvcl9zdGF0dXMgPT0gMikKKyAgICAgICAgICBnb3RvIHl5ZXhoYXVzdGVkbGFi
OwogICAgICAgfQorIyB1bmRlZiBZWVNZTlRBWF9FUlJPUgogI2VuZGlmCiAgICAgfQogCkBAIC0x
NzExLDI0ICsxNjIxLDI0IEBAIHl5ZXJybGFiOgogCiAgIGlmICh5eWVycnN0YXR1cyA9PSAzKQog
ICAgIHsKLSAgICAgIC8qIElmIGp1c3QgdHJpZWQgYW5kIGZhaWxlZCB0byByZXVzZSBsb29rLWFo
ZWFkIHRva2VuIGFmdGVyIGFuCi0JIGVycm9yLCBkaXNjYXJkIGl0LiAgKi8KKyAgICAgIC8qIElm
IGp1c3QgdHJpZWQgYW5kIGZhaWxlZCB0byByZXVzZSBsb29rYWhlYWQgdG9rZW4gYWZ0ZXIgYW4K
KyAgICAgICAgIGVycm9yLCBkaXNjYXJkIGl0LiAgKi8KIAogICAgICAgaWYgKHl5Y2hhciA8PSBZ
WUVPRikKLQl7Ci0JICAvKiBSZXR1cm4gZmFpbHVyZSBpZiBhdCBlbmQgb2YgaW5wdXQuICAqLwot
CSAgaWYgKHl5Y2hhciA9PSBZWUVPRikKLQkgICAgWVlBQk9SVDsKLQl9CisgICAgICAgIHsKKyAg
ICAgICAgICAvKiBSZXR1cm4gZmFpbHVyZSBpZiBhdCBlbmQgb2YgaW5wdXQuICAqLworICAgICAg
ICAgIGlmICh5eWNoYXIgPT0gWVlFT0YpCisgICAgICAgICAgICBZWUFCT1JUOworICAgICAgICB9
CiAgICAgICBlbHNlCi0JewotCSAgeXlkZXN0cnVjdCAoIkVycm9yOiBkaXNjYXJkaW5nIiwKLQkJ
ICAgICAgeXl0b2tlbiwgJnl5bHZhbCwgY29udGV4dCk7Ci0JICB5eWNoYXIgPSBZWUVNUFRZOwot
CX0KKyAgICAgICAgeworICAgICAgICAgIHl5ZGVzdHJ1Y3QgKCJFcnJvcjogZGlzY2FyZGluZyIs
CisgICAgICAgICAgICAgICAgICAgICAgeXl0b2tlbiwgJnl5bHZhbCwgY29udGV4dCk7CisgICAg
ICAgICAgeXljaGFyID0gWVlFTVBUWTsKKyAgICAgICAgfQogICAgIH0KIAotICAvKiBFbHNlIHdp
bGwgdHJ5IHRvIHJldXNlIGxvb2stYWhlYWQgdG9rZW4gYWZ0ZXIgc2hpZnRpbmcgdGhlIGVycm9y
CisgIC8qIEVsc2Ugd2lsbCB0cnkgdG8gcmV1c2UgbG9va2FoZWFkIHRva2VuIGFmdGVyIHNoaWZ0
aW5nIHRoZSBlcnJvcgogICAgICB0b2tlbi4gICovCiAgIGdvdG8geXllcnJsYWIxOwogCkBAIC0x
NzQ0LDcgKzE2NTQsNyBAQCB5eWVycm9ybGFiOgogICBpZiAoLypDT05TVENPTkQqLyAwKQogICAg
ICBnb3RvIHl5ZXJyb3JsYWI7CiAKLSAgLyogRG8gbm90IHJlY2xhaW0gdGhlIHN5bWJvbHMgb2Yg
dGhlIHJ1bGUgd2hpY2ggYWN0aW9uIHRyaWdnZXJlZAorICAvKiBEbyBub3QgcmVjbGFpbSB0aGUg
c3ltYm9scyBvZiB0aGUgcnVsZSB3aG9zZSBhY3Rpb24gdHJpZ2dlcmVkCiAgICAgIHRoaXMgWVlF
UlJPUi4gICovCiAgIFlZUE9QU1RBQ0sgKHl5bGVuKTsKICAgeXlsZW4gPSAwOwpAQCAtMTc1Nywz
OCArMTY2NywzNyBAQCB5eWVycm9ybGFiOgogfCB5eWVycmxhYjEgLS0gY29tbW9uIGNvZGUgZm9y
IGJvdGggc3ludGF4IGVycm9yIGFuZCBZWUVSUk9SLiAgfAogYC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogeXllcnJsYWIxOgot
ICB5eWVycnN0YXR1cyA9IDM7CS8qIEVhY2ggcmVhbCB0b2tlbiBzaGlmdGVkIGRlY3JlbWVudHMg
dGhpcy4gICovCisgIHl5ZXJyc3RhdHVzID0gMzsgICAgICAvKiBFYWNoIHJlYWwgdG9rZW4gc2hp
ZnRlZCBkZWNyZW1lbnRzIHRoaXMuICAqLwogCiAgIGZvciAoOzspCiAgICAgewogICAgICAgeXlu
ID0geXlwYWN0W3l5c3RhdGVdOwotICAgICAgaWYgKHl5biAhPSBZWVBBQ1RfTklORikKLQl7Ci0J
ICB5eW4gKz0gWVlURVJST1I7Ci0JICBpZiAoMCA8PSB5eW4gJiYgeXluIDw9IFlZTEFTVCAmJiB5
eWNoZWNrW3l5bl0gPT0gWVlURVJST1IpCi0JICAgIHsKLQkgICAgICB5eW4gPSB5eXRhYmxlW3l5
bl07Ci0JICAgICAgaWYgKDAgPCB5eW4pCi0JCWJyZWFrOwotCSAgICB9Ci0JfQorICAgICAgaWYg
KCF5eXBhY3RfdmFsdWVfaXNfZGVmYXVsdCAoeXluKSkKKyAgICAgICAgeworICAgICAgICAgIHl5
biArPSBZWVRFUlJPUjsKKyAgICAgICAgICBpZiAoMCA8PSB5eW4gJiYgeXluIDw9IFlZTEFTVCAm
JiB5eWNoZWNrW3l5bl0gPT0gWVlURVJST1IpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
IHl5biA9IHl5dGFibGVbeXluXTsKKyAgICAgICAgICAgICAgaWYgKDAgPCB5eW4pCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KIAogICAgICAgLyogUG9w
IHRoZSBjdXJyZW50IHN0YXRlIGJlY2F1c2UgaXQgY2Fubm90IGhhbmRsZSB0aGUgZXJyb3IgdG9r
ZW4uICAqLwogICAgICAgaWYgKHl5c3NwID09IHl5c3MpCi0JWVlBQk9SVDsKKyAgICAgICAgWVlB
Qk9SVDsKIAogCiAgICAgICB5eWRlc3RydWN0ICgiRXJyb3I6IHBvcHBpbmciLAotCQkgIHl5c3Rv
c1t5eXN0YXRlXSwgeXl2c3AsIGNvbnRleHQpOworICAgICAgICAgICAgICAgICAgeXlzdG9zW3l5
c3RhdGVdLCB5eXZzcCwgY29udGV4dCk7CiAgICAgICBZWVBPUFNUQUNLICgxKTsKICAgICAgIHl5
c3RhdGUgPSAqeXlzc3A7CiAgICAgICBZWV9TVEFDS19QUklOVCAoeXlzcywgeXlzc3ApOwogICAg
IH0KIAotICBpZiAoeXluID09IFlZRklOQUwpCi0gICAgWVlBQ0NFUFQ7Ci0KKyAgWVlfSUdOT1JF
X01BWUJFX1VOSU5JVElBTElaRURfQkVHSU4KICAgKisreXl2c3AgPSB5eWx2YWw7CisgIFlZX0lH
Tk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0VORAogCiAKICAgLyogU2hpZnQgdGhlIGVycm9yIHRv
a2VuLiAgKi8KQEAgLTE4MTIsNyArMTcyMSw3IEBAIHl5YWJvcnRsYWI6CiAgIHl5cmVzdWx0ID0g
MTsKICAgZ290byB5eXJldHVybjsKIAotI2lmbmRlZiB5eW92ZXJmbG93CisjaWYgIWRlZmluZWQg
eXlvdmVyZmxvdyB8fCBZWUVSUk9SX1ZFUkJPU0UKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KIHwgeXlleGhhdXN0ZWRsYWIgLS0gbWVtb3J5IGV4
aGF1c3Rpb24gY29tZXMgaGVyZS4gIHwKIGAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTE4MjMsMTcgKzE3MzIsMjIgQEAgeXlleGhhdXN0ZWRs
YWI6CiAjZW5kaWYKIAogeXlyZXR1cm46Ci0gIGlmICh5eWNoYXIgIT0gWVlFT0YgJiYgeXljaGFy
ICE9IFlZRU1QVFkpCi0gICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBkaXNjYXJkaW5nIGxvb2th
aGVhZCIsCi0JCSB5eXRva2VuLCAmeXlsdmFsLCBjb250ZXh0KTsKLSAgLyogRG8gbm90IHJlY2xh
aW0gdGhlIHN5bWJvbHMgb2YgdGhlIHJ1bGUgd2hpY2ggYWN0aW9uIHRyaWdnZXJlZAorICBpZiAo
eXljaGFyICE9IFlZRU1QVFkpCisgICAgeworICAgICAgLyogTWFrZSBzdXJlIHdlIGhhdmUgbGF0
ZXN0IGxvb2thaGVhZCB0cmFuc2xhdGlvbi4gIFNlZSBjb21tZW50cyBhdAorICAgICAgICAgdXNl
ciBzZW1hbnRpYyBhY3Rpb25zIGZvciB3aHkgdGhpcyBpcyBuZWNlc3NhcnkuICAqLworICAgICAg
eXl0b2tlbiA9IFlZVFJBTlNMQVRFICh5eWNoYXIpOworICAgICAgeXlkZXN0cnVjdCAoIkNsZWFu
dXA6IGRpc2NhcmRpbmcgbG9va2FoZWFkIiwKKyAgICAgICAgICAgICAgICAgIHl5dG9rZW4sICZ5
eWx2YWwsIGNvbnRleHQpOworICAgIH0KKyAgLyogRG8gbm90IHJlY2xhaW0gdGhlIHN5bWJvbHMg
b2YgdGhlIHJ1bGUgd2hvc2UgYWN0aW9uIHRyaWdnZXJlZAogICAgICB0aGlzIFlZQUJPUlQgb3Ig
WVlBQ0NFUFQuICAqLwogICBZWVBPUFNUQUNLICh5eWxlbik7CiAgIFlZX1NUQUNLX1BSSU5UICh5
eXNzLCB5eXNzcCk7CiAgIHdoaWxlICh5eXNzcCAhPSB5eXNzKQogICAgIHsKICAgICAgIHl5ZGVz
dHJ1Y3QgKCJDbGVhbnVwOiBwb3BwaW5nIiwKLQkJICB5eXN0b3NbKnl5c3NwXSwgeXl2c3AsIGNv
bnRleHQpOworICAgICAgICAgICAgICAgICAgeXlzdG9zWyp5eXNzcF0sIHl5dnNwLCBjb250ZXh0
KTsKICAgICAgIFlZUE9QU1RBQ0sgKDEpOwogICAgIH0KICNpZm5kZWYgeXlvdmVyZmxvdwpAQCAt
MTg0NCwxNCArMTc1OCwxMSBAQCB5eXJldHVybjoKICAgaWYgKHl5bXNnICE9IHl5bXNnYnVmKQog
ICAgIFlZU1RBQ0tfRlJFRSAoeXltc2cpOwogI2VuZGlmCi0gIC8qIE1ha2Ugc3VyZSBZWUlEIGlz
IHVzZWQuICAqLwotICByZXR1cm4gWVlJRCAoeXlyZXN1bHQpOworICByZXR1cm4geXlyZXN1bHQ7
CiB9CiAKIAogCi0KLQogaW50IHl5bGV4KFlZU1RZUEUqIGx2YWxwLCBDb250ZXh0KiBjb250ZXh0
KQogewogICAgIGludCB0eXBlID0gMDsKQEAgLTE5NDYsNCArMTg1NywzIEBAIGJvb2wgRXhwcmVz
c2lvblBhcnNlcjo6cGFyc2UoVG9rZW4qIHRva2UKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHBwCi0K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3Iv
RXhwcmVzc2lvblBhcnNlci55Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci55CShyZXZpc2lvbiAx
NTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vz
c29yL0V4cHJlc3Npb25QYXJzZXIueQkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsMTIgQEAg
V0hJQ0ggR0VORVJBVEVTIFRIRSBHTFNMIEVTIHByZXByb2Nlc3NvcgogCiAjaW5jbHVkZSAiRXhw
cmVzc2lvblBhcnNlci5oIgogCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyNpbmNsdWRlIDxtYWxs
b2MuaD4KKyNlbHNlCisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKwogI2luY2x1ZGUgPGNh
c3NlcnQ+CiAjaW5jbHVkZSA8c3N0cmVhbT4KIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvUHJl
cHJvY2Vzc29yLmNwcAkocmV2aXNpb24gMTU5MDkwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MSw2ICs4MSwxMSBAQCB2b2lkIFByZXByb2Nlc3Nvcjo6cHJlZGVmaW5lTWFjcm8o
Y29uc3QgCiAgICAgbUltcGwtPm1hY3JvU2V0W25hbWVdID0gbWFjcm87CiB9CiAKK3ZvaWQgUHJl
cHJvY2Vzc29yOjpzZXRNYXhUb2tlbkxlbmd0aChzaXplX3QgbWF4TGVuZ3RoKQoreworICAgIG1J
bXBsLT50b2tlbml6ZXIuc2V0TWF4VG9rZW5MZW5ndGgobWF4TGVuZ3RoKTsKK30KKwogdm9pZCBQ
cmVwcm9jZXNzb3I6OmxleChUb2tlbiogdG9rZW4pCiB7CiAgICAgYm9vbCB2YWxpZFRva2VuID0g
ZmFsc2U7CkBAIC05NSwzNCArMTAwLDYgQEAgdm9pZCBQcmVwcm9jZXNzb3I6OmxleChUb2tlbiog
dG9rZW4pCiAgICAgICAgICAgY2FzZSBUb2tlbjo6UFBfSEFTSDoKICAgICAgICAgICAgIGFzc2Vy
dChmYWxzZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIFRva2VuOjpDT05T
VF9JTlQ6Ci0gICAgICAgICAgewotICAgICAgICAgICAgaW50IHZhbCA9IDA7Ci0gICAgICAgICAg
ICBpZiAoIXRva2VuLT5pVmFsdWUoJnZhbCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgLy8gRG8gbm90IG1hcmsgdGhlIHRva2VuIGFzIGludmFsaWQuCi0gICAgICAgICAgICAgICAg
Ly8gSnVzdCBlbWl0IHRoZSBkaWFnbm9zdGljIGFuZCByZXNldCB2YWx1ZSB0byAwLgotICAgICAg
ICAgICAgICAgIG1JbXBsLT5kaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpJTlRFR0VS
X09WRVJGTE9XLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRv
a2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOwotICAgICAgICAgICAgICAgIHRva2VuLT50ZXh0
LmFzc2lnbigiMCIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdmFsaWRUb2tlbiA9IHRy
dWU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAgICAgICAgY2FzZSBUb2tl
bjo6Q09OU1RfRkxPQVQ6Ci0gICAgICAgICAgewotICAgICAgICAgICAgZmxvYXQgdmFsID0gMDsK
LSAgICAgICAgICAgIGlmICghdG9rZW4tPmZWYWx1ZSgmdmFsKSkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAvLyBEbyBub3QgbWFyayB0aGUgdG9rZW4gYXMgaW52YWxpZC4KLSAgICAg
ICAgICAgICAgICAvLyBKdXN0IGVtaXQgdGhlIGRpYWdub3N0aWMgYW5kIHJlc2V0IHZhbHVlIHRv
IDAuMC4KLSAgICAgICAgICAgICAgICBtSW1wbC0+ZGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9z
dGljczo6RkxPQVRfT1ZFUkZMT1csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdG9rZW4tPmxvY2F0aW9uLCB0b2tlbi0+dGV4dCk7Ci0gICAgICAgICAgICAgICAg
dG9rZW4tPnRleHQuYXNzaWduKCIwLjAiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZh
bGlkVG9rZW4gPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgfQogICAgICAg
ICAgIGNhc2UgVG9rZW46OlBQX05VTUJFUjoKICAgICAgICAgICAgIG1JbXBsLT5kaWFnbm9zdGlj
cy0+cmVwb3J0KERpYWdub3N0aWNzOjpJTlZBTElEX05VTUJFUiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVw
cm9jZXNzb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvcHJlcHJvY2Vzc29yL1ByZXByb2Nlc3Nvci5oCShyZXZpc2lvbiAxNTkwOTApCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1ByZXByb2Nl
c3Nvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNywxMiBAQCBjbGFzcyBQcmVwcm9jZXNz
b3IKICAgICBib29sIGluaXQoc2l6ZV90IGNvdW50LCBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdb
XSwgY29uc3QgaW50IGxlbmd0aFtdKTsKICAgICAvLyBBZGRzIGEgcHJlLWRlZmluZWQgbWFjcm8u
CiAgICAgdm9pZCBwcmVkZWZpbmVNYWNybyhjb25zdCBjaGFyKiBuYW1lLCBpbnQgdmFsdWUpOwor
ICAgIC8vIFNldHMgbWF4aW11bSBhbGxvd2VkIHRva2VuIGxlbmd0aC4KKyAgICAvLyBJZiB0b2tl
biBsZW5ndGggZXhjZWVkcyB0aGlzIGxpbWl0LAorICAgIC8vIHRoZSB0b2tlbiB0ZXh0IHdpbGwg
YmUgdHJ1bmNhdGVkIHRvIHRoZSBnaXZlbiBtYXhpbXVtIGxlbmd0aCwgYW5kCisgICAgLy8gVE9L
RU5fVE9PX0xPTkcgZGlhZ25vc3RpYyB3aWxsIGJlIGdlbmVyYXRlZC4KKyAgICAvLyBUaGUgbWF4
aW11bSBsZW5ndGggZGVmYXVsdHMgdG8gMjU2LgorICAgIHZvaWQgc2V0TWF4VG9rZW5MZW5ndGgo
c2l6ZV90IG1heExlbmd0aCk7CiAKICAgICB2b2lkIGxleChUb2tlbiogdG9rZW4pOwogCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2Vu
aXplci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIuY3BwCShyZXZpc2lvbiAxNTkwOTApCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUyOSwxMiArNTI5LDYgQEAgSUYgWU9VIE1PRElGWSBUSElT
IEZJTEUgWU9VIEFMU08gTkVFRCBUTwogI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICIt
V21pc3Npbmctbm9yZXR1cm4iCiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19jbGFuZ19fKQotI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25v
cmVkICItV3Vua25vd24tcHJhZ21hcyIKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVk
ICItV2RlcHJlY2F0ZWQtcmVnaXN0ZXIiCi0jZW5kaWYKLQogdHlwZWRlZiBzdGQ6OnN0cmluZyBZ
WVNUWVBFOwogdHlwZWRlZiBwcDo6U291cmNlTG9jYXRpb24gWVlMVFlQRTsKIApAQCAtNjgwLDE2
ICs2NzQsNiBAQCBzdGF0aWMgdm9pZCB5eV9mbGV4X3N0cm5jcHkgKGNoYXIgKix5eWNvCiBzdGF0
aWMgaW50IHl5X2ZsZXhfc3RybGVuICh5eWNvbnN0IGNoYXIgKiAseXlzY2FuX3QgeXlzY2FubmVy
KTsKICNlbmRpZgogCi0jaWZuZGVmIFlZX05PX0lOUFVUCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwot
c3RhdGljIGludCB5eWlucHV0ICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKLSNlbHNlCi1zdGF0aWMg
aW50IGlucHV0ICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKLSNlbmRpZgotCi0jZW5kaWYKLQogLyog
QW1vdW50IG9mIHN0dWZmIHRvIHNsdXJwIHVwIHdpdGggZWFjaCByZWFkLiAqLwogI2lmbmRlZiBZ
WV9SRUFEX0JVRl9TSVpFCiAjZGVmaW5lIFlZX1JFQURfQlVGX1NJWkUgODE5MgpAQCAtMTQ5MCw4
MSArMTQ3NCw2IEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCAKIAly
ZXR1cm4geXlfaXNfamFtID8gMCA6IHl5X2N1cnJlbnRfc3RhdGU7CiB9CiAKLSNpZm5kZWYgWVlf
Tk9fSU5QVVQKLSNpZmRlZiBfX2NwbHVzcGx1cwotICAgIHN0YXRpYyBpbnQgeXlpbnB1dCAoeXlz
Y2FuX3QgeXlzY2FubmVyKQotI2Vsc2UKLSAgICBzdGF0aWMgaW50IGlucHV0ICAoeXlzY2FuX3Qg
eXlzY2FubmVyKQotI2VuZGlmCi0KLXsKLQlpbnQgYzsKLSAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5
eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7Ci0KLQkqeXlnLT55eV9jX2J1Zl9wID0g
eXlnLT55eV9ob2xkX2NoYXI7Ci0KLQlpZiAoICp5eWctPnl5X2NfYnVmX3AgPT0gWVlfRU5EX09G
X0JVRkZFUl9DSEFSICkKLQkJewotCQkvKiB5eV9jX2J1Zl9wIG5vdyBwb2ludHMgdG8gdGhlIGNo
YXJhY3RlciB3ZSB3YW50IHRvIHJldHVybi4KLQkJICogSWYgdGhpcyBvY2N1cnMgKmJlZm9yZSog
dGhlIEVPQiBjaGFyYWN0ZXJzLCB0aGVuIGl0J3MgYQotCQkgKiB2YWxpZCBOVUw7IGlmIG5vdCwg
dGhlbiB3ZSd2ZSBoaXQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLgotCQkgKi8KLQkJaWYgKCB5eWct
Pnl5X2NfYnVmX3AgPCAmWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9jaF9idWZbeXlnLT55
eV9uX2NoYXJzXSApCi0JCQkvKiBUaGlzIHdhcyByZWFsbHkgYSBOVUwuICovCi0JCQkqeXlnLT55
eV9jX2J1Zl9wID0gJ1wwJzsKLQotCQllbHNlCi0JCQl7IC8qIG5lZWQgbW9yZSBpbnB1dCAqLwot
CQkJeXlfc2l6ZV90IG9mZnNldCA9IHl5Zy0+eXlfY19idWZfcCAtIHl5Zy0+eXl0ZXh0X3B0cjsK
LQkJCSsreXlnLT55eV9jX2J1Zl9wOwotCi0JCQlzd2l0Y2ggKCB5eV9nZXRfbmV4dF9idWZmZXIo
IHl5c2Nhbm5lciApICkKLQkJCQl7Ci0JCQkJY2FzZSBFT0JfQUNUX0xBU1RfTUFUQ0g6Ci0JCQkJ
CS8qIFRoaXMgaGFwcGVucyBiZWNhdXNlIHl5X2dfbl9iKCkKLQkJCQkJICogc2VlcyB0aGF0IHdl
J3ZlIGFjY3VtdWxhdGVkIGEKLQkJCQkJICogdG9rZW4gYW5kIGZsYWdzIHRoYXQgd2UgbmVlZCB0
bwotCQkJCQkgKiB0cnkgbWF0Y2hpbmcgdGhlIHRva2VuIGJlZm9yZQotCQkJCQkgKiBwcm9jZWVk
aW5nLiAgQnV0IGZvciBpbnB1dCgpLAotCQkJCQkgKiB0aGVyZSdzIG5vIG1hdGNoaW5nIHRvIGNv
bnNpZGVyLgotCQkJCQkgKiBTbyBjb252ZXJ0IHRoZSBFT0JfQUNUX0xBU1RfTUFUQ0gKLQkJCQkJ
ICogdG8gRU9CX0FDVF9FTkRfT0ZfRklMRS4KLQkJCQkJICovCi0KLQkJCQkJLyogUmVzZXQgYnVm
ZmVyIHN0YXR1cy4gKi8KLQkJCQkJcHByZXN0YXJ0KHl5aW4gLHl5c2Nhbm5lcik7Ci0KLQkJCQkJ
LypGQUxMVEhST1VHSCovCi0KLQkJCQljYXNlIEVPQl9BQ1RfRU5EX09GX0ZJTEU6Ci0JCQkJCXsK
LQkJCQkJaWYgKCBwcHdyYXAoeXlzY2FubmVyICkgKQotCQkJCQkJcmV0dXJuIDA7Ci0KLQkJCQkJ
aWYgKCAhIHl5Zy0+eXlfZGlkX2J1ZmZlcl9zd2l0Y2hfb25fZW9mICkKLQkJCQkJCVlZX05FV19G
SUxFOwotI2lmZGVmIF9fY3BsdXNwbHVzCi0JCQkJCXJldHVybiB5eWlucHV0KHl5c2Nhbm5lcik7
Ci0jZWxzZQotCQkJCQlyZXR1cm4gaW5wdXQoeXlzY2FubmVyKTsKLSNlbmRpZgotCQkJCQl9Ci0K
LQkJCQljYXNlIEVPQl9BQ1RfQ09OVElOVUVfU0NBTjoKLQkJCQkJeXlnLT55eV9jX2J1Zl9wID0g
eXlnLT55eXRleHRfcHRyICsgb2Zmc2V0OwotCQkJCQlicmVhazsKLQkJCQl9Ci0JCQl9Ci0JCX0K
LQotCWMgPSAqKHVuc2lnbmVkIGNoYXIgKikgeXlnLT55eV9jX2J1Zl9wOwkvKiBjYXN0IGZvciA4
LWJpdCBjaGFyJ3MgKi8KLQkqeXlnLT55eV9jX2J1Zl9wID0gJ1wwJzsJLyogcHJlc2VydmUgeXl0
ZXh0ICovCi0JeXlnLT55eV9ob2xkX2NoYXIgPSAqKyt5eWctPnl5X2NfYnVmX3A7Ci0KLQlyZXR1
cm4gYzsKLX0KLSNlbmRpZgkvKiBpZm5kZWYgWVlfTk9fSU5QVVQgKi8KLQogLyoqIEltbWVkaWF0
ZWx5IHN3aXRjaCB0byBhIGRpZmZlcmVudCBpbnB1dCBzdHJlYW0uCiAgKiBAcGFyYW0gaW5wdXRf
ZmlsZSBBIHJlYWRhYmxlIHN0cmVhbS4KICAqIEBwYXJhbSB5eXNjYW5uZXIgVGhlIHNjYW5uZXIg
b2JqZWN0LgpAQCAtMjI5NCwxNyArMjIwMywxMSBAQCB2b2lkIHBwZnJlZSAodm9pZCAqIHB0ciAs
IHl5c2Nhbl90IHl5c2NhCiAKICNkZWZpbmUgWVlUQUJMRVNfTkFNRSAieXl0YWJsZXMiCiAKLSNp
ZiBkZWZpbmVkKF9fY2xhbmdfXykKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSNlbmRp
ZgotCiBuYW1lc3BhY2UgcHAgewogCi0vLyBUT0RPKGFsb2twKTogTWF4aW11bSB0b2tlbiBsZW5n
dGggc2hvdWxkIGlkZWFsbHkgYmUgc3BlY2lmaWVkIGJ5Ci0vLyB0aGUgcHJlcHJvY2Vzc29yIGNs
aWVudCwgaS5lLiwgdGhlIGNvbXBpbGVyLgotY29uc3Qgc2l6ZV90IFRva2VuaXplcjo6a01heFRv
a2VuTGVuZ3RoID0gMjU2OwotCi1Ub2tlbml6ZXI6OlRva2VuaXplcihEaWFnbm9zdGljcyogZGlh
Z25vc3RpY3MpIDogbUhhbmRsZSgwKQorVG9rZW5pemVyOjpUb2tlbml6ZXIoRGlhZ25vc3RpY3Mq
IGRpYWdub3N0aWNzKQorICAgIDogbUhhbmRsZSgwKSwKKyAgICAgIG1NYXhUb2tlbkxlbmd0aCgy
NTYpCiB7CiAgICAgbUNvbnRleHQuZGlhZ25vc3RpY3MgPSBkaWFnbm9zdGljczsKIH0KQEAgLTIz
MzcsMTEgKzIyNDAsMTEgQEAgdm9pZCBUb2tlbml6ZXI6OnNldExpbmVOdW1iZXIoaW50IGxpbmUp
CiB2b2lkIFRva2VuaXplcjo6bGV4KFRva2VuKiB0b2tlbikKIHsKICAgICB0b2tlbi0+dHlwZSA9
IHBwbGV4KCZ0b2tlbi0+dGV4dCwmdG9rZW4tPmxvY2F0aW9uLG1IYW5kbGUpOwotICAgIGlmICh0
b2tlbi0+dGV4dC5zaXplKCkgPiBrTWF4VG9rZW5MZW5ndGgpCisgICAgaWYgKHRva2VuLT50ZXh0
LnNpemUoKSA+IG1NYXhUb2tlbkxlbmd0aCkKICAgICB7CiAgICAgICAgIG1Db250ZXh0LmRpYWdu
b3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlRPS0VOX1RPT19MT05HLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOwot
ICAgICAgICB0b2tlbi0+dGV4dC5lcmFzZShrTWF4VG9rZW5MZW5ndGgpOworICAgICAgICB0b2tl
bi0+dGV4dC5lcmFzZShtTWF4VG9rZW5MZW5ndGgpOwogICAgIH0KIAogICAgIHRva2VuLT5mbGFn
cyA9IDA7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJv
Y2Vzc29yL1Rva2VuaXplci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmgJKHJldmlzaW9uIDE1OTA5MCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9r
ZW5pemVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwxMyBAQCBjbGFzcyBUb2tlbml6
ZXIgOiBwdWJsaWMgTGV4ZXIKICAgICAgICAgYm9vbCBsZWFkaW5nU3BhY2U7CiAgICAgICAgIGJv
b2wgbGluZVN0YXJ0OwogICAgIH07Ci0gICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IGtNYXhU
b2tlbkxlbmd0aDsKIAogICAgIFRva2VuaXplcihEaWFnbm9zdGljcyogZGlhZ25vc3RpY3MpOwog
ICAgIH5Ub2tlbml6ZXIoKTsKIAogICAgIGJvb2wgaW5pdChzaXplX3QgY291bnQsIGNvbnN0IGNo
YXIqIGNvbnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10pOwogCisgICAgdm9pZCBzZXRN
YXhUb2tlbkxlbmd0aChzaXplX3QgbWF4TGVuZ3RoKSB7IG1NYXhUb2tlbkxlbmd0aCA9IG1heExl
bmd0aDsgfQogICAgIHZvaWQgc2V0RmlsZU51bWJlcihpbnQgZmlsZSk7CiAgICAgdm9pZCBzZXRM
aW5lTnVtYmVyKGludCBsaW5lKTsKIApAQCAtNTEsNiArNTEsNyBAQCBjbGFzcyBUb2tlbml6ZXIg
OiBwdWJsaWMgTGV4ZXIKIAogICAgIHZvaWQqIG1IYW5kbGU7ICAvLyBTY2FubmVyIGhhbmRsZS4K
ICAgICBDb250ZXh0IG1Db250ZXh0OyAgLy8gU2Nhbm5lciBleHRyYS4KKyAgICBzaXplX3QgbU1h
eFRva2VuTGVuZ3RoOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHBwCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNz
b3IvVG9rZW5pemVyLmwJKHJldmlzaW9uIDE1OTA5MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmwJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDEyICszMyw2IEBAIElGIFlPVSBNT0RJRlkgVEhJUyBGSUxFIFlPVSBBTFNPIE5FRUQg
VE8KICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgog
I2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fY2xhbmdfXykKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bmtub3duLXByYWdt
YXMiCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLXJlZ2lz
dGVyIgotI2VuZGlmCi0KIHR5cGVkZWYgc3RkOjpzdHJpbmcgWVlTVFlQRTsKIHR5cGVkZWYgcHA6
OlNvdXJjZUxvY2F0aW9uIFlZTFRZUEU7CiAKQEAgLTcyLDggKzY2LDYgQEAgdHlwZWRlZiBwcDo6
U291cmNlTG9jYXRpb24gWVlMVFlQRTsKICNkZWZpbmUgWVlfSU5QVVQoYnVmLCByZXN1bHQsIG1h
eFNpemUpIFwKICAgICByZXN1bHQgPSB5eWV4dHJhLT5pbnB1dC5yZWFkKGJ1ZiwgbWF4U2l6ZSk7
CiAKLSNkZWZpbmUgWVlfTk9fSU5QVVQKLQogJX0KIAogJW9wdGlvbiBub3l5d3JhcCBub3VucHV0
IG5ldmVyLWludGVyYWN0aXZlCkBAIC0yNzMsMTcgKzI2NSwxMSBAQCBGUkFDVElPTkFMX0NPTlNU
QU5UICAoe0RJR0lUfSoiLiJ7RElHSVR9CiAKICUlCiAKLSNpZiBkZWZpbmVkKF9fY2xhbmdfXykK
LSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSNlbmRpZgotCiBuYW1lc3BhY2UgcHAgewog
Ci0vLyBUT0RPKGFsb2twKTogTWF4aW11bSB0b2tlbiBsZW5ndGggc2hvdWxkIGlkZWFsbHkgYmUg
c3BlY2lmaWVkIGJ5Ci0vLyB0aGUgcHJlcHJvY2Vzc29yIGNsaWVudCwgaS5lLiwgdGhlIGNvbXBp
bGVyLgotY29uc3Qgc2l6ZV90IFRva2VuaXplcjo6a01heFRva2VuTGVuZ3RoID0gMjU2OwotCi1U
b2tlbml6ZXI6OlRva2VuaXplcihEaWFnbm9zdGljcyogZGlhZ25vc3RpY3MpIDogbUhhbmRsZSgw
KQorVG9rZW5pemVyOjpUb2tlbml6ZXIoRGlhZ25vc3RpY3MqIGRpYWdub3N0aWNzKQorICAgIDog
bUhhbmRsZSgwKSwKKyAgICAgIG1NYXhUb2tlbkxlbmd0aCgyNTYpCiB7CiAgICAgbUNvbnRleHQu
ZGlhZ25vc3RpY3MgPSBkaWFnbm9zdGljczsKIH0KQEAgLTMxNiwxMSArMzAyLDExIEBAIHZvaWQg
VG9rZW5pemVyOjpzZXRMaW5lTnVtYmVyKGludCBsaW5lKQogdm9pZCBUb2tlbml6ZXI6OmxleChU
b2tlbiogdG9rZW4pCiB7CiAgICAgdG9rZW4tPnR5cGUgPSB5eWxleCgmdG9rZW4tPnRleHQsICZ0
b2tlbi0+bG9jYXRpb24sIG1IYW5kbGUpOwotICAgIGlmICh0b2tlbi0+dGV4dC5zaXplKCkgPiBr
TWF4VG9rZW5MZW5ndGgpCisgICAgaWYgKHRva2VuLT50ZXh0LnNpemUoKSA+IG1NYXhUb2tlbkxl
bmd0aCkKICAgICB7CiAgICAgICAgIG1Db250ZXh0LmRpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25v
c3RpY3M6OlRPS0VOX1RPT19MT05HLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOwotICAgICAgICB0b2tlbi0+dGV4dC5l
cmFzZShrTWF4VG9rZW5MZW5ndGgpOworICAgICAgICB0b2tlbi0+dGV4dC5lcmFzZShtTWF4VG9r
ZW5MZW5ndGgpOwogICAgIH0KIAogICAgIHRva2VuLT5mbGFncyA9IDA7CkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL2dlbmVyYXRlX3BhcnNl
ci5zaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
cHJlcHJvY2Vzc29yL2dlbmVyYXRlX3BhcnNlci5zaAkocmV2aXNpb24gMTU5MDkwKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9nZW5lcmF0ZV9w
YXJzZXIuc2gJKHdvcmtpbmcgY29weSkKQEAgLTI0LDMgKzI0LDQgQEAgc2NyaXB0X2Rpcj0kKGRp
cm5hbWUgJDApCiAjIEdlbmVyYXRlIHByZXByb2Nlc3NvcgogcnVuX2ZsZXggVG9rZW5pemVyLmwg
VG9rZW5pemVyLmNwcAogcnVuX2Jpc29uIEV4cHJlc3Npb25QYXJzZXIueSBFeHByZXNzaW9uUGFy
c2VyLmNwcAorcGF0Y2ggLS1zaWxlbnQgLS1mb3J3YXJkIDwgNjRiaXQtdG9rZW5pemVyLXNhZmV0
eS5wYXRjaApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9wcmVwcm9jZXNzb3IudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3ByZXByb2Nlc3Nvci52Y3hwcm9q
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9wcmVwcm9jZXNzb3IudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDE3MiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCis8UHJv
amVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0
cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4NCisgIDxJ
dGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+DQorICAgIDxQcm9qZWN0Q29u
ZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+
RGVidWc8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4N
CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9u
IEluY2x1ZGU9IkRlYnVnfHg2NCI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZp
Z3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVj
dENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxl
YXNlfFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9u
Pg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZp
Z3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2
NCI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4NCisgICAg
ICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4N
CisgIDwvSXRlbUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPg0KKyAg
ICA8UHJvamVjdEd1aWQ+e0ZCRTMyREYzLTBGQjAtNEYyRi1BNDI0LTJDMjFCRDdCQzMyNX08L1By
b2plY3RHdWlkPg0KKyAgICA8Um9vdE5hbWVzcGFjZT5wcmVwcm9jZXNzb3I8L1Jvb3ROYW1lc3Bh
Y2U+DQorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4NCisgIDwvUHJvcGVydHlHcm91
cD4NCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRl
ZmF1bHQucHJvcHMiIC8+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlv
biI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9u
VHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICAgIDxX
aG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0K
KyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0
aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRp
b25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4NCisgIDwv
UHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+
DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlw
ZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICAgIDxXaG9s
ZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAg
PC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+
DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlw
ZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3Bl
cnR5R3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0
LkNwcC5wcm9wcyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3Mi
Pg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlT
aGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5D
cHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3RE
aXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxB
cHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBM
YWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3RE
aXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlz
dHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycp
IiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAg
PEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2pl
Y3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIg
Q29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9y
bSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0lt
cG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAg
PEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3Jt
IiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFj
cm9zIiAvPg0KKyAgPFByb3BlcnR5R3JvdXA+DQorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEw
LjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4NCisgICAgPE91dERpciBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChTb2x1dGlv
bkRpcikkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKENvbmZpZ3Vy
YXRpb24pXDwvSW50RGlyPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChTb2x1dGlvbkRpcikkKFBsYXRmb3JtKVwk
KENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChQbGF0Zm9ybSlcJChDb25m
aWd1cmF0aW9uKVw8L0ludERpcj4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoQ29u
ZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChDb25maWd1cmF0aW9uKVw8
L0ludERpcj4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChTb2x1dGlvbkRpcikkKFBsYXRmb3JtKVwkKENvbmZp
Z3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKFBsYXRmb3JtKVwkKENvbmZpZ3Vy
YXRpb24pXDwvSW50RGlyPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9u
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xX
aW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8
L09wdGltaXphdGlvbj4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RF
QlVHO19XSU5ET1dTO19VU1JETEw7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05PTUlOTUFYOyUo
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAg
ICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+DQorICAgICAgPEJhc2ljUnVu
dGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+DQorICAgICAg
PFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+DQorICAg
ICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAg
ICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8VHJlYXRXYXJu
aW5nQXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICAgIDxEZWJ1Z0luZm9y
bWF0aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisg
ICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQy
NDU7NDUxMjs0NzAyOzQyNjc7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rpc2FibGVTcGVj
aWZpY1dhcm5pbmdzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91
cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+DQorICAgIDxNaWRsPg0KKyAgICAgIDxUYXJnZXRF
bnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50Pg0KKyAgICA8L01pZGw+DQorICAgIDxD
bENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0K
KyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X1dJTkRPV1M7X1VT
UkRMTDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7Tk9NSU5NQVg7JShQcmVwcm9jZXNzb3JEZWZp
bml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxNaW5pbWFsUmVidWls
ZD50cnVlPC9NaW5pbWFsUmVidWlsZD4NCisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJs
ZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+
TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRI
ZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVs
PkxldmVsNDwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8
L1RyZWF0V2FybmluZ0FzRXJyb3I+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJv
Z3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxEaXNhYmxlU3Bl
Y2lmaWNXYXJuaW5ncz40MTAwOzQxMjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7NDcx
ODs0MjY3OyUoRGlzYWJsZVNwZWNpZmljV2FybmluZ3MpPC9EaXNhYmxlU3BlY2lmaWNXYXJuaW5n
cz4NCisgICAgPC9DbENvbXBpbGU+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRl
bURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0
aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5z
aW9uPkFueVN1aXRhYmxlPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4NCisgICAgICA8UHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19XSU5ET1dTO19VU1JETEw7X0NSVF9TRUNV
UkVfTk9fREVQUkVDQVRFO05PTUlOTUFYO19TRUNVUkVfU0NMPTA7JShQcmVwcm9jZXNzb3JEZWZp
bml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxSdW50aW1lTGlicmFy
eT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFk
ZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxl
dmVsNDwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1Ry
ZWF0V2FybmluZ0FzRXJyb3I+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3Jh
bURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxEaXNhYmxlU3BlY2lm
aWNXYXJuaW5ncz40MTAwOzQxMjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7NDcxODs0
MjY3OyUoRGlzYWJsZVNwZWNpZmljV2FybmluZ3MpPC9EaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz4N
CisgICAgPC9DbENvbXBpbGU+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURl
ZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8eDY0JyI+DQorICAgIDxNaWRsPg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5Y
NjQ8L1RhcmdldEVudmlyb25tZW50Pg0KKyAgICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+DQor
ICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxJbmxp
bmVGdW5jdGlvbkV4cGFuc2lvbj5BbnlTdWl0YWJsZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+
DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfV0lORE9XUztf
VVNSRExMO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtOT01JTk1BWDtfU0VDVVJFX1NDTD0wOyUo
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAg
ICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+DQorICAgICAg
PFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAg
PFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8VHJlYXRXYXJuaW5n
QXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0
aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAg
ICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7
NDUxMjs0NzAyOzQ3MTg7NDI2NzslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNw
ZWNpZmljV2FybmluZ3M+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdy
b3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEaWFnbm9zdGlj
c0Jhc2UuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkRpcmVjdGl2ZUhhbmRsZXJC
YXNlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEaXJlY3RpdmVQYXJzZXIuY3Bw
IiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkV4cHJlc3Npb25QYXJzZXIuY3BwIiAvPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IklucHV0LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJMZXhlci5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iTWFjcm8uY3Bw
IiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ik1hY3JvRXhwYW5kZXIuY3BwIiAvPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9IlByZXByb2Nlc3Nvci5jcHAiIC8+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iVG9rZW4uY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlRva2Vu
aXplci5jcHAiIC8+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0ibGVuZ3RoX2xpbWl0cy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IkRpYWdub3N0aWNzQmFzZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkRpcmVj
dGl2ZUhhbmRsZXJCYXNlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRGlyZWN0aXZl
UGFyc2VyLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRXhwcmVzc2lvblBhcnNlci5o
IiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IklucHV0LmgiIC8+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iTGV4ZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJNYWNyby5o
IiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ik1hY3JvRXhwYW5kZXIuaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJudW1lcmljX2xleC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9InBwX3V0aWxzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUHJlcHJvY2Vz
c29yLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iU291cmNlTG9jYXRpb24uaCIgLz4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJUb2tlbi5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IlRva2VuaXplci5oIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0K
KyAgICA8Tm9uZSBJbmNsdWRlPSJUb2tlbml6ZXIubCIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAg
PEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIg
Lz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+DQorICA8L0ltcG9y
dEdyb3VwPg0KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3ByZXByb2Nl
c3Nvci52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9wcmVwcm9jZXNzb3IudmN4cHJvai5maWx0ZXJz
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9wcmVwcm9jZXNzb3IudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTAwIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/
Pg0KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWlj
cm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4NCisgIDxJdGVtR3JvdXA+DQorICAg
IDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmll
cj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmll
cj4NCisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDth
c207YXNteDwvRXh0ZW5zaW9ucz4NCisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVk
ZT0iSGVhZGVyIEZpbGVzIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlC
RC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgICA8RXh0
ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+DQorICAgIDwvRmls
dGVyPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IkRpcmVjdGl2ZVBhcnNlci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVz
PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkV4
cHJlc3Npb25QYXJzZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVy
Pg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJJbnB1dC5jcHAi
Pg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxl
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkxleGVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5T
b3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iTWFjcm8uY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVy
Pg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJNYWNyb0V4cGFu
ZGVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9D
bENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUHJlcHJvY2Vzc29yLmNwcCI+DQor
ICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVG9rZW4uY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJj
ZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSJUb2tlbml6ZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVy
Pg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEaWFnbm9zdGlj
c0Jhc2UuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8
L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEaXJlY3RpdmVIYW5kbGVyQmFz
ZS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xD
b21waWxlPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9IkRpcmVjdGl2ZVBhcnNlci5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
czwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJF
eHByZXNzaW9uUGFyc2VyLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+
DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IklucHV0LmgiPg0K
KyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkxleGVyLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVy
IEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ik1hY3JvLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAg
IDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ik1hY3JvRXhwYW5kZXIuaCI+
DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0ibnVtZXJpY19sZXguaCI+DQorICAgICAgPEZpbHRl
cj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0icHBfdXRpbHMuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0Zp
bHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUHJlcHJv
Y2Vzc29yLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwv
Q2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlNvdXJjZUxvY2F0aW9uLmgiPg0K
KyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlRva2VuLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVy
IEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IlRva2VuaXplci5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0K
KyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJsZW5ndGhfbGltaXRz
LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNs
dWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkRpYWdub3N0aWNzQmFzZS5oIj4NCisgICAg
ICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJEaXJlY3RpdmVIYW5kbGVyQmFzZS5oIj4NCisgICAgICA8Rmls
dGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgIDwvSXRlbUdy
b3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPE5vbmUgSW5jbHVkZT0iVG9rZW5pemVyLmwiPg0K
KyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvTm9uZT4NCisgIDwv
SXRlbUdyb3VwPg0KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdGltaW5nL1Jlc3RyaWN0RnJh
Z21lbnRTaGFkZXJUaW1pbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90aW1pbmcvUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZy5jcHAJ
KHJldmlzaW9uIDE1OTA5MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90aW1pbmcvUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUsNyArNSw3IEBACiAvLwogCiAjaW5jbHVkZSAiY29tcGlsZXIvSW5mb1NpbmsuaCIKLSNp
bmNsdWRlICJjb21waWxlci9QYXJzZUhlbHBlci5oIgorI2luY2x1ZGUgImNvbXBpbGVyL1BhcnNl
Q29udGV4dC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaE91
dHB1dC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RpbWluZy9SZXN0cmljdEZyYWdtZW50U2hhZGVy
VGltaW5nLmgiCiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvU3Vy
ZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVH
TC9TdXJmYWNlLmNwcAkocmV2aXNpb24gMTU5MDkwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkVHTC9TdXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAsNiArMTAsOCBA
QAogCiAjaW5jbHVkZSA8dGNoYXIuaD4KIAorI2luY2x1ZGUgPGFsZ29yaXRobT4KKwogI2luY2x1
ZGUgImxpYkVHTC9TdXJmYWNlLmgiCiAKICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKQEAgLTMw
OSw2ICszMTEsMTMgQEAgYm9vbCBTdXJmYWNlOjpjaGVja0Zvck91dE9mRGF0ZVN3YXBDaGFpbgog
ICAgIGludCBjbGllbnRIZWlnaHQgPSBjbGllbnQuYm90dG9tIC0gY2xpZW50LnRvcDsKICAgICBi
b29sIHNpemVEaXJ0eSA9IGNsaWVudFdpZHRoICE9IGdldFdpZHRoKCkgfHwgY2xpZW50SGVpZ2h0
ICE9IGdldEhlaWdodCgpOwogCisgICAgaWYgKElzSWNvbmljKGdldFdpbmRvd0hhbmRsZSgpKSkK
KyAgICB7CisgICAgICAgIC8vIFRoZSB3aW5kb3cgaXMgYXV0b21hdGljYWxseSByZXNpemVkIHRv
IDE1MHgyMiB3aGVuIGl0J3MgbWluaW1pemVkLCBidXQgdGhlIHN3YXBjaGFpbiBzaG91bGRuJ3Qg
YmUgcmVzaXplZAorICAgICAgICAvLyBiZWNhdXNlIHRoYXQncyBub3QgYSB1c2VmdWwgc2l6ZSB0
byByZW5kZXIgdG8uCisgICAgICAgIHNpemVEaXJ0eSA9IGZhbHNlOworICAgIH0KKwogICAgIGlm
IChtU3dhcEludGVydmFsRGlydHkpCiAgICAgewogICAgICAgICByZXNldFN3YXBDaGFpbihjbGll
bnRXaWR0aCwgY2xpZW50SGVpZ2h0KTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJFR0wvbGliRUdMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliRUdML2xpYkVHTC5jcHAJKHJldmlzaW9uIDE1OTA5MCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGliRUdMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODE5
LDEzICs4MTksMjEgQEAgRUdMQ29udGV4dCBfX3N0ZGNhbGwgZWdsQ3JlYXRlQ29udGV4dChFRwog
ICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9DT05GSUcsIEVHTF9OT19DT05U
RVhUKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChzaGFyZV9jb250ZXh0ICYmIHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0Kj4oc2hhcmVfY29udGV4dCktPmlzUmVzZXROb3RpZmljYXRpb25FbmFi
bGVkKCkgIT0gcmVzZXRfbm90aWZpY2F0aW9uKQorICAgICAgICBnbDo6Q29udGV4dCAqc2hhcmVk
Q29udGV4dFB0ciA9IChzaGFyZV9jb250ZXh0ICE9IEVHTF9OT19DT05URVhUID8gc3RhdGljX2Nh
c3Q8Z2w6OkNvbnRleHQqPihzaGFyZV9jb250ZXh0KSA6IE5VTEwpOworCisgICAgICAgIGlmIChz
aGFyZWRDb250ZXh0UHRyICE9IE5VTEwgJiYgc2hhcmVkQ29udGV4dFB0ci0+aXNSZXNldE5vdGlm
aWNhdGlvbkVuYWJsZWQoKSAhPSByZXNldF9ub3RpZmljYXRpb24pCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfTUFUQ0gsIEVHTF9OT19DT05URVhUKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0
PGVnbDo6RGlzcGxheSo+KGRweSk7CiAKKyAgICAgICAgLy8gQ2FuIG5vdCBzaGFyZSBjb250ZXh0
cyBiZXR3ZWVuIGRpc3BsYXlzCisgICAgICAgIGlmIChzaGFyZWRDb250ZXh0UHRyICE9IE5VTEwg
JiYgc2hhcmVkQ29udGV4dFB0ci0+Z2V0UmVuZGVyZXIoKSAhPSBkaXNwbGF5LT5nZXRSZW5kZXJl
cigpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX01B
VENILCBFR0xfTk9fQ09OVEVYVCk7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoIXZhbGlkYXRl
Q29uZmlnKGRpc3BsYXksIGNvbmZpZykpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBF
R0xfTk9fQ09OVEVYVDsKQEAgLTg4OCwxNSArODk2LDE4IEBAIEVHTEJvb2xlYW4gX19zdGRjYWxs
IGVnbE1ha2VDdXJyZW50KEVHTEQKICAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAg
ICAgIH0KIAotICAgICAgICByeDo6UmVuZGVyZXIgKnJlbmRlcmVyID0gZGlzcGxheS0+Z2V0UmVu
ZGVyZXIoKTsKLSAgICAgICAgaWYgKHJlbmRlcmVyLT50ZXN0RGV2aWNlTG9zdCh0cnVlKSkKKyAg
ICAgICAgaWYgKGRweSAhPSBFR0xfTk9fRElTUExBWSkKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIEVHTF9GQUxTRTsKLSAgICAgICAgfQorICAgICAgICAgICAgcng6OlJlbmRlcmVyICpy
ZW5kZXJlciA9IGRpc3BsYXktPmdldFJlbmRlcmVyKCk7CisgICAgICAgICAgICBpZiAocmVuZGVy
ZXItPnRlc3REZXZpY2VMb3N0KHRydWUpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiBFR0xfRkFMU0U7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgaWYgKHJlbmRlcmVy
LT5pc0RldmljZUxvc3QoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJy
b3IoRUdMX0NPTlRFWFRfTE9TVCwgRUdMX0ZBTFNFKTsKKyAgICAgICAgICAgIGlmIChyZW5kZXJl
ci0+aXNEZXZpY2VMb3N0KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGVnbDo6ZXJyb3IoRUdMX0NPTlRFWFRfTE9TVCwgRUdMX0ZBTFNFKTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCiAgICAgICAgIGlmICgoZHJhdyAhPSBFR0xfTk9fU1VSRkFDRSAmJiAhdmFs
aWRhdGVTdXJmYWNlKGRpc3BsYXksIHN0YXRpY19jYXN0PGVnbDo6U3VyZmFjZSo+KGRyYXcpKSkg
fHwKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGliRUdMLnJjCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGliRUdMLnJj
CShyZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdM
L2xpYkVHTC5yYwkod29ya2luZyBjb3B5KQpAQCAtMSwxMDIgKzEsMTAyIEBACi0vLyBNaWNyb3Nv
ZnQgVmlzdWFsIEMrKyBnZW5lcmF0ZWQgcmVzb3VyY2Ugc2NyaXB0LgotLy8KLSNpbmNsdWRlICJy
ZXNvdXJjZS5oIgotCi0jZGVmaW5lIEFQU1RVRElPX1JFQURPTkxZX1NZTUJPTFMKLS8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCi0vLwotLy8gR2VuZXJhdGVkIGZyb20gdGhlIFRFWFRJTkNMVURFIDIgcmVz
b3VyY2UuCi0vLwotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlICIuLi9jb21tb24vdmVy
c2lvbi5oIgotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotI3VuZGVmIEFQU1RVRElPX1JFQURPTkxZ
X1NZTUJPTFMKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIEVuZ2xpc2ggKFUuUy4pIHJlc291
cmNlcwotCi0jaWYgIWRlZmluZWQoQUZYX1JFU09VUkNFX0RMTCkgfHwgZGVmaW5lZChBRlhfVEFS
R19FTlUpCi0jaWZkZWYgX1dJTjMyCi1MQU5HVUFHRSBMQU5HX0VOR0xJU0gsIFNVQkxBTkdfRU5H
TElTSF9VUwotI3ByYWdtYSBjb2RlX3BhZ2UoMTI1MikKLSNlbmRpZiAvL19XSU4zMgotCi0jaWZk
ZWYgQVBTVFVESU9fSU5WT0tFRAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBURVhUSU5D
TFVERQotLy8KLQotMSBURVhUSU5DTFVERSAKLUJFR0lOCi0gICAgInJlc291cmNlLmhcMCIKLUVO
RAotCi0yIFRFWFRJTkNMVURFIAotQkVHSU4KLSAgICAiI2luY2x1ZGUgIiJhZnhyZXMuaCIiXHJc
biIKLSAgICAiI2luY2x1ZGUgIiIuLi9jb21tb24vdmVyc2lvbi5oIiJcMCIKLUVORAotCi0zIFRF
WFRJTkNMVURFIAotQkVHSU4KLSAgICAiXHJcbiIKLSAgICAiXDAiCi1FTkQKLQotI2VuZGlmICAg
IC8vIEFQU1RVRElPX0lOVk9LRUQKLQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIFZl
cnNpb24KLS8vCi0KLVZTX1ZFUlNJT05fSU5GTyBWRVJTSU9OSU5GTwotIEZJTEVWRVJTSU9OIE1B
Sk9SX1ZFUlNJT04sTUlOT1JfVkVSU0lPTixCVUlMRF9WRVJTSU9OLEJVSUxEX1JFVklTSU9OCi0g
UFJPRFVDVFZFUlNJT04gTUFKT1JfVkVSU0lPTixNSU5PUl9WRVJTSU9OLEJVSUxEX1ZFUlNJT04s
QlVJTERfUkVWSVNJT04KLSBGSUxFRkxBR1NNQVNLIDB4MTdMCi0jaWZkZWYgX0RFQlVHCi0gRklM
RUZMQUdTIDB4MUwKLSNlbHNlCi0gRklMRUZMQUdTIDB4MEwKLSNlbmRpZgotIEZJTEVPUyAweDRM
Ci0gRklMRVRZUEUgMHgyTAotIEZJTEVTVUJUWVBFIDB4MEwKLUJFR0lOCi0gICAgQkxPQ0sgIlN0
cmluZ0ZpbGVJbmZvIgotICAgIEJFR0lOCi0gICAgICAgIEJMT0NLICIwNDA5MDRiMCIKLSAgICAg
ICAgQkVHSU4KLSAgICAgICAgICAgIFZBTFVFICJGaWxlRGVzY3JpcHRpb24iLCAiQU5HTEUgbGli
RUdMIER5bmFtaWMgTGluayBMaWJyYXJ5IgotICAgICAgICAgICAgVkFMVUUgIkZpbGVWZXJzaW9u
IiwgVkVSU0lPTl9TVFJJTkcKLSAgICAgICAgICAgIFZBTFVFICJJbnRlcm5hbE5hbWUiLCAibGli
RUdMIgotICAgICAgICAgICAgVkFMVUUgIkxlZ2FsQ29weXJpZ2h0IiwgIkNvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiIKLSAgICAgICAgICAgIFZBTFVFICJPcmlnaW5hbEZpbGVuYW1lIiwg
ImxpYkVHTC5kbGwiCi0gICAgICAgICAgICBWQUxVRSAiUHJpdmF0ZUJ1aWxkIiwgVkVSU0lPTl9T
VFJJTkcKLSAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0TmFtZSIsICJBTkdMRSBsaWJFR0wgRHlu
YW1pYyBMaW5rIExpYnJhcnkiCi0gICAgICAgICAgICBWQUxVRSAiUHJvZHVjdFZlcnNpb24iLCBW
RVJTSU9OX1NUUklORwotICAgICAgICBFTkQKLSAgICBFTkQKLSAgICBCTE9DSyAiVmFyRmlsZUlu
Zm8iCi0gICAgQkVHSU4KLSAgICAgICAgVkFMVUUgIlRyYW5zbGF0aW9uIiwgMHg0MDksIDEyMDAK
LSAgICBFTkQKLUVORAotCi0jZW5kaWYgICAgLy8gRW5nbGlzaCAoVS5TLikgcmVzb3VyY2VzCi0v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwotCi0KLQotI2lmbmRlZiBBUFNUVURJT19JTlZPS0VECi0vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIEdlbmVyYXRlZCBmcm9tIHRoZSBURVhUSU5DTFVERSAz
IHJlc291cmNlLgotLy8KLQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotI2VuZGlmICAgIC8vIG5v
dCBBUFNUVURJT19JTlZPS0VECisvLyBNaWNyb3NvZnQgVmlzdWFsIEMrKyBnZW5lcmF0ZWQgcmVz
b3VyY2Ugc2NyaXB0Lg0KKy8vDQorI2luY2x1ZGUgInJlc291cmNlLmgiDQorDQorI2RlZmluZSBB
UFNUVURJT19SRUFET05MWV9TWU1CT0xTDQorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCisvLw0KKy8v
IEdlbmVyYXRlZCBmcm9tIHRoZSBURVhUSU5DTFVERSAyIHJlc291cmNlLg0KKy8vDQorI2luY2x1
ZGUgPHdpbmRvd3MuaD4NCisjaW5jbHVkZSAiLi4vY29tbW9uL3ZlcnNpb24uaCINCisNCisvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLw0KKyN1bmRlZiBBUFNUVURJT19SRUFET05MWV9TWU1CT0xTDQorDQor
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8NCisvLyBFbmdsaXNoIChVLlMuKSByZXNvdXJjZXMNCisNCisj
aWYgIWRlZmluZWQoQUZYX1JFU09VUkNFX0RMTCkgfHwgZGVmaW5lZChBRlhfVEFSR19FTlUpDQor
I2lmZGVmIF9XSU4zMg0KK0xBTkdVQUdFIExBTkdfRU5HTElTSCwgU1VCTEFOR19FTkdMSVNIX1VT
DQorI3ByYWdtYSBjb2RlX3BhZ2UoMTI1MikNCisjZW5kaWYgLy9fV0lOMzINCisNCisjaWZkZWYg
QVBTVFVESU9fSU5WT0tFRA0KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQorLy8NCisvLyBURVhUSU5D
TFVERQ0KKy8vDQorDQorMSBURVhUSU5DTFVERSANCitCRUdJTg0KKyAgICAicmVzb3VyY2UuaFww
Ig0KK0VORA0KKw0KKzIgVEVYVElOQ0xVREUgDQorQkVHSU4NCisgICAgIiNpbmNsdWRlICIiYWZ4
cmVzLmgiIlxyXG4iDQorICAgICIjaW5jbHVkZSAiIi4uL2NvbW1vbi92ZXJzaW9uLmgiIlwwIg0K
K0VORA0KKw0KKzMgVEVYVElOQ0xVREUgDQorQkVHSU4NCisgICAgIlxyXG4iDQorICAgICJcMCIN
CitFTkQNCisNCisjZW5kaWYgICAgLy8gQVBTVFVESU9fSU5WT0tFRA0KKw0KKw0KKy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vDQorLy8NCisvLyBWZXJzaW9uDQorLy8NCisNCitWU19WRVJTSU9OX0lORk8g
VkVSU0lPTklORk8NCisgRklMRVZFUlNJT04gTUFKT1JfVkVSU0lPTixNSU5PUl9WRVJTSU9OLEJV
SUxEX1ZFUlNJT04sQlVJTERfUkVWSVNJT04NCisgUFJPRFVDVFZFUlNJT04gTUFKT1JfVkVSU0lP
TixNSU5PUl9WRVJTSU9OLEJVSUxEX1ZFUlNJT04sQlVJTERfUkVWSVNJT04NCisgRklMRUZMQUdT
TUFTSyAweDE3TA0KKyNpZmRlZiBfREVCVUcNCisgRklMRUZMQUdTIDB4MUwNCisjZWxzZQ0KKyBG
SUxFRkxBR1MgMHgwTA0KKyNlbmRpZg0KKyBGSUxFT1MgMHg0TA0KKyBGSUxFVFlQRSAweDJMDQor
IEZJTEVTVUJUWVBFIDB4MEwNCitCRUdJTg0KKyAgICBCTE9DSyAiU3RyaW5nRmlsZUluZm8iDQor
ICAgIEJFR0lODQorICAgICAgICBCTE9DSyAiMDQwOTA0YjAiDQorICAgICAgICBCRUdJTg0KKyAg
ICAgICAgICAgIFZBTFVFICJGaWxlRGVzY3JpcHRpb24iLCAiQU5HTEUgbGliRUdMIER5bmFtaWMg
TGluayBMaWJyYXJ5Ig0KKyAgICAgICAgICAgIFZBTFVFICJGaWxlVmVyc2lvbiIsIFZFUlNJT05f
U1RSSU5HDQorICAgICAgICAgICAgVkFMVUUgIkludGVybmFsTmFtZSIsICJsaWJFR0wiDQorICAg
ICAgICAgICAgVkFMVUUgIkxlZ2FsQ29weXJpZ2h0IiwgIkNvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiINCisgICAgICAgICAgICBWQUxVRSAiT3JpZ2luYWxGaWxlbmFtZSIsICJsaWJFR0wu
ZGxsIg0KKyAgICAgICAgICAgIFZBTFVFICJQcml2YXRlQnVpbGQiLCBWRVJTSU9OX1NUUklORw0K
KyAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0TmFtZSIsICJBTkdMRSBsaWJFR0wgRHluYW1pYyBM
aW5rIExpYnJhcnkiDQorICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3RWZXJzaW9uIiwgVkVSU0lP
Tl9TVFJJTkcNCisgICAgICAgIEVORA0KKyAgICBFTkQNCisgICAgQkxPQ0sgIlZhckZpbGVJbmZv
Ig0KKyAgICBCRUdJTg0KKyAgICAgICAgVkFMVUUgIlRyYW5zbGF0aW9uIiwgMHg0MDksIDEyMDAN
CisgICAgRU5EDQorRU5EDQorDQorI2VuZGlmICAgIC8vIEVuZ2xpc2ggKFUuUy4pIHJlc291cmNl
cw0KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQorDQorDQorDQorI2lmbmRlZiBBUFNUVURJT19JTlZP
S0VEDQorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCisvLw0KKy8vIEdlbmVyYXRlZCBmcm9tIHRoZSBU
RVhUSU5DTFVERSAzIHJlc291cmNlLg0KKy8vDQorDQorDQorLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8N
CisjZW5kaWYgICAgLy8gbm90IEFQU1RVRElPX0lOVk9LRUQNCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGliRUdMLnZjeHByb2oJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC52Y3hwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjU4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVu
Y29kaW5nPSJ1dGYtOCI/Pg0KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNW
ZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Bl
ci9tc2J1aWxkLzIwMDMiPg0KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRp
b25zIj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4N
CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxh
dGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAg
ICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4NCisgICAgICA8Q29u
ZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9Q
bGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25m
aWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9u
PlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9y
bT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0
aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNl
PC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8
L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8UHJvcGVydHlHcm91
cCBMYWJlbD0iR2xvYmFscyI+DQorICAgIDxQcm9qZWN0R3VpZD57RTc0NkZDQTktNjRDMy00MzNF
LTg1RTgtOUE1QTY3QUI3RUQ2fTwvUHJvamVjdEd1aWQ+DQorICAgIDxSb290TmFtZXNwYWNlPmxp
YkVHTDwvUm9vdE5hbWVzcGFjZT4NCisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPg0K
KyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgp
XE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExh
YmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJy
YXJ5PC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFy
YWN0ZXJTZXQ+DQorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9n
cmFtT3B0aW1pemF0aW9uPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMici
IExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNM
aWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9D
aGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFi
ZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJh
cnk8L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJh
Y3RlclNldD4NCisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dy
YW1PcHRpbWl6YXRpb24+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExh
YmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJy
YXJ5PC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFy
YWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNU
YXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJl
bD0iRXh0ZW5zaW9uU2V0dGluZ3MiPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9u
PSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5w
cm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3Vw
Pg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0
IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5w
cm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQ
bGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQor
ICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMi
Pg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQ
bGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRh
UGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlBy
b3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNy
b3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVz
ZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9
IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxQcm9wZXJ0
eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPg0KKyAgPFByb3BlcnR5R3JvdXA+DQorICAgIDxf
UHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4NCisg
ICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAg
ICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8V2luMzInIj4kKENvbmZpZ3VyYXRpb24pXDwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVu
dGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2lu
MzInIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRp
cikkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoQ29uZmlndXJh
dGlvbilcPC9JbnREaXI+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNy
ZW1lbnRhbD4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybSlcJChDb25maWd1
cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlv
bilcPC9JbnREaXI+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+
DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9u
KVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8
L0ludERpcj4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4N
CisgICAgPExpYnJhcnlQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTGlicmFyeVBhdGgpPC9MaWJyYXJ5UGF0aD4NCisgICAg
PExpYnJhcnlQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8V2luMzInIj4kKERYU0RLX0RJUilcbGliXHg4NjskKExpYnJhcnlQYXRoKTwvTGlicmFy
eVBhdGg+DQorICAgIDxMaWJyYXJ5UGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoTGlicmFyeVBhdGgpPC9MaWJyYXJ5UGF0aD4NCisg
ICAgPExpYnJhcnlQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXx4NjQnIj4kKExpYnJhcnlQYXRoKTwvTGlicmFyeVBhdGg+DQorICAgIDxJbmNs
dWRlUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fFdpbjMyJyI+JChEWFNES19ESVIpXGluY2x1ZGU7JChWQ0luc3RhbGxEaXIpaW5jbHVkZTskKFZD
SW5zdGFsbERpcilhdGxtZmNcaW5jbHVkZTskKFdpbmRvd3NTZGtEaXIpaW5jbHVkZTskKEZyYW1l
d29ya1NES0RpcilcaW5jbHVkZTs8L0luY2x1ZGVQYXRoPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0K
KyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRp
bWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLy4uOyAkKFByb2plY3REaXIpLy4uLy4uL2luY2x1
ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19X
SU5ET1dTO19VU1JETEw7TElCRUdMX0VYUE9SVFM7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05P
TUlOTUFYOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9u
cz4NCisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+DQorICAgICAg
PEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+
DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJh
cnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFk
ZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8
VHJlYXRXYXJuaW5nQXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICAgIDxE
ZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZv
cm1hdD4NCisgICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIz
OTs0MjQ0OzQyNDU7NDUxMjs0NzAyOzQ5OTY7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rp
c2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQor
ICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZDNkOS5saWI7JShBZGRpdGlvbmFsRGVwZW5k
ZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8TW9kdWxlRGVmaW5pdGlv
bkZpbGU+bGliRUdMLmRlZjwvTW9kdWxlRGVmaW5pdGlvbkZpbGU+DQorICAgICAgPERlbGF5TG9h
ZERMTHM+JShEZWxheUxvYWRETExzKTwvRGVsYXlMb2FkRExMcz4NCisgICAgICA8R2VuZXJhdGVE
ZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8
U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZl
bnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8VGFyZ2V0
TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICAgIDxQ
b3N0QnVpbGRFdmVudD4NCisgICAgICA8Q29tbWFuZD4lNDBlY2hvIG9uDQorbWtkaXIgIiQoUHJv
amVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIpbGli
RUdMLmRsbCIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29w
eSAiJChPdXREaXIpbGliRUdMLmxpYiIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1
cmF0aW9uKVwiDQorJTQwZWNobyBvZmYNCis8L0NvbW1hbmQ+DQorICAgIDwvUG9zdEJ1aWxkRXZl
bnQ+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
Ij4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRp
bWl6YXRpb24+DQorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPkFueVN1aXRhYmxlPC9J
bmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4kKFByb2plY3REaXIpLy4uOyAkKFByb2plY3REaXIpLy4uLy4uL2luY2x1ZGU7JShBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4N
CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+QU5HTEVfRElTQUJMRV9UUkFDRTtXSU4z
MjtOREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtMSUJFR0xfRVhQT1JUUztfQ1JUX1NFQ1VSRV9OT19E
RVBSRUNBVEU7Tk9NSU5NQVg7X1NFQ1VSRV9TQ0w9MDslKFByZXByb2Nlc3NvckRlZmluaXRpb25z
KTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRp
VGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisg
ICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9X
YXJuaW5nTGV2ZWw+DQorICAgICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJu
aW5nQXNFcnJvcj4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJh
c2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5p
bmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0NDs0MjQ1OzQ1MTI7NDcwMjs0OTk2OyUoRGlzYWJs
ZVNwZWNpZmljV2FybmluZ3MpPC9EaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz4NCisgICAgPC9DbENv
bXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmQzZDku
bGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQor
ICAgICAgPE1vZHVsZURlZmluaXRpb25GaWxlPmxpYkVHTC5kZWY8L01vZHVsZURlZmluaXRpb25G
aWxlPg0KKyAgICAgIDxEZWxheUxvYWRETExzPiUoRGVsYXlMb2FkRExMcyk8L0RlbGF5TG9hZERM
THM+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVn
SW5mb3JtYXRpb24+DQorICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+DQorICAg
ICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAg
PEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8
RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlv
bj4NCisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPg0KKyAg
ICA8L0xpbms+DQorICAgIDxQb3N0QnVpbGRFdmVudD4NCisgICAgICA8Q29tbWFuZD4lNDBlY2hv
IG9uDQorbWtkaXIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQor
Y29weSAiJChPdXREaXIpbGliRUdMLmRsbCIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25m
aWd1cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIpbGliRUdMLmxpYiIgIiQoUHJvamVjdERpciku
LlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorJTQwZWNobyBvZmYNCis8L0NvbW1hbmQ+DQor
ICAgIDwvUG9zdEJ1aWxkRXZlbnQ+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRl
bURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfHg2NCciPg0KKyAgICA8TWlkbD4NCisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+
WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4NCisgICAgPC9NaWRsPg0KKyAgICA8Q2xDb21waWxlPg0K
KyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8QWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLy4uOyAkKFByb2plY3REaXIp
Ly4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lO
MzI7X0RFQlVHO19XSU5ET1dTO19VU1JETEw7TElCRUdMX0VYUE9SVFM7X0NSVF9TRUNVUkVfTk9f
REVQUkVDQVRFO05PTUlOTUFYOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNz
b3JEZWZpbml0aW9ucz4NCisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVp
bGQ+DQorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1
bnRpbWVDaGVja3M+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Zzwv
UnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJl
Y29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZl
bD4NCisgICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0
MjQ0OzQyNDU7NDUxMjs0NzAyOzQ5OTY7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rpc2Fi
bGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dy
YW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8VHJlYXRXYXJuaW5n
QXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICA8L0NsQ29tcGlsZT4NCisg
ICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZDNkOS5saWI7JShBZGRp
dGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8TW9k
dWxlRGVmaW5pdGlvbkZpbGU+bGliRUdMLmRlZjwvTW9kdWxlRGVmaW5pdGlvbkZpbGU+DQorICAg
ICAgPERlbGF5TG9hZERMTHM+JShEZWxheUxvYWRETExzKTwvRGVsYXlMb2FkRExMcz4NCisgICAg
ICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlv
bj4NCisgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4NCisgICAgICA8RGF0YUV4
ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisg
ICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xp
bms+DQorICAgIDxQb3N0QnVpbGRFdmVudD4NCisgICAgICA8Q29tbWFuZD4lNDBlY2hvIG9uDQor
bWtkaXIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAi
JChPdXREaXIpbGliRUdMLmRsbCIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0
aW9uKVwiDQorY29weSAiJChPdXREaXIpbGliRUdMLmxpYiIgIiQoUHJvamVjdERpcikuLlwuLlxs
aWJcJChDb25maWd1cmF0aW9uKVwiDQorJTQwZWNobyBvZmYNCis8L0NvbW1hbmQ+DQorICAgIDwv
UG9zdEJ1aWxkRXZlbnQ+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmlu
aXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8eDY0JyI+DQorICAgIDxNaWRsPg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8
L1RhcmdldEVudmlyb25tZW50Pg0KKyAgICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+DQorICAg
ICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxJbmxpbmVG
dW5jdGlvbkV4cGFuc2lvbj5BbnlTdWl0YWJsZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+DQor
ICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS8uLjsgJChQ
cm9qZWN0RGlyKS8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmlu
aXRpb25zPldJTjMyO05ERUJVRztfV0lORE9XUztfVVNSRExMO0xJQkVHTF9FWFBPUlRTO19DUlRf
U0VDVVJFX05PX0RFUFJFQ0FURTtOT01JTk1BWDtfU0VDVVJFX1NDTD0wOyUoUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8UnVudGltZUxp
YnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZl
bD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+
NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7NDUxMjs0NzAyOzQ5OTY7JShEaXNhYmxlU3Bl
Y2lmaWNXYXJuaW5ncyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICAgIDxEZWJ1Z0lu
Zm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4N
CisgICAgICA8VHJlYXRXYXJuaW5nQXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0K
KyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRl
bmNpZXM+ZDNkOS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVu
ZGVuY2llcz4NCisgICAgICA8TW9kdWxlRGVmaW5pdGlvbkZpbGU+bGliRUdMLmRlZjwvTW9kdWxl
RGVmaW5pdGlvbkZpbGU+DQorICAgICAgPERlbGF5TG9hZERMTHM+JShEZWxheUxvYWRETExzKTwv
RGVsYXlMb2FkRExMcz4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dl
bmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5
c3RlbT4NCisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNl
cz4NCisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5n
Pg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRp
b25QcmV2ZW50aW9uPg0KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1h
Y2hpbmU+DQorICAgIDwvTGluaz4NCisgICAgPFBvc3RCdWlsZEV2ZW50Pg0KKyAgICAgIDxDb21t
YW5kPiU0MGVjaG8gb24NCitta2RpciAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3Vy
YXRpb24pXCINCitjb3B5ICIkKE91dERpcilsaWJFR0wuZGxsIiAiJChQcm9qZWN0RGlyKS4uXC4u
XGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCitjb3B5ICIkKE91dERpcilsaWJFR0wubGliIiAiJChQ
cm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCislNDBlY2hvIG9mZg0KKzwv
Q29tbWFuZD4NCisgICAgPC9Qb3N0QnVpbGRFdmVudD4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91
cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iQ29uZmlnLmNwcCIg
Lz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxDb21tb25cZGVidWcuY3BwIiAvPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9IkRpc3BsYXkuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9ImxpYkVHTC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ibWFpbi5jcHAi
IC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iU3VyZmFjZS5jcHAiIC8+DQorICA8L0l0ZW1H
cm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQ29uZmlnLmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRGlzcGxheS5oIiAvPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXC4uXGluY2x1ZGVcRUdMXGVnbC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXC4uXGluY2x1ZGVcRUdMXGVnbGV4dC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXC4uXGluY2x1ZGVcRUdMXGVnbHBsYXRmb3JtLmgiIC8+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0ibWFpbi5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlc291
cmNlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iU3VyZmFjZS5oIiAvPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNvbW1vblx2ZXJzaW9uLmgiIC8+DQorICA8L0l0ZW1Hcm91
cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxOb25lIEluY2x1ZGU9ImxpYkVHTC5kZWYiIC8+DQor
ICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5j
bHVkZT0ibGliRUdMLnJjIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAg
ICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIuLlxsaWJHTEVTdjJcbGliR0xFU3YyLnZjeHBy
b2oiPg0KKyAgICAgIDxQcm9qZWN0PntiNTg3MWE3YS05NjhjLTQyZTMtYTMzYi05ODFlNmY0NDhl
Nzh9PC9Qcm9qZWN0Pg0KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+DQorICA8L0l0ZW1Hcm91cD4N
CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdl
dHMiIC8+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPg0KKyAgPC9J
bXBvcnRHcm91cD4NCis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9saWJFR0wudmN4cHJvai5maWx0
ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGli
RUdMLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJFR0wvbGliRUdMLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDY4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0K
KzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9z
b2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxG
aWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57
NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4N
CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207
YXNteDwvRXh0ZW5zaW9ucz4NCisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0i
SGVhZGVyIEZpbGVzIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00
YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgICA8RXh0ZW5z
aW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+DQorICAgIDwvRmlsdGVy
Pg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9IkNvbmZpZy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQor
ICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXENvbW1vblxkZWJ1
Zy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xD
b21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkRpc3BsYXkuY3BwIj4NCisgICAgICA8
RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSJsaWJFR0wuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxl
czwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJt
YWluLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9D
bENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iU3VyZmFjZS5jcHAiPg0KKyAgICAg
IDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9J
dGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkNvbmZp
Zy5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5j
bHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJEaXNwbGF5LmgiPg0KKyAgICAgIDxGaWx0
ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXC4uXGluY2x1ZGVcRUdMXGVnbC5oIj4NCisgICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlwuLlxpbmNsdWRlXEVHTFxlZ2xleHQuaCI+DQorICAgICAgPEZpbHRlcj5IZWFk
ZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cLi5caW5jbHVkZVxFR0xcZWdscGxhdGZvcm0uaCI+DQorICAgICAgPEZpbHRlcj5I
ZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0ibWFpbi5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0K
KyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZXNvdXJjZS5oIj4N
CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJTdXJmYWNlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVh
ZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGNvbW1vblx2ZXJzaW9uLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVz
PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdy
b3VwPg0KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9ImxpYkVHTC5yYyIgLz4NCisgIDwv
SXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPE5vbmUgSW5jbHVkZT0ibGliRUdMLmRl
ZiIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0J1ZmZl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9CdWZmZXIuY3BwCShyZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL0J1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcg
QEAgQnVmZmVyOjp+QnVmZmVyKCkKIHZvaWQgQnVmZmVyOjpidWZmZXJEYXRhKGNvbnN0IHZvaWQg
KmRhdGEsIEdMc2l6ZWlwdHIgc2l6ZSwgR0xlbnVtIHVzYWdlKQogewogICAgIG1CdWZmZXJTdG9y
YWdlLT5jbGVhcigpOworICAgIG1JbmRleFJhbmdlQ2FjaGUuY2xlYXIoKTsKICAgICBtQnVmZmVy
U3RvcmFnZS0+c2V0RGF0YShkYXRhLCBzaXplLCAwKTsKIAogICAgIG1Vc2FnZSA9IHVzYWdlOwpA
QCAtNTYsNiArNTcsNyBAQCB2b2lkIEJ1ZmZlcjo6YnVmZmVyRGF0YShjb25zdCB2b2lkICpkYXRh
CiB2b2lkIEJ1ZmZlcjo6YnVmZmVyU3ViRGF0YShjb25zdCB2b2lkICpkYXRhLCBHTHNpemVpcHRy
IHNpemUsIEdMaW50cHRyIG9mZnNldCkKIHsKICAgICBtQnVmZmVyU3RvcmFnZS0+c2V0RGF0YShk
YXRhLCBzaXplLCBvZmZzZXQpOworICAgIG1JbmRleFJhbmdlQ2FjaGUuaW52YWxpZGF0ZVJhbmdl
KG9mZnNldCwgc2l6ZSk7CiAKICAgICBpZiAoKG1TdGF0aWNWZXJ0ZXhCdWZmZXIgJiYgbVN0YXRp
Y1ZlcnRleEJ1ZmZlci0+Z2V0QnVmZmVyU2l6ZSgpICE9IDApIHx8IChtU3RhdGljSW5kZXhCdWZm
ZXIgJiYgbVN0YXRpY0luZGV4QnVmZmVyLT5nZXRCdWZmZXJTaXplKCkgIT0gMCkpCiAgICAgewpA
QCAtNzAsNyArNzIsNyBAQCByeDo6QnVmZmVyU3RvcmFnZSAqQnVmZmVyOjpnZXRTdG9yYWdlKCkg
CiAgICAgcmV0dXJuIG1CdWZmZXJTdG9yYWdlOwogfQogCi11bnNpZ25lZCBpbnQgQnVmZmVyOjpz
aXplKCkKK3Vuc2lnbmVkIGludCBCdWZmZXI6OnNpemUoKSBjb25zdAogewogICAgIHJldHVybiBt
QnVmZmVyU3RvcmFnZS0+Z2V0U2l6ZSgpOwogfQpAQCAtMTE2LDQgKzExOCw5IEBAIHZvaWQgQnVm
ZmVyOjpwcm9tb3RlU3RhdGljVXNhZ2UoaW50IGRhdGEKICAgICB9CiB9CiAKK3J4OjpJbmRleFJh
bmdlQ2FjaGUgKkJ1ZmZlcjo6Z2V0SW5kZXhSYW5nZUNhY2hlKCkKK3sKKyAgICByZXR1cm4gJm1J
bmRleFJhbmdlQ2FjaGU7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9CdWZmZXIuaAkocmV2aXNpb24gMTU5MDkwKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9CdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MTMsNiArMTMsNyBAQAogCiAjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKICNpbmNsdWRl
ICJjb21tb24vUmVmQ291bnRPYmplY3QuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIv
SW5kZXhSYW5nZUNhY2hlLmgiCiAKIG5hbWVzcGFjZSByeAogewpAQCAtMzgsMTMgKzM5LDE1IEBA
IGNsYXNzIEJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudE9iamVjdAogICAgIEdMZW51bSB1c2FnZSgp
IGNvbnN0OwogCiAgICAgcng6OkJ1ZmZlclN0b3JhZ2UgKmdldFN0b3JhZ2UoKSBjb25zdDsKLSAg
ICB1bnNpZ25lZCBpbnQgc2l6ZSgpOworICAgIHVuc2lnbmVkIGludCBzaXplKCkgY29uc3Q7CiAK
ICAgICByeDo6U3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlICpnZXRTdGF0aWNWZXJ0ZXhCdWZm
ZXIoKTsKICAgICByeDo6U3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2UgKmdldFN0YXRpY0luZGV4
QnVmZmVyKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlU3RhdGljRGF0YSgpOwogICAgIHZvaWQgcHJv
bW90ZVN0YXRpY1VzYWdlKGludCBkYXRhU2l6ZSk7CiAKKyAgICByeDo6SW5kZXhSYW5nZUNhY2hl
ICpnZXRJbmRleFJhbmdlQ2FjaGUoKTsKKwogICBwcml2YXRlOgogICAgIERJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTihCdWZmZXIpOwogCkBAIC01Myw2ICs1Niw4IEBAIGNsYXNzIEJ1ZmZlciA6IHB1
YmxpYyBSZWZDb3VudE9iamVjdAogCiAgICAgcng6OkJ1ZmZlclN0b3JhZ2UgKm1CdWZmZXJTdG9y
YWdlOwogCisgICAgcng6OkluZGV4UmFuZ2VDYWNoZSBtSW5kZXhSYW5nZUNhY2hlOworCiAgICAg
cng6OlN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZSAqbVN0YXRpY1ZlcnRleEJ1ZmZlcjsKICAg
ICByeDo6U3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2UgKm1TdGF0aWNJbmRleEJ1ZmZlcjsKICAg
ICB1bnNpZ25lZCBpbnQgbVVubW9kaWZpZWREYXRhVXNlOwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9Db250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0NvbnRleHQuY3BwCShyZXZpc2lvbiAxNTkw
OTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0NvbnRleHQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xODEyLDYgKzE4MTIsOCBAQCB2b2lkIENvbnRleHQ6OmFwcGx5
VGV4dHVyZXMoU2FtcGxlclR5cGUgCiB7CiAgICAgUHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFy
eSA9IGdldEN1cnJlbnRQcm9ncmFtQmluYXJ5KCk7CiAKKyAgICBGcmFtZWJ1ZmZlclRleHR1cmVT
ZXJpYWxTZXQgYm91bmRGcmFtZWJ1ZmZlclRleHR1cmVzID0gZ2V0Qm91bmRGcmFtZWJ1ZmZlclRl
eHR1cmVTZXJpYWxzKCk7CisKICAgICAvLyBSYW5nZSBvZiBEaXJlY3QzRCBzYW1wbGVycyBvZiBn
aXZlbiBzYW1wbGVyIHR5cGUKICAgICBpbnQgc2FtcGxlckNvdW50ID0gKHR5cGUgPT0gU0FNUExF
Ul9QSVhFTCkgPyBNQVhfVEVYVFVSRV9JTUFHRV9VTklUUyA6IG1SZW5kZXJlci0+Z2V0TWF4VmVy
dGV4VGV4dHVyZUltYWdlVW5pdHMoKTsKICAgICBpbnQgc2FtcGxlclJhbmdlID0gcHJvZ3JhbUJp
bmFyeS0+Z2V0VXNlZFNhbXBsZXJSYW5nZSh0eXBlKTsKQEAgLTE4MjUsNyArMTgyNyw4IEBAIHZv
aWQgQ29udGV4dDo6YXBwbHlUZXh0dXJlcyhTYW1wbGVyVHlwZSAKICAgICAgICAgICAgIFRleHR1
cmVUeXBlIHRleHR1cmVUeXBlID0gcHJvZ3JhbUJpbmFyeS0+Z2V0U2FtcGxlclRleHR1cmVUeXBl
KHR5cGUsIHNhbXBsZXJJbmRleCk7CiAgICAgICAgICAgICBUZXh0dXJlICp0ZXh0dXJlID0gZ2V0
U2FtcGxlclRleHR1cmUodGV4dHVyZVVuaXQsIHRleHR1cmVUeXBlKTsKIAotICAgICAgICAgICAg
aWYgKHRleHR1cmUtPmlzU2FtcGxlckNvbXBsZXRlKCkpCisgICAgICAgICAgICBpZiAodGV4dHVy
ZS0+aXNTYW1wbGVyQ29tcGxldGUoKSAmJgorICAgICAgICAgICAgICAgIGJvdW5kRnJhbWVidWZm
ZXJUZXh0dXJlcy5maW5kKHRleHR1cmUtPmdldFRleHR1cmVTZXJpYWwoKSkgPT0gYm91bmRGcmFt
ZWJ1ZmZlclRleHR1cmVzLmVuZCgpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIFNh
bXBsZXJTdGF0ZSBzYW1wbGVyU3RhdGU7CiAgICAgICAgICAgICAgICAgdGV4dHVyZS0+Z2V0U2Ft
cGxlclN0YXRlKCZzYW1wbGVyU3RhdGUpOwpAQCAtMjY1NSw2ICsyNjU4LDI5IEBAIGNvbnN0IGNo
YXIgKkNvbnRleHQ6OmdldFJlbmRlcmVyU3RyaW5nKCkKICAgICByZXR1cm4gbVJlbmRlcmVyU3Ry
aW5nOwogfQogCitDb250ZXh0OjpGcmFtZWJ1ZmZlclRleHR1cmVTZXJpYWxTZXQgQ29udGV4dDo6
Z2V0Qm91bmRGcmFtZWJ1ZmZlclRleHR1cmVTZXJpYWxzKCkKK3sKKyAgICBGcmFtZWJ1ZmZlclRl
eHR1cmVTZXJpYWxTZXQgc2V0OworCisgICAgRnJhbWVidWZmZXIgKmRyYXdGcmFtZWJ1ZmZlciA9
IGdldERyYXdGcmFtZWJ1ZmZlcigpOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
SU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSUzsgaSsrKQorICAgIHsKKyAgICAgICAgUmVu
ZGVyYnVmZmVyICpyZW5kZXJCdWZmZXIgPSBkcmF3RnJhbWVidWZmZXItPmdldENvbG9yYnVmZmVy
KGkpOworICAgICAgICBpZiAocmVuZGVyQnVmZmVyICYmIHJlbmRlckJ1ZmZlci0+Z2V0VGV4dHVy
ZVNlcmlhbCgpICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHNldC5pbnNlcnQocmVuZGVy
QnVmZmVyLT5nZXRUZXh0dXJlU2VyaWFsKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgUmVu
ZGVyYnVmZmVyICpkZXB0aFN0ZW5jaWxCdWZmZXIgPSBkcmF3RnJhbWVidWZmZXItPmdldERlcHRo
T3JTdGVuY2lsYnVmZmVyKCk7CisgICAgaWYgKGRlcHRoU3RlbmNpbEJ1ZmZlciAmJiBkZXB0aFN0
ZW5jaWxCdWZmZXItPmdldFRleHR1cmVTZXJpYWwoKSAhPSAwKQorICAgIHsKKyAgICAgICAgc2V0
Lmluc2VydChkZXB0aFN0ZW5jaWxCdWZmZXItPmdldFRleHR1cmVTZXJpYWwoKSk7CisgICAgfQor
CisgICAgcmV0dXJuIHNldDsKK30KKwogdm9pZCBDb250ZXh0OjpibGl0RnJhbWVidWZmZXIoR0xp
bnQgc3JjWDAsIEdMaW50IHNyY1kwLCBHTGludCBzcmNYMSwgR0xpbnQgc3JjWTEsIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHN0WDAsIEdMaW50IGRzdFkwLCBHTGludCBk
c3RYMSwgR0xpbnQgZHN0WTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJpdGZp
ZWxkIG1hc2spCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0Nv
bnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL0NvbnRleHQuaAkocmV2aXNpb24gMTU5MDkwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9Db250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4LDYgKzE4LDcg
QEAKIAogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8c2V0Pgog
I2lmZGVmIF9NU0NfVkVSCiAjaW5jbHVkZSA8aGFzaF9tYXA+CiAjZWxzZQpAQCAtMzcsNyArMzgs
NiBAQCBjbGFzcyBSZW5kZXJlcjsKIAogbmFtZXNwYWNlIGVnbAogewotY2xhc3MgRGlzcGxheTsK
IGNsYXNzIFN1cmZhY2U7CiB9CiAKQEAgLTM5OCw2ICszOTgsOCBAQCBjbGFzcyBDb250ZXh0CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHN0WDAsIEdMaW50IGRzdFkwLCBHTGludCBk
c3RYMSwgR0xpbnQgZHN0WTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBt
YXNrKTsKIAorICAgIHJ4OjpSZW5kZXJlciAqZ2V0UmVuZGVyZXIoKSB7IHJldHVybiBtUmVuZGVy
ZXI7IH0KKwogICBwcml2YXRlOgogICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihDb250ZXh0
KTsKIApAQCAtNDE5LDYgKzQyMSw5IEBAIGNsYXNzIENvbnRleHQKICAgICB2b2lkIGluaXRFeHRl
bnNpb25TdHJpbmcoKTsKICAgICB2b2lkIGluaXRSZW5kZXJlclN0cmluZygpOwogCisgICAgdHlw
ZWRlZiBzdGQ6OnNldDx1bnNpZ25lZD4gRnJhbWVidWZmZXJUZXh0dXJlU2VyaWFsU2V0OworICAg
IEZyYW1lYnVmZmVyVGV4dHVyZVNlcmlhbFNldCBnZXRCb3VuZEZyYW1lYnVmZmVyVGV4dHVyZVNl
cmlhbHMoKTsKKwogICAgIHJ4OjpSZW5kZXJlciAqY29uc3QgbVJlbmRlcmVyOwogCiAgICAgU3Rh
dGUgbVN0YXRlOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9G
cmFtZWJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvRnJhbWVidWZmZXIuaAkocmV2aXNpb24gMTU5MDkwKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMiw3ICsxMiw3IEBACiAKICNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgogI2luY2x1
ZGUgImNvbW1vbi9SZWZDb3VudE9iamVjdC5oIgotI2luY2x1ZGUgImNvbnN0YW50cy5oIgorI2lu
Y2x1ZGUgIkNvbnN0YW50cy5oIgogCiBuYW1lc3BhY2UgcngKIHsKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUHJvZ3JhbUJpbmFyeS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9Qcm9ncmFtQmluYXJ5LmNw
cAkocmV2aXNpb24gMTU5MDkwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9Qcm9ncmFtQmluYXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsMTEgQEAg
c3RkOjpzdHJpbmcgc3RyKGludCBpKQogICAgIHJldHVybiBidWZmZXI7CiB9CiAKK3N0YXRpYyBy
eDo6RDNEV29ya2Fyb3VuZFR5cGUgRGlzY2FyZFdvcmthcm91bmQoYm9vbCB1c2VzRGlzY2FyZCkK
K3sKKyAgICByZXR1cm4gKHVzZXNEaXNjYXJkID8gcng6OkFOR0xFX0QzRF9XT1JLQVJPVU5EX1NN
M19PUFRJTUlaRVIgOiByeDo6QU5HTEVfRDNEX1dPUktBUk9VTkRfTk9ORSk7Cit9CisKIFVuaWZv
cm1Mb2NhdGlvbjo6VW5pZm9ybUxvY2F0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLCB1bnNp
Z25lZCBpbnQgZWxlbWVudCwgdW5zaWduZWQgaW50IGluZGV4KSAKICAgICA6IG5hbWUobmFtZSks
IGVsZW1lbnQoZWxlbWVudCksIGluZGV4KGluZGV4KQogewpAQCAtMTY0Nyw2ICsxNjUyLDggQEAg
Ym9vbCBQcm9ncmFtQmluYXJ5Ojpsb2FkKEluZm9Mb2cgJmluZm9MbwogICAgICAgICBzdHJlYW0u
cmVhZCgmbVNlbWFudGljSW5kZXhbaV0pOwogICAgIH0KIAorICAgIGluaXRBdHRyaWJ1dGVzQnlM
YXlvdXQoKTsKKwogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgTUFYX1RFWFRVUkVf
SU1BR0VfVU5JVFM7ICsraSkKICAgICB7CiAgICAgICAgIHN0cmVhbS5yZWFkKCZtU2FtcGxlcnNQ
U1tpXS5hY3RpdmUpOwpAQCAtMTk2MCwxMyArMTk2NywxMyBAQCBib29sIFByb2dyYW1CaW5hcnk6
OmxpbmsoSW5mb0xvZyAmaW5mb0xvCiAKICAgICBpZiAoc3VjY2VzcykKICAgICB7Ci0gICAgICAg
IG1WZXJ0ZXhFeGVjdXRhYmxlID0gbVJlbmRlcmVyLT5jb21waWxlVG9FeGVjdXRhYmxlKGluZm9M
b2csIHZlcnRleEhMU0wuY19zdHIoKSwgcng6OlNIQURFUl9WRVJURVgpOwotICAgICAgICBtUGl4
ZWxFeGVjdXRhYmxlID0gbVJlbmRlcmVyLT5jb21waWxlVG9FeGVjdXRhYmxlKGluZm9Mb2csIHBp
eGVsSExTTC5jX3N0cigpLCByeDo6U0hBREVSX1BJWEVMKTsKKyAgICAgICAgbVZlcnRleEV4ZWN1
dGFibGUgPSBtUmVuZGVyZXItPmNvbXBpbGVUb0V4ZWN1dGFibGUoaW5mb0xvZywgdmVydGV4SExT
TC5jX3N0cigpLCByeDo6U0hBREVSX1ZFUlRFWCwgRGlzY2FyZFdvcmthcm91bmQodmVydGV4U2hh
ZGVyLT5tVXNlc0Rpc2NhcmRSZXdyaXRpbmcpKTsKKyAgICAgICAgbVBpeGVsRXhlY3V0YWJsZSA9
IG1SZW5kZXJlci0+Y29tcGlsZVRvRXhlY3V0YWJsZShpbmZvTG9nLCBwaXhlbEhMU0wuY19zdHIo
KSwgcng6OlNIQURFUl9QSVhFTCwgRGlzY2FyZFdvcmthcm91bmQoZnJhZ21lbnRTaGFkZXItPm1V
c2VzRGlzY2FyZFJld3JpdGluZykpOwogCiAgICAgICAgIGlmICh1c2VzR2VvbWV0cnlTaGFkZXIo
KSkKICAgICAgICAgewogICAgICAgICAgICAgc3RkOjpzdHJpbmcgZ2VvbWV0cnlITFNMID0gZ2Vu
ZXJhdGVHZW9tZXRyeVNoYWRlckhMU0wocmVnaXN0ZXJzLCBwYWNraW5nLCBmcmFnbWVudFNoYWRl
ciwgdmVydGV4U2hhZGVyKTsKLSAgICAgICAgICAgIG1HZW9tZXRyeUV4ZWN1dGFibGUgPSBtUmVu
ZGVyZXItPmNvbXBpbGVUb0V4ZWN1dGFibGUoaW5mb0xvZywgZ2VvbWV0cnlITFNMLmNfc3RyKCks
IHJ4OjpTSEFERVJfR0VPTUVUUlkpOworICAgICAgICAgICAgbUdlb21ldHJ5RXhlY3V0YWJsZSA9
IG1SZW5kZXJlci0+Y29tcGlsZVRvRXhlY3V0YWJsZShpbmZvTG9nLCBnZW9tZXRyeUhMU0wuY19z
dHIoKSwgcng6OlNIQURFUl9HRU9NRVRSWSwgcng6OkFOR0xFX0QzRF9XT1JLQVJPVU5EX05PTkUp
OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFtVmVydGV4RXhlY3V0YWJsZSB8fCAhbVBpeGVs
RXhlY3V0YWJsZSB8fCAodXNlc0dlb21ldHJ5U2hhZGVyKCkgJiYgIW1HZW9tZXRyeUV4ZWN1dGFi
bGUpKQpAQCAtMjA1Myw2ICsyMDYwLDggQEAgYm9vbCBQcm9ncmFtQmluYXJ5OjpsaW5rQXR0cmli
dXRlcyhJbmZvTAogICAgICAgICB9CiAgICAgfQogCisgICAgaW5pdEF0dHJpYnV0ZXNCeUxheW91
dCgpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI1NzksMTIgKzI1ODgsNiBAQCBzdHJ1
Y3QgQXR0cmlidXRlU29ydGVyCiAgICAgQXR0cmlidXRlU29ydGVyKGNvbnN0IGludCAoJnNlbWFu
dGljSW5kaWNlcylbTUFYX1ZFUlRFWF9BVFRSSUJTXSkKICAgICAgICAgOiBvcmlnaW5hbEluZGlj
ZXMoc2VtYW50aWNJbmRpY2VzKQogICAgIHsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBN
QVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgaW5kaWNlc1tp
XSA9IGk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGQ6OnNvcnQoJmluZGljZXNbMF0sICZpbmRp
Y2VzW01BWF9WRVJURVhfQVRUUklCU10sICp0aGlzKTsKICAgICB9CiAKICAgICBib29sIG9wZXJh
dG9yKCkoaW50IGEsIGludCBiKQpAQCAtMjU5MiwyNyArMjU5NSwzMiBAQCBzdHJ1Y3QgQXR0cmli
dXRlU29ydGVyCiAgICAgICAgIHJldHVybiBvcmlnaW5hbEluZGljZXNbYV0gPT0gLTEgPyBmYWxz
ZSA6IG9yaWdpbmFsSW5kaWNlc1thXSA8IG9yaWdpbmFsSW5kaWNlc1tiXTsKICAgICB9CiAKLSAg
ICBpbnQgaW5kaWNlc1tNQVhfVkVSVEVYX0FUVFJJQlNdOwogICAgIGNvbnN0IGludCAoJm9yaWdp
bmFsSW5kaWNlcylbTUFYX1ZFUlRFWF9BVFRSSUJTXTsKIH07CiAKLXZvaWQgUHJvZ3JhbUJpbmFy
eTo6c29ydEF0dHJpYnV0ZXNCeUxheW91dChyeDo6VHJhbnNsYXRlZEF0dHJpYnV0ZSBhdHRyaWJ1
dGVzW01BWF9WRVJURVhfQVRUUklCU10sIGludCBzb3J0ZWRTZW1hbnRpY0luZGljZXNbTUFYX1ZF
UlRFWF9BVFRSSUJTXSkgY29uc3QKK3ZvaWQgUHJvZ3JhbUJpbmFyeTo6aW5pdEF0dHJpYnV0ZXNC
eUxheW91dCgpCiB7Ci0gICAgQXR0cmlidXRlU29ydGVyIHNvcnRlcihtU2VtYW50aWNJbmRleCk7
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKKyAgICB7
CisgICAgICAgIG1BdHRyaWJ1dGVzQnlMYXlvdXRbaV0gPSBpOworICAgIH0KIAotICAgIGludCBv
bGRJbmRpY2VzW01BWF9WRVJURVhfQVRUUklCU107CisgICAgc3RkOjpzb3J0KCZtQXR0cmlidXRl
c0J5TGF5b3V0WzBdLCAmbUF0dHJpYnV0ZXNCeUxheW91dFtNQVhfVkVSVEVYX0FUVFJJQlNdLCBB
dHRyaWJ1dGVTb3J0ZXIobVNlbWFudGljSW5kZXgpKTsKK30KKwordm9pZCBQcm9ncmFtQmluYXJ5
Ojpzb3J0QXR0cmlidXRlc0J5TGF5b3V0KHJ4OjpUcmFuc2xhdGVkQXR0cmlidXRlIGF0dHJpYnV0
ZXNbTUFYX1ZFUlRFWF9BVFRSSUJTXSwgaW50IHNvcnRlZFNlbWFudGljSW5kaWNlc1tNQVhfVkVS
VEVYX0FUVFJJQlNdKSBjb25zdAorewogICAgIHJ4OjpUcmFuc2xhdGVkQXR0cmlidXRlIG9sZFRy
YW5zbGF0ZWRBdHRyaWJ1dGVzW01BWF9WRVJURVhfQVRUUklCU107CiAKICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IE1BWF9WRVJURVhfQVRUUklCUzsgaSsrKQogICAgIHsKLSAgICAgICAgb2xkSW5k
aWNlc1tpXSA9IG1TZW1hbnRpY0luZGV4W2ldOwogICAgICAgICBvbGRUcmFuc2xhdGVkQXR0cmli
dXRlc1tpXSA9IGF0dHJpYnV0ZXNbaV07CiAgICAgfQogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKICAgICB7Ci0gICAgICAgIGludCBvbGRJbmRleCA9
IHNvcnRlci5pbmRpY2VzW2ldOwotICAgICAgICBzb3J0ZWRTZW1hbnRpY0luZGljZXNbaV0gPSBv
bGRJbmRpY2VzW29sZEluZGV4XTsKKyAgICAgICAgaW50IG9sZEluZGV4ID0gbUF0dHJpYnV0ZXNC
eUxheW91dFtpXTsKKyAgICAgICAgc29ydGVkU2VtYW50aWNJbmRpY2VzW2ldID0gbVNlbWFudGlj
SW5kZXhbb2xkSW5kZXhdOwogICAgICAgICBhdHRyaWJ1dGVzW2ldID0gb2xkVHJhbnNsYXRlZEF0
dHJpYnV0ZXNbb2xkSW5kZXhdOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvUHJvZ3JhbUJpbmFyeS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUHJvZ3JhbUJpbmFyeS5oCShyZXZpc2lvbiAx
NTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Byb2dyYW1C
aW5hcnkuaAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDYgKzExNCw3IEBAIGNsYXNzIFByb2dyYW1C
aW5hcnkgOiBwdWJsaWMgUmVmQ291bnRPYmoKIAogICAgIHVuc2lnbmVkIGludCBnZXRTZXJpYWwo
KSBjb25zdDsKIAorICAgIHZvaWQgaW5pdEF0dHJpYnV0ZXNCeUxheW91dCgpOwogICAgIHZvaWQg
c29ydEF0dHJpYnV0ZXNCeUxheW91dChyeDo6VHJhbnNsYXRlZEF0dHJpYnV0ZSBhdHRyaWJ1dGVz
W2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNdLCBpbnQgc29ydGVkU2VtYW50aWNJbmRpY2VzW01BWF9W
RVJURVhfQVRUUklCU10pIGNvbnN0OwogCiAgICAgc3RhdGljIHN0ZDo6c3RyaW5nIGRlY29yYXRl
QXR0cmlidXRlKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKTsgICAgLy8gUHJlcGVuZCBhbiB1bmRl
cnNjb3JlCkBAIC0xNDIsNiArMTQzLDcgQEAgY2xhc3MgUHJvZ3JhbUJpbmFyeSA6IHB1YmxpYyBS
ZWZDb3VudE9iagogCiAgICAgQXR0cmlidXRlIG1MaW5rZWRBdHRyaWJ1dGVbTUFYX1ZFUlRFWF9B
VFRSSUJTXTsKICAgICBpbnQgbVNlbWFudGljSW5kZXhbTUFYX1ZFUlRFWF9BVFRSSUJTXTsKKyAg
ICBpbnQgbUF0dHJpYnV0ZXNCeUxheW91dFtNQVhfVkVSVEVYX0FUVFJJQlNdOwogCiAgICAgc3Ry
dWN0IFNhbXBsZXIKICAgICB7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL1JlbmRlcmJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9SZW5kZXJidWZmZXIuY3BwCShyZXZpc2lvbiAxNTkwOTApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyOSw2ICsxMjksMTEgQEAgdW5zaWduZWQgaW50IFJlbmRlcmJ1
ZmZlclRleHR1cmUyRDo6Z2V0UwogICAgIHJldHVybiBtVGV4dHVyZTJELT5nZXRSZW5kZXJUYXJn
ZXRTZXJpYWwobVRhcmdldCk7CiB9CiAKK3Vuc2lnbmVkIGludCBSZW5kZXJidWZmZXJUZXh0dXJl
MkQ6OmdldFRleHR1cmVTZXJpYWwoKSBjb25zdAoreworICAgIHJldHVybiBtVGV4dHVyZTJELT5n
ZXRUZXh0dXJlU2VyaWFsKCk7Cit9CisKIC8vLy8vIFJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFw
IEltcGxlbWVudGF0aW9uIC8vLy8vLy8vCiAKIFJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwOjpS
ZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcChUZXh0dXJlQ3ViZU1hcCAqdGV4dHVyZSwgR0xlbnVt
IHRhcmdldCkgOiBtVGFyZ2V0KHRhcmdldCkKQEAgLTE5Myw2ICsxOTgsMTEgQEAgdW5zaWduZWQg
aW50IFJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwOgogICAgIHJldHVybiBtVGV4dHVyZUN1YmVN
YXAtPmdldFJlbmRlclRhcmdldFNlcmlhbChtVGFyZ2V0KTsKIH0KIAordW5zaWduZWQgaW50IFJl
bmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwOjpnZXRUZXh0dXJlU2VyaWFsKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbVRleHR1cmVDdWJlTWFwLT5nZXRUZXh0dXJlU2VyaWFsKCk7Cit9CisKIC8vLy8v
LyBSZW5kZXJidWZmZXIgSW1wbGVtZW50YXRpb24gLy8vLy8vCiAKIFJlbmRlcmJ1ZmZlcjo6UmVu
ZGVyYnVmZmVyKHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIsIEdMdWludCBpZCwgUmVuZGVyYnVmZmVy
SW50ZXJmYWNlICppbnN0YW5jZSkgOiBSZWZDb3VudE9iamVjdChpZCkKQEAgLTI5Miw2ICszMDIs
MTEgQEAgdW5zaWduZWQgaW50IFJlbmRlcmJ1ZmZlcjo6Z2V0U2VyaWFsKCkgYwogICAgIHJldHVy
biBtSW5zdGFuY2UtPmdldFNlcmlhbCgpOwogfQogCit1bnNpZ25lZCBpbnQgUmVuZGVyYnVmZmVy
OjpnZXRUZXh0dXJlU2VyaWFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUluc3RhbmNlLT5nZXRU
ZXh0dXJlU2VyaWFsKCk7Cit9CisKIHZvaWQgUmVuZGVyYnVmZmVyOjpzZXRTdG9yYWdlKFJlbmRl
cmJ1ZmZlclN0b3JhZ2UgKm5ld1N0b3JhZ2UpCiB7CiAgICAgQVNTRVJUKG5ld1N0b3JhZ2UgIT0g
TlVMTCk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1JlbmRl
cmJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvUmVuZGVyYnVmZmVyLmgJKHJldmlzaW9uIDE1OTA5MCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUmVuZGVyYnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTYwLDYgKzYwLDcgQEAgY2xhc3MgUmVuZGVyYnVmZmVySW50ZXJmYWNlCiAgICAgR0x1aW50IGdl
dFN0ZW5jaWxTaXplKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRTZXJp
YWwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0VGV4dHVyZVNlcmlh
bCgpIGNvbnN0ID0gMDsKIAogICBwcml2YXRlOgogICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
TihSZW5kZXJidWZmZXJJbnRlcmZhY2UpOwpAQCAtODUsNiArODYsNyBAQCBjbGFzcyBSZW5kZXJi
dWZmZXJUZXh0dXJlMkQgOiBwdWJsaWMgUmVuCiAgICAgdmlydHVhbCBHTHNpemVpIGdldFNhbXBs
ZXMoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFNlcmlhbCgpIGNvbnN0
OworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFRleHR1cmVTZXJpYWwoKSBjb25zdDsKIAog
ICBwcml2YXRlOgogICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihSZW5kZXJidWZmZXJUZXh0
dXJlMkQpOwpAQCAtMTEzLDYgKzExNSw3IEBAIGNsYXNzIFJlbmRlcmJ1ZmZlclRleHR1cmVDdWJl
TWFwIDogcHVibGkKICAgICB2aXJ0dWFsIEdMc2l6ZWkgZ2V0U2FtcGxlcygpIGNvbnN0OwogCiAg
ICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0U2VyaWFsKCkgY29uc3Q7CisgICAgdmlydHVhbCB1
bnNpZ25lZCBpbnQgZ2V0VGV4dHVyZVNlcmlhbCgpIGNvbnN0OwogCiAgIHByaXZhdGU6CiAgICAg
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwKTsKQEAg
LTE0MSw2ICsxNDQsNyBAQCBjbGFzcyBSZW5kZXJidWZmZXJTdG9yYWdlIDogcHVibGljIFJlbmRl
CiAgICAgdmlydHVhbCBHTHNpemVpIGdldFNhbXBsZXMoKSBjb25zdDsKIAogICAgIHZpcnR1YWwg
dW5zaWduZWQgaW50IGdldFNlcmlhbCgpIGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50
IGdldFRleHR1cmVTZXJpYWwoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKICAgICBzdGF0aWMgdW5z
aWduZWQgaW50IGlzc3VlU2VyaWFsKCk7CiAgICAgc3RhdGljIHVuc2lnbmVkIGludCBpc3N1ZUN1
YmVTZXJpYWxzKCk7CkBAIC0xOTMsNiArMTk3LDcgQEAgY2xhc3MgUmVuZGVyYnVmZmVyIDogcHVi
bGljIFJlZkNvdW50T2JqZQogICAgIEdMc2l6ZWkgZ2V0U2FtcGxlcygpIGNvbnN0OwogCiAgICAg
dW5zaWduZWQgaW50IGdldFNlcmlhbCgpIGNvbnN0OworICAgIHVuc2lnbmVkIGludCBnZXRUZXh0
dXJlU2VyaWFsKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldFN0b3JhZ2UoUmVuZGVyYnVmZmVyU3Rv
cmFnZSAqbmV3U3RvcmFnZSk7CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvU2hhZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL1NoYWRlci5jcHAJKHJldmlzaW9uIDE1OTA5MCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvU2hhZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzA3LDYgKzMwNyw3IEBAIHZvaWQgU2hhZGVyOjpwYXJzZVZhcnlpbmdzKCkKICAgICAgICAg
bVVzZXNQb2ludENvb3JkID0gc3Ryc3RyKG1IbHNsLCAiR0xfVVNFU19QT0lOVF9DT09SRCIpICE9
IE5VTEw7CiAgICAgICAgIG1Vc2VzRGVwdGhSYW5nZSA9IHN0cnN0cihtSGxzbCwgIkdMX1VTRVNf
REVQVEhfUkFOR0UiKSAhPSBOVUxMOwogICAgICAgICBtVXNlc0ZyYWdEZXB0aCA9IHN0cnN0ciht
SGxzbCwgIkdMX1VTRVNfRlJBR19ERVBUSCIpICE9IE5VTEw7CisgICAgICAgIG1Vc2VzRGlzY2Fy
ZFJld3JpdGluZyA9IHN0cnN0cihtSGxzbCwgIkFOR0xFX1VTRVNfRElTQ0FSRF9SRVdSSVRJTkci
KSAhPSBOVUxMOwogICAgIH0KIH0KIApAQCAtMzQwLDYgKzM0MSw3IEBAIHZvaWQgU2hhZGVyOjp1
bmNvbXBpbGUoKQogICAgIG1Vc2VzUG9pbnRDb29yZCA9IGZhbHNlOwogICAgIG1Vc2VzRGVwdGhS
YW5nZSA9IGZhbHNlOwogICAgIG1Vc2VzRnJhZ0RlcHRoID0gZmFsc2U7CisgICAgbVVzZXNEaXNj
YXJkUmV3cml0aW5nID0gZmFsc2U7CiAKICAgICBtQWN0aXZlVW5pZm9ybXMuY2xlYXIoKTsKIH0K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvU2hhZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9TaGFkZXIu
aAkocmV2aXNpb24gMTU5MDkwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9TaGFkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYgKzEwNyw3IEBAIGNsYXNzIFNo
YWRlcgogICAgIGJvb2wgbVVzZXNQb2ludENvb3JkOwogICAgIGJvb2wgbVVzZXNEZXB0aFJhbmdl
OwogICAgIGJvb2wgbVVzZXNGcmFnRGVwdGg7CisgICAgYm9vbCBtVXNlc0Rpc2NhcmRSZXdyaXRp
bmc7CiAKICAgICBzdGF0aWMgdm9pZCAqbUZyYWdtZW50Q29tcGlsZXI7CiAgICAgc3RhdGljIHZv
aWQgKm1WZXJ0ZXhDb21waWxlcjsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvVGV4dHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9UZXh0dXJlLmNwcAkocmV2aXNpb24gMTU5MDkwKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9UZXh0dXJlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTM1OCwxMCArMTM1OCwxMCBAQCB2b2lkIFRleHR1cmVDdWJlTWFwOjpzdG9yYWdlKEdM
c2l6ZWkgbGV2CiAKICAgICBmb3IgKGludCBsZXZlbCA9IDA7IGxldmVsIDwgbGV2ZWxzOyBsZXZl
bCsrKQogICAgIHsKKyAgICAgICAgR0xzaXplaSBtaXBTaXplID0gc3RkOjptYXgoMSwgc2l6ZSA+
PiBsZXZlbCk7CiAgICAgICAgIGZvciAoaW50IGZhY2UgPSAwOyBmYWNlIDwgNjsgZmFjZSsrKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBtSW1hZ2VBcnJheVtmYWNlXVtsZXZlbF0tPnJlZGVmaW5l
KG1SZW5kZXJlciwgaW50ZXJuYWxmb3JtYXQsIHNpemUsIHNpemUsIHRydWUpOwotICAgICAgICAg
ICAgc2l6ZSA9IHN0ZDo6bWF4KDEsIHNpemUgPj4gMSk7CisgICAgICAgICAgICBtSW1hZ2VBcnJh
eVtmYWNlXVtsZXZlbF0tPnJlZGVmaW5lKG1SZW5kZXJlciwgaW50ZXJuYWxmb3JtYXQsIG1pcFNp
emUsIG1pcFNpemUsIHRydWUpOwogICAgICAgICB9CiAgICAgfQogCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1VuaWZvcm0uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVW5pZm9ybS5jcHAJKHJldmlzaW9u
IDE1OTA5MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVW5pZm9y
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNDMgKzEsNDMgQEAKICNpbmNsdWRlICJwcmVjb21w
aWxlZC5oIgotLy8NCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxMyBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCi0vLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KLS8vDQotDQotI2luY2x1ZGUgImxpYkdMRVN2Mi9V
bmlmb3JtLmgiDQotDQotI2luY2x1ZGUgImxpYkdMRVN2Mi91dGlsaXRpZXMuaCINCi0NCi1uYW1l
c3BhY2UgZ2wNCi17DQotDQotVW5pZm9ybTo6VW5pZm9ybShHTGVudW0gdHlwZSwgR0xlbnVtIHBy
ZWNpc2lvbiwgY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsIHVuc2lnbmVkIGludCBhcnJheVNpemUp
DQotICAgIDogdHlwZSh0eXBlKSwgcHJlY2lzaW9uKHByZWNpc2lvbiksIG5hbWUobmFtZSksIGFy
cmF5U2l6ZShhcnJheVNpemUpDQotew0KLSAgICBpbnQgYnl0ZXMgPSBnbDo6VW5pZm9ybUludGVy
bmFsU2l6ZSh0eXBlKSAqIGVsZW1lbnRDb3VudCgpOw0KLSAgICBkYXRhID0gbmV3IHVuc2lnbmVk
IGNoYXJbYnl0ZXNdOw0KLSAgICBtZW1zZXQoZGF0YSwgMCwgYnl0ZXMpOw0KLSAgICBkaXJ0eSA9
IHRydWU7DQotDQotICAgIHBzUmVnaXN0ZXJJbmRleCA9IC0xOw0KLSAgICB2c1JlZ2lzdGVySW5k
ZXggPSAtMTsNCi0gICAgcmVnaXN0ZXJDb3VudCA9IFZhcmlhYmxlUm93Q291bnQodHlwZSkgKiBl
bGVtZW50Q291bnQoKTsNCi19DQotDQotVW5pZm9ybTo6flVuaWZvcm0oKQ0KLXsNCi0gICAgZGVs
ZXRlW10gZGF0YTsNCi19DQotDQotYm9vbCBVbmlmb3JtOjppc0FycmF5KCkgY29uc3QNCi17DQot
ICAgIHJldHVybiBhcnJheVNpemUgPiAwOw0KLX0NCi0NCi11bnNpZ25lZCBpbnQgVW5pZm9ybTo6
ZWxlbWVudENvdW50KCkgY29uc3QNCi17DQotICAgIHJldHVybiBhcnJheVNpemUgPiAwID8gYXJy
YXlTaXplIDogMTsNCi19DQotDQotfQ0KKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxMyBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJs
aWJHTEVTdjIvVW5pZm9ybS5oIgorCisjaW5jbHVkZSAibGliR0xFU3YyL3V0aWxpdGllcy5oIgor
CituYW1lc3BhY2UgZ2wKK3sKKworVW5pZm9ybTo6VW5pZm9ybShHTGVudW0gdHlwZSwgR0xlbnVt
IHByZWNpc2lvbiwgY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsIHVuc2lnbmVkIGludCBhcnJheVNp
emUpCisgICAgOiB0eXBlKHR5cGUpLCBwcmVjaXNpb24ocHJlY2lzaW9uKSwgbmFtZShuYW1lKSwg
YXJyYXlTaXplKGFycmF5U2l6ZSkKK3sKKyAgICBpbnQgYnl0ZXMgPSBnbDo6VW5pZm9ybUludGVy
bmFsU2l6ZSh0eXBlKSAqIGVsZW1lbnRDb3VudCgpOworICAgIGRhdGEgPSBuZXcgdW5zaWduZWQg
Y2hhcltieXRlc107CisgICAgbWVtc2V0KGRhdGEsIDAsIGJ5dGVzKTsKKyAgICBkaXJ0eSA9IHRy
dWU7CisKKyAgICBwc1JlZ2lzdGVySW5kZXggPSAtMTsKKyAgICB2c1JlZ2lzdGVySW5kZXggPSAt
MTsKKyAgICByZWdpc3RlckNvdW50ID0gVmFyaWFibGVSb3dDb3VudCh0eXBlKSAqIGVsZW1lbnRD
b3VudCgpOworfQorCitVbmlmb3JtOjp+VW5pZm9ybSgpCit7CisgICAgZGVsZXRlW10gZGF0YTsK
K30KKworYm9vbCBVbmlmb3JtOjppc0FycmF5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gYXJyYXlT
aXplID4gMDsKK30KKwordW5zaWduZWQgaW50IFVuaWZvcm06OmVsZW1lbnRDb3VudCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGFycmF5U2l6ZSA+IDAgPyBhcnJheVNpemUgOiAxOworfQorCit9Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1VuaWZvcm0uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1VuaWZvcm0u
aAkocmV2aXNpb24gMTU5MDkwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9Vbmlmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDggKzEsNDggQEAKLS8vDQotLy8g
Q29weXJpZ2h0IChjKSAyMDEwLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4NCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQotLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4NCi0vLw0KLQ0KLSNpZm5kZWYgTElCR0xFU1YyX1VOSUZPUk1fSF8NCi0jZGVmaW5l
IExJQkdMRVNWMl9VTklGT1JNX0hfDQotDQotI2luY2x1ZGUgPHN0cmluZz4NCi0jaW5jbHVkZSA8
dmVjdG9yPg0KLQ0KLSNkZWZpbmUgR0xfQVBJQ0FMTA0KLSNpbmNsdWRlIDxHTEVTMi9nbDIuaD4N
Ci0NCi0jaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiDQotDQotbmFtZXNwYWNlIGdsDQotew0KLQ0K
LS8vIEhlbHBlciBzdHJ1Y3QgcmVwcmVzZW50aW5nIGEgc2luZ2xlIHNoYWRlciB1bmlmb3JtDQot
c3RydWN0IFVuaWZvcm0NCi17DQotICAgIFVuaWZvcm0oR0xlbnVtIHR5cGUsIEdMZW51bSBwcmVj
aXNpb24sIGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLCB1bnNpZ25lZCBpbnQgYXJyYXlTaXplKTsN
Ci0NCi0gICAgflVuaWZvcm0oKTsNCi0NCi0gICAgYm9vbCBpc0FycmF5KCkgY29uc3Q7DQotICAg
IHVuc2lnbmVkIGludCBlbGVtZW50Q291bnQoKSBjb25zdDsNCi0NCi0gICAgY29uc3QgR0xlbnVt
IHR5cGU7DQotICAgIGNvbnN0IEdMZW51bSBwcmVjaXNpb247DQotICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nIG5hbWU7DQotICAgIGNvbnN0IHVuc2lnbmVkIGludCBhcnJheVNpemU7DQotDQotICAgIHVu
c2lnbmVkIGNoYXIgKmRhdGE7DQotICAgIGJvb2wgZGlydHk7DQotDQotICAgIGludCBwc1JlZ2lz
dGVySW5kZXg7DQotICAgIGludCB2c1JlZ2lzdGVySW5kZXg7DQotICAgIHVuc2lnbmVkIGludCBy
ZWdpc3RlckNvdW50Ow0KLX07DQotDQotdHlwZWRlZiBzdGQ6OnZlY3RvcjxVbmlmb3JtKj4gVW5p
Zm9ybUFycmF5Ow0KLQ0KLX0NCi0NCi0jZW5kaWYgICAvLyBMSUJHTEVTVjJfVU5JRk9STV9IXw0K
Ky8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpZm5kZWYgTElCR0xFU1YyX1VOSUZPUk1fSF8KKyNkZWZp
bmUgTElCR0xFU1YyX1VOSUZPUk1fSF8KKworI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2
ZWN0b3I+CisKKyNkZWZpbmUgR0xfQVBJQ0FMTAorI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgorCisj
aW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25hbWVzcGFjZSBnbAoreworCisvLyBIZWxwZXIg
c3RydWN0IHJlcHJlc2VudGluZyBhIHNpbmdsZSBzaGFkZXIgdW5pZm9ybQorc3RydWN0IFVuaWZv
cm0KK3sKKyAgICBVbmlmb3JtKEdMZW51bSB0eXBlLCBHTGVudW0gcHJlY2lzaW9uLCBjb25zdCBz
dGQ6OnN0cmluZyAmbmFtZSwgdW5zaWduZWQgaW50IGFycmF5U2l6ZSk7CisKKyAgICB+VW5pZm9y
bSgpOworCisgICAgYm9vbCBpc0FycmF5KCkgY29uc3Q7CisgICAgdW5zaWduZWQgaW50IGVsZW1l
bnRDb3VudCgpIGNvbnN0OworCisgICAgY29uc3QgR0xlbnVtIHR5cGU7CisgICAgY29uc3QgR0xl
bnVtIHByZWNpc2lvbjsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBuYW1lOworICAgIGNvbnN0IHVu
c2lnbmVkIGludCBhcnJheVNpemU7CisKKyAgICB1bnNpZ25lZCBjaGFyICpkYXRhOworICAgIGJv
b2wgZGlydHk7CisKKyAgICBpbnQgcHNSZWdpc3RlckluZGV4OworICAgIGludCB2c1JlZ2lzdGVy
SW5kZXg7CisgICAgdW5zaWduZWQgaW50IHJlZ2lzdGVyQ291bnQ7Cit9OworCit0eXBlZGVmIHN0
ZDo6dmVjdG9yPFVuaWZvcm0qPiBVbmlmb3JtQXJyYXk7CisKK30KKworI2VuZGlmICAgLy8gTElC
R0xFU1YyX1VOSUZPUk1fSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvY29uc3RhbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9jb25zdGFudHMuaAkocmV2aXNpb24gMTU5MjM5KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9jb25zdGFudHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMSwzNCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gQ29udGFudHMuaDogRGVmaW5lcyBz
b21lIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIGFuZCBnbCBjb25zdGFudHMKLQotI2lmbmRlZiBM
SUJHTEVTVjJfQ09OU1RBTlRTX0hfCi0jZGVmaW5lIExJQkdMRVNWMl9DT05TVEFOVFNfSF8KLQot
bmFtZXNwYWNlIGdsCi17Ci0KLWVudW0KLXsKLSAgICBNQVhfVkVSVEVYX0FUVFJJQlMgPSAxNiwK
LSAgICBNQVhfVEVYVFVSRV9JTUFHRV9VTklUUyA9IDE2LAotCi0gICAgLy8gSW1wbGVtZW50YXRp
b24gdXBwZXIgbGltaXRzLCByZWFsIG1heGltdW1zIGRlcGVuZCBvbiB0aGUgaGFyZHdhcmUKLSAg
ICBJTVBMRU1FTlRBVElPTl9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMgPSAxNiwKLSAg
ICBJTVBMRU1FTlRBVElPTl9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUyA9IE1BWF9U
RVhUVVJFX0lNQUdFX1VOSVRTICsgSU1QTEVNRU5UQVRJT05fTUFYX1ZFUlRFWF9URVhUVVJFX0lN
QUdFX1VOSVRTLCAgICAKLQotICAgIElNUExFTUVOVEFUSU9OX01BWF9WQVJZSU5HX1ZFQ1RPUlMg
PSAzMiwKLSAgICBJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJTID0gOAotfTsKLQotY29u
c3QgZmxvYXQgQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFX01JTiA9IDEuMGY7Ci1jb25zdCBmbG9h
dCBBTElBU0VEX0xJTkVfV0lEVEhfUkFOR0VfTUFYID0gMS4wZjsKLWNvbnN0IGZsb2F0IEFMSUFT
RURfUE9JTlRfU0laRV9SQU5HRV9NSU4gPSAxLjBmOwotCi19Ci0KLSNlbmRpZiAvLyBMSUJHTEVT
VjJfQ09OU1RBTlRTX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL2xpYkdMRVN2Mi5kZWYKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIuZGVmCShyZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5kZWYJKHdvcmtpbmcgY29w
eSkKQEAgLTE4Miw0ICsxODIsNyBAQCBFWFBPUlRTCiAgICAgZ2xHZXRQcm9jQWRkcmVzcyAgICAg
ICAgICAgICAgICBAMTQ4IE5PTkFNRQogICAgIGdsQmluZFRleEltYWdlICAgICAgICAgICAgICAg
ICAgQDE1OCBOT05BTUUKICAgICBnbENyZWF0ZVJlbmRlcmVyICAgICAgICAgICAgICAgIEAxNzcg
Tk9OQU1FCi0gICAgZ2xEZXN0cm95UmVuZGVyZXIgICAgICAgICAgICAgICBAMTc4IE5PTkFNRQpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyAgICBnbERlc3Ryb3lSZW5kZXJlciAgICAgICAg
ICAgICAgIEAxNzggTk9OQU1FCisKKyAgICA7IFNldHRpbmcgdXAgVFJBQ0UgbWFjcm8gY2FsbGJh
Y2tzCisgICAgU2V0VHJhY2VGdW5jdGlvblBvaW50ZXJzICAgICAgICBAMTgwCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5yYwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5yYwko
cmV2aXNpb24gMTU5MDkwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9saWJHTEVTdjIucmMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAyICsxLDEwMiBAQAotLy8gTWlj
cm9zb2Z0IFZpc3VhbCBDKysgZ2VuZXJhdGVkIHJlc291cmNlIHNjcmlwdC4KLS8vCi0jaW5jbHVk
ZSAicmVzb3VyY2UuaCIKLQotI2RlZmluZSBBUFNUVURJT19SRUFET05MWV9TWU1CT0xTCi0vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIEdlbmVyYXRlZCBmcm9tIHRoZSBURVhUSU5DTFVERSAy
IHJlc291cmNlLgotLy8KLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSAiLi4vY29tbW9u
L3ZlcnNpb24uaCIKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSN1bmRlZiBBUFNUVURJT19SRUFE
T05MWV9TWU1CT0xTCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBFbmdsaXNoIChVLlMuKSBy
ZXNvdXJjZXMKLQotI2lmICFkZWZpbmVkKEFGWF9SRVNPVVJDRV9ETEwpIHx8IGRlZmluZWQoQUZY
X1RBUkdfRU5VKQotI2lmZGVmIF9XSU4zMgotTEFOR1VBR0UgTEFOR19FTkdMSVNILCBTVUJMQU5H
X0VOR0xJU0hfVVMKLSNwcmFnbWEgY29kZV9wYWdlKDEyNTIpCi0jZW5kaWYgLy9fV0lOMzIKLQot
I2lmZGVmIEFQU1RVRElPX0lOVk9LRUQKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gVEVY
VElOQ0xVREUKLS8vCi0KLTEgVEVYVElOQ0xVREUgCi1CRUdJTgotICAgICJyZXNvdXJjZS5oXDAi
Ci1FTkQKLQotMiBURVhUSU5DTFVERSAKLUJFR0lOCi0gICAgIiNpbmNsdWRlICIiYWZ4cmVzLmgi
IlxyXG4iCi0gICAgIiNpbmNsdWRlICIiLi4vY29tbW9uL3ZlcnNpb24uaCIiXDAiCi1FTkQKLQot
MyBURVhUSU5DTFVERSAKLUJFR0lOCi0gICAgIlxyXG4iCi0gICAgIlwwIgotRU5ECi0KLSNlbmRp
ZiAgICAvLyBBUFNUVURJT19JTlZPS0VECi0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0v
LyBWZXJzaW9uCi0vLwotCi1WU19WRVJTSU9OX0lORk8gVkVSU0lPTklORk8KLSBGSUxFVkVSU0lP
TiBNQUpPUl9WRVJTSU9OLE1JTk9SX1ZFUlNJT04sQlVJTERfVkVSU0lPTixCVUlMRF9SRVZJU0lP
TgotIFBST0RVQ1RWRVJTSU9OIE1BSk9SX1ZFUlNJT04sTUlOT1JfVkVSU0lPTixCVUlMRF9WRVJT
SU9OLEJVSUxEX1JFVklTSU9OCi0gRklMRUZMQUdTTUFTSyAweDE3TAotI2lmZGVmIF9ERUJVRwot
IEZJTEVGTEFHUyAweDFMCi0jZWxzZQotIEZJTEVGTEFHUyAweDBMCi0jZW5kaWYKLSBGSUxFT1Mg
MHg0TAotIEZJTEVUWVBFIDB4MkwKLSBGSUxFU1VCVFlQRSAweDBMCi1CRUdJTgotICAgIEJMT0NL
ICJTdHJpbmdGaWxlSW5mbyIKLSAgICBCRUdJTgotICAgICAgICBCTE9DSyAiMDQwOTA0YjAiCi0g
ICAgICAgIEJFR0lOCi0gICAgICAgICAgICBWQUxVRSAiRmlsZURlc2NyaXB0aW9uIiwgIkFOR0xF
IGxpYkdMRVN2MiBEeW5hbWljIExpbmsgTGlicmFyeSIKLSAgICAgICAgICAgIFZBTFVFICJGaWxl
VmVyc2lvbiIsIFZFUlNJT05fU1RSSU5HCi0gICAgICAgICAgICBWQUxVRSAiSW50ZXJuYWxOYW1l
IiwgImxpYkdMRVN2MiIKLSAgICAgICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsICJDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4iCi0gICAgICAgICAgICBWQUxVRSAiT3JpZ2luYWxG
aWxlbmFtZSIsICJsaWJHTEVTdjIuZGxsIgotICAgICAgICAgICAgVkFMVUUgIlByaXZhdGVCdWls
ZCIsIFZFUlNJT05fU1RSSU5HCi0gICAgICAgICAgICBWQUxVRSAiUHJvZHVjdE5hbWUiLCAiQU5H
TEUgbGliR0xFU3YyIER5bmFtaWMgTGluayBMaWJyYXJ5IgotICAgICAgICAgICAgVkFMVUUgIlBy
b2R1Y3RWZXJzaW9uIiwgVkVSU0lPTl9TVFJJTkcKLSAgICAgICAgRU5ECi0gICAgRU5ECi0gICAg
QkxPQ0sgIlZhckZpbGVJbmZvIgotICAgIEJFR0lOCi0gICAgICAgIFZBTFVFICJUcmFuc2xhdGlv
biIsIDB4NDA5LCAxMjAwCi0gICAgRU5ECi1FTkQKLQotI2VuZGlmICAgIC8vIEVuZ2xpc2ggKFUu
Uy4pIHJlc291cmNlcwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotCi0KLSNpZm5kZWYgQVBTVFVE
SU9fSU5WT0tFRAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBHZW5lcmF0ZWQgZnJvbSB0
aGUgVEVYVElOQ0xVREUgMyByZXNvdXJjZS4KLS8vCi0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
LSNlbmRpZiAgICAvLyBub3QgQVBTVFVESU9fSU5WT0tFRAorLy8gTWljcm9zb2Z0IFZpc3VhbCBD
KysgZ2VuZXJhdGVkIHJlc291cmNlIHNjcmlwdC4NCisvLw0KKyNpbmNsdWRlICJyZXNvdXJjZS5o
Ig0KKw0KKyNkZWZpbmUgQVBTVFVESU9fUkVBRE9OTFlfU1lNQk9MUw0KKy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vDQorLy8NCisvLyBHZW5lcmF0ZWQgZnJvbSB0aGUgVEVYVElOQ0xVREUgMiByZXNvdXJj
ZS4NCisvLw0KKyNpbmNsdWRlIDx3aW5kb3dzLmg+DQorI2luY2x1ZGUgIi4uL2NvbW1vbi92ZXJz
aW9uLmgiDQorDQorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCisjdW5kZWYgQVBTVFVESU9fUkVBRE9O
TFlfU1lNQk9MUw0KKw0KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQorLy8gRW5nbGlzaCAoVS5TLikg
cmVzb3VyY2VzDQorDQorI2lmICFkZWZpbmVkKEFGWF9SRVNPVVJDRV9ETEwpIHx8IGRlZmluZWQo
QUZYX1RBUkdfRU5VKQ0KKyNpZmRlZiBfV0lOMzINCitMQU5HVUFHRSBMQU5HX0VOR0xJU0gsIFNV
QkxBTkdfRU5HTElTSF9VUw0KKyNwcmFnbWEgY29kZV9wYWdlKDEyNTIpDQorI2VuZGlmIC8vX1dJ
TjMyDQorDQorI2lmZGVmIEFQU1RVRElPX0lOVk9LRUQNCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0K
Ky8vDQorLy8gVEVYVElOQ0xVREUNCisvLw0KKw0KKzEgVEVYVElOQ0xVREUgDQorQkVHSU4NCisg
ICAgInJlc291cmNlLmhcMCINCitFTkQNCisNCisyIFRFWFRJTkNMVURFIA0KK0JFR0lODQorICAg
ICIjaW5jbHVkZSAiImFmeHJlcy5oIiJcclxuIg0KKyAgICAiI2luY2x1ZGUgIiIuLi9jb21tb24v
dmVyc2lvbi5oIiJcMCINCitFTkQNCisNCiszIFRFWFRJTkNMVURFIA0KK0JFR0lODQorICAgICJc
clxuIg0KKyAgICAiXDAiDQorRU5EDQorDQorI2VuZGlmICAgIC8vIEFQU1RVRElPX0lOVk9LRUQN
CisNCisNCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KKy8vDQorLy8gVmVyc2lvbg0KKy8vDQorDQor
VlNfVkVSU0lPTl9JTkZPIFZFUlNJT05JTkZPDQorIEZJTEVWRVJTSU9OIE1BSk9SX1ZFUlNJT04s
TUlOT1JfVkVSU0lPTixCVUlMRF9WRVJTSU9OLEJVSUxEX1JFVklTSU9ODQorIFBST0RVQ1RWRVJT
SU9OIE1BSk9SX1ZFUlNJT04sTUlOT1JfVkVSU0lPTixCVUlMRF9WRVJTSU9OLEJVSUxEX1JFVklT
SU9ODQorIEZJTEVGTEFHU01BU0sgMHgxN0wNCisjaWZkZWYgX0RFQlVHDQorIEZJTEVGTEFHUyAw
eDFMDQorI2Vsc2UNCisgRklMRUZMQUdTIDB4MEwNCisjZW5kaWYNCisgRklMRU9TIDB4NEwNCisg
RklMRVRZUEUgMHgyTA0KKyBGSUxFU1VCVFlQRSAweDBMDQorQkVHSU4NCisgICAgQkxPQ0sgIlN0
cmluZ0ZpbGVJbmZvIg0KKyAgICBCRUdJTg0KKyAgICAgICAgQkxPQ0sgIjA0MDkwNGIwIg0KKyAg
ICAgICAgQkVHSU4NCisgICAgICAgICAgICBWQUxVRSAiRmlsZURlc2NyaXB0aW9uIiwgIkFOR0xF
IGxpYkdMRVN2MiBEeW5hbWljIExpbmsgTGlicmFyeSINCisgICAgICAgICAgICBWQUxVRSAiRmls
ZVZlcnNpb24iLCBWRVJTSU9OX1NUUklORw0KKyAgICAgICAgICAgIFZBTFVFICJJbnRlcm5hbE5h
bWUiLCAibGliR0xFU3YyIg0KKyAgICAgICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsICJD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4iDQorICAgICAgICAgICAgVkFMVUUgIk9yaWdp
bmFsRmlsZW5hbWUiLCAibGliR0xFU3YyLmRsbCINCisgICAgICAgICAgICBWQUxVRSAiUHJpdmF0
ZUJ1aWxkIiwgVkVSU0lPTl9TVFJJTkcNCisgICAgICAgICAgICBWQUxVRSAiUHJvZHVjdE5hbWUi
LCAiQU5HTEUgbGliR0xFU3YyIER5bmFtaWMgTGluayBMaWJyYXJ5Ig0KKyAgICAgICAgICAgIFZB
TFVFICJQcm9kdWN0VmVyc2lvbiIsIFZFUlNJT05fU1RSSU5HDQorICAgICAgICBFTkQNCisgICAg
RU5EDQorICAgIEJMT0NLICJWYXJGaWxlSW5mbyINCisgICAgQkVHSU4NCisgICAgICAgIFZBTFVF
ICJUcmFuc2xhdGlvbiIsIDB4NDA5LCAxMjAwDQorICAgIEVORA0KK0VORA0KKw0KKyNlbmRpZiAg
ICAvLyBFbmdsaXNoIChVLlMuKSByZXNvdXJjZXMNCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KKw0K
Kw0KKw0KKyNpZm5kZWYgQVBTVFVESU9fSU5WT0tFRA0KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQor
Ly8NCisvLyBHZW5lcmF0ZWQgZnJvbSB0aGUgVEVYVElOQ0xVREUgMyByZXNvdXJjZS4NCisvLw0K
Kw0KKw0KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQorI2VuZGlmICAgIC8vIG5vdCBBUFNUVURJT19J
TlZPS0VEDQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJH
TEVTdjIudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL2xpYkdMRVN2Mi52Y3hwcm9qCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIudmN4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQyNSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRm
LTgiPz4NCis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4w
IiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8y
MDAzIj4NCisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+DQorICAg
IDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+DQorICAgICAgPENv
bmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMy
PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RD
b25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+
RGVidWc8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQor
ICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJ
bmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9D
b25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+DQorICAgIDwv
UHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRl
PSJSZWxlYXNlfHg2NCI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJh
dGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29u
ZmlndXJhdGlvbj4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikds
b2JhbHMiPg0KKyAgICA8UHJvamVjdEd1aWQ+e0I1ODcxQTdBLTk2OEMtNDJFMy1BMzNCLTk4MUU2
RjQ0OEU3OH08L1Byb2plY3RHdWlkPg0KKyAgICA8Um9vdE5hbWVzcGFjZT5saWJHTEVTdjI8L1Jv
b3ROYW1lc3BhY2U+DQorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4NCisgIDwvUHJv
cGVydHlHcm91cD4NCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3Nv
ZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29u
ZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29u
ZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0
Pg0KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGlt
aXphdGlvbj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0i
Q29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwv
Q29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVy
U2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25m
aWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25m
aWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+
DQorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1p
emF0aW9uPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29u
ZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29u
ZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0
Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1Bh
dGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVu
c2lvblNldHRpbmdzIj4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFi
ZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGly
KVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3Rz
KCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIg
TGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJ
bXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0
PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENv
bmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBv
cnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAg
PEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3Jt
IiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNo
ZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNw
cC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERp
cilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFw
cERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBM
YWJlbD0iVXNlck1hY3JvcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwPg0KKyAgICA8X1Byb2plY3RG
aWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+DQorICAgIDxPdXRE
aXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4z
MiciPiQoU29sdXRpb25EaXIpJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERp
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyI+JChDb25maWd1cmF0aW9uKVw8L0ludERpcj4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1
ZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChDb25m
aWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKENvbmZpZ3VyYXRpb24pXDwv
SW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+
DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIj4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlvbilc
PC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKFBsYXRmb3JtKVwkKENvbmZpZ3VyYXRpb24pXDwvSW50
RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8
T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXx4NjQnIj4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlvbilcPC9PdXRE
aXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfHg2NCciPiQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlvbilcPC9JbnREaXI+
DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxJ
bmNsdWRlUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8eDY0JyI+JChJbmNsdWRlUGF0aCk8L0luY2x1ZGVQYXRoPg0KKyAgICA8TGlicmFyeVBh
dGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2
NCciPiQoTGlicmFyeVBhdGgpPC9MaWJyYXJ5UGF0aD4NCisgICAgPEluY2x1ZGVQYXRoIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChJbmNs
dWRlUGF0aCk8L0luY2x1ZGVQYXRoPg0KKyAgICA8TGlicmFyeVBhdGggQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKExpYnJhcnlQYXRoKTwv
TGlicmFyeVBhdGg+DQorICAgIDxJbmNsdWRlUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChJbmNsdWRlUGF0aCk8L0luY2x1ZGVQ
YXRoPg0KKyAgICA8SW5jbHVkZVBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChJbmNsdWRlUGF0aCk8L0luY2x1ZGVQYXRoPg0K
KyAgICA8TGlicmFyeVBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3xXaW4zMiciPiQoTGlicmFyeVBhdGgpPC9MaWJyYXJ5UGF0aD4NCisgICAgPExp
YnJhcnlQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXxXaW4zMiciPiQoTGlicmFyeVBhdGgpPC9MaWJyYXJ5UGF0aD4NCisgIDwvUHJvcGVydHlH
cm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAg
ICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKTskKFByb2plY3REaXIpLy4uOyAkKFBy
b2plY3REaXIpLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwv
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM+V0lOMzI7X0RFQlVHO19XSU5ET1dTO19VU1JETEw7TElCR0xFU1YyX0VYUE9SVFM7X0NS
VF9TRUNVUkVfTk9fREVQUkVDQVRFO05PTUlOTUFYOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMp
PC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwv
TWluaW1hbFJlYnVpbGQ+DQorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hl
Y2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhy
ZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVz
ZTwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5p
bmdMZXZlbD4NCisgICAgICA8VHJlYXRXYXJuaW5nQXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdB
c0Vycm9yPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwv
RGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+
NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7NDUxMjs0NzAyOzQ5OTY7JShEaXNhYmxlU3Bl
Y2lmaWNXYXJuaW5ncyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICAgIDxQcmVjb21w
aWxlZEhlYWRlckZpbGU+cHJlY29tcGlsZWQuaDwvUHJlY29tcGlsZWRIZWFkZXJGaWxlPg0KKyAg
ICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4kKEV4dGVybmFsQ29tcGlsZXJPcHRpb25zKSAlKEFkZGl0
aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+DQorICAgIDwvQ2xDb21waWxlPg0KKyAg
ICA8TGluaz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5kM2Q5LmxpYjtkeGd1aWQu
bGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQor
ICAgICAgPE1vZHVsZURlZmluaXRpb25GaWxlPmxpYkdMRVN2Mi5kZWY8L01vZHVsZURlZmluaXRp
b25GaWxlPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVE
ZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPg0K
KyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25Q
cmV2ZW50aW9uPg0KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hp
bmU+DQorICAgIDwvTGluaz4NCisgICAgPFBvc3RCdWlsZEV2ZW50Pg0KKyAgICAgIDxDb21tYW5k
PiU0MGVjaG8gb24NCitta2RpciAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRp
b24pXCINCitjb3B5ICIkKE91dERpcilsaWJHTEVTdjIuZGxsIiAiJChQcm9qZWN0RGlyKS4uXC4u
XGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCitjb3B5ICIkKE91dERpcilsaWJHTEVTdjIubGliIiAi
JChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCislNDBlY2hvIG9mZg0K
KzwvQ29tbWFuZD4NCisgICAgPC9Qb3N0QnVpbGRFdmVudD4NCisgIDwvSXRlbURlZmluaXRpb25H
cm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAg
ICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8SW5saW5l
RnVuY3Rpb25FeHBhbnNpb24+QW55U3VpdGFibGU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPg0K
KyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcik7JChQcm9q
ZWN0RGlyKS8uLjsgJChQcm9qZWN0RGlyKS8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFBy
ZXByb2Nlc3NvckRlZmluaXRpb25zPkFOR0xFX0RJU0FCTEVfVFJBQ0U7V0lOMzI7TkRFQlVHO19X
SU5ET1dTO19VU1JETEw7TElCR0xFU1YyX0VYUE9SVFM7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRF
O05PTUlOTUFYO19TRUNVUkVfU0NMPTA7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXBy
b2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVk
PC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21w
aWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0K
KyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+DQor
ICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9y
bWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40MTAwOzQxMjc7
NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7NDcxODs0OTk2OyUoRGlzYWJsZVNwZWNpZmlj
V2FybmluZ3MpPC9EaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz4NCisgICAgICA8UHJlY29tcGlsZWRI
ZWFkZXJGaWxlPnByZWNvbXBpbGVkLmg8L1ByZWNvbXBpbGVkSGVhZGVyRmlsZT4NCisgICAgICA8
QWRkaXRpb25hbE9wdGlvbnM+JChFeHRlcm5hbENvbXBpbGVyT3B0aW9ucykgJShBZGRpdGlvbmFs
T3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExp
bms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZDNkOS5saWI7ZHhndWlkLmxpYjsl
KEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAg
IDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFy
aWVzPg0KKyAgICAgIDxNb2R1bGVEZWZpbml0aW9uRmlsZT5saWJHTEVTdjIuZGVmPC9Nb2R1bGVE
ZWZpbml0aW9uRmlsZT4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dl
bmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5
c3RlbT4NCisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNl
cz4NCisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5n
Pg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRp
b25QcmV2ZW50aW9uPg0KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1h
Y2hpbmU+DQorICAgIDwvTGluaz4NCisgICAgPFBvc3RCdWlsZEV2ZW50Pg0KKyAgICAgIDxDb21t
YW5kPiU0MGVjaG8gb24NCitta2RpciAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3Vy
YXRpb24pXCINCitjb3B5ICIkKE91dERpcilsaWJHTEVTdjIuZGxsIiAiJChQcm9qZWN0RGlyKS4u
XC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCitjb3B5ICIkKE91dERpcilsaWJHTEVTdjIubGli
IiAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCislNDBlY2hvIG9m
Zg0KKzwvQ29tbWFuZD4NCisgICAgPC9Qb3N0QnVpbGRFdmVudD4NCisgIDwvSXRlbURlZmluaXRp
b25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+DQorICAgIDxNaWRsPg0KKyAgICAgIDxU
YXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50Pg0KKyAgICA8L01pZGw+DQor
ICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0
aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikv
Li47ICQoUHJvamVjdERpcikvLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNz
b3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtMSUJHTEVTVjJfRVhQ
T1JUUztfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7Tk9NSU5NQVg7JShQcmVwcm9jZXNzb3JEZWZp
bml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxNaW5pbWFsUmVidWls
ZD50cnVlPC9NaW5pbWFsUmVidWlsZD4NCisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJs
ZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+
TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRI
ZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVs
NDwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40MTAwOzQx
Mjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7NDcxODs0OTk2OyUoRGlzYWJsZVNwZWNp
ZmljV2FybmluZ3MpPC9EaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz4NCisgICAgICA8RGVidWdJbmZv
cm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQor
ICAgICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCisg
ICAgICA8UHJlY29tcGlsZWRIZWFkZXJGaWxlPnByZWNvbXBpbGVkLmg8L1ByZWNvbXBpbGVkSGVh
ZGVyRmlsZT4NCisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+JChFeHRlcm5hbENvbXBpbGVyT3B0
aW9ucykgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPg0KKyAgICA8L0Ns
Q29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZDNk
OS5saWI7ZHhndWlkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVw
ZW5kZW5jaWVzPg0KKyAgICAgIDxNb2R1bGVEZWZpbml0aW9uRmlsZT5saWJHTEVTdjIuZGVmPC9N
b2R1bGVEZWZpbml0aW9uRmlsZT4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRy
dWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8
L1N1YlN5c3RlbT4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9E
YXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0
PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICAgIDxQb3N0QnVpbGRFdmVudD4NCisg
ICAgICA8Q29tbWFuZD4lNDBlY2hvIG9uDQorbWtkaXIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJc
JChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIpbGliR0xFU3YyLmRsbCIgIiQoUHJv
amVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIpbGli
R0xFU3YyLmxpYiIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQor
JTQwZWNobyBvZmYNCis8L0NvbW1hbmQ+DQorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+DQorICA8L0l0
ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+DQorICAgIDxNaWRs
Pg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50Pg0KKyAg
ICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVl
ZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5BbnlTdWl0
YWJsZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS8uLjsgJChQcm9qZWN0RGlyKS8uLi8uLi9pbmNsdWRl
OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfV0lO
RE9XUztfVVNSRExMO0xJQkdMRVNWMl9FWFBPUlRTO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtO
T01JTk1BWDtfU0VDVVJFX1NDTD0wOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwv
UnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGls
ZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisg
ICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQy
NDU7NDUxMjs0NzAyOzQ3MTg7NDk5NjslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJs
ZVNwZWNpZmljV2FybmluZ3M+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3Jh
bURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxUcmVhdFdhcm5pbmdB
c0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+DQorICAgICAgPFByZWNvbXBpbGVkSGVh
ZGVyRmlsZT5wcmVjb21waWxlZC5oPC9QcmVjb21waWxlZEhlYWRlckZpbGU+DQorICAgICAgPEFk
ZGl0aW9uYWxPcHRpb25zPiQoRXh0ZXJuYWxDb21waWxlck9wdGlvbnMpICUoQWRkaXRpb25hbE9w
dGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5r
Pg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmQzZDkubGliO2R4Z3VpZC5saWI7JShB
ZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8
SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmll
cz4NCisgICAgICA8TW9kdWxlRGVmaW5pdGlvbkZpbGU+bGliR0xFU3YyLmRlZjwvTW9kdWxlRGVm
aW5pdGlvbkZpbGU+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5l
cmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0
ZW0+DQorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+
DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4N
CisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9u
UHJldmVudGlvbj4NCisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNo
aW5lPg0KKyAgICA8L0xpbms+DQorICAgIDxQb3N0QnVpbGRFdmVudD4NCisgICAgICA8Q29tbWFu
ZD4lNDBlY2hvIG9uDQorbWtkaXIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0
aW9uKVwiDQorY29weSAiJChPdXREaXIpbGliR0xFU3YyLmRsbCIgIiQoUHJvamVjdERpcikuLlwu
LlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIpbGliR0xFU3YyLmxpYiIg
IiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorJTQwZWNobyBvZmYN
Cis8L0NvbW1hbmQ+DQorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+DQorICA8L0l0ZW1EZWZpbml0aW9u
R3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHRoaXJk
X3BhcnR5XG11cm11cmhhc2hcTXVybXVySGFzaDMuY3BwIj4NCisgICAgICA8UHJlY29tcGlsZWRI
ZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xX
aW4zMiciPk5vdFVzaW5nPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8UHJlY29tcGlsZWRI
ZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fFdpbjMyJyI+Tm90VXNpbmc8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxQcmVjb21waWxl
ZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fHg2NCciPk5vdFVzaW5nPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8UHJlY29tcGlsZWRI
ZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fHg2NCciPk5vdFVzaW5nPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgPC9DbENvbXBpbGU+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iQnVmZmVyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJDb250ZXh0LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjb21t
b25cZGVidWcuY3BwIj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPk5vdFVzaW5nPC9QcmVj
b21waWxlZEhlYWRlcj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Tm90VXNpbmc8L1By
ZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPk5vdFVzaW5nPC9QcmVj
b21waWxlZEhlYWRlcj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPk5vdFVzaW5nPC9QcmVj
b21waWxlZEhlYWRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cY29tbW9uXGV2ZW50X3RyYWNlci5jcHAiPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRl
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyI+Tm90VXNpbmc8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRl
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIj5Ob3RVc2luZzwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFByZWNvbXBpbGVkSGVh
ZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0
JyI+Tm90VXNpbmc8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRl
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0
JyI+Tm90VXNpbmc8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJGZW5jZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iRmxvYXQxNlRvRmxvYXQzMi5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRnJh
bWVidWZmZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkhhbmRsZUFsbG9jYXRv
ci5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ibGliR0xFU3YyLmNwcCIgLz4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJtYWluLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSJwcmVjb21waWxlZC5jcHAiPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Q3JlYXRl
PC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Q3JlYXRl
PC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5DcmVhdGU8L1By
ZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Q3JlYXRlPC9QcmVj
b21waWxlZEhlYWRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iUHJvZ3JhbS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUHJvZ3JhbUJpbmFy
eS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUXVlcnkuY3BwIiAvPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGNvbW1vblxSZWZDb3VudE9iamVjdC5jcHAiIC8+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iUmVuZGVyYnVmZmVyLmNwcCIgLz4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJyZW5kZXJlclxCbGl0LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSJyZW5kZXJlclxGZW5jZTExLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5k
ZXJlclxGZW5jZTkuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEJ1
ZmZlclN0b3JhZ2UuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEJ1
ZmZlclN0b3JhZ2UxMS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJc
QnVmZmVyU3RvcmFnZTkuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVy
XEltYWdlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJbWFnZTku
Y3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEluZGV4QnVmZmVyLmNw
cCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJbmRleEJ1ZmZlcjExLmNw
cCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJbmRleEJ1ZmZlcjkuY3Bw
IiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEluZGV4RGF0YU1hbmFnZXIu
Y3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEltYWdlU1NFMi5jcHAi
IC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW1hZ2UxMS5jcHAiIC8+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW5kZXhSYW5nZUNhY2hlLmNwcCIgLz4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJbnB1dExheW91dENhY2hlLmNwcCIg
Lz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxRdWVyeTExLmNwcCIgLz4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxRdWVyeTkuY3BwIiAvPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlcmVyLmNwcCIgLz4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJlcjExLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJyZW5kZXJlclxyZW5kZXJlcjExX3V0aWxzLmNwcCIgLz4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJlcjkuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9InJlbmRlcmVyXHJlbmRlcmVyOV91dGlscy5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyVGFyZ2V0MTEuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlclRhcmdldDkuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlclN0YXRlQ2FjaGUuY3BwIiAvPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9InJlbmRlcmVyXFNoYWRlckV4ZWN1dGFibGUxMS5jcHAiIC8+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcU2hhZGVyRXhlY3V0YWJsZTkuY3BwIiAvPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFN3YXBDaGFpbjExLmNwcCIgLz4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxTd2FwQ2hhaW45LmNwcCIgLz4NCisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxUZXh0dXJlU3RvcmFnZS5jcHAiIC8+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcVGV4dHVyZVN0b3JhZ2UxMS5jcHAiIC8+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcVGV4dHVyZVN0b3JhZ2U5LmNwcCIgLz4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxWZXJ0ZXhCdWZmZXIuY3BwIiAvPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleEJ1ZmZlcjExLmNwcCIgLz4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxWZXJ0ZXhCdWZmZXI5LmNwcCIgLz4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxWZXJ0ZXhEYXRhTWFuYWdlci5jcHAiIC8+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4RGVjbGFyYXRpb25DYWNo
ZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUmVzb3VyY2VNYW5hZ2VyLmNwcCIg
Lz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJTaGFkZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9IlRleHR1cmUuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlVu
aWZvcm0uY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InV0aWxpdGllcy5jcHAiIC8+
DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cY29tbW9uXGRlYnVnLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY29t
bW9uXGV2ZW50X3RyYWNlci5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNvbW1v
blxzeXN0ZW0uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx0aGlyZF9wYXJ0eVxt
dXJtdXJoYXNoXE11cm11ckhhc2gzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
dGhpcmRfcGFydHlcdHJhY2VfZXZlbnRcdHJhY2VfZXZlbnQuaCIgLz4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJhbmdsZXR5cGVzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQmlu
YXJ5U3RyZWFtLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQnVmZmVyLmgiIC8+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iY29uc3RhbnRzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iQ29udGV4dC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkZlbmNlLmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRnJhbWVidWZmZXIuaCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEdMRVMyXGdsMi5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXC4uXGluY2x1ZGVcR0xFUzJcZ2wyZXh0LmgiIC8+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5caW5jbHVkZVxHTEVTMlxnbDJwbGF0Zm9ybS5oIiAvPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkhhbmRsZUFsbG9jYXRvci5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Im1haW4uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJtYXRo
dXRpbC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InByZWNvbXBpbGVkLmgiIC8+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUHJvZ3JhbS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IlByb2dyYW1CaW5hcnkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJRdWVy
eS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNvbW1vblxSZWZDb3VudE9iamVj
dC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlJlbmRlcmJ1ZmZlci5oIiAvPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEJsaXQuaCIgLz4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJyZW5kZXJlclxGZW5jZTExLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0icmVuZGVyZXJcRmVuY2U5LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVy
ZXJcRmVuY2VJbXBsLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcQnVm
ZmVyU3RvcmFnZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEJ1ZmZl
clN0b3JhZ2UxMS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEJ1ZmZl
clN0b3JhZ2U5LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcZ2VuZXJh
dGVtaXAuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxJbWFnZS5oIiAv
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEltYWdlMTEuaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxJbWFnZTkuaCIgLz4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJyZW5kZXJlclxJbmRleEJ1ZmZlci5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9InJlbmRlcmVyXEluZGV4QnVmZmVyMTEuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJyZW5kZXJlclxJbmRleEJ1ZmZlcjkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSJyZW5kZXJlclxJbmRleERhdGFNYW5hZ2VyLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0icmVuZGVyZXJcSW5kZXhSYW5nZUNhY2hlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0icmVuZGVyZXJcSW5wdXRMYXlvdXRDYWNoZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9InJlbmRlcmVyXFF1ZXJ5MTEuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5k
ZXJlclxRdWVyeUltcGwuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxR
dWVyeTkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJlci5o
IiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlcmVyMTEuaCIgLz4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxyZW5kZXJlcjExX3V0aWxzLmgiIC8+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyZXI5LmgiIC8+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJccmVuZGVyZXI5X3V0aWxzLmgiIC8+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyVGFyZ2V0LmgiIC8+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyVGFyZ2V0MTEuaCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJUYXJnZXQ5LmgiIC8+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyU3RhdGVDYWNoZS5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFNoYWRlckNhY2hlLmgiIC8+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0icmVuZGVyZXJcU2hhZGVyRXhlY3V0YWJsZS5oIiAvPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9InJlbmRlcmVyXFNoYWRlckV4ZWN1dGFibGUxMS5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFNoYWRlckV4ZWN1dGFibGU5LmgiIC8+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxjbGVhcjExdnMuaCIg
Lz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVkXGNs
ZWFybXVsdGlwbGUxMXBzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJc
c2hhZGVyc1xjb21waWxlZFxjbGVhcnNpbmdsZTExcHMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVkXGNvbXBvbmVudG1hc2twcy5oIiAvPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRcZmxpcHl2
cy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGls
ZWRcbHVtaW5hbmNlcHMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxz
aGFkZXJzXGNvbXBpbGVkXHBhc3N0aHJvdWdoMTF2cy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRccGFzc3Rocm91Z2hsdW0xMXBzLmgiIC8+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxwYXNz
dGhyb3VnaGx1bWFscGhhMTFwcy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRl
cmVyXHNoYWRlcnNcY29tcGlsZWRccGFzc3Rocm91Z2hwcy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRccGFzc3Rocm91Z2hyZ2IxMXBzLmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxw
YXNzdGhyb3VnaHJnYmExMXBzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVy
ZXJcc2hhZGVyc1xjb21waWxlZFxzdGFuZGFyZHZzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0icmVuZGVyZXJcU3dhcENoYWluLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
cmVuZGVyZXJcU3dhcENoYWluMTEuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5k
ZXJlclxTd2FwQ2hhaW45LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJc
VGV4dHVyZVN0b3JhZ2UuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxU
ZXh0dXJlU3RvcmFnZTExLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJc
VGV4dHVyZVN0b3JhZ2U5LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJc
VmVydGV4QnVmZmVyLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcVmVy
dGV4QnVmZmVyMTEuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxWZXJ0
ZXhCdWZmZXI5LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcdmVydGV4
Y29udmVyc2lvbi5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRl
eERhdGFNYW5hZ2VyLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcVmVy
dGV4RGVjbGFyYXRpb25DYWNoZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlc291
cmNlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUmVzb3VyY2VNYW5hZ2VyLmgiIC8+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iU2hhZGVyLmgiIC8+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iVGV4dHVyZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlVuaWZvcm0u
aCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJ1dGlsaXRpZXMuaCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxjb21tb25cdmVyc2lvbi5oIiAvPg0KKyAgPC9JdGVtR3JvdXA+
DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Tm9uZSBJbmNsdWRlPSJsaWJHTEVTdjIuZGVmIiAvPg0K
KyAgICA8Tm9uZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXEJsaXQucHMiIC8+DQorICAgIDxO
b25lIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcQmxpdC52cyIgLz4NCisgICAgPE5vbmUgSW5j
bHVkZT0icmVuZGVyZXJcc2hhZGVyc1xDbGVhcjExLmhsc2wiIC8+DQorICAgIDxOb25lIEluY2x1
ZGU9InJlbmRlcmVyXHNoYWRlcnNcZ2VuZXJhdGVfc2hhZGVycy5iYXQiIC8+DQorICAgIDxOb25l
IEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcUGFzc3Rocm91Z2gxMS5obHNsIiAvPg0KKyAgPC9J
dGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9
ImxpYkdMRVN2Mi5yYyIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAg
PFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5cY29tcGlsZXJccHJlcHJvY2Vzc29yXHByZXBy
b2Nlc3Nvci52Y3hwcm9qIj4NCisgICAgICA8UHJvamVjdD57ZmJlMzJkZjMtMGZiMC00ZjJmLWE0
MjQtMmMyMWJkN2JjMzI1fTwvUHJvamVjdD4NCisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPg0KKyAg
ICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIuLlxjb21waWxlclx0cmFuc2xhdG9yLnZjeHBy
b2oiPg0KKyAgICAgIDxQcm9qZWN0Pns1YjNhNmRiOC0xZTdlLTQwZDctOTJiOS1kYThhYWU2MTlm
YWR9PC9Qcm9qZWN0Pg0KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+DQorICA8L0l0ZW1Hcm91cD4N
CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdl
dHMiIC8+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPg0KKyAgPC9J
bXBvcnRHcm91cD4NCis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIudmN4cHJv
ai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvbGliR0xFU3YyLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyLnZjeHByb2ouZmlsdGVycwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyNyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBl
bmNvZGluZz0idXRmLTgiPz4NCis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0
dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+DQorICA8
SXRlbUdyb3VwPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+DQorICAgICAg
PFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08
L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y2M7Y3h4O2RlZjtv
ZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+DQorICAgIDwvRmlsdGVyPg0KKyAg
ICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZp
ZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50aWZp
ZXI+DQorICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNp
b25zPg0KKyAgICA8L0ZpbHRlcj4NCisgICAgPEZpbHRlciBJbmNsdWRlPSJUaGlyZCBQYXJ0eSI+
DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2RjMWRhYzQwLTM1NjMtNDFiZS05ZTJkLWMyNTg4
ZDg2NzBmYn08L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVy
IEluY2x1ZGU9IlRoaXJkIFBhcnR5XE11cm11ckhhc2giPg0KKyAgICAgIDxVbmlxdWVJZGVudGlm
aWVyPntiMDAwNWQyZi05YjRhLTQ2NTktYTI3MC0xMzg4MTExNzRmNzN9PC9VbmlxdWVJZGVudGlm
aWVyPg0KKyAgICA8L0ZpbHRlcj4NCisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXNc
UmVuZGVyZXIiPg0KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns1NjJlNDY5ZC0xYWJiLTQ0YmMt
YjdmYS01NWVlZmJmNzVhY2N9PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICA8L0ZpbHRlcj4NCisg
ICAgPEZpbHRlciBJbmNsdWRlPSJTaGFkZXJzIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57
NmRjMDMwNmYtNjM5Ni00ZTgwLTllZjktMDliNThhYTUzYzRkfTwvVW5pcXVlSWRlbnRpZmllcj4N
CisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU2hhZGVyc1xDb21waWxlZCI+
DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezYzMzI3MDViLTE5OTktNDI5Mi1hMzhiLWRkNDcz
Mjk3MzRhYX08L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVy
IEluY2x1ZGU9IlNvdXJjZSBGaWxlc1xSZW5kZXJlciI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZp
ZXI+ezkzYTc2OTY0LTc3YTMtNGIyMC1hNmY1LWUxNGU3NjJkNGUxNH08L1VuaXF1ZUlkZW50aWZp
ZXI+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlc1xS
ZW5kZXJlcjkiPg0KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnszODc3ZjM1ZS04NDVjLTRlOTUt
YjlhNS1jN2Q4YjlmMzA3YzV9PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICA8L0ZpbHRlcj4NCisg
ICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXNcUmVuZGVyZXIxMSI+DQorICAgICAgPFVu
aXF1ZUlkZW50aWZpZXI+ezJkNzBmZDYwLTZkZWEtNDg5Zi1hYzA5LTE2ODkwZDMyNTY2OX08L1Vu
aXF1ZUlkZW50aWZpZXI+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNv
dXJjZSBGaWxlc1xSZW5kZXJlcjkiPg0KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns2MGUxNGYw
NC0yY2YyLTRhMDctYjNlZi03YzY4YTgyYmEyZDl9PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICA8
L0ZpbHRlcj4NCisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXNcUmVuZGVyZXIxMSI+
DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezcyZGI2MWQzLWUwODEtNGI1OC1iYzYzLWEwNGE4
YTcwNTg1Zn08L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVy
IEluY2x1ZGU9IlRoaXJkIFBhcnR5XHRyYWNlX2V2ZW50Ij4NCisgICAgICA8VW5pcXVlSWRlbnRp
Zmllcj57ZWJmYzE2MTQtOGYwYi00OGM3LWI2YmQtMjk1YmY5MWVmODVjfTwvVW5pcXVlSWRlbnRp
Zmllcj4NCisgICAgPC9GaWx0ZXI+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iQnVmZmVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iQ29udGV4dC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+
DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGNvbW1vblxk
ZWJ1Zy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwv
Q2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkZlbmNlLmNwcCI+DQorICAgICAg
PEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iRmxvYXQxNlRvRmxvYXQzMi5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+
U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IkZyYW1lYnVmZmVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8
L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSGFu
ZGxlQWxsb2NhdG9yLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4N
CisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ibGliR0xFU3YyLmNw
cCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBp
bGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ibWFpbi5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+
U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IlByb2dyYW0uY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmls
dGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJQcm9ncmFt
QmluYXJ5LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAg
PC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUXVlcnkuY3BwIj4NCisgICAg
ICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjb21tb25cUmVmQ291bnRPYmplY3QuY3BwIj4NCisgICAg
ICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJSZW5kZXJidWZmZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNv
dXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJSZXNvdXJjZU1hbmFnZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxl
czwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJT
aGFkZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8
L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJUZXh0dXJlLmNwcCI+DQorICAg
ICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0idXRpbGl0aWVzLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0icmVuZGVyZXJcSW1hZ2UuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xS
ZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSJyZW5kZXJlclxUZXh0dXJlU3RvcmFnZS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNl
IEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlcmVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cdGhpcmRfcGFydHlcbXVybXVyaGFzaFxNdXJtdXJIYXNoMy5jcHAi
Pg0KKyAgICAgIDxGaWx0ZXI+VGhpcmQgUGFydHlcTXVybXVySGFzaDwvRmlsdGVyPg0KKyAgICA8
L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJbmRleERhdGFN
YW5hZ2VyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI8L0ZpbHRl
cj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJc
VmVydGV4RGF0YU1hbmFnZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5k
ZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSJyZW5kZXJlclxJbWFnZS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+UmVuZGVyZXI8L0ZpbHRlcj4N
CisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW1h
Z2VTU0UyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI8L0ZpbHRl
cj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJc
VmVydGV4QnVmZmVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI8
L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVu
ZGVyZXJcSW5kZXhCdWZmZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5k
ZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSJVbmlmb3JtLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisg
ICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcQnVmZmVy
U3RvcmFnZS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyPC9GaWx0
ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVy
XEJ1ZmZlclN0b3JhZ2UxMS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRl
cmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0icmVuZGVyZXJcRmVuY2UxMS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJl
bmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0icmVuZGVyZXJcSW1hZ2UxMS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVz
XFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0icmVuZGVyZXJcSW5kZXhCdWZmZXIxMS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291
cmNlIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcUXVlcnkxMS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+
U291cmNlIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyZXIxMS5jcHAiPg0KKyAgICAgIDxG
aWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJccmVuZGVyZXIxMV91dGlscy5jcHAi
Pg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAg
PC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyVGFy
Z2V0MTEuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjExPC9GaWx0
ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVy
XFNoYWRlckV4ZWN1dGFibGUxMS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJl
bmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0icmVuZGVyZXJcU3dhcENoYWluMTEuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBG
aWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9InJlbmRlcmVyXFRleHR1cmVTdG9yYWdlMTEuY3BwIj4NCisgICAgICA8Rmls
dGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleEJ1ZmZlcjExLmNwcCI+DQor
ICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0Ns
Q29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxCdWZmZXJTdG9yYWdl
OS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0K
KyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxGZW5j
ZTkuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4N
CisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW1h
Z2U5LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+
DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXElu
ZGV4QnVmZmVyOS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyOTwv
RmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5k
ZXJlclxRdWVyeTkuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjk8
L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVu
ZGVyZXJcUmVuZGVyZXI5LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVy
ZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
InJlbmRlcmVyXHJlbmRlcmVyOV91dGlscy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZp
bGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJUYXJnZXQ5LmNwcCI+DQorICAgICAgPEZpbHRlcj5T
b3VyY2UgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFNoYWRlckV4ZWN1dGFibGU5LmNwcCI+DQorICAg
ICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21w
aWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFN3YXBDaGFpbjkuY3BwIj4N
CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9D
bENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcVGV4dHVyZVN0b3Jh
Z2U5LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+
DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFZl
cnRleEJ1ZmZlcjkuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjk8
L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVu
ZGVyZXJcQmxpdC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyOTwv
RmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5k
ZXJlclxJbnB1dExheW91dENhY2hlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNc
UmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJyZW5kZXJlclxSZW5kZXJTdGF0ZUNhY2hlLmNwcCI+DQorICAgICAgPEZpbHRlcj5T
b3VyY2UgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlLmNwcCI+
DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwv
Q2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InByZWNvbXBpbGVkLmNwcCI+DQor
ICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW5kZXhSYW5nZUNhY2hlLmNwcCI+DQor
ICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbENv
bXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cY29tbW9uXGV2ZW50X3RyYWNlci5j
cHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21w
aWxlPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IkJpbmFyeVN0cmVhbS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmls
dGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJCdWZmZXIu
aCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1
ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQ29udGV4dC5oIj4NCisgICAgICA8RmlsdGVy
PkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJGZW5jZS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVy
Pg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJGcmFtZWJ1ZmZl
ci5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5j
bHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEdMRVMyXGdsMi5o
Ij4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVk
ZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEdMRVMyXGdsMmV4dC5o
Ij4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVk
ZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEdMRVMyXGdsMnBsYXRm
b3JtLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJ
bmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkhhbmRsZUFsbG9jYXRvci5oIj4NCisg
ICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJtYWluLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Im1hdGh1dGlsLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAg
IDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlByb2dyYW0uaCI+DQorICAg
ICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iUHJvZ3JhbUJpbmFyeS5oIj4NCisgICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJRdWVyeS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0K
KyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjb21tb25cUmVm
Q291bnRPYmplY3QuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisg
ICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUmVuZGVyYnVmZmVyLmgi
Pg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRl
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlc291cmNlLmgiPg0KKyAgICAgIDxGaWx0ZXI+
SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9IlJlc291cmNlTWFuYWdlci5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
czwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJT
aGFkZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9D
bEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVGV4dHVyZS5oIj4NCisgICAgICA8
RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJ1dGlsaXRpZXMuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmls
ZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cY29tbW9uXHZlcnNpb24uaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRl
cj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iYW5nbGV0eXBl
cy5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5j
bHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx0aGlyZF9wYXJ0eVxtdXJtdXJoYXNo
XE11cm11ckhhc2gzLmgiPg0KKyAgICAgIDxGaWx0ZXI+VGhpcmQgUGFydHlcTXVybXVySGFzaDwv
RmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJVbmlm
b3JtLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJ
bmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGls
ZWRccGFzc3Rocm91Z2gxMXZzLmgiPg0KKyAgICAgIDxGaWx0ZXI+U2hhZGVyc1xDb21waWxlZDwv
RmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5k
ZXJlclxzaGFkZXJzXGNvbXBpbGVkXHBhc3N0aHJvdWdocHMuaCI+DQorICAgICAgPEZpbHRlcj5T
aGFkZXJzXENvbXBpbGVkPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRcc3RhbmRhcmR2cy5oIj4NCisg
ICAgICA8RmlsdGVyPlNoYWRlcnNcQ29tcGlsZWQ8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxjb21w
b25lbnRtYXNrcHMuaCI+DQorICAgICAgPEZpbHRlcj5TaGFkZXJzXENvbXBpbGVkPC9GaWx0ZXI+
DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNo
YWRlcnNcY29tcGlsZWRcZmxpcHl2cy5oIj4NCisgICAgICA8RmlsdGVyPlNoYWRlcnNcQ29tcGls
ZWQ8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
cmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxsdW1pbmFuY2Vwcy5oIj4NCisgICAgICA8RmlsdGVy
PlNoYWRlcnNcQ29tcGlsZWQ8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxwYXNzdGhyb3VnaHJnYmEx
MXBzLmgiPg0KKyAgICAgIDxGaWx0ZXI+U2hhZGVyc1xDb21waWxlZDwvRmlsdGVyPg0KKyAgICA8
L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNv
bXBpbGVkXHBhc3N0aHJvdWdocmdiMTFwcy5oIj4NCisgICAgICA8RmlsdGVyPlNoYWRlcnNcQ29t
cGlsZWQ8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxwYXNzdGhyb3VnaGx1bTExcHMuaCI+DQorICAg
ICAgPEZpbHRlcj5TaGFkZXJzXENvbXBpbGVkPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRccGFzc3Ro
cm91Z2hsdW1hbHBoYTExcHMuaCI+DQorICAgICAgPEZpbHRlcj5TaGFkZXJzXENvbXBpbGVkPC9G
aWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRl
cmVyXHNoYWRlcnNcY29tcGlsZWRcY2xlYXIxMXZzLmgiPg0KKyAgICAgIDxGaWx0ZXI+U2hhZGVy
c1xDb21waWxlZDwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVkXGNsZWFybXVsdGlwbGUxMXBzLmgiPg0K
KyAgICAgIDxGaWx0ZXI+U2hhZGVyc1xDb21waWxlZDwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVk
ZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVkXGNs
ZWFyc2luZ2xlMTFwcy5oIj4NCisgICAgICA8RmlsdGVyPlNoYWRlcnNcQ29tcGlsZWQ8L0ZpbHRl
cj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY29tbW9u
XHN5c3RlbS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8
L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjb21tb25cZGVidWcuaCI+
DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcQnVmZmVyU3RvcmFnZS5oIj4NCisg
ICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5j
bHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxGZW5jZUltcGwuaCI+DQor
ICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbElu
Y2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcZ2VuZXJhdGVtaXAuaCI+
DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9D
bEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcSW1hZ2UuaCI+DQor
ICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbElu
Y2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcSW5kZXhCdWZmZXIuaCI+
DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9D
bEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcSW5kZXhEYXRhTWFu
YWdlci5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0K
KyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxRdWVy
eUltcGwuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcUmVu
ZGVyZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcUmVu
ZGVyVGFyZ2V0LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyPC9GaWx0
ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVy
XFNoYWRlckV4ZWN1dGFibGUuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVy
ZXI8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
cmVuZGVyZXJcU3dhcENoYWluLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRl
cmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
InJlbmRlcmVyXFRleHR1cmVTdG9yYWdlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVz
XFJlbmRlcmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9InJlbmRlcmVyXFZlcnRleEJ1ZmZlci5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBG
aWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJyZW5kZXJlclx2ZXJ0ZXhjb252ZXJzaW9uLmgiPg0KKyAgICAgIDxGaWx0ZXI+
SGVhZGVyIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleERhdGFNYW5hZ2VyLmgiPg0KKyAgICAg
IDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRl
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEJ1ZmZlclN0b3JhZ2UxMS5oIj4N
CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwv
Q2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEluZGV4QnVmZmVy
MTEuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0K
KyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxRdWVy
eTExLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcUmVu
ZGVyZXIxMS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjExPC9GaWx0
ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVy
XFJlbmRlclRhcmdldDExLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVy
MTE8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
cmVuZGVyZXJcU2hhZGVyRXhlY3V0YWJsZTExLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0icmVuZGVyZXJcU3dhcENoYWluMTEuaCI+DQorICAgICAgPEZpbHRlcj5IZWFk
ZXIgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxUZXh0dXJlU3RvcmFnZTExLmgiPg0KKyAgICAgIDxG
aWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4QnVmZmVyMTEuaCI+DQor
ICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0Ns
SW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxCdWZmZXJTdG9yYWdl
OS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisg
ICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcRmVuY2U5
LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAg
ICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxJbWFnZTku
aCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAg
IDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEluZGV4QnVm
ZmVyOS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcUXVl
cnk5LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0K
KyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5k
ZXJlcjkuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+
DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHJl
bmRlcmVyOV91dGlscy5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8
L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVu
ZGVyZXJcUmVuZGVyVGFyZ2V0OS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5k
ZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0icmVuZGVyZXJcU2hhZGVyRXhlY3V0YWJsZTkuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIg
RmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9InJlbmRlcmVyXFN3YXBDaGFpbjkuaCI+DQorICAgICAgPEZpbHRlcj5IZWFk
ZXIgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFRleHR1cmVTdG9yYWdlOS5oIj4NCisgICAgICA8Rmls
dGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4QnVmZmVyOS5oIj4NCisgICAg
ICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1
ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcRmVuY2UxMS5oIj4NCisgICAg
ICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNs
dWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEltYWdlMTEuaCI+DQorICAg
ICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsSW5j
bHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxyZW5kZXJlcjExX3V0aWxz
LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisg
ICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcRmVuY2U5
LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyXFJlbmRlcmVyOTwvRmls
dGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJl
clxRdWVyeTExLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyXFJlbmRl
cmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0icmVuZGVyZXJcQmxpdC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJl
cjk8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
cmVuZGVyZXJcU2hhZGVyQ2FjaGUuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVu
ZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9InJlbmRlcmVyXElucHV0TGF5b3V0Q2FjaGUuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIg
RmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJTdGF0ZUNhY2hlLmgiPg0KKyAgICAgIDxGaWx0
ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4RGVjbGFyYXRpb25DYWNoZS5o
Ij4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAg
PC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iY29uc3RhbnRzLmgiPg0KKyAg
ICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9InByZWNvbXBpbGVkLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVh
ZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9InJlbmRlcmVyXEluZGV4UmFuZ2VDYWNoZS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRl
ciBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxjb21tb25cZXZlbnRfdHJhY2VyLmgiPg0KKyAgICAgIDxGaWx0ZXI+
SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHRoaXJkX3BhcnR5XHRyYWNlX2V2ZW50XHRyYWNlX2V2ZW50LmgiPg0KKyAg
ICAgIDxGaWx0ZXI+VGhpcmQgUGFydHlcdHJhY2VfZXZlbnQ8L0ZpbHRlcj4NCisgICAgPC9DbElu
Y2x1ZGU+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxOb25lIEluY2x1
ZGU9InJlbmRlcmVyXHNoYWRlcnNcQmxpdC5wcyI+DQorICAgICAgPEZpbHRlcj5TaGFkZXJzPC9G
aWx0ZXI+DQorICAgIDwvTm9uZT4NCisgICAgPE5vbmUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVy
c1xCbGl0LnZzIj4NCisgICAgICA8RmlsdGVyPlNoYWRlcnM8L0ZpbHRlcj4NCisgICAgPC9Ob25l
Pg0KKyAgICA8Tm9uZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGdlbmVyYXRlX3NoYWRlcnMu
YmF0Ij4NCisgICAgICA8RmlsdGVyPlNoYWRlcnM8L0ZpbHRlcj4NCisgICAgPC9Ob25lPg0KKyAg
ICA8Tm9uZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXFBhc3N0aHJvdWdoMTEuaGxzbCI+DQor
ICAgICAgPEZpbHRlcj5TaGFkZXJzPC9GaWx0ZXI+DQorICAgIDwvTm9uZT4NCisgICAgPE5vbmUg
SW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xDbGVhcjExLmhsc2wiPg0KKyAgICAgIDxGaWx0ZXI+
U2hhZGVyczwvRmlsdGVyPg0KKyAgICA8L05vbmU+DQorICAgIDxOb25lIEluY2x1ZGU9ImxpYkdM
RVN2Mi5kZWYiIC8+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxSZXNv
dXJjZUNvbXBpbGUgSW5jbHVkZT0ibGliR0xFU3YyLnJjIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQor
PC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcHJlY29tcGlsZWQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3ByZWNvbXBpbGVkLmgJKHJldmlz
aW9uIDE1OTA5MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcHJl
Y29tcGlsZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsOSBAQAogI2luY2x1ZGUgPHZl
Y3Rvcj4KIAogI2luY2x1ZGUgPGQzZDkuaD4KLSNpbmNsdWRlIDxEM0QxMS5oPgorI2luY2x1ZGUg
PGQzZDExLmg+CiAjaW5jbHVkZSA8ZHhnaS5oPgotI2luY2x1ZGUgPEQzRGNvbXBpbGVyLmg+Cisj
aW5jbHVkZSA8ZDNkY29tcGlsZXIuaD4KIAogI2lmZGVmIF9NU0NfVkVSCiAjaW5jbHVkZSA8aGFz
aF9tYXA+CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3V0aWxp
dGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi91dGlsaXRpZXMuY3BwCShyZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3V0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIx
OCw2ICsyMTgsMjkgQEAgR0xzaXplaSBDb21wdXRlQ29tcHJlc3NlZFNpemUoR0xzaXplaSB3aQog
ICAgIH0KIH0KIAorR0xzaXplaSBDb21wdXRlVHlwZVNpemUoR0xlbnVtIHR5cGUpCit7CisgICAg
c3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgIGNhc2UgR0xfQllURTogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6ICAgICAg
ICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgY2FzZSBHTF9TSE9SVDogICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6ICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICBjYXNlIEdMX0lOVDogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiA0OworICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6ICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gNDsKKyAgICAgIGNhc2UgR0xfRkxPQVQ6ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIDQ7CisgICAgICBjYXNlIEdMX0hBTEZfRkxPQVRfT0VT
OiAgICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9S
VF81XzZfNTogICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hP
UlRfNF80XzRfNDogICAgICAgICAgcmV0dXJuIDI7CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NI
T1JUXzVfNV81XzE6ICAgICAgICAgIHJldHVybiAyOworICAgICAgY2FzZSBHTF9VTlNJR05FRF9T
SE9SVF80XzRfNF80X1JFVl9FWFQ6ICByZXR1cm4gMjsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURf
U0hPUlRfMV81XzVfNV9SRVZfRVhUOiAgcmV0dXJuIDI7CisgICAgICBjYXNlIEdMX1VOU0lHTkVE
X0lOVF8yXzEwXzEwXzEwX1JFVl9FWFQ6IHJldHVybiA0OworICAgICAgY2FzZSBHTF9VTlNJR05F
RF9JTlRfMjRfOF9PRVM6ICAgICAgICAgICByZXR1cm4gNDsKKyAgICAgIGRlZmF1bHQ6IFVOUkVB
Q0hBQkxFKCk7ICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCiBib29sIElz
Q29tcHJlc3NlZChHTGVudW0gZm9ybWF0KQogewogICAgIGlmKGZvcm1hdCA9PSBHTF9DT01QUkVT
U0VEX1JHQl9TM1RDX0RYVDFfRVhUIHx8CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3V0aWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvdXRpbGl0aWVzLmgJKHJldmlzaW9uIDE1OTA5MCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvdXRpbGl0aWVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDYgKzM0LDcgQEAgaW50IENvbXB1dGVQaXhlbFNpemUoR0xpbnQgaW50ZXJu
YWxmb3JtYQogR0xzaXplaSBDb21wdXRlUGl0Y2goR0xzaXplaSB3aWR0aCwgR0xpbnQgaW50ZXJu
YWxmb3JtYXQsIEdMaW50IGFsaWdubWVudCk7CiBHTHNpemVpIENvbXB1dGVDb21wcmVzc2VkUGl0
Y2goR0xzaXplaSB3aWR0aCwgR0xlbnVtIGZvcm1hdCk7CiBHTHNpemVpIENvbXB1dGVDb21wcmVz
c2VkU2l6ZShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCk7CitH
THNpemVpIENvbXB1dGVUeXBlU2l6ZShHTGVudW0gdHlwZSk7CiBib29sIElzQ29tcHJlc3NlZChH
TGVudW0gZm9ybWF0KTsKIGJvb2wgSXNEZXB0aFRleHR1cmUoR0xlbnVtIGZvcm1hdCk7CiBib29s
IElzU3RlbmNpbFRleHR1cmUoR0xlbnVtIGZvcm1hdCk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlMTEuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2UxMS5j
cHAJKHJldmlzaW9uIDE1OTA5MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvcmVuZGVyZXIvSW1hZ2UxMS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDggKzUwLDgg
QEAgdm9pZCBJbWFnZTExOjpnZW5lcmF0ZU1pcG1hcChJbWFnZTExICpkZQogICAgIEFTU0VSVChz
cmMtPmdldEhlaWdodCgpID09IDEgfHwgc3JjLT5nZXRIZWlnaHQoKSAvIDIgPT0gZGVzdC0+Z2V0
SGVpZ2h0KCkpOwogCiAgICAgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIGRlc3RNYXBwZWQsIHNy
Y01hcHBlZDsKLSAgICBkZXN0LT5tYXAoJmRlc3RNYXBwZWQpOwotICAgIHNyYy0+bWFwKCZzcmNN
YXBwZWQpOworICAgIGRlc3QtPm1hcChEM0QxMV9NQVBfV1JJVEUsICZkZXN0TWFwcGVkKTsKKyAg
ICBzcmMtPm1hcChEM0QxMV9NQVBfUkVBRCwgJnNyY01hcHBlZCk7CiAKICAgICBjb25zdCB1bnNp
Z25lZCBjaGFyICpzb3VyY2VEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBj
aGFyKj4oc3JjTWFwcGVkLnBEYXRhKTsKICAgICB1bnNpZ25lZCBjaGFyICpkZXN0RGF0YSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRlc3RNYXBwZWQucERhdGEpOwpAQCAtMTcx
LDcgKzE3MSw3IEBAIHZvaWQgSW1hZ2UxMTo6bG9hZERhdGEoR0xpbnQgeG9mZnNldCwgR0wKICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpp
bnB1dCkKIHsKICAgICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwcGVkSW1hZ2U7Ci0gICAg
SFJFU1VMVCByZXN1bHQgPSBtYXAoJm1hcHBlZEltYWdlKTsKKyAgICBIUkVTVUxUIHJlc3VsdCA9
IG1hcChEM0QxMV9NQVBfV1JJVEUsICZtYXBwZWRJbWFnZSk7CiAgICAgaWYgKEZBSUxFRChyZXN1
bHQpKQogICAgIHsKICAgICAgICAgRVJSKCJDb3VsZCBub3QgbWFwIGltYWdlIGZvciBsb2FkaW5n
LiIpOwpAQCAtMTk0LDcgKzE5NCw3IEBAIHZvaWQgSW1hZ2UxMTo6bG9hZERhdGEoR0xpbnQgeG9m
ZnNldCwgR0wKICAgICAgICAgbG9hZEFscGhhRmxvYXREYXRhVG9SR0JBKHdpZHRoLCBoZWlnaHQs
IGlucHV0UGl0Y2gsIGlucHV0LCBtYXBwZWRJbWFnZS5Sb3dQaXRjaCwgb2Zmc2V0TWFwcGVkRGF0
YSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBHTF9MVU1JTkFOQ0UzMkZfRVhUOgotICAg
ICAgICBsb2FkTHVtaW5hbmNlRmxvYXREYXRhVG9SR0Iod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRj
aCwgaW5wdXQsIG1hcHBlZEltYWdlLlJvd1BpdGNoLCBvZmZzZXRNYXBwZWREYXRhKTsKKyAgICAg
ICAgbG9hZEx1bWluYW5jZUZsb2F0RGF0YVRvUkdCQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNo
LCBpbnB1dCwgbWFwcGVkSW1hZ2UuUm93UGl0Y2gsIG9mZnNldE1hcHBlZERhdGEpOwogICAgICAg
ICBicmVhazsKICAgICAgIGNhc2UgR0xfQUxQSEExNkZfRVhUOgogICAgICAgICBsb2FkQWxwaGFI
YWxmRmxvYXREYXRhVG9SR0JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBtYXBw
ZWRJbWFnZS5Sb3dQaXRjaCwgb2Zmc2V0TWFwcGVkRGF0YSk7CkBAIC0yMzAsNyArMjMwLDcgQEAg
dm9pZCBJbWFnZTExOjpsb2FkRGF0YShHTGludCB4b2Zmc2V0LCBHTAogICAgICAgICBsb2FkQkdS
QURhdGFUb0JHUkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG1hcHBlZEltYWdl
LlJvd1BpdGNoLCBvZmZzZXRNYXBwZWREYXRhKTsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNl
IEdMX1JHQjMyRl9FWFQ6Ci0gICAgICAgIGxvYWRSR0JGbG9hdERhdGFUb05hdGl2ZSh3aWR0aCwg
aGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbWFwcGVkSW1hZ2UuUm93UGl0Y2gsIG9mZnNldE1h
cHBlZERhdGEpOworICAgICAgICBsb2FkUkdCRmxvYXREYXRhVG9SR0JBKHdpZHRoLCBoZWlnaHQs
IGlucHV0UGl0Y2gsIGlucHV0LCBtYXBwZWRJbWFnZS5Sb3dQaXRjaCwgb2Zmc2V0TWFwcGVkRGF0
YSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBHTF9SR0IxNkZfRVhUOgogICAgICAgICBs
b2FkUkdCSGFsZkZsb2F0RGF0YVRvUkdCQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1
dCwgbWFwcGVkSW1hZ2UuUm93UGl0Y2gsIG9mZnNldE1hcHBlZERhdGEpOwpAQCAtMjU0LDcgKzI1
NCw3IEBAIHZvaWQgSW1hZ2UxMTo6bG9hZENvbXByZXNzZWREYXRhKEdMaW50IHgKICAgICBBU1NF
UlQoeW9mZnNldCAlIDQgPT0gMCk7CiAKICAgICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFw
cGVkSW1hZ2U7Ci0gICAgSFJFU1VMVCByZXN1bHQgPSBtYXAoJm1hcHBlZEltYWdlKTsKKyAgICBI
UkVTVUxUIHJlc3VsdCA9IG1hcChEM0QxMV9NQVBfV1JJVEUsICZtYXBwZWRJbWFnZSk7CiAgICAg
aWYgKEZBSUxFRChyZXN1bHQpKQogICAgIHsKICAgICAgICAgRVJSKCJDb3VsZCBub3QgbWFwIGlt
YWdlIGZvciBsb2FkaW5nLiIpOwpAQCAtMzQ0LDggKzM0NCw4IEBAIHZvaWQgSW1hZ2UxMTo6Y29w
eShHTGludCB4b2Zmc2V0LCBHTGludCAKICAgICB7CiAgICAgICAgIC8vIFRoaXMgZm9ybWF0IHJl
cXVpcmVzIGNvbnZlcnNpb24sIHNvIHdlIG11c3QgY29weSB0aGUgdGV4dHVyZSB0byBzdGFnaW5n
IGFuZCBtYW51YWxseSBjb252ZXJ0IHZpYSByZWFkUGl4ZWxzCiAgICAgICAgIEQzRDExX01BUFBF
RF9TVUJSRVNPVVJDRSBtYXBwZWRJbWFnZTsKLSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtYXAo
Jm1hcHBlZEltYWdlKTsKLSAgICAgICAgICAgIAorICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1h
cChEM0QxMV9NQVBfV1JJVEUsICZtYXBwZWRJbWFnZSk7CisKICAgICAgICAgLy8gZGV0ZXJtaW5l
IHRoZSBvZmZzZXQgY29vcmRpbmF0ZSBpbnRvIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIKICAgICAg
ICAgR0xzaXplaSByb3dPZmZzZXQgPSBnbDo6Q29tcHV0ZVBpeGVsU2l6ZShtQWN0dWFsRm9ybWF0
KSAqIHhvZmZzZXQ7CiAgICAgICAgIHZvaWQgKmRhdGFPZmZzZXQgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyKj4obWFwcGVkSW1hZ2UucERhdGEpICsgbWFwcGVkSW1hZ2UuUm93UGl0Y2ggKiB5
b2Zmc2V0ICsgcm93T2Zmc2V0OwpAQCAtNDAyLDcgKzQwMiw3IEBAIHZvaWQgSW1hZ2UxMTo6Y3Jl
YXRlU3RhZ2luZ1RleHR1cmUoKQogICAgICAgICBkZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7
CiAgICAgICAgIGRlc2MuVXNhZ2UgPSBEM0QxMV9VU0FHRV9TVEFHSU5HOwogICAgICAgICBkZXNj
LkJpbmRGbGFncyA9IDA7Ci0gICAgICAgIGRlc2MuQ1BVQWNjZXNzRmxhZ3MgPSBEM0QxMV9DUFVf
QUNDRVNTX1dSSVRFOworICAgICAgICBkZXNjLkNQVUFjY2Vzc0ZsYWdzID0gRDNEMTFfQ1BVX0FD
Q0VTU19SRUFEIHwgRDNEMTFfQ1BVX0FDQ0VTU19XUklURTsKICAgICAgICAgZGVzYy5NaXNjRmxh
Z3MgPSAwOwogCiAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJl
MkQoJmRlc2MsIE5VTEwsICZuZXdUZXh0dXJlKTsKQEAgLTQyMCw3ICs0MjAsNyBAQCB2b2lkIElt
YWdlMTE6OmNyZWF0ZVN0YWdpbmdUZXh0dXJlKCkKICAgICBtRGlydHkgPSBmYWxzZTsKIH0KIAot
SFJFU1VMVCBJbWFnZTExOjptYXAoRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFICptYXApCitIUkVT
VUxUIEltYWdlMTE6Om1hcChEM0QxMV9NQVAgbWFwVHlwZSwgRDNEMTFfTUFQUEVEX1NVQlJFU09V
UkNFICptYXApCiB7CiAgICAgY3JlYXRlU3RhZ2luZ1RleHR1cmUoKTsKIApAQCAtNDI5LDcgKzQy
OSw3IEBAIEhSRVNVTFQgSW1hZ2UxMTo6bWFwKEQzRDExX01BUFBFRF9TVUJSRVMKICAgICBpZiAo
bVN0YWdpbmdUZXh0dXJlKQogICAgIHsKICAgICAgICAgSUQzRDExRGV2aWNlQ29udGV4dCAqZGV2
aWNlQ29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpOwotICAgICAgICByZXN1
bHQgPSBkZXZpY2VDb250ZXh0LT5NYXAobVN0YWdpbmdUZXh0dXJlLCBtU3RhZ2luZ1N1YnJlc291
cmNlLCBEM0QxMV9NQVBfV1JJVEUsIDAsIG1hcCk7CisgICAgICAgIHJlc3VsdCA9IGRldmljZUNv
bnRleHQtPk1hcChtU3RhZ2luZ1RleHR1cmUsIG1TdGFnaW5nU3VicmVzb3VyY2UsIG1hcFR5cGUs
IDAsIG1hcCk7CiAKICAgICAgICAgLy8gdGhpcyBjYW4gZmFpbCBpZiB0aGUgZGV2aWNlIGlzIHJl
bW92ZWQgKGZyb20gVERSKQogICAgICAgICBpZiAoZDNkMTE6OmlzRGV2aWNlTG9zdEVycm9yKHJl
c3VsdCkpCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRl
cmVyL0ltYWdlMTEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlMTEuaAkocmV2aXNpb24gMTU5MDkwKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZTExLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgSW1hZ2UxMSA6IHB1YmxpYyBJbWFnZQog
ICAgIHZpcnR1YWwgdm9pZCBjb3B5KEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50
IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBnbDo6RnJhbWVidWZm
ZXIgKnNvdXJjZSk7CiAKICAgcHJvdGVjdGVkOgotICAgIEhSRVNVTFQgbWFwKEQzRDExX01BUFBF
RF9TVUJSRVNPVVJDRSAqbWFwKTsKKyAgICBIUkVTVUxUIG1hcChEM0QxMV9NQVAgbWFwVHlwZSwg
RDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFICptYXApOwogICAgIHZvaWQgdW5tYXAoKTsKIAogICBw
cml2YXRlOgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9JbmRleEJ1ZmZlcjExLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyMTEuY3BwCShyZXZpc2lvbiAx
NTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L0luZGV4QnVmZmVyMTEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw4IEBAIGJvb2wg
SW5kZXhCdWZmZXIxMTo6bWFwQnVmZmVyKHVuc2lnbmVkIGkKIHsKICAgICBpZiAobUJ1ZmZlcikK
ICAgICB7Ci0gICAgICAgIGlmIChvZmZzZXQgKyBzaXplID4gbUJ1ZmZlclNpemUpCisgICAgICAg
IC8vIENoZWNrIGZvciBpbnRlZ2VyIG92ZXJmbG93cyBhbmQgb3V0LW91dC1ib3VuZHMgbWFwIHJl
cXVlc3RzCisgICAgICAgIGlmIChvZmZzZXQgKyBzaXplIDwgb2Zmc2V0IHx8IG9mZnNldCArIHNp
emUgPiBtQnVmZmVyU2l6ZSkKICAgICAgICAgewogICAgICAgICAgICAgRVJSKCJJbmRleCBidWZm
ZXIgbWFwIHJhbmdlIGlzIG5vdCBpbnNpZGUgdGhlIGJ1ZmZlci4iKTsKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
cmVuZGVyZXIvSW5kZXhCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhCdWZmZXIuY3BwCShyZXZpc2lvbiAx
NTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L0luZGV4QnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTggKzY3LDMwIEBAIHVuc2ln
bmVkIGludCBJbmRleEJ1ZmZlckludGVyZmFjZTo6Z2V0U2UKICAgICByZXR1cm4gbUluZGV4QnVm
ZmVyLT5nZXRTZXJpYWwoKTsKIH0KIAotaW50IEluZGV4QnVmZmVySW50ZXJmYWNlOjptYXBCdWZm
ZXIodW5zaWduZWQgaW50IHNpemUsIHZvaWQqKiBvdXRNYXBwZWRNZW1vcnkpCitib29sIEluZGV4
QnVmZmVySW50ZXJmYWNlOjptYXBCdWZmZXIodW5zaWduZWQgaW50IHNpemUsIHZvaWQqKiBvdXRN
YXBwZWRNZW1vcnksIHVuc2lnbmVkIGludCAqc3RyZWFtT2Zmc2V0KQogeworICAgIC8vIFByb3Rl
Y3QgYWdhaW5zdCBpbnRlZ2VyIG92ZXJmbG93CisgICAgaWYgKG1Xcml0ZVBvc2l0aW9uICsgc2l6
ZSA8IG1Xcml0ZVBvc2l0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KwogICAgIGlmICghbUluZGV4QnVmZmVyLT5tYXBCdWZmZXIobVdyaXRlUG9zaXRpb24sIHNpemUs
IG91dE1hcHBlZE1lbW9yeSkpCiAgICAgewotICAgICAgICAqb3V0TWFwcGVkTWVtb3J5ID0gTlVM
TDsKLSAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAob3V0TWFwcGVkTWVtb3J5KQorICAg
ICAgICB7CisgICAgICAgICAgICAqb3V0TWFwcGVkTWVtb3J5ID0gTlVMTDsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaW50IG9sZFdyaXRlUG9zID0gc3Rh
dGljX2Nhc3Q8aW50PihtV3JpdGVQb3NpdGlvbik7Ci0gICAgbVdyaXRlUG9zaXRpb24gKz0gc2l6
ZTsKKyAgICBpZiAoc3RyZWFtT2Zmc2V0KQorICAgIHsKKyAgICAgICAgKnN0cmVhbU9mZnNldCA9
IG1Xcml0ZVBvc2l0aW9uOworICAgIH0KIAotICAgIHJldHVybiBvbGRXcml0ZVBvczsKKyAgICBt
V3JpdGVQb3NpdGlvbiArPSBzaXplOworICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIEluZGV4
QnVmZmVySW50ZXJmYWNlOjp1bm1hcEJ1ZmZlcigpCkBAIC0xNzYsMjcgKzE4OCw5IEBAIGJvb2wg
U3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2U6OnJlc2VydmUKICAgICB9CiB9CiAKLXVuc2lnbmVk
IGludCBTdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZTo6bG9va3VwUmFuZ2UoaW50cHRyX3Qgb2Zm
c2V0LCBHTHNpemVpIGNvdW50LCB1bnNpZ25lZCBpbnQgKm1pbkluZGV4LCB1bnNpZ25lZCBpbnQg
Km1heEluZGV4KQotewotICAgIEluZGV4UmFuZ2UgcmFuZ2UgPSB7b2Zmc2V0LCBjb3VudH07Ci0K
LSAgICBzdGQ6Om1hcDxJbmRleFJhbmdlLCBJbmRleFJlc3VsdD46Oml0ZXJhdG9yIHJlcyA9IG1D
YWNoZS5maW5kKHJhbmdlKTsKLQotICAgIGlmIChyZXMgPT0gbUNhY2hlLmVuZCgpKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgICptaW5JbmRleCA9IHJlcy0+c2Vjb25k
Lm1pbkluZGV4OwotICAgICptYXhJbmRleCA9IHJlcy0+c2Vjb25kLm1heEluZGV4OwotICAgIHJl
dHVybiByZXMtPnNlY29uZC5zdHJlYW1PZmZzZXQ7Ci19Ci0KLXZvaWQgU3RhdGljSW5kZXhCdWZm
ZXJJbnRlcmZhY2U6OmFkZFJhbmdlKGludHB0cl90IG9mZnNldCwgR0xzaXplaSBjb3VudCwgdW5z
aWduZWQgaW50IG1pbkluZGV4LCB1bnNpZ25lZCBpbnQgbWF4SW5kZXgsIHVuc2lnbmVkIGludCBz
dHJlYW1PZmZzZXQpCitJbmRleFJhbmdlQ2FjaGUgKlN0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNl
OjpnZXRJbmRleFJhbmdlQ2FjaGUoKQogewotICAgIEluZGV4UmFuZ2UgaW5kZXhSYW5nZSA9IHtv
ZmZzZXQsIGNvdW50fTsKLSAgICBJbmRleFJlc3VsdCBpbmRleFJlc3VsdCA9IHttaW5JbmRleCwg
bWF4SW5kZXgsIHN0cmVhbU9mZnNldH07Ci0gICAgbUNhY2hlW2luZGV4UmFuZ2VdID0gaW5kZXhS
ZXN1bHQ7CisgICAgcmV0dXJuICZtSW5kZXhSYW5nZUNhY2hlOwogfQogCiB9CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9JbmRleEJ1ZmZlci5oCShyZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTExLDYgKzExLDcgQEAKICNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX0lOREVYQlVG
RkVSX0hfCiAKICNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorI2luY2x1ZGUgImxpYkdM
RVN2Mi9yZW5kZXJlci9JbmRleFJhbmdlQ2FjaGUuaCIKIAogbmFtZXNwYWNlIHJ4CiB7CkBAIC01
OCw3ICs1OSw3IEBAIGNsYXNzIEluZGV4QnVmZmVySW50ZXJmYWNlCiAKICAgICB1bnNpZ25lZCBp
bnQgZ2V0U2VyaWFsKCkgY29uc3Q7CiAKLSAgICBpbnQgbWFwQnVmZmVyKHVuc2lnbmVkIGludCBz
aXplLCB2b2lkKiogb3V0TWFwcGVkTWVtb3J5KTsKKyAgICBib29sIG1hcEJ1ZmZlcih1bnNpZ25l
ZCBpbnQgc2l6ZSwgdm9pZCoqIG91dE1hcHBlZE1lbW9yeSwgdW5zaWduZWQgaW50ICpzdHJlYW1P
ZmZzZXQpOwogICAgIGJvb2wgdW5tYXBCdWZmZXIoKTsKIAogICAgIEluZGV4QnVmZmVyICpnZXRJ
bmRleEJ1ZmZlcigpIGNvbnN0OwpAQCAtOTksMzcgKzEwMCwxMCBAQCBjbGFzcyBTdGF0aWNJbmRl
eEJ1ZmZlckludGVyZmFjZSA6IHB1YmxpCiAKICAgICB2aXJ0dWFsIGJvb2wgcmVzZXJ2ZUJ1ZmZl
clNwYWNlKHVuc2lnbmVkIGludCBzaXplLCBHTGVudW0gaW5kZXhUeXBlKTsKIAotICAgIHVuc2ln
bmVkIGludCBsb29rdXBSYW5nZShpbnRwdHJfdCBvZmZzZXQsIEdMc2l6ZWkgY291bnQsIHVuc2ln
bmVkIGludCAqbWluSW5kZXgsIHVuc2lnbmVkIGludCAqbWF4SW5kZXgpOyAgIC8vIFJldHVybnMg
dGhlIG9mZnNldCBpbnRvIHRoZSBpbmRleCBidWZmZXIsIG9yIC0xIGlmIG5vdCBmb3VuZAotICAg
IHZvaWQgYWRkUmFuZ2UoaW50cHRyX3Qgb2Zmc2V0LCBHTHNpemVpIGNvdW50LCB1bnNpZ25lZCBp
bnQgbWluSW5kZXgsIHVuc2lnbmVkIGludCBtYXhJbmRleCwgdW5zaWduZWQgaW50IHN0cmVhbU9m
ZnNldCk7CisgICAgSW5kZXhSYW5nZUNhY2hlICpnZXRJbmRleFJhbmdlQ2FjaGUoKTsKIAogICBw
cml2YXRlOgotICAgIHN0cnVjdCBJbmRleFJhbmdlCi0gICAgewotICAgICAgICBpbnRwdHJfdCBv
ZmZzZXQ7Ci0gICAgICAgIEdMc2l6ZWkgY291bnQ7Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcjwo
Y29uc3QgSW5kZXhSYW5nZSYgcmhzKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
b2Zmc2V0ICE9IHJocy5vZmZzZXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIG9mZnNldCA8IHJocy5vZmZzZXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAo
Y291bnQgIT0gcmhzLmNvdW50KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVy
biBjb3VudCA8IHJocy5jb3VudDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBzdHJ1Y3QgSW5kZXhSZXN1bHQKLSAgICB7
Ci0gICAgICAgIHVuc2lnbmVkIGludCBtaW5JbmRleDsKLSAgICAgICAgdW5zaWduZWQgaW50IG1h
eEluZGV4OwotICAgICAgICB1bnNpZ25lZCBpbnQgc3RyZWFtT2Zmc2V0OwotICAgIH07Ci0KLSAg
ICBzdGQ6Om1hcDxJbmRleFJhbmdlLCBJbmRleFJlc3VsdD4gbUNhY2hlOworICAgIEluZGV4UmFu
Z2VDYWNoZSBtSW5kZXhSYW5nZUNhY2hlOwogfTsKIAogfQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleERhdGFNYW5hZ2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L0luZGV4RGF0YU1hbmFnZXIuY3BwCShyZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4RGF0YU1hbmFnZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMyw2ICsxMyw3IEBACiAKICNpbmNsdWRlICJsaWJHTEVTdjIvQnVm
ZmVyLmgiCiAjaW5jbHVkZSAibGliR0xFU3YyL21haW4uaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIv
dXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyLmgi
CiAKIG5hbWVzcGFjZSByeApAQCAtNTMsMTcgKzU0LDYgQEAgSW5kZXhEYXRhTWFuYWdlcjo6fklu
ZGV4RGF0YU1hbmFnZXIoKQogICAgIGRlbGV0ZSBtQ291bnRpbmdCdWZmZXI7CiB9CiAKLXN0YXRp
YyB1bnNpZ25lZCBpbnQgaW5kZXhUeXBlU2l6ZShHTGVudW0gdHlwZSkKLXsKLSAgICBzd2l0Y2gg
KHR5cGUpCi0gICAgewotICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6ICAgcmV0dXJuIHNpemVv
ZihHTHVpbnQpOwotICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDogcmV0dXJuIHNpemVvZihH
THVzaG9ydCk7Ci0gICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6ICByZXR1cm4gc2l6ZW9mKEdM
dWJ5dGUpOwotICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgcmV0dXJuIHNpemVvZihHTHVz
aG9ydCk7Ci0gICAgfQotfQotCiBzdGF0aWMgdm9pZCBjb252ZXJ0SW5kaWNlcyhHTGVudW0gdHlw
ZSwgY29uc3Qgdm9pZCAqaW5wdXQsIEdMc2l6ZWkgY291bnQsIHZvaWQgKm91dHB1dCkKIHsKICAg
ICBpZiAodHlwZSA9PSBHTF9VTlNJR05FRF9CWVRFKQpAQCAtMTI1LDEzICsxMTUsMTkgQEAgR0xl
bnVtIEluZGV4RGF0YU1hbmFnZXI6OnByZXBhcmVJbmRleERhdAogICAgIH0KIAogICAgIEdMZW51
bSBkZXN0aW5hdGlvbkluZGV4VHlwZSA9ICh0eXBlID09IEdMX1VOU0lHTkVEX0lOVCkgPyBHTF9V
TlNJR05FRF9JTlQgOiBHTF9VTlNJR05FRF9TSE9SVDsKLSAgICBpbnRwdHJfdCBvZmZzZXQgPSBy
ZWludGVycHJldF9jYXN0PGludHB0cl90PihpbmRpY2VzKTsKKyAgICB1bnNpZ25lZCBpbnQgb2Zm
c2V0ID0gMDsKICAgICBib29sIGFsaWduZWRPZmZzZXQgPSBmYWxzZTsKIAogICAgIEJ1ZmZlclN0
b3JhZ2UgKnN0b3JhZ2UgPSBOVUxMOwogCiAgICAgaWYgKGJ1ZmZlciAhPSBOVUxMKQogICAgIHsK
KyAgICAgICAgaWYgKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihpbmRpY2VzKSA+IHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6bWF4KCkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBHTF9PVVRfT0ZfTUVNT1JZOworICAgICAgICB9CisgICAgICAgIG9mZnNldCA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGlu
ZGljZXMpKTsKKwogICAgICAgICBzdG9yYWdlID0gYnVmZmVyLT5nZXRTdG9yYWdlKCk7CiAKICAg
ICAgICAgc3dpdGNoICh0eXBlKQpAQCAtMTQyLDcgKzEzOCwxNiBAQCBHTGVudW0gSW5kZXhEYXRh
TWFuYWdlcjo6cHJlcGFyZUluZGV4RGF0CiAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUo
KTsgYWxpZ25lZE9mZnNldCA9IGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGluZGV4
VHlwZVNpemUodHlwZSkgKiBjb3VudCArIG9mZnNldCA+IHN0b3JhZ2UtPmdldFNpemUoKSkKKyAg
ICAgICAgdW5zaWduZWQgaW50IHR5cGVTaXplID0gZ2w6OkNvbXB1dGVUeXBlU2l6ZSh0eXBlKTsK
KworICAgICAgICAvLyBjaGVjayBmb3IgaW50ZWdlciBvdmVyZmxvd3MKKyAgICAgICAgaWYgKHN0
YXRpY19jYXN0PHVuc2lnbmVkIGludD4oY291bnQpID4gKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQgaW50Pjo6bWF4KCkgLyB0eXBlU2l6ZSkgfHwKKyAgICAgICAgICAgIHR5cGVTaXplICog
c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihjb3VudCkgKyBvZmZzZXQgPCBvZmZzZXQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBHTF9PVVRfT0ZfTUVNT1JZOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKHR5cGVTaXplICogc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihjb3VudCkg
KyBvZmZzZXQgPiBzdG9yYWdlLT5nZXRTaXplKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiBHTF9JTlZBTElEX09QRVJBVElPTjsKICAgICAgICAgfQpAQCAtMTU2LDM3ICsxNjEsNDQg
QEAgR0xlbnVtIEluZGV4RGF0YU1hbmFnZXI6OnByZXBhcmVJbmRleERhdAogICAgIEluZGV4QnVm
ZmVySW50ZXJmYWNlICppbmRleEJ1ZmZlciA9IHN0cmVhbWluZ0J1ZmZlcjsKICAgICBib29sIGRp
cmVjdFN0b3JhZ2UgPSBhbGlnbmVkT2Zmc2V0ICYmIHN0b3JhZ2UgJiYgc3RvcmFnZS0+c3VwcG9y
dHNEaXJlY3RCaW5kaW5nKCkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlv
bkluZGV4VHlwZSA9PSB0eXBlOwotICAgIFVJTlQgc3RyZWFtT2Zmc2V0ID0gMDsKKyAgICB1bnNp
Z25lZCBpbnQgc3RyZWFtT2Zmc2V0ID0gMDsKIAogICAgIGlmIChkaXJlY3RTdG9yYWdlKQogICAg
IHsKICAgICAgICAgaW5kZXhCdWZmZXIgPSBzdHJlYW1pbmdCdWZmZXI7CiAgICAgICAgIHN0cmVh
bU9mZnNldCA9IG9mZnNldDsKICAgICAgICAgc3RvcmFnZS0+bWFya0J1ZmZlclVzYWdlKCk7Ci0g
ICAgICAgIGNvbXB1dGVSYW5nZSh0eXBlLCBpbmRpY2VzLCBjb3VudCwgJnRyYW5zbGF0ZWQtPm1p
bkluZGV4LCAmdHJhbnNsYXRlZC0+bWF4SW5kZXgpOworCisgICAgICAgIGlmICghYnVmZmVyLT5n
ZXRJbmRleFJhbmdlQ2FjaGUoKS0+ZmluZFJhbmdlKHR5cGUsIG9mZnNldCwgY291bnQsICZ0cmFu
c2xhdGVkLT5taW5JbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJnRyYW5zbGF0ZWQtPm1heEluZGV4LCBOVUxMKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgY29tcHV0ZVJhbmdlKHR5cGUsIGluZGljZXMsIGNvdW50LCAmdHJhbnNsYXRl
ZC0+bWluSW5kZXgsICZ0cmFuc2xhdGVkLT5tYXhJbmRleCk7CisgICAgICAgICAgICBidWZmZXIt
PmdldEluZGV4UmFuZ2VDYWNoZSgpLT5hZGRSYW5nZSh0eXBlLCBvZmZzZXQsIGNvdW50LCB0cmFu
c2xhdGVkLT5taW5JbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRyYW5zbGF0ZWQtPm1heEluZGV4LCBvZmZzZXQpOworICAgICAgICB9CiAg
ICAgfQogICAgIGVsc2UgaWYgKHN0YXRpY0J1ZmZlciAmJiBzdGF0aWNCdWZmZXItPmdldEJ1ZmZl
clNpemUoKSAhPSAwICYmIHN0YXRpY0J1ZmZlci0+Z2V0SW5kZXhUeXBlKCkgPT0gdHlwZSAmJiBh
bGlnbmVkT2Zmc2V0KQogICAgIHsKICAgICAgICAgaW5kZXhCdWZmZXIgPSBzdGF0aWNCdWZmZXI7
Ci0gICAgICAgIHN0cmVhbU9mZnNldCA9IHN0YXRpY0J1ZmZlci0+bG9va3VwUmFuZ2Uob2Zmc2V0
LCBjb3VudCwgJnRyYW5zbGF0ZWQtPm1pbkluZGV4LCAmdHJhbnNsYXRlZC0+bWF4SW5kZXgpOwot
Ci0gICAgICAgIGlmIChzdHJlYW1PZmZzZXQgPT0gLTEpCisgICAgICAgIGlmICghc3RhdGljQnVm
ZmVyLT5nZXRJbmRleFJhbmdlQ2FjaGUoKS0+ZmluZFJhbmdlKHR5cGUsIG9mZnNldCwgY291bnQs
ICZ0cmFuc2xhdGVkLT5taW5JbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRyYW5zbGF0ZWQtPm1heEluZGV4LCAmc3RyZWFt
T2Zmc2V0KSkKICAgICAgICAgewotICAgICAgICAgICAgc3RyZWFtT2Zmc2V0ID0gKG9mZnNldCAv
IGluZGV4VHlwZVNpemUodHlwZSkpICogaW5kZXhUeXBlU2l6ZShkZXN0aW5hdGlvbkluZGV4VHlw
ZSk7CisgICAgICAgICAgICBzdHJlYW1PZmZzZXQgPSAob2Zmc2V0IC8gZ2w6OkNvbXB1dGVUeXBl
U2l6ZSh0eXBlKSkgKiBnbDo6Q29tcHV0ZVR5cGVTaXplKGRlc3RpbmF0aW9uSW5kZXhUeXBlKTsK
ICAgICAgICAgICAgIGNvbXB1dGVSYW5nZSh0eXBlLCBpbmRpY2VzLCBjb3VudCwgJnRyYW5zbGF0
ZWQtPm1pbkluZGV4LCAmdHJhbnNsYXRlZC0+bWF4SW5kZXgpOwotICAgICAgICAgICAgc3RhdGlj
QnVmZmVyLT5hZGRSYW5nZShvZmZzZXQsIGNvdW50LCB0cmFuc2xhdGVkLT5taW5JbmRleCwgdHJh
bnNsYXRlZC0+bWF4SW5kZXgsIHN0cmVhbU9mZnNldCk7CisgICAgICAgICAgICBzdGF0aWNCdWZm
ZXItPmdldEluZGV4UmFuZ2VDYWNoZSgpLT5hZGRSYW5nZSh0eXBlLCBvZmZzZXQsIGNvdW50LCB0
cmFuc2xhdGVkLT5taW5JbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWQtPm1heEluZGV4LCBzdHJlYW1PZmZzZXQp
OwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGludCBjb252ZXJ0
Q291bnQgPSBjb3VudDsKKyAgICAgICAgdW5zaWduZWQgaW50IGNvbnZlcnRDb3VudCA9IGNvdW50
OwogCiAgICAgICAgIGlmIChzdGF0aWNCdWZmZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlm
IChzdGF0aWNCdWZmZXItPmdldEJ1ZmZlclNpemUoKSA9PSAwICYmIGFsaWduZWRPZmZzZXQpCiAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaW5kZXhCdWZmZXIgPSBzdGF0aWNCdWZmZXI7
Ci0gICAgICAgICAgICAgICAgY29udmVydENvdW50ID0gc3RvcmFnZS0+Z2V0U2l6ZSgpIC8gaW5k
ZXhUeXBlU2l6ZSh0eXBlKTsKKyAgICAgICAgICAgICAgICBjb252ZXJ0Q291bnQgPSBzdG9yYWdl
LT5nZXRTaXplKCkgLyBnbDo6Q29tcHV0ZVR5cGVTaXplKHR5cGUpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewpAQCAtMjAxLDEyICsyMTMsMjIgQEAgR0xl
bnVtIEluZGV4RGF0YU1hbmFnZXI6OnByZXBhcmVJbmRleERhdAogICAgICAgICAgICAgcmV0dXJu
IEdMX0lOVkFMSURfT1BFUkFUSU9OOwogICAgICAgICB9CiAKLSAgICAgICAgdW5zaWduZWQgaW50
IGJ1ZmZlclNpemVSZXF1aXJlZCA9IGNvbnZlcnRDb3VudCAqIGluZGV4VHlwZVNpemUoZGVzdGlu
YXRpb25JbmRleFR5cGUpOwotICAgICAgICBpbmRleEJ1ZmZlci0+cmVzZXJ2ZUJ1ZmZlclNwYWNl
KGJ1ZmZlclNpemVSZXF1aXJlZCwgdHlwZSk7CisgICAgICAgIHVuc2lnbmVkIGludCBpbmRleFR5
cGVTaXplID0gZ2w6OkNvbXB1dGVUeXBlU2l6ZShkZXN0aW5hdGlvbkluZGV4VHlwZSk7CisgICAg
ICAgIGlmIChjb252ZXJ0Q291bnQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGludD46
Om1heCgpIC8gaW5kZXhUeXBlU2l6ZSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJSZXNl
cnZpbmcgJXUgaW5kaWNpZXMgb2YgJXUgYnl0ZXMgZWFjaCBleGNlZWRzIHRoZSBtYXhpbXVtIGJ1
ZmZlciBzaXplLiIsIGNvbnZlcnRDb3VudCwgaW5kZXhUeXBlU2l6ZSk7CisgICAgICAgICAgICBy
ZXR1cm4gR0xfT1VUX09GX01FTU9SWTsKKyAgICAgICAgfQorCisgICAgICAgIHVuc2lnbmVkIGlu
dCBidWZmZXJTaXplUmVxdWlyZWQgPSBjb252ZXJ0Q291bnQgKiBpbmRleFR5cGVTaXplOworICAg
ICAgICBpZiAoIWluZGV4QnVmZmVyLT5yZXNlcnZlQnVmZmVyU3BhY2UoYnVmZmVyU2l6ZVJlcXVp
cmVkLCB0eXBlKSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJGYWlsZWQgdG8gcmVzZXJ2
ZSAldSBieXRlcyBpbiBhbiBpbmRleCBidWZmZXIuIiwgYnVmZmVyU2l6ZVJlcXVpcmVkKTsKKyAg
ICAgICAgICAgIHJldHVybiBHTF9PVVRfT0ZfTUVNT1JZOworICAgICAgICB9CiAKICAgICAgICAg
dm9pZCogb3V0cHV0ID0gTlVMTDsKLSAgICAgICAgc3RyZWFtT2Zmc2V0ID0gaW5kZXhCdWZmZXIt
Pm1hcEJ1ZmZlcihidWZmZXJTaXplUmVxdWlyZWQsICZvdXRwdXQpOwotICAgICAgICBpZiAoc3Ry
ZWFtT2Zmc2V0ID09IC0xIHx8IG91dHB1dCA9PSBOVUxMKQorICAgICAgICBpZiAoIWluZGV4QnVm
ZmVyLT5tYXBCdWZmZXIoYnVmZmVyU2l6ZVJlcXVpcmVkLCAmb3V0cHV0LCAmc3RyZWFtT2Zmc2V0
KSkKICAgICAgICAgewogICAgICAgICAgICAgRVJSKCJGYWlsZWQgdG8gbWFwIGluZGV4IGJ1ZmZl
ci4iKTsKICAgICAgICAgICAgIHJldHVybiBHTF9PVVRfT0ZfTUVNT1JZOwpAQCAtMjI0LDIwICsy
NDYsMjEgQEAgR0xlbnVtIEluZGV4RGF0YU1hbmFnZXI6OnByZXBhcmVJbmRleERhdAogCiAgICAg
ICAgIGlmIChzdGF0aWNCdWZmZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0cmVhbU9mZnNl
dCA9IChvZmZzZXQgLyBpbmRleFR5cGVTaXplKHR5cGUpKSAqIGluZGV4VHlwZVNpemUoZGVzdGlu
YXRpb25JbmRleFR5cGUpOwotICAgICAgICAgICAgc3RhdGljQnVmZmVyLT5hZGRSYW5nZShvZmZz
ZXQsIGNvdW50LCB0cmFuc2xhdGVkLT5taW5JbmRleCwgdHJhbnNsYXRlZC0+bWF4SW5kZXgsIHN0
cmVhbU9mZnNldCk7CisgICAgICAgICAgICBzdHJlYW1PZmZzZXQgPSAob2Zmc2V0IC8gZ2w6OkNv
bXB1dGVUeXBlU2l6ZSh0eXBlKSkgKiBnbDo6Q29tcHV0ZVR5cGVTaXplKGRlc3RpbmF0aW9uSW5k
ZXhUeXBlKTsKKyAgICAgICAgICAgIHN0YXRpY0J1ZmZlci0+Z2V0SW5kZXhSYW5nZUNhY2hlKCkt
PmFkZFJhbmdlKHR5cGUsIG9mZnNldCwgY291bnQsIHRyYW5zbGF0ZWQtPm1pbkluZGV4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJh
bnNsYXRlZC0+bWF4SW5kZXgsIHN0cmVhbU9mZnNldCk7CiAgICAgICAgIH0KICAgICB9CiAKICAg
ICB0cmFuc2xhdGVkLT5zdG9yYWdlID0gZGlyZWN0U3RvcmFnZSA/IHN0b3JhZ2UgOiBOVUxMOwog
ICAgIHRyYW5zbGF0ZWQtPmluZGV4QnVmZmVyID0gaW5kZXhCdWZmZXItPmdldEluZGV4QnVmZmVy
KCk7CiAgICAgdHJhbnNsYXRlZC0+c2VyaWFsID0gZGlyZWN0U3RvcmFnZSA/IHN0b3JhZ2UtPmdl
dFNlcmlhbCgpIDogaW5kZXhCdWZmZXItPmdldFNlcmlhbCgpOwotICAgIHRyYW5zbGF0ZWQtPnN0
YXJ0SW5kZXggPSBzdHJlYW1PZmZzZXQgLyBpbmRleFR5cGVTaXplKGRlc3RpbmF0aW9uSW5kZXhU
eXBlKTsKKyAgICB0cmFuc2xhdGVkLT5zdGFydEluZGV4ID0gc3RyZWFtT2Zmc2V0IC8gZ2w6OkNv
bXB1dGVUeXBlU2l6ZShkZXN0aW5hdGlvbkluZGV4VHlwZSk7CiAgICAgdHJhbnNsYXRlZC0+c3Rh
cnRPZmZzZXQgPSBzdHJlYW1PZmZzZXQ7CiAKICAgICBpZiAoYnVmZmVyKQogICAgIHsKLSAgICAg
ICAgYnVmZmVyLT5wcm9tb3RlU3RhdGljVXNhZ2UoY291bnQgKiBpbmRleFR5cGVTaXplKHR5cGUp
KTsKKyAgICAgICAgYnVmZmVyLT5wcm9tb3RlU3RhdGljVXNhZ2UoY291bnQgKiBnbDo6Q29tcHV0
ZVR5cGVTaXplKHR5cGUpKTsKICAgICB9CiAKICAgICByZXR1cm4gR0xfTk9fRVJST1I7CkBAIC0y
NTYsNyArMjc5LDcgQEAgU3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2UgKkluZGV4RGF0YU1hbgog
ICAgICAgICAgICAgbUNvdW50aW5nQnVmZmVyLT5yZXNlcnZlQnVmZmVyU3BhY2Uoc3BhY2VOZWVk
ZWQsIEdMX1VOU0lHTkVEX1NIT1JUKTsKIAogICAgICAgICAgICAgdm9pZCogbWFwcGVkTWVtb3J5
ID0gTlVMTDsKLSAgICAgICAgICAgIGlmIChtQ291bnRpbmdCdWZmZXItPm1hcEJ1ZmZlcihzcGFj
ZU5lZWRlZCwgJm1hcHBlZE1lbW9yeSkgPT0gLTEgfHwgbWFwcGVkTWVtb3J5ID09IE5VTEwpCisg
ICAgICAgICAgICBpZiAoIW1Db3VudGluZ0J1ZmZlci0+bWFwQnVmZmVyKHNwYWNlTmVlZGVkLCAm
bWFwcGVkTWVtb3J5LCBOVUxMKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBFUlIo
IkZhaWxlZCB0byBtYXAgY291bnRpbmcgYnVmZmVyLiIpOwogICAgICAgICAgICAgICAgIHJldHVy
biBOVUxMOwpAQCAtMjg2LDcgKzMwOSw3IEBAIFN0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNlICpJ
bmRleERhdGFNYW4KICAgICAgICAgICAgIG1Db3VudGluZ0J1ZmZlci0+cmVzZXJ2ZUJ1ZmZlclNw
YWNlKHNwYWNlTmVlZGVkLCBHTF9VTlNJR05FRF9JTlQpOwogCiAgICAgICAgICAgICB2b2lkKiBt
YXBwZWRNZW1vcnkgPSBOVUxMOwotICAgICAgICAgICAgaWYgKG1Db3VudGluZ0J1ZmZlci0+bWFw
QnVmZmVyKHNwYWNlTmVlZGVkLCAmbWFwcGVkTWVtb3J5KSA9PSAtMSB8fCBtYXBwZWRNZW1vcnkg
PT0gTlVMTCkKKyAgICAgICAgICAgIGlmICghbUNvdW50aW5nQnVmZmVyLT5tYXBCdWZmZXIoc3Bh
Y2VOZWVkZWQsICZtYXBwZWRNZW1vcnksIE5VTEwpKQogICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgIEVSUigiRmFpbGVkIHRvIG1hcCBjb3VudGluZyBidWZmZXIuIik7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIE5VTEw7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL3JlbmRlcmVyL0luZGV4UmFuZ2VDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleFJhbmdlQ2FjaGUu
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9JbmRleFJhbmdlQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
OTcgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAx
MyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEluZGV4
UmFuZ2VDYWNoZS5jcHA6IERlZmluZXMgdGhlIHJ4OjpJbmRleFJhbmdlQ2FjaGUgY2xhc3Mgd2hp
Y2ggc3RvcmVzIGluZm9ybWF0aW9uIGFib3V0CisvLyByYW5nZXMgb2YgaW5kaWNlcy4KKworI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9JbmRleFJhbmdlQ2FjaGUuaCIKKyNpbmNsdWRlICJj
b21tb24vZGVidWcuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvdXRpbGl0aWVzLmgiCisjaW5jbHVk
ZSA8dHVwbGU+CisKK25hbWVzcGFjZSByeAoreworCit2b2lkIEluZGV4UmFuZ2VDYWNoZTo6YWRk
UmFuZ2UoR0xlbnVtIHR5cGUsIHVuc2lnbmVkIGludCBvZmZzZXQsIEdMc2l6ZWkgY291bnQsIHVu
c2lnbmVkIGludCBtaW5JZHgsIHVuc2lnbmVkIGludCBtYXhJZHgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHN0cmVhbU9mZnNldCkKK3sKKyAgICBtSW5kZXhS
YW5nZUNhY2hlW0luZGV4UmFuZ2UodHlwZSwgb2Zmc2V0LCBjb3VudCldID0gSW5kZXhCb3VuZHMo
bWluSWR4LCBtYXhJZHgsIHN0cmVhbU9mZnNldCk7Cit9CisKK3ZvaWQgSW5kZXhSYW5nZUNhY2hl
OjppbnZhbGlkYXRlUmFuZ2UodW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IHNpemUp
Cit7CisgICAgdW5zaWduZWQgaW50IGludmFsaWRhdGVTdGFydCA9IG9mZnNldDsKKyAgICB1bnNp
Z25lZCBpbnQgaW52YWxpZGF0ZUVuZCA9IG9mZnNldCArIHNpemU7CisKKyAgICBJbmRleFJhbmdl
TWFwOjppdGVyYXRvciBpID0gbUluZGV4UmFuZ2VDYWNoZS5iZWdpbigpOworICAgIHdoaWxlIChp
ICE9IG1JbmRleFJhbmdlQ2FjaGUuZW5kKCkpCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQg
cmFuZ2VTdGFydCA9IGktPnNlY29uZC5zdHJlYW1PZmZzZXQ7CisgICAgICAgIHVuc2lnbmVkIGlu
dCByYW5nZUVuZCA9IGktPnNlY29uZC5zdHJlYW1PZmZzZXQgKyAoZ2w6OkNvbXB1dGVUeXBlU2l6
ZShpLT5maXJzdC50eXBlKSAqIGktPmZpcnN0LmNvdW50KTsKKworICAgICAgICBpZiAoaW52YWxp
ZGF0ZUVuZCA8IHJhbmdlU3RhcnQgfHwgaW52YWxpZGF0ZVN0YXJ0ID4gcmFuZ2VFbmQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgICsraTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAg
IHsKKyAgICAgICAgICAgIGkgPSBtSW5kZXhSYW5nZUNhY2hlLmVyYXNlKGkpOworICAgICAgICB9
CisgICAgfQorfQorCitib29sIEluZGV4UmFuZ2VDYWNoZTo6ZmluZFJhbmdlKEdMZW51bSB0eXBl
LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBHTHNpemVpIGNvdW50LCB1bnNpZ25lZCBpbnQgKm91dE1p
bkluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKm91
dE1heEluZGV4LCB1bnNpZ25lZCBpbnQgKm91dFN0cmVhbU9mZnNldCkgY29uc3QKK3sKKyAgICBJ
bmRleFJhbmdlTWFwOjpjb25zdF9pdGVyYXRvciBpID0gbUluZGV4UmFuZ2VDYWNoZS5maW5kKElu
ZGV4UmFuZ2UodHlwZSwgb2Zmc2V0LCBjb3VudCkpOworICAgIGlmIChpICE9IG1JbmRleFJhbmdl
Q2FjaGUuZW5kKCkpCisgICAgeworICAgICAgICBpZiAob3V0TWluSW5kZXgpICAgICAqb3V0TWlu
SW5kZXggPSBpLT5zZWNvbmQubWluSW5kZXg7CisgICAgICAgIGlmIChvdXRNYXhJbmRleCkgICAg
ICpvdXRNYXhJbmRleCA9IGktPnNlY29uZC5tYXhJbmRleDsKKyAgICAgICAgaWYgKG91dFN0cmVh
bU9mZnNldCkgKm91dFN0cmVhbU9mZnNldCA9IGktPnNlY29uZC5zdHJlYW1PZmZzZXQ7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAob3V0
TWluSW5kZXgpICAgICAqb3V0TWluSW5kZXggPSAwOworICAgICAgICBpZiAob3V0TWF4SW5kZXgp
ICAgICAqb3V0TWF4SW5kZXggPSAwOworICAgICAgICBpZiAob3V0U3RyZWFtT2Zmc2V0KSAqb3V0
U3RyZWFtT2Zmc2V0ID0gMDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwordm9p
ZCBJbmRleFJhbmdlQ2FjaGU6OmNsZWFyKCkKK3sKKyAgICBtSW5kZXhSYW5nZUNhY2hlLmNsZWFy
KCk7Cit9CisKK0luZGV4UmFuZ2VDYWNoZTo6SW5kZXhSYW5nZTo6SW5kZXhSYW5nZSgpCisgICAg
OiB0eXBlKEdMX05PTkUpLCBvZmZzZXQoMCksIGNvdW50KDApCit7Cit9CisKK0luZGV4UmFuZ2VD
YWNoZTo6SW5kZXhSYW5nZTo6SW5kZXhSYW5nZShHTGVudW0gdHlwLCBpbnRwdHJfdCBvZmYsIEdM
c2l6ZWkgYykKKyAgICA6IHR5cGUodHlwKSwgb2Zmc2V0KG9mZiksIGNvdW50KGMpCit7Cit9CisK
K2Jvb2wgSW5kZXhSYW5nZUNhY2hlOjpJbmRleFJhbmdlOjpvcGVyYXRvcjwoY29uc3QgSW5kZXhS
YW5nZSYgcmhzKSBjb25zdAoreworICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUodHlwZSwgb2Zm
c2V0LCBjb3VudCkgPCBzdGQ6Om1ha2VfdHVwbGUocmhzLnR5cGUsIHJocy5vZmZzZXQsIHJocy5j
b3VudCk7Cit9CisKK0luZGV4UmFuZ2VDYWNoZTo6SW5kZXhCb3VuZHM6OkluZGV4Qm91bmRzKCkK
KyAgICA6IG1pbkluZGV4KDApLCBtYXhJbmRleCgwKSwgc3RyZWFtT2Zmc2V0KDApCit7Cit9CisK
K0luZGV4UmFuZ2VDYWNoZTo6SW5kZXhCb3VuZHM6OkluZGV4Qm91bmRzKHVuc2lnbmVkIGludCBt
aW5JZHgsIHVuc2lnbmVkIGludCBtYXhJZHgsIHVuc2lnbmVkIGludCBvZmZzZXQpCisgICAgOiBt
aW5JbmRleChtaW5JZHgpLCBtYXhJbmRleChtYXhJZHgpLCBzdHJlYW1PZmZzZXQob2Zmc2V0KQor
eworfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL0luZGV4UmFuZ2VDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhSYW5nZUNhY2hlLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0lu
ZGV4UmFuZ2VDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTggQEAKKy8vCisvLyBD
b3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisvLworCisvLyBJbmRleFJhbmdlQ2FjaGUuaDogRGVmaW5lcyB0aGUgcng6OkluZGV4UmFuZ2VD
YWNoZSBjbGFzcyB3aGljaCBzdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQKKy8vIHJhbmdlcyBvZiBp
bmRpY2VzLgorCisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9JTkRFWFJBTkdFQ0FDSEVfSF8K
KyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX0lOREVYUkFOR0VDQUNIRV9IXworCisjaW5jbHVk
ZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIEluZGV4
UmFuZ2VDYWNoZQoreworICBwdWJsaWM6CisgICAgdm9pZCBhZGRSYW5nZShHTGVudW0gdHlwZSwg
dW5zaWduZWQgaW50IG9mZnNldCwgR0xzaXplaSBjb3VudCwgdW5zaWduZWQgaW50IG1pbklkeCwg
dW5zaWduZWQgaW50IG1heElkeCwKKyAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzdHJl
YW1PZmZzZXQpOworICAgIGJvb2wgZmluZFJhbmdlKEdMZW51bSB0eXBlLCB1bnNpZ25lZCBpbnQg
b2Zmc2V0LCBHTHNpemVpIGNvdW50LCB1bnNpZ25lZCBpbnQgKm91dE1pbkluZGV4LAorICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqb3V0TWF4SW5kZXgsIHVuc2lnbmVkIGludCAqb3V0
U3RyZWFtT2Zmc2V0KSBjb25zdDsKKworICAgIHZvaWQgaW52YWxpZGF0ZVJhbmdlKHVuc2lnbmVk
IGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBzaXplKTsKKyAgICB2b2lkIGNsZWFyKCk7CisKKyAg
cHJpdmF0ZToKKyAgICBzdHJ1Y3QgSW5kZXhSYW5nZQorICAgIHsKKyAgICAgICAgR0xlbnVtIHR5
cGU7CisgICAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQ7CisgICAgICAgIEdMc2l6ZWkgY291bnQ7
CisKKyAgICAgICAgSW5kZXhSYW5nZSgpOworICAgICAgICBJbmRleFJhbmdlKEdMZW51bSB0eXBl
LCBpbnRwdHJfdCBvZmZzZXQsIEdMc2l6ZWkgY291bnQpOworCisgICAgICAgIGJvb2wgb3BlcmF0
b3I8KGNvbnN0IEluZGV4UmFuZ2UmIHJocykgY29uc3Q7CisgICAgfTsKKworICAgIHN0cnVjdCBJ
bmRleEJvdW5kcworICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IG1pbkluZGV4OworICAgICAg
ICB1bnNpZ25lZCBpbnQgbWF4SW5kZXg7CisgICAgICAgIHVuc2lnbmVkIGludCBzdHJlYW1PZmZz
ZXQ7CisKKyAgICAgICAgSW5kZXhCb3VuZHMoKTsKKyAgICAgICAgSW5kZXhCb3VuZHModW5zaWdu
ZWQgaW50IG1pbklkeCwgdW5zaWduZWQgaW50IG1heElkeCwgdW5zaWduZWQgaW50IG9mZnNldCk7
CisgICAgfTsKKworICAgIHR5cGVkZWYgc3RkOjptYXA8SW5kZXhSYW5nZSwgSW5kZXhCb3VuZHM+
IEluZGV4UmFuZ2VNYXA7CisgICAgSW5kZXhSYW5nZU1hcCBtSW5kZXhSYW5nZUNhY2hlOworfTsK
KworfQorCisjZW5kaWYgTElCR0xFU1YyX1JFTkRFUkVSX0lOREVYUkFOR0VDQUNIRV9ICkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0lucHV0TGF5
b3V0Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvSW5wdXRMYXlvdXRDYWNoZS5jcHAJKHJldmlzaW9uIDE1OTA5MCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5wdXRM
YXlvdXRDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDEzIEBAIElucHV0TGF5
b3V0Q2FjaGU6OklucHV0TGF5b3V0Q2FjaGUoKSA6IG0KICAgICBtQ291bnRlciA9IDA7CiAgICAg
bURldmljZSA9IE5VTEw7CiAgICAgbURldmljZUNvbnRleHQgPSBOVUxMOworICAgIG1DdXJyZW50
SUwgPSBOVUxMOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZ2w6Ok1BWF9WRVJU
RVhfQVRUUklCUzsgaSsrKQorICAgIHsKKyAgICAgICAgbUN1cnJlbnRCdWZmZXJzW2ldID0gLTE7
CisgICAgICAgIG1DdXJyZW50VmVydGV4U3RyaWRlc1tpXSA9IC0xOworICAgICAgICBtQ3VycmVu
dFZlcnRleE9mZnNldHNbaV0gPSAtMTsKKyAgICB9CiB9CiAKIElucHV0TGF5b3V0Q2FjaGU6On5J
bnB1dExheW91dENhY2hlKCkKQEAgLTQ5LDYgKzU2LDE4IEBAIHZvaWQgSW5wdXRMYXlvdXRDYWNo
ZTo6Y2xlYXIoKQogICAgICAgICBpLT5zZWNvbmQuaW5wdXRMYXlvdXQtPlJlbGVhc2UoKTsKICAg
ICB9CiAgICAgbUlucHV0TGF5b3V0TWFwLmNsZWFyKCk7CisgICAgbWFya0RpcnR5KCk7Cit9CisK
K3ZvaWQgSW5wdXRMYXlvdXRDYWNoZTo6bWFya0RpcnR5KCkKK3sKKyAgICBtQ3VycmVudElMID0g
TlVMTDsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGdsOjpNQVhfVkVSVEVYX0FU
VFJJQlM7IGkrKykKKyAgICB7CisgICAgICAgIG1DdXJyZW50QnVmZmVyc1tpXSA9IC0xOworICAg
ICAgICBtQ3VycmVudFZlcnRleFN0cmlkZXNbaV0gPSAtMTsKKyAgICAgICAgbUN1cnJlbnRWZXJ0
ZXhPZmZzZXRzW2ldID0gLTE7CisgICAgfQogfQogCiBHTGVudW0gSW5wdXRMYXlvdXRDYWNoZTo6
YXBwbHlWZXJ0ZXhCdWZmZXJzKFRyYW5zbGF0ZWRBdHRyaWJ1dGUgYXR0cmlidXRlc1tnbDo6TUFY
X1ZFUlRFWF9BVFRSSUJTXSwKQEAgLTY2LDYgKzg1LDcgQEAgR0xlbnVtIElucHV0TGF5b3V0Q2Fj
aGU6OmFwcGx5VmVydGV4QnVmZgogICAgIElucHV0TGF5b3V0S2V5IGlsS2V5ID0geyAwIH07CiAK
ICAgICBJRDNEMTFCdWZmZXIgKnZlcnRleEJ1ZmZlcnNbZ2w6Ok1BWF9WRVJURVhfQVRUUklCU10g
PSB7IE5VTEwgfTsKKyAgICB1bnNpZ25lZCBpbnQgdmVydGV4QnVmZmVyU2VyaWFsc1tnbDo6TUFY
X1ZFUlRFWF9BVFRSSUJTXSA9IHsgMCB9OwogICAgIFVJTlQgdmVydGV4U3RyaWRlc1tnbDo6TUFY
X1ZFUlRFWF9BVFRSSUJTXSA9IHsgMCB9OwogICAgIFVJTlQgdmVydGV4T2Zmc2V0c1tnbDo6TUFY
X1ZFUlRFWF9BVFRSSUJTXSA9IHsgMCB9OwogCkBAIC04MywxOCArMTAzLDE5IEBAIEdMZW51bSBJ
bnB1dExheW91dENhY2hlOjphcHBseVZlcnRleEJ1ZmYKICAgICAgICAgICAgIC8vIFJlY29yZCB0
aGUgdHlwZSBvZiB0aGUgYXNzb2NpYXRlZCB2ZXJ0ZXggc2hhZGVyIHZlY3RvciBpbiBvdXIga2V5
CiAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgcHJldmVudCBtaXNtYXRjaGVkIHZlcnRleCBzaGFk
ZXJzIGZyb20gdXNpbmcgdGhlIHNhbWUgaW5wdXQgbGF5b3V0CiAgICAgICAgICAgICBHTGludCBh
dHRyaWJ1dGVTaXplOwotICAgICAgICAgICAgcHJvZ3JhbUJpbmFyeS0+Z2V0QWN0aXZlQXR0cmli
dXRlKGlsS2V5LmVsZW1lbnRDb3VudCwgMCwgTlVMTCwgJmF0dHJpYnV0ZVNpemUsICZpbEtleS5n
bHNsRWxlbWVudFR5cGVbaWxLZXkuZWxlbWVudENvdW50XSwgTlVMTCk7CisgICAgICAgICAgICBw
cm9ncmFtQmluYXJ5LT5nZXRBY3RpdmVBdHRyaWJ1dGUoaWxLZXkuZWxlbWVudENvdW50LCAwLCBO
VUxMLCAmYXR0cmlidXRlU2l6ZSwgJmlsS2V5LmVsZW1lbnRzW2lsS2V5LmVsZW1lbnRDb3VudF0u
Z2xzbEVsZW1lbnRUeXBlLCBOVUxMKTsKIAotICAgICAgICAgICAgaWxLZXkuZWxlbWVudHNbaWxL
ZXkuZWxlbWVudENvdW50XS5TZW1hbnRpY05hbWUgPSBzZW1hbnRpY05hbWU7Ci0gICAgICAgICAg
ICBpbEtleS5lbGVtZW50c1tpbEtleS5lbGVtZW50Q291bnRdLlNlbWFudGljSW5kZXggPSBzb3J0
ZWRTZW1hbnRpY0luZGljZXNbaV07Ci0gICAgICAgICAgICBpbEtleS5lbGVtZW50c1tpbEtleS5l
bGVtZW50Q291bnRdLkZvcm1hdCA9IGF0dHJpYnV0ZXNbaV0uYXR0cmlidXRlLT5tQXJyYXlFbmFi
bGVkID8gdmVydGV4QnVmZmVyLT5nZXREWEdJRm9ybWF0KCphdHRyaWJ1dGVzW2ldLmF0dHJpYnV0
ZSkgOiBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQ7Ci0gICAgICAgICAgICBpbEtleS5l
bGVtZW50c1tpbEtleS5lbGVtZW50Q291bnRdLklucHV0U2xvdCA9IGk7Ci0gICAgICAgICAgICBp
bEtleS5lbGVtZW50c1tpbEtleS5lbGVtZW50Q291bnRdLkFsaWduZWRCeXRlT2Zmc2V0ID0gMDsK
LSAgICAgICAgICAgIGlsS2V5LmVsZW1lbnRzW2lsS2V5LmVsZW1lbnRDb3VudF0uSW5wdXRTbG90
Q2xhc3MgPSBpbnB1dENsYXNzOwotICAgICAgICAgICAgaWxLZXkuZWxlbWVudHNbaWxLZXkuZWxl
bWVudENvdW50XS5JbnN0YW5jZURhdGFTdGVwUmF0ZSA9IGF0dHJpYnV0ZXNbaV0uZGl2aXNvcjsK
KyAgICAgICAgICAgIGlsS2V5LmVsZW1lbnRzW2lsS2V5LmVsZW1lbnRDb3VudF0uZGVzYy5TZW1h
bnRpY05hbWUgPSBzZW1hbnRpY05hbWU7CisgICAgICAgICAgICBpbEtleS5lbGVtZW50c1tpbEtl
eS5lbGVtZW50Q291bnRdLmRlc2MuU2VtYW50aWNJbmRleCA9IHNvcnRlZFNlbWFudGljSW5kaWNl
c1tpXTsKKyAgICAgICAgICAgIGlsS2V5LmVsZW1lbnRzW2lsS2V5LmVsZW1lbnRDb3VudF0uZGVz
Yy5Gb3JtYXQgPSBhdHRyaWJ1dGVzW2ldLmF0dHJpYnV0ZS0+bUFycmF5RW5hYmxlZCA/IHZlcnRl
eEJ1ZmZlci0+Z2V0RFhHSUZvcm1hdCgqYXR0cmlidXRlc1tpXS5hdHRyaWJ1dGUpIDogRFhHSV9G
T1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUOworICAgICAgICAgICAgaWxLZXkuZWxlbWVudHNbaWxL
ZXkuZWxlbWVudENvdW50XS5kZXNjLklucHV0U2xvdCA9IGk7CisgICAgICAgICAgICBpbEtleS5l
bGVtZW50c1tpbEtleS5lbGVtZW50Q291bnRdLmRlc2MuQWxpZ25lZEJ5dGVPZmZzZXQgPSAwOwor
ICAgICAgICAgICAgaWxLZXkuZWxlbWVudHNbaWxLZXkuZWxlbWVudENvdW50XS5kZXNjLklucHV0
U2xvdENsYXNzID0gaW5wdXRDbGFzczsKKyAgICAgICAgICAgIGlsS2V5LmVsZW1lbnRzW2lsS2V5
LmVsZW1lbnRDb3VudF0uZGVzYy5JbnN0YW5jZURhdGFTdGVwUmF0ZSA9IGF0dHJpYnV0ZXNbaV0u
ZGl2aXNvcjsKICAgICAgICAgICAgIGlsS2V5LmVsZW1lbnRDb3VudCsrOwogCiAgICAgICAgICAg
ICB2ZXJ0ZXhCdWZmZXJzW2ldID0gYnVmZmVyU3RvcmFnZSA/IGJ1ZmZlclN0b3JhZ2UtPmdldEJ1
ZmZlcigpIDogdmVydGV4QnVmZmVyLT5nZXRCdWZmZXIoKTsKKyAgICAgICAgICAgIHZlcnRleEJ1
ZmZlclNlcmlhbHNbaV0gPSBidWZmZXJTdG9yYWdlID8gYnVmZmVyU3RvcmFnZS0+Z2V0U2VyaWFs
KCkgOiB2ZXJ0ZXhCdWZmZXItPmdldFNlcmlhbCgpOwogICAgICAgICAgICAgdmVydGV4U3RyaWRl
c1tpXSA9IGF0dHJpYnV0ZXNbaV0uc3RyaWRlOwogICAgICAgICAgICAgdmVydGV4T2Zmc2V0c1tp
XSA9IGF0dHJpYnV0ZXNbaV0ub2Zmc2V0OwogICAgICAgICB9CkBAIC0xMTIsNyArMTMzLDEzIEBA
IEdMZW51bSBJbnB1dExheW91dENhY2hlOjphcHBseVZlcnRleEJ1ZmYKICAgICB7CiAgICAgICAg
IFNoYWRlckV4ZWN1dGFibGUxMSAqc2hhZGVyID0gU2hhZGVyRXhlY3V0YWJsZTExOjptYWtlU2hh
ZGVyRXhlY3V0YWJsZTExKHByb2dyYW1CaW5hcnktPmdldFZlcnRleEV4ZWN1dGFibGUoKSk7CiAK
LSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVJbnB1dExheW91dChpbEtl
eS5lbGVtZW50cywgaWxLZXkuZWxlbWVudENvdW50LCBzaGFkZXItPmdldEZ1bmN0aW9uKCksIHNo
YWRlci0+Z2V0TGVuZ3RoKCksICZpbnB1dExheW91dCk7CisgICAgICAgIEQzRDExX0lOUFVUX0VM
RU1FTlRfREVTQyBkZXNjc1tnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpbnQgaiA9IDA7IGogPCBpbEtleS5lbGVtZW50Q291bnQ7ICsraikKKyAgICAgICAg
eworICAgICAgICAgICAgZGVzY3Nbal0gPSBpbEtleS5lbGVtZW50c1tqXS5kZXNjOworICAgICAg
ICB9CisKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVJbnB1dExheW91
dChkZXNjcywgaWxLZXkuZWxlbWVudENvdW50LCBzaGFkZXItPmdldEZ1bmN0aW9uKCksIHNoYWRl
ci0+Z2V0TGVuZ3RoKCksICZpbnB1dExheW91dCk7CiAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0
KSkKICAgICAgICAgewogICAgICAgICAgICAgRVJSKCJGYWlsZWQgdG8gY3JhdGUgaW5wdXQgbGF5
b3V0LCByZXN1bHQ6IDB4JTA4eCIsIHJlc3VsdCk7CkBAIC0xNDMsOCArMTcwLDIzIEBAIEdMZW51
bSBJbnB1dExheW91dENhY2hlOjphcHBseVZlcnRleEJ1ZmYKICAgICAgICAgbUlucHV0TGF5b3V0
TWFwLmluc2VydChzdGQ6Om1ha2VfcGFpcihpbEtleSwgaW5wdXRDb3VudGVyUGFpcikpOwogICAg
IH0KIAotICAgIG1EZXZpY2VDb250ZXh0LT5JQVNldElucHV0TGF5b3V0KGlucHV0TGF5b3V0KTsK
LSAgICBtRGV2aWNlQ29udGV4dC0+SUFTZXRWZXJ0ZXhCdWZmZXJzKDAsIGdsOjpNQVhfVkVSVEVY
X0FUVFJJQlMsIHZlcnRleEJ1ZmZlcnMsIHZlcnRleFN0cmlkZXMsIHZlcnRleE9mZnNldHMpOwor
ICAgIGlmIChpbnB1dExheW91dCAhPSBtQ3VycmVudElMKQorICAgIHsKKyAgICAgICAgbURldmlj
ZUNvbnRleHQtPklBU2V0SW5wdXRMYXlvdXQoaW5wdXRMYXlvdXQpOworICAgICAgICBtQ3VycmVu
dElMID0gaW5wdXRMYXlvdXQ7CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCisgICAgeworICAgICAgICBpZiAodmVy
dGV4QnVmZmVyU2VyaWFsc1tpXSAhPSBtQ3VycmVudEJ1ZmZlcnNbaV0gfHwgdmVydGV4U3RyaWRl
c1tpXSAhPSBtQ3VycmVudFZlcnRleFN0cmlkZXNbaV0gfHwKKyAgICAgICAgICAgIHZlcnRleE9m
ZnNldHNbaV0gIT0gbUN1cnJlbnRWZXJ0ZXhPZmZzZXRzW2ldKQorICAgICAgICB7CisgICAgICAg
ICAgICBtRGV2aWNlQ29udGV4dC0+SUFTZXRWZXJ0ZXhCdWZmZXJzKGksIDEsICZ2ZXJ0ZXhCdWZm
ZXJzW2ldLCAmdmVydGV4U3RyaWRlc1tpXSwgJnZlcnRleE9mZnNldHNbaV0pOworICAgICAgICAg
ICAgbUN1cnJlbnRCdWZmZXJzW2ldID0gdmVydGV4QnVmZmVyU2VyaWFsc1tpXTsKKyAgICAgICAg
ICAgIG1DdXJyZW50VmVydGV4U3RyaWRlc1tpXSA9IHZlcnRleFN0cmlkZXNbaV07CisgICAgICAg
ICAgICBtQ3VycmVudFZlcnRleE9mZnNldHNbaV0gPSB2ZXJ0ZXhPZmZzZXRzW2ldOworICAgICAg
ICB9CisgICAgfQogCiAgICAgcmV0dXJuIEdMX05PX0VSUk9SOwogfQpAQCAtMTU0LDEzICsxOTYs
MTggQEAgc3RkOjpzaXplX3QgSW5wdXRMYXlvdXRDYWNoZTo6aGFzaElucHV0TAogICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBpbnQgc2VlZCA9IDB4REVBREJFRUY7CiAKICAgICBzdGQ6OnNpemVf
dCBoYXNoID0gMDsKLSAgICBNdXJtdXJIYXNoM194ODZfMzIoJmlucHV0TGF5b3V0LCBzaXplb2Yo
SW5wdXRMYXlvdXRLZXkpLCBzZWVkLCAmaGFzaCk7CisgICAgTXVybXVySGFzaDNfeDg2XzMyKGlu
cHV0TGF5b3V0LmJlZ2luKCksIGlucHV0TGF5b3V0LmVuZCgpIC0gaW5wdXRMYXlvdXQuYmVnaW4o
KSwgc2VlZCwgJmhhc2gpOwogICAgIHJldHVybiBoYXNoOwogfQogCiBib29sIElucHV0TGF5b3V0
Q2FjaGU6OmNvbXBhcmVJbnB1dExheW91dHMoY29uc3QgSW5wdXRMYXlvdXRLZXkgJmEsIGNvbnN0
IElucHV0TGF5b3V0S2V5ICZiKQogewotICAgIHJldHVybiBtZW1jbXAoJmEsICZiLCBzaXplb2Yo
SW5wdXRMYXlvdXRLZXkpKSA9PSAwOworICAgIGlmIChhLmVsZW1lbnRDb3VudCAhPSBiLmVsZW1l
bnRDb3VudCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1
cm4gc3RkOjplcXVhbChhLmJlZ2luKCksIGEuZW5kKCksIGIuYmVnaW4oKSk7CiB9CiAKIH0KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5wdXRM
YXlvdXRDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvSW5wdXRMYXlvdXRDYWNoZS5oCShyZXZpc2lvbiAxNTkwOTApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0lucHV0TGF5
b3V0Q2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQCBjbGFzcyBJbnB1dExh
eW91dENhY2hlCiAKICAgICB2b2lkIGluaXRpYWxpemUoSUQzRDExRGV2aWNlICpkZXZpY2UsIElE
M0QxMURldmljZUNvbnRleHQgKmNvbnRleHQpOwogICAgIHZvaWQgY2xlYXIoKTsKKyAgICB2b2lk
IG1hcmtEaXJ0eSgpOwogCiAgICAgR0xlbnVtIGFwcGx5VmVydGV4QnVmZmVycyhUcmFuc2xhdGVk
QXR0cmlidXRlIGF0dHJpYnV0ZXNbZ2w6Ok1BWF9WRVJURVhfQVRUUklCU10sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSk7CkBA
IC0zNywxMSArMzgsMjYgQEAgY2xhc3MgSW5wdXRMYXlvdXRDYWNoZQogICBwcml2YXRlOgogICAg
IERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihJbnB1dExheW91dENhY2hlKTsKIAorICAgIHN0cnVj
dCBJbnB1dExheW91dEVsZW1lbnQKKyAgICB7CisgICAgICAgIEQzRDExX0lOUFVUX0VMRU1FTlRf
REVTQyBkZXNjOworICAgICAgICBHTGVudW0gZ2xzbEVsZW1lbnRUeXBlOworICAgIH07CisKICAg
ICBzdHJ1Y3QgSW5wdXRMYXlvdXRLZXkKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGludCBlbGVt
ZW50Q291bnQ7Ci0gICAgICAgIEQzRDExX0lOUFVUX0VMRU1FTlRfREVTQyBlbGVtZW50c1tnbDo6
TUFYX1ZFUlRFWF9BVFRSSUJTXTsKLSAgICAgICAgR0xlbnVtIGdsc2xFbGVtZW50VHlwZVtnbDo6
TUFYX1ZFUlRFWF9BVFRSSUJTXTsKKyAgICAgICAgSW5wdXRMYXlvdXRFbGVtZW50IGVsZW1lbnRz
W2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNdOworCisgICAgICAgIGNvbnN0IGNoYXIgKmJlZ2luKCkg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KCZlbGVtZW50Q291bnQpOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgY2hh
ciAqZW5kKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KCZlbGVtZW50c1tlbGVtZW50Q291bnRdKTsKKyAgICAgICAgfQog
ICAgIH07CiAKICAgICBzdHJ1Y3QgSW5wdXRMYXlvdXRDb3VudGVyUGFpcgpAQCAtNTAsNiArNjYs
MTEgQEAgY2xhc3MgSW5wdXRMYXlvdXRDYWNoZQogICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcg
bGFzdFVzZWRUaW1lOwogICAgIH07CiAKKyAgICBJRDNEMTFJbnB1dExheW91dCAqbUN1cnJlbnRJ
TDsKKyAgICB1bnNpZ25lZCBpbnQgbUN1cnJlbnRCdWZmZXJzW2dsOjpNQVhfVkVSVEVYX0FUVFJJ
QlNdOworICAgIFVJTlQgbUN1cnJlbnRWZXJ0ZXhTdHJpZGVzW2dsOjpNQVhfVkVSVEVYX0FUVFJJ
QlNdOworICAgIFVJTlQgbUN1cnJlbnRWZXJ0ZXhPZmZzZXRzW2dsOjpNQVhfVkVSVEVYX0FUVFJJ
QlNdOworCiAgICAgc3RhdGljIHN0ZDo6c2l6ZV90IGhhc2hJbnB1dExheW91dChjb25zdCBJbnB1
dExheW91dEtleSAmaW5wdXRMYXlvdXQpOwogICAgIHN0YXRpYyBib29sIGNvbXBhcmVJbnB1dExh
eW91dHMoY29uc3QgSW5wdXRMYXlvdXRLZXkgJmEsIGNvbnN0IElucHV0TGF5b3V0S2V5ICZiKTsK
IApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9S
ZW5kZXJUYXJnZXQxMS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQxMS5jcHAJKHJldmlzaW9uIDE1OTA5
MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVu
ZGVyVGFyZ2V0MTEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjksNDQgKzMyOSwyMSBAQCBSZW5k
ZXJUYXJnZXQxMSAqUmVuZGVyVGFyZ2V0MTE6Om1ha2VSZW5kCiAKIElEM0QxMVRleHR1cmUyRCAq
UmVuZGVyVGFyZ2V0MTE6OmdldFRleHR1cmUoKSBjb25zdAogewotICAgIGlmIChtVGV4dHVyZSkK
LSAgICB7Ci0gICAgICAgIG1UZXh0dXJlLT5BZGRSZWYoKTsKLSAgICB9Ci0KICAgICByZXR1cm4g
bVRleHR1cmU7CiB9CiAKLS8vIEFkZHMgcmVmZXJlbmNlLCBjYWxsZXIgbXVzdCBjYWxsIFJlbGVh
c2UKIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKlJlbmRlclRhcmdldDExOjpnZXRSZW5kZXJUYXJn
ZXRWaWV3KCkgY29uc3QKIHsKLSAgICBpZiAobVJlbmRlclRhcmdldCkKLSAgICB7Ci0gICAgICAg
IG1SZW5kZXJUYXJnZXQtPkFkZFJlZigpOwotICAgIH0KLQogICAgIHJldHVybiBtUmVuZGVyVGFy
Z2V0OwogfQogCi0vLyBBZGRzIHJlZmVyZW5jZSwgY2FsbGVyIG11c3QgY2FsbCBSZWxlYXNlCiBJ
RDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICpSZW5kZXJUYXJnZXQxMTo6Z2V0RGVwdGhTdGVuY2lsVmll
dygpIGNvbnN0CiB7Ci0gICAgaWYgKG1EZXB0aFN0ZW5jaWwpCi0gICAgewotICAgICAgICBtRGVw
dGhTdGVuY2lsLT5BZGRSZWYoKTsKLSAgICB9Ci0KICAgICByZXR1cm4gbURlcHRoU3RlbmNpbDsK
IH0KIAotLy8gQWRkcyByZWZlcmVuY2UsIGNhbGxlciBtdXN0IGNhbGwgUmVsZWFzZQogSUQzRDEx
U2hhZGVyUmVzb3VyY2VWaWV3ICpSZW5kZXJUYXJnZXQxMTo6Z2V0U2hhZGVyUmVzb3VyY2VWaWV3
KCkgY29uc3QKIHsKLSAgICBpZiAobVNoYWRlclJlc291cmNlKQotICAgIHsKLSAgICAgICAgbVNo
YWRlclJlc291cmNlLT5BZGRSZWYoKTsKLSAgICB9Ci0KICAgICByZXR1cm4gbVNoYWRlclJlc291
cmNlOwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1JlbmRlclRhcmdldDExLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQxMS5oCShyZXZpc2lvbiAx
NTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L1JlbmRlclRhcmdldDExLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE2ICsyNyw5IEBAIGNsYXNz
IFJlbmRlclRhcmdldDExIDogcHVibGljIFJlbmRlclRhcmcKIAogICAgIHN0YXRpYyBSZW5kZXJU
YXJnZXQxMSAqbWFrZVJlbmRlclRhcmdldDExKFJlbmRlclRhcmdldCAqcmVuZGVyVGFyZ2V0KTsK
IAotICAgIC8vIEFkZHMgcmVmZXJlbmNlLCBjYWxsZXIgbXVzdCBjYWxsIFJlbGVhc2UKICAgICBJ
RDNEMTFUZXh0dXJlMkQgKmdldFRleHR1cmUoKSBjb25zdDsKLQotICAgIC8vIEFkZHMgcmVmZXJl
bmNlLCBjYWxsZXIgbXVzdCBjYWxsIFJlbGVhc2UKICAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3
ICpnZXRSZW5kZXJUYXJnZXRWaWV3KCkgY29uc3Q7Ci0KLSAgICAvLyBBZGRzIHJlZmVyZW5jZSwg
Y2FsbGVyIG11c3QgY2FsbCBSZWxlYXNlCiAgICAgSUQzRDExRGVwdGhTdGVuY2lsVmlldyAqZ2V0
RGVwdGhTdGVuY2lsVmlldygpIGNvbnN0OwotCi0gICAgLy8gQWRkcyByZWZlcmVuY2UsIGNhbGxl
ciBtdXN0IGNhbGwgUmVsZWFzZQogICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqZ2V0U2hh
ZGVyUmVzb3VyY2VWaWV3KCkgY29uc3Q7CiAKICAgICB1bnNpZ25lZCBpbnQgZ2V0U3VicmVzb3Vy
Y2VJbmRleCgpIGNvbnN0OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9SZW5kZXJlcjkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXI5LmNwcAkocmV2aXNpb24g
MTU5MDkwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9SZW5kZXJlcjkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw4IEBACiAKICNpbmNs
dWRlICJsaWJFR0wvRGlzcGxheS5oIgogCisjaW5jbHVkZSAidGhpcmRfcGFydHkvdHJhY2VfZXZl
bnQvdHJhY2VfZXZlbnQuaCIKKwogLy8gQ2FuIGFsc28gYmUgZW5hYmxlZCBieSBkZWZpbmluZyBG
T1JDRV9SRUZfUkFTVCBpbiB0aGUgcHJvamVjdCdzIHByZWRlZmluZWQgbWFjcm9zCiAjZGVmaW5l
IFJFRl9SQVNUIDAKIApAQCAtMTg0LDEwICsxODYsMTIgQEAgRUdMaW50IFJlbmRlcmVyOTo6aW5p
dGlhbGl6ZSgpCiAKICAgICBpZiAobVNvZnR3YXJlRGV2aWNlKQogICAgIHsKKyAgICAgICAgVFJB
Q0VfRVZFTlQwKCJncHUiLCAiR2V0TW9kdWxlSGFuZGxlX3N3aWZ0c2hhZGVyIik7CiAgICAgICAg
IG1EM2Q5TW9kdWxlID0gR2V0TW9kdWxlSGFuZGxlKFRFWFQoInN3aWZ0c2hhZGVyX2QzZDkuZGxs
IikpOwogICAgIH0KICAgICBlbHNlCiAgICAgeworICAgICAgICBUUkFDRV9FVkVOVDAoImdwdSIs
ICJHZXRNb2R1bGVIYW5kbGVfZDNkOSIpOwogICAgICAgICBtRDNkOU1vZHVsZSA9IEdldE1vZHVs
ZUhhbmRsZShURVhUKCJkM2Q5LmRsbCIpKTsKICAgICB9CiAKQEAgLTIwNSwxMiArMjA5LDE0IEBA
IEVHTGludCBSZW5kZXJlcjk6OmluaXRpYWxpemUoKQogICAgIC8vIGRlc2t0b3AuIERpcmVjdDNE
OUV4IGlzIGF2YWlsYWJsZSBpbiBXaW5kb3dzIFZpc3RhIGFuZCBsYXRlciBpZiBzdWl0YWJsZSBk
cml2ZXJzIGFyZSBhdmFpbGFibGUuCiAgICAgaWYgKEFOR0xFX0VOQUJMRV9EM0Q5RVggJiYgRGly
ZWN0M0RDcmVhdGU5RXhQdHIgJiYgU1VDQ0VFREVEKERpcmVjdDNEQ3JlYXRlOUV4UHRyKEQzRF9T
REtfVkVSU0lPTiwgJm1EM2Q5RXgpKSkKICAgICB7CisgICAgICAgIFRSQUNFX0VWRU5UMCgiZ3B1
IiwgIkQzZDlFeF9RdWVyeUludGVyZmFjZSIpOwogICAgICAgICBBU1NFUlQobUQzZDlFeCk7CiAg
ICAgICAgIG1EM2Q5RXgtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRGlyZWN0M0Q5LCByZWludGVycHJl
dF9jYXN0PHZvaWQqKj4oJm1EM2Q5KSk7CiAgICAgICAgIEFTU0VSVChtRDNkOSk7CiAgICAgfQog
ICAgIGVsc2UKICAgICB7CisgICAgICAgIFRSQUNFX0VWRU5UMCgiZ3B1IiwgIkRpcmVjdDNEQ3Jl
YXRlOSIpOwogICAgICAgICBtRDNkOSA9IERpcmVjdDNEQ3JlYXRlOShEM0RfU0RLX1ZFUlNJT04p
OwogICAgIH0KIApAQCAtMjI4LDIxICsyMzQsMjQgQEAgRUdMaW50IFJlbmRlcmVyOTo6aW5pdGlh
bGl6ZSgpCiAgICAgSFJFU1VMVCByZXN1bHQ7CiAKICAgICAvLyBHaXZlIHVwIG9uIGdldHRpbmcg
ZGV2aWNlIGNhcHMgYWZ0ZXIgYWJvdXQgb25lIHNlY29uZC4KLSAgICBmb3IgKGludCBpID0gMDsg
aSA8IDEwOyArK2kpCiAgICAgewotICAgICAgICByZXN1bHQgPSBtRDNkOS0+R2V0RGV2aWNlQ2Fw
cyhtQWRhcHRlciwgbURldmljZVR5cGUsICZtRGV2aWNlQ2Fwcyk7Ci0gICAgICAgIGlmIChTVUND
RUVERUQocmVzdWx0KSkKLSAgICAgICAgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzZSBpZiAocmVzdWx0ID09IEQzREVSUl9OT1RBVkFJTEFCTEUpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIFNsZWVwKDEwMCk7ICAgLy8gR2l2ZSB0aGUgZHJpdmVyIHNvbWUgdGlt
ZSB0byBpbml0aWFsaXplL3JlY292ZXIKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChGQUlM
RUQocmVzdWx0KSkgICAvLyBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSwgRV9PVVRPRk1FTU9SWSwg
RDNERVJSX0lOVkFMSURERVZJQ0UsIG9yIGFub3RoZXIgZXJyb3Igd2UgY2FuJ3QgcmVjb3ZlciBm
cm9tCisgICAgICAgIFRSQUNFX0VWRU5UMCgiZ3B1IiwgIkdldERldmljZUNhcHMiKTsKKyAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgKytpKQogICAgICAgICB7Ci0gICAgICAgICAgICBF
UlIoImZhaWxlZCB0byBnZXQgZGV2aWNlIGNhcHMgKDB4JXgpXG4iLCByZXN1bHQpOwotICAgICAg
ICAgICAgcmV0dXJuIEVHTF9OT1RfSU5JVElBTElaRUQ7CisgICAgICAgICAgICByZXN1bHQgPSBt
RDNkOS0+R2V0RGV2aWNlQ2FwcyhtQWRhcHRlciwgbURldmljZVR5cGUsICZtRGV2aWNlQ2Fwcyk7
CisgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChy
ZXN1bHQgPT0gRDNERVJSX05PVEFWQUlMQUJMRSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBTbGVlcCgxMDApOyAgIC8vIEdpdmUgdGhlIGRyaXZlciBzb21lIHRpbWUgdG8gaW5pdGlh
bGl6ZS9yZWNvdmVyCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChGQUlMRUQo
cmVzdWx0KSkgICAvLyBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSwgRV9PVVRPRk1FTU9SWSwgRDNE
RVJSX0lOVkFMSURERVZJQ0UsIG9yIGFub3RoZXIgZXJyb3Igd2UgY2FuJ3QgcmVjb3ZlciBmcm9t
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRVJSKCJmYWlsZWQgdG8gZ2V0IGRldmlj
ZSBjYXBzICgweCV4KVxuIiwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRUdMX05P
VF9JTklUSUFMSVpFRDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtMjYw
LDcgKzI2OSwxMCBAQCBFR0xpbnQgUmVuZGVyZXI5Ojppbml0aWFsaXplKCkKICAgICAgICAgcmV0
dXJuIEVHTF9OT1RfSU5JVElBTElaRUQ7CiAgICAgfQogCi0gICAgbUQzZDktPkdldEFkYXB0ZXJJ
ZGVudGlmaWVyKG1BZGFwdGVyLCAwLCAmbUFkYXB0ZXJJZGVudGlmaWVyKTsKKyAgICB7CisgICAg
ICAgIFRSQUNFX0VWRU5UMCgiZ3B1IiwgIkdldEFkYXB0ZXJJZGVudGlmaWVyIik7CisgICAgICAg
IG1EM2Q5LT5HZXRBZGFwdGVySWRlbnRpZmllcihtQWRhcHRlciwgMCwgJm1BZGFwdGVySWRlbnRp
Zmllcik7CisgICAgfQogCiAgICAgLy8gQVRJIGNhcmRzIG9uIFhQIGhhdmUgcHJvYmxlbXMgd2l0
aCBub24tcG93ZXItb2YtdHdvIHRleHR1cmVzLgogICAgIG1TdXBwb3J0c05vblBvd2VyMlRleHR1
cmVzID0gIShtRGV2aWNlQ2Fwcy5UZXh0dXJlQ2FwcyAmIEQzRFBURVhUVVJFQ0FQU19QT1cyKSAm
JgpAQCAtMzAxLDM1ICszMTMsNDEgQEAgRUdMaW50IFJlbmRlcmVyOTo6aW5pdGlhbGl6ZSgpCiAg
ICAgfQogCiAgICAgaW50IG1heCA9IDA7Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg
PCBBcnJheVNpemUoUmVuZGVyVGFyZ2V0Rm9ybWF0cyk7ICsraSkKICAgICB7Ci0gICAgICAgIGJv
b2wgKm11bHRpc2FtcGxlQXJyYXkgPSBuZXcgYm9vbFtEM0RNVUxUSVNBTVBMRV8xNl9TQU1QTEVT
ICsgMV07Ci0gICAgICAgIGdldE11bHRpU2FtcGxlU3VwcG9ydChSZW5kZXJUYXJnZXRGb3JtYXRz
W2ldLCBtdWx0aXNhbXBsZUFycmF5KTsKLSAgICAgICAgbU11bHRpU2FtcGxlU3VwcG9ydFtSZW5k
ZXJUYXJnZXRGb3JtYXRzW2ldXSA9IG11bHRpc2FtcGxlQXJyYXk7Ci0KLSAgICAgICAgZm9yIChp
bnQgaiA9IEQzRE1VTFRJU0FNUExFXzE2X1NBTVBMRVM7IGogPj0gMDsgLS1qKQorICAgICAgICBU
UkFDRV9FVkVOVDAoImdwdSIsICJnZXRNdWx0aVNhbXBsZVN1cHBvcnQiKTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBBcnJheVNpemUoUmVuZGVyVGFyZ2V0Rm9ybWF0cyk7
ICsraSkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKG11bHRpc2FtcGxlQXJyYXlbal0gJiYg
aiAhPSBEM0RNVUxUSVNBTVBMRV9OT05NQVNLQUJMRSAmJiBqID4gbWF4KQorICAgICAgICAgICAg
Ym9vbCAqbXVsdGlzYW1wbGVBcnJheSA9IG5ldyBib29sW0QzRE1VTFRJU0FNUExFXzE2X1NBTVBM
RVMgKyAxXTsKKyAgICAgICAgICAgIGdldE11bHRpU2FtcGxlU3VwcG9ydChSZW5kZXJUYXJnZXRG
b3JtYXRzW2ldLCBtdWx0aXNhbXBsZUFycmF5KTsKKyAgICAgICAgICAgIG1NdWx0aVNhbXBsZVN1
cHBvcnRbUmVuZGVyVGFyZ2V0Rm9ybWF0c1tpXV0gPSBtdWx0aXNhbXBsZUFycmF5OworCisgICAg
ICAgICAgICBmb3IgKGludCBqID0gRDNETVVMVElTQU1QTEVfMTZfU0FNUExFUzsgaiA+PSAwOyAt
LWopCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbWF4ID0gajsKKyAgICAgICAgICAg
ICAgICBpZiAobXVsdGlzYW1wbGVBcnJheVtqXSAmJiBqICE9IEQzRE1VTFRJU0FNUExFX05PTk1B
U0tBQkxFICYmIGogPiBtYXgpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBtYXggPSBqOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KIAotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgQXJyYXlTaXplKERlcHRo
U3RlbmNpbEZvcm1hdHMpOyArK2kpCiAgICAgewotICAgICAgICBpZiAoRGVwdGhTdGVuY2lsRm9y
bWF0c1tpXSA9PSBEM0RGTVRfVU5LTk9XTikKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICBUUkFDRV9FVkVOVDAoImdwdSIsICJnZXRNdWx0aVNhbXBsZVN1cHBvcnQyIik7CisgICAgICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgQXJyYXlTaXplKERlcHRoU3RlbmNpbEZvcm1h
dHMpOyArK2kpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChEZXB0aFN0ZW5jaWxGb3JtYXRz
W2ldID09IEQzREZNVF9VTktOT1dOKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIGJvb2wgKm11bHRpc2FtcGxlQXJyYXkgPSBuZXcgYm9vbFtEM0RNVUxUSVNBTVBMRV8xNl9T
QU1QTEVTICsgMV07Ci0gICAgICAgIGdldE11bHRpU2FtcGxlU3VwcG9ydChEZXB0aFN0ZW5jaWxG
b3JtYXRzW2ldLCBtdWx0aXNhbXBsZUFycmF5KTsKLSAgICAgICAgbU11bHRpU2FtcGxlU3VwcG9y
dFtEZXB0aFN0ZW5jaWxGb3JtYXRzW2ldXSA9IG11bHRpc2FtcGxlQXJyYXk7CisgICAgICAgICAg
ICBib29sICptdWx0aXNhbXBsZUFycmF5ID0gbmV3IGJvb2xbRDNETVVMVElTQU1QTEVfMTZfU0FN
UExFUyArIDFdOworICAgICAgICAgICAgZ2V0TXVsdGlTYW1wbGVTdXBwb3J0KERlcHRoU3RlbmNp
bEZvcm1hdHNbaV0sIG11bHRpc2FtcGxlQXJyYXkpOworICAgICAgICAgICAgbU11bHRpU2FtcGxl
U3VwcG9ydFtEZXB0aFN0ZW5jaWxGb3JtYXRzW2ldXSA9IG11bHRpc2FtcGxlQXJyYXk7CiAKLSAg
ICAgICAgZm9yIChpbnQgaiA9IEQzRE1VTFRJU0FNUExFXzE2X1NBTVBMRVM7IGogPj0gMDsgLS1q
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobXVsdGlzYW1wbGVBcnJheVtqXSAmJiBqICE9
IEQzRE1VTFRJU0FNUExFX05PTk1BU0tBQkxFICYmIGogPiBtYXgpCisgICAgICAgICAgICBmb3Ig
KGludCBqID0gRDNETVVMVElTQU1QTEVfMTZfU0FNUExFUzsgaiA+PSAwOyAtLWopCiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgbWF4ID0gajsKKyAgICAgICAgICAgICAgICBpZiAobXVs
dGlzYW1wbGVBcnJheVtqXSAmJiBqICE9IEQzRE1VTFRJU0FNUExFX05PTk1BU0tBQkxFICYmIGog
PiBtYXgpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtYXggPSBqOwor
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTMz
OSwxMiArMzU3LDE4IEBAIEVHTGludCBSZW5kZXJlcjk6OmluaXRpYWxpemUoKQogICAgIHN0YXRp
YyBjb25zdCBUQ0hBUiB3aW5kb3dOYW1lW10gPSBURVhUKCJBbmdsZUhpZGRlbldpbmRvdyIpOwog
ICAgIHN0YXRpYyBjb25zdCBUQ0hBUiBjbGFzc05hbWVbXSA9IFRFWFQoIlNUQVRJQyIpOwogCi0g
ICAgbURldmljZVdpbmRvdyA9IENyZWF0ZVdpbmRvd0V4KFdTX0VYX05PQUNUSVZBVEUsIGNsYXNz
TmFtZSwgd2luZG93TmFtZSwgV1NfRElTQUJMRUQgfCBXU19QT1BVUCwgMCwgMCwgMSwgMSwgSFdO
RF9NRVNTQUdFLCBOVUxMLCBHZXRNb2R1bGVIYW5kbGUoTlVMTCksIE5VTEwpOworICAgIHsKKyAg
ICAgICAgVFJBQ0VfRVZFTlQwKCJncHUiLCAiQ3JlYXRlV2luZG93RXgiKTsKKyAgICAgICAgbURl
dmljZVdpbmRvdyA9IENyZWF0ZVdpbmRvd0V4KFdTX0VYX05PQUNUSVZBVEUsIGNsYXNzTmFtZSwg
d2luZG93TmFtZSwgV1NfRElTQUJMRUQgfCBXU19QT1BVUCwgMCwgMCwgMSwgMSwgSFdORF9NRVNT
QUdFLCBOVUxMLCBHZXRNb2R1bGVIYW5kbGUoTlVMTCksIE5VTEwpOworICAgIH0KIAogICAgIEQz
RFBSRVNFTlRfUEFSQU1FVEVSUyBwcmVzZW50UGFyYW1ldGVycyA9IGdldERlZmF1bHRQcmVzZW50
UGFyYW1ldGVycygpOwogICAgIERXT1JEIGJlaGF2aW9yRmxhZ3MgPSBEM0RDUkVBVEVfRlBVX1BS
RVNFUlZFIHwgRDNEQ1JFQVRFX05PV0lORE9XQ0hBTkdFUzsKIAotICAgIHJlc3VsdCA9IG1EM2Q5
LT5DcmVhdGVEZXZpY2UobUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCBtRGV2aWNlV2luZG93LCBiZWhh
dmlvckZsYWdzIHwgRDNEQ1JFQVRFX0hBUkRXQVJFX1ZFUlRFWFBST0NFU1NJTkcgfCBEM0RDUkVB
VEVfUFVSRURFVklDRSwgJnByZXNlbnRQYXJhbWV0ZXJzLCAmbURldmljZSk7CisgICAgeworICAg
ICAgICBUUkFDRV9FVkVOVDAoImdwdSIsICJEM2Q5X0NyZWF0ZURldmljZSIpOworICAgICAgICBy
ZXN1bHQgPSBtRDNkOS0+Q3JlYXRlRGV2aWNlKG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgbURldmlj
ZVdpbmRvdywgYmVoYXZpb3JGbGFncyB8IEQzRENSRUFURV9IQVJEV0FSRV9WRVJURVhQUk9DRVNT
SU5HIHwgRDNEQ1JFQVRFX1BVUkVERVZJQ0UsICZwcmVzZW50UGFyYW1ldGVycywgJm1EZXZpY2Up
OworICAgIH0KICAgICBpZiAocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJl
c3VsdCA9PSBFX09VVE9GTUVNT1JZIHx8IHJlc3VsdCA9PSBEM0RFUlJfREVWSUNFTE9TVCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBFR0xfQkFEX0FMTE9DOwpAQCAtMzUyLDYgKzM3Niw3IEBAIEVH
TGludCBSZW5kZXJlcjk6OmluaXRpYWxpemUoKQogCiAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQog
ICAgIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQwKCJncHUiLCAiRDNkOV9DcmVhdGVEZXZpY2UyIik7
CiAgICAgICAgIHJlc3VsdCA9IG1EM2Q5LT5DcmVhdGVEZXZpY2UobUFkYXB0ZXIsIG1EZXZpY2VU
eXBlLCBtRGV2aWNlV2luZG93LCBiZWhhdmlvckZsYWdzIHwgRDNEQ1JFQVRFX1NPRlRXQVJFX1ZF
UlRFWFBST0NFU1NJTkcsICZwcmVzZW50UGFyYW1ldGVycywgJm1EZXZpY2UpOwogCiAgICAgICAg
IGlmIChGQUlMRUQocmVzdWx0KSkKQEAgLTM2MywzNSArMzg4LDQ1IEBAIEVHTGludCBSZW5kZXJl
cjk6OmluaXRpYWxpemUoKQogCiAgICAgaWYgKG1EM2Q5RXgpCiAgICAgeworICAgICAgICBUUkFD
RV9FVkVOVDAoImdwdSIsICJtRGV2aWNlX1F1ZXJ5SW50ZXJmYWNlIik7CiAgICAgICAgIHJlc3Vs
dCA9IG1EZXZpY2UtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRGlyZWN0M0REZXZpY2U5RXgsICh2b2lk
KiopICZtRGV2aWNlRXgpOwogICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwogICAg
IH0KIAotICAgIG1WZXJ0ZXhTaGFkZXJDYWNoZS5pbml0aWFsaXplKG1EZXZpY2UpOwotICAgIG1Q
aXhlbFNoYWRlckNhY2hlLmluaXRpYWxpemUobURldmljZSk7CisgICAgeworICAgICAgICBUUkFD
RV9FVkVOVDAoImdwdSIsICJTaGFkZXJDYWNoZSBpbml0aWFsaXplIik7CisgICAgICAgIG1WZXJ0
ZXhTaGFkZXJDYWNoZS5pbml0aWFsaXplKG1EZXZpY2UpOworICAgICAgICBtUGl4ZWxTaGFkZXJD
YWNoZS5pbml0aWFsaXplKG1EZXZpY2UpOworICAgIH0KIAogICAgIC8vIENoZWNrIG9jY2x1c2lv
biBxdWVyeSBzdXBwb3J0CiAgICAgSURpcmVjdDNEUXVlcnk5ICpvY2NsdXNpb25RdWVyeSA9IE5V
TEw7Ci0gICAgaWYgKFNVQ0NFRURFRChtRGV2aWNlLT5DcmVhdGVRdWVyeShEM0RRVUVSWVRZUEVf
T0NDTFVTSU9OLCAmb2NjbHVzaW9uUXVlcnkpKSAmJiBvY2NsdXNpb25RdWVyeSkKICAgICB7Ci0g
ICAgICAgIG9jY2x1c2lvblF1ZXJ5LT5SZWxlYXNlKCk7Ci0gICAgICAgIG1PY2NsdXNpb25RdWVy
eVN1cHBvcnQgPSB0cnVlOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBtT2NjbHVz
aW9uUXVlcnlTdXBwb3J0ID0gZmFsc2U7CisgICAgICAgIFRSQUNFX0VWRU5UMCgiZ3B1IiwgImRl
dmljZV9DcmVhdGVRdWVyeSIpOworICAgICAgICBpZiAoU1VDQ0VFREVEKG1EZXZpY2UtPkNyZWF0
ZVF1ZXJ5KEQzRFFVRVJZVFlQRV9PQ0NMVVNJT04sICZvY2NsdXNpb25RdWVyeSkpICYmIG9jY2x1
c2lvblF1ZXJ5KQorICAgICAgICB7CisgICAgICAgICAgICBvY2NsdXNpb25RdWVyeS0+UmVsZWFz
ZSgpOworICAgICAgICAgICAgbU9jY2x1c2lvblF1ZXJ5U3VwcG9ydCA9IHRydWU7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBtT2NjbHVzaW9uUXVlcnlT
dXBwb3J0ID0gZmFsc2U7CisgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBDaGVjayBldmVudCBx
dWVyeSBzdXBwb3J0CiAgICAgSURpcmVjdDNEUXVlcnk5ICpldmVudFF1ZXJ5ID0gTlVMTDsKLSAg
ICBpZiAoU1VDQ0VFREVEKG1EZXZpY2UtPkNyZWF0ZVF1ZXJ5KEQzRFFVRVJZVFlQRV9FVkVOVCwg
JmV2ZW50UXVlcnkpKSAmJiBldmVudFF1ZXJ5KQotICAgIHsKLSAgICAgICAgZXZlbnRRdWVyeS0+
UmVsZWFzZSgpOwotICAgICAgICBtRXZlbnRRdWVyeVN1cHBvcnQgPSB0cnVlOwotICAgIH0KLSAg
ICBlbHNlCiAgICAgewotICAgICAgICBtRXZlbnRRdWVyeVN1cHBvcnQgPSBmYWxzZTsKKyAgICAg
ICAgVFJBQ0VfRVZFTlQwKCJncHUiLCAiZGV2aWNlX0NyZWF0ZVF1ZXJ5MiIpOworICAgICAgICBp
ZiAoU1VDQ0VFREVEKG1EZXZpY2UtPkNyZWF0ZVF1ZXJ5KEQzRFFVRVJZVFlQRV9FVkVOVCwgJmV2
ZW50UXVlcnkpKSAmJiBldmVudFF1ZXJ5KQorICAgICAgICB7CisgICAgICAgICAgICBldmVudFF1
ZXJ5LT5SZWxlYXNlKCk7CisgICAgICAgICAgICBtRXZlbnRRdWVyeVN1cHBvcnQgPSB0cnVlOwor
ICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgbUV2ZW50UXVl
cnlTdXBwb3J0ID0gZmFsc2U7CisgICAgICAgIH0KICAgICB9CiAKICAgICBEM0RESVNQTEFZTU9E
RSBjdXJyZW50RGlzcGxheU1vZGU7CkBAIC0xMDc2LDggKzExMTEsMTAgQEAgYm9vbCBSZW5kZXJl
cjk6OnNldFZpZXdwb3J0KGNvbnN0IGdsOjpSZQogICAgICAgICByZXR1cm4gZmFsc2U7ICAgLy8g
Tm90aGluZyB0byByZW5kZXIKICAgICB9CiAKKyAgICBmbG9hdCBkZXB0aEZyb250ID0gIWdsOjpJ
c1RyaWFuZ2xlTW9kZShkcmF3TW9kZSkgPyAwLjBmIDogKGZyb250RmFjZSA9PSBHTF9DQ1cgPyAx
LjBmIDogLTEuMGYpOworCiAgICAgYm9vbCB2aWV3cG9ydENoYW5nZWQgPSBtRm9yY2VTZXRWaWV3
cG9ydCB8fCBtZW1jbXAoJmFjdHVhbFZpZXdwb3J0LCAmbUN1clZpZXdwb3J0LCBzaXplb2YoZ2w6
OlJlY3RhbmdsZSkpICE9IDAgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbFpO
ZWFyICE9IG1DdXJOZWFyIHx8IGFjdHVhbFpGYXIgIT0gbUN1ckZhcjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFjdHVhbFpOZWFyICE9IG1DdXJOZWFyIHx8IGFjdHVhbFpGYXIgIT0gbUN1
ckZhciB8fCBtQ3VyRGVwdGhGcm9udCAhPSBkZXB0aEZyb250OwogICAgIGlmICh2aWV3cG9ydENo
YW5nZWQpCiAgICAgewogICAgICAgICBtRGV2aWNlLT5TZXRWaWV3cG9ydCgmZHhWaWV3cG9ydCk7
CkBAIC0xMDg1LDYgKzExMjIsNyBAQCBib29sIFJlbmRlcmVyOTo6c2V0Vmlld3BvcnQoY29uc3Qg
Z2w6OlJlCiAgICAgICAgIG1DdXJWaWV3cG9ydCA9IGFjdHVhbFZpZXdwb3J0OwogICAgICAgICBt
Q3VyTmVhciA9IGFjdHVhbFpOZWFyOwogICAgICAgICBtQ3VyRmFyID0gYWN0dWFsWkZhcjsKKyAg
ICAgICAgbUN1ckRlcHRoRnJvbnQgPSBkZXB0aEZyb250OwogCiAgICAgICAgIGR4X1ZlcnRleENv
bnN0YW50cyB2YyA9IHswfTsKICAgICAgICAgZHhfUGl4ZWxDb25zdGFudHMgcGMgPSB7MH07CkBA
IC0xMTAxLDcgKzExMzksNyBAQCBib29sIFJlbmRlcmVyOTo6c2V0Vmlld3BvcnQoY29uc3QgZ2w6
OlJlCiAKICAgICAgICAgcGMuZGVwdGhGcm9udFswXSA9IChhY3R1YWxaRmFyIC0gYWN0dWFsWk5l
YXIpICogMC41ZjsKICAgICAgICAgcGMuZGVwdGhGcm9udFsxXSA9IChhY3R1YWxaTmVhciArIGFj
dHVhbFpGYXIpICogMC41ZjsKLSAgICAgICAgcGMuZGVwdGhGcm9udFsyXSA9ICFnbDo6SXNUcmlh
bmdsZU1vZGUoZHJhd01vZGUpID8gMC4wZiA6IChmcm9udEZhY2UgPT0gR0xfQ0NXID8gMS4wZiA6
IC0xLjBmKTs7CisgICAgICAgIHBjLmRlcHRoRnJvbnRbMl0gPSBkZXB0aEZyb250OwogCiAgICAg
ICAgIHZjLmRlcHRoUmFuZ2VbMF0gPSBhY3R1YWxaTmVhcjsKICAgICAgICAgdmMuZGVwdGhSYW5n
ZVsxXSA9IGFjdHVhbFpGYXI7CkBAIC0xNDU0LDcgKzE0OTIsNyBAQCB2b2lkIFJlbmRlcmVyOTo6
ZHJhd0xpbmVMb29wKEdMc2l6ZWkgY291CiAgICAgICAgIGluZGljZXMgPSBzdGF0aWNfY2FzdDxj
b25zdCBHTHVieXRlKj4oc3RvcmFnZS0+Z2V0RGF0YSgpKSArIG9mZnNldDsKICAgICB9CiAKLSAg
ICBVSU5UIHN0YXJ0SW5kZXggPSAwOworICAgIHVuc2lnbmVkIGludCBzdGFydEluZGV4ID0gMDsK
IAogICAgIGlmIChnZXQzMkJpdEluZGV4U3VwcG9ydCgpKQogICAgIHsKQEAgLTE0NzEsMTMgKzE1
MDksMTYgQEAgdm9pZCBSZW5kZXJlcjk6OmRyYXdMaW5lTG9vcChHTHNpemVpIGNvdQogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGlu
dD4oY291bnQgKyAxKSA+IChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGludD46Om1heCgp
IC8gc2l6ZW9mKHVuc2lnbmVkIGludCkpKQorICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgaW50Pihjb3VudCkgKyAxID4gKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6
bWF4KCkgLyBzaXplb2YodW5zaWduZWQgaW50KSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIEVS
UigiQ291bGQgbm90IGNyZWF0ZSBhIDMyLWJpdCBsb29waW5nIGluZGV4IGJ1ZmZlciBmb3IgR0xf
TElORV9MT09QLCB0b28gbWFueSBpbmRpY2VzIHJlcXVpcmVkLiIpOwogICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKICAgICAgICAgfQogCi0gICAgICAgIGNv
bnN0IHVuc2lnbmVkIGludCBzcGFjZU5lZWRlZCA9IChjb3VudCArIDEpICogc2l6ZW9mKHVuc2ln
bmVkIGludCk7CisgICAgICAgIC8vIENoZWNrZWQgYnkgUmVuZGVyZXI5OjphcHBseVByaW1pdGl2
ZVR5cGUKKyAgICAgICAgQVNTRVJUKGNvdW50ID49IDApOworCisgICAgICAgIGNvbnN0IHVuc2ln
bmVkIGludCBzcGFjZU5lZWRlZCA9IChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGNvdW50KSAr
IDEpICogc2l6ZW9mKHVuc2lnbmVkIGludCk7CiAgICAgICAgIGlmICghbUxpbmVMb29wSUItPnJl
c2VydmVCdWZmZXJTcGFjZShzcGFjZU5lZWRlZCwgR0xfVU5TSUdORURfSU5UKSkKICAgICAgICAg
ewogICAgICAgICAgICAgRVJSKCJDb3VsZCBub3QgcmVzZXJ2ZSBlbm91Z2ggc3BhY2UgaW4gbG9v
cGluZyBpbmRleCBidWZmZXIgZm9yIEdMX0xJTkVfTE9PUC4iKTsKQEAgLTE0ODUsMTQgKzE1MjYs
MTQgQEAgdm9pZCBSZW5kZXJlcjk6OmRyYXdMaW5lTG9vcChHTHNpemVpIGNvdQogICAgICAgICB9
CiAKICAgICAgICAgdm9pZCogbWFwcGVkTWVtb3J5ID0gTlVMTDsKLSAgICAgICAgaW50IG9mZnNl
dCA9IG1MaW5lTG9vcElCLT5tYXBCdWZmZXIoc3BhY2VOZWVkZWQsICZtYXBwZWRNZW1vcnkpOwot
ICAgICAgICBpZiAob2Zmc2V0ID09IC0xIHx8IG1hcHBlZE1lbW9yeSA9PSBOVUxMKQorICAgICAg
ICB1bnNpZ25lZCBpbnQgb2Zmc2V0ID0gMDsKKyAgICAgICAgaWYgKCFtTGluZUxvb3BJQi0+bWFw
QnVmZmVyKHNwYWNlTmVlZGVkLCAmbWFwcGVkTWVtb3J5LCAmb2Zmc2V0KSkKICAgICAgICAgewog
ICAgICAgICAgICAgRVJSKCJDb3VsZCBub3QgbWFwIGluZGV4IGJ1ZmZlciBmb3IgR0xfTElORV9M
T09QLiIpOwogICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsK
ICAgICAgICAgfQogCi0gICAgICAgIHN0YXJ0SW5kZXggPSBzdGF0aWNfY2FzdDxVSU5UPihvZmZz
ZXQpIC8gNDsKKyAgICAgICAgc3RhcnRJbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4o
b2Zmc2V0KSAvIDQ7CiAgICAgICAgIHVuc2lnbmVkIGludCAqZGF0YSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dW5zaWduZWQgaW50Kj4obWFwcGVkTWVtb3J5KTsKIAogICAgICAgICBzd2l0Y2ggKHR5cGUp
CkBAIC0xNTQ5LDEzICsxNTkwLDE2IEBAIHZvaWQgUmVuZGVyZXI5OjpkcmF3TGluZUxvb3AoR0xz
aXplaSBjb3UKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBpbnQ+KGNvdW50ICsgMSkgPiAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZCBzaG9ydD46Om1heCgpIC8gc2l6ZW9mKHVuc2lnbmVkIHNob3J0KSkpCisgICAgICAgIC8v
IENoZWNrZWQgYnkgUmVuZGVyZXI5OjphcHBseVByaW1pdGl2ZVR5cGUKKyAgICAgICAgQVNTRVJU
KGNvdW50ID49IDApOworCisgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGNv
dW50KSArIDEgPiAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBzaG9ydD46Om1heCgpIC8g
c2l6ZW9mKHVuc2lnbmVkIHNob3J0KSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIEVSUigiQ291
bGQgbm90IGNyZWF0ZSBhIDE2LWJpdCBsb29waW5nIGluZGV4IGJ1ZmZlciBmb3IgR0xfTElORV9M
T09QLCB0b28gbWFueSBpbmRpY2VzIHJlcXVpcmVkLiIpOwogICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKICAgICAgICAgfQogCi0gICAgICAgIGNvbnN0IGlu
dCBzcGFjZU5lZWRlZCA9IChjb3VudCArIDEpICogc2l6ZW9mKHVuc2lnbmVkIHNob3J0KTsKKyAg
ICAgICAgY29uc3QgdW5zaWduZWQgaW50IHNwYWNlTmVlZGVkID0gKHN0YXRpY19jYXN0PHVuc2ln
bmVkIGludD4oY291bnQpICsgMSkgKiBzaXplb2YodW5zaWduZWQgc2hvcnQpOwogICAgICAgICBp
ZiAoIW1MaW5lTG9vcElCLT5yZXNlcnZlQnVmZmVyU3BhY2Uoc3BhY2VOZWVkZWQsIEdMX1VOU0lH
TkVEX1NIT1JUKSkKICAgICAgICAgewogICAgICAgICAgICAgRVJSKCJDb3VsZCBub3QgcmVzZXJ2
ZSBlbm91Z2ggc3BhY2UgaW4gbG9vcGluZyBpbmRleCBidWZmZXIgZm9yIEdMX0xJTkVfTE9PUC4i
KTsKQEAgLTE1NjMsMTQgKzE2MDcsMTQgQEAgdm9pZCBSZW5kZXJlcjk6OmRyYXdMaW5lTG9vcChH
THNpemVpIGNvdQogICAgICAgICB9CiAKICAgICAgICAgdm9pZCogbWFwcGVkTWVtb3J5ID0gTlVM
TDsKLSAgICAgICAgaW50IG9mZnNldCA9IG1MaW5lTG9vcElCLT5tYXBCdWZmZXIoc3BhY2VOZWVk
ZWQsICZtYXBwZWRNZW1vcnkpOwotICAgICAgICBpZiAob2Zmc2V0ID09IC0xIHx8IG1hcHBlZE1l
bW9yeSA9PSBOVUxMKQorICAgICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0OworICAgICAgICBpZiAo
bUxpbmVMb29wSUItPm1hcEJ1ZmZlcihzcGFjZU5lZWRlZCwgJm1hcHBlZE1lbW9yeSwgJm9mZnNl
dCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIEVSUigiQ291bGQgbm90IG1hcCBpbmRleCBidWZm
ZXIgZm9yIEdMX0xJTkVfTE9PUC4iKTsKICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
T1VUX09GX01FTU9SWSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGFydEluZGV4ID0gc3RhdGlj
X2Nhc3Q8VUlOVD4ob2Zmc2V0KSAvIDI7CisgICAgICAgIHN0YXJ0SW5kZXggPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBpbnQ+KG9mZnNldCkgLyAyOwogICAgICAgICB1bnNpZ25lZCBzaG9ydCAqZGF0
YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgc2hvcnQqPihtYXBwZWRNZW1vcnkpOwogCiAg
ICAgICAgIHN3aXRjaCAodHlwZSkKQEAgLTMwODUsNyArMzEyOSw3IEBAIFNoYWRlckV4ZWN1dGFi
bGUgKlJlbmRlcmVyOTo6bG9hZEV4ZWN1dGEKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KIAot
U2hhZGVyRXhlY3V0YWJsZSAqUmVuZGVyZXI5Ojpjb21waWxlVG9FeGVjdXRhYmxlKGdsOjpJbmZv
TG9nICZpbmZvTG9nLCBjb25zdCBjaGFyICpzaGFkZXJITFNMLCByeDo6U2hhZGVyVHlwZSB0eXBl
KQorU2hhZGVyRXhlY3V0YWJsZSAqUmVuZGVyZXI5Ojpjb21waWxlVG9FeGVjdXRhYmxlKGdsOjpJ
bmZvTG9nICZpbmZvTG9nLCBjb25zdCBjaGFyICpzaGFkZXJITFNMLCByeDo6U2hhZGVyVHlwZSB0
eXBlLCBEM0RXb3JrYXJvdW5kVHlwZSB3b3JrYXJvdW5kKQogewogICAgIGNvbnN0IGNoYXIgKnBy
b2ZpbGUgPSBOVUxMOwogCkBAIC0zMTAyLDcgKzMxNDYsMTEgQEAgU2hhZGVyRXhlY3V0YWJsZSAq
UmVuZGVyZXI5Ojpjb21waWxlVG9FeAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAg
ICBJRDNEQmxvYiAqYmluYXJ5ID0gKElEM0RCbG9iKiljb21waWxlVG9CaW5hcnkoaW5mb0xvZywg
c2hhZGVySExTTCwgcHJvZmlsZSwgQU5HTEVfQ09NUElMRV9PUFRJTUlaQVRJT05fTEVWRUwsIHRy
dWUpOworICAgIC8vIEFOR0xFIGlzc3VlIDQ4NjoKKyAgICAvLyBXb3JrLWFyb3VuZCBhIEQzRDkg
Y29tcGlsZXIgYnVnIHRoYXQgcHJlc2VudHMgaXRzZWxmIHdoZW4gdXNpbmcgY29uZGl0aW9uYWwg
ZGlzY2FyZCwgYnkgZGlzYWJsaW5nIG9wdGltaXphdGlvbgorICAgIFVJTlQgb3B0aW1pemF0aW9u
RmxhZ3MgPSAod29ya2Fyb3VuZCA9PSBBTkdMRV9EM0RfV09SS0FST1VORF9TTTNfT1BUSU1JWkVS
ID8gRDNEQ09NUElMRV9TS0lQX09QVElNSVpBVElPTiA6IEFOR0xFX0NPTVBJTEVfT1BUSU1JWkFU
SU9OX0xFVkVMKTsKKworICAgIElEM0RCbG9iICpiaW5hcnkgPSAoSUQzREJsb2IqKWNvbXBpbGVU
b0JpbmFyeShpbmZvTG9nLCBzaGFkZXJITFNMLCBwcm9maWxlLCBvcHRpbWl6YXRpb25GbGFncywg
dHJ1ZSk7CiAgICAgaWYgKCFiaW5hcnkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyOS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvUmVuZGVyZXI5LmgJKHJldmlzaW9uIDE1OTA5MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXI5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE3MCw3ICsxNzAsNyBAQCBjbGFzcyBSZW5kZXJlcjkgOiBwdWJsaWMgUmVuZGVyZXIKIAog
ICAgIC8vIFNoYWRlciBvcGVyYXRpb25zCiAgICAgdmlydHVhbCBTaGFkZXJFeGVjdXRhYmxlICps
b2FkRXhlY3V0YWJsZShjb25zdCB2b2lkICpmdW5jdGlvbiwgc2l6ZV90IGxlbmd0aCwgcng6OlNo
YWRlclR5cGUgdHlwZSk7Ci0gICAgdmlydHVhbCBTaGFkZXJFeGVjdXRhYmxlICpjb21waWxlVG9F
eGVjdXRhYmxlKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBjaGFyICpzaGFkZXJITFNMLCBy
eDo6U2hhZGVyVHlwZSB0eXBlKTsKKyAgICB2aXJ0dWFsIFNoYWRlckV4ZWN1dGFibGUgKmNvbXBp
bGVUb0V4ZWN1dGFibGUoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IGNoYXIgKnNoYWRlckhM
U0wsIHJ4OjpTaGFkZXJUeXBlIHR5cGUsIEQzRFdvcmthcm91bmRUeXBlIHdvcmthcm91bmQpOwog
CiAgICAgLy8gSW1hZ2Ugb3BlcmF0aW9ucwogICAgIHZpcnR1YWwgSW1hZ2UgKmNyZWF0ZUltYWdl
KCk7CkBAIC0yOTgsNiArMjk4LDcgQEAgY2xhc3MgUmVuZGVyZXI5IDogcHVibGljIFJlbmRlcmVy
CiAgICAgZ2w6OlJlY3RhbmdsZSBtQ3VyVmlld3BvcnQ7CiAgICAgZmxvYXQgbUN1ck5lYXI7CiAg
ICAgZmxvYXQgbUN1ckZhcjsKKyAgICBmbG9hdCBtQ3VyRGVwdGhGcm9udDsKIAogICAgIGJvb2wg
bUZvcmNlU2V0QmxlbmRTdGF0ZTsKICAgICBnbDo6QmxlbmRTdGF0ZSBtQ3VyQmxlbmRTdGF0ZTsK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVu
ZGVyZXIxMS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjExLmNwcAkocmV2aXNpb24gMTU5MDkwKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjExLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTIsNyArMTIsNyBAQAogI2luY2x1ZGUgImxpYkdMRVN2Mi9C
dWZmZXIuaCIKICNpbmNsdWRlICJsaWJHTEVTdjIvUHJvZ3JhbUJpbmFyeS5oIgogI2luY2x1ZGUg
ImxpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi9SZW5kZXJCdWZm
ZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUmVuZGVyYnVmZmVyLmgiCiAjaW5jbHVkZSAibGli
R0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyMTEuaCIKICNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVy
ZXIvUmVuZGVyVGFyZ2V0MTEuaCIKICNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvcmVuZGVy
ZXIxMV91dGlscy5oIgpAQCAtMjQzLDggKzI0Myw2IEBAIEVHTGludCBSZW5kZXJlcjExOjppbml0
aWFsaXplKCkKICAgICB7CiAgICAgICAgIEQzRDExX01FU1NBR0VfSUQgaGlkZU1lc3NhZ2VzW10g
PQogICAgICAgICB7Ci0gICAgICAgICAgICBEM0QxMV9NRVNTQUdFX0lEX0RFVklDRV9PTVNFVFJF
TkRFUlRBUkdFVFNfSEFaQVJELAotICAgICAgICAgICAgRDNEMTFfTUVTU0FHRV9JRF9ERVZJQ0Vf
UFNTRVRTSEFERVJSRVNPVVJDRVNfSEFaQVJELAogICAgICAgICAgICAgRDNEMTFfTUVTU0FHRV9J
RF9ERVZJQ0VfRFJBV19SRU5ERVJUQVJHRVRWSUVXX05PVF9TRVQKICAgICAgICAgfTsKIApAQCAt
MzIyLDcgKzMyMCw2IEBAIEVHTGludCBSZW5kZXJlcjExOjppbml0aWFsaXplKCkKICAgICB7CiAg
ICAgICAgIERYR0lfRk9STUFUX1IzMl9GTE9BVCwKICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMy
X0ZMT0FULAotICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQsCiAgICAgICAgIERY
R0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKICAgICB9OwogCkBAIC04MzUsMjMgKzgzMiwy
OSBAQCBib29sIFJlbmRlcmVyMTE6OmFwcGx5UHJpbWl0aXZlVHlwZShHTGVuCiB7CiAgICAgRDNE
MTFfUFJJTUlUSVZFX1RPUE9MT0dZIHByaW1pdGl2ZVRvcG9sb2d5ID0gRDNEX1BSSU1JVElWRV9U
T1BPTE9HWV9VTkRFRklORUQ7CiAKKyAgICBHTHNpemVpIG1pbkNvdW50ID0gMDsKKwogICAgIHN3
aXRjaCAobW9kZSkKICAgICB7Ci0gICAgICBjYXNlIEdMX1BPSU5UUzogICAgICAgICBwcmltaXRp
dmVUb3BvbG9neSA9IEQzRDExX1BSSU1JVElWRV9UT1BPTE9HWV9QT0lOVExJU1Q7ICAgYnJlYWs7
Ci0gICAgICBjYXNlIEdMX0xJTkVTOiAgICAgICAgICBwcmltaXRpdmVUb3BvbG9neSA9IEQzRF9Q
UklNSVRJVkVfVE9QT0xPR1lfTElORUxJU1Q7ICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX0xJ
TkVfTE9PUDogICAgICBwcmltaXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJVkVfVE9QT0xPR1lf
TElORVNUUklQOyAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX0xJTkVfU1RSSVA6ICAgICBwcmlt
aXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfTElORVNUUklQOyAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEdMX1RSSUFOR0xFUzogICAgICBwcmltaXRpdmVUb3BvbG9neSA9IEQz
RF9QUklNSVRJVkVfVE9QT0xPR1lfVFJJQU5HTEVMSVNUOyAgYnJlYWs7Ci0gICAgICBjYXNlIEdM
X1RSSUFOR0xFX1NUUklQOiBwcmltaXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJVkVfVE9QT0xP
R1lfVFJJQU5HTEVTVFJJUDsgYnJlYWs7CisgICAgICBjYXNlIEdMX1BPSU5UUzogICAgICAgICBw
cmltaXRpdmVUb3BvbG9neSA9IEQzRDExX1BSSU1JVElWRV9UT1BPTE9HWV9QT0lOVExJU1Q7ICAg
bWluQ291bnQgPSAxOyBicmVhazsKKyAgICAgIGNhc2UgR0xfTElORVM6ICAgICAgICAgIHByaW1p
dGl2ZVRvcG9sb2d5ID0gRDNEX1BSSU1JVElWRV9UT1BPTE9HWV9MSU5FTElTVDsgICAgICBtaW5D
b3VudCA9IDI7IGJyZWFrOworICAgICAgY2FzZSBHTF9MSU5FX0xPT1A6ICAgICAgcHJpbWl0aXZl
VG9wb2xvZ3kgPSBEM0RfUFJJTUlUSVZFX1RPUE9MT0dZX0xJTkVTVFJJUDsgICAgIG1pbkNvdW50
ID0gMjsgYnJlYWs7CisgICAgICBjYXNlIEdMX0xJTkVfU1RSSVA6ICAgICBwcmltaXRpdmVUb3Bv
bG9neSA9IEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfTElORVNUUklQOyAgICAgbWluQ291bnQgPSAy
OyBicmVhazsKKyAgICAgIGNhc2UgR0xfVFJJQU5HTEVTOiAgICAgIHByaW1pdGl2ZVRvcG9sb2d5
ID0gRDNEX1BSSU1JVElWRV9UT1BPTE9HWV9UUklBTkdMRUxJU1Q7ICBtaW5Db3VudCA9IDM7IGJy
ZWFrOworICAgICAgY2FzZSBHTF9UUklBTkdMRV9TVFJJUDogcHJpbWl0aXZlVG9wb2xvZ3kgPSBE
M0RfUFJJTUlUSVZFX1RPUE9MT0dZX1RSSUFOR0xFU1RSSVA7IG1pbkNvdW50ID0gMzsgYnJlYWs7
CiAgICAgICAgICAgLy8gZW11bGF0ZSBmYW5zIHZpYSByZXdyaXRpbmcgaW5kZXggYnVmZmVyCi0g
ICAgICBjYXNlIEdMX1RSSUFOR0xFX0ZBTjogICBwcmltaXRpdmVUb3BvbG9neSA9IEQzRF9QUklN
SVRJVkVfVE9QT0xPR1lfVFJJQU5HTEVMSVNUOyAgYnJlYWs7CisgICAgICBjYXNlIEdMX1RSSUFO
R0xFX0ZBTjogICBwcmltaXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfVFJJ
QU5HTEVMSVNUOyAgbWluQ291bnQgPSAzOyBicmVhazsKICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNLCBmYWxzZSk7CiAgICAgfQogCi0gICAg
bURldmljZUNvbnRleHQtPklBU2V0UHJpbWl0aXZlVG9wb2xvZ3kocHJpbWl0aXZlVG9wb2xvZ3kp
OworICAgIGlmIChwcmltaXRpdmVUb3BvbG9neSAhPSBtQ3VycmVudFByaW1pdGl2ZVRvcG9sb2d5
KQorICAgIHsKKyAgICAgICAgbURldmljZUNvbnRleHQtPklBU2V0UHJpbWl0aXZlVG9wb2xvZ3ko
cHJpbWl0aXZlVG9wb2xvZ3kpOworICAgICAgICBtQ3VycmVudFByaW1pdGl2ZVRvcG9sb2d5ID0g
cHJpbWl0aXZlVG9wb2xvZ3k7CisgICAgfQogCi0gICAgcmV0dXJuIGNvdW50ID4gMDsKKyAgICBy
ZXR1cm4gY291bnQgPj0gbWluQ291bnQ7CiB9CiAKIGJvb2wgUmVuZGVyZXIxMTo6YXBwbHlSZW5k
ZXJUYXJnZXQoZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlcikKQEAgLTkxNCw2ICs5MTcsMjUg
QEAgYm9vbCBSZW5kZXJlcjExOjphcHBseVJlbmRlclRhcmdldChnbDo6RgogICAgICAgICAgICAg
ICAgIHJlbmRlclRhcmdldEZvcm1hdCA9IGNvbG9yYnVmZmVyLT5nZXRBY3R1YWxGb3JtYXQoKTsK
ICAgICAgICAgICAgICAgICBtaXNzaW5nQ29sb3JSZW5kZXJUYXJnZXQgPSBmYWxzZTsKICAgICAg
ICAgICAgIH0KKworI2lmZGVmIF9ERUJVRworICAgICAgICAgICAgLy8gV29ya2Fyb3VuZCBmb3Ig
RGVidWcgU0VUU0hBREVSUkVTT1VSQ0VTX0hBWkFSRCBEM0QxMSB3YXJuaW5ncworICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpbnQgdmVydGV4U2VyaWFsSW5kZXggPSAwOyB2ZXJ0ZXhTZXJpYWxJ
bmRleCA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFM7
IHZlcnRleFNlcmlhbEluZGV4KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYg
KGNvbG9yYnVmZmVyLT5nZXRUZXh0dXJlU2VyaWFsKCkgIT0gMCAmJiBtQ3VyVmVydGV4VGV4dHVy
ZVNlcmlhbHNbdmVydGV4U2VyaWFsSW5kZXhdID09IGNvbG9yYnVmZmVyLT5nZXRUZXh0dXJlU2Vy
aWFsKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzZXRUZXh0dXJl
KGdsOjpTQU1QTEVSX1ZFUlRFWCwgdmVydGV4U2VyaWFsSW5kZXgsIE5VTEwpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQg
cGl4ZWxTZXJpYWxJbmRleCA9IDA7IHBpeGVsU2VyaWFsSW5kZXggPCBnbDo6TUFYX1RFWFRVUkVf
SU1BR0VfVU5JVFM7IHBpeGVsU2VyaWFsSW5kZXgrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBpZiAoY29sb3JidWZmZXItPmdldFRleHR1cmVTZXJpYWwoKSAhPSAwICYmIG1DdXJQ
aXhlbFRleHR1cmVTZXJpYWxzW3BpeGVsU2VyaWFsSW5kZXhdID09IGNvbG9yYnVmZmVyLT5nZXRU
ZXh0dXJlU2VyaWFsKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBz
ZXRUZXh0dXJlKGdsOjpTQU1QTEVSX1BJWEVMLCBwaXhlbFNlcmlhbEluZGV4LCBOVUxMKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisjZW5kaWYKICAgICAgICAgfQogICAgIH0K
IApAQCAtMTAxMyw5ICsxMDM1LDYgQEAgYm9vbCBSZW5kZXJlcjExOjphcHBseVJlbmRlclRhcmdl
dChnbDo6RgogICAgICAgICBtRGVwdGhTdGVuY2lsSW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgIH0K
IAotICAgIFNhZmVSZWxlYXNlKGZyYW1lYnVmZmVyUlRWcyk7Ci0gICAgU2FmZVJlbGVhc2UoZnJh
bWVidWZmZXJEU1YpOwotCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTExMzAsMTMgKzExNDks
MTYgQEAgdm9pZCBSZW5kZXJlcjExOjpkcmF3TGluZUxvb3AoR0xzaXplaSBjbwogICAgICAgICB9
CiAgICAgfQogCi0gICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oY291bnQgKyAxKSA+
IChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGludD46Om1heCgpIC8gc2l6ZW9mKHVuc2ln
bmVkIGludCkpKQorICAgIC8vIENoZWNrZWQgYnkgUmVuZGVyZXIxMTo6YXBwbHlQcmltaXRpdmVU
eXBlCisgICAgQVNTRVJUKGNvdW50ID49IDApOworCisgICAgaWYgKHN0YXRpY19jYXN0PHVuc2ln
bmVkIGludD4oY291bnQpICsgMSA+IChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGludD46
Om1heCgpIC8gc2l6ZW9mKHVuc2lnbmVkIGludCkpKQogICAgIHsKICAgICAgICAgRVJSKCJDb3Vs
ZCBub3QgY3JlYXRlIGEgMzItYml0IGxvb3BpbmcgaW5kZXggYnVmZmVyIGZvciBHTF9MSU5FX0xP
T1AsIHRvbyBtYW55IGluZGljZXMgcmVxdWlyZWQuIik7CiAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfT1VUX09GX01FTU9SWSk7CiAgICAgfQogCi0gICAgY29uc3QgdW5zaWduZWQgaW50IHNw
YWNlTmVlZGVkID0gKGNvdW50ICsgMSkgKiBzaXplb2YodW5zaWduZWQgaW50KTsKKyAgICBjb25z
dCB1bnNpZ25lZCBpbnQgc3BhY2VOZWVkZWQgPSAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihj
b3VudCkgKyAxKSAqIHNpemVvZih1bnNpZ25lZCBpbnQpOwogICAgIGlmICghbUxpbmVMb29wSUIt
PnJlc2VydmVCdWZmZXJTcGFjZShzcGFjZU5lZWRlZCwgR0xfVU5TSUdORURfSU5UKSkKICAgICB7
CiAgICAgICAgIEVSUigiQ291bGQgbm90IHJlc2VydmUgZW5vdWdoIHNwYWNlIGluIGxvb3Bpbmcg
aW5kZXggYnVmZmVyIGZvciBHTF9MSU5FX0xPT1AuIik7CkBAIC0xMTQ0LDE1ICsxMTY2LDE1IEBA
IHZvaWQgUmVuZGVyZXIxMTo6ZHJhd0xpbmVMb29wKEdMc2l6ZWkgY28KICAgICB9CiAKICAgICB2
b2lkKiBtYXBwZWRNZW1vcnkgPSBOVUxMOwotICAgIGludCBvZmZzZXQgPSBtTGluZUxvb3BJQi0+
bWFwQnVmZmVyKHNwYWNlTmVlZGVkLCAmbWFwcGVkTWVtb3J5KTsKLSAgICBpZiAob2Zmc2V0ID09
IC0xIHx8IG1hcHBlZE1lbW9yeSA9PSBOVUxMKQorICAgIHVuc2lnbmVkIGludCBvZmZzZXQ7Cisg
ICAgaWYgKCFtTGluZUxvb3BJQi0+bWFwQnVmZmVyKHNwYWNlTmVlZGVkLCAmbWFwcGVkTWVtb3J5
LCAmb2Zmc2V0KSkKICAgICB7CiAgICAgICAgIEVSUigiQ291bGQgbm90IG1hcCBpbmRleCBidWZm
ZXIgZm9yIEdMX0xJTkVfTE9PUC4iKTsKICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRf
T0ZfTUVNT1JZKTsKICAgICB9CiAKICAgICB1bnNpZ25lZCBpbnQgKmRhdGEgPSByZWludGVycHJl
dF9jYXN0PHVuc2lnbmVkIGludCo+KG1hcHBlZE1lbW9yeSk7Ci0gICAgdW5zaWduZWQgaW50IGlu
ZGV4QnVmZmVyT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihvZmZzZXQpOworICAg
IHVuc2lnbmVkIGludCBpbmRleEJ1ZmZlck9mZnNldCA9IG9mZnNldDsKIAogICAgIHN3aXRjaCAo
dHlwZSkKICAgICB7CkBAIC0xMjMwLDkgKzEyNTIsMTIgQEAgdm9pZCBSZW5kZXJlcjExOjpkcmF3
VHJpYW5nbGVGYW4oR0xzaXplaQogICAgICAgICB9CiAgICAgfQogCisgICAgLy8gQ2hlY2tlZCBi
eSBSZW5kZXJlcjExOjphcHBseVByaW1pdGl2ZVR5cGUKKyAgICBBU1NFUlQoY291bnQgPj0gMyk7
CisKICAgICBjb25zdCB1bnNpZ25lZCBpbnQgbnVtVHJpcyA9IGNvdW50IC0gMjsKIAotICAgIGlm
IChudW1UcmlzICogMyA+IChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGludD46Om1heCgp
IC8gc2l6ZW9mKHVuc2lnbmVkIGludCkpKQorICAgIGlmIChudW1UcmlzID4gKHN0ZDo6bnVtZXJp
Y19saW1pdHM8dW5zaWduZWQgaW50Pjo6bWF4KCkgLyAoc2l6ZW9mKHVuc2lnbmVkIGludCkgKiAz
KSkpCiAgICAgewogICAgICAgICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUgYSBzY3JhdGNoIGluZGV4
IGJ1ZmZlciBmb3IgR0xfVFJJQU5HTEVfRkFOLCB0b28gbWFueSBpbmRpY2VzIHJlcXVpcmVkLiIp
OwogICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwpAQCAtMTI0Niwx
NSArMTI3MSwxNSBAQCB2b2lkIFJlbmRlcmVyMTE6OmRyYXdUcmlhbmdsZUZhbihHTHNpemVpCiAg
ICAgfQogCiAgICAgdm9pZCogbWFwcGVkTWVtb3J5ID0gTlVMTDsKLSAgICBpbnQgb2Zmc2V0ID0g
bVRyaWFuZ2xlRmFuSUItPm1hcEJ1ZmZlcihzcGFjZU5lZWRlZCwgJm1hcHBlZE1lbW9yeSk7Ci0g
ICAgaWYgKG9mZnNldCA9PSAtMSB8fCBtYXBwZWRNZW1vcnkgPT0gTlVMTCkKKyAgICB1bnNpZ25l
ZCBpbnQgb2Zmc2V0OworICAgIGlmICghbVRyaWFuZ2xlRmFuSUItPm1hcEJ1ZmZlcihzcGFjZU5l
ZWRlZCwgJm1hcHBlZE1lbW9yeSwgJm9mZnNldCkpCiAgICAgewogICAgICAgICBFUlIoIkNvdWxk
IG5vdCBtYXAgc2NyYXRjaCBpbmRleCBidWZmZXIgZm9yIEdMX1RSSUFOR0xFX0ZBTi4iKTsKICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKICAgICB9CiAKICAgICB1
bnNpZ25lZCBpbnQgKmRhdGEgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGludCo+KG1hcHBl
ZE1lbW9yeSk7Ci0gICAgdW5zaWduZWQgaW50IGluZGV4QnVmZmVyT2Zmc2V0ID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQgaW50PihvZmZzZXQpOworICAgIHVuc2lnbmVkIGludCBpbmRleEJ1ZmZlck9m
ZnNldCA9IG9mZnNldDsKIAogICAgIHN3aXRjaCAodHlwZSkKICAgICB7CkBAIC0xNDQyLDkgKzE0
NjcsMTggQEAgdm9pZCBSZW5kZXJlcjExOjphcHBseVVuaWZvcm1zKGdsOjpQcm9ncgogICAgIHsK
ICAgICAgICAgbURldmljZUNvbnRleHQtPlVubWFwKHBpeGVsQ29uc3RhbnRCdWZmZXIsIDApOwog
ICAgIH0KLSAgICAKLSAgICBtRGV2aWNlQ29udGV4dC0+VlNTZXRDb25zdGFudEJ1ZmZlcnMoMCwg
MSwgJnZlcnRleENvbnN0YW50QnVmZmVyKTsKLSAgICBtRGV2aWNlQ29udGV4dC0+UFNTZXRDb25z
dGFudEJ1ZmZlcnMoMCwgMSwgJnBpeGVsQ29uc3RhbnRCdWZmZXIpOworCisgICAgaWYgKG1DdXJy
ZW50VmVydGV4Q29uc3RhbnRCdWZmZXIgIT0gdmVydGV4Q29uc3RhbnRCdWZmZXIpCisgICAgewor
ICAgICAgICBtRGV2aWNlQ29udGV4dC0+VlNTZXRDb25zdGFudEJ1ZmZlcnMoMCwgMSwgJnZlcnRl
eENvbnN0YW50QnVmZmVyKTsKKyAgICAgICAgbUN1cnJlbnRWZXJ0ZXhDb25zdGFudEJ1ZmZlciA9
IHZlcnRleENvbnN0YW50QnVmZmVyOworICAgIH0KKworICAgIGlmIChtQ3VycmVudFBpeGVsQ29u
c3RhbnRCdWZmZXIgIT0gcGl4ZWxDb25zdGFudEJ1ZmZlcikKKyAgICB7CisgICAgICAgIG1EZXZp
Y2VDb250ZXh0LT5QU1NldENvbnN0YW50QnVmZmVycygwLCAxLCAmcGl4ZWxDb25zdGFudEJ1ZmZl
cik7CisgICAgICAgIG1DdXJyZW50UGl4ZWxDb25zdGFudEJ1ZmZlciA9IHBpeGVsQ29uc3RhbnRC
dWZmZXI7CisgICAgfQogCiAgICAgLy8gRHJpdmVyIHVuaWZvcm1zCiAgICAgaWYgKCFtRHJpdmVy
Q29uc3RhbnRCdWZmZXJWUykKQEAgLTE0OTIsNyArMTUyNiwxMSBAQCB2b2lkIFJlbmRlcmVyMTE6
OmFwcGx5VW5pZm9ybXMoZ2w6OlByb2dyCiAgICAgfQogCiAgICAgLy8gbmVlZGVkIGZvciB0aGUg
cG9pbnQgc3ByaXRlIGdlb21ldHJ5IHNoYWRlcgotICAgIG1EZXZpY2VDb250ZXh0LT5HU1NldENv
bnN0YW50QnVmZmVycygwLCAxLCAmbURyaXZlckNvbnN0YW50QnVmZmVyUFMpOworICAgIGlmICht
Q3VycmVudEdlb21ldHJ5Q29uc3RhbnRCdWZmZXIgIT0gbURyaXZlckNvbnN0YW50QnVmZmVyUFMp
CisgICAgeworICAgICAgICBtRGV2aWNlQ29udGV4dC0+R1NTZXRDb25zdGFudEJ1ZmZlcnMoMCwg
MSwgJm1Ecml2ZXJDb25zdGFudEJ1ZmZlclBTKTsKKyAgICAgICAgbUN1cnJlbnRHZW9tZXRyeUNv
bnN0YW50QnVmZmVyID0gbURyaXZlckNvbnN0YW50QnVmZmVyUFM7CisgICAgfQogfQogCiB2b2lk
IFJlbmRlcmVyMTE6OmNsZWFyKGNvbnN0IGdsOjpDbGVhclBhcmFtZXRlcnMgJmNsZWFyUGFyYW1z
LCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lQnVmZmVyKQpAQCAtMTU0OSw4ICsxNTg3LDYgQEAgdm9p
ZCBSZW5kZXJlcjExOjpjbGVhcihjb25zdCBnbDo6Q2xlYXJQYQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyUGFyYW1zLmNvbG9yQ2xl
YXJWYWx1ZS5ibHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNsZWFyUGFyYW1zLmNvbG9yQ2xlYXJWYWx1ZS5hbHBoYSB9OwogICAgICAg
ICAgICAgICAgICAgICAgICAgbURldmljZUNvbnRleHQtPkNsZWFyUmVuZGVyVGFyZ2V0Vmlldyhm
cmFtZWJ1ZmZlclJUViwgY2xlYXJWYWx1ZXMpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBm
cmFtZWJ1ZmZlclJUVi0+UmVsZWFzZSgpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICB9CkBAIC0xNTg4LDggKzE2MjQsNiBAQCB2b2lkIFJl
bmRlcmVyMTE6OmNsZWFyKGNvbnN0IGdsOjpDbGVhclBhCiAgICAgICAgICAgICAgICAgVUlOVDgg
c3RlbmNpbENsZWFyID0gY2xlYXJQYXJhbXMuc3RlbmNpbENsZWFyVmFsdWUgJiAweDAwMDAwMEZG
OwogCiAgICAgICAgICAgICAgICAgbURldmljZUNvbnRleHQtPkNsZWFyRGVwdGhTdGVuY2lsVmll
dyhmcmFtZWJ1ZmZlckRTViwgY2xlYXJGbGFncywgZGVwdGhDbGVhciwgc3RlbmNpbENsZWFyKTsK
LQotICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyRFNWLT5SZWxlYXNlKCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xNzk3LDYgKzE4MzEsMTQgQEAgdm9pZCBSZW5kZXJl
cjExOjptYXJrQWxsU3RhdGVEaXJ0eSgpCiAgICAgbUFwcGxpZWRQcm9ncmFtQmluYXJ5U2VyaWFs
ID0gMDsKICAgICBtZW1zZXQoJm1BcHBsaWVkVmVydGV4Q29uc3RhbnRzLCAwLCBzaXplb2YoZHhf
VmVydGV4Q29uc3RhbnRzKSk7CiAgICAgbWVtc2V0KCZtQXBwbGllZFBpeGVsQ29uc3RhbnRzLCAw
LCBzaXplb2YoZHhfUGl4ZWxDb25zdGFudHMpKTsKKworICAgIG1JbnB1dExheW91dENhY2hlLm1h
cmtEaXJ0eSgpOworCisgICAgbUN1cnJlbnRWZXJ0ZXhDb25zdGFudEJ1ZmZlciA9IE5VTEw7Cisg
ICAgbUN1cnJlbnRQaXhlbENvbnN0YW50QnVmZmVyID0gTlVMTDsKKyAgICBtQ3VycmVudEdlb21l
dHJ5Q29uc3RhbnRCdWZmZXIgPSBOVUxMOworCisgICAgbUN1cnJlbnRQcmltaXRpdmVUb3BvbG9n
eSA9IEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfVU5ERUZJTkVEOwogfQogCiB2b2lkIFJlbmRlcmVy
MTE6OnJlbGVhc2VEZXZpY2VSZXNvdXJjZXMoKQpAQCAtMjQyNCw3ICsyNDY2LDYgQEAgYm9vbCBS
ZW5kZXJlcjExOjpjb3B5SW1hZ2UoZ2w6OkZyYW1lYnVmZgogICAgIFRleHR1cmVTdG9yYWdlMTFf
MkQgKnN0b3JhZ2UxMSA9IFRleHR1cmVTdG9yYWdlMTFfMkQ6Om1ha2VUZXh0dXJlU3RvcmFnZTEx
XzJEKHN0b3JhZ2UtPmdldFN0b3JhZ2VJbnN0YW5jZSgpKTsKICAgICBpZiAoIXN0b3JhZ2UxMSkK
ICAgICB7Ci0gICAgICAgIHNvdXJjZS0+UmVsZWFzZSgpOwogICAgICAgICBFUlIoIkZhaWxlZCB0
byByZXRyaWV2ZSB0aGUgdGV4dHVyZSBzdG9yYWdlIGZyb20gdGhlIGRlc3RpbmF0aW9uLiIpOwog
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIGZhbHNlKTsKICAgICB9
CkBAIC0yNDMyLDcgKzI0NzMsNiBAQCBib29sIFJlbmRlcmVyMTE6OmNvcHlJbWFnZShnbDo6RnJh
bWVidWZmCiAgICAgUmVuZGVyVGFyZ2V0MTEgKmRlc3RSZW5kZXJUYXJnZXQgPSBSZW5kZXJUYXJn
ZXQxMTo6bWFrZVJlbmRlclRhcmdldDExKHN0b3JhZ2UxMS0+Z2V0UmVuZGVyVGFyZ2V0KGxldmVs
KSk7CiAgICAgaWYgKCFkZXN0UmVuZGVyVGFyZ2V0KQogICAgIHsKLSAgICAgICAgc291cmNlLT5S
ZWxlYXNlKCk7CiAgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSByZW5kZXIgdGFy
Z2V0IGZyb20gdGhlIGRlc3RpbmF0aW9uIHN0b3JhZ2UuIik7CiAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOwogICAgIH0KQEAgLTI0NDAsNyArMjQ4MCw2
IEBAIGJvb2wgUmVuZGVyZXIxMTo6Y29weUltYWdlKGdsOjpGcmFtZWJ1ZmYKICAgICBJRDNEMTFS
ZW5kZXJUYXJnZXRWaWV3ICpkZXN0ID0gZGVzdFJlbmRlclRhcmdldC0+Z2V0UmVuZGVyVGFyZ2V0
VmlldygpOwogICAgIGlmICghZGVzdCkKICAgICB7Ci0gICAgICAgIHNvdXJjZS0+UmVsZWFzZSgp
OwogICAgICAgICBFUlIoIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUgcmVuZGVyIHRhcmdldCB2aWV3
IGZyb20gdGhlIGRlc3RpbmF0aW9uIHJlbmRlciB0YXJnZXQuIik7CiAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOwogICAgIH0KQEAgLTI0NTQsOSArMjQ5
Myw2IEBAIGJvb2wgUmVuZGVyZXIxMTo6Y29weUltYWdlKGdsOjpGcmFtZWJ1ZmYKICAgICBib29s
IHJldCA9IGNvcHlUZXh0dXJlKHNvdXJjZSwgc291cmNlUmVjdCwgc291cmNlUmVuZGVyVGFyZ2V0
LT5nZXRXaWR0aCgpLCBzb3VyY2VSZW5kZXJUYXJnZXQtPmdldEhlaWdodCgpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVzdCwgZGVzdFJlY3QsIGRlc3RSZW5kZXJUYXJnZXQtPmdldFdp
ZHRoKCksIGRlc3RSZW5kZXJUYXJnZXQtPmdldEhlaWdodCgpLCBkZXN0Rm9ybWF0KTsKIAotICAg
IHNvdXJjZS0+UmVsZWFzZSgpOwotICAgIGRlc3QtPlJlbGVhc2UoKTsKLQogICAgIHJldHVybiBy
ZXQ7CiB9CiAKQEAgLTI0ODcsNyArMjUyMyw2IEBAIGJvb2wgUmVuZGVyZXIxMTo6Y29weUltYWdl
KGdsOjpGcmFtZWJ1ZmYKICAgICBUZXh0dXJlU3RvcmFnZTExX0N1YmUgKnN0b3JhZ2UxMSA9IFRl
eHR1cmVTdG9yYWdlMTFfQ3ViZTo6bWFrZVRleHR1cmVTdG9yYWdlMTFfQ3ViZShzdG9yYWdlLT5n
ZXRTdG9yYWdlSW5zdGFuY2UoKSk7CiAgICAgaWYgKCFzdG9yYWdlMTEpCiAgICAgewotICAgICAg
ICBzb3VyY2UtPlJlbGVhc2UoKTsKICAgICAgICAgRVJSKCJGYWlsZWQgdG8gcmV0cmlldmUgdGhl
IHRleHR1cmUgc3RvcmFnZSBmcm9tIHRoZSBkZXN0aW5hdGlvbi4iKTsKICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7CiAgICAgfQpAQCAtMjQ5NSw3ICsy
NTMwLDYgQEAgYm9vbCBSZW5kZXJlcjExOjpjb3B5SW1hZ2UoZ2w6OkZyYW1lYnVmZgogICAgIFJl
bmRlclRhcmdldDExICpkZXN0UmVuZGVyVGFyZ2V0ID0gUmVuZGVyVGFyZ2V0MTE6Om1ha2VSZW5k
ZXJUYXJnZXQxMShzdG9yYWdlMTEtPmdldFJlbmRlclRhcmdldCh0YXJnZXQsIGxldmVsKSk7CiAg
ICAgaWYgKCFkZXN0UmVuZGVyVGFyZ2V0KQogICAgIHsKLSAgICAgICAgc291cmNlLT5SZWxlYXNl
KCk7CiAgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSByZW5kZXIgdGFyZ2V0IGZy
b20gdGhlIGRlc3RpbmF0aW9uIHN0b3JhZ2UuIik7CiAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOwogICAgIH0KQEAgLTI1MDMsNyArMjUzNyw2IEBAIGJv
b2wgUmVuZGVyZXIxMTo6Y29weUltYWdlKGdsOjpGcmFtZWJ1ZmYKICAgICBJRDNEMTFSZW5kZXJU
YXJnZXRWaWV3ICpkZXN0ID0gZGVzdFJlbmRlclRhcmdldC0+Z2V0UmVuZGVyVGFyZ2V0Vmlldygp
OwogICAgIGlmICghZGVzdCkKICAgICB7Ci0gICAgICAgIHNvdXJjZS0+UmVsZWFzZSgpOwogICAg
ICAgICBFUlIoIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUgcmVuZGVyIHRhcmdldCB2aWV3IGZyb20g
dGhlIGRlc3RpbmF0aW9uIHJlbmRlciB0YXJnZXQuIik7CiAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOwogICAgIH0KQEAgLTI1MTcsOSArMjU1MCw2IEBA
IGJvb2wgUmVuZGVyZXIxMTo6Y29weUltYWdlKGdsOjpGcmFtZWJ1ZmYKICAgICBib29sIHJldCA9
IGNvcHlUZXh0dXJlKHNvdXJjZSwgc291cmNlUmVjdCwgc291cmNlUmVuZGVyVGFyZ2V0LT5nZXRX
aWR0aCgpLCBzb3VyY2VSZW5kZXJUYXJnZXQtPmdldEhlaWdodCgpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVzdCwgZGVzdFJlY3QsIGRlc3RSZW5kZXJUYXJnZXQtPmdldFdpZHRoKCks
IGRlc3RSZW5kZXJUYXJnZXQtPmdldEhlaWdodCgpLCBkZXN0Rm9ybWF0KTsKIAotICAgIHNvdXJj
ZS0+UmVsZWFzZSgpOwotICAgIGRlc3QtPlJlbGVhc2UoKTsKLQogICAgIHJldHVybiByZXQ7CiB9
CiAKQEAgLTI4MDAsNyArMjgzMCw3IEBAIFNoYWRlckV4ZWN1dGFibGUgKlJlbmRlcmVyMTE6Omxv
YWRFeGVjdXQKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KIAotU2hhZGVyRXhlY3V0YWJsZSAq
UmVuZGVyZXIxMTo6Y29tcGlsZVRvRXhlY3V0YWJsZShnbDo6SW5mb0xvZyAmaW5mb0xvZywgY29u
c3QgY2hhciAqc2hhZGVySExTTCwgcng6OlNoYWRlclR5cGUgdHlwZSkKK1NoYWRlckV4ZWN1dGFi
bGUgKlJlbmRlcmVyMTE6OmNvbXBpbGVUb0V4ZWN1dGFibGUoZ2w6OkluZm9Mb2cgJmluZm9Mb2cs
IGNvbnN0IGNoYXIgKnNoYWRlckhMU0wsIHJ4OjpTaGFkZXJUeXBlIHR5cGUsIEQzRFdvcmthcm91
bmRUeXBlIHdvcmthcm91bmQpCiB7CiAgICAgY29uc3QgY2hhciAqcHJvZmlsZSA9IE5VTEw7CiAK
QEAgLTI4NjksNyArMjg5OSw2IEBAIGJvb2wgUmVuZGVyZXIxMTo6Z2V0UmVuZGVyVGFyZ2V0UmVz
b3VyY2UKICAgICAgICAgewogICAgICAgICAgICAgSUQzRDExUmVzb3VyY2UgKnRleHR1cmVSZXNv
dXJjZSA9IE5VTEw7CiAgICAgICAgICAgICBjb2xvckJ1ZmZlclJUVi0+R2V0UmVzb3VyY2UoJnRl
eHR1cmVSZXNvdXJjZSk7Ci0gICAgICAgICAgICBjb2xvckJ1ZmZlclJUVi0+UmVsZWFzZSgpOwog
CiAgICAgICAgICAgICBpZiAodGV4dHVyZVJlc291cmNlKQogICAgICAgICAgICAgewpAQCAtMzQw
NCw2ICszNDMzLDE2IEBAIGJvb2wgUmVuZGVyZXIxMTo6YmxpdFJlbmRlcmJ1ZmZlclJlY3QoY28K
IHsKICAgICBBU1NFUlQocmVhZFJlY3Qud2lkdGggPT0gZHJhd1JlY3Qud2lkdGggJiYgcmVhZFJl
Y3QuaGVpZ2h0ID09IGRyYXdSZWN0LmhlaWdodCk7CiAKKyAgICBSZW5kZXJUYXJnZXQxMSAqZHJh
d1JlbmRlclRhcmdldDExID0gUmVuZGVyVGFyZ2V0MTE6Om1ha2VSZW5kZXJUYXJnZXQxMShkcmF3
UmVuZGVyVGFyZ2V0KTsKKyAgICBpZiAoIWRyYXdSZW5kZXJUYXJnZXQpCisgICAgeworICAgICAg
ICBFUlIoIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUgZHJhdyByZW5kZXIgdGFyZ2V0IGZyb20gdGhl
IGRyYXcgZnJhbWVidWZmZXIuIik7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09G
X01FTU9SWSwgZmFsc2UpOworICAgIH0KKworICAgIElEM0QxMVRleHR1cmUyRCAqZHJhd1RleHR1
cmUgPSBkcmF3UmVuZGVyVGFyZ2V0MTEtPmdldFRleHR1cmUoKTsKKyAgICB1bnNpZ25lZCBpbnQg
ZHJhd1N1YnJlc291cmNlID0gZHJhd1JlbmRlclRhcmdldDExLT5nZXRTdWJyZXNvdXJjZUluZGV4
KCk7CisKICAgICBSZW5kZXJUYXJnZXQxMSAqcmVhZFJlbmRlclRhcmdldDExID0gUmVuZGVyVGFy
Z2V0MTE6Om1ha2VSZW5kZXJUYXJnZXQxMShyZWFkUmVuZGVyVGFyZ2V0KTsKICAgICBpZiAoIXJl
YWRSZW5kZXJUYXJnZXQpCiAgICAgewpAQCAtMzQxNSwxNiArMzQ1NCwxMyBAQCBib29sIFJlbmRl
cmVyMTE6OmJsaXRSZW5kZXJidWZmZXJSZWN0KGNvCiAgICAgdW5zaWduZWQgaW50IHJlYWRTdWJy
ZXNvdXJjZSA9IDA7CiAgICAgaWYgKHJlYWRSZW5kZXJUYXJnZXQtPmdldFNhbXBsZXMoKSA+IDAp
CiAgICAgewotICAgICAgICBJRDNEMTFUZXh0dXJlMkQgKnVucmVzb2x2ZWRUZXh0dXJlID0gcmVh
ZFJlbmRlclRhcmdldDExLT5nZXRUZXh0dXJlKCk7Ci0KLSAgICAgICAgcmVhZFRleHR1cmUgPSBy
ZXNvbHZlTXVsdGlzYW1wbGVkVGV4dHVyZSh1bnJlc29sdmVkVGV4dHVyZSwgcmVhZFJlbmRlclRh
cmdldDExLT5nZXRTdWJyZXNvdXJjZUluZGV4KCkpOworICAgICAgICByZWFkVGV4dHVyZSA9IHJl
c29sdmVNdWx0aXNhbXBsZWRUZXh0dXJlKHJlYWRSZW5kZXJUYXJnZXQxMS0+Z2V0VGV4dHVyZSgp
LCByZWFkUmVuZGVyVGFyZ2V0MTEtPmdldFN1YnJlc291cmNlSW5kZXgoKSk7CiAgICAgICAgIHJl
YWRTdWJyZXNvdXJjZSA9IDA7Ci0KLSAgICAgICAgdW5yZXNvbHZlZFRleHR1cmUtPlJlbGVhc2Uo
KTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgICAgcmVhZFRleHR1cmUgPSByZWFkUmVu
ZGVyVGFyZ2V0MTEtPmdldFRleHR1cmUoKTsKKyAgICAgICAgcmVhZFRleHR1cmUtPkFkZFJlZigp
OwogICAgICAgICByZWFkU3VicmVzb3VyY2UgPSByZWFkUmVuZGVyVGFyZ2V0MTEtPmdldFN1YnJl
c291cmNlSW5kZXgoKTsKICAgICB9CiAKQEAgLTM0MzQsMTcgKzM0NzAsNiBAQCBib29sIFJlbmRl
cmVyMTE6OmJsaXRSZW5kZXJidWZmZXJSZWN0KGNvCiAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOwogICAgIH0KIAotICAgIFJlbmRlclRhcmdldDExICpk
cmF3UmVuZGVyVGFyZ2V0MTEgPSBSZW5kZXJUYXJnZXQxMTo6bWFrZVJlbmRlclRhcmdldDExKGRy
YXdSZW5kZXJUYXJnZXQpOwotICAgIGlmICghZHJhd1JlbmRlclRhcmdldCkKLSAgICB7Ci0gICAg
ICAgIHJlYWRUZXh0dXJlLT5SZWxlYXNlKCk7Ci0gICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJp
ZXZlIHRoZSBkcmF3IHJlbmRlciB0YXJnZXQgZnJvbSB0aGUgZHJhdyBmcmFtZWJ1ZmZlci4iKTsK
LSAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7Ci0gICAg
fQotCi0gICAgSUQzRDExVGV4dHVyZTJEICpkcmF3VGV4dHVyZSA9IGRyYXdSZW5kZXJUYXJnZXQx
MS0+Z2V0VGV4dHVyZSgpOwotICAgIHVuc2lnbmVkIGludCBkcmF3U3VicmVzb3VyY2UgPSBkcmF3
UmVuZGVyVGFyZ2V0MTEtPmdldFN1YnJlc291cmNlSW5kZXgoKTsKLQogICAgIEQzRDExX0JPWCBy
ZWFkQm94OwogICAgIHJlYWRCb3gubGVmdCA9IHJlYWRSZWN0Lng7CiAgICAgcmVhZEJveC5yaWdo
dCA9IHJlYWRSZWN0LnggKyByZWFkUmVjdC53aWR0aDsKQEAgLTM0NjAsOCArMzQ4NSw3IEBAIGJv
b2wgUmVuZGVyZXIxMTo6YmxpdFJlbmRlcmJ1ZmZlclJlY3QoY28KICAgICBtRGV2aWNlQ29udGV4
dC0+Q29weVN1YnJlc291cmNlUmVnaW9uKGRyYXdUZXh0dXJlLCBkcmF3U3VicmVzb3VyY2UsIGRy
YXdSZWN0LngsIGRyYXdSZWN0LnksIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWFkVGV4dHVyZSwgcmVhZFN1YnJlc291cmNlLCBwU3JjQm94KTsKIAotICAg
IHJlYWRUZXh0dXJlLT5SZWxlYXNlKCk7Ci0gICAgZHJhd1RleHR1cmUtPlJlbGVhc2UoKTsKKyAg
ICBTYWZlUmVsZWFzZShyZWFkVGV4dHVyZSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIx
MS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
cmVuZGVyZXIvUmVuZGVyZXIxMS5oCShyZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyMTEuaAkod29ya2luZyBj
b3B5KQpAQCAtMTU1LDcgKzE1NSw3IEBAIGNsYXNzIFJlbmRlcmVyMTEgOiBwdWJsaWMgUmVuZGVy
ZXIKIAogICAgIC8vIFNoYWRlciBvcGVyYXRpb25zCiAgICAgdmlydHVhbCBTaGFkZXJFeGVjdXRh
YmxlICpsb2FkRXhlY3V0YWJsZShjb25zdCB2b2lkICpmdW5jdGlvbiwgc2l6ZV90IGxlbmd0aCwg
cng6OlNoYWRlclR5cGUgdHlwZSk7Ci0gICAgdmlydHVhbCBTaGFkZXJFeGVjdXRhYmxlICpjb21w
aWxlVG9FeGVjdXRhYmxlKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBjaGFyICpzaGFkZXJI
TFNMLCByeDo6U2hhZGVyVHlwZSB0eXBlKTsKKyAgICB2aXJ0dWFsIFNoYWRlckV4ZWN1dGFibGUg
KmNvbXBpbGVUb0V4ZWN1dGFibGUoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IGNoYXIgKnNo
YWRlckhMU0wsIHJ4OjpTaGFkZXJUeXBlIHR5cGUsIEQzRFdvcmthcm91bmRUeXBlIHdvcmthcm91
bmQpOwogCiAgICAgLy8gSW1hZ2Ugb3BlcmF0aW9ucwogICAgIHZpcnR1YWwgSW1hZ2UgKmNyZWF0
ZUltYWdlKCk7CkBAIC0yMzUsNyArMjM1LDcgQEAgY2xhc3MgUmVuZGVyZXIxMSA6IHB1YmxpYyBS
ZW5kZXJlcgogICAgICAgICB1bnNpZ25lZCBpbnQgcXVhbGl0eUxldmVsc1tEM0QxMV9NQVhfTVVM
VElTQU1QTEVfU0FNUExFX0NPVU5UXTsKICAgICB9OwogCi0gICAgdHlwZWRlZiBzdGQ6OnVub3Jk
ZXJlZF9tYXA8RFhHSV9GT1JNQVQsIE11bHRpc2FtcGxlU3VwcG9ydEluZm8+IE11bHRpc2FtcGxl
U3VwcG9ydE1hcDsKKyAgICB0eXBlZGVmIHN0ZDo6dW5vcmRlcmVkX21hcDxEWEdJX0ZPUk1BVCwg
TXVsdGlzYW1wbGVTdXBwb3J0SW5mbywgc3RkOjpoYXNoPGludD4gPiBNdWx0aXNhbXBsZVN1cHBv
cnRNYXA7CiAgICAgTXVsdGlzYW1wbGVTdXBwb3J0TWFwIG1NdWx0aXNhbXBsZVN1cHBvcnRNYXA7
CiAKICAgICB1bnNpZ25lZCBpbnQgbU1heFN1cHBvcnRlZFNhbXBsZXM7CkBAIC0yODgsNiArMjg4
LDkgQEAgY2xhc3MgUmVuZGVyZXIxMSA6IHB1YmxpYyBSZW5kZXJlcgogICAgIGZsb2F0IG1DdXJO
ZWFyOwogICAgIGZsb2F0IG1DdXJGYXI7CiAKKyAgICAvLyBDdXJyZW50bHkgYXBwbGllZCBwcmlt
aXRpdmUgdG9wb2xvZ3kKKyAgICBEM0QxMV9QUklNSVRJVkVfVE9QT0xPR1kgbUN1cnJlbnRQcmlt
aXRpdmVUb3BvbG9neTsKKwogICAgIHVuc2lnbmVkIGludCBtQXBwbGllZElCU2VyaWFsOwogICAg
IHVuc2lnbmVkIGludCBtQXBwbGllZFN0b3JhZ2VJQlNlcmlhbDsKICAgICB1bnNpZ25lZCBpbnQg
bUFwcGxpZWRJQk9mZnNldDsKQEAgLTI5OCwxMCArMzAxLDE0IEBAIGNsYXNzIFJlbmRlcmVyMTEg
OiBwdWJsaWMgUmVuZGVyZXIKICAgICBkeF9WZXJ0ZXhDb25zdGFudHMgbVZlcnRleENvbnN0YW50
czsKICAgICBkeF9WZXJ0ZXhDb25zdGFudHMgbUFwcGxpZWRWZXJ0ZXhDb25zdGFudHM7CiAgICAg
SUQzRDExQnVmZmVyICptRHJpdmVyQ29uc3RhbnRCdWZmZXJWUzsKKyAgICBJRDNEMTFCdWZmZXIg
Km1DdXJyZW50VmVydGV4Q29uc3RhbnRCdWZmZXI7CiAKICAgICBkeF9QaXhlbENvbnN0YW50cyBt
UGl4ZWxDb25zdGFudHM7CiAgICAgZHhfUGl4ZWxDb25zdGFudHMgbUFwcGxpZWRQaXhlbENvbnN0
YW50czsKICAgICBJRDNEMTFCdWZmZXIgKm1Ecml2ZXJDb25zdGFudEJ1ZmZlclBTOworICAgIElE
M0QxMUJ1ZmZlciAqbUN1cnJlbnRQaXhlbENvbnN0YW50QnVmZmVyOworCisgICAgSUQzRDExQnVm
ZmVyICptQ3VycmVudEdlb21ldHJ5Q29uc3RhbnRCdWZmZXI7CiAKICAgICAvLyBWZXJ0ZXgsIGlu
ZGV4IGFuZCBpbnB1dCBsYXlvdXRzCiAgICAgVmVydGV4RGF0YU1hbmFnZXIgKm1WZXJ0ZXhEYXRh
TWFuYWdlcjsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvUmVuZGVyZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIuY3BwCShyZXZpc2lvbiAxNTkwOTApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQsNiArMTQsNyBAQAogI2luY2x1ZGUgImxpYkdMRVN2
Mi9yZW5kZXJlci9SZW5kZXJlcjkuaCIKICNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVu
ZGVyZXIxMS5oIgogI2luY2x1ZGUgImxpYkdMRVN2Mi91dGlsaXRpZXMuaCIKKyNpbmNsdWRlICJ0
aGlyZF9wYXJ0eS90cmFjZV9ldmVudC90cmFjZV9ldmVudC5oIgogCiAjaWYgIWRlZmluZWQoQU5H
TEVfRU5BQkxFX0QzRDExKQogLy8gRW5hYmxlcyB1c2Ugb2YgdGhlIERpcmVjdDNEIDExIEFQSSBm
b3IgYSBkZWZhdWx0IGRpc3BsYXksIHdoZW4gYXZhaWxhYmxlCkBAIC00MCw2ICs0MSw3IEBAIFJl
bmRlcmVyOjp+UmVuZGVyZXIoKQogCiBib29sIFJlbmRlcmVyOjppbml0aWFsaXplQ29tcGlsZXIo
KQogeworICAgIFRSQUNFX0VWRU5UMCgiZ3B1IiwgImluaXRpYWxpemVDb21waWxlciIpOwogI2lm
IGRlZmluZWQoQU5HTEVfUFJFTE9BREVEX0QzRENPTVBJTEVSX01PRFVMRV9OQU1FUykKICAgICAv
LyBGaW5kIGEgRDNEQ29tcGlsZXIgbW9kdWxlIHRoYXQgaGFkIGFscmVhZHkgYmVlbiBsb2FkZWQg
YmFzZWQgb24gYSBwcmVkZWZpbmVkIGxpc3Qgb2YgdmVyc2lvbnMuCiAgICAgc3RhdGljIFRDSEFS
KiBkM2RDb21waWxlck5hbWVzW10gPSBBTkdMRV9QUkVMT0FERURfRDNEQ09NUElMRVJfTU9EVUxF
X05BTUVTOwpAQCAtNTEsMTMgKzUzLDE2IEBAIGJvb2wgUmVuZGVyZXI6OmluaXRpYWxpemVDb21w
aWxlcigpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSNlbHNlCi0gICAg
Ly8gTG9hZCB0aGUgdmVyc2lvbiBvZiB0aGUgRDNEQ29tcGlsZXIgRExMIGFzc29jaWF0ZWQgd2l0
aCB0aGUgRGlyZWN0M0QgdmVyc2lvbiBBTkdMRSB3YXMgYnVpbHQgd2l0aC4KLSAgICBtRDNkQ29t
cGlsZXJNb2R1bGUgPSBMb2FkTGlicmFyeShEM0RDT01QSUxFUl9ETEwpOwogI2VuZGlmICAvLyBB
TkdMRV9QUkVMT0FERURfRDNEQ09NUElMRVJfTU9EVUxFX05BTUVTCiAKICAgICBpZiAoIW1EM2RD
b21waWxlck1vZHVsZSkKICAgICB7CisgICAgICAgIC8vIExvYWQgdGhlIHZlcnNpb24gb2YgdGhl
IEQzRENvbXBpbGVyIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlIERpcmVjdDNEIHZlcnNpb24gQU5H
TEUgd2FzIGJ1aWx0IHdpdGguCisgICAgICAgIG1EM2RDb21waWxlck1vZHVsZSA9IExvYWRMaWJy
YXJ5KEQzRENPTVBJTEVSX0RMTCk7CisgICAgfQorCisgICAgaWYgKCFtRDNkQ29tcGlsZXJNb2R1
bGUpCisgICAgewogICAgICAgICBFUlIoIk5vIEQzRCBjb21waWxlciBtb2R1bGUgZm91bmQgLSBh
Ym9ydGluZyFcbiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
UmVuZGVyZXIuaAkocmV2aXNpb24gMTU5MDkwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2
ICs5MywxMiBAQCBlbnVtIFNoYWRlclR5cGUKICAgICBTSEFERVJfR0VPTUVUUlkKIH07CiAKK2Vu
dW0gRDNEV29ya2Fyb3VuZFR5cGUKK3sKKyAgICBBTkdMRV9EM0RfV09SS0FST1VORF9OT05FLAor
ICAgIEFOR0xFX0QzRF9XT1JLQVJPVU5EX1NNM19PUFRJTUlaRVIKK307CisKIGNsYXNzIFJlbmRl
cmVyCiB7CiAgIHB1YmxpYzoKQEAgLTIwNyw3ICsyMTMsNyBAQCBjbGFzcyBSZW5kZXJlcgogCiAg
ICAgLy8gU2hhZGVyIG9wZXJhdGlvbnMKICAgICB2aXJ0dWFsIFNoYWRlckV4ZWN1dGFibGUgKmxv
YWRFeGVjdXRhYmxlKGNvbnN0IHZvaWQgKmZ1bmN0aW9uLCBzaXplX3QgbGVuZ3RoLCByeDo6U2hh
ZGVyVHlwZSB0eXBlKSA9IDA7Ci0gICAgdmlydHVhbCBTaGFkZXJFeGVjdXRhYmxlICpjb21waWxl
VG9FeGVjdXRhYmxlKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBjaGFyICpzaGFkZXJITFNM
LCByeDo6U2hhZGVyVHlwZSB0eXBlKSA9IDA7CisgICAgdmlydHVhbCBTaGFkZXJFeGVjdXRhYmxl
ICpjb21waWxlVG9FeGVjdXRhYmxlKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBjaGFyICpz
aGFkZXJITFNMLCByeDo6U2hhZGVyVHlwZSB0eXBlLCBEM0RXb3JrYXJvdW5kVHlwZSB3b3JrYXJv
dW5kKSA9IDA7CiAKICAgICAvLyBJbWFnZSBvcGVyYXRpb25zCiAgICAgdmlydHVhbCBJbWFnZSAq
Y3JlYXRlSW1hZ2UoKSA9IDA7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbjkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluOS5jcHAJKHJldmlz
aW9uIDE1OTA5MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvU3dhcENoYWluOS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDkgQEAgdm9p
ZCBTd2FwQ2hhaW45OjpyZWxlYXNlKCkKIAogc3RhdGljIERXT1JEIGNvbnZlcnRJbnRlcnZhbChF
R0xpbnQgaW50ZXJ2YWwpCiB7CisjaWYgQU5HTEVfRk9SQ0VfVlNZTkNfT0ZGCisgICAgcmV0dXJu
IEQzRFBSRVNFTlRfSU5URVJWQUxfSU1NRURJQVRFOworI2Vsc2UKICAgICBzd2l0Y2goaW50ZXJ2
YWwpCiAgICAgewogICAgICAgY2FzZSAwOiByZXR1cm4gRDNEUFJFU0VOVF9JTlRFUlZBTF9JTU1F
RElBVEU7CkBAIC04Miw2ICs4NSw3IEBAIHN0YXRpYyBEV09SRCBjb252ZXJ0SW50ZXJ2YWwoRUdM
aW50IGludGUKICAgICB9CiAKICAgICByZXR1cm4gRDNEUFJFU0VOVF9JTlRFUlZBTF9ERUZBVUxU
OworI2VuZGlmCiB9CiAKIEVHTGludCBTd2FwQ2hhaW45OjpyZXNpemUoaW50IGJhY2tidWZmZXJX
aWR0aCwgaW50IGJhY2tidWZmZXJIZWlnaHQpCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbjExLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbjEx
LmNwcAkocmV2aXNpb24gMTU5MDkwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW4xMS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3NSw2
ICsyNzUsNyBAQCBFR0xpbnQgU3dhcENoYWluMTE6OnJlc2V0T2Zmc2NyZWVuVGV4dHVyCiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gb2Zm
c2NyZWVuVGV4dHVyZVJlc291cmNlLT5HZXRTaGFyZWRIYW5kbGUoJm1TaGFyZUhhbmRsZSk7Cisg
ICAgICAgICAgICAgICAgb2Zmc2NyZWVuVGV4dHVyZVJlc291cmNlLT5SZWxlYXNlKCk7CiAKICAg
ICAgICAgICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgICAgICAgICAgICAgewpAQCAt
NDY0LDE4ICs0NjUsNiBAQCBFR0xpbnQgU3dhcENoYWluMTE6OnJlc2V0KGludCBiYWNrYnVmZmVy
CiAKICAgICBpZiAobVdpbmRvdykKICAgICB7Ci0gICAgICAgIC8vIFdlIGNhbm5vdCBjcmVhdGUg
YSBzd2FwIGNoYWluIGZvciBhbiBIV05EIHRoYXQgaXMgb3duZWQgYnkgYSBkaWZmZXJlbnQgcHJv
Y2VzcwotICAgICAgICBEV09SRCBjdXJyZW50UHJvY2Vzc0lkID0gR2V0Q3VycmVudFByb2Nlc3NJ
ZCgpOwotICAgICAgICBEV09SRCB3bmRQcm9jZXNzSWQ7Ci0gICAgICAgIEdldFdpbmRvd1RocmVh
ZFByb2Nlc3NJZChtV2luZG93LCAmd25kUHJvY2Vzc0lkKTsKLQotICAgICAgICBpZiAoY3VycmVu
dFByb2Nlc3NJZCAhPSB3bmRQcm9jZXNzSWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEVSUigi
Q291bGQgbm90IGNyZWF0ZSBzd2FwIGNoYWluLCB3aW5kb3cgb3duZWQgYnkgZGlmZmVyZW50IHBy
b2Nlc3MiKTsKLSAgICAgICAgICAgIHJlbGVhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBFR0xf
QkFEX05BVElWRV9XSU5ET1c7Ci0gICAgICAgIH0KLQogICAgICAgICBJRFhHSUZhY3RvcnkgKmZh
Y3RvcnkgPSBtUmVuZGVyZXItPmdldER4Z2lGYWN0b3J5KCk7CiAKICAgICAgICAgRFhHSV9TV0FQ
X0NIQUlOX0RFU0Mgc3dhcENoYWluRGVzYyA9IHswfTsKQEAgLTUwNyw3ICs0OTYsMjEgQEAgRUdM
aW50IFN3YXBDaGFpbjExOjpyZXNldChpbnQgYmFja2J1ZmZlcgogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBFR0xf
QkFEX0FMTE9DOworICAgICAgICAgICAgICAgIC8vIFdlIGNhbm5vdCBjcmVhdGUgYSBzd2FwIGNo
YWluIGZvciBhbiBIV05EIHRoYXQgaXMgb3duZWQgYnkgYSBkaWZmZXJlbnQgcHJvY2VzcyBvbiBz
b21lIHZlcnNpb25zIG9mCisgICAgICAgICAgICAgICAgLy8gd2luZG93cworICAgICAgICAgICAg
ICAgIERXT1JEIGN1cnJlbnRQcm9jZXNzSWQgPSBHZXRDdXJyZW50UHJvY2Vzc0lkKCk7CisgICAg
ICAgICAgICAgICAgRFdPUkQgd25kUHJvY2Vzc0lkOworICAgICAgICAgICAgICAgIEdldFdpbmRv
d1RocmVhZFByb2Nlc3NJZChtV2luZG93LCAmd25kUHJvY2Vzc0lkKTsKKworICAgICAgICAgICAg
ICAgIGlmIChjdXJyZW50UHJvY2Vzc0lkICE9IHduZFByb2Nlc3NJZCkKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0ZSBzd2FwIGNoYWlu
LCB3aW5kb3cgb3duZWQgYnkgZGlmZmVyZW50IHByb2Nlc3MiKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEVHTF9CQURfTkFUSVZFX1dJTkRPVzsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEVHTF9CQURfQUxMT0M7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKQEAgLTY2Nyw3ICs2NzAsMTIgQEAgRUdMaW50IFN3YXBDaGFpbjExOjpzd2Fw
UmVjdChFR0xpbnQgeCwgRQogCiAgICAgLy8gRHJhdwogICAgIGRldmljZUNvbnRleHQtPkRyYXco
NCwgMCk7CisKKyNpZiBBTkdMRV9GT1JDRV9WU1lOQ19PRkYKKyAgICByZXN1bHQgPSBtU3dhcENo
YWluLT5QcmVzZW50KDAsIDApOworI2Vsc2UKICAgICByZXN1bHQgPSBtU3dhcENoYWluLT5QcmVz
ZW50KG1Td2FwSW50ZXJ2YWwsIDApOworI2VuZGlmCiAKICAgICBpZiAocmVzdWx0ID09IERYR0lf
RVJST1JfREVWSUNFX1JFTU9WRUQpCiAgICAgewpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbi5oCShy
ZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL1N3YXBDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw2ICsxMiwxMCBAQAog
CiAjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKIAorI2lmICFkZWZpbmVkKEFOR0xFX0ZP
UkNFX1ZTWU5DX09GRikKKyNkZWZpbmUgQU5HTEVfRk9SQ0VfVlNZTkNfT0ZGIDAKKyNlbmRpZgor
CiBuYW1lc3BhY2UgcngKIHsKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZTExLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdl
MTEuY3BwCShyZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdlMTEuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02OSw3ICs2OSw2IEBAIGJvb2wgVGV4dHVyZVN0b3JhZ2UxMTo6SXNUZXh0dXJlRm9ybWF0UmUK
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk06CiAgICAgICBjYXNlIERYR0lf
Rk9STUFUX0E4X1VOT1JNOgogICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxP
QVQ6Ci0gICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVDoKICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FUOgogICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9C
OEc4UjhBOF9VTk9STToKICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhfVU5PUk06CkBAIC04MCw2
ICs3OSw3IEBAIGJvb2wgVGV4dHVyZVN0b3JhZ2UxMTo6SXNUZXh0dXJlRm9ybWF0UmUKICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfQkMxX1VOT1JNOgogICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJf
VU5PUk06IAogICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzNfVU5PUk06CisgICAgICBjYXNlIERY
R0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVDogLy8gbm90IHJlbmRlcmFibGUgb24gYWxsIGRldmlj
ZXMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgZGVmYXVsdDoKICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKQEAgLTE4NywxNSArMTg3LDYgQEAgdm9pZCBUZXh0dXJlU3RvcmFnZTExOjpnZW5l
cmF0ZU1pcG1hcExheQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0UlRW
LCBkZXN0QXJlYSwgZGVzdC0+Z2V0V2lkdGgoKSwgZGVzdC0+Z2V0SGVpZ2h0KCksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEpOwogICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKHNvdXJjZVNSVikKLSAgICAgICAgewotICAgICAgICAgICAgc291cmNlU1JWLT5SZWxl
YXNlKCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGRlc3RSVFYpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGRlc3RSVFYtPlJlbGVhc2UoKTsKLSAgICAgICAgfQogICAgIH0KIH0KIApAQCAtNTU4
LDcgKzU0OSw3IEBAIFJlbmRlclRhcmdldCAqVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjpnZXQKIAog
ICAgICAgICAgICAgRDNEMTFfU0hBREVSX1JFU09VUkNFX1ZJRVdfREVTQyBzcnZEZXNjOwogICAg
ICAgICAgICAgc3J2RGVzYy5Gb3JtYXQgPSBtU2hhZGVyUmVzb3VyY2VGb3JtYXQ7Ci0gICAgICAg
ICAgICBzcnZEZXNjLlZpZXdEaW1lbnNpb24gPSBEM0QxMV9TUlZfRElNRU5TSU9OX1RFWFRVUkVD
VUJFOworICAgICAgICAgICAgc3J2RGVzYy5WaWV3RGltZW5zaW9uID0gRDNEMTFfU1JWX0RJTUVO
U0lPTl9URVhUVVJFMkRBUlJBWTsgLy8gV2lsbCBiZSB1c2VkIHdpdGggVGV4dHVyZTJEIHNhbXBs
ZXIsIG5vdCBUZXh0dXJlQ3ViZQogICAgICAgICAgICAgc3J2RGVzYy5UZXh0dXJlMkRBcnJheS5N
b3N0RGV0YWlsZWRNaXAgPSBsZXZlbDsKICAgICAgICAgICAgIHNydkRlc2MuVGV4dHVyZTJEQXJy
YXkuTWlwTGV2ZWxzID0gMTsKICAgICAgICAgICAgIHNydkRlc2MuVGV4dHVyZTJEQXJyYXkuRmly
c3RBcnJheVNsaWNlID0gZmFjZUlkeDsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyOS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXI5
LmNwcAkocmV2aXNpb24gMTU5MDkwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXI5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUs
NyArOTUsMTQgQEAgYm9vbCBWZXJ0ZXhCdWZmZXI5OjpzdG9yZVZlcnRleEF0dHJpYnV0ZQogICAg
ICAgICBEV09SRCBsb2NrRmxhZ3MgPSBtRHluYW1pY1VzYWdlID8gRDNETE9DS19OT09WRVJXUklU
RSA6IDA7CiAKICAgICAgICAgdm9pZCAqbWFwUHRyID0gTlVMTDsKLSAgICAgICAgSFJFU1VMVCBy
ZXN1bHQgPSBtVmVydGV4QnVmZmVyLT5Mb2NrKG9mZnNldCwgc3BhY2VSZXF1aXJlZChhdHRyaWIs
IGNvdW50LCBpbnN0YW5jZXMpLCAmbWFwUHRyLCBsb2NrRmxhZ3MpOworCisgICAgICAgIHVuc2ln
bmVkIGludCBtYXBTaXplOworICAgICAgICBpZiAoIXNwYWNlUmVxdWlyZWQoYXR0cmliLCBjb3Vu
dCwgaW5zdGFuY2VzLCAmbWFwU2l6ZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbVZlcnRleEJ1ZmZl
ci0+TG9jayhvZmZzZXQsIG1hcFNpemUsICZtYXBQdHIsIGxvY2tGbGFncyk7CiAKICAgICAgICAg
aWYgKEZBSUxFRChyZXN1bHQpKQogICAgICAgICB7CkBAIC0xNjcsMTkgKzE3NCwyMSBAQCBib29s
IFZlcnRleEJ1ZmZlcjk6OnN0b3JlUmF3RGF0YShjb25zdCB2CiAgICAgfQogfQogCi11bnNpZ25l
ZCBpbnQgVmVydGV4QnVmZmVyOTo6Z2V0U3BhY2VSZXF1aXJlZChjb25zdCBnbDo6VmVydGV4QXR0
cmlidXRlICZhdHRyaWIsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKSBjb25zdAor
Ym9vbCBWZXJ0ZXhCdWZmZXI5OjpnZXRTcGFjZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhBdHRy
aWJ1dGUgJmF0dHJpYiwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpvdXRTcGFjZVJlcXVp
cmVkKSBjb25zdAogewotICAgIHJldHVybiBzcGFjZVJlcXVpcmVkKGF0dHJpYiwgY291bnQsIGlu
c3RhbmNlcyk7CisgICAgcmV0dXJuIHNwYWNlUmVxdWlyZWQoYXR0cmliLCBjb3VudCwgaW5zdGFu
Y2VzLCBvdXRTcGFjZVJlcXVpcmVkKTsKIH0KIAogYm9vbCBWZXJ0ZXhCdWZmZXI5OjpyZXF1aXJl
c0NvbnZlcnNpb24oY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliKSBjb25zdAogewot
ICAgIHJldHVybiBmb3JtYXRDb252ZXJ0ZXIoYXR0cmliKS5pZGVudGl0eTsKKyAgICByZXR1cm4g
IWZvcm1hdENvbnZlcnRlcihhdHRyaWIpLmlkZW50aXR5OwogfQogCiB1bnNpZ25lZCBpbnQgVmVy
dGV4QnVmZmVyOTo6Z2V0VmVydGV4U2l6ZShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRy
aWIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNwYWNlUmVxdWlyZWQoYXR0cmliLCAxLCAwKTsKKyAg
ICB1bnNpZ25lZCBpbnQgc3BhY2VSZXF1aXJlZDsKKyAgICByZXR1cm4gZ2V0U3BhY2VSZXF1aXJl
ZChhdHRyaWIsIDEsIDAsICZzcGFjZVJlcXVpcmVkKSA/IHNwYWNlUmVxdWlyZWQgOiAwOwogfQog
CiBEM0RERUNMVFlQRSBWZXJ0ZXhCdWZmZXI5OjpnZXREZWNsVHlwZShjb25zdCBnbDo6VmVydGV4
QXR0cmlidXRlICZhdHRyaWIpIGNvbnN0CkBAIC00NjksMTcgKzQ3OCw1MiBAQCBjb25zdCBWZXJ0
ZXhCdWZmZXI5OjpGb3JtYXRDb252ZXJ0ZXIgJlZlCiAgICAgcmV0dXJuIG1Gb3JtYXRDb252ZXJ0
ZXJzW3R5cGVJbmRleChhdHRyaWJ1dGUubVR5cGUpXVthdHRyaWJ1dGUubU5vcm1hbGl6ZWRdW2F0
dHJpYnV0ZS5tU2l6ZSAtIDFdOwogfQogCi11bnNpZ25lZCBpbnQgVmVydGV4QnVmZmVyOTo6c3Bh
Y2VSZXF1aXJlZChjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsIHN0ZDo6c2l6ZV90
IGNvdW50LCBHTHNpemVpIGluc3RhbmNlcykKK2Jvb2wgVmVydGV4QnVmZmVyOTo6c3BhY2VSZXF1
aXJlZChjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsIHN0ZDo6c2l6ZV90IGNvdW50
LCBHTHNpemVpIGluc3RhbmNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgKm91dFNwYWNlUmVxdWlyZWQpCiB7CiAgICAgdW5zaWduZWQgaW50IGVsZW1l
bnRTaXplID0gZm9ybWF0Q29udmVydGVyKGF0dHJpYikub3V0cHV0RWxlbWVudFNpemU7CiAKLSAg
ICBpZiAoaW5zdGFuY2VzID09IDAgfHwgYXR0cmliLm1EaXZpc29yID09IDApCisgICAgaWYgKGF0
dHJpYi5tQXJyYXlFbmFibGVkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGVsZW1lbnRTaXplICog
Y291bnQ7CisgICAgICAgIHVuc2lnbmVkIGludCBlbGVtZW50Q291bnQgPSAwOworICAgICAgICBp
ZiAoaW5zdGFuY2VzID09IDAgfHwgYXR0cmliLm1EaXZpc29yID09IDApCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGVsZW1lbnRDb3VudCA9IGNvdW50OworICAgICAgICB9CisgICAgICAgIGVsc2UK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oaW5z
dGFuY2VzKSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6bWF4KCkgLSAoYXR0
cmliLm1EaXZpc29yIC0gMSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gUm91
bmQgdXAKKyAgICAgICAgICAgICAgICBlbGVtZW50Q291bnQgPSAoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgaW50PihpbnN0YW5jZXMpICsgKGF0dHJpYi5tRGl2aXNvciAtIDEpKSAvIGF0dHJpYi5tRGl2
aXNvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBlbGVtZW50Q291bnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGlu
c3RhbmNlcykgLyBhdHRyaWIubURpdmlzb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoZWxlbWVudFNpemUgPD0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBp
bnQ+OjptYXgoKSAvIGVsZW1lbnRDb3VudCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG91
dFNwYWNlUmVxdWlyZWQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgKm91dFNwYWNl
UmVxdWlyZWQgPSBlbGVtZW50U2l6ZSAqIGVsZW1lbnRDb3VudDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgfQogICAgIGVsc2UK
ICAgICB7Ci0gICAgICAgIHJldHVybiBlbGVtZW50U2l6ZSAqICgoaW5zdGFuY2VzICsgYXR0cmli
Lm1EaXZpc29yIC0gMSkgLyBhdHRyaWIubURpdmlzb3IpOworICAgICAgICBjb25zdCB1bnNpZ25l
ZCBpbnQgZWxlbWVudFNpemUgPSA0OworICAgICAgICBpZiAob3V0U3BhY2VSZXF1aXJlZCkKKyAg
ICAgICAgeworICAgICAgICAgICAgKm91dFNwYWNlUmVxdWlyZWQgPSBlbGVtZW50U2l6ZSAqIDQ7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfQogCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1ZlcnRleEJ1ZmZlcjkuaAkocmV2aXNpb24gMTU5MDkwKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXI5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgY2xhc3MgVmVydGV4QnVmZmVyOSA6IHB1YmxpYyBW
ZXJ0ZXhCdWZmZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IG9mZnNldCk7CiAgICAgdmlydHVhbCBib29sIHN0b3JlUmF3RGF0YShjb25zdCB2b2lk
KiBkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSwgdW5zaWduZWQgaW50IG9mZnNldCk7CiAKLSAgICB2
aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRTcGFjZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhBdHRy
aWJ1dGUgJmF0dHJpYiwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBnZXRTcGFjZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1
dGUgJmF0dHJpYiwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMsIHVuc2lnbmVkIGlu
dCAqb3V0U3BhY2VSZXF1aXJlZCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXND
b252ZXJzaW9uKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYikgY29uc3Q7CiAKQEAg
LTgyLDcgKzgyLDggQEAgY2xhc3MgVmVydGV4QnVmZmVyOSA6IHB1YmxpYyBWZXJ0ZXhCdWZmZQog
ICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgdHlwZUluZGV4KEdMZW51bSB0eXBlKTsKICAgICBzdGF0
aWMgY29uc3QgRm9ybWF0Q29udmVydGVyICZmb3JtYXRDb252ZXJ0ZXIoY29uc3QgZ2w6OlZlcnRl
eEF0dHJpYnV0ZSAmYXR0cmlidXRlKTsKIAotICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgc3BhY2VS
ZXF1aXJlZChjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsIHN0ZDo6c2l6ZV90IGNv
dW50LCBHTHNpemVpIGluc3RhbmNlcyk7CisgICAgc3RhdGljIGJvb2wgc3BhY2VSZXF1aXJlZChj
b25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsIHN0ZDo6c2l6ZV90IGNvdW50LCBHTHNp
emVpIGluc3RhbmNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCAqb3V0U3BhY2VSZXF1aXJlZCk7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjExLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRl
eEJ1ZmZlcjExLmNwcAkocmV2aXNpb24gMTU5MDkwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXIxMS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE1MiwxOCArMTUyLDQwIEBAIGJvb2wgVmVydGV4QnVmZmVyMTE6OnN0b3JlUmF3RGF0
YShjb25zdCAKICAgICB9CiB9CiAKLXVuc2lnbmVkIGludCBWZXJ0ZXhCdWZmZXIxMTo6Z2V0U3Bh
Y2VSZXF1aXJlZChjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsIEdMc2l6ZWkgY291
bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBpbnN0YW5jZXMpIGNvbnN0Citib29sIFZlcnRleEJ1ZmZlcjExOjpnZXRTcGFjZVJlcXVpcmVk
KGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xzaXplaSBjb3VudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMsIHVuc2ln
bmVkIGludCAqb3V0U3BhY2VSZXF1aXJlZCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBpbnQgZWxl
bWVudFNpemUgPSBnZXRWZXJ0ZXhDb252ZXJzaW9uKGF0dHJpYikub3V0cHV0RWxlbWVudFNpemU7
CiAKKyAgICB1bnNpZ25lZCBpbnQgZWxlbWVudENvdW50ID0gMDsKICAgICBpZiAoaW5zdGFuY2Vz
ID09IDAgfHwgYXR0cmliLm1EaXZpc29yID09IDApCiAgICAgewotICAgICAgICByZXR1cm4gZWxl
bWVudFNpemUgKiBjb3VudDsKKyAgICAgICAgZWxlbWVudENvdW50ID0gY291bnQ7CiAgICAgfQog
ICAgIGVsc2UKICAgICB7Ci0gICAgICAgIHJldHVybiBlbGVtZW50U2l6ZSAqICgoaW5zdGFuY2Vz
ICsgYXR0cmliLm1EaXZpc29yIC0gMSkgLyBhdHRyaWIubURpdmlzb3IpOworICAgICAgICBpZiAo
c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihpbnN0YW5jZXMpIDwgc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZCBpbnQ+OjptYXgoKSAtIChhdHRyaWIubURpdmlzb3IgLSAxKSkKKyAgICAgICAg
eworICAgICAgICAgICAgLy8gUm91bmQgdXAKKyAgICAgICAgICAgIGVsZW1lbnRDb3VudCA9IChz
dGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGluc3RhbmNlcykgKyAoYXR0cmliLm1EaXZpc29yIC0g
MSkpIC8gYXR0cmliLm1EaXZpc29yOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAg
eworICAgICAgICAgICAgZWxlbWVudENvdW50ID0gaW5zdGFuY2VzIC8gYXR0cmliLm1EaXZpc29y
OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGVsZW1lbnRTaXplIDw9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8dW5zaWduZWQgaW50Pjo6bWF4KCkgLyBlbGVtZW50Q291bnQpCisgICAgeworICAg
ICAgICBpZiAob3V0U3BhY2VSZXF1aXJlZCkKKyAgICAgICAgeworICAgICAgICAgICAgKm91dFNw
YWNlUmVxdWlyZWQgPSBlbGVtZW50U2l6ZSAqIGVsZW1lbnRDb3VudDsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXIxMS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyMTEuaAko
cmV2aXNpb24gMTU5MDkwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXIxMS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYs
MTEgQEAgY2xhc3MgVmVydGV4QnVmZmVyMTEgOiBwdWJsaWMgVmVydGV4QnVmZgogICAgIHN0YXRp
YyBWZXJ0ZXhCdWZmZXIxMSAqbWFrZVZlcnRleEJ1ZmZlcjExKFZlcnRleEJ1ZmZlciAqdmV0ZXhC
dWZmZXIpOwogCiAgICAgdmlydHVhbCBib29sIHN0b3JlVmVydGV4QXR0cmlidXRlcyhjb25zdCBn
bDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsIEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50LCBH
THNpemVpIGluc3RhbmNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBvZmZzZXQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IG9mZnNldCk7CiAgICAgdmlydHVhbCBib29sIHN0b3JlUmF3RGF0YShjb25z
dCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSwgdW5zaWduZWQgaW50IG9mZnNldCk7CiAK
LSAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRTcGFjZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0
ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRTcGFjZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhB
dHRyaWJ1dGUgJmF0dHJpYiwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpvdXRTcGFjZVJlcXVp
cmVkKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0NvbnZlcnNpb24oY29uc3Qg
Z2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliKSBjb25zdDsKIApAQCAtNzAsNCArNzEsNCBAQCBj
bGFzcyBWZXJ0ZXhCdWZmZXIxMSA6IHB1YmxpYyBWZXJ0ZXhCdWZmCiAKIH0KIAotI2VuZGlmIC8v
IExJQkdMRVNWMl9SRU5ERVJFUl9WRVJURVhCVUZGRVIxMV9IXwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfVkVSVEVYQlVGRkVSMTFfSF8K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVy
dGV4QnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlci5jcHAJKHJldmlzaW9uIDE1OTA5MCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVm
ZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcsNDcgKzg3LDc2IEBAIGJvb2wgVmVydGV4QnVm
ZmVySW50ZXJmYWNlOjpkaXNjYXJkKCkKICAgICByZXR1cm4gbVZlcnRleEJ1ZmZlci0+ZGlzY2Fy
ZCgpOwogfQogCi1pbnQgVmVydGV4QnVmZmVySW50ZXJmYWNlOjpzdG9yZVZlcnRleEF0dHJpYnV0
ZXMoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBHTGludCBzdGFydCwgR0xzaXpl
aSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpCitib29sIFZlcnRleEJ1ZmZlckludGVyZmFjZTo6
c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwg
IEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpv
dXRTdHJlYW1PZmZzZXQpCiB7CisgICAgdW5zaWduZWQgaW50IHNwYWNlUmVxdWlyZWQ7CisgICAg
aWYgKCFtVmVydGV4QnVmZmVyLT5nZXRTcGFjZVJlcXVpcmVkKGF0dHJpYiwgY291bnQsIGluc3Rh
bmNlcywgJnNwYWNlUmVxdWlyZWQpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGlmIChtV3JpdGVQb3NpdGlvbiArIHNwYWNlUmVxdWlyZWQgPCBtV3JpdGVQb3Np
dGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICBpZiAoIXJl
c2VydmVTcGFjZShtUmVzZXJ2ZWRTcGFjZSkpCiAgICAgewotICAgICAgICByZXR1cm4gLTE7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgbVJlc2VydmVkU3BhY2UgPSAwOwogCiAg
ICAgaWYgKCFtVmVydGV4QnVmZmVyLT5zdG9yZVZlcnRleEF0dHJpYnV0ZXMoYXR0cmliLCBzdGFy
dCwgY291bnQsIGluc3RhbmNlcywgbVdyaXRlUG9zaXRpb24pKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIC0xOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaW50IG9sZFdyaXRl
UG9zID0gc3RhdGljX2Nhc3Q8aW50PihtV3JpdGVQb3NpdGlvbik7Ci0gICAgbVdyaXRlUG9zaXRp
b24gKz0gbVZlcnRleEJ1ZmZlci0+Z2V0U3BhY2VSZXF1aXJlZChhdHRyaWIsIGNvdW50LCBpbnN0
YW5jZXMpOworICAgIGlmIChvdXRTdHJlYW1PZmZzZXQpCisgICAgeworICAgICAgICAqb3V0U3Ry
ZWFtT2Zmc2V0ID0gbVdyaXRlUG9zaXRpb247CisgICAgfQorCisgICAgbVdyaXRlUG9zaXRpb24g
Kz0gc3BhY2VSZXF1aXJlZDsKIAotICAgIHJldHVybiBvbGRXcml0ZVBvczsKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotaW50IFZlcnRleEJ1ZmZlckludGVyZmFjZTo6c3RvcmVSYXdEYXRhKGNvbnN0
IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGludCBzaXplKQorYm9vbCBWZXJ0ZXhCdWZmZXJJbnRlcmZh
Y2U6OnN0b3JlUmF3RGF0YShjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSwgdW5z
aWduZWQgaW50ICpvdXRTdHJlYW1PZmZzZXQpCiB7CisgICAgaWYgKG1Xcml0ZVBvc2l0aW9uICsg
c2l6ZSA8IG1Xcml0ZVBvc2l0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKwogICAgIGlmICghcmVzZXJ2ZVNwYWNlKG1SZXNlcnZlZFNwYWNlKSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiAtMTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBtUmVzZXJ2
ZWRTcGFjZSA9IDA7CiAKICAgICBpZiAoIW1WZXJ0ZXhCdWZmZXItPnN0b3JlUmF3RGF0YShkYXRh
LCBzaXplLCBtV3JpdGVQb3NpdGlvbikpCiAgICAgewotICAgICAgICByZXR1cm4gLTE7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAob3V0U3RyZWFtT2Zmc2V0KQorICAg
IHsKKyAgICAgICAgKm91dFN0cmVhbU9mZnNldCA9IG1Xcml0ZVBvc2l0aW9uOwogICAgIH0KIAot
ICAgIGludCBvbGRXcml0ZVBvcyA9IHN0YXRpY19jYXN0PGludD4obVdyaXRlUG9zaXRpb24pOwog
ICAgIG1Xcml0ZVBvc2l0aW9uICs9IHNpemU7CiAKLSAgICByZXR1cm4gb2xkV3JpdGVQb3M7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgVmVydGV4QnVmZmVySW50ZXJmYWNlOjpyZXNlcnZl
VmVydGV4U3BhY2UoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlLCBHTHNpemVp
IGNvdW50LCBHTHNpemVpIGluc3RhbmNlcykKIHsKLSAgICB1bnNpZ25lZCBpbnQgcmVxdWlyZWRT
cGFjZSA9IG1WZXJ0ZXhCdWZmZXItPmdldFNwYWNlUmVxdWlyZWQoYXR0cmlidXRlLCBjb3VudCwg
aW5zdGFuY2VzKTsKKyAgICB1bnNpZ25lZCBpbnQgcmVxdWlyZWRTcGFjZTsKKyAgICBpZiAoIW1W
ZXJ0ZXhCdWZmZXItPmdldFNwYWNlUmVxdWlyZWQoYXR0cmlidXRlLCBjb3VudCwgaW5zdGFuY2Vz
LCAmcmVxdWlyZWRTcGFjZSkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQog
CiAgICAgLy8gUHJvdGVjdCBhZ2FpbnN0IGludGVnZXIgb3ZlcmZsb3cKICAgICBpZiAobVJlc2Vy
dmVkU3BhY2UgKyByZXF1aXJlZFNwYWNlIDwgbVJlc2VydmVkU3BhY2UpCkBAIC0xOTUsNyArMjI0
LDcgQEAgU3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlOjp+U3RhdGljVmVydAogewogfQogCi1p
bnQgU3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlOjpsb29rdXBBdHRyaWJ1dGUoY29uc3QgZ2w6
OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlKQorYm9vbCBTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRl
cmZhY2U6Omxvb2t1cEF0dHJpYnV0ZShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWJ1
dGUsIHVuc2lnbmVkIGludCAqb3V0U3RyZWFtT2Zmc2V0KQogewogICAgIGZvciAodW5zaWduZWQg
aW50IGVsZW1lbnQgPSAwOyBlbGVtZW50IDwgbUNhY2hlLnNpemUoKTsgZWxlbWVudCsrKQogICAg
IHsKQEAgLTIwNiwxMiArMjM1LDE2IEBAIGludCBTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6
Omxvb2t1cEEKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1DYWNoZVtlbGVtZW50XS5hdHRy
aWJ1dGVPZmZzZXQgPT0gYXR0cmlidXRlLm1PZmZzZXQgJSBhdHRyaWJ1dGUuc3RyaWRlKCkpCiAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1DYWNoZVtlbGVtZW50XS5zdHJl
YW1PZmZzZXQ7CisgICAgICAgICAgICAgICAgaWYgKG91dFN0cmVhbU9mZnNldCkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICpvdXRTdHJlYW1PZmZzZXQgPSBtQ2FjaGVb
ZWxlbWVudF0uc3RyZWFtT2Zmc2V0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIHJl
dHVybiAtMTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgU3RhdGljVmVydGV4QnVmZmVy
SW50ZXJmYWNlOjpyZXNlcnZlU3BhY2UodW5zaWduZWQgaW50IHNpemUpCkBAIC0yMzMsMTMgKzI2
NiwyNyBAQCBib29sIFN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6cmVzZXJ2CiAgICAgfQog
fQogCi1pbnQgU3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlOjpzdG9yZVZlcnRleEF0dHJpYnV0
ZXMoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBHTGludCBzdGFydCwgR0xzaXpl
aSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpCitib29sIFN0YXRpY1ZlcnRleEJ1ZmZlckludGVy
ZmFjZTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0
dHJpYiwgR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgKm91dFN0cmVhbU9mZnNldCkKIHsKLSAgICBpbnQgYXR0cmlidXRlT2Zmc2V0ID0g
YXR0cmliLm1PZmZzZXQgJSBhdHRyaWIuc3RyaWRlKCk7Ci0gICAgVmVydGV4RWxlbWVudCBlbGVt
ZW50ID0geyBhdHRyaWIubVR5cGUsIGF0dHJpYi5tU2l6ZSwgYXR0cmliLnN0cmlkZSgpLCBhdHRy
aWIubU5vcm1hbGl6ZWQsIGF0dHJpYnV0ZU9mZnNldCwgZ2V0V3JpdGVQb3NpdGlvbigpIH07Ci0g
ICAgbUNhY2hlLnB1c2hfYmFjayhlbGVtZW50KTsKKyAgICB1bnNpZ25lZCBpbnQgc3RyZWFtT2Zm
c2V0OworICAgIGlmIChWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OnN0b3JlVmVydGV4QXR0cmlidXRl
cyhhdHRyaWIsIHN0YXJ0LCBjb3VudCwgaW5zdGFuY2VzLCAmc3RyZWFtT2Zmc2V0KSkKKyAgICB7
CisgICAgICAgIGludCBhdHRyaWJ1dGVPZmZzZXQgPSBhdHRyaWIubU9mZnNldCAlIGF0dHJpYi5z
dHJpZGUoKTsKKyAgICAgICAgVmVydGV4RWxlbWVudCBlbGVtZW50ID0geyBhdHRyaWIubVR5cGUs
IGF0dHJpYi5tU2l6ZSwgYXR0cmliLnN0cmlkZSgpLCBhdHRyaWIubU5vcm1hbGl6ZWQsIGF0dHJp
YnV0ZU9mZnNldCwgc3RyZWFtT2Zmc2V0IH07CisgICAgICAgIG1DYWNoZS5wdXNoX2JhY2soZWxl
bWVudCk7CiAKLSAgICByZXR1cm4gVmVydGV4QnVmZmVySW50ZXJmYWNlOjpzdG9yZVZlcnRleEF0
dHJpYnV0ZXMoYXR0cmliLCBzdGFydCwgY291bnQsIGluc3RhbmNlcyk7CisgICAgICAgIGlmIChv
dXRTdHJlYW1PZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgICpvdXRTdHJlYW1PZmZzZXQg
PSBzdHJlYW1PZmZzZXQ7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIH0KIAogfQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0
ZXhCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlci5oCShyZXZpc2lvbiAxNTkwOTApCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw4IEBAIGNsYXNzIFZlcnRleEJ1ZmZlcgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMsIHVu
c2lnbmVkIGludCBvZmZzZXQpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3RvcmVSYXdEYXRhKGNv
bnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGludCBzaXplLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KSA9
IDA7CiAKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRTcGFjZVJlcXVpcmVkKGNvbnN0IGds
OjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGdldFNwYWNlUmVxdWlyZWQoY29uc3QgZ2w6OlZlcnRleEF0dHJp
YnV0ZSAmYXR0cmliLCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKm91dFNwYWNlUmVxdWlyZWQp
IGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0NvbnZlcnNpb24oY29uc3Qg
Z2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliKSBjb25zdCA9IDA7CiAKQEAgLTY3LDggKzY3LDkg
QEAgY2xhc3MgVmVydGV4QnVmZmVySW50ZXJmYWNlCiAKICAgICB1bnNpZ25lZCBpbnQgZ2V0U2Vy
aWFsKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGludCBzdG9yZVZlcnRleEF0dHJpYnV0ZXMoY29u
c3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBHTGludCBzdGFydCwgR0xzaXplaSBjb3Vu
dCwgR0xzaXplaSBpbnN0YW5jZXMpOwotICAgIHZpcnR1YWwgaW50IHN0b3JlUmF3RGF0YShjb25z
dCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSk7CisgICAgdmlydHVhbCBib29sIHN0b3Jl
VmVydGV4QXR0cmlidXRlcyhjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsIEdMaW50
IHN0YXJ0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpvdXRTdHJlYW1PZmZzZXQpOwor
ICAgIHZpcnR1YWwgYm9vbCBzdG9yZVJhd0RhdGEoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQg
aW50IHNpemUsIHVuc2lnbmVkIGludCAqb3V0U3RyZWFtT2Zmc2V0KTsKIAogICAgIFZlcnRleEJ1
ZmZlciogZ2V0VmVydGV4QnVmZmVyKCkgY29uc3Q7CiAKQEAgLTExMCwxMCArMTExLDEwIEBAIGNs
YXNzIFN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZSA6IHB1YmwKICAgICBleHBsaWNpdCBTdGF0
aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2Uocng6OlJlbmRlcmVyICpyZW5kZXJlcik7CiAgICAgflN0
YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZSgpOwogCi0gICAgaW50IHN0b3JlVmVydGV4QXR0cmli
dXRlcyhjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsIEdMaW50IHN0YXJ0LCBHTHNp
emVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcyk7CisgICAgYm9vbCBzdG9yZVZlcnRleEF0dHJp
YnV0ZXMoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBHTGludCBzdGFydCwgR0xz
aXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50ICpvdXRTdHJlYW1PZmZzZXQpOwogCi0gICAgLy8gUmV0dXJucyB0
aGUgb2Zmc2V0IGludG8gdGhlIHZlcnRleCBidWZmZXIsIG9yIC0xIGlmIG5vdCBmb3VuZAotICAg
IGludCBsb29rdXBBdHRyaWJ1dGUoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRl
KTsKKyAgICBib29sIGxvb2t1cEF0dHJpYnV0ZShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZh
dHRyaWJ1dGUsIHVuc2lnbmVkIGludCogb3V0U3RyZWFtT2Zmc2V0KTsKIAogICBwcm90ZWN0ZWQ6
CiAgICAgYm9vbCByZXNlcnZlU3BhY2UodW5zaWduZWQgaW50IHNpemUpOwpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhEYXRhTWFuYWdl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9WZXJ0ZXhEYXRhTWFuYWdlci5jcHAJKHJldmlzaW9uIDE1OTA5MCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4RGF0YU1h
bmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMiArMjYsMzIgQEAgbmFtZXNwYWNlCiBu
YW1lc3BhY2UgcngKIHsKIAotc3RhdGljIGludCBlbGVtZW50c0luQnVmZmVyKGNvbnN0IGdsOjpW
ZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSwgaW50IHNpemUpCitzdGF0aWMgaW50IGVsZW1lbnRz
SW5CdWZmZXIoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlLCB1bnNpZ25lZCBp
bnQgc2l6ZSkKIHsKLSAgICBpbnQgc3RyaWRlID0gYXR0cmlidXRlLnN0cmlkZSgpOworICAgIC8v
IFNpemUgY2Fubm90IGJlIGxhcmdlciB0aGFuIGEgR0xzaXplaQorICAgIGlmIChzaXplID4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgaW50PihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKSkK
KyAgICB7CisgICAgICAgIHNpemUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpOworICAgIH0KKworICAgIEdMc2l6ZWkgc3RyaWRlID0g
YXR0cmlidXRlLnN0cmlkZSgpOwogICAgIHJldHVybiAoc2l6ZSAtIGF0dHJpYnV0ZS5tT2Zmc2V0
ICUgc3RyaWRlICsgKHN0cmlkZSAtIGF0dHJpYnV0ZS50eXBlU2l6ZSgpKSkgLyBzdHJpZGU7CiB9
CiAKK3N0YXRpYyBpbnQgU3RyZWFtaW5nQnVmZmVyRWxlbWVudENvdW50KGNvbnN0IGdsOjpWZXJ0
ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSwgaW50IHZlcnRleERyYXdDb3VudCwgaW50IGluc3RhbmNl
RHJhd0NvdW50KQoreworICAgIC8vIEZvciBpbnN0YW5jZWQgcmVuZGVyaW5nLCB3ZSBkcmF3ICJp
bnN0YW5jZURyYXdDb3VudCIgc2V0cyBvZiAidmVydGV4RHJhd0NvdW50IiB2ZXJ0aWNlcy4KKyAg
ICAvLworICAgIC8vIEEgdmVydGV4IGF0dHJpYnV0ZSB3aXRoIGEgcG9zaXRpdmUgZGl2aXNvciBs
b2FkcyBvbmUgaW5zdGFuY2VkIHZlcnRleCBmb3IgZXZlcnkgc2V0IG9mCisgICAgLy8gbm9uLWlu
c3RhbmNlZCB2ZXJ0aWNlcywgYW5kIHRoZSBpbnN0YW5jZWQgdmVydGV4IGluZGV4IGFkdmFuY2Vz
IG9uY2UgZXZlcnkgIm1EaXZpc29yIiBpbnN0YW5jZXMuCisgICAgaWYgKGluc3RhbmNlRHJhd0Nv
dW50ID4gMCAmJiBhdHRyaWJ1dGUubURpdmlzb3IgPiAwKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGluc3RhbmNlRHJhd0NvdW50IC8gYXR0cmlidXRlLm1EaXZpc29yOworICAgIH0KKworICAgIHJl
dHVybiB2ZXJ0ZXhEcmF3Q291bnQ7Cit9CisKIFZlcnRleERhdGFNYW5hZ2VyOjpWZXJ0ZXhEYXRh
TWFuYWdlcihSZW5kZXJlciAqcmVuZGVyZXIpIDogbVJlbmRlcmVyKHJlbmRlcmVyKQogewogICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsgaSsrKQpAQCAtOTIs
NyArMTEyLDcgQEAgR0xlbnVtIFZlcnRleERhdGFNYW5hZ2VyOjpwcmVwYXJlVmVydGV4RAogICAg
ICAgICAgICAgZ2w6OkJ1ZmZlciAqYnVmZmVyID0gYXR0cmlic1tpXS5tQm91bmRCdWZmZXIuZ2V0
KCk7CiAgICAgICAgICAgICBTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UgKnN0YXRpY0J1ZmZl
ciA9IGJ1ZmZlciA/IGJ1ZmZlci0+Z2V0U3RhdGljVmVydGV4QnVmZmVyKCkgOiBOVUxMOwogCi0g
ICAgICAgICAgICBpZiAoc3RhdGljQnVmZmVyICYmIHN0YXRpY0J1ZmZlci0+Z2V0QnVmZmVyU2l6
ZSgpID4gMCAmJiBzdGF0aWNCdWZmZXItPmxvb2t1cEF0dHJpYnV0ZShhdHRyaWJzW2ldKSA9PSAt
MSAmJgorICAgICAgICAgICAgaWYgKHN0YXRpY0J1ZmZlciAmJiBzdGF0aWNCdWZmZXItPmdldEJ1
ZmZlclNpemUoKSA+IDAgJiYgIXN0YXRpY0J1ZmZlci0+bG9va3VwQXR0cmlidXRlKGF0dHJpYnNb
aV0sIE5VTEwpICYmCiAgICAgICAgICAgICAgICAgIWRpcmVjdFN0b3JhZ2VQb3NzaWJsZShzdGF0
aWNCdWZmZXIsIGF0dHJpYnNbaV0pKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGJ1
ZmZlci0+aW52YWxpZGF0ZVN0YXRpY0RhdGEoKTsKQEAgLTEyNCw3ICsxNDQsMTYgQEAgR0xlbnVt
IFZlcnRleERhdGFNYW5hZ2VyOjpwcmVwYXJlVmVydGV4RAogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBpZiAoIW1TdHJlYW1pbmdCdWZmZXItPnJlc2VydmVWZXJ0ZXhTcGFjZShhdHRyaWJzW2ldLCBj
b3VudCwgaW5zdGFuY2VzKSkKKyAgICAgICAgICAgICAgICAgICAgaW50IHRvdGFsQ291bnQgPSBT
dHJlYW1pbmdCdWZmZXJFbGVtZW50Q291bnQoYXR0cmlic1tpXSwgY291bnQsIGluc3RhbmNlcyk7
CisKKyAgICAgICAgICAgICAgICAgICAgLy8gVW5kZWZpbmVkIGJlaGF2aW91cjoKKyAgICAgICAg
ICAgICAgICAgICAgLy8gV2UgY2FuIHJldHVybiBJTlZBTElEX09QRVJBVElPTiBpZiBvdXIgdmVy
dGV4IGF0dHJpYnV0ZSBkb2VzIG5vdCBoYXZlIGVub3VnaCBiYWNraW5nIGRhdGEuCisgICAgICAg
ICAgICAgICAgICAgIGlmIChidWZmZXIgJiYgZWxlbWVudHNJbkJ1ZmZlcihhdHRyaWJzW2ldLCBi
dWZmZXItPnNpemUoKSkgPCB0b3RhbENvdW50KQorICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfSU5WQUxJRF9PUEVSQVRJT047CisgICAgICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpZiAoIW1TdHJlYW1pbmdCdWZm
ZXItPnJlc2VydmVWZXJ0ZXhTcGFjZShhdHRyaWJzW2ldLCB0b3RhbENvdW50LCBpbnN0YW5jZXMp
KQogICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
R0xfT1VUX09GX01FTU9SWTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTU1LDcgKzE4NCw3
IEBAIEdMZW51bSBWZXJ0ZXhEYXRhTWFuYWdlcjo6cHJlcGFyZVZlcnRleEQKICAgICAgICAgICAg
ICAgICBCdWZmZXJTdG9yYWdlICpzdG9yYWdlID0gYnVmZmVyID8gYnVmZmVyLT5nZXRTdG9yYWdl
KCkgOiBOVUxMOwogICAgICAgICAgICAgICAgIGJvb2wgZGlyZWN0U3RvcmFnZSA9IGRpcmVjdFN0
b3JhZ2VQb3NzaWJsZSh2ZXJ0ZXhCdWZmZXIsIGF0dHJpYnNbaV0pOwogCi0gICAgICAgICAgICAg
ICAgc3RkOjpzaXplX3Qgc3RyZWFtT2Zmc2V0ID0gLTE7CisgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IHN0cmVhbU9mZnNldCA9IDA7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG91
dHB1dEVsZW1lbnRTaXplID0gMDsKIAogICAgICAgICAgICAgICAgIGlmIChkaXJlY3RTdG9yYWdl
KQpAQCAtMTY2LDM3ICsxOTUsNDAgQEAgR0xlbnVtIFZlcnRleERhdGFNYW5hZ2VyOjpwcmVwYXJl
VmVydGV4RAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIGlmIChzdGF0
aWNCdWZmZXIpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdHJlYW1P
ZmZzZXQgPSBzdGF0aWNCdWZmZXItPmxvb2t1cEF0dHJpYnV0ZShhdHRyaWJzW2ldKTsKLSAgICAg
ICAgICAgICAgICAgICAgb3V0cHV0RWxlbWVudFNpemUgPSBzdGF0aWNCdWZmZXItPmdldFZlcnRl
eEJ1ZmZlcigpLT5nZXRTcGFjZVJlcXVpcmVkKGF0dHJpYnNbaV0sIDEsIDApOworICAgICAgICAg
ICAgICAgICAgICBpZiAoIXN0YXRpY0J1ZmZlci0+Z2V0VmVydGV4QnVmZmVyKCktPmdldFNwYWNl
UmVxdWlyZWQoYXR0cmlic1tpXSwgMSwgMCwgJm91dHB1dEVsZW1lbnRTaXplKSkKKyAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX09VVF9PRl9N
RU1PUlk7CisgICAgICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICBpZiAo
c3RyZWFtT2Zmc2V0ID09IC0xKQorICAgICAgICAgICAgICAgICAgICBpZiAoIXN0YXRpY0J1ZmZl
ci0+bG9va3VwQXR0cmlidXRlKGF0dHJpYnNbaV0sICZzdHJlYW1PZmZzZXQpKQogICAgICAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSBlbnRp
cmUgYnVmZmVyCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdG90YWxDb3VudCA9IGVsZW1l
bnRzSW5CdWZmZXIoYXR0cmlic1tpXSwgc3RvcmFnZS0+Z2V0U2l6ZSgpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBzdGFydEluZGV4ID0gYXR0cmlic1tpXS5tT2Zmc2V0IC8gYXR0cmli
c1tpXS5zdHJpZGUoKTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtT2Zmc2V0ID0g
c3RhdGljQnVmZmVyLT5zdG9yZVZlcnRleEF0dHJpYnV0ZXMoYXR0cmlic1tpXSwgLXN0YXJ0SW5k
ZXgsIHRvdGFsQ291bnQsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdGF0aWNC
dWZmZXItPnN0b3JlVmVydGV4QXR0cmlidXRlcyhhdHRyaWJzW2ldLCAtc3RhcnRJbmRleCwgdG90
YWxDb3VudCwgMCwgJnN0cmVhbU9mZnNldCkpCisgICAgICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX09VVF9PRl9NRU1PUlk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgICAgICAgICBpZiAoc3RyZWFtT2Zmc2V0ICE9IC0xKQorICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgZmlyc3RFbGVtZW50T2Zmc2V0ID0gKGF0dHJpYnNbaV0ubU9mZnNldCAvIGF0
dHJpYnNbaV0uc3RyaWRlKCkpICogb3V0cHV0RWxlbWVudFNpemU7CisgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBzdGFydE9mZnNldCA9IChpbnN0YW5jZXMgPT0gMCB8fCBhdHRyaWJz
W2ldLm1EaXZpc29yID09IDApID8gc3RhcnQgKiBvdXRwdXRFbGVtZW50U2l6ZSA6IDA7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChzdHJlYW1PZmZzZXQgKyBmaXJzdEVsZW1lbnRPZmZzZXQgKyBz
dGFydE9mZnNldCA8IHN0cmVhbU9mZnNldCkKICAgICAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAgICAgc3RyZWFtT2Zmc2V0ICs9IChhdHRyaWJzW2ldLm1PZmZzZXQgLyBh
dHRyaWJzW2ldLnN0cmlkZSgpKSAqIG91dHB1dEVsZW1lbnRTaXplOwotCi0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoaW5zdGFuY2VzID09IDAgfHwgYXR0cmlic1tpXS5tRGl2aXNvciA9PSAw
KQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0cmVhbU9mZnNldCArPSBzdGFydCAqIG91dHB1dEVsZW1lbnRTaXplOwotICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX09VVF9PRl9N
RU1PUlk7CiAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBzdHJl
YW1PZmZzZXQgKz0gZmlyc3RFbGVtZW50T2Zmc2V0ICsgc3RhcnRPZmZzZXQ7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgIG91dHB1dEVsZW1lbnRTaXplID0gbVN0cmVhbWluZ0J1ZmZlci0+Z2V0VmVy
dGV4QnVmZmVyKCktPmdldFNwYWNlUmVxdWlyZWQoYXR0cmlic1tpXSwgMSwgMCk7Ci0gICAgICAg
ICAgICAgICAgICAgIHN0cmVhbU9mZnNldCA9IG1TdHJlYW1pbmdCdWZmZXItPnN0b3JlVmVydGV4
QXR0cmlidXRlcyhhdHRyaWJzW2ldLCBzdGFydCwgY291bnQsIGluc3RhbmNlcyk7Ci0gICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKHN0cmVhbU9mZnNldCA9PSAtMSkKLSAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9PVVRfT0ZfTUVN
T1JZOworICAgICAgICAgICAgICAgICAgICBpbnQgdG90YWxDb3VudCA9IFN0cmVhbWluZ0J1ZmZl
ckVsZW1lbnRDb3VudChhdHRyaWJzW2ldLCBjb3VudCwgaW5zdGFuY2VzKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCFtU3RyZWFtaW5nQnVmZmVyLT5nZXRWZXJ0ZXhCdWZmZXIoKS0+Z2V0U3Bh
Y2VSZXF1aXJlZChhdHRyaWJzW2ldLCAxLCAwLCAmb3V0cHV0RWxlbWVudFNpemUpIHx8CisgICAg
ICAgICAgICAgICAgICAgICAgICAhbVN0cmVhbWluZ0J1ZmZlci0+c3RvcmVWZXJ0ZXhBdHRyaWJ1
dGVzKGF0dHJpYnNbaV0sIHN0YXJ0LCB0b3RhbENvdW50LCBpbnN0YW5jZXMsICZzdHJlYW1PZmZz
ZXQpKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gR0xfT1VUX09GX01FTU9SWTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWRbaV0uc3RvcmFnZSA9IGRpcmVjdFN0
b3JhZ2UgPyBzdG9yYWdlIDogTlVMTDsKQEAgLTIyNywxMiArMjU5LDE3IEBAIEdMZW51bSBWZXJ0
ZXhEYXRhTWFuYWdlcjo6cHJlcGFyZVZlcnRleEQKICAgICAgICAgICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX09VVF9PRl9NRU1PUlk7CiAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaW50IHN0cmVhbU9mZnNldCA9IGJ1ZmZl
ci0+c3RvcmVSYXdEYXRhKGF0dHJpYnNbaV0ubUN1cnJlbnRWYWx1ZSwgcmVxdWlyZWRTcGFjZSk7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzdHJlYW1PZmZzZXQgPT0gLTEpCisKKyAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IHN0cmVhbU9mZnNldDsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCFidWZmZXItPnN0b3JlUmF3RGF0YShhdHRyaWJzW2ldLm1DdXJyZW50VmFsdWUsIHJl
cXVpcmVkU3BhY2UsICZzdHJlYW1PZmZzZXQpKQogICAgICAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfT1VUX09GX01FTU9SWTsKICAgICAgICAgICAg
ICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgICAgIG1DdXJyZW50VmFsdWVbaV1bMF0gPSBh
dHRyaWJzW2ldLm1DdXJyZW50VmFsdWVbMF07CisgICAgICAgICAgICAgICAgICAgIG1DdXJyZW50
VmFsdWVbaV1bMV0gPSBhdHRyaWJzW2ldLm1DdXJyZW50VmFsdWVbMV07CisgICAgICAgICAgICAg
ICAgICAgIG1DdXJyZW50VmFsdWVbaV1bMl0gPSBhdHRyaWJzW2ldLm1DdXJyZW50VmFsdWVbMl07
CisgICAgICAgICAgICAgICAgICAgIG1DdXJyZW50VmFsdWVbaV1bM10gPSBhdHRyaWJzW2ldLm1D
dXJyZW50VmFsdWVbM107CiAgICAgICAgICAgICAgICAgICAgIG1DdXJyZW50VmFsdWVPZmZzZXRz
W2ldID0gc3RyZWFtT2Zmc2V0OwogICAgICAgICAgICAgICAgIH0KIApJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhEYXRhTWFuYWdlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvVmVydGV4RGF0YU1hbmFnZXIuaAkocmV2aXNpb24gMTU5MDkwKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhEYXRhTWFuYWdlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw4IEBAIHN0cnVjdCBUcmFuc2xhdGVkQXR0cmli
dXRlCiAgICAgYm9vbCBhY3RpdmU7CiAKICAgICBjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICph
dHRyaWJ1dGU7Ci0gICAgVUlOVCBvZmZzZXQ7Ci0gICAgVUlOVCBzdHJpZGU7ICAgLy8gMCBtZWFu
cyBub3QgdG8gYWR2YW5jZSB0aGUgcmVhZCBwb2ludGVyIGF0IGFsbAorICAgIHVuc2lnbmVkIGlu
dCBvZmZzZXQ7CisgICAgdW5zaWduZWQgaW50IHN0cmlkZTsgICAvLyAwIG1lYW5zIG5vdCB0byBh
ZHZhbmNlIHRoZSByZWFkIHBvaW50ZXIgYXQgYWxsCiAKICAgICBWZXJ0ZXhCdWZmZXIgKnZlcnRl
eEJ1ZmZlcjsKICAgICBCdWZmZXJTdG9yYWdlICpzdG9yYWdlOwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjExX3V0aWxzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRl
cmVyL3JlbmRlcmVyMTFfdXRpbHMuY3BwCShyZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyMTFfdXRpbHMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNTYsNyArMzU2LDcgQEAgRFhHSV9GT1JNQVQgQ29udmVydFRl
eHR1cmVGb3JtYXQoR0xlbnVtIAogICAgICAgICByZXR1cm4gRFhHSV9GT1JNQVRfUjMyRzMyQjMy
QTMyX0ZMT0FUOwogICAgICAgY2FzZSBHTF9SR0IzMkZfRVhUOgogICAgICAgY2FzZSBHTF9MVU1J
TkFOQ0UzMkZfRVhUOgotICAgICAgICByZXR1cm4gRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FU
OworICAgICAgICByZXR1cm4gRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUOwogICAgICAg
Y2FzZSBHTF9SR0JBMTZGX0VYVDoKICAgICAgIGNhc2UgR0xfQUxQSEExNkZfRVhUOgogICAgICAg
Y2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEExNkZfRVhUOgpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2dlbmVyYXRlX3NoYWRlcnMuYmF0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvc2hhZGVycy9nZW5lcmF0ZV9zaGFkZXJzLmJhdAkocmV2aXNpb24gMTU5MDkwKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2dl
bmVyYXRlX3NoYWRlcnMuYmF0CSh3b3JraW5nIGNvcHkpCkBAIC01LDcgKzUsNyBAQCBSRU0gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgCiBSRU0gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4NCiBSRU0NCiANCi1QQVRIICVQQVRIJTslRFhTREtfRElSJVxVdGlsaXRpZXNcYmlu
XHg4Ng0KK1BBVEggJVBBVEglOyVQcm9ncmFtRmlsZXMoeDg2KSVcV2luZG93cyBLaXRzXDguMFxi
aW5ceDg2OyVEWFNES19ESVIlXFV0aWxpdGllc1xiaW5ceDg2DQogDQogZnhjIC9FIHN0YW5kYXJk
dnMgL1QgdnNfMl8wIC9GaCBjb21waWxlZC9zdGFuZGFyZHZzLmggQmxpdC52cw0KIGZ4YyAvRSBm
bGlweXZzIC9UIHZzXzJfMCAvRmggY29tcGlsZWQvZmxpcHl2cy5oIEJsaXQudnMNCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29t
cGlsZWQvY2xlYXIxMXZzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NsZWFyMTF2cy5oCShyZXZp
c2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXIxMXZzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
MjYgKzEsMjQgQEAKICNpZiAwDQogLy8NCi0vLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBI
TFNMIFNoYWRlciBDb21waWxlciA5LjI5Ljk1Mi4zMTExDQotLy8NCi0vLw0KLS8vICAgZnhjIC9F
IFZTX0NsZWFyIC9UIHZzXzRfMCAvRmggY29tcGlsZWQvY2xlYXIxMXZzLmggQ2xlYXIxMS5obHNs
DQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgOS4z
MC45MjAwLjE2Mzg0DQogLy8NCiAvLw0KKy8vLw0KIC8vDQogLy8gSW5wdXQgc2lnbmF0dXJlOg0K
IC8vDQotLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1Zh
bHVlIEZvcm1hdCAgIFVzZWQNCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0g
LS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0KLS8vIFBPU0lUSU9OICAgICAgICAgICAg
ICAgICAwICAgeHl6ICAgICAgICAgMCAgICAgTk9ORSAgZmxvYXQgICB4eXogDQotLy8gQ09MT1Ig
ICAgICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAxICAgICBOT05FICBmbG9hdCAgIHh5
encNCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFs
dWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0g
LS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBQT1NJVElPTiAgICAgICAgICAg
ICAgICAgMCAgIHh5eiAgICAgICAgIDAgICAgIE5PTkUgICBmbG9hdCAgIHh5eiANCisvLyBDT0xP
UiAgICAgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDEgICAgIE5PTkUgICBmbG9hdCAg
IHh5encNCiAvLw0KIC8vDQogLy8gT3V0cHV0IHNpZ25hdHVyZToNCiAvLw0KLS8vIE5hbWUgICAg
ICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSBGb3JtYXQgICBVc2Vk
DQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0t
IC0tLS0tLSAtLS0tLS0NCi0vLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAg
ICAgIDAgICAgICBQT1MgIGZsb2F0ICAgeHl6dw0KLS8vIENPTE9SICAgICAgICAgICAgICAgICAg
ICAwICAgeHl6dyAgICAgICAgMSAgICAgTk9ORSAgZmxvYXQgICB4eXp3DQorLy8gTmFtZSAgICAg
ICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2Vk
DQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0t
IC0tLS0tLS0gLS0tLS0tDQorLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAg
ICAgICAwICAgICAgUE9TICAgZmxvYXQgICB4eXp3DQorLy8gQ09MT1IgICAgICAgICAgICAgICAg
ICAgIDAgICB4eXp3ICAgICAgICAxICAgICBOT05FICAgZmxvYXQgICB4eXp3DQogLy8NCiB2c180
XzANCiBkY2xfaW5wdXQgdjAueHl6DQpAQCAtMzYsMTAgKzM0LDEwIEBAIHJldCANCiANCiBjb25z
dCBCWVRFIGdfVlNfQ2xlYXJbXSA9DQogew0KLSAgICAgNjgsICA4OCwgIDY2LCAgNjcsIDEwOSwg
MTM4LCANCi0gICAgMTA1LCAgODMsICA4NiwgMTkwLCAgODMsIDEyNSwgDQotICAgICA3MiwgMTAy
LCAxOTQsIDEzNiwgIDQ2LCAgNjksIA0KLSAgICAgMTcsIDEyMSwgICAxLCAgIDAsICAgMCwgICAw
LCANCisgICAgIDY4LCAgODgsICA2NiwgIDY3LCAgOTcsICAgNSwgDQorICAgICAxMywgMTYzLCAx
NjAsIDI1NCwgIDk1LCAxMjcsIA0KKyAgICAgMzAsIDE5NCwgMTIxLCAxNDQsIDIzNiwgMTg1LCAN
CisgICAgIDU5LCAgMjksICAgMSwgICAwLCAgIDAsICAgMCwgDQogICAgICA0OCwgICAyLCAgIDAs
ICAgMCwgICA1LCAgIDAsIA0KICAgICAgIDAsICAgMCwgIDUyLCAgIDAsICAgMCwgICAwLCANCiAg
ICAgMTQwLCAgIDAsICAgMCwgICAwLCAyMjAsICAgMCwgDQpAQCAtNTYsMTAgKzU0LDEwIEBAIGNv
bnN0IEJZVEUgZ19WU19DbGVhcltdID0NCiAgICAgIDcyLCAgNzYsICA4MywgIDc2LCAgMzIsICA4
MywgDQogICAgIDEwNCwgIDk3LCAxMDAsIDEwMSwgMTE0LCAgMzIsIA0KICAgICAgNjcsIDExMSwg
MTA5LCAxMTIsIDEwNSwgMTA4LCANCi0gICAgMTAxLCAxMTQsICAzMiwgIDU3LCAgNDYsICA1MCwg
DQotICAgICA1NywgIDQ2LCAgNTcsICA1MywgIDUwLCAgNDYsIA0KLSAgICAgNTEsICA0OSwgIDQ5
LCAgNDksICAgMCwgMTcxLCANCi0gICAgMTcxLCAxNzEsICA3MywgIDgzLCAgNzEsICA3OCwgDQor
ICAgIDEwMSwgMTE0LCAgMzIsICA1NywgIDQ2LCAgNTEsIA0KKyAgICAgNDgsICA0NiwgIDU3LCAg
NTAsICA0OCwgIDQ4LCANCisgICAgIDQ2LCAgNDksICA1NCwgIDUxLCAgNTYsICA1MiwgDQorICAg
ICAgMCwgMTcxLCAgNzMsICA4MywgIDcxLCAgNzgsIA0KICAgICAgNzIsICAgMCwgICAwLCAgIDAs
ICAgMiwgICAwLCANCiAgICAgICAwLCAgIDAsICAgOCwgICAwLCAgIDAsICAgMCwgDQogICAgICA1
NiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KQEAgLTEyMiw3ICsxMjAsNyBAQCBjb25zdCBC
WVRFIGdfVlNfQ2xlYXJbXSA9DQogICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
ICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQogICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KICAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJtdWx0aXBs
ZTExcHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJtdWx0aXBsZTExcHMuaAkocmV2aXNp
b24gMTU5MDkwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NsZWFybXVsdGlwbGUxMXBzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsMzMgKzEsMzAgQEAKICNpZiAwDQogLy8NCi0vLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0
IChSKSBITFNMIFNoYWRlciBDb21waWxlciA5LjI5Ljk1Mi4zMTExDQotLy8NCi0vLw0KLS8vICAg
ZnhjIC9FIFBTX0NsZWFyTXVsdGlwbGUgL1QgcHNfNF8wIC9GaCBjb21waWxlZC9jbGVhcm11bHRp
cGxlMTFwcy5oDQotLy8gICAgQ2xlYXIxMS5obHNsDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29m
dCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgOS4zMC45MjAwLjE2Mzg0DQogLy8NCiAvLw0KKy8v
Lw0KIC8vDQogLy8gSW5wdXQgc2lnbmF0dXJlOg0KIC8vDQotLy8gTmFtZSAgICAgICAgICAgICAg
ICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCi0vLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0t
LS0tLQ0KLS8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAg
IFBPUyAgZmxvYXQgICAgICAgDQotLy8gQ09MT1IgICAgICAgICAgICAgICAgICAgIDAgICB4eXp3
ICAgICAgICAxICAgICBOT05FICBmbG9hdCAgIHh5encNCisvLyBOYW1lICAgICAgICAgICAgICAg
ICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAt
LS0tLS0NCisvLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAg
ICBQT1MgICBmbG9hdCAgICAgICANCisvLyBDT0xPUiAgICAgICAgICAgICAgICAgICAgMCAgIHh5
encgICAgICAgIDEgICAgIE5PTkUgICBmbG9hdCAgIHh5encNCiAvLw0KIC8vDQogLy8gT3V0cHV0
IHNpZ25hdHVyZToNCiAvLw0KLS8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBS
ZWdpc3RlciBTeXNWYWx1ZSBGb3JtYXQgICBVc2VkDQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0g
LS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLSAtLS0tLS0NCi0vLyBTVl9UQVJH
RVQgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICBUQVJHRVQgIGZsb2F0ICAgeHl6
dw0KLS8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAxICAgeHl6dyAgICAgICAgMSAgIFRBUkdF
VCAgZmxvYXQgICB4eXp3DQotLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDIgICB4eXp3ICAg
ICAgICAyICAgVEFSR0VUICBmbG9hdCAgIHh5encNCi0vLyBTVl9UQVJHRVQgICAgICAgICAgICAg
ICAgMyAgIHh5encgICAgICAgIDMgICBUQVJHRVQgIGZsb2F0ICAgeHl6dw0KLS8vIFNWX1RBUkdF
VCAgICAgICAgICAgICAgICA0ICAgeHl6dyAgICAgICAgNCAgIFRBUkdFVCAgZmxvYXQgICB4eXp3
DQotLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDUgICB4eXp3ICAgICAgICA1ICAgVEFSR0VU
ICBmbG9hdCAgIHh5encNCi0vLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgNiAgIHh5encgICAg
ICAgIDYgICBUQVJHRVQgIGZsb2F0ICAgeHl6dw0KLS8vIFNWX1RBUkdFVCAgICAgICAgICAgICAg
ICA3ICAgeHl6dyAgICAgICAgNyAgIFRBUkdFVCAgZmxvYXQgICB4eXp3DQorLy8gTmFtZSAgICAg
ICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2Vk
DQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0t
IC0tLS0tLS0gLS0tLS0tDQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAg
ICAgICAwICAgVEFSR0VUICAgZmxvYXQgICB4eXp3DQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAg
ICAgIDEgICB4eXp3ICAgICAgICAxICAgVEFSR0VUICAgZmxvYXQgICB4eXp3DQorLy8gU1ZfVEFS
R0VUICAgICAgICAgICAgICAgIDIgICB4eXp3ICAgICAgICAyICAgVEFSR0VUICAgZmxvYXQgICB4
eXp3DQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDMgICB4eXp3ICAgICAgICAzICAgVEFS
R0VUICAgZmxvYXQgICB4eXp3DQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDQgICB4eXp3
ICAgICAgICA0ICAgVEFSR0VUICAgZmxvYXQgICB4eXp3DQorLy8gU1ZfVEFSR0VUICAgICAgICAg
ICAgICAgIDUgICB4eXp3ICAgICAgICA1ICAgVEFSR0VUICAgZmxvYXQgICB4eXp3DQorLy8gU1Zf
VEFSR0VUICAgICAgICAgICAgICAgIDYgICB4eXp3ICAgICAgICA2ICAgVEFSR0VUICAgZmxvYXQg
ICB4eXp3DQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDcgICB4eXp3ICAgICAgICA3ICAg
VEFSR0VUICAgZmxvYXQgICB4eXp3DQogLy8NCiBwc180XzANCiBkY2xfaW5wdXRfcHMgbGluZWFy
IHYxLnh5encNCkBAIC01MywxMCArNTAsMTAgQEAgcmV0IA0KIA0KIGNvbnN0IEJZVEUgZ19QU19D
bGVhck11bHRpcGxlW10gPQ0KIHsNCi0gICAgIDY4LCAgODgsICA2NiwgIDY3LCAxNDYsIDI0Niwg
DQotICAgIDIzNiwgMjQwLCAgNTAsICA0MCwgIDg3LCAgNTUsIA0KLSAgICAgNzMsIDE0MCwgMjUx
LCAyMDAsICAgOCwgIDIyLCANCi0gICAgMTczLCAxMTcsICAgMSwgICAwLCAgIDAsICAgMCwgDQor
ICAgICA2OCwgIDg4LCAgNjYsICA2NywgIDkyLCAgNTQsIA0KKyAgICAxMjAsIDEwNSwgMTY2LCAx
OTYsIDEzMiwgMTU4LCANCisgICAgMjA5LCAgMzMsIDE4NSwgMTIyLCAgIDgsIDE4OSwgDQorICAg
IDE0NSwgMTE0LCAgIDEsICAgMCwgICAwLCAgIDAsIA0KICAgICAgODgsICAgMywgICAwLCAgIDAs
ICAgNSwgICAwLCANCiAgICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgDQogICAgIDE0
MCwgICAwLCAgIDAsICAgMCwgMjI0LCAgIDAsIA0KQEAgLTczLDEwICs3MCwxMCBAQCBjb25zdCBC
WVRFIGdfUFNfQ2xlYXJNdWx0aXBsZVtdID0NCiAgICAgIDcyLCAgNzYsICA4MywgIDc2LCAgMzIs
ICA4MywgDQogICAgIDEwNCwgIDk3LCAxMDAsIDEwMSwgMTE0LCAgMzIsIA0KICAgICAgNjcsIDEx
MSwgMTA5LCAxMTIsIDEwNSwgMTA4LCANCi0gICAgMTAxLCAxMTQsICAzMiwgIDU3LCAgNDYsICA1
MCwgDQotICAgICA1NywgIDQ2LCAgNTcsICA1MywgIDUwLCAgNDYsIA0KLSAgICAgNTEsICA0OSwg
IDQ5LCAgNDksICAgMCwgMTcxLCANCi0gICAgMTcxLCAxNzEsICA3MywgIDgzLCAgNzEsICA3OCwg
DQorICAgIDEwMSwgMTE0LCAgMzIsICA1NywgIDQ2LCAgNTEsIA0KKyAgICAgNDgsICA0NiwgIDU3
LCAgNTAsICA0OCwgIDQ4LCANCisgICAgIDQ2LCAgNDksICA1NCwgIDUxLCAgNTYsICA1MiwgDQor
ICAgICAgMCwgMTcxLCAgNzMsICA4MywgIDcxLCAgNzgsIA0KICAgICAgNzYsICAgMCwgICAwLCAg
IDAsICAgMiwgICAwLCANCiAgICAgICAwLCAgIDAsICAgOCwgICAwLCAgIDAsICAgMCwgDQogICAg
ICA1NiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KQEAgLTE4OSw3ICsxODYsNyBAQCBjb25z
dCBCWVRFIGdfUFNfQ2xlYXJNdWx0aXBsZVtdID0NCiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQogICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KICAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCi0gICAgICA4LCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgOSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KICAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQogICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9j
bGVhcnNpbmdsZTExcHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJzaW5nbGUxMXBzLmgJ
KHJldmlzaW9uIDE1OTA5MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9jbGVhcnNpbmdsZTExcHMuaAkod29ya2luZyBj
b3B5KQpAQCAtMSwyNiArMSwyMyBAQAogI2lmIDANCiAvLw0KLS8vIEdlbmVyYXRlZCBieSBNaWNy
b3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDkuMjkuOTUyLjMxMTENCi0vLw0KLS8vDQot
Ly8gICBmeGMgL0UgUFNfQ2xlYXJTaW5nbGUgL1QgcHNfNF8wIC9GaCBjb21waWxlZC9jbGVhcnNp
bmdsZTExcHMuaA0KLS8vICAgIENsZWFyMTEuaGxzbA0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3Nv
ZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDkuMzAuOTIwMC4xNjM4NA0KIC8vDQogLy8NCisv
Ly8NCiAvLw0KIC8vIElucHV0IHNpZ25hdHVyZToNCiAvLw0KLS8vIE5hbWUgICAgICAgICAgICAg
ICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSBGb3JtYXQgICBVc2VkDQotLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLSAt
LS0tLS0NCi0vLyBTVl9Qb3NpdGlvbiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAg
ICBQT1MgIGZsb2F0ICAgICAgIA0KLS8vIENPTE9SICAgICAgICAgICAgICAgICAgICAwICAgeHl6
dyAgICAgICAgMSAgICAgTk9ORSAgZmxvYXQgICB4eXp3DQorLy8gTmFtZSAgICAgICAgICAgICAg
ICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0g
LS0tLS0tDQorLy8gU1ZfUG9zaXRpb24gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAg
ICAgUE9TICAgZmxvYXQgICAgICAgDQorLy8gQ09MT1IgICAgICAgICAgICAgICAgICAgIDAgICB4
eXp3ICAgICAgICAxICAgICBOT05FICAgZmxvYXQgICB4eXp3DQogLy8NCiAvLw0KIC8vIE91dHB1
dCBzaWduYXR1cmU6DQogLy8NCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sg
UmVnaXN0ZXIgU3lzVmFsdWUgRm9ybWF0ICAgVXNlZA0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
IC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0gLS0tLS0tDQotLy8gU1ZfVGFy
Z2V0ICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICBmbG9hdCAgIHh5
encNCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFs
dWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0g
LS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9UYXJnZXQgICAgICAgICAg
ICAgICAgMCAgIHh5encgICAgICAgIDAgICBUQVJHRVQgICBmbG9hdCAgIHh5encNCiAvLw0KIHBz
XzRfMA0KIGRjbF9pbnB1dF9wcyBsaW5lYXIgdjEueHl6dw0KQEAgLTMyLDEwICsyOSwxMCBAQCBy
ZXQgDQogDQogY29uc3QgQllURSBnX1BTX0NsZWFyU2luZ2xlW10gPQ0KIHsNCi0gICAgIDY4LCAg
ODgsICA2NiwgIDY3LCAgMTEsICA0OSwgDQotICAgIDIyMCwgMTU3LCAgMzUsIDEwNiwgMTc1LCAx
NjEsIA0KLSAgICAxODAsIDE3OCwgMTQ3LCAxNTAsIDEzNCwgMTYyLCANCi0gICAgMjIyLCAgNzks
ICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICA2OCwgIDg4LCAgNjYsICA2NywgIDEzLCAxNTIs
IA0KKyAgICAgMzIsICA0OSwgMjIyLCAyMzYsICA5MiwgIDIwLCANCisgICAgMTg4LCAgNzEsICA4
OCwgIDQ2LCAxNjMsIDI0MSwgDQorICAgIDE4OCwgMjM4LCAgIDEsICAgMCwgICAwLCAgIDAsIA0K
ICAgICAyMDgsICAgMSwgICAwLCAgIDAsICAgNSwgICAwLCANCiAgICAgICAwLCAgIDAsICA1Miwg
ICAwLCAgIDAsICAgMCwgDQogICAgIDE0MCwgICAwLCAgIDAsICAgMCwgMjI0LCAgIDAsIA0KQEAg
LTUyLDEwICs0OSwxMCBAQCBjb25zdCBCWVRFIGdfUFNfQ2xlYXJTaW5nbGVbXSA9DQogICAgICA3
MiwgIDc2LCAgODMsICA3NiwgIDMyLCAgODMsIA0KICAgICAxMDQsICA5NywgMTAwLCAxMDEsIDEx
NCwgIDMyLCANCiAgICAgIDY3LCAxMTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwgDQotICAgIDEwMSwg
MTE0LCAgMzIsICA1NywgIDQ2LCAgNTAsIA0KLSAgICAgNTcsICA0NiwgIDU3LCAgNTMsICA1MCwg
IDQ2LCANCi0gICAgIDUxLCAgNDksICA0OSwgIDQ5LCAgIDAsIDE3MSwgDQotICAgIDE3MSwgMTcx
LCAgNzMsICA4MywgIDcxLCAgNzgsIA0KKyAgICAxMDEsIDExNCwgIDMyLCAgNTcsICA0NiwgIDUx
LCANCisgICAgIDQ4LCAgNDYsICA1NywgIDUwLCAgNDgsICA0OCwgDQorICAgICA0NiwgIDQ5LCAg
NTQsICA1MSwgIDU2LCAgNTIsIA0KKyAgICAgIDAsIDE3MSwgIDczLCAgODMsICA3MSwgIDc4LCAN
CiAgICAgIDc2LCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgDQogICAgICAgMCwgICAwLCAgIDgs
ICAgMCwgICAwLCAgIDAsIA0KICAgICAgNTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCkBA
IC0xMDIsNyArOTksNyBAQCBjb25zdCBCWVRFIGdfUFNfQ2xlYXJTaW5nbGVbXSA9DQogICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMiwg
ICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQogICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L3NoYWRlcnMvY29tcGlsZWQvY29tcG9uZW50bWFza3BzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVk
L2NvbXBvbmVudG1hc2twcy5oCShyZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY29tcG9uZW50
bWFza3BzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzEsOCBAQAogI2lmIDANCiAvLw0KLS8v
IEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDkuMjkuOTUy
LjMxMTENCi0vLw0KLS8vICAgZnhjIC9FIGNvbXBvbmVudG1hc2twcyAvVCBwc18yXzAgL0ZoIGNv
bXBpbGVkL2NvbXBvbmVudG1hc2twcy5oIEJsaXQucHMNCi0vLw0KKy8vIEdlbmVyYXRlZCBieSBN
aWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDkuMzAuOTIwMC4xNjM4NA0KIC8vDQor
Ly8vDQogLy8gUGFyYW1ldGVyczoNCiAvLw0KIC8vICAgZmxvYXQ0IG1vZGU7DQpAQCAtMzMsNyAr
MzEsNyBAQAogY29uc3QgQllURSBnX3BzMjBfY29tcG9uZW50bWFza3BzW10gPQ0KIHsNCiAgICAg
ICAwLCAgIDIsIDI1NSwgMjU1LCAyNTQsIDI1NSwgDQotICAgICA0MywgICAwLCAgNjcsICA4NCwg
IDY1LCAgNjYsIA0KKyAgICAgNDQsICAgMCwgIDY3LCAgODQsICA2NSwgIDY2LCANCiAgICAgIDI4
LCAgIDAsICAgMCwgICAwLCAxMTksICAgMCwgDQogICAgICAgMCwgICAwLCAgIDAsICAgMiwgMjU1
LCAyNTUsIA0KICAgICAgIDIsICAgMCwgICAwLCAgIDAsICAyOCwgICAwLCANCkBAIC02MCwyMiAr
NTgsMjIgQEAgY29uc3QgQllURSBnX3BzMjBfY29tcG9uZW50bWFza3BzW10gPQ0KICAgICAgODMs
IDEwNCwgIDk3LCAxMDAsIDEwMSwgMTE0LCANCiAgICAgIDMyLCAgNjcsIDExMSwgMTA5LCAxMTIs
IDEwNSwgDQogICAgIDEwOCwgMTAxLCAxMTQsICAzMiwgIDU3LCAgNDYsIA0KLSAgICAgNTAsICA1
NywgIDQ2LCAgNTcsICA1MywgIDUwLCANCi0gICAgIDQ2LCAgNTEsICA0OSwgIDQ5LCAgNDksICAg
MCwgDQotICAgICAzMSwgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsIA0KLSAgICAgIDAsIDEyOCwg
ICAwLCAgIDAsICAgMywgMTc2LCANCi0gICAgIDMxLCAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwg
DQotICAgICAgMCwgMTQ0LCAgIDAsICAgOCwgIDE1LCAxNjAsIA0KLSAgICAgNjYsICAgMCwgICAw
LCAgIDMsICAgMCwgICAwLCANCi0gICAgIDE1LCAxMjgsICAgMCwgICAwLCAyMjgsIDE3NiwgDQot
ICAgICAgMCwgICA4LCAyMjgsIDE2MCwgICA1LCAgIDAsIA0KLSAgICAgIDAsICAgMywgICAxLCAg
IDAsICAgNywgMTI4LCANCi0gICAgICAwLCAgIDAsIDIyOCwgMTI4LCAgIDAsICAgMCwgDQotICAg
ICAgMCwgMTYwLCAgIDQsICAgMCwgICAwLCAgIDQsIA0KLSAgICAgIDEsICAgMCwgICA4LCAxMjgs
ICAgMCwgICAwLCANCi0gICAgMjU1LCAxMjgsICAgMCwgICAwLCAxNzAsIDE2MCwgDQotICAgICAg
MCwgICAwLCAyNTUsIDE2MCwgICAxLCAgIDAsIA0KLSAgICAgIDAsICAgMiwgICAwLCAgIDgsICAx
NSwgMTI4LCANCi0gICAgICAxLCAgIDAsIDIyOCwgMTI4LCAyNTUsIDI1NSwgDQotICAgICAgMCwg
ICAwDQorICAgICA1MSwgIDQ4LCAgNDYsICA1NywgIDUwLCAgNDgsIA0KKyAgICAgNDgsICA0Niwg
IDQ5LCAgNTQsICA1MSwgIDU2LCANCisgICAgIDUyLCAgIDAsIDE3MSwgMTcxLCAgMzEsICAgMCwg
DQorICAgICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAxMjgsIA0KKyAgICAgIDAsICAgMCwgICAz
LCAxNzYsICAzMSwgICAwLCANCisgICAgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIDE0NCwgDQor
ICAgICAgMCwgICA4LCAgMTUsIDE2MCwgIDY2LCAgIDAsIA0KKyAgICAgIDAsICAgMywgICAwLCAg
IDAsICAxNSwgMTI4LCANCisgICAgICAwLCAgIDAsIDIyOCwgMTc2LCAgIDAsICAgOCwgDQorICAg
IDIyOCwgMTYwLCAgIDUsICAgMCwgICAwLCAgIDMsIA0KKyAgICAgIDEsICAgMCwgICA3LCAxMjgs
ICAgMCwgICAwLCANCisgICAgMjI4LCAxMjgsICAgMCwgICAwLCAgIDAsIDE2MCwgDQorICAgICAg
NCwgICAwLCAgIDAsICAgNCwgICAxLCAgIDAsIA0KKyAgICAgIDgsIDEyOCwgICAwLCAgIDAsIDI1
NSwgMTI4LCANCisgICAgICAwLCAgIDAsIDE3MCwgMTYwLCAgIDAsICAgMCwgDQorICAgIDI1NSwg
MTYwLCAgIDEsICAgMCwgICAwLCAgIDIsIA0KKyAgICAgIDAsICAgOCwgIDE1LCAxMjgsICAgMSwg
ICAwLCANCisgICAgMjI4LCAxMjgsIDI1NSwgMjU1LCAgIDAsICAgMA0KIH07DQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBp
bGVkL2ZsaXB5dnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvZmxpcHl2cy5oCShyZXZpc2lvbiAx
NTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L3NoYWRlcnMvY29tcGlsZWQvZmxpcHl2cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDgg
QEAKICNpZiAwDQogLy8NCi0vLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRl
ciBDb21waWxlciA5LjI5Ljk1Mi4zMTExDQotLy8NCi0vLyAgIGZ4YyAvRSBmbGlweXZzIC9UIHZz
XzJfMCAvRmggY29tcGlsZWQvZmxpcHl2cy5oIEJsaXQudnMNCi0vLw0KKy8vIEdlbmVyYXRlZCBi
eSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDkuMzAuOTIwMC4xNjM4NA0KIC8v
DQorLy8vDQogLy8gUGFyYW1ldGVyczoNCiAvLw0KIC8vICAgZmxvYXQ0IGhhbGZQaXhlbFNpemU7
DQpAQCAtMjksNyArMjcsNyBAQAogY29uc3QgQllURSBnX3ZzMjBfZmxpcHl2c1tdID0NCiB7DQog
ICAgICAgMCwgICAyLCAyNTQsIDI1NSwgMjU0LCAyNTUsIA0KLSAgICAgMzUsICAgMCwgIDY3LCAg
ODQsICA2NSwgIDY2LCANCisgICAgIDM2LCAgIDAsICA2NywgIDg0LCAgNjUsICA2NiwgDQogICAg
ICAyOCwgICAwLCAgIDAsICAgMCwgIDg3LCAgIDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDIs
IDI1NCwgMjU1LCANCiAgICAgICAxLCAgIDAsICAgMCwgICAwLCAgMjgsICAgMCwgDQpAQCAtNTAs
MjAgKzQ4LDIwIEBAIGNvbnN0IEJZVEUgZ192czIwX2ZsaXB5dnNbXSA9DQogICAgICA3NiwgIDgz
LCAgNzYsICAzMiwgIDgzLCAxMDQsIA0KICAgICAgOTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgIDY3
LCANCiAgICAgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwgDQotICAgIDExNCwgIDMyLCAg
NTcsICA0NiwgIDUwLCAgNTcsIA0KLSAgICAgNDYsICA1NywgIDUzLCAgNTAsICA0NiwgIDUxLCAN
Ci0gICAgIDQ5LCAgNDksICA0OSwgICAwLCAgODEsICAgMCwgDQotICAgICAgMCwgICA1LCAgIDEs
ICAgMCwgIDE1LCAxNjAsIA0KLSAgICAgIDAsICAgMCwgICAwLCAgNjMsICAgMCwgICAwLCANCi0g
ICAgMTI4LCAgNjMsICAgMCwgICAwLCAgIDAsICAgMCwgDQotICAgICAgMCwgICAwLCAgIDAsICAg
MCwgIDMxLCAgIDAsIA0KLSAgICAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgMTI4LCANCi0gICAg
ICAwLCAgIDAsICAxNSwgMTQ0LCAgIDIsICAgMCwgDQotICAgICAgMCwgICAzLCAgIDAsICAgMCwg
IDE1LCAxOTIsIA0KLSAgICAgIDAsICAgMCwgMjI4LCAxNDQsICAgMCwgICAwLCANCi0gICAgMjI4
LCAxNjAsICAgNCwgICAwLCAgIDAsICAgNCwgDQotICAgICAgMCwgICAwLCAgMTUsIDIyNCwgICAw
LCAgIDAsIA0KLSAgICAyMjgsIDE0NCwgICAxLCAgIDAsICA4MCwgMTYwLCANCi0gICAgICAxLCAg
IDAsIDE2MCwgMTYwLCAyNTUsIDI1NSwgDQotICAgICAgMCwgICAwDQorICAgIDExNCwgIDMyLCAg
NTcsICA0NiwgIDUxLCAgNDgsIA0KKyAgICAgNDYsICA1NywgIDUwLCAgNDgsICA0OCwgIDQ2LCAN
CisgICAgIDQ5LCAgNTQsICA1MSwgIDU2LCAgNTIsICAgMCwgDQorICAgIDE3MSwgMTcxLCAgODEs
ICAgMCwgICAwLCAgIDUsIA0KKyAgICAgIDEsICAgMCwgIDE1LCAxNjAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgNjMsICAgMCwgICAwLCAxMjgsICA2MywgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDMxLCAgIDAsICAgMCwgICAyLCANCisgICAg
ICAwLCAgIDAsICAgMCwgMTI4LCAgIDAsICAgMCwgDQorICAgICAxNSwgMTQ0LCAgIDIsICAgMCwg
ICAwLCAgIDMsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAxOTIsICAgMCwgICAwLCANCisgICAgMjI4
LCAxNDQsICAgMCwgICAwLCAyMjgsIDE2MCwgDQorICAgICAgNCwgICAwLCAgIDAsICAgNCwgICAw
LCAgIDAsIA0KKyAgICAgMTUsIDIyNCwgICAwLCAgIDAsIDIyOCwgMTQ0LCANCisgICAgICAxLCAg
IDAsICA4MCwgMTYwLCAgIDEsICAgMCwgDQorICAgIDE2MCwgMTYwLCAyNTUsIDI1NSwgICAwLCAg
IDANCiB9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvc2hhZGVycy9jb21waWxlZC9sdW1pbmFuY2Vwcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxl
ZC9sdW1pbmFuY2Vwcy5oCShyZXZpc2lvbiAxNTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvbHVtaW5hbmNlcHMu
aAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMSw4IEBACiAjaWYgMA0KIC8vDQotLy8gR2VuZXJh
dGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgOS4yOS45NTIuMzExMQ0K
LS8vDQotLy8gICBmeGMgL0UgbHVtaW5hbmNlcHMgL1QgcHNfMl8wIC9GaCBjb21waWxlZC9sdW1p
bmFuY2Vwcy5oIEJsaXQucHMNCi0vLw0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhM
U0wgU2hhZGVyIENvbXBpbGVyIDkuMzAuOTIwMC4xNjM4NA0KIC8vDQorLy8vDQogLy8gUGFyYW1l
dGVyczoNCiAvLw0KIC8vICAgZmxvYXQ0IG1vZGU7DQpAQCAtMzMsNyArMzEsNyBAQAogY29uc3Qg
QllURSBnX3BzMjBfbHVtaW5hbmNlcHNbXSA9DQogew0KICAgICAgIDAsICAgMiwgMjU1LCAyNTUs
IDI1NCwgMjU1LCANCi0gICAgIDQzLCAgIDAsICA2NywgIDg0LCAgNjUsICA2NiwgDQorICAgICA0
NCwgICAwLCAgNjcsICA4NCwgIDY1LCAgNjYsIA0KICAgICAgMjgsICAgMCwgICAwLCAgIDAsIDEx
OSwgICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwgICAyLCAyNTUsIDI1NSwgDQogICAgICAgMiwg
ICAwLCAgIDAsICAgMCwgIDI4LCAgIDAsIA0KQEAgLTYwLDIxICs1OCwyMiBAQCBjb25zdCBCWVRF
IGdfcHMyMF9sdW1pbmFuY2Vwc1tdID0NCiAgICAgIDgzLCAxMDQsICA5NywgMTAwLCAxMDEsIDEx
NCwgDQogICAgICAzMiwgIDY3LCAxMTEsIDEwOSwgMTEyLCAxMDUsIA0KICAgICAxMDgsIDEwMSwg
MTE0LCAgMzIsICA1NywgIDQ2LCANCi0gICAgIDUwLCAgNTcsICA0NiwgIDU3LCAgNTMsICA1MCwg
DQotICAgICA0NiwgIDUxLCAgNDksICA0OSwgIDQ5LCAgIDAsIA0KLSAgICAgMzEsICAgMCwgICAw
LCAgIDIsICAgMCwgICAwLCANCi0gICAgICAwLCAxMjgsICAgMCwgICAwLCAgIDMsIDE3NiwgDQot
ICAgICAzMSwgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsIA0KLSAgICAgIDAsIDE0NCwgICAwLCAg
IDgsICAxNSwgMTYwLCANCi0gICAgIDY2LCAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgDQotICAg
ICAxNSwgMTI4LCAgIDAsICAgMCwgMjI4LCAxNzYsIA0KLSAgICAgIDAsICAgOCwgMjI4LCAxNjAs
ICAgNCwgICAwLCANCi0gICAgICAwLCAgIDQsICAgMSwgICAwLCAgIDgsIDEyOCwgDQotICAgICAg
MCwgICAwLCAyNTUsIDEyOCwgICAwLCAgIDAsIA0KLSAgICAgIDAsIDE2MCwgICAwLCAgIDAsICA4
NSwgMTYwLCANCi0gICAgICAxLCAgIDAsICAgMCwgICAyLCAgIDEsICAgMCwgDQotICAgICAgNywg
MTI4LCAgIDAsICAgMCwgICAwLCAxMjgsIA0KLSAgICAgIDEsICAgMCwgICAwLCAgIDIsICAgMCwg
ICA4LCANCi0gICAgIDE1LCAxMjgsICAgMSwgICAwLCAyMjgsIDEyOCwgDQotICAgIDI1NSwgMjU1
LCAgIDAsICAgMA0KKyAgICAgNTEsICA0OCwgIDQ2LCAgNTcsICA1MCwgIDQ4LCANCisgICAgIDQ4
LCAgNDYsICA0OSwgIDU0LCAgNTEsICA1NiwgDQorICAgICA1MiwgICAwLCAxNzEsIDE3MSwgIDMx
LCAgIDAsIA0KKyAgICAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgMTI4LCANCisgICAgICAwLCAg
IDAsICAgMywgMTc2LCAgMzEsICAgMCwgDQorICAgICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAx
NDQsIA0KKyAgICAgIDAsICAgOCwgIDE1LCAxNjAsICA2NiwgICAwLCANCisgICAgICAwLCAgIDMs
ICAgMCwgICAwLCAgMTUsIDEyOCwgDQorICAgICAgMCwgICAwLCAyMjgsIDE3NiwgICAwLCAgIDgs
IA0KKyAgICAyMjgsIDE2MCwgICA0LCAgIDAsICAgMCwgICA0LCANCisgICAgICAxLCAgIDAsICAg
OCwgMTI4LCAgIDAsICAgMCwgDQorICAgIDI1NSwgMTI4LCAgIDAsICAgMCwgICAwLCAxNjAsIA0K
KyAgICAgIDAsICAgMCwgIDg1LCAxNjAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDIsICAgMSwg
ICAwLCAgIDcsIDEyOCwgDQorICAgICAgMCwgICAwLCAgIDAsIDEyOCwgICAxLCAgIDAsIA0KKyAg
ICAgIDAsICAgMiwgICAwLCAgIDgsICAxNSwgMTI4LCANCisgICAgICAxLCAgIDAsIDIyOCwgMTI4
LCAyNTUsIDI1NSwgDQorICAgICAgMCwgICAwDQogfTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91
Z2gxMXZzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdoMTF2cy5oCShyZXZpc2lv
biAxNTkwOTApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRl
cmVyL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2gxMXZzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsMjcgKzEsMjQgQEAKICNpZiAwDQogLy8NCi0vLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChS
KSBITFNMIFNoYWRlciBDb21waWxlciA5LjI5Ljk1Mi4zMTExDQotLy8NCi0vLw0KLS8vICAgZnhj
IC9FIFZTX1Bhc3N0aHJvdWdoIC9UIHZzXzRfMCAvRmggY29tcGlsZWQvcGFzc3Rocm91Z2gxMXZz
LmgNCi0vLyAgICBQYXNzdGhyb3VnaDExLmhsc2wNCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0
IChSKSBITFNMIFNoYWRlciBDb21waWxlciA5LjMwLjkyMDAuMTYzODQNCiAvLw0KIC8vDQorLy8v
DQogLy8NCiAvLyBJbnB1dCBzaWduYXR1cmU6DQogLy8NCi0vLyBOYW1lICAgICAgICAgICAgICAg
ICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgRm9ybWF0ICAgVXNlZA0KLS8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0gLS0t
LS0tDQotLy8gUE9TSVRJT04gICAgICAgICAgICAgICAgIDAgICB4eSAgICAgICAgICAwICAgICBO
T05FICBmbG9hdCAgIHh5ICANCi0vLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5ICAg
ICAgICAgIDEgICAgIE5PTkUgIGZsb2F0ICAgeHkgIA0KKy8vIE5hbWUgICAgICAgICAgICAgICAg
IEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0t
LS0tLQ0KKy8vIFBPU0lUSU9OICAgICAgICAgICAgICAgICAwICAgeHkgICAgICAgICAgMCAgICAg
Tk9ORSAgIGZsb2F0ICAgeHkgIA0KKy8vIFRFWENPT1JEICAgICAgICAgICAgICAgICAwICAgeHkg
ICAgICAgICAgMSAgICAgTk9ORSAgIGZsb2F0ICAgeHkgIA0KIC8vDQogLy8NCiAvLyBPdXRwdXQg
c2lnbmF0dXJlOg0KIC8vDQotLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJl
Z2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAt
LS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0KLS8vIFNWX1BPU0lU
SU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgZmxvYXQgICB4eXp3
DQotLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4eSAgICAgICAgICAxICAgICBOT05F
ICBmbG9hdCAgIHh5ICANCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVn
aXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAt
LS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9QT1NJ
VElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAgIHh5
encNCisvLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5ICAgICAgICAgIDEgICAgIE5P
TkUgICBmbG9hdCAgIHh5ICANCiAvLw0KIHZzXzRfMA0KIGRjbF9pbnB1dCB2MC54eQ0KQEAgLTM3
LDEwICszNCwxMCBAQCByZXQgDQogDQogY29uc3QgQllURSBnX1ZTX1Bhc3N0aHJvdWdoW10gPQ0K
IHsNCi0gICAgIDY4LCAgODgsICA2NiwgIDY3LCAxMTcsICA3NCwgDQotICAgICAzNCwgIDc5LCAx
NzQsIDIyNiwgMTcwLCAgNzQsIA0KLSAgICAxMTAsICAxNiwgMjM3LCAgMTQsICA2NywgMTg1LCAN
Ci0gICAgMTE5LCAxNjcsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICA2OCwgIDg4LCAgNjYs
ICA2NywgMTk3LCAyMTQsIA0KKyAgICAxODQsICA4NSwgMjQwLCAgOTQsICA3MSwgIDQ4LCANCisg
ICAgMTY1LCAgMzQsIDE0MiwgMjMzLCAgIDAsIDEzNSwgDQorICAgIDE5MywgMTc4LCAgIDEsICAg
MCwgICAwLCAgIDAsIA0KICAgICAgNjgsICAgMiwgICAwLCAgIDAsICAgNSwgICAwLCANCiAgICAg
ICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgDQogICAgIDE0MCwgICAwLCAgIDAsICAgMCwg
MjI0LCAgIDAsIA0KQEAgLTU3LDEwICs1NCwxMCBAQCBjb25zdCBCWVRFIGdfVlNfUGFzc3Rocm91
Z2hbXSA9DQogICAgICA3MiwgIDc2LCAgODMsICA3NiwgIDMyLCAgODMsIA0KICAgICAxMDQsICA5
NywgMTAwLCAxMDEsIDExNCwgIDMyLCANCiAgICAgIDY3LCAxMTEsIDEwOSwgMTEyLCAxMDUsIDEw
OCwgDQotICAgIDEwMSwgMTE0LCAgMzIsICA1NywgIDQ2LCAgNTAsIA0KLSAgICAgNTcsICA0Niwg
IDU3LCAgNTMsICA1MCwgIDQ2LCANCi0gICAgIDUxLCAgNDksICA0OSwgIDQ5LCAgIDAsIDE3MSwg
DQotICAgIDE3MSwgMTcxLCAgNzMsICA4MywgIDcxLCAgNzgsIA0KKyAgICAxMDEsIDExNCwgIDMy
LCAgNTcsICA0NiwgIDUxLCANCisgICAgIDQ4LCAgNDYsICA1NywgIDUwLCAgNDgsICA0OCwgDQor
ICAgICA0NiwgIDQ5LCAgNTQsICA1MSwgIDU2LCAgNTIsIA0KKyAgICAgIDAsIDE3MSwgIDczLCAg
ODMsICA3MSwgIDc4LCANCiAgICAgIDc2LCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgDQogICAg
ICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsIA0KICAgICAgNTYsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCkBAIC0xMjcsNyArMTI0LDcgQEAgY29uc3QgQllURSBnX1ZTX1Bhc3N0aHJv
dWdoW10gPQ0KICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCiAgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQogICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KLSAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICA0LCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQogICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCiAgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdobHVtMTFwcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaGx1bTExcHMuaAkocmV2aXNpb24gMTU5MDkw
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFk
ZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdobHVtMTFwcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEy
ICsxLDkgQEAKICNpZiAwDQogLy8NCi0vLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNM
IFNoYWRlciBDb21waWxlciA5LjI5Ljk1Mi4zMTExDQotLy8NCi0vLw0KLS8vICAgZnhjIC9FIFBT
X1Bhc3N0aHJvdWdoTHVtIC9UIHBzXzRfMCAvRmggY29tcGlsZWQvcGFzc3Rocm91Z2hsdW0xMXBz
LmgNCi0vLyAgICBQYXNzdGhyb3VnaDExLmhsc2wNCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0
IChSKSBITFNMIFNoYWRlciBDb21waWxlciA5LjMwLjkyMDAuMTYzODQNCiAvLw0KIC8vDQorLy8v
DQogLy8gUmVzb3VyY2UgQmluZGluZ3M6DQogLy8NCiAvLyBOYW1lICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAgICAgICAgRGltIFNsb3QgRWxlbWVudHMNCkBA
IC0xOCwxNyArMTUsMTcgQEAKIC8vDQogLy8gSW5wdXQgc2lnbmF0dXJlOg0KIC8vDQotLy8gTmFt
ZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAg
IFVzZWQNCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0t
LS0tLS0gLS0tLS0tIC0tLS0tLQ0KLS8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6
dyAgICAgICAgMCAgICAgIFBPUyAgZmxvYXQgICAgICAgDQotLy8gVEVYQ09PUkQgICAgICAgICAg
ICAgICAgIDAgICB4eSAgICAgICAgICAxICAgICBOT05FICBmbG9hdCAgIHh5ICANCisvLyBOYW1l
ICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAg
IFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0t
LS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5
encgICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAgICAgICANCisvLyBURVhDT09SRCAgICAgICAg
ICAgICAgICAgMCAgIHh5ICAgICAgICAgIDEgICAgIE5PTkUgICBmbG9hdCAgIHh5ICANCiAvLw0K
IC8vDQogLy8gT3V0cHV0IHNpZ25hdHVyZToNCiAvLw0KLS8vIE5hbWUgICAgICAgICAgICAgICAg
IEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSBGb3JtYXQgICBVc2VkDQotLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLSAtLS0t
LS0NCi0vLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICBUQVJH
RVQgIGZsb2F0ICAgeHl6dw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBS
ZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
IC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1RB
UkdFVCAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgIGZsb2F0ICAg
eHl6dw0KIC8vDQogcHNfNF8wDQogZGNsX3NhbXBsZXIgczAsIG1vZGVfZGVmYXVsdA0KQEAgLTQ1
LDEwICs0MiwxMCBAQCByZXQgDQogDQogY29uc3QgQllURSBnX1BTX1Bhc3N0aHJvdWdoTHVtW10g
PQ0KIHsNCi0gICAgIDY4LCAgODgsICA2NiwgIDY3LCAgOTcsICA0MSwgDQotICAgICAzNywgMTU0
LCAgIDAsIDE3NCwgMTM3LCAxNTcsIA0KLSAgICAgNzYsIDIxOSwgMjMwLCAgMjYsIDIyNywgMTc0
LCANCi0gICAgMTg3LCAgNjYsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICA2OCwgIDg4LCAg
NjYsICA2NywgMjQ0LCAgIDksIA0KKyAgICAyMTMsIDE0NywgIDE5LCAyNDksICA3MCwgMTExLCAN
CisgICAgMTU3LCAgOTIsIDI0MywgMTYwLCAgNDAsIDE0NCwgDQorICAgIDIzOCwgMjIxLCAgIDEs
ICAgMCwgICAwLCAgIDAsIA0KICAgICAxMjgsICAgMiwgICAwLCAgIDAsICAgNSwgICAwLCANCiAg
ICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgDQogICAgIDIyMCwgICAwLCAgIDAsICAg
MCwgIDUyLCAgIDEsIA0KQEAgLTc5LDkgKzc2LDkgQEAgY29uc3QgQllURSBnX1BTX1Bhc3N0aHJv
dWdoTHVtW10gPQ0KICAgICAgMzIsICA4MywgMTA0LCAgOTcsIDEwMCwgMTAxLCANCiAgICAgMTE0
LCAgMzIsICA2NywgMTExLCAxMDksIDExMiwgDQogICAgIDEwNSwgMTA4LCAxMDEsIDExNCwgIDMy
LCAgNTcsIA0KLSAgICAgNDYsICA1MCwgIDU3LCAgNDYsICA1NywgIDUzLCANCi0gICAgIDUwLCAg
NDYsICA1MSwgIDQ5LCAgNDksICA0OSwgDQotICAgICAgMCwgMTcxLCAxNzEsIDE3MSwgIDczLCAg
ODMsIA0KKyAgICAgNDYsICA1MSwgIDQ4LCAgNDYsICA1NywgIDUwLCANCisgICAgIDQ4LCAgNDgs
ICA0NiwgIDQ5LCAgNTQsICA1MSwgDQorICAgICA1NiwgIDUyLCAgIDAsIDE3MSwgIDczLCAgODMs
IA0KICAgICAgNzEsICA3OCwgIDgwLCAgIDAsICAgMCwgICAwLCANCiAgICAgICAyLCAgIDAsICAg
MCwgICAwLCAgIDgsICAgMCwgDQogICAgICAgMCwgICAwLCAgNTYsICAgMCwgICAwLCAgIDAsIA0K
QEAgLTE0NSw3ICsxNDIsNyBAQCBjb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hMdW1bXSA9DQog
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQotICAg
ICAgMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQogICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hsdW1hbHBoYTExcHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3No
YWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hsdW1hbHBoYTExcHMuaAkocmV2aXNpb24gMTU5MDkw
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFk
ZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdobHVtYWxwaGExMXBzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTIgKzEsOSBAQAogI2lmIDANCiAvLw0KLS8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIp
IEhMU0wgU2hhZGVyIENvbXBpbGVyIDkuMjkuOTUyLjMxMTENCi0vLw0KLS8vDQotLy8gICBmeGMg
L0UgUFNfUGFzc3Rocm91Z2hMdW1BbHBoYSAvVCBwc180XzAgL0ZoDQotLy8gICAgY29tcGlsZWQv
cGFzc3Rocm91Z2hsdW1hbHBoYTExcHMuaCBQYXNzdGhyb3VnaDExLmhsc2wNCisvLyBHZW5lcmF0
ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA5LjMwLjkyMDAuMTYzODQN
CiAvLw0KIC8vDQorLy8vDQogLy8gUmVzb3VyY2UgQmluZGluZ3M6DQogLy8NCiAvLyBOYW1lICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAgICAgICAgRGltIFNs
b3QgRWxlbWVudHMNCkBAIC0xOCwxNyArMTUsMTcgQEAKIC8vDQogLy8gSW5wdXQgc2lnbmF0dXJl
Og0KIC8vDQotLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5
c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0t
LS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0KLS8vIFNWX1BPU0lUSU9OICAgICAg
ICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgZmxvYXQgICAgICAgDQotLy8gVEVY
Q09PUkQgICAgICAgICAgICAgICAgIDAgICB4eSAgICAgICAgICAxICAgICBOT05FICBmbG9hdCAg
IHh5ICANCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lz
VmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0t
LS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9QT1NJVElPTiAgICAg
ICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAgICAgICANCisvLyBU
RVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5ICAgICAgICAgIDEgICAgIE5PTkUgICBmbG9h
dCAgIHh5ICANCiAvLw0KIC8vDQogLy8gT3V0cHV0IHNpZ25hdHVyZToNCiAvLw0KLS8vIE5hbWUg
ICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSBGb3JtYXQgICBV
c2VkDQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0t
LS0tIC0tLS0tLSAtLS0tLS0NCi0vLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgMCAgIHh5encg
ICAgICAgIDAgICBUQVJHRVQgIGZsb2F0ICAgeHl6dw0KKy8vIE5hbWUgICAgICAgICAgICAgICAg
IEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0t
LS0tLQ0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRB
UkdFVCAgIGZsb2F0ICAgeHl6dw0KIC8vDQogcHNfNF8wDQogZGNsX3NhbXBsZXIgczAsIG1vZGVf
ZGVmYXVsdA0KQEAgLTQ0LDEwICs0MSwxMCBAQCByZXQgDQogDQogY29uc3QgQllURSBnX1BTX1Bh
c3N0aHJvdWdoTHVtQWxwaGFbXSA9DQogew0KLSAgICAgNjgsICA4OCwgIDY2LCAgNjcsIDE5Nywg
IDcyLCANCi0gICAgMjUxLCAyMzYsICA1MywgMTA3LCAxODIsIDE0NiwgDQotICAgIDE5NiwgMjE5
LCAxMzAsIDE4NywgMTQwLCAxNTksIA0KLSAgICAyMTEsIDEyMywgICAxLCAgIDAsICAgMCwgICAw
LCANCisgICAgIDY4LCAgODgsICA2NiwgIDY3LCAxODUsICAxNCwgDQorICAgICA4NCwgMjIzLCAx
OTIsICA0MiwgIDE2LCAxMzMsIA0KKyAgICAgNDYsIDEwMCwgIDk1LCAyMjEsIDE4MywgIDk3LCAN
CisgICAgMTkyLCAgMjMsICAgMSwgICAwLCAgIDAsICAgMCwgDQogICAgIDEwOCwgICAyLCAgIDAs
ICAgMCwgICA1LCAgIDAsIA0KICAgICAgIDAsICAgMCwgIDUyLCAgIDAsICAgMCwgICAwLCANCiAg
ICAgMjIwLCAgIDAsICAgMCwgICAwLCAgNTIsICAgMSwgDQpAQCAtNzgsOSArNzUsOSBAQCBjb25z
dCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hMdW1BbHBoYVtdID0NCiAgICAgIDMyLCAgODMsIDEwNCwg
IDk3LCAxMDAsIDEwMSwgDQogICAgIDExNCwgIDMyLCAgNjcsIDExMSwgMTA5LCAxMTIsIA0KICAg
ICAxMDUsIDEwOCwgMTAxLCAxMTQsICAzMiwgIDU3LCANCi0gICAgIDQ2LCAgNTAsICA1NywgIDQ2
LCAgNTcsICA1MywgDQotICAgICA1MCwgIDQ2LCAgNTEsICA0OSwgIDQ5LCAgNDksIA0KLSAgICAg
IDAsIDE3MSwgMTcxLCAxNzEsICA3MywgIDgzLCANCisgICAgIDQ2LCAgNTEsICA0OCwgIDQ2LCAg
NTcsICA1MCwgDQorICAgICA0OCwgIDQ4LCAgNDYsICA0OSwgIDU0LCAgNTEsIA0KKyAgICAgNTYs
ICA1MiwgICAwLCAxNzEsICA3MywgIDgzLCANCiAgICAgIDcxLCAgNzgsICA4MCwgICAwLCAgIDAs
ICAgMCwgDQogICAgICAgMiwgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIA0KICAgICAgIDAsICAg
MCwgIDU2LCAgIDAsICAgMCwgICAwLCANCkBAIC0xNDAsNyArMTM3LDcgQEAgY29uc3QgQllURSBn
X1BTX1Bhc3N0aHJvdWdoTHVtQWxwaGFbXSA9DQogICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAw
LCAgIDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCiAgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCANCiAgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQogICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvcGFz
c3Rocm91Z2hwcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHBzLmgJKHJldmlz
aW9uIDE1OTA5MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHBzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTAgKzEsOCBAQAogI2lmIDANCiAvLw0KLS8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIp
IEhMU0wgU2hhZGVyIENvbXBpbGVyIDkuMjkuOTUyLjMxMTENCi0vLw0KLS8vICAgZnhjIC9FIHBh
c3N0aHJvdWdocHMgL1QgcHNfMl8wIC9GaCBjb21waWxlZC9wYXNzdGhyb3VnaHBzLmggQmxpdC5w
cw0KLS8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGls
ZXIgOS4zMC45MjAwLjE2Mzg0DQogLy8NCisvLy8NCiAvLyBQYXJhbWV0ZXJzOg0KIC8vDQogLy8g
ICBzYW1wbGVyMkQgdGV4Ow0KQEAgLTI5LDcgKzI3LDcgQEAKIGNvbnN0IEJZVEUgZ19wczIwX3Bh
c3N0aHJvdWdocHNbXSA9DQogew0KICAgICAgIDAsICAgMiwgMjU1LCAyNTUsIDI1NCwgMjU1LCAN
Ci0gICAgIDMyLCAgIDAsICA2NywgIDg0LCAgNjUsICA2NiwgDQorICAgICAzMywgICAwLCAgNjcs
ICA4NCwgIDY1LCAgNjYsIA0KICAgICAgMjgsICAgMCwgICAwLCAgIDAsICA3NSwgICAwLCANCiAg
ICAgICAwLCAgIDAsICAgMCwgICAyLCAyNTUsIDI1NSwgDQogICAgICAgMSwgICAwLCAgIDAsICAg
MCwgIDI4LCAgIDAsIA0KQEAgLTQ4LDE2ICs0NiwxNyBAQCBjb25zdCBCWVRFIGdfcHMyMF9wYXNz
dGhyb3VnaHBzW10gPQ0KICAgICAgNzYsICA4MywgIDc2LCAgMzIsICA4MywgMTA0LCANCiAgICAg
IDk3LCAxMDAsIDEwMSwgMTE0LCAgMzIsICA2NywgDQogICAgIDExMSwgMTA5LCAxMTIsIDEwNSwg
MTA4LCAxMDEsIA0KLSAgICAxMTQsICAzMiwgIDU3LCAgNDYsICA1MCwgIDU3LCANCi0gICAgIDQ2
LCAgNTcsICA1MywgIDUwLCAgNDYsICA1MSwgDQotICAgICA0OSwgIDQ5LCAgNDksICAgMCwgIDMx
LCAgIDAsIA0KLSAgICAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgMTI4LCANCi0gICAgICAwLCAg
IDAsICAgMywgMTc2LCAgMzEsICAgMCwgDQotICAgICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAx
NDQsIA0KLSAgICAgIDAsICAgOCwgIDE1LCAxNjAsICA2NiwgICAwLCANCi0gICAgICAwLCAgIDMs
ICAgMCwgICAwLCAgMTUsIDEyOCwgDQotICAgICAgMCwgICAwLCAyMjgsIDE3NiwgICAwLCAgIDgs
IA0KLSAgICAyMjgsIDE2MCwgICAxLCAgIDAsICAgMCwgICAyLCANCi0gICAgICAwLCAgIDgsICAx
NSwgMTI4LCAgIDAsICAgMCwgDQotICAgIDIyOCwgMTI4LCAyNTUsIDI1NSwgICAwLCAgIDANCisg
ICAgMTE0LCAgMzIsICA1NywgIDQ2LCAgNTEsICA0OCwgDQorICAgICA0NiwgIDU3LCAgNTAsICA0
OCwgIDQ4LCAgNDYsIA0KKyAgICAgNDksICA1NCwgIDUxLCAgNTYsICA1MiwgICAwLCANCisgICAg
MTcxLCAxNzEsICAzMSwgICAwLCAgIDAsICAgMiwgDQorICAgICAgMCwgICAwLCAgIDAsIDEyOCwg
ICAwLCAgIDAsIA0KKyAgICAgIDMsIDE3NiwgIDMxLCAgIDAsICAgMCwgICAyLCANCisgICAgICAw
LCAgIDAsICAgMCwgMTQ0LCAgIDAsICAgOCwgDQorICAgICAxNSwgMTYwLCAgNjYsICAgMCwgICAw
LCAgIDMsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAxMjgsICAgMCwgICAwLCANCisgICAgMjI4LCAx
NzYsICAgMCwgICA4LCAyMjgsIDE2MCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMiwgICAwLCAg
IDgsIA0KKyAgICAgMTUsIDEyOCwgICAwLCAgIDAsIDIyOCwgMTI4LCANCisgICAgMjU1LCAyNTUs
ICAgMCwgICAwDQogfTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2IxMXBzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9z
aGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiMTFwcy5oCShyZXZpc2lvbiAxNTkwOTApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMv
Y29tcGlsZWQvcGFzc3Rocm91Z2hyZ2IxMXBzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIgKzEs
OSBAQAogI2lmIDANCiAvLw0KLS8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hh
ZGVyIENvbXBpbGVyIDkuMjkuOTUyLjMxMTENCi0vLw0KLS8vDQotLy8gICBmeGMgL0UgUFNfUGFz
c3Rocm91Z2hSR0IgL1QgcHNfNF8wIC9GaCBjb21waWxlZC9wYXNzdGhyb3VnaHJnYjExcHMuaA0K
LS8vICAgIFBhc3N0aHJvdWdoMTEuaGxzbA0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIp
IEhMU0wgU2hhZGVyIENvbXBpbGVyIDkuMzAuOTIwMC4xNjM4NA0KIC8vDQogLy8NCisvLy8NCiAv
LyBSZXNvdXJjZSBCaW5kaW5nczoNCiAvLw0KIC8vIE5hbWUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUeXBlICBGb3JtYXQgICAgICAgICBEaW0gU2xvdCBFbGVtZW50cw0KQEAgLTE4
LDE3ICsxNSwxNyBAQAogLy8NCiAvLyBJbnB1dCBzaWduYXR1cmU6DQogLy8NCi0vLyBOYW1lICAg
ICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgRm9ybWF0ICAgVXNl
ZA0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0t
LSAtLS0tLS0gLS0tLS0tDQotLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAg
ICAgICAwICAgICAgUE9TICBmbG9hdCAgICAgICANCi0vLyBURVhDT09SRCAgICAgICAgICAgICAg
ICAgMCAgIHh5ICAgICAgICAgIDEgICAgIE5PTkUgIGZsb2F0ICAgeHkgIA0KKy8vIE5hbWUgICAg
ICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNl
ZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0t
LSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAg
ICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgICAgIA0KKy8vIFRFWENPT1JEICAgICAgICAgICAg
ICAgICAwICAgeHkgICAgICAgICAgMSAgICAgTk9ORSAgIGZsb2F0ICAgeHkgIA0KIC8vDQogLy8N
CiAvLyBPdXRwdXQgc2lnbmF0dXJlOg0KIC8vDQotLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5k
ZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCi0vLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0K
LS8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAg
ZmxvYXQgICB4eXp3DQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lz
dGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0t
LS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQorLy8gU1ZfVEFSR0VU
ICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICAgZmxvYXQgICB4eXp3
DQogLy8NCiBwc180XzANCiBkY2xfc2FtcGxlciBzMCwgbW9kZV9kZWZhdWx0DQpAQCAtNDUsMTAg
KzQyLDEwIEBAIHJldCANCiANCiBjb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hSR0JbXSA9DQog
ew0KLSAgICAgNjgsICA4OCwgIDY2LCAgNjcsIDI1MywgIDQ1LCANCi0gICAgIDEzLCAgMzQsIDEy
NSwgMTk0LCAgOTUsIDE0OSwgDQotICAgICAgMSwgIDk1LCAxOTQsIDI1MiwgMTE4LCAyMjgsIA0K
LSAgICAxNzgsIDIwMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDY4LCAgODgsICA2Niwg
IDY3LCAxMjUsIDE4NiwgDQorICAgIDI1MCwgMjQyLCAxMTMsIDI1NSwgIDU5LCAyMzksIA0KKyAg
ICAxMTksIDE1OCwgMjM3LCAgNzgsIDIyMCwgIDQzLCANCisgICAgMTYwLCAgNDYsICAgMSwgICAw
LCAgIDAsICAgMCwgDQogICAgIDEyOCwgICAyLCAgIDAsICAgMCwgICA1LCAgIDAsIA0KICAgICAg
IDAsICAgMCwgIDUyLCAgIDAsICAgMCwgICAwLCANCiAgICAgMjIwLCAgIDAsICAgMCwgICAwLCAg
NTIsICAgMSwgDQpAQCAtNzksOSArNzYsOSBAQCBjb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hS
R0JbXSA9DQogICAgICAzMiwgIDgzLCAxMDQsICA5NywgMTAwLCAxMDEsIA0KICAgICAxMTQsICAz
MiwgIDY3LCAxMTEsIDEwOSwgMTEyLCANCiAgICAgMTA1LCAxMDgsIDEwMSwgMTE0LCAgMzIsICA1
NywgDQotICAgICA0NiwgIDUwLCAgNTcsICA0NiwgIDU3LCAgNTMsIA0KLSAgICAgNTAsICA0Niwg
IDUxLCAgNDksICA0OSwgIDQ5LCANCi0gICAgICAwLCAxNzEsIDE3MSwgMTcxLCAgNzMsICA4Mywg
DQorICAgICA0NiwgIDUxLCAgNDgsICA0NiwgIDU3LCAgNTAsIA0KKyAgICAgNDgsICA0OCwgIDQ2
LCAgNDksICA1NCwgIDUxLCANCisgICAgIDU2LCAgNTIsICAgMCwgMTcxLCAgNzMsICA4MywgDQog
ICAgICA3MSwgIDc4LCAgODAsICAgMCwgICAwLCAgIDAsIA0KICAgICAgIDIsICAgMCwgICAwLCAg
IDAsICAgOCwgICAwLCANCiAgICAgICAwLCAgIDAsICA1NiwgICAwLCAgIDAsICAgMCwgDQpAQCAt
MTQ1LDcgKzE0Miw3IEBAIGNvbnN0IEJZVEUgZ19QU19QYXNzdGhyb3VnaFJHQltdID0NCiAgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQogICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCi0gICAgICAy
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCiAgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQogICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYmExMXBzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2Nv
bXBpbGVkL3Bhc3N0aHJvdWdocmdiYTExcHMuaAkocmV2aXNpb24gMTU5MDkwKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVk
L3Bhc3N0aHJvdWdocmdiYTExcHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMSw5IEBACiAj
aWYgMA0KIC8vDQotLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29t
cGlsZXIgOS4yOS45NTIuMzExMQ0KLS8vDQotLy8NCi0vLyAgIGZ4YyAvRSBQU19QYXNzdGhyb3Vn
aFJHQkEgL1QgcHNfNF8wIC9GaCBjb21waWxlZC9wYXNzdGhyb3VnaHJnYmExMXBzLmgNCi0vLyAg
ICBQYXNzdGhyb3VnaDExLmhsc2wNCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNM
IFNoYWRlciBDb21waWxlciA5LjMwLjkyMDAuMTYzODQNCiAvLw0KIC8vDQorLy8vDQogLy8gUmVz
b3VyY2UgQmluZGluZ3M6DQogLy8NCiAvLyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVHlwZSAgRm9ybWF0ICAgICAgICAgRGltIFNsb3QgRWxlbWVudHMNCkBAIC0xOCwxNyAr
MTUsMTcgQEAKIC8vDQogLy8gSW5wdXQgc2lnbmF0dXJlOg0KIC8vDQotLy8gTmFtZSAgICAgICAg
ICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCi0v
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0t
LS0tIC0tLS0tLQ0KLS8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAg
MCAgICAgIFBPUyAgZmxvYXQgICAgICAgDQotLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAg
ICB4eSAgICAgICAgICAxICAgICBOT05FICBmbG9hdCAgIHh5ICANCisvLyBOYW1lICAgICAgICAg
ICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0t
LS0tLSAtLS0tLS0NCisvLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAg
IDAgICAgICBQT1MgICBmbG9hdCAgICAgICANCisvLyBURVhDT09SRCAgICAgICAgICAgICAgICAg
MCAgIHh5ICAgICAgICAgIDEgICAgIE5PTkUgICBmbG9hdCAgIHh5ICANCiAvLw0KIC8vDQogLy8g
T3V0cHV0IHNpZ25hdHVyZToNCiAvLw0KLS8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAg
TWFzayBSZWdpc3RlciBTeXNWYWx1ZSBGb3JtYXQgICBVc2VkDQotLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLSAtLS0tLS0NCi0vLyBT
Vl9UQVJHRVQgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICBUQVJHRVQgIGZsb2F0
ICAgeHl6dw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBT
eXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0t
LS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1RBUkdFVCAgICAg
ICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgIGZsb2F0ICAgeHl6dw0KIC8v
DQogcHNfNF8wDQogZGNsX3NhbXBsZXIgczAsIG1vZGVfZGVmYXVsdA0KQEAgLTQyLDEwICszOSwx
MCBAQCByZXQgDQogDQogY29uc3QgQllURSBnX1BTX1Bhc3N0aHJvdWdoUkdCQVtdID0NCiB7DQot
ICAgICA2OCwgIDg4LCAgNjYsICA2NywgMTUyLCAgODYsIA0KLSAgICAyMjUsIDEwNywgMTU1LCAg
ODMsIDIxNiwgIDEzLCANCi0gICAgMTU0LCAyMTIsIDE0NCwgICA1LCAgODIsICA3NCwgDQotICAg
ICA5MCwgIDk4LCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNjgsICA4OCwgIDY2LCAgNjcs
IDE1MSwgMTUyLCANCisgICAgICA4LCAxMDIsIDE3NCwgMTM1LCAgNzYsICA1NywgDQorICAgIDEw
MCwgMTQ2LCAgNTksICA3NCwgMjA1LCAgMzUsIA0KKyAgICAyMDYsICAyMSwgICAxLCAgIDAsICAg
MCwgICAwLCANCiAgICAgIDgwLCAgIDIsICAgMCwgICAwLCAgIDUsICAgMCwgDQogICAgICAgMCwg
ICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIA0KICAgICAyMjAsICAgMCwgICAwLCAgIDAsICA1Miwg
ICAxLCANCkBAIC03Niw5ICs3Myw5IEBAIGNvbnN0IEJZVEUgZ19QU19QYXNzdGhyb3VnaFJHQkFb
XSA9DQogICAgICAzMiwgIDgzLCAxMDQsICA5NywgMTAwLCAxMDEsIA0KICAgICAxMTQsICAzMiwg
IDY3LCAxMTEsIDEwOSwgMTEyLCANCiAgICAgMTA1LCAxMDgsIDEwMSwgMTE0LCAgMzIsICA1Nywg
DQotICAgICA0NiwgIDUwLCAgNTcsICA0NiwgIDU3LCAgNTMsIA0KLSAgICAgNTAsICA0NiwgIDUx
LCAgNDksICA0OSwgIDQ5LCANCi0gICAgICAwLCAxNzEsIDE3MSwgMTcxLCAgNzMsICA4MywgDQor
ICAgICA0NiwgIDUxLCAgNDgsICA0NiwgIDU3LCAgNTAsIA0KKyAgICAgNDgsICA0OCwgIDQ2LCAg
NDksICA1NCwgIDUxLCANCisgICAgIDU2LCAgNTIsICAgMCwgMTcxLCAgNzMsICA4MywgDQogICAg
ICA3MSwgIDc4LCAgODAsICAgMCwgICAwLCAgIDAsIA0KICAgICAgIDIsICAgMCwgICAwLCAgIDAs
ICAgOCwgICAwLCANCiAgICAgICAwLCAgIDAsICA1NiwgICAwLCAgIDAsICAgMCwgDQpAQCAtMTM0
LDcgKzEzMSw3IEBAIGNvbnN0IEJZVEUgZ19QU19QYXNzdGhyb3VnaFJHQkFbXSA9DQogICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQogICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L3NoYWRlcnMvY29tcGlsZWQvc3RhbmRhcmR2cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9zdGFu
ZGFyZHZzLmgJKHJldmlzaW9uIDE1OTA5MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9zdGFuZGFyZHZzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTAgKzEsOCBAQAogI2lmIDANCiAvLw0KLS8vIEdlbmVyYXRlZCBieSBN
aWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDkuMjkuOTUyLjMxMTENCi0vLw0KLS8v
ICAgZnhjIC9FIHN0YW5kYXJkdnMgL1QgdnNfMl8wIC9GaCBjb21waWxlZC9zdGFuZGFyZHZzLmgg
QmxpdC52cw0KLS8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIg
Q29tcGlsZXIgOS4zMC45MjAwLjE2Mzg0DQogLy8NCisvLy8NCiAvLyBQYXJhbWV0ZXJzOg0KIC8v
DQogLy8gICBmbG9hdDQgaGFsZlBpeGVsU2l6ZTsNCkBAIC0yOSw3ICsyNyw3IEBACiBjb25zdCBC
WVRFIGdfdnMyMF9zdGFuZGFyZHZzW10gPQ0KIHsNCiAgICAgICAwLCAgIDIsIDI1NCwgMjU1LCAy
NTQsIDI1NSwgDQotICAgICAzNSwgICAwLCAgNjcsICA4NCwgIDY1LCAgNjYsIA0KKyAgICAgMzYs
ICAgMCwgIDY3LCAgODQsICA2NSwgIDY2LCANCiAgICAgIDI4LCAgIDAsICAgMCwgICAwLCAgODcs
ICAgMCwgDQogICAgICAgMCwgICAwLCAgIDAsICAgMiwgMjU0LCAyNTUsIA0KICAgICAgIDEsICAg
MCwgICAwLCAgIDAsICAyOCwgICAwLCANCkBAIC01MCwyMCArNDgsMjAgQEAgY29uc3QgQllURSBn
X3ZzMjBfc3RhbmRhcmR2c1tdID0NCiAgICAgIDc2LCAgODMsICA3NiwgIDMyLCAgODMsIDEwNCwg
DQogICAgICA5NywgMTAwLCAxMDEsIDExNCwgIDMyLCAgNjcsIA0KICAgICAxMTEsIDEwOSwgMTEy
LCAxMDUsIDEwOCwgMTAxLCANCi0gICAgMTE0LCAgMzIsICA1NywgIDQ2LCAgNTAsICA1NywgDQot
ICAgICA0NiwgIDU3LCAgNTMsICA1MCwgIDQ2LCAgNTEsIA0KLSAgICAgNDksICA0OSwgIDQ5LCAg
IDAsICA4MSwgICAwLCANCi0gICAgICAwLCAgIDUsICAgMSwgICAwLCAgMTUsIDE2MCwgDQotICAg
ICAgMCwgICAwLCAgIDAsICA2MywgICAwLCAgIDAsIA0KLSAgICAgIDAsIDE5MSwgICAwLCAgIDAs
IDEyOCwgIDYzLCANCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgMzEsICAgMCwgDQotICAgICAg
MCwgICAyLCAgIDAsICAgMCwgICAwLCAxMjgsIA0KLSAgICAgIDAsICAgMCwgIDE1LCAxNDQsICAg
MiwgICAwLCANCi0gICAgICAwLCAgIDMsICAgMCwgICAwLCAgMTUsIDE5MiwgDQotICAgICAgMCwg
ICAwLCAyMjgsIDE0NCwgICAwLCAgIDAsIA0KLSAgICAyMjgsIDE2MCwgICA0LCAgIDAsICAgMCwg
ICA0LCANCi0gICAgICAwLCAgIDAsICAxNSwgMjI0LCAgIDAsICAgMCwgDQotICAgIDIyOCwgMTQ0
LCAgIDEsICAgMCwgMTY0LCAxNjAsIA0KLSAgICAgIDEsICAgMCwgMjQwLCAxNjAsIDI1NSwgMjU1
LCANCi0gICAgICAwLCAgIDANCisgICAgMTE0LCAgMzIsICA1NywgIDQ2LCAgNTEsICA0OCwgDQor
ICAgICA0NiwgIDU3LCAgNTAsICA0OCwgIDQ4LCAgNDYsIA0KKyAgICAgNDksICA1NCwgIDUxLCAg
NTYsICA1MiwgICAwLCANCisgICAgMTcxLCAxNzEsICA4MSwgICAwLCAgIDAsICAgNSwgDQorICAg
ICAgMSwgICAwLCAgMTUsIDE2MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICA2MywgICAwLCAgIDAs
ICAgMCwgMTkxLCANCisgICAgICAwLCAgIDAsIDEyOCwgIDYzLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgMzEsICAgMCwgICAwLCAgIDIsIA0KKyAgICAgIDAsICAgMCwgICAwLCAxMjgsICAg
MCwgICAwLCANCisgICAgIDE1LCAxNDQsICAgMiwgICAwLCAgIDAsICAgMywgDQorICAgICAgMCwg
ICAwLCAgMTUsIDE5MiwgICAwLCAgIDAsIA0KKyAgICAyMjgsIDE0NCwgICAwLCAgIDAsIDIyOCwg
MTYwLCANCisgICAgICA0LCAgIDAsICAgMCwgICA0LCAgIDAsICAgMCwgDQorICAgICAxNSwgMjI0
LCAgIDAsICAgMCwgMjI4LCAxNDQsIA0KKyAgICAgIDEsICAgMCwgMTY0LCAxNjAsICAgMSwgICAw
LCANCisgICAgMjQwLCAxNjAsIDI1NSwgMjU1LCAgIDAsICAgMA0KIH07DQpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L211cm11cmhhc2gvTXVybXVySGFzaDMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0
eS9tdXJtdXJoYXNoL011cm11ckhhc2gzLmNwcAkocmV2aXNpb24gMTU5MDkwKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L211cm11cmhhc2gvTXVybXVySGFzaDMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMzNCArMSwzMzQgQEAKLS8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0NCi0vLyBNdXJtdXJIYXNoMyB3YXMgd3JpdHRlbiBieSBBdXN0aW4gQXBwbGVieSwgYW5k
IGlzIHBsYWNlZCBpbiB0aGUgcHVibGljDQotLy8gZG9tYWluLiBUaGUgYXV0aG9yIGhlcmVieSBk
aXNjbGFpbXMgY29weXJpZ2h0IHRvIHRoaXMgc291cmNlIGNvZGUuDQotDQotLy8gTm90ZSAtIFRo
ZSB4ODYgYW5kIHg2NCB2ZXJzaW9ucyBkbyBfbm90XyBwcm9kdWNlIHRoZSBzYW1lIHJlc3VsdHMs
IGFzIHRoZQ0KLS8vIGFsZ29yaXRobXMgYXJlIG9wdGltaXplZCBmb3IgdGhlaXIgcmVzcGVjdGl2
ZSBwbGF0Zm9ybXMuIFlvdSBjYW4gc3RpbGwNCi0vLyBjb21waWxlIGFuZCBydW4gYW55IG9mIHRo
ZW0gb24gYW55IHBsYXRmb3JtLCBidXQgeW91ciBwZXJmb3JtYW5jZSB3aXRoIHRoZQ0KLS8vIG5v
bi1uYXRpdmUgdmVyc2lvbiB3aWxsIGJlIGxlc3MgdGhhbiBvcHRpbWFsLg0KLQ0KLSNpbmNsdWRl
ICJNdXJtdXJIYXNoMy5oIg0KLQ0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0vLyBQbGF0Zm9y
bS1zcGVjaWZpYyBmdW5jdGlvbnMgYW5kIG1hY3Jvcw0KLQ0KLS8vIE1pY3Jvc29mdCBWaXN1YWwg
U3R1ZGlvDQotDQotI2lmIGRlZmluZWQoX01TQ19WRVIpDQotDQotI2RlZmluZSBGT1JDRV9JTkxJ
TkUgICAgX19mb3JjZWlubGluZQ0KLQ0KLSNpbmNsdWRlIDxzdGRsaWIuaD4NCi0NCi0jZGVmaW5l
IFJPVEwzMih4LHkpIF9yb3RsKHgseSkNCi0jZGVmaW5lIFJPVEw2NCh4LHkpIF9yb3RsNjQoeCx5
KQ0KLQ0KLSNkZWZpbmUgQklHX0NPTlNUQU5UKHgpICh4KQ0KLQ0KLS8vIE90aGVyIGNvbXBpbGVy
cw0KLQ0KLSNlbHNlICAgLy8gZGVmaW5lZChfTVNDX1ZFUikNCi0NCi0jZGVmaW5lIEZPUkNFX0lO
TElORSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkNCi0NCi1pbmxpbmUgdWludDMyX3Qg
cm90bDMyICggdWludDMyX3QgeCwgaW50OF90IHIgKQ0KLXsNCi0gIHJldHVybiAoeCA8PCByKSB8
ICh4ID4+ICgzMiAtIHIpKTsNCi19DQotDQotaW5saW5lIHVpbnQ2NF90IHJvdGw2NCAoIHVpbnQ2
NF90IHgsIGludDhfdCByICkNCi17DQotICByZXR1cm4gKHggPDwgcikgfCAoeCA+PiAoNjQgLSBy
KSk7DQotfQ0KLQ0KLSNkZWZpbmUgUk9UTDMyKHgseSkgcm90bDMyKHgseSkNCi0jZGVmaW5lIFJP
VEw2NCh4LHkpIHJvdGw2NCh4LHkpDQotDQotI2RlZmluZSBCSUdfQ09OU1RBTlQoeCkgKHgjI0xM
VSkNCi0NCi0jZW5kaWYgLy8gIWRlZmluZWQoX01TQ19WRVIpDQotDQotLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KLS8vIEJsb2NrIHJlYWQgLSBpZiB5b3VyIHBsYXRmb3JtIG5lZWRzIHRvIGRvIGVu
ZGlhbi1zd2FwcGluZyBvciBjYW4gb25seQ0KLS8vIGhhbmRsZSBhbGlnbmVkIHJlYWRzLCBkbyB0
aGUgY29udmVyc2lvbiBoZXJlDQotDQotRk9SQ0VfSU5MSU5FIHVpbnQzMl90IGdldGJsb2NrICgg
Y29uc3QgdWludDMyX3QgKiBwLCBpbnQgaSApDQotew0KLSAgcmV0dXJuIHBbaV07DQotfQ0KLQ0K
LUZPUkNFX0lOTElORSB1aW50NjRfdCBnZXRibG9jayAoIGNvbnN0IHVpbnQ2NF90ICogcCwgaW50
IGkgKQ0KLXsNCi0gIHJldHVybiBwW2ldOw0KLX0NCi0NCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQotLy8gRmluYWxpemF0aW9uIG1peCAtIGZvcmNlIGFsbCBiaXRzIG9mIGEgaGFzaCBibG9jayB0
byBhdmFsYW5jaGUNCi0NCi1GT1JDRV9JTkxJTkUgdWludDMyX3QgZm1peCAoIHVpbnQzMl90IGgg
KQ0KLXsNCi0gIGggXj0gaCA+PiAxNjsNCi0gIGggKj0gMHg4NWViY2E2YjsNCi0gIGggXj0gaCA+
PiAxMzsNCi0gIGggKj0gMHhjMmIyYWUzNTsNCi0gIGggXj0gaCA+PiAxNjsNCi0NCi0gIHJldHVy
biBoOw0KLX0NCi0NCi0vLy0tLS0tLS0tLS0NCi0NCi1GT1JDRV9JTkxJTkUgdWludDY0X3QgZm1p
eCAoIHVpbnQ2NF90IGsgKQ0KLXsNCi0gIGsgXj0gayA+PiAzMzsNCi0gIGsgKj0gQklHX0NPTlNU
QU5UKDB4ZmY1MWFmZDdlZDU1OGNjZCk7DQotICBrIF49IGsgPj4gMzM7DQotICBrICo9IEJJR19D
T05TVEFOVCgweGM0Y2ViOWZlMWE4NWVjNTMpOw0KLSAgayBePSBrID4+IDMzOw0KLQ0KLSAgcmV0
dXJuIGs7DQotfQ0KLQ0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0NCi12b2lkIE11cm11ckhh
c2gzX3g4Nl8zMiAoIGNvbnN0IHZvaWQgKiBrZXksIGludCBsZW4sDQotICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50MzJfdCBzZWVkLCB2b2lkICogb3V0ICkNCi17DQotICBjb25zdCB1aW50
OF90ICogZGF0YSA9IChjb25zdCB1aW50OF90KilrZXk7DQotICBjb25zdCBpbnQgbmJsb2NrcyA9
IGxlbiAvIDQ7DQotDQotICB1aW50MzJfdCBoMSA9IHNlZWQ7DQotDQotICBjb25zdCB1aW50MzJf
dCBjMSA9IDB4Y2M5ZTJkNTE7DQotICBjb25zdCB1aW50MzJfdCBjMiA9IDB4MWI4NzM1OTM7DQot
DQotICAvLy0tLS0tLS0tLS0NCi0gIC8vIGJvZHkNCi0NCi0gIGNvbnN0IHVpbnQzMl90ICogYmxv
Y2tzID0gKGNvbnN0IHVpbnQzMl90ICopKGRhdGEgKyBuYmxvY2tzKjQpOw0KLQ0KLSAgZm9yKGlu
dCBpID0gLW5ibG9ja3M7IGk7IGkrKykNCi0gIHsNCi0gICAgdWludDMyX3QgazEgPSBnZXRibG9j
ayhibG9ja3MsaSk7DQotDQotICAgIGsxICo9IGMxOw0KLSAgICBrMSA9IFJPVEwzMihrMSwxNSk7
DQotICAgIGsxICo9IGMyOw0KLSAgICANCi0gICAgaDEgXj0gazE7DQotICAgIGgxID0gUk9UTDMy
KGgxLDEzKTsgDQotICAgIGgxID0gaDEqNSsweGU2NTQ2YjY0Ow0KLSAgfQ0KLQ0KLSAgLy8tLS0t
LS0tLS0tDQotICAvLyB0YWlsDQotDQotICBjb25zdCB1aW50OF90ICogdGFpbCA9IChjb25zdCB1
aW50OF90KikoZGF0YSArIG5ibG9ja3MqNCk7DQotDQotICB1aW50MzJfdCBrMSA9IDA7DQotDQot
ICBzd2l0Y2gobGVuICYgMykNCi0gIHsNCi0gIGNhc2UgMzogazEgXj0gdGFpbFsyXSA8PCAxNjsN
Ci0gIGNhc2UgMjogazEgXj0gdGFpbFsxXSA8PCA4Ow0KLSAgY2FzZSAxOiBrMSBePSB0YWlsWzBd
Ow0KLSAgICAgICAgICBrMSAqPSBjMTsgazEgPSBST1RMMzIoazEsMTUpOyBrMSAqPSBjMjsgaDEg
Xj0gazE7DQotICB9Ow0KLQ0KLSAgLy8tLS0tLS0tLS0tDQotICAvLyBmaW5hbGl6YXRpb24NCi0N
Ci0gIGgxIF49IGxlbjsNCi0NCi0gIGgxID0gZm1peChoMSk7DQotDQotICAqKHVpbnQzMl90Kilv
dXQgPSBoMTsNCi19IA0KLQ0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0NCi12b2lkIE11cm11
ckhhc2gzX3g4Nl8xMjggKCBjb25zdCB2b2lkICoga2V5LCBjb25zdCBpbnQgbGVuLA0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNlZWQsIHZvaWQgKiBvdXQgKQ0KLXsNCi0g
IGNvbnN0IHVpbnQ4X3QgKiBkYXRhID0gKGNvbnN0IHVpbnQ4X3QqKWtleTsNCi0gIGNvbnN0IGlu
dCBuYmxvY2tzID0gbGVuIC8gMTY7DQotDQotICB1aW50MzJfdCBoMSA9IHNlZWQ7DQotICB1aW50
MzJfdCBoMiA9IHNlZWQ7DQotICB1aW50MzJfdCBoMyA9IHNlZWQ7DQotICB1aW50MzJfdCBoNCA9
IHNlZWQ7DQotDQotICBjb25zdCB1aW50MzJfdCBjMSA9IDB4MjM5Yjk2MWI7IA0KLSAgY29uc3Qg
dWludDMyX3QgYzIgPSAweGFiMGU5Nzg5Ow0KLSAgY29uc3QgdWludDMyX3QgYzMgPSAweDM4YjM0
YWU1OyANCi0gIGNvbnN0IHVpbnQzMl90IGM0ID0gMHhhMWUzOGI5MzsNCi0NCi0gIC8vLS0tLS0t
LS0tLQ0KLSAgLy8gYm9keQ0KLQ0KLSAgY29uc3QgdWludDMyX3QgKiBibG9ja3MgPSAoY29uc3Qg
dWludDMyX3QgKikoZGF0YSArIG5ibG9ja3MqMTYpOw0KLQ0KLSAgZm9yKGludCBpID0gLW5ibG9j
a3M7IGk7IGkrKykNCi0gIHsNCi0gICAgdWludDMyX3QgazEgPSBnZXRibG9jayhibG9ja3MsaSo0
KzApOw0KLSAgICB1aW50MzJfdCBrMiA9IGdldGJsb2NrKGJsb2NrcyxpKjQrMSk7DQotICAgIHVp
bnQzMl90IGszID0gZ2V0YmxvY2soYmxvY2tzLGkqNCsyKTsNCi0gICAgdWludDMyX3QgazQgPSBn
ZXRibG9jayhibG9ja3MsaSo0KzMpOw0KLQ0KLSAgICBrMSAqPSBjMTsgazEgID0gUk9UTDMyKGsx
LDE1KTsgazEgKj0gYzI7IGgxIF49IGsxOw0KLQ0KLSAgICBoMSA9IFJPVEwzMihoMSwxOSk7IGgx
ICs9IGgyOyBoMSA9IGgxKjUrMHg1NjFjY2QxYjsNCi0NCi0gICAgazIgKj0gYzI7IGsyICA9IFJP
VEwzMihrMiwxNik7IGsyICo9IGMzOyBoMiBePSBrMjsNCi0NCi0gICAgaDIgPSBST1RMMzIoaDIs
MTcpOyBoMiArPSBoMzsgaDIgPSBoMio1KzB4MGJjYWE3NDc7DQotDQotICAgIGszICo9IGMzOyBr
MyAgPSBST1RMMzIoazMsMTcpOyBrMyAqPSBjNDsgaDMgXj0gazM7DQotDQotICAgIGgzID0gUk9U
TDMyKGgzLDE1KTsgaDMgKz0gaDQ7IGgzID0gaDMqNSsweDk2Y2QxYzM1Ow0KLQ0KLSAgICBrNCAq
PSBjNDsgazQgID0gUk9UTDMyKGs0LDE4KTsgazQgKj0gYzE7IGg0IF49IGs0Ow0KLQ0KLSAgICBo
NCA9IFJPVEwzMihoNCwxMyk7IGg0ICs9IGgxOyBoNCA9IGg0KjUrMHgzMmFjM2IxNzsNCi0gIH0N
Ci0NCi0gIC8vLS0tLS0tLS0tLQ0KLSAgLy8gdGFpbA0KLQ0KLSAgY29uc3QgdWludDhfdCAqIHRh
aWwgPSAoY29uc3QgdWludDhfdCopKGRhdGEgKyBuYmxvY2tzKjE2KTsNCi0NCi0gIHVpbnQzMl90
IGsxID0gMDsNCi0gIHVpbnQzMl90IGsyID0gMDsNCi0gIHVpbnQzMl90IGszID0gMDsNCi0gIHVp
bnQzMl90IGs0ID0gMDsNCi0NCi0gIHN3aXRjaChsZW4gJiAxNSkNCi0gIHsNCi0gIGNhc2UgMTU6
IGs0IF49IHRhaWxbMTRdIDw8IDE2Ow0KLSAgY2FzZSAxNDogazQgXj0gdGFpbFsxM10gPDwgODsN
Ci0gIGNhc2UgMTM6IGs0IF49IHRhaWxbMTJdIDw8IDA7DQotICAgICAgICAgICBrNCAqPSBjNDsg
azQgID0gUk9UTDMyKGs0LDE4KTsgazQgKj0gYzE7IGg0IF49IGs0Ow0KLQ0KLSAgY2FzZSAxMjog
azMgXj0gdGFpbFsxMV0gPDwgMjQ7DQotICBjYXNlIDExOiBrMyBePSB0YWlsWzEwXSA8PCAxNjsN
Ci0gIGNhc2UgMTA6IGszIF49IHRhaWxbIDldIDw8IDg7DQotICBjYXNlICA5OiBrMyBePSB0YWls
WyA4XSA8PCAwOw0KLSAgICAgICAgICAgazMgKj0gYzM7IGszICA9IFJPVEwzMihrMywxNyk7IGsz
ICo9IGM0OyBoMyBePSBrMzsNCi0NCi0gIGNhc2UgIDg6IGsyIF49IHRhaWxbIDddIDw8IDI0Ow0K
LSAgY2FzZSAgNzogazIgXj0gdGFpbFsgNl0gPDwgMTY7DQotICBjYXNlICA2OiBrMiBePSB0YWls
WyA1XSA8PCA4Ow0KLSAgY2FzZSAgNTogazIgXj0gdGFpbFsgNF0gPDwgMDsNCi0gICAgICAgICAg
IGsyICo9IGMyOyBrMiAgPSBST1RMMzIoazIsMTYpOyBrMiAqPSBjMzsgaDIgXj0gazI7DQotDQot
ICBjYXNlICA0OiBrMSBePSB0YWlsWyAzXSA8PCAyNDsNCi0gIGNhc2UgIDM6IGsxIF49IHRhaWxb
IDJdIDw8IDE2Ow0KLSAgY2FzZSAgMjogazEgXj0gdGFpbFsgMV0gPDwgODsNCi0gIGNhc2UgIDE6
IGsxIF49IHRhaWxbIDBdIDw8IDA7DQotICAgICAgICAgICBrMSAqPSBjMTsgazEgID0gUk9UTDMy
KGsxLDE1KTsgazEgKj0gYzI7IGgxIF49IGsxOw0KLSAgfTsNCi0NCi0gIC8vLS0tLS0tLS0tLQ0K
LSAgLy8gZmluYWxpemF0aW9uDQotDQotICBoMSBePSBsZW47IGgyIF49IGxlbjsgaDMgXj0gbGVu
OyBoNCBePSBsZW47DQotDQotICBoMSArPSBoMjsgaDEgKz0gaDM7IGgxICs9IGg0Ow0KLSAgaDIg
Kz0gaDE7IGgzICs9IGgxOyBoNCArPSBoMTsNCi0NCi0gIGgxID0gZm1peChoMSk7DQotICBoMiA9
IGZtaXgoaDIpOw0KLSAgaDMgPSBmbWl4KGgzKTsNCi0gIGg0ID0gZm1peChoNCk7DQotDQotICBo
MSArPSBoMjsgaDEgKz0gaDM7IGgxICs9IGg0Ow0KLSAgaDIgKz0gaDE7IGgzICs9IGgxOyBoNCAr
PSBoMTsNCi0NCi0gICgodWludDMyX3QqKW91dClbMF0gPSBoMTsNCi0gICgodWludDMyX3QqKW91
dClbMV0gPSBoMjsNCi0gICgodWludDMyX3QqKW91dClbMl0gPSBoMzsNCi0gICgodWludDMyX3Qq
KW91dClbM10gPSBoNDsNCi19DQotDQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLQ0KLXZvaWQg
TXVybXVySGFzaDNfeDY0XzEyOCAoIGNvbnN0IHZvaWQgKiBrZXksIGNvbnN0IGludCBsZW4sDQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDMyX3Qgc2VlZCwgdm9pZCAqIG91
dCApDQotew0KLSAgY29uc3QgdWludDhfdCAqIGRhdGEgPSAoY29uc3QgdWludDhfdCopa2V5Ow0K
LSAgY29uc3QgaW50IG5ibG9ja3MgPSBsZW4gLyAxNjsNCi0NCi0gIHVpbnQ2NF90IGgxID0gc2Vl
ZDsNCi0gIHVpbnQ2NF90IGgyID0gc2VlZDsNCi0NCi0gIGNvbnN0IHVpbnQ2NF90IGMxID0gQklH
X0NPTlNUQU5UKDB4ODdjMzdiOTExMTQyNTNkNSk7DQotICBjb25zdCB1aW50NjRfdCBjMiA9IEJJ
R19DT05TVEFOVCgweDRjZjVhZDQzMjc0NTkzN2YpOw0KLQ0KLSAgLy8tLS0tLS0tLS0tDQotICAv
LyBib2R5DQotDQotICBjb25zdCB1aW50NjRfdCAqIGJsb2NrcyA9IChjb25zdCB1aW50NjRfdCAq
KShkYXRhKTsNCi0NCi0gIGZvcihpbnQgaSA9IDA7IGkgPCBuYmxvY2tzOyBpKyspDQotICB7DQot
ICAgIHVpbnQ2NF90IGsxID0gZ2V0YmxvY2soYmxvY2tzLGkqMiswKTsNCi0gICAgdWludDY0X3Qg
azIgPSBnZXRibG9jayhibG9ja3MsaSoyKzEpOw0KLQ0KLSAgICBrMSAqPSBjMTsgazEgID0gUk9U
TDY0KGsxLDMxKTsgazEgKj0gYzI7IGgxIF49IGsxOw0KLQ0KLSAgICBoMSA9IFJPVEw2NChoMSwy
Nyk7IGgxICs9IGgyOyBoMSA9IGgxKjUrMHg1MmRjZTcyOTsNCi0NCi0gICAgazIgKj0gYzI7IGsy
ICA9IFJPVEw2NChrMiwzMyk7IGsyICo9IGMxOyBoMiBePSBrMjsNCi0NCi0gICAgaDIgPSBST1RM
NjQoaDIsMzEpOyBoMiArPSBoMTsgaDIgPSBoMio1KzB4Mzg0OTVhYjU7DQotICB9DQotDQotICAv
Ly0tLS0tLS0tLS0NCi0gIC8vIHRhaWwNCi0NCi0gIGNvbnN0IHVpbnQ4X3QgKiB0YWlsID0gKGNv
bnN0IHVpbnQ4X3QqKShkYXRhICsgbmJsb2NrcyoxNik7DQotDQotICB1aW50NjRfdCBrMSA9IDA7
DQotICB1aW50NjRfdCBrMiA9IDA7DQotDQotICBzd2l0Y2gobGVuICYgMTUpDQotICB7DQotICBj
YXNlIDE1OiBrMiBePSB1aW50NjRfdCh0YWlsWzE0XSkgPDwgNDg7DQotICBjYXNlIDE0OiBrMiBe
PSB1aW50NjRfdCh0YWlsWzEzXSkgPDwgNDA7DQotICBjYXNlIDEzOiBrMiBePSB1aW50NjRfdCh0
YWlsWzEyXSkgPDwgMzI7DQotICBjYXNlIDEyOiBrMiBePSB1aW50NjRfdCh0YWlsWzExXSkgPDwg
MjQ7DQotICBjYXNlIDExOiBrMiBePSB1aW50NjRfdCh0YWlsWzEwXSkgPDwgMTY7DQotICBjYXNl
IDEwOiBrMiBePSB1aW50NjRfdCh0YWlsWyA5XSkgPDwgODsNCi0gIGNhc2UgIDk6IGsyIF49IHVp
bnQ2NF90KHRhaWxbIDhdKSA8PCAwOw0KLSAgICAgICAgICAgazIgKj0gYzI7IGsyICA9IFJPVEw2
NChrMiwzMyk7IGsyICo9IGMxOyBoMiBePSBrMjsNCi0NCi0gIGNhc2UgIDg6IGsxIF49IHVpbnQ2
NF90KHRhaWxbIDddKSA8PCA1NjsNCi0gIGNhc2UgIDc6IGsxIF49IHVpbnQ2NF90KHRhaWxbIDZd
KSA8PCA0ODsNCi0gIGNhc2UgIDY6IGsxIF49IHVpbnQ2NF90KHRhaWxbIDVdKSA8PCA0MDsNCi0g
IGNhc2UgIDU6IGsxIF49IHVpbnQ2NF90KHRhaWxbIDRdKSA8PCAzMjsNCi0gIGNhc2UgIDQ6IGsx
IF49IHVpbnQ2NF90KHRhaWxbIDNdKSA8PCAyNDsNCi0gIGNhc2UgIDM6IGsxIF49IHVpbnQ2NF90
KHRhaWxbIDJdKSA8PCAxNjsNCi0gIGNhc2UgIDI6IGsxIF49IHVpbnQ2NF90KHRhaWxbIDFdKSA8
PCA4Ow0KLSAgY2FzZSAgMTogazEgXj0gdWludDY0X3QodGFpbFsgMF0pIDw8IDA7DQotICAgICAg
ICAgICBrMSAqPSBjMTsgazEgID0gUk9UTDY0KGsxLDMxKTsgazEgKj0gYzI7IGgxIF49IGsxOw0K
LSAgfTsNCi0NCi0gIC8vLS0tLS0tLS0tLQ0KLSAgLy8gZmluYWxpemF0aW9uDQotDQotICBoMSBe
PSBsZW47IGgyIF49IGxlbjsNCi0NCi0gIGgxICs9IGgyOw0KLSAgaDIgKz0gaDE7DQotDQotICBo
MSA9IGZtaXgoaDEpOw0KLSAgaDIgPSBmbWl4KGgyKTsNCi0NCi0gIGgxICs9IGgyOw0KLSAgaDIg
Kz0gaDE7DQotDQotICAoKHVpbnQ2NF90KilvdXQpWzBdID0gaDE7DQotICAoKHVpbnQ2NF90Kilv
dXQpWzFdID0gaDI7DQotfQ0KLQ0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLyBNdXJtdXJIYXNoMyB3YXMgd3JpdHRlbiBieSBBdXN0aW4gQXBwbGVi
eSwgYW5kIGlzIHBsYWNlZCBpbiB0aGUgcHVibGljCisvLyBkb21haW4uIFRoZSBhdXRob3IgaGVy
ZWJ5IGRpc2NsYWltcyBjb3B5cmlnaHQgdG8gdGhpcyBzb3VyY2UgY29kZS4KKworLy8gTm90ZSAt
IFRoZSB4ODYgYW5kIHg2NCB2ZXJzaW9ucyBkbyBfbm90XyBwcm9kdWNlIHRoZSBzYW1lIHJlc3Vs
dHMsIGFzIHRoZQorLy8gYWxnb3JpdGhtcyBhcmUgb3B0aW1pemVkIGZvciB0aGVpciByZXNwZWN0
aXZlIHBsYXRmb3Jtcy4gWW91IGNhbiBzdGlsbAorLy8gY29tcGlsZSBhbmQgcnVuIGFueSBvZiB0
aGVtIG9uIGFueSBwbGF0Zm9ybSwgYnV0IHlvdXIgcGVyZm9ybWFuY2Ugd2l0aCB0aGUKKy8vIG5v
bi1uYXRpdmUgdmVyc2lvbiB3aWxsIGJlIGxlc3MgdGhhbiBvcHRpbWFsLgorCisjaW5jbHVkZSAi
TXVybXVySGFzaDMuaCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gUGxhdGZvcm0tc3Bl
Y2lmaWMgZnVuY3Rpb25zIGFuZCBtYWNyb3MKKworLy8gTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8K
KworI2lmIGRlZmluZWQoX01TQ19WRVIpCisKKyNkZWZpbmUgRk9SQ0VfSU5MSU5FCV9fZm9yY2Vp
bmxpbmUKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjZGVmaW5lIFJPVEwzMih4LHkpCV9yb3Rs
KHgseSkKKyNkZWZpbmUgUk9UTDY0KHgseSkJX3JvdGw2NCh4LHkpCisKKyNkZWZpbmUgQklHX0NP
TlNUQU5UKHgpICh4KQorCisvLyBPdGhlciBjb21waWxlcnMKKworI2Vsc2UJLy8gZGVmaW5lZChf
TVNDX1ZFUikKKworI2RlZmluZQlGT1JDRV9JTkxJTkUgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lu
bGluZSkpCisKK2lubGluZSB1aW50MzJfdCByb3RsMzIgKCB1aW50MzJfdCB4LCBpbnQ4X3QgciAp
Cit7CisgIHJldHVybiAoeCA8PCByKSB8ICh4ID4+ICgzMiAtIHIpKTsKK30KKworaW5saW5lIHVp
bnQ2NF90IHJvdGw2NCAoIHVpbnQ2NF90IHgsIGludDhfdCByICkKK3sKKyAgcmV0dXJuICh4IDw8
IHIpIHwgKHggPj4gKDY0IC0gcikpOworfQorCisjZGVmaW5lCVJPVEwzMih4LHkpCXJvdGwzMih4
LHkpCisjZGVmaW5lIFJPVEw2NCh4LHkpCXJvdGw2NCh4LHkpCisKKyNkZWZpbmUgQklHX0NPTlNU
QU5UKHgpICh4IyNMTFUpCisKKyNlbmRpZiAvLyAhZGVmaW5lZChfTVNDX1ZFUikKKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8gQmxvY2sgcmVhZCAtIGlmIHlvdXIgcGxhdGZvcm0gbmVlZHMg
dG8gZG8gZW5kaWFuLXN3YXBwaW5nIG9yIGNhbiBvbmx5CisvLyBoYW5kbGUgYWxpZ25lZCByZWFk
cywgZG8gdGhlIGNvbnZlcnNpb24gaGVyZQorCitGT1JDRV9JTkxJTkUgdWludDMyX3QgZ2V0Ymxv
Y2sgKCBjb25zdCB1aW50MzJfdCAqIHAsIGludCBpICkKK3sKKyAgcmV0dXJuIHBbaV07Cit9CisK
K0ZPUkNFX0lOTElORSB1aW50NjRfdCBnZXRibG9jayAoIGNvbnN0IHVpbnQ2NF90ICogcCwgaW50
IGkgKQoreworICByZXR1cm4gcFtpXTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8g
RmluYWxpemF0aW9uIG1peCAtIGZvcmNlIGFsbCBiaXRzIG9mIGEgaGFzaCBibG9jayB0byBhdmFs
YW5jaGUKKworRk9SQ0VfSU5MSU5FIHVpbnQzMl90IGZtaXggKCB1aW50MzJfdCBoICkKK3sKKyAg
aCBePSBoID4+IDE2OworICBoICo9IDB4ODVlYmNhNmI7CisgIGggXj0gaCA+PiAxMzsKKyAgaCAq
PSAweGMyYjJhZTM1OworICBoIF49IGggPj4gMTY7CisKKyAgcmV0dXJuIGg7Cit9CisKKy8vLS0t
LS0tLS0tLQorCitGT1JDRV9JTkxJTkUgdWludDY0X3QgZm1peCAoIHVpbnQ2NF90IGsgKQorewor
ICBrIF49IGsgPj4gMzM7CisgIGsgKj0gQklHX0NPTlNUQU5UKDB4ZmY1MWFmZDdlZDU1OGNjZCk7
CisgIGsgXj0gayA+PiAzMzsKKyAgayAqPSBCSUdfQ09OU1RBTlQoMHhjNGNlYjlmZTFhODVlYzUz
KTsKKyAgayBePSBrID4+IDMzOworCisgIHJldHVybiBrOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK3ZvaWQgTXVybXVySGFzaDNfeDg2XzMyICggY29uc3Qgdm9pZCAqIGtleSwgaW50
IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc2VlZCwgdm9pZCAqIG91
dCApCit7CisgIGNvbnN0IHVpbnQ4X3QgKiBkYXRhID0gKGNvbnN0IHVpbnQ4X3QqKWtleTsKKyAg
Y29uc3QgaW50IG5ibG9ja3MgPSBsZW4gLyA0OworCisgIHVpbnQzMl90IGgxID0gc2VlZDsKKwor
ICBjb25zdCB1aW50MzJfdCBjMSA9IDB4Y2M5ZTJkNTE7CisgIGNvbnN0IHVpbnQzMl90IGMyID0g
MHgxYjg3MzU5MzsKKworICAvLy0tLS0tLS0tLS0KKyAgLy8gYm9keQorCisgIGNvbnN0IHVpbnQz
Ml90ICogYmxvY2tzID0gKGNvbnN0IHVpbnQzMl90ICopKGRhdGEgKyBuYmxvY2tzKjQpOworCisg
IGZvcihpbnQgaSA9IC1uYmxvY2tzOyBpOyBpKyspCisgIHsKKyAgICB1aW50MzJfdCBrMSA9IGdl
dGJsb2NrKGJsb2NrcyxpKTsKKworICAgIGsxICo9IGMxOworICAgIGsxID0gUk9UTDMyKGsxLDE1
KTsKKyAgICBrMSAqPSBjMjsKKyAgICAKKyAgICBoMSBePSBrMTsKKyAgICBoMSA9IFJPVEwzMiho
MSwxMyk7IAorICAgIGgxID0gaDEqNSsweGU2NTQ2YjY0OworICB9CisKKyAgLy8tLS0tLS0tLS0t
CisgIC8vIHRhaWwKKworICBjb25zdCB1aW50OF90ICogdGFpbCA9IChjb25zdCB1aW50OF90Kiko
ZGF0YSArIG5ibG9ja3MqNCk7CisKKyAgdWludDMyX3QgazEgPSAwOworCisgIHN3aXRjaChsZW4g
JiAzKQorICB7CisgIGNhc2UgMzogazEgXj0gdGFpbFsyXSA8PCAxNjsKKyAgY2FzZSAyOiBrMSBe
PSB0YWlsWzFdIDw8IDg7CisgIGNhc2UgMTogazEgXj0gdGFpbFswXTsKKyAgICAgICAgICBrMSAq
PSBjMTsgazEgPSBST1RMMzIoazEsMTUpOyBrMSAqPSBjMjsgaDEgXj0gazE7CisgIH07CisKKyAg
Ly8tLS0tLS0tLS0tCisgIC8vIGZpbmFsaXphdGlvbgorCisgIGgxIF49IGxlbjsKKworICBoMSA9
IGZtaXgoaDEpOworCisgICoodWludDMyX3QqKW91dCA9IGgxOworfSAKKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCit2b2lkIE11cm11ckhhc2gzX3g4Nl8xMjggKCBjb25zdCB2b2lkICoga2V5
LCBjb25zdCBpbnQgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc2Vl
ZCwgdm9pZCAqIG91dCApCit7CisgIGNvbnN0IHVpbnQ4X3QgKiBkYXRhID0gKGNvbnN0IHVpbnQ4
X3QqKWtleTsKKyAgY29uc3QgaW50IG5ibG9ja3MgPSBsZW4gLyAxNjsKKworICB1aW50MzJfdCBo
MSA9IHNlZWQ7CisgIHVpbnQzMl90IGgyID0gc2VlZDsKKyAgdWludDMyX3QgaDMgPSBzZWVkOwor
ICB1aW50MzJfdCBoNCA9IHNlZWQ7CisKKyAgY29uc3QgdWludDMyX3QgYzEgPSAweDIzOWI5NjFi
OyAKKyAgY29uc3QgdWludDMyX3QgYzIgPSAweGFiMGU5Nzg5OworICBjb25zdCB1aW50MzJfdCBj
MyA9IDB4MzhiMzRhZTU7IAorICBjb25zdCB1aW50MzJfdCBjNCA9IDB4YTFlMzhiOTM7CisKKyAg
Ly8tLS0tLS0tLS0tCisgIC8vIGJvZHkKKworICBjb25zdCB1aW50MzJfdCAqIGJsb2NrcyA9IChj
b25zdCB1aW50MzJfdCAqKShkYXRhICsgbmJsb2NrcyoxNik7CisKKyAgZm9yKGludCBpID0gLW5i
bG9ja3M7IGk7IGkrKykKKyAgeworICAgIHVpbnQzMl90IGsxID0gZ2V0YmxvY2soYmxvY2tzLGkq
NCswKTsKKyAgICB1aW50MzJfdCBrMiA9IGdldGJsb2NrKGJsb2NrcyxpKjQrMSk7CisgICAgdWlu
dDMyX3QgazMgPSBnZXRibG9jayhibG9ja3MsaSo0KzIpOworICAgIHVpbnQzMl90IGs0ID0gZ2V0
YmxvY2soYmxvY2tzLGkqNCszKTsKKworICAgIGsxICo9IGMxOyBrMSAgPSBST1RMMzIoazEsMTUp
OyBrMSAqPSBjMjsgaDEgXj0gazE7CisKKyAgICBoMSA9IFJPVEwzMihoMSwxOSk7IGgxICs9IGgy
OyBoMSA9IGgxKjUrMHg1NjFjY2QxYjsKKworICAgIGsyICo9IGMyOyBrMiAgPSBST1RMMzIoazIs
MTYpOyBrMiAqPSBjMzsgaDIgXj0gazI7CisKKyAgICBoMiA9IFJPVEwzMihoMiwxNyk7IGgyICs9
IGgzOyBoMiA9IGgyKjUrMHgwYmNhYTc0NzsKKworICAgIGszICo9IGMzOyBrMyAgPSBST1RMMzIo
azMsMTcpOyBrMyAqPSBjNDsgaDMgXj0gazM7CisKKyAgICBoMyA9IFJPVEwzMihoMywxNSk7IGgz
ICs9IGg0OyBoMyA9IGgzKjUrMHg5NmNkMWMzNTsKKworICAgIGs0ICo9IGM0OyBrNCAgPSBST1RM
MzIoazQsMTgpOyBrNCAqPSBjMTsgaDQgXj0gazQ7CisKKyAgICBoNCA9IFJPVEwzMihoNCwxMyk7
IGg0ICs9IGgxOyBoNCA9IGg0KjUrMHgzMmFjM2IxNzsKKyAgfQorCisgIC8vLS0tLS0tLS0tLQor
ICAvLyB0YWlsCisKKyAgY29uc3QgdWludDhfdCAqIHRhaWwgPSAoY29uc3QgdWludDhfdCopKGRh
dGEgKyBuYmxvY2tzKjE2KTsKKworICB1aW50MzJfdCBrMSA9IDA7CisgIHVpbnQzMl90IGsyID0g
MDsKKyAgdWludDMyX3QgazMgPSAwOworICB1aW50MzJfdCBrNCA9IDA7CisKKyAgc3dpdGNoKGxl
biAmIDE1KQorICB7CisgIGNhc2UgMTU6IGs0IF49IHRhaWxbMTRdIDw8IDE2OworICBjYXNlIDE0
OiBrNCBePSB0YWlsWzEzXSA8PCA4OworICBjYXNlIDEzOiBrNCBePSB0YWlsWzEyXSA8PCAwOwor
ICAgICAgICAgICBrNCAqPSBjNDsgazQgID0gUk9UTDMyKGs0LDE4KTsgazQgKj0gYzE7IGg0IF49
IGs0OworCisgIGNhc2UgMTI6IGszIF49IHRhaWxbMTFdIDw8IDI0OworICBjYXNlIDExOiBrMyBe
PSB0YWlsWzEwXSA8PCAxNjsKKyAgY2FzZSAxMDogazMgXj0gdGFpbFsgOV0gPDwgODsKKyAgY2Fz
ZSAgOTogazMgXj0gdGFpbFsgOF0gPDwgMDsKKyAgICAgICAgICAgazMgKj0gYzM7IGszICA9IFJP
VEwzMihrMywxNyk7IGszICo9IGM0OyBoMyBePSBrMzsKKworICBjYXNlICA4OiBrMiBePSB0YWls
WyA3XSA8PCAyNDsKKyAgY2FzZSAgNzogazIgXj0gdGFpbFsgNl0gPDwgMTY7CisgIGNhc2UgIDY6
IGsyIF49IHRhaWxbIDVdIDw8IDg7CisgIGNhc2UgIDU6IGsyIF49IHRhaWxbIDRdIDw8IDA7Cisg
ICAgICAgICAgIGsyICo9IGMyOyBrMiAgPSBST1RMMzIoazIsMTYpOyBrMiAqPSBjMzsgaDIgXj0g
azI7CisKKyAgY2FzZSAgNDogazEgXj0gdGFpbFsgM10gPDwgMjQ7CisgIGNhc2UgIDM6IGsxIF49
IHRhaWxbIDJdIDw8IDE2OworICBjYXNlICAyOiBrMSBePSB0YWlsWyAxXSA8PCA4OworICBjYXNl
ICAxOiBrMSBePSB0YWlsWyAwXSA8PCAwOworICAgICAgICAgICBrMSAqPSBjMTsgazEgID0gUk9U
TDMyKGsxLDE1KTsgazEgKj0gYzI7IGgxIF49IGsxOworICB9OworCisgIC8vLS0tLS0tLS0tLQor
ICAvLyBmaW5hbGl6YXRpb24KKworICBoMSBePSBsZW47IGgyIF49IGxlbjsgaDMgXj0gbGVuOyBo
NCBePSBsZW47CisKKyAgaDEgKz0gaDI7IGgxICs9IGgzOyBoMSArPSBoNDsKKyAgaDIgKz0gaDE7
IGgzICs9IGgxOyBoNCArPSBoMTsKKworICBoMSA9IGZtaXgoaDEpOworICBoMiA9IGZtaXgoaDIp
OworICBoMyA9IGZtaXgoaDMpOworICBoNCA9IGZtaXgoaDQpOworCisgIGgxICs9IGgyOyBoMSAr
PSBoMzsgaDEgKz0gaDQ7CisgIGgyICs9IGgxOyBoMyArPSBoMTsgaDQgKz0gaDE7CisKKyAgKCh1
aW50MzJfdCopb3V0KVswXSA9IGgxOworICAoKHVpbnQzMl90KilvdXQpWzFdID0gaDI7CisgICgo
dWludDMyX3QqKW91dClbMl0gPSBoMzsKKyAgKCh1aW50MzJfdCopb3V0KVszXSA9IGg0OworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgTXVybXVySGFzaDNfeDY0XzEyOCAoIGNv
bnN0IHZvaWQgKiBrZXksIGNvbnN0IGludCBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB1aW50MzJfdCBzZWVkLCB2b2lkICogb3V0ICkKK3sKKyAgY29uc3QgdWludDhfdCAq
IGRhdGEgPSAoY29uc3QgdWludDhfdCopa2V5OworICBjb25zdCBpbnQgbmJsb2NrcyA9IGxlbiAv
IDE2OworCisgIHVpbnQ2NF90IGgxID0gc2VlZDsKKyAgdWludDY0X3QgaDIgPSBzZWVkOworCisg
IGNvbnN0IHVpbnQ2NF90IGMxID0gQklHX0NPTlNUQU5UKDB4ODdjMzdiOTExMTQyNTNkNSk7Cisg
IGNvbnN0IHVpbnQ2NF90IGMyID0gQklHX0NPTlNUQU5UKDB4NGNmNWFkNDMyNzQ1OTM3Zik7CisK
KyAgLy8tLS0tLS0tLS0tCisgIC8vIGJvZHkKKworICBjb25zdCB1aW50NjRfdCAqIGJsb2NrcyA9
IChjb25zdCB1aW50NjRfdCAqKShkYXRhKTsKKworICBmb3IoaW50IGkgPSAwOyBpIDwgbmJsb2Nr
czsgaSsrKQorICB7CisgICAgdWludDY0X3QgazEgPSBnZXRibG9jayhibG9ja3MsaSoyKzApOwor
ICAgIHVpbnQ2NF90IGsyID0gZ2V0YmxvY2soYmxvY2tzLGkqMisxKTsKKworICAgIGsxICo9IGMx
OyBrMSAgPSBST1RMNjQoazEsMzEpOyBrMSAqPSBjMjsgaDEgXj0gazE7CisKKyAgICBoMSA9IFJP
VEw2NChoMSwyNyk7IGgxICs9IGgyOyBoMSA9IGgxKjUrMHg1MmRjZTcyOTsKKworICAgIGsyICo9
IGMyOyBrMiAgPSBST1RMNjQoazIsMzMpOyBrMiAqPSBjMTsgaDIgXj0gazI7CisKKyAgICBoMiA9
IFJPVEw2NChoMiwzMSk7IGgyICs9IGgxOyBoMiA9IGgyKjUrMHgzODQ5NWFiNTsKKyAgfQorCisg
IC8vLS0tLS0tLS0tLQorICAvLyB0YWlsCisKKyAgY29uc3QgdWludDhfdCAqIHRhaWwgPSAoY29u
c3QgdWludDhfdCopKGRhdGEgKyBuYmxvY2tzKjE2KTsKKworICB1aW50NjRfdCBrMSA9IDA7Cisg
IHVpbnQ2NF90IGsyID0gMDsKKworICBzd2l0Y2gobGVuICYgMTUpCisgIHsKKyAgY2FzZSAxNTog
azIgXj0gdWludDY0X3QodGFpbFsxNF0pIDw8IDQ4OworICBjYXNlIDE0OiBrMiBePSB1aW50NjRf
dCh0YWlsWzEzXSkgPDwgNDA7CisgIGNhc2UgMTM6IGsyIF49IHVpbnQ2NF90KHRhaWxbMTJdKSA8
PCAzMjsKKyAgY2FzZSAxMjogazIgXj0gdWludDY0X3QodGFpbFsxMV0pIDw8IDI0OworICBjYXNl
IDExOiBrMiBePSB1aW50NjRfdCh0YWlsWzEwXSkgPDwgMTY7CisgIGNhc2UgMTA6IGsyIF49IHVp
bnQ2NF90KHRhaWxbIDldKSA8PCA4OworICBjYXNlICA5OiBrMiBePSB1aW50NjRfdCh0YWlsWyA4
XSkgPDwgMDsKKyAgICAgICAgICAgazIgKj0gYzI7IGsyICA9IFJPVEw2NChrMiwzMyk7IGsyICo9
IGMxOyBoMiBePSBrMjsKKworICBjYXNlICA4OiBrMSBePSB1aW50NjRfdCh0YWlsWyA3XSkgPDwg
NTY7CisgIGNhc2UgIDc6IGsxIF49IHVpbnQ2NF90KHRhaWxbIDZdKSA8PCA0ODsKKyAgY2FzZSAg
NjogazEgXj0gdWludDY0X3QodGFpbFsgNV0pIDw8IDQwOworICBjYXNlICA1OiBrMSBePSB1aW50
NjRfdCh0YWlsWyA0XSkgPDwgMzI7CisgIGNhc2UgIDQ6IGsxIF49IHVpbnQ2NF90KHRhaWxbIDNd
KSA8PCAyNDsKKyAgY2FzZSAgMzogazEgXj0gdWludDY0X3QodGFpbFsgMl0pIDw8IDE2OworICBj
YXNlICAyOiBrMSBePSB1aW50NjRfdCh0YWlsWyAxXSkgPDwgODsKKyAgY2FzZSAgMTogazEgXj0g
dWludDY0X3QodGFpbFsgMF0pIDw8IDA7CisgICAgICAgICAgIGsxICo9IGMxOyBrMSAgPSBST1RM
NjQoazEsMzEpOyBrMSAqPSBjMjsgaDEgXj0gazE7CisgIH07CisKKyAgLy8tLS0tLS0tLS0tCisg
IC8vIGZpbmFsaXphdGlvbgorCisgIGgxIF49IGxlbjsgaDIgXj0gbGVuOworCisgIGgxICs9IGgy
OworICBoMiArPSBoMTsKKworICBoMSA9IGZtaXgoaDEpOworICBoMiA9IGZtaXgoaDIpOworCisg
IGgxICs9IGgyOworICBoMiArPSBoMTsKKworICAoKHVpbnQ2NF90KilvdXQpWzBdID0gaDE7Cisg
ICgodWludDY0X3QqKW91dClbMV0gPSBoMjsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L211cm11cmhhc2gv
TXVybXVySGFzaDMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGhpcmRfcGFydHkvbXVybXVyaGFzaC9NdXJtdXJIYXNoMy5oCShyZXZpc2lvbiAxNTkwOTApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbXVybXVyaGFzaC9NdXJt
dXJIYXNoMy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM3ICsxLDM3IEBACi0vLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQotLy8gTXVybXVySGFzaDMgd2FzIHdyaXR0ZW4gYnkgQXVzdGluIEFwcGxlYnks
IGFuZCBpcyBwbGFjZWQgaW4gdGhlIHB1YmxpYw0KLS8vIGRvbWFpbi4gVGhlIGF1dGhvciBoZXJl
YnkgZGlzY2xhaW1zIGNvcHlyaWdodCB0byB0aGlzIHNvdXJjZSBjb2RlLg0KLQ0KLSNpZm5kZWYg
X01VUk1VUkhBU0gzX0hfDQotI2RlZmluZSBfTVVSTVVSSEFTSDNfSF8NCi0NCi0vLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tDQotLy8gUGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb25zIGFuZCBtYWNyb3MN
Ci0NCi0vLyBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbw0KLQ0KLSNpZiBkZWZpbmVkKF9NU0NfVkVS
KQ0KLQ0KLXR5cGVkZWYgdW5zaWduZWQgY2hhciB1aW50OF90Ow0KLXR5cGVkZWYgdW5zaWduZWQg
bG9uZyB1aW50MzJfdDsNCi10eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgdWludDY0X3Q7DQotDQot
Ly8gT3RoZXIgY29tcGlsZXJzDQotDQotI2Vsc2UgICAvLyBkZWZpbmVkKF9NU0NfVkVSKQ0KLQ0K
LSNpbmNsdWRlIDxzdGRpbnQuaD4NCi0NCi0jZW5kaWYgLy8gIWRlZmluZWQoX01TQ19WRVIpDQot
DQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLQ0KLXZvaWQgTXVybXVySGFzaDNfeDg2XzMyICAo
IGNvbnN0IHZvaWQgKiBrZXksIGludCBsZW4sIHVpbnQzMl90IHNlZWQsIHZvaWQgKiBvdXQgKTsN
Ci0NCi12b2lkIE11cm11ckhhc2gzX3g4Nl8xMjggKCBjb25zdCB2b2lkICoga2V5LCBpbnQgbGVu
LCB1aW50MzJfdCBzZWVkLCB2b2lkICogb3V0ICk7DQotDQotdm9pZCBNdXJtdXJIYXNoM194NjRf
MTI4ICggY29uc3Qgdm9pZCAqIGtleSwgaW50IGxlbiwgdWludDMyX3Qgc2VlZCwgdm9pZCAqIG91
dCApOw0KLQ0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0NCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisvLyBNdXJtdXJIYXNoMyB3YXMgd3JpdHRlbiBieSBBdXN0aW4gQXBwbGVieSwgYW5kIGlz
IHBsYWNlZCBpbiB0aGUgcHVibGljCisvLyBkb21haW4uIFRoZSBhdXRob3IgaGVyZWJ5IGRpc2Ns
YWltcyBjb3B5cmlnaHQgdG8gdGhpcyBzb3VyY2UgY29kZS4KKworI2lmbmRlZiBfTVVSTVVSSEFT
SDNfSF8KKyNkZWZpbmUgX01VUk1VUkhBU0gzX0hfCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Ky8vIFBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9ucyBhbmQgbWFjcm9zCisKKy8vIE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvCisKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorCit0eXBlZGVmIHVuc2ln
bmVkIGNoYXIgdWludDhfdDsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyB1aW50MzJfdDsKK3R5cGVk
ZWYgdW5zaWduZWQgX19pbnQ2NCB1aW50NjRfdDsKKworLy8gT3RoZXIgY29tcGlsZXJzCisKKyNl
bHNlCS8vIGRlZmluZWQoX01TQ19WRVIpCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2VuZGlm
IC8vICFkZWZpbmVkKF9NU0NfVkVSKQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQg
TXVybXVySGFzaDNfeDg2XzMyICAoIGNvbnN0IHZvaWQgKiBrZXksIGludCBsZW4sIHVpbnQzMl90
IHNlZWQsIHZvaWQgKiBvdXQgKTsKKwordm9pZCBNdXJtdXJIYXNoM194ODZfMTI4ICggY29uc3Qg
dm9pZCAqIGtleSwgaW50IGxlbiwgdWludDMyX3Qgc2VlZCwgdm9pZCAqIG91dCApOworCit2b2lk
IE11cm11ckhhc2gzX3g2NF8xMjggKCBjb25zdCB2b2lkICoga2V5LCBpbnQgbGVuLCB1aW50MzJf
dCBzZWVkLCB2b2lkICogb3V0ICk7CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwogI2VuZGlm
IC8vIF9NVVJNVVJIQVNIM19IXwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS90cmFjZV9ldmVudC90cmFjZV9l
dmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9w
YXJ0eS90cmFjZV9ldmVudC90cmFjZV9ldmVudC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L3RyYWNlX2V2ZW50L3RyYWNlX2V2ZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MjYgQEAKKy8vIENvcHlyaWdodCAoYykgMjAxMyBU
aGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIFRyYWNlIGV2ZW50cyBhcmUg
Zm9yIHRyYWNraW5nIGFwcGxpY2F0aW9uIHBlcmZvcm1hbmNlIGFuZCByZXNvdXJjZSB1c2FnZS4K
Ky8vIE1hY3JvcyBhcmUgcHJvdmlkZWQgdG8gdHJhY2s6CisvLyAgICBCZWdpbiBhbmQgZW5kIG9m
IGZ1bmN0aW9uIGNhbGxzCisvLyAgICBDb3VudGVycworLy8KKy8vIEV2ZW50cyBhcmUgaXNzdWVk
IGFnYWluc3QgY2F0ZWdvcmllcy4gV2hlcmVhcyBMT0cncworLy8gY2F0ZWdvcmllcyBhcmUgc3Rh
dGljYWxseSBkZWZpbmVkLCBUUkFDRSBjYXRlZ29yaWVzIGFyZSBjcmVhdGVkCisvLyBpbXBsaWNp
dGx5IHdpdGggYSBzdHJpbmcuIEZvciBleGFtcGxlOgorLy8gICBUUkFDRV9FVkVOVF9JTlNUQU5U
MCgiTVlfU1VCU1lTVEVNIiwgIlNvbWVJbXBvcnRhbnRFdmVudCIpCisvLworLy8gRXZlbnRzIGNh
biBiZSBJTlNUQU5ULCBvciBjYW4gYmUgcGFpcnMgb2YgQkVHSU4gYW5kIEVORCBpbiB0aGUgc2Ft
ZSBzY29wZToKKy8vICAgVFJBQ0VfRVZFTlRfQkVHSU4wKCJNWV9TVUJTWVNURU0iLCAiU29tZXRo
aW5nQ29zdGx5IikKKy8vICAgZG9Tb21ldGhpbmdDb3N0bHkoKQorLy8gICBUUkFDRV9FVkVOVF9F
TkQwKCJNWV9TVUJTWVNURU0iLCAiU29tZXRoaW5nQ29zdGx5IikKKy8vIE5vdGU6IG91ciB0b29s
cyBjYW4ndCBhbHdheXMgZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IEJFR0lOL0VORCBwYWlycyB1bmxl
c3MKKy8vIHRoZXNlIGFyZSB1c2VkIGluIHRoZSBzYW1lIHNjb3BlLiBVc2UgQVNZTkNfQkVHSU4v
QVNZTkNfRU5EIG1hY3JvcyBpZiB5b3UgbmVlZCB0aGVtCisvLyB0byBiZSBpbiBzZXBhcmF0ZSBz
Y29wZXMuCisvLworLy8gQSBjb21tb24gdXNlIGNhc2UgaXMgdG8gdHJhY2UgZW50aXJlIGZ1bmN0
aW9uIHNjb3Blcy4gVGhpcworLy8gaXNzdWVzIGEgdHJhY2UgQkVHSU4gYW5kIEVORCBhdXRvbWF0
aWNhbGx5OgorLy8gICB2b2lkIGRvU29tZXRoaW5nQ29zdGx5KCkgeworLy8gICAgIFRSQUNFX0VW
RU5UMCgiTVlfU1VCU1lTVEVNIiwgImRvU29tZXRoaW5nQ29zdGx5Iik7CisvLyAgICAgLi4uCisv
LyAgIH0KKy8vCisvLyBBZGRpdGlvbmFsIHBhcmFtZXRlcnMgY2FuIGJlIGFzc29jaWF0ZWQgd2l0
aCBhbiBldmVudDoKKy8vICAgdm9pZCBkb1NvbWV0aGluZ0Nvc3RseTIoaW50IGhvd011Y2gpIHsK
Ky8vICAgICBUUkFDRV9FVkVOVDEoIk1ZX1NVQlNZU1RFTSIsICJkb1NvbWV0aGluZ0Nvc3RseSIs
CisvLyAgICAgICAgICJob3dNdWNoIiwgaG93TXVjaCk7CisvLyAgICAgLi4uCisvLyAgIH0KKy8v
CisvLyBUaGUgdHJhY2Ugc3lzdGVtIHdpbGwgYXV0b21hdGljYWxseSBhZGQgdG8gdGhpcyBpbmZv
cm1hdGlvbiB0aGUKKy8vIGN1cnJlbnQgcHJvY2VzcyBpZCwgdGhyZWFkIGlkLCBhbmQgYSB0aW1l
c3RhbXAgaW4gbWljcm9zZWNvbmRzLgorLy8KKy8vIFRvIHRyYWNlIGFuIGFzeW5jaHJvbm91cyBw
cm9jZWR1cmUgc3VjaCBhcyBhbiBJUEMgc2VuZC9yZWNlaXZlLCB1c2UgQVNZTkNfQkVHSU4gYW5k
CisvLyBBU1lOQ19FTkQ6CisvLyAgIFtzaW5nbGUgdGhyZWFkZWQgc2VuZGVyIGNvZGVdCisvLyAg
ICAgc3RhdGljIGludCBzZW5kX2NvdW50ID0gMDsKKy8vICAgICArK3NlbmRfY291bnQ7CisvLyAg
ICAgVFJBQ0VfRVZFTlRfQVNZTkNfQkVHSU4wKCJpcGMiLCAibWVzc2FnZSIsIHNlbmRfY291bnQp
OworLy8gICAgIFNlbmQobmV3IE15TWVzc2FnZShzZW5kX2NvdW50KSk7CisvLyAgIFtyZWNlaXZl
IGNvZGVdCisvLyAgICAgdm9pZCBPbk15TWVzc2FnZShzZW5kX2NvdW50KSB7CisvLyAgICAgICBU
UkFDRV9FVkVOVF9BU1lOQ19FTkQwKCJpcGMiLCAibWVzc2FnZSIsIHNlbmRfY291bnQpOworLy8g
ICAgIH0KKy8vIFRoZSB0aGlyZCBwYXJhbWV0ZXIgaXMgYSB1bmlxdWUgSUQgdG8gbWF0Y2ggQVNZ
TkNfQkVHSU4vQVNZTkNfRU5EIHBhaXJzLgorLy8gQVNZTkNfQkVHSU4gYW5kIEFTWU5DX0VORCBj
YW4gb2NjdXIgb24gYW55IHRocmVhZCBvZiBhbnkgdHJhY2VkIHByb2Nlc3MuIFBvaW50ZXJzIGNh
bgorLy8gYmUgdXNlZCBmb3IgdGhlIElEIHBhcmFtZXRlciwgYW5kIHRoZXkgd2lsbCBiZSBtYW5n
bGVkIGludGVybmFsbHkgc28gdGhhdAorLy8gdGhlIHNhbWUgcG9pbnRlciBvbiB0d28gZGlmZmVy
ZW50IHByb2Nlc3NlcyB3aWxsIG5vdCBtYXRjaC4gRm9yIGV4YW1wbGU6CisvLyAgIGNsYXNzIE15
VHJhY2VkQ2xhc3MgeworLy8gICAgcHVibGljOgorLy8gICAgIE15VHJhY2VkQ2xhc3MoKSB7Cisv
LyAgICAgICBUUkFDRV9FVkVOVF9BU1lOQ19CRUdJTjAoImNhdGVnb3J5IiwgIk15VHJhY2VkQ2xh
c3MiLCB0aGlzKTsKKy8vICAgICB9CisvLyAgICAgfk15VHJhY2VkQ2xhc3MoKSB7CisvLyAgICAg
ICBUUkFDRV9FVkVOVF9BU1lOQ19FTkQwKCJjYXRlZ29yeSIsICJNeVRyYWNlZENsYXNzIiwgdGhp
cyk7CisvLyAgICAgfQorLy8gICB9CisvLworLy8gVHJhY2UgZXZlbnQgYWxzbyBzdXBwb3J0cyBj
b3VudGVycywgd2hpY2ggaXMgYSB3YXkgdG8gdHJhY2sgYSBxdWFudGl0eQorLy8gYXMgaXQgdmFy
aWVzIG92ZXIgdGltZS4gQ291bnRlcnMgYXJlIGNyZWF0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIG1h
Y3JvOgorLy8gICBUUkFDRV9DT1VOVEVSMSgiTVlfU1VCU1lTVEVNIiwgIm15Q291bnRlciIsIGdf
bXlDb3VudGVyVmFsdWUpOworLy8KKy8vIENvdW50ZXJzIGFyZSBwcm9jZXNzLXNwZWNpZmljLiBU
aGUgbWFjcm8gaXRzZWxmIGNhbiBiZSBpc3N1ZWQgZnJvbSBhbnkKKy8vIHRocmVhZCwgaG93ZXZl
ci4KKy8vCisvLyBTb21ldGltZXMsIHlvdSB3YW50IHRvIHRyYWNrIHR3byBjb3VudGVycyBhdCBv
bmNlLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0d28KKy8vIGNvdW50ZXIgbWFjcm9zOgorLy8gICBU
UkFDRV9DT1VOVEVSMSgiTVlfU1VCU1lTVEVNIiwgIm15Q291bnRlcjAiLCBnX215Q291bnRlclZh
bHVlWzBdKTsKKy8vICAgVFJBQ0VfQ09VTlRFUjEoIk1ZX1NVQlNZU1RFTSIsICJteUNvdW50ZXIx
IiwgZ19teUNvdW50ZXJWYWx1ZVsxXSk7CisvLyBPciB5b3UgY2FuIGRvIGl0IHdpdGggYSBjb21i
aW5lZCBtYWNybzoKKy8vICAgVFJBQ0VfQ09VTlRFUjIoIk1ZX1NVQlNZU1RFTSIsICJteUNvdW50
ZXIiLAorLy8gICAgICAgImJ5dGVzUGlubmVkIiwgZ19teUNvdW50ZXJWYWx1ZVswXSwKKy8vICAg
ICAgICJieXRlc0FsbG9jYXRlZCIsIGdfbXlDb3VudGVyVmFsdWVbMV0pOworLy8gVGhpcyBpbmRp
Y2F0ZXMgdG8gdGhlIHRyYWNpbmcgVUkgdGhhdCB0aGVzZSBjb3VudGVycyBzaG91bGQgYmUgZGlz
cGxheWVkCisvLyBpbiBhIHNpbmdsZSBncmFwaCwgYXMgYSBzdW1tZWQgYXJlYSBjaGFydC4KKy8v
CisvLyBTaW5jZSBjb3VudGVycyBhcmUgaW4gYSBnbG9iYWwgbmFtZXNwYWNlLCB5b3UgbWF5IHdh
bnQgdG8gZGlzZW1iaWd1YXRlIHdpdGggYQorLy8gdW5pcXVlIElELCBieSB1c2luZyB0aGUgVFJB
Q0VfQ09VTlRFUl9JRCogdmFyaWF0aW9ucy4KKy8vCisvLyBCeSBkZWZhdWx0LCB0cmFjZSBjb2xs
ZWN0aW9uIGlzIGNvbXBpbGVkIGluLCBidXQgdHVybmVkIG9mZiBhdCBydW50aW1lLgorLy8gQ29s
bGVjdGluZyB0cmFjZSBkYXRhIGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgZW1iZWRkaW5n
CisvLyBhcHBsaWNhdGlvbi4gSW4gQ2hyb21lJ3MgY2FzZSwgbmF2aWdhdGluZyB0byBhYm91dDp0
cmFjaW5nIHdpbGwgdHVybiBvbgorLy8gdHJhY2luZyBhbmQgZGlzcGxheSBkYXRhIGNvbGxlY3Rl
ZCBhY3Jvc3MgYWxsIGFjdGl2ZSBwcm9jZXNzZXMuCisvLworLy8KKy8vIE1lbW9yeSBzY29waW5n
IG5vdGU6CisvLyBUcmFjaW5nIGNvcGllcyB0aGUgcG9pbnRlcnMsIG5vdCB0aGUgc3RyaW5nIGNv
bnRlbnQsIG9mIHRoZSBzdHJpbmdzIHBhc3NlZAorLy8gaW4gZm9yIGNhdGVnb3J5LCBuYW1lLCBh
bmQgYXJnX25hbWVzLiBUaHVzLCB0aGUgZm9sbG93aW5nIGNvZGUgd2lsbAorLy8gY2F1c2UgcHJv
YmxlbXM6CisvLyAgICAgY2hhciogc3RyID0gc3RyZHVwKCJpbXBwcnRhbnROYW1lIik7CisvLyAg
ICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoIlNVQlNZU1RFTSIsIHN0cik7ICAvLyBCQUQhCisvLyAg
ICAgZnJlZShzdHIpOyAgICAgICAgICAgICAgICAgICAvLyBUcmFjZSBzeXN0ZW0gbm93IGhhcyBk
YW5nbGluZyBwb2ludGVyCisvLworLy8gVG8gYXZvaWQgdGhpcyBpc3N1ZSB3aXRoIHRoZSB8bmFt
ZXwgYW5kIHxhcmdfbmFtZXwgcGFyYW1ldGVycywgdXNlIHRoZQorLy8gVFJBQ0VfRVZFTlRfQ09Q
WV9YWFggb3ZlcmxvYWRzIG9mIHRoZSBtYWNyb3MgYXQgYWRkaXRpb25hbCBydW50aW1lIG92ZXJo
ZWFkLgorLy8gTm90ZXM6IFRoZSBjYXRlZ29yeSBtdXN0IGFsd2F5cyBiZSBpbiBhIGxvbmctbGl2
ZWQgY2hhciogKGkuZS4gc3RhdGljIGNvbnN0KS4KKy8vICAgICAgICBUaGUgfGFyZ192YWx1ZXN8
LCB3aGVuIHVzZWQsIGFyZSBhbHdheXMgZGVlcCBjb3BpZWQgd2l0aCB0aGUgX0NPUFkKKy8vICAg
ICAgICBtYWNyb3MuCisvLworLy8gV2hlbiBhcmUgc3RyaW5nIGFyZ3VtZW50IHZhbHVlcyBjb3Bp
ZWQ6CisvLyBjb25zdCBjaGFyKiBhcmdfdmFsdWVzIGFyZSBvbmx5IHJlZmVyZW5jZWQgYnkgZGVm
YXVsdDoKKy8vICAgICBUUkFDRV9FVkVOVDEoImNhdGVnb3J5IiwgIm5hbWUiLAorLy8gICAgICAg
ICAgICAgICAgICAiYXJnMSIsICJsaXRlcmFsIHN0cmluZyBpcyBvbmx5IHJlZmVyZW5jZWQiKTsK
Ky8vIFVzZSBUUkFDRV9TVFJfQ09QWSB0byBmb3JjZSBjb3B5aW5nIG9mIGEgY29uc3QgY2hhcio6
CisvLyAgICAgVFJBQ0VfRVZFTlQxKCJjYXRlZ29yeSIsICJuYW1lIiwKKy8vICAgICAgICAgICAg
ICAgICAgImFyZzEiLCBUUkFDRV9TVFJfQ09QWSgic3RyaW5nIHdpbGwgYmUgY29waWVkIikpOwor
Ly8gc3RkOjpzdHJpbmcgYXJnX3ZhbHVlcyBhcmUgYWx3YXlzIGNvcGllZDoKKy8vICAgICBUUkFD
RV9FVkVOVDEoImNhdGVnb3J5IiwgIm5hbWUiLAorLy8gICAgICAgICAgICAgICAgICAiYXJnMSIs
IHN0ZDo6c3RyaW5nKCJzdHJpbmcgd2lsbCBiZSBjb3BpZWQiKSk7CisvLworLy8KKy8vIFRocmVh
ZCBTYWZldHk6CisvLyBBIHRocmVhZCBzYWZlIHNpbmdsZXRvbiBhbmQgbXV0ZXggYXJlIHVzZWQg
Zm9yIHRocmVhZCBzYWZldHkuIENhdGVnb3J5CisvLyBlbmFibGVkIGZsYWdzIGFyZSB1c2VkIHRv
IGxpbWl0IHRoZSBwZXJmb3JtYW5jZSBpbXBhY3Qgd2hlbiB0aGUgc3lzdGVtCisvLyBpcyBub3Qg
ZW5hYmxlZC4KKy8vCisvLyBUUkFDRV9FVkVOVCBtYWNyb3MgZmlyc3QgY2FjaGUgYSBwb2ludGVy
IHRvIGEgY2F0ZWdvcnkuIFRoZSBjYXRlZ29yaWVzIGFyZQorLy8gc3RhdGljYWxseSBhbGxvY2F0
ZWQgYW5kIHNhZmUgYXQgYWxsIHRpbWVzLCBldmVuIGFmdGVyIGV4aXQuIEZldGNoaW5nIGEKKy8v
IGNhdGVnb3J5IGlzIHByb3RlY3RlZCBieSB0aGUgVHJhY2VMb2c6OmxvY2tfLiBNdWx0aXBsZSB0
aHJlYWRzIGluaXRpYWxpemluZworLy8gdGhlIHN0YXRpYyB2YXJpYWJsZSBpcyBzYWZlLCBhcyB0
aGV5IHdpbGwgYmUgc2VyaWFsaXplZCBieSB0aGUgbG9jayBhbmQKKy8vIG11bHRpcGxlIGNhbGxz
IHdpbGwgcmV0dXJuIHRoZSBzYW1lIHBvaW50ZXIgdG8gdGhlIGNhdGVnb3J5LgorLy8KKy8vIFRo
ZW4gdGhlIGNhdGVnb3J5X2VuYWJsZWQgZmxhZyBpcyBjaGVja2VkLiBUaGlzIGlzIGEgdW5zaWdu
ZWQgY2hhciwgYW5kCisvLyBub3QgaW50ZW5kZWQgdG8gYmUgbXVsdGl0aHJlYWQgc2FmZS4gSXQg
b3B0aW1pemVzIGFjY2VzcyB0byBhZGRUcmFjZUV2ZW50CisvLyB3aGljaCBpcyB0aHJlYWRzYWZl
IGludGVybmFsbHkgdmlhIFRyYWNlTG9nOjpsb2NrXy4gVGhlIGVuYWJsZWQgZmxhZyBtYXkKKy8v
IGNhdXNlIHNvbWUgdGhyZWFkcyB0byBpbmNvcnJlY3RseSBjYWxsIG9yIHNraXAgY2FsbGluZyBh
ZGRUcmFjZUV2ZW50IG5lYXIKKy8vIHRoZSB0aW1lIG9mIHRoZSBzeXN0ZW0gYmVpbmcgZW5hYmxl
ZCBvciBkaXNhYmxlZC4gVGhpcyBpcyBhY2NlcHRhYmxlIGFzCisvLyB3ZSB0b2xlcmF0ZSBzb21l
IGRhdGEgbG9zcyB3aGlsZSB0aGUgc3lzdGVtIGlzIGJlaW5nIGVuYWJsZWQvZGlzYWJsZWQgYW5k
CisvLyBiZWNhdXNlIGFkZFRyYWNlRXZlbnQgaXMgdGhyZWFkc2FmZSBpbnRlcm5hbGx5IGFuZCBj
aGVja3MgdGhlIGVuYWJsZWQgc3RhdGUKKy8vIGFnYWluIHVuZGVyIGxvY2suCisvLworLy8gV2l0
aG91dCB0aGUgdXNlIG9mIHRoZXNlIHN0YXRpYyBjYXRlZ29yeSBwb2ludGVycyBhbmQgZW5hYmxl
ZCBmbGFncyBhbGwKKy8vIHRyYWNlIHBvaW50cyB3b3VsZCBjYXJyeSBhIHNpZ25pZmljYW50IHBl
cmZvcm1hbmNlIGNvc3Qgb2YgYXF1aXJpbmcgYSBsb2NrCisvLyBhbmQgcmVzb2x2aW5nIHRoZSBj
YXRlZ29yeS4KKworI2lmbmRlZiBDT01NT05fVFJBQ0VfRVZFTlRfSF8KKyNkZWZpbmUgQ09NTU9O
X1RSQUNFX0VWRU5UX0hfCisKKyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJjb21tb24v
ZXZlbnRfdHJhY2VyLmgiCisKKy8vIEJ5IGRlZmF1bHQsIGNvbnN0IGNoYXIqIGFyZ3VtZW50IHZh
bHVlcyBhcmUgYXNzdW1lZCB0byBoYXZlIGxvbmctbGl2ZWQgc2NvcGUKKy8vIGFuZCB3aWxsIG5v
dCBiZSBjb3BpZWQuIFVzZSB0aGlzIG1hY3JvIHRvIGZvcmNlIGEgY29uc3QgY2hhciogdG8gYmUg
Y29waWVkLgorI2RlZmluZSBUUkFDRV9TVFJfQ09QWShzdHIpIFwKKyAgICBXZWJDb3JlOjpUcmFj
ZUV2ZW50OjpUcmFjZVN0cmluZ1dpdGhDb3B5KHN0cikKKworLy8gUmVjb3JkcyBhIHBhaXIgb2Yg
YmVnaW4gYW5kIGVuZCBldmVudHMgY2FsbGVkICJuYW1lIiBmb3IgdGhlIGN1cnJlbnQKKy8vIHNj
b3BlLCB3aXRoIDAsIDEgb3IgMiBhc3NvY2lhdGVkIGFyZ3VtZW50cy4gSWYgdGhlIGNhdGVnb3J5
IGlzIG5vdAorLy8gZW5hYmxlZCwgdGhlbiB0aGlzIGRvZXMgbm90aGluZy4KKy8vIC0gY2F0ZWdv
cnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBwbGljYXRpb24gbGlmZXRpbWUgKHN0YXRp
Y3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBub3QgaW5jbHVkZSAiIGNoYXJzLgorI2Rl
ZmluZSBUUkFDRV9FVkVOVDAoY2F0ZWdvcnksIG5hbWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9F
VkVOVF9BRERfU0NPUEVEKGNhdGVnb3J5LCBuYW1lKQorI2RlZmluZSBUUkFDRV9FVkVOVDEoY2F0
ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9F
VkVOVF9BRERfU0NPUEVEKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsKQorI2Rl
ZmluZSBUUkFDRV9FVkVOVDIoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIGFy
ZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfU0NPUEVE
KGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFt
ZSwgYXJnMl92YWwpCisKKy8vIFJlY29yZHMgYSBzaW5nbGUgZXZlbnQgY2FsbGVkICJuYW1lIiBp
bW1lZGlhdGVseSwgd2l0aCAwLCAxIG9yIDIKKy8vIGFzc29jaWF0ZWQgYXJndW1lbnRzLiBJZiB0
aGUgY2F0ZWdvcnkgaXMgbm90IGVuYWJsZWQsIHRoZW4gdGhpcworLy8gZG9lcyBub3RoaW5nLgor
Ly8gLSBjYXRlZ29yeSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZl
dGltZSAoc3RhdGljcyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIg
Y2hhcnMuCisjZGVmaW5lIFRSQUNFX0VWRU5UX0lOU1RBTlQwKGNhdGVnb3J5LCBuYW1lKSBcCisg
ICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RBTlQsIFwK
KyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSkKKyNkZWZpbmUg
VFJBQ0VfRVZFTlRfSU5TVEFOVDEoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwp
IFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfSU5TVEFO
VCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCBhcmcx
X25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9JTlNUQU5UMihjYXRlZ29yeSwg
bmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFs
KSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RB
TlQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJn
MV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKQorI2RlZmlu
ZSBUUkFDRV9FVkVOVF9DT1BZX0lOU1RBTlQwKGNhdGVnb3J5LCBuYW1lKSBcCisgICAgSU5URVJO
QUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RBTlQsIFwKKyAgICAgICAg
Y2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSkKKyNkZWZpbmUgVFJBQ0VfRVZF
TlRfQ09QWV9JTlNUQU5UMShjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAor
ICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9JTlNUQU5ULCBc
CisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIGFyZzFfbmFt
ZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfSU5TVEFOVDIoY2F0ZWdvcnks
IG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3Zh
bCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9JTlNU
QU5ULCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIGFy
ZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKworLy8g
UmVjb3JkcyBhIHNpbmdsZSBCRUdJTiBldmVudCBjYWxsZWQgIm5hbWUiIGltbWVkaWF0ZWx5LCB3
aXRoIDAsIDEgb3IgMgorLy8gYXNzb2NpYXRlZCBhcmd1bWVudHMuIElmIHRoZSBjYXRlZ29yeSBp
cyBub3QgZW5hYmxlZCwgdGhlbiB0aGlzCisvLyBkb2VzIG5vdGhpbmcuCisvLyAtIGNhdGVnb3J5
IGFuZCBuYW1lIHN0cmluZ3MgbXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNz
IG9yCisvLyAgIGxpdGVyYWxzKS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKyNkZWZp
bmUgVFJBQ0VfRVZFTlRfQkVHSU4wKGNhdGVnb3J5LCBuYW1lKSBcCisgICAgSU5URVJOQUxfVFJB
Q0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0JFR0lOLCBcCisgICAgICAgIGNhdGVnb3J5
LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0JFR0lO
MShjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RS
QUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9CRUdJTiwgXAorICAgICAgICBjYXRlZ29y
eSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCBhcmcxX25hbWUsIGFyZzFfdmFsKQorI2Rl
ZmluZSBUUkFDRV9FVkVOVF9CRUdJTjIoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92
YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNF
X0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9CRUdJTiwgXAorICAgICAgICBjYXRlZ29yeSwg
bmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAg
ICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfQkVHSU4w
KGNhdGVnb3J5LCBuYW1lKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VW
RU5UX1BIQVNFX0JFR0lOLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9G
TEFHX0NPUFkpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfQkVHSU4xKGNhdGVnb3J5LCBuYW1l
LCBhcmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRS
QUNFX0VWRU5UX1BIQVNFX0JFR0lOLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9F
VkVOVF9GTEFHX0NPUFksIGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5U
X0NPUFlfQkVHSU4yKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAg
ICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQo
VFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4sIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNF
X0VWRU5UX0ZMQUdfQ09QWSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25h
bWUsIGFyZzJfdmFsKQorCisvLyBSZWNvcmRzIGEgc2luZ2xlIEVORCBldmVudCBmb3IgIm5hbWUi
IGltbWVkaWF0ZWx5LiBJZiB0aGUgY2F0ZWdvcnkKKy8vIGlzIG5vdCBlbmFibGVkLCB0aGVuIHRo
aXMgZG9lcyBub3RoaW5nLgorLy8gLSBjYXRlZ29yeSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2
ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAoc3RhdGljcyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkg
bWF5IG5vdCBpbmNsdWRlICIgY2hhcnMuCisjZGVmaW5lIFRSQUNFX0VWRU5UX0VORDAoY2F0ZWdv
cnksIG5hbWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhB
U0VfRU5ELCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUp
CisjZGVmaW5lIFRSQUNFX0VWRU5UX0VORDEoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJn
MV92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0Vf
RU5ELCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUsIGFy
ZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0VORDIoY2F0ZWdvcnksIG5h
bWUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkg
XAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9FTkQsIFwK
KyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJnMV9uYW1l
LCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKQorI2RlZmluZSBUUkFD
RV9FVkVOVF9DT1BZX0VORDAoY2F0ZWdvcnksIG5hbWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9F
VkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfRU5ELCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1l
LCBUUkFDRV9FVkVOVF9GTEFHX0NPUFkpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfRU5EMShj
YXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNF
X0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9FTkQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5h
bWUsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUg
VFJBQ0VfRVZFTlRfQ09QWV9FTkQyKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFs
LCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9F
VkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfRU5ELCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1l
LCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAg
YXJnMl9uYW1lLCBhcmcyX3ZhbCkKKworLy8gUmVjb3JkcyB0aGUgdmFsdWUgb2YgYSBjb3VudGVy
IGNhbGxlZCAibmFtZSIgaW1tZWRpYXRlbHkuIFZhbHVlCisvLyBtdXN0IGJlIHJlcHJlc2VudGFi
bGUgYXMgYSAzMiBiaXQgaW50ZWdlci4KKy8vIC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBt
dXN0IGhhdmUgYXBwbGljYXRpb24gbGlmZXRpbWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMp
LiBUaGV5IG1heSBub3QgaW5jbHVkZSAiIGNoYXJzLgorI2RlZmluZSBUUkFDRV9DT1VOVEVSMShj
YXRlZ29yeSwgbmFtZSwgdmFsdWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJB
Q0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0Vf
RVZFTlRfRkxBR19OT05FLCBcCisgICAgICAgICJ2YWx1ZSIsIHN0YXRpY19jYXN0PGludD4odmFs
dWUpKQorI2RlZmluZSBUUkFDRV9DT1BZX0NPVU5URVIxKGNhdGVnb3J5LCBuYW1lLCB2YWx1ZSkg
XAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9DT1VOVEVS
LCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIFwKKyAg
ICAgICAgInZhbHVlIiwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSkpCisKKy8vIFJlY29yZHMgdGhl
IHZhbHVlcyBvZiBhIG11bHRpLXBhcnRlZCBjb3VudGVyIGNhbGxlZCAibmFtZSIgaW1tZWRpYXRl
bHkuCisvLyBUaGUgVUkgd2lsbCB0cmVhdCB2YWx1ZTEgYW5kIHZhbHVlMiBhcyBwYXJ0cyBvZiBh
IHdob2xlLCBkaXNwbGF5aW5nIHRoZWlyCisvLyB2YWx1ZXMgYXMgYSBzdGFja2VkLWJhciBjaGFy
dC4KKy8vIC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBwbGljYXRpb24g
bGlmZXRpbWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBub3QgaW5jbHVk
ZSAiIGNoYXJzLgorI2RlZmluZSBUUkFDRV9DT1VOVEVSMihjYXRlZ29yeSwgbmFtZSwgdmFsdWUx
X25hbWUsIHZhbHVlMV92YWwsIFwKKyAgICAgICAgdmFsdWUyX25hbWUsIHZhbHVlMl92YWwpIFwK
KyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwg
XAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCBcCisgICAg
ICAgIHZhbHVlMV9uYW1lLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMV92YWwpLCBcCisgICAgICAg
IHZhbHVlMl9uYW1lLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMl92YWwpKQorI2RlZmluZSBUUkFD
RV9DT1BZX0NPVU5URVIyKGNhdGVnb3J5LCBuYW1lLCB2YWx1ZTFfbmFtZSwgdmFsdWUxX3ZhbCwg
XAorICAgICAgICB2YWx1ZTJfbmFtZSwgdmFsdWUyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNF
X0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9DT1VOVEVSLCBcCisgICAgICAgIGNhdGVnb3J5
LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIFwKKyAgICAgICAgdmFsdWUxX25hbWUsIHN0
YXRpY19jYXN0PGludD4odmFsdWUxX3ZhbCksIFwKKyAgICAgICAgdmFsdWUyX25hbWUsIHN0YXRp
Y19jYXN0PGludD4odmFsdWUyX3ZhbCkpCisKKy8vIFJlY29yZHMgdGhlIHZhbHVlIG9mIGEgY291
bnRlciBjYWxsZWQgIm5hbWUiIGltbWVkaWF0ZWx5LiBWYWx1ZQorLy8gbXVzdCBiZSByZXByZXNl
bnRhYmxlIGFzIGEgMzIgYml0IGludGVnZXIuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0cmlu
Z3MgbXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxpdGVy
YWxzKS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKy8vIC0gfGlkfCBpcyB1c2VkIHRv
IGRpc2FtYmlndWF0ZSBjb3VudGVycyB3aXRoIHRoZSBzYW1lIG5hbWUuIEl0IG11c3QgZWl0aGVy
CisvLyAgIGJlIGEgcG9pbnRlciBvciBhbiBpbnRlZ2VyIHZhbHVlIHVwIHRvIDY0IGJpdHMuIElm
IGl0J3MgYSBwb2ludGVyLCB0aGUgYml0cworLy8gICB3aWxsIGJlIHhvcmVkIHdpdGggYSBoYXNo
IG9mIHRoZSBwcm9jZXNzIElEIHNvIHRoYXQgdGhlIHNhbWUgcG9pbnRlciBvbgorLy8gICB0d28g
ZGlmZmVyZW50IHByb2Nlc3NlcyB3aWxsIG5vdCBjb2xsaWRlLgorI2RlZmluZSBUUkFDRV9DT1VO
VEVSX0lEMShjYXRlZ29yeSwgbmFtZSwgaWQsIHZhbHVlKSBcCisgICAgSU5URVJOQUxfVFJBQ0Vf
RVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAgICBj
YXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgXAorICAgICAgICAidmFs
dWUiLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKSkKKyNkZWZpbmUgVFJBQ0VfQ09QWV9DT1VOVEVS
X0lEMShjYXRlZ29yeSwgbmFtZSwgaWQsIHZhbHVlKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZF
TlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAgICBjYXRl
Z29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAorICAgICAgICAidmFsdWUi
LCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKSkKKworLy8gUmVjb3JkcyB0aGUgdmFsdWVzIG9mIGEg
bXVsdGktcGFydGVkIGNvdW50ZXIgY2FsbGVkICJuYW1lIiBpbW1lZGlhdGVseS4KKy8vIFRoZSBV
SSB3aWxsIHRyZWF0IHZhbHVlMSBhbmQgdmFsdWUyIGFzIHBhcnRzIG9mIGEgd2hvbGUsIGRpc3Bs
YXlpbmcgdGhlaXIKKy8vIHZhbHVlcyBhcyBhIHN0YWNrZWQtYmFyIGNoYXJ0LgorLy8gLSBjYXRl
Z29yeSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAoc3Rh
dGljcyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMuCisv
LyAtIHxpZHwgaXMgdXNlZCB0byBkaXNhbWJpZ3VhdGUgY291bnRlcnMgd2l0aCB0aGUgc2FtZSBu
YW1lLiBJdCBtdXN0IGVpdGhlcgorLy8gICBiZSBhIHBvaW50ZXIgb3IgYW4gaW50ZWdlciB2YWx1
ZSB1cCB0byA2NCBiaXRzLiBJZiBpdCdzIGEgcG9pbnRlciwgdGhlIGJpdHMKKy8vICAgd2lsbCBi
ZSB4b3JlZCB3aXRoIGEgaGFzaCBvZiB0aGUgcHJvY2VzcyBJRCBzbyB0aGF0IHRoZSBzYW1lIHBv
aW50ZXIgb24KKy8vICAgdHdvIGRpZmZlcmVudCBwcm9jZXNzZXMgd2lsbCBub3QgY29sbGlkZS4K
KyNkZWZpbmUgVFJBQ0VfQ09VTlRFUl9JRDIoY2F0ZWdvcnksIG5hbWUsIGlkLCB2YWx1ZTFfbmFt
ZSwgdmFsdWUxX3ZhbCwgXAorICAgICAgICB2YWx1ZTJfbmFtZSwgdmFsdWUyX3ZhbCkgXAorICAg
IElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5U
RVIsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUs
IFwKKyAgICAgICAgdmFsdWUxX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUxX3ZhbCksIFwK
KyAgICAgICAgdmFsdWUyX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUyX3ZhbCkpCisjZGVm
aW5lIFRSQUNFX0NPUFlfQ09VTlRFUl9JRDIoY2F0ZWdvcnksIG5hbWUsIGlkLCB2YWx1ZTFfbmFt
ZSwgdmFsdWUxX3ZhbCwgXAorICAgICAgICB2YWx1ZTJfbmFtZSwgdmFsdWUyX3ZhbCkgXAorICAg
IElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5U
RVIsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFks
IFwKKyAgICAgICAgdmFsdWUxX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUxX3ZhbCksIFwK
KyAgICAgICAgdmFsdWUyX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUyX3ZhbCkpCisKKy8v
IFJlY29yZHMgYSBzaW5nbGUgQVNZTkNfQkVHSU4gZXZlbnQgY2FsbGVkICJuYW1lIiBpbW1lZGlh
dGVseSwgd2l0aCAwLCAxIG9yIDIKKy8vIGFzc29jaWF0ZWQgYXJndW1lbnRzLiBJZiB0aGUgY2F0
ZWdvcnkgaXMgbm90IGVuYWJsZWQsIHRoZW4gdGhpcworLy8gZG9lcyBub3RoaW5nLgorLy8gLSBj
YXRlZ29yeSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAo
c3RhdGljcyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMu
CisvLyAtIHxpZHwgaXMgdXNlZCB0byBtYXRjaCB0aGUgQVNZTkNfQkVHSU4gZXZlbnQgd2l0aCB0
aGUgQVNZTkNfRU5EIGV2ZW50LiBBU1lOQworLy8gICBldmVudHMgYXJlIGNvbnNpZGVyZWQgdG8g
bWF0Y2ggaWYgdGhlaXIgY2F0ZWdvcnksIG5hbWUgYW5kIGlkIHZhbHVlcyBhbGwKKy8vICAgbWF0
Y2guIHxpZHwgbXVzdCBlaXRoZXIgYmUgYSBwb2ludGVyIG9yIGFuIGludGVnZXIgdmFsdWUgdXAg
dG8gNjQgYml0cy4gSWYKKy8vICAgaXQncyBhIHBvaW50ZXIsIHRoZSBiaXRzIHdpbGwgYmUgeG9y
ZWQgd2l0aCBhIGhhc2ggb2YgdGhlIHByb2Nlc3MgSUQgc28KKy8vICAgdGhhdCB0aGUgc2FtZSBw
b2ludGVyIG9uIHR3byBkaWZmZXJlbnQgcHJvY2Vzc2VzIHdpbGwgbm90IGNvbGxpZGUuCisvLyBB
biBhc3luY2hyb25vdXMgb3BlcmF0aW9uIGNhbiBjb25zaXN0IG9mIG11bHRpcGxlIHBoYXNlcy4g
VGhlIGZpcnN0IHBoYXNlIGlzCisvLyBkZWZpbmVkIGJ5IHRoZSBBU1lOQ19CRUdJTiBjYWxscy4g
QWRkaXRpb25hbCBwaGFzZXMgY2FuIGJlIGRlZmluZWQgdXNpbmcgdGhlCisvLyBBU1lOQ19TVEVQ
X0JFR0lOIG1hY3Jvcy4gV2hlbiB0aGUgb3BlcmF0aW9uIGNvbXBsZXRlcywgY2FsbCBBU1lOQ19F
TkQuCisvLyBBbiBhc3luYyBvcGVyYXRpb24gY2FuIHNwYW4gdGhyZWFkcyBhbmQgcHJvY2Vzc2Vz
LCBidXQgYWxsIGV2ZW50cyBpbiB0aGF0CisvLyBvcGVyYXRpb24gbXVzdCB1c2UgdGhlIHNhbWUg
fG5hbWV8IGFuZCB8aWR8LiBFYWNoIGV2ZW50IGNhbiBoYXZlIGl0cyBvd24KKy8vIGFyZ3MuCisj
ZGVmaW5lIFRSQUNFX0VWRU5UX0FTWU5DX0JFR0lOMChjYXRlZ29yeSwgbmFtZSwgaWQpIFwKKyAg
ICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9BU1lO
Q19CRUdJTiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdf
Tk9ORSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQVNZTkNfQkVHSU4xKGNhdGVnb3J5LCBuYW1lLCBp
ZCwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9X
SVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0FTWU5DX0JFR0lOLCBcCisgICAgICAgIGNhdGVnb3J5
LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCBhcmcxX25hbWUsIGFyZzFfdmFsKQor
I2RlZmluZSBUUkFDRV9FVkVOVF9BU1lOQ19CRUdJTjIoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcx
X25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJ
TlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9BU1lOQ19C
RUdJTiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfTk9O
RSwgXAorICAgICAgICBhcmcxX25hbWUsIGFyZzFfdmFsLCBhcmcyX25hbWUsIGFyZzJfdmFsKQor
I2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0FTWU5DX0JFR0lOMChjYXRlZ29yeSwgbmFtZSwgaWQp
IFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFT
RV9BU1lOQ19CRUdJTiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5U
X0ZMQUdfQ09QWSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9BU1lOQ19CRUdJTjEoY2F0ZWdv
cnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0Vf
RVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfQVNZTkNfQkVHSU4sIFwKKyAgICAg
ICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIFwKKyAgICAgICAg
YXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9BU1lOQ19CRUdJ
TjIoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFy
ZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9J
RChUUkFDRV9FVkVOVF9QSEFTRV9BU1lOQ19CRUdJTiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFt
ZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAorICAgICAgICBhcmcxX25hbWUsIGFyZzFf
dmFsLCBhcmcyX25hbWUsIGFyZzJfdmFsKQorCisvLyBSZWNvcmRzIGEgc2luZ2xlIEFTWU5DX1NU
RVAgZXZlbnQgZm9yIHxzdGVwfCBpbW1lZGlhdGVseS4gSWYgdGhlIGNhdGVnb3J5CisvLyBpcyBu
b3QgZW5hYmxlZCwgdGhlbiB0aGlzIGRvZXMgbm90aGluZy4gVGhlIHxuYW1lfCBhbmQgfGlkfCBt
dXN0IG1hdGNoIHRoZQorLy8gQVNZTkNfQkVHSU4gZXZlbnQgYWJvdmUuIFRoZSB8c3RlcHwgcGFy
YW0gaWRlbnRpZmllcyB0aGlzIHN0ZXAgd2l0aGluIHRoZQorLy8gYXN5bmMgZXZlbnQuIFRoaXMg
c2hvdWxkIGJlIGNhbGxlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IHBoYXNlIG9mIGFu
CisvLyBhc3luY2hyb25vdXMgb3BlcmF0aW9uLgorI2RlZmluZSBUUkFDRV9FVkVOVF9BU1lOQ19T
VEVQMChjYXRlZ29yeSwgbmFtZSwgaWQsIHN0ZXApIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVO
VF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9BU1lOQ19TVEVQLCBcCisgICAgICAgIGNh
dGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCAic3RlcCIsIHN0ZXApCisj
ZGVmaW5lIFRSQUNFX0VWRU5UX0FTWU5DX1NURVAxKGNhdGVnb3J5LCBuYW1lLCBpZCwgc3RlcCwg
XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcxX25hbWUsIGFyZzFf
dmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRf
UEhBU0VfQVNZTkNfU1RFUCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VW
RU5UX0ZMQUdfTk9ORSwgInN0ZXAiLCBzdGVwLCBcCisgICAgICAgIGFyZzFfbmFtZSwgYXJnMV92
YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfQVNZTkNfU1RFUDAoY2F0ZWdvcnksIG5hbWUs
IGlkLCBzdGVwKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0Vf
RVZFTlRfUEhBU0VfQVNZTkNfU1RFUCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRS
QUNFX0VWRU5UX0ZMQUdfQ09QWSwgInN0ZXAiLCBzdGVwKQorI2RlZmluZSBUUkFDRV9FVkVOVF9D
T1BZX0FTWU5DX1NURVAxKGNhdGVnb3J5LCBuYW1lLCBpZCwgc3RlcCwgXAorICAgICAgICBhcmcx
X25hbWUsIGFyZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQo
VFJBQ0VfRVZFTlRfUEhBU0VfQVNZTkNfU1RFUCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwg
aWQsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgInN0ZXAiLCBzdGVwLCBcCisgICAgICAgIGFyZzFf
bmFtZSwgYXJnMV92YWwpCisKKy8vIFJlY29yZHMgYSBzaW5nbGUgQVNZTkNfRU5EIGV2ZW50IGZv
ciAibmFtZSIgaW1tZWRpYXRlbHkuIElmIHRoZSBjYXRlZ29yeQorLy8gaXMgbm90IGVuYWJsZWQs
IHRoZW4gdGhpcyBkb2VzIG5vdGhpbmcuCisjZGVmaW5lIFRSQUNFX0VWRU5UX0FTWU5DX0VORDAo
Y2F0ZWdvcnksIG5hbWUsIGlkKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhf
SUQoVFJBQ0VfRVZFTlRfUEhBU0VfQVNZTkNfRU5ELCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1l
LCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19OT05FKQorI2RlZmluZSBUUkFDRV9FVkVOVF9BU1lOQ19F
TkQxKGNhdGVnb3J5LCBuYW1lLCBpZCwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVS
TkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0FTWU5DX0VORCwg
XAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJn
MV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQVNZTkNfRU5EMihjYXRlZ29y
eSwgbmFtZSwgaWQsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBh
cmcyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VW
RU5UX1BIQVNFX0FTWU5DX0VORCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNF
X0VWRU5UX0ZMQUdfTk9ORSwgXAorICAgICAgICBhcmcxX25hbWUsIGFyZzFfdmFsLCBhcmcyX25h
bWUsIGFyZzJfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0FTWU5DX0VORDAoY2F0ZWdv
cnksIG5hbWUsIGlkKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJB
Q0VfRVZFTlRfUEhBU0VfQVNZTkNfRU5ELCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwg
VFJBQ0VfRVZFTlRfRkxBR19DT1BZKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0FTWU5DX0VO
RDEoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAgSU5URVJO
QUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfQVNZTkNfRU5ELCBc
CisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBcCisg
ICAgICAgIGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfQVNZ
TkNfRU5EMihjYXRlZ29yeSwgbmFtZSwgaWQsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAg
ICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9X
SVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0FTWU5DX0VORCwgXAorICAgICAgICBjYXRlZ29yeSwg
bmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAorICAgICAgICBhcmcxX25hbWUsIGFy
ZzFfdmFsLCBhcmcyX25hbWUsIGFyZzJfdmFsKQorCisvLyBDcmVhdGVzIGEgc2NvcGUgb2YgYSBz
YW1wbGluZyBzdGF0ZSB3aXRoIHRoZSBnaXZlbiBjYXRlZ29yeSBhbmQgbmFtZSAoYm90aCBtdXN0
CisvLyBiZSBjb25zdGFudCBzdHJpbmdzKS4gVGhlc2Ugc3RhdGVzIGFyZSBpbnRlbmRlZCBmb3Ig
YSBzYW1wbGluZyBwcm9maWxlci4KKy8vIEltcGxlbWVudGF0aW9uIG5vdGU6IHdlIHN0b3JlIGNh
dGVnb3J5IGFuZCBuYW1lIHRvZ2V0aGVyIGJlY2F1c2Ugd2UgZG9uJ3QKKy8vIHdhbnQgdGhlIGlu
Y29uc2lzdGVuY3kvZXhwZW5zZSBvZiBzdG9yaW5nIHR3byBwb2ludGVycy4KKy8vIHx0aHJlYWRf
YnVja2V0fCBpcyBbMC4uMl0gYW5kIGlzIHVzZWQgdG8gc3RhdGljYWxseSBpc29sYXRlIHNhbXBs
ZXMgaW4gb25lCisvLyB0aHJlYWQgZnJvbSBvdGhlcnMuCisvLworLy8geyAgLy8gVGhlIHNhbXBs
aW5nIHN0YXRlIGlzIHNldCB3aXRoaW4gdGhpcyBzY29wZS4KKy8vICAgIFRSQUNFX0VWRU5UX1NB
TVBMSU5HX1NUQVRFX1NDT1BFX0ZPUl9CVUNLRVQoMCwgImNhdGVnb3J5IiwgIm5hbWUiKTsKKy8v
ICAgIC4uLjsKKy8vIH0KKyNkZWZpbmUgVFJBQ0VfRVZFTlRfU0NPUEVEX1NBTVBMSU5HX1NUQVRF
X0ZPUl9CVUNLRVQoYnVja2V0X251bWJlciwgY2F0ZWdvcnksIG5hbWUpIFwKKyAgICBUcmFjZUV2
ZW50OjpTYW1wbGluZ1N0YXRlU2NvcGU8YnVja2V0X251bWJlcj4gdHJhY2VFdmVudFNhbXBsaW5n
U2NvcGUoY2F0ZWdvcnkgIlwwIiBuYW1lKTsKKworLy8gUmV0dXJucyBhIGN1cnJlbnQgc2FtcGxp
bmcgc3RhdGUgb2YgdGhlIGdpdmVuIGJ1Y2tldC4KKy8vIFRoZSBmb3JtYXQgb2YgdGhlIHJldHVy
bmVkIHN0cmluZyBpcyAiY2F0ZWdvcnlcMG5hbWUiLgorI2RlZmluZSBUUkFDRV9FVkVOVF9HRVRf
U0FNUExJTkdfU1RBVEVfRk9SX0JVQ0tFVChidWNrZXRfbnVtYmVyKSBcCisgICAgVHJhY2VFdmVu
dDo6U2FtcGxpbmdTdGF0ZVNjb3BlPGJ1Y2tldF9udW1iZXI+OjpjdXJyZW50KCkKKworLy8gU2V0
cyBhIGN1cnJlbnQgc2FtcGxpbmcgc3RhdGUgb2YgdGhlIGdpdmVuIGJ1Y2tldC4KKy8vIHxjYXRl
Z29yeXwgYW5kIHxuYW1lfCBoYXZlIHRvIGJlIGNvbnN0YW50IHN0cmluZ3MuCisjZGVmaW5lIFRS
QUNFX0VWRU5UX1NFVF9TQU1QTElOR19TVEFURV9GT1JfQlVDS0VUKGJ1Y2tldF9udW1iZXIsIGNh
dGVnb3J5LCBuYW1lKSBcCisgICAgVHJhY2VFdmVudDo6U2FtcGxpbmdTdGF0ZVNjb3BlPGJ1Y2tl
dF9udW1iZXI+OjpzZXQoY2F0ZWdvcnkgIlwwIiBuYW1lKQorCisvLyBTZXRzIGEgY3VycmVudCBz
YW1wbGluZyBzdGF0ZSBvZiB0aGUgZ2l2ZW4gYnVja2V0LgorLy8gfGNhdGVnb3J5QW5kTmFtZXwg
ZG9lc24ndCBuZWVkIHRvIGJlIGEgY29uc3RhbnQgc3RyaW5nLgorLy8gVGhlIGZvcm1hdCBvZiB0
aGUgc3RyaW5nIGlzICJjYXRlZ29yeVwwbmFtZSIuCisjZGVmaW5lIFRSQUNFX0VWRU5UX1NFVF9O
T05DT05TVF9TQU1QTElOR19TVEFURV9GT1JfQlVDS0VUKGJ1Y2tldF9udW1iZXIsIGNhdGVnb3J5
QW5kTmFtZSkgXAorICAgIFRyYWNlRXZlbnQ6OlNhbXBsaW5nU3RhdGVTY29wZTxidWNrZXRfbnVt
YmVyPjo6c2V0KGNhdGVnb3J5QW5kTmFtZSkKKworLy8gU3ludGFjdGljIHN1Z2FycyBmb3IgdGhl
IHNhbXBsaW5nIHRyYWNpbmcgaW4gdGhlIG1haW4gdGhyZWFkLgorI2RlZmluZSBUUkFDRV9FVkVO
VF9TQ09QRURfU0FNUExJTkdfU1RBVEUoY2F0ZWdvcnksIG5hbWUpIFwKKyAgICBUUkFDRV9FVkVO
VF9TQ09QRURfU0FNUExJTkdfU1RBVEVfRk9SX0JVQ0tFVCgwLCBjYXRlZ29yeSwgbmFtZSkKKyNk
ZWZpbmUgVFJBQ0VfRVZFTlRfR0VUX1NBTVBMSU5HX1NUQVRFKCkgXAorICAgIFRSQUNFX0VWRU5U
X0dFVF9TQU1QTElOR19TVEFURV9GT1JfQlVDS0VUKDApCisjZGVmaW5lIFRSQUNFX0VWRU5UX1NF
VF9TQU1QTElOR19TVEFURShjYXRlZ29yeSwgbmFtZSkgXAorICAgIFRSQUNFX0VWRU5UX1NFVF9T
QU1QTElOR19TVEFURV9GT1JfQlVDS0VUKDAsIGNhdGVnb3J5LCBuYW1lKQorI2RlZmluZSBUUkFD
RV9FVkVOVF9TRVRfTk9OQ09OU1RfU0FNUExJTkdfU1RBVEUoY2F0ZWdvcnlBbmROYW1lKSBcCisg
ICAgVFJBQ0VfRVZFTlRfU0VUX05PTkNPTlNUX1NBTVBMSU5HX1NUQVRFX0ZPUl9CVUNLRVQoMCwg
Y2F0ZWdvcnlBbmROYW1lKQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gSW1wbGVtZW50
YXRpb24gc3BlY2lmaWMgdHJhY2luZyBBUEkgZGVmaW5pdGlvbnMuCisKKy8vIEdldCBhIHBvaW50
ZXIgdG8gdGhlIGVuYWJsZWQgc3RhdGUgb2YgdGhlIGdpdmVuIHRyYWNlIGNhdGVnb3J5LiBPbmx5
CisvLyBsb25nLWxpdmVkIGxpdGVyYWwgc3RyaW5ncyBzaG91bGQgYmUgZ2l2ZW4gYXMgdGhlIGNh
dGVnb3J5IG5hbWUuIFRoZSByZXR1cm5lZAorLy8gcG9pbnRlciBjYW4gYmUgaGVsZCBwZXJtYW5l
bnRseSBpbiBhIGxvY2FsIHN0YXRpYyBmb3IgZXhhbXBsZS4gSWYgdGhlCisvLyB1bnNpZ25lZCBj
aGFyIGlzIG5vbi16ZXJvLCB0cmFjaW5nIGlzIGVuYWJsZWQuIElmIHRyYWNpbmcgaXMgZW5hYmxl
ZCwKKy8vIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQgY2FuIGJlIGNhbGxlZC4gSXQn
cyBPSyBpZiB0cmFjaW5nIGlzIGRpc2FibGVkCisvLyBiZXR3ZWVuIHRoZSBsb2FkIG9mIHRoZSB0
cmFjaW5nIHN0YXRlIGFuZCB0aGUgY2FsbCB0bworLy8gVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFD
RV9FVkVOVCwgYmVjYXVzZSB0aGlzIGZsYWcgb25seSBwcm92aWRlcyBhbiBlYXJseSBvdXQKKy8v
IGZvciBiZXN0IHBlcmZvcm1hbmNlIHdoZW4gdHJhY2luZyBpcyBkaXNhYmxlZC4KKy8vIGNvbnN0
IHVuc2lnbmVkIGNoYXIqCisvLyAgICAgVFJBQ0VfRVZFTlRfQVBJX0dFVF9DQVRFR09SWV9FTkFC
TEVEKGNvbnN0IGNoYXIqIGNhdGVnb3J5X25hbWUpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0FQSV9H
RVRfQ0FURUdPUllfRU5BQkxFRCBcCisgICAgZ2w6OlRyYWNlR2V0VHJhY2VDYXRlZ29yeUVuYWJs
ZWRGbGFnCisKKy8vIEFkZCBhIHRyYWNlIGV2ZW50IHRvIHRoZSBwbGF0Zm9ybSB0cmFjaW5nIHN5
c3RlbS4KKy8vIHZvaWQgVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVCgKKy8vICAgICAg
ICAgICAgICAgICAgICBjaGFyIHBoYXNlLAorLy8gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGNhdGVnb3J5X2VuYWJsZWQsCisvLyAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogbmFtZSwKKy8vICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcg
aWQsCisvLyAgICAgICAgICAgICAgICAgICAgaW50IG51bV9hcmdzLAorLy8gICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqKiBhcmdfbmFtZXMsCisvLyAgICAgICAgICAgICAgICAgICAgY29u
c3QgdW5zaWduZWQgY2hhciogYXJnX3R5cGVzLAorLy8gICAgICAgICAgICAgICAgICAgIGNvbnN0
IHVuc2lnbmVkIGxvbmcgbG9uZyogYXJnX3ZhbHVlcywKKy8vICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBjaGFyIGZsYWdzKQorI2RlZmluZSBUUkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VW
RU5UIFwKKyAgICBnbDo6VHJhY2VBZGRUcmFjZUV2ZW50CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCisKKy8vIEltcGxlbWVudGF0aW9uIGRldGFpbDogdHJhY2UgZXZlbnQgbWFjcm9zIGNyZWF0
ZSB0ZW1wb3JhcnkgdmFyaWFibGVzCisvLyB0byBrZWVwIGluc3RydW1lbnRhdGlvbiBvdmVyaGVh
ZCBsb3cuIFRoZXNlIG1hY3JvcyBnaXZlIGVhY2ggdGVtcG9yYXJ5CisvLyB2YXJpYWJsZSBhIHVu
aXF1ZSBuYW1lIGJhc2VkIG9uIHRoZSBsaW5lIG51bWJlciB0byBwcmV2ZW50IG5hbWUgY29sbGlz
c2lvbnMuCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX1VJRDMoYSwgYikgXAorICAgIHRy
YWNlX2V2ZW50X3VuaXF1ZV8jI2EjI2IKKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfVUlE
MihhLCBiKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfVUlEMyhhLCBiKQorI2RlZmluZSBJ
TlRFUk5BTFRSQUNFRVZFTlRVSUQobmFtZV9wcmVmaXgpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9F
VkVOVF9VSUQyKG5hbWVfcHJlZml4LCBfX0xJTkVfXykKKworLy8gSW1wbGVtZW50YXRpb24gZGV0
YWlsOiBpbnRlcm5hbCBtYWNybyB0byBjcmVhdGUgc3RhdGljIGNhdGVnb3J5LgorI2RlZmluZSBJ
TlRFUk5BTF9UUkFDRV9FVkVOVF9HRVRfQ0FURUdPUllfSU5GTyhjYXRlZ29yeSkgXAorICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyKiBJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGlj
KSA9IDA7IFwKKyAgICBpZiAoIUlOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpKSBcCisg
ICAgICBJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSA9IFwKKyAgICAgICAgICBUUkFD
RV9FVkVOVF9BUElfR0VUX0NBVEVHT1JZX0VOQUJMRUQoY2F0ZWdvcnkpOworCisvLyBJbXBsZW1l
bnRhdGlvbiBkZXRhaWw6IGludGVybmFsIG1hY3JvIHRvIGNyZWF0ZSBzdGF0aWMgY2F0ZWdvcnkg
YW5kIGFkZAorLy8gZXZlbnQgaWYgdGhlIGNhdGVnb3J5IGlzIGVuYWJsZWQuCisjZGVmaW5lIElO
VEVSTkFMX1RSQUNFX0VWRU5UX0FERChwaGFzZSwgY2F0ZWdvcnksIG5hbWUsIGZsYWdzLCAuLi4p
IFwKKyAgICBkbyB7IFwKKyAgICAgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfR0VUX0NBVEVHT1JZ
X0lORk8oY2F0ZWdvcnkpOyBcCisgICAgICAgIGlmICgqSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNh
dHN0YXRpYykpIHsgXAorICAgICAgICAgICAgZ2w6OlRyYWNlRXZlbnQ6OmFkZFRyYWNlRXZlbnQo
IFwKKyAgICAgICAgICAgICAgICBwaGFzZSwgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRp
YyksIG5hbWUsIFwKKyAgICAgICAgICAgICAgICBnbDo6VHJhY2VFdmVudDo6bm9FdmVudElkLCBm
bGFncywgIyNfX1ZBX0FSR1NfXyk7IFwKKyAgICAgICAgfSBcCisgICAgfSB3aGlsZSAoMCkKKwor
Ly8gSW1wbGVtZW50YXRpb24gZGV0YWlsOiBpbnRlcm5hbCBtYWNybyB0byBjcmVhdGUgc3RhdGlj
IGNhdGVnb3J5IGFuZCBhZGQgYmVnaW4KKy8vIGV2ZW50IGlmIHRoZSBjYXRlZ29yeSBpcyBlbmFi
bGVkLiBBbHNvIGFkZHMgdGhlIGVuZCBldmVudCB3aGVuIHRoZSBzY29wZQorLy8gZW5kcy4KKyNk
ZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BFRChjYXRlZ29yeSwgbmFtZSwgLi4u
KSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfR0VUX0NBVEVHT1JZX0lORk8oY2F0ZWdvcnkp
OyBcCisgICAgZ2w6OlRyYWNlRXZlbnQ6OlRyYWNlRW5kT25TY29wZUNsb3NlIFwKKyAgICAgICAg
SU5URVJOQUxUUkFDRUVWRU5UVUlEKHByb2ZpbGVTY29wZSk7IFwKKyAgICBpZiAoKklOVEVSTkFM
VFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpKSB7IFwKKyAgICAgIGdsOjpUcmFjZUV2ZW50OjphZGRU
cmFjZUV2ZW50KCBcCisgICAgICAgICAgVFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4sIFwKKyAgICAg
ICAgICBJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSwgXAorICAgICAgICAgIG5hbWUs
IGdsOjpUcmFjZUV2ZW50Ojpub0V2ZW50SWQsIFwKKyAgICAgICAgICBUUkFDRV9FVkVOVF9GTEFH
X05PTkUsICMjX19WQV9BUkdTX18pOyBcCisgICAgICBJTlRFUk5BTFRSQUNFRVZFTlRVSUQocHJv
ZmlsZVNjb3BlKS5pbml0aWFsaXplKCBcCisgICAgICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlE
KGNhdHN0YXRpYyksIG5hbWUpOyBcCisgICAgfQorCisvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6
IGludGVybmFsIG1hY3JvIHRvIGNyZWF0ZSBzdGF0aWMgY2F0ZWdvcnkgYW5kIGFkZAorLy8gZXZl
bnQgaWYgdGhlIGNhdGVnb3J5IGlzIGVuYWJsZWQuCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VW
RU5UX0FERF9XSVRIX0lEKHBoYXNlLCBjYXRlZ29yeSwgbmFtZSwgaWQsIGZsYWdzLCBcCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikgXAorICAgIGRvIHsgXAor
ICAgICAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9HRVRfQ0FURUdPUllfSU5GTyhjYXRlZ29yeSk7
IFwKKyAgICAgICAgaWYgKCpJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSkgeyBcCisg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHRyYWNlRXZlbnRGbGFncyA9IGZsYWdzIHwgVFJBQ0Vf
RVZFTlRfRkxBR19IQVNfSUQ7IFwKKyAgICAgICAgICAgIGdsOjpUcmFjZUV2ZW50OjpUcmFjZUlE
IHRyYWNlRXZlbnRUcmFjZUlEKCBcCisgICAgICAgICAgICAgICAgaWQsICZ0cmFjZUV2ZW50Rmxh
Z3MpOyBcCisgICAgICAgICAgICBnbDo6VHJhY2VFdmVudDo6YWRkVHJhY2VFdmVudCggXAorICAg
ICAgICAgICAgICAgIHBoYXNlLCBJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSwgXAor
ICAgICAgICAgICAgICAgIG5hbWUsIHRyYWNlRXZlbnRUcmFjZUlELmRhdGEoKSwgdHJhY2VFdmVu
dEZsYWdzLCBcCisgICAgICAgICAgICAgICAgIyNfX1ZBX0FSR1NfXyk7IFwKKyAgICAgICAgfSBc
CisgICAgfSB3aGlsZSAoMCkKKworLy8gTm90ZXMgcmVnYXJkaW5nIHRoZSBmb2xsb3dpbmcgZGVm
aW5pdGlvbnM6CisvLyBOZXcgdmFsdWVzIGNhbiBiZSBhZGRlZCBhbmQgcHJvcGFnYXRlZCB0byB0
aGlyZCBwYXJ0eSBsaWJyYXJpZXMsIGJ1dCBleGlzdGluZworLy8gZGVmaW5pdGlvbnMgbXVzdCBu
ZXZlciBiZSBjaGFuZ2VkLCBiZWNhdXNlIHRoaXJkIHBhcnR5IGxpYnJhcmllcyBtYXkgdXNlIG9s
ZAorLy8gZGVmaW5pdGlvbnMuCisKKy8vIFBoYXNlIGluZGljYXRlcyB0aGUgbmF0dXJlIG9mIGFu
IGV2ZW50IGVudHJ5LiBFLmcuIHBhcnQgb2YgYSBiZWdpbi9lbmQgcGFpci4KKyNkZWZpbmUgVFJB
Q0VfRVZFTlRfUEhBU0VfQkVHSU4gICAgKCdCJykKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0Vf
RU5EICAgICAgKCdFJykKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0VfSU5TVEFOVCAgKCdJJykK
KyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0VfQVNZTkNfQkVHSU4gKCdTJykKKyNkZWZpbmUgVFJB
Q0VfRVZFTlRfUEhBU0VfQVNZTkNfU1RFUCAgKCdUJykKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhB
U0VfQVNZTkNfRU5EICAgKCdGJykKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0VfTUVUQURBVEEg
KCdNJykKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiAgKCdDJykKKyNkZWZpbmUg
VFJBQ0VfRVZFTlRfUEhBU0VfU0FNUExFICAoJ1AnKQorCisvLyBGbGFncyBmb3IgY2hhbmdpbmcg
dGhlIGJlaGF2aW9yIG9mIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQuCisjZGVmaW5l
IFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSAgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KDApKQorI2RlZmluZSBUUkFDRV9FVkVOVF9GTEFHX0NPUFkgICAgICAgIChzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyPigxIDw8IDApKQorI2RlZmluZSBUUkFDRV9FVkVOVF9GTEFHX0hBU19JRCAg
ICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigxIDw8IDEpKQorI2RlZmluZSBUUkFDRV9F
VkVOVF9GTEFHX01BTkdMRV9JRCAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigxIDw8IDIp
KQorCisvLyBUeXBlIHZhbHVlcyBmb3IgaWRlbnRpZnlpbmcgdHlwZXMgaW4gdGhlIFRyYWNlVmFs
dWUgdW5pb24uCisjZGVmaW5lIFRSQUNFX1ZBTFVFX1RZUEVfQk9PTCAgICAgICAgIChzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyPigxKSkKKyNkZWZpbmUgVFJBQ0VfVkFMVUVfVFlQRV9VSU5UICAg
ICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDIpKQorI2RlZmluZSBUUkFDRV9WQUxV
RV9UWVBFX0lOVCAgICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMykpCisjZGVm
aW5lIFRSQUNFX1ZBTFVFX1RZUEVfRE9VQkxFICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPig0KSkKKyNkZWZpbmUgVFJBQ0VfVkFMVUVfVFlQRV9QT0lOVEVSICAgICAgKHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXI+KDUpKQorI2RlZmluZSBUUkFDRV9WQUxVRV9UWVBFX1NUUklORyAg
ICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oNikpCisjZGVmaW5lIFRSQUNFX1ZBTFVF
X1RZUEVfQ09QWV9TVFJJTkcgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPig3KSkKKworCitu
YW1lc3BhY2UgZ2wgeworCituYW1lc3BhY2UgVHJhY2VFdmVudCB7CisKKy8vIFNwZWNpZnkgdGhl
c2UgdmFsdWVzIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQgb2YgYWRkVHJhY2VFdmVu
dCBpcyBub3QKKy8vIHVzZWQuCitjb25zdCBpbnQgemVyb051bUFyZ3MgPSAwOworY29uc3QgdW5z
aWduZWQgbG9uZyBsb25nIG5vRXZlbnRJZCA9IDA7CisKKy8vIFRyYWNlSUQgZW5jYXBzdWxhdGVz
IGFuIElEIHRoYXQgY2FuIGVpdGhlciBiZSBhbiBpbnRlZ2VyIG9yIHBvaW50ZXIuIFBvaW50ZXJz
CisvLyBhcmUgbWFuZ2xlZCB3aXRoIHRoZSBQcm9jZXNzIElEIHNvIHRoYXQgdGhleSBhcmUgdW5s
aWtlbHkgdG8gY29sbGlkZSB3aGVuIHRoZQorLy8gc2FtZSBwb2ludGVyIGlzIHVzZWQgb24gZGlm
ZmVyZW50IHByb2Nlc3Nlcy4KK2NsYXNzIFRyYWNlSUQgeworcHVibGljOgorICAgIGV4cGxpY2l0
IFRyYWNlSUQoY29uc3Qgdm9pZCogaWQsIHVuc2lnbmVkIGNoYXIqIGZsYWdzKSA6CisgICAgICAg
IG1fZGF0YShzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHJlaW50ZXJwcmV0X2Nhc3Q8
dW5zaWduZWQgbG9uZz4oaWQpKSkKKyAgICB7CisgICAgICAgICpmbGFncyB8PSBUUkFDRV9FVkVO
VF9GTEFHX01BTkdMRV9JRDsKKyAgICB9CisgICAgZXhwbGljaXQgVHJhY2VJRCh1bnNpZ25lZCBs
b25nIGxvbmcgaWQsIHVuc2lnbmVkIGNoYXIqIGZsYWdzKSA6IG1fZGF0YShpZCkgeyAodm9pZClm
bGFnczsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQodW5zaWduZWQgbG9uZyBpZCwgdW5zaWduZWQg
Y2hhciogZmxhZ3MpIDogbV9kYXRhKGlkKSB7ICh2b2lkKWZsYWdzOyB9CisgICAgZXhwbGljaXQg
VHJhY2VJRCh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGNoYXIqIGZsYWdzKSA6IG1fZGF0YShp
ZCkgeyAodm9pZClmbGFnczsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQodW5zaWduZWQgc2hvcnQg
aWQsIHVuc2lnbmVkIGNoYXIqIGZsYWdzKSA6IG1fZGF0YShpZCkgeyAodm9pZClmbGFnczsgfQor
ICAgIGV4cGxpY2l0IFRyYWNlSUQodW5zaWduZWQgY2hhciBpZCwgdW5zaWduZWQgY2hhciogZmxh
Z3MpIDogbV9kYXRhKGlkKSB7ICh2b2lkKWZsYWdzOyB9CisgICAgZXhwbGljaXQgVHJhY2VJRChs
b25nIGxvbmcgaWQsIHVuc2lnbmVkIGNoYXIqIGZsYWdzKSA6CisgICAgICAgIG1fZGF0YShzdGF0
aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGlkKSkgeyAodm9pZClmbGFnczsgfQorICAgIGV4
cGxpY2l0IFRyYWNlSUQobG9uZyBpZCwgdW5zaWduZWQgY2hhciogZmxhZ3MpIDoKKyAgICAgICAg
bV9kYXRhKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oaWQpKSB7ICh2b2lkKWZsYWdz
OyB9CisgICAgZXhwbGljaXQgVHJhY2VJRChpbnQgaWQsIHVuc2lnbmVkIGNoYXIqIGZsYWdzKSA6
CisgICAgICAgIG1fZGF0YShzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGlkKSkgeyAo
dm9pZClmbGFnczsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQoc2hvcnQgaWQsIHVuc2lnbmVkIGNo
YXIqIGZsYWdzKSA6CisgICAgICAgIG1fZGF0YShzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxv
bmc+KGlkKSkgeyAodm9pZClmbGFnczsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQoc2lnbmVkIGNo
YXIgaWQsIHVuc2lnbmVkIGNoYXIqIGZsYWdzKSA6CisgICAgICAgIG1fZGF0YShzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBsb25nIGxvbmc+KGlkKSkgeyAodm9pZClmbGFnczsgfQorCisgICAgdW5zaWdu
ZWQgbG9uZyBsb25nIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKworcHJpdmF0ZToK
KyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbV9kYXRhOworfTsKKworLy8gU2ltcGxlIHVuaW9uIHRv
IHN0b3JlIHZhcmlvdXMgdHlwZXMgYXMgdW5zaWduZWQgbG9uZyBsb25nLgordW5pb24gVHJhY2VW
YWx1ZVVuaW9uIHsKKyAgICBib29sIG1fYm9vbDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbV91
aW50OworICAgIGxvbmcgbG9uZyBtX2ludDsKKyAgICBkb3VibGUgbV9kb3VibGU7CisgICAgY29u
c3Qgdm9pZCogbV9wb2ludGVyOworICAgIGNvbnN0IGNoYXIqIG1fc3RyaW5nOworfTsKKworLy8g
U2ltcGxlIGNvbnRhaW5lciBmb3IgY29uc3QgY2hhciogdGhhdCBzaG91bGQgYmUgY29waWVkIGlu
c3RlYWQgb2YgcmV0YWluZWQuCitjbGFzcyBUcmFjZVN0cmluZ1dpdGhDb3B5IHsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBUcmFjZVN0cmluZ1dpdGhDb3B5KGNvbnN0IGNoYXIqIHN0cikgOiBtX3N0
cihzdHIpIHsgfQorICAgIG9wZXJhdG9yIGNvbnN0IGNoYXIqICgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyOyB9Citwcml2YXRlOgorICAgIGNvbnN0IGNoYXIqIG1fc3RyOworfTsKKworLy8gRGVmaW5l
IHNldFRyYWNlVmFsdWUgZm9yIGVhY2ggYWxsb3dlZCB0eXBlLiBJdCBzdG9yZXMgdGhlIHR5cGUg
YW5kCisvLyB2YWx1ZSBpbiB0aGUgcmV0dXJuIGFyZ3VtZW50cy4gVGhpcyBhbGxvd3MgdGhpcyBB
UEkgdG8gYXZvaWQgZGVjbGFyaW5nIGFueQorLy8gc3RydWN0dXJlcyBzbyB0aGF0IGl0IGlzIHBv
cnRhYmxlIHRvIHRoaXJkX3BhcnR5IGxpYnJhcmllcy4KKyNkZWZpbmUgSU5URVJOQUxfREVDTEFS
RV9TRVRfVFJBQ0VfVkFMVUUoYWN0dWFsX3R5cGUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5pb25fbWVtYmVyLCBcCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGVfaWQpIFwKKyAgICBzdGF0aWMgaW5saW5lIHZv
aWQgc2V0VHJhY2VWYWx1ZShhY3R1YWxfdHlwZSBhcmcsIFwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiB0eXBlLCBcCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nKiB2YWx1ZSkgeyBcCisgICAg
ICAgIFRyYWNlVmFsdWVVbmlvbiB0eXBlVmFsdWU7IFwKKyAgICAgICAgdHlwZVZhbHVlLnVuaW9u
X21lbWJlciA9IGFyZzsgXAorICAgICAgICAqdHlwZSA9IHZhbHVlX3R5cGVfaWQ7IFwKKyAgICAg
ICAgKnZhbHVlID0gdHlwZVZhbHVlLm1fdWludDsgXAorICAgIH0KKy8vIFNpbXBsZXIgZm9ybSBm
b3IgaW50IHR5cGVzIHRoYXQgY2FuIGJlIHNhZmVseSBjYXN0ZWQuCisjZGVmaW5lIElOVEVSTkFM
X0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVChhY3R1YWxfdHlwZSwgXAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZV9pZCkgXAorICAgIHN0
YXRpYyBpbmxpbmUgdm9pZCBzZXRUcmFjZVZhbHVlKGFjdHVhbF90eXBlIGFyZywgXAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIHR5cGUsIFwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcqIHZh
bHVlKSB7IFwKKyAgICAgICAgKnR5cGUgPSB2YWx1ZV90eXBlX2lkOyBcCisgICAgICAgICp2YWx1
ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oYXJnKTsgXAorICAgIH0KKworSU5U
RVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5UKHVuc2lnbmVkIGxvbmcgbG9uZywgVFJB
Q0VfVkFMVUVfVFlQRV9VSU5UKQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5U
KHVuc2lnbmVkIGludCwgVFJBQ0VfVkFMVUVfVFlQRV9VSU5UKQorSU5URVJOQUxfREVDTEFSRV9T
RVRfVFJBQ0VfVkFMVUVfSU5UKHVuc2lnbmVkIHNob3J0LCBUUkFDRV9WQUxVRV9UWVBFX1VJTlQp
CitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9JTlQodW5zaWduZWQgY2hhciwgVFJB
Q0VfVkFMVUVfVFlQRV9VSU5UKQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5U
KGxvbmcgbG9uZywgVFJBQ0VfVkFMVUVfVFlQRV9JTlQpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9U
UkFDRV9WQUxVRV9JTlQoaW50LCBUUkFDRV9WQUxVRV9UWVBFX0lOVCkKK0lOVEVSTkFMX0RFQ0xB
UkVfU0VUX1RSQUNFX1ZBTFVFX0lOVChzaG9ydCwgVFJBQ0VfVkFMVUVfVFlQRV9JTlQpCitJTlRF
Uk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9JTlQoc2lnbmVkIGNoYXIsIFRSQUNFX1ZBTFVF
X1RZUEVfSU5UKQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUUoYm9vbCwgbV9ib29s
LCBUUkFDRV9WQUxVRV9UWVBFX0JPT0wpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxV
RShkb3VibGUsIG1fZG91YmxlLCBUUkFDRV9WQUxVRV9UWVBFX0RPVUJMRSkKK0lOVEVSTkFMX0RF
Q0xBUkVfU0VUX1RSQUNFX1ZBTFVFKGNvbnN0IHZvaWQqLCBtX3BvaW50ZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUUkFDRV9WQUxVRV9UWVBFX1BPSU5URVIpCitJTlRFUk5B
TF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRShjb25zdCBjaGFyKiwgbV9zdHJpbmcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUUkFDRV9WQUxVRV9UWVBFX1NUUklORykKK0lOVEVS
TkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFKGNvbnN0IFRyYWNlU3RyaW5nV2l0aENvcHkmLCBt
X3N0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSQUNFX1ZBTFVFX1RZ
UEVfQ09QWV9TVFJJTkcpCisKKyN1bmRlZiBJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxV
RQorI3VuZGVmIElOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVAorCitzdGF0aWMg
aW5saW5lIHZvaWQgc2V0VHJhY2VWYWx1ZShjb25zdCBzdGQ6OnN0cmluZyYgYXJnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciogdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyogdmFsdWUpIHsKKyAg
ICBUcmFjZVZhbHVlVW5pb24gdHlwZVZhbHVlOworICAgIHR5cGVWYWx1ZS5tX3N0cmluZyA9IGFy
Zy5kYXRhKCk7CisgICAgKnR5cGUgPSBUUkFDRV9WQUxVRV9UWVBFX0NPUFlfU1RSSU5HOworICAg
ICp2YWx1ZSA9IHR5cGVWYWx1ZS5tX3VpbnQ7Cit9CisKKy8vIFRoZXNlIGFkZFRyYWNlRXZlbnQg
dGVtcGxhdGUgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIGhlcmUgaW5zdGVhZCBvZiBpbiB0aGUKKy8v
IG1hY3JvLCBiZWNhdXNlIHRoZSBhcmcgdmFsdWVzIGNvdWxkIGJlIHRlbXBvcmFyeSBzdHJpbmcg
b2JqZWN0cy4gSW4gb3JkZXIgdG8KKy8vIHN0b3JlIHBvaW50ZXJzIHRvIHRoZSBpbnRlcm5hbCBj
X3N0ciBhbmQgcGFzcyB0aHJvdWdoIHRvIHRoZSB0cmFjaW5nIEFQSSwgdGhlCisvLyBhcmcgdmFs
dWVzIG11c3QgbGl2ZSB0aHJvdWdob3V0IHRoZXNlIHByb2NlZHVyZXMuCisKK3N0YXRpYyBpbmxp
bmUgdm9pZCBhZGRUcmFjZUV2ZW50KGNoYXIgcGhhc2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5RW5hYmxlZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGlkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGZsYWdzKSB7CisgICAgVFJBQ0VfRVZFTlRf
QVBJX0FERF9UUkFDRV9FVkVOVCgKKyAgICAgICAgcGhhc2UsIGNhdGVnb3J5RW5hYmxlZCwgbmFt
ZSwgaWQsCisgICAgICAgIHplcm9OdW1BcmdzLCAwLCAwLCAwLAorICAgICAgICBmbGFncyk7Cit9
CisKK3RlbXBsYXRlPGNsYXNzIEFSRzFfVFlQRT4KK3N0YXRpYyBpbmxpbmUgdm9pZCBhZGRUcmFj
ZUV2ZW50KGNoYXIgcGhhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbG9uZyBsb25nIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBhcmcxTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgQVJHMV9UWVBFJiBhcmcxVmFsKSB7CisgICAgY29uc3QgaW50IG51bUFyZ3MgPSAxOworICAg
IHVuc2lnbmVkIGNoYXIgYXJnVHlwZXNbMV07CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGFyZ1Zh
bHVlc1sxXTsKKyAgICBzZXRUcmFjZVZhbHVlKGFyZzFWYWwsICZhcmdUeXBlc1swXSwgJmFyZ1Zh
bHVlc1swXSk7CisgICAgVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVCgKKyAgICAgICAg
cGhhc2UsIGNhdGVnb3J5RW5hYmxlZCwgbmFtZSwgaWQsCisgICAgICAgIG51bUFyZ3MsICZhcmcx
TmFtZSwgYXJnVHlwZXMsIGFyZ1ZhbHVlcywKKyAgICAgICAgZmxhZ3MpOworfQorCit0ZW1wbGF0
ZTxjbGFzcyBBUkcxX1RZUEUsIGNsYXNzIEFSRzJfVFlQRT4KK3N0YXRpYyBpbmxpbmUgdm9pZCBh
ZGRUcmFjZUV2ZW50KGNoYXIgcGhhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBhcmcxTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQVJHMV9UWVBFJiBhcmcxVmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBhcmcyTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQVJHMl9UWVBFJiBhcmcyVmFsKSB7CisgICAgY29uc3QgaW50IG51bUFyZ3MgPSAy
OworICAgIGNvbnN0IGNoYXIqIGFyZ05hbWVzWzJdID0geyBhcmcxTmFtZSwgYXJnMk5hbWUgfTsK
KyAgICB1bnNpZ25lZCBjaGFyIGFyZ1R5cGVzWzJdOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBh
cmdWYWx1ZXNbMl07CisgICAgc2V0VHJhY2VWYWx1ZShhcmcxVmFsLCAmYXJnVHlwZXNbMF0sICZh
cmdWYWx1ZXNbMF0pOworICAgIHNldFRyYWNlVmFsdWUoYXJnMlZhbCwgJmFyZ1R5cGVzWzFdLCAm
YXJnVmFsdWVzWzFdKTsKKyAgICByZXR1cm4gVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVO
VCgKKyAgICAgICAgcGhhc2UsIGNhdGVnb3J5RW5hYmxlZCwgbmFtZSwgaWQsCisgICAgICAgIG51
bUFyZ3MsIGFyZ05hbWVzLCBhcmdUeXBlcywgYXJnVmFsdWVzLAorICAgICAgICBmbGFncyk7Cit9
CisKKy8vIFVzZWQgYnkgVFJBQ0VfRVZFTlR4IG1hY3JvLiBEbyBub3QgdXNlIGRpcmVjdGx5Lgor
Y2xhc3MgVHJhY2VFbmRPblNjb3BlQ2xvc2UgeworcHVibGljOgorICAgIC8vIE5vdGU6IG1lbWJl
cnMgb2YgbV9kYXRhIGludGVudGlvbmFsbHkgbGVmdCB1bmluaXRpYWxpemVkLiBTZWUgaW5pdGlh
bGl6ZS4KKyAgICBUcmFjZUVuZE9uU2NvcGVDbG9zZSgpIDogbV9wZGF0YSgwKSB7IH0KKyAgICB+
VHJhY2VFbmRPblNjb3BlQ2xvc2UoKQorICAgIHsKKyAgICAgICAgaWYgKG1fcGRhdGEpCisgICAg
ICAgICAgICBhZGRFdmVudElmRW5hYmxlZCgpOworICAgIH0KKworICAgIHZvaWQgaW5pdGlhbGl6
ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIG5hbWUpCisgICAgeworICAgICAgICBtX2RhdGEuY2F0ZWdvcnlFbmFi
bGVkID0gY2F0ZWdvcnlFbmFibGVkOworICAgICAgICBtX2RhdGEubmFtZSA9IG5hbWU7CisgICAg
ICAgIG1fcGRhdGEgPSAmbV9kYXRhOworICAgIH0KKworcHJpdmF0ZToKKyAgICAvLyBBZGQgdGhl
IGVuZCBldmVudCBpZiB0aGUgY2F0ZWdvcnkgaXMgc3RpbGwgZW5hYmxlZC4KKyAgICB2b2lkIGFk
ZEV2ZW50SWZFbmFibGVkKCkKKyAgICB7CisgICAgICAgIC8vIE9ubHkgY2FsbGVkIHdoZW4gbV9w
ZGF0YSBpcyBub24tbnVsbC4KKyAgICAgICAgaWYgKCptX3BkYXRhLT5jYXRlZ29yeUVuYWJsZWQp
IHsKKyAgICAgICAgICAgIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQoCisgICAgICAg
ICAgICAgICAgVFJBQ0VfRVZFTlRfUEhBU0VfRU5ELAorICAgICAgICAgICAgICAgIG1fcGRhdGEt
PmNhdGVnb3J5RW5hYmxlZCwKKyAgICAgICAgICAgICAgICBtX3BkYXRhLT5uYW1lLCBub0V2ZW50
SWQsCisgICAgICAgICAgICAgICAgemVyb051bUFyZ3MsIDAsIDAsIDAsCisgICAgICAgICAgICAg
ICAgVFJBQ0VfRVZFTlRfRkxBR19OT05FKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRo
aXMgRGF0YSBzdHJ1Y3Qgd29ya2Fyb3VuZCBpcyB0byBhdm9pZCBpbml0aWFsaXppbmcgYWxsIHRo
ZSBtZW1iZXJzCisgICAgLy8gaW4gRGF0YSBkdXJpbmcgY29uc3RydWN0aW9uIG9mIHRoaXMgb2Jq
ZWN0LCBzaW5jZSB0aGlzIG9iamVjdCBpcyBhbHdheXMKKyAgICAvLyBjb25zdHJ1Y3RlZCwgZXZl
biB3aGVuIHRyYWNpbmcgaXMgZGlzYWJsZWQuIElmIHRoZSBtZW1iZXJzIG9mIERhdGEgd2VyZQor
ICAgIC8vIG1lbWJlcnMgb2YgdGhpcyBjbGFzcyBpbnN0ZWFkLCBjb21waWxlciB3YXJuaW5ncyBv
Y2N1ciBhYm91dCBwb3RlbnRpYWwKKyAgICAvLyB1bmluaXRpYWxpemVkIGFjY2Vzc2VzLgorICAg
IHN0cnVjdCBEYXRhIHsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFi
bGVkOworICAgICAgICBjb25zdCBjaGFyKiBuYW1lOworICAgIH07CisgICAgRGF0YSogbV9wZGF0
YTsKKyAgICBEYXRhIG1fZGF0YTsKK307CisKKy8vIFRyYWNlRXZlbnRTYW1wbGluZ1N0YXRlU2Nv
cGUgcmVjb3JkcyB0aGUgY3VycmVudCBzYW1wbGluZyBzdGF0ZQorLy8gYW5kIHNldHMgYSBuZXcg
c2FtcGxpbmcgc3RhdGUuIFdoZW4gdGhlIHNjb3BlIGV4aXN0cywgaXQgcmVzdG9yZXMKKy8vIHRo
ZSBzYW1wbGluZyBzdGF0ZSBoYXZpbmcgcmVjb3JkZWQuCit0ZW1wbGF0ZTxzaXplX3QgQnVja2V0
TnVtYmVyPgorY2xhc3MgU2FtcGxpbmdTdGF0ZVNjb3BlIHsKK3B1YmxpYzoKKyAgICBTYW1wbGlu
Z1N0YXRlU2NvcGUoY29uc3QgY2hhciogY2F0ZWdvcnlBbmROYW1lKQorICAgIHsKKyAgICAgICAg
bV9wcmV2aW91c1N0YXRlID0gU2FtcGxpbmdTdGF0ZVNjb3BlPEJ1Y2tldE51bWJlcj46OmN1cnJl
bnQoKTsKKyAgICAgICAgU2FtcGxpbmdTdGF0ZVNjb3BlPEJ1Y2tldE51bWJlcj46OnNldChjYXRl
Z29yeUFuZE5hbWUpOworICAgIH0KKworICAgIH5TYW1wbGluZ1N0YXRlU2NvcGUoKQorICAgIHsK
KyAgICAgICAgU2FtcGxpbmdTdGF0ZVNjb3BlPEJ1Y2tldE51bWJlcj46OnNldChtX3ByZXZpb3Vz
U3RhdGUpOworICAgIH0KKworICAgIC8vIEZJWE1FOiBNYWtlIGxvYWQvc3RvcmUgdG8gdHJhY2VT
YW1wbGluZ1N0YXRlW10gdGhyZWFkLXNhZmUgYW5kIGF0b21pYy4KKyAgICBzdGF0aWMgaW5saW5l
IGNvbnN0IGNoYXIqIGN1cnJlbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KCpnbDo6dHJhY2VTYW1wbGluZ1N0YXRlW0J1Y2tldE51bWJlcl0p
OworICAgIH0KKyAgICBzdGF0aWMgaW5saW5lIHZvaWQgc2V0KGNvbnN0IGNoYXIqIGNhdGVnb3J5
QW5kTmFtZSkKKyAgICB7CisgICAgICAgICpnbDo6dHJhY2VTYW1wbGluZ1N0YXRlW0J1Y2tldE51
bWJlcl0gPSByZWludGVycHJldF9jYXN0PGxvbmc+KGNvbnN0X2Nhc3Q8Y2hhcio+KGNhdGVnb3J5
QW5kTmFtZSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBjaGFyKiBtX3ByZXZpb3Vz
U3RhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBUcmFjZUV2ZW50CisKK30gLy8gbmFtZXNwYWNl
IGdsCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5NTMwKQorKysgU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMt
MTEtMTkgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFwcGxlLmNvbT4KKworICAgICAgICBVcGRh
dGUgQU5HTEUgc291cmNlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNDYxNS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUZXN0cyBjb3ZlcmVkIGJ5IEtocm9ub3MgV2ViR0wgY29uZm9ybWFuY2UgdGVz
dHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHA6
IFJlc29sdmUgYSBidWlsZCBlcnJvciB0aGF0IHJlc3VsdGVkIGZyb20gdXBkYXRpbmcgQU5HTEUu
CisgICAgICAgIChXZWJDb3JlOjpnZXRTeW1ib2xJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkFO
R0xFV2ViS2l0QnJpZGdlOjpjb21waWxlU2hhZGVyU291cmNlKToKKwogMjAxMy0xMS0xOSAgRmls
aXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBXYXRjaHBvaW50
U2V0Ojpub3RpZnlXcml0ZSgpIHNob3VsZCBiZSByZW5hbWVkIHRvIFdhdGNocG9pbnRTZXQ6OmZp
cmVBbGwoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJL
aXRCcmlkZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcAkocmV2aXNpb24gMTU5MDkwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MCwxNCArODAsMTYgQEAgc3RhdGljIGJvb2wgZ2V0U3ltYm9sSW5mbyhTaEhhbmRs
ZSBjb21waQogICAgIGZvciAoQU5HTEVHZXRJbmZvVHlwZSBpID0gMDsgaSA8IG51bVN5bWJvbHM7
ICsraSkgewogICAgICAgICBBTkdMRVNoYWRlclN5bWJvbCBzeW1ib2w7CiAgICAgICAgIEFOR0xF
R2V0SW5mb1R5cGUgbmFtZUxlbmd0aCA9IDA7CisgICAgICAgIFNoUHJlY2lzaW9uVHlwZSBwcmVj
aXNpb247CisgICAgICAgIGludCBzdGF0aWNVc2U7CiAgICAgICAgIHN3aXRjaCAoc3ltYm9sVHlw
ZSkgewogICAgICAgICBjYXNlIFNIX0FDVElWRV9BVFRSSUJVVEVTOgogICAgICAgICAgICAgc3lt
Ym9sLnN5bWJvbFR5cGUgPSBTSEFERVJfU1lNQk9MX1RZUEVfQVRUUklCVVRFOwotICAgICAgICAg
ICAgU2hHZXRBY3RpdmVBdHRyaWIoY29tcGlsZXIsIGksICZuYW1lTGVuZ3RoLCAmc3ltYm9sLnNp
emUsICZzeW1ib2wuZGF0YVR5cGUsIG5hbWVCdWZmZXIuZGF0YSgpLCBtYXBwZWROYW1lQnVmZmVy
LmRhdGEoKSk7CisgICAgICAgICAgICBTaEdldFZhcmlhYmxlSW5mbyhjb21waWxlciwgc3ltYm9s
VHlwZSwgaSwgJm5hbWVMZW5ndGgsICZzeW1ib2wuc2l6ZSwgJnN5bWJvbC5kYXRhVHlwZSwgJnBy
ZWNpc2lvbiwgJnN0YXRpY1VzZSwgbmFtZUJ1ZmZlci5kYXRhKCksIG1hcHBlZE5hbWVCdWZmZXIu
ZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNIX0FDVElWRV9VTklG
T1JNUzoKICAgICAgICAgICAgIHN5bWJvbC5zeW1ib2xUeXBlID0gU0hBREVSX1NZTUJPTF9UWVBF
X1VOSUZPUk07Ci0gICAgICAgICAgICBTaEdldEFjdGl2ZVVuaWZvcm0oY29tcGlsZXIsIGksICZu
YW1lTGVuZ3RoLCAmc3ltYm9sLnNpemUsICZzeW1ib2wuZGF0YVR5cGUsIG5hbWVCdWZmZXIuZGF0
YSgpLCBtYXBwZWROYW1lQnVmZmVyLmRhdGEoKSk7CisgICAgICAgICAgICBTaEdldFZhcmlhYmxl
SW5mbyhjb21waWxlciwgc3ltYm9sVHlwZSwgaSwgJm5hbWVMZW5ndGgsICZzeW1ib2wuc2l6ZSwg
JnN5bWJvbC5kYXRhVHlwZSwgJnByZWNpc2lvbiwgJnN0YXRpY1VzZSwgbmFtZUJ1ZmZlci5kYXRh
KCksIG1hcHBlZE5hbWVCdWZmZXIuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xOTEsNyAr
MTkzLDcgQEAgYm9vbCBBTkdMRVdlYktpdEJyaWRnZTo6Y29tcGlsZVNoYWRlclNvdQogCiAgICAg
Y29uc3QgY2hhciogY29uc3Qgc2hhZGVyU291cmNlU3RyaW5nc1tdID0geyBzaGFkZXJTb3VyY2Ug
fTsKIAotICAgIGJvb2wgdmFsaWRhdGVTdWNjZXNzID0gU2hDb21waWxlKGNvbXBpbGVyLCBzaGFk
ZXJTb3VyY2VTdHJpbmdzLCAxLCBTSF9PQkpFQ1RfQ09ERSB8IFNIX0FUVFJJQlVURVNfVU5JRk9S
TVMgfCBleHRyYUNvbXBpbGVPcHRpb25zKTsKKyAgICBib29sIHZhbGlkYXRlU3VjY2VzcyA9IFNo
Q29tcGlsZShjb21waWxlciwgc2hhZGVyU291cmNlU3RyaW5ncywgMSwgU0hfT0JKRUNUX0NPREUg
fCBTSF9WQVJJQUJMRVMgfCBleHRyYUNvbXBpbGVPcHRpb25zKTsKICAgICBpZiAoIXZhbGlkYXRl
U3VjY2VzcykgewogICAgICAgICBpbnQgbG9nU2l6ZSA9IGdldFZhbGlkYXRpb25SZXN1bHRWYWx1
ZShjb21waWxlciwgU0hfSU5GT19MT0dfTEVOR1RIKTsKICAgICAgICAgaWYgKGxvZ1NpemUgPiAx
KSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217361</attachid>
            <date>2013-11-19 16:58:07 -0800</date>
            <delta_ts>2013-11-19 17:15:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124615-20131119165806.patch</filename>
            <type>text/plain</type>
            <size>899522</size>
            <attacher name="Roger Fong">roger_fong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1OTUzMikKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDQ4NiBAQAorMjAxMy0xMS0xOSAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgor
CisgICAgICAgIFVwZGF0ZSBBTkdMRSBzb3VyY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjE1LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBBTkdMRSB0byBjaGVja291dCBhNjBlMDgw
NTcyMWY2MmMyOGE1NWZhZjJkZjc0NDcyY2M1ZmM5MWZjLgorICAgICAgICBNb2RpZnkgeGNvZGVw
cm9qIGZpbGVzIGFzIG5lY2Vzc2FyeSwgdXBkYXRlIHBsaXN0LgorICAgICAgICBTdG9wIHVzaW5n
IERlcml2ZWRTb3VyY2VzLm1ha2UgYW5kIGp1c3QgdXNlIHRoZSBnZW5lcmF0ZWQgc291cmNlcyB0
aGF0IGFyZSBjaGVja2VkIGludG8gQU5HTEUuCisKKyAgICAgICAgKiBBTkdMRS5wbGlzdDoKKyAg
ICAgICAgKiBBTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIERlcml2
ZWRTb3VyY2VzLm1ha2U6IFJlbW92ZWQuCisgICAgICAgICogaW5jbHVkZS9FR0wvZWdsLmg6Cisg
ICAgICAgICogaW5jbHVkZS9FR0wvZWdsc29mdGxpbmtpbmcuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBpbmNsdWRlL0dMRVMyL2dsMi5oOgorICAgICAgICAqIGluY2x1ZGUvR0xFUzIvZ2wyc29mdGxp
bmtpbmcuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5o
OgorICAgICAgICAqIGluY2x1ZGUvS0hSL2tocnBsYXRmb3JtLmg6CisgICAgICAgICogc3JjL0FO
R0xFLnNsbjogQWRkZWQuCisgICAgICAgICogc3JjL2J1aWxkX2FuZ2xlLmd5cGk6CisgICAgICAg
ICogc3JjL2NvbW1vbi9kZWJ1Zy5oOgorICAgICAgICAqIHNyYy9jb21tb24vZXZlbnRfdHJhY2Vy
LmNwcDogQWRkZWQuCisgICAgICAgIChnbDo6VHJhY2VHZXRUcmFjZUNhdGVnb3J5RW5hYmxlZEZs
YWcpOgorICAgICAgICAoZ2w6OlRyYWNlQWRkVHJhY2VFdmVudCk6CisgICAgICAgICogc3JjL2Nv
bW1vbi9ldmVudF90cmFjZXIuaDogQWRkZWQuCisgICAgICAgICogc3JjL2NvbW1vbi92ZXJzaW9u
Lmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0NvZGVHZW4uY3BwOiBBZGRlZC4KKyAgICAgICAg
KENvbnN0cnVjdENvbXBpbGVyKToKKyAgICAgICAgKERlbGV0ZUNvbXBpbGVyKToKKyAgICAgICAg
KiBzcmMvY29tcGlsZXIvQ29kZUdlbkdMU0wuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9j
b21waWxlci9Db2RlR2VuSExTTC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3JjL2NvbXBpbGVy
L0NvbW1vbi5oOgorICAgICAgICAoTmV3UG9vbFRTdHJpbmcpOgorICAgICAgICAqIHNyYy9jb21w
aWxlci9Db21waWxlci5jcHA6CisgICAgICAgIChUQ29tcGlsZXI6OkluaXQpOgorICAgICAgICAo
VENvbXBpbGVyOjpjb21waWxlKToKKyAgICAgICAgKFRDb21waWxlcjo6SW5pdEJ1aWx0SW5TeW1i
b2xUYWJsZSk6CisgICAgICAgIChUQ29tcGlsZXI6OmNsZWFyUmVzdWx0cyk6CisgICAgICAgIChU
Q29tcGlsZXI6OmNvbGxlY3RWYXJpYWJsZXMpOgorICAgICAgICAqIHNyYy9jb21waWxlci9Db25z
dGFudFVuaW9uLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVpdHku
Y3BwOgorICAgICAgICAqIHNyYy9jb21waWxlci9JbmZvU2luay5oOgorICAgICAgICAqIHNyYy9j
b21waWxlci9Jbml0aWFsaXplRGxsLmNwcDoKKyAgICAgICAgKEluaXRQcm9jZXNzKToKKyAgICAg
ICAgKERldGFjaFByb2Nlc3MpOgorICAgICAgICAqIHNyYy9jb21waWxlci9Jbml0aWFsaXplRGxs
Lmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0luaXRpYWxpemVHTFBvc2l0aW9uLmNwcDogQWRk
ZWQuCisgICAgICAgIChJbml0aWFsaXplR0xQb3NpdGlvbjo6dmlzaXRBZ2dyZWdhdGUpOgorICAg
ICAgICAoSW5pdGlhbGl6ZUdMUG9zaXRpb246Omluc2VydENvZGUpOgorICAgICAgICAqIHNyYy9j
b21waWxlci9Jbml0aWFsaXplR0xQb3NpdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEluaXRpYWxp
emVHTFBvc2l0aW9uOjpJbml0aWFsaXplR0xQb3NpdGlvbik6CisgICAgICAgIChJbml0aWFsaXpl
R0xQb3NpdGlvbjo6dmlzaXRCaW5hcnkpOgorICAgICAgICAoSW5pdGlhbGl6ZUdMUG9zaXRpb246
OnZpc2l0VW5hcnkpOgorICAgICAgICAoSW5pdGlhbGl6ZUdMUG9zaXRpb246OnZpc2l0U2VsZWN0
aW9uKToKKyAgICAgICAgKEluaXRpYWxpemVHTFBvc2l0aW9uOjp2aXNpdExvb3ApOgorICAgICAg
ICAoSW5pdGlhbGl6ZUdMUG9zaXRpb246OnZpc2l0QnJhbmNoKToKKyAgICAgICAgKiBzcmMvY29t
cGlsZXIvSW5pdGlhbGl6ZUdsb2JhbHMuaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvSW5pdGlh
bGl6ZVBhcnNlQ29udGV4dC5jcHA6CisgICAgICAgIChJbml0aWFsaXplUGFyc2VDb250ZXh0SW5k
ZXgpOgorICAgICAgICAoRnJlZVBhcnNlQ29udGV4dEluZGV4KToKKyAgICAgICAgKFNldEdsb2Jh
bFBhcnNlQ29udGV4dCk6CisgICAgICAgIChHZXRHbG9iYWxQYXJzZUNvbnRleHQpOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9Jbml0aWFsaXplUGFyc2VDb250ZXh0Lmg6CisgICAgICAgICogc3Jj
L2NvbXBpbGVyL0ludGVybVRyYXZlcnNlLmNwcDoKKyAgICAgICAgKFRJbnRlcm1TeW1ib2w6OnRy
YXZlcnNlKToKKyAgICAgICAgKFRJbnRlcm1Db25zdGFudFVuaW9uOjp0cmF2ZXJzZSk6CisgICAg
ICAgIChUSW50ZXJtQmluYXJ5Ojp0cmF2ZXJzZSk6CisgICAgICAgIChUSW50ZXJtVW5hcnk6OnRy
YXZlcnNlKToKKyAgICAgICAgKFRJbnRlcm1BZ2dyZWdhdGU6OnRyYXZlcnNlKToKKyAgICAgICAg
KFRJbnRlcm1TZWxlY3Rpb246OnRyYXZlcnNlKToKKyAgICAgICAgKFRJbnRlcm1Mb29wOjp0cmF2
ZXJzZSk6CisgICAgICAgIChUSW50ZXJtQnJhbmNoOjp0cmF2ZXJzZSk6CisgICAgICAgICogc3Jj
L2NvbXBpbGVyL0ludGVybWVkaWF0ZS5jcHA6CisgICAgICAgIChHZXRIaWdoZXJQcmVjaXNpb24p
OgorICAgICAgICAoZ2V0T3BlcmF0b3JTdHJpbmcpOgorICAgICAgICAoVEludGVybUxvb3A6OnJl
cGxhY2VDaGlsZE5vZGUpOgorICAgICAgICAoVEludGVybUJyYW5jaDo6cmVwbGFjZUNoaWxkTm9k
ZSk6CisgICAgICAgIChUSW50ZXJtQmluYXJ5OjpyZXBsYWNlQ2hpbGROb2RlKToKKyAgICAgICAg
KFRJbnRlcm1VbmFyeTo6cmVwbGFjZUNoaWxkTm9kZSk6CisgICAgICAgIChUSW50ZXJtQWdncmVn
YXRlOjpyZXBsYWNlQ2hpbGROb2RlKToKKyAgICAgICAgKFRJbnRlcm1TZWxlY3Rpb246OnJlcGxh
Y2VDaGlsZE5vZGUpOgorICAgICAgICAoVEludGVybU9wZXJhdG9yOjppc0Fzc2lnbm1lbnQpOgor
ICAgICAgICAoVEludGVybWVkaWF0ZTo6cHJvbW90ZUNvbnN0YW50VW5pb24pOgorICAgICAgICAq
IHNyYy9jb21waWxlci9NYXBMb25nVmFyaWFibGVOYW1lcy5jcHA6CisgICAgICAgICogc3JjL2Nv
bXBpbGVyL01hcExvbmdWYXJpYWJsZU5hbWVzLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL05v
ZGVTZWFyY2guaDogQWRkZWQuCisgICAgICAgIChzaDo6Tm9kZVNlYXJjaFRyYXZlcnNlcjo6Tm9k
ZVNlYXJjaFRyYXZlcnNlcik6CisgICAgICAgIChzaDo6Tm9kZVNlYXJjaFRyYXZlcnNlcjo6Zm91
bmQpOgorICAgICAgICAoc2g6Ok5vZGVTZWFyY2hUcmF2ZXJzZXI6OnNlYXJjaCk6CisgICAgICAg
IChzaDo6RmluZERpc2NhcmQ6OnZpc2l0QnJhbmNoKToKKyAgICAgICAgKHNoOjpGaW5kU2lkZUVm
ZmVjdFJld3JpdGluZzo6dmlzaXRCaW5hcnkpOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRw
dXRHTFNMQmFzZS5jcHA6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6OnZpc2l0U2VsZWN0aW9u
KToKKyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRBZ2dyZWdhdGUpOgorICAgICAgICAo
VE91dHB1dEdMU0xCYXNlOjp2aXNpdExvb3ApOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRw
dXRHTFNMQmFzZS5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRITFNMLmNwcDoKKyAg
ICAgICAgKHNoOjpPdXRwdXRITFNMOjpPdXRwdXRITFNMKToKKyAgICAgICAgKHNoOjpPdXRwdXRI
TFNMOjpoZWFkZXIpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OnZpc2l0QmluYXJ5KToKKyAg
ICAgICAgKHNoOjpPdXRwdXRITFNMOjp2aXNpdFNlbGVjdGlvbik6CisgICAgICAgIChzaDo6T3V0
cHV0SExTTDo6dmlzaXRCcmFuY2gpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OmhhbmRsZUV4
Y2Vzc2l2ZUxvb3ApOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OmFkZENvbnN0cnVjdG9yKToK
KyAgICAgICAgKiBzcmMvY29tcGlsZXIvT3V0cHV0SExTTC5oOgorICAgICAgICAqIHNyYy9jb21w
aWxlci9QYXJzZUNvbnRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBh
cnNlVmVjdG9yRmllbGRzKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcnNlTWF0cml4Rmll
bGRzKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnJlY292ZXIpOgorICAgICAgICAoVFBhcnNl
Q29udGV4dDo6ZXJyb3IpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6d2FybmluZyk6CisgICAg
ICAgIChUUGFyc2VDb250ZXh0Ojp0cmFjZSk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojphc3Np
Z25FcnJvcik6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojp1bmFyeU9wRXJyb3IpOgorICAgICAg
ICAoVFBhcnNlQ29udGV4dDo6YmluYXJ5T3BFcnJvcik6CisgICAgICAgIChUUGFyc2VDb250ZXh0
OjpwcmVjaXNpb25FcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmxWYWx1ZUVy
cm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6Y29uc3RFcnJvckNoZWNrKToKKyAg
ICAgICAgKFRQYXJzZUNvbnRleHQ6OmludGVnZXJFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJz
ZUNvbnRleHQ6Omdsb2JhbEVycm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6cmVz
ZXJ2ZWRFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJy
b3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojp2b2lkRXJyb3JDaGVjayk6CisgICAg
ICAgIChUUGFyc2VDb250ZXh0Ojpib29sRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250
ZXh0OjpzYW1wbGVyRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpzdHJ1Y3RR
dWFsaWZpZXJFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcmFtZXRlclNh
bXBsZXJFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmNvbnRhaW5zU2FtcGxl
cik6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphcnJheVNpemVFcnJvckNoZWNrKToKKyAgICAg
ICAgKFRQYXJzZUNvbnRleHQ6OmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayk6CisgICAgICAgIChU
UGFyc2VDb250ZXh0OjphcnJheVR5cGVFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRl
eHQ6OmFycmF5RXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpub25Jbml0Q29u
c3RFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6Om5vbkluaXRFcnJvckNoZWNr
KToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcmFtRXJyb3JDaGVjayk6CisgICAgICAgIChU
UGFyc2VDb250ZXh0OjpleHRlbnNpb25FcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRl
eHQ6OnN1cHBvcnRzRXh0ZW5zaW9uKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmlzRXh0ZW5z
aW9uRW5hYmxlZCk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpmaW5kRnVuY3Rpb24pOgorICAg
ICAgICAoVFBhcnNlQ29udGV4dDo6ZXhlY3V0ZUluaXRpYWxpemVyKToKKyAgICAgICAgKFRQYXJz
ZUNvbnRleHQ6OmFyZUFsbENoaWxkQ29uc3QpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6YWRk
Q29uc3RydWN0b3IpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6Zm9sZENvbnN0Q29uc3RydWN0
b3IpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0QnVpbHRJbik6CisgICAgICAg
IChUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RTdHJ1Y3QpOgorICAgICAgICAoVFBhcnNlQ29udGV4
dDo6YWRkQ29uc3RWZWN0b3JOb2RlKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0
TWF0cml4Tm9kZSk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphZGRDb25zdEFycmF5Tm9kZSk6
CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphZGRDb25zdFN0cnVjdCk6CisgICAgICAgIChUUGFy
c2VDb250ZXh0OjplbnRlclN0cnVjdERlY2xhcmF0aW9uKToKKyAgICAgICAgKFRQYXJzZUNvbnRl
eHQ6OmV4aXRTdHJ1Y3REZWNsYXJhdGlvbik6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpzdHJ1
Y3ROZXN0aW5nRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphZGRJbmRleEV4
cHJlc3Npb24pOgorICAgICAgICAoUGFQYXJzZVN0cmluZ3MpOgorICAgICAgICAqIHNyYy9jb21w
aWxlci9QYXJzZUNvbnRleHQuaDogQWRkZWQuCisgICAgICAgIChUUGFyc2VDb250ZXh0OjpUUGFy
c2VDb250ZXh0KToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6Om51bUVycm9ycyk6CisgICAgICAg
IChUUGFyc2VDb250ZXh0OjppbmZvU2luayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpwcmFn
bWEpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6ZXh0ZW5zaW9uQmVoYXZpb3IpOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9QYXJzZUhlbHBlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3Jj
L2NvbXBpbGVyL1BhcnNlSGVscGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogc3JjL2NvbXBpbGVy
L1Bvb2xBbGxvYy5jcHA6CisgICAgICAgIChJbml0aWFsaXplUG9vbEluZGV4KToKKyAgICAgICAg
KEZyZWVQb29sSW5kZXgpOgorICAgICAgICAoR2V0R2xvYmFsUG9vbEFsbG9jYXRvcik6CisgICAg
ICAgIChTZXRHbG9iYWxQb29sQWxsb2NhdG9yKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvUG9v
bEFsbG9jLmg6CisgICAgICAgIChwb29sX2FsbG9jYXRvcjo6cG9vbF9hbGxvY2F0b3IpOgorICAg
ICAgICAqIHNyYy9jb21waWxlci9TZWFyY2hTeW1ib2wuaDoKKyAgICAgICAgKiBzcmMvY29tcGls
ZXIvU2hIYW5kbGUuaDoKKyAgICAgICAgKFRDb21waWxlcjo6Z2V0VmFyeWluZ3MpOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9TaGFkZXJMYW5nLmNwcDoKKyAgICAgICAgKGNoZWNrVmFyaWFibGVN
YXhMZW5ndGhzKToKKyAgICAgICAgKFNoSW5pdGlhbGl6ZSk6CisgICAgICAgIChTaEZpbmFsaXpl
KToKKyAgICAgICAgKFNoQ29uc3RydWN0Q29tcGlsZXIpOgorICAgICAgICAoU2hDb21waWxlKToK
KyAgICAgICAgKFNoR2V0SW5mbyk6CisgICAgICAgIChTaEdldFZhcmlhYmxlSW5mbyk6CisgICAg
ICAgIChTaENoZWNrVmFyaWFibGVzV2l0aGluUGFja2luZ0xpbWl0cyk6CisgICAgICAgICogc3Jj
L2NvbXBpbGVyL1N5bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKFRTeW1ib2xUYWJsZTo6flRTeW1i
b2xUYWJsZSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmg6CisgICAgICAg
IChUU3ltYm9sOjpUU3ltYm9sKToKKyAgICAgICAgKFRTeW1ib2xUYWJsZUxldmVsOjppbnNlcnQp
OgorICAgICAgICAoVFN5bWJvbFRhYmxlOjpwdXNoKToKKyAgICAgICAgKFRTeW1ib2xUYWJsZTo6
cG9wKToKKyAgICAgICAgKFRTeW1ib2xUYWJsZTo6ZmluZEJ1aWx0SW4pOgorICAgICAgICAoVFN5
bWJvbFRhYmxlOjpyZWxhdGVUb0V4dGVuc2lvbik6CisgICAgICAgIChUU3ltYm9sVGFibGU6OnNl
dERlZmF1bHRQcmVjaXNpb24pOgorICAgICAgICAoVFN5bWJvbFRhYmxlOjpnZXREZWZhdWx0UHJl
Y2lzaW9uKToKKyAgICAgICAgKFRTeW1ib2xUYWJsZTo6c3VwcG9ydHNQcmVjaXNpb24pOgorICAg
ICAgICAqIHNyYy9jb21waWxlci9UeXBlcy5oOgorICAgICAgICAoTmV3UG9vbFRGaWVsZExpc3Qp
OgorICAgICAgICAoVFR5cGU6OlRUeXBlKToKKyAgICAgICAgKFRUeXBlOjpzZXROb21pbmFsU2l6
ZSk6CisgICAgICAgIChUUHVibGljVHlwZTo6c2V0QWdncmVnYXRlKToKKyAgICAgICAgKiBzcmMv
Y29tcGlsZXIvVW5mb2xkU2hvcnRDaXJjdWl0LmNwcDoKKyAgICAgICAgKHNoOjpVbmZvbGRTaG9y
dENpcmN1aXQ6OnZpc2l0QmluYXJ5KToKKyAgICAgICAgKHNoOjpVbmZvbGRTaG9ydENpcmN1aXQ6
OnZpc2l0U2VsZWN0aW9uKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvVW5mb2xkU2hvcnRDaXJj
dWl0Lmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1VuZm9sZFNob3J0Q2lyY3VpdEFTVC5jcHA6
IEFkZGVkLgorICAgICAgICAoVW5mb2xkU2hvcnRDaXJjdWl0QVNUOjp2aXNpdEJpbmFyeSk6Cisg
ICAgICAgIChVbmZvbGRTaG9ydENpcmN1aXRBU1Q6OnVwZGF0ZVRyZWUpOgorICAgICAgICAqIHNy
Yy9jb21waWxlci9VbmZvbGRTaG9ydENpcmN1aXRBU1QuaDogQWRkZWQuCisgICAgICAgIChVbmZv
bGRTaG9ydENpcmN1aXRBU1Q6OlVuZm9sZFNob3J0Q2lyY3VpdEFTVCk6CisgICAgICAgIChVbmZv
bGRTaG9ydENpcmN1aXRBU1Q6Ok5vZGVVcGRhdGVFbnRyeTo6Tm9kZVVwZGF0ZUVudHJ5KToKKyAg
ICAgICAgKiBzcmMvY29tcGlsZXIvVW5pZm9ybS5jcHA6CisgICAgICAgIChzaDo6VW5pZm9ybTo6
VW5pZm9ybSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1VuaWZvcm0uaDoKKyAgICAgICAgKiBz
cmMvY29tcGlsZXIvVmFsaWRhdGVMaW1pdGF0aW9ucy5jcHA6CisgICAgICAgIChWYWxpZGF0ZUxp
bWl0YXRpb25zOjp2YWxpZGF0ZUZ1bmN0aW9uQ2FsbCk6CisgICAgICAgIChWYWxpZGF0ZUxpbWl0
YXRpb25zOjp2YWxpZGF0ZU9wZXJhdGlvbik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1Zhcmlh
YmxlSW5mby5jcHA6CisgICAgICAgIChUVmFyaWFibGVJbmZvOjpUVmFyaWFibGVJbmZvKToKKyAg
ICAgICAgKENvbGxlY3RWYXJpYWJsZXM6OkNvbGxlY3RWYXJpYWJsZXMpOgorICAgICAgICAoQ29s
bGVjdFZhcmlhYmxlczo6dmlzaXRTeW1ib2wpOgorICAgICAgICAoQ29sbGVjdFZhcmlhYmxlczo6
dmlzaXRBZ2dyZWdhdGUpOgorICAgICAgICAqIHNyYy9jb21waWxlci9WYXJpYWJsZUluZm8uaDoK
KyAgICAgICAgKiBzcmMvY29tcGlsZXIvZGVidWcuY3BwOgorICAgICAgICAqIHNyYy9jb21waWxl
ci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGguY3BwOgorICAgICAgICAqIHNyYy9jb21waWxlci9k
ZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcDoKKyAgICAgICAgKFREZXBlbmRlbmN5
R3JhcGhCdWlsZGVyOjp2aXNpdEJpbmFyeSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL2dlbmVy
YXRlX3BhcnNlci5zaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvZ2xzbGFuZy5sOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9nbHNsYW5nLnk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL2dsc2xh
bmdfbGV4LmNwcDoKKyAgICAgICAgKGlucHV0KToKKyAgICAgICAgKHl5ZXJyb3IpOgorICAgICAg
ICAoaW50X2NvbnN0YW50KToKKyAgICAgICAgKGZsb2F0X2NvbnN0YW50KToKKyAgICAgICAgKGds
c2xhbmdfc2Nhbik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmNwcDoKKyAg
ICAgICAgKHl5c3ludGF4X2Vycm9yKToKKyAgICAgICAgKGdsc2xhbmdfcGFyc2UpOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9nbHNsYW5nX3RhYi5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9p
bnRlcm1lZGlhdGUuaDoKKyAgICAgICAgKFRJbnRlcm1TeW1ib2w6Omhhc1NpZGVFZmZlY3RzKToK
KyAgICAgICAgKFRJbnRlcm1TeW1ib2w6OnJlcGxhY2VDaGlsZE5vZGUpOgorICAgICAgICAoVElu
dGVybUNvbnN0YW50VW5pb246Omhhc1NpZGVFZmZlY3RzKToKKyAgICAgICAgKFRJbnRlcm1Db25z
dGFudFVuaW9uOjpnZXRJQ29uc3QpOgorICAgICAgICAoVEludGVybUNvbnN0YW50VW5pb246Omdl
dEZDb25zdCk6CisgICAgICAgIChUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Z2V0QkNvbnN0KToKKyAg
ICAgICAgKFRJbnRlcm1Db25zdGFudFVuaW9uOjpyZXBsYWNlQ2hpbGROb2RlKToKKyAgICAgICAg
KFRJbnRlcm1PcGVyYXRvcjo6aGFzU2lkZUVmZmVjdHMpOgorICAgICAgICAoVEludGVybUJpbmFy
eTo6aGFzU2lkZUVmZmVjdHMpOgorICAgICAgICAoVEludGVybVVuYXJ5OjpoYXNTaWRlRWZmZWN0
cyk6CisgICAgICAgIChUSW50ZXJtQWdncmVnYXRlOjpoYXNTaWRlRWZmZWN0cyk6CisgICAgICAg
IChUSW50ZXJtU2VsZWN0aW9uOjpoYXNTaWRlRWZmZWN0cyk6CisgICAgICAgIChUSW50ZXJtVHJh
dmVyc2VyOjp+VEludGVybVRyYXZlcnNlcik6CisgICAgICAgIChUSW50ZXJtVHJhdmVyc2VyOjpp
bmNyZW1lbnREZXB0aCk6CisgICAgICAgIChUSW50ZXJtVHJhdmVyc2VyOjpkZWNyZW1lbnREZXB0
aCk6CisgICAgICAgIChUSW50ZXJtVHJhdmVyc2VyOjpnZXRQYXJlbnROb2RlKToKKyAgICAgICAg
KiBzcmMvY29tcGlsZXIvbG9jYWxpbnRlcm1lZGlhdGUuaDoKKyAgICAgICAgKiBzcmMvY29tcGls
ZXIvcGFyc2VDb25zdC5jcHA6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9F
eHByZXNzaW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKHl5X3N5bWJvbF9wcmludCk6CisgICAgICAg
ICh5eV9zdGFja19wcmludCk6CisgICAgICAgICh5eV9yZWR1Y2VfcHJpbnQpOgorICAgICAgICAo
eXlzdHJsZW4pOgorICAgICAgICAoeXlzdHBjcHkpOgorICAgICAgICAoeXl0bmFtZXJyKToKKyAg
ICAgICAgKHl5c3ludGF4X2Vycm9yKToKKyAgICAgICAgKHl5ZGVzdHJ1Y3QpOgorICAgICAgICAo
eXlwYXJzZSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9u
UGFyc2VyLnk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNz
b3IuY3BwOgorICAgICAgICAocHA6OlByZXByb2Nlc3Nvcjo6c2V0TWF4VG9rZW5MZW5ndGgpOgor
ICAgICAgICAocHA6OlByZXByb2Nlc3Nvcjo6bGV4KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIv
cHJlcHJvY2Vzc29yL1ByZXByb2Nlc3Nvci5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9wcmVw
cm9jZXNzb3IvVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKHBwOjpUb2tlbml6ZXI6OlRva2VuaXpl
cik6CisgICAgICAgIChwcDo6VG9rZW5pemVyOjpsZXgpOgorICAgICAgICAqIHNyYy9jb21waWxl
ci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmg6CisgICAgICAgIChwcDo6VG9rZW5pemVyOjpzZXRN
YXhUb2tlbkxlbmd0aCk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tl
bml6ZXIubDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL2dlbmVyYXRlX3Bh
cnNlci5zaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3ByZXByb2Nlc3Nv
ci52Y3hwcm9qOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3By
ZXByb2Nlc3Nvci52Y3hwcm9qLmZpbHRlcnM6IEFkZGVkLgorICAgICAgICAqIHNyYy9jb21waWxl
ci90aW1pbmcvUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZy5jcHA6CisgICAgICAgICogc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IudmN4cHJvajogQWRkZWQuCisgICAgICAgICogc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IudmN4cHJvai5maWx0ZXJzOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvY29t
cGlsZXIvdXRpbC5jcHA6CisgICAgICAgIChhdG9mX2NsYW1wKToKKyAgICAgICAgKGF0b2lfY2xh
bXApOgorICAgICAgICAqIHNyYy9jb21waWxlci91dGlsLmg6CisgICAgICAgICogc3JjL2xpYkVH
TC9TdXJmYWNlLmNwcDoKKyAgICAgICAgKGVnbDo6U3VyZmFjZTo6Y2hlY2tGb3JPdXRPZkRhdGVT
d2FwQ2hhaW4pOgorICAgICAgICAqIHNyYy9saWJFR0wvbGliRUdMLmNwcDoKKyAgICAgICAgKiBz
cmMvbGliRUdML2xpYkVHTC5yYzoKKyAgICAgICAgKiBzcmMvbGliRUdML2xpYkVHTC52Y3hwcm9q
OiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliRUdML2xpYkVHTC52Y3hwcm9qLmZpbHRlcnM6IEFk
ZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvQnVmZmVyLmNwcDoKKyAgICAgICAgKGdsOjpC
dWZmZXI6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoZ2w6OkJ1ZmZlcjo6YnVmZmVyU3ViRGF0YSk6
CisgICAgICAgIChnbDo6QnVmZmVyOjpzaXplKToKKyAgICAgICAgKGdsOjpCdWZmZXI6OmdldElu
ZGV4UmFuZ2VDYWNoZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9CdWZmZXIuaDoKKyAgICAg
ICAgKiBzcmMvbGliR0xFU3YyL0NvbnRleHQuY3BwOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmFw
cGx5VGV4dHVyZXMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldEJvdW5kRnJhbWVidWZmZXJU
ZXh0dXJlU2VyaWFscyk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9Db250ZXh0Lmg6CisgICAg
ICAgIChnbDo6Q29udGV4dDo6Z2V0UmVuZGVyZXIpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIv
RnJhbWVidWZmZXIuaDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuY3Bw
OgorICAgICAgICAoZ2w6OkRpc2NhcmRXb3JrYXJvdW5kKToKKyAgICAgICAgKGdsOjpQcm9ncmFt
QmluYXJ5Ojpsb2FkKToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpsaW5rKToKKyAgICAg
ICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpsaW5rQXR0cmlidXRlcyk6CisgICAgICAgIChnbDo6QXR0
cmlidXRlU29ydGVyOjpBdHRyaWJ1dGVTb3J0ZXIpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5h
cnk6OmluaXRBdHRyaWJ1dGVzQnlMYXlvdXQpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6
OnNvcnRBdHRyaWJ1dGVzQnlMYXlvdXQpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvUHJvZ3Jh
bUJpbmFyeS5oOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvUmVuZGVyYnVmZmVyLmNwcDoKKyAg
ICAgICAgKGdsOjpSZW5kZXJidWZmZXJUZXh0dXJlMkQ6OmdldFRleHR1cmVTZXJpYWwpOgorICAg
ICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwOjpnZXRUZXh0dXJlU2VyaWFsKToK
KyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXI6OmdldFRleHR1cmVTZXJpYWwpOgorICAgICAgICAq
IHNyYy9saWJHTEVTdjIvUmVuZGVyYnVmZmVyLmg6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVy
U3RvcmFnZTo6Z2V0VGV4dHVyZVNlcmlhbCk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9TaGFk
ZXIuY3BwOgorICAgICAgICAoZ2w6OlNoYWRlcjo6cGFyc2VWYXJ5aW5ncyk6CisgICAgICAgIChn
bDo6U2hhZGVyOjp1bmNvbXBpbGUpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvU2hhZGVyLmg6
CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9UZXh0dXJlLmNwcDoKKyAgICAgICAgKGdsOjpUZXh0
dXJlQ3ViZU1hcDo6c3RvcmFnZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9Vbmlmb3JtLmNw
cDoKKyAgICAgICAgKGdsOjpVbmlmb3JtOjpVbmlmb3JtKToKKyAgICAgICAgKGdsOjpVbmlmb3Jt
Ojp+VW5pZm9ybSk6CisgICAgICAgIChnbDo6VW5pZm9ybTo6aXNBcnJheSk6CisgICAgICAgIChn
bDo6VW5pZm9ybTo6ZWxlbWVudENvdW50KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL1VuaWZv
cm0uaDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL2NvbnN0YW50cy5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHNyYy9saWJHTEVTdjIvbGliR0xFU3YyLmRlZjoKKyAgICAgICAgKiBzcmMvbGliR0xF
U3YyL2xpYkdMRVN2Mi5yYzoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi52Y3hw
cm9qOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi52Y3hwcm9qLmZp
bHRlcnM6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcHJlY29tcGlsZWQuaDoKKyAg
ICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlMTEuY3BwOgorICAgICAgICAocng6
OkltYWdlMTE6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKHJ4OjpJbWFnZTExOjpsb2FkRGF0
YSk6CisgICAgICAgIChyeDo6SW1hZ2UxMTo6bG9hZENvbXByZXNzZWREYXRhKToKKyAgICAgICAg
KHJ4OjpJbWFnZTExOjpjb3B5KToKKyAgICAgICAgKHJ4OjpJbWFnZTExOjpjcmVhdGVTdGFnaW5n
VGV4dHVyZSk6CisgICAgICAgIChyeDo6SW1hZ2UxMTo6bWFwKToKKyAgICAgICAgKiBzcmMvbGli
R0xFU3YyL3JlbmRlcmVyL0ltYWdlMTEuaDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRl
cmVyL0luZGV4QnVmZmVyLmNwcDoKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlckludGVyZmFjZTo6
bWFwQnVmZmVyKToKKyAgICAgICAgKHJ4OjpTdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZTo6Z2V0
SW5kZXhSYW5nZUNhY2hlKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4
QnVmZmVyLmg6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlcjEx
LmNwcDoKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlcjExOjptYXBCdWZmZXIpOgorICAgICAgICAq
IHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhEYXRhTWFuYWdlci5jcHA6CisgICAgICAgIChy
eDo6SW5kZXhEYXRhTWFuYWdlcjo6cHJlcGFyZUluZGV4RGF0YSk6CisgICAgICAgIChyeDo6SW5k
ZXhEYXRhTWFuYWdlcjo6Z2V0Q291bnRpbmdJbmRpY2VzKToKKyAgICAgICAgKiBzcmMvbGliR0xF
U3YyL3JlbmRlcmVyL0luZGV4UmFuZ2VDYWNoZS5jcHA6IEFkZGVkLgorICAgICAgICAocng6Oklu
ZGV4UmFuZ2VDYWNoZTo6YWRkUmFuZ2UpOgorICAgICAgICAocng6OkluZGV4UmFuZ2VDYWNoZTo6
aW52YWxpZGF0ZVJhbmdlKToKKyAgICAgICAgKHJ4OjpJbmRleFJhbmdlQ2FjaGU6OmZpbmRSYW5n
ZSk6CisgICAgICAgIChyeDo6SW5kZXhSYW5nZUNhY2hlOjpjbGVhcik6CisgICAgICAgIChyeDo6
SW5kZXhSYW5nZUNhY2hlOjpJbmRleFJhbmdlOjpJbmRleFJhbmdlKToKKyAgICAgICAgKHJ4OjpJ
bmRleFJhbmdlQ2FjaGU6OkluZGV4UmFuZ2U6Om9wZXJhdG9yPCk6CisgICAgICAgIChyeDo6SW5k
ZXhSYW5nZUNhY2hlOjpJbmRleEJvdW5kczo6SW5kZXhCb3VuZHMpOgorICAgICAgICAqIHNyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhSYW5nZUNhY2hlLmg6IEFkZGVkLgorICAgICAgICAqIHNy
Yy9saWJHTEVTdjIvcmVuZGVyZXIvSW5wdXRMYXlvdXRDYWNoZS5jcHA6CisgICAgICAgIChyeDo6
SW5wdXRMYXlvdXRDYWNoZTo6SW5wdXRMYXlvdXRDYWNoZSk6CisgICAgICAgIChyeDo6SW5wdXRM
YXlvdXRDYWNoZTo6Y2xlYXIpOgorICAgICAgICAocng6OklucHV0TGF5b3V0Q2FjaGU6Om1hcmtE
aXJ0eSk6CisgICAgICAgIChyeDo6SW5wdXRMYXlvdXRDYWNoZTo6YXBwbHlWZXJ0ZXhCdWZmZXJz
KToKKyAgICAgICAgKHJ4OjpJbnB1dExheW91dENhY2hlOjpoYXNoSW5wdXRMYXlvdXQpOgorICAg
ICAgICAocng6OklucHV0TGF5b3V0Q2FjaGU6OmNvbXBhcmVJbnB1dExheW91dHMpOgorICAgICAg
ICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5wdXRMYXlvdXRDYWNoZS5oOgorICAgICAgICAo
cng6OklucHV0TGF5b3V0Q2FjaGU6OklucHV0TGF5b3V0S2V5OjpiZWdpbik6CisgICAgICAgIChy
eDo6SW5wdXRMYXlvdXRDYWNoZTo6SW5wdXRMYXlvdXRLZXk6OmVuZCk6CisgICAgICAgICogc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQxMS5jcHA6CisgICAgICAgIChyeDo6UmVu
ZGVyVGFyZ2V0MTE6OmdldFRleHR1cmUpOgorICAgICAgICAocng6OlJlbmRlclRhcmdldDExOjpn
ZXRSZW5kZXJUYXJnZXRWaWV3KToKKyAgICAgICAgKHJ4OjpSZW5kZXJUYXJnZXQxMTo6Z2V0RGVw
dGhTdGVuY2lsVmlldyk6CisgICAgICAgIChyeDo6UmVuZGVyVGFyZ2V0MTE6OmdldFNoYWRlclJl
c291cmNlVmlldyk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJn
ZXQxMS5oOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIuY3BwOgor
ICAgICAgICAocng6OlJlbmRlcmVyOjppbml0aWFsaXplQ29tcGlsZXIpOgorICAgICAgICAqIHNy
Yy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIuaDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL1JlbmRlcmVyMTEuY3BwOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmluaXRp
YWxpemUpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmFwcGx5UHJpbWl0aXZlVHlwZSk6Cisg
ICAgICAgIChyeDo6UmVuZGVyZXIxMTo6YXBwbHlSZW5kZXJUYXJnZXQpOgorICAgICAgICAocng6
OlJlbmRlcmVyMTE6OmRyYXdMaW5lTG9vcCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6ZHJh
d1RyaWFuZ2xlRmFuKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjphcHBseVVuaWZvcm1zKToK
KyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpjbGVhcik6CisgICAgICAgIChyeDo6UmVuZGVyZXIx
MTo6bWFya0FsbFN0YXRlRGlydHkpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmNvcHlJbWFn
ZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Y29tcGlsZVRvRXhlY3V0YWJsZSk6CisgICAg
ICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0UmVuZGVyVGFyZ2V0UmVzb3VyY2UpOgorICAgICAgICAo
cng6OlJlbmRlcmVyMTE6OmJsaXRSZW5kZXJidWZmZXJSZWN0KToKKyAgICAgICAgKiBzcmMvbGli
R0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyMTEuaDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1JlbmRlcmVyOS5jcHA6CisgICAgICAgIChyeDo6UmVuZGVyZXI5Ojppbml0aWFsaXpl
KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OnNldFZpZXdwb3J0KToKKyAgICAgICAgKHJ4OjpS
ZW5kZXJlcjk6OmRyYXdMaW5lTG9vcCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5Ojpjb21waWxl
VG9FeGVjdXRhYmxlKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVy
OS5oOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluLmg6CisgICAg
ICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW4xMS5jcHA6CisgICAgICAgIChy
eDo6U3dhcENoYWluMTE6OnJlc2V0T2Zmc2NyZWVuVGV4dHVyZSk6CisgICAgICAgIChyeDo6U3dh
cENoYWluMTE6OnJlc2V0KToKKyAgICAgICAgKHJ4OjpTd2FwQ2hhaW4xMTo6c3dhcFJlY3QpOgor
ICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluOS5jcHA6CisgICAgICAg
IChyeDo6Y29udmVydEludGVydmFsKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVy
L1RleHR1cmVTdG9yYWdlMTEuY3BwOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlMTE6Oklz
VGV4dHVyZUZvcm1hdFJlbmRlcmFibGUpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlMTE6
OmdlbmVyYXRlTWlwbWFwTGF5ZXIpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlMTFfQ3Vi
ZTo6Z2V0UmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1Zl
cnRleEJ1ZmZlci5jcHA6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVySW50ZXJmYWNlOjpzdG9y
ZVZlcnRleEF0dHJpYnV0ZXMpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlckludGVyZmFjZTo6
c3RvcmVSYXdEYXRhKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OnJlc2Vy
dmVWZXJ0ZXhTcGFjZSk6CisgICAgICAgIChyeDo6U3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNl
Ojpsb29rdXBBdHRyaWJ1dGUpOgorICAgICAgICAocng6OlN0YXRpY1ZlcnRleEJ1ZmZlckludGVy
ZmFjZTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1ZlcnRleEJ1ZmZlci5oOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIv
VmVydGV4QnVmZmVyMTEuY3BwOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjExOjpnZXRTcGFj
ZVJlcXVpcmVkKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZl
cjExLmg6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXI5LmNw
cDoKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXI5OjpzdG9yZVZlcnRleEF0dHJpYnV0ZXMpOgor
ICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjk6OmdldFNwYWNlUmVxdWlyZWQpOgorICAgICAgICAo
cng6OlZlcnRleEJ1ZmZlcjk6OnJlcXVpcmVzQ29udmVyc2lvbik6CisgICAgICAgIChyeDo6VmVy
dGV4QnVmZmVyOTo6Z2V0VmVydGV4U2l6ZSk6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyOTo6
c3BhY2VSZXF1aXJlZCk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhC
dWZmZXI5Lmg6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhEYXRhTWFu
YWdlci5jcHA6CisgICAgICAgIChyeDo6ZWxlbWVudHNJbkJ1ZmZlcik6CisgICAgICAgIChyeDo6
U3RyZWFtaW5nQnVmZmVyRWxlbWVudENvdW50KToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhEYXRhTWFu
YWdlcjo6cHJlcGFyZVZlcnRleERhdGEpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvVmVydGV4RGF0YU1hbmFnZXIuaDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVy
L3JlbmRlcmVyMTFfdXRpbHMuY3BwOgorICAgICAgICAoZ2xfZDNkMTE6OkNvbnZlcnRUZXh0dXJl
Rm9ybWF0KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGls
ZWQvY2xlYXIxMXZzLmg6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJz
L2NvbXBpbGVkL2NsZWFybXVsdGlwbGUxMXBzLmg6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NsZWFyc2luZ2xlMTFwcy5oOgorICAgICAgICAqIHNy
Yy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9jb21wb25lbnRtYXNrcHMuaDoK
KyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvZmxpcHl2
cy5oOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9s
dW1pbmFuY2Vwcy5oOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9j
b21waWxlZC9wYXNzdGhyb3VnaDExdnMuaDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRl
cmVyL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hsdW0xMXBzLmg6CisgICAgICAgICogc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdobHVtYWxwaGEx
MXBzLmg6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVk
L3Bhc3N0aHJvdWdocHMuaDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRl
cnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2IxMXBzLmg6CisgICAgICAgICogc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiYTExcHMuaDoKKyAgICAg
ICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvc3RhbmRhcmR2cy5o
OgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9nZW5lcmF0ZV9zaGFk
ZXJzLmJhdDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3V0aWxpdGllcy5jcHA6CisgICAgICAg
IChnbDo6Q29tcHV0ZVR5cGVTaXplKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3V0aWxpdGll
cy5oOgorICAgICAgICAqIHNyYy90aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL011cm11ckhhc2gzLmNw
cDoKKyAgICAgICAgKHJvdGwzMik6CisgICAgICAgIChyb3RsNjQpOgorICAgICAgICAoZ2V0Ymxv
Y2spOgorICAgICAgICAoZm1peCk6CisgICAgICAgIChNdXJtdXJIYXNoM194ODZfMzIpOgorICAg
ICAgICAoTXVybXVySGFzaDNfeDg2XzEyOCk6CisgICAgICAgIChNdXJtdXJIYXNoM194NjRfMTI4
KToKKyAgICAgICAgKiBzcmMvdGhpcmRfcGFydHkvbXVybXVyaGFzaC9NdXJtdXJIYXNoMy5oOgor
ICAgICAgICAqIHNyYy90aGlyZF9wYXJ0eS90cmFjZV9ldmVudDogQWRkZWQuCisgICAgICAgICog
c3JjL3RoaXJkX3BhcnR5L3RyYWNlX2V2ZW50L3RyYWNlX2V2ZW50Lmg6IEFkZGVkLgorICAgICAg
ICAoZ2w6OlRyYWNlRXZlbnQ6OlRyYWNlSUQ6OlRyYWNlSUQpOgorICAgICAgICAoZ2w6OlRyYWNl
RXZlbnQ6OlRyYWNlSUQ6OmRhdGEpOgorICAgICAgICAoZ2w6OlRyYWNlRXZlbnQ6OlRyYWNlU3Ry
aW5nV2l0aENvcHk6OlRyYWNlU3RyaW5nV2l0aENvcHkpOgorICAgICAgICAoZ2w6OlRyYWNlRXZl
bnQ6OlRyYWNlU3RyaW5nV2l0aENvcHk6Om9wZXJhdG9yIGNvbnN0IGNoYXIqICk6CisgICAgICAg
IChnbDo6VHJhY2VFdmVudDo6c2V0VHJhY2VWYWx1ZSk6CisgICAgICAgIChnbDo6VHJhY2VFdmVu
dDo6YWRkVHJhY2VFdmVudCk6CisgICAgICAgIChnbDo6VHJhY2VFdmVudDo6VHJhY2VFbmRPblNj
b3BlQ2xvc2U6OlRyYWNlRW5kT25TY29wZUNsb3NlKToKKyAgICAgICAgKGdsOjpUcmFjZUV2ZW50
OjpUcmFjZUVuZE9uU2NvcGVDbG9zZTo6flRyYWNlRW5kT25TY29wZUNsb3NlKToKKyAgICAgICAg
KGdsOjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZTo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChnbDo6VHJhY2VFdmVudDo6VHJhY2VFbmRPblNjb3BlQ2xvc2U6OmFkZEV2ZW50SWZFbmFi
bGVkKToKKyAgICAgICAgKGdsOjpUcmFjZUV2ZW50OjpTYW1wbGluZ1N0YXRlU2NvcGU6OlNhbXBs
aW5nU3RhdGVTY29wZSk6CisgICAgICAgIChnbDo6VHJhY2VFdmVudDo6U2FtcGxpbmdTdGF0ZVNj
b3BlOjp+U2FtcGxpbmdTdGF0ZVNjb3BlKToKKyAgICAgICAgKGdsOjpUcmFjZUV2ZW50OjpTYW1w
bGluZ1N0YXRlU2NvcGU6OmN1cnJlbnQpOgorICAgICAgICAoZ2w6OlRyYWNlRXZlbnQ6OlNhbXBs
aW5nU3RhdGVTY29wZTo6c2V0KToKKwogMjAxMy0xMS0xOCAgTWFyayBSb3dlICA8bXJvd2VAYXBw
bGUuY29tPgogCiAgICAgICAgIFVzZSBody5hY3RpdmVjcHUgZm9yIGRldGVybWluaW5nIGhvdyBt
YW55IHByb2Nlc3NlcyB0byBzcGF3bi4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FO
R0xFLnBsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnBs
aXN0CShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS5w
bGlzdAkod29ya2luZyBjb3B5KQpAQCAtMTAsOSArMTAsOSBAQAogCQk8a2V5Pk9wZW5Tb3VyY2VX
ZWJzaXRlVVJMPC9rZXk+CiAJCTxzdHJpbmc+aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2FuZ2xl
cHJvamVjdC88L3N0cmluZz4KIAkJPGtleT5PcGVuU291cmNlU0NNPC9rZXk+Ci0JCTxzdHJpbmc+
Z2l0IGNsb25lIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvYW5nbGVwcm9qZWN0LyAmJiBjZCBh
bmdsZXByb2plY3QgJiYgZ2l0IGNoZWNrb3V0IDA0NzM3M2FhM2ViNDA4YmU2MmJlNTJhZGU4NDBm
YTVmMTFlNzIzMzc8L3N0cmluZz4KKwkJPHN0cmluZz5naXQgY2xvbmUgaHR0cHM6Ly9jb2RlLmdv
b2dsZS5jb20vcC9hbmdsZXByb2plY3QvICYmIGNkIGFuZ2xlcHJvamVjdCAmJiBnaXQgY2hlY2tv
dXQgYTYwZTA4MDU3MjFmNjJjMjhhNTVmYWYyZGY3NDQ3MmNjNWZjOTFmYzwvc3RyaW5nPgogCQk8
a2V5Pk9wZW5Tb3VyY2VJbXBvcnREYXRlPC9rZXk+Ci0JCTxzdHJpbmc+MjAxMy0wNy0yMjwvc3Ry
aW5nPgorCQk8c3RyaW5nPjIwMTMtMTEtMDc8L3N0cmluZz4KIAkJPGtleT5PcGVuU291cmNlTGlj
ZW5zZTwva2V5PgogCQk8c3RyaW5nPkJTRDwvc3RyaW5nPgogCQk8a2V5Pk9wZW5Tb3VyY2VMaWNl
bnNlRmlsZTwva2V5PgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvRGVyaXZlZFNvdXJj
ZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9EZXJpdmVkU291
cmNlcy5tYWtlCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9E
ZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ0ICswLDAgQEAKLSMgQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgCi0jIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMg
Ci0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0jIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0jIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKLSMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0jIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0jIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1TRUFSQ0hfUEFUSCA9ICQoQU5H
TEUpL3NyYy9jb21waWxlciAkKEFOR0xFKS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yCi0KLXZw
YXRoICUubCAkKFNFQVJDSF9QQVRIKQotdnBhdGggJS55ICQoU0VBUkNIX1BBVEgpCi0KLUZMRVgg
PSBmbGV4IC0tbm9saW5lIC0tbm91bmlzdGQKLUJJU09OID0gYmlzb24gLS1uby1saW5lcyAtLXNr
ZWxldG9uPXlhY2MuYwotCi1hbGwgOiBnbHNsYW5nX2xleC5jcHAgZ2xzbGFuZ190YWIuaCBnbHNs
YW5nX3RhYi5jcHAgRXhwcmVzc2lvblBhcnNlci5jcHAgVG9rZW5pemVyLmNwcAotCi1nbHNsYW5n
X3RhYiVoIGdsc2xhbmdfdGFiJWNwcCA6IGdsc2xhbmcueQotCSQoZXZhbCBPVVRQVVQgPSAkKGJh
c2VuYW1lICRAKSkKLQkkKEJJU09OKSAtLWRlZmluZXM9JChPVVRQVVQpLmggLS1vdXRwdXQ9JChP
VVRQVVQpLmNwcCAkPAotCi1FeHByZXNzaW9uUGFyc2VyLmNwcCA6IEV4cHJlc3Npb25QYXJzZXIu
eQotCSQoQklTT04pIC0tb3V0cHV0PSRAICQ8Ci0KLWdsc2xhbmdfbGV4LmNwcCA6IGdsc2xhbmcu
bAotCSQoRkxFWCkgLS1vdXRmaWxlPSRAICQ8Ci0KLVRva2VuaXplci5jcHAgOiBUb2tlbml6ZXIu
bAotCSQoRkxFWCkgLS1vdXRmaWxlPSRAICQ8ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCwxMSArMjgsMjkgQEAKIAkJNDk5NTFDMEExNEI3QUFEODAwNjBFOTZFIC8qIEJ1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0OTk1MUMwNjE0QjdBQUQ4MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0
b3IuaCAqLzsgfTsKIAkJNUNCMTNGRDQxNzlEQjNGRDAwMUY4NTFEIC8qIERldGVjdENhbGxEZXB0
aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0Ix
M0ZEMjE3OURCM0ZEMDAxRjg1MUQgLyogRGV0ZWN0Q2FsbERlcHRoLmNwcCAqLzsgfTsKIAkJNUNC
MTNGRDUxNzlEQjNGRDAwMUY4NTFEIC8qIERldGVjdENhbGxEZXB0aC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCMTNGRDMxNzlEQjNGRDAwMUY4NTFE
IC8qIERldGVjdENhbGxEZXB0aC5oICovOyB9OwotCQk1Q0IxM0ZFNDE3OUY0NjU4MDAxRjg1MUQg
LyogRXhwcmVzc2lvblBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1Q0IxM0ZERjE3OUY0NjU4MDAxRjg1MUQgLyogRXhwcmVzc2lvblBhcnNl
ci5jcHAgKi87IH07Ci0JCTVDQjEzRkU1MTc5RjQ2NTgwMDFGODUxRCAvKiBnbHNsYW5nX2xleC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IxM0ZF
MDE3OUY0NjU4MDAxRjg1MUQgLyogZ2xzbGFuZ19sZXguY3BwICovOyB9OwotCQk1Q0IxM0ZFNjE3
OUY0NjU4MDAxRjg1MUQgLyogZ2xzbGFuZ190YWIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCMTNGRTExNzlGNDY1ODAwMUY4NTFEIC8qIGdsc2xh
bmdfdGFiLmNwcCAqLzsgfTsKLQkJNUNCMTNGRTcxNzlGNDY1ODAwMUY4NTFEIC8qIGdsc2xhbmdf
dGFiLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0Ix
M0ZFMjE3OUY0NjU4MDAxRjg1MUQgLyogZ2xzbGFuZ190YWIuaCAqLzsgfTsKLQkJNUNCMTNGRTgx
NzlGNDY1ODAwMUY4NTFEIC8qIFRva2VuaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IxM0ZFMzE3OUY0NjU4MDAxRjg1MUQgLyogVG9rZW5p
emVyLmNwcCAqLzsgfTsKKwkJNzIzMDlBNEQxODNDMjU5MzAwMzcwQjkzIC8qIENvZGVHZW4uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2NTA5MzAx
ODNBQTIxMzAwRDI4QjQ4IC8qIENvZGVHZW4uY3BwICovOyB9OworCQk3MjMwOUE0RTE4M0MyNTlD
MDAzNzBCOTMgLyogVW5mb2xkU2hvcnRDaXJjdWl0QVNULmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNjUwOTM2MTgzQUEzQzYwMEQyOEI0OCAvKiBV
bmZvbGRTaG9ydENpcmN1aXRBU1QuY3BwICovOyB9OworCQk3MjMwOUE0RjE4M0MyNTlFMDAzNzBC
OTMgLyogVW5mb2xkU2hvcnRDaXJjdWl0QVNULmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MjY1MDkzNzE4M0FBM0M2MDBEMjhCNDggLyogVW5mb2xkU2hv
cnRDaXJjdWl0QVNULmggKi87IH07CisJCTcyMzA5QTUwMTgzQzI1QTEwMDM3MEI5MyAvKiBQYXJz
ZUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzI2NTA5MzQxODNBQTNCMjAwRDI4QjQ4IC8qIFBhcnNlQ29udGV4dC5jcHAgKi87IH07CisJ
CTcyMzA5QTUxMTgzQzI1QTUwMDM3MEI5MyAvKiBQYXJzZUNvbnRleHQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNjUwOTM1MTgzQUEzQjIwMEQyOEI0
OCAvKiBQYXJzZUNvbnRleHQuaCAqLzsgfTsKKwkJNzIzMDlBNTIxODNDMjVBNzAwMzcwQjkzIC8q
IE5vZGVTZWFyY2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcyNjUwOTMzMTgzQUEyODkwMEQyOEI0OCAvKiBOb2RlU2VhcmNoLmggKi87IH07CisJCTcy
MzA5QTUzMTgzQzI1QUEwMDM3MEI5MyAvKiBJbml0aWFsaXplR0xQb3NpdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjY1MDkzMTE4M0FBMjQ2
MDBEMjhCNDggLyogSW5pdGlhbGl6ZUdMUG9zaXRpb24uY3BwICovOyB9OworCQk3MjMwOUE1NDE4
M0MyNUFEMDAzNzBCOTMgLyogSW5pdGlhbGl6ZUdMUG9zaXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNjUwOTMyMTgzQUEyNDYwMEQyOEI0OCAv
KiBJbml0aWFsaXplR0xQb3NpdGlvbi5oICovOyB9OworCQk3MjMwOUE1NjE4M0MyN0RFMDAzNzBC
OTMgLyogVG9rZW5pemVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyMzA5QTU1MTgzQzI3REIwMDM3MEI5MyAvKiBUb2tlbml6ZXIuY3BwICovOyB9
OworCQk3MjMwOUE1ODE4M0MyN0YzMDAzNzBCOTMgLyogRXhwcmVzc2lvblBhcnNlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjMwOUE1NzE4M0My
N0YxMDAzNzBCOTMgLyogRXhwcmVzc2lvblBhcnNlci5jcHAgKi87IH07CisJCTcyMzA5QTVDMTgz
QzI4NTMwMDM3MEI5MyAvKiBnbHNsYW5nX2xleC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjMwOUE1OTE4M0MyODRFMDAzNzBCOTMgLyogZ2xzbGFu
Z19sZXguY3BwICovOyB9OworCQk3MjMwOUE1RDE4M0MyODUzMDAzNzBCOTMgLyogZ2xzbGFuZ190
YWIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIz
MDlBNUExODNDMjg0RTAwMzcwQjkzIC8qIGdsc2xhbmdfdGFiLmNwcCAqLzsgfTsKKwkJNzIzMDlB
NUUxODNDMjg1MzAwMzcwQjkzIC8qIGdsc2xhbmdfdGFiLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjMwOUE1QjE4M0MyODRFMDAzNzBCOTMgLyogZ2xz
bGFuZ190YWIuaCAqLzsgfTsKKwkJNzIzMDlBNjExODNDMkE3NDAwMzcwQjkzIC8qIFRyYW5zbGF0
b3JITFNMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcyMzA5QTVGMTgzQzJBNjQwMDM3MEI5MyAvKiBUcmFuc2xhdG9ySExTTC5jcHAgKi87IH07CisJ
CTcyMzA5QTYyMTgzQzJBNzQwMDM3MEI5MyAvKiBUcmFuc2xhdG9ySExTTC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIzMDlBNjAxODNDMkE2NDAwMzcw
QjkzIC8qIFRyYW5zbGF0b3JITFNMLmggKi87IH07CisJCTcyMzA5QTY1MTgzQzJBRTUwMDM3MEI5
MyAvKiBPdXRwdXRITFNMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyMzA5QTYzMTgzQzJBRTUwMDM3MEI5MyAvKiBPdXRwdXRITFNMLmNwcCAqLzsg
fTsKKwkJNzIzMDlBNjYxODNDMkFFNTAwMzcwQjkzIC8qIE91dHB1dEhMU0wuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMzA5QTY0MTgzQzJBRTUwMDM3
MEI5MyAvKiBPdXRwdXRITFNMLmggKi87IH07CisJCTcyMzA5QTZEMTgzQzJCRTgwMDM3MEI5MyAv
KiBEZXRlY3REaXNjb250aW51aXR5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcyMzA5QTY3MTgzQzJCRTgwMDM3MEI5MyAvKiBEZXRlY3REaXNjb250
aW51aXR5LmNwcCAqLzsgfTsKKwkJNzIzMDlBNkUxODNDMkJFODAwMzcwQjkzIC8qIERldGVjdERp
c2NvbnRpbnVpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcyMzA5QTY4MTgzQzJCRTgwMDM3MEI5MyAvKiBEZXRlY3REaXNjb250aW51aXR5LmggKi87
IH07CisJCTcyMzA5QTZGMTgzQzJCRTgwMDM3MEI5MyAvKiBVbmZvbGRTaG9ydENpcmN1aXQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIzMDlBNjkx
ODNDMkJFODAwMzcwQjkzIC8qIFVuZm9sZFNob3J0Q2lyY3VpdC5jcHAgKi87IH07CisJCTcyMzA5
QTcwMTgzQzJCRTgwMDM3MEI5MyAvKiBVbmZvbGRTaG9ydENpcmN1aXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMzA5QTZBMTgzQzJCRTgwMDM3MEI5
MyAvKiBVbmZvbGRTaG9ydENpcmN1aXQuaCAqLzsgfTsKKwkJNzIzMDlBNzExODNDMkJFODAwMzcw
QjkzIC8qIFVuaWZvcm0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzIzMDlBNkIxODNDMkJFODAwMzcwQjkzIC8qIFVuaWZvcm0uY3BwICovOyB9Owor
CQk3MjMwOUE3MjE4M0MyQkU4MDAzNzBCOTMgLyogVW5pZm9ybS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIzMDlBNkMxODNDMkJFODAwMzcwQjkzIC8q
IFVuaWZvcm0uaCAqLzsgfTsKIAkJOTBEOUIxMDIxMkUxMURDQjAwMkQ0MjU1IC8qIENvbXBpbGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwRDlC
MEY5MTJFMTFEQ0IwMDJENDI1NSAvKiBDb21waWxlci5jcHAgKi87IH07CiAJCTkwRDlCMTAzMTJF
MTFEQ0IwMDJENDI1NSAvKiBFeHRlbnNpb25CZWhhdmlvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTBEOUIwRkExMkUxMURDQjAwMkQ0MjU1IC8qIEV4
dGVuc2lvbkJlaGF2aW9yLmggKi87IH07CiAJCTkwRDlCMTA3MTJFMTFEQ0IwMDJENDI1NSAvKiBn
bHNsYW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MEQ5QjBGRTEyRTExRENCMDAyRDQyNTUgLyogZ2xzbGFuZy5oICovOyB9OwpAQCAtMTAzLDcgKzEy
MSw2IEBACiAJCUEyNjU2ODQxMTU5QzIzRTEwMDM5ODUzOSAvKiBSZXN0cmljdEZyYWdtZW50U2hh
ZGVyVGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMjY1NjgzNjE1OUMyM0UxMDAzOTg1MzkgLyogUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWlu
Zy5oICovOyB9OwogCQlBMjY1Njg0MjE1OUMyM0UxMDAzOTg1MzkgLyogUmVzdHJpY3RWZXJ0ZXhT
aGFkZXJUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTI2NTY4MzcxNTlDMjNFMTAwMzk4NTM5IC8qIFJlc3RyaWN0VmVydGV4U2hhZGVyVGlt
aW5nLmNwcCAqLzsgfTsKIAkJQTI2NTY4NDMxNTlDMjNFMTAwMzk4NTM5IC8qIFJlc3RyaWN0VmVy
dGV4U2hhZGVyVGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMjY1NjgzODE1OUMyM0UxMDAzOTg1MzkgLyogUmVzdHJpY3RWZXJ0ZXhTaGFkZXJU
aW1pbmcuaCAqLzsgfTsKLQkJRkIzOUQyNzExMjAwRjM1QTAwMDg4RTY5IC8qIENvZGVHZW5HTFNM
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCMzlE
MjIyMTIwMEYzNUEwMDA4OEU2OSAvKiBDb2RlR2VuR0xTTC5jcHAgKi87IH07CiAJCUZCMzlEMjc1
MTIwMEYzNUEwMDA4OEU2OSAvKiBkZWJ1Zy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGQjM5RDIyNjEyMDBGMzVBMDAwODhFNjkgLyogZGVidWcuY3Bw
ICovOyB9OwogCQlGQjM5RDI3OTEyMDBGMzVBMDAwODhFNjkgLyogSW5mb1NpbmsuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkIzOUQyMkExMjAwRjM1
QTAwMDg4RTY5IC8qIEluZm9TaW5rLmNwcCAqLzsgfTsKIAkJRkIzOUQyN0IxMjAwRjM1QTAwMDg4
RTY5IC8qIEluaXRpYWxpemUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkIzOUQyMkMxMjAwRjM1QTAwMDg4RTY5IC8qIEluaXRpYWxpemUuY3BwICov
OyB9OwpAQCAtMTE0LDcgKzEzMSw2IEBACiAJCUZCMzlEMjg4MTIwMEYzNUEwMDA4OEU2OSAvKiBv
c3NvdXJjZV9wb3NpeC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGQjM5RDIzOTEyMDBGMzVBMDAwODhFNjkgLyogb3Nzb3VyY2VfcG9zaXguY3BwICov
OyB9OwogCQlGQjM5RDI4QTEyMDBGMzVBMDAwODhFNjkgLyogT3V0cHV0R0xTTC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjM5RDIzQjEyMDBGMzVB
MDAwODhFNjkgLyogT3V0cHV0R0xTTC5jcHAgKi87IH07CiAJCUZCMzlEMjhFMTIwMEYzNUEwMDA4
OEU2OSAvKiBwYXJzZUNvbnN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZCMzlEMjNGMTIwMEYzNUEwMDA4OEU2OSAvKiBwYXJzZUNvbnN0LmNwcCAq
LzsgfTsKLQkJRkIzOUQyOEYxMjAwRjM1QTAwMDg4RTY5IC8qIFBhcnNlSGVscGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCMzlEMjQwMTIwMEYz
NUEwMDA4OEU2OSAvKiBQYXJzZUhlbHBlci5jcHAgKi87IH07CiAJCUZCMzlEMjkxMTIwMEYzNUEw
MDA4OEU2OSAvKiBQb29sQWxsb2MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkIzOUQyNDIxMjAwRjM1QTAwMDg4RTY5IC8qIFBvb2xBbGxvYy5jcHAg
Ki87IH07CiAJCUZCMzlEMkE0MTIwMEYzNUEwMDA4OEU2OSAvKiBRdWFsaWZpZXJBbGl2ZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjM5RDI1NjEy
MDBGMzVBMDAwODhFNjkgLyogUXVhbGlmaWVyQWxpdmUuY3BwICovOyB9OwogCQlGQjM5RDJBNjEy
MDBGMzVBMDAwODhFNjkgLyogUmVtb3ZlVHJlZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjM5RDI1ODEyMDBGMzVBMDAwODhFNjkgLyogUmVtb3Zl
VHJlZS5jcHAgKi87IH07CkBAIC0xNjYsMTQgKzE4MiwzMiBAQAogCQk0OTk1MUMwNjE0QjdBQUQ4
MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNUNCMTNGRDIxNzlEQjNGRDAwMUY4NTFEIC8qIERldGVjdENhbGxEZXB0
aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXRlY3RDYWxsRGVw
dGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0IxM0ZEMzE3OURCM0ZEMDAx
Rjg1MUQgLyogRGV0ZWN0Q2FsbERlcHRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERldGVjdENhbGxEZXB0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1Q0Ix
M0ZERjE3OUY0NjU4MDAxRjg1MUQgLyogRXhwcmVzc2lvblBhcnNlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHByZXNzaW9uUGFyc2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNCMTNGRTAxNzlGNDY1ODAwMUY4NTFEIC8qIGdsc2xhbmdf
bGV4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGdsc2xhbmdfbGV4
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNCMTNGRTExNzlGNDY1ODAwMUY4
NTFEIC8qIGdsc2xhbmdfdGFiLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IGdsc2xhbmdfdGFiLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNCMTNG
RTIxNzlGNDY1ODAwMUY4NTFEIC8qIGdsc2xhbmdfdGFiLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IGdsc2xhbmdfdGFiLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTVDQjEzRkUzMTc5RjQ2NTgwMDFGODUxRCAvKiBUb2tlbml6ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVG9rZW5pemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUQ3QzU5QzUxMjA4QzY4QjAwMUM4NzNFIC8qIEFOR0xFLnhjY29uZmlnICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEFOR0xFLnhjY29uZmlnOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1RDdDNTlDNjEyMDhDNjhCMDAxQzg3M0UgLyogQmFzZS54Y2Nv
bmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDdDNTlDNzEyMDhDNjhCMDAxQzg3M0UgLyogRGVi
dWdSZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IERlYnVn
UmVsZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIzMDlBNTUx
ODNDMjdEQjAwMzcwQjkzIC8qIFRva2VuaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUb2tl
bml6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjMwOUE1NzE4M0MyN0Yx
MDAzNzBCOTMgLyogRXhwcmVzc2lvblBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHBy
ZXNzaW9uUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIzMDlBNTkx
ODNDMjg0RTAwMzcwQjkzIC8qIGdsc2xhbmdfbGV4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGds
c2xhbmdfbGV4LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIzMDlBNUExODND
Mjg0RTAwMzcwQjkzIC8qIGdsc2xhbmdfdGFiLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGdsc2xh
bmdfdGFiLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIzMDlBNUIxODNDMjg0
RTAwMzcwQjkzIC8qIGdsc2xhbmdfdGFiLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGdsc2xhbmdfdGFiLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMzA5QTVGMTgzQzJBNjQwMDM3MEI5MyAv
KiBUcmFuc2xhdG9ySExTTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmFuc2xhdG9ySExTTC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMzA5QTYwMTgzQzJBNjQwMDM3MEI5
MyAvKiBUcmFuc2xhdG9ySExTTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFuc2xhdG9ySExTTC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjMwOUE2MzE4M0MyQUU1MDAzNzBCOTMgLyog
T3V0cHV0SExTTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPdXRw
dXRITFNMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIzMDlBNjQxODNDMkFF
NTAwMzcwQjkzIC8qIE91dHB1dEhMU0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gT3V0cHV0SExTTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjMwOUE2NzE4
M0MyQkU4MDAzNzBCOTMgLyogRGV0ZWN0RGlzY29udGludWl0eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXRlY3REaXNjb250aW51aXR5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIzMDlBNjgxODNDMkJFODAwMzcwQjkzIC8qIERldGVjdERp
c2NvbnRpbnVpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV0ZWN0RGlz
Y29udGludWl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjMwOUE2OTE4M0My
QkU4MDAzNzBCOTMgLyogVW5mb2xkU2hvcnRDaXJjdWl0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFVuZm9sZFNob3J0Q2lyY3VpdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTcyMzA5QTZBMTgzQzJCRTgwMDM3MEI5MyAvKiBVbmZvbGRTaG9ydENp
cmN1aXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5mb2xkU2hvcnRDaXJj
dWl0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMzA5QTZCMTgzQzJCRTgwMDM3
MEI5MyAvKiBVbmlmb3JtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFVuaWZvcm0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjMwOUE2QzE4M0My
QkU4MDAzNzBCOTMgLyogVW5pZm9ybS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBVbmlmb3JtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNjUwOTMwMTgzQUEy
MTMwMEQyOEI0OCAvKiBDb2RlR2VuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvZGVHZW4uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjY1MDkzMTE4M0FBMjQ2MDBEMjhCNDgg
LyogSW5pdGlhbGl6ZUdMUG9zaXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5pdGlhbGl6
ZUdMUG9zaXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjY1MDkzMjE4
M0FBMjQ2MDBEMjhCNDggLyogSW5pdGlhbGl6ZUdMUG9zaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5pdGlhbGl6ZUdMUG9zaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI2
NTA5MzMxODNBQTI4OTAwRDI4QjQ4IC8qIE5vZGVTZWFyY2guaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm9k
ZVNlYXJjaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjY1MDkzNDE4M0FBM0Iy
MDBEMjhCNDggLyogUGFyc2VDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcnNlQ29u
dGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNjUwOTM1MTgzQUEzQjIw
MEQyOEI0OCAvKiBQYXJzZUNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFyc2VDb250ZXh0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNjUwOTM2MTgzQUEzQzYwMEQyOEI0OCAv
KiBVbmZvbGRTaG9ydENpcmN1aXRBU1QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5mb2xkU2hv
cnRDaXJjdWl0QVNULmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI2NTA5Mzcx
ODNBQTNDNjAwRDI4QjQ4IC8qIFVuZm9sZFNob3J0Q2lyY3VpdEFTVC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBVbmZvbGRTaG9ydENpcmN1aXRBU1QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTBEOUIwRjkxMkUxMURDQjAwMkQ0MjU1IC8qIENvbXBpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbXBpbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTBEOUIwRkExMkUxMURDQjAwMkQ0MjU1IC8qIEV4dGVuc2lvbkJlaGF2aW9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVuc2lvbkJlaGF2aW9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkwRDlCMEZFMTJFMTFEQ0IwMDJENDI1NSAvKiBn
bHNsYW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGdsc2xhbmcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0Niw3ICsyODAsNiBAQAogCQlBMjY1NjgzODE1
OUMyM0UxMDAzOTg1MzkgLyogUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkIzOUQwRDExMjAwRjBFMzAwMDg4RTY5IC8qIGxp
YkFOR0xFLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9
IGFyY2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYkFOR0xFLmE7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUZCMzlEMjIxMTIwMEYzNUEwMDA4OEU2
OSAvKiBCYXNlVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IEJhc2VU
eXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGQjM5RDIyMjEyMDBGMzVBMDAw
ODhFNjkgLyogQ29kZUdlbkdMU0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ29kZUdlbkdMU0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQjM5
RDIyNDEyMDBGMzVBMDAwODhFNjkgLyogQ29tbW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVFbmNvZGluZyA9
IDQ7IHBhdGggPSBDb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkIzOUQy
MjUxMjAwRjM1QTAwMDg4RTY5IC8qIENvbnN0YW50VW5pb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgZmlsZUVuY29k
aW5nID0gNDsgcGF0aCA9IENvbnN0YW50VW5pb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkIzOUQyMjYxMjAwRjM1QTAwMDg4RTY5IC8qIGRlYnVnLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGRlYnVnLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI3MSw4ICszMDQsNiBAQAogCQlGQjM5RDIzQjEyMDBGMzVBMDAwODhFNjkgLyog
T3V0cHV0R0xTTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPdXRw
dXRHTFNMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkIzOUQyM0MxMjAwRjM1
QTAwMDg4RTY5IC8qIE91dHB1dEdMU0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBl
eHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgZmlsZUVuY29kaW5nID0gNDsgcGF0
aCA9IE91dHB1dEdMU0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkIzOUQyM0Yx
MjAwRjM1QTAwMDg4RTY5IC8qIHBhcnNlQ29uc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gcGFyc2VDb25zdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUZCMzlEMjQwMTIwMEYzNUEwMDA4OEU2OSAvKiBQYXJzZUhlbHBlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXJzZUhlbHBlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUZCMzlEMjQxMTIwMEYzNUEwMDA4OEU2OSAvKiBQYXJzZUhlbHBl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5oOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gUGFyc2VIZWxwZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkIzOUQyNDIxMjAwRjM1QTAwMDg4RTY5IC8qIFBv
b2xBbGxvYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb29sQWxs
b2MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQjM5RDI0MzEyMDBGMzVBMDAw
ODhFNjkgLyogUG9vbEFsbG9jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGlj
aXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBQ
b29sQWxsb2MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkIzOUQyNTYxMjAwRjM1
QTAwMDg4RTY5IC8qIFF1YWxpZmllckFsaXZlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFF1YWxpZmllckFsaXZlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTMwOSwxOSArMzQwLDYgQEAKIAkJCW5hbWUgPSBtaXNjOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKIAkJfTsKLQkJNUNCMTNGREUxNzlGNDU3QjAwMUY4NTFEIC8qIERlcml2ZWQg
U291cmNlcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJ
NUNCMTNGREYxNzlGNDY1ODAwMUY4NTFEIC8qIEV4cHJlc3Npb25QYXJzZXIuY3BwICovLAotCQkJ
CTVDQjEzRkUwMTc5RjQ2NTgwMDFGODUxRCAvKiBnbHNsYW5nX2xleC5jcHAgKi8sCi0JCQkJNUNC
MTNGRTExNzlGNDY1ODAwMUY4NTFEIC8qIGdsc2xhbmdfdGFiLmNwcCAqLywKLQkJCQk1Q0IxM0ZF
MjE3OUY0NjU4MDAxRjg1MUQgLyogZ2xzbGFuZ190YWIuaCAqLywKLQkJCQk1Q0IxM0ZFMzE3OUY0
NjU4MDAxRjg1MUQgLyogVG9rZW5pemVyLmNwcCAqLywKLQkJCSk7Ci0JCQluYW1lID0gIkRlcml2
ZWQgU291cmNlcyI7Ci0JCQlwYXRoID0gRGVyaXZlZFNvdXJjZXMvQU5HTEU7Ci0JCQlzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOwotCQl9OwogCQk1RDdDNTlDNDEyMDhDNjhCMDAxQzg3
M0UgLyogQ29uZmlndXJhdGlvbnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKApAQCAtMzk2LDcgKzQxNCw2IEBACiAJCUZCMzlEMDZFMTIwMEVEOTIwMDA4OEU2OSA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNUNCMTNGREUxNzlG
NDU3QjAwMUY4NTFEIC8qIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQk1RDdDNTlDNDEyMDhDNjhC
MDAxQzg3M0UgLyogQ29uZmlndXJhdGlvbnMgKi8sCiAJCQkJQTI5QjE1RTkxNjk3OEI3RDAwMTEx
RDk3IC8qIGluY2x1ZGUgKi8sCiAJCQkJMzEyQkRCMDcxNUZFQzhFNjAwOTdFQkM3IC8qIG1pc2Mg
Ki8sCkBAIC00MzAsOCArNDQ3LDIxIEBACiAJCQkJQTI2NTY4MzQxNTlDMjNFMTAwMzk4NTM5IC8q
IHRpbWluZyAqLywKIAkJCQlGQjM5RDIyMTEyMDBGMzVBMDAwODhFNjkgLyogQmFzZVR5cGVzLmgg
Ki8sCiAJCQkJNDk5NTFDMDUxNEI3QUFENzAwNjBFOTZFIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxh
dG9yLmNwcCAqLywKKwkJCQk3MjY1MDkzNjE4M0FBM0M2MDBEMjhCNDggLyogVW5mb2xkU2hvcnRD
aXJjdWl0QVNULmNwcCAqLywKKwkJCQk3MjY1MDkzNzE4M0FBM0M2MDBEMjhCNDggLyogVW5mb2xk
U2hvcnRDaXJjdWl0QVNULmggKi8sCisJCQkJNzI2NTA5MzQxODNBQTNCMjAwRDI4QjQ4IC8qIFBh
cnNlQ29udGV4dC5jcHAgKi8sCisJCQkJNzIzMDlBNjcxODNDMkJFODAwMzcwQjkzIC8qIERldGVj
dERpc2NvbnRpbnVpdHkuY3BwICovLAorCQkJCTcyMzA5QTY4MTgzQzJCRTgwMDM3MEI5MyAvKiBE
ZXRlY3REaXNjb250aW51aXR5LmggKi8sCisJCQkJNzIzMDlBNjkxODNDMkJFODAwMzcwQjkzIC8q
IFVuZm9sZFNob3J0Q2lyY3VpdC5jcHAgKi8sCisJCQkJNzIzMDlBNkExODNDMkJFODAwMzcwQjkz
IC8qIFVuZm9sZFNob3J0Q2lyY3VpdC5oICovLAorCQkJCTcyMzA5QTZCMTgzQzJCRTgwMDM3MEI5
MyAvKiBVbmlmb3JtLmNwcCAqLywKKwkJCQk3MjMwOUE2QzE4M0MyQkU4MDAzNzBCOTMgLyogVW5p
Zm9ybS5oICovLAorCQkJCTcyNjUwOTM1MTgzQUEzQjIwMEQyOEI0OCAvKiBQYXJzZUNvbnRleHQu
aCAqLywKKwkJCQk3MjY1MDkzMzE4M0FBMjg5MDBEMjhCNDggLyogTm9kZVNlYXJjaC5oICovLAor
CQkJCTcyNjUwOTMxMTgzQUEyNDYwMEQyOEI0OCAvKiBJbml0aWFsaXplR0xQb3NpdGlvbi5jcHAg
Ki8sCisJCQkJNzI2NTA5MzIxODNBQTI0NjAwRDI4QjQ4IC8qIEluaXRpYWxpemVHTFBvc2l0aW9u
LmggKi8sCiAJCQkJNDk5NTFDMDYxNEI3QUFEODAwNjBFOTZFIC8qIEJ1aWx0SW5GdW5jdGlvbkVt
dWxhdG9yLmggKi8sCi0JCQkJRkIzOUQyMjIxMjAwRjM1QTAwMDg4RTY5IC8qIENvZGVHZW5HTFNM
LmNwcCAqLywKKwkJCQk3MjY1MDkzMDE4M0FBMjEzMDBEMjhCNDggLyogQ29kZUdlbi5jcHAgKi8s
CiAJCQkJRkIzOUQyMjQxMjAwRjM1QTAwMDg4RTY5IC8qIENvbW1vbi5oICovLAogCQkJCTkwRDlC
MEY5MTJFMTFEQ0IwMDJENDI1NSAvKiBDb21waWxlci5jcHAgKi8sCiAJCQkJRkIzOUQyMjUxMjAw
RjM1QTAwMDg4RTY5IC8qIENvbnN0YW50VW5pb24uaCAqLywKQEAgLTQ0Nyw2ICs0NzcsOSBAQAog
CQkJCUEwQUFCRTJBMTNBRkU4MTAwMEYyRUJEMSAvKiBGb3JMb29wVW5yb2xsLmNwcCAqLywKIAkJ
CQlBMEFBQkUyQjEzQUZFODEwMDBGMkVCRDEgLyogRm9yTG9vcFVucm9sbC5oICovLAogCQkJCTkw
RDlCMEZFMTJFMTFEQ0IwMDJENDI1NSAvKiBnbHNsYW5nLmggKi8sCisJCQkJNzIzMDlBNTkxODND
Mjg0RTAwMzcwQjkzIC8qIGdsc2xhbmdfbGV4LmNwcCAqLywKKwkJCQk3MjMwOUE1QTE4M0MyODRF
MDAzNzBCOTMgLyogZ2xzbGFuZ190YWIuY3BwICovLAorCQkJCTcyMzA5QTVCMTgzQzI4NEUwMDM3
MEI5MyAvKiBnbHNsYW5nX3RhYi5oICovLAogCQkJCUEyNjRGOEM1MTY5NzRFMkEwMDZGQUE1QSAv
KiBIYXNoTmFtZXMuaCAqLywKIAkJCQlGQjM5RDIyQTEyMDBGMzVBMDAwODhFNjkgLyogSW5mb1Np
bmsuY3BwICovLAogCQkJCUZCMzlEMjJCMTIwMEYzNUEwMDA4OEU2OSAvKiBJbmZvU2luay5oICov
LApAQCAtNDc0LDkgKzUwNyw5IEBACiAJCQkJRkIzOUQyM0MxMjAwRjM1QTAwMDg4RTY5IC8qIE91
dHB1dEdMU0wuaCAqLywKIAkJCQlBMEFBQkUzMjEzQUZFODQ3MDBGMkVCRDEgLyogT3V0cHV0R0xT
TEJhc2UuY3BwICovLAogCQkJCUEwQUFCRTMzMTNBRkU4NDcwMEYyRUJEMSAvKiBPdXRwdXRHTFNM
QmFzZS5oICovLAorCQkJCTcyMzA5QTYzMTgzQzJBRTUwMDM3MEI5MyAvKiBPdXRwdXRITFNMLmNw
cCAqLywKKwkJCQk3MjMwOUE2NDE4M0MyQUU1MDAzNzBCOTMgLyogT3V0cHV0SExTTC5oICovLAog
CQkJCUZCMzlEMjNGMTIwMEYzNUEwMDA4OEU2OSAvKiBwYXJzZUNvbnN0LmNwcCAqLywKLQkJCQlG
QjM5RDI0MDEyMDBGMzVBMDAwODhFNjkgLyogUGFyc2VIZWxwZXIuY3BwICovLAotCQkJCUZCMzlE
MjQxMTIwMEYzNUEwMDA4OEU2OSAvKiBQYXJzZUhlbHBlci5oICovLAogCQkJCUZCMzlEMjQyMTIw
MEYzNUEwMDA4OEU2OSAvKiBQb29sQWxsb2MuY3BwICovLAogCQkJCUZCMzlEMjQzMTIwMEYzNUEw
MDA4OEU2OSAvKiBQb29sQWxsb2MuaCAqLywKIAkJCQlBMjY1NjdCNTE1OUMyMUIxMDAzOTg1Mzkg
LyogUHJhZ21hLmggKi8sCkBAIC00OTUsNiArNTI4LDggQEAKIAkJCQlBMEFBQkU0NzEzQUZFOTYx
MDBGMkVCRDEgLyogVHJhbnNsYXRvckVTU0wuaCAqLywKIAkJCQlGQjM5RDI2ODEyMDBGMzVBMDAw
ODhFNjkgLyogVHJhbnNsYXRvckdMU0wuY3BwICovLAogCQkJCUZCMzlEMjY5MTIwMEYzNUEwMDA4
OEU2OSAvKiBUcmFuc2xhdG9yR0xTTC5oICovLAorCQkJCTcyMzA5QTVGMTgzQzJBNjQwMDM3MEI5
MyAvKiBUcmFuc2xhdG9ySExTTC5jcHAgKi8sCisJCQkJNzIzMDlBNjAxODNDMkE2NDAwMzcwQjkz
IC8qIFRyYW5zbGF0b3JITFNMLmggKi8sCiAJCQkJRkIzOUQyNkMxMjAwRjM1QTAwMDg4RTY5IC8q
IFR5cGVzLmggKi8sCiAJCQkJOTBEOUIxMEIxMkUxMURENjAwMkQ0MjU1IC8qIHV0aWwuY3BwICov
LAogCQkJCTkwRDlCMTBDMTJFMTFERDYwMDJENDI1NSAvKiB1dGlsLmggKi8sCkBAIC01MTQsNiAr
NTQ5LDggQEAKIAkJRkIzOUQyNDQxMjAwRjM1QTAwMDg4RTY5IC8qIHByZXByb2Nlc3NvciAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNzIzMDlBNTcxODND
MjdGMTAwMzcwQjkzIC8qIEV4cHJlc3Npb25QYXJzZXIuY3BwICovLAorCQkJCTcyMzA5QTU1MTgz
QzI3REIwMDM3MEI5MyAvKiBUb2tlbml6ZXIuY3BwICovLAogCQkJCUEyNjRGODkzMTY5NzRERUQw
MDZGQUE1QSAvKiBEaWFnbm9zdGljc0Jhc2UuY3BwICovLAogCQkJCUEyNjRGODk0MTY5NzRERUQw
MDZGQUE1QSAvKiBEaWFnbm9zdGljc0Jhc2UuaCAqLywKIAkJCQlBMjY0Rjg5NTE2OTc0REVEMDA2
RkFBNUEgLyogRGlyZWN0aXZlSGFuZGxlckJhc2UuY3BwICovLApAQCAtNTY5LDI1ICs2MDYsMzQg
QEAKIAkJCQlBMjY0RjhBRjE2OTc0REVEMDA2RkFBNUEgLyogRGlyZWN0aXZlSGFuZGxlckJhc2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRGOEIxMTY5NzRERUQwMDZGQUE1QSAvKiBEaXJlY3Rp
dmVQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRGOEIzMTY5NzRERUQwMDZGQUE1QSAv
KiBFeHByZXNzaW9uUGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjMwOUE0RjE4M0MyNTlF
MDAzNzBCOTMgLyogVW5mb2xkU2hvcnRDaXJjdWl0QVNULmggaW4gSGVhZGVycyAqLywKIAkJCQk5
MEQ5QjEwMzEyRTExRENCMDAyRDQyNTUgLyogRXh0ZW5zaW9uQmVoYXZpb3IuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTcyMzA5QTVFMTgzQzI4NTMwMDM3MEI5MyAvKiBnbHNsYW5nX3RhYi5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNzIzMDlBNzIxODNDMkJFODAwMzcwQjkzIC8qIFVuaWZvcm0uaCBpbiBI
ZWFkZXJzICovLAorCQkJCTcyMzA5QTY2MTgzQzJBRTUwMDM3MEI5MyAvKiBPdXRwdXRITFNMLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMEFBQkUyRDEzQUZFODEwMDBGMkVCRDEgLyogRm9yTG9vcFVu
cm9sbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTBEOUIxMDcxMkUxMURDQjAwMkQ0MjU1IC8qIGds
c2xhbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRGOEM4MTY5NzRFMkEwMDZGQUE1QSAvKiBI
YXNoTmFtZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyMzA5QTYyMTgzQzJBNzQwMDM3MEI5MyAv
KiBUcmFuc2xhdG9ySExTTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NEY4QjUxNjk3NERFRDAw
NkZBQTVBIC8qIElucHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY0RjhDRDE2OTc2MkFBMDA2
RkFBNUEgLyoga2hycGxhdGZvcm0uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5OTUxQzAzMTRCN0FB
QjMwMDYwRTk2RSAvKiBsZW5ndGhfbGltaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY0RjhC
NzE2OTc0REVEMDA2RkFBNUEgLyogTGV4ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRGOEI5
MTY5NzRERUQwMDZGQUE1QSAvKiBNYWNyby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NEY4QkIx
Njk3NERFRDAwNkZBQTVBIC8qIE1hY3JvRXhwYW5kZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTcy
MzA5QTU0MTgzQzI1QUQwMDM3MEI5MyAvKiBJbml0aWFsaXplR0xQb3NpdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTBBQUJFMzExM0FGRTgzMDAwRjJFQkQxIC8qIE1hcExvbmdWYXJpYWJsZU5h
bWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY0RjhCQzE2OTc0REVEMDA2RkFBNUEgLyogbnVt
ZXJpY19sZXguaCBpbiBIZWFkZXJzICovLAogCQkJCUEwQUFCRTQ1MTNBRkU5NDUwMEYyRUJEMSAv
KiBPdXRwdXRFU1NMLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjMwOUE3MDE4M0MyQkU4MDAzNzBC
OTMgLyogVW5mb2xkU2hvcnRDaXJjdWl0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMEFBQkUzNTEz
QUZFODQ3MDBGMkVCRDEgLyogT3V0cHV0R0xTTEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUEy
NjRGOEJEMTY5NzRERUQwMDZGQUE1QSAvKiBwcF91dGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTI2NTY3QzAxNTlDMjFCMTAwMzk4NTM5IC8qIFByYWdtYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTI2NEY4QkYxNjk3NERFRDAwNkZBQTVBIC8qIFByZXByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTI2NTY3QzExNTlDMjFCMTAwMzk4NTM5IC8qIFJlbmFtZUZ1bmN0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3MjMwOUE1MjE4M0MyNUE3MDAzNzBCOTMgLyogTm9kZVNlYXJjaC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTI2NTY4NDExNTlDMjNFMTAwMzk4NTM5IC8qIFJlc3RyaWN0RnJh
Z21lbnRTaGFkZXJUaW1pbmcuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyMzA5QTZFMTgzQzJCRTgw
MDM3MEI5MyAvKiBEZXRlY3REaXNjb250aW51aXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY1
Njg0MzE1OUMyM0UxMDAzOTg1MzkgLyogUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkwRDlCMTBBMTJFMTFEQ0IwMDJENDI1NSAvKiBTZWFyY2hTeW1ib2wu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZCMzlENzZFMTIwMTEwRkMwMDA4OEU2OSAvKiBTaGFkZXJM
YW5nLmggaW4gSGVhZGVycyAqLywKQEAgLTU5NywxMSArNjQzLDExIEBACiAJCQkJQTBBQUJFNDkx
M0FGRTk2MTAwRjJFQkQxIC8qIFRyYW5zbGF0b3JFU1NMLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
MEQ5QjExNDEyRTExREQ2MDAyRDQyNTUgLyogdXRpbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTBE
OUIxMTYxMkUxMURENjAwMkQ0MjU1IC8qIFZhbGlkYXRlTGltaXRhdGlvbnMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTcyMzA5QTUxMTgzQzI1QTUwMDM3MEI5MyAvKiBQYXJzZUNvbnRleHQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkwRDlCMTE4MTJFMTFERDYwMDJENDI1NSAvKiBWYXJpYWJsZUluZm8u
aCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRGOENBMTY5NzRFMkEwMDZGQUE1QSAvKiBWYXJpYWJs
ZVBhY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTBEOUIxMUExMkUxMURENjAwMkQ0MjU1IC8q
IFZlcnNpb25HTFNMLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0IxM0ZENTE3OURCM0ZEMDAxRjg1
MUQgLyogRGV0ZWN0Q2FsbERlcHRoLmggaW4gSGVhZGVycyAqLywKLQkJCQk1Q0IxM0ZFNzE3OUY0
NjU4MDAxRjg1MUQgLyogZ2xzbGFuZ190YWIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNjY4LDcgKzcx
NCw3IEBACiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCQlzaGVsbFBhdGggPSAvYmluL3NoOwotCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIk
e0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvQU5HTEVcIlxuY2QgXCIke0JVSUxU
X1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvQU5HTEVcIlxuXG4vYmluL2xuIC1zZmggXCIk
e1NSQ1JPT1R9XCIgQU5HTEVcbmV4cG9ydCBBTkdMRT1cIkFOR0xFXCJcblxubWFrZSAgLS1uby1i
dWlsdGluLXJ1bGVzIC1mIFwiQU5HTEUvRGVyaXZlZFNvdXJjZXMubWFrZVwiIC1qIGAvdXNyL3Ni
aW4vc3lzY3RsIC1uIGh3LmFjdGl2ZWNwdWAiOworCQkJc2hlbGxTY3JpcHQgPSAiIjsKIAkJfTsK
IC8qIEVuZCBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCkBAIC02NzksNyAr
NzI1LDcgQEAKIAkJCWZpbGVzID0gKAogCQkJCUEwOEMzQ0RDMTZENkNCNjEwMDNGMEI4MyAvKiBB
cnJheUJvdW5kc0NsYW1wZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk5NTFDMDkxNEI3QUFE
ODAwNjBFOTZFIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCUZCMzlEMjcxMTIwMEYzNUEwMDA4OEU2OSAvKiBDb2RlR2VuR0xTTC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk3MjMwOUE1RDE4M0MyODUzMDAzNzBCOTMgLyogZ2xzbGFuZ190YWIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTBEOUIxMDIxMkUxMURDQjAwMkQ0MjU1IC8qIENvbXBpbGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUZCMzlEMjc1MTIwMEYzNUEwMDA4OEU2OSAvKiBkZWJ1Zy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBMjY1NjgzOTE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5k
ZW5jeUdyYXBoLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNjg3LDE0ICs3MzMsMTkgQEAKIAkJCQlB
MjY1NjgzRDE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUEyNjU2ODNGMTU5QzIzRTEwMDM5ODUzOSAvKiBEZXBlbmRlbmN5R3Jh
cGhUcmF2ZXJzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMjY1NjdCQjE1OUMyMUIxMDAzOTg1
MzkgLyogRGlhZ25vc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzIzMDlBNTYxODNDMjdE
RTAwMzcwQjkzIC8qIFRva2VuaXplci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MjMwOUE1MDE4
M0MyNUExMDAzNzBCOTMgLyogUGFyc2VDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcy
MzA5QTcxMTgzQzJCRTgwMDM3MEI5MyAvKiBVbmlmb3JtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUEyNjRGOEFDMTY5NzRERUQwMDZGQUE1QSAvKiBEaWFnbm9zdGljc0Jhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTI2NTY3QkQxNTlDMjFCMTAwMzk4NTM5IC8qIERpcmVjdGl2ZUhhbmRsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTI2NEY4QUUxNjk3NERFRDAwNkZBQTVBIC8qIERpcmVj
dGl2ZUhhbmRsZXJCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjRGOEIwMTY5NzRERUQw
MDZGQUE1QSAvKiBEaXJlY3RpdmVQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTBBQUJF
MkMxM0FGRTgxMDAwRjJFQkQxIC8qIEZvckxvb3BVbnJvbGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRkIzOUQyNzkxMjAwRjM1QTAwMDg4RTY5IC8qIEluZm9TaW5rLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTcyMzA5QTYxMTgzQzJBNzQwMDM3MEI5MyAvKiBUcmFuc2xhdG9ySExTTC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGQjM5RDI3QjEyMDBGMzVBMDAwODhFNjkgLyogSW5pdGlhbGl6ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGQjM5RDI3RDEyMDBGMzVBMDAwODhFNjkgLyogSW5pdGlh
bGl6ZURsbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MjMwOUE1ODE4M0MyN0YzMDAzNzBCOTMg
LyogRXhwcmVzc2lvblBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMjY1NjdCRjE1OUMy
MUIxMDAzOTg1MzkgLyogSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBMjY0RjhCNDE2OTc0REVEMDA2RkFBNUEgLyogSW5wdXQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRkIzOUQyODExMjAwRjM1QTAwMDg4RTY5IC8qIEludGVybWVkaWF0ZS5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTcwOSw5ICs3NjAsMTQgQEAKIAkJCQlGQjM5RDI4QTEyMDBGMzVBMDAwODhF
NjkgLyogT3V0cHV0R0xTTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMEFBQkUzNDEzQUZFODQ3
MDBGMkVCRDEgLyogT3V0cHV0R0xTTEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkIzOUQy
OEUxMjAwRjM1QTAwMDg4RTY5IC8qIHBhcnNlQ29uc3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
RkIzOUQyOEYxMjAwRjM1QTAwMDg4RTY5IC8qIFBhcnNlSGVscGVyLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTcyMzA5QTY1MTgzQzJBRTUwMDM3MEI5MyAvKiBPdXRwdXRITFNMLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUZCMzlEMjkxMTIwMEYzNUEwMDA4OEU2OSAvKiBQb29sQWxsb2MuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNzIzMDlBNTMxODNDMjVBQTAwMzcwQjkzIC8qIEluaXRpYWxpemVH
TFBvc2l0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcyMzA5QTZEMTgzQzJCRTgwMDM3MEI5
MyAvKiBEZXRlY3REaXNjb250aW51aXR5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcyMzA5QTZG
MTgzQzJCRTgwMDM3MEI5MyAvKiBVbmZvbGRTaG9ydENpcmN1aXQuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNzIzMDlBNUMxODNDMjg1MzAwMzcwQjkzIC8qIGdsc2xhbmdfbGV4LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUEyNjRGOEJFMTY5NzRERUQwMDZGQUE1QSAvKiBQcmVwcm9jZXNzb3IuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNzIzMDlBNEQxODNDMjU5MzAwMzcwQjkzIC8qIENvZGVHZW4u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkIzOUQyQTQxMjAwRjM1QTAwMDg4RTY5IC8qIFF1YWxp
ZmllckFsaXZlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZCMzlEMkE2MTIwMEYzNUEwMDA4OEU2
OSAvKiBSZW1vdmVUcmVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjU2ODQwMTU5QzIzRTEw
MDM5ODUzOSAvKiBSZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtNzI4LDEwICs3ODQsNyBAQAogCQkJCUEyNjRGOEM5MTY5NzRFMkEwMDZGQUE1QSAvKiBW
YXJpYWJsZVBhY2tlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MEQ5QjExOTEyRTExREQ2MDAy
RDQyNTUgLyogVmVyc2lvbkdMU0wuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNCMTNGRDQxNzlE
QjNGRDAwMUY4NTFEIC8qIERldGVjdENhbGxEZXB0aC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1
Q0IxM0ZFNDE3OUY0NjU4MDAxRjg1MUQgLyogRXhwcmVzc2lvblBhcnNlci5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQk1Q0IxM0ZFNTE3OUY0NjU4MDAxRjg1MUQgLyogZ2xzbGFuZ19sZXguY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJNUNCMTNGRTYxNzlGNDY1ODAwMUY4NTFEIC8qIGdsc2xhbmdfdGFi
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTVDQjEzRkU4MTc5RjQ2NTgwMDFGODUxRCAvKiBUb2tl
bml6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzIzMDlBNEUxODNDMjU5QzAwMzcwQjkzIC8q
IFVuZm9sZFNob3J0Q2lyY3VpdEFTVC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvRUdML2VnbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvRUdML2VnbC5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0VHTC9lZ2wuaAkod29ya2luZyBjb3B5KQpA
QCAtMjQ2LDEwICsyNDYsNiBAQCB0eXBlZGVmIHZvaWQgKkVHTENsaWVudEJ1ZmZlcjsKIAogLyog
RUdMIEZ1bmN0aW9ucyAqLwogCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoQU5H
TEVfV0VCS0lUX1dJTikKLSNpbmNsdWRlIDxFR0wvZWdsc29mdGxpbmtpbmcuaD4KLSNlbHNlCi0K
IEVHTEFQSSBFR0xpbnQgRUdMQVBJRU5UUlkgZWdsR2V0RXJyb3Iodm9pZCk7CiAKIEVHTEFQSSBF
R0xEaXNwbGF5IEVHTEFQSUVOVFJZIGVnbEdldERpc3BsYXkoRUdMTmF0aXZlRGlzcGxheVR5cGUg
ZGlzcGxheV9pZCk7CkBAIC0zMjYsOCArMzIyLDYgQEAgdHlwZWRlZiB2b2lkICgqX19lZ2xNdXN0
Q2FzdFRvUHJvcGVyRnVuYwogRUdMQVBJIF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9p
bnRlclR5cGUgRUdMQVBJRU5UUlkKICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcyhjb25zdCBjaGFy
ICpwcm9jbmFtZSk7CiAKLSNlbmRpZgotCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9FR0wvZWdsc29mdGxpbmtpbmcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0VHTC9lZ2xz
b2Z0bGlua2luZy5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9pbmNsdWRlL0VHTC9lZ2xzb2Z0bGlua2luZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYzICsw
LDAgQEAKLS8qIAotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIAotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgiCi0KLVNPRlRf
TElOS19MSUJSQVJZKGxpYkVHTCkKLQotU09GVF9MSU5LKGxpYkVHTCwgZWdsR2V0RXJyb3IsIEVH
TGludCwgRUdMQVBJRU5UUlksICh2b2lkKSwgKCkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsR2V0
RGlzcGxheSwgRUdMRGlzcGxheSwgRUdMQVBJRU5UUlksIChFR0xOYXRpdmVEaXNwbGF5VHlwZSBk
aXNwbGF5X2lkKSwgKGRpc3BsYXlfaWQpKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbEluaXRpYWxp
emUsIEVHTEJvb2xlYW4sIEVHTEFQSUVOVFJZLCAoRUdMRGlzcGxheSBkcHksIEVHTGludCAqbWFq
b3IsIEVHTGludCAqbWlub3IpLCAoZHB5LCBtYWpvciwgbWlub3IpKTsKLVNPRlRfTElOSyhsaWJF
R0wsIGVnbFRlcm1pbmF0ZSwgRUdMQm9vbGVhbiwgRUdMQVBJRU5UUlksIChFR0xEaXNwbGF5IGRw
eSksIChkcHkpKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbFF1ZXJ5U3RyaW5nLCBjb25zdCBjaGFy
ICosIEVHTEFQSUVOVFJZLCAoRUdMRGlzcGxheSBkcHksIEVHTGludCBuYW1lKSwgKGRweSwgbmFt
ZSkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsR2V0Q29uZmlncywgRUdMQm9vbGVhbiwgRUdMQVBJ
RU5UUlksIChFR0xEaXNwbGF5IGRweSwgRUdMQ29uZmlnICpjb25maWdzLCBFR0xpbnQgY29uZmln
X3NpemUsIEVHTGludCAqbnVtX2NvbmZpZyksIChkcHksIGNvbmZpZ3MsIGNvbmZpZ19zaXplLCBu
dW1fY29uZmlnKSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xDaG9vc2VDb25maWcsIEVHTEJvb2xl
YW4sIEVHTEFQSUVOVFJZLCAoRUdMRGlzcGxheSBkcHksIGNvbnN0IEVHTGludCAqYXR0cmliX2xp
c3QsIEVHTENvbmZpZyAqY29uZmlncywgRUdMaW50IGNvbmZpZ19zaXplLCBFR0xpbnQgKm51bV9j
b25maWcpLCAoZHB5LCBhdHRyaWJfbGlzdCwgY29uZmlncywgY29uZmlnX3NpemUsIG51bV9jb25m
aWcpKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbEdldENvbmZpZ0F0dHJpYiwgRUdMaW50LCBFR0xB
UElFTlRSWSwgKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgY29uZmlnLCBFR0xpbnQgYXR0cmli
dXRlLCBFR0xpbnQgKnZhbHVlKSwgKGRweSwgY29uZmlnLCBhdHRyaWJ1dGUsIHZhbHVlKSk7Ci1T
T0ZUX0xJTksobGliRUdMLCBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNlLCBFR0xTdXJmYWNlLCBFR0xB
UElFTlRSWSwgKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgY29uZmlnLCBFR0xOYXRpdmVXaW5k
b3dUeXBlIHdpbiwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCksIChkcHksIGNvbmZpZywgd2lu
LCBhdHRyaWJfbGlzdCkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsQ3JlYXRlUGJ1ZmZlclN1cmZh
Y2UsIEVHTFN1cmZhY2UsIEVHTEFQSUVOVFJZLCAoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBj
b25maWcsIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpLCAoZHB5LCBjb25maWcsIGF0dHJpYl9s
aXN0KSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xDcmVhdGVQaXhtYXBTdXJmYWNlLCBFR0xTdXJm
YWNlLCBFR0xBUElFTlRSWSwgKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgY29uZmlnLCBFR0xO
YXRpdmVQaXhtYXBUeXBlIHBpeG1hcCwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCksIChkcHks
IGNvbmZpZywgcGl4bWFwLCBhdHRyaWJfbGlzdCkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsRGVz
dHJveVN1cmZhY2UsIEVHTEJvb2xlYW4sIEVHTEFQSUVOVFJZLCAoRUdMRGlzcGxheSBkcHksIEVH
TFN1cmZhY2Ugc3VyZmFjZSksIChkcHksIHN1cmZhY2UpKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVn
bFF1ZXJ5U3VyZmFjZSwgRUdMQm9vbGVhbiwgRUdMQVBJRU5UUlksIChFR0xEaXNwbGF5IGRweSwg
RUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xpbnQgYXR0cmlidXRlLCBFR0xpbnQgKnZhbHVlKSwgKGRw
eSwgc3VyZmFjZSwgYXR0cmlidXRlLCB2YWx1ZSkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsQmlu
ZEFQSSwgRUdMQm9vbGVhbiwgRUdMQVBJRU5UUlksIChFR0xlbnVtIGFwaSksIChhcGkpKTsKLVNP
RlRfTElOSyhsaWJFR0wsIGVnbFF1ZXJ5QVBJLCBFR0xlbnVtLCBFR0xBUElFTlRSWSwgKHZvaWQp
LCAoKSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xXYWl0Q2xpZW50LCBFR0xCb29sZWFuLCBFR0xB
UElFTlRSWSwgKHZvaWQpLCAoKSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xSZWxlYXNlVGhyZWFk
LCBFR0xCb29sZWFuLCBFR0xBUElFTlRSWSwgKHZvaWQpLCAoKSk7Ci1TT0ZUX0xJTksobGliRUdM
LCBlZ2xDcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlciwgRUdMU3VyZmFjZSwgRUdMQVBJRU5U
UlksIChFR0xEaXNwbGF5IGRweSwgRUdMZW51bSBidWZ0eXBlLCBFR0xDbGllbnRCdWZmZXIgYnVm
ZmVyLCBFR0xDb25maWcgY29uZmlnLCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KSwgKGRweSwg
YnVmdHlwZSwgYnVmZmVyLCBjb25maWcsIGF0dHJpYl9saXN0KSk7Ci1TT0ZUX0xJTksobGliRUdM
LCBlZ2xTdXJmYWNlQXR0cmliLCBFR0xCb29sZWFuLCBFR0xBUElFTlRSWSwgKEVHTERpc3BsYXkg
ZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTGludCBhdHRyaWJ1dGUsIEVHTGludCB2YWx1ZSks
IChkcHksIHN1cmZhY2UsIGF0dHJpYnV0ZSwgdmFsdWUpKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVn
bEJpbmRUZXhJbWFnZSwgRUdMQm9vbGVhbiwgRUdMQVBJRU5UUlksIChFR0xEaXNwbGF5IGRweSwg
RUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xpbnQgYnVmZmVyKSwgKGRweSwgc3VyZmFjZSwgYnVmZmVy
KSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xSZWxlYXNlVGV4SW1hZ2UsIEVHTEJvb2xlYW4sIEVH
TEFQSUVOVFJZLCAoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IGJ1
ZmZlciksIChkcHksIHN1cmZhY2UsIGJ1ZmZlcikpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsU3dh
cEludGVydmFsLCBFR0xCb29sZWFuLCBFR0xBUElFTlRSWSwgKEVHTERpc3BsYXkgZHB5LCBFR0xp
bnQgaW50ZXJ2YWwpLCAoZHB5LCBpbnRlcnZhbCkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsQ3Jl
YXRlQ29udGV4dCwgRUdMQ29udGV4dCwgRUdMQVBJRU5UUlksIChFR0xEaXNwbGF5IGRweSwgRUdM
Q29uZmlnIGNvbmZpZywgRUdMQ29udGV4dCBzaGFyZV9jb250ZXh0LCBjb25zdCBFR0xpbnQgKmF0
dHJpYl9saXN0KSwgKGRweSwgY29uZmlnLCBzaGFyZV9jb250ZXh0LCBhdHRyaWJfbGlzdCkpOwot
U09GVF9MSU5LKGxpYkVHTCwgZWdsRGVzdHJveUNvbnRleHQsIEVHTEJvb2xlYW4sIEVHTEFQSUVO
VFJZLCAoRUdMRGlzcGxheSBkcHksIEVHTENvbnRleHQgY3R4KSwgKGRweSwgY3R4KSk7Ci1TT0ZU
X0xJTksobGliRUdMLCBlZ2xNYWtlQ3VycmVudCwgRUdMQm9vbGVhbiwgRUdMQVBJRU5UUlksIChF
R0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBkcmF3LCBFR0xTdXJmYWNlIHJlYWQsIEVHTENvbnRl
eHQgY3R4KSwgKGRweSwgZHJhdywgcmVhZCwgY3R4KSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xH
ZXRDdXJyZW50Q29udGV4dCwgRUdMQ29udGV4dCwgRUdMQVBJRU5UUlksICh2b2lkKSwgKCkpOwot
U09GVF9MSU5LKGxpYkVHTCwgZWdsR2V0Q3VycmVudFN1cmZhY2UsIEVHTFN1cmZhY2UsIEVHTEFQ
SUVOVFJZLCAoRUdMaW50IHJlYWRkcmF3KSwgKHJlYWRkcmF3KSk7Ci1TT0ZUX0xJTksobGliRUdM
LCBlZ2xHZXRDdXJyZW50RGlzcGxheSwgRUdMRGlzcGxheSwgRUdMQVBJRU5UUlksICh2b2lkKSwg
KCkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsUXVlcnlDb250ZXh0LCBFR0xCb29sZWFuLCBFR0xB
UElFTlRSWSwgKEVHTERpc3BsYXkgZHB5LCBFR0xDb250ZXh0IGN0eCwgRUdMaW50IGF0dHJpYnV0
ZSwgRUdMaW50ICp2YWx1ZSksIChkcHksIGN0eCwgYXR0cmlidXRlLCB2YWx1ZSkpOwotU09GVF9M
SU5LKGxpYkVHTCwgZWdsV2FpdEdMLCBFR0xCb29sZWFuLCBFR0xBUElFTlRSWSwgKHZvaWQpLCAo
KSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xXYWl0TmF0aXZlLCBFR0xCb29sZWFuLCBFR0xBUElF
TlRSWSwgKEVHTGludCBlbmdpbmUpLCAoZW5naW5lKSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xT
d2FwQnVmZmVycywgRUdMQm9vbGVhbiwgRUdMQVBJRU5UUlksIChFR0xEaXNwbGF5IGRweSwgRUdM
U3VyZmFjZSBzdXJmYWNlKSwgKGRweSwgc3VyZmFjZSkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWds
Q29weUJ1ZmZlcnMsIEVHTEJvb2xlYW4sIEVHTEFQSUVOVFJZLCAoRUdMRGlzcGxheSBkcHksIEVH
TFN1cmZhY2Ugc3VyZmFjZSwgRUdMTmF0aXZlUGl4bWFwVHlwZSB0YXJnZXQpLCAoZHB5LCBzdXJm
YWNlLCB0YXJnZXQpKTsKLXR5cGVkZWYgdm9pZCAoKl9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0
aW9uUG9pbnRlclR5cGUpKHZvaWQpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsR2V0UHJvY0FkZHJl
c3MsIF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUsIEVHTEFQSUVOVFJZ
LCAoY29uc3QgY2hhciAqcHJvY25hbWUpLCAocHJvY25hbWUpKTsKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzIvZ2wyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMi9nbDIuaAkocmV2aXNpb24gMTU5NTMyKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMi9nbDIuaAkod29ya2luZyBjb3B5
KQpAQCAtNDcxLDEwICs0NzEsNiBAQCB0eXBlZGVmIGtocm9ub3Nfc3NpemVfdCAgR0xzaXplaXB0
cjsKICAqIEdMIGNvcmUgZnVuY3Rpb25zLgogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKLSNpZiBkZWZp
bmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChBTkdMRV9XRUJLSVRfV0lOKQotI2luY2x1ZGUgPEdM
RVMyL2dsMnNvZnRsaW5raW5nLmg+Ci0jZWxzZQotCiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBH
TF9BUElFTlRSWSBnbEFjdGl2ZVRleHR1cmUgKEdMZW51bSB0ZXh0dXJlKTsKIEdMX0FQSUNBTEwg
dm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsQXR0YWNoU2hhZGVyIChHTHVpbnQgcHJvZ3JhbSwg
R0x1aW50IHNoYWRlcik7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEJp
bmRBdHRyaWJMb2NhdGlvbiAoR0x1aW50IHByb2dyYW0sIEdMdWludCBpbmRleCwgY29uc3QgR0xj
aGFyKiBuYW1lKTsKQEAgLTYxOCw4ICs2MTQsNiBAQCBHTF9BUElDQUxMIHZvaWQgICAgICAgICBH
TF9BUElFTlRSWSBnbFZlCiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbFZl
cnRleEF0dHJpYlBvaW50ZXIgKEdMdWludCBpbmR4LCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwg
R0xib29sZWFuIG5vcm1hbGl6ZWQsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQqIHB0cik7
CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbFZpZXdwb3J0IChHTGludCB4
LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CiAKLSNlbmRpZgotCiAj
aWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvaW5jbHVkZS9HTEVTMi9nbDJzb2Z0bGlua2luZy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzIvZ2wyc29mdGxpbmtpbmcuaAkocmV2aXNpb24g
MTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMi9nbDJzb2Z0
bGlua2luZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3MCArMCwwIEBACi0vKiAKLSAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
Ci0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJTb2Z0TGlua2luZy5oIgotCi1TT0ZUX0xJTktfTElCUkFSWShsaWJHTEVT
djIpCi0KLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQWN0aXZlVGV4dHVyZSwgdm9pZCwgR0xfQVBJ
RU5UUlksIChHTGVudW0gdGV4dHVyZSksICh0ZXh0dXJlKSk7Ci1TT0ZUX0xJTksobGliR0xFU3Yy
LCBnbEF0dGFjaFNoYWRlciwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgcHJvZ3JhbSwgR0x1
aW50IHNoYWRlciksIChwcm9ncmFtLCBzaGFkZXIpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGds
QmluZEF0dHJpYkxvY2F0aW9uLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBwcm9ncmFtLCBH
THVpbnQgaW5kZXgsIGNvbnN0IEdMY2hhciogbmFtZSksIChwcm9ncmFtLCBpbmRleCwgbmFtZSkp
OwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xCaW5kQnVmZmVyLCB2b2lkLCBHTF9BUElFTlRSWSwg
KEdMZW51bSB0YXJnZXQsIEdMdWludCBidWZmZXIpLCAodGFyZ2V0LCBidWZmZXIpKTsKLVNPRlRf
TElOSyhsaWJHTEVTdjIsIGdsQmluZEZyYW1lYnVmZmVyLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdM
ZW51bSB0YXJnZXQsIEdMdWludCBmcmFtZWJ1ZmZlciksICh0YXJnZXQsIGZyYW1lYnVmZmVyKSk7
Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEJpbmRSZW5kZXJidWZmZXIsIHZvaWQsIEdMX0FQSUVO
VFJZLCAoR0xlbnVtIHRhcmdldCwgR0x1aW50IHJlbmRlcmJ1ZmZlciksICh0YXJnZXQsIHJlbmRl
cmJ1ZmZlcikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xCaW5kVGV4dHVyZSwgdm9pZCwgR0xf
QVBJRU5UUlksIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSksICh0YXJnZXQsIHRleHR1
cmUpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQmxlbmRDb2xvciwgdm9pZCwgR0xfQVBJRU5U
UlksIChHTGNsYW1wZiByZWQsIEdMY2xhbXBmIGdyZWVuLCBHTGNsYW1wZiBibHVlLCBHTGNsYW1w
ZiBhbHBoYSksIChyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSkpOwotU09GVF9MSU5LKGxpYkdMRVN2
MiwgZ2xCbGVuZEVxdWF0aW9uLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSBtb2RlKSwgKG1v
ZGUpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlLCB2b2lk
LCBHTF9BUElFTlRSWSwgKEdMZW51bSBtb2RlUkdCLCBHTGVudW0gbW9kZUFscGhhKSwgKG1vZGVS
R0IsIG1vZGVBbHBoYSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xCbGVuZEZ1bmMsIHZvaWQs
IEdMX0FQSUVOVFJZLCAoR0xlbnVtIHNmYWN0b3IsIEdMZW51bSBkZmFjdG9yKSwgKHNmYWN0b3Is
IGRmYWN0b3IpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQmxlbmRGdW5jU2VwYXJhdGUsIHZv
aWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHNyY1JHQiwgR0xlbnVtIGRzdFJHQiwgR0xlbnVtIHNy
Y0FscGhhLCBHTGVudW0gZHN0QWxwaGEpLCAoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RB
bHBoYSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xCdWZmZXJEYXRhLCB2b2lkLCBHTF9BUElF
TlRSWSwgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWlwdHIgc2l6ZSwgY29uc3QgR0x2b2lkKiBkYXRh
LCBHTGVudW0gdXNhZ2UpLCAodGFyZ2V0LCBzaXplLCBkYXRhLCB1c2FnZSkpOwotU09GVF9MSU5L
KGxpYkdMRVN2MiwgZ2xCdWZmZXJTdWJEYXRhLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSB0
YXJnZXQsIEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBzaXplLCBjb25zdCBHTHZvaWQqIGRh
dGEpLCAodGFyZ2V0LCBvZmZzZXQsIHNpemUsIGRhdGEpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIs
IGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cywgR0xlbnVtLCBHTF9BUElFTlRSWSwgKEdMZW51bSB0
YXJnZXQpLCAodGFyZ2V0KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbENsZWFyLCB2b2lkLCBH
TF9BUElFTlRSWSwgKEdMYml0ZmllbGQgbWFzayksIChtYXNrKSk7Ci1TT0ZUX0xJTksobGliR0xF
U3YyLCBnbENsZWFyQ29sb3IsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xjbGFtcGYgcmVkLCBHTGNs
YW1wZiBncmVlbiwgR0xjbGFtcGYgYmx1ZSwgR0xjbGFtcGYgYWxwaGEpLCAocmVkLCBncmVlbiwg
Ymx1ZSwgYWxwaGEpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQ2xlYXJEZXB0aGYsIHZvaWQs
IEdMX0FQSUVOVFJZLCAoR0xjbGFtcGYgZGVwdGgpLCAoZGVwdGgpKTsKLVNPRlRfTElOSyhsaWJH
TEVTdjIsIGdsQ2xlYXJTdGVuY2lsLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMaW50IHMpLCAocykp
OwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xDb2xvck1hc2ssIHZvaWQsIEdMX0FQSUVOVFJZLCAo
R0xib29sZWFuIHJlZCwgR0xib29sZWFuIGdyZWVuLCBHTGJvb2xlYW4gYmx1ZSwgR0xib29sZWFu
IGFscGhhKSwgKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSk7Ci1TT0ZUX0xJTksobGliR0xFU3Yy
LCBnbENvbXBpbGVTaGFkZXIsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IHNoYWRlciksIChz
aGFkZXIpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQ29tcHJlc3NlZFRleEltYWdlMkQsIHZv
aWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGJvcmRlciwg
R0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCogZGF0YSksICh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIGRhdGEpKTsK
LVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQsIHZvaWQsIEdM
X0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdM
aW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0
LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkKiBkYXRhKSwgKHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBkYXRh
KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbENvcHlUZXhJbWFnZTJELCB2b2lkLCBHTF9BUElF
TlRSWSwgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBi
b3JkZXIpLCAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsIHksIHdpZHRoLCBoZWln
aHQsIGJvcmRlcikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xDb3B5VGV4U3ViSW1hZ2UyRCwg
dm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9m
ZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQpLCAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lk
dGgsIGhlaWdodCkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xDcmVhdGVQcm9ncmFtLCBHTHVp
bnQsIEdMX0FQSUVOVFJZLCAodm9pZCksICgpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQ3Jl
YXRlU2hhZGVyLCBHTHVpbnQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHR5cGUpLCAodHlwZSkpOwot
U09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xDdWxsRmFjZSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVu
dW0gbW9kZSksIChtb2RlKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbERlbGV0ZUJ1ZmZlcnMs
IHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqIGJ1ZmZlcnMpLCAo
biwgYnVmZmVycykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMs
IHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqIGZyYW1lYnVmZmVy
cyksIChuLCBmcmFtZWJ1ZmZlcnMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsRGVsZXRlUHJv
Z3JhbSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgcHJvZ3JhbSksIChwcm9ncmFtKSk7Ci1T
T0ZUX0xJTksobGliR0xFU3YyLCBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMsIHZvaWQsIEdMX0FQSUVO
VFJZLCAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqIHJlbmRlcmJ1ZmZlcnMpLCAobiwgcmVuZGVy
YnVmZmVycykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xEZWxldGVTaGFkZXIsIHZvaWQsIEdM
X0FQSUVOVFJZLCAoR0x1aW50IHNoYWRlciksIChzaGFkZXIpKTsKLVNPRlRfTElOSyhsaWJHTEVT
djIsIGdsRGVsZXRlVGV4dHVyZXMsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xzaXplaSBuLCBjb25z
dCBHTHVpbnQqIHRleHR1cmVzKSwgKG4sIHRleHR1cmVzKSk7Ci1TT0ZUX0xJTksobGliR0xFU3Yy
LCBnbERlcHRoRnVuYywgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gZnVuYyksIChmdW5jKSk7
Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbERlcHRoTWFzaywgdm9pZCwgR0xfQVBJRU5UUlksIChH
TGJvb2xlYW4gZmxhZyksIChmbGFnKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbERlcHRoUmFu
Z2VmLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMY2xhbXBmIHpOZWFyLCBHTGNsYW1wZiB6RmFyKSwg
KHpOZWFyLCB6RmFyKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbERldGFjaFNoYWRlciwgdm9p
ZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IHNoYWRlciksIChwcm9ncmFt
LCBzaGFkZXIpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsRGlzYWJsZSwgdm9pZCwgR0xfQVBJ
RU5UUlksIChHTGVudW0gY2FwKSwgKGNhcCkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xEaXNh
YmxlVmVydGV4QXR0cmliQXJyYXksIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IGluZGV4KSwg
KGluZGV4KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbERyYXdBcnJheXMsIHZvaWQsIEdMX0FQ
SUVOVFJZLCAoR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50KSwgKG1vZGUs
IGZpcnN0LCBjb3VudCkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xEcmF3RWxlbWVudHMsIHZv
aWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBl
LCBjb25zdCBHTHZvaWQqIGluZGljZXMpLCAobW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMpKTsK
LVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsRW5hYmxlLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51
bSBjYXApLCAoY2FwKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEVuYWJsZVZlcnRleEF0dHJp
YkFycmF5LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBpbmRleCksIChpbmRleCkpOwotU09G
VF9MSU5LKGxpYkdMRVN2MiwgZ2xGaW5pc2gsIHZvaWQsIEdMX0FQSUVOVFJZLCAodm9pZCksICgp
KTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsRmx1c2gsIHZvaWQsIEdMX0FQSUVOVFJZLCAodm9p
ZCksICgpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIs
IHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdM
ZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIEdMdWludCByZW5kZXJidWZmZXIpLCAodGFyZ2V0LCBh
dHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIHJlbmRlcmJ1ZmZlcikpOwotU09GVF9MSU5L
KGxpYkdMRVN2MiwgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRCwgdm9pZCwgR0xfQVBJRU5UUlksIChH
TGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHRleHRhcmdldCwgR0x1aW50
IHRleHR1cmUsIEdMaW50IGxldmVsKSwgKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCB0
ZXh0dXJlLCBsZXZlbCkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xGcm9udEZhY2UsIHZvaWQs
IEdMX0FQSUVOVFJZLCAoR0xlbnVtIG1vZGUpLCAobW9kZSkpOwotU09GVF9MSU5LKGxpYkdMRVN2
MiwgZ2xHZW5CdWZmZXJzLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMc2l6ZWkgbiwgR0x1aW50KiBi
dWZmZXJzKSwgKG4sIGJ1ZmZlcnMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2VuZXJhdGVN
aXBtYXAsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCksICh0YXJnZXQpKTsKLVNP
RlRfTElOSyhsaWJHTEVTdjIsIGdsR2VuRnJhbWVidWZmZXJzLCB2b2lkLCBHTF9BUElFTlRSWSwg
KEdMc2l6ZWkgbiwgR0x1aW50KiBmcmFtZWJ1ZmZlcnMpLCAobiwgZnJhbWVidWZmZXJzKSk7Ci1T
T0ZUX0xJTksobGliR0xFU3YyLCBnbEdlblJlbmRlcmJ1ZmZlcnMsIGludCwgR0xfQVBJRU5UUlks
IChHTHNpemVpIG4sIEdMdWludCogcmVuZGVyYnVmZmVycyksIChuLCByZW5kZXJidWZmZXJzKSk7
Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdlblRleHR1cmVzLCB2b2lkLCBHTF9BUElFTlRSWSwg
KEdMc2l6ZWkgbiwgR0x1aW50KiB0ZXh0dXJlcyksIChuLCB0ZXh0dXJlcykpOwotU09GVF9MSU5L
KGxpYkdMRVN2MiwgZ2xHZXRBY3RpdmVBdHRyaWIsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50
IHByb2dyYW0sIEdMdWludCBpbmRleCwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgs
IEdMaW50KiBzaXplLCBHTGVudW0qIHR5cGUsIEdMY2hhciogbmFtZSksIChwcm9ncmFtLCBpbmRl
eCwgYnVmc2l6ZSwgbGVuZ3RoLCBzaXplLCB0eXBlLCBuYW1lKSk7Ci1TT0ZUX0xJTksobGliR0xF
U3YyLCBnbEdldEFjdGl2ZVVuaWZvcm0sIEdMZW51bSwgR0xfQVBJRU5UUlksIChHTHVpbnQgcHJv
Z3JhbSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xp
bnQqIHNpemUsIEdMZW51bSogdHlwZSwgR0xjaGFyKiBuYW1lKSwgKHByb2dyYW0sIGluZGV4LCBi
dWZzaXplLCBsZW5ndGgsIHNpemUsIHR5cGUsIG5hbWUpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIs
IGdsR2V0QXR0YWNoZWRTaGFkZXJzLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBwcm9ncmFt
LCBHTHNpemVpIG1heGNvdW50LCBHTHNpemVpKiBjb3VudCwgR0x1aW50KiBzaGFkZXJzKSwgKHBy
b2dyYW0sIG1heGNvdW50LCBjb3VudCwgc2hhZGVycykpOwotU09GVF9MSU5LKGxpYkdMRVN2Miwg
Z2xHZXRBdHRyaWJMb2NhdGlvbiwgaW50LCBHTF9BUElFTlRSWSwgKEdMdWludCBwcm9ncmFtLCBj
b25zdCBHTGNoYXIqIG5hbWUpLCAocHJvZ3JhbSwgbmFtZSkpOwotU09GVF9MSU5LKGxpYkdMRVN2
MiwgZ2xHZXRCb29sZWFudiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gcG5hbWUsIEdMYm9v
bGVhbiogcGFyYW1zKSwgKHBuYW1lLCBwYXJhbXMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGds
R2V0QnVmZmVyUGFyYW1ldGVyaXYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCwg
R0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKSwgKHRhcmdldCwgcG5hbWUsIHBhcmFtcykpOwot
U09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xHZXRFcnJvciwgR0xlbnVtLCBHTF9BUElFTlRSWSwgKHZv
aWQpLCAoKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdldEZsb2F0diwgdm9pZCwgR0xfQVBJ
RU5UUlksIChHTGVudW0gcG5hbWUsIEdMZmxvYXQqIHBhcmFtcyksIChwbmFtZSwgcGFyYW1zKSk7
Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cml2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50
LCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpLCAodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFt
ZSwgcGFyYW1zKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdldEludGVnZXJ2LCB2b2lkLCBH
TF9BUElFTlRSWSwgKEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcyksIChwbmFtZSwgcGFyYW1z
KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdldFByb2dyYW1pdiwgdm9pZCwgR0xfQVBJRU5U
UlksIChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKSwgKHByb2dy
YW0sIHBuYW1lLCBwYXJhbXMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2V0UHJvZ3JhbUlu
Zm9Mb2csIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgYnVmc2l6
ZSwgR0xzaXplaSogbGVuZ3RoLCBHTGNoYXIqIGluZm9sb2cpLCAocHJvZ3JhbSwgYnVmc2l6ZSwg
bGVuZ3RoLCBpbmZvbG9nKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcml2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwgR0xpbnQqIHBhcmFtcyksICh0YXJnZXQsIHBuYW1lLCBwYXJhbXMpKTsKLVNPRlRfTElO
SyhsaWJHTEVTdjIsIGdsR2V0U2hhZGVyaXYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IHNo
YWRlciwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKSwgKHNoYWRlciwgcG5hbWUsIHBhcmFt
cykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xHZXRTaGFkZXJJbmZvTG9nLCB2b2lkLCBHTF9B
UElFTlRSWSwgKEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3Ro
LCBHTGNoYXIqIGluZm9sb2cpLCAoc2hhZGVyLCBidWZzaXplLCBsZW5ndGgsIGluZm9sb2cpKTsK
LVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0LCB2b2lkLCBH
TF9BUElFTlRSWSwgKEdMZW51bSBzaGFkZXJ0eXBlLCBHTGVudW0gcHJlY2lzaW9udHlwZSwgR0xp
bnQqIHJhbmdlLCBHTGludCogcHJlY2lzaW9uKSwgKHNoYWRlcnR5cGUsIHByZWNpc2lvbnR5cGUs
IHJhbmdlLCBwcmVjaXNpb24pKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2V0U2hhZGVyU291
cmNlLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgYnVmc2l6ZSwg
R0xzaXplaSogbGVuZ3RoLCBHTGNoYXIqIHNvdXJjZSksIChzaGFkZXIsIGJ1ZnNpemUsIGxlbmd0
aCwgc291cmNlKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdldFN0cmluZywgY29uc3QgR0x1
Ynl0ZSosIEdMX0FQSUVOVFJZLCAoR0xlbnVtIG5hbWUpLCAobmFtZSkpOwotU09GVF9MSU5LKGxp
YkdMRVN2MiwgZ2xHZXRUZXhQYXJhbWV0ZXJmdiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0g
dGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQqIHBhcmFtcyksICh0YXJnZXQsIHBuYW1lLCBw
YXJhbXMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2V0VGV4UGFyYW1ldGVyaXYsIHZvaWQs
IEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1z
KSwgKHRhcmdldCwgcG5hbWUsIHBhcmFtcykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xHZXRV
bmlmb3JtZnYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0
aW9uLCBHTGZsb2F0KiBwYXJhbXMpLCAocHJvZ3JhbSwgbG9jYXRpb24sIHBhcmFtcykpOwotU09G
VF9MSU5LKGxpYkdMRVN2MiwgZ2xHZXRVbmlmb3JtaXYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1
aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCogcGFyYW1zKSwgKHByb2dyYW0sIGxv
Y2F0aW9uLCBwYXJhbXMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2V0VW5pZm9ybUxvY2F0
aW9uLCBpbnQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciogbmFt
ZSksIChwcm9ncmFtLCBuYW1lKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdldFZlcnRleEF0
dHJpYmZ2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBH
TGZsb2F0KiBwYXJhbXMpLCAoaW5kZXgsIHBuYW1lLCBwYXJhbXMpKTsKLVNPRlRfTElOSyhsaWJH
TEVTdjIsIGdsR2V0VmVydGV4QXR0cmliaXYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKSwgKHRhcmdldCwgcG5hbWUsIHBhcmFt
cykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydiwgdm9p
ZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0x2b2lkKiogcG9p
bnRlciksIChpbmRleCwgcG5hbWUsIHBvaW50ZXIpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGds
SGludCwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gbW9kZSksICh0
YXJnZXQsIG1vZGUpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsSXNCdWZmZXIsIEdMYm9vbGVh
biwgR0xfQVBJRU5UUlksIChHTHVpbnQgYnVmZmVyKSwgKGJ1ZmZlcikpOwotU09GVF9MSU5LKGxp
YkdMRVN2MiwgZ2xJc0VuYWJsZWQsIEdMYm9vbGVhbiwgR0xfQVBJRU5UUlksIChHTGVudW0gY2Fw
KSwgKGNhcCkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xJc0ZyYW1lYnVmZmVyLCBHTGJvb2xl
YW4sIEdMX0FQSUVOVFJZLCAoR0x1aW50IGZyYW1lYnVmZmVyKSwgKGZyYW1lYnVmZmVyKSk7Ci1T
T0ZUX0xJTksobGliR0xFU3YyLCBnbElzUHJvZ3JhbSwgR0xib29sZWFuLCBHTF9BUElFTlRSWSwg
KEdMdWludCBwcm9ncmFtKSwgKHByb2dyYW0pKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsSXNS
ZW5kZXJidWZmZXIsIEdMYm9vbGVhbiwgR0xfQVBJRU5UUlksIChHTHVpbnQgcmVuZGVyYnVmZmVy
KSwgKHJlbmRlcmJ1ZmZlcikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xJc1NoYWRlciwgR0xi
b29sZWFuLCBHTF9BUElFTlRSWSwgKEdMdWludCBzaGFkZXIpLCAoc2hhZGVyKSk7Ci1TT0ZUX0xJ
TksobGliR0xFU3YyLCBnbElzVGV4dHVyZSwgR0xib29sZWFuLCBHTF9BUElFTlRSWSwgKEdMdWlu
dCB0ZXh0dXJlKSwgKHRleHR1cmUpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsTGluZVdpZHRo
LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZmxvYXQgd2lkdGgpLCAod2lkdGgpKTsKLVNPRlRfTElO
SyhsaWJHTEVTdjIsIGdsTGlua1Byb2dyYW0sIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IHBy
b2dyYW0pLCAocHJvZ3JhbSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xQaXhlbFN0b3JlaSwg
dm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKSwgKHBuYW1lLCBw
YXJhbSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xQb2x5Z29uT2Zmc2V0LCB2b2lkLCBHTF9B
UElFTlRSWSwgKEdMZmxvYXQgZmFjdG9yLCBHTGZsb2F0IHVuaXRzKSwgKGZhY3RvciwgdW5pdHMp
KTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsUmVhZFBpeGVscywgdm9pZCwgR0xfQVBJRU5UUlks
IChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVt
IGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9pZCogcGl4ZWxzKSwgKHgsIHksIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFJlbGVh
c2VTaGFkZXJDb21waWxlciwgdm9pZCwgR0xfQVBJRU5UUlksICh2b2lkKSwgKCkpOwotU09GVF9M
SU5LKGxpYkdMRVN2MiwgZ2xSZW5kZXJidWZmZXJTdG9yYWdlLCB2b2lkLCBHTF9BUElFTlRSWSwg
KEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQpLCAodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCkpOwot
U09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xTYW1wbGVDb3ZlcmFnZSwgdm9pZCwgR0xfQVBJRU5UUlks
IChHTGNsYW1wZiB2YWx1ZSwgR0xib29sZWFuIGludmVydCksICh2YWx1ZSwgaW52ZXJ0KSk7Ci1T
T0ZUX0xJTksobGliR0xFU3YyLCBnbFNjaXNzb3IsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xpbnQg
eCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpLCAoeCwgeSwgd2lkdGgs
IGhlaWdodCkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xTaGFkZXJCaW5hcnksIHZvaWQsIEdM
X0FQSUVOVFJZLCAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqIHNoYWRlcnMsIEdMZW51bSBiaW5h
cnlmb3JtYXQsIGNvbnN0IEdMdm9pZCogYmluYXJ5LCBHTHNpemVpIGxlbmd0aCksIChuLCBzaGFk
ZXJzLCBiaW5hcnlmb3JtYXQsIGJpbmFyeSwgbGVuZ3RoKSk7Ci1TT0ZUX0xJTksobGliR0xFU3Yy
LCBnbFNoYWRlclNvdXJjZSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgc2hhZGVyLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTGNoYXIqKiBzdHJpbmcsIGNvbnN0IEdMaW50KiBsZW5ndGgpLCAo
c2hhZGVyLCBjb3VudCwgc3RyaW5nLCBsZW5ndGgpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGds
U3RlbmNpbEZ1bmMsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwg
R0x1aW50IG1hc2spLCAoZnVuYywgcmVmLCBtYXNrKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBn
bFN0ZW5jaWxGdW5jU2VwYXJhdGUsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIGZhY2UsIEdM
ZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKSwgKGZhY2UsIGZ1bmMsIHJlZiwgbWFz
aykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xTdGVuY2lsTWFzaywgdm9pZCwgR0xfQVBJRU5U
UlksIChHTHVpbnQgbWFzayksIChtYXNrKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFN0ZW5j
aWxNYXNrU2VwYXJhdGUsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIGZhY2UsIEdMdWludCBt
YXNrKSwgKGZhY2UsIG1hc2spKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsU3RlbmNpbE9wLCB2
b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSBmYWlsLCBHTGVudW0gemZhaWwsIEdMZW51bSB6cGFz
cyksIChmYWlsLCB6ZmFpbCwgenBhc3MpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsU3RlbmNp
bE9wU2VwYXJhdGUsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIGZhY2UsIEdMZW51bSBmYWls
LCBHTGVudW0gemZhaWwsIEdMZW51bSB6cGFzcyksIChmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3Mp
KTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVGV4SW1hZ2UyRCwgdm9pZCwgR0xfQVBJRU5UUlks
IChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdM
ZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqIHBpeGVscyksICh0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscykpOwot
U09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xUZXhQYXJhbWV0ZXJmLCB2b2lkLCBHTF9BUElFTlRSWSwg
KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSksICh0YXJnZXQsIHBu
YW1lLCBwYXJhbSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xUZXhQYXJhbWV0ZXJmdiwgdm9p
ZCwgR0xfQVBJRU5UUlksIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxv
YXQqIHBhcmFtcyksICh0YXJnZXQsIHBuYW1lLCBwYXJhbXMpKTsKLVNPRlRfTElOSyhsaWJHTEVT
djIsIGdsVGV4UGFyYW1ldGVyaSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gdGFyZ2V0LCBH
TGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKSwgKHRhcmdldCwgcG5hbWUsIHBhcmFtKSk7Ci1TT0ZU
X0xJTksobGliR0xFU3YyLCBnbFRleFBhcmFtZXRlcml2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQqIHBhcmFtcyksICh0YXJnZXQs
IHBuYW1lLCBwYXJhbXMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVGV4U3ViSW1hZ2UyRCwg
dm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9m
ZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51
bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqIHBpeGVscyksICh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVs
cykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xVbmlmb3JtMWYsIHZvaWQsIEdMX0FQSUVOVFJZ
LCAoR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgeCksIChsb2NhdGlvbiwgeCkpOwotU09GVF9MSU5L
KGxpYkdMRVN2MiwgZ2xVbmlmb3JtMWZ2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0KiB2KSwgKGxvY2F0aW9uLCBjb3VudCwg
dikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xVbmlmb3JtMWksIHZvaWQsIEdMX0FQSUVOVFJZ
LCAoR0xpbnQgbG9jYXRpb24sIEdMaW50IHgpLCAobG9jYXRpb24sIHgpKTsKLVNPRlRfTElOSyhs
aWJHTEVTdjIsIGdsVW5pZm9ybTFpdiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQqIHYpLCAobG9jYXRpb24sIGNvdW50LCB2KSk7
Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFVuaWZvcm0yZiwgdm9pZCwgR0xfQVBJRU5UUlksIChH
TGludCBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpLCAobG9jYXRpb24sIHgsIHkpKTsK
LVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVW5pZm9ybTJmdiwgdm9pZCwgR0xfQVBJRU5UUlksIChH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCogdiksIChsb2NhdGlv
biwgY291bnQsIHYpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVW5pZm9ybTJpLCB2b2lkLCBH
TF9BUElFTlRSWSwgKEdMaW50IGxvY2F0aW9uLCBHTGludCB4LCBHTGludCB5KSwgKGxvY2F0aW9u
LCB4LCB5KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFVuaWZvcm0yaXYsIHZvaWQsIEdMX0FQ
SUVOVFJZLCAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50KiB2KSwg
KGxvY2F0aW9uLCBjb3VudCwgdikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xVbmlmb3JtM2Ys
IHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgeCwgR0xmbG9hdCB5
LCBHTGZsb2F0IHopLCAobG9jYXRpb24sIHgsIHksIHopKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIs
IGdsVW5pZm9ybTNmdiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGludCBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgY29uc3QgR0xmbG9hdCogdiksIChsb2NhdGlvbiwgY291bnQsIHYpKTsKLVNPRlRf
TElOSyhsaWJHTEVTdjIsIGdsVW5pZm9ybTNpLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMaW50IGxv
Y2F0aW9uLCBHTGludCB4LCBHTGludCB5LCBHTGludCB6KSwgKGxvY2F0aW9uLCB4LCB5LCB6KSk7
Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFVuaWZvcm0zaXYsIHZvaWQsIEdMX0FQSUVOVFJZLCAo
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50KiB2KSwgKGxvY2F0aW9u
LCBjb3VudCwgdikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xVbmlmb3JtNGYsIHZvaWQsIEdM
X0FQSUVOVFJZLCAoR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0
IHosIEdMZmxvYXQgdyksIChsb2NhdGlvbiwgeCwgeSwgeiwgdykpOwotU09GVF9MSU5LKGxpYkdM
RVN2MiwgZ2xVbmlmb3JtNGZ2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0KiB2KSwgKGxvY2F0aW9uLCBjb3VudCwgdikpOwot
U09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xVbmlmb3JtNGksIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xp
bnQgbG9jYXRpb24sIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHosIEdMaW50IHcpLCAobG9jYXRp
b24sIHgsIHksIHosIHcpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVW5pZm9ybTRpdiwgdm9p
ZCwgR0xfQVBJRU5UUlksIChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xp
bnQqIHYpLCAobG9jYXRpb24sIGNvdW50LCB2KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFVu
aWZvcm1NYXRyaXgyZnYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xpbnQgbG9jYXRpb24sIEdMc2l6
ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQqIHZhbHVlKSwgKGxv
Y2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwotU09GVF9MSU5LKGxpYkdMRVN2Miwg
Z2xVbmlmb3JtTWF0cml4M2Z2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0KiB2YWx1ZSks
IChsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKLVNPRlRfTElOSyhsaWJHTEVT
djIsIGdsVW5pZm9ybU1hdHJpeDRmdiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCogdmFs
dWUpLCAobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7Ci1TT0ZUX0xJTksobGli
R0xFU3YyLCBnbFVzZVByb2dyYW0sIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IHByb2dyYW0p
LCAocHJvZ3JhbSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xWYWxpZGF0ZVByb2dyYW0sIHZv
aWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IHByb2dyYW0pLCAocHJvZ3JhbSkpOwotU09GVF9MSU5L
KGxpYkdMRVN2MiwgZ2xWZXJ0ZXhBdHRyaWIxZiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQg
aW5keCwgR0xmbG9hdCB4KSwgKGluZHgsIHgpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVmVy
dGV4QXR0cmliMWZ2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBpbmR4LCBjb25zdCBHTGZs
b2F0KiB2YWx1ZXMpLCAoaW5keCwgdmFsdWVzKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFZl
cnRleEF0dHJpYjJmLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBpbmR4LCBHTGZsb2F0IHgs
IEdMZmxvYXQgeSksIChpbmR4LCB4LCB5KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFZlcnRl
eEF0dHJpYjJmdiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgaW5keCwgY29uc3QgR0xmbG9h
dCogdmFsdWVzKSwgKGluZHgsIHZhbHVlcykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xWZXJ0
ZXhBdHRyaWIzZiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgaW5keCwgR0xmbG9hdCB4LCBH
TGZsb2F0IHksIEdMZmxvYXQgeiksIChpbmR4LCB4LCB5LCB6KSk7Ci1TT0ZUX0xJTksobGliR0xF
U3YyLCBnbFZlcnRleEF0dHJpYjNmdiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgaW5keCwg
Y29uc3QgR0xmbG9hdCogdmFsdWVzKSwgKGluZHgsIHZhbHVlcykpOwotU09GVF9MSU5LKGxpYkdM
RVN2MiwgZ2xWZXJ0ZXhBdHRyaWI0Ziwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgaW5keCwg
R0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiwgR0xmbG9hdCB3KSwgKGluZHgsIHgsIHks
IHosIHcpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVmVydGV4QXR0cmliNGZ2LCB2b2lkLCBH
TF9BUElFTlRSWSwgKEdMdWludCBpbmR4LCBjb25zdCBHTGZsb2F0KiB2YWx1ZXMpLCAoaW5keCwg
dmFsdWVzKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFZlcnRleEF0dHJpYlBvaW50ZXIsIHZv
aWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IGluZHgsIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBH
TGJvb2xlYW4gbm9ybWFsaXplZCwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCogcHRyKSwg
KGluZHgsIHNpemUsIHR5cGUsIG5vcm1hbGl6ZWQsIHN0cmlkZSwgcHRyKSk7Ci1TT0ZUX0xJTkso
bGliR0xFU3YyLCBnbFZpZXdwb3J0LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMaW50IHgsIEdMaW50
IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KSwgKHgsIHksIHdpZHRoLCBoZWlnaHQp
KTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xTTEFORy9TaGFkZXJM
YW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNM
QU5HL1NoYWRlckxhbmcuaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNiwy
MCArNiwyMCBAQAogI2lmbmRlZiBfQ09NUElMRVJfSU5URVJGQUNFX0lOQ0xVREVEXwogI2RlZmlu
ZSBfQ09NUElMRVJfSU5URVJGQUNFX0lOQ0xVREVEXwogCi0jaWYgZGVmaW5lZChDT01QT05FTlRf
QlVJTEQpCisjaWYgZGVmaW5lZChDT01QT05FTlRfQlVJTEQpICYmICFkZWZpbmVkKEFOR0xFX1RS
QU5TTEFUT1JfU1RBVElDKQogI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9XSU42NCkK
IAotI2lmIGRlZmluZWQoQ09NUElMRVJfSU1QTEVNRU5UQVRJT04pCisjaWYgZGVmaW5lZChBTkdM
RV9UUkFOU0xBVE9SX0lNUExFTUVOVEFUSU9OKQogI2RlZmluZSBDT01QSUxFUl9FWFBPUlQgX19k
ZWNsc3BlYyhkbGxleHBvcnQpCiAjZWxzZQogI2RlZmluZSBDT01QSUxFUl9FWFBPUlQgX19kZWNs
c3BlYyhkbGxpbXBvcnQpCi0jZW5kaWYgIC8vIGRlZmluZWQoQ09NUElMRVJfSU1QTEVNRU5UQVRJ
T04pCisjZW5kaWYgIC8vIGRlZmluZWQoQU5HTEVfVFJBTlNMQVRPUl9JTVBMRU1FTlRBVElPTikK
IAotI2Vsc2UgIC8vIGRlZmluZWQoV0lOMzIpCisjZWxzZSAgLy8gZGVmaW5lZChfV0lOMzIpIHx8
IGRlZmluZWQoX1dJTjY0KQogI2RlZmluZSBDT01QSUxFUl9FWFBPUlQgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKICNlbmRpZgogCi0jZWxzZSAgLy8gZGVmaW5lZChDT01Q
T05FTlRfQlVJTEQpCisjZWxzZSAgLy8gZGVmaW5lZChDT01QT05FTlRfQlVJTEQpICYmICFkZWZp
bmVkKEFOR0xFX1RSQU5TTEFUT1JfU1RBVElDKQogI2RlZmluZSBDT01QSUxFUl9FWFBPUlQKICNl
bmRpZgogCkBAIC0zNyw3ICszNyw3IEBAIGV4dGVybiAiQyIgewogCiAvLyBWZXJzaW9uIG51bWJl
ciBmb3Igc2hhZGVyIHRyYW5zbGF0aW9uIEFQSS4KIC8vIEl0IGlzIGluY3JlbWVudGVkIGV2ZXJ5
dGltZSB0aGUgQVBJIGNoYW5nZXMuCi0jZGVmaW5lIEFOR0xFX1NIX1ZFUlNJT04gMTEwCisjZGVm
aW5lIEFOR0xFX1NIX1ZFUlNJT04gMTEyCiAKIC8vCiAvLyBUaGUgbmFtZXMgb2YgdGhlIGZvbGxv
d2luZyBlbnVtcyBoYXZlIGJlZW4gZGVyaXZlZCBieSByZXBsYWNpbmcgR0wgcHJlZml4CkBAIC0x
MDksMTIgKzEwOSwyMSBAQCB0eXBlZGVmIGVudW0gewogfSBTaERhdGFUeXBlOwogCiB0eXBlZGVm
IGVudW0geworICBTSF9QUkVDSVNJT05fSElHSFAgICAgID0gMHg1MDAxLAorICBTSF9QUkVDSVNJ
T05fTUVESVVNUCAgID0gMHg1MDAyLAorICBTSF9QUkVDSVNJT05fTE9XUCAgICAgID0gMHg1MDAz
LAorICBTSF9QUkVDSVNJT05fVU5ERUZJTkVEID0gMAorfSBTaFByZWNpc2lvblR5cGU7CisKK3R5
cGVkZWYgZW51bSB7CiAgIFNIX0lORk9fTE9HX0xFTkdUSCAgICAgICAgICAgICA9ICAweDhCODQs
CiAgIFNIX09CSkVDVF9DT0RFX0xFTkdUSCAgICAgICAgICA9ICAweDhCODgsICAvLyBHTF9TSEFE
RVJfU09VUkNFX0xFTkdUSAogICBTSF9BQ1RJVkVfVU5JRk9STVMgICAgICAgICAgICAgPSAgMHg4
Qjg2LAogICBTSF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIICAgPSAgMHg4Qjg3LAogICBTSF9B
Q1RJVkVfQVRUUklCVVRFUyAgICAgICAgICAgPSAgMHg4Qjg5LAogICBTSF9BQ1RJVkVfQVRUUklC
VVRFX01BWF9MRU5HVEggPSAgMHg4QjhBLAorICBTSF9WQVJZSU5HUyAgICAgICAgICAgICAgICAg
ICAgPSAgMHg4QkJCLAorICBTSF9WQVJZSU5HX01BWF9MRU5HVEggICAgICAgICAgPSAgMHg4QkJD
LAogICBTSF9NQVBQRURfTkFNRV9NQVhfTEVOR1RIICAgICAgPSAgMHg2MDAwLAogICBTSF9OQU1F
X01BWF9MRU5HVEggICAgICAgICAgICAgPSAgMHg2MDAxLAogICBTSF9IQVNIRURfTkFNRV9NQVhf
TEVOR1RIICAgICAgPSAgMHg2MDAyLApAQCAtMTI4LDcgKzEzNyw3IEBAIHR5cGVkZWYgZW51bSB7
CiAgIFNIX1ZBTElEQVRFX0xPT1BfSU5ERVhJTkcgID0gMHgwMDAxLAogICBTSF9JTlRFUk1FRElB
VEVfVFJFRSAgICAgICA9IDB4MDAwMiwKICAgU0hfT0JKRUNUX0NPREUgICAgICAgICAgICAgPSAw
eDAwMDQsCi0gIFNIX0FUVFJJQlVURVNfVU5JRk9STVMgICAgID0gMHgwMDA4LAorICBTSF9WQVJJ
QUJMRVMgICAgICAgICAgICAgICA9IDB4MDAwOCwKICAgU0hfTElORV9ESVJFQ1RJVkVTICAgICAg
ICAgPSAweDAwMTAsCiAgIFNIX1NPVVJDRV9QQVRIICAgICAgICAgICAgID0gMHgwMDIwLAogICBT
SF9NQVBfTE9OR19WQVJJQUJMRV9OQU1FUyA9IDB4MDA0MCwKQEAgLTEzNywxNCArMTQ2LDE0IEBA
IHR5cGVkZWYgZW51bSB7CiAgIC8vIFRoaXMgaXMgbmVlZGVkIG9ubHkgYXMgYSB3b3JrYXJvdW5k
IGZvciBjZXJ0YWluIE9wZW5HTCBkcml2ZXIgYnVncy4KICAgU0hfRU1VTEFURV9CVUlMVF9JTl9G
VU5DVElPTlMgPSAweDAxMDAsCiAKLSAgLy8gVGhpcyBpcyBhbiBleHBlcmltZW50YWwgZmxhZyB0
byBlbmZvcmNlIHJlc3RyaWN0aW9ucyB0aGF0IGFpbSB0byBwcmV2ZW50IAorICAvLyBUaGlzIGlz
IGFuIGV4cGVyaW1lbnRhbCBmbGFnIHRvIGVuZm9yY2UgcmVzdHJpY3Rpb25zIHRoYXQgYWltIHRv
IHByZXZlbnQKICAgLy8gdGltaW5nIGF0dGFja3MuCiAgIC8vIEl0IGdlbmVyYXRlcyBjb21waWxh
dGlvbiBlcnJvcnMgZm9yIHNoYWRlcnMgdGhhdCBjb3VsZCBleHBvc2Ugc2Vuc2l0aXZlCiAgIC8v
IHRleHR1cmUgaW5mb3JtYXRpb24gdmlhIHRoZSB0aW1pbmcgY2hhbm5lbC4KICAgLy8gVG8gdXNl
IHRoaXMgZmxhZywgeW91IG11c3QgY29tcGlsZSB0aGUgc2hhZGVyIHVuZGVyIHRoZSBXZWJHTCBz
cGVjCiAgIC8vICh1c2luZyB0aGUgU0hfV0VCR0xfU1BFQyBmbGFnKS4KICAgU0hfVElNSU5HX1JF
U1RSSUNUSU9OUyA9IDB4MDIwMCwKLSAgICAKKwogICAvLyBUaGlzIGZsYWcgcHJpbnRzIHRoZSBk
ZXBlbmRlbmN5IGdyYXBoIHRoYXQgaXMgdXNlZCB0byBlbmZvcmNlIHRpbWluZwogICAvLyByZXN0
cmljdGlvbnMgb24gZnJhZ21lbnQgc2hhZGVycy4KICAgLy8gVGhpcyBmbGFnIG9ubHkgaGFzIGFu
IGVmZmVjdCBpZiBhbGwgb2YgdGhlIGZvbGxvd2luZyBhcmUgdHJ1ZToKQEAgLTE1NCw2ICsxNjMs
MTEgQEAgdHlwZWRlZiBlbnVtIHsKICAgU0hfREVQRU5ERU5DWV9HUkFQSCA9IDB4MDQwMCwKIAog
ICAvLyBFbmZvcmNlIHRoZSBHTFNMIDEuMDE3IEFwcGVuZGl4IEEgc2VjdGlvbiA3IHBhY2tpbmcg
cmVzdHJpY3Rpb25zLgorICAvLyBUaGlzIGZsYWcgb25seSBlbmZvcmNlcyAoYW5kIGNhbiBvbmx5
IGVuZm9yY2UpIHRoZSBwYWNraW5nCisgIC8vIHJlc3RyaWN0aW9ucyBmb3IgdW5pZm9ybSB2YXJp
YWJsZXMgaW4gYm90aCB2ZXJ0ZXggYW5kIGZyYWdtZW50CisgIC8vIHNoYWRlcnMuIFNoQ2hlY2tW
YXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRzKCkgbGV0cyBlbWJlZGRlcnMKKyAgLy8gZW5mb3Jj
ZSB0aGUgcGFja2luZyByZXN0cmljdGlvbnMgZm9yIHZhcnlpbmcgdmFyaWFibGVzIGR1cmluZwor
ICAvLyBwcm9ncmFtIGxpbmsgdGltZS4KICAgU0hfRU5GT1JDRV9QQUNLSU5HX1JFU1RSSUNUSU9O
UyA9IDB4MDgwMCwKIAogICAvLyBUaGlzIGZsYWcgZW5zdXJlcyBhbGwgaW5kaXJlY3QgKGV4cHJl
c3Npb24tYmFzZWQpIGFycmF5IGluZGV4aW5nCkBAIC0xNjksNiArMTgzLDE5IEBAIHR5cGVkZWYg
ZW51bSB7CiAKICAgLy8gVGhpcyBmbGFnIGxpbWl0cyB0aGUgZGVwdGggb2YgdGhlIGNhbGwgc3Rh
Y2suCiAgIFNIX0xJTUlUX0NBTExfU1RBQ0tfREVQVEggPSAweDQwMDAsCisKKyAgLy8gVGhpcyBm
bGFnIGluaXRpYWxpemVzIGdsX1Bvc2l0aW9uIHRvIHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKSBh
dAorICAvLyB0aGUgYmVnaW5uaW5nIG9mIHRoZSB2ZXJ0ZXggc2hhZGVyLCBhbmQgaGFzIG5vIGVm
ZmVjdCBpbiB0aGUKKyAgLy8gZnJhZ21lbnQgc2hhZGVyLiBJdCBpcyBpbnRlbmRlZCBhcyBhIHdv
cmthcm91bmQgZm9yIGRyaXZlcnMgd2hpY2gKKyAgLy8gaW5jb3JyZWN0bHkgZmFpbCB0byBsaW5r
IHByb2dyYW1zIGlmIGdsX1Bvc2l0aW9uIGlzIG5vdCB3cml0dGVuLgorICBTSF9JTklUX0dMX1BP
U0lUSU9OID0gMHg4MDAwLAorCisgIC8vIFRoaXMgZmxhZyByZXBsYWNlcworICAvLyAgICJhICYm
IGIiIHdpdGggImEgPyBiIDogZmFsc2UiLAorICAvLyAgICJhIHx8IGIiIHdpdGggImEgPyB0cnVl
IDogYiIuCisgIC8vIFRoaXMgaXMgdG8gd29yayBhcm91bmQgYSBNYWNPU1ggZHJpdmVyIGJ1ZyB0
aGF0IHxifCBpcyBleGVjdXRlZAorICAvLyBpbmRlcGVuZGVudCBvZiB8YXwncyB2YWx1ZS4KKyAg
U0hfVU5GT0xEX1NIT1JUX0NJUkNVSVQgPSAweDEwMDAwLAogfSBTaENvbXBpbGVPcHRpb25zOwog
CiAvLyBEZWZpbmVzIGFsdGVybmF0ZSBzdHJhdGVnaWVzIGZvciBpbXBsZW1lbnRpbmcgYXJyYXkg
aW5kZXggY2xhbXBpbmcuCkBAIC0yNDcsNyArMjc0LDcgQEAgQ09NUElMRVJfRVhQT1JUIHZvaWQg
U2hJbml0QnVpbHRJblJlc291cgogCiAvLwogLy8gU2hIYW5kbGUgaGVsZCBieSBidXQgb3BhcXVl
IHRvIHRoZSBkcml2ZXIuICBJdCBpcyBhbGxvY2F0ZWQsCi0vLyBtYW5hZ2VkLCBhbmQgZGUtYWxs
b2NhdGVkIGJ5IHRoZSBjb21waWxlci4gSXQncyBjb250ZW50cyAKKy8vIG1hbmFnZWQsIGFuZCBk
ZS1hbGxvY2F0ZWQgYnkgdGhlIGNvbXBpbGVyLiBJdCdzIGNvbnRlbnRzCiAvLyBhcmUgZGVmaW5l
ZCBieSBhbmQgdXNlZCBieSB0aGUgY29tcGlsZXIuCiAvLwogLy8gSWYgaGFuZGxlIGNyZWF0aW9u
IGZhaWxzLCAwIHdpbGwgYmUgcmV0dXJuZWQuCkBAIC0yOTQsOSArMzIxLDggQEAgQ09NUElMRVJf
RVhQT1JUIHZvaWQgU2hEZXN0cnVjdChTaEhhbmRsZQogLy8gICAgICAgICAgICAgICAgICAgICAg
IENhbiBiZSBxdWVyaWVkIGJ5IGNhbGxpbmcgU2hHZXRJbmZvTG9nKCkuCiAvLyBTSF9PQkpFQ1Rf
Q09ERTogVHJhbnNsYXRlcyBpbnRlcm1lZGlhdGUgdHJlZSB0byBnbHNsIG9yIGhsc2wgc2hhZGVy
LgogLy8gICAgICAgICAgICAgICAgIENhbiBiZSBxdWVyaWVkIGJ5IGNhbGxpbmcgU2hHZXRPYmpl
Y3RDb2RlKCkuCi0vLyBTSF9BVFRSSUJVVEVTX1VOSUZPUk1TOiBFeHRyYWN0cyBhdHRyaWJ1dGVz
IGFuZCB1bmlmb3Jtcy4KLS8vICAgICAgICAgICAgICAgICAgICAgICAgIENhbiBiZSBxdWVyaWVk
IGJ5IGNhbGxpbmcgU2hHZXRBY3RpdmVBdHRyaWIoKSBhbmQKLS8vICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoR2V0QWN0aXZlVW5pZm9ybSgpLgorLy8gU0hfVkFSSUFCTEVTOiBFeHRyYWN0cyBh
dHRyaWJ1dGVzLCB1bmlmb3JtcywgYW5kIHZhcnlpbmdzLgorLy8gICAgICAgICAgICAgICBDYW4g
YmUgcXVlcmllZCBieSBjYWxsaW5nIFNoR2V0VmFyaWFibGVJbmZvKCkuCiAvLwogQ09NUElMRVJf
RVhQT1JUIGludCBTaENvbXBpbGUoCiAgICAgY29uc3QgU2hIYW5kbGUgaGFuZGxlLApAQCAtMzIy
LDYgKzM0OCw5IEBAIENPTVBJTEVSX0VYUE9SVCBpbnQgU2hDb21waWxlKAogLy8gU0hfQUNUSVZF
X1VOSUZPUk1fTUFYX0xFTkdUSDogdGhlIGxlbmd0aCBvZiB0aGUgbG9uZ2VzdCBhY3RpdmUgdW5p
Zm9ybQogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgbmFtZSBpbmNs
dWRpbmcgdGhlIG51bGwKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcm1pbmF0
aW9uIGNoYXJhY3Rlci4KKy8vIFNIX1ZBUllJTkdTOiB0aGUgbnVtYmVyIG9mIHZhcnlpbmcgdmFy
aWFibGVzLgorLy8gU0hfVkFSWUlOR19NQVhfTEVOR1RIOiB0aGUgbGVuZ3RoIG9mIHRoZSBsb25n
ZXN0IHZhcnlpbmcgdmFyaWFibGUgbmFtZQorLy8gICAgICAgICAgICAgICAgICAgICAgICBpbmNs
dWRpbmcgdGhlIG51bGwgdGVybWluYXRpb24gY2hhcmFjdGVyLgogLy8gU0hfTUFQUEVEX05BTUVf
TUFYX0xFTkdUSDogdGhlIGxlbmd0aCBvZiB0aGUgbWFwcGVkIHZhcmlhYmxlIG5hbWUgaW5jbHVk
aW5nCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbnVsbCB0ZXJtaW5hdGlvbiBj
aGFyYWN0ZXIuCiAvLyBTSF9OQU1FX01BWF9MRU5HVEg6IHRoZSBtYXggbGVuZ3RoIG9mIGEgdXNl
ci1kZWZpbmVkIG5hbWUgaW5jbHVkaW5nIHRoZQpAQCAtMzU1LDYwICszODQsNDQgQEAgQ09NUElM
RVJfRVhQT1JUIHZvaWQgU2hHZXRJbmZvTG9nKGNvbnN0IAogLy8gICAgICAgICAgU2hHZXRJbmZv
IHdpdGggU0hfT0JKRUNUX0NPREVfTEVOR1RILgogQ09NUElMRVJfRVhQT1JUIHZvaWQgU2hHZXRP
YmplY3RDb2RlKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwgY2hhciogb2JqQ29kZSk7CiAKLS8vIFJl
dHVybnMgaW5mb3JtYXRpb24gYWJvdXQgYW4gYWN0aXZlIGF0dHJpYnV0ZSB2YXJpYWJsZS4KKy8v
IFJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgYSBzaGFkZXIgdmFyaWFibGUuCiAvLyBQYXJhbWV0
ZXJzOgogLy8gaGFuZGxlOiBTcGVjaWZpZXMgdGhlIGNvbXBpbGVyCi0vLyBpbmRleDogU3BlY2lm
aWVzIHRoZSBpbmRleCBvZiB0aGUgYXR0cmlidXRlIHZhcmlhYmxlIHRvIGJlIHF1ZXJpZWQuCisv
LyB2YXJpYWJsZVR5cGU6IFNwZWNpZmllcyB0aGUgdmFyaWFibGUgdHlwZTsgb3B0aW9ucyBpbmNs
dWRlCisvLyAgICAgICAgICAgICAgIFNIX0FDVElWRV9BVFRSSUJVVEVTLCBTSF9BQ1RJVkVfVU5J
Rk9STVMsIFNIX1ZBUllJTkdTLgorLy8gaW5kZXg6IFNwZWNpZmllcyB0aGUgaW5kZXggb2YgdGhl
IHZhcmlhYmxlIHRvIGJlIHF1ZXJpZWQuCiAvLyBsZW5ndGg6IFJldHVybnMgdGhlIG51bWJlciBv
ZiBjaGFyYWN0ZXJzIGFjdHVhbGx5IHdyaXR0ZW4gaW4gdGhlIHN0cmluZwogLy8gICAgICAgICBp
bmRpY2F0ZWQgYnkgbmFtZSAoZXhjbHVkaW5nIHRoZSBudWxsIHRlcm1pbmF0b3IpIGlmIGEgdmFs
dWUgb3RoZXIKIC8vICAgICAgICAgdGhhbiBOVUxMIGlzIHBhc3NlZC4KLS8vIHNpemU6IFJldHVy
bnMgdGhlIHNpemUgb2YgdGhlIGF0dHJpYnV0ZSB2YXJpYWJsZS4KLS8vIHR5cGU6IFJldHVybnMg
dGhlIGRhdGEgdHlwZSBvZiB0aGUgYXR0cmlidXRlIHZhcmlhYmxlLgorLy8gc2l6ZTogUmV0dXJu
cyB0aGUgc2l6ZSBvZiB0aGUgdmFyaWFibGUuCisvLyB0eXBlOiBSZXR1cm5zIHRoZSBkYXRhIHR5
cGUgb2YgdGhlIHZhcmlhYmxlLgorLy8gcHJlY2lzaW9uOiBSZXR1cm5zIHRoZSBwcmVjaXNpb24g
b2YgdGhlIHZhcmlhYmxlLgorLy8gc3RhdGljVXNlOiBSZXR1cm5zIDEgaWYgdGhlIHZhcmlhYmxl
IGlzIGFjY2Vzc2VkIGluIGEgc3RhdGVtZW50IGFmdGVyCisvLyAgICAgICAgICAgIHByZS1wcm9j
ZXNzaW5nLCB3aGV0aGVyIG9yIG5vdCBydW4tdGltZSBmbG93IG9mIGNvbnRyb2wgd2lsbAorLy8g
ICAgICAgICAgICBjYXVzZSB0aGF0IHN0YXRlbWVudCB0byBiZSBleGVjdXRlZC4KKy8vICAgICAg
ICAgICAgUmV0dXJucyAwIG90aGVyd2lzZS4KIC8vIG5hbWU6IFJldHVybnMgYSBudWxsIHRlcm1p
bmF0ZWQgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG5hbWUgb2YgdGhlCi0vLyAgICAgICBhdHRyaWJ1
dGUgdmFyaWFibGUuIEl0IGlzIGFzc3VtZWQgdGhhdCBuYW1lIGhhcyBlbm91Z2ggbWVtb3J5IHRv
Ci0vLyAgICAgICBhY2NvbW9kYXRlIHRoZSBhdHRyaWJ1dGUgdmFyaWFibGUgbmFtZS4gVGhlIHNp
emUgb2YgdGhlIGJ1ZmZlcgotLy8gICAgICAgcmVxdWlyZWQgdG8gc3RvcmUgdGhlIGF0dHJpYnV0
ZSB2YXJpYWJsZSBuYW1lIGNhbiBiZSBvYnRhaW5lZCBieQotLy8gICAgICAgY2FsbGluZyBTaEdl
dEluZm8gd2l0aCBTSF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEguCisvLyAgICAgICB2YXJp
YWJsZS4gSXQgaXMgYXNzdW1lZCB0aGF0IG5hbWUgaGFzIGVub3VnaCBtZW1vcnkgdG8gYWNjb3Jt
b2RhdGUKKy8vICAgICAgIHRoZSB2YXJpYWJsZSBuYW1lLiBUaGUgc2l6ZSBvZiB0aGUgYnVmZmVy
IHJlcXVpcmVkIHRvIHN0b3JlIHRoZQorLy8gICAgICAgdmFyaWFibGUgbmFtZSBjYW4gYmUgb2J0
YWluZWQgYnkgY2FsbGluZyBTaEdldEluZm8gd2l0aAorLy8gICAgICAgU0hfQUNUSVZFX0FUVFJJ
QlVURV9NQVhfTEVOR1RILCBTSF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RILAorLy8gICAgICAg
U0hfVkFSWUlOR19NQVhfTEVOR1RILgogLy8gbWFwcGVkTmFtZTogUmV0dXJucyBhIG51bGwgdGVy
bWluYXRlZCBzdHJpbmcgY29udGFpbmluZyB0aGUgbWFwcGVkIG5hbWUgb2YKLS8vICAgICAgICAg
ICAgIHRoZSBhdHRyaWJ1dGUgdmFyaWFibGUsIEl0IGlzIGFzc3VtZWQgdGhhdCBtYXBwZWROYW1l
IGhhcyBlbm91Z2gKLS8vICAgICAgICAgICAgIG1lbW9yeSAoU0hfTUFQUEVEX05BTUVfTUFYX0xF
TkdUSCksIG9yIE5VTEwgaWYgZG9uJ3QgY2FyZQotLy8gICAgICAgICAgICAgYWJvdXQgdGhlIG1h
cHBlZCBuYW1lLiBJZiB0aGUgbmFtZSBpcyBub3QgbWFwcGVkLCB0aGVuIG5hbWUgYW5kCi0vLyAg
ICAgICAgICAgICBtYXBwZWROYW1lIGFyZSB0aGUgc2FtZS4KLUNPTVBJTEVSX0VYUE9SVCB2b2lk
IFNoR2V0QWN0aXZlQXR0cmliKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwKKy8vICAgICAgICAgICAg
IHRoZSB2YXJpYWJsZSwgSXQgaXMgYXNzdW1lZCB0aGF0IG1hcHBlZE5hbWUgaGFzIGVub3VnaCBt
ZW1vcnkKKy8vICAgICAgICAgICAgIChTSF9NQVBQRURfTkFNRV9NQVhfTEVOR1RIKSwgb3IgTlVM
TCBpZiBkb24ndCBjYXJlIGFib3V0IHRoZQorLy8gICAgICAgICAgICAgbWFwcGVkIG5hbWUuIElm
IHRoZSBuYW1lIGlzIG5vdCBtYXBwZWQsIHRoZW4gbmFtZSBhbmQgbWFwcGVkTmFtZQorLy8gICAg
ICAgICAgICAgYXJlIHRoZSBzYW1lLgorQ09NUElMRVJfRVhQT1JUIHZvaWQgU2hHZXRWYXJpYWJs
ZUluZm8oY29uc3QgU2hIYW5kbGUgaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2hTaGFkZXJJbmZvIHZhcmlhYmxlVHlwZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCogbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50KiBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2hEYXRhVHlwZSogdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNoUHJlY2lzaW9uVHlwZSogcHJlY2lzaW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50KiBzdGF0aWNVc2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyKiBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciogbWFwcGVkTmFtZSk7CiAKLS8vIFJldHVybnMgaW5mb3JtYXRp
b24gYWJvdXQgYW4gYWN0aXZlIHVuaWZvcm0gdmFyaWFibGUuCi0vLyBQYXJhbWV0ZXJzOgotLy8g
aGFuZGxlOiBTcGVjaWZpZXMgdGhlIGNvbXBpbGVyCi0vLyBpbmRleDogU3BlY2lmaWVzIHRoZSBp
bmRleCBvZiB0aGUgdW5pZm9ybSB2YXJpYWJsZSB0byBiZSBxdWVyaWVkLgotLy8gbGVuZ3RoOiBS
ZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBhY3R1YWxseSB3cml0dGVuIGluIHRoZSBz
dHJpbmcKLS8vICAgICAgICAgaW5kaWNhdGVkIGJ5IG5hbWUgKGV4Y2x1ZGluZyB0aGUgbnVsbCB0
ZXJtaW5hdG9yKSBpZiBhIHZhbHVlCi0vLyAgICAgICAgIG90aGVyIHRoYW4gTlVMTCBpcyBwYXNz
ZWQuCi0vLyBzaXplOiBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSB1bmlmb3JtIHZhcmlhYmxlLgot
Ly8gdHlwZTogUmV0dXJucyB0aGUgZGF0YSB0eXBlIG9mIHRoZSB1bmlmb3JtIHZhcmlhYmxlLgot
Ly8gbmFtZTogUmV0dXJucyBhIG51bGwgdGVybWluYXRlZCBzdHJpbmcgY29udGFpbmluZyB0aGUg
bmFtZSBvZiB0aGUKLS8vICAgICAgIHVuaWZvcm0gdmFyaWFibGUuIEl0IGlzIGFzc3VtZWQgdGhh
dCBuYW1lIGhhcyBlbm91Z2ggbWVtb3J5IHRvCi0vLyAgICAgICBhY2NvbW9kYXRlIHRoZSB1bmlm
b3JtIHZhcmlhYmxlIG5hbWUuIFRoZSBzaXplIG9mIHRoZSBidWZmZXIgcmVxdWlyZWQKLS8vICAg
ICAgIHRvIHN0b3JlIHRoZSB1bmlmb3JtIHZhcmlhYmxlIG5hbWUgY2FuIGJlIG9idGFpbmVkIGJ5
IGNhbGxpbmcKLS8vICAgICAgIFNoR2V0SW5mbyB3aXRoIFNIX0FDVElWRV9VTklGT1JNU19NQVhf
TEVOR1RILgotLy8gbWFwcGVkTmFtZTogUmV0dXJucyBhIG51bGwgdGVybWluYXRlZCBzdHJpbmcg
Y29udGFpbmluZyB0aGUgbWFwcGVkIG5hbWUgb2YKLS8vICAgICAgICAgICAgIHRoZSB1bmlmb3Jt
IHZhcmlhYmxlLCBJdCBpcyBhc3N1bWVkIHRoYXQgbWFwcGVkTmFtZSBoYXMgZW5vdWdoCi0vLyAg
ICAgICAgICAgICBtZW1vcnkgKFNIX01BUFBFRF9OQU1FX01BWF9MRU5HVEgpLCBvciBOVUxMIGlm
IGRvbid0IGNhcmUKLS8vICAgICAgICAgICAgIGFib3V0IHRoZSBtYXBwZWQgbmFtZS4gSWYgdGhl
IG5hbWUgaXMgbm90IG1hcHBlZCwgdGhlbiBuYW1lIGFuZAotLy8gICAgICAgICAgICAgbWFwcGVk
TmFtZSBhcmUgdGhlIHNhbWUuCi1DT01QSUxFUl9FWFBPUlQgdm9pZCBTaEdldEFjdGl2ZVVuaWZv
cm0oY29uc3QgU2hIYW5kbGUgaGFuZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QqIGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQqIHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2hEYXRhVHlwZSogdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyKiBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXIqIG1hcHBlZE5hbWUpOwotCiAvLyBSZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IGEgbmFtZSBo
YXNoaW5nIGVudHJ5IGZyb20gdGhlIGxhdGVzdCBjb21waWxlLgogLy8gUGFyYW1ldGVyczoKIC8v
IGhhbmRsZTogU3BlY2lmaWVzIHRoZSBjb21waWxlcgpAQCAtNDM5LDYgKzQ1MiwyNSBAQCBDT01Q
SUxFUl9FWFBPUlQgdm9pZCBTaEdldEluZm9Qb2ludGVyKGNvCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNoU2hhZGVySW5mbyBwbmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdm9pZCoqIHBhcmFtcyk7CiAKK3R5cGVkZWYgc3RydWN0Cit7
CisgICAgU2hEYXRhVHlwZSB0eXBlOworICAgIGludCBzaXplOworfSBTaFZhcmlhYmxlSW5mbzsK
KworLy8gUmV0dXJucyAxIGlmIHRoZSBwYXNzZWQgaW4gdmFyaWFibGVzIHBhY2sgaW4gbWF4VmVj
dG9ycyBmb2xsb3dpbmcKKy8vIHRoZSBwYWNraW5nIHJ1bGVzIGZyb20gdGhlIEdMU0wgMS4wMTcg
c3BlYywgQXBwZW5kaXggQSwgc2VjdGlvbiA3LgorLy8gUmV0dXJucyAwIG90aGVyd2lzZS4gQWxz
byBsb29rIGF0IHRoZSBTSF9FTkZPUkNFX1BBQ0tJTkdfUkVTVFJJQ1RJT05TCisvLyBmbGFnIGFi
b3ZlLgorLy8gUGFyYW1ldGVyczoKKy8vIG1heFZlY3RvcnM6IHRoZSBhdmFpbGFibGUgcm93cyBv
ZiByZWdpc3RlcnMuCisvLyB2YXJJbmZvQXJyYXk6IGFuIGFycmF5IG9mIHZhcmlhYmxlIGluZm8g
KHR5cGVzIGFuZCBzaXplcykuCisvLyB2YXJJbmZvQXJyYXlTaXplOiB0aGUgc2l6ZSBvZiB0aGUg
dmFyaWFibGUgYXJyYXkuCitDT01QSUxFUl9FWFBPUlQgaW50IFNoQ2hlY2tWYXJpYWJsZXNXaXRo
aW5QYWNraW5nTGltaXRzKAorICAgIGludCBtYXhWZWN0b3JzLAorICAgIFNoVmFyaWFibGVJbmZv
KiB2YXJJbmZvQXJyYXksCisgICAgc2l6ZV90IHZhckluZm9BcnJheVNpemUpOworCiAjaWZkZWYg
X19jcGx1c3BsdXMKIH0KICNlbmRpZgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5j
bHVkZS9LSFIva2hycGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9pbmNsdWRlL0tIUi9raHJwbGF0Zm9ybS5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0tIUi9raHJwbGF0Zm9ybS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKIC8qIEtocm9ub3MgcGxhdGZvcm0tc3BlY2lmaWMgdHlw
ZXMgYW5kIGRlZmluaXRpb25zLgogICoKLSAqICRSZXZpc2lvbjogOTM1NiAkIG9uICREYXRlOiAy
MDA5LTEwLTIxIDAyOjUyOjI1IC0wNzAwIChXZWQsIDIxIE9jdCAyMDA5KSAkCisgKiAkUmV2aXNp
b246IDIzMjk4ICQgb24gJERhdGU6IDIwMTMtMDktMzAgMTc6MDc6MTMgLTA3MDAgKE1vbiwgMzAg
U2VwIDIwMTMpICQKICAqCiAgKiBBZG9wdGVycyBtYXkgbW9kaWZ5IHRoaXMgZmlsZSB0byBzdWl0
IHRoZWlyIHBsYXRmb3JtLiBBZG9wdGVycyBhcmUKICAqIGVuY291cmFnZWQgdG8gc3VibWl0IHBs
YXRmb3JtIHNwZWNpZmljIG1vZGlmaWNhdGlvbnMgdG8gdGhlIEtocm9ub3MKQEAgLTIyMSwxMCAr
MjIxLDIzIEBAIHR5cGVkZWYgc2lnbmVkICAgY2hhciAgICAgICAgICBraHJvbm9zX2kKIHR5cGVk
ZWYgdW5zaWduZWQgY2hhciAgICAgICAgICBraHJvbm9zX3VpbnQ4X3Q7CiB0eXBlZGVmIHNpZ25l
ZCAgIHNob3J0IGludCAgICAga2hyb25vc19pbnQxNl90OwogdHlwZWRlZiB1bnNpZ25lZCBzaG9y
dCBpbnQgICAgIGtocm9ub3NfdWludDE2X3Q7CisKKy8qCisgKiBUeXBlcyB0aGF0IGRpZmZlciBi
ZXR3ZWVuIExMUDY0IGFuZCBMUDY0IGFyY2hpdGVjdHVyZXMgLSBpbiBMTFA2NCwgCisgKiBwb2lu
dGVycyBhcmUgNjQgYml0cywgYnV0ICdsb25nJyBpcyBzdGlsbCAzMiBiaXRzLiBXaW42NCBhcHBl
YXJzCisgKiB0byBiZSB0aGUgb25seSBMTFA2NCBhcmNoaXRlY3R1cmUgaW4gY3VycmVudCB1c2Uu
CisgKi8KKyNpZmRlZiBfV0lONjQKK3R5cGVkZWYgc2lnbmVkICAgbG9uZyBsb25nIGludCBraHJv
bm9zX2ludHB0cl90OwordHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IGtocm9ub3NfdWlu
dHB0cl90OwordHlwZWRlZiBzaWduZWQgICBsb25nIGxvbmcgaW50IGtocm9ub3Nfc3NpemVfdDsK
K3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBraHJvbm9zX3VzaXplX3Q7CisjZWxzZQog
dHlwZWRlZiBzaWduZWQgICBsb25nICBpbnQgICAgIGtocm9ub3NfaW50cHRyX3Q7CiB0eXBlZGVm
IHVuc2lnbmVkIGxvbmcgIGludCAgICAga2hyb25vc191aW50cHRyX3Q7CiB0eXBlZGVmIHNpZ25l
ZCAgIGxvbmcgIGludCAgICAga2hyb25vc19zc2l6ZV90OwogdHlwZWRlZiB1bnNpZ25lZCBsb25n
ICBpbnQgICAgIGtocm9ub3NfdXNpemVfdDsKKyNlbmRpZgogCiAjaWYgS0hST05PU19TVVBQT1JU
X0ZMT0FUCiAvKgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL0FOR0xFLnNsbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvQU5HTEUuc2xuCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL0FOR0xFLnNsbgkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACivvu78NCitNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBT
b2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMS4wMA0KKyMgVmlzdWFsIEMrKyBFeHByZXNz
IDIwMTANCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIp
ID0gImxpYkVHTCIsICJsaWJFR0xcbGliRUdMLnZjeHByb2oiLCAie0U3NDZGQ0E5LTY0QzMtNDMz
RS04NUU4LTlBNUE2N0FCN0VENn0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04
QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibGliR0xFU3YyIiwgImxpYkdMRVN2Mlxs
aWJHTEVTdjIudmN4cHJvaiIsICJ7QjU4NzFBN0EtOTY4Qy00MkUzLUEzM0ItOTgxRTZGNDQ4RTc4
fSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBD
OTFCQzk0Mn0iKSA9ICJ0cmFuc2xhdG9yIiwgImNvbXBpbGVyXHRyYW5zbGF0b3IudmN4cHJvaiIs
ICJ7NUIzQTZEQjgtMUU3RS00MEQ3LTkyQjktREE4QUFFNjE5RkFEfSINCitFbmRQcm9qZWN0DQor
UHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJwcmVw
cm9jZXNzb3IiLCAiY29tcGlsZXJccHJlcHJvY2Vzc29yXHByZXByb2Nlc3Nvci52Y3hwcm9qIiwg
IntGQkUzMkRGMy0wRkIwLTRGMkYtQTQyNC0yQzIxQkQ3QkMzMjV9Ig0KK0VuZFByb2plY3QNCitH
bG9iYWwNCisJR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0g
cHJlU29sdXRpb24NCisJCURlYnVnfFdpbjMyID0gRGVidWd8V2luMzINCisJCURlYnVnfHg2NCA9
IERlYnVnfHg2NA0KKwkJUmVsZWFzZXxXaW4zMiA9IFJlbGVhc2V8V2luMzINCisJCVJlbGVhc2V8
eDY0ID0gUmVsZWFzZXx4NjQNCisJRW5kR2xvYmFsU2VjdGlvbg0KKwlHbG9iYWxTZWN0aW9uKFBy
b2plY3RDb25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHBvc3RTb2x1dGlvbg0KKwkJe0U3NDZGQ0E5
LTY0QzMtNDMzRS04NUU4LTlBNUE2N0FCN0VENn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVi
dWd8V2luMzINCisJCXtFNzQ2RkNBOS02NEMzLTQzM0UtODVFOC05QTVBNjdBQjdFRDZ9LkRlYnVn
fFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0U3NDZGQ0E5LTY0QzMtNDMzRS04NUU4
LTlBNUE2N0FCN0VENn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0U3NDZG
Q0E5LTY0QzMtNDMzRS04NUU4LTlBNUE2N0FCN0VENn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1
Z3x4NjQNCisJCXtFNzQ2RkNBOS02NEMzLTQzM0UtODVFOC05QTVBNjdBQjdFRDZ9LlJlbGVhc2V8
V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0U3NDZGQ0E5LTY0QzMtNDMzRS04
NUU4LTlBNUE2N0FCN0VENn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0K
KwkJe0U3NDZGQ0E5LTY0QzMtNDMzRS04NUU4LTlBNUE2N0FCN0VENn0uUmVsZWFzZXx4NjQuQWN0
aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtFNzQ2RkNBOS02NEMzLTQzM0UtODVFOC05QTVBNjdB
QjdFRDZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0I1ODcxQTdBLTk2
OEMtNDJFMy1BMzNCLTk4MUU2RjQ0OEU3OH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8
V2luMzINCisJCXtCNTg3MUE3QS05NjhDLTQyRTMtQTMzQi05ODFFNkY0NDhFNzh9LkRlYnVnfFdp
bjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0I1ODcxQTdBLTk2OEMtNDJFMy1BMzNCLTk4
MUU2RjQ0OEU3OH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0I1ODcxQTdB
LTk2OEMtNDJFMy1BMzNCLTk4MUU2RjQ0OEU3OH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4
NjQNCisJCXtCNTg3MUE3QS05NjhDLTQyRTMtQTMzQi05ODFFNkY0NDhFNzh9LlJlbGVhc2V8V2lu
MzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0I1ODcxQTdBLTk2OEMtNDJFMy1BMzNC
LTk4MUU2RjQ0OEU3OH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJ
e0I1ODcxQTdBLTk2OEMtNDJFMy1BMzNCLTk4MUU2RjQ0OEU3OH0uUmVsZWFzZXx4NjQuQWN0aXZl
Q2ZnID0gUmVsZWFzZXx4NjQNCisJCXtCNTg3MUE3QS05NjhDLTQyRTMtQTMzQi05ODFFNkY0NDhF
Nzh9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezVCM0E2REI4LTFFN0Ut
NDBENy05MkI5LURBOEFBRTYxOUZBRH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2lu
MzINCisJCXs1QjNBNkRCOC0xRTdFLTQwRDctOTJCOS1EQThBQUU2MTlGQUR9LkRlYnVnfFdpbjMy
LkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezVCM0E2REI4LTFFN0UtNDBENy05MkI5LURBOEFB
RTYxOUZBRH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezVCM0E2REI4LTFF
N0UtNDBENy05MkI5LURBOEFBRTYxOUZBRH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQN
CisJCXs1QjNBNkRCOC0xRTdFLTQwRDctOTJCOS1EQThBQUU2MTlGQUR9LlJlbGVhc2V8V2luMzIu
QWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezVCM0E2REI4LTFFN0UtNDBENy05MkI5LURB
OEFBRTYxOUZBRH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezVC
M0E2REI4LTFFN0UtNDBENy05MkI5LURBOEFBRTYxOUZBRH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2Zn
ID0gUmVsZWFzZXx4NjQNCisJCXs1QjNBNkRCOC0xRTdFLTQwRDctOTJCOS1EQThBQUU2MTlGQUR9
LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0ZCRTMyREYzLTBGQjAtNEYy
Ri1BNDI0LTJDMjFCRDdCQzMyNX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIN
CisJCXtGQkUzMkRGMy0wRkIwLTRGMkYtQTQyNC0yQzIxQkQ3QkMzMjV9LkRlYnVnfFdpbjMyLkJ1
aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0ZCRTMyREYzLTBGQjAtNEYyRi1BNDI0LTJDMjFCRDdC
QzMyNX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0ZCRTMyREYzLTBGQjAt
NEYyRi1BNDI0LTJDMjFCRDdCQzMyNX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJ
CXtGQkUzMkRGMy0wRkIwLTRGMkYtQTQyNC0yQzIxQkQ3QkMzMjV9LlJlbGVhc2V8V2luMzIuQWN0
aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0ZCRTMyREYzLTBGQjAtNEYyRi1BNDI0LTJDMjFC
RDdCQzMyNX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0ZCRTMy
REYzLTBGQjAtNEYyRi1BNDI0LTJDMjFCRDdCQzMyNX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0g
UmVsZWFzZXx4NjQNCisJCXtGQkUzMkRGMy0wRkIwLTRGMkYtQTQyNC0yQzIxQkQ3QkMzMjV9LlJl
bGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwlFbmRHbG9iYWxTZWN0aW9uDQorCUds
b2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uDQorCQlIaWRlU29s
dXRpb25Ob2RlID0gRkFMU0UNCisJRW5kR2xvYmFsU2VjdGlvbg0KK0VuZEdsb2JhbA0KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9idWlsZF9hbmdsZS5neXBpCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9idWlsZF9hbmdsZS5neXBpCShyZXZpc2lv
biAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYnVpbGRfYW5nbGUuZ3lw
aQkod29ya2luZyBjb3B5KQpAQCAtNSw2OCArNSwxMSBAQAogewogICAndmFyaWFibGVzJzogewog
ICAgICdhbmdsZV9jb2RlJzogMSwKLSAgfSwKLSAgJ3RhcmdldF9kZWZhdWx0cyc6IHsKLSAgICAn
ZGVmaW5lcyc6IFsKLSAgICAgICdBTkdMRV9ESVNBQkxFX1RSQUNFJywKLSAgICAgICdBTkdMRV9D
T01QSUxFX09QVElNSVpBVElPTl9MRVZFTD1EM0RDT01QSUxFX09QVElNSVpBVElPTl9MRVZFTDEn
LAotICAgICAgJ0FOR0xFX1BSRUxPQURFRF9EM0RDT01QSUxFUl9NT0RVTEVfTkFNRVM9eyBURVhU
KCJkM2Rjb21waWxlcl80Ni5kbGwiKSwgVEVYVCgiZDNkY29tcGlsZXJfNDMuZGxsIikgfScsCi0g
ICAgXSwKLSAgfSwKLSAgJ3RhcmdldHMnOiBbCi0gICAgewotICAgICAgJ3RhcmdldF9uYW1lJzog
J3ByZXByb2Nlc3NvcicsCi0gICAgICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScsCi0gICAgICAn
aW5jbHVkZV9kaXJzJzogWwotICAgICAgXSwKLSAgICAgICdzb3VyY2VzJzogWwotICAgICAgICAn
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpYWdub3N0aWNzQmFzZS5jcHAnLAotICAgICAgICAnY29t
cGlsZXIvcHJlcHJvY2Vzc29yL0RpYWdub3N0aWNzQmFzZS5oJywKLSAgICAgICAgJ2NvbXBpbGVy
L3ByZXByb2Nlc3Nvci9EaXJlY3RpdmVIYW5kbGVyQmFzZS5jcHAnLAotICAgICAgICAnY29tcGls
ZXIvcHJlcHJvY2Vzc29yL0RpcmVjdGl2ZUhhbmRsZXJCYXNlLmgnLAotICAgICAgICAnY29tcGls
ZXIvcHJlcHJvY2Vzc29yL0RpcmVjdGl2ZVBhcnNlci5jcHAnLAotICAgICAgICAnY29tcGlsZXIv
cHJlcHJvY2Vzc29yL0RpcmVjdGl2ZVBhcnNlci5oJywKLSAgICAgICAgJ2NvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLmNwcCcsCi0gICAgICAgICdjb21waWxlci9wcmVwcm9j
ZXNzb3IvRXhwcmVzc2lvblBhcnNlci5oJywKLSAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9JbnB1dC5jcHAnLAotICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL0lucHV0LmgnLAot
ICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL2xlbmd0aF9saW1pdHMuaCcsCi0gICAgICAg
ICdjb21waWxlci9wcmVwcm9jZXNzb3IvTGV4ZXIuY3BwJywKLSAgICAgICAgJ2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9MZXhlci5oJywKLSAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9NYWNy
by5jcHAnLAotICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvLmgnLAotICAgICAg
ICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvRXhwYW5kZXIuY3BwJywKLSAgICAgICAgJ2Nv
bXBpbGVyL3ByZXByb2Nlc3Nvci9NYWNyb0V4cGFuZGVyLmgnLAotICAgICAgICAnY29tcGlsZXIv
cHJlcHJvY2Vzc29yL251bWVyaWNfbGV4LmgnLAotICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vz
c29yL3BwX3V0aWxzLmgnLAotICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL1ByZXByb2Nl
c3Nvci5jcHAnLAotICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL1ByZXByb2Nlc3Nvci5o
JywKLSAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Tb3VyY2VMb2NhdGlvbi5oJywKLSAg
ICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5jcHAnLAotICAgICAgICAnY29tcGls
ZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmgnLAotICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29y
L1Rva2VuaXplci5jcHAnLAotICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXpl
ci5oJywKLSAgICAgIF0sCi0gICAgICAjIFRPRE8oanNjaHVoKTogaHR0cDovL2NyYnVnLmNvbS8x
NjcxODcKLSAgICAgICdtc3ZzX2Rpc2FibGVkX3dhcm5pbmdzJzogWwotICAgICAgICA0MjY3LAot
ICAgICAgXSwgICAgICAKLSAgICB9LAotICAgIHsKLSAgICAgICd0YXJnZXRfbmFtZSc6ICd0cmFu
c2xhdG9yX2NvbW1vbicsCi0gICAgICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScsCi0gICAgICAn
ZGVwZW5kZW5jaWVzJzogWydwcmVwcm9jZXNzb3InXSwKLSAgICAgICdpbmNsdWRlX2RpcnMnOiBb
Ci0gICAgICAgICcuJywKLSAgICAgICAgJy4uL2luY2x1ZGUnLAotICAgICAgXSwKLSAgICAgICdk
ZWZpbmVzJzogWwotICAgICAgICAnQ09NUElMRVJfSU1QTEVNRU5UQVRJT04nLAotICAgICAgXSwK
LSAgICAgICdzb3VyY2VzJzogWworICAgICd0cmFuc2xhdG9yX3NvdXJjZXMnOiBbCiAgICAgICAg
ICdjb21waWxlci9CYXNlVHlwZXMuaCcsCiAgICAgICAgICdjb21waWxlci9CdWlsdEluRnVuY3Rp
b25FbXVsYXRvci5jcHAnLAogICAgICAgICAnY29tcGlsZXIvQnVpbHRJbkZ1bmN0aW9uRW11bGF0
b3IuaCcsCisgICAgICAgICdjb21waWxlci9Db2RlR2VuLmNwcCcsCiAgICAgICAgICdjb21waWxl
ci9Db21tb24uaCcsCiAgICAgICAgICdjb21waWxlci9Db21waWxlci5jcHAnLAogICAgICAgICAn
Y29tcGlsZXIvQ29uc3RhbnRVbmlvbi5oJywKQEAgLTc0LDYgKzE3LDggQEAKICAgICAgICAgJ2Nv
bXBpbGVyL2RlYnVnLmgnLAogICAgICAgICAnY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmNwcCcs
CiAgICAgICAgICdjb21waWxlci9EZXRlY3RDYWxsRGVwdGguaCcsCisgICAgICAgICdjb21waWxl
ci9EZXRlY3REaXNjb250aW51aXR5LmNwcCcsCisgICAgICAgICdjb21waWxlci9EZXRlY3REaXNj
b250aW51aXR5LmgnLAogICAgICAgICAnY29tcGlsZXIvRGlhZ25vc3RpY3MuaCcsCiAgICAgICAg
ICdjb21waWxlci9EaWFnbm9zdGljcy5jcHAnLAogICAgICAgICAnY29tcGlsZXIvRGlyZWN0aXZl
SGFuZGxlci5oJywKQEAgLTkzLDYgKzM4LDggQEAKICAgICAgICAgJ2NvbXBpbGVyL0luaXRpYWxp
emVEbGwuY3BwJywKICAgICAgICAgJ2NvbXBpbGVyL0luaXRpYWxpemVEbGwuaCcsCiAgICAgICAg
ICdjb21waWxlci9Jbml0aWFsaXplR2xvYmFscy5oJywKKyAgICAgICAgJ2NvbXBpbGVyL0luaXRp
YWxpemVHTFBvc2l0aW9uLmNwcCcsCisgICAgICAgICdjb21waWxlci9Jbml0aWFsaXplR0xQb3Np
dGlvbi5oJywKICAgICAgICAgJ2NvbXBpbGVyL0luaXRpYWxpemVQYXJzZUNvbnRleHQuY3BwJywK
ICAgICAgICAgJ2NvbXBpbGVyL0luaXRpYWxpemVQYXJzZUNvbnRleHQuaCcsCiAgICAgICAgICdj
b21waWxlci9JbnRlcm1lZGlhdGUuY3BwJywKQEAgLTEwNCw5ICs1MSwxNyBAQAogICAgICAgICAn
Y29tcGlsZXIvTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuaCcsCiAgICAgICAgICdjb21waWxlci9NTWFw
LmgnLAogICAgICAgICAnY29tcGlsZXIvb3NpbmNsdWRlLmgnLAorICAgICAgICAnY29tcGlsZXIv
T3V0cHV0RVNTTC5jcHAnLAorICAgICAgICAnY29tcGlsZXIvT3V0cHV0RVNTTC5oJywKKyAgICAg
ICAgJ2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmNwcCcsCisgICAgICAgICdjb21waWxlci9PdXRw
dXRHTFNMQmFzZS5oJywKKyAgICAgICAgJ2NvbXBpbGVyL091dHB1dEdMU0wuY3BwJywKKyAgICAg
ICAgJ2NvbXBpbGVyL091dHB1dEdMU0wuaCcsCisgICAgICAgICdjb21waWxlci9PdXRwdXRITFNM
LmNwcCcsCisgICAgICAgICdjb21waWxlci9PdXRwdXRITFNMLmgnLAogICAgICAgICAnY29tcGls
ZXIvcGFyc2VDb25zdC5jcHAnLAotICAgICAgICAnY29tcGlsZXIvUGFyc2VIZWxwZXIuY3BwJywK
LSAgICAgICAgJ2NvbXBpbGVyL1BhcnNlSGVscGVyLmgnLAorICAgICAgICAnY29tcGlsZXIvUGFy
c2VDb250ZXh0LmNwcCcsCisgICAgICAgICdjb21waWxlci9QYXJzZUNvbnRleHQuaCcsCiAgICAg
ICAgICdjb21waWxlci9Qb29sQWxsb2MuY3BwJywKICAgICAgICAgJ2NvbXBpbGVyL1Bvb2xBbGxv
Yy5oJywKICAgICAgICAgJ2NvbXBpbGVyL1F1YWxpZmllckFsaXZlLmNwcCcsCkBAIC0xMTQsMTAg
KzY5LDIzIEBACiAgICAgICAgICdjb21waWxlci9SZW1vdmVUcmVlLmNwcCcsCiAgICAgICAgICdj
b21waWxlci9SZW1vdmVUcmVlLmgnLAogICAgICAgICAnY29tcGlsZXIvUmVuYW1lRnVuY3Rpb24u
aCcsCisgICAgICAgICdjb21waWxlci9TZWFyY2hTeW1ib2wuY3BwJywKKyAgICAgICAgJ2NvbXBp
bGVyL1NlYXJjaFN5bWJvbC5oJywKKyAgICAgICAgJ2NvbXBpbGVyL1NoYWRlckxhbmcuY3BwJywK
ICAgICAgICAgJ2NvbXBpbGVyL1NoSGFuZGxlLmgnLAogICAgICAgICAnY29tcGlsZXIvU3ltYm9s
VGFibGUuY3BwJywKICAgICAgICAgJ2NvbXBpbGVyL1N5bWJvbFRhYmxlLmgnLAorICAgICAgICAn
Y29tcGlsZXIvVHJhbnNsYXRvckVTU0wuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL1RyYW5zbGF0
b3JFU1NMLmgnLAorICAgICAgICAnY29tcGlsZXIvVHJhbnNsYXRvckdMU0wuY3BwJywKKyAgICAg
ICAgJ2NvbXBpbGVyL1RyYW5zbGF0b3JHTFNMLmgnLAorICAgICAgICAnY29tcGlsZXIvVHJhbnNs
YXRvckhMU0wuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL1RyYW5zbGF0b3JITFNMLmgnLAogICAg
ICAgICAnY29tcGlsZXIvVHlwZXMuaCcsCisgICAgICAgICdjb21waWxlci9VbmZvbGRTaG9ydENp
cmN1aXRBU1QuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL1VuZm9sZFNob3J0Q2lyY3VpdEFTVC5o
JywKKyAgICAgICAgJ2NvbXBpbGVyL1VuZm9sZFNob3J0Q2lyY3VpdC5jcHAnLAorICAgICAgICAn
Y29tcGlsZXIvVW5mb2xkU2hvcnRDaXJjdWl0LmgnLAogICAgICAgICAnY29tcGlsZXIvVW5pZm9y
bS5jcHAnLAogICAgICAgICAnY29tcGlsZXIvVW5pZm9ybS5oJywKICAgICAgICAgJ2NvbXBpbGVy
L3V0aWwuY3BwJywKQEAgLTEyOCw2ICs5Niw4IEBACiAgICAgICAgICdjb21waWxlci9WYXJpYWJs
ZUluZm8uaCcsCiAgICAgICAgICdjb21waWxlci9WYXJpYWJsZVBhY2tlci5jcHAnLAogICAgICAg
ICAnY29tcGlsZXIvVmFyaWFibGVQYWNrZXIuaCcsCisgICAgICAgICdjb21waWxlci9WZXJzaW9u
R0xTTC5jcHAnLAorICAgICAgICAnY29tcGlsZXIvVmVyc2lvbkdMU0wuaCcsCiAgICAgICAgICMg
RGVwZW5kZW5jeSBncmFwaAogICAgICAgICAnY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdy
YXBoLmNwcCcsCiAgICAgICAgICdjb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGguaCcs
CkBAIC0xNDQsMTAgKzExNCw2OSBAQAogICAgICAgICAndGhpcmRfcGFydHkvY29tcGlsZXIvQXJy
YXlCb3VuZHNDbGFtcGVyLmNwcCcsCiAgICAgICAgICd0aGlyZF9wYXJ0eS9jb21waWxlci9BcnJh
eUJvdW5kc0NsYW1wZXIuaCcsCiAgICAgICBdLAorICB9LAorICAndGFyZ2V0X2RlZmF1bHRzJzog
eworICAgICdkZWZpbmVzJzogWworICAgICAgJ0FOR0xFX0RJU0FCTEVfVFJBQ0UnLAorICAgICAg
J0FOR0xFX0NPTVBJTEVfT1BUSU1JWkFUSU9OX0xFVkVMPUQzRENPTVBJTEVfT1BUSU1JWkFUSU9O
X0xFVkVMMScsCisgICAgICAnQU5HTEVfUFJFTE9BREVEX0QzRENPTVBJTEVSX01PRFVMRV9OQU1F
Uz17IFRFWFQoImQzZGNvbXBpbGVyXzQ2LmRsbCIpLCBURVhUKCJkM2Rjb21waWxlcl80My5kbGwi
KSB9JywKKyAgICBdLAorICB9LAorICAndGFyZ2V0cyc6IFsKKyAgICB7CisgICAgICAndGFyZ2V0
X25hbWUnOiAncHJlcHJvY2Vzc29yJywKKyAgICAgICd0eXBlJzogJ3N0YXRpY19saWJyYXJ5JywK
KyAgICAgICdpbmNsdWRlX2RpcnMnOiBbCisgICAgICBdLAorICAgICAgJ3NvdXJjZXMnOiBbCisg
ICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvRGlhZ25vc3RpY3NCYXNlLmNwcCcsCisgICAg
ICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvRGlhZ25vc3RpY3NCYXNlLmgnLAorICAgICAgICAn
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpcmVjdGl2ZUhhbmRsZXJCYXNlLmNwcCcsCisgICAgICAg
ICdjb21waWxlci9wcmVwcm9jZXNzb3IvRGlyZWN0aXZlSGFuZGxlckJhc2UuaCcsCisgICAgICAg
ICdjb21waWxlci9wcmVwcm9jZXNzb3IvRGlyZWN0aXZlUGFyc2VyLmNwcCcsCisgICAgICAgICdj
b21waWxlci9wcmVwcm9jZXNzb3IvRGlyZWN0aXZlUGFyc2VyLmgnLAorICAgICAgICAnY29tcGls
ZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25QYXJzZXIuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVy
L3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLmgnLAorICAgICAgICAnY29tcGlsZXIvcHJl
cHJvY2Vzc29yL0lucHV0LmNwcCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvSW5w
dXQuaCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvbGVuZ3RoX2xpbWl0cy5oJywK
KyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9MZXhlci5jcHAnLAorICAgICAgICAnY29t
cGlsZXIvcHJlcHJvY2Vzc29yL0xleGVyLmgnLAorICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vz
c29yL01hY3JvLmNwcCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvTWFjcm8uaCcs
CisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvTWFjcm9FeHBhbmRlci5jcHAnLAorICAg
ICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvRXhwYW5kZXIuaCcsCisgICAgICAgICdj
b21waWxlci9wcmVwcm9jZXNzb3IvbnVtZXJpY19sZXguaCcsCisgICAgICAgICdjb21waWxlci9w
cmVwcm9jZXNzb3IvcHBfdXRpbHMuaCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3Iv
UHJlcHJvY2Vzc29yLmNwcCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvUHJlcHJv
Y2Vzc29yLmgnLAorICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL1NvdXJjZUxvY2F0aW9u
LmgnLAorICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmNwcCcsCisgICAgICAg
ICdjb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uaCcsCisgICAgICAgICdjb21waWxlci9wcmVw
cm9jZXNzb3IvVG9rZW5pemVyLmNwcCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3Iv
VG9rZW5pemVyLmgnLAorICAgICAgXSwKKyAgICAgICMgVE9ETyhqc2NodWgpOiBodHRwOi8vY3Ji
dWcuY29tLzE2NzE4NworICAgICAgJ21zdnNfZGlzYWJsZWRfd2FybmluZ3MnOiBbCisgICAgICAg
IDQyNjcsCisgICAgICBdLAorICAgIH0sCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ3Ry
YW5zbGF0b3InLAorICAgICAgJ3R5cGUnOiAnPChjb21wb25lbnQpJywKKyAgICAgICdkZXBlbmRl
bmNpZXMnOiBbJ3ByZXByb2Nlc3NvciddLAorICAgICAgJ2luY2x1ZGVfZGlycyc6IFsKKyAgICAg
ICAgJy4nLAorICAgICAgICAnLi4vaW5jbHVkZScsCisgICAgICBdLAorICAgICAgJ2RlZmluZXMn
OiBbCisgICAgICAgICdBTkdMRV9UUkFOU0xBVE9SX0lNUExFTUVOVEFUSU9OJywKKyAgICAgIF0s
CisgICAgICAnc291cmNlcyc6IFsnPEAodHJhbnNsYXRvcl9zb3VyY2VzKSddLAorICAgICAgIyBU
T0RPKGpzY2h1aCk6IGh0dHA6Ly9jcmJ1Zy5jb20vMTY3MTg3IHNpemVfdCAtPiBpbnQKKyAgICAg
ICdtc3ZzX2Rpc2FibGVkX3dhcm5pbmdzJzogWyA0MjY3IF0sCiAgICAgICAnY29uZGl0aW9ucyc6
IFsKICAgICAgICAgWydPUz09IndpbiInLCB7Ci0gICAgICAgICAgIyBUT0RPKGpzY2h1aCk6IGh0
dHA6Ly9jcmJ1Zy5jb20vMTY3MTg3IHNpemVfdCAtPiBpbnQKLSAgICAgICAgICAnbXN2c19kaXNh
YmxlZF93YXJuaW5ncyc6IFsgNDI2NyBdLAogICAgICAgICAgICdzb3VyY2VzJzogWydjb21waWxl
ci9vc3NvdXJjZV93aW4uY3BwJ10sCiAgICAgICAgIH0sIHsgIyBlbHNlOiBwb3NpeAogICAgICAg
ICAgICdzb3VyY2VzJzogWydjb21waWxlci9vc3NvdXJjZV9wb3NpeC5jcHAnXSwKQEAgLTE1NSw3
MSArMTg0LDQwIEBACiAgICAgICBdLAogICAgIH0sCiAgICAgewotICAgICAgJ3RhcmdldF9uYW1l
JzogJ3RyYW5zbGF0b3JfZ2xzbCcsCi0gICAgICAndHlwZSc6ICc8KGNvbXBvbmVudCknLAotICAg
ICAgJ2RlcGVuZGVuY2llcyc6IFsndHJhbnNsYXRvcl9jb21tb24nXSwKKyAgICAgICd0YXJnZXRf
bmFtZSc6ICd0cmFuc2xhdG9yX3N0YXRpYycsCisgICAgICAndHlwZSc6ICdzdGF0aWNfbGlicmFy
eScsCisgICAgICAnZGVwZW5kZW5jaWVzJzogWydwcmVwcm9jZXNzb3InXSwKICAgICAgICdpbmNs
dWRlX2RpcnMnOiBbCiAgICAgICAgICcuJywKICAgICAgICAgJy4uL2luY2x1ZGUnLAogICAgICAg
XSwKKyAgICAgICdkaXJlY3RfZGVwZW5kZW50X3NldHRpbmdzJzogeworICAgICAgICAnZGVmaW5l
cyc6IFsKKyAgICAgICAgICAnQU5HTEVfVFJBTlNMQVRPUl9TVEFUSUMnLAorICAgICAgICBdLAor
ICAgICAgfSwKICAgICAgICdkZWZpbmVzJzogWwotICAgICAgICAnQ09NUElMRVJfSU1QTEVNRU5U
QVRJT04nLAotICAgICAgXSwKLSAgICAgICdzb3VyY2VzJzogWwotICAgICAgICAnY29tcGlsZXIv
Q29kZUdlbkdMU0wuY3BwJywKLSAgICAgICAgJ2NvbXBpbGVyL091dHB1dEVTU0wuY3BwJywKLSAg
ICAgICAgJ2NvbXBpbGVyL091dHB1dEVTU0wuaCcsICAgICAgICAKLSAgICAgICAgJ2NvbXBpbGVy
L091dHB1dEdMU0xCYXNlLmNwcCcsCi0gICAgICAgICdjb21waWxlci9PdXRwdXRHTFNMQmFzZS5o
JywKLSAgICAgICAgJ2NvbXBpbGVyL091dHB1dEdMU0wuY3BwJywKLSAgICAgICAgJ2NvbXBpbGVy
L091dHB1dEdMU0wuaCcsCi0gICAgICAgICdjb21waWxlci9TaGFkZXJMYW5nLmNwcCcsCi0gICAg
ICAgICdjb21waWxlci9UcmFuc2xhdG9yRVNTTC5jcHAnLAotICAgICAgICAnY29tcGlsZXIvVHJh
bnNsYXRvckVTU0wuaCcsCi0gICAgICAgICdjb21waWxlci9UcmFuc2xhdG9yR0xTTC5jcHAnLAot
ICAgICAgICAnY29tcGlsZXIvVHJhbnNsYXRvckdMU0wuaCcsCi0gICAgICAgICdjb21waWxlci9W
ZXJzaW9uR0xTTC5jcHAnLAotICAgICAgICAnY29tcGlsZXIvVmVyc2lvbkdMU0wuaCcsCisgICAg
ICAgICdBTkdMRV9UUkFOU0xBVE9SX1NUQVRJQycsCiAgICAgICBdLAorICAgICAgJ3NvdXJjZXMn
OiBbJzxAKHRyYW5zbGF0b3Jfc291cmNlcyknXSwKICAgICAgICMgVE9ETyhqc2NodWgpOiBodHRw
Oi8vY3JidWcuY29tLzE2NzE4NyBzaXplX3QgLT4gaW50CiAgICAgICAnbXN2c19kaXNhYmxlZF93
YXJuaW5ncyc6IFsgNDI2NyBdLAorICAgICAgJ2NvbmRpdGlvbnMnOiBbCisgICAgICAgIFsnT1M9
PSJ3aW4iJywgeworICAgICAgICAgICdzb3VyY2VzJzogWydjb21waWxlci9vc3NvdXJjZV93aW4u
Y3BwJ10sCisgICAgICAgIH0sIHsgIyBlbHNlOiBwb3NpeAorICAgICAgICAgICdzb3VyY2VzJzog
Wydjb21waWxlci9vc3NvdXJjZV9wb3NpeC5jcHAnXSwKKyAgICAgICAgfV0sCisgICAgICBdLAog
ICAgIH0sCiAgIF0sCiAgICdjb25kaXRpb25zJzogWwogICAgIFsnT1M9PSJ3aW4iJywgewogICAg
ICAgJ3RhcmdldHMnOiBbCiAgICAgICAgIHsKLSAgICAgICAgICAndGFyZ2V0X25hbWUnOiAndHJh
bnNsYXRvcl9obHNsJywKLSAgICAgICAgICAndHlwZSc6ICc8KGNvbXBvbmVudCknLAotICAgICAg
ICAgICdkZXBlbmRlbmNpZXMnOiBbJ3RyYW5zbGF0b3JfY29tbW9uJ10sCi0gICAgICAgICAgJ2lu
Y2x1ZGVfZGlycyc6IFsKLSAgICAgICAgICAgICcuJywKLSAgICAgICAgICAgICcuLi9pbmNsdWRl
JywKLSAgICAgICAgICBdLAotICAgICAgICAgICdkZWZpbmVzJzogWwotICAgICAgICAgICAgJ0NP
TVBJTEVSX0lNUExFTUVOVEFUSU9OJywKLSAgICAgICAgICBdLAotICAgICAgICAgICdzb3VyY2Vz
JzogWwotICAgICAgICAgICAgJ2NvbXBpbGVyL1NoYWRlckxhbmcuY3BwJywKLSAgICAgICAgICAg
ICdjb21waWxlci9EZXRlY3REaXNjb250aW51aXR5LmNwcCcsCi0gICAgICAgICAgICAnY29tcGls
ZXIvRGV0ZWN0RGlzY29udGludWl0eS5oJywKLSAgICAgICAgICAgICdjb21waWxlci9Db2RlR2Vu
SExTTC5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL091dHB1dEhMU0wuY3BwJywKLSAgICAg
ICAgICAgICdjb21waWxlci9PdXRwdXRITFNMLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL1Ry
YW5zbGF0b3JITFNMLmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvVHJhbnNsYXRvckhMU0wu
aCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvVW5mb2xkU2hvcnRDaXJjdWl0LmNwcCcsCi0gICAg
ICAgICAgICAnY29tcGlsZXIvVW5mb2xkU2hvcnRDaXJjdWl0LmgnLAotICAgICAgICAgICAgJ2Nv
bXBpbGVyL1NlYXJjaFN5bWJvbC5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL1NlYXJjaFN5
bWJvbC5oJywKLSAgICAgICAgICBdLAotICAgICAgICAgICMgVE9ETyhqc2NodWgpOiBodHRwOi8v
Y3JidWcuY29tLzE2NzE4NyBzaXplX3QgLT4gaW50Ci0gICAgICAgICAgJ21zdnNfZGlzYWJsZWRf
d2FybmluZ3MnOiBbIDQyNjcgXSwKLSAgICAgICAgfSwKLSAgICAgICAgewogICAgICAgICAgICd0
YXJnZXRfbmFtZSc6ICdsaWJHTEVTdjInLAogICAgICAgICAgICd0eXBlJzogJ3NoYXJlZF9saWJy
YXJ5JywKLSAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogWyd0cmFuc2xhdG9yX2hsc2wnXSwKKyAg
ICAgICAgICAnZGVwZW5kZW5jaWVzJzogWyd0cmFuc2xhdG9yJ10sCiAgICAgICAgICAgJ2luY2x1
ZGVfZGlycyc6IFsKICAgICAgICAgICAgICcuJywKICAgICAgICAgICAgICcuLi9pbmNsdWRlJywK
QEAgLTIyOCw5ICsyMjYsMTIgQEAKICAgICAgICAgICAnc291cmNlcyc6IFsKICAgICAgICAgICAg
ICd0aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL011cm11ckhhc2gzLmgnLAogICAgICAgICAgICAgJ3Ro
aXJkX3BhcnR5L211cm11cmhhc2gvTXVybXVySGFzaDMuY3BwJywKKyAgICAgICAgICAgICd0aGly
ZF9wYXJ0eS90cmFjZV9ldmVudC90cmFjZV9ldmVudC5oJywKICAgICAgICAgICAgICdjb21tb24v
YW5nbGV1dGlscy5oJywKICAgICAgICAgICAgICdjb21tb24vZGVidWcuY3BwJywKICAgICAgICAg
ICAgICdjb21tb24vZGVidWcuaCcsCisgICAgICAgICAgICAnY29tbW9uL2V2ZW50X3RyYWNlci5j
cHAnLAorICAgICAgICAgICAgJ2NvbW1vbi9ldmVudF90cmFjZXIuaCcsCiAgICAgICAgICAgICAn
Y29tbW9uL1JlZkNvdW50T2JqZWN0LmNwcCcsCiAgICAgICAgICAgICAnY29tbW9uL1JlZkNvdW50
T2JqZWN0LmgnLAogICAgICAgICAgICAgJ2NvbW1vbi92ZXJzaW9uLmgnLApAQCAtMjkzLDYgKzI5
NCw4IEBACiAgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyMTEuaCcs
CiAgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4RGF0YU1hbmFnZXIuY3BwJywK
ICAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhEYXRhTWFuYWdlci5oJywKKyAg
ICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhSYW5nZUNhY2hlLmNwcCcsCisgICAg
ICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4UmFuZ2VDYWNoZS5oJywKICAgICAgICAg
ICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvSW5wdXRMYXlvdXRDYWNoZS5jcHAnLAogICAgICAgICAg
ICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9JbnB1dExheW91dENhY2hlLmgnLAogICAgICAgICAgICAg
J2xpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeUltcGwuaCcsCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbW1vbi9kZWJ1Zy5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmgJKHdvcmtpbmcgY29weSkKQEAgLTk5
LDggKzk5LDEwIEBAIG5hbWVzcGFjZSBnbAogICAgICNkZWZpbmUgVU5SRUFDSEFCTEUoKSBFUlIo
Ilx0ISBVbnJlYWNoYWJsZSByZWFjaGVkOiAlcyglZClcbiIsIF9fRlVOQ1RJT05fXywgX19MSU5F
X18pCiAjZW5kaWYKIAotLy8gQSBtYWNybyB0aGF0IGRldGVybWluZXMgd2hldGhlciBhbiBvYmpl
Y3QgaGFzIGEgZ2l2ZW4gcnVudGltZSB0eXBlLgotI2lmICFkZWZpbmVkKE5ERUJVRykgJiYgKCFk
ZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9DUFBSVFRJKSkKKy8vIEEgbWFjcm8gdGhhdCBk
ZXRlcm1pbmVzIHdoZXRoZXIgYW4gb2JqZWN0IGhhcyBhIGdpdmVuIHJ1bnRpbWUgdHlwZS4gTVNW
QyB1c2VzIF9DUFBSVFRJLgorLy8gR0NDIHVzZXMgX19HWFhfUlRUSSwgYnV0IHRoZSBtYWNybyB3
YXMgaW50cm9kdWNlZCBpbiB2ZXJzaW9uIDQuMywgc28gd2UgYXNzdW1lIHRoYXQgYWxsIG9sZGVy
CisvLyB2ZXJzaW9ucyBzdXBwb3J0IFJUVEkuCisjaWYgIWRlZmluZWQoTkRFQlVHKSAmJiAoIWRl
ZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX0NQUFJUVEkpKSAmJiAoIWRlZmluZWQoX19HTlVD
X18pIHx8IF9fR05VQ19fIDwgNCB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8
IDMpIHx8IGRlZmluZWQoX19HWFhfUlRUSSkpCiAjZGVmaW5lIEhBU19EWU5BTUlDX1RZUEUodHlw
ZSwgb2JqKSAoZHluYW1pY19jYXN0PHR5cGUgPihvYmopICE9IE5VTEwpCiAjZWxzZQogI2RlZmlu
ZSBIQVNfRFlOQU1JQ19UWVBFKHR5cGUsIG9iaikgdHJ1ZQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbW1vbi9ldmVudF90cmFjZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZXZlbnRfdHJhY2VyLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZXZlbnRfdHJhY2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvLyBDb3B5cmlnaHQgKGMpIDIwMTIg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKyNpbmNsdWRlICJjb21t
b24vZXZlbnRfdHJhY2VyLmgiCisKK25hbWVzcGFjZSBnbAoreworCitHZXRDYXRlZ29yeUVuYWJs
ZWRGbGFnRnVuYyBnX2dldENhdGVnb3J5RW5hYmxlZEZsYWc7CitBZGRUcmFjZUV2ZW50RnVuYyBn
X2FkZFRyYWNlRXZlbnQ7CisKK30gIC8vIG5hbWVzcGFjZSBnbAorCitleHRlcm4gIkMiIHsKKwor
dm9pZCBfX3N0ZGNhbGwgU2V0VHJhY2VGdW5jdGlvblBvaW50ZXJzKEdldENhdGVnb3J5RW5hYmxl
ZEZsYWdGdW5jIGdldENhdGVnb3J5RW5hYmxlZEZsYWcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQWRkVHJhY2VFdmVudEZ1bmMgYWRkVHJhY2VFdmVudCkKK3sKKyAg
ICBnbDo6Z19nZXRDYXRlZ29yeUVuYWJsZWRGbGFnID0gZ2V0Q2F0ZWdvcnlFbmFibGVkRmxhZzsK
KyAgICBnbDo6Z19hZGRUcmFjZUV2ZW50ID0gYWRkVHJhY2VFdmVudDsKK30KKworfSAgLy8gZXh0
ZXJuICJDIgorCituYW1lc3BhY2UgZ2wKK3sKKworY29uc3QgdW5zaWduZWQgY2hhciogVHJhY2VH
ZXRUcmFjZUNhdGVnb3J5RW5hYmxlZEZsYWcoY29uc3QgY2hhciogbmFtZSkKK3sKKyAgICBpZiAo
Z19nZXRDYXRlZ29yeUVuYWJsZWRGbGFnKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdfZ2V0Q2F0
ZWdvcnlFbmFibGVkRmxhZyhuYW1lKTsKKyAgICB9CisgICAgc3RhdGljIHVuc2lnbmVkIGNoYXIg
ZGlzYWJsZWQgPSAwOworICAgIHJldHVybiAmZGlzYWJsZWQ7Cit9CisKK3ZvaWQgVHJhY2VBZGRU
cmFjZUV2ZW50KGNoYXIgcGhhc2UsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5R3JvdXBF
bmFibGVkLCBjb25zdCBjaGFyKiBuYW1lLCB1bnNpZ25lZCBsb25nIGxvbmcgaWQsCisgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgbnVtQXJncywgY29uc3QgY2hhcioqIGFyZ05hbWVzLCBjb25z
dCB1bnNpZ25lZCBjaGFyKiBhcmdUeXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHVuc2lnbmVkIGxvbmcgbG9uZyogYXJnVmFsdWVzLCB1bnNpZ25lZCBjaGFyIGZsYWdzKQorewor
ICAgIGlmIChnX2FkZFRyYWNlRXZlbnQpCisgICAgeworICAgICAgICBnX2FkZFRyYWNlRXZlbnQo
cGhhc2UsIGNhdGVnb3J5R3JvdXBFbmFibGVkLCBuYW1lLCBpZCwgbnVtQXJncywgYXJnTmFtZXMs
IGFyZ1R5cGVzLCBhcmdWYWx1ZXMsIGZsYWdzKTsKKyAgICB9Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSBnbApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9ldmVudF90cmFj
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2V2
ZW50X3RyYWNlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbW1vbi9ldmVudF90cmFjZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMzIEBACisv
LyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisKKyNpZm5kZWYgQ09NTU9OX0VWRU5UX1RSQUNFUl9IXworI2RlZmluZSBDT01NT05fRVZF
TlRfVFJBQ0VSX0hfCisKK2V4dGVybiAiQyIgeworCit0eXBlZGVmIGNvbnN0IHVuc2lnbmVkIGNo
YXIqICgqR2V0Q2F0ZWdvcnlFbmFibGVkRmxhZ0Z1bmMpKGNvbnN0IGNoYXIqIG5hbWUpOwordHlw
ZWRlZiB2b2lkICgqQWRkVHJhY2VFdmVudEZ1bmMpKGNoYXIgcGhhc2UsIGNvbnN0IHVuc2lnbmVk
IGNoYXIqIGNhdGVnb3J5R3JvdXBFbmFibGVkLCBjb25zdCBjaGFyKiBuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwgaW50IG51bUFy
Z3MsIGNvbnN0IGNoYXIqKiBhcmdOYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBhcmdUeXBlcywgY29uc3QgdW5zaWduZWQgbG9uZyBs
b25nKiBhcmdWYWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgY2hhciBmbGFncyk7CisKKy8vIGV4dGVybiAiQyIgc28gdGhhdCBpdCBoYXMgYSByZWFzb25h
YmxlIG5hbWUgZm9yIEdldFByb2NBZGRyZXNzLgordm9pZCBfX3N0ZGNhbGwgU2V0VHJhY2VGdW5j
dGlvblBvaW50ZXJzKEdldENhdGVnb3J5RW5hYmxlZEZsYWdGdW5jIGdldF9jYXRlZ29yeV9lbmFi
bGVkX2ZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkVHJh
Y2VFdmVudEZ1bmMgYWRkX3RyYWNlX2V2ZW50X2Z1bmMpOworCit9CisKK25hbWVzcGFjZSBnbAor
eworCitjb25zdCB1bnNpZ25lZCBjaGFyKiBUcmFjZUdldFRyYWNlQ2F0ZWdvcnlFbmFibGVkRmxh
Zyhjb25zdCBjaGFyKiBuYW1lKTsKKwordm9pZCBUcmFjZUFkZFRyYWNlRXZlbnQoY2hhciBwaGFz
ZSwgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlHcm91cEVuYWJsZWQsIGNvbnN0IGNoYXIq
IG5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBudW1BcmdzLCBjb25zdCBjaGFyKiogYXJnTmFtZXMsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGFy
Z1R5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBsb25n
KiBhcmdWYWx1ZXMsIHVuc2lnbmVkIGNoYXIgZmxhZ3MpOworCit9CisKKyNlbmRpZiAgLy8gQ09N
TU9OX0VWRU5UX1RSQUNFUl9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bW1vbi92ZXJzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbW1vbi92ZXJzaW9uLmgJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21tb24vdmVyc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBA
QAogI2RlZmluZSBNQUpPUl9WRVJTSU9OIDEKICNkZWZpbmUgTUlOT1JfVkVSU0lPTiAyCiAjZGVm
aW5lIEJVSUxEX1ZFUlNJT04gMAotI2RlZmluZSBCVUlMRF9SRVZJU0lPTiAyNDI2CisjZGVmaW5l
IEJVSUxEX1JFVklTSU9OIDI0NTAKIAogI2RlZmluZSBTVFJJTkdJRlkoeCkgI3gKICNkZWZpbmUg
TUFDUk9fU1RSSU5HSUZZKHgpIFNUUklOR0lGWSh4KQpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL0NvZGVHZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db2RlR2VuLmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db2RlR2VuLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDM4IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAiY29t
cGlsZXIvVHJhbnNsYXRvckVTU0wuaCIKKyNpbmNsdWRlICJjb21waWxlci9UcmFuc2xhdG9yR0xT
TC5oIgorI2luY2x1ZGUgImNvbXBpbGVyL1RyYW5zbGF0b3JITFNMLmgiCisKKy8vCisvLyBUaGlz
IGZ1bmN0aW9uIG11c3QgYmUgcHJvdmlkZWQgdG8gY3JlYXRlIHRoZSBhY3R1YWwKKy8vIGNvbXBp
bGUgb2JqZWN0IHVzZWQgYnkgaGlnaGVyIGxldmVsIGNvZGUuICBJdCByZXR1cm5zCisvLyBhIHN1
YmNsYXNzIG9mIFRDb21waWxlci4KKy8vCitUQ29tcGlsZXIqIENvbnN0cnVjdENvbXBpbGVyKAor
ICAgIFNoU2hhZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywgU2hTaGFkZXJPdXRwdXQg
b3V0cHV0KQoreworICAgIHN3aXRjaCAob3V0cHV0KSB7CisgICAgICBjYXNlIFNIX0VTU0xfT1VU
UFVUOgorICAgICAgICByZXR1cm4gbmV3IFRyYW5zbGF0b3JFU1NMKHR5cGUsIHNwZWMpOworICAg
ICAgY2FzZSBTSF9HTFNMX09VVFBVVDoKKyAgICAgICAgcmV0dXJuIG5ldyBUcmFuc2xhdG9yR0xT
TCh0eXBlLCBzcGVjKTsKKyAgICAgIGNhc2UgU0hfSExTTDlfT1VUUFVUOgorICAgICAgY2FzZSBT
SF9ITFNMMTFfT1VUUFVUOgorICAgICAgICByZXR1cm4gbmV3IFRyYW5zbGF0b3JITFNMKHR5cGUs
IHNwZWMsIG91dHB1dCk7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gTlVMTDsKKyAg
ICB9Cit9CisKKy8vCisvLyBEZWxldGUgdGhlIGNvbXBpbGVyIG1hZGUgYnkgQ29uc3RydWN0Q29t
cGlsZXIKKy8vCit2b2lkIERlbGV0ZUNvbXBpbGVyKFRDb21waWxlciogY29tcGlsZXIpCit7Cisg
ICAgZGVsZXRlIGNvbXBpbGVyOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL0NvZGVHZW5HTFNMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29kZUdlbkdMU0wuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29kZUdlbkdMU0wuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDM0ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDIt
MjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNs
dWRlICJjb21waWxlci9UcmFuc2xhdG9yR0xTTC5oIgotI2luY2x1ZGUgImNvbXBpbGVyL1RyYW5z
bGF0b3JFU1NMLmgiCi0KLS8vCi0vLyBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgcHJvdmlkZWQgdG8g
Y3JlYXRlIHRoZSBhY3R1YWwKLS8vIGNvbXBpbGUgb2JqZWN0IHVzZWQgYnkgaGlnaGVyIGxldmVs
IGNvZGUuICBJdCByZXR1cm5zCi0vLyBhIHN1YmNsYXNzIG9mIFRDb21waWxlci4KLS8vCi1UQ29t
cGlsZXIqIENvbnN0cnVjdENvbXBpbGVyKAotICAgIFNoU2hhZGVyVHlwZSB0eXBlLCBTaFNoYWRl
clNwZWMgc3BlYywgU2hTaGFkZXJPdXRwdXQgb3V0cHV0KQotewotICAgIHN3aXRjaCAob3V0cHV0
KSB7Ci0gICAgICBjYXNlIFNIX0dMU0xfT1VUUFVUOgotICAgICAgICByZXR1cm4gbmV3IFRyYW5z
bGF0b3JHTFNMKHR5cGUsIHNwZWMpOwotICAgICAgY2FzZSBTSF9FU1NMX09VVFBVVDoKLSAgICAg
ICAgcmV0dXJuIG5ldyBUcmFuc2xhdG9yRVNTTCh0eXBlLCBzcGVjKTsKLSAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLX0KLQotLy8KLS8vIERlbGV0ZSB0aGUgY29t
cGlsZXIgbWFkZSBieSBDb25zdHJ1Y3RDb21waWxlcgotLy8KLXZvaWQgRGVsZXRlQ29tcGlsZXIo
VENvbXBpbGVyKiBjb21waWxlcikKLXsKLSAgICBkZWxldGUgY29tcGlsZXI7Ci19CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29kZUdlbkhMU0wuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db2RlR2VuSExT
TC5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9Db2RlR2VuSExTTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMzMgKzAsMCBAQAot
Ly8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgImNvbXBpbGVyL1RyYW5zbGF0b3JITFNMLmgi
Ci0KLS8vCi0vLyBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgcHJvdmlkZWQgdG8gY3JlYXRlIHRoZSBh
Y3R1YWwKLS8vIGNvbXBpbGUgb2JqZWN0IHVzZWQgYnkgaGlnaGVyIGxldmVsIGNvZGUuICBJdCBy
ZXR1cm5zCi0vLyBhIHN1YmNsYXNzIG9mIFRDb21waWxlci4KLS8vCi1UQ29tcGlsZXIqIENvbnN0
cnVjdENvbXBpbGVyKAotICAgIFNoU2hhZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywg
U2hTaGFkZXJPdXRwdXQgb3V0cHV0KQotewotICBzd2l0Y2ggKG91dHB1dCkKLSAgewotICAgIGNh
c2UgU0hfSExTTDlfT1VUUFVUOgotICAgIGNhc2UgU0hfSExTTDExX09VVFBVVDoKLSAgICAgIHJl
dHVybiBuZXcgVHJhbnNsYXRvckhMU0wodHlwZSwgc3BlYywgb3V0cHV0KTsKLSAgICBkZWZhdWx0
OgotICAgICAgcmV0dXJuIE5VTEw7Ci0gIH0KLX0KLQotLy8KLS8vIERlbGV0ZSB0aGUgY29tcGls
ZXIgbWFkZSBieSBDb25zdHJ1Y3RDb21waWxlcgotLy8KLXZvaWQgRGVsZXRlQ29tcGlsZXIoVENv
bXBpbGVyKiBjb21waWxlcikKLXsKLSAgICBkZWxldGUgY29tcGlsZXI7Ci19CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29tbW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbW1vbi5oCShyZXZpc2lvbiAx
NTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29tbW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI0LDE0ICsyNCwxNCBAQCBzdHJ1Y3QgVFNvdXJjZUxvYyB7CiAv
LwogLy8gUHV0IFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUgaW4gYmFzZSBjbGFzc2VzIHRvIG1h
a2UgdGhlbSB1c2UgdGhpcyBzY2hlbWUuCiAvLwotI2RlZmluZSBQT09MX0FMTE9DQVRPUl9ORVdf
REVMRVRFKEEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkKiBv
cGVyYXRvciBuZXcoc2l6ZV90IHMpIHsgcmV0dXJuIChBKS5hbGxvY2F0ZShzKTsgfSAgICAgICAg
ICBcCi0gICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCAqX1doZXJlKSB7IHJldHVy
biAoX1doZXJlKTsJfSAgICAgXAotICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqKSB7IH0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIG9wZXJhdG9yIGRl
bGV0ZSh2b2lkICosIHZvaWQgKikgeyB9ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
dm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHMpIHsgcmV0dXJuIChBKS5hbGxvY2F0ZShzKTsg
fSAgICAgICAgXAotICAgIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCAqX1doZXJl
KSB7IHJldHVybiAoX1doZXJlKTsJfSBcCi0gICAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lk
KikgeyB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBQT09MX0FM
TE9DQVRPUl9ORVdfREVMRVRFKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHMpIHsgcmV0dXJu
IEdldEdsb2JhbFBvb2xBbGxvY2F0b3IoKS0+YWxsb2NhdGUocyk7IH0gICBcCisgICAgdm9pZCog
b3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCAqX1doZXJlKSB7IHJldHVybiAoX1doZXJlKTsgfSAg
ICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqKSB7IH0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB2
b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkICosIHZvaWQgKikgeyB9ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90
IHMpIHsgcmV0dXJuIEdldEdsb2JhbFBvb2xBbGxvY2F0b3IoKS0+YWxsb2NhdGUocyk7IH0gXAor
ICAgIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCAqX1doZXJlKSB7IHJldHVybiAo
X1doZXJlKTsgfSAgICAgICAgICAgICAgICAgIFwKKyAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtd
KHZvaWQqKSB7IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkICosIHZvaWQgKikgeyB9CiAKIC8v
CkBAIC00Miw3ICs0Miw3IEBAIHR5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmcgPGNoYXIsIHN0ZDo6
Y2gKIHR5cGVkZWYgc3RkOjpiYXNpY19vc3RyaW5nc3RyZWFtPGNoYXIsIHN0ZDo6Y2hhcl90cmFp
dHM8Y2hhcj4sIFRTdHJpbmdBbGxvY2F0b3I+IFRTdHJpbmdTdHJlYW07CiBpbmxpbmUgVFN0cmlu
ZyogTmV3UG9vbFRTdHJpbmcoY29uc3QgY2hhciogcykKIHsKLQl2b2lkKiBtZW1vcnkgPSBHbG9i
YWxQb29sQWxsb2NhdG9yLmFsbG9jYXRlKHNpemVvZihUU3RyaW5nKSk7CisJdm9pZCogbWVtb3J5
ID0gR2V0R2xvYmFsUG9vbEFsbG9jYXRvcigpLT5hbGxvY2F0ZShzaXplb2YoVFN0cmluZykpOwog
CXJldHVybiBuZXcobWVtb3J5KSBUU3RyaW5nKHMpOwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db21waWxlci5jcHAJKHJldmlzaW9uIDE1
OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db21waWxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTgsMTEgKzgsMTMgQEAKICNpbmNsdWRlICJjb21waWxlci9E
ZXRlY3RDYWxsRGVwdGguaCIKICNpbmNsdWRlICJjb21waWxlci9Gb3JMb29wVW5yb2xsLmgiCiAj
aW5jbHVkZSAiY29tcGlsZXIvSW5pdGlhbGl6ZS5oIgorI2luY2x1ZGUgImNvbXBpbGVyL0luaXRp
YWxpemVHTFBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvSW5pdGlhbGl6ZVBhcnNlQ29u
dGV4dC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL01hcExvbmdWYXJpYWJsZU5hbWVzLmgiCi0jaW5j
bHVkZSAiY29tcGlsZXIvUGFyc2VIZWxwZXIuaCIKKyNpbmNsdWRlICJjb21waWxlci9QYXJzZUNv
bnRleHQuaCIKICNpbmNsdWRlICJjb21waWxlci9SZW5hbWVGdW5jdGlvbi5oIgogI2luY2x1ZGUg
ImNvbXBpbGVyL1NoSGFuZGxlLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvVW5mb2xkU2hvcnRDaXJj
dWl0QVNULmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvVmFsaWRhdGVMaW1pdGF0aW9ucy5oIgogI2lu
Y2x1ZGUgImNvbXBpbGVyL1ZhcmlhYmxlUGFja2VyLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvZGVw
Z3JhcGgvRGVwZW5kZW5jeUdyYXBoLmgiCkBAIC0yOSwxOSArMzEsMzIgQEAgYm9vbCBpc1dlYkdM
QmFzZWRTcGVjKFNoU2hhZGVyU3BlYyBzcGVjKQogbmFtZXNwYWNlIHsKIGNsYXNzIFRTY29wZWRQ
b29sQWxsb2NhdG9yIHsKIHB1YmxpYzoKLSAgICBUU2NvcGVkUG9vbEFsbG9jYXRvcihUUG9vbEFs
bG9jYXRvciogYWxsb2NhdG9yLCBib29sIHB1c2hQb3ApCi0gICAgICAgIDogbUFsbG9jYXRvcihh
bGxvY2F0b3IpLCBtUHVzaFBvcEFsbG9jYXRvcihwdXNoUG9wKSB7Ci0gICAgICAgIGlmIChtUHVz
aFBvcEFsbG9jYXRvcikgbUFsbG9jYXRvci0+cHVzaCgpOworICAgIFRTY29wZWRQb29sQWxsb2Nh
dG9yKFRQb29sQWxsb2NhdG9yKiBhbGxvY2F0b3IpIDogbUFsbG9jYXRvcihhbGxvY2F0b3IpIHsK
KyAgICAgICAgbUFsbG9jYXRvci0+cHVzaCgpOwogICAgICAgICBTZXRHbG9iYWxQb29sQWxsb2Nh
dG9yKG1BbGxvY2F0b3IpOwogICAgIH0KICAgICB+VFNjb3BlZFBvb2xBbGxvY2F0b3IoKSB7CiAg
ICAgICAgIFNldEdsb2JhbFBvb2xBbGxvY2F0b3IoTlVMTCk7Ci0gICAgICAgIGlmIChtUHVzaFBv
cEFsbG9jYXRvcikgbUFsbG9jYXRvci0+cG9wKCk7CisgICAgICAgIG1BbGxvY2F0b3ItPnBvcCgp
OwogICAgIH0KIAogcHJpdmF0ZToKICAgICBUUG9vbEFsbG9jYXRvciogbUFsbG9jYXRvcjsKLSAg
ICBib29sIG1QdXNoUG9wQWxsb2NhdG9yOworfTsKKworY2xhc3MgVFNjb3BlZFN5bWJvbFRhYmxl
TGV2ZWwgeworcHVibGljOgorICAgIFRTY29wZWRTeW1ib2xUYWJsZUxldmVsKFRTeW1ib2xUYWJs
ZSogdGFibGUpIDogbVRhYmxlKHRhYmxlKSB7CisgICAgICAgIEFTU0VSVChtVGFibGUtPmF0QnVp
bHRJbkxldmVsKCkpOworICAgICAgICBtVGFibGUtPnB1c2goKTsKKyAgICB9CisgICAgflRTY29w
ZWRTeW1ib2xUYWJsZUxldmVsKCkgeworICAgICAgICB3aGlsZSAoIW1UYWJsZS0+YXRCdWlsdElu
TGV2ZWwoKSkKKyAgICAgICAgICAgIG1UYWJsZS0+cG9wKCk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIFRTeW1ib2xUYWJsZSogbVRhYmxlOwogfTsKIH0gIC8vIG5hbWVzcGFjZQogCkBAIC04MSw3
ICs5Niw4IEBAIGJvb2wgVENvbXBpbGVyOjpJbml0KGNvbnN0IFNoQnVpbHRJblJlc28KICAgICAg
ICAgcmVzb3VyY2VzLk1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnM7CiAgICAgbWF4RXhwcmVzc2lv
bkNvbXBsZXhpdHkgPSByZXNvdXJjZXMuTWF4RXhwcmVzc2lvbkNvbXBsZXhpdHk7CiAgICAgbWF4
Q2FsbFN0YWNrRGVwdGggPSByZXNvdXJjZXMuTWF4Q2FsbFN0YWNrRGVwdGg7Ci0gICAgVFNjb3Bl
ZFBvb2xBbGxvY2F0b3Igc2NvcGVkQWxsb2MoJmFsbG9jYXRvciwgZmFsc2UpOworCisgICAgU2V0
R2xvYmFsUG9vbEFsbG9jYXRvcigmYWxsb2NhdG9yKTsKIAogICAgIC8vIEdlbmVyYXRlIGJ1aWx0
LWluIHN5bWJvbCB0YWJsZS4KICAgICBpZiAoIUluaXRCdWlsdEluU3ltYm9sVGFibGUocmVzb3Vy
Y2VzKSkKQEAgLTEwMSw3ICsxMTcsNyBAQCBib29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBj
aGFyKiBjb25zCiAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtU3RyaW5ncywKICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBjb21waWxlT3B0aW9ucykKIHsKLSAgICBUU2NvcGVk
UG9vbEFsbG9jYXRvciBzY29wZWRBbGxvYygmYWxsb2NhdG9yLCB0cnVlKTsKKyAgICBUU2NvcGVk
UG9vbEFsbG9jYXRvciBzY29wZWRBbGxvYygmYWxsb2NhdG9yKTsKICAgICBjbGVhclJlc3VsdHMo
KTsKIAogICAgIGlmIChudW1TdHJpbmdzID09IDApCkBAIC0xMjUsMTUgKzE0MSwxMSBAQCBib29s
IFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2hhZGVyVHlwZSwgc2hhZGVyU3BlYywgY29tcGlsZU9wdGlvbnMsIHRydWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlUGF0aCwgaW5mb1NpbmspOwog
ICAgIHBhcnNlQ29udGV4dC5mcmFnbWVudFByZWNpc2lvbkhpZ2ggPSBmcmFnbWVudFByZWNpc2lv
bkhpZ2g7Ci0gICAgR2xvYmFsUGFyc2VDb250ZXh0ID0gJnBhcnNlQ29udGV4dDsKKyAgICBTZXRH
bG9iYWxQYXJzZUNvbnRleHQoJnBhcnNlQ29udGV4dCk7CiAKICAgICAvLyBXZSBwcmVzZXJ2ZSBz
eW1ib2xzIGF0IHRoZSBidWlsdC1pbiBsZXZlbCBmcm9tIGNvbXBpbGUtdG8tY29tcGlsZS4KICAg
ICAvLyBTdGFydCBwdXNoaW5nIHRoZSB1c2VyLWRlZmluZWQgc3ltYm9scyBhdCBnbG9iYWwgbGV2
ZWwuCi0gICAgc3ltYm9sVGFibGUucHVzaCgpOwotICAgIGlmICghc3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpKSB7Ci0gICAgICAgIGluZm9TaW5rLmluZm8ucHJlZml4KEVQcmVmaXhJbnRlcm5h
bEVycm9yKTsKLSAgICAgICAgaW5mb1NpbmsuaW5mbyA8PCAiV3Jvbmcgc3ltYm9sIHRhYmxlIGxl
dmVsIjsKLSAgICB9CisgICAgVFNjb3BlZFN5bWJvbFRhYmxlTGV2ZWwgc2NvcGVkU3ltYm9sTGV2
ZWwoJnN5bWJvbFRhYmxlKTsKIAogICAgIC8vIFBhcnNlIHNoYWRlci4KICAgICBib29sIHN1Y2Nl
c3MgPQpAQCAtMTc4LDggKzE5MCwxOSBAQCBib29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBj
aGFyKiBjb25zCiAgICAgICAgIGlmIChzdWNjZXNzICYmIChjb21waWxlT3B0aW9ucyAmIFNIX01B
UF9MT05HX1ZBUklBQkxFX05BTUVTKSAmJiBoYXNoRnVuY3Rpb24gPT0gTlVMTCkKICAgICAgICAg
ICAgIG1hcExvbmdWYXJpYWJsZU5hbWVzKHJvb3QpOwogCi0gICAgICAgIGlmIChzdWNjZXNzICYm
IChjb21waWxlT3B0aW9ucyAmIFNIX0FUVFJJQlVURVNfVU5JRk9STVMpKSB7Ci0gICAgICAgICAg
ICBjb2xsZWN0QXR0cmlic1VuaWZvcm1zKHJvb3QpOworICAgICAgICBpZiAoc3VjY2VzcyAmJiBz
aGFkZXJUeXBlID09IFNIX1ZFUlRFWF9TSEFERVIgJiYgKGNvbXBpbGVPcHRpb25zICYgU0hfSU5J
VF9HTF9QT1NJVElPTikpIHsKKyAgICAgICAgICAgIEluaXRpYWxpemVHTFBvc2l0aW9uIGluaXRH
TFBvc2l0aW9uOworICAgICAgICAgICAgcm9vdC0+dHJhdmVyc2UoJmluaXRHTFBvc2l0aW9uKTsK
KyAgICAgICAgfQorCisJaWYgKHN1Y2Nlc3MgJiYgKGNvbXBpbGVPcHRpb25zICYgU0hfVU5GT0xE
X1NIT1JUX0NJUkNVSVQpKSB7CisgICAgICAgICAgICBVbmZvbGRTaG9ydENpcmN1aXRBU1QgdW5m
b2xkU2hvcnRDaXJjdWl0OworICAgICAgICAgICAgcm9vdC0+dHJhdmVyc2UoJnVuZm9sZFNob3J0
Q2lyY3VpdCk7CisgICAgICAgICAgICB1bmZvbGRTaG9ydENpcmN1aXQudXBkYXRlVHJlZSgpOwor
CX0KKworICAgICAgICBpZiAoc3VjY2VzcyAmJiAoY29tcGlsZU9wdGlvbnMgJiBTSF9WQVJJQUJM
RVMpKSB7CisgICAgICAgICAgICBjb2xsZWN0VmFyaWFibGVzKHJvb3QpOwogICAgICAgICAgICAg
aWYgKGNvbXBpbGVPcHRpb25zICYgU0hfRU5GT1JDRV9QQUNLSU5HX1JFU1RSSUNUSU9OUykgewog
ICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBlbmZvcmNlUGFja2luZ1Jlc3RyaWN0aW9ucygpOwog
ICAgICAgICAgICAgICAgIGlmICghc3VjY2VzcykgewpAQCAtMTk4LDEwICsyMjEsNiBAQCBib29s
IFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zCiAKICAgICAvLyBDbGVhbnVwIG1l
bW9yeS4KICAgICBpbnRlcm1lZGlhdGUucmVtb3ZlKHBhcnNlQ29udGV4dC50cmVlUm9vdCk7Ci0g
ICAgLy8gRW5zdXJlIHN5bWJvbCB0YWJsZSBpcyByZXR1cm5lZCB0byB0aGUgYnVpbHQtaW4gbGV2
ZWwsCi0gICAgLy8gdGhyb3dpbmcgYXdheSBhbGwgYnV0IHRoZSBidWlsdC1pbnMuCi0gICAgd2hp
bGUgKCFzeW1ib2xUYWJsZS5hdEJ1aWx0SW5MZXZlbCgpKQotICAgICAgICBzeW1ib2xUYWJsZS5w
b3AoKTsKIAogICAgIHJldHVybiBzdWNjZXNzOwogfQpAQCAtMjI1LDYgKzI0NCwxMSBAQCBib29s
IFRDb21waWxlcjo6SW5pdEJ1aWx0SW5TeW1ib2xUYWJsZShjCiAgICAgZmxvYXRpbmdQb2ludC5t
YXRyaXggPSBmYWxzZTsKICAgICBmbG9hdGluZ1BvaW50LmFycmF5ID0gZmFsc2U7CiAKKyAgICBU
UHVibGljVHlwZSBzYW1wbGVyOworICAgIHNhbXBsZXIuc2l6ZSA9IDE7CisgICAgc2FtcGxlci5t
YXRyaXggPSBmYWxzZTsKKyAgICBzYW1wbGVyLmFycmF5ID0gZmFsc2U7CisKICAgICBzd2l0Y2go
c2hhZGVyVHlwZSkKICAgICB7CiAgICAgICBjYXNlIFNIX0ZSQUdNRU5UX1NIQURFUjoKQEAgLTIz
Niw2ICsyNjAsMTMgQEAgYm9vbCBUQ29tcGlsZXI6OkluaXRCdWlsdEluU3ltYm9sVGFibGUoYwog
ICAgICAgICBicmVhazsKICAgICAgIGRlZmF1bHQ6IGFzc2VydChmYWxzZSAmJiAiTGFuZ3VhZ2Ug
bm90IHN1cHBvcnRlZCIpOwogICAgIH0KKyAgICAvLyBXZSBzZXQgZGVmYXVsdHMgZm9yIGFsbCB0
aGUgc2FtcGxlciB0eXBlcywgZXZlbiB0aG9zZSB0aGF0IGFyZQorICAgIC8vIG9ubHkgYXZhaWxh
YmxlIGlmIGFuIGV4dGVuc2lvbiBleGlzdHMuCisgICAgZm9yIChpbnQgc2FtcGxlclR5cGUgPSBF
YnRHdWFyZFNhbXBsZXJCZWdpbiArIDE7CisgICAgICAgICBzYW1wbGVyVHlwZSA8IEVidEd1YXJk
U2FtcGxlckVuZDsgKytzYW1wbGVyVHlwZSkgeworICAgICAgICBzYW1wbGVyLnR5cGUgPSBzdGF0
aWNfY2FzdDxUQmFzaWNUeXBlPihzYW1wbGVyVHlwZSk7CisgICAgICAgIHN5bWJvbFRhYmxlLnNl
dERlZmF1bHRQcmVjaXNpb24oc2FtcGxlciwgRWJwTG93KTsKKyAgICB9CiAKICAgICBJbnNlcnRC
dWlsdEluRnVuY3Rpb25zKHNoYWRlclR5cGUsIHNoYWRlclNwZWMsIHJlc291cmNlcywgc3ltYm9s
VGFibGUpOwogCkBAIC0yNTMsNiArMjg0LDcgQEAgdm9pZCBUQ29tcGlsZXI6OmNsZWFyUmVzdWx0
cygpCiAKICAgICBhdHRyaWJzLmNsZWFyKCk7CiAgICAgdW5pZm9ybXMuY2xlYXIoKTsKKyAgICB2
YXJ5aW5ncy5jbGVhcigpOwogCiAgICAgYnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuQ2xlYW51cCgp
OwogCkBAIC0zNTgsOSArMzkwLDkgQEAgYm9vbCBUQ29tcGlsZXI6OmVuZm9yY2VWZXJ0ZXhTaGFk
ZXJUaW1pbgogICAgIHJldHVybiByZXN0cmljdG9yLm51bUVycm9ycygpID09IDA7CiB9CiAKLXZv
aWQgVENvbXBpbGVyOjpjb2xsZWN0QXR0cmlic1VuaWZvcm1zKFRJbnRlcm1Ob2RlKiByb290KQor
dm9pZCBUQ29tcGlsZXI6OmNvbGxlY3RWYXJpYWJsZXMoVEludGVybU5vZGUqIHJvb3QpCiB7Ci0g
ICAgQ29sbGVjdEF0dHJpYnNVbmlmb3JtcyBjb2xsZWN0KGF0dHJpYnMsIHVuaWZvcm1zLCBoYXNo
RnVuY3Rpb24pOworICAgIENvbGxlY3RWYXJpYWJsZXMgY29sbGVjdChhdHRyaWJzLCB1bmlmb3Jt
cywgdmFyeWluZ3MsIGhhc2hGdW5jdGlvbik7CiAgICAgcm9vdC0+dHJhdmVyc2UoJmNvbGxlY3Qp
OwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29uc3Rh
bnRVbmlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9Db25zdGFudFVuaW9uLmgJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9Db25zdGFudFVuaW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTExLDEzICsxMSwxMyBAQAogCiBjbGFzcyBDb25zdGFudFVuaW9uIHsKIHB1YmxpYzoKKyAgICBQ
T09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKCk7CiAgICAgQ29uc3RhbnRVbmlvbigpCiAgICAgewog
ICAgICAgICBpQ29uc3QgPSAwOwogICAgICAgICB0eXBlID0gRWJ0Vm9pZDsKICAgICB9CiAKLSAg
ICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKEdsb2JhbFBvb2xBbGxvY2F0b3IpICAgICAgICAK
ICAgICB2b2lkIHNldElDb25zdChpbnQgaSkge2lDb25zdCA9IGk7IHR5cGUgPSBFYnRJbnQ7IH0K
ICAgICB2b2lkIHNldEZDb25zdChmbG9hdCBmKSB7ZkNvbnN0ID0gZjsgdHlwZSA9IEVidEZsb2F0
OyB9CiAgICAgdm9pZCBzZXRCQ29uc3QoYm9vbCBiKSB7YkNvbnN0ID0gYjsgdHlwZSA9IEVidEJv
b2w7IH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RE
aXNjb250aW51aXR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvRGV0ZWN0RGlzY29udGludWl0eS5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3REaXNjb250aW51aXR5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAsNyArMTAsNyBAQAogCiAjaW5jbHVkZSAiY29tcGls
ZXIvRGV0ZWN0RGlzY29udGludWl0eS5oIgogCi0jaW5jbHVkZSAiY29tcGlsZXIvUGFyc2VIZWxw
ZXIuaCIKKyNpbmNsdWRlICJjb21waWxlci9QYXJzZUNvbnRleHQuaCIKIAogbmFtZXNwYWNlIHNo
CiB7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5mb1Npbmsu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5m
b1NpbmsuaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL0luZm9TaW5rLmgJKHdvcmtpbmcgY29weSkKQEAgLTgsNiArOCw3IEBACiAjZGVm
aW5lIF9JTkZPU0lOS19JTkNMVURFRF8KIAogI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlIDxz
dGRsaWIuaD4KICNpbmNsdWRlICJjb21waWxlci9Db21tb24uaCIKIAogLy8gUmV0dXJucyB0aGUg
ZnJhY3Rpb25hbCBwYXJ0IG9mIHRoZSBnaXZlbiBmbG9hdGluZy1wb2ludCBudW1iZXIuCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZURsbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRp
YWxpemVEbGwuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZURsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwLDI1
ICsxMCw4IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5oIgog
I2luY2x1ZGUgImNvbXBpbGVyL29zaW5jbHVkZS5oIgogCi1PU19UTFNJbmRleCBUaHJlYWRJbml0
aWFsaXplSW5kZXggPSBPU19JTlZBTElEX1RMU19JTkRFWDsKLQogYm9vbCBJbml0UHJvY2Vzcygp
CiB7Ci0gICAgaWYgKFRocmVhZEluaXRpYWxpemVJbmRleCAhPSBPU19JTlZBTElEX1RMU19JTkRF
WCkgewotICAgICAgICAvLwotICAgICAgICAvLyBGdW5jdGlvbiBpcyByZS1lbnRyYW50LgotICAg
ICAgICAvLwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBUaHJlYWRJbml0aWFs
aXplSW5kZXggPSBPU19BbGxvY1RMU0luZGV4KCk7Ci0KLSAgICBpZiAoVGhyZWFkSW5pdGlhbGl6
ZUluZGV4ID09IE9TX0lOVkFMSURfVExTX0lOREVYKSB7Ci0gICAgICAgIGFzc2VydCgwICYmICJJ
bml0UHJvY2VzcygpOiBGYWlsZWQgdG8gYWxsb2NhdGUgVExTIGFyZWEgZm9yIGluaXQgZmxhZyIp
OwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0KICAgICBpZiAoIUluaXRpYWxpemVQ
b29sSW5kZXgoKSkgewogICAgICAgICBhc3NlcnQoMCAmJiAiSW5pdFByb2Nlc3MoKTogRmFpbGVk
IHRvIGluaXRhbGl6ZSBnbG9iYWwgcG9vbCIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0z
OSw3NyArMjIsMTEgQEAgYm9vbCBJbml0UHJvY2VzcygpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICByZXR1cm4gSW5pdFRocmVhZCgpOwotfQotCi1ib29sIERldGFjaFByb2Nl
c3MoKQotewotICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7Ci0KLSAgICBpZiAoVGhyZWFkSW5pdGlh
bGl6ZUluZGV4ID09IE9TX0lOVkFMSURfVExTX0lOREVYKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgIHN1Y2Nlc3MgPSBEZXRhY2hUaHJlYWQoKTsKLQotICAgIGlmICghRnJlZVBhcnNlQ29u
dGV4dEluZGV4KCkpCi0gICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLQotICAgIEZyZWVQb29sSW5k
ZXgoKTsKLQotICAgIE9TX0ZyZWVUTFNJbmRleChUaHJlYWRJbml0aWFsaXplSW5kZXgpOwotICAg
IFRocmVhZEluaXRpYWxpemVJbmRleCA9IE9TX0lOVkFMSURfVExTX0lOREVYOwotCi0gICAgcmV0
dXJuIHN1Y2Nlc3M7Ci19Ci0KLWJvb2wgSW5pdFRocmVhZCgpCi17Ci0gICAgLy8KLSAgICAvLyBU
aGlzIGZ1bmN0aW9uIGlzIHJlLWVudHJhbnQKLSAgICAvLwotICAgIGlmIChUaHJlYWRJbml0aWFs
aXplSW5kZXggPT0gT1NfSU5WQUxJRF9UTFNfSU5ERVgpIHsKLSAgICAgICAgYXNzZXJ0KDAgJiYg
IkluaXRUaHJlYWQoKTogUHJvY2VzcyBoYXNuJ3QgYmVlbiBpbml0YWxpc2VkLiIpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKE9TX0dldFRMU1ZhbHVlKFRocmVhZElu
aXRpYWxpemVJbmRleCkgIT0gMCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBJbml0aWFs
aXplR2xvYmFsUG9vbHMoKTsKLQotICAgIGlmICghSW5pdGlhbGl6ZUdsb2JhbFBhcnNlQ29udGV4
dCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIU9TX1NldFRMU1ZhbHVlKFRo
cmVhZEluaXRpYWxpemVJbmRleCwgKHZvaWQgKikxKSkgewotICAgICAgICBhc3NlcnQoMCAmJiAi
SW5pdFRocmVhZCgpOiBVbmFibGUgdG8gc2V0IGluaXQgZmxhZy4iKTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIERldGFjaFRocmVh
ZCgpCit2b2lkIERldGFjaFByb2Nlc3MoKQogewotICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7Ci0K
LSAgICBpZiAoVGhyZWFkSW5pdGlhbGl6ZUluZGV4ID09IE9TX0lOVkFMSURfVExTX0lOREVYKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vCi0gICAgLy8gRnVuY3Rpb24gaXMgcmUtZW50
cmFudCBhbmQgdGhpcyB0aHJlYWQgbWF5IG5vdCBoYXZlIGJlZW4gaW5pdGFsaXNlZC4KLSAgICAv
LwotICAgIGlmIChPU19HZXRUTFNWYWx1ZShUaHJlYWRJbml0aWFsaXplSW5kZXgpICE9IDApIHsK
LSAgICAgICAgaWYgKCFPU19TZXRUTFNWYWx1ZShUaHJlYWRJbml0aWFsaXplSW5kZXgsICh2b2lk
ICopMCkpIHsKLSAgICAgICAgICAgIGFzc2VydCgwICYmICJEZXRhY2hUaHJlYWQoKTogVW5hYmxl
IHRvIGNsZWFyIGluaXQgZmxhZy4iKTsKLSAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmICghRnJlZVBhcnNlQ29udGV4dCgpKQotICAgICAgICAgICAg
c3VjY2VzcyA9IGZhbHNlOwotCi0gICAgICAgIEZyZWVHbG9iYWxQb29scygpOwotICAgIH0KLQot
ICAgIHJldHVybiBzdWNjZXNzOworICAgIEZyZWVQYXJzZUNvbnRleHRJbmRleCgpOworICAgIEZy
ZWVQb29sSW5kZXgoKTsKIH0KLQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL0luaXRpYWxpemVEbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZURsbC5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZURsbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03LDEwICs3LDcgQEAKICNkZWZpbmUgX19JTklUSUFMSVpFRExMX0gKIAog
Ym9vbCBJbml0UHJvY2VzcygpOwotYm9vbCBEZXRhY2hQcm9jZXNzKCk7Ci0KLWJvb2wgSW5pdFRo
cmVhZCgpOwotYm9vbCBEZXRhY2hUaHJlYWQoKTsKK3ZvaWQgRGV0YWNoUHJvY2VzcygpOwogCiAj
ZW5kaWYgLy8gX19JTklUSUFMSVpFRExMX0gKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemVHTFBvc2l0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZUdMUG9zaXRpb24u
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L0luaXRpYWxpemVHTFBvc2l0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYxIEBA
CisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAiY29tcGlsZXIvSW5pdGlhbGl6ZUdMUG9z
aXRpb24uaCIKKyNpbmNsdWRlICJjb21waWxlci9kZWJ1Zy5oIgorCitib29sIEluaXRpYWxpemVH
TFBvc2l0aW9uOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSog
bm9kZSkKK3sKKyAgICBib29sIHZpc2l0Q2hpbGRyZW4gPSAhbUNvZGVJbnNlcnRlZDsKKyAgICBz
d2l0Y2ggKG5vZGUtPmdldE9wKCkpCisgICAgeworICAgICAgY2FzZSBFT3BTZXF1ZW5jZTogYnJl
YWs7CisgICAgICBjYXNlIEVPcEZ1bmN0aW9uOgorICAgICAgeworICAgICAgICAvLyBGdW5jdGlv
biBkZWZpbml0aW9uLgorICAgICAgICBBU1NFUlQodmlzaXQgPT0gUHJlVmlzaXQpOworICAgICAg
ICBpZiAobm9kZS0+Z2V0TmFtZSgpID09ICJtYWluKCIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IFRJbnRlcm1TZXF1ZW5jZSAmc2VxdWVuY2UgPSBub2RlLT5nZXRTZXF1ZW5jZSgpOworICAgICAg
ICAgICAgQVNTRVJUKChzZXF1ZW5jZS5zaXplKCkgPT0gMSkgfHwgKHNlcXVlbmNlLnNpemUoKSA9
PSAyKSk7CisgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICpib2R5ID0gTlVMTDsKKyAgICAg
ICAgICAgIGlmIChzZXF1ZW5jZS5zaXplKCkgPT0gMSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBib2R5ID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoRU9wU2VxdWVuY2UpOworICAgICAg
ICAgICAgICAgIHNlcXVlbmNlLnB1c2hfYmFjayhib2R5KTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBib2R5ID0gc2VxdWVu
Y2VbMV0tPmdldEFzQWdncmVnYXRlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NF
UlQoYm9keSk7CisgICAgICAgICAgICBpbnNlcnRDb2RlKGJvZHktPmdldFNlcXVlbmNlKCkpOwor
ICAgICAgICAgICAgbUNvZGVJbnNlcnRlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgYnJl
YWs7CisgICAgICB9CisgICAgICBkZWZhdWx0OiB2aXNpdENoaWxkcmVuID0gZmFsc2U7IGJyZWFr
OworICAgIH0KKyAgICByZXR1cm4gdmlzaXRDaGlsZHJlbjsKK30KKwordm9pZCBJbml0aWFsaXpl
R0xQb3NpdGlvbjo6aW5zZXJ0Q29kZShUSW50ZXJtU2VxdWVuY2UmIHNlcXVlbmNlKQoreworICAg
IFRJbnRlcm1CaW5hcnkgKmJpbmFyeSA9IG5ldyBUSW50ZXJtQmluYXJ5KEVPcEFzc2lnbik7Cisg
ICAgc2VxdWVuY2UuaW5zZXJ0KHNlcXVlbmNlLmJlZ2luKCksIGJpbmFyeSk7CisKKyAgICBUSW50
ZXJtU3ltYm9sICpsZWZ0ID0gbmV3IFRJbnRlcm1TeW1ib2woCisgICAgICAgIDAsICJnbF9Qb3Np
dGlvbiIsIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cVBvc2l0aW9uLCA0KSk7Cisg
ICAgYmluYXJ5LT5zZXRMZWZ0KGxlZnQpOworCisgICAgQ29uc3RhbnRVbmlvbiAqdSA9IG5ldyBD
b25zdGFudFVuaW9uWzRdOworICAgIGZvciAoaW50IGlpID0gMDsgaWkgPCAzOyArK2lpKQorICAg
ICAgICB1W2lpXS5zZXRGQ29uc3QoMC4wZik7CisgICAgdVszXS5zZXRGQ29uc3QoMS4wZik7Cisg
ICAgVEludGVybUNvbnN0YW50VW5pb24gKnJpZ2h0ID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9u
KAorICAgICAgICB1LCBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCwgNCkp
OworICAgIGJpbmFyeS0+c2V0UmlnaHQocmlnaHQpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemVHTFBvc2l0aW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemVHTFBvc2l0
aW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvSW5pdGlhbGl6ZUdMUG9zaXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMzIEBA
CisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisvLworCisjaWZuZGVmIENPTVBJTEVSX0lOSVRJQUxJWkVfR0xfUE9T
SVRJT05fSF8KKyNkZWZpbmUgQ09NUElMRVJfSU5JVElBTElaRV9HTF9QT1NJVElPTl9IXworCisj
aW5jbHVkZSAiY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgiCisKK2NsYXNzIEluaXRpYWxpemVHTFBv
c2l0aW9uIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKK3sKK3B1YmxpYzoKKyAgICBJbml0aWFs
aXplR0xQb3NpdGlvbigpIDogbUNvZGVJbnNlcnRlZChmYWxzZSkgeyB9CisKK3Byb3RlY3RlZDoK
KyAgICB2aXJ0dWFsIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkq
IG5vZGUpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHZpc2l0VW5hcnkoVmlz
aXQgdmlzaXQsIFRJbnRlcm1VbmFyeSogbm9kZSkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgdmlzaXRTZWxlY3Rpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24qIG5v
ZGUpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHZpc2l0TG9vcChWaXNpdCB2
aXNpdCwgVEludGVybUxvb3AqIG5vZGUpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIHZpc2l0QnJhbmNoKFZpc2l0IHZpc2l0LCBUSW50ZXJtQnJhbmNoKiBub2RlKSB7IHJldHVy
biBmYWxzZTsgfQorCisgICAgdmlydHVhbCBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0
LCBUSW50ZXJtQWdncmVnYXRlKiBub2RlKTsKKworcHJpdmF0ZToKKyAgICAvLyBJbnNlcnQgQVNU
IG5vZGUgaW4gdGhlIGJlZ2lubmluZyBvZiBtYWluKCkgZm9yICJnbF9Qb3NpdGlvbiA9IHZlYzQo
MC4wLCAwLjAsIDAuMCwgMS4wKTsiLgorICAgIHZvaWQgaW5zZXJ0Q29kZShUSW50ZXJtU2VxdWVu
Y2UmIHNlcXVlbmNlKTsKKworICAgIGJvb2wgbUNvZGVJbnNlcnRlZDsKK307CisKKyNlbmRpZiAg
Ly8gQ09NUElMRVJfSU5JVElBTElaRV9HTF9QT1NJVElPTl9IXwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemVHbG9iYWxzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemVHbG9iYWxz
LmgJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9Jbml0aWFsaXplR2xvYmFscy5oCSh3b3JraW5nIGNvcHkpCkBAIC03LDggKzcsNiBAQAog
I2lmbmRlZiBfX0lOSVRJQUxJWkVfR0xPQkFMU19JTkNMVURFRF8KICNkZWZpbmUgX19JTklUSUFM
SVpFX0dMT0JBTFNfSU5DTFVERURfCiAKLXZvaWQgSW5pdGlhbGl6ZUdsb2JhbFBvb2xzKCk7Ci12
b2lkIEZyZWVHbG9iYWxQb29scygpOwogYm9vbCBJbml0aWFsaXplUG9vbEluZGV4KCk7CiB2b2lk
IEZyZWVQb29sSW5kZXgoKTsKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL0luaXRpYWxpemVQYXJzZUNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Jbml0aWFsaXplUGFyc2VDb250ZXh0LmNwcAko
cmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L0luaXRpYWxpemVQYXJzZUNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw4NSArMTIs
MjkgQEAgT1NfVExTSW5kZXggR2xvYmFsUGFyc2VDb250ZXh0SW5kZXggPSBPUwogCiBib29sIElu
aXRpYWxpemVQYXJzZUNvbnRleHRJbmRleCgpCiB7Ci0gICAgaWYgKEdsb2JhbFBhcnNlQ29udGV4
dEluZGV4ICE9IE9TX0lOVkFMSURfVExTX0lOREVYKSB7Ci0gICAgICAgIGFzc2VydCgwICYmICJJ
bml0aWFsaXplUGFyc2VDb250ZXh0SW5kZXgoKTogUGFyc2UgQ29udGV4dCBhbHJlYWR5IGluaXRh
bGl6ZWQiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vCi0gICAgLy8g
QWxsb2NhdGUgYSBUTFMgaW5kZXguCi0gICAgLy8KLSAgICBHbG9iYWxQYXJzZUNvbnRleHRJbmRl
eCA9IE9TX0FsbG9jVExTSW5kZXgoKTsKLSAgICAKLSAgICBpZiAoR2xvYmFsUGFyc2VDb250ZXh0
SW5kZXggPT0gT1NfSU5WQUxJRF9UTFNfSU5ERVgpIHsKLSAgICAgICAgYXNzZXJ0KDAgJiYgIklu
aXRpYWxpemVQYXJzZUNvbnRleHRJbmRleCgpOiBQYXJzZSBDb250ZXh0IGFscmVhZHkgaW5pdGFs
aXplZCIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIGFzc2VydChHbG9iYWxQ
YXJzZUNvbnRleHRJbmRleCA9PSBPU19JTlZBTElEX1RMU19JTkRFWCk7CiAKLSAgICByZXR1cm4g
dHJ1ZTsKKyAgICBHbG9iYWxQYXJzZUNvbnRleHRJbmRleCA9IE9TX0FsbG9jVExTSW5kZXgoKTsK
KyAgICByZXR1cm4gR2xvYmFsUGFyc2VDb250ZXh0SW5kZXggIT0gT1NfSU5WQUxJRF9UTFNfSU5E
RVg7CiB9CiAKLWJvb2wgRnJlZVBhcnNlQ29udGV4dEluZGV4KCkKK3ZvaWQgRnJlZVBhcnNlQ29u
dGV4dEluZGV4KCkKIHsKLSAgICBPU19UTFNJbmRleCB0bHNpSW5kZXggPSBHbG9iYWxQYXJzZUNv
bnRleHRJbmRleDsKLQotICAgIGlmIChHbG9iYWxQYXJzZUNvbnRleHRJbmRleCA9PSBPU19JTlZB
TElEX1RMU19JTkRFWCkgewotICAgICAgICBhc3NlcnQoMCAmJiAiRnJlZVBhcnNlQ29udGV4dElu
ZGV4KCk6IFBhcnNlIENvbnRleHQgaW5kZXggbm90IGluaXRhbGl6ZWQiKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KKyAgICBhc3NlcnQoR2xvYmFsUGFyc2VDb250ZXh0SW5kZXggIT0g
T1NfSU5WQUxJRF9UTFNfSU5ERVgpOwogCisgICAgT1NfRnJlZVRMU0luZGV4KEdsb2JhbFBhcnNl
Q29udGV4dEluZGV4KTsKICAgICBHbG9iYWxQYXJzZUNvbnRleHRJbmRleCA9IE9TX0lOVkFMSURf
VExTX0lOREVYOwotCi0gICAgcmV0dXJuIE9TX0ZyZWVUTFNJbmRleCh0bHNpSW5kZXgpOwotfQot
Ci1ib29sIEluaXRpYWxpemVHbG9iYWxQYXJzZUNvbnRleHQoKQotewotICAgIGlmIChHbG9iYWxQ
YXJzZUNvbnRleHRJbmRleCA9PSBPU19JTlZBTElEX1RMU19JTkRFWCkgewotICAgICAgICBhc3Nl
cnQoMCAmJiAiSW5pdGlhbGl6ZUdsb2JhbFBhcnNlQ29udGV4dCgpOiBQYXJzZSBDb250ZXh0IGlu
ZGV4IG5vdCBpbml0YWxpemVkIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICBUVGhyZWFkUGFyc2VDb250ZXh0ICpscFBhcnNlQ29udGV4dCA9IHN0YXRpY19jYXN0PFRUaHJl
YWRQYXJzZUNvbnRleHQgKj4oT1NfR2V0VExTVmFsdWUoR2xvYmFsUGFyc2VDb250ZXh0SW5kZXgp
KTsKLSAgICBpZiAobHBQYXJzZUNvbnRleHQgIT0gMCkgewotICAgICAgICBhc3NlcnQoMCAmJiAi
SW5pdGlhbGl6ZVBhcnNlQ29udGV4dEluZGV4KCk6IFBhcnNlIENvbnRleHQgYWxyZWFkeSBpbml0
YWxpemVkIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBUVGhyZWFkUGFy
c2VDb250ZXh0ICpscFRocmVhZERhdGEgPSBuZXcgVFRocmVhZFBhcnNlQ29udGV4dCgpOwotICAg
IGlmIChscFRocmVhZERhdGEgPT0gMCkgewotICAgICAgICBhc3NlcnQoMCAmJiAiSW5pdGlhbGl6
ZUdsb2JhbFBhcnNlQ29udGV4dCgpOiBVbmFibGUgdG8gY3JlYXRlIHRocmVhZCBwYXJzZSBjb250
ZXh0Iik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBscFRocmVhZERhdGEt
PmxwR2xvYmFsUGFyc2VDb250ZXh0ID0gMDsKLSAgICBPU19TZXRUTFNWYWx1ZShHbG9iYWxQYXJz
ZUNvbnRleHRJbmRleCwgbHBUaHJlYWREYXRhKTsKLQotICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIEZyZWVQYXJzZUNvbnRleHQoKQordm9pZCBTZXRHbG9iYWxQYXJzZUNvbnRleHQoVFBhcnNl
Q29udGV4dCogY29udGV4dCkKIHsKLSAgICBpZiAoR2xvYmFsUGFyc2VDb250ZXh0SW5kZXggPT0g
T1NfSU5WQUxJRF9UTFNfSU5ERVgpIHsKLSAgICAgICAgYXNzZXJ0KDAgJiYgIkZyZWVQYXJzZUNv
bnRleHQoKTogUGFyc2UgQ29udGV4dCBpbmRleCBub3QgaW5pdGFsaXplZCIpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgVFRocmVhZFBhcnNlQ29udGV4dCAqbHBQYXJzZUNv
bnRleHQgPSBzdGF0aWNfY2FzdDxUVGhyZWFkUGFyc2VDb250ZXh0ICo+KE9TX0dldFRMU1ZhbHVl
KEdsb2JhbFBhcnNlQ29udGV4dEluZGV4KSk7Ci0gICAgaWYgKGxwUGFyc2VDb250ZXh0KQotICAg
ICAgICBkZWxldGUgbHBQYXJzZUNvbnRleHQ7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBhc3Nl
cnQoR2xvYmFsUGFyc2VDb250ZXh0SW5kZXggIT0gT1NfSU5WQUxJRF9UTFNfSU5ERVgpOworICAg
IE9TX1NldFRMU1ZhbHVlKEdsb2JhbFBhcnNlQ29udGV4dEluZGV4LCBjb250ZXh0KTsKIH0KIAot
VFBhcnNlQ29udGV4dFBvaW50ZXImIEdldEdsb2JhbFBhcnNlQ29udGV4dCgpCitUUGFyc2VDb250
ZXh0KiBHZXRHbG9iYWxQYXJzZUNvbnRleHQoKQogewotICAgIC8vCi0gICAgLy8gTWluaW1hbCBl
cnJvciBjaGVja2luZyBmb3Igc3BlZWQKLSAgICAvLwotCi0gICAgVFRocmVhZFBhcnNlQ29udGV4
dCAqbHBQYXJzZUNvbnRleHQgPSBzdGF0aWNfY2FzdDxUVGhyZWFkUGFyc2VDb250ZXh0ICo+KE9T
X0dldFRMU1ZhbHVlKEdsb2JhbFBhcnNlQ29udGV4dEluZGV4KSk7Ci0KLSAgICByZXR1cm4gbHBQ
YXJzZUNvbnRleHQtPmxwR2xvYmFsUGFyc2VDb250ZXh0OworICAgIGFzc2VydChHbG9iYWxQYXJz
ZUNvbnRleHRJbmRleCAhPSBPU19JTlZBTElEX1RMU19JTkRFWCk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFRQYXJzZUNvbnRleHQqPihPU19HZXRUTFNWYWx1ZShHbG9iYWxQYXJzZUNvbnRleHRJ
bmRleCkpOwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
SW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9Jbml0aWFsaXplUGFyc2VDb250ZXh0LmgJKHJldmlzaW9uIDE1
OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Jbml0aWFsaXpl
UGFyc2VDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTgsMTkgKzgsMTAgQEAKICNkZWZpbmUg
X19JTklUSUFMSVpFX1BBUlNFX0NPTlRFWFRfSU5DTFVERURfCiAKIGJvb2wgSW5pdGlhbGl6ZVBh
cnNlQ29udGV4dEluZGV4KCk7Ci1ib29sIEZyZWVQYXJzZUNvbnRleHRJbmRleCgpOwotCi1ib29s
IEluaXRpYWxpemVHbG9iYWxQYXJzZUNvbnRleHQoKTsKLWJvb2wgRnJlZVBhcnNlQ29udGV4dCgp
Owordm9pZCBGcmVlUGFyc2VDb250ZXh0SW5kZXgoKTsKIAogc3RydWN0IFRQYXJzZUNvbnRleHQ7
Ci10eXBlZGVmIFRQYXJzZUNvbnRleHQqIFRQYXJzZUNvbnRleHRQb2ludGVyOwotZXh0ZXJuIFRQ
YXJzZUNvbnRleHRQb2ludGVyJiBHZXRHbG9iYWxQYXJzZUNvbnRleHQoKTsKLSNkZWZpbmUgR2xv
YmFsUGFyc2VDb250ZXh0IEdldEdsb2JhbFBhcnNlQ29udGV4dCgpCi0KLXR5cGVkZWYgc3RydWN0
IFRUaHJlYWRQYXJzZUNvbnRleHRSZWMKLXsKLSAgICBUUGFyc2VDb250ZXh0ICpscEdsb2JhbFBh
cnNlQ29udGV4dDsKLX0gVFRocmVhZFBhcnNlQ29udGV4dDsKK2V4dGVybiB2b2lkIFNldEdsb2Jh
bFBhcnNlQ29udGV4dChUUGFyc2VDb250ZXh0KiBjb250ZXh0KTsKK2V4dGVybiBUUGFyc2VDb250
ZXh0KiBHZXRHbG9iYWxQYXJzZUNvbnRleHQoKTsKIAogI2VuZGlmIC8vIF9fSU5JVElBTElaRV9Q
QVJTRV9DT05URVhUX0lOQ0xVREVEXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL0ludGVybVRyYXZlcnNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW50ZXJtVHJhdmVyc2UuY3BwCShyZXZpc2lvbiAxNTk1
MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW50ZXJtVHJhdmVy
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMywyNzEgKzIzLDIzNyBAQAogLy8KIC8vIFRyYXZl
cnNhbCBmdW5jdGlvbnMgZm9yIHRlcm1pbmFscyBhcmUgc3RyYWlnaGZvcndhcmQuLi4uCiAvLwot
dm9pZCBUSW50ZXJtU3ltYm9sOjp0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyKiBpdCkKK3ZvaWQg
VEludGVybVN5bWJvbDo6dHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqaXQpCiB7Ci0JaXQtPnZp
c2l0U3ltYm9sKHRoaXMpOworICAgIGl0LT52aXNpdFN5bWJvbCh0aGlzKTsKIH0KIAotdm9pZCBU
SW50ZXJtQ29uc3RhbnRVbmlvbjo6dHJhdmVyc2UoVEludGVybVRyYXZlcnNlciogaXQpCit2b2lk
IFRJbnRlcm1Db25zdGFudFVuaW9uOjp0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyICppdCkKIHsK
LQlpdC0+dmlzaXRDb25zdGFudFVuaW9uKHRoaXMpOworICAgIGl0LT52aXNpdENvbnN0YW50VW5p
b24odGhpcyk7CiB9CiAKIC8vCiAvLyBUcmF2ZXJzZSBhIGJpbmFyeSBub2RlLgogLy8KLXZvaWQg
VEludGVybUJpbmFyeTo6dHJhdmVyc2UoVEludGVybVRyYXZlcnNlciogaXQpCit2b2lkIFRJbnRl
cm1CaW5hcnk6OnRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIgKml0KQogewotCWJvb2wgdmlzaXQg
PSB0cnVlOworICAgIGJvb2wgdmlzaXQgPSB0cnVlOwogCi0JLy8KLQkvLyB2aXNpdCB0aGUgbm9k
ZSBiZWZvcmUgY2hpbGRyZW4gaWYgcHJlLXZpc2l0aW5nLgotCS8vCi0JaWYoaXQtPnByZVZpc2l0
KQotCXsKLQkJdmlzaXQgPSBpdC0+dmlzaXRCaW5hcnkoUHJlVmlzaXQsIHRoaXMpOwotCX0KLQkK
LQkvLwotCS8vIFZpc2l0IHRoZSBjaGlsZHJlbiwgaW4gdGhlIHJpZ2h0IG9yZGVyLgotCS8vCi0J
aWYodmlzaXQpCi0JewotCQlpdC0+aW5jcmVtZW50RGVwdGgoKTsKLQotCQlpZihpdC0+cmlnaHRU
b0xlZnQpIAotCQl7Ci0JCQlpZihyaWdodCkKLQkJCXsKLQkJCQlyaWdodC0+dHJhdmVyc2UoaXQp
OwotCQkJfQotCQkJCi0JCQlpZihpdC0+aW5WaXNpdCkKLQkJCXsKLQkJCQl2aXNpdCA9IGl0LT52
aXNpdEJpbmFyeShJblZpc2l0LCB0aGlzKTsKLQkJCX0KLQotCQkJaWYodmlzaXQgJiYgbGVmdCkK
LQkJCXsKLQkJCQlsZWZ0LT50cmF2ZXJzZShpdCk7Ci0JCQl9Ci0JCX0KLQkJZWxzZQotCQl7Ci0J
CQlpZihsZWZ0KQotCQkJewotCQkJCWxlZnQtPnRyYXZlcnNlKGl0KTsKLQkJCX0KLQkJCQotCQkJ
aWYoaXQtPmluVmlzaXQpCi0JCQl7Ci0JCQkJdmlzaXQgPSBpdC0+dmlzaXRCaW5hcnkoSW5WaXNp
dCwgdGhpcyk7Ci0JCQl9Ci0KLQkJCWlmKHZpc2l0ICYmIHJpZ2h0KQotCQkJewotCQkJCXJpZ2h0
LT50cmF2ZXJzZShpdCk7Ci0JCQl9Ci0JCX0KLQotCQlpdC0+ZGVjcmVtZW50RGVwdGgoKTsKLQl9
Ci0KLQkvLwotCS8vIFZpc2l0IHRoZSBub2RlIGFmdGVyIHRoZSBjaGlsZHJlbiwgaWYgcmVxdWVz
dGVkIGFuZCB0aGUgdHJhdmVyc2FsCi0JLy8gaGFzbid0IGJlZW4gY2FuY2VsbGVkIHlldC4KLQkv
LwotCWlmKHZpc2l0ICYmIGl0LT5wb3N0VmlzaXQpCi0JewotCQlpdC0+dmlzaXRCaW5hcnkoUG9z
dFZpc2l0LCB0aGlzKTsKLQl9CisgICAgLy8KKyAgICAvLyB2aXNpdCB0aGUgbm9kZSBiZWZvcmUg
Y2hpbGRyZW4gaWYgcHJlLXZpc2l0aW5nLgorICAgIC8vCisgICAgaWYgKGl0LT5wcmVWaXNpdCkK
KyAgICAgICAgdmlzaXQgPSBpdC0+dmlzaXRCaW5hcnkoUHJlVmlzaXQsIHRoaXMpOworICAgIAor
ICAgIC8vCisgICAgLy8gVmlzaXQgdGhlIGNoaWxkcmVuLCBpbiB0aGUgcmlnaHQgb3JkZXIuCisg
ICAgLy8KKyAgICBpZiAodmlzaXQpCisgICAgeworICAgICAgICBpdC0+aW5jcmVtZW50RGVwdGgo
dGhpcyk7CisKKyAgICAgICAgaWYgKGl0LT5yaWdodFRvTGVmdCkgCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmIChyaWdodCkKKyAgICAgICAgICAgICAgICByaWdodC0+dHJhdmVyc2UoaXQpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoaXQtPmluVmlzaXQpCisgICAgICAgICAgICAg
ICAgdmlzaXQgPSBpdC0+dmlzaXRCaW5hcnkoSW5WaXNpdCwgdGhpcyk7CisKKyAgICAgICAgICAg
IGlmICh2aXNpdCAmJiBsZWZ0KQorICAgICAgICAgICAgICAgIGxlZnQtPnRyYXZlcnNlKGl0KTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChsZWZ0
KQorICAgICAgICAgICAgICAgIGxlZnQtPnRyYXZlcnNlKGl0KTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgaWYgKGl0LT5pblZpc2l0KQorICAgICAgICAgICAgICAgIHZpc2l0ID0gaXQtPnZp
c2l0QmluYXJ5KEluVmlzaXQsIHRoaXMpOworCisgICAgICAgICAgICBpZiAodmlzaXQgJiYgcmln
aHQpCisgICAgICAgICAgICAgICAgcmlnaHQtPnRyYXZlcnNlKGl0KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGl0LT5kZWNyZW1lbnREZXB0aCgpOworICAgIH0KKworICAgIC8vCisgICAgLy8gVmlz
aXQgdGhlIG5vZGUgYWZ0ZXIgdGhlIGNoaWxkcmVuLCBpZiByZXF1ZXN0ZWQgYW5kIHRoZSB0cmF2
ZXJzYWwKKyAgICAvLyBoYXNuJ3QgYmVlbiBjYW5jZWxsZWQgeWV0LgorICAgIC8vCisgICAgaWYg
KHZpc2l0ICYmIGl0LT5wb3N0VmlzaXQpCisgICAgICAgIGl0LT52aXNpdEJpbmFyeShQb3N0Vmlz
aXQsIHRoaXMpOwogfQogCiAvLwogLy8gVHJhdmVyc2UgYSB1bmFyeSBub2RlLiAgU2FtZSBjb21t
ZW50cyBpbiBiaW5hcnkgbm9kZSBhcHBseSBoZXJlLgogLy8KLXZvaWQgVEludGVybVVuYXJ5Ojp0
cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyKiBpdCkKK3ZvaWQgVEludGVybVVuYXJ5Ojp0cmF2ZXJz
ZShUSW50ZXJtVHJhdmVyc2VyICppdCkKIHsKLQlib29sIHZpc2l0ID0gdHJ1ZTsKKyAgICBib29s
IHZpc2l0ID0gdHJ1ZTsKIAotCWlmIChpdC0+cHJlVmlzaXQpCi0JCXZpc2l0ID0gaXQtPnZpc2l0
VW5hcnkoUHJlVmlzaXQsIHRoaXMpOworICAgIGlmIChpdC0+cHJlVmlzaXQpCisgICAgICAgIHZp
c2l0ID0gaXQtPnZpc2l0VW5hcnkoUHJlVmlzaXQsIHRoaXMpOwogCi0JaWYgKHZpc2l0KSB7Ci0J
CWl0LT5pbmNyZW1lbnREZXB0aCgpOwotCQlvcGVyYW5kLT50cmF2ZXJzZShpdCk7Ci0JCWl0LT5k
ZWNyZW1lbnREZXB0aCgpOwotCX0KLQkKLQlpZiAodmlzaXQgJiYgaXQtPnBvc3RWaXNpdCkKLQkJ
aXQtPnZpc2l0VW5hcnkoUG9zdFZpc2l0LCB0aGlzKTsKKyAgICBpZiAodmlzaXQpIHsKKyAgICAg
ICAgaXQtPmluY3JlbWVudERlcHRoKHRoaXMpOworICAgICAgICBvcGVyYW5kLT50cmF2ZXJzZShp
dCk7CisgICAgICAgIGl0LT5kZWNyZW1lbnREZXB0aCgpOworICAgIH0KKyAgICAKKyAgICBpZiAo
dmlzaXQgJiYgaXQtPnBvc3RWaXNpdCkKKyAgICAgICAgaXQtPnZpc2l0VW5hcnkoUG9zdFZpc2l0
LCB0aGlzKTsKIH0KIAogLy8KIC8vIFRyYXZlcnNlIGFuIGFnZ3JlZ2F0ZSBub2RlLiAgU2FtZSBj
b21tZW50cyBpbiBiaW5hcnkgbm9kZSBhcHBseSBoZXJlLgogLy8KLXZvaWQgVEludGVybUFnZ3Jl
Z2F0ZTo6dHJhdmVyc2UoVEludGVybVRyYXZlcnNlciogaXQpCit2b2lkIFRJbnRlcm1BZ2dyZWdh
dGU6OnRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIgKml0KQogewotCWJvb2wgdmlzaXQgPSB0cnVl
OwotCQotCWlmKGl0LT5wcmVWaXNpdCkKLQl7Ci0JCXZpc2l0ID0gaXQtPnZpc2l0QWdncmVnYXRl
KFByZVZpc2l0LCB0aGlzKTsKLQl9Ci0JCi0JaWYodmlzaXQpCi0JewotCQlpdC0+aW5jcmVtZW50
RGVwdGgoKTsKLQotCQlpZihpdC0+cmlnaHRUb0xlZnQpCi0JCXsKLQkJCWZvcihUSW50ZXJtU2Vx
dWVuY2U6OnJldmVyc2VfaXRlcmF0b3Igc2l0ID0gc2VxdWVuY2UucmJlZ2luKCk7IHNpdCAhPSBz
ZXF1ZW5jZS5yZW5kKCk7IHNpdCsrKQotCQkJewotCQkJCSgqc2l0KS0+dHJhdmVyc2UoaXQpOwot
Ci0JCQkJaWYodmlzaXQgJiYgaXQtPmluVmlzaXQpCi0JCQkJewotCQkJCQlpZigqc2l0ICE9IHNl
cXVlbmNlLmZyb250KCkpCi0JCQkJCXsKLQkJCQkJCXZpc2l0ID0gaXQtPnZpc2l0QWdncmVnYXRl
KEluVmlzaXQsIHRoaXMpOwotCQkJCQl9Ci0JCQkJfQotCQkJfQotCQl9Ci0JCWVsc2UKLQkJewot
CQkJZm9yKFRJbnRlcm1TZXF1ZW5jZTo6aXRlcmF0b3Igc2l0ID0gc2VxdWVuY2UuYmVnaW4oKTsg
c2l0ICE9IHNlcXVlbmNlLmVuZCgpOyBzaXQrKykKLQkJCXsKLQkJCQkoKnNpdCktPnRyYXZlcnNl
KGl0KTsKLQotCQkJCWlmKHZpc2l0ICYmIGl0LT5pblZpc2l0KQotCQkJCXsKLQkJCQkJaWYoKnNp
dCAhPSBzZXF1ZW5jZS5iYWNrKCkpCi0JCQkJCXsKLQkJCQkJCXZpc2l0ID0gaXQtPnZpc2l0QWdn
cmVnYXRlKEluVmlzaXQsIHRoaXMpOwotCQkJCQl9Ci0JCQkJfQotCQkJfQotCQl9Ci0JCQotCQlp
dC0+ZGVjcmVtZW50RGVwdGgoKTsKLQl9Ci0KLQlpZih2aXNpdCAmJiBpdC0+cG9zdFZpc2l0KQot
CXsKLQkJaXQtPnZpc2l0QWdncmVnYXRlKFBvc3RWaXNpdCwgdGhpcyk7Ci0JfQorICAgIGJvb2wg
dmlzaXQgPSB0cnVlOworICAgIAorICAgIGlmIChpdC0+cHJlVmlzaXQpCisgICAgICAgIHZpc2l0
ID0gaXQtPnZpc2l0QWdncmVnYXRlKFByZVZpc2l0LCB0aGlzKTsKKyAgICAKKyAgICBpZiAodmlz
aXQpCisgICAgeworICAgICAgICBpdC0+aW5jcmVtZW50RGVwdGgodGhpcyk7CisKKyAgICAgICAg
aWYgKGl0LT5yaWdodFRvTGVmdCkKKyAgICAgICAgeworICAgICAgICAgICAgZm9yIChUSW50ZXJt
U2VxdWVuY2U6OnJldmVyc2VfaXRlcmF0b3Igc2l0ID0gc2VxdWVuY2UucmJlZ2luKCk7IHNpdCAh
PSBzZXF1ZW5jZS5yZW5kKCk7IHNpdCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICgqc2l0KS0+dHJhdmVyc2UoaXQpOworCisgICAgICAgICAgICAgICAgaWYgKHZpc2l0ICYmIGl0
LT5pblZpc2l0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCpz
aXQgIT0gc2VxdWVuY2UuZnJvbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0ID0g
aXQtPnZpc2l0QWdncmVnYXRlKEluVmlzaXQsIHRoaXMpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGZvciAoVEludGVybVNlcXVlbmNlOjppdGVyYXRvciBzaXQgPSBzZXF1ZW5jZS5iZWdpbigp
OyBzaXQgIT0gc2VxdWVuY2UuZW5kKCk7IHNpdCsrKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICgqc2l0KS0+dHJhdmVyc2UoaXQpOworCisgICAgICAgICAgICAgICAgaWYgKHZpc2l0
ICYmIGl0LT5pblZpc2l0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCpzaXQgIT0gc2VxdWVuY2UuYmFjaygpKQorICAgICAgICAgICAgICAgICAgICAgICAgdmlz
aXQgPSBpdC0+dmlzaXRBZ2dyZWdhdGUoSW5WaXNpdCwgdGhpcyk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpdC0+ZGVjcmVt
ZW50RGVwdGgoKTsKKyAgICB9CisKKyAgICBpZiAodmlzaXQgJiYgaXQtPnBvc3RWaXNpdCkKKyAg
ICAgICAgaXQtPnZpc2l0QWdncmVnYXRlKFBvc3RWaXNpdCwgdGhpcyk7CiB9CiAKIC8vCiAvLyBU
cmF2ZXJzZSBhIHNlbGVjdGlvbiBub2RlLiAgU2FtZSBjb21tZW50cyBpbiBiaW5hcnkgbm9kZSBh
cHBseSBoZXJlLgogLy8KLXZvaWQgVEludGVybVNlbGVjdGlvbjo6dHJhdmVyc2UoVEludGVybVRy
YXZlcnNlciogaXQpCit2b2lkIFRJbnRlcm1TZWxlY3Rpb246OnRyYXZlcnNlKFRJbnRlcm1UcmF2
ZXJzZXIgKml0KQogewotCWJvb2wgdmlzaXQgPSB0cnVlOworICAgIGJvb2wgdmlzaXQgPSB0cnVl
OwogCi0JaWYgKGl0LT5wcmVWaXNpdCkKLQkJdmlzaXQgPSBpdC0+dmlzaXRTZWxlY3Rpb24oUHJl
VmlzaXQsIHRoaXMpOwotCQotCWlmICh2aXNpdCkgewotCQlpdC0+aW5jcmVtZW50RGVwdGgoKTsK
LQkJaWYgKGl0LT5yaWdodFRvTGVmdCkgewotCQkJaWYgKGZhbHNlQmxvY2spCi0JCQkJZmFsc2VC
bG9jay0+dHJhdmVyc2UoaXQpOwotCQkJaWYgKHRydWVCbG9jaykKLQkJCQl0cnVlQmxvY2stPnRy
YXZlcnNlKGl0KTsKLQkJCWNvbmRpdGlvbi0+dHJhdmVyc2UoaXQpOwotCQl9IGVsc2UgewotCQkJ
Y29uZGl0aW9uLT50cmF2ZXJzZShpdCk7Ci0JCQlpZiAodHJ1ZUJsb2NrKQotCQkJCXRydWVCbG9j
ay0+dHJhdmVyc2UoaXQpOwotCQkJaWYgKGZhbHNlQmxvY2spCi0JCQkJZmFsc2VCbG9jay0+dHJh
dmVyc2UoaXQpOwotCQl9Ci0JCWl0LT5kZWNyZW1lbnREZXB0aCgpOwotCX0KKyAgICBpZiAoaXQt
PnByZVZpc2l0KQorICAgICAgICB2aXNpdCA9IGl0LT52aXNpdFNlbGVjdGlvbihQcmVWaXNpdCwg
dGhpcyk7CisgICAgCisgICAgaWYgKHZpc2l0KSB7CisgICAgICAgIGl0LT5pbmNyZW1lbnREZXB0
aCh0aGlzKTsKKyAgICAgICAgaWYgKGl0LT5yaWdodFRvTGVmdCkgeworICAgICAgICAgICAgaWYg
KGZhbHNlQmxvY2spCisgICAgICAgICAgICAgICAgZmFsc2VCbG9jay0+dHJhdmVyc2UoaXQpOwor
ICAgICAgICAgICAgaWYgKHRydWVCbG9jaykKKyAgICAgICAgICAgICAgICB0cnVlQmxvY2stPnRy
YXZlcnNlKGl0KTsKKyAgICAgICAgICAgIGNvbmRpdGlvbi0+dHJhdmVyc2UoaXQpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgY29uZGl0aW9uLT50cmF2ZXJzZShpdCk7CisgICAgICAg
ICAgICBpZiAodHJ1ZUJsb2NrKQorICAgICAgICAgICAgICAgIHRydWVCbG9jay0+dHJhdmVyc2Uo
aXQpOworICAgICAgICAgICAgaWYgKGZhbHNlQmxvY2spCisgICAgICAgICAgICAgICAgZmFsc2VC
bG9jay0+dHJhdmVyc2UoaXQpOworICAgICAgICB9CisgICAgICAgIGl0LT5kZWNyZW1lbnREZXB0
aCgpOworICAgIH0KIAotCWlmICh2aXNpdCAmJiBpdC0+cG9zdFZpc2l0KQotCQlpdC0+dmlzaXRT
ZWxlY3Rpb24oUG9zdFZpc2l0LCB0aGlzKTsKKyAgICBpZiAodmlzaXQgJiYgaXQtPnBvc3RWaXNp
dCkKKyAgICAgICAgaXQtPnZpc2l0U2VsZWN0aW9uKFBvc3RWaXNpdCwgdGhpcyk7CiB9CiAKIC8v
CiAvLyBUcmF2ZXJzZSBhIGxvb3Agbm9kZS4gIFNhbWUgY29tbWVudHMgaW4gYmluYXJ5IG5vZGUg
YXBwbHkgaGVyZS4KIC8vCi12b2lkIFRJbnRlcm1Mb29wOjp0cmF2ZXJzZShUSW50ZXJtVHJhdmVy
c2VyKiBpdCkKK3ZvaWQgVEludGVybUxvb3A6OnRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIgKml0
KQogewotCWJvb2wgdmlzaXQgPSB0cnVlOworICAgIGJvb2wgdmlzaXQgPSB0cnVlOworCisgICAg
aWYgKGl0LT5wcmVWaXNpdCkKKyAgICAgICAgdmlzaXQgPSBpdC0+dmlzaXRMb29wKFByZVZpc2l0
LCB0aGlzKTsKKyAgICAKKyAgICBpZiAodmlzaXQpCisgICAgeworICAgICAgICBpdC0+aW5jcmVt
ZW50RGVwdGgodGhpcyk7CisKKyAgICAgICAgaWYgKGl0LT5yaWdodFRvTGVmdCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKGV4cHIpCisgICAgICAgICAgICAgICAgZXhwci0+dHJhdmVyc2Uo
aXQpOworCisgICAgICAgICAgICBpZiAoYm9keSkKKyAgICAgICAgICAgICAgICBib2R5LT50cmF2
ZXJzZShpdCk7CisKKyAgICAgICAgICAgIGlmIChjb25kKQorICAgICAgICAgICAgICAgIGNvbmQt
PnRyYXZlcnNlKGl0KTsKKworICAgICAgICAgICAgaWYgKGluaXQpCisgICAgICAgICAgICAgICAg
aW5pdC0+dHJhdmVyc2UoaXQpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKGluaXQpCisgICAgICAgICAgICAgICAgaW5pdC0+dHJhdmVyc2UoaXQp
OworCisgICAgICAgICAgICBpZiAoY29uZCkKKyAgICAgICAgICAgICAgICBjb25kLT50cmF2ZXJz
ZShpdCk7CisKKyAgICAgICAgICAgIGlmIChib2R5KQorICAgICAgICAgICAgICAgIGJvZHktPnRy
YXZlcnNlKGl0KTsKKworICAgICAgICAgICAgaWYgKGV4cHIpCisgICAgICAgICAgICAgICAgZXhw
ci0+dHJhdmVyc2UoaXQpOworICAgICAgICB9CisKKyAgICAgICAgaXQtPmRlY3JlbWVudERlcHRo
KCk7CisgICAgfQogCi0JaWYoaXQtPnByZVZpc2l0KQotCXsKLQkJdmlzaXQgPSBpdC0+dmlzaXRM
b29wKFByZVZpc2l0LCB0aGlzKTsKLQl9Ci0JCi0JaWYodmlzaXQpCi0JewotCQlpdC0+aW5jcmVt
ZW50RGVwdGgoKTsKLQotCQlpZihpdC0+cmlnaHRUb0xlZnQpCi0JCXsKLQkJCWlmKGV4cHIpCi0J
CQl7Ci0JCQkJZXhwci0+dHJhdmVyc2UoaXQpOwotCQkJfQotCi0JCQlpZihib2R5KQotCQkJewot
CQkJCWJvZHktPnRyYXZlcnNlKGl0KTsKLQkJCX0KLQotCQkJaWYoY29uZCkKLQkJCXsKLQkJCQlj
b25kLT50cmF2ZXJzZShpdCk7Ci0JCQl9Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQlpZihjb25kKQot
CQkJewotCQkJCWNvbmQtPnRyYXZlcnNlKGl0KTsKLQkJCX0KLQotCQkJaWYoYm9keSkKLQkJCXsK
LQkJCQlib2R5LT50cmF2ZXJzZShpdCk7Ci0JCQl9Ci0KLQkJCWlmKGV4cHIpCi0JCQl7Ci0JCQkJ
ZXhwci0+dHJhdmVyc2UoaXQpOwotCQkJfQotCQl9Ci0KLQkJaXQtPmRlY3JlbWVudERlcHRoKCk7
Ci0JfQotCi0JaWYodmlzaXQgJiYgaXQtPnBvc3RWaXNpdCkKLQl7Ci0JCWl0LT52aXNpdExvb3Ao
UG9zdFZpc2l0LCB0aGlzKTsKLQl9CisgICAgaWYgKHZpc2l0ICYmIGl0LT5wb3N0VmlzaXQpCisg
ICAgICAgIGl0LT52aXNpdExvb3AoUG9zdFZpc2l0LCB0aGlzKTsKIH0KIAogLy8KIC8vIFRyYXZl
cnNlIGEgYnJhbmNoIG5vZGUuICBTYW1lIGNvbW1lbnRzIGluIGJpbmFyeSBub2RlIGFwcGx5IGhl
cmUuCiAvLwotdm9pZCBUSW50ZXJtQnJhbmNoOjp0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyKiBp
dCkKK3ZvaWQgVEludGVybUJyYW5jaDo6dHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqaXQpCiB7
Ci0JYm9vbCB2aXNpdCA9IHRydWU7CisgICAgYm9vbCB2aXNpdCA9IHRydWU7CiAKLQlpZiAoaXQt
PnByZVZpc2l0KQotCQl2aXNpdCA9IGl0LT52aXNpdEJyYW5jaChQcmVWaXNpdCwgdGhpcyk7Ci0J
Ci0JaWYgKHZpc2l0ICYmIGV4cHJlc3Npb24pIHsKLQkJaXQtPmluY3JlbWVudERlcHRoKCk7Ci0J
CWV4cHJlc3Npb24tPnRyYXZlcnNlKGl0KTsKLQkJaXQtPmRlY3JlbWVudERlcHRoKCk7Ci0JfQor
ICAgIGlmIChpdC0+cHJlVmlzaXQpCisgICAgICAgIHZpc2l0ID0gaXQtPnZpc2l0QnJhbmNoKFBy
ZVZpc2l0LCB0aGlzKTsKKyAgICAKKyAgICBpZiAodmlzaXQgJiYgZXhwcmVzc2lvbikgeworICAg
ICAgICBpdC0+aW5jcmVtZW50RGVwdGgodGhpcyk7CisgICAgICAgIGV4cHJlc3Npb24tPnRyYXZl
cnNlKGl0KTsKKyAgICAgICAgaXQtPmRlY3JlbWVudERlcHRoKCk7CisgICAgfQogCi0JaWYgKHZp
c2l0ICYmIGl0LT5wb3N0VmlzaXQpCi0JCWl0LT52aXNpdEJyYW5jaChQb3N0VmlzaXQsIHRoaXMp
OworICAgIGlmICh2aXNpdCAmJiBpdC0+cG9zdFZpc2l0KQorICAgICAgICBpdC0+dmlzaXRCcmFu
Y2goUG9zdFZpc2l0LCB0aGlzKTsKIH0KIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL0ludGVybWVkaWF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0ludGVybWVkaWF0ZS5jcHAJKHJldmlzaW9uIDE1OTUz
MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbnRlcm1lZGlhdGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOSwxMSArMTksMTMgQEAKIAogYm9vbCBDb21wYXJlU3Ry
dWN0dXJlKGNvbnN0IFRUeXBlJiBsZWZ0Tm9kZVR5cGUsIENvbnN0YW50VW5pb24qIHJpZ2h0VW5p
b25BcnJheSwgQ29uc3RhbnRVbmlvbiogbGVmdFVuaW9uQXJyYXkpOwogCi1zdGF0aWMgVFByZWNp
c2lvbiBHZXRIaWdoZXJQcmVjaXNpb24oIFRQcmVjaXNpb24gbGVmdCwgVFByZWNpc2lvbiByaWdo
dCApeworc3RhdGljIFRQcmVjaXNpb24gR2V0SGlnaGVyUHJlY2lzaW9uKFRQcmVjaXNpb24gbGVm
dCwgVFByZWNpc2lvbiByaWdodCkKK3sKICAgICByZXR1cm4gbGVmdCA+IHJpZ2h0ID8gbGVmdCA6
IHJpZ2h0OwogfQogCi1jb25zdCBjaGFyKiBnZXRPcGVyYXRvclN0cmluZyhUT3BlcmF0b3Igb3Ap
IHsKK2NvbnN0IGNoYXIqIGdldE9wZXJhdG9yU3RyaW5nKFRPcGVyYXRvciBvcCkKK3sKICAgICBz
d2l0Y2ggKG9wKSB7CiAgICAgICBjYXNlIEVPcEluaXRpYWxpemU6IHJldHVybiAiPSI7CiAgICAg
ICBjYXNlIEVPcEFzc2lnbjogcmV0dXJuICI9IjsKQEAgLTc0MiwxMiArNzQ0LDY3IEBAIHZvaWQg
VEludGVybWVkaWF0ZTo6cmVtb3ZlKFRJbnRlcm1Ob2RlKiAKIC8vCiAvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKKyNkZWZp
bmUgUkVQTEFDRV9JRl9JUyhub2RlLCB0eXBlLCBvcmlnaW5hbCwgcmVwbGFjZW1lbnQpIFwKKyAg
ICBpZiAobm9kZSA9PSBvcmlnaW5hbCkgeyBcCisgICAgICAgIG5vZGUgPSBzdGF0aWNfY2FzdDx0
eXBlICo+KHJlcGxhY2VtZW50KTsgXAorICAgICAgICByZXR1cm4gdHJ1ZTsgXAorICAgIH0KKwor
Ym9vbCBUSW50ZXJtTG9vcDo6cmVwbGFjZUNoaWxkTm9kZSgKKyAgICBUSW50ZXJtTm9kZSAqb3Jp
Z2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCkKK3sKKyAgICBSRVBMQUNFX0lGX0lTKGlu
aXQsIFRJbnRlcm1Ob2RlLCBvcmlnaW5hbCwgcmVwbGFjZW1lbnQpOworICAgIFJFUExBQ0VfSUZf
SVMoY29uZCwgVEludGVybVR5cGVkLCBvcmlnaW5hbCwgcmVwbGFjZW1lbnQpOworICAgIFJFUExB
Q0VfSUZfSVMoZXhwciwgVEludGVybVR5cGVkLCBvcmlnaW5hbCwgcmVwbGFjZW1lbnQpOworICAg
IFJFUExBQ0VfSUZfSVMoYm9keSwgVEludGVybU5vZGUsIG9yaWdpbmFsLCByZXBsYWNlbWVudCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFRJbnRlcm1CcmFuY2g6OnJlcGxhY2VDaGls
ZE5vZGUoCisgICAgVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1l
bnQpCit7CisgICAgUkVQTEFDRV9JRl9JUyhleHByZXNzaW9uLCBUSW50ZXJtVHlwZWQsIG9yaWdp
bmFsLCByZXBsYWNlbWVudCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFRJbnRlcm1C
aW5hcnk6OnJlcGxhY2VDaGlsZE5vZGUoCisgICAgVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50
ZXJtTm9kZSAqcmVwbGFjZW1lbnQpCit7CisgICAgUkVQTEFDRV9JRl9JUyhsZWZ0LCBUSW50ZXJt
VHlwZWQsIG9yaWdpbmFsLCByZXBsYWNlbWVudCk7CisgICAgUkVQTEFDRV9JRl9JUyhyaWdodCwg
VEludGVybVR5cGVkLCBvcmlnaW5hbCwgcmVwbGFjZW1lbnQpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBUSW50ZXJtVW5hcnk6OnJlcGxhY2VDaGlsZE5vZGUoCisgICAgVEludGVybU5v
ZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpCit7CisgICAgUkVQTEFDRV9J
Rl9JUyhvcGVyYW5kLCBUSW50ZXJtVHlwZWQsIG9yaWdpbmFsLCByZXBsYWNlbWVudCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIFRJbnRlcm1BZ2dyZWdhdGU6OnJlcGxhY2VDaGlsZE5v
ZGUoCisgICAgVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQp
Cit7CisgICAgZm9yIChzaXplX3QgaWkgPSAwOyBpaSA8IHNlcXVlbmNlLnNpemUoKTsgKytpaSkK
KyAgICB7CisgICAgICAgIFJFUExBQ0VfSUZfSVMoc2VxdWVuY2VbaWldLCBUSW50ZXJtTm9kZSwg
b3JpZ2luYWwsIHJlcGxhY2VtZW50KTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiti
b29sIFRJbnRlcm1TZWxlY3Rpb246OnJlcGxhY2VDaGlsZE5vZGUoCisgICAgVEludGVybU5vZGUg
Km9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpCit7CisgICAgUkVQTEFDRV9JRl9J
Uyhjb25kaXRpb24sIFRJbnRlcm1UeXBlZCwgb3JpZ2luYWwsIHJlcGxhY2VtZW50KTsKKyAgICBS
RVBMQUNFX0lGX0lTKHRydWVCbG9jaywgVEludGVybU5vZGUsIG9yaWdpbmFsLCByZXBsYWNlbWVu
dCk7CisgICAgUkVQTEFDRV9JRl9JUyhmYWxzZUJsb2NrLCBUSW50ZXJtTm9kZSwgb3JpZ2luYWws
IHJlcGxhY2VtZW50KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIC8vCiAvLyBTYXkgd2hldGhl
ciBvciBub3QgYW4gb3BlcmF0aW9uIG5vZGUgY2hhbmdlcyB0aGUgdmFsdWUgb2YgYSB2YXJpYWJs
ZS4KIC8vCi0vLyBSZXR1cm5zIHRydWUgaWYgc3RhdGUgaXMgbW9kaWZpZWQuCi0vLwotYm9vbCBU
SW50ZXJtT3BlcmF0b3I6Om1vZGlmaWVzU3RhdGUoKSBjb25zdAorYm9vbCBUSW50ZXJtT3BlcmF0
b3I6OmlzQXNzaWdubWVudCgpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBj
YXNlIEVPcFBvc3RJbmNyZW1lbnQ6CkBAIC03OTYsNiArODUzLDcgQEAgYm9vbCBUSW50ZXJtT3Bl
cmF0b3I6OmlzQ29uc3RydWN0b3IoKSBjbwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIH0KKwogLy8KIC8vIE1ha2Ugc3VyZSB0aGUgdHlwZSBvZiBhIHVuYXJ5IG9wZXJhdG9yIGlz
IGFwcHJvcHJpYXRlIGZvciBpdHMKIC8vIGNvbWJpbmF0aW9uIG9mIG9wZXJhdGlvbiBhbmQgb3Bl
cmFuZCB0eXBlLgpAQCAtMTM2NiwxOCArMTQyNCwxOCBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1l
ZGlhdGU6OnByb21vdGVDb25zCiAgICAgQ29uc3RhbnRVbmlvbiAqbGVmdFVuaW9uQXJyYXkgPSBu
ZXcgQ29uc3RhbnRVbmlvbltzaXplXTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgaSsrKSB7Ci0KKyAgICAgICAgaW50IGluZGV4ID0gc3RhdGljX2Nhc3Q8aW50PihpKTsKICAg
ICAgICAgc3dpdGNoIChwcm9tb3RlVG8pIHsKICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CiAg
ICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5nZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBsZWZ0VW5pb25BcnJheVtpXS5zZXRGQ29uc3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vZGUtPmdl
dElDb25zdChpKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0u
c2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0Pihub2RlLT5nZXRJQ29uc3QoaW5kZXgpKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBF
YnRCb29sOgotICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNv
bnN0KHN0YXRpY19jYXN0PGZsb2F0Pihub2RlLT5nZXRCQ29uc3QoaSkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEZDb25zdChzdGF0aWNfY2FzdDxmbG9h
dD4obm9kZS0+Z2V0QkNvbnN0KGluZGV4KSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRGQ29uc3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5v
ZGUtPmdldEZDb25zdChpKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJy
YXlbaV0uc2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0Pihub2RlLT5nZXRGQ29uc3QoaW5kZXgp
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShF
UHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQ2Fubm90IHByb21vdGUiKTsK
QEAgLTEzODcsMTMgKzE0NDUsMTMgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjpwcm9t
b3RlQ29ucwogICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CiAgICAgICAgICAgICAgICAgc3dpdGNo
IChub2RlLT5nZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpIHsKICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBFYnRJbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5z
ZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50Pihub2RlLT5nZXRJQ29uc3QoaSkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldElDb25zdChzdGF0aWNfY2FzdDxp
bnQ+KG5vZGUtPmdldElDb25zdChpbmRleCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50Pihub2Rl
LT5nZXRCQ29uc3QoaSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5
W2ldLnNldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KG5vZGUtPmdldEJDb25zdChpbmRleCkpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNl
IEVidEZsb2F0OgotICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0
SUNvbnN0KHN0YXRpY19jYXN0PGludD4obm9kZS0+Z2V0RkNvbnN0KGkpKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50
Pihub2RlLT5nZXRGQ29uc3QoaW5kZXgpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAg
IGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGlu
ZSgpLCAiQ2Fubm90IHByb21vdGUiKTsKQEAgLTE0MDMsMTMgKzE0NjEsMTMgQEAgVEludGVybVR5
cGVkKiBUSW50ZXJtZWRpYXRlOjpwcm9tb3RlQ29ucwogICAgICAgICAgICAgY2FzZSBFYnRCb29s
OgogICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0VHlwZSgpLmdldEJhc2ljVHlwZSgp
KSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgotICAgICAgICAgICAgICAgICAg
ICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0QkNvbnN0KG5vZGUtPmdldElDb25zdChpKSAhPSAw
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEJDb25zdChu
b2RlLT5nZXRJQ29uc3QoaW5kZXgpICE9IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEJDb25zdChub2RlLT5nZXRCQ29uc3QoaSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0QkNvbnN0KG5vZGUt
PmdldEJDb25zdChpbmRleCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBs
ZWZ0VW5pb25BcnJheVtpXS5zZXRCQ29uc3Qobm9kZS0+Z2V0RkNvbnN0KGkpICE9IDAuMGYpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0QkNvbnN0KG5vZGUt
PmdldEZDb25zdChpbmRleCkgIT0gMC4wZik7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAg
IGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGlu
ZSgpLCAiQ2Fubm90IHByb21vdGUiKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9NYXBMb25nVmFyaWFibGVOYW1lcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL01hcExvbmdWYXJpYWJsZU5hbWVzLmNwcAko
cmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L01hcExvbmdWYXJpYWJsZU5hbWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDEzICsxMDIs
NiBAQCB2b2lkIE1hcExvbmdWYXJpYWJsZU5hbWVzOjp2aXNpdFN5bWJvbChUCiAgICAgfQogfQog
Ci1ib29sIE1hcExvbmdWYXJpYWJsZU5hbWVzOjp2aXNpdExvb3AoVmlzaXQsIFRJbnRlcm1Mb29w
KiBub2RlKQotewotICAgIGlmIChub2RlLT5nZXRJbml0KCkpCi0gICAgICAgIG5vZGUtPmdldElu
aXQoKS0+dHJhdmVyc2UodGhpcyk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIFRTdHJpbmcgTWFw
TG9uZ1ZhcmlhYmxlTmFtZXM6Om1hcEdsb2JhbExvbmdOYW1lKGNvbnN0IFRTdHJpbmcmIG5hbWUp
CiB7CiAgICAgQVNTRVJUKG1HbG9iYWxNYXApOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL01hcExvbmdWYXJpYWJsZU5hbWVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL01hcExvbmdWYXJpYWJsZU5hbWVzLmgJ
KHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9NYXBMb25nVmFyaWFibGVOYW1lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw2IEBA
IHB1YmxpYzoKICAgICBNYXBMb25nVmFyaWFibGVOYW1lcyhMb25nTmFtZU1hcCogZ2xvYmFsTWFw
KTsKIAogICAgIHZpcnR1YWwgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sKik7Ci0gICAg
dmlydHVhbCBib29sIHZpc2l0TG9vcChWaXNpdCwgVEludGVybUxvb3AqKTsKIAogcHJpdmF0ZToK
ICAgICBUU3RyaW5nIG1hcEdsb2JhbExvbmdOYW1lKGNvbnN0IFRTdHJpbmcmIG5hbWUpOwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL05vZGVTZWFyY2guaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvTm9kZVNlYXJj
aC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L05vZGVTZWFyY2guaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc4IEBACisvLworLy8gQ29w
eXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworLy8gTm9kZVNlYXJjaC5oOiBVdGlsaXRpZXMgZm9yIHNlYXJjaGluZyB0cmFuc2xh
dG9yIG5vZGUgZ3JhcGhzCisvLworCisjaWZuZGVmIFRSQU5TTEFUT1JfTk9ERVNFQVJDSF9IXwor
I2RlZmluZSBUUkFOU0xBVE9SX05PREVTRUFSQ0hfSF8KKworbmFtZXNwYWNlIHNoCit7CisKK3Rl
bXBsYXRlIDxjbGFzcyBQYXJlbnQ+CitjbGFzcyBOb2RlU2VhcmNoVHJhdmVyc2VyIDogcHVibGlj
IFRJbnRlcm1UcmF2ZXJzZXIKK3sKKyAgcHVibGljOgorICAgIE5vZGVTZWFyY2hUcmF2ZXJzZXIo
KQorICAgICAgICA6IG1Gb3VuZChmYWxzZSkKKyAgICB7fQorCisgICAgYm9vbCBmb3VuZCgpIGNv
bnN0IHsgcmV0dXJuIG1Gb3VuZDsgfQorCisgICAgc3RhdGljIGJvb2wgc2VhcmNoKFRJbnRlcm1O
b2RlICpub2RlKQorICAgIHsKKyAgICAgICAgUGFyZW50IHNlYXJjaFRyYXZlcnNlcjsKKyAgICAg
ICAgbm9kZS0+dHJhdmVyc2UoJnNlYXJjaFRyYXZlcnNlcik7CisgICAgICAgIHJldHVybiBzZWFy
Y2hUcmF2ZXJzZXIuZm91bmQoKTsKKyAgICB9CisKKyAgcHJvdGVjdGVkOgorICAgIGJvb2wgbUZv
dW5kOworfTsKKworY2xhc3MgRmluZERpc2NhcmQgOiBwdWJsaWMgTm9kZVNlYXJjaFRyYXZlcnNl
cjxGaW5kRGlzY2FyZD4KK3sKKyAgcHVibGljOgorICAgIHZpcnR1YWwgYm9vbCB2aXNpdEJyYW5j
aChWaXNpdCB2aXNpdCwgVEludGVybUJyYW5jaCAqbm9kZSkKKyAgICB7CisgICAgICAgIHN3aXRj
aCAobm9kZS0+Z2V0Rmxvd09wKCkpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEVPcEtpbGw6
CisgICAgICAgICAgICBtRm91bmQgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICBkZWZhdWx0OiBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAhbUZvdW5k
OworICAgIH0KK307CisKK2NsYXNzIEZpbmRTaWRlRWZmZWN0UmV3cml0aW5nIDogcHVibGljIE5v
ZGVTZWFyY2hUcmF2ZXJzZXI8RmluZFNpZGVFZmZlY3RSZXdyaXRpbmc+Cit7CisgIHB1YmxpYzoK
KyAgICB2aXJ0dWFsIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkg
Km5vZGUpCisgICAgeworICAgICAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCisgICAgICAgIHsK
KyAgICAgICAgICBjYXNlIEVPcExvZ2ljYWxPcjoKKyAgICAgICAgICBjYXNlIEVPcExvZ2ljYWxB
bmQ6CisgICAgICAgICAgICBpZiAobm9kZS0+Z2V0UmlnaHQoKS0+aGFzU2lkZUVmZmVjdHMoKSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtRm91bmQgPSB0cnVlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBkZWZhdWx0OiBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiAhbUZvdW5kOworICAgIH0KK307CisKK30KKworI2Vu
ZGlmIC8vIFRSQU5TTEFUT1JfTk9ERVNFQVJDSF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTEJhc2UuY3BwCShyZXZp
c2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0
cHV0R0xTTEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzUsNyArNDM1LDcgQEAgYm9vbCBU
T3V0cHV0R0xTTEJhc2U6OnZpc2l0U2VsZWN0aW9uKFZpcwogICAgICAgICBub2RlLT5nZXRDb25k
aXRpb24oKS0+dHJhdmVyc2UodGhpcyk7CiAgICAgICAgIG91dCA8PCAiKVxuIjsKIAotICAgICAg
ICBpbmNyZW1lbnREZXB0aCgpOworICAgICAgICBpbmNyZW1lbnREZXB0aChub2RlKTsKICAgICAg
ICAgdmlzaXRDb2RlQmxvY2sobm9kZS0+Z2V0VHJ1ZUJsb2NrKCkpOwogCiAgICAgICAgIGlmIChu
b2RlLT5nZXRGYWxzZUJsb2NrKCkpCkBAIC00NjAsNyArNDYwLDcgQEAgYm9vbCBUT3V0cHV0R0xT
TEJhc2U6OnZpc2l0QWdncmVnYXRlKFZpcwogICAgICAgICAgICAgLy8gU2NvcGUgdGhlIHNlcXVl
bmNlcyBleGNlcHQgd2hlbiBhdCB0aGUgZ2xvYmFsIHNjb3BlLgogICAgICAgICAgICAgaWYgKGRl
cHRoID4gMCkgb3V0IDw8ICJ7XG4iOwogCi0gICAgICAgICAgICBpbmNyZW1lbnREZXB0aCgpOwor
ICAgICAgICAgICAgaW5jcmVtZW50RGVwdGgobm9kZSk7CiAgICAgICAgICAgICBjb25zdCBUSW50
ZXJtU2VxdWVuY2UmIHNlcXVlbmNlID0gbm9kZS0+Z2V0U2VxdWVuY2UoKTsKICAgICAgICAgICAg
IGZvciAoVEludGVybVNlcXVlbmNlOjpjb25zdF9pdGVyYXRvciBpdGVyID0gc2VxdWVuY2UuYmVn
aW4oKTsKICAgICAgICAgICAgICAgICAgaXRlciAhPSBzZXF1ZW5jZS5lbmQoKTsgKytpdGVyKQpA
QCAtNDk4LDcgKzQ5OCw3IEBAIGJvb2wgVE91dHB1dEdMU0xCYXNlOjp2aXNpdEFnZ3JlZ2F0ZShW
aXMKICAgICAgICAgICAgIHdyaXRlVmFyaWFibGVUeXBlKG5vZGUtPmdldFR5cGUoKSk7CiAgICAg
ICAgICAgICBvdXQgPDwgIiAiIDw8IGhhc2hGdW5jdGlvbk5hbWUobm9kZS0+Z2V0TmFtZSgpKTsK
IAotICAgICAgICAgICAgaW5jcmVtZW50RGVwdGgoKTsKKyAgICAgICAgICAgIGluY3JlbWVudERl
cHRoKG5vZGUpOwogICAgICAgICAgICAgLy8gRnVuY3Rpb24gZGVmaW5pdGlvbiBub2RlIGNvbnRh
aW5zIG9uZSBvciB0d28gY2hpbGRyZW4gbm9kZXMKICAgICAgICAgICAgIC8vIHJlcHJlc2VudGlu
ZyBmdW5jdGlvbiBwYXJhbWV0ZXJzIGFuZCBmdW5jdGlvbiBib2R5LiBUaGUgbGF0dGVyCiAgICAg
ICAgICAgICAvLyBpcyBub3QgcHJlc2VudCBpbiBjYXNlIG9mIGVtcHR5IGZ1bmN0aW9uIGJvZGll
cy4KQEAgLTYzOCw3ICs2MzgsNyBAQCBib29sIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRMb29wKFZp
c2l0IHZpCiB7CiAgICAgVEluZm9TaW5rQmFzZSYgb3V0ID0gb2JqU2luaygpOwogCi0gICAgaW5j
cmVtZW50RGVwdGgoKTsKKyAgICBpbmNyZW1lbnREZXB0aChub2RlKTsKICAgICAvLyBMb29wIGhl
YWRlci4KICAgICBUTG9vcFR5cGUgbG9vcFR5cGUgPSBub2RlLT5nZXRUeXBlKCk7CiAgICAgaWYg
KGxvb3BUeXBlID09IEVMb29wRm9yKSAgLy8gZm9yIGxvb3AKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5oCShyZXZp
c2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0
cHV0R0xTTEJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTEsNyArMTEsNyBAQAogCiAjaW5jbHVk
ZSAiY29tcGlsZXIvRm9yTG9vcFVucm9sbC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL2ludGVybWVk
aWF0ZS5oIgotI2luY2x1ZGUgImNvbXBpbGVyL1BhcnNlSGVscGVyLmgiCisjaW5jbHVkZSAiY29t
cGlsZXIvUGFyc2VDb250ZXh0LmgiCiAKIGNsYXNzIFRPdXRwdXRHTFNMQmFzZSA6IHB1YmxpYyBU
SW50ZXJtVHJhdmVyc2VyCiB7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvT3V0cHV0SExTTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0SExTTC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyLDYgKzEyLDcgQEAKICNpbmNsdWRlICJjb21waWxlci9JbmZvU2luay5oIgog
I2luY2x1ZGUgImNvbXBpbGVyL1NlYXJjaFN5bWJvbC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL1Vu
Zm9sZFNob3J0Q2lyY3VpdC5oIgorI2luY2x1ZGUgImNvbXBpbGVyL05vZGVTZWFyY2guaCIKIAog
I2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjZmxvYXQ+CkBAIC02OCwyMiArNjksMTEg
QEAgT3V0cHV0SExTTDo6T3V0cHV0SExTTChUUGFyc2VDb250ZXh0ICZjbwogICAgIG1Vc2VzRmFj
ZWZvcndhcmQyID0gZmFsc2U7CiAgICAgbVVzZXNGYWNlZm9yd2FyZDMgPSBmYWxzZTsKICAgICBt
VXNlc0ZhY2Vmb3J3YXJkNCA9IGZhbHNlOwotICAgIG1Vc2VzRXF1YWxNYXQyID0gZmFsc2U7Ci0g
ICAgbVVzZXNFcXVhbE1hdDMgPSBmYWxzZTsKLSAgICBtVXNlc0VxdWFsTWF0NCA9IGZhbHNlOwot
ICAgIG1Vc2VzRXF1YWxWZWMyID0gZmFsc2U7Ci0gICAgbVVzZXNFcXVhbFZlYzMgPSBmYWxzZTsK
LSAgICBtVXNlc0VxdWFsVmVjNCA9IGZhbHNlOwotICAgIG1Vc2VzRXF1YWxJVmVjMiA9IGZhbHNl
OwotICAgIG1Vc2VzRXF1YWxJVmVjMyA9IGZhbHNlOwotICAgIG1Vc2VzRXF1YWxJVmVjNCA9IGZh
bHNlOwotICAgIG1Vc2VzRXF1YWxCVmVjMiA9IGZhbHNlOwotICAgIG1Vc2VzRXF1YWxCVmVjMyA9
IGZhbHNlOwotICAgIG1Vc2VzRXF1YWxCVmVjNCA9IGZhbHNlOwogICAgIG1Vc2VzQXRhbjJfMSA9
IGZhbHNlOwogICAgIG1Vc2VzQXRhbjJfMiA9IGZhbHNlOwogICAgIG1Vc2VzQXRhbjJfMyA9IGZh
bHNlOwogICAgIG1Vc2VzQXRhbjJfNCA9IGZhbHNlOworICAgIG1Vc2VzRGlzY2FyZFJld3JpdGlu
ZyA9IGZhbHNlOwogCiAgICAgbU51bVJlbmRlclRhcmdldHMgPSByZXNvdXJjZXMuRVhUX2RyYXdf
YnVmZmVycyA/IHJlc291cmNlcy5NYXhEcmF3QnVmZmVycyA6IDE7CiAKQEAgLTIwOCw2ICsxOTgs
MTEgQEAgdm9pZCBPdXRwdXRITFNMOjpoZWFkZXIoKQogICAgICAgICBhdHRyaWJ1dGVzICs9ICJz
dGF0aWMgIiArIHR5cGVTdHJpbmcodHlwZSkgKyAiICIgKyBkZWNvcmF0ZShuYW1lKSArIGFycmF5
U3RyaW5nKHR5cGUpICsgIiA9ICIgKyBpbml0aWFsaXplcih0eXBlKSArICI7XG4iOwogICAgIH0K
IAorICAgIGlmIChtVXNlc0Rpc2NhcmRSZXdyaXRpbmcpCisgICAgeworICAgICAgICBvdXQgPDwg
IiNkZWZpbmUgQU5HTEVfVVNFU19ESVNDQVJEX1JFV1JJVElORyIgPDwgIlxuIjsKKyAgICB9CisK
ICAgICBpZiAoc2hhZGVyVHlwZSA9PSBTSF9GUkFHTUVOVF9TSEFERVIpCiAgICAgewogICAgICAg
ICBURXh0ZW5zaW9uQmVoYXZpb3I6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtQ29udGV4dC5leHRl
bnNpb25CZWhhdmlvcigpLmZpbmQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKQEAgLTk5NiwxMDgg
Kzk5MSw2IEBAIHZvaWQgT3V0cHV0SExTTDo6aGVhZGVyKCkKICAgICAgICAgICAgICAgICJcbiI7
CiAgICAgfQogCi0gICAgaWYgKG1Vc2VzRXF1YWxNYXQyKQotICAgIHsKLSAgICAgICAgb3V0IDw8
ICJib29sIGVxdWFsKGZsb2F0MngyIG0sIGZsb2F0MngyIG4pXG4iCi0gICAgICAgICAgICAgICAi
e1xuIgotICAgICAgICAgICAgICAgIiAgICByZXR1cm4gbVswXVswXSA9PSBuWzBdWzBdICYmIG1b
MF1bMV0gPT0gblswXVsxXSAmJlxuIgotICAgICAgICAgICAgICAgIiAgICAgICAgICAgbVsxXVsw
XSA9PSBuWzFdWzBdICYmIG1bMV1bMV0gPT0gblsxXVsxXTtcbiIKLSAgICAgICAgICAgICAgICJ9
XG4iOwotICAgIH0KLQotICAgIGlmIChtVXNlc0VxdWFsTWF0MykKLSAgICB7Ci0gICAgICAgIG91
dCA8PCAiYm9vbCBlcXVhbChmbG9hdDN4MyBtLCBmbG9hdDN4MyBuKVxuIgotICAgICAgICAgICAg
ICAgIntcbiIKLSAgICAgICAgICAgICAgICIgICAgcmV0dXJuIG1bMF1bMF0gPT0gblswXVswXSAm
JiBtWzBdWzFdID09IG5bMF1bMV0gJiYgbVswXVsyXSA9PSBuWzBdWzJdICYmXG4iCi0gICAgICAg
ICAgICAgICAiICAgICAgICAgICBtWzFdWzBdID09IG5bMV1bMF0gJiYgbVsxXVsxXSA9PSBuWzFd
WzFdICYmIG1bMV1bMl0gPT0gblsxXVsyXSAmJlxuIgotICAgICAgICAgICAgICAgIiAgICAgICAg
ICAgbVsyXVswXSA9PSBuWzJdWzBdICYmIG1bMl1bMV0gPT0gblsyXVsxXSAmJiBtWzJdWzJdID09
IG5bMl1bMl07XG4iCi0gICAgICAgICAgICAgICAifVxuIjsKLSAgICB9Ci0KLSAgICBpZiAobVVz
ZXNFcXVhbE1hdDQpCi0gICAgewotICAgICAgICBvdXQgPDwgImJvb2wgZXF1YWwoZmxvYXQ0eDQg
bSwgZmxvYXQ0eDQgbilcbiIKLSAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAi
ICAgIHJldHVybiBtWzBdWzBdID09IG5bMF1bMF0gJiYgbVswXVsxXSA9PSBuWzBdWzFdICYmIG1b
MF1bMl0gPT0gblswXVsyXSAmJiBtWzBdWzNdID09IG5bMF1bM10gJiZcbiIKLSAgICAgICAgICAg
ICAgICIgICAgICAgICAgIG1bMV1bMF0gPT0gblsxXVswXSAmJiBtWzFdWzFdID09IG5bMV1bMV0g
JiYgbVsxXVsyXSA9PSBuWzFdWzJdICYmIG1bMV1bM10gPT0gblsxXVszXSAmJlxuIgotICAgICAg
ICAgICAgICAgIiAgICAgICAgICAgbVsyXVswXSA9PSBuWzJdWzBdICYmIG1bMl1bMV0gPT0gblsy
XVsxXSAmJiBtWzJdWzJdID09IG5bMl1bMl0gJiYgbVsyXVszXSA9PSBuWzJdWzNdICYmXG4iCi0g
ICAgICAgICAgICAgICAiICAgICAgICAgICBtWzNdWzBdID09IG5bM11bMF0gJiYgbVszXVsxXSA9
PSBuWzNdWzFdICYmIG1bM11bMl0gPT0gblszXVsyXSAmJiBtWzNdWzNdID09IG5bM11bM107XG4i
Ci0gICAgICAgICAgICAgICAifVxuIjsKLSAgICB9Ci0KLSAgICBpZiAobVVzZXNFcXVhbFZlYzIp
Ci0gICAgewotICAgICAgICBvdXQgPDwgImJvb2wgZXF1YWwoZmxvYXQyIHYsIGZsb2F0MiB1KVxu
IgotICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHYueCA9
PSB1LnggJiYgdi55ID09IHUueTtcbiIKLSAgICAgICAgICAgICAgICJ9XG4iOwotICAgIH0KLQot
ICAgIGlmIChtVXNlc0VxdWFsVmVjMykKLSAgICB7Ci0gICAgICAgIG91dCA8PCAiYm9vbCBlcXVh
bChmbG9hdDMgdiwgZmxvYXQzIHUpXG4iCi0gICAgICAgICAgICAgICAie1xuIgotICAgICAgICAg
ICAgICAgIiAgICByZXR1cm4gdi54ID09IHUueCAmJiB2LnkgPT0gdS55ICYmIHYueiA9PSB1Lno7
XG4iCi0gICAgICAgICAgICAgICAifVxuIjsKLSAgICB9Ci0KLSAgICBpZiAobVVzZXNFcXVhbFZl
YzQpCi0gICAgewotICAgICAgICBvdXQgPDwgImJvb2wgZXF1YWwoZmxvYXQ0IHYsIGZsb2F0NCB1
KVxuIgotICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHYu
eCA9PSB1LnggJiYgdi55ID09IHUueSAmJiB2LnogPT0gdS56ICYmIHYudyA9PSB1Lnc7XG4iCi0g
ICAgICAgICAgICAgICAifVxuIjsKLSAgICB9Ci0KLSAgICBpZiAobVVzZXNFcXVhbElWZWMyKQot
ICAgIHsKLSAgICAgICAgb3V0IDw8ICJib29sIGVxdWFsKGludDIgdiwgaW50MiB1KVxuIgotICAg
ICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHYueCA9PSB1Lngg
JiYgdi55ID09IHUueTtcbiIKLSAgICAgICAgICAgICAgICJ9XG4iOwotICAgIH0KLQotICAgIGlm
IChtVXNlc0VxdWFsSVZlYzMpCi0gICAgewotICAgICAgICBvdXQgPDwgImJvb2wgZXF1YWwoaW50
MyB2LCBpbnQzIHUpXG4iCi0gICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAgIiAg
ICByZXR1cm4gdi54ID09IHUueCAmJiB2LnkgPT0gdS55ICYmIHYueiA9PSB1Lno7XG4iCi0gICAg
ICAgICAgICAgICAifVxuIjsKLSAgICB9Ci0KLSAgICBpZiAobVVzZXNFcXVhbElWZWM0KQotICAg
IHsKLSAgICAgICAgb3V0IDw8ICJib29sIGVxdWFsKGludDQgdiwgaW50NCB1KVxuIgotICAgICAg
ICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHYueCA9PSB1LnggJiYg
di55ID09IHUueSAmJiB2LnogPT0gdS56ICYmIHYudyA9PSB1Lnc7XG4iCi0gICAgICAgICAgICAg
ICAifVxuIjsKLSAgICB9Ci0KLSAgICBpZiAobVVzZXNFcXVhbEJWZWMyKQotICAgIHsKLSAgICAg
ICAgb3V0IDw8ICJib29sIGVxdWFsKGJvb2wyIHYsIGJvb2wyIHUpXG4iCi0gICAgICAgICAgICAg
ICAie1xuIgotICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdi54ID09IHUueCAmJiB2LnkgPT0g
dS55O1xuIgotICAgICAgICAgICAgICAgIn1cbiI7Ci0gICAgfQotCi0gICAgaWYgKG1Vc2VzRXF1
YWxCVmVjMykKLSAgICB7Ci0gICAgICAgIG91dCA8PCAiYm9vbCBlcXVhbChib29sMyB2LCBib29s
MyB1KVxuIgotICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICIgICAgcmV0dXJu
IHYueCA9PSB1LnggJiYgdi55ID09IHUueSAmJiB2LnogPT0gdS56O1xuIgotICAgICAgICAgICAg
ICAgIn1cbiI7Ci0gICAgfQotCi0gICAgaWYgKG1Vc2VzRXF1YWxCVmVjNCkKLSAgICB7Ci0gICAg
ICAgIG91dCA8PCAiYm9vbCBlcXVhbChib29sNCB2LCBib29sNCB1KVxuIgotICAgICAgICAgICAg
ICAgIntcbiIKLSAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHYueCA9PSB1LnggJiYgdi55ID09
IHUueSAmJiB2LnogPT0gdS56ICYmIHYudyA9PSB1Lnc7XG4iCi0gICAgICAgICAgICAgICAifVxu
IjsKLSAgICB9Ci0KICAgICBpZiAobVVzZXNBdGFuMl8xKQogICAgIHsKICAgICAgICAgb3V0IDw8
ICJmbG9hdCBhdGFueXgoZmxvYXQgeSwgZmxvYXQgeClcbiIKQEAgLTEzOTEsNTkgKzEyODQsMTUg
QEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEJpbmFyeShWaXNpdCB2aXNpdAogICAgICAgICB9CiAg
ICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGUtPmdldExlZnQoKS0+
aXNNYXRyaXgoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUt
PmdldExlZnQoKS0+Z2V0Tm9taW5hbFNpemUoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICBjYXNlIDI6IG1Vc2VzRXF1YWxNYXQyID0gdHJ1ZTsgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICBjYXNlIDM6IG1Vc2VzRXF1YWxNYXQzID0gdHJ1ZTsgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICBjYXNlIDQ6IG1Vc2VzRXF1YWxNYXQ0ID0gdHJ1ZTsgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmdldExlZnQoKS0+aXNWZWN0
b3IoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmdldExl
ZnQoKS0+Z2V0QmFzaWNUeXBlKCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5nZXRM
ZWZ0KCktPmdldE5vbWluYWxTaXplKCkpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICBjYXNlIDI6IG1Vc2VzRXF1YWxWZWMyID0gdHJ1ZTsgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgICAgY2FzZSAzOiBtVXNlc0VxdWFsVmVjMyA9IHRydWU7IGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDogbVVzZXNFcXVhbFZlYzQgPSB0cnVlOyBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgY2FzZSBFYnRJbnQ6Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0
TGVmdCgpLT5nZXROb21pbmFsU2l6ZSgpKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgY2FzZSAyOiBtVXNlc0VxdWFsSVZlYzIgPSB0cnVlOyBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IG1Vc2VzRXF1YWxJVmVjMyA9IHRydWU7IGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDogbVVzZXNFcXVhbElWZWM0ID0gdHJ1ZTsg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChub2Rl
LT5nZXRMZWZ0KCktPmdldE5vbWluYWxTaXplKCkpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IG1Vc2VzRXF1YWxCVmVjMiA9IHRydWU7IGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzogbVVzZXNFcXVhbEJWZWMzID0gdHJ1ZTsg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiBtVXNlc0VxdWFsQlZlYzQgPSB0
cnVlOyBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgp
OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisgICAgICAg
ICAgICBBU1NFUlQobm9kZS0+Z2V0TGVmdCgpLT5pc01hdHJpeCgpIHx8IG5vZGUtPmdldExlZnQo
KS0+aXNWZWN0b3IoKSk7CiAKICAgICAgICAgICAgIGlmIChub2RlLT5nZXRPcCgpID09IEVPcEVx
dWFsKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQs
ICJlcXVhbCgiLCAiLCAiLCAiKSIpOworICAgICAgICAgICAgICAgIG91dHB1dFRyaXBsZXQodmlz
aXQsICJhbGwoIiwgIiA9PSAiLCAiKSIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICIh
ZXF1YWwoIiwgIiwgIiwgIikiKTsKKyAgICAgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0
LCAiIWFsbCgiLCAiID09ICIsICIpIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7CkBAIC0xNDU3LDE1ICsxMzA2LDMxIEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRC
aW5hcnkoVmlzaXQgdmlzaXQKICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNWZWN0b3I6IG91dHB1
dFRyaXBsZXQodmlzaXQsICJtdWwodHJhbnNwb3NlKCIsICIpLCAiLCAiKSIpOyBicmVhazsKICAg
ICAgIGNhc2UgRU9wTWF0cml4VGltZXNNYXRyaXg6IG91dHB1dFRyaXBsZXQodmlzaXQsICJ0cmFu
c3Bvc2UobXVsKHRyYW5zcG9zZSgiLCAiKSwgdHJhbnNwb3NlKCIsICIpKSkiKTsgYnJlYWs7CiAg
ICAgICBjYXNlIEVPcExvZ2ljYWxPcjoKLSAgICAgICAgb3V0IDw8ICJzIiA8PCBtVW5mb2xkU2hv
cnRDaXJjdWl0LT5nZXROZXh0VGVtcG9yYXJ5SW5kZXgoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBpZiAobm9kZS0+Z2V0UmlnaHQoKS0+aGFzU2lkZUVmZmVjdHMoKSkKKyAgICAg
ICAgeworICAgICAgICAgICAgb3V0IDw8ICJzIiA8PCBtVW5mb2xkU2hvcnRDaXJjdWl0LT5nZXRO
ZXh0VGVtcG9yYXJ5SW5kZXgoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgb3V0cHV0VHJpcGxldCh2aXNp
dCwgIigiLCAiIHx8ICIsICIpIik7CisgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CiAgICAgICBjYXNlIEVPcExvZ2ljYWxYb3I6CiAgICAgICAgIG1Vc2VzWG9yID0gdHJ1ZTsKICAg
ICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgInhvcigiLCAiLCAiLCAiKSIpOwogICAgICAgICBi
cmVhazsKICAgICAgIGNhc2UgRU9wTG9naWNhbEFuZDoKLSAgICAgICAgb3V0IDw8ICJzIiA8PCBt
VW5mb2xkU2hvcnRDaXJjdWl0LT5nZXROZXh0VGVtcG9yYXJ5SW5kZXgoKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBpZiAobm9kZS0+Z2V0UmlnaHQoKS0+aGFzU2lkZUVmZmVjdHMo
KSkKKyAgICAgICAgeworICAgICAgICAgICAgb3V0IDw8ICJzIiA8PCBtVW5mb2xkU2hvcnRDaXJj
dWl0LT5nZXROZXh0VGVtcG9yYXJ5SW5kZXgoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgb3V0cHV0VHJp
cGxldCh2aXNpdCwgIigiLCAiICYmICIsICIpIik7CisgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CiAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwogICAgIH0KIApAQCAtMjEw
Miw3ICsxOTY3LDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdFNlbGVjdGlvbihWaXNpdCB2aQog
ICAgIHsKICAgICAgICAgbVVuZm9sZFNob3J0Q2lyY3VpdC0+dHJhdmVyc2Uobm9kZS0+Z2V0Q29u
ZGl0aW9uKCkpOwogCi0gICAgICAgIG91dCA8PCAiaWYoIjsKKyAgICAgICAgb3V0IDw8ICJpZiAo
IjsKIAogICAgICAgICBub2RlLT5nZXRDb25kaXRpb24oKS0+dHJhdmVyc2UodGhpcyk7CiAKQEAg
LTIxMTEsOSArMTk3NiwxNCBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0U2VsZWN0aW9uKFZpc2l0
IHZpCiAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xp
bmUpOwogICAgICAgICBvdXQgPDwgIntcbiI7CiAKKyAgICAgICAgYm9vbCBkaXNjYXJkID0gZmFs
c2U7CisKICAgICAgICAgaWYgKG5vZGUtPmdldFRydWVCbG9jaygpKQogICAgICAgICB7CiAgICAg
ICAgICAgICB0cmF2ZXJzZVN0YXRlbWVudHMobm9kZS0+Z2V0VHJ1ZUJsb2NrKCkpOworCisgICAg
ICAgICAgICAvLyBEZXRlY3QgdHJ1ZSBkaXNjYXJkCisgICAgICAgICAgICBkaXNjYXJkID0gKGRp
c2NhcmQgfHwgRmluZERpc2NhcmQ6OnNlYXJjaChub2RlLT5nZXRUcnVlQmxvY2soKSkpOwogICAg
ICAgICB9CiAKICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkuZmly
c3RfbGluZSk7CkBAIC0yMTMxLDYgKzIwMDEsMTUgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdFNl
bGVjdGlvbihWaXNpdCB2aQogCiAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUt
PmdldEZhbHNlQmxvY2soKS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICAgICAgb3V0
IDw8ICI7XG59XG4iOworCisgICAgICAgICAgICAvLyBEZXRlY3QgZmFsc2UgZGlzY2FyZAorICAg
ICAgICAgICAgZGlzY2FyZCA9IChkaXNjYXJkIHx8IEZpbmREaXNjYXJkOjpzZWFyY2gobm9kZS0+
Z2V0RmFsc2VCbG9jaygpKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBBTkdMRSBpc3N1ZSA0
ODY6IERldGVjdCBwcm9ibGVtYXRpYyBjb25kaXRpb25hbCBkaXNjYXJkCisgICAgICAgIGlmIChk
aXNjYXJkICYmIEZpbmRTaWRlRWZmZWN0UmV3cml0aW5nOjpzZWFyY2gobm9kZSkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1Vc2VzRGlzY2FyZFJld3JpdGluZyA9IHRydWU7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTIyMjgsNyArMjEwNyw5IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRCcmFu
Y2goVmlzaXQgdmlzaXQKIAogICAgIHN3aXRjaCAobm9kZS0+Z2V0Rmxvd09wKCkpCiAgICAgewot
ICAgICAgY2FzZSBFT3BLaWxsOiAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgImRpc2NhcmQ7XG4i
LCAiIiwgIiIpOyAgYnJlYWs7CisgICAgICBjYXNlIEVPcEtpbGw6CisgICAgICAgIG91dHB1dFRy
aXBsZXQodmlzaXQsICJkaXNjYXJkO1xuIiwgIiIsICIiKTsKKyAgICAgICAgYnJlYWs7CiAgICAg
ICBjYXNlIEVPcEJyZWFrOgogICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCiAgICAgICAg
IHsKQEAgLTI0NTEsNyArMjMzMiw3IEBAIGJvb2wgT3V0cHV0SExTTDo6aGFuZGxlRXhjZXNzaXZl
TG9vcChUSW4KIAogICAgICAgICAgICAgICAgIGlmICghZmlyc3RMb29wRnJhZ21lbnQpCiAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBvdXQgPDwgImlmKCFCcmVhayI7Cisg
ICAgICAgICAgICAgICAgICAgIG91dCA8PCAiaWYgKCFCcmVhayI7CiAgICAgICAgICAgICAgICAg
ICAgIGluZGV4LT50cmF2ZXJzZSh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIp
IHtcbiI7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjg2Myw3ICsyNzQ0LDcgQEAgdm9pZCBPdXRw
dXRITFNMOjphZGRDb25zdHJ1Y3Rvcihjb25zdCBUVAogICAgICAgICAgICAgY29uc3Qgc2l6ZV90
IHBhcmFtZXRlclNpemUgPSBwYXJhbWV0ZXIuZ2V0T2JqZWN0U2l6ZSgpOwogICAgICAgICAgICAg
Ym9vbCBtb3JlUGFyYW1ldGVycyA9IHBhcmFtZXRlckluZGV4ICsgMSA8IGN0b3JQYXJhbWV0ZXJz
LnNpemUoKTsKIAotICAgICAgICAgICAgY29uc3RydWN0b3IgKz0gIngiICsgc3RyKHBhcmFtZXRl
ckluZGV4KTsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yICs9ICJ4IiArIHN0cihzdGF0aWNfY2Fz
dDxpbnQ+KHBhcmFtZXRlckluZGV4KSk7CiAKICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXIuaXNT
Y2FsYXIoKSkKICAgICAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9PdXRwdXRITFNMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuaAkod29ya2luZyBj
b3B5KQpAQCAtMTUsNyArMTUsNyBAQAogI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgogCiAjaW5jbHVk
ZSAiY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvUGFyc2VIZWxw
ZXIuaCIKKyNpbmNsdWRlICJjb21waWxlci9QYXJzZUNvbnRleHQuaCIKICNpbmNsdWRlICJjb21w
aWxlci9Vbmlmb3JtLmgiCiAKIG5hbWVzcGFjZSBzaApAQCAtMTIxLDIyICsxMjEsMTEgQEAgY2xh
c3MgT3V0cHV0SExTTCA6IHB1YmxpYyBUSW50ZXJtVHJhdmVycwogICAgIGJvb2wgbVVzZXNGYWNl
Zm9yd2FyZDI7CiAgICAgYm9vbCBtVXNlc0ZhY2Vmb3J3YXJkMzsKICAgICBib29sIG1Vc2VzRmFj
ZWZvcndhcmQ0OwotICAgIGJvb2wgbVVzZXNFcXVhbE1hdDI7Ci0gICAgYm9vbCBtVXNlc0VxdWFs
TWF0MzsKLSAgICBib29sIG1Vc2VzRXF1YWxNYXQ0OwotICAgIGJvb2wgbVVzZXNFcXVhbFZlYzI7
Ci0gICAgYm9vbCBtVXNlc0VxdWFsVmVjMzsKLSAgICBib29sIG1Vc2VzRXF1YWxWZWM0OwotICAg
IGJvb2wgbVVzZXNFcXVhbElWZWMyOwotICAgIGJvb2wgbVVzZXNFcXVhbElWZWMzOwotICAgIGJv
b2wgbVVzZXNFcXVhbElWZWM0OwotICAgIGJvb2wgbVVzZXNFcXVhbEJWZWMyOwotICAgIGJvb2wg
bVVzZXNFcXVhbEJWZWMzOwotICAgIGJvb2wgbVVzZXNFcXVhbEJWZWM0OwogICAgIGJvb2wgbVVz
ZXNBdGFuMl8xOwogICAgIGJvb2wgbVVzZXNBdGFuMl8yOwogICAgIGJvb2wgbVVzZXNBdGFuMl8z
OwogICAgIGJvb2wgbVVzZXNBdGFuMl80OworICAgIGJvb2wgbVVzZXNEaXNjYXJkUmV3cml0aW5n
OwogCiAgICAgaW50IG1OdW1SZW5kZXJUYXJnZXRzOwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VDb250ZXh0LmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUNvbnRl
eHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYwMiBAQAorLy8KKy8vIENvcHlyaWdo
dCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKworI2luY2x1ZGUgImNvbXBpbGVyL1BhcnNlQ29udGV4dC5oIgorCisjaW5jbHVkZSA8c3Rk
YXJnLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworI2luY2x1ZGUgImNvbXBpbGVyL2dsc2xhbmcu
aCIKKyNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvU291cmNlTG9jYXRpb24uaCIKKwor
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KKy8vCisvLyBTdWItIHZlY3RvciBhbmQgbWF0cml4IGZpZWxkcworLy8K
Ky8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLworCisvLworLy8gTG9vayBhdCBhICcuJyBmaWVsZCBzZWxlY3RvciBz
dHJpbmcgYW5kIGNoYW5nZSBpdCBpbnRvIG9mZnNldHMKKy8vIGZvciBhIHZlY3Rvci4KKy8vCiti
b29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlVmVjdG9yRmllbGRzKGNvbnN0IFRTdHJpbmcmIGNvbXBT
dHJpbmcsIGludCB2ZWNTaXplLCBUVmVjdG9yRmllbGRzJiBmaWVsZHMsIGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUpCit7CisgICAgZmllbGRzLm51bSA9IChpbnQpIGNvbXBTdHJpbmcuc2l6ZSgpOwor
ICAgIGlmIChmaWVsZHMubnVtID4gNCkgeworICAgICAgICBlcnJvcihsaW5lLCAiaWxsZWdhbCB2
ZWN0b3IgZmllbGQgc2VsZWN0aW9uIiwgY29tcFN0cmluZy5jX3N0cigpKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGVudW0geworICAgICAgICBleHl6dywKKyAgICAgICAg
ZXJnYmEsCisgICAgICAgIGVzdHBxCisgICAgfSBmaWVsZFNldFs0XTsKKworICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgZmllbGRzLm51bTsgKytpKSB7CisgICAgICAgIHN3aXRjaCAoY29tcFN0cmlu
Z1tpXSkgIHsKKyAgICAgICAgY2FzZSAneCc6IAorICAgICAgICAgICAgZmllbGRzLm9mZnNldHNb
aV0gPSAwOworICAgICAgICAgICAgZmllbGRTZXRbaV0gPSBleHl6dzsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlICdyJzogCisgICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1tpXSA9
IDA7CisgICAgICAgICAgICBmaWVsZFNldFtpXSA9IGVyZ2JhOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgJ3MnOgorICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbaV0gPSAwOwor
ICAgICAgICAgICAgZmllbGRTZXRbaV0gPSBlc3RwcTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlICd5JzogCisgICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1tpXSA9IDE7CisgICAg
ICAgICAgICBmaWVsZFNldFtpXSA9IGV4eXp3OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgJ2cnOiAKKyAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzW2ldID0gMTsKKyAgICAgICAg
ICAgIGZpZWxkU2V0W2ldID0gZXJnYmE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSAndCc6CisgICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1tpXSA9IDE7CisgICAgICAgICAgICBm
aWVsZFNldFtpXSA9IGVzdHBxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ3on
OiAKKyAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzW2ldID0gMjsKKyAgICAgICAgICAgIGZpZWxk
U2V0W2ldID0gZXh5enc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnYic6IAor
ICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbaV0gPSAyOworICAgICAgICAgICAgZmllbGRTZXRb
aV0gPSBlcmdiYTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdwJzoKKyAgICAg
ICAgICAgIGZpZWxkcy5vZmZzZXRzW2ldID0gMjsKKyAgICAgICAgICAgIGZpZWxkU2V0W2ldID0g
ZXN0cHE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgICAgIGNhc2UgJ3cnOiAK
KyAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzW2ldID0gMzsKKyAgICAgICAgICAgIGZpZWxkU2V0
W2ldID0gZXh5enc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnYSc6IAorICAg
ICAgICAgICAgZmllbGRzLm9mZnNldHNbaV0gPSAzOworICAgICAgICAgICAgZmllbGRTZXRbaV0g
PSBlcmdiYTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdxJzoKKyAgICAgICAg
ICAgIGZpZWxkcy5vZmZzZXRzW2ldID0gMzsKKyAgICAgICAgICAgIGZpZWxkU2V0W2ldID0gZXN0
cHE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGVy
cm9yKGxpbmUsICJpbGxlZ2FsIHZlY3RvciBmaWVsZCBzZWxlY3Rpb24iLCBjb21wU3RyaW5nLmNf
c3RyKCkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmaWVsZHMubnVtOyArK2kpIHsKKyAgICAgICAgaWYgKGZp
ZWxkcy5vZmZzZXRzW2ldID49IHZlY1NpemUpIHsKKyAgICAgICAgICAgIGVycm9yKGxpbmUsICJ2
ZWN0b3IgZmllbGQgc2VsZWN0aW9uIG91dCBvZiByYW5nZSIsICBjb21wU3RyaW5nLmNfc3RyKCkp
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGkg
PiAwKSB7CisgICAgICAgICAgICBpZiAoZmllbGRTZXRbaV0gIT0gZmllbGRTZXRbaS0xXSkgewor
ICAgICAgICAgICAgICAgIGVycm9yKGxpbmUsICJpbGxlZ2FsIC0gdmVjdG9yIGNvbXBvbmVudCBm
aWVsZHMgbm90IGZyb20gdGhlIHNhbWUgc2V0IiwgY29tcFN0cmluZy5jX3N0cigpKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworCisvLworLy8gTG9vayBhdCBhICcuJyBmaWVsZCBz
ZWxlY3RvciBzdHJpbmcgYW5kIGNoYW5nZSBpdCBpbnRvIG9mZnNldHMKKy8vIGZvciBhIG1hdHJp
eC4KKy8vCitib29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlTWF0cml4RmllbGRzKGNvbnN0IFRTdHJp
bmcmIGNvbXBTdHJpbmcsIGludCBtYXRTaXplLCBUTWF0cml4RmllbGRzJiBmaWVsZHMsIGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUpCit7CisgICAgZmllbGRzLndob2xlUm93ID0gZmFsc2U7CisgICAg
ZmllbGRzLndob2xlQ29sID0gZmFsc2U7CisgICAgZmllbGRzLnJvdyA9IC0xOworICAgIGZpZWxk
cy5jb2wgPSAtMTsKKworICAgIGlmIChjb21wU3RyaW5nLnNpemUoKSAhPSAyKSB7CisgICAgICAg
IGVycm9yKGxpbmUsICJpbGxlZ2FsIGxlbmd0aCBvZiBtYXRyaXggZmllbGQgc2VsZWN0aW9uIiwg
Y29tcFN0cmluZy5jX3N0cigpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IGlmIChjb21wU3RyaW5nWzBdID09ICdfJykgeworICAgICAgICBpZiAoY29tcFN0cmluZ1sxXSA8
ICcwJyB8fCBjb21wU3RyaW5nWzFdID4gJzMnKSB7CisgICAgICAgICAgICBlcnJvcihsaW5lLCAi
aWxsZWdhbCBtYXRyaXggZmllbGQgc2VsZWN0aW9uIiwgY29tcFN0cmluZy5jX3N0cigpKTsKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBmaWVsZHMud2hvbGVD
b2wgPSB0cnVlOworICAgICAgICBmaWVsZHMuY29sID0gY29tcFN0cmluZ1sxXSAtICcwJzsKKyAg
ICB9IGVsc2UgaWYgKGNvbXBTdHJpbmdbMV0gPT0gJ18nKSB7CisgICAgICAgIGlmIChjb21wU3Ry
aW5nWzBdIDwgJzAnIHx8IGNvbXBTdHJpbmdbMF0gPiAnMycpIHsKKyAgICAgICAgICAgIGVycm9y
KGxpbmUsICJpbGxlZ2FsIG1hdHJpeCBmaWVsZCBzZWxlY3Rpb24iLCBjb21wU3RyaW5nLmNfc3Ry
KCkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGZpZWxk
cy53aG9sZVJvdyA9IHRydWU7CisgICAgICAgIGZpZWxkcy5yb3cgPSBjb21wU3RyaW5nWzBdIC0g
JzAnOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChjb21wU3RyaW5nWzBdIDwgJzAnIHx8IGNv
bXBTdHJpbmdbMF0gPiAnMycgfHwKKyAgICAgICAgICAgIGNvbXBTdHJpbmdbMV0gPCAnMCcgfHwg
Y29tcFN0cmluZ1sxXSA+ICczJykgeworICAgICAgICAgICAgZXJyb3IobGluZSwgImlsbGVnYWwg
bWF0cml4IGZpZWxkIHNlbGVjdGlvbiIsIGNvbXBTdHJpbmcuY19zdHIoKSk7CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZmllbGRzLnJvdyA9IGNvbXBTdHJp
bmdbMF0gLSAnMCc7CisgICAgICAgIGZpZWxkcy5jb2wgPSBjb21wU3RyaW5nWzFdIC0gJzAnOwor
ICAgIH0KKworICAgIGlmIChmaWVsZHMucm93ID49IG1hdFNpemUgfHwgZmllbGRzLmNvbCA+PSBt
YXRTaXplKSB7CisgICAgICAgIGVycm9yKGxpbmUsICJtYXRyaXggZmllbGQgc2VsZWN0aW9uIG91
dCBvZiByYW5nZSIsIGNvbXBTdHJpbmcuY19zdHIoKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBF
cnJvcnMKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworLy8KKy8vIFRyYWNrIHdoZXRoZXIgZXJyb3Jz
IGhhdmUgb2NjdXJyZWQuCisvLwordm9pZCBUUGFyc2VDb250ZXh0OjpyZWNvdmVyKCkKK3sKK30K
KworLy8KKy8vIFVzZWQgYnkgZmxleC9iaXNvbiB0byBvdXRwdXQgYWxsIHN5bnRheCBhbmQgcGFy
c2luZyBlcnJvcnMuCisvLwordm9pZCBUUGFyc2VDb250ZXh0OjplcnJvcihjb25zdCBUU291cmNl
TG9jJiBsb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJlYXNvbiwg
Y29uc3QgY2hhciogdG9rZW4sIAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBleHRyYUluZm8pCit7CisgICAgcHA6OlNvdXJjZUxvY2F0aW9uIHNyY0xvYzsKKyAgICBzcmNM
b2MuZmlsZSA9IGxvYy5maXJzdF9maWxlOworICAgIHNyY0xvYy5saW5lID0gbG9jLmZpcnN0X2xp
bmU7CisgICAgZGlhZ25vc3RpY3Mud3JpdGVJbmZvKHBwOjpEaWFnbm9zdGljczo6RVJST1IsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNyY0xvYywgcmVhc29uLCB0b2tlbiwgZXh0cmFJbmZv
KTsKKworfQorCit2b2lkIFRQYXJzZUNvbnRleHQ6Ondhcm5pbmcoY29uc3QgVFNvdXJjZUxvYyYg
bG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJlYXNvbiwgY29u
c3QgY2hhciogdG9rZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
ZXh0cmFJbmZvKSB7CisgICAgcHA6OlNvdXJjZUxvY2F0aW9uIHNyY0xvYzsKKyAgICBzcmNMb2Mu
ZmlsZSA9IGxvYy5maXJzdF9maWxlOworICAgIHNyY0xvYy5saW5lID0gbG9jLmZpcnN0X2xpbmU7
CisgICAgZGlhZ25vc3RpY3Mud3JpdGVJbmZvKHBwOjpEaWFnbm9zdGljczo6V0FSTklORywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3JjTG9jLCByZWFzb24sIHRva2VuLCBleHRyYUluZm8p
OworfQorCit2b2lkIFRQYXJzZUNvbnRleHQ6OnRyYWNlKGNvbnN0IGNoYXIqIHN0cikKK3sKKyAg
ICBkaWFnbm9zdGljcy53cml0ZURlYnVnKHN0cik7Cit9CisKKy8vCisvLyBTYW1lIGVycm9yIG1l
c3NhZ2UgZm9yIGFsbCBwbGFjZXMgYXNzaWdubWVudHMgZG9uJ3Qgd29yay4KKy8vCit2b2lkIFRQ
YXJzZUNvbnRleHQ6OmFzc2lnbkVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNo
YXIqIG9wLCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcgcmlnaHQpCit7CisgICAgc3RkOjpzdHJpbmdz
dHJlYW0gZXh0cmFJbmZvU3RyZWFtOworICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiY2Fubm90IGNv
bnZlcnQgZnJvbSAnIiA8PCByaWdodCA8PCAiJyB0byAnIiA8PCBsZWZ0IDw8ICInIjsKKyAgICBz
dGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7CisgICAgZXJyb3Io
bGluZSwgIiIsIG9wLCBleHRyYUluZm8uY19zdHIoKSk7Cit9CisKKy8vCisvLyBTYW1lIGVycm9y
IG1lc3NhZ2UgZm9yIGFsbCBwbGFjZXMgdW5hcnkgb3BlcmF0aW9ucyBkb24ndCB3b3JrLgorLy8K
K3ZvaWQgVFBhcnNlQ29udGV4dDo6dW5hcnlPcEVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUs
IGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIG9wZXJhbmQpCit7CisgICAgc3RkOjpzdHJpbmdzdHJl
YW0gZXh0cmFJbmZvU3RyZWFtOworICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAibm8gb3BlcmF0aW9u
ICciIDw8IG9wIDw8ICInIGV4aXN0cyB0aGF0IHRha2VzIGFuIG9wZXJhbmQgb2YgdHlwZSAiIDw8
IG9wZXJhbmQgCisgICAgICAgICAgICAgICAgICAgIDw8ICIgKG9yIHRoZXJlIGlzIG5vIGFjY2Vw
dGFibGUgY29udmVyc2lvbikiOworICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5m
b1N0cmVhbS5zdHIoKTsKKyAgICBlcnJvcihsaW5lLCAiIHdyb25nIG9wZXJhbmQgdHlwZSIsIG9w
LCBleHRyYUluZm8uY19zdHIoKSk7Cit9CisKKy8vCisvLyBTYW1lIGVycm9yIG1lc3NhZ2UgZm9y
IGFsbCBiaW5hcnkgb3BlcmF0aW9ucyBkb24ndCB3b3JrLgorLy8KK3ZvaWQgVFBhcnNlQ29udGV4
dDo6YmluYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwg
VFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KQoreworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4
dHJhSW5mb1N0cmVhbTsKKyAgICBleHRyYUluZm9TdHJlYW0gPDwgIm5vIG9wZXJhdGlvbiAnIiA8
PCBvcCA8PCAiJyBleGlzdHMgdGhhdCB0YWtlcyBhIGxlZnQtaGFuZCBvcGVyYW5kIG9mIHR5cGUg
JyIgPDwgbGVmdCAKKyAgICAgICAgICAgICAgICAgICAgPDwgIicgYW5kIGEgcmlnaHQgb3BlcmFu
ZCBvZiB0eXBlICciIDw8IHJpZ2h0IDw8ICInIChvciB0aGVyZSBpcyBubyBhY2NlcHRhYmxlIGNv
bnZlcnNpb24pIjsKKyAgICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0u
c3RyKCk7CisgICAgZXJyb3IobGluZSwgIiB3cm9uZyBvcGVyYW5kIHR5cGVzICIsIG9wLCBleHRy
YUluZm8uY19zdHIoKSk7IAorfQorCitib29sIFRQYXJzZUNvbnRleHQ6OnByZWNpc2lvbkVycm9y
Q2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFByZWNpc2lvbiBwcmVjaXNpb24sIFRCYXNp
Y1R5cGUgdHlwZSl7CisgICAgaWYgKCFjaGVja3NQcmVjaXNpb25FcnJvcnMpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBzd2l0Y2goIHR5cGUgKXsKKyAgICBjYXNlIEVidEZsb2F0OgorICAg
ICAgICBpZiggcHJlY2lzaW9uID09IEVicFVuZGVmaW5lZCApeworICAgICAgICAgICAgZXJyb3Io
IGxpbmUsICJObyBwcmVjaXNpb24gc3BlY2lmaWVkIGZvciAoZmxvYXQpIiwgIiIgKTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
RWJ0SW50OgorICAgICAgICBpZiggcHJlY2lzaW9uID09IEVicFVuZGVmaW5lZCApeworICAgICAg
ICAgICAgZXJyb3IoIGxpbmUsICJObyBwcmVjaXNpb24gc3BlY2lmaWVkIChpbnQpIiwgIiIgKTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAg
IGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNl
OworfQorCisvLworLy8gQm90aCB0ZXN0IGFuZCBpZiBuZWNlc3NhcnksIHNwaXQgb3V0IGFuIGVy
cm9yLCB0byBzZWUgaWYgdGhlIG5vZGUgaXMgcmVhbGx5CisvLyBhbiBsLXZhbHVlIHRoYXQgY2Fu
IGJlIG9wZXJhdGVkIG9uIHRoaXMgd2F5LgorLy8KKy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgd2Fz
IGFuIGVycm9yLgorLy8KK2Jvb2wgVFBhcnNlQ29udGV4dDo6bFZhbHVlRXJyb3JDaGVjayhjb25z
dCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVEludGVybVR5cGVkKiBub2RlKQor
eworICAgIFRJbnRlcm1TeW1ib2wqIHN5bU5vZGUgPSBub2RlLT5nZXRBc1N5bWJvbE5vZGUoKTsK
KyAgICBUSW50ZXJtQmluYXJ5KiBiaW5hcnlOb2RlID0gbm9kZS0+Z2V0QXNCaW5hcnlOb2RlKCk7
CisKKyAgICBpZiAoYmluYXJ5Tm9kZSkgeworICAgICAgICBib29sIGVycm9yUmV0dXJuOworCisg
ICAgICAgIHN3aXRjaChiaW5hcnlOb2RlLT5nZXRPcCgpKSB7CisgICAgICAgIGNhc2UgRU9wSW5k
ZXhEaXJlY3Q6CisgICAgICAgIGNhc2UgRU9wSW5kZXhJbmRpcmVjdDoKKyAgICAgICAgY2FzZSBF
T3BJbmRleERpcmVjdFN0cnVjdDoKKyAgICAgICAgICAgIHJldHVybiBsVmFsdWVFcnJvckNoZWNr
KGxpbmUsIG9wLCBiaW5hcnlOb2RlLT5nZXRMZWZ0KCkpOworICAgICAgICBjYXNlIEVPcFZlY3Rv
clN3aXp6bGU6CisgICAgICAgICAgICBlcnJvclJldHVybiA9IGxWYWx1ZUVycm9yQ2hlY2sobGlu
ZSwgb3AsIGJpbmFyeU5vZGUtPmdldExlZnQoKSk7CisgICAgICAgICAgICBpZiAoIWVycm9yUmV0
dXJuKSB7CisgICAgICAgICAgICAgICAgaW50IG9mZnNldFs0XSA9IHswLDAsMCwwfTsKKworICAg
ICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogcmlnaHROb2RlID0gYmluYXJ5Tm9kZS0+Z2V0Umln
aHQoKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICphZ2dyTm9kZSA9IHJpZ2h0
Tm9kZS0+Z2V0QXNBZ2dyZWdhdGUoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICBmb3IgKFRJbnRlcm1TZXF1ZW5jZTo6aXRlcmF0b3IgcCA9IGFnZ3JOb2RlLT5nZXRTZXF1ZW5j
ZSgpLmJlZ2luKCk7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwICE9IGFnZ3JOb2RlLT5nZXRTZXF1ZW5jZSgpLmVuZCgpOyBwKyspIHsKKyAgICAgICAg
ICAgICAgICAgICAgaW50IHZhbHVlID0gKCpwKS0+Z2V0QXNUeXBlZCgpLT5nZXRBc0NvbnN0YW50
VW5pb24oKS0+Z2V0SUNvbnN0KDApOworICAgICAgICAgICAgICAgICAgICBvZmZzZXRbdmFsdWVd
Kys7ICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9mZnNldFt2YWx1ZV0gPiAxKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihsaW5lLCAiIGwtdmFsdWUgb2Ygc3dpenpsZSBj
YW5ub3QgaGF2ZSBkdXBsaWNhdGUgY29tcG9uZW50cyIsIG9wKTsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9IAorCisgICAgICAgICAgICByZXR1cm4gZXJyb3JSZXR1cm47
CisgICAgICAgIGRlZmF1bHQ6IAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgZXJyb3IobGluZSwgIiBsLXZhbHVlIHJlcXVpcmVkIiwgb3ApOworCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworCisgICAgY29uc3QgY2hhciogc3ltYm9sID0gMDsKKyAgICBpZiAo
c3ltTm9kZSAhPSAwKQorICAgICAgICBzeW1ib2wgPSBzeW1Ob2RlLT5nZXRTeW1ib2woKS5jX3N0
cigpOworCisgICAgY29uc3QgY2hhciogbWVzc2FnZSA9IDA7CisgICAgc3dpdGNoIChub2RlLT5n
ZXRRdWFsaWZpZXIoKSkgeworICAgIGNhc2UgRXZxQ29uc3Q6ICAgICAgICAgIG1lc3NhZ2UgPSAi
Y2FuJ3QgbW9kaWZ5IGEgY29uc3QiOyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFdnFDb25zdFJl
YWRPbmx5OiAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgYSBjb25zdCI7ICAgICAgICBicmVhazsK
KyAgICBjYXNlIEV2cUF0dHJpYnV0ZTogICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBhbiBh
dHRyaWJ1dGUiOyAgIGJyZWFrOworICAgIGNhc2UgRXZxVW5pZm9ybTogICAgICAgIG1lc3NhZ2Ug
PSAiY2FuJ3QgbW9kaWZ5IGEgdW5pZm9ybSI7ICAgICAgYnJlYWs7CisgICAgY2FzZSBFdnFWYXJ5
aW5nSW46ICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgYSB2YXJ5aW5nIjsgICAgICBicmVh
azsKKyAgICBjYXNlIEV2cUZyYWdDb29yZDogICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBn
bF9GcmFnQ29vcmQiOyAgIGJyZWFrOworICAgIGNhc2UgRXZxRnJvbnRGYWNpbmc6ICAgIG1lc3Nh
Z2UgPSAiY2FuJ3QgbW9kaWZ5IGdsX0Zyb250RmFjaW5nIjsgYnJlYWs7CisgICAgY2FzZSBFdnFQ
b2ludENvb3JkOiAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgZ2xfUG9pbnRDb29yZCI7ICBi
cmVhazsKKyAgICBkZWZhdWx0OgorCisgICAgICAgIC8vCisgICAgICAgIC8vIFR5cGUgdGhhdCBj
YW4ndCBiZSB3cml0dGVuIHRvPworICAgICAgICAvLworICAgICAgICBzd2l0Y2ggKG5vZGUtPmdl
dEJhc2ljVHlwZSgpKSB7CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEOgorICAgICAgICBjYXNl
IEVidFNhbXBsZXJDdWJlOgorICAgICAgICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgYSBz
YW1wbGVyIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVidFZvaWQ6CisgICAg
ICAgICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSB2b2lkIjsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OiAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKG1lc3NhZ2UgPT0gMCAmJiBiaW5hcnlOb2RlID09IDAgJiYgc3ltTm9kZSA9
PSAwKSB7CisgICAgICAgIGVycm9yKGxpbmUsICIgbC12YWx1ZSByZXF1aXJlZCIsIG9wKTsKKwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKworICAgIC8vCisgICAgLy8gRXZlcnl0aGlu
ZyBlbHNlIGlzIG9rYXksIG5vIGVycm9yLgorICAgIC8vCisgICAgaWYgKG1lc3NhZ2UgPT0gMCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8KKyAgICAvLyBJZiB3ZSBnZXQgaGVyZSwg
d2UgaGF2ZSBhbiBlcnJvciBhbmQgYSBtZXNzYWdlLgorICAgIC8vCisgICAgaWYgKHN5bU5vZGUp
IHsKKyAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOworICAgICAgICBl
eHRyYUluZm9TdHJlYW0gPDwgIlwiIiA8PCBzeW1ib2wgPDwgIlwiICgiIDw8IG1lc3NhZ2UgPDwg
IikiOworICAgICAgICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3Ry
KCk7CisgICAgICAgIGVycm9yKGxpbmUsICIgbC12YWx1ZSByZXF1aXJlZCIsIG9wLCBleHRyYUlu
Zm8uY19zdHIoKSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdGQ6OnN0cmluZ3N0cmVh
bSBleHRyYUluZm9TdHJlYW07CisgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiKCIgPDwgbWVz
c2FnZSA8PCAiKSI7CisgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0
cmVhbS5zdHIoKTsKKyAgICAgICAgZXJyb3IobGluZSwgIiBsLXZhbHVlIHJlcXVpcmVkIiwgb3As
IGV4dHJhSW5mby5jX3N0cigpKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8K
Ky8vIEJvdGggdGVzdCwgYW5kIGlmIG5lY2Vzc2FyeSBzcGl0IG91dCBhbiBlcnJvciwgdG8gc2Vl
IGlmIHRoZSBub2RlIGlzIHJlYWxseQorLy8gYSBjb25zdGFudC4KKy8vCisvLyBSZXR1cm5zIHRy
dWUgaWYgdGhlIHdhcyBhbiBlcnJvci4KKy8vCitib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0RXJy
b3JDaGVjayhUSW50ZXJtVHlwZWQqIG5vZGUpCit7CisgICAgaWYgKG5vZGUtPmdldFF1YWxpZmll
cigpID09IEV2cUNvbnN0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBlcnJvcihub2Rl
LT5nZXRMaW5lKCksICJjb25zdGFudCBleHByZXNzaW9uIHJlcXVpcmVkIiwgIiIpOworCisgICAg
cmV0dXJuIHRydWU7Cit9CisKKy8vCisvLyBCb3RoIHRlc3QsIGFuZCBpZiBuZWNlc3Nhcnkgc3Bp
dCBvdXQgYW4gZXJyb3IsIHRvIHNlZSBpZiB0aGUgbm9kZSBpcyByZWFsbHkKKy8vIGFuIGludGVn
ZXIuCisvLworLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB3YXMgYW4gZXJyb3IuCisvLworYm9vbCBU
UGFyc2VDb250ZXh0OjppbnRlZ2VyRXJyb3JDaGVjayhUSW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0
IGNoYXIqIHRva2VuKQoreworICAgIGlmIChub2RlLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRJbnQg
JiYgbm9kZS0+Z2V0Tm9taW5hbFNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBlcnJvcihub2RlLT5nZXRMaW5lKCksICJpbnRlZ2VyIGV4cHJlc3Npb24gcmVxdWlyZWQi
LCB0b2tlbik7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8KKy8vIEJvdGggdGVzdCwgYW5k
IGlmIG5lY2Vzc2FyeSBzcGl0IG91dCBhbiBlcnJvciwgdG8gc2VlIGlmIHdlIGFyZSBjdXJyZW50
bHkKKy8vIGdsb2JhbGx5IHNjb3BlZC4KKy8vCisvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHdhcyBh
biBlcnJvci4KKy8vCitib29sIFRQYXJzZUNvbnRleHQ6Omdsb2JhbEVycm9yQ2hlY2soY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSwgYm9vbCBnbG9iYWwsIGNvbnN0IGNoYXIqIHRva2VuKQoreworICAg
IGlmIChnbG9iYWwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGVycm9yKGxpbmUsICJv
bmx5IGFsbG93ZWQgYXQgZ2xvYmFsIHNjb3BlIiwgdG9rZW4pOworCisgICAgcmV0dXJuIHRydWU7
Cit9CisKKy8vCisvLyBGb3Igbm93LCBrZWVwIGl0IHNpbXBsZTogIGlmIGl0IHN0YXJ0cyAiZ2xf
IiwgaXQncyByZXNlcnZlZCwgaW5kZXBlbmRlbnQKKy8vIG9mIHNjb3BlLiAgRXhjZXB0LCBpZiB0
aGUgc3ltYm9sIHRhYmxlIGlzIGF0IHRoZSBidWlsdC1pbiBwdXNoLWxldmVsLAorLy8gd2hpY2gg
aXMgd2hlbiB3ZSBhcmUgcGFyc2luZyBidWlsdC1pbnMuCisvLyBBbHNvIGNoZWNrcyBmb3IgIndl
YmdsXyIgYW5kICJfd2ViZ2xfIiByZXNlcnZlZCBpZGVudGlmaWVycyBpZiBwYXJzaW5nIGEKKy8v
IHdlYmdsIHNoYWRlci4KKy8vCisvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9y
LgorLy8KK2Jvb2wgVFBhcnNlQ29udGV4dDo6cmVzZXJ2ZWRFcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIpCit7CisgICAgc3RhdGljIGNv
bnN0IGNoYXIqIHJlc2VydmVkRXJyTXNnID0gInJlc2VydmVkIGJ1aWx0LWluIG5hbWUiOworICAg
IGlmICghc3ltYm9sVGFibGUuYXRCdWlsdEluTGV2ZWwoKSkgeworICAgICAgICBpZiAoaWRlbnRp
Zmllci5jb21wYXJlKDAsIDMsICJnbF8iKSA9PSAwKSB7CisgICAgICAgICAgICBlcnJvcihsaW5l
LCByZXNlcnZlZEVyck1zZywgImdsXyIpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGlzV2ViR0xCYXNlZFNwZWMoc2hhZGVyU3BlYykpIHsKKyAgICAg
ICAgICAgIGlmIChpZGVudGlmaWVyLmNvbXBhcmUoMCwgNiwgIndlYmdsXyIpID09IDApIHsKKyAg
ICAgICAgICAgICAgICBlcnJvcihsaW5lLCByZXNlcnZlZEVyck1zZywgIndlYmdsXyIpOworICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KGlkZW50aWZpZXIuY29tcGFyZSgwLCA3LCAiX3dlYmdsXyIpID09IDApIHsKKyAgICAgICAgICAg
ICAgICBlcnJvcihsaW5lLCByZXNlcnZlZEVyck1zZywgIl93ZWJnbF8iKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzaGFkZXJT
cGVjID09IFNIX0NTU19TSEFERVJTX1NQRUMgJiYgaWRlbnRpZmllci5jb21wYXJlKDAsIDQsICJj
c3NfIikgPT0gMCkgeworICAgICAgICAgICAgICAgIGVycm9yKGxpbmUsIHJlc2VydmVkRXJyTXNn
LCAiY3NzXyIpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGlmIChpZGVudGlmaWVyLmZpbmQoIl9fIikgIT0gVFN0cmluZzo6
bnBvcykgeworICAgICAgICAgICAgZXJyb3IobGluZSwgImlkZW50aWZpZXJzIGNvbnRhaW5pbmcg
dHdvIGNvbnNlY3V0aXZlIHVuZGVyc2NvcmVzIChfXykgYXJlIHJlc2VydmVkIGFzIHBvc3NpYmxl
IGZ1dHVyZSBrZXl3b3JkcyIsIGlkZW50aWZpZXIuY19zdHIoKSk7CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8K
Ky8vIE1ha2Ugc3VyZSB0aGVyZSBpcyBlbm91Z2ggZGF0YSBwcm92aWRlZCB0byB0aGUgY29uc3Ry
dWN0b3IgdG8gYnVpbGQKKy8vIHNvbWV0aGluZyBvZiB0aGUgdHlwZSBvZiB0aGUgY29uc3RydWN0
b3IuICBBbHNvIHJldHVybnMgdGhlIHR5cGUgb2YKKy8vIHRoZSBjb25zdHJ1Y3Rvci4KKy8vCisv
LyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yIGluIGNvbnN0cnVjdGlvbi4KKy8v
Citib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVjayhjb25zdCBUU291cmNl
TG9jJiBsaW5lLCBUSW50ZXJtTm9kZSogbm9kZSwgVEZ1bmN0aW9uJiBmdW5jdGlvbiwgVE9wZXJh
dG9yIG9wLCBUVHlwZSogdHlwZSkKK3sKKyAgICAqdHlwZSA9IGZ1bmN0aW9uLmdldFJldHVyblR5
cGUoKTsKKworICAgIGJvb2wgY29uc3RydWN0aW5nTWF0cml4ID0gZmFsc2U7CisgICAgc3dpdGNo
KG9wKSB7CisgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQyOgorICAgIGNhc2UgRU9wQ29uc3RydWN0
TWF0MzoKKyAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDQ6CisgICAgICAgIGNvbnN0cnVjdGluZ01h
dHJpeCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6IAorICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICAvLworICAgIC8vIE5vdGU6IEl0J3Mgb2theSB0byBoYXZlIHRvbyBt
YW55IGNvbXBvbmVudHMgYXZhaWxhYmxlLCBidXQgbm90IG9rYXkgdG8gaGF2ZSB1bnVzZWQKKyAg
ICAvLyBhcmd1bWVudHMuICAnZnVsbCcgd2lsbCBnbyB0byB0cnVlIHdoZW4gZW5vdWdoIGFyZ3Mg
aGF2ZSBiZWVuIHNlZW4uICBJZiB3ZSBsb29wCisgICAgLy8gYWdhaW4sIHRoZXJlIGlzIGFuIGV4
dHJhIGFyZ3VtZW50LCBzbyAnb3ZlcmZ1bGwnIHdpbGwgYmVjb21lIHRydWUuCisgICAgLy8KKwor
ICAgIHNpemVfdCBzaXplID0gMDsKKyAgICBib29sIGNvbnN0VHlwZSA9IHRydWU7CisgICAgYm9v
bCBmdWxsID0gZmFsc2U7CisgICAgYm9vbCBvdmVyRnVsbCA9IGZhbHNlOworICAgIGJvb2wgbWF0
cml4SW5NYXRyaXggPSBmYWxzZTsKKyAgICBib29sIGFycmF5QXJnID0gZmFsc2U7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbi5nZXRQYXJhbUNvdW50KCk7ICsraSkgeworICAg
ICAgICBjb25zdCBUUGFyYW1ldGVyJiBwYXJhbSA9IGZ1bmN0aW9uLmdldFBhcmFtKGkpOworICAg
ICAgICBzaXplICs9IHBhcmFtLnR5cGUtPmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgCisgICAg
ICAgIGlmIChjb25zdHJ1Y3RpbmdNYXRyaXggJiYgcGFyYW0udHlwZS0+aXNNYXRyaXgoKSkKKyAg
ICAgICAgICAgIG1hdHJpeEluTWF0cml4ID0gdHJ1ZTsKKyAgICAgICAgaWYgKGZ1bGwpCisgICAg
ICAgICAgICBvdmVyRnVsbCA9IHRydWU7CisgICAgICAgIGlmIChvcCAhPSBFT3BDb25zdHJ1Y3RT
dHJ1Y3QgJiYgIXR5cGUtPmlzQXJyYXkoKSAmJiBzaXplID49IHR5cGUtPmdldE9iamVjdFNpemUo
KSkKKyAgICAgICAgICAgIGZ1bGwgPSB0cnVlOworICAgICAgICBpZiAocGFyYW0udHlwZS0+Z2V0
UXVhbGlmaWVyKCkgIT0gRXZxQ29uc3QpCisgICAgICAgICAgICBjb25zdFR5cGUgPSBmYWxzZTsK
KyAgICAgICAgaWYgKHBhcmFtLnR5cGUtPmlzQXJyYXkoKSkKKyAgICAgICAgICAgIGFycmF5QXJn
ID0gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgaWYgKGNvbnN0VHlwZSkKKyAgICAgICAgdHlwZS0+
c2V0UXVhbGlmaWVyKEV2cUNvbnN0KTsKKworICAgIGlmICh0eXBlLT5pc0FycmF5KCkgJiYgc3Rh
dGljX2Nhc3Q8c2l6ZV90Pih0eXBlLT5nZXRBcnJheVNpemUoKSkgIT0gZnVuY3Rpb24uZ2V0UGFy
YW1Db3VudCgpKSB7CisgICAgICAgIGVycm9yKGxpbmUsICJhcnJheSBjb25zdHJ1Y3RvciBuZWVk
cyBvbmUgYXJndW1lbnQgcGVyIGFycmF5IGVsZW1lbnQiLCAiY29uc3RydWN0b3IiKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGFycmF5QXJnICYmIG9wICE9IEVPcENv
bnN0cnVjdFN0cnVjdCkgeworICAgICAgICBlcnJvcihsaW5lLCAiY29uc3RydWN0aW5nIGZyb20g
YSBub24tZGVyZWZlcmVuY2VkIGFycmF5IiwgImNvbnN0cnVjdG9yIik7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIGlmIChtYXRyaXhJbk1hdHJpeCAmJiAhdHlwZS0+aXNBcnJh
eSgpKSB7CisgICAgICAgIGlmIChmdW5jdGlvbi5nZXRQYXJhbUNvdW50KCkgIT0gMSkgeworICAg
ICAgICAgIGVycm9yKGxpbmUsICJjb25zdHJ1Y3RpbmcgbWF0cml4IGZyb20gbWF0cml4IGNhbiBv
bmx5IHRha2Ugb25lIGFyZ3VtZW50IiwgImNvbnN0cnVjdG9yIik7CisgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAob3ZlckZ1bGwpIHsKKyAgICAgICAg
ZXJyb3IobGluZSwgInRvbyBtYW55IGFyZ3VtZW50cyIsICJjb25zdHJ1Y3RvciIpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgaWYgKG9wID09IEVPcENvbnN0cnVjdFN0
cnVjdCAmJiAhdHlwZS0+aXNBcnJheSgpICYmIGludCh0eXBlLT5nZXRTdHJ1Y3QoKS0+ZmllbGRz
KCkuc2l6ZSgpKSAhPSBmdW5jdGlvbi5nZXRQYXJhbUNvdW50KCkpIHsKKyAgICAgICAgZXJyb3Io
bGluZSwgIk51bWJlciBvZiBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzIGRvZXMgbm90IG1hdGNoIHRo
ZSBudW1iZXIgb2Ygc3RydWN0dXJlIGZpZWxkcyIsICJjb25zdHJ1Y3RvciIpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoIXR5cGUtPmlzTWF0cml4KCkgfHwgIW1hdHJp
eEluTWF0cml4KSB7CisgICAgICAgIGlmICgob3AgIT0gRU9wQ29uc3RydWN0U3RydWN0ICYmIHNp
emUgIT0gMSAmJiBzaXplIDwgdHlwZS0+Z2V0T2JqZWN0U2l6ZSgpKSB8fAorICAgICAgICAgICAg
KG9wID09IEVPcENvbnN0cnVjdFN0cnVjdCAmJiBzaXplIDwgdHlwZS0+Z2V0T2JqZWN0U2l6ZSgp
KSkgeworICAgICAgICAgICAgZXJyb3IobGluZSwgIm5vdCBlbm91Z2ggZGF0YSBwcm92aWRlZCBm
b3IgY29uc3RydWN0aW9uIiwgImNvbnN0cnVjdG9yIik7CisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFRJbnRlcm1UeXBlZCAqdHlwZWQgPSBub2RlID8g
bm9kZS0+Z2V0QXNUeXBlZCgpIDogMDsKKyAgICBpZiAodHlwZWQgPT0gMCkgeworICAgICAgICBl
cnJvcihsaW5lLCAiY29uc3RydWN0b3IgYXJndW1lbnQgZG9lcyBub3QgaGF2ZSBhIHR5cGUiLCAi
Y29uc3RydWN0b3IiKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmIChvcCAh
PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QgJiYgSXNTYW1wbGVyKHR5cGVkLT5nZXRCYXNpY1R5cGUoKSkp
IHsKKyAgICAgICAgZXJyb3IobGluZSwgImNhbm5vdCBjb252ZXJ0IGEgc2FtcGxlciIsICJjb25z
dHJ1Y3RvciIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKHR5cGVkLT5n
ZXRCYXNpY1R5cGUoKSA9PSBFYnRWb2lkKSB7CisgICAgICAgIGVycm9yKGxpbmUsICJjYW5ub3Qg
Y29udmVydCBhIHZvaWQiLCAiY29uc3RydWN0b3IiKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCisvLyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyB0
byBzZWUgaWYgYSB2b2lkIHZhcmlhYmxlIGhhcyBiZWVuIGRlY2xhcmVkIGFuZCByYWlzZSBhbiBl
cnJvciBtZXNzYWdlIGZvciBzdWNoIGEgY2FzZQorLy8KKy8vIHJldHVybnMgdHJ1ZSBpbiBjYXNl
IG9mIGFuIGVycm9yCisvLworYm9vbCBUUGFyc2VDb250ZXh0Ojp2b2lkRXJyb3JDaGVjayhjb25z
dCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBUUHVi
bGljVHlwZSYgcHViVHlwZSkKK3sKKyAgICBpZiAocHViVHlwZS50eXBlID09IEVidFZvaWQpIHsK
KyAgICAgICAgZXJyb3IobGluZSwgImlsbGVnYWwgdXNlIG9mIHR5cGUgJ3ZvaWQnIiwgaWRlbnRp
Zmllci5jX3N0cigpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSAKKworICAgIHJldHVy
biBmYWxzZTsKK30KKworLy8gVGhpcyBmdW5jdGlvbiBjaGVja3MgdG8gc2VlIGlmIHRoZSBub2Rl
IChmb3IgdGhlIGV4cHJlc3Npb24pIGNvbnRhaW5zIGEgc2NhbGFyIGJvb2xlYW4gZXhwcmVzc2lv
biBvciBub3QKKy8vCisvLyByZXR1cm5zIHRydWUgaW4gY2FzZSBvZiBhbiBlcnJvcgorLy8KK2Jv
b2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwg
Y29uc3QgVEludGVybVR5cGVkKiB0eXBlKQoreworICAgIGlmICh0eXBlLT5nZXRCYXNpY1R5cGUo
KSAhPSBFYnRCb29sIHx8IHR5cGUtPmlzQXJyYXkoKSB8fCB0eXBlLT5pc01hdHJpeCgpIHx8IHR5
cGUtPmlzVmVjdG9yKCkpIHsKKyAgICAgICAgZXJyb3IobGluZSwgImJvb2xlYW4gZXhwcmVzc2lv
biBleHBlY3RlZCIsICIiKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSAKKworICAgIHJl
dHVybiBmYWxzZTsKK30KKworLy8gVGhpcyBmdW5jdGlvbiBjaGVja3MgdG8gc2VlIGlmIHRoZSBu
b2RlIChmb3IgdGhlIGV4cHJlc3Npb24pIGNvbnRhaW5zIGEgc2NhbGFyIGJvb2xlYW4gZXhwcmVz
c2lvbiBvciBub3QKKy8vCisvLyByZXR1cm5zIHRydWUgaW4gY2FzZSBvZiBhbiBlcnJvcgorLy8K
K2Jvb2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGlu
ZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlKQoreworICAgIGlmIChwVHlwZS50eXBlICE9IEVi
dEJvb2wgfHwgcFR5cGUuYXJyYXkgfHwgcFR5cGUubWF0cml4IHx8IChwVHlwZS5zaXplID4gMSkp
IHsKKyAgICAgICAgZXJyb3IobGluZSwgImJvb2xlYW4gZXhwcmVzc2lvbiBleHBlY3RlZCIsICIi
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSAKKworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBUUGFyc2VDb250ZXh0OjpzYW1wbGVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9j
JiBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUsIGNvbnN0IGNoYXIqIHJlYXNvbikKK3sK
KyAgICBpZiAocFR5cGUudHlwZSA9PSBFYnRTdHJ1Y3QpIHsKKyAgICAgICAgaWYgKGNvbnRhaW5z
U2FtcGxlcigqcFR5cGUudXNlckRlZikpIHsKKyAgICAgICAgICAgIGVycm9yKGxpbmUsIHJlYXNv
biwgZ2V0QmFzaWNTdHJpbmcocFR5cGUudHlwZSksICIoc3RydWN0dXJlIGNvbnRhaW5zIGEgc2Ft
cGxlcikiKTsKKyAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gZWxzZSBpZiAoSXNTYW1wbGVy
KHBUeXBlLnR5cGUpKSB7CisgICAgICAgIGVycm9yKGxpbmUsIHJlYXNvbiwgZ2V0QmFzaWNTdHJp
bmcocFR5cGUudHlwZSkpOworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBUUGFyc2VDb250ZXh0OjpzdHJ1Y3RRdWFsaWZpZXJFcnJv
ckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSkK
K3sKKyAgICBpZiAoKHBUeXBlLnF1YWxpZmllciA9PSBFdnFWYXJ5aW5nSW4gfHwgcFR5cGUucXVh
bGlmaWVyID09IEV2cVZhcnlpbmdPdXQgfHwgcFR5cGUucXVhbGlmaWVyID09IEV2cUF0dHJpYnV0
ZSkgJiYKKyAgICAgICAgcFR5cGUudHlwZSA9PSBFYnRTdHJ1Y3QpIHsKKyAgICAgICAgZXJyb3Io
bGluZSwgImNhbm5vdCBiZSB1c2VkIHdpdGggYSBzdHJ1Y3R1cmUiLCBnZXRRdWFsaWZpZXJTdHJp
bmcocFR5cGUucXVhbGlmaWVyKSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICBpZiAocFR5cGUucXVhbGlmaWVyICE9IEV2cVVuaWZvcm0gJiYgc2FtcGxlckVy
cm9yQ2hlY2sobGluZSwgcFR5cGUsICJzYW1wbGVycyBtdXN0IGJlIHVuaWZvcm0iKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgVFBhcnNlQ29u
dGV4dDo6cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwg
VFF1YWxpZmllciBxdWFsaWZpZXIsIGNvbnN0IFRUeXBlJiB0eXBlKQoreworICAgIGlmICgocXVh
bGlmaWVyID09IEV2cU91dCB8fCBxdWFsaWZpZXIgPT0gRXZxSW5PdXQpICYmIAorICAgICAgICAg
ICAgIHR5cGUuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0ICYmIElzU2FtcGxlcih0eXBlLmdl
dEJhc2ljVHlwZSgpKSkgeworICAgICAgICBlcnJvcihsaW5lLCAic2FtcGxlcnMgY2Fubm90IGJl
IG91dHB1dCBwYXJhbWV0ZXJzIiwgdHlwZS5nZXRCYXNpY1N0cmluZygpKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFRQYXJzZUNv
bnRleHQ6OmNvbnRhaW5zU2FtcGxlcihUVHlwZSYgdHlwZSkKK3sKKyAgICBpZiAoSXNTYW1wbGVy
KHR5cGUuZ2V0QmFzaWNUeXBlKCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmICh0
eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkgeworICAgICAgICBjb25zdCBURmllbGRM
aXN0JiBmaWVsZHMgPSB0eXBlLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAg
IGlmIChjb250YWluc1NhbXBsZXIoKmZpZWxkc1tpXS0+dHlwZSgpKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30K
KworLy8KKy8vIERvIHNpemUgY2hlY2tpbmcgZm9yIGFuIGFycmF5IHR5cGUncyBzaXplLgorLy8K
Ky8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCisvLworYm9vbCBUUGFyc2VD
b250ZXh0OjphcnJheVNpemVFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRJbnRl
cm1UeXBlZCogZXhwciwgaW50JiBzaXplKQoreworICAgIFRJbnRlcm1Db25zdGFudFVuaW9uKiBj
b25zdGFudCA9IGV4cHItPmdldEFzQ29uc3RhbnRVbmlvbigpOworICAgIGlmIChjb25zdGFudCA9
PSAwIHx8IGNvbnN0YW50LT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRJbnQpIHsKKyAgICAgICAgZXJy
b3IobGluZSwgImFycmF5IHNpemUgbXVzdCBiZSBhIGNvbnN0YW50IGludGVnZXIgZXhwcmVzc2lv
biIsICIiKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgc2l6ZSA9IGNvbnN0
YW50LT5nZXRJQ29uc3QoMCk7CisKKyAgICBpZiAoc2l6ZSA8PSAwKSB7CisgICAgICAgIGVycm9y
KGxpbmUsICJhcnJheSBzaXplIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIiwgIiIpOworICAg
ICAgICBzaXplID0gMTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJu
IGZhbHNlOworfQorCisvLworLy8gU2VlIGlmIHRoaXMgcXVhbGlmaWVyIGNhbiBiZSBhbiBhcnJh
eS4KKy8vCisvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgaXMgYW4gZXJyb3IuCisvLworYm9vbCBU
UGFyc2VDb250ZXh0OjphcnJheVF1YWxpZmllckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYg
bGluZSwgVFB1YmxpY1R5cGUgdHlwZSkKK3sKKyAgICBpZiAoKHR5cGUucXVhbGlmaWVyID09IEV2
cUF0dHJpYnV0ZSkgfHwgKHR5cGUucXVhbGlmaWVyID09IEV2cUNvbnN0KSkgeworICAgICAgICBl
cnJvcihsaW5lLCAiY2Fubm90IGRlY2xhcmUgYXJyYXlzIG9mIHRoaXMgcXVhbGlmaWVyIiwgVFR5
cGUodHlwZSkuZ2V0Q29tcGxldGVTdHJpbmcoKS5jX3N0cigpKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCisvLworLy8gU2VlIGlmIHRoaXMg
dHlwZSBjYW4gYmUgYW4gYXJyYXkuCisvLworLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIGlzIGFu
IGVycm9yLgorLy8KK2Jvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlUeXBlRXJyb3JDaGVjayhjb25z
dCBUU291cmNlTG9jJiBsaW5lLCBUUHVibGljVHlwZSB0eXBlKQoreworICAgIC8vCisgICAgLy8g
Q2FuIHRoZSB0eXBlIGJlIGFuIGFycmF5PworICAgIC8vCisgICAgaWYgKHR5cGUuYXJyYXkpIHsK
KyAgICAgICAgZXJyb3IobGluZSwgImNhbm5vdCBkZWNsYXJlIGFycmF5cyBvZiBhcnJheXMiLCBU
VHlwZSh0eXBlKS5nZXRDb21wbGV0ZVN0cmluZygpLmNfc3RyKCkpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8vCisvLyBEbyBhbGwgdGhl
IHNlbWFudGljIGNoZWNraW5nIGZvciBkZWNsYXJpbmcgYW4gYXJyYXksIHdpdGggYW5kIAorLy8g
d2l0aG91dCBhIHNpemUsIGFuZCBtYWtlIHRoZSByaWdodCBjaGFuZ2VzIHRvIHRoZSBzeW1ib2wg
dGFibGUuCisvLworLy8gc2l6ZSA9PSAwIG1lYW5zIG5vIHNwZWNpZmllZCBzaXplLgorLy8KKy8v
IFJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCisvLworYm9vbCBUUGFyc2VDb250
ZXh0OjphcnJheUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRl
bnRpZmllciwgVFB1YmxpY1R5cGUgdHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpCit7CisgICAg
Ly8KKyAgICAvLyBEb24ndCBjaGVjayBmb3IgcmVzZXJ2ZWQgd29yZCB1c2UgdW50aWwgYWZ0ZXIg
d2Uga25vdyBpdCdzIG5vdCBpbiB0aGUgc3ltYm9sIHRhYmxlLAorICAgIC8vIGJlY2F1c2UgcmVz
ZXJ2ZWQgYXJyYXlzIGNhbiBiZSByZWRlY2xhcmVkLgorICAgIC8vCisKKyAgICBib29sIGJ1aWx0
SW4gPSBmYWxzZTsgCisgICAgYm9vbCBzYW1lU2NvcGUgPSBmYWxzZTsKKyAgICBUU3ltYm9sKiBz
eW1ib2wgPSBzeW1ib2xUYWJsZS5maW5kKGlkZW50aWZpZXIsICZidWlsdEluLCAmc2FtZVNjb3Bl
KTsKKyAgICBpZiAoc3ltYm9sID09IDAgfHwgIXNhbWVTY29wZSkgeworICAgICAgICBpZiAocmVz
ZXJ2ZWRFcnJvckNoZWNrKGxpbmUsIGlkZW50aWZpZXIpKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIAorICAgICAgICB2YXJpYWJsZSA9IG5ldyBUVmFyaWFibGUoJmlkZW50aWZp
ZXIsIFRUeXBlKHR5cGUpKTsKKworICAgICAgICBpZiAodHlwZS5hcnJheVNpemUpCisgICAgICAg
ICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLnNldEFycmF5U2l6ZSh0eXBlLmFycmF5U2l6ZSk7CisK
KyAgICAgICAgaWYgKCEgc3ltYm9sVGFibGUuaW5zZXJ0KCp2YXJpYWJsZSkpIHsKKyAgICAgICAg
ICAgIGRlbGV0ZSB2YXJpYWJsZTsKKyAgICAgICAgICAgIGVycm9yKGxpbmUsICJJTlRFUk5BTCBF
UlJPUiBpbnNlcnRpbmcgbmV3IHN5bWJvbCIsIGlkZW50aWZpZXIuY19zdHIoKSk7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmICgh
IHN5bWJvbC0+aXNWYXJpYWJsZSgpKSB7CisgICAgICAgICAgICBlcnJvcihsaW5lLCAidmFyaWFi
bGUgZXhwZWN0ZWQiLCBpZGVudGlmaWVyLmNfc3RyKCkpOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKworICAgICAgICB2YXJpYWJsZSA9IHN0YXRpY19jYXN0PFRWYXJpYWJs
ZSo+KHN5bWJvbCk7CisgICAgICAgIGlmICghIHZhcmlhYmxlLT5nZXRUeXBlKCkuaXNBcnJheSgp
KSB7CisgICAgICAgICAgICBlcnJvcihsaW5lLCAicmVkZWNsYXJpbmcgbm9uLWFycmF5IGFzIGFy
cmF5IiwgaWRlbnRpZmllci5jX3N0cigpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgICAgIGlmICh2YXJpYWJsZS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpID4g
MCkgeworICAgICAgICAgICAgZXJyb3IobGluZSwgInJlZGVjbGFyYXRpb24gb2YgYXJyYXkgd2l0
aCBzaXplIiwgaWRlbnRpZmllci5jX3N0cigpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoISB2YXJpYWJsZS0+Z2V0VHlwZSgpLnNh
bWVFbGVtZW50VHlwZShUVHlwZSh0eXBlKSkpIHsKKyAgICAgICAgICAgIGVycm9yKGxpbmUsICJy
ZWRlY2xhcmF0aW9uIG9mIGFycmF5IHdpdGggYSBkaWZmZXJlbnQgdHlwZSIsIGlkZW50aWZpZXIu
Y19zdHIoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmICh0eXBlLmFycmF5U2l6ZSkKKyAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCkuc2V0
QXJyYXlTaXplKHR5cGUuYXJyYXlTaXplKTsKKyAgICB9IAorCisgICAgaWYgKHZvaWRFcnJvckNo
ZWNrKGxpbmUsIGlkZW50aWZpZXIsIHR5cGUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IHJldHVybiBmYWxzZTsKK30KKworLy8KKy8vIEVuZm9yY2Ugbm9uLWluaXRpYWxpemVyIHR5cGUv
cXVhbGlmaWVyIHJ1bGVzLgorLy8KKy8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3YXMgYW4gZXJy
b3IuCisvLworYm9vbCBUUGFyc2VDb250ZXh0Ojpub25Jbml0Q29uc3RFcnJvckNoZWNrKGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiB0eXBl
LCBib29sIGFycmF5KQoreworICAgIGlmICh0eXBlLnF1YWxpZmllciA9PSBFdnFDb25zdCkKKyAg
ICB7CisgICAgICAgIC8vIE1ha2UgdGhlIHF1YWxpZmllciBtYWtlIHNlbnNlLgorICAgICAgICB0
eXBlLnF1YWxpZmllciA9IEV2cVRlbXBvcmFyeTsKKyAgICAgICAgCisgICAgICAgIGlmIChhcnJh
eSkKKyAgICAgICAgeworICAgICAgICAgICAgZXJyb3IobGluZSwgImFycmF5cyBtYXkgbm90IGJl
IGRlY2xhcmVkIGNvbnN0YW50IHNpbmNlIHRoZXkgY2Fubm90IGJlIGluaXRpYWxpemVkIiwgaWRl
bnRpZmllci5jX3N0cigpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICh0eXBlLmlzU3Ry
dWN0dXJlQ29udGFpbmluZ0FycmF5cygpKQorICAgICAgICB7CisgICAgICAgICAgICBlcnJvcihs
aW5lLCAic3RydWN0dXJlcyBjb250YWluaW5nIGFycmF5cyBtYXkgbm90IGJlIGRlY2xhcmVkIGNv
bnN0YW50IHNpbmNlIHRoZXkgY2Fubm90IGJlIGluaXRpYWxpemVkIiwgaWRlbnRpZmllci5jX3N0
cigpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGVy
cm9yKGxpbmUsICJ2YXJpYWJsZXMgd2l0aCBxdWFsaWZpZXIgJ2NvbnN0JyBtdXN0IGJlIGluaXRp
YWxpemVkIiwgaWRlbnRpZmllci5jX3N0cigpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8KKy8vIERvIHNlbWFu
dGljIGNoZWNraW5nIGZvciBhIHZhcmlhYmxlIGRlY2xhcmF0aW9uIHRoYXQgaGFzIG5vIGluaXRp
YWxpemVyLAorLy8gYW5kIHVwZGF0ZSB0aGUgc3ltYm9sIHRhYmxlLgorLy8KKy8vIFJldHVybnMg
dHJ1ZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCisvLworYm9vbCBUUGFyc2VDb250ZXh0Ojpub25J
bml0RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVy
LCBUUHVibGljVHlwZSYgdHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpCit7CisgICAgaWYgKHJl
c2VydmVkRXJyb3JDaGVjayhsaW5lLCBpZGVudGlmaWVyKSkKKyAgICAgICAgcmVjb3ZlcigpOwor
CisgICAgdmFyaWFibGUgPSBuZXcgVFZhcmlhYmxlKCZpZGVudGlmaWVyLCBUVHlwZSh0eXBlKSk7
CisKKyAgICBpZiAoISBzeW1ib2xUYWJsZS5pbnNlcnQoKnZhcmlhYmxlKSkgeworICAgICAgICBl
cnJvcihsaW5lLCAicmVkZWZpbml0aW9uIiwgdmFyaWFibGUtPmdldE5hbWUoKS5jX3N0cigpKTsK
KyAgICAgICAgZGVsZXRlIHZhcmlhYmxlOworICAgICAgICB2YXJpYWJsZSA9IDA7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmICh2b2lkRXJyb3JDaGVjayhsaW5lLCBpZGVu
dGlmaWVyLCB0eXBlKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgVFBhcnNlQ29udGV4dDo6cGFyYW1FcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBUUXVhbGlmaWVyIHBhcmFtUXVhbGlmaWVy
LCBUVHlwZSogdHlwZSkKK3sgICAgCisgICAgaWYgKHF1YWxpZmllciAhPSBFdnFDb25zdCAmJiBx
dWFsaWZpZXIgIT0gRXZxVGVtcG9yYXJ5KSB7CisgICAgICAgIGVycm9yKGxpbmUsICJxdWFsaWZp
ZXIgbm90IGFsbG93ZWQgb24gZnVuY3Rpb24gcGFyYW1ldGVyIiwgZ2V0UXVhbGlmaWVyU3RyaW5n
KHF1YWxpZmllcikpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKHF1YWxp
ZmllciA9PSBFdnFDb25zdCAmJiBwYXJhbVF1YWxpZmllciAhPSBFdnFJbikgeworICAgICAgICBl
cnJvcihsaW5lLCAicXVhbGlmaWVyIG5vdCBhbGxvd2VkIHdpdGggIiwgZ2V0UXVhbGlmaWVyU3Ry
aW5nKHF1YWxpZmllciksIGdldFF1YWxpZmllclN0cmluZyhwYXJhbVF1YWxpZmllcikpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAocXVhbGlmaWVyID09IEV2cUNvbnN0
KQorICAgICAgICB0eXBlLT5zZXRRdWFsaWZpZXIoRXZxQ29uc3RSZWFkT25seSk7CisgICAgZWxz
ZQorICAgICAgICB0eXBlLT5zZXRRdWFsaWZpZXIocGFyYW1RdWFsaWZpZXIpOworCisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIFRQYXJzZUNvbnRleHQ6OmV4dGVuc2lvbkVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYgZXh0ZW5zaW9uKQoreworICAg
IGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciYgZXh0QmVoYXZpb3IgPSBleHRlbnNpb25CZWhhdmlv
cigpOworICAgIFRFeHRlbnNpb25CZWhhdmlvcjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGV4dEJl
aGF2aW9yLmZpbmQoZXh0ZW5zaW9uLmNfc3RyKCkpOworICAgIGlmIChpdGVyID09IGV4dEJlaGF2
aW9yLmVuZCgpKSB7CisgICAgICAgIGVycm9yKGxpbmUsICJleHRlbnNpb24iLCBleHRlbnNpb24u
Y19zdHIoKSwgImlzIG5vdCBzdXBwb3J0ZWQiKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIC8vIEluIEdMU0wgRVMsIGFuIGV4dGVuc2lvbidzIGRlZmF1bHQgYmVoYXZpb3IgaXMg
ImRpc2FibGUiLgorICAgIGlmIChpdGVyLT5zZWNvbmQgPT0gRUJoRGlzYWJsZSB8fCBpdGVyLT5z
ZWNvbmQgPT0gRUJoVW5kZWZpbmVkKSB7CisgICAgICAgIGVycm9yKGxpbmUsICJleHRlbnNpb24i
LCBleHRlbnNpb24uY19zdHIoKSwgImlzIGRpc2FibGVkIik7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICBpZiAoaXRlci0+c2Vjb25kID09IEVCaFdhcm4pIHsKKyAgICAgICAgd2Fy
bmluZyhsaW5lLCAiZXh0ZW5zaW9uIiwgZXh0ZW5zaW9uLmNfc3RyKCksICJpcyBiZWluZyB1c2Vk
Iik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgVFBhcnNlQ29udGV4dDo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgY2hhciogZXh0
ZW5zaW9uKQoreworICAgIGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciYgZXh0YmVoYXZpb3IgPSBl
eHRlbnNpb25CZWhhdmlvcigpOworICAgIFRFeHRlbnNpb25CZWhhdmlvcjo6Y29uc3RfaXRlcmF0
b3IgaXRlciA9IGV4dGJlaGF2aW9yLmZpbmQoZXh0ZW5zaW9uKTsKKyAgICByZXR1cm4gKGl0ZXIg
IT0gZXh0YmVoYXZpb3IuZW5kKCkpOworfQorCitib29sIFRQYXJzZUNvbnRleHQ6OmlzRXh0ZW5z
aW9uRW5hYmxlZChjb25zdCBjaGFyKiBleHRlbnNpb24pIGNvbnN0Cit7CisgICAgY29uc3QgVEV4
dGVuc2lvbkJlaGF2aW9yJiBleHRiZWhhdmlvciA9IGV4dGVuc2lvbkJlaGF2aW9yKCk7CisgICAg
VEV4dGVuc2lvbkJlaGF2aW9yOjpjb25zdF9pdGVyYXRvciBpdGVyID0gZXh0YmVoYXZpb3IuZmlu
ZChleHRlbnNpb24pOworCisgICAgaWYgKGl0ZXIgPT0gZXh0YmVoYXZpb3IuZW5kKCkpCisgICAg
eworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIChpdGVyLT5zZWNv
bmQgPT0gRUJoRW5hYmxlIHx8IGl0ZXItPnNlY29uZCA9PSBFQmhSZXF1aXJlKTsKK30KKworLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gTm9uLUVycm9ycy4KKy8vCisvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KKworLy8KKy8vIExvb2sgdXAgYSBmdW5jdGlvbiBuYW1lIGluIHRoZSBz
eW1ib2wgdGFibGUsIGFuZCBtYWtlIHN1cmUgaXQgaXMgYSBmdW5jdGlvbi4KKy8vCisvLyBSZXR1
cm4gdGhlIGZ1bmN0aW9uIHN5bWJvbCBpZiBmb3VuZCwgb3RoZXJ3aXNlIDAuCisvLworY29uc3Qg
VEZ1bmN0aW9uKiBUUGFyc2VDb250ZXh0OjpmaW5kRnVuY3Rpb24oY29uc3QgVFNvdXJjZUxvYyYg
bGluZSwgVEZ1bmN0aW9uKiBjYWxsLCBib29sICpidWlsdEluKQoreworICAgIC8vIEZpcnN0IGZp
bmQgYnkgdW5tYW5nbGVkIG5hbWUgdG8gY2hlY2sgd2hldGhlciB0aGUgZnVuY3Rpb24gbmFtZSBo
YXMgYmVlbgorICAgIC8vIGhpZGRlbiBieSBhIHZhcmlhYmxlIG5hbWUgb3Igc3RydWN0IHR5cGVu
YW1lLgorICAgIC8vIElmIGEgZnVuY3Rpb24gaXMgZm91bmQsIGNoZWNrIGZvciBvbmUgd2l0aCBh
IG1hdGNoaW5nIGFyZ3VtZW50IGxpc3QuCisgICAgY29uc3QgVFN5bWJvbCogc3ltYm9sID0gc3lt
Ym9sVGFibGUuZmluZChjYWxsLT5nZXROYW1lKCksIGJ1aWx0SW4pOworICAgIGlmIChzeW1ib2wg
PT0gMCB8fCBzeW1ib2wtPmlzRnVuY3Rpb24oKSkgeworICAgICAgICBzeW1ib2wgPSBzeW1ib2xU
YWJsZS5maW5kKGNhbGwtPmdldE1hbmdsZWROYW1lKCksIGJ1aWx0SW4pOworICAgIH0KKworICAg
IGlmIChzeW1ib2wgPT0gMCkgeworICAgICAgICBlcnJvcihsaW5lLCAibm8gbWF0Y2hpbmcgb3Zl
cmxvYWRlZCBmdW5jdGlvbiBmb3VuZCIsIGNhbGwtPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKCFzeW1ib2wtPmlzRnVuY3Rpb24oKSkgewor
ICAgICAgICBlcnJvcihsaW5lLCAiZnVuY3Rpb24gbmFtZSBleHBlY3RlZCIsIGNhbGwtPmdldE5h
bWUoKS5jX3N0cigpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IFRGdW5jdGlvbio+KHN5bWJvbCk7Cit9CisKKy8vCisvLyBJbml0aWFs
aXplcnMgc2hvdyB1cCBpbiBzZXZlcmFsIHBsYWNlcyBpbiB0aGUgZ3JhbW1hci4gIEhhdmUgb25l
IHNldCBvZgorLy8gY29kZSB0byBoYW5kbGUgdGhlbSBoZXJlLgorLy8KK2Jvb2wgVFBhcnNlQ29u
dGV4dDo6ZXhlY3V0ZUluaXRpYWxpemVyKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcm
IGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiBwVHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluaXRpYWxpemVyLCBUSW50ZXJtTm9kZSom
IGludGVybU5vZGUsIFRWYXJpYWJsZSogdmFyaWFibGUpCit7CisgICAgVFR5cGUgdHlwZSA9IFRU
eXBlKHBUeXBlKTsKKworICAgIGlmICh2YXJpYWJsZSA9PSAwKSB7CisgICAgICAgIGlmIChyZXNl
cnZlZEVycm9yQ2hlY2sobGluZSwgaWRlbnRpZmllcikpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgICAgICBpZiAodm9pZEVycm9yQ2hlY2sobGluZSwgaWRlbnRpZmllciwgcFR5cGUp
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgLy8KKyAgICAgICAgLy8gYWRk
IHZhcmlhYmxlIHRvIHN5bWJvbCB0YWJsZQorICAgICAgICAvLworICAgICAgICB2YXJpYWJsZSA9
IG5ldyBUVmFyaWFibGUoJmlkZW50aWZpZXIsIHR5cGUpOworICAgICAgICBpZiAoISBzeW1ib2xU
YWJsZS5pbnNlcnQoKnZhcmlhYmxlKSkgeworICAgICAgICAgICAgZXJyb3IobGluZSwgInJlZGVm
aW5pdGlvbiIsIHZhcmlhYmxlLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgIC8vIGRvbid0IGRlbGV0ZSB2YXJpYWJsZSwgaXQncyB1c2Vk
IGJ5IGVycm9yIHJlY292ZXJ5LCBhbmQgdGhlIHBvb2wgCisgICAgICAgICAgICAvLyBwb3Agd2ls
bCB0YWtlIGNhcmUgb2YgdGhlIG1lbW9yeQorICAgICAgICB9CisgICAgfQorCisgICAgLy8KKyAg
ICAvLyBpZGVudGlmaWVyIG11c3QgYmUgb2YgdHlwZSBjb25zdGFudCwgYSBnbG9iYWwsIG9yIGEg
dGVtcG9yYXJ5CisgICAgLy8KKyAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA9IHZhcmlhYmxlLT5n
ZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCk7CisgICAgaWYgKChxdWFsaWZpZXIgIT0gRXZxVGVtcG9y
YXJ5KSAmJiAocXVhbGlmaWVyICE9IEV2cUdsb2JhbCkgJiYgKHF1YWxpZmllciAhPSBFdnFDb25z
dCkpIHsKKyAgICAgICAgZXJyb3IobGluZSwgIiBjYW5ub3QgaW5pdGlhbGl6ZSB0aGlzIHR5cGUg
b2YgcXVhbGlmaWVyICIsIHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyU3RyaW5nKCkp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgLy8KKyAgICAvLyB0ZXN0IGZvciBh
bmQgcHJvcGFnYXRlIGNvbnN0YW50CisgICAgLy8KKworICAgIGlmIChxdWFsaWZpZXIgPT0gRXZx
Q29uc3QpIHsKKyAgICAgICAgaWYgKHF1YWxpZmllciAhPSBpbml0aWFsaXplci0+Z2V0VHlwZSgp
LmdldFF1YWxpZmllcigpKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUlu
Zm9TdHJlYW07CisgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgIiciIDw8IHZhcmlhYmxl
LT5nZXRUeXBlKCkuZ2V0Q29tcGxldGVTdHJpbmcoKSA8PCAiJyI7CisgICAgICAgICAgICBzdGQ6
OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7CisgICAgICAgICAgICBl
cnJvcihsaW5lLCAiIGFzc2lnbmluZyBub24tY29uc3RhbnQgdG8iLCAiPSIsIGV4dHJhSW5mby5j
X3N0cigpKTsKKyAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCkuc2V0UXVhbGlmaWVyKEV2
cVRlbXBvcmFyeSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAodHlwZSAhPSBpbml0aWFsaXplci0+Z2V0VHlwZSgpKSB7CisgICAgICAgICAgICBlcnJv
cihsaW5lLCAiIG5vbi1tYXRjaGluZyB0eXBlcyBmb3IgY29uc3QgaW5pdGlhbGl6ZXIgIiwgCisg
ICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXJTdHJpbmcoKSk7
CisgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLnNldFF1YWxpZmllcihFdnFUZW1wb3Jh
cnkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlu
aXRpYWxpemVyLT5nZXRBc0NvbnN0YW50VW5pb24oKSkgeyAKKyAgICAgICAgICAgIHZhcmlhYmxl
LT5zaGFyZUNvbnN0UG9pbnRlcihpbml0aWFsaXplci0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdl
dFVuaW9uQXJyYXlQb2ludGVyKCkpOworICAgICAgICB9IGVsc2UgaWYgKGluaXRpYWxpemVyLT5n
ZXRBc1N5bWJvbE5vZGUoKSkgeworICAgICAgICAgICAgY29uc3QgVFN5bWJvbCogc3ltYm9sID0g
c3ltYm9sVGFibGUuZmluZChpbml0aWFsaXplci0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJv
bCgpKTsKKyAgICAgICAgICAgIGNvbnN0IFRWYXJpYWJsZSogdFZhciA9IHN0YXRpY19jYXN0PGNv
bnN0IFRWYXJpYWJsZSo+KHN5bWJvbCk7CisKKyAgICAgICAgICAgIENvbnN0YW50VW5pb24qIGNv
bnN0QXJyYXkgPSB0VmFyLT5nZXRDb25zdFBvaW50ZXIoKTsKKyAgICAgICAgICAgIHZhcmlhYmxl
LT5zaGFyZUNvbnN0UG9pbnRlcihjb25zdEFycmF5KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKKyAgICAgICAgICAgIGV4
dHJhSW5mb1N0cmVhbSA8PCAiJyIgPDwgdmFyaWFibGUtPmdldFR5cGUoKS5nZXRDb21wbGV0ZVN0
cmluZygpIDw8ICInIjsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJh
SW5mb1N0cmVhbS5zdHIoKTsKKyAgICAgICAgICAgIGVycm9yKGxpbmUsICIgY2Fubm90IGFzc2ln
biB0byIsICI9IiwgZXh0cmFJbmZvLmNfc3RyKCkpOworICAgICAgICAgICAgdmFyaWFibGUtPmdl
dFR5cGUoKS5zZXRRdWFsaWZpZXIoRXZxVGVtcG9yYXJ5KTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisgICAgfQorIAorICAgIGlmIChxdWFsaWZpZXIgIT0gRXZxQ29uc3Qp
IHsKKyAgICAgICAgVEludGVybVN5bWJvbCogaW50ZXJtU3ltYm9sID0gaW50ZXJtZWRpYXRlLmFk
ZFN5bWJvbCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwgdmFyaWFibGUtPmdldE5hbWUoKSwgdmFy
aWFibGUtPmdldFR5cGUoKSwgbGluZSk7CisgICAgICAgIGludGVybU5vZGUgPSBpbnRlcm1lZGlh
dGUuYWRkQXNzaWduKEVPcEluaXRpYWxpemUsIGludGVybVN5bWJvbCwgaW5pdGlhbGl6ZXIsIGxp
bmUpOworICAgICAgICBpZiAoaW50ZXJtTm9kZSA9PSAwKSB7CisgICAgICAgICAgICBhc3NpZ25F
cnJvcihsaW5lLCAiPSIsIGludGVybVN5bWJvbC0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgaW5pdGlh
bGl6ZXItPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UgCisgICAgICAgIGludGVybU5vZGUgPSAwOworCisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIFRQYXJzZUNvbnRleHQ6OmFyZUFsbENoaWxkQ29uc3QoVElu
dGVybUFnZ3JlZ2F0ZSogYWdnck5vZGUpCit7CisgICAgQVNTRVJUKGFnZ3JOb2RlICE9IE5VTEwp
OworICAgIGlmICghYWdnck5vZGUtPmlzQ29uc3RydWN0b3IoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgYm9vbCBhbGxDb25zdGFudCA9IHRydWU7CisKKyAgICAvLyBjaGVjayBpZiBh
bGwgdGhlIGNoaWxkIG5vZGVzIGFyZSBjb25zdGFudHMgc28gdGhhdCB0aGV5IGNhbiBiZSBpbnNl
cnRlZCBpbnRvIAorICAgIC8vIHRoZSBwYXJlbnQgbm9kZQorICAgIFRJbnRlcm1TZXF1ZW5jZSAm
c2VxdWVuY2UgPSBhZ2dyTm9kZS0+Z2V0U2VxdWVuY2UoKSA7CisgICAgZm9yIChUSW50ZXJtU2Vx
dWVuY2U6Oml0ZXJhdG9yIHAgPSBzZXF1ZW5jZS5iZWdpbigpOyBwICE9IHNlcXVlbmNlLmVuZCgp
OyArK3ApIHsKKyAgICAgICAgaWYgKCEoKnApLT5nZXRBc1R5cGVkKCktPmdldEFzQ29uc3RhbnRV
bmlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBh
bGxDb25zdGFudDsKK30KKworLy8gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHRlc3QgZm9yIHRo
ZSBjb3JyZWN0bmVzcyBvZiB0aGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gdmFyaW91cyBjb25zdHJ1
Y3RvciBmdW5jdGlvbnMKKy8vIGFuZCBhbHNvIGNvbnZlcnQgdGhlbSB0byB0aGUgcmlnaHQgZGF0
YXR5cGUgaWYgaXQgaXMgYWxsb3dlZCBhbmQgcmVxdWlyZWQuIAorLy8KKy8vIFJldHVybnMgMCBm
b3IgYW4gZXJyb3Igb3IgdGhlIGNvbnN0cnVjdGVkIG5vZGUgKGFnZ3JlZ2F0ZSBvciB0eXBlZCkg
Zm9yIG5vIGVycm9yLgorLy8KK1RJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3Ry
dWN0b3IoVEludGVybU5vZGUqIG5vZGUsIGNvbnN0IFRUeXBlKiB0eXBlLCBUT3BlcmF0b3Igb3As
IFRGdW5jdGlvbiogZm5DYWxsLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQoreworICAgIGlmIChu
b2RlID09IDApCisgICAgICAgIHJldHVybiAwOworCisgICAgVEludGVybUFnZ3JlZ2F0ZSogYWdn
ck5vZGUgPSBub2RlLT5nZXRBc0FnZ3JlZ2F0ZSgpOworICAgIAorICAgIFRGaWVsZExpc3Q6OmNv
bnN0X2l0ZXJhdG9yIG1lbWJlckZpZWxkczsKKyAgICBpZiAob3AgPT0gRU9wQ29uc3RydWN0U3Ry
dWN0KQorICAgICAgICBtZW1iZXJGaWVsZHMgPSB0eXBlLT5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCku
YmVnaW4oKTsKKyAgICAKKyAgICBUVHlwZSBlbGVtZW50VHlwZSA9ICp0eXBlOworICAgIGlmICh0
eXBlLT5pc0FycmF5KCkpCisgICAgICAgIGVsZW1lbnRUeXBlLmNsZWFyQXJyYXluZXNzKCk7CisK
KyAgICBib29sIHNpbmdsZUFyZzsKKyAgICBpZiAoYWdnck5vZGUpIHsKKyAgICAgICAgaWYgKGFn
Z3JOb2RlLT5nZXRPcCgpICE9IEVPcE51bGwgfHwgYWdnck5vZGUtPmdldFNlcXVlbmNlKCkuc2l6
ZSgpID09IDEpCisgICAgICAgICAgICBzaW5nbGVBcmcgPSB0cnVlOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBzaW5nbGVBcmcgPSBmYWxzZTsKKyAgICB9IGVsc2UKKyAgICAgICAgc2luZ2xl
QXJnID0gdHJ1ZTsKKworICAgIFRJbnRlcm1UeXBlZCAqbmV3Tm9kZTsKKyAgICBpZiAoc2luZ2xl
QXJnKSB7CisgICAgICAgIC8vIElmIHN0cnVjdHVyZSBjb25zdHJ1Y3RvciBvciBhcnJheSBjb25z
dHJ1Y3RvciBpcyBiZWluZyBjYWxsZWQgCisgICAgICAgIC8vIGZvciBvbmx5IG9uZSBwYXJhbWV0
ZXIgaW5zaWRlIHRoZSBzdHJ1Y3R1cmUsIHdlIG5lZWQgdG8gY2FsbCBjb25zdHJ1Y3RTdHJ1Y3Qg
ZnVuY3Rpb24gb25jZS4KKyAgICAgICAgaWYgKHR5cGUtPmlzQXJyYXkoKSkKKyAgICAgICAgICAg
IG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qobm9kZSwgJmVsZW1lbnRUeXBlLCAxLCBub2RlLT5n
ZXRMaW5lKCksIGZhbHNlKTsKKyAgICAgICAgZWxzZSBpZiAob3AgPT0gRU9wQ29uc3RydWN0U3Ry
dWN0KQorICAgICAgICAgICAgbmV3Tm9kZSA9IGNvbnN0cnVjdFN0cnVjdChub2RlLCAoKm1lbWJl
ckZpZWxkcyktPnR5cGUoKSwgMSwgbm9kZS0+Z2V0TGluZSgpLCBmYWxzZSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RCdWlsdEluKHR5cGUsIG9wLCBub2Rl
LCBub2RlLT5nZXRMaW5lKCksIGZhbHNlKTsKKworICAgICAgICBpZiAobmV3Tm9kZSAmJiBuZXdO
b2RlLT5nZXRBc0FnZ3JlZ2F0ZSgpKSB7CisgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGNvbnN0
Q29uc3RydWN0b3IgPSBmb2xkQ29uc3RDb25zdHJ1Y3RvcihuZXdOb2RlLT5nZXRBc0FnZ3JlZ2F0
ZSgpLCAqdHlwZSk7CisgICAgICAgICAgICBpZiAoY29uc3RDb25zdHJ1Y3RvcikKKyAgICAgICAg
ICAgICAgICByZXR1cm4gY29uc3RDb25zdHJ1Y3RvcjsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiBuZXdOb2RlOworICAgIH0KKyAgICAKKyAgICAvLworICAgIC8vIEhhbmRsZSBsaXN0IG9m
IGFyZ3VtZW50cy4KKyAgICAvLworICAgIFRJbnRlcm1TZXF1ZW5jZSAmc2VxdWVuY2VWZWN0b3Ig
PSBhZ2dyTm9kZS0+Z2V0U2VxdWVuY2UoKSA7ICAgIC8vIFN0b3JlcyB0aGUgaW5mb3JtYXRpb24g
YWJvdXQgdGhlIHBhcmFtZXRlciB0byB0aGUgY29uc3RydWN0b3IKKyAgICAvLyBpZiB0aGUgc3Ry
dWN0dXJlIGNvbnN0cnVjdG9yIGNvbnRhaW5zIG1vcmUgdGhhbiBvbmUgcGFyYW1ldGVyLCB0aGVu
IGNvbnN0cnVjdAorICAgIC8vIGVhY2ggcGFyYW1ldGVyCisgICAgCisgICAgaW50IHBhcmFtQ291
bnQgPSAwOyAgLy8ga2VlcHMgYSB0cmFjayBvZiB0aGUgY29uc3RydWN0b3IgcGFyYW1ldGVyIG51
bWJlciBiZWluZyBjaGVja2VkICAgIAorICAgIAorICAgIC8vIGZvciBlYWNoIHBhcmFtZXRlciB0
byB0aGUgY29uc3RydWN0b3IgY2FsbCwgY2hlY2sgdG8gc2VlIGlmIHRoZSByaWdodCB0eXBlIGlz
IHBhc3NlZCBvciBjb252ZXJ0IHRoZW0gCisgICAgLy8gdG8gdGhlIHJpZ2h0IHR5cGUgaWYgcG9z
c2libGUgKGFuZCBhbGxvd2VkKS4KKyAgICAvLyBmb3Igc3RydWN0dXJlIGNvbnN0cnVjdG9ycywg
anVzdCBjaGVjayBpZiB0aGUgcmlnaHQgdHlwZSBpcyBwYXNzZWQsIG5vIGNvbnZlcnNpb24gaXMg
YWxsb3dlZC4KKyAgICAKKyAgICBmb3IgKFRJbnRlcm1TZXF1ZW5jZTo6aXRlcmF0b3IgcCA9IHNl
cXVlbmNlVmVjdG9yLmJlZ2luKCk7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwICE9IHNlcXVlbmNlVmVjdG9yLmVuZCgpOyBwKyssIHBhcmFtQ291bnQrKykgeworICAgICAg
ICBpZiAodHlwZS0+aXNBcnJheSgpKQorICAgICAgICAgICAgbmV3Tm9kZSA9IGNvbnN0cnVjdFN0
cnVjdCgqcCwgJmVsZW1lbnRUeXBlLCBwYXJhbUNvdW50KzEsIG5vZGUtPmdldExpbmUoKSwgdHJ1
ZSk7CisgICAgICAgIGVsc2UgaWYgKG9wID09IEVPcENvbnN0cnVjdFN0cnVjdCkKKyAgICAgICAg
ICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3QoKnAsIG1lbWJlckZpZWxkc1twYXJhbUNvdW50
XS0+dHlwZSgpLCBwYXJhbUNvdW50KzEsIG5vZGUtPmdldExpbmUoKSwgdHJ1ZSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RCdWlsdEluKHR5cGUsIG9wLCAq
cCwgbm9kZS0+Z2V0TGluZSgpLCB0cnVlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChuZXdOb2Rl
KSB7CisgICAgICAgICAgICAqcCA9IG5ld05vZGU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBU
SW50ZXJtVHlwZWQqIGNvbnN0cnVjdG9yID0gaW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJh
dG9yKGFnZ3JOb2RlLCBvcCwgbGluZSk7CisgICAgVEludGVybVR5cGVkKiBjb25zdENvbnN0cnVj
dG9yID0gZm9sZENvbnN0Q29uc3RydWN0b3IoY29uc3RydWN0b3ItPmdldEFzQWdncmVnYXRlKCks
ICp0eXBlKTsKKyAgICBpZiAoY29uc3RDb25zdHJ1Y3RvcikKKyAgICAgICAgcmV0dXJuIGNvbnN0
Q29uc3RydWN0b3I7CisKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1RJbnRlcm1UeXBl
ZCogVFBhcnNlQ29udGV4dDo6Zm9sZENvbnN0Q29uc3RydWN0b3IoVEludGVybUFnZ3JlZ2F0ZSog
YWdnck5vZGUsIGNvbnN0IFRUeXBlJiB0eXBlKQoreworICAgIGJvb2wgY2FuQmVGb2xkZWQgPSBh
cmVBbGxDaGlsZENvbnN0KGFnZ3JOb2RlKTsKKyAgICBhZ2dyTm9kZS0+c2V0VHlwZSh0eXBlKTsK
KyAgICBpZiAoY2FuQmVGb2xkZWQpIHsKKyAgICAgICAgYm9vbCByZXR1cm5WYWwgPSBmYWxzZTsK
KyAgICAgICAgQ29uc3RhbnRVbmlvbiogdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW3R5
cGUuZ2V0T2JqZWN0U2l6ZSgpXTsKKyAgICAgICAgaWYgKGFnZ3JOb2RlLT5nZXRTZXF1ZW5jZSgp
LnNpemUoKSA9PSAxKSAgeworICAgICAgICAgICAgcmV0dXJuVmFsID0gaW50ZXJtZWRpYXRlLnBh
cnNlQ29uc3RUcmVlKGFnZ3JOb2RlLT5nZXRMaW5lKCksIGFnZ3JOb2RlLCB1bmlvbkFycmF5LCBh
Z2dyTm9kZS0+Z2V0T3AoKSwgc3ltYm9sVGFibGUsICB0eXBlLCB0cnVlKTsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVyblZhbCA9IGludGVybWVkaWF0ZS5wYXJz
ZUNvbnN0VHJlZShhZ2dyTm9kZS0+Z2V0TGluZSgpLCBhZ2dyTm9kZSwgdW5pb25BcnJheSwgYWdn
ck5vZGUtPmdldE9wKCksIHN5bWJvbFRhYmxlLCAgdHlwZSk7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKHJldHVyblZhbCkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIHJldHVybiBp
bnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCB0eXBlLCBhZ2dyTm9kZS0+
Z2V0TGluZSgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLy8gRnVuY3Rpb24gZm9y
IGNvbnN0cnVjdG9yIGltcGxlbWVudGF0aW9uLiBDYWxscyBhZGRVbmFyeU1hdGggd2l0aCBhcHBy
b3ByaWF0ZSBFT3AgdmFsdWUKKy8vIGZvciB0aGUgcGFyYW1ldGVyIHRvIHRoZSBjb25zdHJ1Y3Rv
ciAocGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24pLiBFc3NlbnRpYWxseSwgaXQgY29udmVydHMKKy8v
IHRoZSBwYXJhbWV0ZXIgdHlwZXMgY29ycmVjdGx5LiBJZiBhIGNvbnN0cnVjdG9yIGV4cGVjdHMg
YW4gaW50IChsaWtlIGl2ZWMyKSBhbmQgaXMgcGFzc2VkIGEgCisvLyBmbG9hdCwgdGhlbiBmbG9h
dCBpcyBjb252ZXJ0ZWQgdG8gaW50LgorLy8KKy8vIFJldHVybnMgMCBmb3IgYW4gZXJyb3Igb3Ig
dGhlIGNvbnN0cnVjdGVkIG5vZGUuCisvLworVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0Ojpj
b25zdHJ1Y3RCdWlsdEluKGNvbnN0IFRUeXBlKiB0eXBlLCBUT3BlcmF0b3Igb3AsIFRJbnRlcm1O
b2RlKiBub2RlLCBjb25zdCBUU291cmNlTG9jJiBsaW5lLCBib29sIHN1YnNldCkKK3sKKyAgICBU
SW50ZXJtVHlwZWQqIG5ld05vZGU7CisgICAgVE9wZXJhdG9yIGJhc2ljT3A7CisKKyAgICAvLwor
ICAgIC8vIEZpcnN0LCBjb252ZXJ0IHR5cGVzIGFzIG5lZWRlZC4KKyAgICAvLworICAgIHN3aXRj
aCAob3ApIHsKKyAgICBjYXNlIEVPcENvbnN0cnVjdFZlYzI6CisgICAgY2FzZSBFT3BDb25zdHJ1
Y3RWZWMzOgorICAgIGNhc2UgRU9wQ29uc3RydWN0VmVjNDoKKyAgICBjYXNlIEVPcENvbnN0cnVj
dE1hdDI6CisgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQzOgorICAgIGNhc2UgRU9wQ29uc3RydWN0
TWF0NDoKKyAgICBjYXNlIEVPcENvbnN0cnVjdEZsb2F0OgorICAgICAgICBiYXNpY09wID0gRU9w
Q29uc3RydWN0RmxvYXQ7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBFT3BDb25zdHJ1Y3RJ
VmVjMjoKKyAgICBjYXNlIEVPcENvbnN0cnVjdElWZWMzOgorICAgIGNhc2UgRU9wQ29uc3RydWN0
SVZlYzQ6CisgICAgY2FzZSBFT3BDb25zdHJ1Y3RJbnQ6CisgICAgICAgIGJhc2ljT3AgPSBFT3BD
b25zdHJ1Y3RJbnQ7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBFT3BDb25zdHJ1Y3RCVmVj
MjoKKyAgICBjYXNlIEVPcENvbnN0cnVjdEJWZWMzOgorICAgIGNhc2UgRU9wQ29uc3RydWN0QlZl
YzQ6CisgICAgY2FzZSBFT3BDb25zdHJ1Y3RCb29sOgorICAgICAgICBiYXNpY09wID0gRU9wQ29u
c3RydWN0Qm9vbDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBlcnJv
cihsaW5lLCAidW5zdXBwb3J0ZWQgY29uc3RydWN0aW9uIiwgIiIpOworICAgICAgICByZWNvdmVy
KCk7CisKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIG5ld05vZGUgPSBpbnRlcm1lZGlh
dGUuYWRkVW5hcnlNYXRoKGJhc2ljT3AsIG5vZGUsIG5vZGUtPmdldExpbmUoKSwgc3ltYm9sVGFi
bGUpOworICAgIGlmIChuZXdOb2RlID09IDApIHsKKyAgICAgICAgZXJyb3IobGluZSwgImNhbid0
IGNvbnZlcnQiLCAiY29uc3RydWN0b3IiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisg
ICAgLy8KKyAgICAvLyBOb3csIGlmIHRoZXJlIHN0aWxsIGlzbid0IGFuIG9wZXJhdGlvbiB0byBk
byB0aGUgY29uc3RydWN0aW9uLCBhbmQgd2UgbmVlZCBvbmUsIGFkZCBvbmUuCisgICAgLy8KKyAg
ICAKKyAgICAvLyBPdGhlcndpc2UsIHNraXAgb3V0IGVhcmx5LgorICAgIGlmIChzdWJzZXQgfHwg
KG5ld05vZGUgIT0gbm9kZSAmJiBuZXdOb2RlLT5nZXRUeXBlKCkgPT0gKnR5cGUpKQorICAgICAg
ICByZXR1cm4gbmV3Tm9kZTsKKworICAgIC8vIHNldEFnZ3JlZ2F0ZU9wZXJhdG9yIHdpbGwgaW5z
ZXJ0IGEgbmV3IG5vZGUgZm9yIHRoZSBjb25zdHJ1Y3RvciwgYXMgbmVlZGVkLgorICAgIHJldHVy
biBpbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IobmV3Tm9kZSwgb3AsIGxpbmUpOwor
fQorCisvLyBUaGlzIGZ1bmN0aW9uIHRlc3RzIGZvciB0aGUgdHlwZSBvZiB0aGUgcGFyYW1ldGVy
cyB0byB0aGUgc3RydWN0dXJlcyBjb25zdHJ1Y3RvcnMuIFJhaXNlcworLy8gYW4gZXJyb3IgbWVz
c2FnZSBpZiB0aGUgZXhwZWN0ZWQgdHlwZSBkb2VzIG5vdCBtYXRjaCB0aGUgcGFyYW1ldGVyIHBh
c3NlZCB0byB0aGUgY29uc3RydWN0b3IuCisvLworLy8gUmV0dXJucyAwIGZvciBhbiBlcnJvciBv
ciB0aGUgaW5wdXQgbm9kZSBpdHNlbGYgaWYgdGhlIGV4cGVjdGVkIGFuZCB0aGUgZ2l2ZW4gcGFy
YW1ldGVyIHR5cGVzIG1hdGNoLgorLy8KK1RJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6Y29u
c3RydWN0U3RydWN0KFRJbnRlcm1Ob2RlKiBub2RlLCBUVHlwZSogdHlwZSwgaW50IHBhcmFtQ291
bnQsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGJvb2wgc3Vic2V0KQoreworICAgIGlmICgqdHlw
ZSA9PSBub2RlLT5nZXRBc1R5cGVkKCktPmdldFR5cGUoKSkgeworICAgICAgICBpZiAoc3Vic2V0
KQorICAgICAgICAgICAgcmV0dXJuIG5vZGUtPmdldEFzVHlwZWQoKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgcmV0dXJuIGludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcihub2Rl
LT5nZXRBc1R5cGVkKCksIEVPcENvbnN0cnVjdFN0cnVjdCwgbGluZSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOworICAgICAgICBleHRy
YUluZm9TdHJlYW0gPDwgImNhbm5vdCBjb252ZXJ0IHBhcmFtZXRlciAiIDw8IHBhcmFtQ291bnQg
CisgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGZyb20gJyIgPDwgbm9kZS0+Z2V0QXNUeXBl
ZCgpLT5nZXRUeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKQorICAgICAgICAgICAgICAgICAgICAgICAg
PDwgIicgdG8gJyIgPDwgdHlwZS0+Z2V0QmFzaWNTdHJpbmcoKSA8PCAiJyI7CisgICAgICAgIHN0
ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKKyAgICAgICAgZXJy
b3IobGluZSwgIiIsICJjb25zdHJ1Y3RvciIsIGV4dHJhSW5mby5jX3N0cigpKTsKKyAgICAgICAg
cmVjb3ZlcigpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvLworLy8gVGhpcyBmdW5j
dGlvbiByZXR1cm5zIHRoZSB0cmVlIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgdmVjdG9yIGZpZWxk
KHMpIGJlaW5nIGFjY2Vzc2VkIGZyb20gY29udGFudCB2ZWN0b3IuCisvLyBJZiBvbmx5IG9uZSBj
b21wb25lbnQgb2YgdmVjdG9yIGlzIGFjY2Vzc2VkICh2Lnggb3IgdlswXSB3aGVyZSB2IGlzIGEg
Y29udGFudCB2ZWN0b3IpLCB0aGVuIGEgY29udGFudCBub2RlIGlzCisvLyByZXR1cm5lZCwgZWxz
ZSBhbiBhZ2dyZWdhdGUgbm9kZSBpcyByZXR1cm5lZCAoZm9yIHYueHkpLiBUaGUgaW5wdXQgdG8g
dGhpcyBmdW5jdGlvbiBjb3VsZCBlaXRoZXIgYmUgdGhlIHN5bWJvbAorLy8gbm9kZSBvciBpdCBj
b3VsZCBiZSB0aGUgaW50ZXJtZWRpYXRlIHRyZWUgcmVwcmVzZW50YXRpb24gb2YgYWNjZXNzaW5n
IGZpZWxkcyBpbiBhIGNvbnN0YW50IHN0cnVjdHVyZSBvciBjb2x1bW4gb2YgCisvLyBhIGNvbnN0
YW50IG1hdHJpeC4KKy8vCitUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0VmVj
dG9yTm9kZShUVmVjdG9yRmllbGRzJiBmaWVsZHMsIFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSkKK3sKKyAgICBUSW50ZXJtVHlwZWQqIHR5cGVkTm9kZTsKKyAgICBU
SW50ZXJtQ29uc3RhbnRVbmlvbiogdGVtcENvbnN0YW50Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3Rh
bnRVbmlvbigpOworCisgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheTsKKyAgICBpZiAodGVt
cENvbnN0YW50Tm9kZSkgeworICAgICAgICB1bmlvbkFycmF5ID0gdGVtcENvbnN0YW50Tm9kZS0+
Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKKworICAgICAgICBpZiAoIXVuaW9uQXJyYXkpIHsKKyAg
ICAgICAgICAgIHJldHVybiBub2RlOworICAgICAgICB9CisgICAgfSBlbHNlIHsgLy8gVGhlIG5v
ZGUgaGFzIHRvIGJlIGVpdGhlciBhIHN5bWJvbCBub2RlIG9yIGFuIGFnZ3JlZ2F0ZSBub2RlIG9y
IGEgdGVtcENvbnN0YW50IG5vZGUsIGVsc2UsIGl0cyBhbiBlcnJvcgorICAgICAgICBlcnJvcihs
aW5lLCAiQ2Fubm90IG9mZnNldCBpbnRvIHRoZSB2ZWN0b3IiLCAiRXJyb3IiKTsKKyAgICAgICAg
cmVjb3ZlcigpOworCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIENvbnN0YW50VW5p
b24qIGNvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltmaWVsZHMubnVtXTsKKworICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgZmllbGRzLm51bTsgaSsrKSB7CisgICAgICAgIGlmIChmaWVsZHMu
b2Zmc2V0c1tpXSA+PSBub2RlLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSkgeworICAgICAg
ICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOworICAgICAgICAgICAgZXh0
cmFJbmZvU3RyZWFtIDw8ICJ2ZWN0b3IgZmllbGQgc2VsZWN0aW9uIG91dCBvZiByYW5nZSAnIiA8
PCBmaWVsZHMub2Zmc2V0c1tpXSA8PCAiJyI7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyBleHRy
YUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7CisgICAgICAgICAgICBlcnJvcihsaW5lLCAi
IiwgIlsiLCBleHRyYUluZm8uY19zdHIoKSk7CisgICAgICAgICAgICByZWNvdmVyKCk7CisgICAg
ICAgICAgICBmaWVsZHMub2Zmc2V0c1tpXSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIGNvbnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ZpZWxkcy5vZmZzZXRzW2ldXTsKKworICAg
IH0gCisgICAgdHlwZWROb2RlID0gaW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24oY29uc3RB
cnJheSwgbm9kZS0+Z2V0VHlwZSgpLCBsaW5lKTsKKyAgICByZXR1cm4gdHlwZWROb2RlOworfQor
CisvLworLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBjb2x1bW4gYmVpbmcgYWNjZXNzZWQg
ZnJvbSBhIGNvbnN0YW50IG1hdHJpeC4gVGhlIHZhbHVlcyBhcmUgcmV0cmlldmVkIGZyb20KKy8v
IHRoZSBzeW1ib2wgdGFibGUgYW5kIHBhcnNlLXRyZWUgaXMgYnVpbHQgZm9yIGEgdmVjdG9yIChl
YWNoIGNvbHVtbiBvZiBhIG1hdHJpeCBpcyBhIHZlY3RvcikuIFRoZSBpbnB1dCAKKy8vIHRvIHRo
ZSBmdW5jdGlvbiBjb3VsZCBlaXRoZXIgYmUgYSBzeW1ib2wgbm9kZSAobVswXSB3aGVyZSBtIGlz
IGEgY29uc3RhbnQgbWF0cml4KXRoYXQgcmVwcmVzZW50cyBhIAorLy8gY29uc3RhbnQgbWF0cml4
IG9yIGl0IGNvdWxkIGJlIHRoZSB0cmVlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb25zdGFudCBt
YXRyaXggKHMubTFbMF0gd2hlcmUgcyBpcyBhIGNvbnN0YW50IHN0cnVjdHVyZSkKKy8vCitUSW50
ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0TWF0cml4Tm9kZShpbnQgaW5kZXgsIFRJ
bnRlcm1UeXBlZCogbm9kZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKK3sKKyAgICBUSW50ZXJt
VHlwZWQqIHR5cGVkTm9kZTsKKyAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiogdGVtcENvbnN0YW50
Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3RhbnRVbmlvbigpOworCisgICAgaWYgKGluZGV4ID49IG5v
ZGUtPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpKSB7CisgICAgICAgIHN0ZDo6c3RyaW5nc3Ry
ZWFtIGV4dHJhSW5mb1N0cmVhbTsKKyAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJtYXRyaXgg
ZmllbGQgc2VsZWN0aW9uIG91dCBvZiByYW5nZSAnIiA8PCBpbmRleCA8PCAiJyI7CisgICAgICAg
IHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKKyAgICAgICAg
ZXJyb3IobGluZSwgIiIsICJbIiwgZXh0cmFJbmZvLmNfc3RyKCkpOworICAgICAgICByZWNvdmVy
KCk7CisgICAgICAgIGluZGV4ID0gMDsKKyAgICB9CisKKyAgICBpZiAodGVtcENvbnN0YW50Tm9k
ZSkgeworICAgICAgICAgQ29uc3RhbnRVbmlvbiogdW5pb25BcnJheSA9IHRlbXBDb25zdGFudE5v
ZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCk7CisgICAgICAgICBpbnQgc2l6ZSA9IHRlbXBDb25z
dGFudE5vZGUtPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpOworICAgICAgICAgdHlwZWROb2Rl
ID0gaW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24oJnVuaW9uQXJyYXlbc2l6ZSppbmRleF0s
IHRlbXBDb25zdGFudE5vZGUtPmdldFR5cGUoKSwgbGluZSk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgZXJyb3IobGluZSwgIkNhbm5vdCBvZmZzZXQgaW50byB0aGUgbWF0cml4IiwgIkVycm9yIik7
CisgICAgICAgIHJlY292ZXIoKTsKKworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBy
ZXR1cm4gdHlwZWROb2RlOworfQorCisKKy8vCisvLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYW4g
ZWxlbWVudCBvZiBhbiBhcnJheSBhY2Nlc3NlZCBmcm9tIGEgY29uc3RhbnQgYXJyYXkuIFRoZSB2
YWx1ZXMgYXJlIHJldHJpZXZlZCBmcm9tCisvLyB0aGUgc3ltYm9sIHRhYmxlIGFuZCBwYXJzZS10
cmVlIGlzIGJ1aWx0IGZvciB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudC4gVGhlIGlucHV0IAorLy8g
dG8gdGhlIGZ1bmN0aW9uIGNvdWxkIGVpdGhlciBiZSBhIHN5bWJvbCBub2RlIChhWzBdIHdoZXJl
IGEgaXMgYSBjb25zdGFudCBhcnJheSl0aGF0IHJlcHJlc2VudHMgYSAKKy8vIGNvbnN0YW50IGFy
cmF5IG9yIGl0IGNvdWxkIGJlIHRoZSB0cmVlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb25zdGFu
dCBhcnJheSAocy5hMVswXSB3aGVyZSBzIGlzIGEgY29uc3RhbnQgc3RydWN0dXJlKQorLy8KK1RJ
bnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RBcnJheU5vZGUoaW50IGluZGV4LCBU
SW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCit7CisgICAgVEludGVy
bVR5cGVkKiB0eXBlZE5vZGU7CisgICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFu
dE5vZGUgPSBub2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKKyAgICBUVHlwZSBhcnJheUVsZW1l
bnRUeXBlID0gbm9kZS0+Z2V0VHlwZSgpOworICAgIGFycmF5RWxlbWVudFR5cGUuY2xlYXJBcnJh
eW5lc3MoKTsKKworICAgIGlmIChpbmRleCA+PSBub2RlLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXpl
KCkpIHsKKyAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOworICAgICAg
ICBleHRyYUluZm9TdHJlYW0gPDwgImFycmF5IGZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2Ug
JyIgPDwgaW5kZXggPDwgIiciOworICAgICAgICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRy
YUluZm9TdHJlYW0uc3RyKCk7CisgICAgICAgIGVycm9yKGxpbmUsICIiLCAiWyIsIGV4dHJhSW5m
by5jX3N0cigpKTsKKyAgICAgICAgcmVjb3ZlcigpOworICAgICAgICBpbmRleCA9IDA7CisgICAg
fQorCisgICAgaWYgKHRlbXBDb25zdGFudE5vZGUpIHsKKyAgICAgICAgIHNpemVfdCBhcnJheUVs
ZW1lbnRTaXplID0gYXJyYXlFbGVtZW50VHlwZS5nZXRPYmplY3RTaXplKCk7CisgICAgICAgICBD
b25zdGFudFVuaW9uKiB1bmlvbkFycmF5ID0gdGVtcENvbnN0YW50Tm9kZS0+Z2V0VW5pb25BcnJh
eVBvaW50ZXIoKTsKKyAgICAgICAgIHR5cGVkTm9kZSA9IGludGVybWVkaWF0ZS5hZGRDb25zdGFu
dFVuaW9uKCZ1bmlvbkFycmF5W2FycmF5RWxlbWVudFNpemUgKiBpbmRleF0sIHRlbXBDb25zdGFu
dE5vZGUtPmdldFR5cGUoKSwgbGluZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZXJyb3IobGlu
ZSwgIkNhbm5vdCBvZmZzZXQgaW50byB0aGUgYXJyYXkiLCAiRXJyb3IiKTsKKyAgICAgICAgcmVj
b3ZlcigpOworCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiB0eXBlZE5v
ZGU7Cit9CisKKworLy8KKy8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdmFsdWUgb2YgYSBw
YXJ0aWN1bGFyIGZpZWxkIGluc2lkZSBhIGNvbnN0YW50IHN0cnVjdHVyZSBmcm9tIHRoZSBzeW1i
b2wgdGFibGUuIAorLy8gSWYgdGhlcmUgaXMgYW4gZW1iZWRkZWQvbmVzdGVkIHN0cnVjdCwgaXQg
YXBwcm9wcmlhdGVseSBjYWxscyBhZGRDb25zdFN0cnVjdE5lc3RlZCBvciBhZGRDb25zdFN0cnVj
dEZyb21BZ2dyCisvLyBmdW5jdGlvbiBhbmQgcmV0dXJucyB0aGUgcGFyc2UtdHJlZSB3aXRoIHRo
ZSB2YWx1ZXMgb2YgdGhlIGVtYmVkZGVkL25lc3RlZCBzdHJ1Y3QuCisvLworVEludGVybVR5cGVk
KiBUUGFyc2VDb250ZXh0OjphZGRDb25zdFN0cnVjdChUU3RyaW5nJiBpZGVudGlmaWVyLCBUSW50
ZXJtVHlwZWQqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCit7CisgICAgY29uc3QgVEZp
ZWxkTGlzdCYgZmllbGRzID0gbm9kZS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5maWVsZHMoKTsK
KworICAgIHNpemVfdCBpbnN0YW5jZVNpemUgPSAwOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0g
MDsgaW5kZXggPCBmaWVsZHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmIChmaWVsZHNb
aW5kZXhdLT5uYW1lKCkgPT0gaWRlbnRpZmllcikgeworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbnN0YW5jZVNpemUgKz0gZmllbGRzW2luZGV4XS0+
dHlwZSgpLT5nZXRPYmplY3RTaXplKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBUSW50ZXJt
VHlwZWQqIHR5cGVkTm9kZSA9IDA7CisgICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25z
dGFudE5vZGUgPSBub2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKKyAgICBpZiAodGVtcENvbnN0
YW50Tm9kZSkgeworICAgICAgICAgQ29uc3RhbnRVbmlvbiogY29uc3RBcnJheSA9IHRlbXBDb25z
dGFudE5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCk7CisKKyAgICAgICAgIHR5cGVkTm9kZSA9
IGludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKGNvbnN0QXJyYXkraW5zdGFuY2VTaXplLCB0
ZW1wQ29uc3RhbnROb2RlLT5nZXRUeXBlKCksIGxpbmUpOyAvLyB0eXBlIHdpbGwgYmUgY2hhbmdl
ZCBpbiB0aGUgY2FsbGluZyBmdW5jdGlvbgorICAgIH0gZWxzZSB7CisgICAgICAgIGVycm9yKGxp
bmUsICJDYW5ub3Qgb2Zmc2V0IGludG8gdGhlIHN0cnVjdHVyZSIsICJFcnJvciIpOworICAgICAg
ICByZWNvdmVyKCk7CisKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIHR5
cGVkTm9kZTsKK30KKworYm9vbCBUUGFyc2VDb250ZXh0OjplbnRlclN0cnVjdERlY2xhcmF0aW9u
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIpCit7Cisg
ICAgKytzdHJ1Y3ROZXN0aW5nTGV2ZWw7CisKKyAgICAvLyBFbWJlZGRlZCBzdHJ1Y3R1cmUgZGVm
aW5pdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgcGVyIEdMU0wgRVMgc3BlYy4KKyAgICAvLyBUaGV5
IGFyZW4ndCBhbGxvd2VkIGluIEdMU0wgZWl0aGVyLCBidXQgd2UgbmVlZCB0byBkZXRlY3QgdGhp
cyBoZXJlCisgICAgLy8gc28gd2UgZG9uJ3QgcmVseSBvbiB0aGUgR0xTTCBjb21waWxlciB0byBj
YXRjaCBpdC4KKyAgICBpZiAoc3RydWN0TmVzdGluZ0xldmVsID4gMSkgeworICAgICAgICBlcnJv
cihsaW5lLCAiIiwgIkVtYmVkZGVkIHN0cnVjdCBkZWZpbml0aW9ucyBhcmUgbm90IGFsbG93ZWQi
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQor
Cit2b2lkIFRQYXJzZUNvbnRleHQ6OmV4aXRTdHJ1Y3REZWNsYXJhdGlvbigpCit7CisgICAgLS1z
dHJ1Y3ROZXN0aW5nTGV2ZWw7Cit9CisKK25hbWVzcGFjZSB7CisKK2NvbnN0IGludCBrV2ViR0xN
YXhTdHJ1Y3ROZXN0aW5nID0gNDsKKworfSAgLy8gbmFtZXNwYWNlCisKK2Jvb2wgVFBhcnNlQ29u
dGV4dDo6c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29u
c3QgVEZpZWxkJiBmaWVsZCkKK3sKKyAgICBpZiAoIWlzV2ViR0xCYXNlZFNwZWMoc2hhZGVyU3Bl
YykpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChmaWVsZC50eXBl
KCktPmdldEJhc2ljVHlwZSgpICE9IEVidFN0cnVjdCkgeworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgLy8gV2UncmUgYWxyZWFkeSBpbnNpZGUgYSBzdHJ1Y3R1cmUgZGVmaW5p
dGlvbiBhdCB0aGlzIHBvaW50LCBzbyBhZGQKKyAgICAvLyBvbmUgdG8gdGhlIGZpZWxkJ3Mgc3Ry
dWN0IG5lc3RpbmcuCisgICAgaWYgKDEgKyBmaWVsZC50eXBlKCktPmdldERlZXBlc3RTdHJ1Y3RO
ZXN0aW5nKCkgPiBrV2ViR0xNYXhTdHJ1Y3ROZXN0aW5nKSB7CisgICAgICAgIHN0ZDo6c3RyaW5n
c3RyZWFtIHJlYXNvblN0cmVhbTsKKyAgICAgICAgcmVhc29uU3RyZWFtIDw8ICJSZWZlcmVuY2Ug
b2Ygc3RydWN0IHR5cGUgIgorICAgICAgICAgICAgICAgICAgICAgPDwgZmllbGQudHlwZSgpLT5n
ZXRTdHJ1Y3QoKS0+bmFtZSgpLmNfc3RyKCkKKyAgICAgICAgICAgICAgICAgICAgIDw8ICIgZXhj
ZWVkcyBtYXhpbXVtIGFsbG93ZWQgbmVzdGluZyBsZXZlbCBvZiAiCisgICAgICAgICAgICAgICAg
ICAgICA8PCBrV2ViR0xNYXhTdHJ1Y3ROZXN0aW5nOworICAgICAgICBzdGQ6OnN0cmluZyByZWFz
b24gPSByZWFzb25TdHJlYW0uc3RyKCk7CisgICAgICAgIGVycm9yKGxpbmUsIHJlYXNvbi5jX3N0
cigpLCBmaWVsZC5uYW1lKCkuY19zdHIoKSwgIiIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8vCisvLyBQYXJzZSBhbiBhcnJheSBpbmRl
eCBleHByZXNzaW9uCisvLworVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRJbmRleEV4
cHJlc3Npb24oVEludGVybVR5cGVkICpiYXNlRXhwcmVzc2lvbiwgY29uc3QgVFNvdXJjZUxvYyYg
bG9jYXRpb24sIFRJbnRlcm1UeXBlZCAqaW5kZXhFeHByZXNzaW9uKQoreworICAgIFRJbnRlcm1U
eXBlZCAqaW5kZXhlZEV4cHJlc3Npb24gPSBOVUxMOworCisgICAgaWYgKCFiYXNlRXhwcmVzc2lv
bi0+aXNBcnJheSgpICYmICFiYXNlRXhwcmVzc2lvbi0+aXNNYXRyaXgoKSAmJiAhYmFzZUV4cHJl
c3Npb24tPmlzVmVjdG9yKCkpCisgICAgeworICAgICAgICBpZiAoYmFzZUV4cHJlc3Npb24tPmdl
dEFzU3ltYm9sTm9kZSgpKQorICAgICAgICB7CisgICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwg
IiBsZWZ0IG9mICdbJyBpcyBub3Qgb2YgdHlwZSBhcnJheSwgbWF0cml4LCBvciB2ZWN0b3IgIiwg
YmFzZUV4cHJlc3Npb24tPmdldEFzU3ltYm9sTm9kZSgpLT5nZXRTeW1ib2woKS5jX3N0cigpKTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGVycm9yKGxv
Y2F0aW9uLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZl
Y3RvciAiLCAiZXhwcmVzc2lvbiIpOworICAgICAgICB9CisgICAgICAgIHJlY292ZXIoKTsKKyAg
ICB9CisKKyAgICBpZiAoaW5kZXhFeHByZXNzaW9uLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25z
dCkKKyAgICB7CisgICAgICAgIGludCBpbmRleCA9IGluZGV4RXhwcmVzc2lvbi0+Z2V0QXNDb25z
dGFudFVuaW9uKCktPmdldElDb25zdCgwKTsKKyAgICAgICAgaWYgKGluZGV4IDwgMCkKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gaW5mb1N0cmVhbTsKKyAgICAgICAg
ICAgIGluZm9TdHJlYW0gPDwgaW5kZXg7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyBpbmZvID0g
aW5mb1N0cmVhbS5zdHIoKTsKKyAgICAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAibmVnYXRpdmUg
aW5kZXgiLCBpbmZvLmNfc3RyKCkpOworICAgICAgICAgICAgcmVjb3ZlcigpOworICAgICAgICAg
ICAgaW5kZXggPSAwOworICAgICAgICB9CisgICAgICAgIGlmIChiYXNlRXhwcmVzc2lvbi0+Z2V0
VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoYmFzZUV4cHJlc3Npb24tPmlzQXJyYXkoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAvLyBjb25zdGFudCBmb2xkaW5nIGZvciBhcnJheXMKKyAgICAgICAgICAgICAgICBp
bmRleGVkRXhwcmVzc2lvbiA9IGFkZENvbnN0QXJyYXlOb2RlKGluZGV4LCBiYXNlRXhwcmVzc2lv
biwgbG9jYXRpb24pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoYmFzZUV4
cHJlc3Npb24tPmlzVmVjdG9yKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8g
Y29uc3RhbnQgZm9sZGluZyBmb3IgdmVjdG9ycworICAgICAgICAgICAgICAgIFRWZWN0b3JGaWVs
ZHMgZmllbGRzOworICAgICAgICAgICAgICAgIGZpZWxkcy5udW0gPSAxOworICAgICAgICAgICAg
ICAgIGZpZWxkcy5vZmZzZXRzWzBdID0gaW5kZXg7IC8vIG5lZWQgdG8gZG8gaXQgdGhpcyB3YXkg
YmVjYXVzZSB2Lnh5IHNlbmRzIGZpZWxkcyBpbnRlZ2VyIGFycmF5CisgICAgICAgICAgICAgICAg
aW5kZXhlZEV4cHJlc3Npb24gPSBhZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCBiYXNlRXhwcmVz
c2lvbiwgbG9jYXRpb24pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoYmFz
ZUV4cHJlc3Npb24tPmlzTWF0cml4KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Ly8gY29uc3RhbnQgZm9sZGluZyBmb3IgbWF0cmljZXMKKyAgICAgICAgICAgICAgICBpbmRleGVk
RXhwcmVzc2lvbiA9IGFkZENvbnN0TWF0cml4Tm9kZShpbmRleCwgYmFzZUV4cHJlc3Npb24sIGxv
Y2F0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNBcnJheSgpKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSBiYXNlRXhwcmVzc2lvbi0+Z2V0VHlw
ZSgpLmdldEFycmF5U2l6ZSgpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOworICAgICAgICAgICAgICAgICAg
ICBleHRyYUluZm9TdHJlYW0gPDwgImFycmF5IGluZGV4IG91dCBvZiByYW5nZSAnIiA8PCBpbmRl
eCA8PCAiJyI7CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4
dHJhSW5mb1N0cmVhbS5zdHIoKTsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IobG9jYXRpb24s
ICIiLCAiWyIsIGV4dHJhSW5mby5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVjb3Zl
cigpOworICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGJhc2VFeHByZXNzaW9uLT5nZXRUeXBl
KCkuZ2V0QXJyYXlTaXplKCkgLSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBlbHNlIGlmIChiYXNlRXhwcmVzc2lvbi0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxRnJhZ0RhdGEg
JiYgaW5kZXggPiAwICYmICFpc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMi
KSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGVycm9yKGxvY2F0aW9u
LCAiIiwgIlsiLCAiYXJyYXkgaW5kZXhlcyBmb3IgZ2xfRnJhZ0RhdGEgbXVzdCBiZSB6ZXJvIHdo
ZW4gR0xfRVhUX2RyYXdfYnVmZmVycyBpcyBkaXNhYmxlZCIpOworICAgICAgICAgICAgICAgICAg
ICByZWNvdmVyKCk7CisgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gMDsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmICgoYmFzZUV4cHJlc3Np
b24tPmlzVmVjdG9yKCkgfHwgYmFzZUV4cHJlc3Npb24tPmlzTWF0cml4KCkpICYmIGJhc2VFeHBy
ZXNzaW9uLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSA8PSBpbmRleCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07Cisg
ICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJmaWVsZCBzZWxlY3Rpb24gb3V0IG9m
IHJhbmdlICciIDw8IGluZGV4IDw8ICInIjsKKyAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBl
eHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7CisgICAgICAgICAgICAgICAgZXJyb3Io
bG9jYXRpb24sICIiLCAiWyIsIGV4dHJhSW5mby5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICBy
ZWNvdmVyKCk7CisgICAgICAgICAgICAgICAgaW5kZXggPSBiYXNlRXhwcmVzc2lvbi0+Z2V0VHlw
ZSgpLmdldE5vbWluYWxTaXplKCkgLSAxOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
bmRleEV4cHJlc3Npb24tPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRl
cigpLT5zZXRJQ29uc3QoaW5kZXgpOworICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24gPSBp
bnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsIGJhc2VFeHByZXNzaW9uLCBpbmRl
eEV4cHJlc3Npb24sIGxvY2F0aW9uKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAg
eworICAgICAgICBpbmRleGVkRXhwcmVzc2lvbiA9IGludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJ
bmRleEluZGlyZWN0LCBiYXNlRXhwcmVzc2lvbiwgaW5kZXhFeHByZXNzaW9uLCBsb2NhdGlvbik7
CisgICAgfQorCisgICAgaWYgKGluZGV4ZWRFeHByZXNzaW9uID09IDApCisgICAgeworICAgICAg
ICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CisgICAg
ICAgIHVuaW9uQXJyYXktPnNldEZDb25zdCgwLjBmKTsKKyAgICAgICAgaW5kZXhlZEV4cHJlc3Np
b24gPSBpbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRG
bG9hdCwgRWJwSGlnaCwgRXZxQ29uc3QpLCBsb2NhdGlvbik7CisgICAgfQorICAgIGVsc2UgaWYg
KGJhc2VFeHByZXNzaW9uLT5pc0FycmF5KCkpCisgICAgeworICAgICAgICBjb25zdCBUVHlwZSAm
YmFzZVR5cGUgPSBiYXNlRXhwcmVzc2lvbi0+Z2V0VHlwZSgpOworICAgICAgICBpZiAoYmFzZVR5
cGUuZ2V0U3RydWN0KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIFRUeXBlIGNvcHlPZlR5cGUo
YmFzZVR5cGUuZ2V0U3RydWN0KCkpOworICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24tPnNl
dFR5cGUoY29weU9mVHlwZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7Cisg
ICAgICAgICAgICBpbmRleGVkRXhwcmVzc2lvbi0+c2V0VHlwZShUVHlwZShiYXNlRXhwcmVzc2lv
bi0+Z2V0QmFzaWNUeXBlKCksIGJhc2VFeHByZXNzaW9uLT5nZXRQcmVjaXNpb24oKSwgRXZxVGVt
cG9yYXJ5LCBiYXNlRXhwcmVzc2lvbi0+Z2V0Tm9taW5hbFNpemUoKSwgYmFzZUV4cHJlc3Npb24t
PmlzTWF0cml4KCkpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChiYXNlRXhwcmVzc2lvbi0+
Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KQorICAgICAgICB7CisgICAgICAg
ICAgICBpbmRleGVkRXhwcmVzc2lvbi0+Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVyKEV2
cUNvbnN0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChiYXNlRXhwcmVzc2lvbi0+
aXNNYXRyaXgoKSkKKyAgICB7CisgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gYmFzZUV4
cHJlc3Npb24tPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCA/IEV2cUNvbnN0
IDogRXZxVGVtcG9yYXJ5OworICAgICAgICBpbmRleGVkRXhwcmVzc2lvbi0+c2V0VHlwZShUVHlw
ZShiYXNlRXhwcmVzc2lvbi0+Z2V0QmFzaWNUeXBlKCksIGJhc2VFeHByZXNzaW9uLT5nZXRQcmVj
aXNpb24oKSwgcXVhbGlmaWVyLCBiYXNlRXhwcmVzc2lvbi0+Z2V0Tm9taW5hbFNpemUoKSkpOwor
ICAgIH0KKyAgICBlbHNlIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNWZWN0b3IoKSkKKyAgICB7Cisg
ICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKS5n
ZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCA/IEV2cUNvbnN0IDogRXZxVGVtcG9yYXJ5OworICAg
ICAgICBpbmRleGVkRXhwcmVzc2lvbi0+c2V0VHlwZShUVHlwZShiYXNlRXhwcmVzc2lvbi0+Z2V0
QmFzaWNUeXBlKCksIGJhc2VFeHByZXNzaW9uLT5nZXRQcmVjaXNpb24oKSwgcXVhbGlmaWVyKSk7
CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uLT5zZXRU
eXBlKGJhc2VFeHByZXNzaW9uLT5nZXRUeXBlKCkpOworICAgIH0KKworICAgIHJldHVybiBpbmRl
eGVkRXhwcmVzc2lvbjsKK30KKworLy8KKy8vIFBhcnNlIGFuIGFycmF5IG9mIHN0cmluZ3MgdXNp
bmcgeXlwYXJzZS4KKy8vCisvLyBSZXR1cm5zIDAgZm9yIHN1Y2Nlc3MuCisvLworaW50IFBhUGFy
c2VTdHJpbmdzKHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nW10sIGNvbnN0
IGludCBsZW5ndGhbXSwKKyAgICAgICAgICAgICAgICAgICBUUGFyc2VDb250ZXh0KiBjb250ZXh0
KSB7CisgICAgaWYgKChjb3VudCA9PSAwKSB8fCAoc3RyaW5nID09IE5VTEwpKQorICAgICAgICBy
ZXR1cm4gMTsKKworICAgIGlmIChnbHNsYW5nX2luaXRpYWxpemUoY29udGV4dCkpCisgICAgICAg
IHJldHVybiAxOworCisgICAgaW50IGVycm9yID0gZ2xzbGFuZ19zY2FuKGNvdW50LCBzdHJpbmcs
IGxlbmd0aCwgY29udGV4dCk7CisgICAgaWYgKCFlcnJvcikKKyAgICAgICAgZXJyb3IgPSBnbHNs
YW5nX3BhcnNlKGNvbnRleHQpOworCisgICAgZ2xzbGFuZ19maW5hbGl6ZShjb250ZXh0KTsKKwor
ICAgIHJldHVybiAoZXJyb3IgPT0gMCkgJiYgKGNvbnRleHQtPm51bUVycm9ycygpID09IDApID8g
MCA6IDE7Cit9CisKKworCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvUGFyc2VDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL1BhcnNlQ29udGV4dC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1BhcnNlQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTM0IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworI2lmbmRlZiBfUEFSU0VSX0hFTFBF
Ul9JTkNMVURFRF8KKyNkZWZpbmUgX1BBUlNFUl9IRUxQRVJfSU5DTFVERURfCisKKyNpbmNsdWRl
ICJjb21waWxlci9EaWFnbm9zdGljcy5oIgorI2luY2x1ZGUgImNvbXBpbGVyL0RpcmVjdGl2ZUhh
bmRsZXIuaCIKKyNpbmNsdWRlICJjb21waWxlci9sb2NhbGludGVybWVkaWF0ZS5oIgorI2luY2x1
ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuaCIKKyNpbmNsdWRlICJjb21w
aWxlci9TaEhhbmRsZS5oIgorI2luY2x1ZGUgImNvbXBpbGVyL1N5bWJvbFRhYmxlLmgiCisKK3N0
cnVjdCBUTWF0cml4RmllbGRzIHsKKyAgICBib29sIHdob2xlUm93OworICAgIGJvb2wgd2hvbGVD
b2w7CisgICAgaW50IHJvdzsKKyAgICBpbnQgY29sOworfTsKKworLy8KKy8vIFRoZSBmb2xsb3dp
bmcgYXJlIGV4dHJhIHZhcmlhYmxlcyBuZWVkZWQgZHVyaW5nIHBhcnNpbmcsIGdyb3VwZWQgdG9n
ZXRoZXIgc28KKy8vIHRoZXkgY2FuIGJlIHBhc3NlZCB0byB0aGUgcGFyc2VyIHdpdGhvdXQgbmVl
ZGluZyBhIGdsb2JhbC4KKy8vCitzdHJ1Y3QgVFBhcnNlQ29udGV4dCB7CisgICAgVFBhcnNlQ29u
dGV4dChUU3ltYm9sVGFibGUmIHN5bXQsIFRFeHRlbnNpb25CZWhhdmlvciYgZXh0LCBUSW50ZXJt
ZWRpYXRlJiBpbnRlcm0sIFNoU2hhZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywgaW50
IG9wdGlvbnMsIGJvb2wgY2hlY2tzUHJlY0Vycm9ycywgY29uc3QgY2hhciogc291cmNlUGF0aCwg
VEluZm9TaW5rJiBpcykgOgorICAgICAgICAgICAgaW50ZXJtZWRpYXRlKGludGVybSksCisgICAg
ICAgICAgICBzeW1ib2xUYWJsZShzeW10KSwKKyAgICAgICAgICAgIHNoYWRlclR5cGUodHlwZSks
CisgICAgICAgICAgICBzaGFkZXJTcGVjKHNwZWMpLAorICAgICAgICAgICAgY29tcGlsZU9wdGlv
bnMob3B0aW9ucyksCisgICAgICAgICAgICBzb3VyY2VQYXRoKHNvdXJjZVBhdGgpLAorICAgICAg
ICAgICAgdHJlZVJvb3QoMCksCisgICAgICAgICAgICBsb29wTmVzdGluZ0xldmVsKDApLAorICAg
ICAgICAgICAgc3RydWN0TmVzdGluZ0xldmVsKDApLAorICAgICAgICAgICAgY3VycmVudEZ1bmN0
aW9uVHlwZShOVUxMKSwKKyAgICAgICAgICAgIGZ1bmN0aW9uUmV0dXJuc1ZhbHVlKGZhbHNlKSwK
KyAgICAgICAgICAgIGNoZWNrc1ByZWNpc2lvbkVycm9ycyhjaGVja3NQcmVjRXJyb3JzKSwKKyAg
ICAgICAgICAgIGRpYWdub3N0aWNzKGlzKSwKKyAgICAgICAgICAgIGRpcmVjdGl2ZUhhbmRsZXIo
ZXh0LCBkaWFnbm9zdGljcyksCisgICAgICAgICAgICBwcmVwcm9jZXNzb3IoJmRpYWdub3N0aWNz
LCAmZGlyZWN0aXZlSGFuZGxlciksCisgICAgICAgICAgICBzY2FubmVyKE5VTEwpIHsgIH0KKyAg
ICBUSW50ZXJtZWRpYXRlJiBpbnRlcm1lZGlhdGU7IC8vIHRvIGhvbGQgYW5kIGJ1aWxkIGEgcGFy
c2UgdHJlZQorICAgIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGU7ICAgLy8gc3ltYm9sIHRhYmxl
IHRoYXQgZ29lcyB3aXRoIHRoZSBsYW5ndWFnZSBjdXJyZW50bHkgYmVpbmcgcGFyc2VkCisgICAg
U2hTaGFkZXJUeXBlIHNoYWRlclR5cGU7ICAgICAgICAgICAgICAvLyB2ZXJ0ZXggb3IgZnJhZ21l
bnQgbGFuZ3VhZ2UgKGZ1dHVyZTogcGFjayBvciB1bnBhY2spCisgICAgU2hTaGFkZXJTcGVjIHNo
YWRlclNwZWM7ICAgICAgICAgICAgICAvLyBUaGUgbGFuZ3VhZ2Ugc3BlY2lmaWNhdGlvbiBjb21w
aWxlciBjb25mb3JtcyB0byAtIEdMRVMyIG9yIFdlYkdMLgorICAgIGludCBjb21waWxlT3B0aW9u
czsKKyAgICBjb25zdCBjaGFyKiBzb3VyY2VQYXRoOyAgICAgIC8vIFBhdGggb2Ygc291cmNlIGZp
bGUgb3IgTlVMTC4KKyAgICBUSW50ZXJtTm9kZSogdHJlZVJvb3Q7ICAgICAgIC8vIHJvb3Qgb2Yg
cGFyc2UgdHJlZSBiZWluZyBjcmVhdGVkCisgICAgaW50IGxvb3BOZXN0aW5nTGV2ZWw7ICAgICAg
ICAvLyAwIGlmIG91dHNpZGUgYWxsIGxvb3BzCisgICAgaW50IHN0cnVjdE5lc3RpbmdMZXZlbDsg
ICAgICAvLyBpbmNyZW1lbnRlZCB3aGlsZSBwYXJzaW5nIGEgc3RydWN0IGRlY2xhcmF0aW9uCisg
ICAgY29uc3QgVFR5cGUqIGN1cnJlbnRGdW5jdGlvblR5cGU7ICAvLyB0aGUgcmV0dXJuIHR5cGUg
b2YgdGhlIGZ1bmN0aW9uIHRoYXQncyBjdXJyZW50bHkgYmVpbmcgcGFyc2VkCisgICAgYm9vbCBm
dW5jdGlvblJldHVybnNWYWx1ZTsgICAvLyB0cnVlIGlmIGEgbm9uLXZvaWQgZnVuY3Rpb24gaGFz
IGEgcmV0dXJuCisgICAgYm9vbCBjaGVja3NQcmVjaXNpb25FcnJvcnM7ICAvLyB0cnVlIGlmIGFu
IGVycm9yIHdpbGwgYmUgZ2VuZXJhdGVkIHdoZW4gYSB2YXJpYWJsZSBpcyBkZWNsYXJlZCB3aXRo
b3V0IHByZWNpc2lvbiwgZXhwbGljaXQgb3IgaW1wbGljaXQuCisgICAgYm9vbCBmcmFnbWVudFBy
ZWNpc2lvbkhpZ2g7ICAvLyB0cnVlIGlmIGhpZ2hwIHByZWNpc2lvbiBpcyBzdXBwb3J0ZWQgaW4g
dGhlIGZyYWdtZW50IGxhbmd1YWdlLgorICAgIFRTdHJpbmcgSGFzaEVyck1zZzsKKyAgICBURGlh
Z25vc3RpY3MgZGlhZ25vc3RpY3M7CisgICAgVERpcmVjdGl2ZUhhbmRsZXIgZGlyZWN0aXZlSGFu
ZGxlcjsKKyAgICBwcDo6UHJlcHJvY2Vzc29yIHByZXByb2Nlc3NvcjsKKyAgICB2b2lkKiBzY2Fu
bmVyOworCisgICAgaW50IG51bUVycm9ycygpIGNvbnN0IHsgcmV0dXJuIGRpYWdub3N0aWNzLm51
bUVycm9ycygpOyB9CisgICAgVEluZm9TaW5rJiBpbmZvU2luaygpIHsgcmV0dXJuIGRpYWdub3N0
aWNzLmluZm9TaW5rKCk7IH0KKyAgICB2b2lkIGVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxvYywg
Y29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFyKiB0b2tlbiwKKyAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGV4dHJhSW5mbz0iIik7CisgICAgdm9pZCB3YXJuaW5nKGNvbnN0IFRTb3VyY2VM
b2MmIGxvYywgY29uc3QgY2hhciogcmVhc29uLCBjb25zdCBjaGFyKiB0b2tlbiwKKyAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogZXh0cmFJbmZvPSIiKTsKKyAgICB2b2lkIHRyYWNlKGNvbnN0
IGNoYXIqIHN0cik7CisgICAgdm9pZCByZWNvdmVyKCk7CisKKyAgICBib29sIHBhcnNlVmVjdG9y
RmllbGRzKGNvbnN0IFRTdHJpbmcmLCBpbnQgdmVjU2l6ZSwgVFZlY3RvckZpZWxkcyYsIGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUpOworICAgIGJvb2wgcGFyc2VNYXRyaXhGaWVsZHMoY29uc3QgVFN0
cmluZyYsIGludCBtYXRTaXplLCBUTWF0cml4RmllbGRzJiwgY29uc3QgVFNvdXJjZUxvYyYgbGlu
ZSk7CisKKyAgICBib29sIHJlc2VydmVkRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5l
LCBjb25zdCBUU3RyaW5nJiBpZGVudGlmaWVyKTsKKyAgICB2b2lkIGFzc2lnbkVycm9yKGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcg
cmlnaHQpOworICAgIHZvaWQgdW5hcnlPcEVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNv
bnN0IGNoYXIqIG9wLCBUU3RyaW5nIG9wZXJhbmQpOworICAgIHZvaWQgYmluYXJ5T3BFcnJvcihj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3Ry
aW5nIHJpZ2h0KTsKKyAgICBib29sIHByZWNpc2lvbkVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxv
YyYgbGluZSwgVFByZWNpc2lvbiBwcmVjaXNpb24sIFRCYXNpY1R5cGUgdHlwZSk7CisgICAgYm9v
bCBsVmFsdWVFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNoYXIqIG9w
LCBUSW50ZXJtVHlwZWQqKTsKKyAgICBib29sIGNvbnN0RXJyb3JDaGVjayhUSW50ZXJtVHlwZWQq
IG5vZGUpOworICAgIGJvb2wgaW50ZWdlckVycm9yQ2hlY2soVEludGVybVR5cGVkKiBub2RlLCBj
b25zdCBjaGFyKiB0b2tlbik7CisgICAgYm9vbCBnbG9iYWxFcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUsIGJvb2wgZ2xvYmFsLCBjb25zdCBjaGFyKiB0b2tlbik7CisgICAgYm9vbCBj
b25zdHJ1Y3RvckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEludGVybU5vZGUq
LCBURnVuY3Rpb24mLCBUT3BlcmF0b3IsIFRUeXBlKik7CisgICAgYm9vbCBhcnJheVNpemVFcnJv
ckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRJbnRlcm1UeXBlZCogZXhwciwgaW50JiBz
aXplKTsKKyAgICBib29sIGFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9j
JiBsaW5lLCBUUHVibGljVHlwZSB0eXBlKTsKKyAgICBib29sIGFycmF5VHlwZUVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSk7CisgICAgYm9vbCBhcnJh
eUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwg
VFB1YmxpY1R5cGUgdHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpOworICAgIGJvb2wgdm9pZEVy
cm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYsIGNvbnN0IFRTdHJpbmcmLCBjb25zdCBUUHVibGlj
VHlwZSYpOworICAgIGJvb2wgYm9vbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYsIGNvbnN0
IFRJbnRlcm1UeXBlZCopOworICAgIGJvb2wgYm9vbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxv
YyYsIGNvbnN0IFRQdWJsaWNUeXBlJik7CisgICAgYm9vbCBzYW1wbGVyRXJyb3JDaGVjayhjb25z
dCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUsIGNvbnN0IGNoYXIq
IHJlYXNvbik7CisgICAgYm9vbCBzdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSk7CisgICAgYm9vbCBwYXJhbWV0
ZXJTYW1wbGVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUXVhbGlmaWVyIHF1
YWxpZmllciwgY29uc3QgVFR5cGUmIHR5cGUpOworICAgIGJvb2wgbm9uSW5pdENvbnN0RXJyb3JD
aGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGlj
VHlwZSYgdHlwZSwgYm9vbCBhcnJheSk7CisgICAgYm9vbCBub25Jbml0RXJyb3JDaGVjayhjb25z
dCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgdHlw
ZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpOworICAgIGJvb2wgcGFyYW1FcnJvckNoZWNrKGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBUUXVhbGlmaWVyIHBhcmFt
UXVhbGlmaWVyLCBUVHlwZSogdHlwZSk7CisgICAgYm9vbCBleHRlbnNpb25FcnJvckNoZWNrKGNv
bnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmKTsKKworICAgIGNvbnN0IFRQcmFn
bWEmIHByYWdtYSgpIGNvbnN0IHsgcmV0dXJuIGRpcmVjdGl2ZUhhbmRsZXIucHJhZ21hKCk7IH0K
KyAgICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIGV4dGVuc2lvbkJlaGF2aW9yKCkgY29uc3Qg
eyByZXR1cm4gZGlyZWN0aXZlSGFuZGxlci5leHRlbnNpb25CZWhhdmlvcigpOyB9CisgICAgYm9v
bCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBjaGFyKiBleHRlbnNpb24pOworICAgIGJvb2wgaXNF
eHRlbnNpb25FbmFibGVkKGNvbnN0IGNoYXIqIGV4dGVuc2lvbikgY29uc3Q7CisKKyAgICBib29s
IGNvbnRhaW5zU2FtcGxlcihUVHlwZSYgdHlwZSk7CisgICAgYm9vbCBhcmVBbGxDaGlsZENvbnN0
KFRJbnRlcm1BZ2dyZWdhdGUqIGFnZ3JOb2RlKTsKKyAgICBjb25zdCBURnVuY3Rpb24qIGZpbmRG
dW5jdGlvbihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBURnVuY3Rpb24qIHBmbkNhbGwsIGJvb2wg
KmJ1aWx0SW4gPSAwKTsKKyAgICBib29sIGV4ZWN1dGVJbml0aWFsaXplcihjb25zdCBUU291cmNl
TG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgcFR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbml0aWFsaXplciwgVEludGVy
bU5vZGUqJiBpbnRlcm1Ob2RlLCBUVmFyaWFibGUqIHZhcmlhYmxlID0gMCk7CisKKyAgICBUSW50
ZXJtVHlwZWQqIGFkZENvbnN0cnVjdG9yKFRJbnRlcm1Ob2RlKiwgY29uc3QgVFR5cGUqLCBUT3Bl
cmF0b3IsIFRGdW5jdGlvbiosIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQq
IGZvbGRDb25zdENvbnN0cnVjdG9yKFRJbnRlcm1BZ2dyZWdhdGUqIGFnZ3JOb2RlLCBjb25zdCBU
VHlwZSYgdHlwZSk7CisgICAgVEludGVybVR5cGVkKiBjb25zdHJ1Y3RTdHJ1Y3QoVEludGVybU5v
ZGUqLCBUVHlwZSosIGludCwgY29uc3QgVFNvdXJjZUxvYyYsIGJvb2wgc3Vic2V0KTsKKyAgICBU
SW50ZXJtVHlwZWQqIGNvbnN0cnVjdEJ1aWx0SW4oY29uc3QgVFR5cGUqLCBUT3BlcmF0b3IsIFRJ
bnRlcm1Ob2RlKiwgY29uc3QgVFNvdXJjZUxvYyYsIGJvb2wgc3Vic2V0KTsKKyAgICBUSW50ZXJt
VHlwZWQqIGFkZENvbnN0VmVjdG9yTm9kZShUVmVjdG9yRmllbGRzJiwgVEludGVybVR5cGVkKiwg
Y29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RNYXRyaXhOb2Rl
KGludCAsIFRJbnRlcm1UeXBlZCosIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlw
ZWQqIGFkZENvbnN0QXJyYXlOb2RlKGludCBpbmRleCwgVEludGVybVR5cGVkKiBub2RlLCBjb25z
dCBUU291cmNlTG9jJiBsaW5lKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0U3RydWN0KFRT
dHJpbmcmICwgVEludGVybVR5cGVkKiwgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1U
eXBlZCogYWRkSW5kZXhFeHByZXNzaW9uKFRJbnRlcm1UeXBlZCAqYmFzZUV4cHJlc3Npb24sIGNv
bnN0IFRTb3VyY2VMb2MmIGxvY2F0aW9uLCBUSW50ZXJtVHlwZWQgKmluZGV4RXhwcmVzc2lvbik7
CisKKyAgICAvLyBQZXJmb3JtcyBhbiBlcnJvciBjaGVjayBmb3IgZW1iZWRkZWQgc3RydWN0IGRl
Y2xhcmF0aW9ucy4KKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgYW4gZXJyb3Igd2FzIHJhaXNlZCBk
dWUgdG8gdGhlIGRlY2xhcmF0aW9uIG9mCisgICAgLy8gdGhpcyBzdHJ1Y3QuCisgICAgYm9vbCBl
bnRlclN0cnVjdERlY2xhcmF0aW9uKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJp
bmcmIGlkZW50aWZpZXIpOworICAgIHZvaWQgZXhpdFN0cnVjdERlY2xhcmF0aW9uKCk7CisKKyAg
ICBib29sIHN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNv
bnN0IFRGaWVsZCYgZmllbGQpOworfTsKKworaW50IFBhUGFyc2VTdHJpbmdzKHNpemVfdCBjb3Vu
dCwgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nW10sIGNvbnN0IGludCBsZW5ndGhbXSwKKyAgICAg
ICAgICAgICAgICAgICBUUGFyc2VDb250ZXh0KiBjb250ZXh0KTsKKworI2VuZGlmIC8vIF9QQVJT
RVJfSEVMUEVSX0lOQ0xVREVEXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL1BhcnNlSGVscGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDE2MDAgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0y
MDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1
ZGUgImNvbXBpbGVyL1BhcnNlSGVscGVyLmgiCi0KLSNpbmNsdWRlIDxzdGRhcmcuaD4KLSNpbmNs
dWRlIDxzdGRpby5oPgotCi0jaW5jbHVkZSAiY29tcGlsZXIvZ2xzbGFuZy5oIgotI2luY2x1ZGUg
ImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Tb3VyY2VMb2NhdGlvbi5oIgotCi0vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LwotLy8KLS8vIFN1Yi0gdmVjdG9yIGFuZCBtYXRyaXggZmllbGRzCi0vLwotLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCi0KLS8vCi0vLyBMb29rIGF0IGEgJy4nIGZpZWxkIHNlbGVjdG9yIHN0cmluZyBhbmQgY2hh
bmdlIGl0IGludG8gb2Zmc2V0cwotLy8gZm9yIGEgdmVjdG9yLgotLy8KLWJvb2wgVFBhcnNlQ29u
dGV4dDo6cGFyc2VWZWN0b3JGaWVsZHMoY29uc3QgVFN0cmluZyYgY29tcFN0cmluZywgaW50IHZl
Y1NpemUsIFRWZWN0b3JGaWVsZHMmIGZpZWxkcywgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKLXsK
LSAgICBmaWVsZHMubnVtID0gKGludCkgY29tcFN0cmluZy5zaXplKCk7Ci0gICAgaWYgKGZpZWxk
cy5udW0gPiA0KSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJpbGxlZ2FsIHZlY3RvciBmaWVsZCBz
ZWxlY3Rpb24iLCBjb21wU3RyaW5nLmNfc3RyKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgZW51bSB7Ci0gICAgICAgIGV4eXp3LAotICAgICAgICBlcmdiYSwKLSAgICAg
ICAgZXN0cHEKLSAgICB9IGZpZWxkU2V0WzRdOwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBm
aWVsZHMubnVtOyArK2kpIHsKLSAgICAgICAgc3dpdGNoIChjb21wU3RyaW5nW2ldKSAgewotICAg
ICAgICBjYXNlICd4JzogCi0gICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1tpXSA9IDA7Ci0gICAg
ICAgICAgICBmaWVsZFNldFtpXSA9IGV4eXp3OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgJ3InOiAKLSAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzW2ldID0gMDsKLSAgICAgICAg
ICAgIGZpZWxkU2V0W2ldID0gZXJnYmE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSAncyc6Ci0gICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1tpXSA9IDA7Ci0gICAgICAgICAgICBm
aWVsZFNldFtpXSA9IGVzdHBxOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3kn
OiAKLSAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzW2ldID0gMTsKLSAgICAgICAgICAgIGZpZWxk
U2V0W2ldID0gZXh5enc7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnZyc6IAot
ICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbaV0gPSAxOwotICAgICAgICAgICAgZmllbGRTZXRb
aV0gPSBlcmdiYTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICd0JzoKLSAgICAg
ICAgICAgIGZpZWxkcy5vZmZzZXRzW2ldID0gMTsKLSAgICAgICAgICAgIGZpZWxkU2V0W2ldID0g
ZXN0cHE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAneic6IAotICAgICAgICAg
ICAgZmllbGRzLm9mZnNldHNbaV0gPSAyOwotICAgICAgICAgICAgZmllbGRTZXRbaV0gPSBleHl6
dzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICdiJzogCi0gICAgICAgICAgICBm
aWVsZHMub2Zmc2V0c1tpXSA9IDI7Ci0gICAgICAgICAgICBmaWVsZFNldFtpXSA9IGVyZ2JhOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3AnOgotICAgICAgICAgICAgZmllbGRz
Lm9mZnNldHNbaV0gPSAyOwotICAgICAgICAgICAgZmllbGRTZXRbaV0gPSBlc3RwcTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAKLSAgICAgICAgY2FzZSAndyc6IAotICAgICAgICAgICAg
ZmllbGRzLm9mZnNldHNbaV0gPSAzOwotICAgICAgICAgICAgZmllbGRTZXRbaV0gPSBleHl6dzsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICdhJzogCi0gICAgICAgICAgICBmaWVs
ZHMub2Zmc2V0c1tpXSA9IDM7Ci0gICAgICAgICAgICBmaWVsZFNldFtpXSA9IGVyZ2JhOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3EnOgotICAgICAgICAgICAgZmllbGRzLm9m
ZnNldHNbaV0gPSAzOwotICAgICAgICAgICAgZmllbGRTZXRbaV0gPSBlc3RwcTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgZXJyb3IobGluZSwgImls
bGVnYWwgdmVjdG9yIGZpZWxkIHNlbGVjdGlvbiIsIGNvbXBTdHJpbmcuY19zdHIoKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGZpZWxkcy5udW07ICsraSkgewotICAgICAgICBpZiAoZmllbGRzLm9mZnNldHNb
aV0gPj0gdmVjU2l6ZSkgewotICAgICAgICAgICAgZXJyb3IobGluZSwgInZlY3RvciBmaWVsZCBz
ZWxlY3Rpb24gb3V0IG9mIHJhbmdlIiwgIGNvbXBTdHJpbmcuY19zdHIoKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaSA+IDApIHsKLSAgICAg
ICAgICAgIGlmIChmaWVsZFNldFtpXSAhPSBmaWVsZFNldFtpLTFdKSB7Ci0gICAgICAgICAgICAg
ICAgZXJyb3IobGluZSwgImlsbGVnYWwgLSB2ZWN0b3IgY29tcG9uZW50IGZpZWxkcyBub3QgZnJv
bSB0aGUgc2FtZSBzZXQiLCBjb21wU3RyaW5nLmNfc3RyKCkpOwotICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVy
biB0cnVlOwotfQotCi0KLS8vCi0vLyBMb29rIGF0IGEgJy4nIGZpZWxkIHNlbGVjdG9yIHN0cmlu
ZyBhbmQgY2hhbmdlIGl0IGludG8gb2Zmc2V0cwotLy8gZm9yIGEgbWF0cml4LgotLy8KLWJvb2wg
VFBhcnNlQ29udGV4dDo6cGFyc2VNYXRyaXhGaWVsZHMoY29uc3QgVFN0cmluZyYgY29tcFN0cmlu
ZywgaW50IG1hdFNpemUsIFRNYXRyaXhGaWVsZHMmIGZpZWxkcywgY29uc3QgVFNvdXJjZUxvYyYg
bGluZSkKLXsKLSAgICBmaWVsZHMud2hvbGVSb3cgPSBmYWxzZTsKLSAgICBmaWVsZHMud2hvbGVD
b2wgPSBmYWxzZTsKLSAgICBmaWVsZHMucm93ID0gLTE7Ci0gICAgZmllbGRzLmNvbCA9IC0xOwot
Ci0gICAgaWYgKGNvbXBTdHJpbmcuc2l6ZSgpICE9IDIpIHsKLSAgICAgICAgZXJyb3IobGluZSwg
ImlsbGVnYWwgbGVuZ3RoIG9mIG1hdHJpeCBmaWVsZCBzZWxlY3Rpb24iLCBjb21wU3RyaW5nLmNf
c3RyKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKGNvbXBTdHJp
bmdbMF0gPT0gJ18nKSB7Ci0gICAgICAgIGlmIChjb21wU3RyaW5nWzFdIDwgJzAnIHx8IGNvbXBT
dHJpbmdbMV0gPiAnMycpIHsKLSAgICAgICAgICAgIGVycm9yKGxpbmUsICJpbGxlZ2FsIG1hdHJp
eCBmaWVsZCBzZWxlY3Rpb24iLCBjb21wU3RyaW5nLmNfc3RyKCkpOwotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGZpZWxkcy53aG9sZUNvbCA9IHRydWU7Ci0g
ICAgICAgIGZpZWxkcy5jb2wgPSBjb21wU3RyaW5nWzFdIC0gJzAnOwotICAgIH0gZWxzZSBpZiAo
Y29tcFN0cmluZ1sxXSA9PSAnXycpIHsKLSAgICAgICAgaWYgKGNvbXBTdHJpbmdbMF0gPCAnMCcg
fHwgY29tcFN0cmluZ1swXSA+ICczJykgewotICAgICAgICAgICAgZXJyb3IobGluZSwgImlsbGVn
YWwgbWF0cml4IGZpZWxkIHNlbGVjdGlvbiIsIGNvbXBTdHJpbmcuY19zdHIoKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgZmllbGRzLndob2xlUm93ID0g
dHJ1ZTsKLSAgICAgICAgZmllbGRzLnJvdyA9IGNvbXBTdHJpbmdbMF0gLSAnMCc7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgaWYgKGNvbXBTdHJpbmdbMF0gPCAnMCcgfHwgY29tcFN0cmluZ1swXSA+
ICczJyB8fAotICAgICAgICAgICAgY29tcFN0cmluZ1sxXSA8ICcwJyB8fCBjb21wU3RyaW5nWzFd
ID4gJzMnKSB7Ci0gICAgICAgICAgICBlcnJvcihsaW5lLCAiaWxsZWdhbCBtYXRyaXggZmllbGQg
c2VsZWN0aW9uIiwgY29tcFN0cmluZy5jX3N0cigpKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgfQotICAgICAgICBmaWVsZHMucm93ID0gY29tcFN0cmluZ1swXSAtICcwJzsK
LSAgICAgICAgZmllbGRzLmNvbCA9IGNvbXBTdHJpbmdbMV0gLSAnMCc7Ci0gICAgfQotCi0gICAg
aWYgKGZpZWxkcy5yb3cgPj0gbWF0U2l6ZSB8fCBmaWVsZHMuY29sID49IG1hdFNpemUpIHsKLSAg
ICAgICAgZXJyb3IobGluZSwgIm1hdHJpeCBmaWVsZCBzZWxlY3Rpb24gb3V0IG9mIHJhbmdlIiwg
Y29tcFN0cmluZy5jX3N0cigpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAg
IHJldHVybiB0cnVlOwotfQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIEVycm9ycwotLy8KLS8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwotCi0vLwotLy8gVHJhY2sgd2hldGhlciBlcnJvcnMgaGF2ZSBvY2N1cnJl
ZC4KLS8vCi12b2lkIFRQYXJzZUNvbnRleHQ6OnJlY292ZXIoKQotewotfQotCi0vLwotLy8gVXNl
ZCBieSBmbGV4L2Jpc29uIHRvIG91dHB1dCBhbGwgc3ludGF4IGFuZCBwYXJzaW5nIGVycm9ycy4K
LS8vCi12b2lkIFRQYXJzZUNvbnRleHQ6OmVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxvYywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmVhc29uLCBjb25zdCBjaGFyKiB0
b2tlbiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4dHJhSW5mbykK
LXsKLSAgICBwcDo6U291cmNlTG9jYXRpb24gc3JjTG9jOwotICAgIHNyY0xvYy5maWxlID0gbG9j
LmZpcnN0X2ZpbGU7Ci0gICAgc3JjTG9jLmxpbmUgPSBsb2MuZmlyc3RfbGluZTsKLSAgICBkaWFn
bm9zdGljcy53cml0ZUluZm8ocHA6OkRpYWdub3N0aWNzOjpFUlJPUiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3JjTG9jLCByZWFzb24sIHRva2VuLCBleHRyYUluZm8pOwotCi19Ci0KLXZv
aWQgVFBhcnNlQ29udGV4dDo6d2FybmluZyhjb25zdCBUU291cmNlTG9jJiBsb2MsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmVhc29uLCBjb25zdCBjaGFyKiB0b2tl
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHRyYUluZm8pIHsK
LSAgICBwcDo6U291cmNlTG9jYXRpb24gc3JjTG9jOwotICAgIHNyY0xvYy5maWxlID0gbG9jLmZp
cnN0X2ZpbGU7Ci0gICAgc3JjTG9jLmxpbmUgPSBsb2MuZmlyc3RfbGluZTsKLSAgICBkaWFnbm9z
dGljcy53cml0ZUluZm8ocHA6OkRpYWdub3N0aWNzOjpXQVJOSU5HLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBzcmNMb2MsIHJlYXNvbiwgdG9rZW4sIGV4dHJhSW5mbyk7Ci19Ci0KLXZvaWQg
VFBhcnNlQ29udGV4dDo6dHJhY2UoY29uc3QgY2hhciogc3RyKQotewotICAgIGRpYWdub3N0aWNz
LndyaXRlRGVidWcoc3RyKTsKLX0KLQotLy8KLS8vIFNhbWUgZXJyb3IgbWVzc2FnZSBmb3IgYWxs
IHBsYWNlcyBhc3NpZ25tZW50cyBkb24ndCB3b3JrLgotLy8KLXZvaWQgVFBhcnNlQ29udGV4dDo6
YXNzaWduRXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJp
bmcgbGVmdCwgVFN0cmluZyByaWdodCkKLXsKLSAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUlu
Zm9TdHJlYW07Ci0gICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJjYW5ub3QgY29udmVydCBmcm9tICci
IDw8IHJpZ2h0IDw8ICInIHRvICciIDw8IGxlZnQgPDwgIiciOwotICAgIHN0ZDo6c3RyaW5nIGV4
dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICBlcnJvcihsaW5lLCAiIiwgb3As
IGV4dHJhSW5mby5jX3N0cigpKTsKLX0KLQotLy8KLS8vIFNhbWUgZXJyb3IgbWVzc2FnZSBmb3Ig
YWxsIHBsYWNlcyB1bmFyeSBvcGVyYXRpb25zIGRvbid0IHdvcmsuCi0vLwotdm9pZCBUUGFyc2VD
b250ZXh0Ojp1bmFyeU9wRXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hhciog
b3AsIFRTdHJpbmcgb3BlcmFuZCkKLXsKLSAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9T
dHJlYW07Ci0gICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJubyBvcGVyYXRpb24gJyIgPDwgb3AgPDwg
IicgZXhpc3RzIHRoYXQgdGFrZXMgYW4gb3BlcmFuZCBvZiB0eXBlICIgPDwgb3BlcmFuZCAKLSAg
ICAgICAgICAgICAgICAgICAgPDwgIiAob3IgdGhlcmUgaXMgbm8gYWNjZXB0YWJsZSBjb252ZXJz
aW9uKSI7Ci0gICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigp
OwotICAgIGVycm9yKGxpbmUsICIgd3Jvbmcgb3BlcmFuZCB0eXBlIiwgb3AsIGV4dHJhSW5mby5j
X3N0cigpKTsKLX0KLQotLy8KLS8vIFNhbWUgZXJyb3IgbWVzc2FnZSBmb3IgYWxsIGJpbmFyeSBv
cGVyYXRpb25zIGRvbid0IHdvcmsuCi0vLwotdm9pZCBUUGFyc2VDb250ZXh0OjpiaW5hcnlPcEVy
cm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIGxlZnQs
IFRTdHJpbmcgcmlnaHQpCi17Ci0gICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFt
OwotICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAibm8gb3BlcmF0aW9uICciIDw8IG9wIDw8ICInIGV4
aXN0cyB0aGF0IHRha2VzIGEgbGVmdC1oYW5kIG9wZXJhbmQgb2YgdHlwZSAnIiA8PCBsZWZ0IAot
ICAgICAgICAgICAgICAgICAgICA8PCAiJyBhbmQgYSByaWdodCBvcGVyYW5kIG9mIHR5cGUgJyIg
PDwgcmlnaHQgPDwgIicgKG9yIHRoZXJlIGlzIG5vIGFjY2VwdGFibGUgY29udmVyc2lvbikiOwot
ICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICBl
cnJvcihsaW5lLCAiIHdyb25nIG9wZXJhbmQgdHlwZXMgIiwgb3AsIGV4dHJhSW5mby5jX3N0cigp
KTsgCi19Ci0KLWJvb2wgVFBhcnNlQ29udGV4dDo6cHJlY2lzaW9uRXJyb3JDaGVjayhjb25zdCBU
U291cmNlTG9jJiBsaW5lLCBUUHJlY2lzaW9uIHByZWNpc2lvbiwgVEJhc2ljVHlwZSB0eXBlKXsK
LSAgICBpZiAoIWNoZWNrc1ByZWNpc2lvbkVycm9ycykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHN3aXRjaCggdHlwZSApewotICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgIGlmKCBwcmVj
aXNpb24gPT0gRWJwVW5kZWZpbmVkICl7Ci0gICAgICAgICAgICBlcnJvciggbGluZSwgIk5vIHBy
ZWNpc2lvbiBzcGVjaWZpZWQgZm9yIChmbG9hdCkiLCAiIiApOwotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFYnRJbnQ6Ci0gICAg
ICAgIGlmKCBwcmVjaXNpb24gPT0gRWJwVW5kZWZpbmVkICl7Ci0gICAgICAgICAgICBlcnJvcigg
bGluZSwgIk5vIHByZWNpc2lvbiBzcGVjaWZpZWQgKGludCkiLCAiIiApOwotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLS8vCi0v
LyBCb3RoIHRlc3QgYW5kIGlmIG5lY2Vzc2FyeSwgc3BpdCBvdXQgYW4gZXJyb3IsIHRvIHNlZSBp
ZiB0aGUgbm9kZSBpcyByZWFsbHkKLS8vIGFuIGwtdmFsdWUgdGhhdCBjYW4gYmUgb3BlcmF0ZWQg
b24gdGhpcyB3YXkuCi0vLwotLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB3YXMgYW4gZXJyb3IuCi0v
LwotYm9vbCBUUGFyc2VDb250ZXh0OjpsVmFsdWVFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2Mm
IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUSW50ZXJtVHlwZWQqIG5vZGUpCi17Ci0gICAgVEludGVy
bVN5bWJvbCogc3ltTm9kZSA9IG5vZGUtPmdldEFzU3ltYm9sTm9kZSgpOwotICAgIFRJbnRlcm1C
aW5hcnkqIGJpbmFyeU5vZGUgPSBub2RlLT5nZXRBc0JpbmFyeU5vZGUoKTsKLQotICAgIGlmIChi
aW5hcnlOb2RlKSB7Ci0gICAgICAgIGJvb2wgZXJyb3JSZXR1cm47Ci0KLSAgICAgICAgc3dpdGNo
KGJpbmFyeU5vZGUtPmdldE9wKCkpIHsKLSAgICAgICAgY2FzZSBFT3BJbmRleERpcmVjdDoKLSAg
ICAgICAgY2FzZSBFT3BJbmRleEluZGlyZWN0OgotICAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0
U3RydWN0OgotICAgICAgICAgICAgcmV0dXJuIGxWYWx1ZUVycm9yQ2hlY2sobGluZSwgb3AsIGJp
bmFyeU5vZGUtPmdldExlZnQoKSk7Ci0gICAgICAgIGNhc2UgRU9wVmVjdG9yU3dpenpsZToKLSAg
ICAgICAgICAgIGVycm9yUmV0dXJuID0gbFZhbHVlRXJyb3JDaGVjayhsaW5lLCBvcCwgYmluYXJ5
Tm9kZS0+Z2V0TGVmdCgpKTsKLSAgICAgICAgICAgIGlmICghZXJyb3JSZXR1cm4pIHsKLSAgICAg
ICAgICAgICAgICBpbnQgb2Zmc2V0WzRdID0gezAsMCwwLDB9OwotCi0gICAgICAgICAgICAgICAg
VEludGVybVR5cGVkKiByaWdodE5vZGUgPSBiaW5hcnlOb2RlLT5nZXRSaWdodCgpOwotICAgICAg
ICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JOb2RlID0gcmlnaHROb2RlLT5nZXRBc0Fn
Z3JlZ2F0ZSgpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGZvciAoVEludGVy
bVNlcXVlbmNlOjppdGVyYXRvciBwID0gYWdnck5vZGUtPmdldFNlcXVlbmNlKCkuYmVnaW4oKTsg
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgIT0gYWdn
ck5vZGUtPmdldFNlcXVlbmNlKCkuZW5kKCk7IHArKykgewotICAgICAgICAgICAgICAgICAgICBp
bnQgdmFsdWUgPSAoKnApLT5nZXRBc1R5cGVkKCktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRJ
Q29uc3QoMCk7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNldFt2YWx1ZV0rKzsgICAgIAotICAg
ICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0W3ZhbHVlXSA+IDEpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGVycm9yKGxpbmUsICIgbC12YWx1ZSBvZiBzd2l6emxlIGNhbm5vdCBoYXZlIGR1
cGxpY2F0ZSBjb21wb25lbnRzIiwgb3ApOwotCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0gCi0KLSAgICAgICAgICAgIHJldHVybiBlcnJvclJldHVybjsKLSAgICAgICAgZGVm
YXVsdDogCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBlcnJvcihsaW5l
LCAiIGwtdmFsdWUgcmVxdWlyZWQiLCBvcCk7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotCi0KLSAgICBjb25zdCBjaGFyKiBzeW1ib2wgPSAwOwotICAgIGlmIChzeW1Ob2RlICE9IDAp
Ci0gICAgICAgIHN5bWJvbCA9IHN5bU5vZGUtPmdldFN5bWJvbCgpLmNfc3RyKCk7Ci0KLSAgICBj
b25zdCBjaGFyKiBtZXNzYWdlID0gMDsKLSAgICBzd2l0Y2ggKG5vZGUtPmdldFF1YWxpZmllcigp
KSB7Ci0gICAgY2FzZSBFdnFDb25zdDogICAgICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkg
YSBjb25zdCI7ICAgICAgICBicmVhazsKLSAgICBjYXNlIEV2cUNvbnN0UmVhZE9ubHk6ICBtZXNz
YWdlID0gImNhbid0IG1vZGlmeSBhIGNvbnN0IjsgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXZx
QXR0cmlidXRlOiAgICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGFuIGF0dHJpYnV0ZSI7ICAg
YnJlYWs7Ci0gICAgY2FzZSBFdnFVbmlmb3JtOiAgICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2Rp
ZnkgYSB1bmlmb3JtIjsgICAgICBicmVhazsKLSAgICBjYXNlIEV2cVZhcnlpbmdJbjogICAgICBt
ZXNzYWdlID0gImNhbid0IG1vZGlmeSBhIHZhcnlpbmciOyAgICAgIGJyZWFrOwotICAgIGNhc2Ug
RXZxRnJhZ0Nvb3JkOiAgICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGdsX0ZyYWdDb29yZCI7
ICAgYnJlYWs7Ci0gICAgY2FzZSBFdnFGcm9udEZhY2luZzogICAgbWVzc2FnZSA9ICJjYW4ndCBt
b2RpZnkgZ2xfRnJvbnRGYWNpbmciOyBicmVhazsKLSAgICBjYXNlIEV2cVBvaW50Q29vcmQ6ICAg
ICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBnbF9Qb2ludENvb3JkIjsgIGJyZWFrOwotICAgIGRl
ZmF1bHQ6Ci0KLSAgICAgICAgLy8KLSAgICAgICAgLy8gVHlwZSB0aGF0IGNhbid0IGJlIHdyaXR0
ZW4gdG8/Ci0gICAgICAgIC8vCi0gICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0QmFzaWNUeXBlKCkp
IHsKLSAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkQ6Ci0gICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1
YmU6Ci0gICAgICAgICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBhIHNhbXBsZXIiOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRWJ0Vm9pZDoKLSAgICAgICAgICAgIG1lc3Nh
Z2UgPSAiY2FuJ3QgbW9kaWZ5IHZvaWQiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRl
ZmF1bHQ6IAotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAo
bWVzc2FnZSA9PSAwICYmIGJpbmFyeU5vZGUgPT0gMCAmJiBzeW1Ob2RlID09IDApIHsKLSAgICAg
ICAgZXJyb3IobGluZSwgIiBsLXZhbHVlIHJlcXVpcmVkIiwgb3ApOwotCi0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLQotCi0gICAgLy8KLSAgICAvLyBFdmVyeXRoaW5nIGVsc2UgaXMgb2th
eSwgbm8gZXJyb3IuCi0gICAgLy8KLSAgICBpZiAobWVzc2FnZSA9PSAwKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICAvLwotICAgIC8vIElmIHdlIGdldCBoZXJlLCB3ZSBoYXZlIGFuIGVy
cm9yIGFuZCBhIG1lc3NhZ2UuCi0gICAgLy8KLSAgICBpZiAoc3ltTm9kZSkgewotICAgICAgICBz
dGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07Ci0gICAgICAgIGV4dHJhSW5mb1N0cmVh
bSA8PCAiXCIiIDw8IHN5bWJvbCA8PCAiXCIgKCIgPDwgbWVzc2FnZSA8PCAiKSI7Ci0gICAgICAg
IHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAg
ZXJyb3IobGluZSwgIiBsLXZhbHVlIHJlcXVpcmVkIiwgb3AsIGV4dHJhSW5mby5jX3N0cigpKTsK
LSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0
cmVhbTsKLSAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICIoIiA8PCBtZXNzYWdlIDw8ICIpIjsK
LSAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwot
ICAgICAgICBlcnJvcihsaW5lLCAiIGwtdmFsdWUgcmVxdWlyZWQiLCBvcCwgZXh0cmFJbmZvLmNf
c3RyKCkpOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi0vLwotLy8gQm90aCB0ZXN0
LCBhbmQgaWYgbmVjZXNzYXJ5IHNwaXQgb3V0IGFuIGVycm9yLCB0byBzZWUgaWYgdGhlIG5vZGUg
aXMgcmVhbGx5Ci0vLyBhIGNvbnN0YW50LgotLy8KLS8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgd2Fz
IGFuIGVycm9yLgotLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6Y29uc3RFcnJvckNoZWNrKFRJbnRl
cm1UeXBlZCogbm9kZSkKLXsKLSAgICBpZiAobm9kZS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29u
c3QpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGVycm9yKG5vZGUtPmdldExpbmUoKSwg
ImNvbnN0YW50IGV4cHJlc3Npb24gcmVxdWlyZWQiLCAiIik7Ci0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotLy8KLS8vIEJvdGggdGVzdCwgYW5kIGlmIG5lY2Vzc2FyeSBzcGl0IG91dCBhbiBlcnJv
ciwgdG8gc2VlIGlmIHRoZSBub2RlIGlzIHJlYWxseQotLy8gYW4gaW50ZWdlci4KLS8vCi0vLyBS
ZXR1cm5zIHRydWUgaWYgdGhlIHdhcyBhbiBlcnJvci4KLS8vCi1ib29sIFRQYXJzZUNvbnRleHQ6
OmludGVnZXJFcnJvckNoZWNrKFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgY2hhciogdG9rZW4p
Ci17Ci0gICAgaWYgKG5vZGUtPmdldEJhc2ljVHlwZSgpID09IEVidEludCAmJiBub2RlLT5nZXRO
b21pbmFsU2l6ZSgpID09IDEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGVycm9yKG5v
ZGUtPmdldExpbmUoKSwgImludGVnZXIgZXhwcmVzc2lvbiByZXF1aXJlZCIsIHRva2VuKTsKLQot
ICAgIHJldHVybiB0cnVlOwotfQotCi0vLwotLy8gQm90aCB0ZXN0LCBhbmQgaWYgbmVjZXNzYXJ5
IHNwaXQgb3V0IGFuIGVycm9yLCB0byBzZWUgaWYgd2UgYXJlIGN1cnJlbnRseQotLy8gZ2xvYmFs
bHkgc2NvcGVkLgotLy8KLS8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgd2FzIGFuIGVycm9yLgotLy8K
LWJvb2wgVFBhcnNlQ29udGV4dDo6Z2xvYmFsRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBs
aW5lLCBib29sIGdsb2JhbCwgY29uc3QgY2hhciogdG9rZW4pCi17Ci0gICAgaWYgKGdsb2JhbCkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZXJyb3IobGluZSwgIm9ubHkgYWxsb3dlZCBh
dCBnbG9iYWwgc2NvcGUiLCB0b2tlbik7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8KLS8v
IEZvciBub3csIGtlZXAgaXQgc2ltcGxlOiAgaWYgaXQgc3RhcnRzICJnbF8iLCBpdCdzIHJlc2Vy
dmVkLCBpbmRlcGVuZGVudAotLy8gb2Ygc2NvcGUuICBFeGNlcHQsIGlmIHRoZSBzeW1ib2wgdGFi
bGUgaXMgYXQgdGhlIGJ1aWx0LWluIHB1c2gtbGV2ZWwsCi0vLyB3aGljaCBpcyB3aGVuIHdlIGFy
ZSBwYXJzaW5nIGJ1aWx0LWlucy4KLS8vIEFsc28gY2hlY2tzIGZvciAid2ViZ2xfIiBhbmQgIl93
ZWJnbF8iIHJlc2VydmVkIGlkZW50aWZpZXJzIGlmIHBhcnNpbmcgYQotLy8gd2ViZ2wgc2hhZGVy
LgotLy8KLS8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCi0vLwotYm9vbCBU
UGFyc2VDb250ZXh0OjpyZXNlcnZlZEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwg
Y29uc3QgVFN0cmluZyYgaWRlbnRpZmllcikKLXsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogcmVz
ZXJ2ZWRFcnJNc2cgPSAicmVzZXJ2ZWQgYnVpbHQtaW4gbmFtZSI7Ci0gICAgaWYgKCFzeW1ib2xU
YWJsZS5hdEJ1aWx0SW5MZXZlbCgpKSB7Ci0gICAgICAgIGlmIChpZGVudGlmaWVyLmNvbXBhcmUo
MCwgMywgImdsXyIpID09IDApIHsKLSAgICAgICAgICAgIGVycm9yKGxpbmUsIHJlc2VydmVkRXJy
TXNnLCAiZ2xfIik7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAg
ICBpZiAoaXNXZWJHTEJhc2VkU3BlYyhzaGFkZXJTcGVjKSkgewotICAgICAgICAgICAgaWYgKGlk
ZW50aWZpZXIuY29tcGFyZSgwLCA2LCAid2ViZ2xfIikgPT0gMCkgewotICAgICAgICAgICAgICAg
IGVycm9yKGxpbmUsIHJlc2VydmVkRXJyTXNnLCAid2ViZ2xfIik7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaWRlbnRpZmllci5j
b21wYXJlKDAsIDcsICJfd2ViZ2xfIikgPT0gMCkgewotICAgICAgICAgICAgICAgIGVycm9yKGxp
bmUsIHJlc2VydmVkRXJyTXNnLCAiX3dlYmdsXyIpOwotICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHNoYWRlclNwZWMgPT0gU0hfQ1NT
X1NIQURFUlNfU1BFQyAmJiBpZGVudGlmaWVyLmNvbXBhcmUoMCwgNCwgImNzc18iKSA9PSAwKSB7
Ci0gICAgICAgICAgICAgICAgZXJyb3IobGluZSwgcmVzZXJ2ZWRFcnJNc2csICJjc3NfIik7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKGlkZW50aWZpZXIuZmluZCgiX18iKSAhPSBUU3RyaW5nOjpucG9zKSB7Ci0gICAg
ICAgICAgICBlcnJvcihsaW5lLCAiaWRlbnRpZmllcnMgY29udGFpbmluZyB0d28gY29uc2VjdXRp
dmUgdW5kZXJzY29yZXMgKF9fKSBhcmUgcmVzZXJ2ZWQgYXMgcG9zc2libGUgZnV0dXJlIGtleXdv
cmRzIiwgaWRlbnRpZmllci5jX3N0cigpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0vLwotLy8gTWFrZSBzdXJl
IHRoZXJlIGlzIGVub3VnaCBkYXRhIHByb3ZpZGVkIHRvIHRoZSBjb25zdHJ1Y3RvciB0byBidWls
ZAotLy8gc29tZXRoaW5nIG9mIHRoZSB0eXBlIG9mIHRoZSBjb25zdHJ1Y3Rvci4gIEFsc28gcmV0
dXJucyB0aGUgdHlwZSBvZgotLy8gdGhlIGNvbnN0cnVjdG9yLgotLy8KLS8vIFJldHVybnMgdHJ1
ZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgaW4gY29uc3RydWN0aW9uLgotLy8KLWJvb2wgVFBhcnNl
Q29udGV4dDo6Y29uc3RydWN0b3JFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRJ
bnRlcm1Ob2RlKiBub2RlLCBURnVuY3Rpb24mIGZ1bmN0aW9uLCBUT3BlcmF0b3Igb3AsIFRUeXBl
KiB0eXBlKQotewotICAgICp0eXBlID0gZnVuY3Rpb24uZ2V0UmV0dXJuVHlwZSgpOwotCi0gICAg
Ym9vbCBjb25zdHJ1Y3RpbmdNYXRyaXggPSBmYWxzZTsKLSAgICBzd2l0Y2gob3ApIHsKLSAgICBj
YXNlIEVPcENvbnN0cnVjdE1hdDI6Ci0gICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQzOgotICAgIGNh
c2UgRU9wQ29uc3RydWN0TWF0NDoKLSAgICAgICAgY29uc3RydWN0aW5nTWF0cml4ID0gdHJ1ZTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDogCi0gICAgICAgIGJyZWFrOwotICAgIH0KLQot
ICAgIC8vCi0gICAgLy8gTm90ZTogSXQncyBva2F5IHRvIGhhdmUgdG9vIG1hbnkgY29tcG9uZW50
cyBhdmFpbGFibGUsIGJ1dCBub3Qgb2theSB0byBoYXZlIHVudXNlZAotICAgIC8vIGFyZ3VtZW50
cy4gICdmdWxsJyB3aWxsIGdvIHRvIHRydWUgd2hlbiBlbm91Z2ggYXJncyBoYXZlIGJlZW4gc2Vl
bi4gIElmIHdlIGxvb3AKLSAgICAvLyBhZ2FpbiwgdGhlcmUgaXMgYW4gZXh0cmEgYXJndW1lbnQs
IHNvICdvdmVyZnVsbCcgd2lsbCBiZWNvbWUgdHJ1ZS4KLSAgICAvLwotCi0gICAgc2l6ZV90IHNp
emUgPSAwOwotICAgIGJvb2wgY29uc3RUeXBlID0gdHJ1ZTsKLSAgICBib29sIGZ1bGwgPSBmYWxz
ZTsKLSAgICBib29sIG92ZXJGdWxsID0gZmFsc2U7Ci0gICAgYm9vbCBtYXRyaXhJbk1hdHJpeCA9
IGZhbHNlOwotICAgIGJvb2wgYXJyYXlBcmcgPSBmYWxzZTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGZ1bmN0aW9uLmdldFBhcmFtQ291bnQoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFRQ
YXJhbWV0ZXImIHBhcmFtID0gZnVuY3Rpb24uZ2V0UGFyYW0oaSk7Ci0gICAgICAgIHNpemUgKz0g
cGFyYW0udHlwZS0+Z2V0T2JqZWN0U2l6ZSgpOwotICAgICAgICAKLSAgICAgICAgaWYgKGNvbnN0
cnVjdGluZ01hdHJpeCAmJiBwYXJhbS50eXBlLT5pc01hdHJpeCgpKQotICAgICAgICAgICAgbWF0
cml4SW5NYXRyaXggPSB0cnVlOwotICAgICAgICBpZiAoZnVsbCkKLSAgICAgICAgICAgIG92ZXJG
dWxsID0gdHJ1ZTsKLSAgICAgICAgaWYgKG9wICE9IEVPcENvbnN0cnVjdFN0cnVjdCAmJiAhdHlw
ZS0+aXNBcnJheSgpICYmIHNpemUgPj0gdHlwZS0+Z2V0T2JqZWN0U2l6ZSgpKQotICAgICAgICAg
ICAgZnVsbCA9IHRydWU7Ci0gICAgICAgIGlmIChwYXJhbS50eXBlLT5nZXRRdWFsaWZpZXIoKSAh
PSBFdnFDb25zdCkKLSAgICAgICAgICAgIGNvbnN0VHlwZSA9IGZhbHNlOwotICAgICAgICBpZiAo
cGFyYW0udHlwZS0+aXNBcnJheSgpKQotICAgICAgICAgICAgYXJyYXlBcmcgPSB0cnVlOwotICAg
IH0KLSAgICAKLSAgICBpZiAoY29uc3RUeXBlKQotICAgICAgICB0eXBlLT5zZXRRdWFsaWZpZXIo
RXZxQ29uc3QpOwotCi0gICAgaWYgKHR5cGUtPmlzQXJyYXkoKSAmJiBzdGF0aWNfY2FzdDxzaXpl
X3Q+KHR5cGUtPmdldEFycmF5U2l6ZSgpKSAhPSBmdW5jdGlvbi5nZXRQYXJhbUNvdW50KCkpIHsK
LSAgICAgICAgZXJyb3IobGluZSwgImFycmF5IGNvbnN0cnVjdG9yIG5lZWRzIG9uZSBhcmd1bWVu
dCBwZXIgYXJyYXkgZWxlbWVudCIsICJjb25zdHJ1Y3RvciIpOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0KLSAgICBpZiAoYXJyYXlBcmcgJiYgb3AgIT0gRU9wQ29uc3RydWN0U3RydWN0
KSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJjb25zdHJ1Y3RpbmcgZnJvbSBhIG5vbi1kZXJlZmVy
ZW5jZWQgYXJyYXkiLCAiY29uc3RydWN0b3IiKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotCi0gICAgaWYgKG1hdHJpeEluTWF0cml4ICYmICF0eXBlLT5pc0FycmF5KCkpIHsKLSAgICAg
ICAgaWYgKGZ1bmN0aW9uLmdldFBhcmFtQ291bnQoKSAhPSAxKSB7Ci0gICAgICAgICAgZXJyb3Io
bGluZSwgImNvbnN0cnVjdGluZyBtYXRyaXggZnJvbSBtYXRyaXggY2FuIG9ubHkgdGFrZSBvbmUg
YXJndW1lbnQiLCAiY29uc3RydWN0b3IiKTsKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIGlmIChvdmVyRnVsbCkgewotICAgICAgICBlcnJvcihsaW5lLCAi
dG9vIG1hbnkgYXJndW1lbnRzIiwgImNvbnN0cnVjdG9yIik7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLSAgICAKLSAgICBpZiAob3AgPT0gRU9wQ29uc3RydWN0U3RydWN0ICYmICF0eXBl
LT5pc0FycmF5KCkgJiYgaW50KHR5cGUtPmdldFN0cnVjdCgpLT5maWVsZHMoKS5zaXplKCkpICE9
IGZ1bmN0aW9uLmdldFBhcmFtQ291bnQoKSkgewotICAgICAgICBlcnJvcihsaW5lLCAiTnVtYmVy
IG9mIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMgZG9lcyBub3QgbWF0Y2ggdGhlIG51bWJlciBvZiBz
dHJ1Y3R1cmUgZmllbGRzIiwgImNvbnN0cnVjdG9yIik7Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KLQotICAgIGlmICghdHlwZS0+aXNNYXRyaXgoKSB8fCAhbWF0cml4SW5NYXRyaXgpIHsK
LSAgICAgICAgaWYgKChvcCAhPSBFT3BDb25zdHJ1Y3RTdHJ1Y3QgJiYgc2l6ZSAhPSAxICYmIHNp
emUgPCB0eXBlLT5nZXRPYmplY3RTaXplKCkpIHx8Ci0gICAgICAgICAgICAob3AgPT0gRU9wQ29u
c3RydWN0U3RydWN0ICYmIHNpemUgPCB0eXBlLT5nZXRPYmplY3RTaXplKCkpKSB7Ci0gICAgICAg
ICAgICBlcnJvcihsaW5lLCAibm90IGVub3VnaCBkYXRhIHByb3ZpZGVkIGZvciBjb25zdHJ1Y3Rp
b24iLCAiY29uc3RydWN0b3IiKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgVEludGVybVR5cGVkICp0eXBlZCA9IG5vZGUgPyBub2RlLT5nZXRBc1R5
cGVkKCkgOiAwOwotICAgIGlmICh0eXBlZCA9PSAwKSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJj
b25zdHJ1Y3RvciBhcmd1bWVudCBkb2VzIG5vdCBoYXZlIGEgdHlwZSIsICJjb25zdHJ1Y3RvciIp
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgaWYgKG9wICE9IEVPcENvbnN0cnVj
dFN0cnVjdCAmJiBJc1NhbXBsZXIodHlwZWQtPmdldEJhc2ljVHlwZSgpKSkgewotICAgICAgICBl
cnJvcihsaW5lLCAiY2Fubm90IGNvbnZlcnQgYSBzYW1wbGVyIiwgImNvbnN0cnVjdG9yIik7Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBpZiAodHlwZWQtPmdldEJhc2ljVHlwZSgp
ID09IEVidFZvaWQpIHsKLSAgICAgICAgZXJyb3IobGluZSwgImNhbm5vdCBjb252ZXJ0IGEgdm9p
ZCIsICJjb25zdHJ1Y3RvciIpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLS8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIHRvIHNlZSBpZiBhIHZv
aWQgdmFyaWFibGUgaGFzIGJlZW4gZGVjbGFyZWQgYW5kIHJhaXNlIGFuIGVycm9yIG1lc3NhZ2Ug
Zm9yIHN1Y2ggYSBjYXNlCi0vLwotLy8gcmV0dXJucyB0cnVlIGluIGNhc2Ugb2YgYW4gZXJyb3IK
LS8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OnZvaWRFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2Mm
IGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFRQdWJsaWNUeXBlJiBwdWJU
eXBlKQotewotICAgIGlmIChwdWJUeXBlLnR5cGUgPT0gRWJ0Vm9pZCkgewotICAgICAgICBlcnJv
cihsaW5lLCAiaWxsZWdhbCB1c2Ugb2YgdHlwZSAndm9pZCciLCBpZGVudGlmaWVyLmNfc3RyKCkp
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9IAotCi0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci0vLyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyB0byBzZWUgaWYgdGhlIG5vZGUgKGZvciB0aGUgZXhw
cmVzc2lvbikgY29udGFpbnMgYSBzY2FsYXIgYm9vbGVhbiBleHByZXNzaW9uIG9yIG5vdAotLy8K
LS8vIHJldHVybnMgdHJ1ZSBpbiBjYXNlIG9mIGFuIGVycm9yCi0vLwotYm9vbCBUUGFyc2VDb250
ZXh0Ojpib29sRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUSW50ZXJt
VHlwZWQqIHR5cGUpCi17Ci0gICAgaWYgKHR5cGUtPmdldEJhc2ljVHlwZSgpICE9IEVidEJvb2wg
fHwgdHlwZS0+aXNBcnJheSgpIHx8IHR5cGUtPmlzTWF0cml4KCkgfHwgdHlwZS0+aXNWZWN0b3Io
KSkgewotICAgICAgICBlcnJvcihsaW5lLCAiYm9vbGVhbiBleHByZXNzaW9uIGV4cGVjdGVkIiwg
IiIpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9IAotCi0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi0vLyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyB0byBzZWUgaWYgdGhlIG5vZGUgKGZvciB0aGUg
ZXhwcmVzc2lvbikgY29udGFpbnMgYSBzY2FsYXIgYm9vbGVhbiBleHByZXNzaW9uIG9yIG5vdAot
Ly8KLS8vIHJldHVybnMgdHJ1ZSBpbiBjYXNlIG9mIGFuIGVycm9yCi0vLwotYm9vbCBUUGFyc2VD
b250ZXh0Ojpib29sRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUUHVi
bGljVHlwZSYgcFR5cGUpCi17Ci0gICAgaWYgKHBUeXBlLnR5cGUgIT0gRWJ0Qm9vbCB8fCBwVHlw
ZS5hcnJheSB8fCBwVHlwZS5tYXRyaXggfHwgKHBUeXBlLnNpemUgPiAxKSkgewotICAgICAgICBl
cnJvcihsaW5lLCAiYm9vbGVhbiBleHByZXNzaW9uIGV4cGVjdGVkIiwgIiIpOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9IAotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFRQYXJz
ZUNvbnRleHQ6OnNhbXBsZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0
IFRQdWJsaWNUeXBlJiBwVHlwZSwgY29uc3QgY2hhciogcmVhc29uKQotewotICAgIGlmIChwVHlw
ZS50eXBlID09IEVidFN0cnVjdCkgewotICAgICAgICBpZiAoY29udGFpbnNTYW1wbGVyKCpwVHlw
ZS51c2VyRGVmKSkgewotICAgICAgICAgICAgZXJyb3IobGluZSwgcmVhc29uLCBnZXRCYXNpY1N0
cmluZyhwVHlwZS50eXBlKSwgIihzdHJ1Y3R1cmUgY29udGFpbnMgYSBzYW1wbGVyKSIpOwotICAg
ICAgICAKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSBlbHNlIGlmIChJc1NhbXBsZXIocFR5cGUudHlwZSkp
IHsKLSAgICAgICAgZXJyb3IobGluZSwgcmVhc29uLCBnZXRCYXNpY1N0cmluZyhwVHlwZS50eXBl
KSk7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi1ib29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlKQotewotICAgIGlmICgo
cFR5cGUucXVhbGlmaWVyID09IEV2cVZhcnlpbmdJbiB8fCBwVHlwZS5xdWFsaWZpZXIgPT0gRXZx
VmFyeWluZ091dCB8fCBwVHlwZS5xdWFsaWZpZXIgPT0gRXZxQXR0cmlidXRlKSAmJgotICAgICAg
ICBwVHlwZS50eXBlID09IEVidFN0cnVjdCkgewotICAgICAgICBlcnJvcihsaW5lLCAiY2Fubm90
IGJlIHVzZWQgd2l0aCBhIHN0cnVjdHVyZSIsIGdldFF1YWxpZmllclN0cmluZyhwVHlwZS5xdWFs
aWZpZXIpKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGlm
IChwVHlwZS5xdWFsaWZpZXIgIT0gRXZxVW5pZm9ybSAmJiBzYW1wbGVyRXJyb3JDaGVjayhsaW5l
LCBwVHlwZSwgInNhbXBsZXJzIG11c3QgYmUgdW5pZm9ybSIpKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBUUGFyc2VDb250ZXh0OjpwYXJhbWV0
ZXJTYW1wbGVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUXVhbGlmaWVyIHF1
YWxpZmllciwgY29uc3QgVFR5cGUmIHR5cGUpCi17Ci0gICAgaWYgKChxdWFsaWZpZXIgPT0gRXZx
T3V0IHx8IHF1YWxpZmllciA9PSBFdnFJbk91dCkgJiYgCi0gICAgICAgICAgICAgdHlwZS5nZXRC
YXNpY1R5cGUoKSAhPSBFYnRTdHJ1Y3QgJiYgSXNTYW1wbGVyKHR5cGUuZ2V0QmFzaWNUeXBlKCkp
KSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJzYW1wbGVycyBjYW5ub3QgYmUgb3V0cHV0IHBhcmFt
ZXRlcnMiLCB0eXBlLmdldEJhc2ljU3RyaW5nKCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgVFBhcnNlQ29udGV4dDo6Y29udGFp
bnNTYW1wbGVyKFRUeXBlJiB0eXBlKQotewotICAgIGlmIChJc1NhbXBsZXIodHlwZS5nZXRCYXNp
Y1R5cGUoKSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKHR5cGUuZ2V0QmFzaWNU
eXBlKCkgPT0gRWJ0U3RydWN0KSB7Ci0gICAgICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9
IHR5cGUuZ2V0U3RydWN0KCktPmZpZWxkcygpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKGNvbnRhaW5z
U2FtcGxlcigqZmllbGRzW2ldLT50eXBlKCkpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0vLwotLy8gRG8g
c2l6ZSBjaGVja2luZyBmb3IgYW4gYXJyYXkgdHlwZSdzIHNpemUuCi0vLwotLy8gUmV0dXJucyB0
cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KLS8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5
U2l6ZUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEludGVybVR5cGVkKiBleHBy
LCBpbnQmIHNpemUpCi17Ci0gICAgVEludGVybUNvbnN0YW50VW5pb24qIGNvbnN0YW50ID0gZXhw
ci0+Z2V0QXNDb25zdGFudFVuaW9uKCk7Ci0gICAgaWYgKGNvbnN0YW50ID09IDAgfHwgY29uc3Rh
bnQtPmdldEJhc2ljVHlwZSgpICE9IEVidEludCkgewotICAgICAgICBlcnJvcihsaW5lLCAiYXJy
YXkgc2l6ZSBtdXN0IGJlIGEgY29uc3RhbnQgaW50ZWdlciBleHByZXNzaW9uIiwgIiIpOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBzaXplID0gY29uc3RhbnQtPmdldElDb25z
dCgwKTsKLQotICAgIGlmIChzaXplIDw9IDApIHsKLSAgICAgICAgZXJyb3IobGluZSwgImFycmF5
IHNpemUgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIiLCAiIik7Ci0gICAgICAgIHNpemUgPSAx
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LS8vCi0vLyBTZWUgaWYgdGhpcyBxdWFsaWZpZXIgY2FuIGJlIGFuIGFycmF5LgotLy8KLS8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhbiBlcnJvci4KLS8vCi1ib29sIFRQYXJzZUNvbnRleHQ6
OmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUHVibGlj
VHlwZSB0eXBlKQotewotICAgIGlmICgodHlwZS5xdWFsaWZpZXIgPT0gRXZxQXR0cmlidXRlKSB8
fCAodHlwZS5xdWFsaWZpZXIgPT0gRXZxQ29uc3QpKSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJj
YW5ub3QgZGVjbGFyZSBhcnJheXMgb2YgdGhpcyBxdWFsaWZpZXIiLCBUVHlwZSh0eXBlKS5nZXRD
b21wbGV0ZVN0cmluZygpLmNfc3RyKCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLS8vCi0vLyBTZWUgaWYgdGhpcyB0eXBlIGNhbiBiZSBh
biBhcnJheS4KLS8vCi0vLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgaXMgYW4gZXJyb3IuCi0vLwot
Ym9vbCBUUGFyc2VDb250ZXh0OjphcnJheVR5cGVFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2Mm
IGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpCi17Ci0gICAgLy8KLSAgICAvLyBDYW4gdGhlIHR5cGUg
YmUgYW4gYXJyYXk/Ci0gICAgLy8KLSAgICBpZiAodHlwZS5hcnJheSkgewotICAgICAgICBlcnJv
cihsaW5lLCAiY2Fubm90IGRlY2xhcmUgYXJyYXlzIG9mIGFycmF5cyIsIFRUeXBlKHR5cGUpLmdl
dENvbXBsZXRlU3RyaW5nKCkuY19zdHIoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotLy8KLS8vIERvIGFsbCB0aGUgc2VtYW50aWMgY2hl
Y2tpbmcgZm9yIGRlY2xhcmluZyBhbiBhcnJheSwgd2l0aCBhbmQgCi0vLyB3aXRob3V0IGEgc2l6
ZSwgYW5kIG1ha2UgdGhlIHJpZ2h0IGNoYW5nZXMgdG8gdGhlIHN5bWJvbCB0YWJsZS4KLS8vCi0v
LyBzaXplID09IDAgbWVhbnMgbm8gc3BlY2lmaWVkIHNpemUuCi0vLwotLy8gUmV0dXJucyB0cnVl
IGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KLS8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5RXJy
b3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVi
bGljVHlwZSB0eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSkKLXsKLSAgICAvLwotICAgIC8vIERv
bid0IGNoZWNrIGZvciByZXNlcnZlZCB3b3JkIHVzZSB1bnRpbCBhZnRlciB3ZSBrbm93IGl0J3Mg
bm90IGluIHRoZSBzeW1ib2wgdGFibGUsCi0gICAgLy8gYmVjYXVzZSByZXNlcnZlZCBhcnJheXMg
Y2FuIGJlIHJlZGVjbGFyZWQuCi0gICAgLy8KLQotICAgIGJvb2wgYnVpbHRJbiA9IGZhbHNlOyAK
LSAgICBib29sIHNhbWVTY29wZSA9IGZhbHNlOwotICAgIFRTeW1ib2wqIHN5bWJvbCA9IHN5bWJv
bFRhYmxlLmZpbmQoaWRlbnRpZmllciwgJmJ1aWx0SW4sICZzYW1lU2NvcGUpOwotICAgIGlmIChz
eW1ib2wgPT0gMCB8fCAhc2FtZVNjb3BlKSB7Ci0gICAgICAgIGlmIChyZXNlcnZlZEVycm9yQ2hl
Y2sobGluZSwgaWRlbnRpZmllcikpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
Ci0gICAgICAgIHZhcmlhYmxlID0gbmV3IFRWYXJpYWJsZSgmaWRlbnRpZmllciwgVFR5cGUodHlw
ZSkpOwotCi0gICAgICAgIGlmICh0eXBlLmFycmF5U2l6ZSkKLSAgICAgICAgICAgIHZhcmlhYmxl
LT5nZXRUeXBlKCkuc2V0QXJyYXlTaXplKHR5cGUuYXJyYXlTaXplKTsKLQotICAgICAgICBpZiAo
ISBzeW1ib2xUYWJsZS5pbnNlcnQoKnZhcmlhYmxlKSkgewotICAgICAgICAgICAgZGVsZXRlIHZh
cmlhYmxlOwotICAgICAgICAgICAgZXJyb3IobGluZSwgIklOVEVSTkFMIEVSUk9SIGluc2VydGlu
ZyBuZXcgc3ltYm9sIiwgaWRlbnRpZmllci5jX3N0cigpKTsKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCEgc3ltYm9sLT5pc1Zh
cmlhYmxlKCkpIHsKLSAgICAgICAgICAgIGVycm9yKGxpbmUsICJ2YXJpYWJsZSBleHBlY3RlZCIs
IGlkZW50aWZpZXIuY19zdHIoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
fQotCi0gICAgICAgIHZhcmlhYmxlID0gc3RhdGljX2Nhc3Q8VFZhcmlhYmxlKj4oc3ltYm9sKTsK
LSAgICAgICAgaWYgKCEgdmFyaWFibGUtPmdldFR5cGUoKS5pc0FycmF5KCkpIHsKLSAgICAgICAg
ICAgIGVycm9yKGxpbmUsICJyZWRlY2xhcmluZyBub24tYXJyYXkgYXMgYXJyYXkiLCBpZGVudGlm
aWVyLmNfc3RyKCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkgPiAwKSB7Ci0gICAgICAg
ICAgICBlcnJvcihsaW5lLCAicmVkZWNsYXJhdGlvbiBvZiBhcnJheSB3aXRoIHNpemUiLCBpZGVu
dGlmaWVyLmNfc3RyKCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIGlmICghIHZhcmlhYmxlLT5nZXRUeXBlKCkuc2FtZUVsZW1lbnRUeXBl
KFRUeXBlKHR5cGUpKSkgewotICAgICAgICAgICAgZXJyb3IobGluZSwgInJlZGVjbGFyYXRpb24g
b2YgYXJyYXkgd2l0aCBhIGRpZmZlcmVudCB0eXBlIiwgaWRlbnRpZmllci5jX3N0cigpKTsKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHR5cGUuYXJy
YXlTaXplKQotICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKS5zZXRBcnJheVNpemUodHlw
ZS5hcnJheVNpemUpOwotICAgIH0gCi0KLSAgICBpZiAodm9pZEVycm9yQ2hlY2sobGluZSwgaWRl
bnRpZmllciwgdHlwZSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi0vLwotLy8gRW5mb3JjZSBub24taW5pdGlhbGl6ZXIgdHlwZS9xdWFsaWZpZXIgcnVs
ZXMuCi0vLwotLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KLS8vCi1ib29s
IFRQYXJzZUNvbnRleHQ6Om5vbkluaXRDb25zdEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYg
bGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHR5cGUsIGJvb2wgYXJyYXkp
Ci17Ci0gICAgaWYgKHR5cGUucXVhbGlmaWVyID09IEV2cUNvbnN0KQotICAgIHsKLSAgICAgICAg
Ly8gTWFrZSB0aGUgcXVhbGlmaWVyIG1ha2Ugc2Vuc2UuCi0gICAgICAgIHR5cGUucXVhbGlmaWVy
ID0gRXZxVGVtcG9yYXJ5OwotICAgICAgICAKLSAgICAgICAgaWYgKGFycmF5KQotICAgICAgICB7
Ci0gICAgICAgICAgICBlcnJvcihsaW5lLCAiYXJyYXlzIG1heSBub3QgYmUgZGVjbGFyZWQgY29u
c3RhbnQgc2luY2UgdGhleSBjYW5ub3QgYmUgaW5pdGlhbGl6ZWQiLCBpZGVudGlmaWVyLmNfc3Ry
KCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHR5cGUuaXNTdHJ1Y3R1cmVDb250YWlu
aW5nQXJyYXlzKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVycm9yKGxpbmUsICJzdHJ1Y3R1
cmVzIGNvbnRhaW5pbmcgYXJyYXlzIG1heSBub3QgYmUgZGVjbGFyZWQgY29uc3RhbnQgc2luY2Ug
dGhleSBjYW5ub3QgYmUgaW5pdGlhbGl6ZWQiLCBpZGVudGlmaWVyLmNfc3RyKCkpOwotICAgICAg
ICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgZXJyb3IobGluZSwgInZh
cmlhYmxlcyB3aXRoIHF1YWxpZmllciAnY29uc3QnIG11c3QgYmUgaW5pdGlhbGl6ZWQiLCBpZGVu
dGlmaWVyLmNfc3RyKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0vLwotLy8gRG8gc2VtYW50aWMgY2hlY2tpbmcg
Zm9yIGEgdmFyaWFibGUgZGVjbGFyYXRpb24gdGhhdCBoYXMgbm8gaW5pdGlhbGl6ZXIsCi0vLyBh
bmQgdXBkYXRlIHRoZSBzeW1ib2wgdGFibGUuCi0vLwotLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJl
IHdhcyBhbiBlcnJvci4KLS8vCi1ib29sIFRQYXJzZUNvbnRleHQ6Om5vbkluaXRFcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBl
JiB0eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSkKLXsKLSAgICBpZiAocmVzZXJ2ZWRFcnJvckNo
ZWNrKGxpbmUsIGlkZW50aWZpZXIpKQotICAgICAgICByZWNvdmVyKCk7Ci0KLSAgICB2YXJpYWJs
ZSA9IG5ldyBUVmFyaWFibGUoJmlkZW50aWZpZXIsIFRUeXBlKHR5cGUpKTsKLQotICAgIGlmICgh
IHN5bWJvbFRhYmxlLmluc2VydCgqdmFyaWFibGUpKSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJy
ZWRlZmluaXRpb24iLCB2YXJpYWJsZS0+Z2V0TmFtZSgpLmNfc3RyKCkpOwotICAgICAgICBkZWxl
dGUgdmFyaWFibGU7Ci0gICAgICAgIHZhcmlhYmxlID0gMDsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotCi0gICAgaWYgKHZvaWRFcnJvckNoZWNrKGxpbmUsIGlkZW50aWZpZXIsIHR5cGUp
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBU
UGFyc2VDb250ZXh0OjpwYXJhbUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFF1
YWxpZmllciBxdWFsaWZpZXIsIFRRdWFsaWZpZXIgcGFyYW1RdWFsaWZpZXIsIFRUeXBlKiB0eXBl
KQoteyAgICAKLSAgICBpZiAocXVhbGlmaWVyICE9IEV2cUNvbnN0ICYmIHF1YWxpZmllciAhPSBF
dnFUZW1wb3JhcnkpIHsKLSAgICAgICAgZXJyb3IobGluZSwgInF1YWxpZmllciBub3QgYWxsb3dl
ZCBvbiBmdW5jdGlvbiBwYXJhbWV0ZXIiLCBnZXRRdWFsaWZpZXJTdHJpbmcocXVhbGlmaWVyKSk7
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBpZiAocXVhbGlmaWVyID09IEV2cUNv
bnN0ICYmIHBhcmFtUXVhbGlmaWVyICE9IEV2cUluKSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJx
dWFsaWZpZXIgbm90IGFsbG93ZWQgd2l0aCAiLCBnZXRRdWFsaWZpZXJTdHJpbmcocXVhbGlmaWVy
KSwgZ2V0UXVhbGlmaWVyU3RyaW5nKHBhcmFtUXVhbGlmaWVyKSk7Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLQotICAgIGlmIChxdWFsaWZpZXIgPT0gRXZxQ29uc3QpCi0gICAgICAgIHR5
cGUtPnNldFF1YWxpZmllcihFdnFDb25zdFJlYWRPbmx5KTsKLSAgICBlbHNlCi0gICAgICAgIHR5
cGUtPnNldFF1YWxpZmllcihwYXJhbVF1YWxpZmllcik7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KLWJvb2wgVFBhcnNlQ29udGV4dDo6ZXh0ZW5zaW9uRXJyb3JDaGVjayhjb25zdCBUU291cmNl
TG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJiBleHRlbnNpb24pCi17Ci0gICAgY29uc3QgVEV4dGVu
c2lvbkJlaGF2aW9yJiBleHRCZWhhdmlvciA9IGV4dGVuc2lvbkJlaGF2aW9yKCk7Ci0gICAgVEV4
dGVuc2lvbkJlaGF2aW9yOjpjb25zdF9pdGVyYXRvciBpdGVyID0gZXh0QmVoYXZpb3IuZmluZChl
eHRlbnNpb24uY19zdHIoKSk7Ci0gICAgaWYgKGl0ZXIgPT0gZXh0QmVoYXZpb3IuZW5kKCkpIHsK
LSAgICAgICAgZXJyb3IobGluZSwgImV4dGVuc2lvbiIsIGV4dGVuc2lvbi5jX3N0cigpLCAiaXMg
bm90IHN1cHBvcnRlZCIpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgLy8gSW4g
R0xTTCBFUywgYW4gZXh0ZW5zaW9uJ3MgZGVmYXVsdCBiZWhhdmlvciBpcyAiZGlzYWJsZSIuCi0g
ICAgaWYgKGl0ZXItPnNlY29uZCA9PSBFQmhEaXNhYmxlIHx8IGl0ZXItPnNlY29uZCA9PSBFQmhV
bmRlZmluZWQpIHsKLSAgICAgICAgZXJyb3IobGluZSwgImV4dGVuc2lvbiIsIGV4dGVuc2lvbi5j
X3N0cigpLCAiaXMgZGlzYWJsZWQiKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAg
IGlmIChpdGVyLT5zZWNvbmQgPT0gRUJoV2FybikgewotICAgICAgICB3YXJuaW5nKGxpbmUsICJl
eHRlbnNpb24iLCBleHRlbnNpb24uY19zdHIoKSwgImlzIGJlaW5nIHVzZWQiKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBUUGFy
c2VDb250ZXh0OjpzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBjaGFyKiBleHRlbnNpb24pCi17Ci0g
ICAgY29uc3QgVEV4dGVuc2lvbkJlaGF2aW9yJiBleHRiZWhhdmlvciA9IGV4dGVuc2lvbkJlaGF2
aW9yKCk7Ci0gICAgVEV4dGVuc2lvbkJlaGF2aW9yOjpjb25zdF9pdGVyYXRvciBpdGVyID0gZXh0
YmVoYXZpb3IuZmluZChleHRlbnNpb24pOwotICAgIHJldHVybiAoaXRlciAhPSBleHRiZWhhdmlv
ci5lbmQoKSk7Ci19Ci0KLWJvb2wgVFBhcnNlQ29udGV4dDo6aXNFeHRlbnNpb25FbmFibGVkKGNv
bnN0IGNoYXIqIGV4dGVuc2lvbikgY29uc3QKLXsKLSAgICBjb25zdCBURXh0ZW5zaW9uQmVoYXZp
b3ImIGV4dGJlaGF2aW9yID0gZXh0ZW5zaW9uQmVoYXZpb3IoKTsKLSAgICBzdGQ6Om1hcDxzdGQ6
OnN0cmluZywgVEJlaGF2aW9yPjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGV4dGJlaGF2aW9yLmZp
bmQoZXh0ZW5zaW9uKTsKLQotICAgIGlmIChpdGVyID09IGV4dGJlaGF2aW9yLmVuZCgpKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiAoaXRlci0+c2Vj
b25kID09IEVCaEVuYWJsZSB8fCBpdGVyLT5zZWNvbmQgPT0gRUJoUmVxdWlyZSk7Ci19Ci0KLS8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIE5vbi1FcnJvcnMuCi0vLwotLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCi0KLS8vCi0vLyBMb29rIHVwIGEgZnVuY3Rpb24gbmFtZSBpbiB0aGUg
c3ltYm9sIHRhYmxlLCBhbmQgbWFrZSBzdXJlIGl0IGlzIGEgZnVuY3Rpb24uCi0vLwotLy8gUmV0
dXJuIHRoZSBmdW5jdGlvbiBzeW1ib2wgaWYgZm91bmQsIG90aGVyd2lzZSAwLgotLy8KLWNvbnN0
IFRGdW5jdGlvbiogVFBhcnNlQ29udGV4dDo6ZmluZEZ1bmN0aW9uKGNvbnN0IFRTb3VyY2VMb2Mm
IGxpbmUsIFRGdW5jdGlvbiogY2FsbCwgYm9vbCAqYnVpbHRJbikKLXsKLSAgICAvLyBGaXJzdCBm
aW5kIGJ5IHVubWFuZ2xlZCBuYW1lIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGZ1bmN0aW9uIG5hbWUg
aGFzIGJlZW4KLSAgICAvLyBoaWRkZW4gYnkgYSB2YXJpYWJsZSBuYW1lIG9yIHN0cnVjdCB0eXBl
bmFtZS4KLSAgICAvLyBJZiBhIGZ1bmN0aW9uIGlzIGZvdW5kLCBjaGVjayBmb3Igb25lIHdpdGgg
YSBtYXRjaGluZyBhcmd1bWVudCBsaXN0LgotICAgIGNvbnN0IFRTeW1ib2wqIHN5bWJvbCA9IHN5
bWJvbFRhYmxlLmZpbmQoY2FsbC0+Z2V0TmFtZSgpLCBidWlsdEluKTsKLSAgICBpZiAoc3ltYm9s
ID09IDAgfHwgc3ltYm9sLT5pc0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgc3ltYm9sID0gc3ltYm9s
VGFibGUuZmluZChjYWxsLT5nZXRNYW5nbGVkTmFtZSgpLCBidWlsdEluKTsKLSAgICB9Ci0KLSAg
ICBpZiAoc3ltYm9sID09IDApIHsKLSAgICAgICAgZXJyb3IobGluZSwgIm5vIG1hdGNoaW5nIG92
ZXJsb2FkZWQgZnVuY3Rpb24gZm91bmQiLCBjYWxsLT5nZXROYW1lKCkuY19zdHIoKSk7Ci0gICAg
ICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlmICghc3ltYm9sLT5pc0Z1bmN0aW9uKCkpIHsK
LSAgICAgICAgZXJyb3IobGluZSwgImZ1bmN0aW9uIG5hbWUgZXhwZWN0ZWQiLCBjYWxsLT5nZXRO
YW1lKCkuY19zdHIoKSk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBURnVuY3Rpb24qPihzeW1ib2wpOwotfQotCi0vLwotLy8gSW5pdGlh
bGl6ZXJzIHNob3cgdXAgaW4gc2V2ZXJhbCBwbGFjZXMgaW4gdGhlIGdyYW1tYXIuICBIYXZlIG9u
ZSBzZXQgb2YKLS8vIGNvZGUgdG8gaGFuZGxlIHRoZW0gaGVyZS4KLS8vCi1ib29sIFRQYXJzZUNv
bnRleHQ6OmV4ZWN1dGVJbml0aWFsaXplcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5n
JiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgcFR5cGUsIAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbml0aWFsaXplciwgVEludGVybU5vZGUq
JiBpbnRlcm1Ob2RlLCBUVmFyaWFibGUqIHZhcmlhYmxlKQotewotICAgIFRUeXBlIHR5cGUgPSBU
VHlwZShwVHlwZSk7Ci0KLSAgICBpZiAodmFyaWFibGUgPT0gMCkgewotICAgICAgICBpZiAocmVz
ZXJ2ZWRFcnJvckNoZWNrKGxpbmUsIGlkZW50aWZpZXIpKQotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KLSAgICAgICAgaWYgKHZvaWRFcnJvckNoZWNrKGxpbmUsIGlkZW50aWZpZXIsIHBUeXBl
KSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIC8vCi0gICAgICAgIC8vIGFk
ZCB2YXJpYWJsZSB0byBzeW1ib2wgdGFibGUKLSAgICAgICAgLy8KLSAgICAgICAgdmFyaWFibGUg
PSBuZXcgVFZhcmlhYmxlKCZpZGVudGlmaWVyLCB0eXBlKTsKLSAgICAgICAgaWYgKCEgc3ltYm9s
VGFibGUuaW5zZXJ0KCp2YXJpYWJsZSkpIHsKLSAgICAgICAgICAgIGVycm9yKGxpbmUsICJyZWRl
ZmluaXRpb24iLCB2YXJpYWJsZS0+Z2V0TmFtZSgpLmNfc3RyKCkpOwotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgICAgICAvLyBkb24ndCBkZWxldGUgdmFyaWFibGUsIGl0J3MgdXNl
ZCBieSBlcnJvciByZWNvdmVyeSwgYW5kIHRoZSBwb29sIAotICAgICAgICAgICAgLy8gcG9wIHdp
bGwgdGFrZSBjYXJlIG9mIHRoZSBtZW1vcnkKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vCi0g
ICAgLy8gaWRlbnRpZmllciBtdXN0IGJlIG9mIHR5cGUgY29uc3RhbnQsIGEgZ2xvYmFsLCBvciBh
IHRlbXBvcmFyeQotICAgIC8vCi0gICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSB2YXJpYWJsZS0+
Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpOwotICAgIGlmICgocXVhbGlmaWVyICE9IEV2cVRlbXBv
cmFyeSkgJiYgKHF1YWxpZmllciAhPSBFdnFHbG9iYWwpICYmIChxdWFsaWZpZXIgIT0gRXZxQ29u
c3QpKSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICIgY2Fubm90IGluaXRpYWxpemUgdGhpcyB0eXBl
IG9mIHF1YWxpZmllciAiLCB2YXJpYWJsZS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllclN0cmluZygp
KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIC8vCi0gICAgLy8gdGVzdCBmb3Ig
YW5kIHByb3BhZ2F0ZSBjb25zdGFudAotICAgIC8vCi0KLSAgICBpZiAocXVhbGlmaWVyID09IEV2
cUNvbnN0KSB7Ci0gICAgICAgIGlmIChxdWFsaWZpZXIgIT0gaW5pdGlhbGl6ZXItPmdldFR5cGUo
KS5nZXRRdWFsaWZpZXIoKSkgewotICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJ
bmZvU3RyZWFtOwotICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICInIiA8PCB2YXJpYWJs
ZS0+Z2V0VHlwZSgpLmdldENvbXBsZXRlU3RyaW5nKCkgPDwgIiciOwotICAgICAgICAgICAgc3Rk
OjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwotICAgICAgICAgICAg
ZXJyb3IobGluZSwgIiBhc3NpZ25pbmcgbm9uLWNvbnN0YW50IHRvIiwgIj0iLCBleHRyYUluZm8u
Y19zdHIoKSk7Ci0gICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLnNldFF1YWxpZmllcihF
dnFUZW1wb3JhcnkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKHR5cGUgIT0gaW5pdGlhbGl6ZXItPmdldFR5cGUoKSkgewotICAgICAgICAgICAgZXJy
b3IobGluZSwgIiBub24tbWF0Y2hpbmcgdHlwZXMgZm9yIGNvbnN0IGluaXRpYWxpemVyICIsIAot
ICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyU3RyaW5nKCkp
OwotICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKS5zZXRRdWFsaWZpZXIoRXZxVGVtcG9y
YXJ5KTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChp
bml0aWFsaXplci0+Z2V0QXNDb25zdGFudFVuaW9uKCkpIHsgCi0gICAgICAgICAgICB2YXJpYWJs
ZS0+c2hhcmVDb25zdFBvaW50ZXIoaW5pdGlhbGl6ZXItPmdldEFzQ29uc3RhbnRVbmlvbigpLT5n
ZXRVbmlvbkFycmF5UG9pbnRlcigpKTsKLSAgICAgICAgfSBlbHNlIGlmIChpbml0aWFsaXplci0+
Z2V0QXNTeW1ib2xOb2RlKCkpIHsKLSAgICAgICAgICAgIGNvbnN0IFRTeW1ib2wqIHN5bWJvbCA9
IHN5bWJvbFRhYmxlLmZpbmQoaW5pdGlhbGl6ZXItPmdldEFzU3ltYm9sTm9kZSgpLT5nZXRTeW1i
b2woKSk7Ci0gICAgICAgICAgICBjb25zdCBUVmFyaWFibGUqIHRWYXIgPSBzdGF0aWNfY2FzdDxj
b25zdCBUVmFyaWFibGUqPihzeW1ib2wpOwotCi0gICAgICAgICAgICBDb25zdGFudFVuaW9uKiBj
b25zdEFycmF5ID0gdFZhci0+Z2V0Q29uc3RQb2ludGVyKCk7Ci0gICAgICAgICAgICB2YXJpYWJs
ZS0+c2hhcmVDb25zdFBvaW50ZXIoY29uc3RBcnJheSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07Ci0gICAgICAgICAgICBl
eHRyYUluZm9TdHJlYW0gPDwgIiciIDw8IHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0Q29tcGxldGVT
dHJpbmcoKSA8PCAiJyI7Ci0gICAgICAgICAgICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRy
YUluZm9TdHJlYW0uc3RyKCk7Ci0gICAgICAgICAgICBlcnJvcihsaW5lLCAiIGNhbm5vdCBhc3Np
Z24gdG8iLCAiPSIsIGV4dHJhSW5mby5jX3N0cigpKTsKLSAgICAgICAgICAgIHZhcmlhYmxlLT5n
ZXRUeXBlKCkuc2V0UXVhbGlmaWVyKEV2cVRlbXBvcmFyeSk7Ci0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLSAKLSAgICBpZiAocXVhbGlmaWVyICE9IEV2cUNvbnN0
KSB7Ci0gICAgICAgIFRJbnRlcm1TeW1ib2wqIGludGVybVN5bWJvbCA9IGludGVybWVkaWF0ZS5h
ZGRTeW1ib2wodmFyaWFibGUtPmdldFVuaXF1ZUlkKCksIHZhcmlhYmxlLT5nZXROYW1lKCksIHZh
cmlhYmxlLT5nZXRUeXBlKCksIGxpbmUpOwotICAgICAgICBpbnRlcm1Ob2RlID0gaW50ZXJtZWRp
YXRlLmFkZEFzc2lnbihFT3BJbml0aWFsaXplLCBpbnRlcm1TeW1ib2wsIGluaXRpYWxpemVyLCBs
aW5lKTsKLSAgICAgICAgaWYgKGludGVybU5vZGUgPT0gMCkgewotICAgICAgICAgICAgYXNzaWdu
RXJyb3IobGluZSwgIj0iLCBpbnRlcm1TeW1ib2wtPmdldENvbXBsZXRlU3RyaW5nKCksIGluaXRp
YWxpemVyLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9Ci0gICAgfSBlbHNlIAotICAgICAgICBpbnRlcm1Ob2RlID0gMDsKLQotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotYm9vbCBUUGFyc2VDb250ZXh0OjphcmVBbGxDaGlsZENvbnN0KFRJ
bnRlcm1BZ2dyZWdhdGUqIGFnZ3JOb2RlKQotewotICAgIEFTU0VSVChhZ2dyTm9kZSAhPSBOVUxM
KTsKLSAgICBpZiAoIWFnZ3JOb2RlLT5pc0NvbnN0cnVjdG9yKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGJvb2wgYWxsQ29uc3RhbnQgPSB0cnVlOwotCi0gICAgLy8gY2hlY2sgaWYg
YWxsIHRoZSBjaGlsZCBub2RlcyBhcmUgY29uc3RhbnRzIHNvIHRoYXQgdGhleSBjYW4gYmUgaW5z
ZXJ0ZWQgaW50byAKLSAgICAvLyB0aGUgcGFyZW50IG5vZGUKLSAgICBUSW50ZXJtU2VxdWVuY2Ug
JnNlcXVlbmNlID0gYWdnck5vZGUtPmdldFNlcXVlbmNlKCkgOwotICAgIGZvciAoVEludGVybVNl
cXVlbmNlOjppdGVyYXRvciBwID0gc2VxdWVuY2UuYmVnaW4oKTsgcCAhPSBzZXF1ZW5jZS5lbmQo
KTsgKytwKSB7Ci0gICAgICAgIGlmICghKCpwKS0+Z2V0QXNUeXBlZCgpLT5nZXRBc0NvbnN0YW50
VW5pb24oKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
YWxsQ29uc3RhbnQ7Ci19Ci0KLS8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byB0ZXN0IGZvciB0
aGUgY29ycmVjdG5lc3Mgb2YgdGhlIHBhcmFtZXRlcnMgcGFzc2VkIHRvIHZhcmlvdXMgY29uc3Ry
dWN0b3IgZnVuY3Rpb25zCi0vLyBhbmQgYWxzbyBjb252ZXJ0IHRoZW0gdG8gdGhlIHJpZ2h0IGRh
dGF0eXBlIGlmIGl0IGlzIGFsbG93ZWQgYW5kIHJlcXVpcmVkLiAKLS8vCi0vLyBSZXR1cm5zIDAg
Zm9yIGFuIGVycm9yIG9yIHRoZSBjb25zdHJ1Y3RlZCBub2RlIChhZ2dyZWdhdGUgb3IgdHlwZWQp
IGZvciBubyBlcnJvci4KLS8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0
cnVjdG9yKFRJbnRlcm1Ob2RlKiBub2RlLCBjb25zdCBUVHlwZSogdHlwZSwgVE9wZXJhdG9yIG9w
LCBURnVuY3Rpb24qIGZuQ2FsbCwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKLXsKLSAgICBpZiAo
bm9kZSA9PSAwKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFRJbnRlcm1BZ2dyZWdhdGUqIGFn
Z3JOb2RlID0gbm9kZS0+Z2V0QXNBZ2dyZWdhdGUoKTsKLSAgICAKLSAgICBURmllbGRMaXN0Ojpj
b25zdF9pdGVyYXRvciBtZW1iZXJGaWVsZHM7Ci0gICAgaWYgKG9wID09IEVPcENvbnN0cnVjdFN0
cnVjdCkKLSAgICAgICAgbWVtYmVyRmllbGRzID0gdHlwZS0+Z2V0U3RydWN0KCktPmZpZWxkcygp
LmJlZ2luKCk7Ci0gICAgCi0gICAgVFR5cGUgZWxlbWVudFR5cGUgPSAqdHlwZTsKLSAgICBpZiAo
dHlwZS0+aXNBcnJheSgpKQotICAgICAgICBlbGVtZW50VHlwZS5jbGVhckFycmF5bmVzcygpOwot
Ci0gICAgYm9vbCBzaW5nbGVBcmc7Ci0gICAgaWYgKGFnZ3JOb2RlKSB7Ci0gICAgICAgIGlmIChh
Z2dyTm9kZS0+Z2V0T3AoKSAhPSBFT3BOdWxsIHx8IGFnZ3JOb2RlLT5nZXRTZXF1ZW5jZSgpLnNp
emUoKSA9PSAxKQotICAgICAgICAgICAgc2luZ2xlQXJnID0gdHJ1ZTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgc2luZ2xlQXJnID0gZmFsc2U7Ci0gICAgfSBlbHNlCi0gICAgICAgIHNpbmds
ZUFyZyA9IHRydWU7Ci0KLSAgICBUSW50ZXJtVHlwZWQgKm5ld05vZGU7Ci0gICAgaWYgKHNpbmds
ZUFyZykgewotICAgICAgICAvLyBJZiBzdHJ1Y3R1cmUgY29uc3RydWN0b3Igb3IgYXJyYXkgY29u
c3RydWN0b3IgaXMgYmVpbmcgY2FsbGVkIAotICAgICAgICAvLyBmb3Igb25seSBvbmUgcGFyYW1l
dGVyIGluc2lkZSB0aGUgc3RydWN0dXJlLCB3ZSBuZWVkIHRvIGNhbGwgY29uc3RydWN0U3RydWN0
IGZ1bmN0aW9uIG9uY2UuCi0gICAgICAgIGlmICh0eXBlLT5pc0FycmF5KCkpCi0gICAgICAgICAg
ICBuZXdOb2RlID0gY29uc3RydWN0U3RydWN0KG5vZGUsICZlbGVtZW50VHlwZSwgMSwgbm9kZS0+
Z2V0TGluZSgpLCBmYWxzZSk7Ci0gICAgICAgIGVsc2UgaWYgKG9wID09IEVPcENvbnN0cnVjdFN0
cnVjdCkKLSAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qobm9kZSwgKCptZW1i
ZXJGaWVsZHMpLT50eXBlKCksIDEsIG5vZGUtPmdldExpbmUoKSwgZmFsc2UpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBuZXdOb2RlID0gY29uc3RydWN0QnVpbHRJbih0eXBlLCBvcCwgbm9k
ZSwgbm9kZS0+Z2V0TGluZSgpLCBmYWxzZSk7Ci0KLSAgICAgICAgaWYgKG5ld05vZGUgJiYgbmV3
Tm9kZS0+Z2V0QXNBZ2dyZWdhdGUoKSkgewotICAgICAgICAgICAgVEludGVybVR5cGVkKiBjb25z
dENvbnN0cnVjdG9yID0gZm9sZENvbnN0Q29uc3RydWN0b3IobmV3Tm9kZS0+Z2V0QXNBZ2dyZWdh
dGUoKSwgKnR5cGUpOwotICAgICAgICAgICAgaWYgKGNvbnN0Q29uc3RydWN0b3IpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGNvbnN0Q29uc3RydWN0b3I7Ci0gICAgICAgIH0KLQotICAgICAgICBy
ZXR1cm4gbmV3Tm9kZTsKLSAgICB9Ci0gICAgCi0gICAgLy8KLSAgICAvLyBIYW5kbGUgbGlzdCBv
ZiBhcmd1bWVudHMuCi0gICAgLy8KLSAgICBUSW50ZXJtU2VxdWVuY2UgJnNlcXVlbmNlVmVjdG9y
ID0gYWdnck5vZGUtPmdldFNlcXVlbmNlKCkgOyAgICAvLyBTdG9yZXMgdGhlIGluZm9ybWF0aW9u
IGFib3V0IHRoZSBwYXJhbWV0ZXIgdG8gdGhlIGNvbnN0cnVjdG9yCi0gICAgLy8gaWYgdGhlIHN0
cnVjdHVyZSBjb25zdHJ1Y3RvciBjb250YWlucyBtb3JlIHRoYW4gb25lIHBhcmFtZXRlciwgdGhl
biBjb25zdHJ1Y3QKLSAgICAvLyBlYWNoIHBhcmFtZXRlcgotICAgIAotICAgIGludCBwYXJhbUNv
dW50ID0gMDsgIC8vIGtlZXBzIGEgdHJhY2sgb2YgdGhlIGNvbnN0cnVjdG9yIHBhcmFtZXRlciBu
dW1iZXIgYmVpbmcgY2hlY2tlZCAgICAKLSAgICAKLSAgICAvLyBmb3IgZWFjaCBwYXJhbWV0ZXIg
dG8gdGhlIGNvbnN0cnVjdG9yIGNhbGwsIGNoZWNrIHRvIHNlZSBpZiB0aGUgcmlnaHQgdHlwZSBp
cyBwYXNzZWQgb3IgY29udmVydCB0aGVtIAotICAgIC8vIHRvIHRoZSByaWdodCB0eXBlIGlmIHBv
c3NpYmxlIChhbmQgYWxsb3dlZCkuCi0gICAgLy8gZm9yIHN0cnVjdHVyZSBjb25zdHJ1Y3RvcnMs
IGp1c3QgY2hlY2sgaWYgdGhlIHJpZ2h0IHR5cGUgaXMgcGFzc2VkLCBubyBjb252ZXJzaW9uIGlz
IGFsbG93ZWQuCi0gICAgCi0gICAgZm9yIChUSW50ZXJtU2VxdWVuY2U6Oml0ZXJhdG9yIHAgPSBz
ZXF1ZW5jZVZlY3Rvci5iZWdpbigpOyAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcCAhPSBzZXF1ZW5jZVZlY3Rvci5lbmQoKTsgcCsrLCBwYXJhbUNvdW50KyspIHsKLSAgICAg
ICAgaWYgKHR5cGUtPmlzQXJyYXkoKSkKLSAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RT
dHJ1Y3QoKnAsICZlbGVtZW50VHlwZSwgcGFyYW1Db3VudCsxLCBub2RlLT5nZXRMaW5lKCksIHRy
dWUpOwotICAgICAgICBlbHNlIGlmIChvcCA9PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QpCi0gICAgICAg
ICAgICBuZXdOb2RlID0gY29uc3RydWN0U3RydWN0KCpwLCBtZW1iZXJGaWVsZHNbcGFyYW1Db3Vu
dF0tPnR5cGUoKSwgcGFyYW1Db3VudCsxLCBub2RlLT5nZXRMaW5lKCksIHRydWUpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBuZXdOb2RlID0gY29uc3RydWN0QnVpbHRJbih0eXBlLCBvcCwg
KnAsIG5vZGUtPmdldExpbmUoKSwgdHJ1ZSk7Ci0gICAgICAgIAotICAgICAgICBpZiAobmV3Tm9k
ZSkgewotICAgICAgICAgICAgKnAgPSBuZXdOb2RlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
VEludGVybVR5cGVkKiBjb25zdHJ1Y3RvciA9IGludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVy
YXRvcihhZ2dyTm9kZSwgb3AsIGxpbmUpOwotICAgIFRJbnRlcm1UeXBlZCogY29uc3RDb25zdHJ1
Y3RvciA9IGZvbGRDb25zdENvbnN0cnVjdG9yKGNvbnN0cnVjdG9yLT5nZXRBc0FnZ3JlZ2F0ZSgp
LCAqdHlwZSk7Ci0gICAgaWYgKGNvbnN0Q29uc3RydWN0b3IpCi0gICAgICAgIHJldHVybiBjb25z
dENvbnN0cnVjdG9yOwotCi0gICAgcmV0dXJuIGNvbnN0cnVjdG9yOwotfQotCi1USW50ZXJtVHlw
ZWQqIFRQYXJzZUNvbnRleHQ6OmZvbGRDb25zdENvbnN0cnVjdG9yKFRJbnRlcm1BZ2dyZWdhdGUq
IGFnZ3JOb2RlLCBjb25zdCBUVHlwZSYgdHlwZSkKLXsKLSAgICBib29sIGNhbkJlRm9sZGVkID0g
YXJlQWxsQ2hpbGRDb25zdChhZ2dyTm9kZSk7Ci0gICAgYWdnck5vZGUtPnNldFR5cGUodHlwZSk7
Ci0gICAgaWYgKGNhbkJlRm9sZGVkKSB7Ci0gICAgICAgIGJvb2wgcmV0dXJuVmFsID0gZmFsc2U7
Ci0gICAgICAgIENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblt0
eXBlLmdldE9iamVjdFNpemUoKV07Ci0gICAgICAgIGlmIChhZ2dyTm9kZS0+Z2V0U2VxdWVuY2Uo
KS5zaXplKCkgPT0gMSkgIHsKLSAgICAgICAgICAgIHJldHVyblZhbCA9IGludGVybWVkaWF0ZS5w
YXJzZUNvbnN0VHJlZShhZ2dyTm9kZS0+Z2V0TGluZSgpLCBhZ2dyTm9kZSwgdW5pb25BcnJheSwg
YWdnck5vZGUtPmdldE9wKCksIHN5bWJvbFRhYmxlLCAgdHlwZSwgdHJ1ZSk7Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm5WYWwgPSBpbnRlcm1lZGlhdGUucGFy
c2VDb25zdFRyZWUoYWdnck5vZGUtPmdldExpbmUoKSwgYWdnck5vZGUsIHVuaW9uQXJyYXksIGFn
Z3JOb2RlLT5nZXRPcCgpLCBzeW1ib2xUYWJsZSwgIHR5cGUpOwotICAgICAgICB9Ci0gICAgICAg
IGlmIChyZXR1cm5WYWwpCi0gICAgICAgICAgICByZXR1cm4gMDsKLQotICAgICAgICByZXR1cm4g
aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgdHlwZSwgYWdnck5vZGUt
PmdldExpbmUoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLS8vIEZ1bmN0aW9uIGZv
ciBjb25zdHJ1Y3RvciBpbXBsZW1lbnRhdGlvbi4gQ2FsbHMgYWRkVW5hcnlNYXRoIHdpdGggYXBw
cm9wcmlhdGUgRU9wIHZhbHVlCi0vLyBmb3IgdGhlIHBhcmFtZXRlciB0byB0aGUgY29uc3RydWN0
b3IgKHBhc3NlZCB0byB0aGlzIGZ1bmN0aW9uKS4gRXNzZW50aWFsbHksIGl0IGNvbnZlcnRzCi0v
LyB0aGUgcGFyYW1ldGVyIHR5cGVzIGNvcnJlY3RseS4gSWYgYSBjb25zdHJ1Y3RvciBleHBlY3Rz
IGFuIGludCAobGlrZSBpdmVjMikgYW5kIGlzIHBhc3NlZCBhIAotLy8gZmxvYXQsIHRoZW4gZmxv
YXQgaXMgY29udmVydGVkIHRvIGludC4KLS8vCi0vLyBSZXR1cm5zIDAgZm9yIGFuIGVycm9yIG9y
IHRoZSBjb25zdHJ1Y3RlZCBub2RlLgotLy8KLVRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6
Y29uc3RydWN0QnVpbHRJbihjb25zdCBUVHlwZSogdHlwZSwgVE9wZXJhdG9yIG9wLCBUSW50ZXJt
Tm9kZSogbm9kZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgYm9vbCBzdWJzZXQpCi17Ci0gICAg
VEludGVybVR5cGVkKiBuZXdOb2RlOwotICAgIFRPcGVyYXRvciBiYXNpY09wOwotCi0gICAgLy8K
LSAgICAvLyBGaXJzdCwgY29udmVydCB0eXBlcyBhcyBuZWVkZWQuCi0gICAgLy8KLSAgICBzd2l0
Y2ggKG9wKSB7Ci0gICAgY2FzZSBFT3BDb25zdHJ1Y3RWZWMyOgotICAgIGNhc2UgRU9wQ29uc3Ry
dWN0VmVjMzoKLSAgICBjYXNlIEVPcENvbnN0cnVjdFZlYzQ6Ci0gICAgY2FzZSBFT3BDb25zdHJ1
Y3RNYXQyOgotICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0MzoKLSAgICBjYXNlIEVPcENvbnN0cnVj
dE1hdDQ6Ci0gICAgY2FzZSBFT3BDb25zdHJ1Y3RGbG9hdDoKLSAgICAgICAgYmFzaWNPcCA9IEVP
cENvbnN0cnVjdEZsb2F0OwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRU9wQ29uc3RydWN0
SVZlYzI6Ci0gICAgY2FzZSBFT3BDb25zdHJ1Y3RJVmVjMzoKLSAgICBjYXNlIEVPcENvbnN0cnVj
dElWZWM0OgotICAgIGNhc2UgRU9wQ29uc3RydWN0SW50OgotICAgICAgICBiYXNpY09wID0gRU9w
Q29uc3RydWN0SW50OwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRU9wQ29uc3RydWN0QlZl
YzI6Ci0gICAgY2FzZSBFT3BDb25zdHJ1Y3RCVmVjMzoKLSAgICBjYXNlIEVPcENvbnN0cnVjdEJW
ZWM0OgotICAgIGNhc2UgRU9wQ29uc3RydWN0Qm9vbDoKLSAgICAgICAgYmFzaWNPcCA9IEVPcENv
bnN0cnVjdEJvb2w7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgZXJy
b3IobGluZSwgInVuc3VwcG9ydGVkIGNvbnN0cnVjdGlvbiIsICIiKTsKLSAgICAgICAgcmVjb3Zl
cigpOwotCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBuZXdOb2RlID0gaW50ZXJtZWRp
YXRlLmFkZFVuYXJ5TWF0aChiYXNpY09wLCBub2RlLCBub2RlLT5nZXRMaW5lKCksIHN5bWJvbFRh
YmxlKTsKLSAgICBpZiAobmV3Tm9kZSA9PSAwKSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJjYW4n
dCBjb252ZXJ0IiwgImNvbnN0cnVjdG9yIik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQot
ICAgIC8vCi0gICAgLy8gTm93LCBpZiB0aGVyZSBzdGlsbCBpc24ndCBhbiBvcGVyYXRpb24gdG8g
ZG8gdGhlIGNvbnN0cnVjdGlvbiwgYW5kIHdlIG5lZWQgb25lLCBhZGQgb25lLgotICAgIC8vCi0g
ICAgCi0gICAgLy8gT3RoZXJ3aXNlLCBza2lwIG91dCBlYXJseS4KLSAgICBpZiAoc3Vic2V0IHx8
IChuZXdOb2RlICE9IG5vZGUgJiYgbmV3Tm9kZS0+Z2V0VHlwZSgpID09ICp0eXBlKSkKLSAgICAg
ICAgcmV0dXJuIG5ld05vZGU7Ci0KLSAgICAvLyBzZXRBZ2dyZWdhdGVPcGVyYXRvciB3aWxsIGlu
c2VydCBhIG5ldyBub2RlIGZvciB0aGUgY29uc3RydWN0b3IsIGFzIG5lZWRlZC4KLSAgICByZXR1
cm4gaW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKG5ld05vZGUsIG9wLCBsaW5lKTsK
LX0KLQotLy8gVGhpcyBmdW5jdGlvbiB0ZXN0cyBmb3IgdGhlIHR5cGUgb2YgdGhlIHBhcmFtZXRl
cnMgdG8gdGhlIHN0cnVjdHVyZXMgY29uc3RydWN0b3JzLiBSYWlzZXMKLS8vIGFuIGVycm9yIG1l
c3NhZ2UgaWYgdGhlIGV4cGVjdGVkIHR5cGUgZG9lcyBub3QgbWF0Y2ggdGhlIHBhcmFtZXRlciBw
YXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yLgotLy8KLS8vIFJldHVybnMgMCBmb3IgYW4gZXJyb3Ig
b3IgdGhlIGlucHV0IG5vZGUgaXRzZWxmIGlmIHRoZSBleHBlY3RlZCBhbmQgdGhlIGdpdmVuIHBh
cmFtZXRlciB0eXBlcyBtYXRjaC4KLS8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmNv
bnN0cnVjdFN0cnVjdChUSW50ZXJtTm9kZSogbm9kZSwgVFR5cGUqIHR5cGUsIGludCBwYXJhbUNv
dW50LCBjb25zdCBUU291cmNlTG9jJiBsaW5lLCBib29sIHN1YnNldCkKLXsKLSAgICBpZiAoKnR5
cGUgPT0gbm9kZS0+Z2V0QXNUeXBlZCgpLT5nZXRUeXBlKCkpIHsKLSAgICAgICAgaWYgKHN1YnNl
dCkKLSAgICAgICAgICAgIHJldHVybiBub2RlLT5nZXRBc1R5cGVkKCk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHJldHVybiBpbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3Iobm9k
ZS0+Z2V0QXNUeXBlZCgpLCBFT3BDb25zdHJ1Y3RTdHJ1Y3QsIGxpbmUpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKLSAgICAgICAgZXh0
cmFJbmZvU3RyZWFtIDw8ICJjYW5ub3QgY29udmVydCBwYXJhbWV0ZXIgIiA8PCBwYXJhbUNvdW50
IAotICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiBmcm9tICciIDw8IG5vZGUtPmdldEFzVHlw
ZWQoKS0+Z2V0VHlwZSgpLmdldEJhc2ljU3RyaW5nKCkKLSAgICAgICAgICAgICAgICAgICAgICAg
IDw8ICInIHRvICciIDw8IHR5cGUtPmdldEJhc2ljU3RyaW5nKCkgPDwgIiciOwotICAgICAgICBz
dGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7Ci0gICAgICAgIGVy
cm9yKGxpbmUsICIiLCAiY29uc3RydWN0b3IiLCBleHRyYUluZm8uY19zdHIoKSk7Ci0gICAgICAg
IHJlY292ZXIoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotLy8KLS8vIFRoaXMgZnVu
Y3Rpb24gcmV0dXJucyB0aGUgdHJlZSByZXByZXNlbnRhdGlvbiBmb3IgdGhlIHZlY3RvciBmaWVs
ZChzKSBiZWluZyBhY2Nlc3NlZCBmcm9tIGNvbnRhbnQgdmVjdG9yLgotLy8gSWYgb25seSBvbmUg
Y29tcG9uZW50IG9mIHZlY3RvciBpcyBhY2Nlc3NlZCAodi54IG9yIHZbMF0gd2hlcmUgdiBpcyBh
IGNvbnRhbnQgdmVjdG9yKSwgdGhlbiBhIGNvbnRhbnQgbm9kZSBpcwotLy8gcmV0dXJuZWQsIGVs
c2UgYW4gYWdncmVnYXRlIG5vZGUgaXMgcmV0dXJuZWQgKGZvciB2Lnh5KS4gVGhlIGlucHV0IHRv
IHRoaXMgZnVuY3Rpb24gY291bGQgZWl0aGVyIGJlIHRoZSBzeW1ib2wKLS8vIG5vZGUgb3IgaXQg
Y291bGQgYmUgdGhlIGludGVybWVkaWF0ZSB0cmVlIHJlcHJlc2VudGF0aW9uIG9mIGFjY2Vzc2lu
ZyBmaWVsZHMgaW4gYSBjb25zdGFudCBzdHJ1Y3R1cmUgb3IgY29sdW1uIG9mIAotLy8gYSBjb25z
dGFudCBtYXRyaXguCi0vLwotVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdFZl
Y3Rvck5vZGUoVFZlY3RvckZpZWxkcyYgZmllbGRzLCBUSW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUpCi17Ci0gICAgVEludGVybVR5cGVkKiB0eXBlZE5vZGU7Ci0gICAg
VEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFudE5vZGUgPSBub2RlLT5nZXRBc0NvbnN0
YW50VW5pb24oKTsKLQotICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXk7Ci0gICAgaWYgKHRl
bXBDb25zdGFudE5vZGUpIHsKLSAgICAgICAgdW5pb25BcnJheSA9IHRlbXBDb25zdGFudE5vZGUt
PmdldFVuaW9uQXJyYXlQb2ludGVyKCk7Ci0KLSAgICAgICAgaWYgKCF1bmlvbkFycmF5KSB7Ci0g
ICAgICAgICAgICByZXR1cm4gbm9kZTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7IC8vIFRoZSBu
b2RlIGhhcyB0byBiZSBlaXRoZXIgYSBzeW1ib2wgbm9kZSBvciBhbiBhZ2dyZWdhdGUgbm9kZSBv
ciBhIHRlbXBDb25zdGFudCBub2RlLCBlbHNlLCBpdHMgYW4gZXJyb3IKLSAgICAgICAgZXJyb3Io
bGluZSwgIkNhbm5vdCBvZmZzZXQgaW50byB0aGUgdmVjdG9yIiwgIkVycm9yIik7Ci0gICAgICAg
IHJlY292ZXIoKTsKLQotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBDb25zdGFudFVu
aW9uKiBjb25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bZmllbGRzLm51bV07Ci0KLSAgICBm
b3IgKGludCBpID0gMDsgaSA8IGZpZWxkcy5udW07IGkrKykgewotICAgICAgICBpZiAoZmllbGRz
Lm9mZnNldHNbaV0gPj0gbm9kZS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkpIHsKLSAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKLSAgICAgICAgICAgIGV4
dHJhSW5mb1N0cmVhbSA8PCAidmVjdG9yIGZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIg
PDwgZmllbGRzLm9mZnNldHNbaV0gPDwgIiciOwotICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0
cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwotICAgICAgICAgICAgZXJyb3IobGluZSwg
IiIsICJbIiwgZXh0cmFJbmZvLmNfc3RyKCkpOwotICAgICAgICAgICAgcmVjb3ZlcigpOwotICAg
ICAgICAgICAgZmllbGRzLm9mZnNldHNbaV0gPSAwOwotICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBjb25zdEFycmF5W2ldID0gdW5pb25BcnJheVtmaWVsZHMub2Zmc2V0c1tpXV07Ci0KLSAg
ICB9IAotICAgIHR5cGVkTm9kZSA9IGludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKGNvbnN0
QXJyYXksIG5vZGUtPmdldFR5cGUoKSwgbGluZSk7Ci0gICAgcmV0dXJuIHR5cGVkTm9kZTsKLX0K
LQotLy8KLS8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgY29sdW1uIGJlaW5nIGFjY2Vzc2Vk
IGZyb20gYSBjb25zdGFudCBtYXRyaXguIFRoZSB2YWx1ZXMgYXJlIHJldHJpZXZlZCBmcm9tCi0v
LyB0aGUgc3ltYm9sIHRhYmxlIGFuZCBwYXJzZS10cmVlIGlzIGJ1aWx0IGZvciBhIHZlY3RvciAo
ZWFjaCBjb2x1bW4gb2YgYSBtYXRyaXggaXMgYSB2ZWN0b3IpLiBUaGUgaW5wdXQgCi0vLyB0byB0
aGUgZnVuY3Rpb24gY291bGQgZWl0aGVyIGJlIGEgc3ltYm9sIG5vZGUgKG1bMF0gd2hlcmUgbSBp
cyBhIGNvbnN0YW50IG1hdHJpeCl0aGF0IHJlcHJlc2VudHMgYSAKLS8vIGNvbnN0YW50IG1hdHJp
eCBvciBpdCBjb3VsZCBiZSB0aGUgdHJlZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgY29uc3RhbnQg
bWF0cml4IChzLm0xWzBdIHdoZXJlIHMgaXMgYSBjb25zdGFudCBzdHJ1Y3R1cmUpCi0vLwotVElu
dGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdE1hdHJpeE5vZGUoaW50IGluZGV4LCBU
SW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCi17Ci0gICAgVEludGVy
bVR5cGVkKiB0eXBlZE5vZGU7Ci0gICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFu
dE5vZGUgPSBub2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKLQotICAgIGlmIChpbmRleCA+PSBu
b2RlLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSkgewotICAgICAgICBzdGQ6OnN0cmluZ3N0
cmVhbSBleHRyYUluZm9TdHJlYW07Ci0gICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAibWF0cml4
IGZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgaW5kZXggPDwgIiciOwotICAgICAg
ICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7Ci0gICAgICAg
IGVycm9yKGxpbmUsICIiLCAiWyIsIGV4dHJhSW5mby5jX3N0cigpKTsKLSAgICAgICAgcmVjb3Zl
cigpOwotICAgICAgICBpbmRleCA9IDA7Ci0gICAgfQotCi0gICAgaWYgKHRlbXBDb25zdGFudE5v
ZGUpIHsKLSAgICAgICAgIENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXkgPSB0ZW1wQ29uc3RhbnRO
b2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOwotICAgICAgICAgaW50IHNpemUgPSB0ZW1wQ29u
c3RhbnROb2RlLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKTsKLSAgICAgICAgIHR5cGVkTm9k
ZSA9IGludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKCZ1bmlvbkFycmF5W3NpemUqaW5kZXhd
LCB0ZW1wQ29uc3RhbnROb2RlLT5nZXRUeXBlKCksIGxpbmUpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGVycm9yKGxpbmUsICJDYW5ub3Qgb2Zmc2V0IGludG8gdGhlIG1hdHJpeCIsICJFcnJvciIp
OwotICAgICAgICByZWNvdmVyKCk7Ci0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAg
cmV0dXJuIHR5cGVkTm9kZTsKLX0KLQotCi0vLwotLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIGFu
IGVsZW1lbnQgb2YgYW4gYXJyYXkgYWNjZXNzZWQgZnJvbSBhIGNvbnN0YW50IGFycmF5LiBUaGUg
dmFsdWVzIGFyZSByZXRyaWV2ZWQgZnJvbQotLy8gdGhlIHN5bWJvbCB0YWJsZSBhbmQgcGFyc2Ut
dHJlZSBpcyBidWlsdCBmb3IgdGhlIHR5cGUgb2YgdGhlIGVsZW1lbnQuIFRoZSBpbnB1dCAKLS8v
IHRvIHRoZSBmdW5jdGlvbiBjb3VsZCBlaXRoZXIgYmUgYSBzeW1ib2wgbm9kZSAoYVswXSB3aGVy
ZSBhIGlzIGEgY29uc3RhbnQgYXJyYXkpdGhhdCByZXByZXNlbnRzIGEgCi0vLyBjb25zdGFudCBh
cnJheSBvciBpdCBjb3VsZCBiZSB0aGUgdHJlZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgY29uc3Rh
bnQgYXJyYXkgKHMuYTFbMF0gd2hlcmUgcyBpcyBhIGNvbnN0YW50IHN0cnVjdHVyZSkKLS8vCi1U
SW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0QXJyYXlOb2RlKGludCBpbmRleCwg
VEludGVybVR5cGVkKiBub2RlLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQotewotICAgIFRJbnRl
cm1UeXBlZCogdHlwZWROb2RlOwotICAgIFRJbnRlcm1Db25zdGFudFVuaW9uKiB0ZW1wQ29uc3Rh
bnROb2RlID0gbm9kZS0+Z2V0QXNDb25zdGFudFVuaW9uKCk7Ci0gICAgVFR5cGUgYXJyYXlFbGVt
ZW50VHlwZSA9IG5vZGUtPmdldFR5cGUoKTsKLSAgICBhcnJheUVsZW1lbnRUeXBlLmNsZWFyQXJy
YXluZXNzKCk7Ci0KLSAgICBpZiAoaW5kZXggPj0gbm9kZS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6
ZSgpKSB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKLSAgICAg
ICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJhcnJheSBmaWVsZCBzZWxlY3Rpb24gb3V0IG9mIHJhbmdl
ICciIDw8IGluZGV4IDw8ICInIjsKLSAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0
cmFJbmZvU3RyZWFtLnN0cigpOwotICAgICAgICBlcnJvcihsaW5lLCAiIiwgIlsiLCBleHRyYUlu
Zm8uY19zdHIoKSk7Ci0gICAgICAgIHJlY292ZXIoKTsKLSAgICAgICAgaW5kZXggPSAwOwotICAg
IH0KLQotICAgIGlmICh0ZW1wQ29uc3RhbnROb2RlKSB7Ci0gICAgICAgICBzaXplX3QgYXJyYXlF
bGVtZW50U2l6ZSA9IGFycmF5RWxlbWVudFR5cGUuZ2V0T2JqZWN0U2l6ZSgpOwotICAgICAgICAg
Q29uc3RhbnRVbmlvbiogdW5pb25BcnJheSA9IHRlbXBDb25zdGFudE5vZGUtPmdldFVuaW9uQXJy
YXlQb2ludGVyKCk7Ci0gICAgICAgICB0eXBlZE5vZGUgPSBpbnRlcm1lZGlhdGUuYWRkQ29uc3Rh
bnRVbmlvbigmdW5pb25BcnJheVthcnJheUVsZW1lbnRTaXplICogaW5kZXhdLCB0ZW1wQ29uc3Rh
bnROb2RlLT5nZXRUeXBlKCksIGxpbmUpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGVycm9yKGxp
bmUsICJDYW5ub3Qgb2Zmc2V0IGludG8gdGhlIGFycmF5IiwgIkVycm9yIik7Ci0gICAgICAgIHJl
Y292ZXIoKTsKLQotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHlwZWRO
b2RlOwotfQotCi0KLS8vCi0vLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHZhbHVlIG9mIGEg
cGFydGljdWxhciBmaWVsZCBpbnNpZGUgYSBjb25zdGFudCBzdHJ1Y3R1cmUgZnJvbSB0aGUgc3lt
Ym9sIHRhYmxlLiAKLS8vIElmIHRoZXJlIGlzIGFuIGVtYmVkZGVkL25lc3RlZCBzdHJ1Y3QsIGl0
IGFwcHJvcHJpYXRlbHkgY2FsbHMgYWRkQ29uc3RTdHJ1Y3ROZXN0ZWQgb3IgYWRkQ29uc3RTdHJ1
Y3RGcm9tQWdncgotLy8gZnVuY3Rpb24gYW5kIHJldHVybnMgdGhlIHBhcnNlLXRyZWUgd2l0aCB0
aGUgdmFsdWVzIG9mIHRoZSBlbWJlZGRlZC9uZXN0ZWQgc3RydWN0LgotLy8KLVRJbnRlcm1UeXBl
ZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RTdHJ1Y3QoVFN0cmluZyYgaWRlbnRpZmllciwgVElu
dGVybVR5cGVkKiBub2RlLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQotewotICAgIGNvbnN0IFRG
aWVsZExpc3QmIGZpZWxkcyA9IG5vZGUtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7
Ci0KLSAgICBzaXplX3QgaW5zdGFuY2VTaXplID0gMDsKLSAgICBmb3IgKHNpemVfdCBpbmRleCA9
IDA7IGluZGV4IDwgZmllbGRzLnNpemUoKTsgKytpbmRleCkgewotICAgICAgICBpZiAoZmllbGRz
W2luZGV4XS0+bmFtZSgpID09IGlkZW50aWZpZXIpIHsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgaW5zdGFuY2VTaXplICs9IGZpZWxkc1tpbmRleF0t
PnR5cGUoKS0+Z2V0T2JqZWN0U2l6ZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgVEludGVy
bVR5cGVkKiB0eXBlZE5vZGUgPSAwOwotICAgIFRJbnRlcm1Db25zdGFudFVuaW9uKiB0ZW1wQ29u
c3RhbnROb2RlID0gbm9kZS0+Z2V0QXNDb25zdGFudFVuaW9uKCk7Ci0gICAgaWYgKHRlbXBDb25z
dGFudE5vZGUpIHsKLSAgICAgICAgIENvbnN0YW50VW5pb24qIGNvbnN0QXJyYXkgPSB0ZW1wQ29u
c3RhbnROb2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOwotCi0gICAgICAgICB0eXBlZE5vZGUg
PSBpbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbihjb25zdEFycmF5K2luc3RhbmNlU2l6ZSwg
dGVtcENvbnN0YW50Tm9kZS0+Z2V0VHlwZSgpLCBsaW5lKTsgLy8gdHlwZSB3aWxsIGJlIGNoYW5n
ZWQgaW4gdGhlIGNhbGxpbmcgZnVuY3Rpb24KLSAgICB9IGVsc2UgewotICAgICAgICBlcnJvcihs
aW5lLCAiQ2Fubm90IG9mZnNldCBpbnRvIHRoZSBzdHJ1Y3R1cmUiLCAiRXJyb3IiKTsKLSAgICAg
ICAgcmVjb3ZlcigpOwotCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIHJldHVybiB0
eXBlZE5vZGU7Ci19Ci0KLWJvb2wgVFBhcnNlQ29udGV4dDo6ZW50ZXJTdHJ1Y3REZWNsYXJhdGlv
bihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVudGlmaWVyKQotewot
ICAgICsrc3RydWN0TmVzdGluZ0xldmVsOwotCi0gICAgLy8gRW1iZWRkZWQgc3RydWN0dXJlIGRl
ZmluaXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIHBlciBHTFNMIEVTIHNwZWMuCi0gICAgLy8gVGhl
eSBhcmVuJ3QgYWxsb3dlZCBpbiBHTFNMIGVpdGhlciwgYnV0IHdlIG5lZWQgdG8gZGV0ZWN0IHRo
aXMgaGVyZQotICAgIC8vIHNvIHdlIGRvbid0IHJlbHkgb24gdGhlIEdMU0wgY29tcGlsZXIgdG8g
Y2F0Y2ggaXQuCi0gICAgaWYgKHN0cnVjdE5lc3RpbmdMZXZlbCA+IDEpIHsKLSAgICAgICAgZXJy
b3IobGluZSwgIiIsICJFbWJlZGRlZCBzdHJ1Y3QgZGVmaW5pdGlvbnMgYXJlIG5vdCBhbGxvd2Vk
Iik7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotdm9pZCBUUGFyc2VDb250ZXh0OjpleGl0U3RydWN0RGVjbGFyYXRpb24oKQotewotICAgIC0t
c3RydWN0TmVzdGluZ0xldmVsOwotfQotCi1uYW1lc3BhY2UgewotCi1jb25zdCBpbnQga1dlYkdM
TWF4U3RydWN0TmVzdGluZyA9IDQ7Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1ib29sIFRQYXJzZUNv
bnRleHQ6OnN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNv
bnN0IFRGaWVsZCYgZmllbGQpCi17Ci0gICAgaWYgKCFpc1dlYkdMQmFzZWRTcGVjKHNoYWRlclNw
ZWMpKSB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoZmllbGQudHlw
ZSgpLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRTdHJ1Y3QpIHsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLQotICAgIC8vIFdlJ3JlIGFscmVhZHkgaW5zaWRlIGEgc3RydWN0dXJlIGRlZmlu
aXRpb24gYXQgdGhpcyBwb2ludCwgc28gYWRkCi0gICAgLy8gb25lIHRvIHRoZSBmaWVsZCdzIHN0
cnVjdCBuZXN0aW5nLgotICAgIGlmICgxICsgZmllbGQudHlwZSgpLT5nZXREZWVwZXN0U3RydWN0
TmVzdGluZygpID4ga1dlYkdMTWF4U3RydWN0TmVzdGluZykgewotICAgICAgICBzdGQ6OnN0cmlu
Z3N0cmVhbSBleHRyYUluZm9TdHJlYW07Ci0gICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiUmVm
ZXJlbmNlIG9mIHN0cnVjdCB0eXBlICIgPDwgZmllbGQubmFtZSgpCi0gICAgICAgICAgICAgICAg
ICAgICAgICA8PCAiIGV4Y2VlZHMgbWF4aW11bSBzdHJ1Y3QgbmVzdGluZyBvZiAiIDw8IGtXZWJH
TE1heFN0cnVjdE5lc3Rpbmc7Ci0gICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJh
SW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAgZXJyb3IobGluZSwgIiIsICIiLCBleHRyYUluZm8u
Y19zdHIoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotLy8KLS8vIFBhcnNlIGFuIGFycmF5IGluZGV4IGV4cHJlc3Npb24KLS8vCi1USW50
ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZEluZGV4RXhwcmVzc2lvbihUSW50ZXJtVHlwZWQg
KmJhc2VFeHByZXNzaW9uLCBjb25zdCBUU291cmNlTG9jJiBsb2NhdGlvbiwgVEludGVybVR5cGVk
ICppbmRleEV4cHJlc3Npb24pCi17Ci0gICAgVEludGVybVR5cGVkICppbmRleGVkRXhwcmVzc2lv
biA9IE5VTEw7Ci0KLSAgICBpZiAoIWJhc2VFeHByZXNzaW9uLT5pc0FycmF5KCkgJiYgIWJhc2VF
eHByZXNzaW9uLT5pc01hdHJpeCgpICYmICFiYXNlRXhwcmVzc2lvbi0+aXNWZWN0b3IoKSkKLSAg
ICB7Ci0gICAgICAgIGlmIChiYXNlRXhwcmVzc2lvbi0+Z2V0QXNTeW1ib2xOb2RlKCkpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBv
ZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZlY3RvciAiLCBiYXNlRXhwcmVzc2lvbi0+Z2V0QXNT
eW1ib2xOb2RlKCktPmdldFN5bWJvbCgpLmNfc3RyKCkpOwotICAgICAgICB9Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgewotICAgICAgICAgICAgZXJyb3IobG9jYXRpb24sICIgbGVmdCBvZiAnWycg
aXMgbm90IG9mIHR5cGUgYXJyYXksIG1hdHJpeCwgb3IgdmVjdG9yICIsICJleHByZXNzaW9uIik7
Ci0gICAgICAgIH0KLSAgICAgICAgcmVjb3ZlcigpOwotICAgIH0KLQotICAgIGlmIChpbmRleEV4
cHJlc3Npb24tPmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KQotICAgIHsKLSAgICAgICAgaW50
IGluZGV4ID0gaW5kZXhFeHByZXNzaW9uLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0SUNvbnN0
KDApOwotICAgICAgICBpZiAoaW5kZXggPCAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6
OnN0cmluZ3N0cmVhbSBpbmZvU3RyZWFtOwotICAgICAgICAgICAgaW5mb1N0cmVhbSA8PCBpbmRl
eDsKLSAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGluZm8gPSBpbmZvU3RyZWFtLnN0cigpOwotICAg
ICAgICAgICAgZXJyb3IobG9jYXRpb24sICJuZWdhdGl2ZSBpbmRleCIsIGluZm8uY19zdHIoKSk7
Ci0gICAgICAgICAgICByZWNvdmVyKCk7Ci0gICAgICAgICAgICBpbmRleCA9IDA7Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKGJhc2VFeHByZXNzaW9uLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkg
PT0gRXZxQ29uc3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChiYXNlRXhwcmVzc2lvbi0+
aXNBcnJheSgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIGNvbnN0YW50IGZv
bGRpbmcgZm9yIGFycmF5cwotICAgICAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0gYWRk
Q29uc3RBcnJheU5vZGUoaW5kZXgsIGJhc2VFeHByZXNzaW9uLCBsb2NhdGlvbik7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNWZWN0b3IoKSkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBjb25zdGFudCBmb2xkaW5nIGZvciB2
ZWN0b3JzCi0gICAgICAgICAgICAgICAgVFZlY3RvckZpZWxkcyBmaWVsZHM7Ci0gICAgICAgICAg
ICAgICAgZmllbGRzLm51bSA9IDE7Ci0gICAgICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbMF0g
PSBpbmRleDsgLy8gbmVlZCB0byBkbyBpdCB0aGlzIHdheSBiZWNhdXNlIHYueHkgc2VuZHMgZmll
bGRzIGludGVnZXIgYXJyYXkKLSAgICAgICAgICAgICAgICBpbmRleGVkRXhwcmVzc2lvbiA9IGFk
ZENvbnN0VmVjdG9yTm9kZShmaWVsZHMsIGJhc2VFeHByZXNzaW9uLCBsb2NhdGlvbik7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNNYXRyaXgo
KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBjb25zdGFudCBmb2xkaW5nIGZv
ciBtYXRyaWNlcwotICAgICAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0gYWRkQ29uc3RN
YXRyaXhOb2RlKGluZGV4LCBiYXNlRXhwcmVzc2lvbiwgbG9jYXRpb24pOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGJh
c2VFeHByZXNzaW9uLT5pc0FycmF5KCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
aWYgKGluZGV4ID49IGJhc2VFeHByZXNzaW9uLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkpCi0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBl
eHRyYUluZm9TdHJlYW07Ci0gICAgICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAi
YXJyYXkgaW5kZXggb3V0IG9mIHJhbmdlICciIDw8IGluZGV4IDw8ICInIjsKLSAgICAgICAgICAg
ICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwot
ICAgICAgICAgICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwgIiIsICJbIiwgZXh0cmFJbmZvLmNf
c3RyKCkpOwotICAgICAgICAgICAgICAgICAgICByZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGluZGV4ID0gYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSAtIDE7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJhc2VFeHByZXNz
aW9uLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFGcmFnRGF0YSAmJiBpbmRleCA+IDAgJiYgIWlzRXh0
ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyIpKQotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgZXJyb3IobG9jYXRpb24sICIiLCAiWyIsICJhcnJheSBpbmRl
eGVzIGZvciBnbF9GcmFnRGF0YSBtdXN0IGJlIHplcm8gd2hlbiBHTF9FWFRfZHJhd19idWZmZXJz
IGlzIGRpc2FibGVkIik7Ci0gICAgICAgICAgICAgICAgICAgIHJlY292ZXIoKTsKLSAgICAgICAg
ICAgICAgICAgICAgaW5kZXggPSAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGVsc2UgaWYgKChiYXNlRXhwcmVzc2lvbi0+aXNWZWN0b3IoKSB8fCBiYXNl
RXhwcmVzc2lvbi0+aXNNYXRyaXgoKSkgJiYgYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXRO
b21pbmFsU2l6ZSgpIDw9IGluZGV4KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0
ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKLSAgICAgICAgICAgICAgICBleHRyYUlu
Zm9TdHJlYW0gPDwgImZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgaW5kZXggPDwg
IiciOwotICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0
cmVhbS5zdHIoKTsKLSAgICAgICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwgIiIsICJbIiwgZXh0
cmFJbmZvLmNfc3RyKCkpOwotICAgICAgICAgICAgICAgIHJlY292ZXIoKTsKLSAgICAgICAgICAg
ICAgICBpbmRleCA9IGJhc2VFeHByZXNzaW9uLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSAt
IDE7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGluZGV4RXhwcmVzc2lvbi0+Z2V0QXND
b25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPnNldElDb25zdChpbmRleCk7
Ci0gICAgICAgICAgICBpbmRleGVkRXhwcmVzc2lvbiA9IGludGVybWVkaWF0ZS5hZGRJbmRleChF
T3BJbmRleERpcmVjdCwgYmFzZUV4cHJlc3Npb24sIGluZGV4RXhwcmVzc2lvbiwgbG9jYXRpb24p
OwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGluZGV4ZWRFeHBy
ZXNzaW9uID0gaW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4SW5kaXJlY3QsIGJhc2VFeHBy
ZXNzaW9uLCBpbmRleEV4cHJlc3Npb24sIGxvY2F0aW9uKTsKLSAgICB9Ci0KLSAgICBpZiAoaW5k
ZXhlZEV4cHJlc3Npb24gPT0gMCkKLSAgICB7Ci0gICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9u
QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKLSAgICAgICAgdW5pb25BcnJheS0+c2V0RkNv
bnN0KDAuMGYpOwotICAgICAgICBpbmRleGVkRXhwcmVzc2lvbiA9IGludGVybWVkaWF0ZS5hZGRD
b25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBIaWdoLCBFdnFDb25z
dCksIGxvY2F0aW9uKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoYmFzZUV4cHJlc3Npb24tPmlzQXJy
YXkoKSkKLSAgICB7Ci0gICAgICAgIGNvbnN0IFRUeXBlICZiYXNlVHlwZSA9IGJhc2VFeHByZXNz
aW9uLT5nZXRUeXBlKCk7Ci0gICAgICAgIGlmIChiYXNlVHlwZS5nZXRTdHJ1Y3QoKSkKLSAgICAg
ICAgewotICAgICAgICAgICAgVFR5cGUgY29weU9mVHlwZShiYXNlVHlwZS5nZXRTdHJ1Y3QoKSk7
Ci0gICAgICAgICAgICBpbmRleGVkRXhwcmVzc2lvbi0+c2V0VHlwZShjb3B5T2ZUeXBlKTsKLSAg
ICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGluZGV4ZWRFeHBy
ZXNzaW9uLT5zZXRUeXBlKFRUeXBlKGJhc2VFeHByZXNzaW9uLT5nZXRCYXNpY1R5cGUoKSwgYmFz
ZUV4cHJlc3Npb24tPmdldFByZWNpc2lvbigpLCBFdnFUZW1wb3JhcnksIGJhc2VFeHByZXNzaW9u
LT5nZXROb21pbmFsU2l6ZSgpLCBiYXNlRXhwcmVzc2lvbi0+aXNNYXRyaXgoKSkpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKGJhc2VFeHByZXNzaW9uLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVy
KCkgPT0gRXZxQ29uc3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9u
LT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwotICAgICAgICB9Ci0g
ICAgfQotICAgIGVsc2UgaWYgKGJhc2VFeHByZXNzaW9uLT5pc01hdHJpeCgpKQotICAgIHsKLSAg
ICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSBiYXNlRXhwcmVzc2lvbi0+Z2V0VHlwZSgpLmdl
dFF1YWxpZmllcigpID09IEV2cUNvbnN0ID8gRXZxQ29uc3QgOiBFdnFUZW1wb3Jhcnk7Ci0gICAg
ICAgIGluZGV4ZWRFeHByZXNzaW9uLT5zZXRUeXBlKFRUeXBlKGJhc2VFeHByZXNzaW9uLT5nZXRC
YXNpY1R5cGUoKSwgYmFzZUV4cHJlc3Npb24tPmdldFByZWNpc2lvbigpLCBxdWFsaWZpZXIsIGJh
c2VFeHByZXNzaW9uLT5nZXROb21pbmFsU2l6ZSgpKSk7Ci0gICAgfQotICAgIGVsc2UgaWYgKGJh
c2VFeHByZXNzaW9uLT5pc1ZlY3RvcigpKQotICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFs
aWZpZXIgPSBiYXNlRXhwcmVzc2lvbi0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNv
bnN0ID8gRXZxQ29uc3QgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgIGluZGV4ZWRFeHByZXNzaW9u
LT5zZXRUeXBlKFRUeXBlKGJhc2VFeHByZXNzaW9uLT5nZXRCYXNpY1R5cGUoKSwgYmFzZUV4cHJl
c3Npb24tPmdldFByZWNpc2lvbigpLCBxdWFsaWZpZXIpKTsKLSAgICB9Ci0gICAgZWxzZQotICAg
IHsKLSAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24tPnNldFR5cGUoYmFzZUV4cHJlc3Npb24tPmdl
dFR5cGUoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGluZGV4ZWRFeHByZXNzaW9uOwotfQotCi0v
LwotLy8gUGFyc2UgYW4gYXJyYXkgb2Ygc3RyaW5ncyB1c2luZyB5eXBhcnNlLgotLy8KLS8vIFJl
dHVybnMgMCBmb3Igc3VjY2Vzcy4KLS8vCi1pbnQgUGFQYXJzZVN0cmluZ3Moc2l6ZV90IGNvdW50
LCBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdLAotICAgICAg
ICAgICAgICAgICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpIHsKLSAgICBpZiAoKGNvdW50ID09
IDApIHx8IChzdHJpbmcgPT0gTlVMTCkpCi0gICAgICAgIHJldHVybiAxOwotCi0gICAgaWYgKGds
c2xhbmdfaW5pdGlhbGl6ZShjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICBpbnQg
ZXJyb3IgPSBnbHNsYW5nX3NjYW4oY291bnQsIHN0cmluZywgbGVuZ3RoLCBjb250ZXh0KTsKLSAg
ICBpZiAoIWVycm9yKQotICAgICAgICBlcnJvciA9IGdsc2xhbmdfcGFyc2UoY29udGV4dCk7Ci0K
LSAgICBnbHNsYW5nX2ZpbmFsaXplKGNvbnRleHQpOwotCi0gICAgcmV0dXJuIChlcnJvciA9PSAw
KSAmJiAoY29udGV4dC0+bnVtRXJyb3JzKCkgPT0gMCkgPyAwIDogMTsKLX0KLQotCi0KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBl
ci5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvUGFyc2VIZWxwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxMzQgKzAsMCBAQAotLy8K
LS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgotLy8KLSNpZm5kZWYgX1BBUlNFUl9IRUxQRVJfSU5DTFVERURfCi0jZGVmaW5l
IF9QQVJTRVJfSEVMUEVSX0lOQ0xVREVEXwotCi0jaW5jbHVkZSAiY29tcGlsZXIvRGlhZ25vc3Rp
Y3MuaCIKLSNpbmNsdWRlICJjb21waWxlci9EaXJlY3RpdmVIYW5kbGVyLmgiCi0jaW5jbHVkZSAi
Y29tcGlsZXIvbG9jYWxpbnRlcm1lZGlhdGUuaCIKLSNpbmNsdWRlICJjb21waWxlci9wcmVwcm9j
ZXNzb3IvUHJlcHJvY2Vzc29yLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvU2hIYW5kbGUuaCIKLSNp
bmNsdWRlICJjb21waWxlci9TeW1ib2xUYWJsZS5oIgotCi1zdHJ1Y3QgVE1hdHJpeEZpZWxkcyB7
Ci0gICAgYm9vbCB3aG9sZVJvdzsKLSAgICBib29sIHdob2xlQ29sOwotICAgIGludCByb3c7Ci0g
ICAgaW50IGNvbDsKLX07Ci0KLS8vCi0vLyBUaGUgZm9sbG93aW5nIGFyZSBleHRyYSB2YXJpYWJs
ZXMgbmVlZGVkIGR1cmluZyBwYXJzaW5nLCBncm91cGVkIHRvZ2V0aGVyIHNvCi0vLyB0aGV5IGNh
biBiZSBwYXNzZWQgdG8gdGhlIHBhcnNlciB3aXRob3V0IG5lZWRpbmcgYSBnbG9iYWwuCi0vLwot
c3RydWN0IFRQYXJzZUNvbnRleHQgewotICAgIFRQYXJzZUNvbnRleHQoVFN5bWJvbFRhYmxlJiBz
eW10LCBURXh0ZW5zaW9uQmVoYXZpb3ImIGV4dCwgVEludGVybWVkaWF0ZSYgaW50ZXJtLCBTaFNo
YWRlclR5cGUgdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsIGludCBvcHRpb25zLCBib29sIGNoZWNr
c1ByZWNFcnJvcnMsIGNvbnN0IGNoYXIqIHNvdXJjZVBhdGgsIFRJbmZvU2luayYgaXMpIDoKLSAg
ICAgICAgICAgIGludGVybWVkaWF0ZShpbnRlcm0pLAotICAgICAgICAgICAgc3ltYm9sVGFibGUo
c3ltdCksCi0gICAgICAgICAgICBzaGFkZXJUeXBlKHR5cGUpLAotICAgICAgICAgICAgc2hhZGVy
U3BlYyhzcGVjKSwKLSAgICAgICAgICAgIGNvbXBpbGVPcHRpb25zKG9wdGlvbnMpLAotICAgICAg
ICAgICAgc291cmNlUGF0aChzb3VyY2VQYXRoKSwKLSAgICAgICAgICAgIHRyZWVSb290KDApLAot
ICAgICAgICAgICAgbG9vcE5lc3RpbmdMZXZlbCgwKSwKLSAgICAgICAgICAgIHN0cnVjdE5lc3Rp
bmdMZXZlbCgwKSwKLSAgICAgICAgICAgIGN1cnJlbnRGdW5jdGlvblR5cGUoTlVMTCksCi0gICAg
ICAgICAgICBmdW5jdGlvblJldHVybnNWYWx1ZShmYWxzZSksCi0gICAgICAgICAgICBjaGVja3NQ
cmVjaXNpb25FcnJvcnMoY2hlY2tzUHJlY0Vycm9ycyksCi0gICAgICAgICAgICBkaWFnbm9zdGlj
cyhpcyksCi0gICAgICAgICAgICBkaXJlY3RpdmVIYW5kbGVyKGV4dCwgZGlhZ25vc3RpY3MpLAot
ICAgICAgICAgICAgcHJlcHJvY2Vzc29yKCZkaWFnbm9zdGljcywgJmRpcmVjdGl2ZUhhbmRsZXIp
LAotICAgICAgICAgICAgc2Nhbm5lcihOVUxMKSB7ICB9Ci0gICAgVEludGVybWVkaWF0ZSYgaW50
ZXJtZWRpYXRlOyAvLyB0byBob2xkIGFuZCBidWlsZCBhIHBhcnNlIHRyZWUKLSAgICBUU3ltYm9s
VGFibGUmIHN5bWJvbFRhYmxlOyAgIC8vIHN5bWJvbCB0YWJsZSB0aGF0IGdvZXMgd2l0aCB0aGUg
bGFuZ3VhZ2UgY3VycmVudGx5IGJlaW5nIHBhcnNlZAotICAgIFNoU2hhZGVyVHlwZSBzaGFkZXJU
eXBlOyAgICAgICAgICAgICAgLy8gdmVydGV4IG9yIGZyYWdtZW50IGxhbmd1YWdlIChmdXR1cmU6
IHBhY2sgb3IgdW5wYWNrKQotICAgIFNoU2hhZGVyU3BlYyBzaGFkZXJTcGVjOyAgICAgICAgICAg
ICAgLy8gVGhlIGxhbmd1YWdlIHNwZWNpZmljYXRpb24gY29tcGlsZXIgY29uZm9ybXMgdG8gLSBH
TEVTMiBvciBXZWJHTC4KLSAgICBpbnQgY29tcGlsZU9wdGlvbnM7Ci0gICAgY29uc3QgY2hhciog
c291cmNlUGF0aDsgICAgICAvLyBQYXRoIG9mIHNvdXJjZSBmaWxlIG9yIE5VTEwuCi0gICAgVElu
dGVybU5vZGUqIHRyZWVSb290OyAgICAgICAvLyByb290IG9mIHBhcnNlIHRyZWUgYmVpbmcgY3Jl
YXRlZAotICAgIGludCBsb29wTmVzdGluZ0xldmVsOyAgICAgICAgLy8gMCBpZiBvdXRzaWRlIGFs
bCBsb29wcwotICAgIGludCBzdHJ1Y3ROZXN0aW5nTGV2ZWw7ICAgICAgLy8gaW5jcmVtZW50ZWQg
d2hpbGUgcGFyc2luZyBhIHN0cnVjdCBkZWNsYXJhdGlvbgotICAgIGNvbnN0IFRUeXBlKiBjdXJy
ZW50RnVuY3Rpb25UeXBlOyAgLy8gdGhlIHJldHVybiB0eXBlIG9mIHRoZSBmdW5jdGlvbiB0aGF0
J3MgY3VycmVudGx5IGJlaW5nIHBhcnNlZAotICAgIGJvb2wgZnVuY3Rpb25SZXR1cm5zVmFsdWU7
ICAgLy8gdHJ1ZSBpZiBhIG5vbi12b2lkIGZ1bmN0aW9uIGhhcyBhIHJldHVybgotICAgIGJvb2wg
Y2hlY2tzUHJlY2lzaW9uRXJyb3JzOyAgLy8gdHJ1ZSBpZiBhbiBlcnJvciB3aWxsIGJlIGdlbmVy
YXRlZCB3aGVuIGEgdmFyaWFibGUgaXMgZGVjbGFyZWQgd2l0aG91dCBwcmVjaXNpb24sIGV4cGxp
Y2l0IG9yIGltcGxpY2l0LgotICAgIGJvb2wgZnJhZ21lbnRQcmVjaXNpb25IaWdoOyAgLy8gdHJ1
ZSBpZiBoaWdocCBwcmVjaXNpb24gaXMgc3VwcG9ydGVkIGluIHRoZSBmcmFnbWVudCBsYW5ndWFn
ZS4KLSAgICBUU3RyaW5nIEhhc2hFcnJNc2c7Ci0gICAgVERpYWdub3N0aWNzIGRpYWdub3N0aWNz
OwotICAgIFREaXJlY3RpdmVIYW5kbGVyIGRpcmVjdGl2ZUhhbmRsZXI7Ci0gICAgcHA6OlByZXBy
b2Nlc3NvciBwcmVwcm9jZXNzb3I7Ci0gICAgdm9pZCogc2Nhbm5lcjsKLQotICAgIGludCBudW1F
cnJvcnMoKSBjb25zdCB7IHJldHVybiBkaWFnbm9zdGljcy5udW1FcnJvcnMoKTsgfQotICAgIFRJ
bmZvU2luayYgaW5mb1NpbmsoKSB7IHJldHVybiBkaWFnbm9zdGljcy5pbmZvU2luaygpOyB9Ci0g
ICAgdm9pZCBlcnJvcihjb25zdCBUU291cmNlTG9jJiBsb2MsIGNvbnN0IGNoYXIgKnJlYXNvbiwg
Y29uc3QgY2hhciogdG9rZW4sCi0gICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHRyYUluZm89
IiIpOwotICAgIHZvaWQgd2FybmluZyhjb25zdCBUU291cmNlTG9jJiBsb2MsIGNvbnN0IGNoYXIq
IHJlYXNvbiwgY29uc3QgY2hhciogdG9rZW4sCi0gICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGV4dHJhSW5mbz0iIik7Ci0gICAgdm9pZCB0cmFjZShjb25zdCBjaGFyKiBzdHIpOwotICAgIHZv
aWQgcmVjb3ZlcigpOwotCi0gICAgYm9vbCBwYXJzZVZlY3RvckZpZWxkcyhjb25zdCBUU3RyaW5n
JiwgaW50IHZlY1NpemUsIFRWZWN0b3JGaWVsZHMmLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKTsK
LSAgICBib29sIHBhcnNlTWF0cml4RmllbGRzKGNvbnN0IFRTdHJpbmcmLCBpbnQgbWF0U2l6ZSwg
VE1hdHJpeEZpZWxkcyYsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpOwotCi0gICAgYm9vbCByZXNl
cnZlZEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYgaWRl
bnRpZmllcik7Ci0gICAgdm9pZCBhc3NpZ25FcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBj
b25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KTsKLSAgICB2b2lkIHVu
YXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmlu
ZyBvcGVyYW5kKTsKLSAgICB2b2lkIGJpbmFyeU9wRXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbGlu
ZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCk7Ci0gICAgYm9v
bCBwcmVjaXNpb25FcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQcmVjaXNpb24g
cHJlY2lzaW9uLCBUQmFzaWNUeXBlIHR5cGUpOwotICAgIGJvb2wgbFZhbHVlRXJyb3JDaGVjayhj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVEludGVybVR5cGVkKik7Ci0g
ICAgYm9vbCBjb25zdEVycm9yQ2hlY2soVEludGVybVR5cGVkKiBub2RlKTsKLSAgICBib29sIGlu
dGVnZXJFcnJvckNoZWNrKFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgY2hhciogdG9rZW4pOwot
ICAgIGJvb2wgZ2xvYmFsRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBib29sIGds
b2JhbCwgY29uc3QgY2hhciogdG9rZW4pOwotICAgIGJvb2wgY29uc3RydWN0b3JFcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRJbnRlcm1Ob2RlKiwgVEZ1bmN0aW9uJiwgVE9wZXJh
dG9yLCBUVHlwZSopOwotICAgIGJvb2wgYXJyYXlTaXplRXJyb3JDaGVjayhjb25zdCBUU291cmNl
TG9jJiBsaW5lLCBUSW50ZXJtVHlwZWQqIGV4cHIsIGludCYgc2l6ZSk7Ci0gICAgYm9vbCBhcnJh
eVF1YWxpZmllckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFB1YmxpY1R5cGUg
dHlwZSk7Ci0gICAgYm9vbCBhcnJheVR5cGVFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxp
bmUsIFRQdWJsaWNUeXBlIHR5cGUpOwotICAgIGJvb2wgYXJyYXlFcnJvckNoZWNrKGNvbnN0IFRT
b3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlIHR5cGUsIFRW
YXJpYWJsZSomIHZhcmlhYmxlKTsKLSAgICBib29sIHZvaWRFcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MmLCBjb25zdCBUU3RyaW5nJiwgY29uc3QgVFB1YmxpY1R5cGUmKTsKLSAgICBib29sIGJv
b2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmLCBjb25zdCBUSW50ZXJtVHlwZWQqKTsKLSAg
ICBib29sIGJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmLCBjb25zdCBUUHVibGljVHlw
ZSYpOwotICAgIGJvb2wgc2FtcGxlckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwg
Y29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlLCBjb25zdCBjaGFyKiByZWFzb24pOwotICAgIGJvb2wg
c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBU
UHVibGljVHlwZSYgcFR5cGUpOwotICAgIGJvb2wgcGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFF1YWxpZmllciBxdWFsaWZpZXIsIGNvbnN0IFRUeXBl
JiB0eXBlKTsKLSAgICBib29sIG5vbkluaXRDb25zdEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxv
YyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHR5cGUsIGJvb2wgYXJy
YXkpOwotICAgIGJvb2wgbm9uSW5pdEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwg
VFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHR5cGUsIFRWYXJpYWJsZSomIHZhcmlh
YmxlKTsKLSAgICBib29sIHBhcmFtRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBU
UXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1YWxpZmllciwgVFR5cGUqIHR5
cGUpOwotICAgIGJvb2wgZXh0ZW5zaW9uRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5l
LCBjb25zdCBUU3RyaW5nJik7Ci0KLSAgICBjb25zdCBUUHJhZ21hJiBwcmFnbWEoKSBjb25zdCB7
IHJldHVybiBkaXJlY3RpdmVIYW5kbGVyLnByYWdtYSgpOyB9Ci0gICAgY29uc3QgVEV4dGVuc2lv
bkJlaGF2aW9yJiBleHRlbnNpb25CZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIGRpcmVjdGl2ZUhh
bmRsZXIuZXh0ZW5zaW9uQmVoYXZpb3IoKTsgfQotICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24o
Y29uc3QgY2hhciogZXh0ZW5zaW9uKTsKLSAgICBib29sIGlzRXh0ZW5zaW9uRW5hYmxlZChjb25z
dCBjaGFyKiBleHRlbnNpb24pIGNvbnN0OwotCi0gICAgYm9vbCBjb250YWluc1NhbXBsZXIoVFR5
cGUmIHR5cGUpOwotICAgIGJvb2wgYXJlQWxsQ2hpbGRDb25zdChUSW50ZXJtQWdncmVnYXRlKiBh
Z2dyTm9kZSk7Ci0gICAgY29uc3QgVEZ1bmN0aW9uKiBmaW5kRnVuY3Rpb24oY29uc3QgVFNvdXJj
ZUxvYyYgbGluZSwgVEZ1bmN0aW9uKiBwZm5DYWxsLCBib29sICpidWlsdEluID0gMCk7Ci0gICAg
Ym9vbCBleGVjdXRlSW5pdGlhbGl6ZXIoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYg
aWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHBUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRJbnRlcm1UeXBlZCogaW5pdGlhbGl6ZXIsIFRJbnRlcm1Ob2RlKiYgaW50ZXJtTm9kZSwg
VFZhcmlhYmxlKiB2YXJpYWJsZSA9IDApOwotCi0gICAgVEludGVybVR5cGVkKiBhZGRDb25zdHJ1
Y3RvcihUSW50ZXJtTm9kZSosIGNvbnN0IFRUeXBlKiwgVE9wZXJhdG9yLCBURnVuY3Rpb24qLCBj
b25zdCBUU291cmNlTG9jJik7Ci0gICAgVEludGVybVR5cGVkKiBmb2xkQ29uc3RDb25zdHJ1Y3Rv
cihUSW50ZXJtQWdncmVnYXRlKiBhZ2dyTm9kZSwgY29uc3QgVFR5cGUmIHR5cGUpOwotICAgIFRJ
bnRlcm1UeXBlZCogY29uc3RydWN0U3RydWN0KFRJbnRlcm1Ob2RlKiwgVFR5cGUqLCBpbnQsIGNv
bnN0IFRTb3VyY2VMb2MmLCBib29sIHN1YnNldCk7Ci0gICAgVEludGVybVR5cGVkKiBjb25zdHJ1
Y3RCdWlsdEluKGNvbnN0IFRUeXBlKiwgVE9wZXJhdG9yLCBUSW50ZXJtTm9kZSosIGNvbnN0IFRT
b3VyY2VMb2MmLCBib29sIHN1YnNldCk7Ci0gICAgVEludGVybVR5cGVkKiBhZGRDb25zdFZlY3Rv
ck5vZGUoVFZlY3RvckZpZWxkcyYsIFRJbnRlcm1UeXBlZCosIGNvbnN0IFRTb3VyY2VMb2MmKTsK
LSAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0TWF0cml4Tm9kZShpbnQgLCBUSW50ZXJtVHlwZWQq
LCBjb25zdCBUU291cmNlTG9jJik7Ci0gICAgVEludGVybVR5cGVkKiBhZGRDb25zdEFycmF5Tm9k
ZShpbnQgaW5kZXgsIFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSk7
Ci0gICAgVEludGVybVR5cGVkKiBhZGRDb25zdFN0cnVjdChUU3RyaW5nJiAsIFRJbnRlcm1UeXBl
ZCosIGNvbnN0IFRTb3VyY2VMb2MmKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZEluZGV4RXhwcmVz
c2lvbihUSW50ZXJtVHlwZWQgKmJhc2VFeHByZXNzaW9uLCBjb25zdCBUU291cmNlTG9jJiBsb2Nh
dGlvbiwgVEludGVybVR5cGVkICppbmRleEV4cHJlc3Npb24pOwotCi0gICAgLy8gUGVyZm9ybXMg
YW4gZXJyb3IgY2hlY2sgZm9yIGVtYmVkZGVkIHN0cnVjdCBkZWNsYXJhdGlvbnMuCi0gICAgLy8g
UmV0dXJucyB0cnVlIGlmIGFuIGVycm9yIHdhcyByYWlzZWQgZHVlIHRvIHRoZSBkZWNsYXJhdGlv
biBvZgotICAgIC8vIHRoaXMgc3RydWN0LgotICAgIGJvb2wgZW50ZXJTdHJ1Y3REZWNsYXJhdGlv
bihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVudGlmaWVyKTsKLSAg
ICB2b2lkIGV4aXRTdHJ1Y3REZWNsYXJhdGlvbigpOwotCi0gICAgYm9vbCBzdHJ1Y3ROZXN0aW5n
RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBURmllbGQmIGZpZWxkKTsK
LX07Ci0KLWludCBQYVBhcnNlU3RyaW5ncyhzaXplX3QgY291bnQsIGNvbnN0IGNoYXIqIGNvbnN0
IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10sCi0gICAgICAgICAgICAgICAgICAgVFBhcnNl
Q29udGV4dCogY29udGV4dCk7Ci0KLSNlbmRpZiAvLyBfUEFSU0VSX0hFTFBFUl9JTkNMVURFRF8K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Qb29sQWxsb2MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Qb29s
QWxsb2MuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvUG9vbEFsbG9jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcsNTUgKzE3LDMy
IEBACiAKIE9TX1RMU0luZGV4IFBvb2xJbmRleCA9IE9TX0lOVkFMSURfVExTX0lOREVYOwogCi12
b2lkIEluaXRpYWxpemVHbG9iYWxQb29scygpCi17Ci0gICAgVFRocmVhZEdsb2JhbFBvb2xzKiBn
bG9iYWxQb29scz0gc3RhdGljX2Nhc3Q8VFRocmVhZEdsb2JhbFBvb2xzKj4oT1NfR2V0VExTVmFs
dWUoUG9vbEluZGV4KSk7ICAgIAotICAgIGlmIChnbG9iYWxQb29scykKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgVFRocmVhZEdsb2JhbFBvb2xzKiB0aHJlYWREYXRhID0gbmV3IFRUaHJlYWRHbG9i
YWxQb29scygpOwotICAgIHRocmVhZERhdGEtPmdsb2JhbFBvb2xBbGxvY2F0b3IgPSAwOwotCi0g
ICAgT1NfU2V0VExTVmFsdWUoUG9vbEluZGV4LCB0aHJlYWREYXRhKTsKLX0KLQotdm9pZCBGcmVl
R2xvYmFsUG9vbHMoKQotewotICAgIC8vIFJlbGVhc2UgdGhlIGFsbG9jYXRlZCBtZW1vcnkgZm9y
IHRoaXMgdGhyZWFkLgotICAgIFRUaHJlYWRHbG9iYWxQb29scyogZ2xvYmFsUG9vbHM9IHN0YXRp
Y19jYXN0PFRUaHJlYWRHbG9iYWxQb29scyo+KE9TX0dldFRMU1ZhbHVlKFBvb2xJbmRleCkpOyAg
ICAKLSAgICBpZiAoIWdsb2JhbFBvb2xzKQotICAgICAgICByZXR1cm47Ci0gCi0gICAgZGVsZXRl
IGdsb2JhbFBvb2xzOwotfQotCiBib29sIEluaXRpYWxpemVQb29sSW5kZXgoKQogewotICAgIC8v
IEFsbG9jYXRlIGEgVExTIGluZGV4LgotICAgIGlmICgoUG9vbEluZGV4ID0gT1NfQWxsb2NUTFNJ
bmRleCgpKSA9PSBPU19JTlZBTElEX1RMU19JTkRFWCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGFzc2VydChQb29sSW5kZXggPT0gT1NfSU5WQUxJRF9UTFNfSU5ERVgpOwogCi0gICAgcmV0
dXJuIHRydWU7CisgICAgUG9vbEluZGV4ID0gT1NfQWxsb2NUTFNJbmRleCgpOworICAgIHJldHVy
biBQb29sSW5kZXggIT0gT1NfSU5WQUxJRF9UTFNfSU5ERVg7CiB9CiAKIHZvaWQgRnJlZVBvb2xJ
bmRleCgpCiB7Ci0gICAgLy8gUmVsZWFzZSB0aGUgVExTIGluZGV4LgorICAgIGFzc2VydChQb29s
SW5kZXggIT0gT1NfSU5WQUxJRF9UTFNfSU5ERVgpOworCiAgICAgT1NfRnJlZVRMU0luZGV4KFBv
b2xJbmRleCk7CisgICAgUG9vbEluZGV4ID0gT1NfSU5WQUxJRF9UTFNfSU5ERVg7CiB9CiAKLVRQ
b29sQWxsb2NhdG9yJiBHZXRHbG9iYWxQb29sQWxsb2NhdG9yKCkKK1RQb29sQWxsb2NhdG9yKiBH
ZXRHbG9iYWxQb29sQWxsb2NhdG9yKCkKIHsKLSAgICBUVGhyZWFkR2xvYmFsUG9vbHMqIHRocmVh
ZERhdGEgPSBzdGF0aWNfY2FzdDxUVGhyZWFkR2xvYmFsUG9vbHMqPihPU19HZXRUTFNWYWx1ZShQ
b29sSW5kZXgpKTsKLQotICAgIHJldHVybiAqdGhyZWFkRGF0YS0+Z2xvYmFsUG9vbEFsbG9jYXRv
cjsKKyAgICBhc3NlcnQoUG9vbEluZGV4ICE9IE9TX0lOVkFMSURfVExTX0lOREVYKTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VFBvb2xBbGxvY2F0b3IqPihPU19HZXRUTFNWYWx1ZShQb29sSW5k
ZXgpKTsKIH0KIAogdm9pZCBTZXRHbG9iYWxQb29sQWxsb2NhdG9yKFRQb29sQWxsb2NhdG9yKiBw
b29sQWxsb2NhdG9yKQogewotICAgIFRUaHJlYWRHbG9iYWxQb29scyogdGhyZWFkRGF0YSA9IHN0
YXRpY19jYXN0PFRUaHJlYWRHbG9iYWxQb29scyo+KE9TX0dldFRMU1ZhbHVlKFBvb2xJbmRleCkp
OwotCi0gICAgdGhyZWFkRGF0YS0+Z2xvYmFsUG9vbEFsbG9jYXRvciA9IHBvb2xBbGxvY2F0b3I7
CisgICAgYXNzZXJ0KFBvb2xJbmRleCAhPSBPU19JTlZBTElEX1RMU19JTkRFWCk7CisgICAgT1Nf
U2V0VExTVmFsdWUoUG9vbEluZGV4LCBwb29sQWxsb2NhdG9yKTsKIH0KIAogLy8KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Qb29sQWxsb2MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUG9vbEFsbG9jLmgJKHJl
dmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Q
b29sQWxsb2MuaAkod29ya2luZyBjb3B5KQpAQCAtMjE5LDE0ICsyMTksOCBAQCBwcml2YXRlOgog
Ly8gZGlmZmVyZW50IHRpbWVzLiAgQnV0IGEgc2ltcGxlIHVzZSBpcyB0byBoYXZlIGEgZ2xvYmFs
IHBvcAogLy8gd2l0aCBldmVyeW9uZSB1c2luZyB0aGUgc2FtZSBnbG9iYWwgYWxsb2NhdG9yLgog
Ly8KLWV4dGVybiBUUG9vbEFsbG9jYXRvciYgR2V0R2xvYmFsUG9vbEFsbG9jYXRvcigpOworZXh0
ZXJuIFRQb29sQWxsb2NhdG9yKiBHZXRHbG9iYWxQb29sQWxsb2NhdG9yKCk7CiBleHRlcm4gdm9p
ZCBTZXRHbG9iYWxQb29sQWxsb2NhdG9yKFRQb29sQWxsb2NhdG9yKiBwb29sQWxsb2NhdG9yKTsK
LSNkZWZpbmUgR2xvYmFsUG9vbEFsbG9jYXRvciBHZXRHbG9iYWxQb29sQWxsb2NhdG9yKCkKLQot
c3RydWN0IFRUaHJlYWRHbG9iYWxQb29scwotewotICAgIFRQb29sQWxsb2NhdG9yKiBnbG9iYWxQ
b29sQWxsb2NhdG9yOwotfTsKIAogLy8KIC8vIFRoaXMgU1RMIGNvbXBhdGlibGUgYWxsb2NhdG9y
IGlzIGludGVuZGVkIHRvIGJlIHVzZWQgYXMgdGhlIGFsbG9jYXRvcgpAQCAtMjUzLDcgKzI0Nyw3
IEBAIHB1YmxpYzoKICAgICBwb2ludGVyIGFkZHJlc3MocmVmZXJlbmNlIHgpIGNvbnN0IHsgcmV0
dXJuICZ4OyB9CiAgICAgY29uc3RfcG9pbnRlciBhZGRyZXNzKGNvbnN0X3JlZmVyZW5jZSB4KSBj
b25zdCB7IHJldHVybiAmeDsgfQogCi0gICAgcG9vbF9hbGxvY2F0b3IoKSA6IGFsbG9jYXRvcigm
R2xvYmFsUG9vbEFsbG9jYXRvcikgeyB9CisgICAgcG9vbF9hbGxvY2F0b3IoKSA6IGFsbG9jYXRv
cihHZXRHbG9iYWxQb29sQWxsb2NhdG9yKCkpIHsgfQogICAgIHBvb2xfYWxsb2NhdG9yKFRQb29s
QWxsb2NhdG9yJiBhKSA6IGFsbG9jYXRvcigmYSkgeyB9CiAgICAgcG9vbF9hbGxvY2F0b3IoY29u
c3QgcG9vbF9hbGxvY2F0b3I8VD4mIHApIDogYWxsb2NhdG9yKHAuYWxsb2NhdG9yKSB7IH0KIApJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1NlYXJjaFN5bWJvbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TZWFy
Y2hTeW1ib2wuaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL1NlYXJjaFN5bWJvbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw3ICsxMCw3
IEBACiAjZGVmaW5lIENPTVBJTEVSX1NFQVJDSFNZTUJPTF9IXwogCiAjaW5jbHVkZSAiY29tcGls
ZXIvaW50ZXJtZWRpYXRlLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvUGFyc2VIZWxwZXIuaCIKKyNp
bmNsdWRlICJjb21waWxlci9QYXJzZUNvbnRleHQuaCIKIAogbmFtZXNwYWNlIHNoCiB7CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU2hIYW5kbGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU2hIYW5kbGUuaAko
cmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L1NoSGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogICAg
IFRJbmZvU2luayYgZ2V0SW5mb1NpbmsoKSB7IHJldHVybiBpbmZvU2luazsgfQogICAgIGNvbnN0
IFRWYXJpYWJsZUluZm9MaXN0JiBnZXRBdHRyaWJzKCkgY29uc3QgeyByZXR1cm4gYXR0cmliczsg
fQogICAgIGNvbnN0IFRWYXJpYWJsZUluZm9MaXN0JiBnZXRVbmlmb3JtcygpIGNvbnN0IHsgcmV0
dXJuIHVuaWZvcm1zOyB9CisgICAgY29uc3QgVFZhcmlhYmxlSW5mb0xpc3QmIGdldFZhcnlpbmdz
KCkgY29uc3QgeyByZXR1cm4gdmFyeWluZ3M7IH0KICAgICBpbnQgZ2V0TWFwcGVkTmFtZU1heExl
bmd0aCgpIGNvbnN0OwogCiAgICAgU2hIYXNoRnVuY3Rpb242NCBnZXRIYXNoRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBoYXNoRnVuY3Rpb247IH0KQEAgLTkwLDggKzkxLDggQEAgcHJvdGVjdGVk
OgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gc2hhZGVyIGRvZXMgbm90IGV4Y2Vl
ZCB0aGUgbWluaW11bQogICAgIC8vIGZ1bmN0aW9uYWxpdHkgbWFuZGF0ZWQgaW4gR0xTTCAxLjAg
c3BlYyBBcHBlbmRpeCBBLgogICAgIGJvb2wgdmFsaWRhdGVMaW1pdGF0aW9ucyhUSW50ZXJtTm9k
ZSogcm9vdCk7Ci0gICAgLy8gQ29sbGVjdCBpbmZvIGZvciBhbGwgYXR0cmlicyBhbmQgdW5pZm9y
bXMuCi0gICAgdm9pZCBjb2xsZWN0QXR0cmlic1VuaWZvcm1zKFRJbnRlcm1Ob2RlKiByb290KTsK
KyAgICAvLyBDb2xsZWN0IGluZm8gZm9yIGFsbCBhdHRyaWJzLCB1bmlmb3JtcywgdmFyeWluZ3Mu
CisgICAgdm9pZCBjb2xsZWN0VmFyaWFibGVzKFRJbnRlcm1Ob2RlKiByb290KTsKICAgICAvLyBN
YXAgbG9uZyB2YXJpYWJsZSBuYW1lcyBpbnRvIHNob3J0ZXIgb25lcy4KICAgICB2b2lkIG1hcExv
bmdWYXJpYWJsZU5hbWVzKFRJbnRlcm1Ob2RlKiByb290KTsKICAgICAvLyBUcmFuc2xhdGUgdG8g
b2JqZWN0IGNvZGUuCkBAIC0xNDIsNiArMTQzLDcgQEAgcHJpdmF0ZToKICAgICBUSW5mb1Npbmsg
aW5mb1Npbms7ICAvLyBPdXRwdXQgc2luay4KICAgICBUVmFyaWFibGVJbmZvTGlzdCBhdHRyaWJz
OyAgLy8gQWN0aXZlIGF0dHJpYnV0ZXMgaW4gdGhlIGNvbXBpbGVkIHNoYWRlci4KICAgICBUVmFy
aWFibGVJbmZvTGlzdCB1bmlmb3JtczsgIC8vIEFjdGl2ZSB1bmlmb3JtcyBpbiB0aGUgY29tcGls
ZWQgc2hhZGVyLgorICAgIFRWYXJpYWJsZUluZm9MaXN0IHZhcnlpbmdzOyAgLy8gVmFyeWluZ3Mg
aW4gdGhlIGNvbXBpbGVkIHNoYWRlci4KIAogICAgIC8vIENhY2hlZCBjb3B5IG9mIHRoZSByZWYt
Y291bnRlZCBzaW5nbGV0b24uCiAgICAgTG9uZ05hbWVNYXAqIGxvbmdOYW1lTWFwOwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1NoYWRlckxhbmcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaGFkZXJMYW5n
LmNwcAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL1NoYWRlckxhbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNSwyMCArMTUsMjUgQEAK
ICNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvbGVuZ3RoX2xpbWl0cy5oIgogI2luY2x1
ZGUgImNvbXBpbGVyL1NoSGFuZGxlLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvVHJhbnNsYXRvckhM
U0wuaCIKKyNpbmNsdWRlICJjb21waWxlci9WYXJpYWJsZVBhY2tlci5oIgogCiAvLwogLy8gVGhp
cyBpcyB0aGUgcGxhdGZvcm0gaW5kZXBlbmRlbnQgaW50ZXJmYWNlIGJldHdlZW4gYW4gT0dMIGRy
aXZlcgogLy8gYW5kIHRoZSBzaGFkaW5nIGxhbmd1YWdlIGNvbXBpbGVyLgogLy8KIAotc3RhdGlj
IGJvb2wgY2hlY2tBY3RpdmVVbmlmb3JtQW5kQXR0cmliTWF4TGVuZ3Rocyhjb25zdCBTaEhhbmRs
ZSBoYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBleHBlY3RlZFZhbHVlKQorc3RhdGljIGJvb2wgY2hlY2tWYXJpYWJsZU1heExl
bmd0aHMoY29uc3QgU2hIYW5kbGUgaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGV4cGVjdGVkVmFsdWUpCiB7CiAgICAgc2l6ZV90IGFjdGl2ZVVuaWZv
cm1MaW1pdCA9IDA7CiAgICAgU2hHZXRJbmZvKGhhbmRsZSwgU0hfQUNUSVZFX1VOSUZPUk1fTUFY
X0xFTkdUSCwgJmFjdGl2ZVVuaWZvcm1MaW1pdCk7CiAgICAgc2l6ZV90IGFjdGl2ZUF0dHJpYkxp
bWl0ID0gMDsKICAgICBTaEdldEluZm8oaGFuZGxlLCBTSF9BQ1RJVkVfQVRUUklCVVRFX01BWF9M
RU5HVEgsICZhY3RpdmVBdHRyaWJMaW1pdCk7Ci0gICAgcmV0dXJuIChleHBlY3RlZFZhbHVlID09
IGFjdGl2ZVVuaWZvcm1MaW1pdCAmJiBleHBlY3RlZFZhbHVlID09IGFjdGl2ZUF0dHJpYkxpbWl0
KTsKKyAgICBzaXplX3QgdmFyeWluZ0xpbWl0ID0gMDsKKyAgICBTaEdldEluZm8oaGFuZGxlLCBT
SF9WQVJZSU5HX01BWF9MRU5HVEgsICZ2YXJ5aW5nTGltaXQpOworICAgIHJldHVybiAoZXhwZWN0
ZWRWYWx1ZSA9PSBhY3RpdmVVbmlmb3JtTGltaXQgJiYKKyAgICAgICAgICAgIGV4cGVjdGVkVmFs
dWUgPT0gYWN0aXZlQXR0cmliTGltaXQgJiYKKyAgICAgICAgICAgIGV4cGVjdGVkVmFsdWUgPT0g
dmFyeWluZ0xpbWl0KTsKIH0KIAogc3RhdGljIGJvb2wgY2hlY2tNYXBwZWROYW1lTWF4TGVuZ3Ro
KGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwgc2l6ZV90IGV4cGVjdGVkVmFsdWUpCkBAIC0zOCw2MiAr
NDMsMTQgQEAgc3RhdGljIGJvb2wgY2hlY2tNYXBwZWROYW1lTWF4TGVuZ3RoKGNvbgogICAgIHJl
dHVybiAoZXhwZWN0ZWRWYWx1ZSA9PSBtYXBwZWROYW1lTWF4TGVuZ3RoKTsKIH0KIAotc3RhdGlj
IHZvaWQgZ2V0VmFyaWFibGVJbmZvKFNoU2hhZGVySW5mbyB2YXJUeXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
KiBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBzaXplLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNoRGF0YVR5cGUqIHR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhciogbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
KiBtYXBwZWROYW1lKQotewotICAgIGlmICghaGFuZGxlIHx8ICFzaXplIHx8ICF0eXBlIHx8ICFu
YW1lKQotICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKCh2YXJUeXBlID09IFNIX0FDVElWRV9B
VFRSSUJVVEVTKSB8fAotICAgICAgICAgICAodmFyVHlwZSA9PSBTSF9BQ1RJVkVfVU5JRk9STVMp
KTsKLQotICAgIFRTaEhhbmRsZUJhc2UqIGJhc2UgPSByZWludGVycHJldF9jYXN0PFRTaEhhbmRs
ZUJhc2UqPihoYW5kbGUpOwotICAgIFRDb21waWxlciogY29tcGlsZXIgPSBiYXNlLT5nZXRBc0Nv
bXBpbGVyKCk7Ci0gICAgaWYgKGNvbXBpbGVyID09IDApCi0gICAgICAgIHJldHVybjsKLQotICAg
IGNvbnN0IFRWYXJpYWJsZUluZm9MaXN0JiB2YXJMaXN0ID0gdmFyVHlwZSA9PSBTSF9BQ1RJVkVf
QVRUUklCVVRFUyA/Ci0gICAgICAgIGNvbXBpbGVyLT5nZXRBdHRyaWJzKCkgOiBjb21waWxlci0+
Z2V0VW5pZm9ybXMoKTsKLSAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHN0YXRpY19jYXN0
PGludD4odmFyTGlzdC5zaXplKCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjb25zdCBUVmFy
aWFibGVJbmZvJiB2YXJJbmZvID0gdmFyTGlzdFtpbmRleF07Ci0gICAgaWYgKGxlbmd0aCkgKmxl
bmd0aCA9IHZhckluZm8ubmFtZS5zaXplKCk7Ci0gICAgKnNpemUgPSB2YXJJbmZvLnNpemU7Ci0g
ICAgKnR5cGUgPSB2YXJJbmZvLnR5cGU7Ci0KLSAgICAvLyBUaGlzIHNpemUgbXVzdCBtYXRjaCB0
aGF0IHF1ZXJpZWQgYnkKLSAgICAvLyBTSF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIIGFuZCBT
SF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEgKLSAgICAvLyBpbiBTaEdldEluZm8sIGJlbG93
LgotICAgIHNpemVfdCBhY3RpdmVVbmlmb3JtQW5kQXR0cmliTGVuZ3RoID0gMSArIE1BWF9TWU1C
T0xfTkFNRV9MRU47Ci0gICAgQVNTRVJUKGNoZWNrQWN0aXZlVW5pZm9ybUFuZEF0dHJpYk1heExl
bmd0aHMoaGFuZGxlLCBhY3RpdmVVbmlmb3JtQW5kQXR0cmliTGVuZ3RoKSk7Ci0gICAgc3RybmNw
eShuYW1lLCB2YXJJbmZvLm5hbWUuY19zdHIoKSwgYWN0aXZlVW5pZm9ybUFuZEF0dHJpYkxlbmd0
aCk7Ci0gICAgbmFtZVthY3RpdmVVbmlmb3JtQW5kQXR0cmliTGVuZ3RoIC0gMV0gPSAwOwotICAg
IGlmIChtYXBwZWROYW1lKSB7Ci0gICAgICAgIC8vIFRoaXMgc2l6ZSBtdXN0IG1hdGNoIHRoYXQg
cXVlcmllZCBieQotICAgICAgICAvLyBTSF9NQVBQRURfTkFNRV9NQVhfTEVOR1RIIGluIFNoR2V0
SW5mbywgYmVsb3cuCi0gICAgICAgIHNpemVfdCBtYXhNYXBwZWROYW1lTGVuZ3RoID0gMSArIE1B
WF9TWU1CT0xfTkFNRV9MRU47Ci0gICAgICAgIEFTU0VSVChjaGVja01hcHBlZE5hbWVNYXhMZW5n
dGgoaGFuZGxlLCBtYXhNYXBwZWROYW1lTGVuZ3RoKSk7Ci0gICAgICAgIHN0cm5jcHkobWFwcGVk
TmFtZSwgdmFySW5mby5tYXBwZWROYW1lLmNfc3RyKCksIG1heE1hcHBlZE5hbWVMZW5ndGgpOwot
ICAgICAgICBtYXBwZWROYW1lW21heE1hcHBlZE5hbWVMZW5ndGggLSAxXSA9IDA7Ci0gICAgfQot
fQotCiAvLwotLy8gRHJpdmVyIG11c3QgY2FsbCB0aGlzIGZpcnN0LCBvbmNlLCBiZWZvcmUgZG9p
bmcgYW55IG90aGVyCi0vLyBjb21waWxlciBvcGVyYXRpb25zLgorLy8gRHJpdmVyIG11c3QgY2Fs
bCB0aGlzIGZpcnN0LCBvbmNlLCBiZWZvcmUgZG9pbmcgYW55IG90aGVyIGNvbXBpbGVyIG9wZXJh
dGlvbnMuCisvLyBTdWJzZXF1ZW50IGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24gYXJlIG5vLW9wLgog
Ly8KIGludCBTaEluaXRpYWxpemUoKQogewotICAgIGlmICghSW5pdFByb2Nlc3MoKSkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gMTsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBrSW5p
dGlhbGl6ZWQgPSBJbml0UHJvY2VzcygpOworICAgIHJldHVybiBrSW5pdGlhbGl6ZWQgPyAxIDog
MDsKIH0KIAogLy8KQEAgLTEwMSw5ICs1OCw3IEBAIGludCBTaEluaXRpYWxpemUoKQogLy8KIGlu
dCBTaEZpbmFsaXplKCkKIHsKLSAgICBpZiAoIURldGFjaFByb2Nlc3MoKSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0KKyAgICBEZXRhY2hQcm9jZXNzKCk7CiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTE0
NSw5ICsxMDAsNiBAQCBTaEhhbmRsZSBTaENvbnN0cnVjdENvbXBpbGVyKFNoU2hhZGVyVHlwCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzKiByZXNvdXJj
ZXMpCiB7Ci0gICAgaWYgKCFJbml0VGhyZWFkKCkpCi0gICAgICAgIHJldHVybiAwOwotCiAgICAg
VFNoSGFuZGxlQmFzZSogYmFzZSA9IHN0YXRpY19jYXN0PFRTaEhhbmRsZUJhc2UqPihDb25zdHJ1
Y3RDb21waWxlcih0eXBlLCBzcGVjLCBvdXRwdXQpKTsKICAgICBUQ29tcGlsZXIqIGNvbXBpbGVy
ID0gYmFzZS0+Z2V0QXNDb21waWxlcigpOwogICAgIGlmIChjb21waWxlciA9PSAwKQpAQCAtMTg2
LDkgKzEzOCw2IEBAIGludCBTaENvbXBpbGUoCiAgICAgc2l6ZV90IG51bVN0cmluZ3MsCiAgICAg
aW50IGNvbXBpbGVPcHRpb25zKQogewotICAgIGlmICghSW5pdFRocmVhZCgpKQotICAgICAgICBy
ZXR1cm4gMDsKLQogICAgIGlmIChoYW5kbGUgPT0gMCkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAg
LTIzMCw2ICsxNzksMTIgQEAgdm9pZCBTaEdldEluZm8oY29uc3QgU2hIYW5kbGUgaGFuZGxlLCBT
aAogICAgIGNhc2UgU0hfQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RIOgogICAgICAgICAqcGFy
YW1zID0gMSArIE1BWF9TWU1CT0xfTkFNRV9MRU47CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
U0hfVkFSWUlOR1M6CisgICAgICAgICpwYXJhbXMgPSBjb21waWxlci0+Z2V0VmFyeWluZ3MoKS5z
aXplKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU0hfVkFSWUlOR19NQVhfTEVOR1RIOgor
ICAgICAgICAqcGFyYW1zID0gMSArIE1BWF9TWU1CT0xfTkFNRV9MRU47CisgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgU0hfTUFQUEVEX05BTUVfTUFYX0xFTkdUSDoKICAgICAgICAgLy8gVXNlIGxv
bmdlciBsZW5ndGggdGhhbiBNQVhfU0hPUlRFTkVEX0lERU5USUZJRVJfU0laRSB0bwogICAgICAg
ICAvLyBoYW5kbGUgYXJyYXkgYW5kIHN0cnVjdCBkZXJlZmVyZW5jZXMuCkBAIC0yODcsMjggKzI0
Miw3MSBAQCB2b2lkIFNoR2V0T2JqZWN0Q29kZShjb25zdCBTaEhhbmRsZSBoYW5kCiAgICAgc3Ry
Y3B5KG9iakNvZGUsIGluZm9TaW5rLm9iai5jX3N0cigpKTsKIH0KIAotdm9pZCBTaEdldEFjdGl2
ZUF0dHJpYihjb25zdCBTaEhhbmRsZSBoYW5kbGUsCit2b2lkIFNoR2V0VmFyaWFibGVJbmZvKGNv
bnN0IFNoSGFuZGxlIGhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgU2hTaGFkZXJJbmZv
IHZhclR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmRleCwKICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90KiBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGludCog
c2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgU2hEYXRhVHlwZSogdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgU2hQcmVjaXNpb25UeXBlKiBwcmVjaXNpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgIGludCogc3RhdGljVXNlLAogICAgICAgICAgICAgICAgICAgICAgICBjaGFyKiBu
YW1lLAogICAgICAgICAgICAgICAgICAgICAgICBjaGFyKiBtYXBwZWROYW1lKQogewotICAgIGdl
dFZhcmlhYmxlSW5mbyhTSF9BQ1RJVkVfQVRUUklCVVRFUywKLSAgICAgICAgICAgICAgICAgICAg
aGFuZGxlLCBpbmRleCwgbGVuZ3RoLCBzaXplLCB0eXBlLCBuYW1lLCBtYXBwZWROYW1lKTsKLX0K
KyAgICBpZiAoIWhhbmRsZSB8fCAhc2l6ZSB8fCAhdHlwZSB8fCAhcHJlY2lzaW9uIHx8ICFzdGF0
aWNVc2UgfHwgIW5hbWUpCisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoKHZhclR5cGUgPT0g
U0hfQUNUSVZFX0FUVFJJQlVURVMpIHx8CisgICAgICAgICAgICh2YXJUeXBlID09IFNIX0FDVElW
RV9VTklGT1JNUykgfHwKKyAgICAgICAgICAgKHZhclR5cGUgPT0gU0hfVkFSWUlOR1MpKTsKIAot
dm9pZCBTaEdldEFjdGl2ZVVuaWZvcm0oY29uc3QgU2hIYW5kbGUgaGFuZGxlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
KiBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQqIHNpemUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBTaERhdGFUeXBlKiB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciogbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIG1hcHBlZE5hbWUpCi17
Ci0gICAgZ2V0VmFyaWFibGVJbmZvKFNIX0FDVElWRV9VTklGT1JNUywKLSAgICAgICAgICAgICAg
ICAgICAgaGFuZGxlLCBpbmRleCwgbGVuZ3RoLCBzaXplLCB0eXBlLCBuYW1lLCBtYXBwZWROYW1l
KTsKKyAgICBUU2hIYW5kbGVCYXNlKiBiYXNlID0gcmVpbnRlcnByZXRfY2FzdDxUU2hIYW5kbGVC
YXNlKj4oaGFuZGxlKTsKKyAgICBUQ29tcGlsZXIqIGNvbXBpbGVyID0gYmFzZS0+Z2V0QXNDb21w
aWxlcigpOworICAgIGlmIChjb21waWxlciA9PSAwKQorICAgICAgICByZXR1cm47CisKKyAgICBj
b25zdCBUVmFyaWFibGVJbmZvTGlzdCYgdmFyTGlzdCA9CisgICAgICAgIHZhclR5cGUgPT0gU0hf
QUNUSVZFX0FUVFJJQlVURVMgPyBjb21waWxlci0+Z2V0QXR0cmlicygpIDoKKyAgICAgICAgICAg
ICh2YXJUeXBlID09IFNIX0FDVElWRV9VTklGT1JNUyA/IGNvbXBpbGVyLT5nZXRVbmlmb3Jtcygp
IDoKKyAgICAgICAgICAgICAgICBjb21waWxlci0+Z2V0VmFyeWluZ3MoKSk7CisgICAgaWYgKGlu
ZGV4IDwgMCB8fCBpbmRleCA+PSBzdGF0aWNfY2FzdDxpbnQ+KHZhckxpc3Quc2l6ZSgpKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgY29uc3QgVFZhcmlhYmxlSW5mbyYgdmFySW5mbyA9IHZhckxp
c3RbaW5kZXhdOworICAgIGlmIChsZW5ndGgpICpsZW5ndGggPSB2YXJJbmZvLm5hbWUuc2l6ZSgp
OworICAgICpzaXplID0gdmFySW5mby5zaXplOworICAgICp0eXBlID0gdmFySW5mby50eXBlOwor
ICAgIHN3aXRjaCAodmFySW5mby5wcmVjaXNpb24pIHsKKyAgICBjYXNlIEVicExvdzoKKyAgICAg
ICAgKnByZWNpc2lvbiA9IFNIX1BSRUNJU0lPTl9MT1dQOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEVicE1lZGl1bToKKyAgICAgICAgKnByZWNpc2lvbiA9IFNIX1BSRUNJU0lPTl9NRURJVU1Q
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVicEhpZ2g6CisgICAgICAgICpwcmVjaXNpb24g
PSBTSF9QUkVDSVNJT05fSElHSFA7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIC8vIFNvbWUgdHlwZXMgZG9lcyBub3Qgc3VwcG9ydCBwcmVjaXNpb24sIGZvciBleGFtcGxl
LCBib29sZWFuLgorICAgICAgICAqcHJlY2lzaW9uID0gU0hfUFJFQ0lTSU9OX1VOREVGSU5FRDsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICpzdGF0aWNVc2UgPSB2YXJJbmZvLnN0YXRpY1Vz
ZSA/IDEgOiAwOworCisgICAgLy8gVGhpcyBzaXplIG11c3QgbWF0Y2ggdGhhdCBxdWVyaWVkIGJ5
CisgICAgLy8gU0hfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCwgU0hfQUNUSVZFX0FUVFJJQlVU
RV9NQVhfTEVOR1RILCBTSF9WQVJZSU5HX01BWF9MRU5HVEgKKyAgICAvLyBpbiBTaEdldEluZm8s
IGJlbG93LgorICAgIHNpemVfdCB2YXJpYWJsZUxlbmd0aCA9IDEgKyBNQVhfU1lNQk9MX05BTUVf
TEVOOworICAgIEFTU0VSVChjaGVja1ZhcmlhYmxlTWF4TGVuZ3RocyhoYW5kbGUsIHZhcmlhYmxl
TGVuZ3RoKSk7CisgICAgc3RybmNweShuYW1lLCB2YXJJbmZvLm5hbWUuY19zdHIoKSwgdmFyaWFi
bGVMZW5ndGgpOworICAgIG5hbWVbdmFyaWFibGVMZW5ndGggLSAxXSA9IDA7CisgICAgaWYgKG1h
cHBlZE5hbWUpIHsKKyAgICAgICAgLy8gVGhpcyBzaXplIG11c3QgbWF0Y2ggdGhhdCBxdWVyaWVk
IGJ5CisgICAgICAgIC8vIFNIX01BUFBFRF9OQU1FX01BWF9MRU5HVEggaW4gU2hHZXRJbmZvLCBi
ZWxvdy4KKyAgICAgICAgc2l6ZV90IG1heE1hcHBlZE5hbWVMZW5ndGggPSAxICsgTUFYX1NZTUJP
TF9OQU1FX0xFTjsKKyAgICAgICAgQVNTRVJUKGNoZWNrTWFwcGVkTmFtZU1heExlbmd0aChoYW5k
bGUsIG1heE1hcHBlZE5hbWVMZW5ndGgpKTsKKyAgICAgICAgc3RybmNweShtYXBwZWROYW1lLCB2
YXJJbmZvLm1hcHBlZE5hbWUuY19zdHIoKSwgbWF4TWFwcGVkTmFtZUxlbmd0aCk7CisgICAgICAg
IG1hcHBlZE5hbWVbbWF4TWFwcGVkTmFtZUxlbmd0aCAtIDFdID0gMDsKKyAgICB9CiB9CiAKIHZv
aWQgU2hHZXROYW1lSGFzaGluZ0VudHJ5KGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwKQEAgLTM3MSwz
ICszNjksMTkgQEAgdm9pZCBTaEdldEluZm9Qb2ludGVyKGNvbnN0IFNoSGFuZGxlIGhhbgogICAg
IGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CiAgICAgfQogfQorCitpbnQgU2hDaGVja1ZhcmlhYmxl
c1dpdGhpblBhY2tpbmdMaW1pdHMoCisgICAgaW50IG1heFZlY3RvcnMsIFNoVmFyaWFibGVJbmZv
KiB2YXJJbmZvQXJyYXksIHNpemVfdCB2YXJJbmZvQXJyYXlTaXplKQoreworICAgIGlmICh2YXJJ
bmZvQXJyYXlTaXplID09IDApCisgICAgICAgIHJldHVybiAxOworICAgIEFTU0VSVCh2YXJJbmZv
QXJyYXkpOworICAgIFRWYXJpYWJsZUluZm9MaXN0IHZhcmlhYmxlczsKKyAgICBmb3IgKHNpemVf
dCBpaSA9IDA7IGlpIDwgdmFySW5mb0FycmF5U2l6ZTsgKytpaSkKKyAgICB7CisgICAgICAgIFRW
YXJpYWJsZUluZm8gdmFyKHZhckluZm9BcnJheVtpaV0udHlwZSwgdmFySW5mb0FycmF5W2lpXS5z
aXplKTsKKyAgICAgICAgdmFyaWFibGVzLnB1c2hfYmFjayh2YXIpOworICAgIH0KKyAgICBWYXJp
YWJsZVBhY2tlciBwYWNrZXI7CisgICAgcmV0dXJuIHBhY2tlci5DaGVja1ZhcmlhYmxlc1dpdGhp
blBhY2tpbmdMaW1pdHMobWF4VmVjdG9ycywgdmFyaWFibGVzKSA/IDEgOiAwOworfQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFi
bGUuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvU3ltYm9sVGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsMyArMjA2LDEx
IEBAIHZvaWQgVFN5bWJvbFRhYmxlTGV2ZWw6OnJlbGF0ZVRvRXh0ZW5zaW8KICAgICAgICAgICAg
IHN5bWJvbC0+cmVsYXRlVG9FeHRlbnNpb24oZXh0KTsKICAgICB9CiB9CisKK1RTeW1ib2xUYWJs
ZTo6flRTeW1ib2xUYWJsZSgpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0YWJsZS5z
aXplKCk7ICsraSkKKyAgICAgICAgZGVsZXRlIHRhYmxlW2ldOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcHJlY2lzaW9uU3RhY2suc2l6ZSgpOyArK2kpCisgICAgICAgIGRlbGV0ZSBwcmVj
aXNpb25TdGFja1tpXTsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNDEsOSArNDEsMTAgQEAKIC8vCiBjbGFzcyBUU3ltYm9sIHsgICAgCiBwdWJsaWM6Ci0g
ICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxsb2NhdG9yKQotICAgIFRT
eW1ib2woY29uc3QgVFN0cmluZyAqbikgOiAgbmFtZShuKSB7IH0KKyAgICBQT09MX0FMTE9DQVRP
Ul9ORVdfREVMRVRFKCk7CisgICAgVFN5bWJvbChjb25zdCBUU3RyaW5nKiBuKSA6ICB1bmlxdWVJ
ZCgwKSwgbmFtZShuKSB7IH0KICAgICB2aXJ0dWFsIH5UU3ltYm9sKCkgeyAvKiBkb24ndCBkZWxl
dGUgbmFtZSwgaXQncyBmcm9tIHRoZSBwb29sICovIH0KKwogICAgIGNvbnN0IFRTdHJpbmcmIGdl
dE5hbWUoKSBjb25zdCB7IHJldHVybiAqbmFtZTsgfQogICAgIHZpcnR1YWwgY29uc3QgVFN0cmlu
ZyYgZ2V0TWFuZ2xlZE5hbWUoKSBjb25zdCB7IHJldHVybiBnZXROYW1lKCk7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC01Nyw4ICs1
OCw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRT
eW1ib2wpOwogCisgICAgaW50IHVuaXF1ZUlkOyAgICAgIC8vIEZvciByZWFsIGNvbXBhcmluZyBk
dXJpbmcgY29kZSBnZW5lcmF0aW9uCiAgICAgY29uc3QgVFN0cmluZyAqbmFtZTsKLSAgICB1bnNp
Z25lZCBpbnQgdW5pcXVlSWQ7ICAgICAgLy8gRm9yIHJlYWwgY29tcGFyaW5nIGR1cmluZyBjb2Rl
IGdlbmVyYXRpb24KICAgICBUU3RyaW5nIGV4dGVuc2lvbjsKIH07CiAKQEAgLTE4Niw3ICsxODcs
NiBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBjb25zdCB0TGV2ZWw6OnZhbHVlX3R5cGUgdExldmVs
UGFpcjsKICAgICB0eXBlZGVmIHN0ZDo6cGFpcjx0TGV2ZWw6Oml0ZXJhdG9yLCBib29sPiB0SW5z
ZXJ0UmVzdWx0OwogCi0gICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxs
b2NhdG9yKQogICAgIFRTeW1ib2xUYWJsZUxldmVsKCkgeyB9CiAgICAgflRTeW1ib2xUYWJsZUxl
dmVsKCk7CiAKQEAgLTE5NSw4ICsxOTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vCiAgICAgICAg
IC8vIHJldHVybmluZyB0cnVlIG1lYW5zIHN5bWJvbCB3YXMgYWRkZWQgdG8gdGhlIHRhYmxlCiAg
ICAgICAgIC8vCi0gICAgICAgIHRJbnNlcnRSZXN1bHQgcmVzdWx0OwotICAgICAgICByZXN1bHQg
PSBsZXZlbC5pbnNlcnQodExldmVsUGFpcihuYW1lLCAmc3ltYm9sKSk7CisgICAgICAgIHRJbnNl
cnRSZXN1bHQgcmVzdWx0ID0gbGV2ZWwuaW5zZXJ0KHRMZXZlbFBhaXIobmFtZSwgJnN5bWJvbCkp
OwogCiAgICAgICAgIHJldHVybiByZXN1bHQuc2Vjb25kOwogICAgIH0KQEAgLTI0MywxMyArMjQy
LDcgQEAgcHVibGljOgogICAgICAgICAvLyB0aGF0IHRoZSBzeW1ib2wgdGFibGUgaGFzIG5vdCBi
ZWVuIHByZWxvYWRlZCB3aXRoIGJ1aWx0LWlucy4KICAgICAgICAgLy8KICAgICB9Ci0KLSAgICB+
VFN5bWJvbFRhYmxlKCkKLSAgICB7Ci0gICAgICAgIC8vIGxldmVsIDAgaXMgYWx3YXlzIGJ1aWx0
IEluIHN5bWJvbHMsIHNvIHdlIG5ldmVyIHBvcCB0aGF0IG91dAotICAgICAgICB3aGlsZSAodGFi
bGUuc2l6ZSgpID4gMSkKLSAgICAgICAgICAgIHBvcCgpOwotICAgIH0KKyAgICB+VFN5bWJvbFRh
YmxlKCk7CiAKICAgICAvLwogICAgIC8vIFdoZW4gdGhlIHN5bWJvbCB0YWJsZSBpcyBpbml0aWFs
aXplZCB3aXRoIHRoZSBidWlsdC1pbnMsIHRoZXJlIHNob3VsZApAQCAtMjYyLDEzICsyNTUsMTUg
QEAgcHVibGljOgogICAgIHZvaWQgcHVzaCgpCiAgICAgewogICAgICAgICB0YWJsZS5wdXNoX2Jh
Y2sobmV3IFRTeW1ib2xUYWJsZUxldmVsKTsKLSAgICAgICAgcHJlY2lzaW9uU3RhY2sucHVzaF9i
YWNrKCBQcmVjaXNpb25TdGFja0xldmVsKCkgKTsKKyAgICAgICAgcHJlY2lzaW9uU3RhY2sucHVz
aF9iYWNrKG5ldyBQcmVjaXNpb25TdGFja0xldmVsKTsKICAgICB9CiAKICAgICB2b2lkIHBvcCgp
Ci0gICAgeyAKLSAgICAgICAgZGVsZXRlIHRhYmxlW2N1cnJlbnRMZXZlbCgpXTsgCi0gICAgICAg
IHRhYmxlLnBvcF9iYWNrKCk7IAorICAgIHsKKyAgICAgICAgZGVsZXRlIHRhYmxlLmJhY2soKTsK
KyAgICAgICAgdGFibGUucG9wX2JhY2soKTsKKworICAgICAgICBkZWxldGUgcHJlY2lzaW9uU3Rh
Y2suYmFjaygpOwogICAgICAgICBwcmVjaXNpb25TdGFjay5wb3BfYmFjaygpOwogICAgIH0KIApA
QCAtMzIzLDE2ICszMTgsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3ltYm9sOwogICAg
IH0KIAotICAgIFRTeW1ib2wgKmZpbmRCdWlsdEluKGNvbnN0IFRTdHJpbmcgJm5hbWUpCisgICAg
VFN5bWJvbCogZmluZEJ1aWx0SW4oY29uc3QgVFN0cmluZyAmbmFtZSkKICAgICB7CiAgICAgICAg
IHJldHVybiB0YWJsZVswXS0+ZmluZChuYW1lKTsKICAgICB9CiAKLSAgICBUU3ltYm9sVGFibGVM
ZXZlbCogZ2V0R2xvYmFsTGV2ZWwoKSB7Ci0gICAgICAgIGFzc2VydCh0YWJsZS5zaXplKCkgPj0g
Mik7Ci0gICAgICAgIHJldHVybiB0YWJsZVsxXTsKLSAgICB9Ci0KICAgICBUU3ltYm9sVGFibGVM
ZXZlbCogZ2V0T3V0ZXJMZXZlbCgpIHsKICAgICAgICAgYXNzZXJ0KHRhYmxlLnNpemUoKSA+PSAy
KTsKICAgICAgICAgcmV0dXJuIHRhYmxlW2N1cnJlbnRMZXZlbCgpIC0gMV07CkBAIC0zNDQsMzEg
KzMzNCwyOSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWxhdGVUb0V4dGVuc2lvbihjb25zdCBjaGFy
KiBuYW1lLCBjb25zdCBUU3RyaW5nJiBleHQpIHsKICAgICAgICAgdGFibGVbMF0tPnJlbGF0ZVRv
RXh0ZW5zaW9uKG5hbWUsIGV4dCk7CiAgICAgfQotICAgIGludCBnZXRNYXhTeW1ib2xJZCgpIHsg
cmV0dXJuIHVuaXF1ZUlkOyB9CiAgICAgdm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1NpbmspIGNv
bnN0OwogCi0gICAgYm9vbCBzZXREZWZhdWx0UHJlY2lzaW9uKCBjb25zdCBUUHVibGljVHlwZSYg
dHlwZSwgVFByZWNpc2lvbiBwcmVjICl7Ci0gICAgICAgIGlmIChJc1NhbXBsZXIodHlwZS50eXBl
KSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOyAgLy8gU2tpcCBzYW1wbGVyIHR5cGVzIGZvciB0
aGUgdGltZSBiZWluZwotICAgICAgICBpZiAodHlwZS50eXBlICE9IEVidEZsb2F0ICYmIHR5cGUu
dHlwZSAhPSBFYnRJbnQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIE9ubHkgc2V0IGRl
ZmF1bHQgcHJlY2lzaW9uIGZvciBpbnQvZmxvYXQKKyAgICBib29sIHNldERlZmF1bHRQcmVjaXNp
b24oY29uc3QgVFB1YmxpY1R5cGUmIHR5cGUsIFRQcmVjaXNpb24gcHJlYykgeworICAgICAgICBp
ZiAoIXN1cHBvcnRzUHJlY2lzaW9uKHR5cGUudHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIGlmICh0eXBlLnNpemUgIT0gMSB8fCB0eXBlLm1hdHJpeCB8fCB0eXBlLmFy
cmF5KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBOb3QgYWxsb3dlZCB0byBzZXQgZm9y
IGFnZ3JlZ2F0ZSB0eXBlcwogICAgICAgICBpbnQgaW5kZXhPZkxhc3RFbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8aW50PihwcmVjaXNpb25TdGFjay5zaXplKCkpIC0gMTsKLSAgICAgICAgcHJlY2lzaW9u
U3RhY2tbaW5kZXhPZkxhc3RFbGVtZW50XVt0eXBlLnR5cGVdID0gcHJlYzsgLy8gVXNlcyBtYXAg
b3BlcmF0b3IgW10sIG92ZXJ3cml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUKKyAgICAgICAgKCpwcmVj
aXNpb25TdGFja1tpbmRleE9mTGFzdEVsZW1lbnRdKVt0eXBlLnR5cGVdID0gcHJlYzsgLy8gVXNl
cyBtYXAgb3BlcmF0b3IgW10sIG92ZXJ3cml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgLy8gU2VhcmNoZXMgZG93biB0aGUgcHJlY2lzaW9u
U3RhY2sgZm9yIGEgcHJlY2lzaW9uIHF1YWxpZmllciBmb3IgdGhlIHNwZWNpZmllZCBUQmFzaWNU
eXBlCi0gICAgVFByZWNpc2lvbiBnZXREZWZhdWx0UHJlY2lzaW9uKCBUQmFzaWNUeXBlIHR5cGUp
ewotICAgICAgICBpZiggdHlwZSAhPSBFYnRGbG9hdCAmJiB0eXBlICE9IEVidEludCApIHJldHVy
biBFYnBVbmRlZmluZWQ7CisgICAgVFByZWNpc2lvbiBnZXREZWZhdWx0UHJlY2lzaW9uKFRCYXNp
Y1R5cGUgdHlwZSkgeworICAgICAgICBpZiAoIXN1cHBvcnRzUHJlY2lzaW9uKHR5cGUpKQorICAg
ICAgICAgICAgcmV0dXJuIEVicFVuZGVmaW5lZDsKICAgICAgICAgaW50IGxldmVsID0gc3RhdGlj
X2Nhc3Q8aW50PihwcmVjaXNpb25TdGFjay5zaXplKCkpIC0gMTsKLSAgICAgICAgYXNzZXJ0KCBs
ZXZlbCA+PSAwKTsgLy8gSnVzdCB0byBiZSBzYWZlLiBTaG91bGQgbm90IGhhcHBlbi4KKyAgICAg
ICAgYXNzZXJ0KGxldmVsID49IDApOyAvLyBKdXN0IHRvIGJlIHNhZmUuIFNob3VsZCBub3QgaGFw
cGVuLgogICAgICAgICBQcmVjaXNpb25TdGFja0xldmVsOjppdGVyYXRvciBpdDsKICAgICAgICAg
VFByZWNpc2lvbiBwcmVjID0gRWJwVW5kZWZpbmVkOyAvLyBJZiB3ZSBkb250IGZpbmQgYW55dGhp
bmcgd2UgcmV0dXJuIHRoaXMuIFNob3VsZCB3ZSBlcnJvciBjaGVjayB0aGlzPwotICAgICAgICB3
aGlsZSggbGV2ZWwgPj0gMCApewotICAgICAgICAgICAgaXQgPSBwcmVjaXNpb25TdGFja1tsZXZl
bF0uZmluZCggdHlwZSApOwotICAgICAgICAgICAgaWYoIGl0ICE9IHByZWNpc2lvblN0YWNrW2xl
dmVsXS5lbmQoKSApeworICAgICAgICB3aGlsZSAobGV2ZWwgPj0gMCkgeworICAgICAgICAgICAg
aXQgPSBwcmVjaXNpb25TdGFja1tsZXZlbF0tPmZpbmQodHlwZSk7CisgICAgICAgICAgICBpZiAo
aXQgIT0gcHJlY2lzaW9uU3RhY2tbbGV2ZWxdLT5lbmQoKSkgewogICAgICAgICAgICAgICAgIHBy
ZWMgPSAoKml0KS5zZWNvbmQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CkBAIC0zNzcsMTMgKzM2NSwxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBwcmVjOwogICAg
IH0KIAotcHJvdGVjdGVkOiAgICAKK3ByaXZhdGU6CiAgICAgaW50IGN1cnJlbnRMZXZlbCgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGludD4odGFibGUuc2l6ZSgpKSAtIDE7IH0KIAotICAg
IHN0ZDo6dmVjdG9yPFRTeW1ib2xUYWJsZUxldmVsKj4gdGFibGU7Ci0gICAgdHlwZWRlZiBzdGQ6
Om1hcDwgVEJhc2ljVHlwZSwgVFByZWNpc2lvbiA+IFByZWNpc2lvblN0YWNrTGV2ZWw7Ci0gICAg
c3RkOjp2ZWN0b3I8IFByZWNpc2lvblN0YWNrTGV2ZWwgPiBwcmVjaXNpb25TdGFjazsKKyAgICBi
b29sIHN1cHBvcnRzUHJlY2lzaW9uKFRCYXNpY1R5cGUgdHlwZSkgeworICAgICAgLy8gT25seSBz
dXBwb3J0cyBwcmVjaXNpb24gZm9yIGludCwgZmxvYXQsIGFuZCBzYW1wbGVyIHR5cGVzLgorICAg
ICAgcmV0dXJuIHR5cGUgPT0gRWJ0RmxvYXQgfHwgdHlwZSA9PSBFYnRJbnQgfHwgSXNTYW1wbGVy
KHR5cGUpOworICAgIH0KKwogICAgIGludCB1bmlxdWVJZDsgICAgIC8vIGZvciB1bmlxdWUgaWRl
bnRpZmljYXRpb24gaW4gY29kZSBnZW5lcmF0aW9uCisgICAgc3RkOjp2ZWN0b3I8VFN5bWJvbFRh
YmxlTGV2ZWwqPiB0YWJsZTsKKyAgICB0eXBlZGVmIFRNYXA8VEJhc2ljVHlwZSwgVFByZWNpc2lv
bj4gUHJlY2lzaW9uU3RhY2tMZXZlbDsKKyAgICBzdGQ6OnZlY3RvcjxQcmVjaXNpb25TdGFja0xl
dmVsKj4gcHJlY2lzaW9uU3RhY2s7CiB9OwogCiAjZW5kaWYgLy8gX1NZTUJPTF9UQUJMRV9JTkNM
VURFRF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9UeXBlcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9UeXBl
cy5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8vCi0vLyBDb3B5
cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMTksNyArMTksNyBAQCBjbGFzcyBUVHlwZTsK
IGNsYXNzIFRGaWVsZAogewogcHVibGljOgotICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUo
R2xvYmFsUG9vbEFsbG9jYXRvcik7CisgICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURSgpOwog
ICAgIFRGaWVsZChUVHlwZSogdHlwZSwgVFN0cmluZyogbmFtZSkgOiBtVHlwZSh0eXBlKSwgbU5h
bWUobmFtZSkge30KIAogICAgIC8vIFRPRE8oYWxva3ApOiBXZSBzaG91bGQgb25seSByZXR1cm4g
Y29uc3QgdHlwZS4KQEAgLTM4LDE0ICszOCwxNCBAQCBwcml2YXRlOgogdHlwZWRlZiBUVmVjdG9y
PFRGaWVsZCo+IFRGaWVsZExpc3Q7CiBpbmxpbmUgVEZpZWxkTGlzdCogTmV3UG9vbFRGaWVsZExp
c3QoKQogewotICAgIHZvaWQqIG1lbW9yeSA9IEdsb2JhbFBvb2xBbGxvY2F0b3IuYWxsb2NhdGUo
c2l6ZW9mKFRGaWVsZExpc3QpKTsKKyAgICB2b2lkKiBtZW1vcnkgPSBHZXRHbG9iYWxQb29sQWxs
b2NhdG9yKCktPmFsbG9jYXRlKHNpemVvZihURmllbGRMaXN0KSk7CiAgICAgcmV0dXJuIG5ldyht
ZW1vcnkpIFRGaWVsZExpc3Q7CiB9CiAKIGNsYXNzIFRTdHJ1Y3R1cmUKIHsKIHB1YmxpYzoKLSAg
ICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKEdsb2JhbFBvb2xBbGxvY2F0b3IpOworICAgIFBP
T0xfQUxMT0NBVE9SX05FV19ERUxFVEUoKTsKICAgICBUU3RydWN0dXJlKFRTdHJpbmcqIG5hbWUs
IFRGaWVsZExpc3QqIGZpZWxkcykKICAgICAgICAgOiBtTmFtZShuYW1lKSwKICAgICAgICAgICBt
RmllbGRzKGZpZWxkcyksCkBAIC05Myw5ICs5Myw5IEBAIHByaXZhdGU6CiBjbGFzcyBUVHlwZQog
ewogcHVibGljOgotICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xvYmFsUG9vbEFsbG9j
YXRvcikKKyAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKCk7CiAgICAgVFR5cGUoKSB7fQot
ICAgIFRUeXBlKFRCYXNpY1R5cGUgdCwgVFByZWNpc2lvbiBwLCBUUXVhbGlmaWVyIHEgPSBFdnFU
ZW1wb3JhcnksIGludCBzID0gMSwgYm9vbCBtID0gZmFsc2UsIGJvb2wgYSA9IGZhbHNlKSA6Cisg
ICAgVFR5cGUoVEJhc2ljVHlwZSB0LCBUUHJlY2lzaW9uIHAsIFRRdWFsaWZpZXIgcSA9IEV2cVRl
bXBvcmFyeSwgdW5zaWduZWQgY2hhciBzID0gMSwgYm9vbCBtID0gZmFsc2UsIGJvb2wgYSA9IGZh
bHNlKSA6CiAgICAgICAgICAgICB0eXBlKHQpLCBwcmVjaXNpb24ocCksIHF1YWxpZmllcihxKSwg
c2l6ZShzKSwgbWF0cml4KG0pLCBhcnJheShhKSwgYXJyYXlTaXplKDApLCBzdHJ1Y3R1cmUoMCkK
ICAgICB7CiAgICAgfQpAQCAtMTE2LDcgKzExNiw3IEBAIHB1YmxpYzoKIAogICAgIC8vIE9uZS1k
aW1lbnNpb25hbCBzaXplIG9mIHNpbmdsZSBpbnN0YW5jZSB0eXBlCiAgICAgaW50IGdldE5vbWlu
YWxTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZTsgfQotICAgIHZvaWQgc2V0Tm9taW5hbFNpemUo
aW50IHMpIHsgc2l6ZSA9IHM7IH0KKyAgICB2b2lkIHNldE5vbWluYWxTaXplKHVuc2lnbmVkIGNo
YXIgcykgeyBzaXplID0gczsgfQogICAgIC8vIEZ1bGwgc2l6ZSBvZiBzaW5nbGUgaW5zdGFuY2Ug
b2YgdHlwZQogICAgIHNpemVfdCBnZXRPYmplY3RTaXplKCkgY29uc3Q7CiAKQEAgLTIzNCwxOCAr
MjM0LDEyIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgVFN0cmluZyBidWlsZE1hbmdsZWROYW1l
KCkgY29uc3Q7CiAKLSNpZmRlZiBfX0dOVUNfXwogICAgIFRCYXNpY1R5cGUgdHlwZTsKICAgICBU
UHJlY2lzaW9uIHByZWNpc2lvbjsKICAgICBUUXVhbGlmaWVyIHF1YWxpZmllcjsKLSNlbHNlCi0g
ICAgVEJhc2ljVHlwZSB0eXBlICAgICAgOiA2OwotICAgIFRQcmVjaXNpb24gcHJlY2lzaW9uOwot
ICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyIDogNzsKLSNlbmRpZgotICAgIGludCBzaXplICAgICAg
ICAgICAgIDogODsgLy8gc2l6ZSBvZiB2ZWN0b3Igb3IgbWF0cml4LCBub3Qgc2l6ZSBvZiBhcnJh
eQotICAgIHVuc2lnbmVkIGludCBtYXRyaXggIDogMTsKLSAgICB1bnNpZ25lZCBpbnQgYXJyYXkg
ICA6IDE7CisgICAgdW5zaWduZWQgY2hhciBzaXplOworICAgIGJvb2wgbWF0cml4OworICAgIGJv
b2wgYXJyYXk7CiAgICAgaW50IGFycmF5U2l6ZTsKIAogICAgIFRTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZTsgICAgICAvLyAwIHVubGVzcyB0aGlzIGlzIGEgc3RydWN0CkBAIC0yNjcsNyArMjYxLDcgQEAg
c3RydWN0IFRQdWJsaWNUeXBlCiAgICAgVEJhc2ljVHlwZSB0eXBlOwogICAgIFRRdWFsaWZpZXIg
cXVhbGlmaWVyOwogICAgIFRQcmVjaXNpb24gcHJlY2lzaW9uOwotICAgIGludCBzaXplOyAgICAg
ICAgICAvLyBzaXplIG9mIHZlY3RvciBvciBtYXRyaXgsIG5vdCBzaXplIG9mIGFycmF5CisgICAg
dW5zaWduZWQgY2hhciBzaXplOyAgICAgICAgICAvLyBzaXplIG9mIHZlY3RvciBvciBtYXRyaXgs
IG5vdCBzaXplIG9mIGFycmF5CiAgICAgYm9vbCBtYXRyaXg7CiAgICAgYm9vbCBhcnJheTsKICAg
ICBpbnQgYXJyYXlTaXplOwpAQCAtMjg3LDcgKzI4MSw3IEBAIHN0cnVjdCBUUHVibGljVHlwZQog
ICAgICAgICBsaW5lID0gbG47CiAgICAgfQogCi0gICAgdm9pZCBzZXRBZ2dyZWdhdGUoaW50IHMs
IGJvb2wgbSA9IGZhbHNlKQorICAgIHZvaWQgc2V0QWdncmVnYXRlKHVuc2lnbmVkIGNoYXIgcywg
Ym9vbCBtID0gZmFsc2UpCiAgICAgewogICAgICAgICBzaXplID0gczsKICAgICAgICAgbWF0cml4
ID0gbTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9VbmZvbGRT
aG9ydENpcmN1aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9VbmZvbGRTaG9ydENpcmN1aXQuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVW5mb2xkU2hvcnRDaXJjdWl0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsMTQgQEAgYm9vbCBVbmZvbGRTaG9ydENpcmN1
aXQ6OnZpc2l0QmluYXJ5KFZpcwogewogICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9IG1PdXRwdXRI
TFNMLT5nZXRCb2R5U3RyZWFtKCk7CiAKKyAgICAvLyBJZiBvdXIgcmlnaHQgbm9kZSBkb2Vzbid0
IGhhdmUgc2lkZSBlZmZlY3RzLCB3ZSBrbm93IHdlIGRvbid0IG5lZWQgdG8gdW5mb2xkIHRoaXMK
KyAgICAvLyBleHByZXNzaW9uOiB0aGVyZSB3aWxsIGJlIG5vIHNob3J0LWNpcmN1aXRpbmcgc2lk
ZSBlZmZlY3RzIHRvIGF2b2lkCisgICAgLy8gKG5vdGU6IHVuZm9sZGluZyBkb2Vzbid0IGRlcGVu
ZCBvbiB0aGUgbGVmdCBub2RlIC0tIGl0IHdpbGwgYWx3YXlzIGJlIGV2YWx1YXRlZCkKKyAgICBp
ZiAoIW5vZGUtPmdldFJpZ2h0KCktPmhhc1NpZGVFZmZlY3RzKCkpCisgICAgeworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCiAgICAgewog
ICAgICAgY2FzZSBFT3BMb2dpY2FsT3I6CkBAIC00OSw3ICs1Nyw3IEBAIGJvb2wgVW5mb2xkU2hv
cnRDaXJjdWl0Ojp2aXNpdEJpbmFyeShWaXMKICAgICAgICAgICAgIG1UZW1wb3JhcnlJbmRleCA9
IGkgKyAxOwogICAgICAgICAgICAgbm9kZS0+Z2V0TGVmdCgpLT50cmF2ZXJzZShtT3V0cHV0SExT
TCk7CiAgICAgICAgICAgICBvdXQgPDwgIjtcbiI7Ci0gICAgICAgICAgICBvdXQgPDwgImlmKCFz
IiA8PCBpIDw8ICIpXG4iCisgICAgICAgICAgICBvdXQgPDwgImlmICghcyIgPDwgaSA8PCAiKVxu
IgogICAgICAgICAgICAgICAgICAgICJ7XG4iOwogICAgICAgICAgICAgbVRlbXBvcmFyeUluZGV4
ID0gaSArIDE7CiAgICAgICAgICAgICBub2RlLT5nZXRSaWdodCgpLT50cmF2ZXJzZSh0aGlzKTsK
QEAgLTgwLDcgKzg4LDcgQEAgYm9vbCBVbmZvbGRTaG9ydENpcmN1aXQ6OnZpc2l0QmluYXJ5KFZp
cwogICAgICAgICAgICAgbVRlbXBvcmFyeUluZGV4ID0gaSArIDE7CiAgICAgICAgICAgICBub2Rl
LT5nZXRMZWZ0KCktPnRyYXZlcnNlKG1PdXRwdXRITFNMKTsKICAgICAgICAgICAgIG91dCA8PCAi
O1xuIjsKLSAgICAgICAgICAgIG91dCA8PCAiaWYocyIgPDwgaSA8PCAiKVxuIgorICAgICAgICAg
ICAgb3V0IDw8ICJpZiAocyIgPDwgaSA8PCAiKVxuIgogICAgICAgICAgICAgICAgICAgICJ7XG4i
OwogICAgICAgICAgICAgbVRlbXBvcmFyeUluZGV4ID0gaSArIDE7CiAgICAgICAgICAgICBub2Rl
LT5nZXRSaWdodCgpLT50cmF2ZXJzZSh0aGlzKTsKQEAgLTExNSw3ICsxMjMsNyBAQCBib29sIFVu
Zm9sZFNob3J0Q2lyY3VpdDo6dmlzaXRTZWxlY3Rpb24oCiAKICAgICAgICAgbVRlbXBvcmFyeUlu
ZGV4ID0gaSArIDE7CiAgICAgICAgIG5vZGUtPmdldENvbmRpdGlvbigpLT50cmF2ZXJzZSh0aGlz
KTsKLSAgICAgICAgb3V0IDw8ICJpZigiOworICAgICAgICBvdXQgPDwgImlmICgiOwogICAgICAg
ICBtVGVtcG9yYXJ5SW5kZXggPSBpICsgMTsKICAgICAgICAgbm9kZS0+Z2V0Q29uZGl0aW9uKCkt
PnRyYXZlcnNlKG1PdXRwdXRITFNMKTsKICAgICAgICAgb3V0IDw8ICIpXG4iCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVW5mb2xkU2hvcnRDaXJjdWl0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1VuZm9sZFNo
b3J0Q2lyY3VpdC5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvVW5mb2xkU2hvcnRDaXJjdWl0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
LDcgKzEwLDcgQEAKICNkZWZpbmUgQ09NUElMRVJfVU5GT0xEU0hPUlRDSVJDVUlUX0hfCiAKICNp
bmNsdWRlICJjb21waWxlci9pbnRlcm1lZGlhdGUuaCIKLSNpbmNsdWRlICJjb21waWxlci9QYXJz
ZUhlbHBlci5oIgorI2luY2x1ZGUgImNvbXBpbGVyL1BhcnNlQ29udGV4dC5oIgogCiBuYW1lc3Bh
Y2Ugc2gKIHsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9VbmZv
bGRTaG9ydENpcmN1aXRBU1QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9VbmZvbGRTaG9ydENpcmN1aXRBU1QuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1VuZm9sZFNob3J0Q2lyY3Vp
dEFTVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MSBAQAorLy8KKy8vIENvcHlyaWdo
dCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKworI2luY2x1ZGUgImNvbXBpbGVyL1VuZm9sZFNob3J0Q2lyY3VpdEFTVC5oIgorCituYW1l
c3BhY2UKK3sKKworLy8gInggfHwgeSIgaXMgZXF1aXZhbGVudCB0byAieCA/IHRydWUgOiB5Ii4K
K1RJbnRlcm1TZWxlY3Rpb24gKlVuZm9sZE9SKFRJbnRlcm1UeXBlZCAqeCwgVEludGVybVR5cGVk
ICp5KQoreworICAgIGNvbnN0IFRUeXBlIGJvb2xUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCk7
CisgICAgQ29uc3RhbnRVbmlvbiAqdSA9IG5ldyBDb25zdGFudFVuaW9uOworICAgIHUtPnNldEJD
b25zdCh0cnVlKTsKKyAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqdHJ1ZU5vZGUgPSBuZXcgVElu
dGVybUNvbnN0YW50VW5pb24oCisgICAgICAgIHUsIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxQ29uc3QsIDEpKTsKKyAgICByZXR1cm4gbmV3IFRJbnRlcm1TZWxlY3Rpb24oeCwgdHJ1
ZU5vZGUsIHksIGJvb2xUeXBlKTsKK30KKworLy8gInggJiYgeSIgaXMgZXF1aXZhbGVudCB0byAi
eCA/IHkgOiBmYWxzZSIuCitUSW50ZXJtU2VsZWN0aW9uICpVbmZvbGRBTkQoVEludGVybVR5cGVk
ICp4LCBUSW50ZXJtVHlwZWQgKnkpCit7CisgICAgY29uc3QgVFR5cGUgYm9vbFR5cGUoRWJ0Qm9v
bCwgRWJwVW5kZWZpbmVkKTsKKyAgICBDb25zdGFudFVuaW9uICp1ID0gbmV3IENvbnN0YW50VW5p
b247CisgICAgdS0+c2V0QkNvbnN0KGZhbHNlKTsKKyAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAq
ZmFsc2VOb2RlID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKAorICAgICAgICB1LCBUVHlwZShF
YnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0LCAxKSk7CisgICAgcmV0dXJuIG5ldyBUSW50
ZXJtU2VsZWN0aW9uKHgsIHksIGZhbHNlTm9kZSwgYm9vbFR5cGUpOworfQorCit9ICAvLyBuYW1l
c3BhY2UgYW5vbnltb3VzCisKK2Jvb2wgVW5mb2xkU2hvcnRDaXJjdWl0QVNUOjp2aXNpdEJpbmFy
eShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkKK3sKKyAgICBUSW50ZXJtU2VsZWN0
aW9uICpyZXBsYWNlbWVudCA9IE5VTEw7CisKKyAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCisg
ICAgeworICAgICAgY2FzZSBFT3BMb2dpY2FsT3I6CisgICAgICAgIHJlcGxhY2VtZW50ID0gVW5m
b2xkT1Iobm9kZS0+Z2V0TGVmdCgpLCBub2RlLT5nZXRSaWdodCgpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIEVPcExvZ2ljYWxBbmQ6CisgICAgICAgIHJlcGxhY2VtZW50ID0gVW5mb2xk
QU5EKG5vZGUtPmdldExlZnQoKSwgbm9kZS0+Z2V0UmlnaHQoKSk7CisgICAgICAgIGJyZWFrOwor
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChyZXBsYWNlbWVu
dCkKKyAgICB7CisgICAgICAgIHJlcGxhY2VtZW50cy5wdXNoX2JhY2soCisgICAgICAgICAgICBO
b2RlVXBkYXRlRW50cnkoZ2V0UGFyZW50Tm9kZSgpLCBub2RlLCByZXBsYWNlbWVudCkpOworICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBVbmZvbGRTaG9ydENpcmN1aXRBU1Q6OnVw
ZGF0ZVRyZWUoKQoreworICAgIGZvciAoc2l6ZV90IGlpID0gMDsgaWkgPCByZXBsYWNlbWVudHMu
c2l6ZSgpOyArK2lpKQorICAgIHsKKyAgICAgICAgY29uc3QgTm9kZVVwZGF0ZUVudHJ5JiBlbnRy
eSA9IHJlcGxhY2VtZW50c1tpaV07CisgICAgICAgIEFTU0VSVChlbnRyeS5wYXJlbnQpOworICAg
ICAgICBib29sIHJlcGxhY2VkID0gZW50cnkucGFyZW50LT5yZXBsYWNlQ2hpbGROb2RlKAorICAg
ICAgICAgICAgZW50cnkub3JpZ2luYWwsIGVudHJ5LnJlcGxhY2VtZW50KTsKKyAgICAgICAgQVNT
RVJUKHJlcGxhY2VkKTsKKworICAgICAgICAvLyBJbiBBU1QgdHJhdmVyc2luZywgYSBwYXJlbnQg
aXMgdmlzaXRlZCBiZWZvcmUgaXRzIGNoaWxkcmVuLgorICAgICAgICAvLyBBZnRlciB3ZSByZXBs
YWNlIGEgbm9kZSwgaWYgYW4gaW1tZWRpYXRlIGNoaWxkIGlzIHRvCisgICAgICAgIC8vIGJlIHJl
cGxhY2VkLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCB1cGRhdGUgdGhlIHJlcGxhY2Vk
CisJLy8gbm9kZTsgaW5zdGVhZCwgd2UgdXBkYXRlIHRoZSByZXBsYWNlbWVudCBub2RlLgorICAg
ICAgICBmb3IgKHNpemVfdCBqaiA9IGlpICsgMTsgamogPCByZXBsYWNlbWVudHMuc2l6ZSgpOyAr
K2pqKQorICAgICAgICB7CisgICAgICAgICAgICBOb2RlVXBkYXRlRW50cnkmIGVudHJ5MiA9IHJl
cGxhY2VtZW50c1tqal07CisgICAgICAgICAgICBpZiAoZW50cnkyLnBhcmVudCA9PSBlbnRyeS5v
cmlnaW5hbCkKKyAgICAgICAgICAgICAgICBlbnRyeTIucGFyZW50ID0gZW50cnkucmVwbGFjZW1l
bnQ7CisgICAgICAgIH0KKyAgICB9Cit9CisKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9VbmZvbGRTaG9ydENpcmN1aXRBU1QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVW5mb2xkU2hvcnRDaXJjdWl0QVNULmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVW5m
b2xkU2hvcnRDaXJjdWl0QVNULmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLy8K
Ky8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKy8vIFVuZm9sZFNob3J0Q2lyY3VpdEFTVCBpcyBhbiBBU1QgdHJhdmVy
c2VyIHRvIHJlcGxhY2Ugc2hvcnQtY2lyY3VpdGluZworLy8gb3BlcmF0aW9ucyB3aXRoIHRlcm5h
cnkgb3BlcmF0aW9ucy4KKy8vCisKKyNpZm5kZWYgQ09NUElMRVJfVU5GT0xEX1NIT1JUX0NJUkNV
SVRfQVNUX0hfCisjZGVmaW5lIENPTVBJTEVSX1VORk9MRF9TSE9SVF9DSVJDVUlUX0FTVF9IXwor
CisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJjb21waWxlci9pbnRl
cm1lZGlhdGUuaCIKKworLy8gVGhpcyB0cmF2ZXJzZXIgaWRlbnRpZmllcyBhbGwgdGhlIHNob3J0
IGNpcmN1aXQgYmluYXJ5ICBub2RlcyB0aGF0IG5lZWQgdG8KKy8vIGJlIHJlcGxhY2VkLCBhbmQg
Y3JlYXRlcyB0aGUgY29ycmVzcG9uZGluZyByZXBsYWNlbWVudCBub2Rlcy4gSG93ZXZlciwKKy8v
IHRoZSBhY3R1YWwgcmVwbGFjZW1lbnRzIGhhcHBlbiBhZnRlciB0aGUgdHJhdmVyc2UgdGhyb3Vn
aCB1cGRhdGVUcmVlKCkuCisKK2NsYXNzIFVuZm9sZFNob3J0Q2lyY3VpdEFTVCA6IHB1YmxpYyBU
SW50ZXJtVHJhdmVyc2VyCit7CisgIHB1YmxpYzoKKyAgICBVbmZvbGRTaG9ydENpcmN1aXRBU1Qo
KSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCB2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVy
bUJpbmFyeSAqKTsKKworICAgIHZvaWQgdXBkYXRlVHJlZSgpOworCisgIHByaXZhdGU6CisgICAg
c3RydWN0IE5vZGVVcGRhdGVFbnRyeQorICAgIHsKKyAgICAgICAgTm9kZVVwZGF0ZUVudHJ5KFRJ
bnRlcm1Ob2RlICpfcGFyZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybU5vZGUg
Kl9vcmlnaW5hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICpfcmVwbGFj
ZW1lbnQpCisgICAgICAgICAgICA6IHBhcmVudChfcGFyZW50KSwKKyAgICAgICAgICAgICAgb3Jp
Z2luYWwoX29yaWdpbmFsKSwKKyAgICAgICAgICAgICAgcmVwbGFjZW1lbnQoX3JlcGxhY2VtZW50
KSB7fQorCisgICAgICAgIFRJbnRlcm1Ob2RlICpwYXJlbnQ7CisgICAgICAgIFRJbnRlcm1Ob2Rl
ICpvcmlnaW5hbDsKKyAgICAgICAgVEludGVybU5vZGUgKnJlcGxhY2VtZW50OworICAgIH07CisK
KyAgICAvLyBEdXJpbmcgdHJhdmVyc2luZywgc2F2ZSBhbGwgdGhlIHJlcGxhY2VtZW50cyB0aGF0
IG5lZWQgdG8gaGFwcGVuOworICAgIC8vIHRoZW4gcmVwbGFjZSB0aGVtIGJ5IGNhbGxpbmcgdXBk
YXRlTm9kZXMoKS4KKyAgICBzdGQ6OnZlY3RvcjxOb2RlVXBkYXRlRW50cnk+IHJlcGxhY2VtZW50
czsKKworICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihVbmZvbGRTaG9ydENpcmN1aXRBU1Qp
OworfTsKKworI2VuZGlmICAvLyBDT01QSUxFUl9VTkZPTERfU0hPUlRfQ0lSQ1VJVF9BU1RfSF8K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Vbmlmb3JtLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVW5pZm9y
bS5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9Vbmlmb3JtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwyMSArMSwyMSBAQAotLy8N
Ci0vLyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4NCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQotLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4NCi0vLw0KLQ0KLSNpbmNsdWRlICJjb21waWxlci9Vbmlmb3JtLmgiDQotDQotbmFt
ZXNwYWNlIHNoDQotew0KLQ0KLVVuaWZvcm06OlVuaWZvcm0oR0xlbnVtIHR5cGUsIEdMZW51bSBw
cmVjaXNpb24sIGNvbnN0IGNoYXIgKm5hbWUsIGludCBhcnJheVNpemUsIGludCByZWdpc3Rlcklu
ZGV4KQ0KLXsNCi0gICAgdGhpcy0+dHlwZSA9IHR5cGU7DQotICAgIHRoaXMtPnByZWNpc2lvbiA9
IHByZWNpc2lvbjsNCi0gICAgdGhpcy0+bmFtZSA9IG5hbWU7DQotICAgIHRoaXMtPmFycmF5U2l6
ZSA9IGFycmF5U2l6ZTsNCi0gICAgdGhpcy0+cmVnaXN0ZXJJbmRleCA9IHJlZ2lzdGVySW5kZXg7
DQotfQ0KLQ0KLX0NCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgImNvbXBpbGVyL1VuaWZvcm0u
aCIKKworbmFtZXNwYWNlIHNoCit7CisKK1VuaWZvcm06OlVuaWZvcm0oR0xlbnVtIHR5cGUsIEdM
ZW51bSBwcmVjaXNpb24sIGNvbnN0IGNoYXIgKm5hbWUsIGludCBhcnJheVNpemUsIGludCByZWdp
c3RlckluZGV4KQoreworICAgIHRoaXMtPnR5cGUgPSB0eXBlOworICAgIHRoaXMtPnByZWNpc2lv
biA9IHByZWNpc2lvbjsKKyAgICB0aGlzLT5uYW1lID0gbmFtZTsKKyAgICB0aGlzLT5hcnJheVNp
emUgPSBhcnJheVNpemU7CisgICAgdGhpcy0+cmVnaXN0ZXJJbmRleCA9IHJlZ2lzdGVySW5kZXg7
Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Vbmlm
b3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L1VuaWZvcm0uaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL1VuaWZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMSwzNSArMSwzNSBAQAot
Ly8NCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4NCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQotLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4NCi0vLw0KLQ0KLSNpZm5kZWYgQ09NUElMRVJfVU5JRk9STV9IXw0KLSNkZWZp
bmUgQ09NUElMRVJfVU5JRk9STV9IXw0KLQ0KLSNpbmNsdWRlIDxzdHJpbmc+DQotI2luY2x1ZGUg
PHZlY3Rvcj4NCi0NCi0jZGVmaW5lIEdMX0FQSUNBTEwNCi0jaW5jbHVkZSA8R0xFUzIvZ2wyLmg+
DQotDQotbmFtZXNwYWNlIHNoDQotew0KLQ0KLXN0cnVjdCBVbmlmb3JtDQotew0KLSAgICBVbmlm
b3JtKEdMZW51bSB0eXBlLCBHTGVudW0gcHJlY2lzaW9uLCBjb25zdCBjaGFyICpuYW1lLCBpbnQg
YXJyYXlTaXplLCBpbnQgcmVnaXN0ZXJJbmRleCk7DQotDQotICAgIEdMZW51bSB0eXBlOw0KLSAg
ICBHTGVudW0gcHJlY2lzaW9uOw0KLSAgICBzdGQ6OnN0cmluZyBuYW1lOw0KLSAgICB1bnNpZ25l
ZCBpbnQgYXJyYXlTaXplOw0KLSAgICANCi0gICAgaW50IHJlZ2lzdGVySW5kZXg7DQotfTsNCi0N
Ci10eXBlZGVmIHN0ZDo6dmVjdG9yPFVuaWZvcm0+IEFjdGl2ZVVuaWZvcm1zOw0KLQ0KLX0NCi0N
Ci0jZW5kaWYgICAvLyBDT01QSUxFUl9VTklGT1JNX0hfDQorLy8KKy8vIENvcHlyaWdodCAoYykg
MjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpZm5k
ZWYgQ09NUElMRVJfVU5JRk9STV9IXworI2RlZmluZSBDT01QSUxFUl9VTklGT1JNX0hfCisKKyNp
bmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjZGVmaW5lIEdMX0FQSUNBTEwK
KyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKworbmFtZXNwYWNlIHNoCit7CisKK3N0cnVjdCBVbmlm
b3JtCit7CisgICAgVW5pZm9ybShHTGVudW0gdHlwZSwgR0xlbnVtIHByZWNpc2lvbiwgY29uc3Qg
Y2hhciAqbmFtZSwgaW50IGFycmF5U2l6ZSwgaW50IHJlZ2lzdGVySW5kZXgpOworCisgICAgR0xl
bnVtIHR5cGU7CisgICAgR0xlbnVtIHByZWNpc2lvbjsKKyAgICBzdGQ6OnN0cmluZyBuYW1lOwor
ICAgIHVuc2lnbmVkIGludCBhcnJheVNpemU7CisgICAgCisgICAgaW50IHJlZ2lzdGVySW5kZXg7
Cit9OworCit0eXBlZGVmIHN0ZDo6dmVjdG9yPFVuaWZvcm0+IEFjdGl2ZVVuaWZvcm1zOworCit9
CisKKyNlbmRpZiAgIC8vIENPTVBJTEVSX1VOSUZPUk1fSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9WYWxpZGF0ZUxpbWl0YXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVmFsaWRhdGVMaW1pdGF0
aW9ucy5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9WYWxpZGF0ZUxpbWl0YXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNyw3
ICs3LDcgQEAKICNpbmNsdWRlICJjb21waWxlci9WYWxpZGF0ZUxpbWl0YXRpb25zLmgiCiAjaW5j
bHVkZSAiY29tcGlsZXIvSW5mb1NpbmsuaCIKICNpbmNsdWRlICJjb21waWxlci9Jbml0aWFsaXpl
UGFyc2VDb250ZXh0LmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvUGFyc2VIZWxwZXIuaCIKKyNpbmNs
dWRlICJjb21waWxlci9QYXJzZUNvbnRleHQuaCIKIAogbmFtZXNwYWNlIHsKIGJvb2wgSXNMb29w
SW5kZXgoY29uc3QgVEludGVybVN5bWJvbCogc3ltYm9sLCBjb25zdCBUTG9vcFN0YWNrJiBzdGFj
aykgewpAQCAtNDM1LDcgKzQzNSw3IEBAIGJvb2wgVmFsaWRhdGVMaW1pdGF0aW9uczo6dmFsaWRh
dGVGdW5jdGkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBib29sIHZhbGlkID0gdHJ1ZTsK
LSAgICBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gR2xvYmFsUGFyc2VDb250ZXh0LT5zeW1i
b2xUYWJsZTsKKyAgICBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gR2V0R2xvYmFsUGFyc2VD
b250ZXh0KCktPnN5bWJvbFRhYmxlOwogICAgIFRTeW1ib2wqIHN5bWJvbCA9IHN5bWJvbFRhYmxl
LmZpbmQobm9kZS0+Z2V0TmFtZSgpKTsKICAgICBBU1NFUlQoc3ltYm9sICYmIHN5bWJvbC0+aXNG
dW5jdGlvbigpKTsKICAgICBURnVuY3Rpb24qIGZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8VEZ1bmN0
aW9uKj4oc3ltYm9sKTsKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBib29sIFZhbGlkYXRlTGltaXRhdGlv
bnM6OnZhbGlkYXRlRnVuY3RpCiBib29sIFZhbGlkYXRlTGltaXRhdGlvbnM6OnZhbGlkYXRlT3Bl
cmF0aW9uKFRJbnRlcm1PcGVyYXRvciogbm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVEludGVybU5vZGUqIG9wZXJhbmQpIHsKICAgICAvLyBDaGVjayBp
ZiBsb29wIGluZGV4IGlzIG1vZGlmaWVkIGluIHRoZSBsb29wIGJvZHkuCi0gICAgaWYgKCF3aXRo
aW5Mb29wQm9keSgpIHx8ICFub2RlLT5tb2RpZmllc1N0YXRlKCkpCisgICAgaWYgKCF3aXRoaW5M
b29wQm9keSgpIHx8ICFub2RlLT5pc0Fzc2lnbm1lbnQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICBjb25zdCBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBvcGVyYW5kLT5nZXRBc1N5bWJv
bE5vZGUoKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9WYXJp
YWJsZUluZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9WYXJpYWJsZUluZm8uY3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVmFyaWFibGVJbmZvLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNiwxNSArNiwxNyBAQAogCiAjaW5jbHVkZSAiY29tcGlsZXIvVmFyaWFibGVJbmZvLmgi
CiAKLXN0YXRpYyBUU3RyaW5nIGFycmF5QnJhY2tldHMoaW50IGluZGV4KQorbmFtZXNwYWNlIHsK
KworVFN0cmluZyBhcnJheUJyYWNrZXRzKGludCBpbmRleCkKIHsKICAgICBUU3RyaW5nU3RyZWFt
IHN0cmVhbTsKICAgICBzdHJlYW0gPDwgIlsiIDw8IGluZGV4IDw8ICJdIjsKICAgICByZXR1cm4g
c3RyZWFtLnN0cigpOwogfQogCi0vLyBSZXR1cm5zIHRoZSBkYXRhIHR5cGUgZm9yIGFuIGF0dHJp
YnV0ZSBvciB1bmlmb3JtLgotc3RhdGljIFNoRGF0YVR5cGUgZ2V0VmFyaWFibGVEYXRhVHlwZShj
b25zdCBUVHlwZSYgdHlwZSkKKy8vIFJldHVybnMgdGhlIGRhdGEgdHlwZSBmb3IgYW4gYXR0cmli
dXRlLCB1bmlmb3JtLCBvciB2YXJ5aW5nLgorU2hEYXRhVHlwZSBnZXRWYXJpYWJsZURhdGFUeXBl
KGNvbnN0IFRUeXBlJiB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZS5nZXRCYXNpY1R5cGUoKSkg
ewogICAgICAgY2FzZSBFYnRGbG9hdDoKQEAgLTcwLDIyICs3MiwyMiBAQCBzdGF0aWMgU2hEYXRh
VHlwZSBnZXRWYXJpYWJsZURhdGFUeXBlKGNvCiAgICAgcmV0dXJuIFNIX05PTkU7CiB9CiAKLXN0
YXRpYyB2b2lkIGdldEJ1aWx0SW5WYXJpYWJsZUluZm8oY29uc3QgVFR5cGUmIHR5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcmIG5hbWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcmIG1hcHBlZE5hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRWYXJpYWJsZUluZm9MaXN0JiBp
bmZvTGlzdCk7Ci1zdGF0aWMgdm9pZCBnZXRVc2VyRGVmaW5lZFZhcmlhYmxlSW5mbyhjb25zdCBU
VHlwZSYgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRTdHJpbmcmIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUU3RyaW5nJiBtYXBwZWROYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVFZhcmlhYmxlSW5mb0xpc3QmIGluZm9MaXN0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2hIYXNoRnVuY3Rpb242NCBoYXNoRnVuY3Rpb24pOwotCi0v
LyBSZXR1cm5zIGluZm8gZm9yIGFuIGF0dHJpYnV0ZSBvciB1bmlmb3JtLgotc3RhdGljIHZvaWQg
Z2V0VmFyaWFibGVJbmZvKGNvbnN0IFRUeXBlJiB0eXBlLAordm9pZCBnZXRCdWlsdEluVmFyaWFi
bGVJbmZvKGNvbnN0IFRUeXBlJiB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRTdHJpbmcmIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0
cmluZyYgbWFwcGVkTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVmFyaWFibGVJ
bmZvTGlzdCYgaW5mb0xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hIYXNoRnVu
Y3Rpb242NCBoYXNoRnVuY3Rpb24pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFZhcmlh
YmxlSW5mb0xpc3QmIGluZm9MaXN0KTsKK3ZvaWQgZ2V0VXNlckRlZmluZWRWYXJpYWJsZUluZm8o
Y29uc3QgVFR5cGUmIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRTdHJpbmcmIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRT
dHJpbmcmIG1hcHBlZE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRWYXJp
YWJsZUluZm9MaXN0JiBpbmZvTGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2hIYXNoRnVuY3Rpb242NCBoYXNoRnVuY3Rpb24pOworCisvLyBSZXR1cm5zIGluZm8gZm9yIGFu
IGF0dHJpYnV0ZSwgdW5pZm9ybSwgb3IgdmFyeWluZy4KK3ZvaWQgZ2V0VmFyaWFibGVJbmZvKGNv
bnN0IFRUeXBlJiB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyYgbmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcmIG1hcHBlZE5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICBUVmFyaWFibGVJbmZvTGlzdCYgaW5mb0xpc3QsCisgICAgICAgICAg
ICAgICAgICAgICBTaEhhc2hGdW5jdGlvbjY0IGhhc2hGdW5jdGlvbikKIHsKICAgICBpZiAodHlw
ZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpIHsKICAgICAgICAgaWYgKHR5cGUuaXNBcnJh
eSgpKSB7CkBAIC0xMTksNiArMTIxLDcgQEAgdm9pZCBnZXRCdWlsdEluVmFyaWFibGVJbmZvKGNv
bnN0IFRUeXBlJgogICAgICAgICB2YXJJbmZvLm1hcHBlZE5hbWUgPSBtYXBwZWROYW1lLmNfc3Ry
KCk7CiAgICAgICAgIHZhckluZm8uc2l6ZSA9IDE7CiAgICAgfQorICAgIHZhckluZm8ucHJlY2lz
aW9uID0gdHlwZS5nZXRQcmVjaXNpb24oKTsKICAgICB2YXJJbmZvLnR5cGUgPSBnZXRWYXJpYWJs
ZURhdGFUeXBlKHR5cGUpOwogICAgIGluZm9MaXN0LnB1c2hfYmFjayh2YXJJbmZvKTsKIH0KQEAg
LTE0Myw3NSArMTQ2LDE0NCBAQCB2b2lkIGdldFVzZXJEZWZpbmVkVmFyaWFibGVJbmZvKGNvbnN0
IFRUCiAgICAgfQogfQogCitUVmFyaWFibGVJbmZvKiBmaW5kVmFyaWFibGUoY29uc3QgVFR5cGUm
IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyYgbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVmFyaWFibGVJbmZvTGlzdCYgaW5mb0xpc3Qp
Cit7CisgICAgLy8gVE9ETyh6bW8pOiBvcHRpbWl6ZSB0aGlzIGZ1bmN0aW9uLgorICAgIFRTdHJp
bmcgbXlOYW1lID0gbmFtZTsKKyAgICBpZiAodHlwZS5pc0FycmF5KCkpCisgICAgICAgIG15TmFt
ZSArPSAiWzBdIjsKKyAgICBmb3IgKHNpemVfdCBpaSA9IDA7IGlpIDwgaW5mb0xpc3Quc2l6ZSgp
OyArK2lpKQorICAgIHsKKyAgICAgICAgaWYgKGluZm9MaXN0W2lpXS5uYW1lLmNfc3RyKCkgPT0g
bXlOYW1lKQorICAgICAgICAgICAgcmV0dXJuICYoaW5mb0xpc3RbaWldKTsKKyAgICB9CisgICAg
cmV0dXJuIE5VTEw7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbm9ueW1vdXMKKwogVFZhcmlhYmxl
SW5mbzo6VFZhcmlhYmxlSW5mbygpCisgICAgOiB0eXBlKFNIX05PTkUpLAorICAgICAgc2l6ZSgw
KSwKKyAgICAgIHByZWNpc2lvbihFYnBVbmRlZmluZWQpLAorICAgICAgc3RhdGljVXNlKGZhbHNl
KQogewogfQogCiBUVmFyaWFibGVJbmZvOjpUVmFyaWFibGVJbmZvKFNoRGF0YVR5cGUgdHlwZSwg
aW50IHNpemUpCiAgICAgOiB0eXBlKHR5cGUpLAotICAgICAgc2l6ZShzaXplKQorICAgICAgc2l6
ZShzaXplKSwKKyAgICAgIHByZWNpc2lvbihFYnBVbmRlZmluZWQpLAorICAgICAgc3RhdGljVXNl
KGZhbHNlKQogewogfQogCi1Db2xsZWN0QXR0cmlic1VuaWZvcm1zOjpDb2xsZWN0QXR0cmlic1Vu
aWZvcm1zKFRWYXJpYWJsZUluZm9MaXN0JiBhdHRyaWJzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUVmFyaWFibGVJbmZvTGlzdCYgdW5pZm9ybXMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoSGFzaEZ1bmN0
aW9uNjQgaGFzaEZ1bmN0aW9uKQorQ29sbGVjdFZhcmlhYmxlczo6Q29sbGVjdFZhcmlhYmxlcyhU
VmFyaWFibGVJbmZvTGlzdCYgYXR0cmlicywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVFZhcmlhYmxlSW5mb0xpc3QmIHVuaWZvcm1zLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUVmFyaWFibGVJbmZvTGlzdCYgdmFyeWluZ3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNoSGFzaEZ1bmN0aW9uNjQgaGFzaEZ1bmN0aW9uKQogICAg
IDogbUF0dHJpYnMoYXR0cmlicyksCiAgICAgICBtVW5pZm9ybXModW5pZm9ybXMpLAorICAgICAg
bVZhcnlpbmdzKHZhcnlpbmdzKSwKKyAgICAgIG1Qb2ludENvb3JkQWRkZWQoZmFsc2UpLAorICAg
ICAgbUZyb250RmFjaW5nQWRkZWQoZmFsc2UpLAorICAgICAgbUZyYWdDb29yZEFkZGVkKGZhbHNl
KSwKICAgICAgIG1IYXNoRnVuY3Rpb24oaGFzaEZ1bmN0aW9uKQogewogfQogCi0vLyBXZSBhcmUg
b25seSBpbnRlcmVzdGVkIGluIGF0dHJpYnV0ZSBhbmQgdW5pZm9ybSB2YXJpYWJsZSBkZWNsYXJh
dGlvbi4KLXZvaWQgQ29sbGVjdEF0dHJpYnNVbmlmb3Jtczo6dmlzaXRTeW1ib2woVEludGVybVN5
bWJvbCopCi17Ci19Ci0KLXZvaWQgQ29sbGVjdEF0dHJpYnNVbmlmb3Jtczo6dmlzaXRDb25zdGFu
dFVuaW9uKFRJbnRlcm1Db25zdGFudFVuaW9uKikKLXsKLX0KLQotYm9vbCBDb2xsZWN0QXR0cmli
c1VuaWZvcm1zOjp2aXNpdEJpbmFyeShWaXNpdCwgVEludGVybUJpbmFyeSopCi17Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi1ib29sIENvbGxlY3RBdHRyaWJzVW5pZm9ybXM6OnZpc2l0VW5hcnko
VmlzaXQsIFRJbnRlcm1VbmFyeSopCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIENv
bGxlY3RBdHRyaWJzVW5pZm9ybXM6OnZpc2l0U2VsZWN0aW9uKFZpc2l0LCBUSW50ZXJtU2VsZWN0
aW9uKikKLXsKLSAgICByZXR1cm4gZmFsc2U7CisvLyBXZSB3YW50IHRvIGNoZWNrIHdoZXRoZXIg
YSB1bmlmb3JtL3ZhcnlpbmcgaXMgc3RhdGljYWxseSB1c2VkCisvLyBiZWNhdXNlIHdlIG9ubHkg
Y291bnQgdGhlIHVzZWQgb25lcyBpbiBwYWNraW5nIGNvbXB1dGluZy4KKy8vIEFsc28sIGdsX0Zy
YWdDb29yZCwgZ2xfUG9pbnRDb29yZCwgYW5kIGdsX0Zyb250RmFjaW5nIGNvdW50CisvLyB0b3dh
cmQgdmFyeWluZyBjb3VudGluZyBpZiB0aGV5IGFyZSBzdGF0aWNhbGx5IHVzZWQgaW4gYSBmcmFn
bWVudAorLy8gc2hhZGVyLgordm9pZCBDb2xsZWN0VmFyaWFibGVzOjp2aXNpdFN5bWJvbChUSW50
ZXJtU3ltYm9sKiBzeW1ib2wpCit7CisgICAgQVNTRVJUKHN5bWJvbCAhPSBOVUxMKTsKKyAgICBU
VmFyaWFibGVJbmZvKiB2YXIgPSBOVUxMOworICAgIHN3aXRjaCAoc3ltYm9sLT5nZXRRdWFsaWZp
ZXIoKSkKKyAgICB7CisgICAgY2FzZSBFdnFWYXJ5aW5nT3V0OgorICAgIGNhc2UgRXZxSW52YXJp
YW50VmFyeWluZ091dDoKKyAgICBjYXNlIEV2cVZhcnlpbmdJbjoKKyAgICBjYXNlIEV2cUludmFy
aWFudFZhcnlpbmdJbjoKKyAgICAgICAgdmFyID0gZmluZFZhcmlhYmxlKHN5bWJvbC0+Z2V0VHlw
ZSgpLCBzeW1ib2wtPmdldFN5bWJvbCgpLCBtVmFyeWluZ3MpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEV2cVVuaWZvcm06CisgICAgICAgIHZhciA9IGZpbmRWYXJpYWJsZShzeW1ib2wtPmdl
dFR5cGUoKSwgc3ltYm9sLT5nZXRTeW1ib2woKSwgbVVuaWZvcm1zKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBFdnFGcmFnQ29vcmQ6CisgICAgICAgIGlmICghbUZyYWdDb29yZEFkZGVkKSB7
CisgICAgICAgICAgICBUVmFyaWFibGVJbmZvIGluZm87CisgICAgICAgICAgICBpbmZvLm5hbWUg
PSAiZ2xfRnJhZ0Nvb3JkIjsKKyAgICAgICAgICAgIGluZm8ubWFwcGVkTmFtZSA9ICJnbF9GcmFn
Q29vcmQiOworICAgICAgICAgICAgaW5mby50eXBlID0gU0hfRkxPQVRfVkVDNDsKKyAgICAgICAg
ICAgIGluZm8uc2l6ZSA9IDE7CisgICAgICAgICAgICBpbmZvLnByZWNpc2lvbiA9IEVicE1lZGl1
bTsgIC8vIFVzZSBtZWRpdW1wIGFzIGl0IGRvZXNuJ3QgcmVhbGx5IG1hdHRlci4KKyAgICAgICAg
ICAgIGluZm8uc3RhdGljVXNlID0gdHJ1ZTsKKwkgICAgbVZhcnlpbmdzLnB1c2hfYmFjayhpbmZv
KTsKKyAgICAgICAgICAgIG1GcmFnQ29vcmRBZGRlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgRXZxRnJvbnRGYWNpbmc6CisgICAgICAgIGlmICghbUZyb250
RmFjaW5nQWRkZWQpIHsKKyAgICAgICAgICAgIFRWYXJpYWJsZUluZm8gaW5mbzsKKyAgICAgICAg
ICAgIGluZm8ubmFtZSA9ICJnbF9Gcm9udEZhY2luZyI7CisgICAgICAgICAgICBpbmZvLm1hcHBl
ZE5hbWUgPSAiZ2xfRnJvbnRGYWNpbmciOworICAgICAgICAgICAgaW5mby50eXBlID0gU0hfQk9P
TDsKKyAgICAgICAgICAgIGluZm8uc2l6ZSA9IDE7CisgICAgICAgICAgICBpbmZvLnByZWNpc2lv
biA9IEVicFVuZGVmaW5lZDsKKyAgICAgICAgICAgIGluZm8uc3RhdGljVXNlID0gdHJ1ZTsKKwkg
ICAgbVZhcnlpbmdzLnB1c2hfYmFjayhpbmZvKTsKKyAgICAgICAgICAgIG1Gcm9udEZhY2luZ0Fk
ZGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgY2FzZSBFdnFQb2lu
dENvb3JkOgorICAgICAgICBpZiAoIW1Qb2ludENvb3JkQWRkZWQpIHsKKyAgICAgICAgICAgIFRW
YXJpYWJsZUluZm8gaW5mbzsKKyAgICAgICAgICAgIGluZm8ubmFtZSA9ICJnbF9Qb2ludENvb3Jk
IjsKKyAgICAgICAgICAgIGluZm8ubWFwcGVkTmFtZSA9ICJnbF9Qb2ludENvb3JkIjsKKyAgICAg
ICAgICAgIGluZm8udHlwZSA9IFNIX0ZMT0FUX1ZFQzI7CisgICAgICAgICAgICBpbmZvLnNpemUg
PSAxOworICAgICAgICAgICAgaW5mby5wcmVjaXNpb24gPSBFYnBNZWRpdW07ICAvLyBVc2UgbWVk
aXVtcCBhcyBpdCBkb2Vzbid0IHJlYWxseSBtYXR0ZXIuCisgICAgICAgICAgICBpbmZvLnN0YXRp
Y1VzZSA9IHRydWU7CisJICAgIG1WYXJ5aW5ncy5wdXNoX2JhY2soaW5mbyk7CisgICAgICAgICAg
ICBtUG9pbnRDb29yZEFkZGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmICh2YXIpCisgICAgICAg
IHZhci0+c3RhdGljVXNlID0gdHJ1ZTsKIH0KIAotYm9vbCBDb2xsZWN0QXR0cmlic1VuaWZvcm1z
Ojp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0ZSogbm9kZSkKK2Jvb2wgQ29s
bGVjdFZhcmlhYmxlczo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUqIG5v
ZGUpCiB7Ci0gICAgYm9vbCB2aXNpdENoaWxkcmVuID0gZmFsc2U7CisgICAgYm9vbCB2aXNpdENo
aWxkcmVuID0gdHJ1ZTsKIAogICAgIHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkKICAgICB7Ci0gICAg
Y2FzZSBFT3BTZXF1ZW5jZToKLSAgICAgICAgLy8gV2UgbmVlZCB0byB2aXNpdCBzZXF1ZW5jZSBj
aGlsZHJlbiB0byBnZXQgdG8gdmFyaWFibGUgZGVjbGFyYXRpb25zLgotICAgICAgICB2aXNpdENo
aWxkcmVuID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBFT3BEZWNsYXJhdGlvbjog
ewogICAgICAgICBjb25zdCBUSW50ZXJtU2VxdWVuY2UmIHNlcXVlbmNlID0gbm9kZS0+Z2V0U2Vx
dWVuY2UoKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSBzZXF1ZW5jZS5mcm9udCgp
LT5nZXRBc1R5cGVkKCktPmdldFF1YWxpZmllcigpOwotICAgICAgICBpZiAocXVhbGlmaWVyID09
IEV2cUF0dHJpYnV0ZSB8fCBxdWFsaWZpZXIgPT0gRXZxVW5pZm9ybSkKKyAgICAgICAgaWYgKHF1
YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUgfHwgcXVhbGlmaWVyID09IEV2cVVuaWZvcm0gfHwKKyAg
ICAgICAgICAgIHF1YWxpZmllciA9PSBFdnFWYXJ5aW5nSW4gfHwgcXVhbGlmaWVyID09IEV2cVZh
cnlpbmdPdXQgfHwKKyAgICAgICAgICAgIHF1YWxpZmllciA9PSBFdnFJbnZhcmlhbnRWYXJ5aW5n
SW4gfHwgcXVhbGlmaWVyID09IEV2cUludmFyaWFudFZhcnlpbmdPdXQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIFRWYXJpYWJsZUluZm9MaXN0JiBpbmZvTGlzdCA9IHF1YWxpZmllciA9PSBFdnFB
dHRyaWJ1dGUgPwotICAgICAgICAgICAgICAgIG1BdHRyaWJzIDogbVVuaWZvcm1zOworICAgICAg
ICAgICAgVFZhcmlhYmxlSW5mb0xpc3QmIGluZm9MaXN0ID0gcXVhbGlmaWVyID09IEV2cUF0dHJp
YnV0ZSA/IG1BdHRyaWJzIDoKKyAgICAgICAgICAgICAgICAocXVhbGlmaWVyID09IEV2cVVuaWZv
cm0gPyBtVW5pZm9ybXMgOiBtVmFyeWluZ3MpOwogICAgICAgICAgICAgZm9yIChUSW50ZXJtU2Vx
dWVuY2U6OmNvbnN0X2l0ZXJhdG9yIGkgPSBzZXF1ZW5jZS5iZWdpbigpOwogICAgICAgICAgICAg
ICAgICBpICE9IHNlcXVlbmNlLmVuZCgpOyArK2kpCiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgY29uc3QgVEludGVybVN5bWJvbCogdmFyaWFibGUgPSAoKmkpLT5nZXRBc1N5bWJvbE5v
ZGUoKTsKICAgICAgICAgICAgICAgICAvLyBUaGUgb25seSBjYXNlIGluIHdoaWNoIHRoZSBzZXF1
ZW5jZSB3aWxsIG5vdCBjb250YWluIGEKICAgICAgICAgICAgICAgICAvLyBUSW50ZXJtU3ltYm9s
IG5vZGUgaXMgaW5pdGlhbGl6YXRpb24uIEl0IHdpbGwgY29udGFpbiBhCi0gICAgICAgICAgICAg
ICAgLy8gVEludGVyQmluYXJ5IG5vZGUgaW4gdGhhdCBjYXNlLiBTaW5jZSBhdHRyaWJ1dGVzIGFu
ZCB1bmlmcm9tcwotICAgICAgICAgICAgICAgIC8vIGNhbm5vdCBiZSBpbml0aWFsaXplZCBpbiBh
IHNoYWRlciwgd2UgbXVzdCBoYXZlIG9ubHkKLSAgICAgICAgICAgICAgICAvLyBUSW50ZXJtU3lt
Ym9sIG5vZGVzIGluIHRoZSBzZXF1ZW5jZS4KKyAgICAgICAgICAgICAgICAvLyBUSW50ZXJCaW5h
cnkgbm9kZSBpbiB0aGF0IGNhc2UuIFNpbmNlIGF0dHJpYnV0ZXMsIHVuaWZvcm1zLAorICAgICAg
ICAgICAgICAgIC8vIGFuZCB2YXJ5aW5ncyBjYW5ub3QgYmUgaW5pdGlhbGl6ZWQgaW4gYSBzaGFk
ZXIsIHdlIG11c3QgaGF2ZQorICAgICAgICAgICAgICAgIC8vIG9ubHkgVEludGVybVN5bWJvbCBu
b2RlcyBpbiB0aGUgc2VxdWVuY2UuCiAgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhYmxlICE9
IE5VTEwpOwogICAgICAgICAgICAgICAgIFRTdHJpbmcgcHJvY2Vzc2VkU3ltYm9sOwogICAgICAg
ICAgICAgICAgIGlmIChtSGFzaEZ1bmN0aW9uID09IE5VTEwpCkBAIC0yMjMsNiArMjk1LDcgQEAg
Ym9vbCBDb2xsZWN0QXR0cmlic1VuaWZvcm1zOjp2aXNpdEFnZ3JlZwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcm9jZXNzZWRTeW1ib2wsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluZm9MaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtSGFz
aEZ1bmN0aW9uKTsKKyAgICAgICAgICAgICAgICB2aXNpdENoaWxkcmVuID0gZmFsc2U7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC0yMzMsMTMgKzMwNiwzIEBA
IGJvb2wgQ29sbGVjdEF0dHJpYnNVbmlmb3Jtczo6dmlzaXRBZ2dyZWcKICAgICByZXR1cm4gdmlz
aXRDaGlsZHJlbjsKIH0KIAotYm9vbCBDb2xsZWN0QXR0cmlic1VuaWZvcm1zOjp2aXNpdExvb3Ao
VmlzaXQsIFRJbnRlcm1Mb29wKikKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgQ29s
bGVjdEF0dHJpYnNVbmlmb3Jtczo6dmlzaXRCcmFuY2goVmlzaXQsIFRJbnRlcm1CcmFuY2gqKQot
ewotICAgIHJldHVybiBmYWxzZTsKLX0KLQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL1ZhcmlhYmxlSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9WYXJpYWJsZUluZm8uaAkocmV2aXNpb24gMTU5NTMyKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1ZhcmlhYmxlSW5mby5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMCwyOCArMjAsMzAgQEAgc3RydWN0IFRWYXJpYWJsZUluZm8gewog
ICAgIFRQZXJzaXN0U3RyaW5nIG1hcHBlZE5hbWU7CiAgICAgU2hEYXRhVHlwZSB0eXBlOwogICAg
IGludCBzaXplOworICAgIFRQcmVjaXNpb24gcHJlY2lzaW9uOworICAgIGJvb2wgc3RhdGljVXNl
OwogfTsKIHR5cGVkZWYgc3RkOjp2ZWN0b3I8VFZhcmlhYmxlSW5mbz4gVFZhcmlhYmxlSW5mb0xp
c3Q7CiAKLS8vIFRyYXZlcnNlcyBpbnRlcm1lZGlhdGUgdHJlZSB0byBjb2xsZWN0IGFsbCBhdHRy
aWJ1dGVzIGFuZCB1bmlmb3Jtcy4KLWNsYXNzIENvbGxlY3RBdHRyaWJzVW5pZm9ybXMgOiBwdWJs
aWMgVEludGVybVRyYXZlcnNlciB7CisvLyBUcmF2ZXJzZXMgaW50ZXJtZWRpYXRlIHRyZWUgdG8g
Y29sbGVjdCBhbGwgYXR0cmlidXRlcywgdW5pZm9ybXMsIHZhcnlpbmdzLgorY2xhc3MgQ29sbGVj
dFZhcmlhYmxlcyA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyIHsKIHB1YmxpYzoKLSAgICBDb2xs
ZWN0QXR0cmlic1VuaWZvcm1zKFRWYXJpYWJsZUluZm9MaXN0JiBhdHRyaWJzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVFZhcmlhYmxlSW5mb0xpc3QmIHVuaWZvcm1zLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2hIYXNoRnVuY3Rpb242NCBoYXNoRnVuY3Rpb24pOworICAgIENv
bGxlY3RWYXJpYWJsZXMoVFZhcmlhYmxlSW5mb0xpc3QmIGF0dHJpYnMsCisgICAgICAgICAgICAg
ICAgICAgICBUVmFyaWFibGVJbmZvTGlzdCYgdW5pZm9ybXMsCisgICAgICAgICAgICAgICAgICAg
ICBUVmFyaWFibGVJbmZvTGlzdCYgdmFyeWluZ3MsCisgICAgICAgICAgICAgICAgICAgICBTaEhh
c2hGdW5jdGlvbjY0IGhhc2hGdW5jdGlvbik7CiAKICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRTeW1i
b2woVEludGVybVN5bWJvbCopOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdENvbnN0YW50VW5pb24o
VEludGVybUNvbnN0YW50VW5pb24qKTsKLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRCaW5hcnkoVmlz
aXQsIFRJbnRlcm1CaW5hcnkqKTsKLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRVbmFyeShWaXNpdCwg
VEludGVybVVuYXJ5Kik7Ci0gICAgdmlydHVhbCBib29sIHZpc2l0U2VsZWN0aW9uKFZpc2l0LCBU
SW50ZXJtU2VsZWN0aW9uKik7CiAgICAgdmlydHVhbCBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0
LCBUSW50ZXJtQWdncmVnYXRlKik7Ci0gICAgdmlydHVhbCBib29sIHZpc2l0TG9vcChWaXNpdCwg
VEludGVybUxvb3AqKTsKLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRCcmFuY2goVmlzaXQsIFRJbnRl
cm1CcmFuY2gqKTsKIAogcHJpdmF0ZToKICAgICBUVmFyaWFibGVJbmZvTGlzdCYgbUF0dHJpYnM7
CiAgICAgVFZhcmlhYmxlSW5mb0xpc3QmIG1Vbmlmb3JtczsKKyAgICBUVmFyaWFibGVJbmZvTGlz
dCYgbVZhcnlpbmdzOworCisgICAgYm9vbCBtUG9pbnRDb29yZEFkZGVkOworICAgIGJvb2wgbUZy
b250RmFjaW5nQWRkZWQ7CisgICAgYm9vbCBtRnJhZ0Nvb3JkQWRkZWQ7CiAKICAgICBTaEhhc2hG
dW5jdGlvbjY0IG1IYXNoRnVuY3Rpb247CiB9OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL2RlYnVnLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvZGVidWcuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZGVidWcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMiwxOSArMTIsMTAgQEAKICNpbmNsdWRlIDxzdGRpby5oPgogCiAjaW5jbHVkZSAiY29t
cGlsZXIvSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5oIgotI2luY2x1ZGUgImNvbXBpbGVyL1BhcnNl
SGVscGVyLmgiCi0KLSNpZiBkZWZpbmVkKF9fY2xhbmdfXykKLSNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBwdXNoCi0jcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLXZhcmlh
YmxlIgotI2VuZGlmCisjaW5jbHVkZSAiY29tcGlsZXIvUGFyc2VDb250ZXh0LmgiCiAKIHN0YXRp
YyBjb25zdCBpbnQga1RyYWNlQnVmZmVyTGVuID0gMTAyNDsKIAotI2lmIGRlZmluZWQoX19jbGFu
Z19fKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotI2VuZGlmCi0KICNpZmRlZiBUUkFD
RV9FTkFCTEVECiBleHRlcm4gIkMiIHsKIHZvaWQgVHJhY2UoY29uc3QgY2hhciAqZm9ybWF0LCAu
Li4pIHsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nZW5lcmF0
ZV9wYXJzZXIuc2gKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL2dlbmVyYXRlX3BhcnNlci5zaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dlbmVyYXRlX3BhcnNlci5zaAkod29ya2luZyBj
b3B5KQpAQCAtMjUsMyArMjUsNCBAQCBzY3JpcHRfZGlyPSQoZGlybmFtZSAkMCkKICMgR2VuZXJh
dGUgUGFyc2VyCiBydW5fZmxleCBnbHNsYW5nCiBydW5fYmlzb24gZ2xzbGFuZworcGF0Y2ggLS1z
aWxlbnQgLS1mb3J3YXJkIDwgNjRiaXQtbGV4ZXItc2FmZXR5LnBhdGNoCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy5sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLmwJKHJldmlzaW9uIDE1
OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLmwJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDE3ICszMywxMSBAQCBXSElDSCBHRU5FUkFURVMgVEhFIEdM
U0wgRVMgTEVYRVIgKGdsc2xhCiAjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDUwNSkKICNwcmFn
bWEgd2FybmluZyhkaXNhYmxlOiA0NzAxKQogI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fY2xhbmdf
XykKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgaWdub3JlZCAiLVd1bmtub3duLXByYWdtYXMiCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
aWdub3JlZCAiLVdkZXByZWNhdGVkLXJlZ2lzdGVyIgotI2VuZGlmCiB9CiAKICV7CiAjaW5jbHVk
ZSAiY29tcGlsZXIvZ2xzbGFuZy5oIgotI2luY2x1ZGUgImNvbXBpbGVyL1BhcnNlSGVscGVyLmgi
CisjaW5jbHVkZSAiY29tcGlsZXIvUGFyc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiY29tcGlsZXIv
cHJlcHJvY2Vzc29yL1Rva2VuLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdXRpbC5oIgogI2luY2x1
ZGUgImdsc2xhbmdfdGFiLmgiCkBAIC02Myw2ICs1Nyw4IEBAIFdISUNIIEdFTkVSQVRFUyBUSEUg
R0xTTCBFUyBMRVhFUiAoZ2xzbGEKIHN0YXRpYyB5eV9zaXplX3Qgc3RyaW5nX2lucHV0KGNoYXIq
IGJ1ZiwgeXlfc2l6ZV90IG1heF9zaXplLCB5eXNjYW5fdCB5eXNjYW5uZXIpOwogc3RhdGljIGlu
dCBjaGVja190eXBlKHl5c2Nhbl90IHl5c2Nhbm5lcik7CiBzdGF0aWMgaW50IHJlc2VydmVkX3dv
cmQoeXlzY2FuX3QgeXlzY2FubmVyKTsKK3N0YXRpYyBpbnQgaW50X2NvbnN0YW50KHl5c2Nhbl90
IHl5c2Nhbm5lcik7CitzdGF0aWMgaW50IGZsb2F0X2NvbnN0YW50KHl5c2Nhbl90IHl5c2Nhbm5l
cik7CiAlfQogCiAlb3B0aW9uIG5veXl3cmFwIG5vdW5wdXQgbmV2ZXItaW50ZXJhY3RpdmUKQEAg
LTE5NSwxMyArMTkxLDEzIEBAIE8gICAgICAgICAgIFswLTddCiAgICByZXR1cm4gY2hlY2tfdHlw
ZSh5eXNjYW5uZXIpOwogfQogCi0wW3hYXXtIfSsgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBz
dGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5U
OyB9Ci0we099KyAgICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+
KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9Ci17RH0rICAgICAg
ICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQs
IDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9Ci0KLXtEfSt7RX0gICAgICAgICAgIHsgeXls
dmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJu
IEZMT0FUQ09OU1RBTlQ7IH0KLXtEfSsiLiJ7RH0qKHtFfSk/IHsgeXlsdmFsLT5sZXguZiA9IHN0
YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7
IH0KLSIuIntEfSsoe0V9KT8gICAgIHsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0
PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KKzBbeFhde0h9KyAg
ICAgICAgIHsgcmV0dXJuIGludF9jb25zdGFudCh5eXNjYW5uZXIpOyB9Ciswe099KyAgICAgICAg
ICAgICB7IHJldHVybiBpbnRfY29uc3RhbnQoeXlzY2FubmVyKTsgfQore0R9KyAgICAgICAgICAg
ICAgeyByZXR1cm4gaW50X2NvbnN0YW50KHl5c2Nhbm5lcik7IH0KKwore0R9K3tFfSAgICAgICAg
ICAgeyByZXR1cm4gZmxvYXRfY29uc3RhbnQoeXlzY2FubmVyKTsgfQore0R9KyIuIntEfSooe0V9
KT8geyByZXR1cm4gZmxvYXRfY29uc3RhbnQoeXlzY2FubmVyKTsgfQorIi4ie0R9Kyh7RX0pPyAg
ICAgeyByZXR1cm4gZmxvYXRfY29uc3RhbnQoeXlzY2FubmVyKTsgfQogCiAiKz0iICAgICAgICAg
ICAgeyByZXR1cm4gQUREX0FTU0lHTjsgfQogIi09IiAgICAgICAgICAgIHsgcmV0dXJuIFNVQl9B
U1NJR047IH0KQEAgLTI1NiwxMCArMjUyLDYgQEAgTyAgICAgICAgICAgWzAtN10KIAogJSUKIAot
I2lmIGRlZmluZWQoX19jbGFuZ19fKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotI2Vu
ZGlmCi0KIHl5X3NpemVfdCBzdHJpbmdfaW5wdXQoY2hhciogYnVmLCB5eV9zaXplX3QgbWF4X3Np
emUsIHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAgIHBwOjpUb2tlbiB0b2tlbjsKICAgICB5eWdl
dF9leHRyYSh5eXNjYW5uZXIpLT5wcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7CkBAIC0yOTgsNiAr
MjkwLDI3IEBAIGludCByZXNlcnZlZF93b3JkKHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAgIHJl
dHVybiAwOwogfQogCit2b2lkIHl5ZXJyb3IoWVlMVFlQRSogbGxvYywgVFBhcnNlQ29udGV4dCog
Y29udGV4dCwgY29uc3QgY2hhciogcmVhc29uKSB7CisgICAgY29udGV4dC0+ZXJyb3IoKmxsb2Ms
IHJlYXNvbiwgeXlnZXRfdGV4dChjb250ZXh0LT5zY2FubmVyKSk7CisgICAgY29udGV4dC0+cmVj
b3ZlcigpOworfQorCitpbnQgaW50X2NvbnN0YW50KHl5c2Nhbl90IHl5c2Nhbm5lcikgeworICAg
IHN0cnVjdCB5eWd1dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIHl5c2Nhbm5lcjsKKwor
ICAgIGlmICghYXRvaV9jbGFtcCh5eXRleHQsICYoeXlsdmFsLT5sZXguaSkpKQorICAgICAgICB5
eWV4dHJhLT53YXJuaW5nKCp5eWxsb2MsICJJbnRlZ2VyIG92ZXJmbG93IiwgeXl0ZXh0LCAiIik7
CisgICAgcmV0dXJuIElOVENPTlNUQU5UOworfQorCitpbnQgZmxvYXRfY29uc3RhbnQoeXlzY2Fu
X3QgeXlzY2FubmVyKSB7CisgICAgc3RydWN0IHl5Z3V0c190KiB5eWcgPSAoc3RydWN0IHl5Z3V0
c190KikgeXlzY2FubmVyOworCisgICAgaWYgKCFhdG9mX2NsYW1wKHl5dGV4dCwgJih5eWx2YWwt
PmxleC5mKSkpCisgICAgICAgIHl5ZXh0cmEtPndhcm5pbmcoKnl5bGxvYywgIkZsb2F0IG92ZXJm
bG93IiwgeXl0ZXh0LCAiIik7CisgICAgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7Cit9CisKIGludCBn
bHNsYW5nX2luaXRpYWxpemUoVFBhcnNlQ29udGV4dCogY29udGV4dCkgewogICAgIHl5c2Nhbl90
IHNjYW5uZXIgPSBOVUxMOwogICAgIGlmICh5eWxleF9pbml0X2V4dHJhKGNvbnRleHQsICZzY2Fu
bmVyKSkKQEAgLTMyNiw2ICszMzksNyBAQCBpbnQgZ2xzbGFuZ19zY2FuKHNpemVfdCBjb3VudCwg
Y29uc3QgY2hhCiAgICAgLy8gSW5pdGlhbGl6ZSBwcmVwcm9jZXNzb3IuCiAgICAgaWYgKCFjb250
ZXh0LT5wcmVwcm9jZXNzb3IuaW5pdChjb3VudCwgc3RyaW5nLCBsZW5ndGgpKQogICAgICAgICBy
ZXR1cm4gMTsKKyAgICBjb250ZXh0LT5wcmVwcm9jZXNzb3Iuc2V0TWF4VG9rZW5MZW5ndGgoU0hf
TUFYX1RPS0VOX0xFTkdUSCk7CiAKICAgICAvLyBEZWZpbmUgZXh0ZW5zaW9uIG1hY3Jvcy4KICAg
ICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIGV4dEJlaGF2aW9yID0gY29udGV4dC0+ZXh0ZW5z
aW9uQmVoYXZpb3IoKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9nbHNsYW5nLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL2dsc2xhbmcueQkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcueQkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUs
NyBAQCBXSElDSCBHRU5FUkFURVMgVEhFIEdMU0wgRVMgUEFSU0VSIChnbHNsCiAjZW5kaWYKIAog
I2luY2x1ZGUgImNvbXBpbGVyL1N5bWJvbFRhYmxlLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvUGFy
c2VIZWxwZXIuaCIKKyNpbmNsdWRlICJjb21waWxlci9QYXJzZUNvbnRleHQuaCIKICNpbmNsdWRl
ICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKIAogI2RlZmluZSBZWUVOQUJMRV9OTFMgMApAQCAtNDcs
MTEgKzQ3LDE0IEBAIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBQQVJTRVIgKGdsc2wKICVw
dXJlLXBhcnNlcgogJXBhcnNlLXBhcmFtIHtUUGFyc2VDb250ZXh0KiBjb250ZXh0fQogJWxvY2F0
aW9ucwotJWxleC1wYXJhbSB7WVlMRVhfUEFSQU19CiAKLSV1bmlvbiB7CislY29kZSByZXF1aXJl
cyB7CiAjZGVmaW5lIFlZTFRZUEUgVFNvdXJjZUxvYwogI2RlZmluZSBZWUxUWVBFX0lTX0RFQ0xB
UkVEIDEKKyNkZWZpbmUgU0hfTUFYX1RPS0VOX0xFTkdUSCAyNTYgIC8vIFdlYkdMIHNwZWMuCit9
CisKKyV1bmlvbiB7CiAgICAgc3RydWN0IHsKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAg
VFN0cmluZyAqc3RyaW5nOwpAQCAtODMsMTEgKzg2LDExIEBAIFdISUNIIEdFTkVSQVRFUyBUSEUg
R0xTTCBFUyBQQVJTRVIgKGdsc2wKIAogJXsKIGV4dGVybiBpbnQgeXlsZXgoWVlTVFlQRSogeXls
dmFsLCBZWUxUWVBFKiB5eWxsb2MsIHZvaWQqIHl5c2Nhbm5lcik7Ci1zdGF0aWMgdm9pZCB5eWVy
cm9yKFlZTFRZUEUqIHl5bGxvYywgVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciog
cmVhc29uKTsKK2V4dGVybiB2b2lkIHl5ZXJyb3IoWVlMVFlQRSogeXlsbG9jLCBUUGFyc2VDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pOwogCiAjZGVmaW5lIFlZTExPQ19ERUZB
VUxUKEN1cnJlbnQsIFJocywgTikgICAgICAgICAgICAgICAgICAgICAgXAogICBkbyB7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
IGlmIChOKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICBpZiAoWVlJRChOKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAogICAgICAgICAoQ3VycmVudCkuZmlyc3RfZmlsZSA9IFlZUkhTTE9DKFJocywgMSku
Zmlyc3RfZmlsZTsgIFwKICAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2xpbmUgPSBZWVJIU0xPQyhS
aHMsIDEpLmZpcnN0X2xpbmU7ICBcCiAgICAgICAgIChDdXJyZW50KS5sYXN0X2ZpbGUgPSBZWVJI
U0xPQyhSaHMsIE4pLmxhc3RfZmlsZTsgICAgXApAQCAtMjI1LDE0ICsyMjgsNiBAQCBwcmltYXJ5
X2V4cHJlc3Npb24KICAgICAgICAgJCQgPSAkMTsKICAgICB9CiAgICAgfCBJTlRDT05TVEFOVCB7
Ci0gICAgICAgIC8vCi0gICAgICAgIC8vIElOVF9UWVBFIGlzIG9ubHkgMTYtYml0IHBsdXMgc2ln
biBiaXQgZm9yIHZlcnRleC9mcmFnbWVudCBzaGFkZXJzLAotICAgICAgICAvLyBjaGVjayBmb3Ig
b3ZlcmZsb3cgZm9yIGNvbnN0YW50cwotICAgICAgICAvLwotICAgICAgICBpZiAoYWJzKCQxLmkp
ID49ICgxIDw8IDE2KSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICIgaW50ZWdl
ciBjb25zdGFudCBvdmVyZmxvdyIsICIiKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKLSAgICAgICAgfQogICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENv
bnN0YW50VW5pb25bMV07CiAgICAgICAgIHVuaW9uQXJyYXktPnNldElDb25zdCgkMS5pKTsKICAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFy
cmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMSk7CkBAIC0yMDAy
LDExICsxOTk3LDYgQEAgZnVuY3Rpb25fZGVmaW5pdGlvbgogCiAlJQogCi12b2lkIHl5ZXJyb3Io
WVlMVFlQRSogeXlsbG9jLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFz
b24pIHsKLSAgICBjb250ZXh0LT5lcnJvcigqeXlsbG9jLCByZWFzb24sICIiKTsKLSAgICBjb250
ZXh0LT5yZWNvdmVyKCk7Ci19Ci0KIGludCBnbHNsYW5nX3BhcnNlKFRQYXJzZUNvbnRleHQqIGNv
bnRleHQpIHsKICAgICByZXR1cm4geXlwYXJzZShjb250ZXh0KTsKIH0KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX2xleC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfbGV4LmNwcAko
cmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L2dsc2xhbmdfbGV4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTksMTIgKzE5LDYgQEAKICNwcmFn
bWEgd2FybmluZyhkaXNhYmxlOiA0NzAxKQogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fY2xhbmdf
XykKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgaWdub3JlZCAiLVd1bmtub3duLXByYWdtYXMiCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
aWdub3JlZCAiLVdkZXByZWNhdGVkLXJlZ2lzdGVyIgotI2VuZGlmCi0KIAogCiAjbGluZSAyNSAi
Li9nbHNsYW5nX2xleC5jcHAiCkBAIC03ODgsNyArNzgyLDcgQEAgV0hJQ0ggR0VORVJBVEVTIFRI
RSBHTFNMIEVTIExFWEVSIChnbHNsYQogKi8KIAogI2luY2x1ZGUgImNvbXBpbGVyL2dsc2xhbmcu
aCIKLSNpbmNsdWRlICJjb21waWxlci9QYXJzZUhlbHBlci5oIgorI2luY2x1ZGUgImNvbXBpbGVy
L1BhcnNlQ29udGV4dC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5o
IgogI2luY2x1ZGUgImNvbXBpbGVyL3V0aWwuaCIKICNpbmNsdWRlICJnbHNsYW5nX3RhYi5oIgpA
QCAtODA4LDYgKzgwMiw4IEBAIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBMRVhFUiAoZ2xz
bGEKIHN0YXRpYyB5eV9zaXplX3Qgc3RyaW5nX2lucHV0KGNoYXIqIGJ1ZiwgeXlfc2l6ZV90IG1h
eF9zaXplLCB5eXNjYW5fdCB5eXNjYW5uZXIpOwogc3RhdGljIGludCBjaGVja190eXBlKHl5c2Nh
bl90IHl5c2Nhbm5lcik7CiBzdGF0aWMgaW50IHJlc2VydmVkX3dvcmQoeXlzY2FuX3QgeXlzY2Fu
bmVyKTsKK3N0YXRpYyBpbnQgaW50X2NvbnN0YW50KHl5c2Nhbl90IHl5c2Nhbm5lcik7CitzdGF0
aWMgaW50IGZsb2F0X2NvbnN0YW50KHl5c2Nhbl90IHl5c2Nhbm5lcik7CiAKICNkZWZpbmUgSU5J
VElBTCAwCiAKQEAgLTE1MDYsMjcgKzE1MDIsMjcgQEAgWVlfUlVMRV9TRVRVUAogCVlZX0JSRUFL
CiBjYXNlIDk0OgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8
aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybiBJTlRDT05TVEFOVDsgfQoreyByZXR1
cm4gaW50X2NvbnN0YW50KHl5c2Nhbm5lcik7IH0KIAlZWV9CUkVBSwogY2FzZSA5NToKIFlZX1JV
TEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4
dCwgMCwgMCkpOyByZXR1cm4gSU5UQ09OU1RBTlQ7IH0KK3sgcmV0dXJuIGludF9jb25zdGFudCh5
eXNjYW5uZXIpOyB9CiAJWVlfQlJFQUsKIGNhc2UgOTY6CiBZWV9SVUxFX1NFVFVQCi17IHl5bHZh
bC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJu
IElOVENPTlNUQU5UOyB9Cit7IHJldHVybiBpbnRfY29uc3RhbnQoeXlzY2FubmVyKTsgfQogCVlZ
X0JSRUFLCiBjYXNlIDk3OgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5mID0gc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkpOyByZXR1cm4gRkxPQVRDT05TVEFOVDsgfQor
eyByZXR1cm4gZmxvYXRfY29uc3RhbnQoeXlzY2FubmVyKTsgfQogCVlZX0JSRUFLCiBjYXNlIDk4
OgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0
b2ZfZG90KHl5dGV4dCkpOyByZXR1cm4gRkxPQVRDT05TVEFOVDsgfQoreyByZXR1cm4gZmxvYXRf
Y29uc3RhbnQoeXlzY2FubmVyKTsgfQogCVlZX0JSRUFLCiBjYXNlIDk5OgogWVlfUlVMRV9TRVRV
UAoteyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkp
OyByZXR1cm4gRkxPQVRDT05TVEFOVDsgfQoreyByZXR1cm4gZmxvYXRfY29uc3RhbnQoeXlzY2Fu
bmVyKTsgfQogCVlZX0JSRUFLCiBjYXNlIDEwMDoKIFlZX1JVTEVfU0VUVVAKQEAgLTIxMDMsNyAr
MjA5OSw3IEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCAKIAkJCQlj
YXNlIEVPQl9BQ1RfRU5EX09GX0ZJTEU6CiAJCQkJCXsKIAkJCQkJaWYgKCB5eXdyYXAoeXlzY2Fu
bmVyICkgKQotCQkJCQkJcmV0dXJuIDA7CisJCQkJCQlyZXR1cm4gRU9GOwogCiAJCQkJCWlmICgg
ISB5eWctPnl5X2RpZF9idWZmZXJfc3dpdGNoX29uX2VvZiApCiAJCQkJCQlZWV9ORVdfRklMRTsK
QEAgLTI4NjUsMTAgKzI4NjEsNiBAQCB2b2lkIHl5ZnJlZSAodm9pZCAqIHB0ciAsIHl5c2Nhbl90
IHl5c2NhCiAKICNkZWZpbmUgWVlUQUJMRVNfTkFNRSAieXl0YWJsZXMiCiAKLSNpZiBkZWZpbmVk
KF9fY2xhbmdfXykKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSNlbmRpZgotCiB5eV9z
aXplX3Qgc3RyaW5nX2lucHV0KGNoYXIqIGJ1ZiwgeXlfc2l6ZV90IG1heF9zaXplLCB5eXNjYW5f
dCB5eXNjYW5uZXIpIHsKICAgICBwcDo6VG9rZW4gdG9rZW47CiAgICAgeXlnZXRfZXh0cmEoeXlz
Y2FubmVyKS0+cHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOwpAQCAtMjkwNyw2ICsyODk5LDI3IEBA
IGludCByZXNlcnZlZF93b3JkKHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAgIHJldHVybiAwOwog
fQogCit2b2lkIHl5ZXJyb3IoWVlMVFlQRSogbGxvYywgVFBhcnNlQ29udGV4dCogY29udGV4dCwg
Y29uc3QgY2hhciogcmVhc29uKSB7CisgICAgY29udGV4dC0+ZXJyb3IoKmxsb2MsIHJlYXNvbiwg
eXlnZXRfdGV4dChjb250ZXh0LT5zY2FubmVyKSk7CisgICAgY29udGV4dC0+cmVjb3ZlcigpOwor
fQorCitpbnQgaW50X2NvbnN0YW50KHl5c2Nhbl90IHl5c2Nhbm5lcikgeworICAgIHN0cnVjdCB5
eWd1dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIHl5c2Nhbm5lcjsKKworICAgIGlmICgh
YXRvaV9jbGFtcCh5eXRleHQsICYoeXlsdmFsLT5sZXguaSkpKQorICAgICAgICB5eWV4dHJhLT53
YXJuaW5nKCp5eWxsb2MsICJJbnRlZ2VyIG92ZXJmbG93IiwgeXl0ZXh0LCAiIik7CisgICAgcmV0
dXJuIElOVENPTlNUQU5UOworfQorCitpbnQgZmxvYXRfY29uc3RhbnQoeXlzY2FuX3QgeXlzY2Fu
bmVyKSB7CisgICAgc3RydWN0IHl5Z3V0c190KiB5eWcgPSAoc3RydWN0IHl5Z3V0c190KikgeXlz
Y2FubmVyOworCisgICAgaWYgKCFhdG9mX2NsYW1wKHl5dGV4dCwgJih5eWx2YWwtPmxleC5mKSkp
CisgICAgICAgIHl5ZXh0cmEtPndhcm5pbmcoKnl5bGxvYywgIkZsb2F0IG92ZXJmbG93IiwgeXl0
ZXh0LCAiIik7CisgICAgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7Cit9CisKIGludCBnbHNsYW5nX2lu
aXRpYWxpemUoVFBhcnNlQ29udGV4dCogY29udGV4dCkgewogICAgIHl5c2Nhbl90IHNjYW5uZXIg
PSBOVUxMOwogICAgIGlmICh5eWxleF9pbml0X2V4dHJhKGNvbnRleHQsJnNjYW5uZXIpKQpAQCAt
MjkzNSw2ICsyOTQ4LDcgQEAgaW50IGdsc2xhbmdfc2NhbihzaXplX3QgY291bnQsIGNvbnN0IGNo
YQogICAgIC8vIEluaXRpYWxpemUgcHJlcHJvY2Vzc29yLgogICAgIGlmICghY29udGV4dC0+cHJl
cHJvY2Vzc29yLmluaXQoY291bnQsIHN0cmluZywgbGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIDE7
CisgICAgY29udGV4dC0+cHJlcHJvY2Vzc29yLnNldE1heFRva2VuTGVuZ3RoKFNIX01BWF9UT0tF
Tl9MRU5HVEgpOwogCiAgICAgLy8gRGVmaW5lIGV4dGVuc2lvbiBtYWNyb3MuCiAgICAgY29uc3Qg
VEV4dGVuc2lvbkJlaGF2aW9yJiBleHRCZWhhdmlvciA9IGNvbnRleHQtPmV4dGVuc2lvbkJlaGF2
aW9yKCk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFu
Z190YWIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9nbHNsYW5nX3RhYi5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsMjQgKzEsMjEgQEAKLS8qIEEgQmlzb24gcGFyc2VyLCBtYWRlIGJ5IEdOVSBCaXNvbiAyLjMu
ICAqLworLyogQSBCaXNvbiBwYXJzZXIsIG1hZGUgYnkgR05VIEJpc29uIDIuNy4gICovCiAKLS8q
IFNrZWxldG9uIGltcGxlbWVudGF0aW9uIGZvciBCaXNvbidzIFlhY2MtbGlrZSBwYXJzZXJzIGlu
IEMKLQotICAgQ29weXJpZ2h0IChDKSAxOTg0LCAxOTg5LCAxOTkwLCAyMDAwLCAyMDAxLCAyMDAy
LCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2Ci0gICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4KLQotICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vciBtb2RpZnkKKy8qIEJpc29uIGltcGxlbWVudGF0aW9uIGZvciBZYWNjLWxp
a2UgcGFyc2VycyBpbiBDCisgICAKKyAgICAgIENvcHlyaWdodCAoQykgMTk4NCwgMTk4OS0xOTkw
LCAyMDAwLTIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICAKKyAgIFRoaXMg
cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig
bW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotICAgYW55IGxhdGVyIHZlcnNp
b24uCi0KKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMg
b2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICAgCiAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAgICBHTlUgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCisgICAKICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICBhbG9u
ZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQot
ICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAg
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KKyAgIGFsb25nIHdpdGggdGhpcyBwcm9n
cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KIAog
LyogQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSBjcmVhdGUgYSBsYXJnZXIgd29yayB0
aGF0IGNvbnRhaW5zCiAgICBwYXJ0IG9yIGFsbCBvZiB0aGUgQmlzb24gcGFyc2VyIHNrZWxldG9u
IGFuZCBkaXN0cmlidXRlIHRoYXQgd29yawpAQCAtMjksNyArMjYsNyBAQAogICAgc3BlY2lhbCBl
eGNlcHRpb24sIHdoaWNoIHdpbGwgY2F1c2UgdGhlIHNrZWxldG9uIGFuZCB0aGUgcmVzdWx0aW5n
CiAgICBCaXNvbiBvdXRwdXQgZmlsZXMgdG8gYmUgbGljZW5zZWQgdW5kZXIgdGhlIEdOVSBHZW5l
cmFsIFB1YmxpYwogICAgTGljZW5zZSB3aXRob3V0IHRoaXMgc3BlY2lhbCBleGNlcHRpb24uCi0K
KyAgIAogICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB3YXMgYWRkZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiBpbgogICAgdmVyc2lvbiAyLjIgb2YgQmlzb24uICAqLwogCkBAIC00
Nyw3ICs0NCw3IEBACiAjZGVmaW5lIFlZQklTT04gMQogCiAvKiBCaXNvbiB2ZXJzaW9uLiAgKi8K
LSNkZWZpbmUgWVlCSVNPTl9WRVJTSU9OICIyLjMiCisjZGVmaW5lIFlZQklTT05fVkVSU0lPTiAi
Mi43IgogCiAvKiBTa2VsZXRvbiBuYW1lLiAgKi8KICNkZWZpbmUgWVlTS0VMRVRPTl9OQU1FICJ5
YWNjLmMiCkBAIC01NSw4ICs1Miw4MiBAQAogLyogUHVyZSBwYXJzZXJzLiAgKi8KICNkZWZpbmUg
WVlQVVJFIDEKIAotLyogVXNpbmcgbG9jYXRpb25zLiAgKi8KLSNkZWZpbmUgWVlMU1BfTkVFREVE
IDEKKy8qIFB1c2ggcGFyc2Vycy4gICovCisjZGVmaW5lIFlZUFVTSCAwCisKKy8qIFB1bGwgcGFy
c2Vycy4gICovCisjZGVmaW5lIFlZUFVMTCAxCisKKworCisKKy8qIENvcHkgdGhlIGZpcnN0IHBh
cnQgb2YgdXNlciBkZWNsYXJhdGlvbnMuICAqLworCisKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIw
MDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8v
IFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSBnZW5lcmF0ZV9wYXJzZXIuc2guIERPIE5P
VCBFRElUIQorCisvLyBJZ25vcmUgZXJyb3JzIGluIGF1dG8tZ2VuZXJhdGVkIGNvZGUuCisjaWYg
ZGVmaW5lZChfX0dOVUNfXykKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bnVz
ZWQtZnVuY3Rpb24iCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLXZh
cmlhYmxlIgorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3N3aXRjaC1lbnVtIgor
I2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MDY1KQor
I3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxODkpCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTog
NDUwNSkKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NzAxKQorI2VuZGlmCisKKyNpbmNsdWRl
ICJjb21waWxlci9TeW1ib2xUYWJsZS5oIgorI2luY2x1ZGUgImNvbXBpbGVyL1BhcnNlQ29udGV4
dC5oIgorI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgorCisjZGVmaW5lIFlZRU5BQkxF
X05MUyAwCisKKyNkZWZpbmUgWVlMRVhfUEFSQU0gY29udGV4dC0+c2Nhbm5lcgorCisKKworIyBp
Zm5kZWYgWVlfTlVMTAorIyAgaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiAyMDExMDNMIDw9IF9f
Y3BsdXNwbHVzCisjICAgZGVmaW5lIFlZX05VTEwgbnVsbHB0cgorIyAgZWxzZQorIyAgIGRlZmlu
ZSBZWV9OVUxMIDAKKyMgIGVuZGlmCisjIGVuZGlmCisKKy8qIEVuYWJsaW5nIHZlcmJvc2UgZXJy
b3IgbWVzc2FnZXMuICAqLworI2lmZGVmIFlZRVJST1JfVkVSQk9TRQorIyB1bmRlZiBZWUVSUk9S
X1ZFUkJPU0UKKyMgZGVmaW5lIFlZRVJST1JfVkVSQk9TRSAxCisjZWxzZQorIyBkZWZpbmUgWVlF
UlJPUl9WRVJCT1NFIDAKKyNlbmRpZgorCisvKiBJbiBhIGZ1dHVyZSByZWxlYXNlIG9mIEJpc29u
LCB0aGlzIHNlY3Rpb24gd2lsbCBiZSByZXBsYWNlZAorICAgYnkgI2luY2x1ZGUgImdsc2xhbmdf
dGFiLmgiLiAgKi8KKyNpZm5kZWYgWVlfWVlfR0xTTEFOR19UQUJfSF9JTkNMVURFRAorIyBkZWZp
bmUgWVlfWVlfR0xTTEFOR19UQUJfSF9JTkNMVURFRAorLyogRW5hYmxpbmcgdHJhY2VzLiAgKi8K
KyNpZm5kZWYgWVlERUJVRworIyBkZWZpbmUgWVlERUJVRyAwCisjZW5kaWYKKyNpZiBZWURFQlVH
CitleHRlcm4gaW50IHl5ZGVidWc7CisjZW5kaWYKKy8qICIlY29kZSByZXF1aXJlcyIgYmxvY2tz
LiAgKi8KKworCisjZGVmaW5lIFlZTFRZUEUgVFNvdXJjZUxvYworI2RlZmluZSBZWUxUWVBFX0lT
X0RFQ0xBUkVEIDEKKyNkZWZpbmUgU0hfTUFYX1RPS0VOX0xFTkdUSCAyNTYgIC8vIFdlYkdMIHNw
ZWMuCisKIAogCiAKQEAgLTE2MCwxNTkgKzIzMSwxMyBAQAogICAgICBRVUVTVElPTiA9IDM0OQog
ICAgfTsKICNlbmRpZgotLyogVG9rZW5zLiAgKi8KLSNkZWZpbmUgSU5WQVJJQU5UIDI1OAotI2Rl
ZmluZSBISUdIX1BSRUNJU0lPTiAyNTkKLSNkZWZpbmUgTUVESVVNX1BSRUNJU0lPTiAyNjAKLSNk
ZWZpbmUgTE9XX1BSRUNJU0lPTiAyNjEKLSNkZWZpbmUgUFJFQ0lTSU9OIDI2MgotI2RlZmluZSBB
VFRSSUJVVEUgMjYzCi0jZGVmaW5lIENPTlNUX1FVQUwgMjY0Ci0jZGVmaW5lIEJPT0xfVFlQRSAy
NjUKLSNkZWZpbmUgRkxPQVRfVFlQRSAyNjYKLSNkZWZpbmUgSU5UX1RZUEUgMjY3Ci0jZGVmaW5l
IEJSRUFLIDI2OAotI2RlZmluZSBDT05USU5VRSAyNjkKLSNkZWZpbmUgRE8gMjcwCi0jZGVmaW5l
IEVMU0UgMjcxCi0jZGVmaW5lIEZPUiAyNzIKLSNkZWZpbmUgSUYgMjczCi0jZGVmaW5lIERJU0NB
UkQgMjc0Ci0jZGVmaW5lIFJFVFVSTiAyNzUKLSNkZWZpbmUgQlZFQzIgMjc2Ci0jZGVmaW5lIEJW
RUMzIDI3NwotI2RlZmluZSBCVkVDNCAyNzgKLSNkZWZpbmUgSVZFQzIgMjc5Ci0jZGVmaW5lIElW
RUMzIDI4MAotI2RlZmluZSBJVkVDNCAyODEKLSNkZWZpbmUgVkVDMiAyODIKLSNkZWZpbmUgVkVD
MyAyODMKLSNkZWZpbmUgVkVDNCAyODQKLSNkZWZpbmUgTUFUUklYMiAyODUKLSNkZWZpbmUgTUFU
UklYMyAyODYKLSNkZWZpbmUgTUFUUklYNCAyODcKLSNkZWZpbmUgSU5fUVVBTCAyODgKLSNkZWZp
bmUgT1VUX1FVQUwgMjg5Ci0jZGVmaW5lIElOT1VUX1FVQUwgMjkwCi0jZGVmaW5lIFVOSUZPUk0g
MjkxCi0jZGVmaW5lIFZBUllJTkcgMjkyCi0jZGVmaW5lIFNUUlVDVCAyOTMKLSNkZWZpbmUgVk9J
RF9UWVBFIDI5NAotI2RlZmluZSBXSElMRSAyOTUKLSNkZWZpbmUgU0FNUExFUjJEIDI5NgotI2Rl
ZmluZSBTQU1QTEVSQ1VCRSAyOTcKLSNkZWZpbmUgU0FNUExFUl9FWFRFUk5BTF9PRVMgMjk4Ci0j
ZGVmaW5lIFNBTVBMRVIyRFJFQ1QgMjk5Ci0jZGVmaW5lIElERU5USUZJRVIgMzAwCi0jZGVmaW5l
IFRZUEVfTkFNRSAzMDEKLSNkZWZpbmUgRkxPQVRDT05TVEFOVCAzMDIKLSNkZWZpbmUgSU5UQ09O
U1RBTlQgMzAzCi0jZGVmaW5lIEJPT0xDT05TVEFOVCAzMDQKLSNkZWZpbmUgTEVGVF9PUCAzMDUK
LSNkZWZpbmUgUklHSFRfT1AgMzA2Ci0jZGVmaW5lIElOQ19PUCAzMDcKLSNkZWZpbmUgREVDX09Q
IDMwOAotI2RlZmluZSBMRV9PUCAzMDkKLSNkZWZpbmUgR0VfT1AgMzEwCi0jZGVmaW5lIEVRX09Q
IDMxMQotI2RlZmluZSBORV9PUCAzMTIKLSNkZWZpbmUgQU5EX09QIDMxMwotI2RlZmluZSBPUl9P
UCAzMTQKLSNkZWZpbmUgWE9SX09QIDMxNQotI2RlZmluZSBNVUxfQVNTSUdOIDMxNgotI2RlZmlu
ZSBESVZfQVNTSUdOIDMxNwotI2RlZmluZSBBRERfQVNTSUdOIDMxOAotI2RlZmluZSBNT0RfQVNT
SUdOIDMxOQotI2RlZmluZSBMRUZUX0FTU0lHTiAzMjAKLSNkZWZpbmUgUklHSFRfQVNTSUdOIDMy
MQotI2RlZmluZSBBTkRfQVNTSUdOIDMyMgotI2RlZmluZSBYT1JfQVNTSUdOIDMyMwotI2RlZmlu
ZSBPUl9BU1NJR04gMzI0Ci0jZGVmaW5lIFNVQl9BU1NJR04gMzI1Ci0jZGVmaW5lIExFRlRfUEFS
RU4gMzI2Ci0jZGVmaW5lIFJJR0hUX1BBUkVOIDMyNwotI2RlZmluZSBMRUZUX0JSQUNLRVQgMzI4
Ci0jZGVmaW5lIFJJR0hUX0JSQUNLRVQgMzI5Ci0jZGVmaW5lIExFRlRfQlJBQ0UgMzMwCi0jZGVm
aW5lIFJJR0hUX0JSQUNFIDMzMQotI2RlZmluZSBET1QgMzMyCi0jZGVmaW5lIENPTU1BIDMzMwot
I2RlZmluZSBDT0xPTiAzMzQKLSNkZWZpbmUgRVFVQUwgMzM1Ci0jZGVmaW5lIFNFTUlDT0xPTiAz
MzYKLSNkZWZpbmUgQkFORyAzMzcKLSNkZWZpbmUgREFTSCAzMzgKLSNkZWZpbmUgVElMREUgMzM5
Ci0jZGVmaW5lIFBMVVMgMzQwCi0jZGVmaW5lIFNUQVIgMzQxCi0jZGVmaW5lIFNMQVNIIDM0Mgot
I2RlZmluZSBQRVJDRU5UIDM0MwotI2RlZmluZSBMRUZUX0FOR0xFIDM0NAotI2RlZmluZSBSSUdI
VF9BTkdMRSAzNDUKLSNkZWZpbmUgVkVSVElDQUxfQkFSIDM0NgotI2RlZmluZSBDQVJFVCAzNDcK
LSNkZWZpbmUgQU1QRVJTQU5EIDM0OAotI2RlZmluZSBRVUVTVElPTiAzNDkKLQotCi0KLQotLyog
Q29weSB0aGUgZmlyc3QgcGFydCBvZiB1c2VyIGRlY2xhcmF0aW9ucy4gICovCi0KLQotLy8KLS8v
IENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgotLy8KLQotLy8gVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IGdlbmVyYXRl
X3BhcnNlci5zaC4gRE8gTk9UIEVESVQhCi0KLS8vIElnbm9yZSBlcnJvcnMgaW4gYXV0by1nZW5l
cmF0ZWQgY29kZS4KLSNpZiBkZWZpbmVkKF9fR05VQ19fKQotI3ByYWdtYSBHQ0MgZGlhZ25vc3Rp
YyBpZ25vcmVkICItV3VudXNlZC1mdW5jdGlvbiIKLSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdu
b3JlZCAiLVd1bnVzZWQtdmFyaWFibGUiCi0jcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQg
Ii1Xc3dpdGNoLWVudW0iCi0jZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQotI3ByYWdtYSB3YXJuaW5n
KGRpc2FibGU6IDQwNjUpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDE4OSkKLSNwcmFnbWEg
d2FybmluZyhkaXNhYmxlOiA0NTA1KQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ3MDEpCi0j
ZW5kaWYKLQotI2luY2x1ZGUgImNvbXBpbGVyL1N5bWJvbFRhYmxlLmgiCi0jaW5jbHVkZSAiY29t
cGlsZXIvUGFyc2VIZWxwZXIuaCIKLSNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKLQot
I2RlZmluZSBZWUVOQUJMRV9OTFMgMAotCi0jZGVmaW5lIFlZTEVYX1BBUkFNIGNvbnRleHQtPnNj
YW5uZXIKLQotCi0vKiBFbmFibGluZyB0cmFjZXMuICAqLwotI2lmbmRlZiBZWURFQlVHCi0jIGRl
ZmluZSBZWURFQlVHIDAKLSNlbmRpZgotCi0vKiBFbmFibGluZyB2ZXJib3NlIGVycm9yIG1lc3Nh
Z2VzLiAgKi8KLSNpZmRlZiBZWUVSUk9SX1ZFUkJPU0UKLSMgdW5kZWYgWVlFUlJPUl9WRVJCT1NF
Ci0jIGRlZmluZSBZWUVSUk9SX1ZFUkJPU0UgMQotI2Vsc2UKLSMgZGVmaW5lIFlZRVJST1JfVkVS
Qk9TRSAwCi0jZW5kaWYKIAotLyogRW5hYmxpbmcgdGhlIHRva2VuIHRhYmxlLiAgKi8KLSNpZm5k
ZWYgWVlUT0tFTl9UQUJMRQotIyBkZWZpbmUgWVlUT0tFTl9UQUJMRSAwCi0jZW5kaWYKIAogI2lm
ICEgZGVmaW5lZCBZWVNUWVBFICYmICEgZGVmaW5lZCBZWVNUWVBFX0lTX0RFQ0xBUkVECiB0eXBl
ZGVmIHVuaW9uIFlZU1RZUEUKLQogewotI2RlZmluZSBZWUxUWVBFIFRTb3VyY2VMb2MKLSNkZWZp
bmUgWVlMVFlQRV9JU19ERUNMQVJFRCAxCisKKwogICAgIHN0cnVjdCB7CiAgICAgICAgIHVuaW9u
IHsKICAgICAgICAgICAgIFRTdHJpbmcgKnN0cmluZzsKQEAgLTM0MCwxMyArMjY1LDEzIEBAIHR5
cGVkZWYgdW5pb24gWVlTVFlQRQogICAgICAgICAgICAgVEZpZWxkTGlzdCogZmllbGRMaXN0Owog
ICAgICAgICB9OwogICAgIH0gaW50ZXJtOwotfQotLyogTGluZSAxOTMgb2YgeWFjYy5jLiAgKi8K
IAotCVlZU1RZUEU7CisKKworfSBZWVNUWVBFOworIyBkZWZpbmUgWVlTVFlQRV9JU19UUklWSUFM
IDEKICMgZGVmaW5lIHl5c3R5cGUgWVlTVFlQRSAvKiBvYnNvbGVzY2VudDsgd2lsbCBiZSB3aXRo
ZHJhd24gKi8KICMgZGVmaW5lIFlZU1RZUEVfSVNfREVDTEFSRUQgMQotIyBkZWZpbmUgWVlTVFlQ
RV9JU19UUklWSUFMIDEKICNlbmRpZgogCiAjaWYgISBkZWZpbmVkIFlZTFRZUEUgJiYgISBkZWZp
bmVkIFlZTFRZUEVfSVNfREVDTEFSRUQKQEAgLTM2MywxMSArMjg4LDI3IEBAIHR5cGVkZWYgc3Ry
dWN0IFlZTFRZUEUKICNlbmRpZgogCiAKKyNpZmRlZiBZWVBBUlNFX1BBUkFNCisjaWYgZGVmaW5l
ZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzCitpbnQgeXlwYXJzZSAodm9pZCAqWVlQ
QVJTRV9QQVJBTSk7CisjZWxzZQoraW50IHl5cGFyc2UgKCk7CisjZW5kaWYKKyNlbHNlIC8qICEg
WVlQQVJTRV9QQVJBTSAqLworI2lmIGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX2NwbHVz
cGx1cworaW50IHl5cGFyc2UgKFRQYXJzZUNvbnRleHQqIGNvbnRleHQpOworI2Vsc2UKK2ludCB5
eXBhcnNlICgpOworI2VuZGlmCisjZW5kaWYgLyogISBZWVBBUlNFX1BBUkFNICovCisKKyNlbmRp
ZiAvKiAhWVlfWVlfR0xTTEFOR19UQUJfSF9JTkNMVURFRCAgKi8KKwogLyogQ29weSB0aGUgc2Vj
b25kIHBhcnQgb2YgdXNlciBkZWNsYXJhdGlvbnMuICAqLwogCiAKIGV4dGVybiBpbnQgeXlsZXgo
WVlTVFlQRSogeXlsdmFsLCBZWUxUWVBFKiB5eWxsb2MsIHZvaWQqIHl5c2Nhbm5lcik7Ci1zdGF0
aWMgdm9pZCB5eWVycm9yKFlZTFRZUEUqIHl5bGxvYywgVFBhcnNlQ29udGV4dCogY29udGV4dCwg
Y29uc3QgY2hhciogcmVhc29uKTsKK2V4dGVybiB2b2lkIHl5ZXJyb3IoWVlMVFlQRSogeXlsbG9j
LCBUUGFyc2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pOwogCiAjZGVmaW5l
IFlZTExPQ19ERUZBVUxUKEN1cnJlbnQsIFJocywgTikgICAgICAgICAgICAgICAgICAgICAgXAog
ICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKQEAgLTQwMCw4ICszNDEsNiBAQCBzdGF0aWMgdm9pZCB5eWVycm9yKFlZTFRZUEUqIHl5
bGxvYywgVFBhCiB9CiAKIAotLyogTGluZSAyMTYgb2YgeWFjYy5jLiAgKi8KLQogCiAjaWZkZWYg
c2hvcnQKICMgdW5kZWYgc2hvcnQKQEAgLTQ1NCwzNiArMzkzLDM2IEBAIHR5cGVkZWYgc2hvcnQg
aW50IHl5dHlwZV9pbnQxNjsKICMgaWYgZGVmaW5lZCBZWUVOQUJMRV9OTFMgJiYgWVlFTkFCTEVf
TkxTCiAjICBpZiBFTkFCTEVfTkxTCiAjICAgaW5jbHVkZSA8bGliaW50bC5oPiAvKiBJTkZSSU5H
RVMgT04gVVNFUiBOQU1FIFNQQUNFICovCi0jICAgZGVmaW5lIFlZXyhtc2dpZCkgZGdldHRleHQg
KCJiaXNvbi1ydW50aW1lIiwgbXNnaWQpCisjICAgZGVmaW5lIFlZXyhNc2dpZCkgZGdldHRleHQg
KCJiaXNvbi1ydW50aW1lIiwgTXNnaWQpCiAjICBlbmRpZgogIyBlbmRpZgogIyBpZm5kZWYgWVlf
Ci0jICBkZWZpbmUgWVlfKG1zZ2lkKSBtc2dpZAorIyAgZGVmaW5lIFlZXyhNc2dpZCkgTXNnaWQK
ICMgZW5kaWYKICNlbmRpZgogCiAvKiBTdXBwcmVzcyB1bnVzZWQtdmFyaWFibGUgd2FybmluZ3Mg
YnkgInVzaW5nIiBFLiAgKi8KICNpZiAhIGRlZmluZWQgbGludCB8fCBkZWZpbmVkIF9fR05VQ19f
Ci0jIGRlZmluZSBZWVVTRShlKSAoKHZvaWQpIChlKSkKKyMgZGVmaW5lIFlZVVNFKEUpICgodm9p
ZCkgKEUpKQogI2Vsc2UKLSMgZGVmaW5lIFlZVVNFKGUpIC8qIGVtcHR5ICovCisjIGRlZmluZSBZ
WVVTRShFKSAvKiBlbXB0eSAqLwogI2VuZGlmCiAKIC8qIElkZW50aXR5IGZ1bmN0aW9uLCB1c2Vk
IHRvIHN1cHByZXNzIHdhcm5pbmdzIGFib3V0IGNvbnN0YW50IGNvbmRpdGlvbnMuICAqLwogI2lm
bmRlZiBsaW50Ci0jIGRlZmluZSBZWUlEKG4pIChuKQorIyBkZWZpbmUgWVlJRChOKSAoTikKICNl
bHNlCiAjaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKICAg
ICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogc3RhdGljIGlu
dAotWVlJRCAoaW50IGkpCitZWUlEIChpbnQgeXlpKQogI2Vsc2UKIHN0YXRpYyBpbnQKLVlZSUQg
KGkpCi0gICAgaW50IGk7CitZWUlEICh5eWkpCisgICAgaW50IHl5aTsKICNlbmRpZgogewotICBy
ZXR1cm4gaTsKKyAgcmV0dXJuIHl5aTsKIH0KICNlbmRpZgogCkBAIC01MDQsMTEgKzQ0MywxMiBA
QCBZWUlEIChpKQogIyAgICBkZWZpbmUgYWxsb2NhIF9hbGxvY2EKICMgICBlbHNlCiAjICAgIGRl
ZmluZSBZWVNUQUNLX0FMTE9DIGFsbG9jYQotIyAgICBpZiAhIGRlZmluZWQgX0FMTE9DQV9IICYm
ICEgZGVmaW5lZCBfU1RETElCX0ggJiYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5
OV9fRlVOQ19fIFwKKyMgICAgaWYgISBkZWZpbmVkIF9BTExPQ0FfSCAmJiAhIGRlZmluZWQgRVhJ
VF9TVUNDRVNTICYmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBc
CiAgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKICMgICAg
IGluY2x1ZGUgPHN0ZGxpYi5oPiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCi0j
ICAgICBpZm5kZWYgX1NURExJQl9ICi0jICAgICAgZGVmaW5lIF9TVERMSUJfSCAxCisgICAgICAv
KiBVc2UgRVhJVF9TVUNDRVNTIGFzIGEgd2l0bmVzcyBmb3Igc3RkbGliLmguICAqLworIyAgICAg
aWZuZGVmIEVYSVRfU1VDQ0VTUworIyAgICAgIGRlZmluZSBFWElUX1NVQ0NFU1MgMAogIyAgICAg
ZW5kaWYKICMgICAgZW5kaWYKICMgICBlbmRpZgpAQCAtNTMxLDI0ICs0NzEsMjQgQEAgWVlJRCAo
aSkKICMgIGlmbmRlZiBZWVNUQUNLX0FMTE9DX01BWElNVU0KICMgICBkZWZpbmUgWVlTVEFDS19B
TExPQ19NQVhJTVVNIFlZU0laRV9NQVhJTVVNCiAjICBlbmRpZgotIyAgaWYgKGRlZmluZWQgX19j
cGx1c3BsdXMgJiYgISBkZWZpbmVkIF9TVERMSUJfSCBcCisjICBpZiAoZGVmaW5lZCBfX2NwbHVz
cGx1cyAmJiAhIGRlZmluZWQgRVhJVF9TVUNDRVNTIFwKICAgICAgICAmJiAhICgoZGVmaW5lZCBZ
WU1BTExPQyB8fCBkZWZpbmVkIG1hbGxvYykgXAogCSAgICAgJiYgKGRlZmluZWQgWVlGUkVFIHx8
IGRlZmluZWQgZnJlZSkpKQogIyAgIGluY2x1ZGUgPHN0ZGxpYi5oPiAvKiBJTkZSSU5HRVMgT04g
VVNFUiBOQU1FIFNQQUNFICovCi0jICAgaWZuZGVmIF9TVERMSUJfSAotIyAgICBkZWZpbmUgX1NU
RExJQl9IIDEKKyMgICBpZm5kZWYgRVhJVF9TVUNDRVNTCisjICAgIGRlZmluZSBFWElUX1NVQ0NF
U1MgMAogIyAgIGVuZGlmCiAjICBlbmRpZgogIyAgaWZuZGVmIFlZTUFMTE9DCiAjICAgZGVmaW5l
IFlZTUFMTE9DIG1hbGxvYwotIyAgIGlmICEgZGVmaW5lZCBtYWxsb2MgJiYgISBkZWZpbmVkIF9T
VERMSUJfSCAmJiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAor
IyAgIGlmICEgZGVmaW5lZCBtYWxsb2MgJiYgISBkZWZpbmVkIEVYSVRfU1VDQ0VTUyAmJiAoZGVm
aW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVk
IF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCiB2b2lkICptYWxsb2MgKFlZU0laRV9U
KTsgLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwogIyAgIGVuZGlmCiAjICBlbmRp
ZgogIyAgaWZuZGVmIFlZRlJFRQogIyAgIGRlZmluZSBZWUZSRUUgZnJlZQotIyAgIGlmICEgZGVm
aW5lZCBmcmVlICYmICEgZGVmaW5lZCBfU1RETElCX0ggJiYgKGRlZmluZWQgX19TVERDX18gfHwg
ZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyMgICBpZiAhIGRlZmluZWQgZnJlZSAmJiAhIGRlZmlu
ZWQgRVhJVF9TVUNDRVNTICYmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZV
TkNfXyBcCiAgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikK
IHZvaWQgZnJlZSAodm9pZCAqKTsgLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwog
IyAgIGVuZGlmCkBAIC01NjUsOSArNTA1LDkgQEAgdm9pZCBmcmVlICh2b2lkICopOyAvKiBJTkZS
SU5HRVMgT04gVVNFUgogLyogQSB0eXBlIHRoYXQgaXMgcHJvcGVybHkgYWxpZ25lZCBmb3IgYW55
IHN0YWNrIG1lbWJlci4gICovCiB1bmlvbiB5eWFsbG9jCiB7Ci0gIHl5dHlwZV9pbnQxNiB5eXNz
OwotICBZWVNUWVBFIHl5dnM7Ci0gICAgWVlMVFlQRSB5eWxzOworICB5eXR5cGVfaW50MTYgeXlz
c19hbGxvYzsKKyAgWVlTVFlQRSB5eXZzX2FsbG9jOworICBZWUxUWVBFIHl5bHNfYWxsb2M7CiB9
OwogCiAvKiBUaGUgc2l6ZSBvZiB0aGUgbWF4aW11bSBnYXAgYmV0d2VlbiBvbmUgYWxpZ25lZCBz
dGFjayBhbmQgdGhlIG5leHQuICAqLwpAQCAtNTc5LDM1ICs1MTksMTkgQEAgdW5pb24geXlhbGxv
YwogICAgICAoKE4pICogKHNpemVvZiAoeXl0eXBlX2ludDE2KSArIHNpemVvZiAoWVlTVFlQRSkg
KyBzaXplb2YgKFlZTFRZUEUpKSBcCiAgICAgICArIDIgKiBZWVNUQUNLX0dBUF9NQVhJTVVNKQog
Ci0vKiBDb3B5IENPVU5UIG9iamVjdHMgZnJvbSBGUk9NIHRvIFRPLiAgVGhlIHNvdXJjZSBhbmQg
ZGVzdGluYXRpb24gZG8KLSAgIG5vdCBvdmVybGFwLiAgKi8KLSMgaWZuZGVmIFlZQ09QWQotIyAg
aWYgZGVmaW5lZCBfX0dOVUNfXyAmJiAxIDwgX19HTlVDX18KLSMgICBkZWZpbmUgWVlDT1BZKFRv
LCBGcm9tLCBDb3VudCkgXAotICAgICAgX19idWlsdGluX21lbWNweSAoVG8sIEZyb20sIChDb3Vu
dCkgKiBzaXplb2YgKCooRnJvbSkpKQotIyAgZWxzZQotIyAgIGRlZmluZSBZWUNPUFkoVG8sIEZy
b20sIENvdW50KQkJXAotICAgICAgZG8JCQkJCVwKLQl7CQkJCQlcCi0JICBZWVNJWkVfVCB5eWk7
CQkJCVwKLQkgIGZvciAoeXlpID0gMDsgeXlpIDwgKENvdW50KTsgeXlpKyspCVwKLQkgICAgKFRv
KVt5eWldID0gKEZyb20pW3l5aV07CQlcCi0JfQkJCQkJXAotICAgICAgd2hpbGUgKFlZSUQgKDAp
KQotIyAgZW5kaWYKLSMgZW5kaWYKKyMgZGVmaW5lIFlZQ09QWV9ORUVERUQgMQogCiAvKiBSZWxv
Y2F0ZSBTVEFDSyBmcm9tIGl0cyBvbGQgbG9jYXRpb24gdG8gdGhlIG5ldyBvbmUuICBUaGUKICAg
IGxvY2FsIHZhcmlhYmxlcyBZWVNJWkUgYW5kIFlZU1RBQ0tTSVpFIGdpdmUgdGhlIG9sZCBhbmQg
bmV3IG51bWJlciBvZgogICAgZWxlbWVudHMgaW4gdGhlIHN0YWNrLCBhbmQgWVlQVFIgZ2l2ZXMg
dGhlIG5ldyBsb2NhdGlvbiBvZiB0aGUKICAgIHN0YWNrLiAgQWR2YW5jZSBZWVBUUiB0byBhIHBy
b3Blcmx5IGFsaWduZWQgbG9jYXRpb24gZm9yIHRoZSBuZXh0CiAgICBzdGFjay4gICovCi0jIGRl
ZmluZSBZWVNUQUNLX1JFTE9DQVRFKFN0YWNrKQkJCQkJXAorIyBkZWZpbmUgWVlTVEFDS19SRUxP
Q0FURShTdGFja19hbGxvYywgU3RhY2spCQkJCVwKICAgICBkbwkJCQkJCQkJCVwKICAgICAgIHsJ
CQkJCQkJCQlcCiAJWVlTSVpFX1QgeXluZXdieXRlczsJCQkJCQlcCi0JWVlDT1BZICgmeXlwdHIt
PlN0YWNrLCBTdGFjaywgeXlzaXplKTsJCQkJXAotCVN0YWNrID0gJnl5cHRyLT5TdGFjazsJCQkJ
CQlcCisJWVlDT1BZICgmeXlwdHItPlN0YWNrX2FsbG9jLCBTdGFjaywgeXlzaXplKTsJCQlcCisJ
U3RhY2sgPSAmeXlwdHItPlN0YWNrX2FsbG9jOwkJCQkJXAogCXl5bmV3Ynl0ZXMgPSB5eXN0YWNr
c2l6ZSAqIHNpemVvZiAoKlN0YWNrKSArIFlZU1RBQ0tfR0FQX01BWElNVU07IFwKIAl5eXB0ciAr
PSB5eW5ld2J5dGVzIC8gc2l6ZW9mICgqeXlwdHIpOwkJCQlcCiAgICAgICB9CQkJCQkJCQkJXApA
QCAtNjE1LDYgKzUzOSwyNiBAQCB1bmlvbiB5eWFsbG9jCiAKICNlbmRpZgogCisjaWYgZGVmaW5l
ZCBZWUNPUFlfTkVFREVEICYmIFlZQ09QWV9ORUVERUQKKy8qIENvcHkgQ09VTlQgb2JqZWN0cyBm
cm9tIFNSQyB0byBEU1QuICBUaGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBkbworICAgbm90IG92
ZXJsYXAuICAqLworIyBpZm5kZWYgWVlDT1BZCisjICBpZiBkZWZpbmVkIF9fR05VQ19fICYmIDEg
PCBfX0dOVUNfXworIyAgIGRlZmluZSBZWUNPUFkoRHN0LCBTcmMsIENvdW50KSBcCisgICAgICBf
X2J1aWx0aW5fbWVtY3B5IChEc3QsIFNyYywgKENvdW50KSAqIHNpemVvZiAoKihTcmMpKSkKKyMg
IGVsc2UKKyMgICBkZWZpbmUgWVlDT1BZKERzdCwgU3JjLCBDb3VudCkgICAgICAgICAgICAgIFwK
KyAgICAgIGRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBZ
WVNJWkVfVCB5eWk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBmb3IgKHl5
aSA9IDA7IHl5aSA8IChDb3VudCk7IHl5aSsrKSAgIFwKKyAgICAgICAgICAgIChEc3QpW3l5aV0g
PSAoU3JjKVt5eWldOyAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHdoaWxlIChZWUlEICgwKSkKKyMgIGVuZGlmCisj
IGVuZGlmCisjZW5kaWYgLyogIVlZQ09QWV9ORUVERUQgKi8KKwogLyogWVlGSU5BTCAtLSBTdGF0
ZSBudW1iZXIgb2YgdGhlIHRlcm1pbmF0aW9uIHN0YXRlLiAgKi8KICNkZWZpbmUgWVlGSU5BTCAg
NzQKIC8qIFlZTEFTVCAtLSBMYXN0IGluZGV4IGluIFlZVEFCTEUuICAqLwpAQCAtNzcwLDMxICs3
MTQsMzEgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eXJoc1tdID0KIC8qIFlZUkxJTkVb
WVlOXSAtLSBzb3VyY2UgbGluZSB3aGVyZSBydWxlIG51bWJlciBZWU4gd2FzIGRlZmluZWQuICAq
Lwogc3RhdGljIGNvbnN0IHl5dHlwZV91aW50MTYgeXlybGluZVtdID0KIHsKLSAgICAgICAwLCAg
IDE3NiwgICAxNzYsICAgMTc3LCAgIDE4MCwgICAyMjMsICAgMjI2LCAgIDIzOSwgICAyNDQsICAg
MjQ5LAotICAgICAyNTUsICAgMjU4LCAgIDI2MSwgICAyNjQsICAgMzU5LCAgIDM2OSwgICAzODIs
ICAgMzkwLCAgIDQ5MCwgICA0OTMsCi0gICAgIDUwMSwgICA1MDQsICAgNTEwLCAgIDUxNCwgICA1
MjEsICAgNTI3LCAgIDUzNiwgICA1NDQsICAgNTk5LCAgIDYwOSwKLSAgICAgNjEyLCAgIDYyMiwg
ICA2MzIsICAgNjUzLCAgIDY1NCwgICA2NTUsICAgNjYwLCAgIDY2MSwgICA2NjksICAgNjgwLAot
ICAgICA2ODEsICAgNjg5LCAgIDcwMCwgICA3MDQsICAgNzA1LCAgIDcxNSwgICA3MjUsICAgNzM1
LCAgIDc0OCwgICA3NDksCi0gICAgIDc1OSwgICA3NzIsICAgNzc2LCAgIDc4MCwgICA3ODQsICAg
Nzg1LCAgIDc5OCwgICA3OTksICAgODEyLCAgIDgxMywKLSAgICAgODI2LCAgIDgyNywgICA4NDQs
ICAgODQ1LCAgIDg1OCwgICA4NTksICAgODYwLCAgIDg2MSwgICA4NjIsICAgODY2LAotICAgICA4
NjksICAgODgwLCAgIDg4OCwgICA5MTUsICAgOTIwLCAgIDkzNCwgICA5ODksICAgOTkyLCAgIDk5
OSwgIDEwMDcsCi0gICAgMTAyOCwgIDEwNDksICAxMDU5LCAgMTA4NywgIDEwOTIsICAxMTAyLCAg
MTEwNywgIDExMTcsICAxMTIwLCAgMTEyMywKLSAgICAxMTI2LCAgMTEzMiwgIDExMzksICAxMTQy
LCAgMTE2NCwgIDExODIsICAxMjA2LCAgMTIyOSwgIDEyMzMsICAxMjUxLAotICAgIDEyNTksICAx
MjkxLCAgMTMxMSwgIDEzMzIsICAxMzQxLCAgMTM2NCwgIDEzNjcsICAxMzczLCAgMTM4MSwgIDEz
ODksCi0gICAgMTM5NywgIDE0MDcsICAxNDE0LCAgMTQxNywgIDE0MjAsICAxNDI2LCAgMTQyOSwg
IDE0NDQsICAxNDQ4LCAgMTQ1MiwKLSAgICAxNDU2LCAgMTQ2MCwgIDE0NjUsICAxNDcwLCAgMTQ3
NSwgIDE0ODAsICAxNDg1LCAgMTQ5MCwgIDE0OTUsICAxNTAwLAotICAgIDE1MDUsICAxNTEwLCAg
MTUxNSwgIDE1MjAsICAxNTI0LCAgMTUyOCwgIDE1MzYsICAxNTQ0LCAgMTU0OCwgIDE1NjEsCi0g
ICAgMTU2MSwgIDE1NzUsICAxNTc1LCAgMTU4NCwgIDE1ODcsICAxNjAzLCAgMTYzNiwgIDE2NDAs
ICAxNjQ2LCAgMTY1MywKLSAgICAxNjY4LCAgMTY3MiwgIDE2NzYsICAxNjc3LCAgMTY4MywgIDE2
ODQsICAxNjg1LCAgMTY4NiwgIDE2ODcsICAxNjkxLAotICAgIDE2OTIsICAxNjkyLCAgMTY5Miwg
IDE3MDIsICAxNzAzLCAgMTcwNywgIDE3MDcsICAxNzA4LCAgMTcwOCwgIDE3MTMsCi0gICAgMTcx
NiwgIDE3MjYsICAxNzI5LCAgMTczNSwgIDE3MzYsICAxNzQwLCAgMTc0OCwgIDE3NTIsICAxNzYy
LCAgMTc2NywKLSAgICAxNzg0LCAgMTc4NCwgIDE3ODksICAxNzg5LCAgMTc5NiwgIDE3OTYsICAx
ODA0LCAgMTgwNywgIDE4MTMsICAxODE2LAotICAgIDE4MjIsICAxODI2LCAgMTgzMywgIDE4NDAs
ICAxODQ3LCAgMTg1NCwgIDE4NjUsICAxODc0LCAgMTg3OCwgIDE4ODUsCi0gICAgMTg4OCwgIDE4
OTQsICAxODk0CisgICAgICAgMCwgICAxODAsICAgMTgwLCAgIDE4MSwgICAxODQsICAgMjI3LCAg
IDIzMCwgICAyNDMsICAgMjQ4LCAgIDI1MywKKyAgICAgMjU5LCAgIDI2MiwgICAyNjUsICAgMjY4
LCAgIDM2MywgICAzNzMsICAgMzg2LCAgIDM5NCwgICA0OTQsICAgNDk3LAorICAgICA1MDUsICAg
NTA4LCAgIDUxNCwgICA1MTgsICAgNTI1LCAgIDUzMSwgICA1NDAsICAgNTQ4LCAgIDYwMywgICA2
MTMsCisgICAgIDYxNiwgICA2MjYsICAgNjM2LCAgIDY1NywgICA2NTgsICAgNjU5LCAgIDY2NCwg
ICA2NjUsICAgNjczLCAgIDY4NCwKKyAgICAgNjg1LCAgIDY5MywgICA3MDQsICAgNzA4LCAgIDcw
OSwgICA3MTksICAgNzI5LCAgIDczOSwgICA3NTIsICAgNzUzLAorICAgICA3NjMsICAgNzc2LCAg
IDc4MCwgICA3ODQsICAgNzg4LCAgIDc4OSwgICA4MDIsICAgODAzLCAgIDgxNiwgICA4MTcsCisg
ICAgIDgzMCwgICA4MzEsICAgODQ4LCAgIDg0OSwgICA4NjIsICAgODYzLCAgIDg2NCwgICA4NjUs
ICAgODY2LCAgIDg3MCwKKyAgICAgODczLCAgIDg4NCwgICA4OTIsICAgOTE5LCAgIDkyNCwgICA5
MzgsICAgOTkzLCAgIDk5NiwgIDEwMDMsICAxMDExLAorICAgIDEwMzIsICAxMDUzLCAgMTA2Mywg
IDEwOTEsICAxMDk2LCAgMTEwNiwgIDExMTEsICAxMTIxLCAgMTEyNCwgIDExMjcsCisgICAgMTEz
MCwgIDExMzYsICAxMTQzLCAgMTE0NiwgIDExNjgsICAxMTg2LCAgMTIxMCwgIDEyMzMsICAxMjM3
LCAgMTI1NSwKKyAgICAxMjYzLCAgMTI5NSwgIDEzMTUsICAxMzM2LCAgMTM0NSwgIDEzNjgsICAx
MzcxLCAgMTM3NywgIDEzODUsICAxMzkzLAorICAgIDE0MDEsICAxNDExLCAgMTQxOCwgIDE0MjEs
ICAxNDI0LCAgMTQzMCwgIDE0MzMsICAxNDQ4LCAgMTQ1MiwgIDE0NTYsCisgICAgMTQ2MCwgIDE0
NjQsICAxNDY5LCAgMTQ3NCwgIDE0NzksICAxNDg0LCAgMTQ4OSwgIDE0OTQsICAxNDk5LCAgMTUw
NCwKKyAgICAxNTA5LCAgMTUxNCwgIDE1MTksICAxNTI0LCAgMTUyOCwgIDE1MzIsICAxNTQwLCAg
MTU0OCwgIDE1NTIsICAxNTY1LAorICAgIDE1NjUsICAxNTc5LCAgMTU3OSwgIDE1ODgsICAxNTkx
LCAgMTYwNywgIDE2NDAsICAxNjQ0LCAgMTY1MCwgIDE2NTcsCisgICAgMTY3MiwgIDE2NzYsICAx
NjgwLCAgMTY4MSwgIDE2ODcsICAxNjg4LCAgMTY4OSwgIDE2OTAsICAxNjkxLCAgMTY5NSwKKyAg
ICAxNjk2LCAgMTY5NiwgIDE2OTYsICAxNzA2LCAgMTcwNywgIDE3MTEsICAxNzExLCAgMTcxMiwg
IDE3MTIsICAxNzE3LAorICAgIDE3MjAsICAxNzMwLCAgMTczMywgIDE3MzksICAxNzQwLCAgMTc0
NCwgIDE3NTIsICAxNzU2LCAgMTc2NiwgIDE3NzEsCisgICAgMTc4OCwgIDE3ODgsICAxNzkzLCAg
MTc5MywgIDE4MDAsICAxODAwLCAgMTgwOCwgIDE4MTEsICAxODE3LCAgMTgyMCwKKyAgICAxODI2
LCAgMTgzMCwgIDE4MzcsICAxODQ0LCAgMTg1MSwgIDE4NTgsICAxODY5LCAgMTg3OCwgIDE4ODIs
ICAxODg5LAorICAgIDE4OTIsICAxODk4LCAgMTg5OAogfTsKICNlbmRpZgogCi0jaWYgWVlERUJV
RyB8fCBZWUVSUk9SX1ZFUkJPU0UgfHwgWVlUT0tFTl9UQUJMRQorI2lmIFlZREVCVUcgfHwgWVlF
UlJPUl9WRVJCT1NFIHx8IDAKIC8qIFlZVE5BTUVbU1lNQk9MLU5VTV0gLS0gU3RyaW5nIG5hbWUg
b2YgdGhlIHN5bWJvbCBTWU1CT0wtTlVNLgogICAgRmlyc3QsIHRoZSB0ZXJtaW5hbHMsIHRoZW4s
IHN0YXJ0aW5nIGF0IFlZTlRPS0VOUywgbm9udGVybWluYWxzLiAgKi8KIHN0YXRpYyBjb25zdCBj
aGFyICpjb25zdCB5eXRuYW1lW10gPQpAQCAtODM0LDE2ICs3NzgsMTYgQEAgc3RhdGljIGNvbnN0
IGNoYXIgKmNvbnN0IHl5dG5hbWVbXSA9CiAgICJpbml0X2RlY2xhcmF0b3JfbGlzdCIsICJzaW5n
bGVfZGVjbGFyYXRpb24iLCAiZnVsbHlfc3BlY2lmaWVkX3R5cGUiLAogICAidHlwZV9xdWFsaWZp
ZXIiLCAidHlwZV9zcGVjaWZpZXIiLCAicHJlY2lzaW9uX3F1YWxpZmllciIsCiAgICJ0eXBlX3Nw
ZWNpZmllcl9ub19wcmVjIiwgInR5cGVfc3BlY2lmaWVyX25vbmFycmF5IiwgInN0cnVjdF9zcGVj
aWZpZXIiLAotICAiQDEiLCAiQDIiLCAic3RydWN0X2RlY2xhcmF0aW9uX2xpc3QiLCAic3RydWN0
X2RlY2xhcmF0aW9uIiwKKyAgIiRAMSIsICIkQDIiLCAic3RydWN0X2RlY2xhcmF0aW9uX2xpc3Qi
LCAic3RydWN0X2RlY2xhcmF0aW9uIiwKICAgInN0cnVjdF9kZWNsYXJhdG9yX2xpc3QiLCAic3Ry
dWN0X2RlY2xhcmF0b3IiLCAiaW5pdGlhbGl6ZXIiLAogICAiZGVjbGFyYXRpb25fc3RhdGVtZW50
IiwgInN0YXRlbWVudCIsICJzaW1wbGVfc3RhdGVtZW50IiwKLSAgImNvbXBvdW5kX3N0YXRlbWVu
dCIsICJAMyIsICJANCIsICJzdGF0ZW1lbnRfbm9fbmV3X3Njb3BlIiwKLSAgInN0YXRlbWVudF93
aXRoX3Njb3BlIiwgIkA1IiwgIkA2IiwgImNvbXBvdW5kX3N0YXRlbWVudF9ub19uZXdfc2NvcGUi
LAorICAiY29tcG91bmRfc3RhdGVtZW50IiwgIiRAMyIsICIkQDQiLCAic3RhdGVtZW50X25vX25l
d19zY29wZSIsCisgICJzdGF0ZW1lbnRfd2l0aF9zY29wZSIsICIkQDUiLCAiJEA2IiwgImNvbXBv
dW5kX3N0YXRlbWVudF9ub19uZXdfc2NvcGUiLAogICAic3RhdGVtZW50X2xpc3QiLCAiZXhwcmVz
c2lvbl9zdGF0ZW1lbnQiLCAic2VsZWN0aW9uX3N0YXRlbWVudCIsCi0gICJzZWxlY3Rpb25fcmVz
dF9zdGF0ZW1lbnQiLCAiY29uZGl0aW9uIiwgIml0ZXJhdGlvbl9zdGF0ZW1lbnQiLCAiQDciLAot
ICAiQDgiLCAiQDkiLCAiZm9yX2luaXRfc3RhdGVtZW50IiwgImNvbmRpdGlvbm9wdCIsICJmb3Jf
cmVzdF9zdGF0ZW1lbnQiLAorICAic2VsZWN0aW9uX3Jlc3Rfc3RhdGVtZW50IiwgImNvbmRpdGlv
biIsICJpdGVyYXRpb25fc3RhdGVtZW50IiwgIiRANyIsCisgICIkQDgiLCAiJEA5IiwgImZvcl9p
bml0X3N0YXRlbWVudCIsICJjb25kaXRpb25vcHQiLCAiZm9yX3Jlc3Rfc3RhdGVtZW50IiwKICAg
Imp1bXBfc3RhdGVtZW50IiwgInRyYW5zbGF0aW9uX3VuaXQiLCAiZXh0ZXJuYWxfZGVjbGFyYXRp
b24iLAotICAiZnVuY3Rpb25fZGVmaW5pdGlvbiIsICJAMTAiLCAwCisgICJmdW5jdGlvbl9kZWZp
bml0aW9uIiwgIiRAMTAiLCBZWV9OVUxMCiB9OwogI2VuZGlmCiAKQEAgLTkxNyw4ICs4NjEsOCBA
QCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5cjJbXSA9CiAgICAgICAgMSwgICAgIDAsICAg
ICAzCiB9OwogCi0vKiBZWURFRkFDVFtTVEFURS1OQU1FXSAtLSBEZWZhdWx0IHJ1bGUgdG8gcmVk
dWNlIHdpdGggaW4gc3RhdGUKLSAgIFNUQVRFLU5VTSB3aGVuIFlZVEFCTEUgZG9lc24ndCBzcGVj
aWZ5IHNvbWV0aGluZyBlbHNlIHRvIGRvLiAgWmVybworLyogWVlERUZBQ1RbU1RBVEUtTkFNRV0g
LS0gRGVmYXVsdCByZWR1Y3Rpb24gbnVtYmVyIGluIHN0YXRlIFNUQVRFLU5VTS4KKyAgIFBlcmZv
cm1lZCB3aGVuIFlZVEFCTEUgZG9lc24ndCBzcGVjaWZ5IHNvbWV0aGluZyBlbHNlIHRvIGRvLiAg
WmVybwogICAgbWVhbnMgdGhlIGRlZmF1bHQgaXMgYW4gZXJyb3IuICAqLwogc3RhdGljIGNvbnN0
IHl5dHlwZV91aW50OCB5eWRlZmFjdFtdID0KIHsKQEAgLTEwMjMsOCArOTY3LDcgQEAgc3RhdGlj
IGNvbnN0IHl5dHlwZV9pbnQxNiB5eXBnb3RvW10gPQogCiAvKiBZWVRBQkxFW1lZUEFDVFtTVEFU
RS1OVU1dXS4gIFdoYXQgdG8gZG8gaW4gc3RhdGUgU1RBVEUtTlVNLiAgSWYKICAgIHBvc2l0aXZl
LCBzaGlmdCB0aGF0IHRva2VuLiAgSWYgbmVnYXRpdmUsIHJlZHVjZSB0aGUgcnVsZSB3aGljaAot
ICAgbnVtYmVyIGlzIHRoZSBvcHBvc2l0ZS4gIElmIHplcm8sIGRvIHdoYXQgWVlERUZBQ1Qgc2F5
cy4KLSAgIElmIFlZVEFCTEVfTklORiwgc3ludGF4IGVycm9yLiAgKi8KKyAgIG51bWJlciBpcyB0
aGUgb3Bwb3NpdGUuICBJZiBZWVRBQkxFX05JTkYsIHN5bnRheCBlcnJvci4gICovCiAjZGVmaW5l
IFlZVEFCTEVfTklORiAtMTY2CiBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDE2IHl5dGFibGVbXSA9
CiB7CkBAIC0xMTgwLDYgKzExMjMsMTIgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eXRh
YmxlW10gPQogICAgICAgMzEKIH07CiAKKyNkZWZpbmUgeXlwYWN0X3ZhbHVlX2lzX2RlZmF1bHQo
WXlzdGF0ZSkgXAorICAoISEoKFl5c3RhdGUpID09ICgtMjYxKSkpCisKKyNkZWZpbmUgeXl0YWJs
ZV92YWx1ZV9pc19lcnJvcihZeXRhYmxlX3ZhbHVlKSBcCisgIFlZSUQgKDApCisKIHN0YXRpYyBj
b25zdCB5eXR5cGVfaW50MTYgeXljaGVja1tdID0KIHsKICAgICAgICAwLCAgICAyNSwgICAgODks
ICAgIDg4LCAgICA5NiwgICAgNTcsICAgMTYyLCAgICA3MywgICAxNTMsICAgMTI4LApAQCAtMTM4
MywzMCArMTMzMiwzOSBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5c3Rvc1tdID0KIAog
LyogTGlrZSBZWUVSUk9SIGV4Y2VwdCBkbyBjYWxsIHl5ZXJyb3IuICBUaGlzIHJlbWFpbnMgaGVy
ZSB0ZW1wb3JhcmlseQogICAgdG8gZWFzZSB0aGUgdHJhbnNpdGlvbiB0byB0aGUgbmV3IG1lYW5p
bmcgb2YgWVlFUlJPUiwgZm9yIEdDQy4KLSAgIE9uY2UgR0NDIHZlcnNpb24gMiBoYXMgc3VwcGxh
bnRlZCB2ZXJzaW9uIDEsIHRoaXMgY2FuIGdvLiAgKi8KKyAgIE9uY2UgR0NDIHZlcnNpb24gMiBo
YXMgc3VwcGxhbnRlZCB2ZXJzaW9uIDEsIHRoaXMgY2FuIGdvLiAgSG93ZXZlciwKKyAgIFlZRkFJ
TCBhcHBlYXJzIHRvIGJlIGluIHVzZS4gIE5ldmVydGhlbGVzcywgaXQgaXMgZm9ybWFsbHkgZGVw
cmVjYXRlZAorICAgaW4gQmlzb24gMi40LjIncyBORVdTIGVudHJ5LCB3aGVyZSBhIHBsYW4gdG8g
cGhhc2UgaXQgb3V0IGlzCisgICBkaXNjdXNzZWQuICAqLwogCiAjZGVmaW5lIFlZRkFJTAkJZ290
byB5eWVycmxhYgorI2lmIGRlZmluZWQgWVlGQUlMCisgIC8qIFRoaXMgaXMgaGVyZSB0byBzdXBw
cmVzcyB3YXJuaW5ncyBmcm9tIHRoZSBHQ0MgY3BwJ3MKKyAgICAgLVd1bnVzZWQtbWFjcm9zLiAg
Tm9ybWFsbHkgd2UgZG9uJ3Qgd29ycnkgYWJvdXQgdGhhdCB3YXJuaW5nLCBidXQKKyAgICAgc29t
ZSB1c2VycyBkbywgYW5kIHdlIHdhbnQgdG8gbWFrZSBpdCBlYXN5IGZvciB1c2VycyB0byByZW1v
dmUKKyAgICAgWVlGQUlMIHVzZXMsIHdoaWNoIHdpbGwgcHJvZHVjZSB3YXJuaW5ncyBmcm9tIEJp
c29uIDIuNS4gICovCisjZW5kaWYKIAogI2RlZmluZSBZWVJFQ09WRVJJTkcoKSAgKCEheXllcnJz
dGF0dXMpCiAKLSNkZWZpbmUgWVlCQUNLVVAoVG9rZW4sIFZhbHVlKQkJCQkJXAotZG8JCQkJCQkJ
CVwKLSAgaWYgKHl5Y2hhciA9PSBZWUVNUFRZICYmIHl5bGVuID09IDEpCQkJCVwKLSAgICB7CQkJ
CQkJCQlcCi0gICAgICB5eWNoYXIgPSAoVG9rZW4pOwkJCQkJCVwKLSAgICAgIHl5bHZhbCA9IChW
YWx1ZSk7CQkJCQkJXAotICAgICAgeXl0b2tlbiA9IFlZVFJBTlNMQVRFICh5eWNoYXIpOwkJCQlc
Ci0gICAgICBZWVBPUFNUQUNLICgxKTsJCQkJCQlcCi0gICAgICBnb3RvIHl5YmFja3VwOwkJCQkJ
CVwKLSAgICB9CQkJCQkJCQlcCi0gIGVsc2UJCQkJCQkJCVwKLSAgICB7CQkJCQkJCQlcCisjZGVm
aW5lIFlZQkFDS1VQKFRva2VuLCBWYWx1ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorZG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgaWYgKHl5Y2hhciA9PSBZWUVNUFRZKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgeXljaGFyID0gKFRva2Vu
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHl5bHZh
bCA9IChWYWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICBZWVBPUFNUQUNLICh5eWxlbik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgeXlzdGF0ZSA9ICp5eXNzcDsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgIGdvdG8geXliYWNrdXA7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBlbHNlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgICB5eWVycm9yICgmeXlsbG9jLCBjb250ZXh0LCBZWV8oInN5bnRheCBlcnJvcjogY2Fu
bm90IGJhY2sgdXAiKSk7IFwKICAgICAgIFlZRVJST1I7CQkJCQkJCVwKICAgICB9CQkJCQkJCQlc
CiB3aGlsZSAoWVlJRCAoMCkpCiAKLQorLyogRXJyb3IgdG9rZW4gbnVtYmVyICovCiAjZGVmaW5l
IFlZVEVSUk9SCTEKICNkZWZpbmUgWVlFUlJDT0RFCTI1NgogCkBAIC0xNDE1LDI3ICsxMzczLDI4
IEBAIHdoaWxlIChZWUlEICgwKSkKICAgIElmIE4gaXMgMCwgdGhlbiBzZXQgQ1VSUkVOVCB0byB0
aGUgZW1wdHkgbG9jYXRpb24gd2hpY2ggZW5kcwogICAgdGhlIHByZXZpb3VzIHN5bWJvbDogUkhT
WzBdIChhbHdheXMgZGVmaW5lZCkuICAqLwogCi0jZGVmaW5lIFlZUkhTTE9DKFJocywgSykgKChS
aHMpW0tdKQogI2lmbmRlZiBZWUxMT0NfREVGQVVMVAotIyBkZWZpbmUgWVlMTE9DX0RFRkFVTFQo
Q3VycmVudCwgUmhzLCBOKQkJCQlcCi0gICAgZG8JCQkJCQkJCQlcCi0gICAgICBpZiAoWVlJRCAo
TikpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LQl7CQkJCQkJCQlcCi0JICAoQ3VycmVudCkuZmlyc3RfbGluZSAgID0gWVlSSFNMT0MgKFJocywg
MSkuZmlyc3RfbGluZTsJXAotCSAgKEN1cnJlbnQpLmZpcnN0X2NvbHVtbiA9IFlZUkhTTE9DIChS
aHMsIDEpLmZpcnN0X2NvbHVtbjsJXAotCSAgKEN1cnJlbnQpLmxhc3RfbGluZSAgICA9IFlZUkhT
TE9DIChSaHMsIE4pLmxhc3RfbGluZTsJCVwKLQkgIChDdXJyZW50KS5sYXN0X2NvbHVtbiAgPSBZ
WVJIU0xPQyAoUmhzLCBOKS5sYXN0X2NvbHVtbjsJXAotCX0JCQkJCQkJCVwKLSAgICAgIGVsc2UJ
CQkJCQkJCVwKLQl7CQkJCQkJCQlcCi0JICAoQ3VycmVudCkuZmlyc3RfbGluZSAgID0gKEN1cnJl
bnQpLmxhc3RfbGluZSAgID0JCVwKLQkgICAgWVlSSFNMT0MgKFJocywgMCkubGFzdF9saW5lOwkJ
CQlcCi0JICAoQ3VycmVudCkuZmlyc3RfY29sdW1uID0gKEN1cnJlbnQpLmxhc3RfY29sdW1uID0J
CVwKLQkgICAgWVlSSFNMT0MgKFJocywgMCkubGFzdF9jb2x1bW47CQkJCVwKLQl9CQkJCQkJCQlc
CisjIGRlZmluZSBZWUxMT0NfREVGQVVMVChDdXJyZW50LCBSaHMsIE4pICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgZG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBpZiAoWVlJRCAoTikp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2xpbmUgICA9IFlZUkhT
TE9DIChSaHMsIDEpLmZpcnN0X2xpbmU7ICAgICAgICBcCisgICAgICAgICAgKEN1cnJlbnQpLmZp
cnN0X2NvbHVtbiA9IFlZUkhTTE9DIChSaHMsIDEpLmZpcnN0X2NvbHVtbjsgICAgICBcCisgICAg
ICAgICAgKEN1cnJlbnQpLmxhc3RfbGluZSAgICA9IFlZUkhTTE9DIChSaHMsIE4pLmxhc3RfbGlu
ZTsgICAgICAgICBcCisgICAgICAgICAgKEN1cnJlbnQpLmxhc3RfY29sdW1uICA9IFlZUkhTTE9D
IChSaHMsIE4pLmxhc3RfY29sdW1uOyAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBl
bHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2xp
bmUgICA9IChDdXJyZW50KS5sYXN0X2xpbmUgICA9ICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICBZWVJIU0xPQyAoUmhzLCAwKS5sYXN0X2xpbmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2NvbHVtbiA9IChDdXJyZW50KS5sYXN0
X2NvbHVtbiA9ICAgICAgICAgICAgICBcCisgICAgICAgICAgICBZWVJIU0xPQyAoUmhzLCAwKS5s
YXN0X2NvbHVtbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgd2hpbGUgKFlZSUQgKDApKQogI2VuZGlmCiAKKyNkZWZpbmUgWVlSSFNMT0MoUmhz
LCBLKSAoKFJocylbS10pCisKIAogLyogWVlfTE9DQVRJT05fUFJJTlQgLS0gUHJpbnQgdGhlIGxv
Y2F0aW9uIG9uIHRoZSBzdHJlYW0uCiAgICBUaGlzIG1hY3JvIHdhcyBub3QgbWFuZGF0ZWQgb3Jp
Z2luYWxseTogZGVmaW5lIG9ubHkgaWYgd2Uga25vdwpAQCAtMTQ0MywxMCArMTQwMiw0NiBAQCB3
aGlsZSAoWVlJRCAoMCkpCiAKICNpZm5kZWYgWVlfTE9DQVRJT05fUFJJTlQKICMgaWYgZGVmaW5l
ZCBZWUxUWVBFX0lTX1RSSVZJQUwgJiYgWVlMVFlQRV9JU19UUklWSUFMCi0jICBkZWZpbmUgWVlf
TE9DQVRJT05fUFJJTlQoRmlsZSwgTG9jKQkJCVwKLSAgICAgZnByaW50ZiAoRmlsZSwgIiVkLiVk
LSVkLiVkIiwJCQlcCi0JICAgICAgKExvYykuZmlyc3RfbGluZSwgKExvYykuZmlyc3RfY29sdW1u
LAlcCi0JICAgICAgKExvYykubGFzdF9saW5lLCAgKExvYykubGFzdF9jb2x1bW4pCisKKy8qIFBy
aW50ICpZWUxPQ1Agb24gWVlPLiAgUHJpdmF0ZSwgZG8gbm90IHJlbHkgb24gaXRzIGV4aXN0ZW5j
ZS4gKi8KKworX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpCisjaWYgKGRlZmluZWQgX19TVERD
X18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1
cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQorc3RhdGljIHVuc2lnbmVkCit5eV9sb2NhdGlvbl9wcmlu
dF8gKEZJTEUgKnl5bywgWVlMVFlQRSBjb25zdCAqIGNvbnN0IHl5bG9jcCkKKyNlbHNlCitzdGF0
aWMgdW5zaWduZWQKK3l5X2xvY2F0aW9uX3ByaW50XyAoeXlvLCB5eWxvY3ApCisgICAgRklMRSAq
eXlvOworICAgIFlZTFRZUEUgY29uc3QgKiBjb25zdCB5eWxvY3A7CisjZW5kaWYKK3sKKyAgdW5z
aWduZWQgcmVzID0gMDsKKyAgaW50IGVuZF9jb2wgPSAwICE9IHl5bG9jcC0+bGFzdF9jb2x1bW4g
PyB5eWxvY3AtPmxhc3RfY29sdW1uIC0gMSA6IDA7CisgIGlmICgwIDw9IHl5bG9jcC0+Zmlyc3Rf
bGluZSkKKyAgICB7CisgICAgICByZXMgKz0gZnByaW50ZiAoeXlvLCAiJWQiLCB5eWxvY3AtPmZp
cnN0X2xpbmUpOworICAgICAgaWYgKDAgPD0geXlsb2NwLT5maXJzdF9jb2x1bW4pCisgICAgICAg
IHJlcyArPSBmcHJpbnRmICh5eW8sICIuJWQiLCB5eWxvY3AtPmZpcnN0X2NvbHVtbik7CisgICAg
fQorICBpZiAoMCA8PSB5eWxvY3AtPmxhc3RfbGluZSkKKyAgICB7CisgICAgICBpZiAoeXlsb2Nw
LT5maXJzdF9saW5lIDwgeXlsb2NwLT5sYXN0X2xpbmUpCisgICAgICAgIHsKKyAgICAgICAgICBy
ZXMgKz0gZnByaW50ZiAoeXlvLCAiLSVkIiwgeXlsb2NwLT5sYXN0X2xpbmUpOworICAgICAgICAg
IGlmICgwIDw9IGVuZF9jb2wpCisgICAgICAgICAgICByZXMgKz0gZnByaW50ZiAoeXlvLCAiLiVk
IiwgZW5kX2NvbCk7CisgICAgICAgIH0KKyAgICAgIGVsc2UgaWYgKDAgPD0gZW5kX2NvbCAmJiB5
eWxvY3AtPmZpcnN0X2NvbHVtbiA8IGVuZF9jb2wpCisgICAgICAgIHJlcyArPSBmcHJpbnRmICh5
eW8sICItJWQiLCBlbmRfY29sKTsKKyAgICB9CisgIHJldHVybiByZXM7CisgfQorCisjICBkZWZp
bmUgWVlfTE9DQVRJT05fUFJJTlQoRmlsZSwgTG9jKSAgICAgICAgICBcCisgIHl5X2xvY2F0aW9u
X3ByaW50XyAoRmlsZSwgJihMb2MpKQorCiAjIGVsc2UKICMgIGRlZmluZSBZWV9MT0NBVElPTl9Q
UklOVChGaWxlLCBMb2MpICgodm9pZCkgMCkKICMgZW5kaWYKQEAgLTE0NTQsNyArMTQ0OSw2IEBA
IHdoaWxlIChZWUlEICgwKSkKIAogCiAvKiBZWUxFWCAtLSBjYWxsaW5nIGB5eWxleCcgd2l0aCB0
aGUgcmlnaHQgYXJndW1lbnRzLiAgKi8KLQogI2lmZGVmIFlZTEVYX1BBUkFNCiAjIGRlZmluZSBZ
WUxFWCB5eWxleCAoJnl5bHZhbCwgJnl5bGxvYywgWVlMRVhfUEFSQU0pCiAjZWxzZQpAQCAtMTUw
Niw2ICsxNTAwLDggQEAgeXlfc3ltYm9sX3ZhbHVlX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLAog
ICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQ7CiAjZW5kaWYKIHsKKyAgRklMRSAqeXlvID0geXlv
dXRwdXQ7CisgIFlZVVNFICh5eW8pOwogICBpZiAoIXl5dmFsdWVwKQogICAgIHJldHVybjsKICAg
WVlVU0UgKHl5bG9jYXRpb25wKTsKQEAgLTE1MTksNyArMTUxNSw3IEBAIHl5X3N5bWJvbF92YWx1
ZV9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwKICAgc3dpdGNoICh5eXR5cGUpCiAgICAgewogICAg
ICAgZGVmYXVsdDoKLQlicmVhazsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCkBAIC0xNTYx
LDE3ICsxNTU3LDIwIEBAIHl5X3N5bWJvbF9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2YWwK
ICNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAogICAgICB8
fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCiBzdGF0aWMgdm9pZAot
eXlfc3RhY2tfcHJpbnQgKHl5dHlwZV9pbnQxNiAqYm90dG9tLCB5eXR5cGVfaW50MTYgKnRvcCkK
K3l5X3N0YWNrX3ByaW50ICh5eXR5cGVfaW50MTYgKnl5Ym90dG9tLCB5eXR5cGVfaW50MTYgKnl5
dG9wKQogI2Vsc2UKIHN0YXRpYyB2b2lkCi15eV9zdGFja19wcmludCAoYm90dG9tLCB0b3ApCi0g
ICAgeXl0eXBlX2ludDE2ICpib3R0b207Ci0gICAgeXl0eXBlX2ludDE2ICp0b3A7Cit5eV9zdGFj
a19wcmludCAoeXlib3R0b20sIHl5dG9wKQorICAgIHl5dHlwZV9pbnQxNiAqeXlib3R0b207Cisg
ICAgeXl0eXBlX2ludDE2ICp5eXRvcDsKICNlbmRpZgogewogICBZWUZQUklOVEYgKHN0ZGVyciwg
IlN0YWNrIG5vdyIpOwotICBmb3IgKDsgYm90dG9tIDw9IHRvcDsgKytib3R0b20pCi0gICAgWVlG
UFJJTlRGIChzdGRlcnIsICIgJWQiLCAqYm90dG9tKTsKKyAgZm9yICg7IHl5Ym90dG9tIDw9IHl5
dG9wOyB5eWJvdHRvbSsrKQorICAgIHsKKyAgICAgIGludCB5eWJvdCA9ICp5eWJvdHRvbTsKKyAg
ICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiICVkIiwgeXlib3QpOworICAgIH0KICAgWVlGUFJJTlRG
IChzdGRlcnIsICJcbiIpOwogfQogCkBAIC0xNjA3LDExICsxNjA2LDExIEBAIHl5X3JlZHVjZV9w
cmludCAoeXl2c3AsIHl5bHNwLCB5eXJ1bGUsIGMKICAgLyogVGhlIHN5bWJvbHMgYmVpbmcgcmVk
dWNlZC4gICovCiAgIGZvciAoeXlpID0gMDsgeXlpIDwgeXlucmhzOyB5eWkrKykKICAgICB7Ci0g
ICAgICBmcHJpbnRmIChzdGRlcnIsICIgICAkJWQgPSAiLCB5eWkgKyAxKTsKKyAgICAgIFlZRlBS
SU5URiAoc3RkZXJyLCAiICAgJCVkID0gIiwgeXlpICsgMSk7CiAgICAgICB5eV9zeW1ib2xfcHJp
bnQgKHN0ZGVyciwgeXlyaHNbeXlwcmhzW3l5cnVsZV0gKyB5eWldLAogCQkgICAgICAgJih5eXZz
cFsoeXlpICsgMSkgLSAoeXlucmhzKV0pCiAJCSAgICAgICAsICYoeXlsc3BbKHl5aSArIDEpIC0g
KHl5bnJocyldKQkJICAgICAgICwgY29udGV4dCk7Ci0gICAgICBmcHJpbnRmIChzdGRlcnIsICJc
biIpOworICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICJcbiIpOwogICAgIH0KIH0KIApAQCAtMTY0
OCw3ICsxNjQ3LDYgQEAgaW50IHl5ZGVidWc7CiAjIGRlZmluZSBZWU1BWERFUFRIIDEwMDAwCiAj
ZW5kaWYKIAotDAogCiAjaWYgWVlFUlJPUl9WRVJCT1NFCiAKQEAgLTE3NTEsMTE1ICsxNzQ5LDE0
NSBAQCB5eXRuYW1lcnIgKGNoYXIgKnl5cmVzLCBjb25zdCBjaGFyICp5eXN0CiB9CiAjIGVuZGlm
CiAKLS8qIENvcHkgaW50byBZWVJFU1VMVCBhbiBlcnJvciBtZXNzYWdlIGFib3V0IHRoZSB1bmV4
cGVjdGVkIHRva2VuCi0gICBZWUNIQVIgd2hpbGUgaW4gc3RhdGUgWVlTVEFURS4gIFJldHVybiB0
aGUgbnVtYmVyIG9mIGJ5dGVzIGNvcGllZCwKLSAgIGluY2x1ZGluZyB0aGUgdGVybWluYXRpbmcg
bnVsbCBieXRlLiAgSWYgWVlSRVNVTFQgaXMgbnVsbCwgZG8gbm90Ci0gICBjb3B5IGFueXRoaW5n
OyBqdXN0IHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgd291bGQgYmUKLSAgIGNvcGll
ZC4gIEFzIGEgc3BlY2lhbCBjYXNlLCByZXR1cm4gMCBpZiBhbiBvcmRpbmFyeSAic3ludGF4IGVy
cm9yIgotICAgbWVzc2FnZSB3aWxsIGRvLiAgUmV0dXJuIFlZU0laRV9NQVhJTVVNIGlmIG92ZXJm
bG93IG9jY3VycyBkdXJpbmcKLSAgIHNpemUgY2FsY3VsYXRpb24uICAqLwotc3RhdGljIFlZU0la
RV9UCi15eXN5bnRheF9lcnJvciAoY2hhciAqeXlyZXN1bHQsIGludCB5eXN0YXRlLCBpbnQgeXlj
aGFyKQorLyogQ29weSBpbnRvICpZWU1TRywgd2hpY2ggaXMgb2Ygc2l6ZSAqWVlNU0dfQUxMT0Ms
IGFuIGVycm9yIG1lc3NhZ2UKKyAgIGFib3V0IHRoZSB1bmV4cGVjdGVkIHRva2VuIFlZVE9LRU4g
Zm9yIHRoZSBzdGF0ZSBzdGFjayB3aG9zZSB0b3AgaXMKKyAgIFlZU1NQLgorCisgICBSZXR1cm4g
MCBpZiAqWVlNU0cgd2FzIHN1Y2Nlc3NmdWxseSB3cml0dGVuLiAgUmV0dXJuIDEgaWYgKllZTVNH
IGlzCisgICBub3QgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgdGhlIG1lc3NhZ2UuICBJbiB0aGF0IGNh
c2UsIGFsc28gc2V0CisgICAqWVlNU0dfQUxMT0MgdG8gdGhlIHJlcXVpcmVkIG51bWJlciBvZiBi
eXRlcy4gIFJldHVybiAyIGlmIHRoZQorICAgcmVxdWlyZWQgbnVtYmVyIG9mIGJ5dGVzIGlzIHRv
byBsYXJnZSB0byBzdG9yZS4gICovCitzdGF0aWMgaW50Cit5eXN5bnRheF9lcnJvciAoWVlTSVpF
X1QgKnl5bXNnX2FsbG9jLCBjaGFyICoqeXltc2csCisgICAgICAgICAgICAgICAgeXl0eXBlX2lu
dDE2ICp5eXNzcCwgaW50IHl5dG9rZW4pCiB7Ci0gIGludCB5eW4gPSB5eXBhY3RbeXlzdGF0ZV07
CisgIFlZU0laRV9UIHl5c2l6ZTAgPSB5eXRuYW1lcnIgKFlZX05VTEwsIHl5dG5hbWVbeXl0b2tl
bl0pOworICBZWVNJWkVfVCB5eXNpemUgPSB5eXNpemUwOworICBlbnVtIHsgWVlFUlJPUl9WRVJC
T1NFX0FSR1NfTUFYSU1VTSA9IDUgfTsKKyAgLyogSW50ZXJuYXRpb25hbGl6ZWQgZm9ybWF0IHN0
cmluZy4gKi8KKyAgY29uc3QgY2hhciAqeXlmb3JtYXQgPSBZWV9OVUxMOworICAvKiBBcmd1bWVu
dHMgb2YgeXlmb3JtYXQuICovCisgIGNoYXIgY29uc3QgKnl5YXJnW1lZRVJST1JfVkVSQk9TRV9B
UkdTX01BWElNVU1dOworICAvKiBOdW1iZXIgb2YgcmVwb3J0ZWQgdG9rZW5zIChvbmUgZm9yIHRo
ZSAidW5leHBlY3RlZCIsIG9uZSBwZXIKKyAgICAgImV4cGVjdGVkIikuICovCisgIGludCB5eWNv
dW50ID0gMDsKKworICAvKiBUaGVyZSBhcmUgbWFueSBwb3NzaWJpbGl0aWVzIGhlcmUgdG8gY29u
c2lkZXI6CisgICAgIC0gQXNzdW1lIFlZRkFJTCBpcyBub3QgdXNlZC4gIEl0J3MgdG9vIGZsYXdl
ZCB0byBjb25zaWRlci4gIFNlZQorICAgICAgIDxodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZl
L2h0bWwvYmlzb24tcGF0Y2hlcy8yMDA5LTEyL21zZzAwMDI0Lmh0bWw+CisgICAgICAgZm9yIGRl
dGFpbHMuICBZWUVSUk9SIGlzIGZpbmUgYXMgaXQgZG9lcyBub3QgaW52b2tlIHRoaXMKKyAgICAg
ICBmdW5jdGlvbi4KKyAgICAgLSBJZiB0aGlzIHN0YXRlIGlzIGEgY29uc2lzdGVudCBzdGF0ZSB3
aXRoIGEgZGVmYXVsdCBhY3Rpb24sIHRoZW4KKyAgICAgICB0aGUgb25seSB3YXkgdGhpcyBmdW5j
dGlvbiB3YXMgaW52b2tlZCBpcyBpZiB0aGUgZGVmYXVsdCBhY3Rpb24KKyAgICAgICBpcyBhbiBl
cnJvciBhY3Rpb24uICBJbiB0aGF0IGNhc2UsIGRvbid0IGNoZWNrIGZvciBleHBlY3RlZAorICAg
ICAgIHRva2VucyBiZWNhdXNlIHRoZXJlIGFyZSBub25lLgorICAgICAtIFRoZSBvbmx5IHdheSB0
aGVyZSBjYW4gYmUgbm8gbG9va2FoZWFkIHByZXNlbnQgKGluIHl5Y2hhcikgaXMgaWYKKyAgICAg
ICB0aGlzIHN0YXRlIGlzIGEgY29uc2lzdGVudCBzdGF0ZSB3aXRoIGEgZGVmYXVsdCBhY3Rpb24u
ICBUaHVzLAorICAgICAgIGRldGVjdGluZyB0aGUgYWJzZW5jZSBvZiBhIGxvb2thaGVhZCBpcyBz
dWZmaWNpZW50IHRvIGRldGVybWluZQorICAgICAgIHRoYXQgdGhlcmUgaXMgbm8gdW5leHBlY3Rl
ZCBvciBleHBlY3RlZCB0b2tlbiB0byByZXBvcnQuICBJbiB0aGF0CisgICAgICAgY2FzZSwganVz
dCByZXBvcnQgYSBzaW1wbGUgInN5bnRheCBlcnJvciIuCisgICAgIC0gRG9uJ3QgYXNzdW1lIHRo
ZXJlIGlzbid0IGEgbG9va2FoZWFkIGp1c3QgYmVjYXVzZSB0aGlzIHN0YXRlIGlzIGEKKyAgICAg
ICBjb25zaXN0ZW50IHN0YXRlIHdpdGggYSBkZWZhdWx0IGFjdGlvbi4gIFRoZXJlIG1pZ2h0IGhh
dmUgYmVlbiBhCisgICAgICAgcHJldmlvdXMgaW5jb25zaXN0ZW50IHN0YXRlLCBjb25zaXN0ZW50
IHN0YXRlIHdpdGggYSBub24tZGVmYXVsdAorICAgICAgIGFjdGlvbiwgb3IgdXNlciBzZW1hbnRp
YyBhY3Rpb24gdGhhdCBtYW5pcHVsYXRlZCB5eWNoYXIuCisgICAgIC0gT2YgY291cnNlLCB0aGUg
ZXhwZWN0ZWQgdG9rZW4gbGlzdCBkZXBlbmRzIG9uIHN0YXRlcyB0byBoYXZlCisgICAgICAgY29y
cmVjdCBsb29rYWhlYWQgaW5mb3JtYXRpb24sIGFuZCBpdCBkZXBlbmRzIG9uIHRoZSBwYXJzZXIg
bm90CisgICAgICAgdG8gcGVyZm9ybSBleHRyYSByZWR1Y3Rpb25zIGFmdGVyIGZldGNoaW5nIGEg
bG9va2FoZWFkIGZyb20gdGhlCisgICAgICAgc2Nhbm5lciBhbmQgYmVmb3JlIGRldGVjdGluZyBh
IHN5bnRheCBlcnJvci4gIFRodXMsIHN0YXRlIG1lcmdpbmcKKyAgICAgICAoZnJvbSBMQUxSIG9y
IElFTFIpIGFuZCBkZWZhdWx0IHJlZHVjdGlvbnMgY29ycnVwdCB0aGUgZXhwZWN0ZWQKKyAgICAg
ICB0b2tlbiBsaXN0LiAgSG93ZXZlciwgdGhlIGxpc3QgaXMgY29ycmVjdCBmb3IgY2Fub25pY2Fs
IExSIHdpdGgKKyAgICAgICBvbmUgZXhjZXB0aW9uOiBpdCB3aWxsIHN0aWxsIGNvbnRhaW4gYW55
IHRva2VuIHRoYXQgd2lsbCBub3QgYmUKKyAgICAgICBhY2NlcHRlZCBkdWUgdG8gYW4gZXJyb3Ig
YWN0aW9uIGluIGEgbGF0ZXIgc3RhdGUuCisgICovCisgIGlmICh5eXRva2VuICE9IFlZRU1QVFkp
CisgICAgeworICAgICAgaW50IHl5biA9IHl5cGFjdFsqeXlzc3BdOworICAgICAgeXlhcmdbeXlj
b3VudCsrXSA9IHl5dG5hbWVbeXl0b2tlbl07CisgICAgICBpZiAoIXl5cGFjdF92YWx1ZV9pc19k
ZWZhdWx0ICh5eW4pKQorICAgICAgICB7CisgICAgICAgICAgLyogU3RhcnQgWVlYIGF0IC1ZWU4g
aWYgbmVnYXRpdmUgdG8gYXZvaWQgbmVnYXRpdmUgaW5kZXhlcyBpbgorICAgICAgICAgICAgIFlZ
Q0hFQ0suICBJbiBvdGhlciB3b3Jkcywgc2tpcCB0aGUgZmlyc3QgLVlZTiBhY3Rpb25zIGZvcgor
ICAgICAgICAgICAgIHRoaXMgc3RhdGUgYmVjYXVzZSB0aGV5IGFyZSBkZWZhdWx0IGFjdGlvbnMu
ICAqLworICAgICAgICAgIGludCB5eXhiZWdpbiA9IHl5biA8IDAgPyAteXluIDogMDsKKyAgICAg
ICAgICAvKiBTdGF5IHdpdGhpbiBib3VuZHMgb2YgYm90aCB5eWNoZWNrIGFuZCB5eXRuYW1lLiAg
Ki8KKyAgICAgICAgICBpbnQgeXljaGVja2xpbSA9IFlZTEFTVCAtIHl5biArIDE7CisgICAgICAg
ICAgaW50IHl5eGVuZCA9IHl5Y2hlY2tsaW0gPCBZWU5UT0tFTlMgPyB5eWNoZWNrbGltIDogWVlO
VE9LRU5TOworICAgICAgICAgIGludCB5eXg7CisKKyAgICAgICAgICBmb3IgKHl5eCA9IHl5eGJl
Z2luOyB5eXggPCB5eXhlbmQ7ICsreXl4KQorICAgICAgICAgICAgaWYgKHl5Y2hlY2tbeXl4ICsg
eXluXSA9PSB5eXggJiYgeXl4ICE9IFlZVEVSUk9SCisgICAgICAgICAgICAgICAgJiYgIXl5dGFi
bGVfdmFsdWVfaXNfZXJyb3IgKHl5dGFibGVbeXl4ICsgeXluXSkpCisgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBpZiAoeXljb3VudCA9PSBZWUVSUk9SX1ZFUkJPU0VfQVJHU19NQVhJ
TVVNKQorICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB5eWNvdW50ID0g
MTsKKyAgICAgICAgICAgICAgICAgICAgeXlzaXplID0geXlzaXplMDsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgeXlhcmdb
eXljb3VudCsrXSA9IHl5dG5hbWVbeXl4XTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICBZWVNJWkVfVCB5eXNpemUxID0geXlzaXplICsgeXl0bmFtZXJyIChZWV9OVUxMLCB5
eXRuYW1lW3l5eF0pOworICAgICAgICAgICAgICAgICAgaWYgKCEgKHl5c2l6ZSA8PSB5eXNpemUx
CisgICAgICAgICAgICAgICAgICAgICAgICAgJiYgeXlzaXplMSA8PSBZWVNUQUNLX0FMTE9DX01B
WElNVU0pKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgICAgICAg
IHl5c2l6ZSA9IHl5c2l6ZTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CiAKLSAgaWYgKCEgKFlZUEFDVF9OSU5GIDwgeXluICYmIHl5biA8PSBZ
WUxBU1QpKQotICAgIHJldHVybiAwOwotICBlbHNlCisgIHN3aXRjaCAoeXljb3VudCkKICAgICB7
Ci0gICAgICBpbnQgeXl0eXBlID0gWVlUUkFOU0xBVEUgKHl5Y2hhcik7Ci0gICAgICBZWVNJWkVf
VCB5eXNpemUwID0geXl0bmFtZXJyICgwLCB5eXRuYW1lW3l5dHlwZV0pOwotICAgICAgWVlTSVpF
X1QgeXlzaXplID0geXlzaXplMDsKLSAgICAgIFlZU0laRV9UIHl5c2l6ZTE7Ci0gICAgICBpbnQg
eXlzaXplX292ZXJmbG93ID0gMDsKLSAgICAgIGVudW0geyBZWUVSUk9SX1ZFUkJPU0VfQVJHU19N
QVhJTVVNID0gNSB9OwotICAgICAgY2hhciBjb25zdCAqeXlhcmdbWVlFUlJPUl9WRVJCT1NFX0FS
R1NfTUFYSU1VTV07Ci0gICAgICBpbnQgeXl4OwotCi0jIGlmIDAKLSAgICAgIC8qIFRoaXMgaXMg
c28geGdldHRleHQgc2VlcyB0aGUgdHJhbnNsYXRhYmxlIGZvcm1hdHMgdGhhdCBhcmUKLQkgY29u
c3RydWN0ZWQgb24gdGhlIGZseS4gICovCi0gICAgICBZWV8oInN5bnRheCBlcnJvciwgdW5leHBl
Y3RlZCAlcyIpOwotICAgICAgWVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMsIGV4cGVj
dGluZyAlcyIpOwotICAgICAgWVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMsIGV4cGVj
dGluZyAlcyBvciAlcyIpOwotICAgICAgWVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMs
IGV4cGVjdGluZyAlcyBvciAlcyBvciAlcyIpOwotICAgICAgWVlfKCJzeW50YXggZXJyb3IsIHVu
ZXhwZWN0ZWQgJXMsIGV4cGVjdGluZyAlcyBvciAlcyBvciAlcyBvciAlcyIpOwotIyBlbmRpZgot
ICAgICAgY2hhciAqeXlmbXQ7Ci0gICAgICBjaGFyIGNvbnN0ICp5eWY7Ci0gICAgICBzdGF0aWMg
Y2hhciBjb25zdCB5eXVuZXhwZWN0ZWRbXSA9ICJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMi
OwotICAgICAgc3RhdGljIGNoYXIgY29uc3QgeXlleHBlY3RpbmdbXSA9ICIsIGV4cGVjdGluZyAl
cyI7Ci0gICAgICBzdGF0aWMgY2hhciBjb25zdCB5eW9yW10gPSAiIG9yICVzIjsKLSAgICAgIGNo
YXIgeXlmb3JtYXRbc2l6ZW9mIHl5dW5leHBlY3RlZAotCQkgICAgKyBzaXplb2YgeXlleHBlY3Rp
bmcgLSAxCi0JCSAgICArICgoWVlFUlJPUl9WRVJCT1NFX0FSR1NfTUFYSU1VTSAtIDIpCi0JCSAg
ICAgICAqIChzaXplb2YgeXlvciAtIDEpKV07Ci0gICAgICBjaGFyIGNvbnN0ICp5eXByZWZpeCA9
IHl5ZXhwZWN0aW5nOwotCi0gICAgICAvKiBTdGFydCBZWVggYXQgLVlZTiBpZiBuZWdhdGl2ZSB0
byBhdm9pZCBuZWdhdGl2ZSBpbmRleGVzIGluCi0JIFlZQ0hFQ0suICAqLwotICAgICAgaW50IHl5
eGJlZ2luID0geXluIDwgMCA/IC15eW4gOiAwOwotCi0gICAgICAvKiBTdGF5IHdpdGhpbiBib3Vu
ZHMgb2YgYm90aCB5eWNoZWNrIGFuZCB5eXRuYW1lLiAgKi8KLSAgICAgIGludCB5eWNoZWNrbGlt
ID0gWVlMQVNUIC0geXluICsgMTsKLSAgICAgIGludCB5eXhlbmQgPSB5eWNoZWNrbGltIDwgWVlO
VE9LRU5TID8geXljaGVja2xpbSA6IFlZTlRPS0VOUzsKLSAgICAgIGludCB5eWNvdW50ID0gMTsK
LQotICAgICAgeXlhcmdbMF0gPSB5eXRuYW1lW3l5dHlwZV07Ci0gICAgICB5eWZtdCA9IHl5c3Rw
Y3B5ICh5eWZvcm1hdCwgeXl1bmV4cGVjdGVkKTsKLQotICAgICAgZm9yICh5eXggPSB5eXhiZWdp
bjsgeXl4IDwgeXl4ZW5kOyArK3l5eCkKLQlpZiAoeXljaGVja1t5eXggKyB5eW5dID09IHl5eCAm
JiB5eXggIT0gWVlURVJST1IpCi0JICB7Ci0JICAgIGlmICh5eWNvdW50ID09IFlZRVJST1JfVkVS
Qk9TRV9BUkdTX01BWElNVU0pCi0JICAgICAgewotCQl5eWNvdW50ID0gMTsKLQkJeXlzaXplID0g
eXlzaXplMDsKLQkJeXlmb3JtYXRbc2l6ZW9mIHl5dW5leHBlY3RlZCAtIDFdID0gJ1wwJzsKLQkJ
YnJlYWs7Ci0JICAgICAgfQotCSAgICB5eWFyZ1t5eWNvdW50KytdID0geXl0bmFtZVt5eXhdOwot
CSAgICB5eXNpemUxID0geXlzaXplICsgeXl0bmFtZXJyICgwLCB5eXRuYW1lW3l5eF0pOwotCSAg
ICB5eXNpemVfb3ZlcmZsb3cgfD0gKHl5c2l6ZTEgPCB5eXNpemUpOwotCSAgICB5eXNpemUgPSB5
eXNpemUxOwotCSAgICB5eWZtdCA9IHl5c3RwY3B5ICh5eWZtdCwgeXlwcmVmaXgpOwotCSAgICB5
eXByZWZpeCA9IHl5b3I7Ci0JICB9Ci0KLSAgICAgIHl5ZiA9IFlZXyh5eWZvcm1hdCk7Ci0gICAg
ICB5eXNpemUxID0geXlzaXplICsgeXlzdHJsZW4gKHl5Zik7Ci0gICAgICB5eXNpemVfb3ZlcmZs
b3cgfD0gKHl5c2l6ZTEgPCB5eXNpemUpOwotICAgICAgeXlzaXplID0geXlzaXplMTsKLQotICAg
ICAgaWYgKHl5c2l6ZV9vdmVyZmxvdykKLQlyZXR1cm4gWVlTSVpFX01BWElNVU07CisjIGRlZmlu
ZSBZWUNBU0VfKE4sIFMpICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGNhc2UgTjogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB5eWZvcm1hdCA9IFM7ICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICBicmVhaworICAgICAgWVlDQVNFXygwLCBZWV8oInN5
bnRheCBlcnJvciIpKTsKKyAgICAgIFlZQ0FTRV8oMSwgWVlfKCJzeW50YXggZXJyb3IsIHVuZXhw
ZWN0ZWQgJXMiKSk7CisgICAgICBZWUNBU0VfKDIsIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVj
dGVkICVzLCBleHBlY3RpbmcgJXMiKSk7CisgICAgICBZWUNBU0VfKDMsIFlZXygic3ludGF4IGVy
cm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMgb3IgJXMiKSk7CisgICAgICBZWUNBU0Vf
KDQsIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMgb3IgJXMg
b3IgJXMiKSk7CisgICAgICBZWUNBU0VfKDUsIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVk
ICVzLCBleHBlY3RpbmcgJXMgb3IgJXMgb3IgJXMgb3IgJXMiKSk7CisjIHVuZGVmIFlZQ0FTRV8K
KyAgICB9CiAKLSAgICAgIGlmICh5eXJlc3VsdCkKLQl7Ci0JICAvKiBBdm9pZCBzcHJpbnRmLCBh
cyB0aGF0IGluZnJpbmdlcyBvbiB0aGUgdXNlcidzIG5hbWUgc3BhY2UuCi0JICAgICBEb24ndCBo
YXZlIHVuZGVmaW5lZCBiZWhhdmlvciBldmVuIGlmIHRoZSB0cmFuc2xhdGlvbgotCSAgICAgcHJv
ZHVjZWQgYSBzdHJpbmcgd2l0aCB0aGUgd3JvbmcgbnVtYmVyIG9mICIlcyJzLiAgKi8KLQkgIGNo
YXIgKnl5cCA9IHl5cmVzdWx0OwotCSAgaW50IHl5aSA9IDA7Ci0JICB3aGlsZSAoKCp5eXAgPSAq
eXlmKSAhPSAnXDAnKQotCSAgICB7Ci0JICAgICAgaWYgKCp5eXAgPT0gJyUnICYmIHl5ZlsxXSA9
PSAncycgJiYgeXlpIDwgeXljb3VudCkKLQkJewotCQkgIHl5cCArPSB5eXRuYW1lcnIgKHl5cCwg
eXlhcmdbeXlpKytdKTsKLQkJICB5eWYgKz0gMjsKLQkJfQotCSAgICAgIGVsc2UKLQkJewotCQkg
IHl5cCsrOwotCQkgIHl5ZisrOwotCQl9Ci0JICAgIH0KLQl9Ci0gICAgICByZXR1cm4geXlzaXpl
OworICB7CisgICAgWVlTSVpFX1QgeXlzaXplMSA9IHl5c2l6ZSArIHl5c3RybGVuICh5eWZvcm1h
dCk7CisgICAgaWYgKCEgKHl5c2l6ZSA8PSB5eXNpemUxICYmIHl5c2l6ZTEgPD0gWVlTVEFDS19B
TExPQ19NQVhJTVVNKSkKKyAgICAgIHJldHVybiAyOworICAgIHl5c2l6ZSA9IHl5c2l6ZTE7Cisg
IH0KKworICBpZiAoKnl5bXNnX2FsbG9jIDwgeXlzaXplKQorICAgIHsKKyAgICAgICp5eW1zZ19h
bGxvYyA9IDIgKiB5eXNpemU7CisgICAgICBpZiAoISAoeXlzaXplIDw9ICp5eW1zZ19hbGxvYwor
ICAgICAgICAgICAgICYmICp5eW1zZ19hbGxvYyA8PSBZWVNUQUNLX0FMTE9DX01BWElNVU0pKQor
ICAgICAgICAqeXltc2dfYWxsb2MgPSBZWVNUQUNLX0FMTE9DX01BWElNVU07CisgICAgICByZXR1
cm4gMTsKICAgICB9CisKKyAgLyogQXZvaWQgc3ByaW50ZiwgYXMgdGhhdCBpbmZyaW5nZXMgb24g
dGhlIHVzZXIncyBuYW1lIHNwYWNlLgorICAgICBEb24ndCBoYXZlIHVuZGVmaW5lZCBiZWhhdmlv
ciBldmVuIGlmIHRoZSB0cmFuc2xhdGlvbgorICAgICBwcm9kdWNlZCBhIHN0cmluZyB3aXRoIHRo
ZSB3cm9uZyBudW1iZXIgb2YgIiVzInMuICAqLworICB7CisgICAgY2hhciAqeXlwID0gKnl5bXNn
OworICAgIGludCB5eWkgPSAwOworICAgIHdoaWxlICgoKnl5cCA9ICp5eWZvcm1hdCkgIT0gJ1ww
JykKKyAgICAgIGlmICgqeXlwID09ICclJyAmJiB5eWZvcm1hdFsxXSA9PSAncycgJiYgeXlpIDwg
eXljb3VudCkKKyAgICAgICAgeworICAgICAgICAgIHl5cCArPSB5eXRuYW1lcnIgKHl5cCwgeXlh
cmdbeXlpKytdKTsKKyAgICAgICAgICB5eWZvcm1hdCArPSAyOworICAgICAgICB9CisgICAgICBl
bHNlCisgICAgICAgIHsKKyAgICAgICAgICB5eXArKzsKKyAgICAgICAgICB5eWZvcm1hdCsrOwor
ICAgICAgICB9CisgIH0KKyAgcmV0dXJuIDA7CiB9CiAjZW5kaWYgLyogWVlFUlJPUl9WRVJCT1NF
ICovCi0MCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0uCiB8IFJlbGVhc2UgdGhlIG1lbW9yeSBhc3NvY2lhdGVkIHRvIHRoaXMgc3ltYm9sLiAgfApA
QCAtMTg5MiwyOCArMTkyMCw5IEBAIHl5ZGVzdHJ1Y3QgKHl5bXNnLCB5eXR5cGUsIHl5dmFsdWVw
LCB5eWwKICAgICB7CiAKICAgICAgIGRlZmF1bHQ6Ci0JYnJlYWs7CisgICAgICAgIGJyZWFrOwog
ICAgIH0KIH0KLQwKLQotLyogUHJldmVudCB3YXJuaW5ncyBmcm9tIC1XbWlzc2luZy1wcm90b3R5
cGVzLiAgKi8KLQotI2lmZGVmIFlZUEFSU0VfUEFSQU0KLSNpZiBkZWZpbmVkIF9fU1REQ19fIHx8
IGRlZmluZWQgX19jcGx1c3BsdXMKLWludCB5eXBhcnNlICh2b2lkICpZWVBBUlNFX1BBUkFNKTsK
LSNlbHNlCi1pbnQgeXlwYXJzZSAoKTsKLSNlbmRpZgotI2Vsc2UgLyogISBZWVBBUlNFX1BBUkFN
ICovCi0jaWYgZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzCi1pbnQgeXlw
YXJzZSAoVFBhcnNlQ29udGV4dCogY29udGV4dCk7Ci0jZWxzZQotaW50IHl5cGFyc2UgKCk7Ci0j
ZW5kaWYKLSNlbmRpZiAvKiAhIFlZUEFSU0VfUEFSQU0gKi8KLQotCiAKIAogCkBAIC0xOTQ0LDI0
ICsxOTUzLDg4IEBAIHl5cGFyc2UgKGNvbnRleHQpCiAjZW5kaWYKICNlbmRpZgogewotICAvKiBU
aGUgbG9vay1haGVhZCBzeW1ib2wuICAqLworLyogVGhlIGxvb2thaGVhZCBzeW1ib2wuICAqLwog
aW50IHl5Y2hhcjsKIAotLyogVGhlIHNlbWFudGljIHZhbHVlIG9mIHRoZSBsb29rLWFoZWFkIHN5
bWJvbC4gICovCi1ZWVNUWVBFIHl5bHZhbDsKIAotLyogTnVtYmVyIG9mIHN5bnRheCBlcnJvcnMg
c28gZmFyLiAgKi8KLWludCB5eW5lcnJzOwotLyogTG9jYXRpb24gZGF0YSBmb3IgdGhlIGxvb2st
YWhlYWQgc3ltYm9sLiAgKi8KLVlZTFRZUEUgeXlsbG9jOworI2lmIGRlZmluZWQgX19HTlVDX18g
JiYgNDA3IDw9IF9fR05VQ19fICogMTAwICsgX19HTlVDX01JTk9SX18KKy8qIFN1cHByZXNzIGFu
IGluY29ycmVjdCBkaWFnbm9zdGljIGFib3V0IHl5bHZhbCBiZWluZyB1bmluaXRpYWxpemVkLiAg
Ki8KKyMgZGVmaW5lIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0JFR0lOIFwKKyAgICBf
UHJhZ21hICgiR0NDIGRpYWdub3N0aWMgcHVzaCIpIFwKKyAgICBfUHJhZ21hICgiR0NDIGRpYWdu
b3N0aWMgaWdub3JlZCBcIi1XdW5pbml0aWFsaXplZFwiIilcCisgICAgX1ByYWdtYSAoIkdDQyBk
aWFnbm9zdGljIGlnbm9yZWQgXCItV21heWJlLXVuaW5pdGlhbGl6ZWRcIiIpCisjIGRlZmluZSBZ
WV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9FTkQgXAorICAgIF9QcmFnbWEgKCJHQ0MgZGlh
Z25vc3RpYyBwb3AiKQorI2Vsc2UKKy8qIERlZmF1bHQgdmFsdWUgdXNlZCBmb3IgaW5pdGlhbGl6
YXRpb24sIGZvciBwYWNpZnlpbmcgb2xkZXIgR0NDcworICAgb3Igbm9uLUdDQyBjb21waWxlcnMu
ICAqLworc3RhdGljIFlZU1RZUEUgeXl2YWxfZGVmYXVsdDsKKyMgZGVmaW5lIFlZX0lOSVRJQUxf
VkFMVUUoVmFsdWUpID0gVmFsdWUKKyNlbmRpZgorc3RhdGljIFlZTFRZUEUgeXlsb2NfZGVmYXVs
dAorIyBpZiBkZWZpbmVkIFlZTFRZUEVfSVNfVFJJVklBTCAmJiBZWUxUWVBFX0lTX1RSSVZJQUwK
KyAgPSB7IDEsIDEsIDEsIDEgfQorIyBlbmRpZgorOworI2lmbmRlZiBZWV9JR05PUkVfTUFZQkVf
VU5JTklUSUFMSVpFRF9CRUdJTgorIyBkZWZpbmUgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTEla
RURfQkVHSU4KKyMgZGVmaW5lIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0VORAorI2Vu
ZGlmCisjaWZuZGVmIFlZX0lOSVRJQUxfVkFMVUUKKyMgZGVmaW5lIFlZX0lOSVRJQUxfVkFMVUUo
VmFsdWUpIC8qIE5vdGhpbmcuICovCisjZW5kaWYKKworLyogVGhlIHNlbWFudGljIHZhbHVlIG9m
IHRoZSBsb29rYWhlYWQgc3ltYm9sLiAgKi8KK1lZU1RZUEUgeXlsdmFsIFlZX0lOSVRJQUxfVkFM
VUUoeXl2YWxfZGVmYXVsdCk7CisKKy8qIExvY2F0aW9uIGRhdGEgZm9yIHRoZSBsb29rYWhlYWQg
c3ltYm9sLiAgKi8KK1lZTFRZUEUgeXlsbG9jID0geXlsb2NfZGVmYXVsdDsKKworCisgICAgLyog
TnVtYmVyIG9mIHN5bnRheCBlcnJvcnMgc28gZmFyLiAgKi8KKyAgICBpbnQgeXluZXJyczsKKwor
ICAgIGludCB5eXN0YXRlOworICAgIC8qIE51bWJlciBvZiB0b2tlbnMgdG8gc2hpZnQgYmVmb3Jl
IGVycm9yIG1lc3NhZ2VzIGVuYWJsZWQuICAqLworICAgIGludCB5eWVycnN0YXR1czsKKworICAg
IC8qIFRoZSBzdGFja3MgYW5kIHRoZWlyIHRvb2xzOgorICAgICAgIGB5eXNzJzogcmVsYXRlZCB0
byBzdGF0ZXMuCisgICAgICAgYHl5dnMnOiByZWxhdGVkIHRvIHNlbWFudGljIHZhbHVlcy4KKyAg
ICAgICBgeXlscyc6IHJlbGF0ZWQgdG8gbG9jYXRpb25zLgorCisgICAgICAgUmVmZXIgdG8gdGhl
IHN0YWNrcyB0aHJvdWdoIHNlcGFyYXRlIHBvaW50ZXJzLCB0byBhbGxvdyB5eW92ZXJmbG93Cisg
ICAgICAgdG8gcmVhbGxvY2F0ZSB0aGVtIGVsc2V3aGVyZS4gICovCisKKyAgICAvKiBUaGUgc3Rh
dGUgc3RhY2suICAqLworICAgIHl5dHlwZV9pbnQxNiB5eXNzYVtZWUlOSVRERVBUSF07CisgICAg
eXl0eXBlX2ludDE2ICp5eXNzOworICAgIHl5dHlwZV9pbnQxNiAqeXlzc3A7CisKKyAgICAvKiBU
aGUgc2VtYW50aWMgdmFsdWUgc3RhY2suICAqLworICAgIFlZU1RZUEUgeXl2c2FbWVlJTklUREVQ
VEhdOworICAgIFlZU1RZUEUgKnl5dnM7CisgICAgWVlTVFlQRSAqeXl2c3A7CisKKyAgICAvKiBU
aGUgbG9jYXRpb24gc3RhY2suICAqLworICAgIFlZTFRZUEUgeXlsc2FbWVlJTklUREVQVEhdOwor
ICAgIFlZTFRZUEUgKnl5bHM7CisgICAgWVlMVFlQRSAqeXlsc3A7CisKKyAgICAvKiBUaGUgbG9j
YXRpb25zIHdoZXJlIHRoZSBlcnJvciBzdGFydGVkIGFuZCBlbmRlZC4gICovCisgICAgWVlMVFlQ
RSB5eWVycm9yX3JhbmdlWzNdOworCisgICAgWVlTSVpFX1QgeXlzdGFja3NpemU7CiAKLSAgaW50
IHl5c3RhdGU7CiAgIGludCB5eW47CiAgIGludCB5eXJlc3VsdDsKLSAgLyogTnVtYmVyIG9mIHRv
a2VucyB0byBzaGlmdCBiZWZvcmUgZXJyb3IgbWVzc2FnZXMgZW5hYmxlZC4gICovCi0gIGludCB5
eWVycnN0YXR1czsKLSAgLyogTG9vay1haGVhZCB0b2tlbiBhcyBhbiBpbnRlcm5hbCAodHJhbnNs
YXRlZCkgdG9rZW4gbnVtYmVyLiAgKi8KKyAgLyogTG9va2FoZWFkIHRva2VuIGFzIGFuIGludGVy
bmFsICh0cmFuc2xhdGVkKSB0b2tlbiBudW1iZXIuICAqLwogICBpbnQgeXl0b2tlbiA9IDA7Cisg
IC8qIFRoZSB2YXJpYWJsZXMgdXNlZCB0byByZXR1cm4gc2VtYW50aWMgdmFsdWUgYW5kIGxvY2F0
aW9uIGZyb20gdGhlCisgICAgIGFjdGlvbiByb3V0aW5lcy4gICovCisgIFlZU1RZUEUgeXl2YWw7
CisgIFlZTFRZUEUgeXlsb2M7CisKICNpZiBZWUVSUk9SX1ZFUkJPU0UKICAgLyogQnVmZmVyIGZv
ciBlcnJvciBtZXNzYWdlcywgYW5kIGl0cyBhbGxvY2F0ZWQgc2l6ZS4gICovCiAgIGNoYXIgeXlt
c2didWZbMTI4XTsKQEAgLTE5NjksNjUgKzIwNDIsMjQgQEAgWVlMVFlQRSB5eWxsb2M7CiAgIFlZ
U0laRV9UIHl5bXNnX2FsbG9jID0gc2l6ZW9mIHl5bXNnYnVmOwogI2VuZGlmCiAKLSAgLyogVGhy
ZWUgc3RhY2tzIGFuZCB0aGVpciB0b29sczoKLSAgICAgYHl5c3MnOiByZWxhdGVkIHRvIHN0YXRl
cywKLSAgICAgYHl5dnMnOiByZWxhdGVkIHRvIHNlbWFudGljIHZhbHVlcywKLSAgICAgYHl5bHMn
OiByZWxhdGVkIHRvIGxvY2F0aW9ucy4KLQotICAgICBSZWZlciB0byB0aGUgc3RhY2tzIHRocnUg
c2VwYXJhdGUgcG9pbnRlcnMsIHRvIGFsbG93IHl5b3ZlcmZsb3cKLSAgICAgdG8gcmVhbGxvY2F0
ZSB0aGVtIGVsc2V3aGVyZS4gICovCi0KLSAgLyogVGhlIHN0YXRlIHN0YWNrLiAgKi8KLSAgeXl0
eXBlX2ludDE2IHl5c3NhW1lZSU5JVERFUFRIXTsKLSAgeXl0eXBlX2ludDE2ICp5eXNzID0geXlz
c2E7Ci0gIHl5dHlwZV9pbnQxNiAqeXlzc3A7Ci0KLSAgLyogVGhlIHNlbWFudGljIHZhbHVlIHN0
YWNrLiAgKi8KLSAgWVlTVFlQRSB5eXZzYVtZWUlOSVRERVBUSF07Ci0gIFlZU1RZUEUgKnl5dnMg
PSB5eXZzYTsKLSAgWVlTVFlQRSAqeXl2c3A7Ci0KLSAgLyogVGhlIGxvY2F0aW9uIHN0YWNrLiAg
Ki8KLSAgWVlMVFlQRSB5eWxzYVtZWUlOSVRERVBUSF07Ci0gIFlZTFRZUEUgKnl5bHMgPSB5eWxz
YTsKLSAgWVlMVFlQRSAqeXlsc3A7Ci0gIC8qIFRoZSBsb2NhdGlvbnMgd2hlcmUgdGhlIGVycm9y
IHN0YXJ0ZWQgYW5kIGVuZGVkLiAgKi8KLSAgWVlMVFlQRSB5eWVycm9yX3JhbmdlWzJdOwotCiAj
ZGVmaW5lIFlZUE9QU1RBQ0soTikgICAoeXl2c3AgLT0gKE4pLCB5eXNzcCAtPSAoTiksIHl5bHNw
IC09IChOKSkKIAotICBZWVNJWkVfVCB5eXN0YWNrc2l6ZSA9IFlZSU5JVERFUFRIOwotCi0gIC8q
IFRoZSB2YXJpYWJsZXMgdXNlZCB0byByZXR1cm4gc2VtYW50aWMgdmFsdWUgYW5kIGxvY2F0aW9u
IGZyb20gdGhlCi0gICAgIGFjdGlvbiByb3V0aW5lcy4gICovCi0gIFlZU1RZUEUgeXl2YWw7Ci0g
IFlZTFRZUEUgeXlsb2M7Ci0KICAgLyogVGhlIG51bWJlciBvZiBzeW1ib2xzIG9uIHRoZSBSSFMg
b2YgdGhlIHJlZHVjZWQgcnVsZS4KICAgICAgS2VlcCB0byB6ZXJvIHdoZW4gbm8gc3ltYm9sIHNo
b3VsZCBiZSBwb3BwZWQuICAqLwogICBpbnQgeXlsZW4gPSAwOwogCisgIHl5c3NwID0geXlzcyA9
IHl5c3NhOworICB5eXZzcCA9IHl5dnMgPSB5eXZzYTsKKyAgeXlsc3AgPSB5eWxzID0geXlsc2E7
CisgIHl5c3RhY2tzaXplID0gWVlJTklUREVQVEg7CisKICAgWVlEUFJJTlRGICgoc3RkZXJyLCAi
U3RhcnRpbmcgcGFyc2VcbiIpKTsKIAogICB5eXN0YXRlID0gMDsKICAgeXllcnJzdGF0dXMgPSAw
OwogICB5eW5lcnJzID0gMDsKLSAgeXljaGFyID0gWVlFTVBUWTsJCS8qIENhdXNlIGEgdG9rZW4g
dG8gYmUgcmVhZC4gICovCi0KLSAgLyogSW5pdGlhbGl6ZSBzdGFjayBwb2ludGVycy4KLSAgICAg
V2FzdGUgb25lIGVsZW1lbnQgb2YgdmFsdWUgYW5kIGxvY2F0aW9uIHN0YWNrCi0gICAgIHNvIHRo
YXQgdGhleSBzdGF5IG9uIHRoZSBzYW1lIGxldmVsIGFzIHRoZSBzdGF0ZSBzdGFjay4KLSAgICAg
VGhlIHdhc3RlZCBlbGVtZW50cyBhcmUgbmV2ZXIgaW5pdGlhbGl6ZWQuICAqLwotCi0gIHl5c3Nw
ID0geXlzczsKLSAgeXl2c3AgPSB5eXZzOwotICB5eWxzcCA9IHl5bHM7Ci0jaWYgZGVmaW5lZCBZ
WUxUWVBFX0lTX1RSSVZJQUwgJiYgWVlMVFlQRV9JU19UUklWSUFMCi0gIC8qIEluaXRpYWxpemUg
dGhlIGRlZmF1bHQgbG9jYXRpb24gYmVmb3JlIHBhcnNpbmcgc3RhcnRzLiAgKi8KLSAgeXlsbG9j
LmZpcnN0X2xpbmUgICA9IHl5bGxvYy5sYXN0X2xpbmUgICA9IDE7Ci0gIHl5bGxvYy5maXJzdF9j
b2x1bW4gPSB5eWxsb2MubGFzdF9jb2x1bW4gPSAwOwotI2VuZGlmCi0KKyAgeXljaGFyID0gWVlF
TVBUWTsgLyogQ2F1c2UgYSB0b2tlbiB0byBiZSByZWFkLiAgKi8KKyAgeXlsc3BbMF0gPSB5eWxs
b2M7CiAgIGdvdG8geXlzZXRzdGF0ZTsKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCkBAIC0yMDY0LDYgKzIwOTYsNyBAQCBZ
WUxUWVBFIHl5bGxvYzsKIAkJICAgICZ5eXZzMSwgeXlzaXplICogc2l6ZW9mICgqeXl2c3ApLAog
CQkgICAgJnl5bHMxLCB5eXNpemUgKiBzaXplb2YgKCp5eWxzcCksCiAJCSAgICAmeXlzdGFja3Np
emUpOworCiAJeXlscyA9IHl5bHMxOwogCXl5c3MgPSB5eXNzMTsKIAl5eXZzID0geXl2czE7CkBA
IC0yMDg1LDkgKzIxMTgsOSBAQCBZWUxUWVBFIHl5bGxvYzsKIAkgICh1bmlvbiB5eWFsbG9jICop
IFlZU1RBQ0tfQUxMT0MgKFlZU1RBQ0tfQllURVMgKHl5c3RhY2tzaXplKSk7CiAJaWYgKCEgeXlw
dHIpCiAJICBnb3RvIHl5ZXhoYXVzdGVkbGFiOwotCVlZU1RBQ0tfUkVMT0NBVEUgKHl5c3MpOwot
CVlZU1RBQ0tfUkVMT0NBVEUgKHl5dnMpOwotCVlZU1RBQ0tfUkVMT0NBVEUgKHl5bHMpOworCVlZ
U1RBQ0tfUkVMT0NBVEUgKHl5c3NfYWxsb2MsIHl5c3MpOworCVlZU1RBQ0tfUkVMT0NBVEUgKHl5
dnNfYWxsb2MsIHl5dnMpOworCVlZU1RBQ0tfUkVMT0NBVEUgKHl5bHNfYWxsb2MsIHl5bHMpOwog
IyAgdW5kZWYgWVlTVEFDS19SRUxPQ0FURQogCWlmICh5eXNzMSAhPSB5eXNzYSkKIAkgIFlZU1RB
Q0tfRlJFRSAoeXlzczEpOwpAQCAtMjEwOCw2ICsyMTQxLDkgQEAgWVlMVFlQRSB5eWxsb2M7CiAK
ICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiRW50ZXJpbmcgc3RhdGUgJWRcbiIsIHl5c3RhdGUpKTsK
IAorICBpZiAoeXlzdGF0ZSA9PSBZWUZJTkFMKQorICAgIFlZQUNDRVBUOworCiAgIGdvdG8geXli
YWNrdXA7CiAKIC8qLS0tLS0tLS0tLS0uCkBAIC0yMTE2LDE2ICsyMTUyLDE2IEBAIFlZTFRZUEUg
eXlsbG9jOwogeXliYWNrdXA6CiAKICAgLyogRG8gYXBwcm9wcmlhdGUgcHJvY2Vzc2luZyBnaXZl
biB0aGUgY3VycmVudCBzdGF0ZS4gIFJlYWQgYQotICAgICBsb29rLWFoZWFkIHRva2VuIGlmIHdl
IG5lZWQgb25lIGFuZCBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiAgKi8KKyAgICAgbG9va2FoZWFk
IHRva2VuIGlmIHdlIG5lZWQgb25lIGFuZCBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiAgKi8KIAot
ICAvKiBGaXJzdCB0cnkgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aG91dCByZWZlcmVuY2UgdG8g
bG9vay1haGVhZCB0b2tlbi4gICovCisgIC8qIEZpcnN0IHRyeSB0byBkZWNpZGUgd2hhdCB0byBk
byB3aXRob3V0IHJlZmVyZW5jZSB0byBsb29rYWhlYWQgdG9rZW4uICAqLwogICB5eW4gPSB5eXBh
Y3RbeXlzdGF0ZV07Ci0gIGlmICh5eW4gPT0gWVlQQUNUX05JTkYpCisgIGlmICh5eXBhY3RfdmFs
dWVfaXNfZGVmYXVsdCAoeXluKSkKICAgICBnb3RvIHl5ZGVmYXVsdDsKIAotICAvKiBOb3Qga25v
d24gPT4gZ2V0IGEgbG9vay1haGVhZCB0b2tlbiBpZiBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiAg
Ki8KKyAgLyogTm90IGtub3duID0+IGdldCBhIGxvb2thaGVhZCB0b2tlbiBpZiBkb24ndCBhbHJl
YWR5IGhhdmUgb25lLiAgKi8KIAotICAvKiBZWUNIQVIgaXMgZWl0aGVyIFlZRU1QVFkgb3IgWVlF
T0Ygb3IgYSB2YWxpZCBsb29rLWFoZWFkIHN5bWJvbC4gICovCisgIC8qIFlZQ0hBUiBpcyBlaXRo
ZXIgWVlFTVBUWSBvciBZWUVPRiBvciBhIHZhbGlkIGxvb2thaGVhZCBzeW1ib2wuICAqLwogICBp
ZiAoeXljaGFyID09IFlZRU1QVFkpCiAgICAgewogICAgICAgWVlEUFJJTlRGICgoc3RkZXJyLCAi
UmVhZGluZyBhIHRva2VuOiAiKSk7CkBAIC0yMTUxLDI5ICsyMTg3LDI3IEBAIHl5YmFja3VwOgog
ICB5eW4gPSB5eXRhYmxlW3l5bl07CiAgIGlmICh5eW4gPD0gMCkKICAgICB7Ci0gICAgICBpZiAo
eXluID09IDAgfHwgeXluID09IFlZVEFCTEVfTklORikKLQlnb3RvIHl5ZXJybGFiOworICAgICAg
aWYgKHl5dGFibGVfdmFsdWVfaXNfZXJyb3IgKHl5bikpCisgICAgICAgIGdvdG8geXllcnJsYWI7
CiAgICAgICB5eW4gPSAteXluOwogICAgICAgZ290byB5eXJlZHVjZTsKICAgICB9CiAKLSAgaWYg
KHl5biA9PSBZWUZJTkFMKQotICAgIFlZQUNDRVBUOwotCiAgIC8qIENvdW50IHRva2VucyBzaGlm
dGVkIHNpbmNlIGVycm9yOyBhZnRlciB0aHJlZSwgdHVybiBvZmYgZXJyb3IKICAgICAgc3RhdHVz
LiAgKi8KICAgaWYgKHl5ZXJyc3RhdHVzKQogICAgIHl5ZXJyc3RhdHVzLS07CiAKLSAgLyogU2hp
ZnQgdGhlIGxvb2stYWhlYWQgdG9rZW4uICAqLworICAvKiBTaGlmdCB0aGUgbG9va2FoZWFkIHRv
a2VuLiAgKi8KICAgWVlfU1lNQk9MX1BSSU5UICgiU2hpZnRpbmciLCB5eXRva2VuLCAmeXlsdmFs
LCAmeXlsbG9jKTsKIAotICAvKiBEaXNjYXJkIHRoZSBzaGlmdGVkIHRva2VuIHVubGVzcyBpdCBp
cyBlb2YuICAqLwotICBpZiAoeXljaGFyICE9IFlZRU9GKQotICAgIHl5Y2hhciA9IFlZRU1QVFk7
CisgIC8qIERpc2NhcmQgdGhlIHNoaWZ0ZWQgdG9rZW4uICAqLworICB5eWNoYXIgPSBZWUVNUFRZ
OwogCiAgIHl5c3RhdGUgPSB5eW47CisgIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0JF
R0lOCiAgICorK3l5dnNwID0geXlsdmFsOworICBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpF
RF9FTkQKICAgKisreXlsc3AgPSB5eWxsb2M7CiAgIGdvdG8geXluZXdzdGF0ZTsKIApAQCAtMjI1
MSwzMSArMjI4NSwyMyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5bHNwWygx
KSAtICgxKV0pKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDU6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkg
LSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgNjoKIAogICAgIHsKLSAgICAgICAgLy8KLSAgICAgICAgLy8gSU5UX1RZUEUg
aXMgb25seSAxNi1iaXQgcGx1cyBzaWduIGJpdCBmb3IgdmVydGV4L2ZyYWdtZW50IHNoYWRlcnMs
Ci0gICAgICAgIC8vIGNoZWNrIGZvciBvdmVyZmxvdyBmb3IgY29uc3RhbnRzCi0gICAgICAgIC8v
Ci0gICAgICAgIGlmIChhYnMoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5pKSA+PSAoMSA8PCAxNikp
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSldKSwgIiBpbnRl
Z2VyIGNvbnN0YW50IG92ZXJmbG93IiwgIiIpOwotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwotICAgICAgICB9CiAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcg
Q29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KCh5eXZzcFso
MSkgLSAoMSldLmxleCkuaSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRU
eXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMSkgLSAoMSldKSk7
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA3OgpAQCAtMjI4NCw3ICsyMzEw
LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcg
Q29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0RkNvbnN0KCh5eXZzcFso
MSkgLSAoMSldLmxleCkuZik7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygxKSAtICgxKV0p
KTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDg6CkBAIC0yMjkzLDM1ICsy
MzE5LDM1IEBAIHl5cmVkdWNlOgogICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0g
bmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdCgoeXl2
c3BbKDEpIC0gKDEpXS5sZXgpLmIpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5
LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygxKSAtICgx
KV0pKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDk6CiAKICAgICB7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMikgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAg
IGNhc2UgMTA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTE6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZEluZGV4RXhwcmVzc2lvbigoeXl2
c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICg0KV0p
LCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSk7Ci0gICAgO30KKyAg
ICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzoKQEAgLTI0
MjAsNyArMjQ0Niw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7
CiAgICAgICAgIH0KICAgICAgICAgLy8gZG9uJ3QgZGVsZXRlICQzLnN0cmluZywgaXQncyBmcm9t
IHRoZSBwb29sCi0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNDoKQEAgLTI0
MzQsNyArMjQ2MCw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygx
KSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0KLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1OgpAQCAtMjQ0OCw3ICsyNDc0LDcgQEAgeXlyZWR1
Y2U6CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNh
c2UgMTY6CkBAIC0yNDU3LDcgKzI0ODMsNyBAQCB5eXJlZHVjZToKICAgICAgICAgaWYgKGNvbnRl
eHQtPmludGVnZXJFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAiW10iKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAx
NzoKQEAgLTI1NTgsMTQgKzI1ODQsMTQgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICAgICAgZGVsZXRlIGZuQ2FsbDsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsK
IAogICBjYXNlIDE4OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFso
MSkgLSAoMSldLmludGVybSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAx
OToKQEAgLTI1NzQsMjEgKzI2MDAsMjEgQEAgeXlyZWR1Y2U6CiAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCh5eWxzcFsoMykgLSAoMyldKSwgIm1ldGhvZHMgYXJlIG5vdCBzdXBwb3J0ZWQiLCAiIik7
CiAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAo
eXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAg
IGNhc2UgMjA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygxKSAt
ICgyKV0uaW50ZXJtKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDIxOgog
CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVy
bSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyMjoKQEAgLTI1OTYsNyAr
MjYyMiw3IEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkuZnVuY3Rp
b24gPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pOwogICAgICAgICAoeXl2YWwu
aW50ZXJtKS5pbnRlcm1Ob2RlID0gMDsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBj
YXNlIDIzOgpAQCAtMjYwNCw3ICsyNjMwLDcgQEAgeXlyZWR1Y2U6CiAgICAgewogICAgICAgICAo
eXl2YWwuaW50ZXJtKS5mdW5jdGlvbiA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5mdW5jdGlv
bik7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybU5vZGUgPSAwOwotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjQ6CkBAIC0yNjE0LDcgKzI2NDAsNyBAQCB5eXJlZHVj
ZToKICAgICAgICAgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+YWRkUGFyYW1l
dGVyKHBhcmFtKTsKICAgICAgICAgKHl5dmFsLmludGVybSkuZnVuY3Rpb24gPSAoeXl2c3BbKDEp
IC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pOwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1O
b2RlID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyNToKQEAgLTI2MjQsMTQgKzI2NTAsMTQgQEAg
eXlyZWR1Y2U6CiAgICAgICAgICh5eXZzcFsoMSkgLSAoMyldLmludGVybSkuZnVuY3Rpb24tPmFk
ZFBhcmFtZXRlcihwYXJhbSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmZ1bmN0aW9uID0gKHl5
dnNwWygxKSAtICgzKV0uaW50ZXJtKS5mdW5jdGlvbjsKICAgICAgICAgKHl5dmFsLmludGVybSku
aW50ZXJtTm9kZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFso
MSkgLSAoMyldLmludGVybSkuaW50ZXJtTm9kZSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSk7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSAyNjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5mdW5j
dGlvbikgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pOwotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjc6CkBAIC0yNjkwLDcgKzI3MTYsNyBAQCB5eXJlZHVj
ZToKICAgICAgICAgVFR5cGUgdHlwZSgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkpOwog
ICAgICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0gbmV3IFRGdW5jdGlvbigmdGVtcFN0cmluZywg
dHlwZSwgb3ApOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1bmN0aW9uKSA9IGZ1bmN0aW9uOwot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjg6CkBAIC0yNzAxLDE0ICsyNzI3
LDE0IEBAIHl5cmVkdWNlOgogICAgICAgICBUVHlwZSB0eXBlKEVidFZvaWQsIEVicFVuZGVmaW5l
ZCk7CiAgICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24gPSBuZXcgVEZ1bmN0aW9uKCh5eXZzcFso
MSkgLSAoMSldLmxleCkuc3RyaW5nLCB0eXBlKTsKICAgICAgICAgKHl5dmFsLmludGVybS5mdW5j
dGlvbikgPSBmdW5jdGlvbjsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDI5
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICA7fQorICAgIH0KICAg
ICBicmVhazsKIAogICBjYXNlIDMwOgpAQCAtMjcyMiw3ICsyNzQ4LDcgQEAgeXlyZWR1Y2U6CiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMzE6
CkBAIC0yNzM2LDcgKzI3NjIsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5
eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9Ci0gICAg
O30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAzMjoKQEAgLTI3NTcsMjcgKzI3ODMsMjcg
QEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAz
MzoKIAotICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BOdWxsOyA7fQorICAgIHsgKHl5dmFs
LmludGVybSkub3AgPSBFT3BOdWxsOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAzNDoKIAotICAg
IHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BOZWdhdGl2ZTsgO30KKyAgICB7ICh5eXZhbC5pbnRl
cm0pLm9wID0gRU9wTmVnYXRpdmU7IH0KICAgICBicmVhazsKIAogICBjYXNlIDM1OgogCi0gICAg
eyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcExvZ2ljYWxOb3Q7IDt9CisgICAgeyAoeXl2YWwuaW50
ZXJtKS5vcCA9IEVPcExvZ2ljYWxOb3Q7IH0KICAgICBicmVhazsKIAogICBjYXNlIDM2OgogCi0g
ICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAzNzoKQEAgLTI3ODksNyArMjgxNSw3IEBAIHl5cmVkdWNlOgog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDM4
OgpAQCAtMjgwMSwxMiArMjgyNywxMiBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9Ci0g
ICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAzOToKIAotICAgIHsgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogICAgIGJyZWFrOwogCiAg
IGNhc2UgNDA6CkBAIC0yODE4LDcgKzI4NDQsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAg
ICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA0MToKQEAgLTI4MzAsMTcg
KzI4NTYsMTcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgNDI6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQor
ICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDQzOgogCi0g
ICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSA0NDoKQEAgLTI4NTQsNyArMjg4MCw3IEBAIHl5cmVkdWNlOgog
ICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKICAgICAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRD
b25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZx
Q29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSA0NToKQEAgLTI4NjgsNyArMjg5NCw3IEBAIHl5cmVkdWNlOgog
ICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKICAgICAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRD
b25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZx
Q29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSA0NjoKQEAgLTI4ODIsNyArMjkwOCw3IEBAIHl5cmVkdWNlOgog
ICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKICAgICAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRD
b25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZx
Q29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSA0NzoKQEAgLTI4OTYsMTIgKzI5MjIsMTIgQEAgeXlyZWR1Y2U6
CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwogICAgICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBF
dnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0K
ICAgICBicmVhazsKIAogICBjYXNlIDQ4OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30K
KyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA0OToKQEAg
LTI5MTUsNyArMjk0MSw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0
QkNvbnN0KGZhbHNlKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRU
eXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkp
OwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA1MDoKQEAg
LTI5MjksMjcgKzI5NTUsMjcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5z
ZXRCQ29uc3QoZmFsc2UpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyld
KSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDUxOgog
Ci0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSA1MjoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9
CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNTM6CiAK
LSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0K
ICAgICBicmVhazsKIAogICBjYXNlIDU0OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30K
KyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA1NToKQEAg
LTI5NjMsMTIgKzI5ODksMTIgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5z
ZXRCQ29uc3QoZmFsc2UpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyld
KSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDU2Ogog
Ci0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSA1NzoKQEAgLTI5ODIsMTIgKzMwMDgsMTIgQEAgeXlyZWR1
Y2U6CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwogICAgICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVk
LCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAogICBjYXNlIDU4OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsg
O30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAo
MSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA1OToK
QEAgLTMwMDEsMTIgKzMwMjcsMTIgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICB1bmlvbkFycmF5
LT5zZXRCQ29uc3QoZmFsc2UpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJh
eSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAo
MyldKSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDYw
OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
OyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA2MToKQEAgLTMwMjQsMTIgKzMwNTAsMTIgQEAgeXly
ZWR1Y2U6CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDUpIC0gKDUpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAg
IGNhc2UgNjI6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDYzOgpAQCAtMzA0MywzOSArMzA2OSwz
OSBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSA2NDoKIAotICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BBc3NpZ247
IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcEFzc2lnbjsgfQogICAgIGJyZWFrOwog
CiAgIGNhc2UgNjU6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wTXVsQXNzaWduOyA7
fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BNdWxBc3NpZ247IH0KICAgICBicmVhazsK
IAogICBjYXNlIDY2OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcERpdkFzc2lnbjsg
O30KKyAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wRGl2QXNzaWduOyB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSA2NzoKIAotICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BBZGRBc3NpZ247
IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcEFkZEFzc2lnbjsgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgNjg6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wU3ViQXNzaWdu
OyA7fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BTdWJBc3NpZ247IH0KICAgICBicmVh
azsKIAogICBjYXNlIDY5OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDcwOgpAQCAtMzA4Nyw3ICszMTEzLDcg
QEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDMpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgNzE6CkBAIC0zMDk2LDcgKzMxMjIsNyBAQCB5eXJlZHVjZToKICAgICAgICAg
aWYgKGNvbnRleHQtPmNvbnN0RXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2Ug
NzI6CkBAIC0zMTI3LDcgKzMxNTMsNyBAQCB5eXJlZHVjZToKICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1Ob2RlKSA9IHByb3RvdHlwZTsKIAogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJs
ZS5wb3AoKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDczOgpAQCAtMzEz
Niw3ICszMTYyLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDIpXS5p
bnRlcm0pLmludGVybUFnZ3JlZ2F0ZSkKICAgICAgICAgICAgICh5eXZzcFsoMSkgLSAoMildLmlu
dGVybSkuaW50ZXJtQWdncmVnYXRlLT5zZXRPcChFT3BEZWNsYXJhdGlvbik7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmludGVy
bUFnZ3JlZ2F0ZTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDc0OgpAQCAt
MzE1MSw3ICszMTc3LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgIH0KICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IDA7Ci0g
ICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA3NToKQEAgLTMyMDcsMjEgKzMyMzMs
MjEgQEAgeXlyZWR1Y2U6CiAgICAgICAgIC8vIFdlJ3JlIGF0IHRoZSBpbm5lciBzY29wZSBsZXZl
bCBvZiB0aGUgZnVuY3Rpb24ncyBhcmd1bWVudHMgYW5kIGJvZHkgc3RhdGVtZW50LgogICAgICAg
ICAvLyBBZGQgdGhlIGZ1bmN0aW9uIHByb3RvdHlwZSB0byB0aGUgc3Vycm91bmRpbmcgc2NvcGUg
aW5zdGVhZC4KICAgICAgICAgY29udGV4dC0+c3ltYm9sVGFibGUuZ2V0T3V0ZXJMZXZlbCgpLT5p
bnNlcnQoKih5eXZhbC5pbnRlcm0pLmZ1bmN0aW9uKTsKLSAgICA7fQorICAgIH0KICAgICBicmVh
azsKIAogICBjYXNlIDc2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1bmN0aW9u
KSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5mdW5jdGlvbik7Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSA3NzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5m
dW5jdGlvbikgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uZnVuY3Rpb24pOwotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNzg6CkBAIC0zMjMzLDcgKzMyNTksNyBAQCB5eXJl
ZHVjZToKICAgICAgICAgICAgICh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5jdGlvbiktPmFk
ZFBhcmFtZXRlcigoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0pLnBhcmFtKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgZGVsZXRlICh5eXZzcFsoMikgLSAoMildLmludGVybSkucGFyYW0udHlw
ZTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDc5OgpAQCAtMzI1NSw3ICsz
MjgxLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1bmN0aW9uKSA9
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5mdW5jdGlvbik7CiAgICAgICAgICAgICAoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uZnVuY3Rpb24pLT5hZGRQYXJhbWV0ZXIoKHl5dnNwWygzKSAtICgz
KV0uaW50ZXJtKS5wYXJhbSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsK
IAogICBjYXNlIDgwOgpAQCAtMzI3Niw3ICszMzAyLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICh5
eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gZnVuY3Rpb247CiAgICAgICAgIAogICAgICAgICBjb250
ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAg
Y2FzZSA4MToKQEAgLTMyOTAsNyArMzMxNiw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyh5eXZzcFsoMikg
LSAoMildLmxleCkuc3RyaW5nLCBuZXcgVFR5cGUoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5
cGUpKX07CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnBhcmFtID0gcGFyYW07Ci0gICAgO30KKyAg
ICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA4MjoKQEAgLTMzMTEsNyArMzMzNyw3IEBAIHl5cmVk
dWNlOgogICAgICAgICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZSgoeXl2c3BbKDEpIC0gKDUpXS5p
bnRlcm0udHlwZSkpOwogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyAoeXl2c3BbKDIpIC0g
KDUpXS5sZXgpLnN0cmluZywgdHlwZSB9OwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5wYXJhbSA9
IHBhcmFtOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgODM6CkBAIC0zMzIw
LDcgKzMzNDYsNyBAQCB5eXJlZHVjZToKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3Bb
KDMpIC0gKDMpXS5pbnRlcm0pOwogICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNr
KCh5eWxzcFsoMykgLSAoMyldKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnF1YWxp
ZmllciwgKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0p
LnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgODQ6CkBAIC0zMzMxLDcgKzMzNTcsNyBAQCB5eXJl
ZHVjZToKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgaWYgKGNvbnRl
eHQtPnBhcmFtRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksIEV2cVRlbXBvcmFyeSwgKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5
cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgIDt9CisgICAgfQogICAg
IGJyZWFrOwogCiAgIGNhc2UgODU6CkBAIC0zMzQwLDcgKzMzNjYsNyBAQCB5eXJlZHVjZToKICAg
ICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0pOwogICAgICAg
ICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoMyldKSwgKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciwgKHl5dnNwWygyKSAtICgzKV0uaW50
ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2Ug
ODY6CkBAIC0zMzUxLDM1ICszMzc3LDM1IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eWxz
cFsoMikgLSAoMildKSwgRXZxVGVtcG9yYXJ5LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0ucXVh
bGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA4NzoKIAog
ICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxSW47Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA4ODoKIAogICAgIHsKICAgICAgICAgKHl5dmFs
LmludGVybS5xdWFsaWZpZXIpID0gRXZxSW47Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSA4OToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0g
RXZxT3V0OwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgOTA6CiAKICAgICB7
CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cUluT3V0OwotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgOTE6CkBAIC0zMzg3LDE0ICszNDEzLDE0IEBAIHl5
cmVkdWNlOgogICAgIHsKICAgICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHsgMCwgbmV3IFRUeXBl
KCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKSkgfTsKICAgICAgICAgKHl5dmFsLmludGVy
bSkucGFyYW0gPSBwYXJhbTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDky
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMSkgLSAoMSldLmlu
dGVybSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA5MzoKQEAgLTM0MjAs
NyArMzQ0Niw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICBpZiAoc3ltYm9sICYmIHZhcmlhYmxlKQogICAgICAgICAgICAgc3ltYm9sLT5zZXRJ
ZCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSA5NDoKQEAgLTM0NDIsNyArMzQ2OCw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAg
aWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjaygoeXlsc3BbKDQpIC0gKDUpXSksICooeXl2c3Bb
KDMpIC0gKDUpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlLCB2
YXJpYWJsZSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA5NToKQEAgLTM0NzAsNyArMzQ5
Niw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgdHlwZS5zZXRBcnJheVNpemUoc2l6ZSk7CiAg
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLmludGVybU5v
ZGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUgPyB2YXJpYWJsZS0+
Z2V0VW5pcXVlSWQoKSA6IDAsICooeXl2c3BbKDMpIC0gKDYpXS5sZXgpLnN0cmluZywgdHlwZSwg
KHl5bHNwWygzKSAtICg2KV0pKSwgKHl5bHNwWygzKSAtICg2KV0pKTsKICAgICAgICAgfQotICAg
IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgOTY6CkBAIC0zNDk0LDcgKzM1MjAsNyBA
QCB5eXJlZHVjZToKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IDA7CiAgICAgICAgIH0KLSAgICA7fQor
ICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDk3OgpAQCAtMzUwMiw3ICszNTI4LDcgQEAgeXly
ZWR1Y2U6CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKS50eXBlID0gKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLnR5cGUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdh
dGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkU3ltYm9sKDAsICIiLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlw
ZSkpLCAoeXlsc3BbKDEpIC0gKDEpXSkpLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgOTg6CkBAIC0zNTI0LDcgKzM1NTAsNyBAQCB5eXJl
ZHVjZToKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgaWYgKHZhcmlh
YmxlICYmIHN5bWJvbCkKICAgICAgICAgICAgIHN5bWJvbC0+c2V0SWQodmFyaWFibGUtPmdldFVu
aXF1ZUlkKCkpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgOTk6CkBAIC0z
NTM2LDcgKzM1NjIsNyBAQCB5eXJlZHVjZToKICAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9s
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygyKSAtICg0KV0u
bGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSksICh5eWxz
cFsoMikgLSAoNCldKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgKHl5bHNwWygyKSAt
ICg0KV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybSkudHlwZSA9ICh5eXZzcFsoMSkgLSAoNCld
LmludGVybS50eXBlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEwMDoK
QEAgLTM1NzIsNyArMzU5OCw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgaWYgKHZhcmlhYmxl
ICYmIHN5bWJvbCkKICAgICAgICAgICAgICAgICBzeW1ib2wtPnNldElkKHZhcmlhYmxlLT5nZXRV
bmlxdWVJZCgpKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNh
c2UgMTAxOgpAQCAtMzU5Niw3ICszNjIyLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdh
dGUgPSAwOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAx
MDI6CkBAIC0zNjE4LDcgKzM2NDQsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIFRJbnRlcm1T
eW1ib2wgKnN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5eXZz
cFsoMikgLSAoMildLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2YWwuaW50ZXJtKS50eXBlKSwgKHl5
bHNwWygyKSAtICgyKV0pKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3Jl
Z2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgKHl5bHNw
WygyKSAtICgyKV0pKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAg
IGNhc2UgMTAzOgpAQCAtMzYzMSw3ICszNjU3LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0u
dHlwZSkuc2V0QXJyYXkoZmFsc2UpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSAxMDQ6CkBAIC0zNjU1LDE0ICszNjgxLDE0IEBAIHl5cmVkdWNlOgogICAg
ICAgICB9CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5p
bnRlcm0udHlwZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkucXVhbGlmaWVyID0gKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllcjsKLSAgICA7fQorICAgIH0KICAg
ICBicmVhazsKIAogICBjYXNlIDEwNToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFDb25zdCwgKHl5bHNwWygxKSAtICgxKV0pKTsKLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEwNjoKQEAgLTM2NzIsNyArMzY5OCw3
IEBAIHl5cmVkdWNlOgogICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXls
c3BbKDEpIC0gKDEpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImF0
dHJpYnV0ZSIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cUF0dHJpYnV0ZSwgKHl5bHNwWygx
KSAtICgxKV0pKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEwNzoKQEAg
LTM2ODQsNyArMzcxMCw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5nT3V0LCAoeXlsc3BbKDEpIC0gKDEpXSkp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2lj
KEVidFZvaWQsIEV2cVZhcnlpbmdJbiwgKHl5bHNwWygxKSAtICgxKV0pKTsKLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAogICBjYXNlIDEwODoKQEAgLTM2OTYsNyArMzcyMiw3IEBAIHl5cmVk
dWNlOgogICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBF
dnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAoeXlsc3BbKDEpIC0gKDIpXSkpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cUlu
dmFyaWFudFZhcnlpbmdJbiwgKHl5bHNwWygxKSAtICgyKV0pKTsKLSAgICA7fQorICAgIH0KICAg
ICBicmVhazsKIAogICBjYXNlIDEwOToKQEAgLTM3MDUsNyArMzczMSw3IEBAIHl5cmVkdWNlOgog
ICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSks
IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgInVuaWZvcm0iKSkKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRCYXNpYyhFYnRWb2lkLCBFdnFVbmlmb3JtLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwotICAgIDt9
CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTEwOgpAQCAtMzcxOSw3ICszNzQ1LDcgQEAg
eXlyZWR1Y2U6CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMTE6
CkBAIC0zNzI3LDM1ICszNzUzLDM1IEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlKTsKICAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5wcmVjaXNpb24gPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0u
cHJlY2lzaW9uKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDExMjoKIAog
ICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5wcmVjaXNpb24pID0gRWJwSGlnaDsKLSAgICA7
fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDExMzoKIAogICAgIHsKICAgICAgICAgKHl5
dmFsLmludGVybS5wcmVjaXNpb24pID0gRWJwTWVkaXVtOwotICAgIDt9CisgICAgfQogICAgIGJy
ZWFrOwogCiAgIGNhc2UgMTE0OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnByZWNp
c2lvbikgPSBFYnBMb3c7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMTU6
CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0udHlwZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMTY6
CkBAIC0zNzcxLDcgKzM3OTcsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFycmF5KHRy
dWUsIHNpemUpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSAxMTc6CkBAIC0zNzc5LDcgKzM4MDUsNyBAQCB5eXJlZHVjZToKICAgICB7CiAgICAgICAgIFRR
dWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2
cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRC
YXNpYyhFYnRWb2lkLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwotICAgIDt9CisgICAgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgMTE4OgpAQCAtMzc4Nyw3ICszODEzLDcgQEAgeXlyZWR1Y2U6
CiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5h
dEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSld
KSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMTk6CkBAIC0zNzk1LDcg
KzM4MjEsNyBAQCB5eXJlZHVjZToKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBv
cmFyeTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWws
ICh5eWxzcFsoMSkgLSAoMSldKSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSAxMjA6CkBAIC0zODAzLDcgKzM4MjksNyBAQCB5eXJlZHVjZToKICAgICB7CiAgICAgICAgIFRR
dWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2
cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRC
YXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwotICAgIDt9CisgICAgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgMTIxOgpAQCAtMzgxMiw3ICszODM4LDcgQEAgeXlyZWR1Y2U6
CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFs
TGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICAgICAgKHl5dmFsLmludGVy
bS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMik7Ci0gICAgO30KKyAgICB9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjI6CkBAIC0zODIxLDcgKzM4NDcsNyBAQCB5eXJlZHVj
ZToKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwog
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzKTsKLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAogICBjYXNlIDEyMzoKQEAgLTM4MzAsNyArMzg1Niw3IEBAIHl5cmVk
dWNlOgogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7
CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDQpOwotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTI0OgpAQCAtMzgzOSw3ICszODY1LDcgQEAgeXly
ZWR1Y2U6CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkp
OwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKLSAgICA7fQor
ICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEyNToKQEAgLTM4NDgsNyArMzg3NCw3IEBAIHl5
cmVkdWNlOgogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5h
dEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0p
KTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMyk7Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjY6CkBAIC0zODU3LDcgKzM4ODMsNyBAQCB5
eXJlZHVjZToKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSld
KSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDQpOwotICAgIDt9
CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTI3OgpAQCAtMzg2Niw3ICszODkyLDcgQEAg
eXlyZWR1Y2U6CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSld
KSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDIpOwotICAgIDt9
CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTI4OgpAQCAtMzg3NSw3ICszOTAxLDcgQEAg
eXlyZWR1Y2U6CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSld
KSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDMpOwotICAgIDt9
CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTI5OgpAQCAtMzg4NCw3ICszOTEwLDcgQEAg
eXlyZWR1Y2U6CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSld
KSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDQpOwotICAgIDt9
CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTMwOgpAQCAtMzg5Myw3ICszOTE5LDcgQEAg
eXlyZWR1Y2U6CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgx
KV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMiwgdHJ1ZSk7
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzE6CkBAIC0zOTAyLDcgKzM5
MjgsNyBAQCB5eXJlZHVjZToKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3lt
Ym9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3Bb
KDEpIC0gKDEpXSkpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgz
LCB0cnVlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEzMjoKQEAgLTM5
MTEsNyArMzkzNyw3IEBAIHl5cmVkdWNlOgogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250
ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jh
cnk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWws
ICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdn
cmVnYXRlKDQsIHRydWUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTMz
OgpAQCAtMzkxOSw3ICszOTQ1LDcgQEAgeXlyZWR1Y2U6CiAgICAgewogICAgICAgICBUUXVhbGlm
aWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9i
YWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMo
RWJ0U2FtcGxlcjJELCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwotICAgIDt9CisgICAgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgMTM0OgpAQCAtMzkyNyw3ICszOTUzLDcgQEAgeXlyZWR1Y2U6
CiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5h
dEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U2FtcGxlckN1YmUsIHF1YWwsICh5eWxzcFsoMSkg
LSAoMSldKSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzU6CkBAIC0z
OTM5LDcgKzM5NjUsNyBAQCB5eXJlZHVjZToKICAgICAgICAgfQogICAgICAgICBUUXVhbGlmaWVy
IHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwg
OiBFdnFUZW1wb3Jhcnk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0
U2FtcGxlckV4dGVybmFsT0VTLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTM2OgpAQCAtMzk1MSw3ICszOTc3LDcgQEAgeXly
ZWR1Y2U6CiAgICAgICAgIH0KICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3lt
Ym9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXIyRFJlY3QsIHF1YWws
ICh5eWxzcFsoMSkgLSAoMSldKSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSAxMzc6CkBAIC0zOTU5LDcgKzM5ODUsNyBAQCB5eXJlZHVjZToKICAgICB7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSk7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkucXVhbGlmaWVyID0gY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTM4OgpAQCAtMzk3MywxMiArMzk5OSwxMiBAQCB5eXJl
ZHVjZToKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRH
bG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFN0cnVjdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0p
KTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS51c2VyRGVmID0gJnN0cnVjdHVyZTsKLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEzOToKIAotICAgIHsgaWYgKGNvbnRl
eHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oKHl5bHNwWygyKSAtICgzKV0pLCAqKHl5dnNwWygy
KSAtICgzKV0ubGV4KS5zdHJpbmcpKSBjb250ZXh0LT5yZWNvdmVyKCk7IDt9CisgICAgeyBpZiAo
Y29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbigoeXlsc3BbKDIpIC0gKDMpXSksICooeXl2
c3BbKDIpIC0gKDMpXS5sZXgpLnN0cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgfQogICAgIGJy
ZWFrOwogCiAgIGNhc2UgMTQwOgpAQCAtMzk5NiwxMiArNDAyMiwxMiBAQCB5eXJlZHVjZToKICAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTdHJ1Y3QsIEV2cVRlbXBvcmFy
eSwgKHl5bHNwWygxKSAtICg2KV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS51c2Vy
RGVmID0gc3RydWN0dXJlOwogICAgICAgICBjb250ZXh0LT5leGl0U3RydWN0RGVjbGFyYXRpb24o
KTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE0MToKIAotICAgIHsgaWYg
KGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oKHl5bHNwWygyKSAtICgyKV0pLCAqKHl5
dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcpKSBjb250ZXh0LT5yZWNvdmVyKCk7IDt9CisgICAg
eyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbigoeXlsc3BbKDIpIC0gKDIpXSks
ICooeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgMTQyOgpAQCAtNDAxMSwxNCArNDAzNywxNCBAQCB5eXJlZHVj
ZToKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTdHJ1Y3QsIEV2cVRl
bXBvcmFyeSwgKHl5bHNwWygxKSAtICg1KV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS51c2VyRGVmID0gc3RydWN0dXJlOwogICAgICAgICBjb250ZXh0LT5leGl0U3RydWN0RGVjbGFy
YXRpb24oKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE0MzoKIAogICAg
IHsKICAgICAgICAgKHl5dmFsLmludGVybS5maWVsZExpc3QpID0gKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLmZpZWxkTGlzdCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAx
NDQ6CkBAIC00MDM1LDcgKzQwNjEsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KS0+cHVzaF9iYWNrKGZpZWxkKTsKICAgICAg
ICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTQ1OgpAQCAtNDA2OSw3
ICs0MDk1LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0TmVz
dGluZ0Vycm9yQ2hlY2soKHl5bHNwWygxKSAtICgzKV0pLCAqKCooeXl2YWwuaW50ZXJtLmZpZWxk
TGlzdCkpW2ldKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
IH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE0NjoKQEAgLTQwNzcsMTQg
KzQxMDMsMTQgQEAgeXlyZWR1Y2U6CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmZpZWxk
TGlzdCkgPSBOZXdQb29sVEZpZWxkTGlzdCgpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmZpZWxk
TGlzdCktPnB1c2hfYmFjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uZmllbGQpKTsKLSAgICA7
fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE0NzoKIAogICAgIHsKICAgICAgICAgKHl5
dmFsLmludGVybS5maWVsZExpc3QpLT5wdXNoX2JhY2soKHl5dnNwWygzKSAtICgzKV0uaW50ZXJt
LmZpZWxkKSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNDg6CkBAIC00
MDk1LDcgKzQxMjEsNyBAQCB5eXJlZHVjZToKIAogICAgICAgICBUVHlwZSogdHlwZSA9IG5ldyBU
VHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmZpZWxk
KSA9IG5ldyBURmllbGQodHlwZSwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zdHJpbmcpOwotICAg
IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTQ5OgpAQCAtNDExMSw2NyArNDEzNyw2
NyBAQCB5eXJlZHVjZToKICAgICAgICAgdHlwZS0+c2V0QXJyYXlTaXplKHNpemUpOwogCiAgICAg
ICAgICh5eXZhbC5pbnRlcm0uZmllbGQpID0gbmV3IFRGaWVsZCh0eXBlLCAoeXl2c3BbKDEpIC0g
KDQpXS5sZXgpLnN0cmluZyk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAx
NTA6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkg
LSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1MToKIAotICAgIHsgKHl5dmFsLmludGVybS5p
bnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAg
ICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0u
aW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1MjoKIAotICAgIHsgKHl5dmFs
LmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1BZ2dy
ZWdhdGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkg
LSAoMSldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAx
NTM6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUp
ID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAxNTQ6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmlu
dGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyB9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSAxNTU6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkg
PSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CisgICAgeyAoeXl2YWwu
aW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUp
OyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNTY6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50
ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CisgICAg
eyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmlu
dGVybU5vZGUpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNTc6CiAKLSAgICB7ICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7
IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLmludGVybU5vZGUpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNTg6CiAKLSAgICB7
ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50
ZXJtTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNTk6
CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSA9IDA7IDt9CisgICAgeyAo
eXl2YWwuaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkgPSAwOyB9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSAxNjA6CiAKLSAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgO30KKyAgICB7IGNv
bnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTYxOgog
Ci0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgO30KKyAgICB7IGNvbnRleHQtPnN5
bWJvbFRhYmxlLnBvcCgpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNjI6CkBAIC00MTgyLDQ0
ICs0MjA4LDQ0IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgKHl5dnNwWygzKSAtICg1KV0uaW50
ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldExpbmUoKHl5bG9jKSk7CiAgICAgICAgIH0KICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpID0gKHl5dnNwWygzKSAtICg1KV0uaW50
ZXJtLmludGVybUFnZ3JlZ2F0ZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSAxNjM6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5v
ZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAxNjQ6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJt
LmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAxNjU6CiAKLSAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1
c2goKTsgO30KKyAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgMTY2OgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgKHl5
dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1O
b2RlKTsgO30KKyAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyAoeXl2YWwuaW50ZXJt
LmludGVybU5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybU5vZGUpOyB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAxNjc6CiAKLSAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1
c2goKTsgO30KKyAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgMTY4OgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgKHl5
dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1O
b2RlKTsgO30KKyAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyAoeXl2YWwuaW50ZXJt
LmludGVybU5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybU5vZGUpOyB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAxNjk6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtTm9kZSkgPSAwOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTcw
OgpAQCAtNDIzMCwzMSArNDI1NiwzMSBAQCB5eXJlZHVjZToKICAgICAgICAgICAgICh5eXZzcFso
MikgLSAoMyldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpLT5zZXRMaW5lKCh5eWxvYykpOwogICAg
ICAgICB9CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDIpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsK
IAogICBjYXNlIDE3MToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1BZ2dy
ZWdhdGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXlsb2MpKTsKLSAgICA7fQorICAgIH0KICAgICBi
cmVhazsKIAogICBjYXNlIDE3MjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1BZ2dyZWdhdGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNw
WygxKSAtICgyKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSksICh5eXZzcFsoMikgLSAoMildLmlu
dGVybS5pbnRlcm1Ob2RlKSwgKHl5bG9jKSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAxNzM6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAwOyA7fQor
ICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IDA7IH0KICAgICBicmVhazsKIAogICBj
YXNlIDE3NDoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IHN0YXRpY19jYXN0
PFRJbnRlcm1Ob2RlKj4oKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkp
OyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IHN0YXRpY19jYXN0PFRJbnRl
cm1Ob2RlKj4oKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpOyB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAxNzU6CkBAIC00MjYzLDcgKzQyODksNyBAQCB5eXJlZHVjZToK
ICAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoNSldKSwg
KHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigoeXl2c3BbKDMpIC0gKDUpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLm5vZGVQYWlyKSwg
KHl5bHNwWygxKSAtICg1KV0pKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNl
IDE3NjoKQEAgLTQyNzEsNyArNDI5Nyw3IEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAgICAgKHl5
dmFsLmludGVybS5ub2RlUGFpcikubm9kZTEgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtTm9kZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUyID0gKHl5dnNw
WygzKSAtICgzKV0uaW50ZXJtLmludGVybU5vZGUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgMTc3OgpAQCAtNDI3OSw3ICs0MzA1LDcgQEAgeXlyZWR1Y2U6CiAgICAgewog
ICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2RlMSA9ICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS5pbnRlcm1Ob2RlKTsKICAgICAgICAgKHl5dmFsLmludGVybS5ub2RlUGFpcikubm9k
ZTIgPSAwOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTc4OgpAQCAtNDI4
OCw3ICs0MzE0LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAg
ICAgICBpZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldExpbmUoKSwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgIDt9
CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTc5OgpAQCAtNDMwNiwxMiArNDMzMiwxMiBA
QCB5eXJlZHVjZToKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IDA7CiAgICAgICAgIH0KLSAgICA7fQor
ICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE4MDoKIAotICAgIHsgY29udGV4dC0+c3ltYm9s
VGFibGUucHVzaCgpOyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IDt9CisgICAgeyBjb250
ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7ICsrY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgMTgxOgpAQCAtNDMyMCwxMiArNDM0NiwxMiBAQCB5eXJlZHVj
ZToKICAgICAgICAgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcFdo
aWxlLCAwLCAoeXl2c3BbKDQpIC0gKDYpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgMCwgKHl5
dnNwWyg2KSAtICg2KV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXlsc3BbKDEpIC0gKDYpXSkpOwog
ICAgICAgICAtLWNvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSAxODI6CiAKLSAgICB7ICsrY29udGV4dC0+bG9vcE5lc3RpbmdMZXZl
bDsgO30KKyAgICB7ICsrY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgfQogICAgIGJyZWFrOwog
CiAgIGNhc2UgMTgzOgpAQCAtNDMzNiwxMiArNDM2MiwxMiBAQCB5eXJlZHVjZToKIAogICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZExv
b3AoRUxvb3BEb1doaWxlLCAwLCAoeXl2c3BbKDYpIC0gKDgpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgMCwgKHl5dnNwWygzKSAtICg4KV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXlsc3BbKDQp
IC0gKDgpXSkpOwogICAgICAgICAtLWNvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxODQ6CiAKLSAgICB7IGNvbnRleHQtPnN5bWJv
bFRhYmxlLnB1c2goKTsgKytjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsOyA7fQorICAgIHsgY29u
dGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IH0K
ICAgICBicmVhazsKIAogICBjYXNlIDE4NToKQEAgLTQzNTAsMzUgKzQzNzYsMzUgQEAgeXlyZWR1
Y2U6CiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOwogICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZExvb3AoRUxvb3BG
b3IsICh5eXZzcFsoNCkgLSAoNyldLmludGVybS5pbnRlcm1Ob2RlKSwgcmVpbnRlcnByZXRfY2Fz
dDxUSW50ZXJtVHlwZWQqPigoeXl2c3BbKDUpIC0gKDcpXS5pbnRlcm0ubm9kZVBhaXIpLm5vZGUx
KSwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigoeXl2c3BbKDUpIC0gKDcpXS5pbnRl
cm0ubm9kZVBhaXIpLm5vZGUyKSwgKHl5dnNwWyg3KSAtICg3KV0uaW50ZXJtLmludGVybU5vZGUp
LCAoeXlsc3BbKDEpIC0gKDcpXSkpOwogICAgICAgICAtLWNvbnRleHQtPmxvb3BOZXN0aW5nTGV2
ZWw7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxODY6CiAKICAgICB7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0uaW50ZXJtTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxODc6
CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAxODg6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAgIDt9
CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTg5OgogCiAgICAgewogICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAwOwotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgMTkwOgpAQCAtNDM4Niw3ICs0NDEyLDcgQEAgeXlyZWR1Y2U6CiAgICAgewog
ICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2RlMSA9ICh5eXZzcFsoMSkgLSAoMild
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWly
KS5ub2RlMiA9IDA7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxOTE6CkBA
IC00Mzk0LDcgKzQ0MjAsNyBAQCB5eXJlZHVjZToKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRl
cm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUyID0gKHl5dnNwWygz
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSAxOTI6CkBAIC00NDA1LDcgKzQ0MzEsNyBAQCB5eXJlZHVjZToKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BDb250
aW51ZSwgKHl5bHNwWygxKSAtICgyKV0pKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAog
ICBjYXNlIDE5MzoKQEAgLTQ0MTYsNyArNDQ0Miw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcEJyZWFrLCAoeXls
c3BbKDEpIC0gKDIpXSkpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTk0
OgpAQCAtNDQyNyw3ICs0NDUzLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigoeXlsc3BbKDEpIC0gKDIpXSksICJub24tdm9pZCBmdW5jdGlvbiBtdXN0IHJldHVybiBh
IHZhbHVlIiwgInJldHVybiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxOTU6CkBAIC00NDQy
LDcgKzQ0NjgsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxz
cFsoMSkgLSAoMyldKSwgImZ1bmN0aW9uIHJldHVybiBpcyBub3QgbWF0Y2hpbmcgdHlwZToiLCAi
cmV0dXJuIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE5NjoKQEAgLTQ0NTAsNyArNDQ3Niw3
IEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAgICAgRlJBR19PTkxZKCJkaXNjYXJkIiwgKHl5bHNw
WygxKSAtICgyKV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wS2lsbCwgKHl5bHNwWygxKSAtICgyKV0pKTsK
LSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE5NzoKQEAgLTQ0NTgsNyArNDQ4
NCw3IEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2Rl
KSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsKICAgICAgICAgY29udGV4
dC0+dHJlZVJvb3QgPSAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpOwotICAgIDt9CisgICAgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgMTk4OgpAQCAtNDQ2NiwyMSArNDQ5MiwyMSBAQCB5eXJlZHVj
ZToKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJt
Tm9kZSksICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1Ob2RlKSwgKHl5bG9jKSk7CiAg
ICAgICAgIGNvbnRleHQtPnRyZWVSb290ID0gKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKTsKLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE5OToKIAogICAgIHsKICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRl
cm1Ob2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDIwMDoKIAogICAg
IHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS5pbnRlcm1Ob2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNl
IDIwMToKQEAgLTQ1NzAsNyArNDU5Niw3IEBAIHl5cmVkdWNlOgogICAgICAgICBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IocGFyYW1Ob2RlcywgRU9wUGFyYW1ldGVy
cywgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
KS5pbnRlcm1BZ2dyZWdhdGUgPSBwYXJhbU5vZGVzOwogICAgICAgICBjb250ZXh0LT5sb29wTmVz
dGluZ0xldmVsID0gMDsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDIwMjoK
QEAgLTQ1OTQsMTQgKzQ2MjAsMjQgQEAgeXlyZWR1Y2U6CiAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtTm9kZSktPmdldEFzQWdncmVnYXRlKCktPnNldERlYnVnKGNvbnRleHQtPnByYWdtYSgp
LmRlYnVnKTsKIAogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKLSAgICA7fQor
ICAgIH0KICAgICBicmVhazsKIAogCi0vKiBMaW5lIDEyNjcgb2YgeWFjYy5jLiAgKi8KIAogICAg
ICAgZGVmYXVsdDogYnJlYWs7CiAgICAgfQorICAvKiBVc2VyIHNlbWFudGljIGFjdGlvbnMgc29t
ZXRpbWVzIGFsdGVyIHl5Y2hhciwgYW5kIHRoYXQgcmVxdWlyZXMKKyAgICAgdGhhdCB5eXRva2Vu
IGJlIHVwZGF0ZWQgd2l0aCB0aGUgbmV3IHRyYW5zbGF0aW9uLiAgV2UgdGFrZSB0aGUKKyAgICAg
YXBwcm9hY2ggb2YgdHJhbnNsYXRpbmcgaW1tZWRpYXRlbHkgYmVmb3JlIGV2ZXJ5IHVzZSBvZiB5
eXRva2VuLgorICAgICBPbmUgYWx0ZXJuYXRpdmUgaXMgdHJhbnNsYXRpbmcgaGVyZSBhZnRlciBl
dmVyeSBzZW1hbnRpYyBhY3Rpb24sCisgICAgIGJ1dCB0aGF0IHRyYW5zbGF0aW9uIHdvdWxkIGJl
IG1pc3NlZCBpZiB0aGUgc2VtYW50aWMgYWN0aW9uIGludm9rZXMKKyAgICAgWVlBQk9SVCwgWVlB
Q0NFUFQsIG9yIFlZRVJST1IgaW1tZWRpYXRlbHkgYWZ0ZXIgYWx0ZXJpbmcgeXljaGFyIG9yCisg
ICAgIGlmIGl0IGludm9rZXMgWVlCQUNLVVAuICBJbiB0aGUgY2FzZSBvZiBZWUFCT1JUIG9yIFlZ
QUNDRVBULCBhbgorICAgICBpbmNvcnJlY3QgZGVzdHJ1Y3RvciBtaWdodCB0aGVuIGJlIGludm9r
ZWQgaW1tZWRpYXRlbHkuICBJbiB0aGUKKyAgICAgY2FzZSBvZiBZWUVSUk9SIG9yIFlZQkFDS1VQ
LCBzdWJzZXF1ZW50IHBhcnNlciBhY3Rpb25zIG1pZ2h0IGxlYWQKKyAgICAgdG8gYW4gaW5jb3Jy
ZWN0IGRlc3RydWN0b3IgY2FsbCBvciB2ZXJib3NlIHN5bnRheCBlcnJvciBtZXNzYWdlCisgICAg
IGJlZm9yZSB0aGUgbG9va2FoZWFkIGlzIHRyYW5zbGF0ZWQuICAqLwogICBZWV9TWU1CT0xfUFJJ
TlQgKCItPiAkJCA9IiwgeXlyMVt5eW5dLCAmeXl2YWwsICZ5eWxvYyk7CiAKICAgWVlQT1BTVEFD
SyAoeXlsZW4pOwpAQCAtNDYzMCw2ICs0NjY2LDEwIEBAIHl5cmVkdWNlOgogfCB5eWVycmxhYiAt
LSBoZXJlIG9uIGRldGVjdGluZyBlcnJvciB8CiBgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKi8KIHl5ZXJybGFiOgorICAvKiBNYWtlIHN1cmUgd2UgaGF2ZSBsYXRlc3QgbG9v
a2FoZWFkIHRyYW5zbGF0aW9uLiAgU2VlIGNvbW1lbnRzIGF0CisgICAgIHVzZXIgc2VtYW50aWMg
YWN0aW9ucyBmb3Igd2h5IHRoaXMgaXMgbmVjZXNzYXJ5LiAgKi8KKyAgeXl0b2tlbiA9IHl5Y2hh
ciA9PSBZWUVNUFRZID8gWVlFTVBUWSA6IFlZVFJBTlNMQVRFICh5eWNoYXIpOworCiAgIC8qIElm
IG5vdCBhbHJlYWR5IHJlY292ZXJpbmcgZnJvbSBhbiBlcnJvciwgcmVwb3J0IHRoaXMgZXJyb3Iu
ICAqLwogICBpZiAoIXl5ZXJyc3RhdHVzKQogICAgIHsKQEAgLTQ2MzcsNDUgKzQ2NzcsNDQgQEAg
eXllcnJsYWI6CiAjaWYgISBZWUVSUk9SX1ZFUkJPU0UKICAgICAgIHl5ZXJyb3IgKCZ5eWxsb2Ms
IGNvbnRleHQsIFlZXygic3ludGF4IGVycm9yIikpOwogI2Vsc2UKKyMgZGVmaW5lIFlZU1lOVEFY
X0VSUk9SIHl5c3ludGF4X2Vycm9yICgmeXltc2dfYWxsb2MsICZ5eW1zZywgXAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl5c3NwLCB5eXRva2VuKQogICAgICAgewot
CVlZU0laRV9UIHl5c2l6ZSA9IHl5c3ludGF4X2Vycm9yICgwLCB5eXN0YXRlLCB5eWNoYXIpOwot
CWlmICh5eW1zZ19hbGxvYyA8IHl5c2l6ZSAmJiB5eW1zZ19hbGxvYyA8IFlZU1RBQ0tfQUxMT0Nf
TUFYSU1VTSkKLQkgIHsKLQkgICAgWVlTSVpFX1QgeXlhbGxvYyA9IDIgKiB5eXNpemU7Ci0JICAg
IGlmICghICh5eXNpemUgPD0geXlhbGxvYyAmJiB5eWFsbG9jIDw9IFlZU1RBQ0tfQUxMT0NfTUFY
SU1VTSkpCi0JICAgICAgeXlhbGxvYyA9IFlZU1RBQ0tfQUxMT0NfTUFYSU1VTTsKLQkgICAgaWYg
KHl5bXNnICE9IHl5bXNnYnVmKQotCSAgICAgIFlZU1RBQ0tfRlJFRSAoeXltc2cpOwotCSAgICB5
eW1zZyA9IChjaGFyICopIFlZU1RBQ0tfQUxMT0MgKHl5YWxsb2MpOwotCSAgICBpZiAoeXltc2cp
Ci0JICAgICAgeXltc2dfYWxsb2MgPSB5eWFsbG9jOwotCSAgICBlbHNlCi0JICAgICAgewotCQl5
eW1zZyA9IHl5bXNnYnVmOwotCQl5eW1zZ19hbGxvYyA9IHNpemVvZiB5eW1zZ2J1ZjsKLQkgICAg
ICB9Ci0JICB9Ci0KLQlpZiAoMCA8IHl5c2l6ZSAmJiB5eXNpemUgPD0geXltc2dfYWxsb2MpCi0J
ICB7Ci0JICAgICh2b2lkKSB5eXN5bnRheF9lcnJvciAoeXltc2csIHl5c3RhdGUsIHl5Y2hhcik7
Ci0JICAgIHl5ZXJyb3IgKCZ5eWxsb2MsIGNvbnRleHQsIHl5bXNnKTsKLQkgIH0KLQllbHNlCi0J
ICB7Ci0JICAgIHl5ZXJyb3IgKCZ5eWxsb2MsIGNvbnRleHQsIFlZXygic3ludGF4IGVycm9yIikp
OwotCSAgICBpZiAoeXlzaXplICE9IDApCi0JICAgICAgZ290byB5eWV4aGF1c3RlZGxhYjsKLQkg
IH0KKyAgICAgICAgY2hhciBjb25zdCAqeXltc2dwID0gWVlfKCJzeW50YXggZXJyb3IiKTsKKyAg
ICAgICAgaW50IHl5c3ludGF4X2Vycm9yX3N0YXR1czsKKyAgICAgICAgeXlzeW50YXhfZXJyb3Jf
c3RhdHVzID0gWVlTWU5UQVhfRVJST1I7CisgICAgICAgIGlmICh5eXN5bnRheF9lcnJvcl9zdGF0
dXMgPT0gMCkKKyAgICAgICAgICB5eW1zZ3AgPSB5eW1zZzsKKyAgICAgICAgZWxzZSBpZiAoeXlz
eW50YXhfZXJyb3Jfc3RhdHVzID09IDEpCisgICAgICAgICAgeworICAgICAgICAgICAgaWYgKHl5
bXNnICE9IHl5bXNnYnVmKQorICAgICAgICAgICAgICBZWVNUQUNLX0ZSRUUgKHl5bXNnKTsKKyAg
ICAgICAgICAgIHl5bXNnID0gKGNoYXIgKikgWVlTVEFDS19BTExPQyAoeXltc2dfYWxsb2MpOwor
ICAgICAgICAgICAgaWYgKCF5eW1zZykKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHl5bXNnID0geXltc2didWY7CisgICAgICAgICAgICAgICAgeXltc2dfYWxsb2MgPSBzaXplb2Yg
eXltc2didWY7CisgICAgICAgICAgICAgICAgeXlzeW50YXhfZXJyb3Jfc3RhdHVzID0gMjsKKyAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgeXlzeW50YXhfZXJyb3Jfc3RhdHVzID0gWVlTWU5UQVhfRVJST1I7CisgICAgICAg
ICAgICAgICAgeXltc2dwID0geXltc2c7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICB9Cisg
ICAgICAgIHl5ZXJyb3IgKCZ5eWxsb2MsIGNvbnRleHQsIHl5bXNncCk7CisgICAgICAgIGlmICh5
eXN5bnRheF9lcnJvcl9zdGF0dXMgPT0gMikKKyAgICAgICAgICBnb3RvIHl5ZXhoYXVzdGVkbGFi
OwogICAgICAgfQorIyB1bmRlZiBZWVNZTlRBWF9FUlJPUgogI2VuZGlmCiAgICAgfQogCi0gIHl5
ZXJyb3JfcmFuZ2VbMF0gPSB5eWxsb2M7CisgIHl5ZXJyb3JfcmFuZ2VbMV0gPSB5eWxsb2M7CiAK
ICAgaWYgKHl5ZXJyc3RhdHVzID09IDMpCiAgICAgewotICAgICAgLyogSWYganVzdCB0cmllZCBh
bmQgZmFpbGVkIHRvIHJldXNlIGxvb2stYWhlYWQgdG9rZW4gYWZ0ZXIgYW4KKyAgICAgIC8qIElm
IGp1c3QgdHJpZWQgYW5kIGZhaWxlZCB0byByZXVzZSBsb29rYWhlYWQgdG9rZW4gYWZ0ZXIgYW4K
IAkgZXJyb3IsIGRpc2NhcmQgaXQuICAqLwogCiAgICAgICBpZiAoeXljaGFyIDw9IFlZRU9GKQpA
QCAtNDY5Miw3ICs0NzMxLDcgQEAgeXllcnJsYWI6CiAJfQogICAgIH0KIAotICAvKiBFbHNlIHdp
bGwgdHJ5IHRvIHJldXNlIGxvb2stYWhlYWQgdG9rZW4gYWZ0ZXIgc2hpZnRpbmcgdGhlIGVycm9y
CisgIC8qIEVsc2Ugd2lsbCB0cnkgdG8gcmV1c2UgbG9va2FoZWFkIHRva2VuIGFmdGVyIHNoaWZ0
aW5nIHRoZSBlcnJvcgogICAgICB0b2tlbi4gICovCiAgIGdvdG8geXllcnJsYWIxOwogCkBAIC00
NzA4LDcgKzQ3NDcsNyBAQCB5eWVycm9ybGFiOgogICBpZiAoLypDT05TVENPTkQqLyAwKQogICAg
ICBnb3RvIHl5ZXJyb3JsYWI7CiAKLSAgeXllcnJvcl9yYW5nZVswXSA9IHl5bHNwWzEteXlsZW5d
OworICB5eWVycm9yX3JhbmdlWzFdID0geXlsc3BbMS15eWxlbl07CiAgIC8qIERvIG5vdCByZWNs
YWltIHRoZSBzeW1ib2xzIG9mIHRoZSBydWxlIHdoaWNoIGFjdGlvbiB0cmlnZ2VyZWQKICAgICAg
dGhpcyBZWUVSUk9SLiAgKi8KICAgWVlQT1BTVEFDSyAoeXlsZW4pOwpAQCAtNDcyNyw3ICs0NzY2
LDcgQEAgeXllcnJsYWIxOgogICBmb3IgKDs7KQogICAgIHsKICAgICAgIHl5biA9IHl5cGFjdFt5
eXN0YXRlXTsKLSAgICAgIGlmICh5eW4gIT0gWVlQQUNUX05JTkYpCisgICAgICBpZiAoIXl5cGFj
dF92YWx1ZV9pc19kZWZhdWx0ICh5eW4pKQogCXsKIAkgIHl5biArPSBZWVRFUlJPUjsKIAkgIGlm
ICgwIDw9IHl5biAmJiB5eW4gPD0gWVlMQVNUICYmIHl5Y2hlY2tbeXluXSA9PSBZWVRFUlJPUikK
QEAgLTQ3NDIsNyArNDc4MSw3IEBAIHl5ZXJybGFiMToKICAgICAgIGlmICh5eXNzcCA9PSB5eXNz
KQogCVlZQUJPUlQ7CiAKLSAgICAgIHl5ZXJyb3JfcmFuZ2VbMF0gPSAqeXlsc3A7CisgICAgICB5
eWVycm9yX3JhbmdlWzFdID0gKnl5bHNwOwogICAgICAgeXlkZXN0cnVjdCAoIkVycm9yOiBwb3Bw
aW5nIiwKIAkJICB5eXN0b3NbeXlzdGF0ZV0sIHl5dnNwLCB5eWxzcCwgY29udGV4dCk7CiAgICAg
ICBZWVBPUFNUQUNLICgxKTsKQEAgLTQ3NTAsMTUgKzQ3ODksMTQgQEAgeXllcnJsYWIxOgogICAg
ICAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKICAgICB9CiAKLSAgaWYgKHl5biA9PSBZ
WUZJTkFMKQotICAgIFlZQUNDRVBUOwotCisgIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVE
X0JFR0lOCiAgICorK3l5dnNwID0geXlsdmFsOworICBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFM
SVpFRF9FTkQKIAotICB5eWVycm9yX3JhbmdlWzFdID0geXlsbG9jOworICB5eWVycm9yX3Jhbmdl
WzJdID0geXlsbG9jOwogICAvKiBVc2luZyBZWUxMT0MgaXMgdGVtcHRpbmcsIGJ1dCB3b3VsZCBj
aGFuZ2UgdGhlIGxvY2F0aW9uIG9mCi0gICAgIHRoZSBsb29rLWFoZWFkLiAgWVlMT0MgaXMgYXZh
aWxhYmxlIHRob3VnaC4gICovCi0gIFlZTExPQ19ERUZBVUxUICh5eWxvYywgKHl5ZXJyb3JfcmFu
Z2UgLSAxKSwgMik7CisgICAgIHRoZSBsb29rYWhlYWQuICBZWUxPQyBpcyBhdmFpbGFibGUgdGhv
dWdoLiAgKi8KKyAgWVlMTE9DX0RFRkFVTFQgKHl5bG9jLCB5eWVycm9yX3JhbmdlLCAyKTsKICAg
KisreXlsc3AgPSB5eWxvYzsKIAogICAvKiBTaGlmdCB0aGUgZXJyb3IgdG9rZW4uICAqLwpAQCAt
NDc4Miw3ICs0ODIwLDcgQEAgeXlhYm9ydGxhYjoKICAgeXlyZXN1bHQgPSAxOwogICBnb3RvIHl5
cmV0dXJuOwogCi0jaWZuZGVmIHl5b3ZlcmZsb3cKKyNpZiAhZGVmaW5lZCB5eW92ZXJmbG93IHx8
IFlZRVJST1JfVkVSQk9TRQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLgogfCB5eWV4aGF1c3RlZGxhYiAtLSBtZW1vcnkgZXhoYXVzdGlvbiBjb21l
cyBoZXJlLiAgfAogYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0qLwpAQCAtNDc5Myw5ICs0ODMxLDE0IEBAIHl5ZXhoYXVzdGVkbGFiOgogI2VuZGlmCiAK
IHl5cmV0dXJuOgotICBpZiAoeXljaGFyICE9IFlZRU9GICYmIHl5Y2hhciAhPSBZWUVNUFRZKQot
ICAgICB5eWRlc3RydWN0ICgiQ2xlYW51cDogZGlzY2FyZGluZyBsb29rYWhlYWQiLAotCQkgeXl0
b2tlbiwgJnl5bHZhbCwgJnl5bGxvYywgY29udGV4dCk7CisgIGlmICh5eWNoYXIgIT0gWVlFTVBU
WSkKKyAgICB7CisgICAgICAvKiBNYWtlIHN1cmUgd2UgaGF2ZSBsYXRlc3QgbG9va2FoZWFkIHRy
YW5zbGF0aW9uLiAgU2VlIGNvbW1lbnRzIGF0CisgICAgICAgICB1c2VyIHNlbWFudGljIGFjdGlv
bnMgZm9yIHdoeSB0aGlzIGlzIG5lY2Vzc2FyeS4gICovCisgICAgICB5eXRva2VuID0gWVlUUkFO
U0xBVEUgKHl5Y2hhcik7CisgICAgICB5eWRlc3RydWN0ICgiQ2xlYW51cDogZGlzY2FyZGluZyBs
b29rYWhlYWQiLAorICAgICAgICAgICAgICAgICAgeXl0b2tlbiwgJnl5bHZhbCwgJnl5bGxvYywg
Y29udGV4dCk7CisgICAgfQogICAvKiBEbyBub3QgcmVjbGFpbSB0aGUgc3ltYm9scyBvZiB0aGUg
cnVsZSB3aGljaCBhY3Rpb24gdHJpZ2dlcmVkCiAgICAgIHRoaXMgWVlBQk9SVCBvciBZWUFDQ0VQ
VC4gICovCiAgIFlZUE9QU1RBQ0sgKHl5bGVuKTsKQEAgLTQ4MjIsMTIgKzQ4NjUsNiBAQCB5eXJl
dHVybjoKIAogCiAKLXZvaWQgeXllcnJvcihZWUxUWVBFKiB5eWxsb2MsIFRQYXJzZUNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbikgewotICAgIGNvbnRleHQtPmVycm9yKCp5eWxs
b2MsIHJlYXNvbiwgIiIpOwotICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLX0KLQogaW50IGdsc2xh
bmdfcGFyc2UoVFBhcnNlQ29udGV4dCogY29udGV4dCkgewogICAgIHJldHVybiB5eXBhcnNlKGNv
bnRleHQpOwogfQotCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
Z2xzbGFuZ190YWIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvZ2xzbGFuZ190YWIuaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsMjQgKzEsMjEgQEAKLS8qIEEgQmlzb24gcGFyc2VyLCBtYWRlIGJ5IEdOVSBCaXNvbiAyLjMu
ICAqLworLyogQSBCaXNvbiBwYXJzZXIsIG1hZGUgYnkgR05VIEJpc29uIDIuNy4gICovCiAKLS8q
IFNrZWxldG9uIGludGVyZmFjZSBmb3IgQmlzb24ncyBZYWNjLWxpa2UgcGFyc2VycyBpbiBDCi0K
LSAgIENvcHlyaWdodCAoQykgMTk4NCwgMTk4OSwgMTk5MCwgMjAwMCwgMjAwMSwgMjAwMiwgMjAw
MywgMjAwNCwgMjAwNSwgMjAwNgotICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0K
LSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IgbW9kaWZ5CisvKiBCaXNvbiBpbnRlcmZhY2UgZm9yIFlhY2MtbGlrZSBwYXJzZXJz
IGluIEMKKyAgIAorICAgICAgQ29weXJpZ2h0IChDKSAxOTg0LCAxOTg5LTE5OTAsIDIwMDAtMjAx
MiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIAorICAgVGhpcyBwcm9ncmFtIGlz
IGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAg
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5Ci0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy
c2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KLQorICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj
ZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgICAKICAg
IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCi0KKyAgIAogICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgIGFsb25nIHdpdGggdGhp
cyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gICBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuICAqLworICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu
b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogCiAvKiBBcyBhIHNw
ZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IGNyZWF0ZSBhIGxhcmdlciB3b3JrIHRoYXQgY29udGFp
bnMKICAgIHBhcnQgb3IgYWxsIG9mIHRoZSBCaXNvbiBwYXJzZXIgc2tlbGV0b24gYW5kIGRpc3Ry
aWJ1dGUgdGhhdCB3b3JrCkBAIC0yOSwxMCArMjYsMjkgQEAKICAgIHNwZWNpYWwgZXhjZXB0aW9u
LCB3aGljaCB3aWxsIGNhdXNlIHRoZSBza2VsZXRvbiBhbmQgdGhlIHJlc3VsdGluZwogICAgQmlz
b24gb3V0cHV0IGZpbGVzIHRvIGJlIGxpY2Vuc2VkIHVuZGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJs
aWMKICAgIExpY2Vuc2Ugd2l0aG91dCB0aGlzIHNwZWNpYWwgZXhjZXB0aW9uLgotCisgICAKICAg
IFRoaXMgc3BlY2lhbCBleGNlcHRpb24gd2FzIGFkZGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24gaW4KICAgIHZlcnNpb24gMi4yIG9mIEJpc29uLiAgKi8KIAorI2lmbmRlZiBZWV9Z
WV9HTFNMQU5HX1RBQl9IX0lOQ0xVREVECisjIGRlZmluZSBZWV9ZWV9HTFNMQU5HX1RBQl9IX0lO
Q0xVREVECisvKiBFbmFibGluZyB0cmFjZXMuICAqLworI2lmbmRlZiBZWURFQlVHCisjIGRlZmlu
ZSBZWURFQlVHIDAKKyNlbmRpZgorI2lmIFlZREVCVUcKK2V4dGVybiBpbnQgeXlkZWJ1ZzsKKyNl
bmRpZgorLyogIiVjb2RlIHJlcXVpcmVzIiBibG9ja3MuICAqLworCisKKyNkZWZpbmUgWVlMVFlQ
RSBUU291cmNlTG9jCisjZGVmaW5lIFlZTFRZUEVfSVNfREVDTEFSRUQgMQorI2RlZmluZSBTSF9N
QVhfVE9LRU5fTEVOR1RIIDI1NiAgLy8gV2ViR0wgc3BlYy4KKworCisKKwogLyogVG9rZW5zLiAg
Ki8KICNpZm5kZWYgWVlUT0tFTlRZUEUKICMgZGVmaW5lIFlZVE9LRU5UWVBFCkBAIC0xMzMsMTA5
ICsxNDksMTMgQEAKICAgICAgUVVFU1RJT04gPSAzNDkKICAgIH07CiAjZW5kaWYKLS8qIFRva2Vu
cy4gICovCi0jZGVmaW5lIElOVkFSSUFOVCAyNTgKLSNkZWZpbmUgSElHSF9QUkVDSVNJT04gMjU5
Ci0jZGVmaW5lIE1FRElVTV9QUkVDSVNJT04gMjYwCi0jZGVmaW5lIExPV19QUkVDSVNJT04gMjYx
Ci0jZGVmaW5lIFBSRUNJU0lPTiAyNjIKLSNkZWZpbmUgQVRUUklCVVRFIDI2MwotI2RlZmluZSBD
T05TVF9RVUFMIDI2NAotI2RlZmluZSBCT09MX1RZUEUgMjY1Ci0jZGVmaW5lIEZMT0FUX1RZUEUg
MjY2Ci0jZGVmaW5lIElOVF9UWVBFIDI2NwotI2RlZmluZSBCUkVBSyAyNjgKLSNkZWZpbmUgQ09O
VElOVUUgMjY5Ci0jZGVmaW5lIERPIDI3MAotI2RlZmluZSBFTFNFIDI3MQotI2RlZmluZSBGT1Ig
MjcyCi0jZGVmaW5lIElGIDI3MwotI2RlZmluZSBESVNDQVJEIDI3NAotI2RlZmluZSBSRVRVUk4g
Mjc1Ci0jZGVmaW5lIEJWRUMyIDI3NgotI2RlZmluZSBCVkVDMyAyNzcKLSNkZWZpbmUgQlZFQzQg
Mjc4Ci0jZGVmaW5lIElWRUMyIDI3OQotI2RlZmluZSBJVkVDMyAyODAKLSNkZWZpbmUgSVZFQzQg
MjgxCi0jZGVmaW5lIFZFQzIgMjgyCi0jZGVmaW5lIFZFQzMgMjgzCi0jZGVmaW5lIFZFQzQgMjg0
Ci0jZGVmaW5lIE1BVFJJWDIgMjg1Ci0jZGVmaW5lIE1BVFJJWDMgMjg2Ci0jZGVmaW5lIE1BVFJJ
WDQgMjg3Ci0jZGVmaW5lIElOX1FVQUwgMjg4Ci0jZGVmaW5lIE9VVF9RVUFMIDI4OQotI2RlZmlu
ZSBJTk9VVF9RVUFMIDI5MAotI2RlZmluZSBVTklGT1JNIDI5MQotI2RlZmluZSBWQVJZSU5HIDI5
MgotI2RlZmluZSBTVFJVQ1QgMjkzCi0jZGVmaW5lIFZPSURfVFlQRSAyOTQKLSNkZWZpbmUgV0hJ
TEUgMjk1Ci0jZGVmaW5lIFNBTVBMRVIyRCAyOTYKLSNkZWZpbmUgU0FNUExFUkNVQkUgMjk3Ci0j
ZGVmaW5lIFNBTVBMRVJfRVhURVJOQUxfT0VTIDI5OAotI2RlZmluZSBTQU1QTEVSMkRSRUNUIDI5
OQotI2RlZmluZSBJREVOVElGSUVSIDMwMAotI2RlZmluZSBUWVBFX05BTUUgMzAxCi0jZGVmaW5l
IEZMT0FUQ09OU1RBTlQgMzAyCi0jZGVmaW5lIElOVENPTlNUQU5UIDMwMwotI2RlZmluZSBCT09M
Q09OU1RBTlQgMzA0Ci0jZGVmaW5lIExFRlRfT1AgMzA1Ci0jZGVmaW5lIFJJR0hUX09QIDMwNgot
I2RlZmluZSBJTkNfT1AgMzA3Ci0jZGVmaW5lIERFQ19PUCAzMDgKLSNkZWZpbmUgTEVfT1AgMzA5
Ci0jZGVmaW5lIEdFX09QIDMxMAotI2RlZmluZSBFUV9PUCAzMTEKLSNkZWZpbmUgTkVfT1AgMzEy
Ci0jZGVmaW5lIEFORF9PUCAzMTMKLSNkZWZpbmUgT1JfT1AgMzE0Ci0jZGVmaW5lIFhPUl9PUCAz
MTUKLSNkZWZpbmUgTVVMX0FTU0lHTiAzMTYKLSNkZWZpbmUgRElWX0FTU0lHTiAzMTcKLSNkZWZp
bmUgQUREX0FTU0lHTiAzMTgKLSNkZWZpbmUgTU9EX0FTU0lHTiAzMTkKLSNkZWZpbmUgTEVGVF9B
U1NJR04gMzIwCi0jZGVmaW5lIFJJR0hUX0FTU0lHTiAzMjEKLSNkZWZpbmUgQU5EX0FTU0lHTiAz
MjIKLSNkZWZpbmUgWE9SX0FTU0lHTiAzMjMKLSNkZWZpbmUgT1JfQVNTSUdOIDMyNAotI2RlZmlu
ZSBTVUJfQVNTSUdOIDMyNQotI2RlZmluZSBMRUZUX1BBUkVOIDMyNgotI2RlZmluZSBSSUdIVF9Q
QVJFTiAzMjcKLSNkZWZpbmUgTEVGVF9CUkFDS0VUIDMyOAotI2RlZmluZSBSSUdIVF9CUkFDS0VU
IDMyOQotI2RlZmluZSBMRUZUX0JSQUNFIDMzMAotI2RlZmluZSBSSUdIVF9CUkFDRSAzMzEKLSNk
ZWZpbmUgRE9UIDMzMgotI2RlZmluZSBDT01NQSAzMzMKLSNkZWZpbmUgQ09MT04gMzM0Ci0jZGVm
aW5lIEVRVUFMIDMzNQotI2RlZmluZSBTRU1JQ09MT04gMzM2Ci0jZGVmaW5lIEJBTkcgMzM3Ci0j
ZGVmaW5lIERBU0ggMzM4Ci0jZGVmaW5lIFRJTERFIDMzOQotI2RlZmluZSBQTFVTIDM0MAotI2Rl
ZmluZSBTVEFSIDM0MQotI2RlZmluZSBTTEFTSCAzNDIKLSNkZWZpbmUgUEVSQ0VOVCAzNDMKLSNk
ZWZpbmUgTEVGVF9BTkdMRSAzNDQKLSNkZWZpbmUgUklHSFRfQU5HTEUgMzQ1Ci0jZGVmaW5lIFZF
UlRJQ0FMX0JBUiAzNDYKLSNkZWZpbmUgQ0FSRVQgMzQ3Ci0jZGVmaW5lIEFNUEVSU0FORCAzNDgK
LSNkZWZpbmUgUVVFU1RJT04gMzQ5Ci0KLQogCiAKICNpZiAhIGRlZmluZWQgWVlTVFlQRSAmJiAh
IGRlZmluZWQgWVlTVFlQRV9JU19ERUNMQVJFRAogdHlwZWRlZiB1bmlvbiBZWVNUWVBFCi0KIHsK
LSNkZWZpbmUgWVlMVFlQRSBUU291cmNlTG9jCi0jZGVmaW5lIFlZTFRZUEVfSVNfREVDTEFSRUQg
MQorCisKICAgICBzdHJ1Y3QgewogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBUU3RyaW5n
ICpzdHJpbmc7CkBAIC0yNjMsMTcgKzE4MywxNSBAQCB0eXBlZGVmIHVuaW9uIFlZU1RZUEUKICAg
ICAgICAgICAgIFRGaWVsZExpc3QqIGZpZWxkTGlzdDsKICAgICAgICAgfTsKICAgICB9IGludGVy
bTsKLX0KLS8qIExpbmUgMTUyOSBvZiB5YWNjLmMuICAqLwogCi0JWVlTVFlQRTsKKworCit9IFlZ
U1RZUEU7CisjIGRlZmluZSBZWVNUWVBFX0lTX1RSSVZJQUwgMQogIyBkZWZpbmUgeXlzdHlwZSBZ
WVNUWVBFIC8qIG9ic29sZXNjZW50OyB3aWxsIGJlIHdpdGhkcmF3biAqLwogIyBkZWZpbmUgWVlT
VFlQRV9JU19ERUNMQVJFRCAxCi0jIGRlZmluZSBZWVNUWVBFX0lTX1RSSVZJQUwgMQogI2VuZGlm
CiAKLQotCiAjaWYgISBkZWZpbmVkIFlZTFRZUEUgJiYgISBkZWZpbmVkIFlZTFRZUEVfSVNfREVD
TEFSRUQKIHR5cGVkZWYgc3RydWN0IFlZTFRZUEUKIHsKQEAgLTI4OCwzICsyMDYsMTggQEAgdHlw
ZWRlZiBzdHJ1Y3QgWVlMVFlQRQogI2VuZGlmCiAKIAorI2lmZGVmIFlZUEFSU0VfUEFSQU0KKyNp
ZiBkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19jcGx1c3BsdXMKK2ludCB5eXBhcnNlICh2
b2lkICpZWVBBUlNFX1BBUkFNKTsKKyNlbHNlCitpbnQgeXlwYXJzZSAoKTsKKyNlbmRpZgorI2Vs
c2UgLyogISBZWVBBUlNFX1BBUkFNICovCisjaWYgZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVk
IF9fY3BsdXNwbHVzCitpbnQgeXlwYXJzZSAoVFBhcnNlQ29udGV4dCogY29udGV4dCk7CisjZWxz
ZQoraW50IHl5cGFyc2UgKCk7CisjZW5kaWYKKyNlbmRpZiAvKiAhIFlZUEFSU0VfUEFSQU0gKi8K
KworI2VuZGlmIC8qICFZWV9ZWV9HTFNMQU5HX1RBQl9IX0lOQ0xVREVEICAqLwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2ludGVybWVkaWF0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1lZGlhdGUu
aAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL2ludGVybWVkaWF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUsOCArMjA1LDcgQEAgY2xh
c3MgVEluZm9TaW5rOwogLy8KIGNsYXNzIFRJbnRlcm1Ob2RlIHsKIHB1YmxpYzoKLSAgICBQT09M
X0FMTE9DQVRPUl9ORVdfREVMRVRFKEdsb2JhbFBvb2xBbGxvY2F0b3IpCi0KKyAgICBQT09MX0FM
TE9DQVRPUl9ORVdfREVMRVRFKCk7CiAgICAgVEludGVybU5vZGUoKSB7CiAgICAgICAgIC8vIFRP
RE86IE1vdmUgdGhpcyB0byBUU291cmNlTG9jIGNvbnN0cnVjdG9yCiAgICAgICAgIC8vIGFmdGVy
IGdldHRpbmcgcmlkIG9mIFRQdWJsaWNUeXBlLgpAQCAtMjI4LDYgKzIyNywxMSBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBUSW50ZXJtU3ltYm9sKiBnZXRBc1N5bWJvbE5vZGUoKSB7IHJldHVybiAw
OyB9CiAgICAgdmlydHVhbCBUSW50ZXJtTG9vcCogZ2V0QXNMb29wTm9kZSgpIHsgcmV0dXJuIDA7
IH0KIAorICAgIC8vIFJlcGxhY2UgYSBjaGlsZCBub2RlLiBSZXR1cm4gdHJ1ZSBpZiB8b3JpZ2lu
YWx8IGlzIGEgY2hpbGQKKyAgICAvLyBub2RlIGFuZCBpdCBpcyByZXBsYWNlZDsgb3RoZXJ3aXNl
LCByZXR1cm4gZmFsc2UuCisgICAgdmlydHVhbCBib29sIHJlcGxhY2VDaGlsZE5vZGUoCisgICAg
ICAgIFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwgVEludGVybU5vZGUgKnJlcGxhY2VtZW50KSA9IDA7
CisKIHByb3RlY3RlZDoKICAgICBUU291cmNlTG9jIGxpbmU7CiB9OwpAQCAtMjQ4LDYgKzI1Miw4
IEBAIHB1YmxpYzoKICAgICBUSW50ZXJtVHlwZWQoY29uc3QgVFR5cGUmIHQpIDogdHlwZSh0KSAg
eyB9CiAgICAgdmlydHVhbCBUSW50ZXJtVHlwZWQqIGdldEFzVHlwZWQoKSB7IHJldHVybiB0aGlz
OyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgaGFzU2lkZUVmZmVjdHMoKSBjb25zdCA9IDA7CisKICAg
ICB2b2lkIHNldFR5cGUoY29uc3QgVFR5cGUmIHQpIHsgdHlwZSA9IHQ7IH0KICAgICBjb25zdCBU
VHlwZSYgZ2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGU7IH0KICAgICBUVHlwZSogZ2V0VHlw
ZVBvaW50ZXIoKSB7IHJldHVybiAmdHlwZTsgfQpAQCAtMjk2LDYgKzMwMiw4IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgVEludGVybUxvb3AqIGdldEFzTG9vcE5vZGUoKSB7IHJldHVybiB0aGlz
OyB9CiAgICAgdmlydHVhbCB2b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIqKTsKKyAgICB2
aXJ0dWFsIGJvb2wgcmVwbGFjZUNoaWxkTm9kZSgKKyAgICAgICAgVEludGVybU5vZGUgKm9yaWdp
bmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpOwogCiAgICAgVExvb3BUeXBlIGdldFR5cGUo
KSBjb25zdCB7IHJldHVybiB0eXBlOyB9CiAgICAgVEludGVybU5vZGUqIGdldEluaXQoKSB7IHJl
dHVybiBpbml0OyB9CkBAIC0zMjYsNiArMzM0LDggQEAgcHVibGljOgogICAgICAgICAgICAgZXhw
cmVzc2lvbihlKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZShUSW50ZXJtVHJhdmVy
c2VyKik7CisgICAgdmlydHVhbCBib29sIHJlcGxhY2VDaGlsZE5vZGUoCisgICAgICAgIFRJbnRl
cm1Ob2RlICpvcmlnaW5hbCwgVEludGVybU5vZGUgKnJlcGxhY2VtZW50KTsKIAogICAgIFRPcGVy
YXRvciBnZXRGbG93T3AoKSB7IHJldHVybiBmbG93T3A7IH0KICAgICBUSW50ZXJtVHlwZWQqIGdl
dEV4cHJlc3Npb24oKSB7IHJldHVybiBleHByZXNzaW9uOyB9CkBAIC0zNDYsNiArMzU2LDggQEAg
cHVibGljOgogICAgIFRJbnRlcm1TeW1ib2woaW50IGksIGNvbnN0IFRTdHJpbmcmIHN5bSwgY29u
c3QgVFR5cGUmIHQpIDogCiAgICAgICAgICAgICBUSW50ZXJtVHlwZWQodCksIGlkKGkpICB7IHN5
bWJvbCA9IHN5bTsgb3JpZ2luYWxTeW1ib2wgPSBzeW07IH0gCiAKKyAgICB2aXJ0dWFsIGJvb2wg
aGFzU2lkZUVmZmVjdHMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgaW50IGdldElk
KCkgY29uc3QgeyByZXR1cm4gaWQ7IH0KICAgICBjb25zdCBUU3RyaW5nJiBnZXRTeW1ib2woKSBj
b25zdCB7IHJldHVybiBzeW1ib2w7IH0KIApAQCAtMzU2LDYgKzM2OCw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyKik7CiAgICAgdmlydHVh
bCBUSW50ZXJtU3ltYm9sKiBnZXRBc1N5bWJvbE5vZGUoKSB7IHJldHVybiB0aGlzOyB9CisgICAg
dmlydHVhbCBib29sIHJlcGxhY2VDaGlsZE5vZGUoVEludGVybU5vZGUgKiwgVEludGVybU5vZGUg
KikgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJvdGVjdGVkOgogICAgIGludCBpZDsKQEAgLTM2Nywx
NCArMzgwLDE3IEBAIGNsYXNzIFRJbnRlcm1Db25zdGFudFVuaW9uIDogcHVibGljIFRJbnQKIHB1
YmxpYzoKICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbihDb25zdGFudFVuaW9uICp1bmlvblBvaW50
ZXIsIGNvbnN0IFRUeXBlJiB0KSA6IFRJbnRlcm1UeXBlZCh0KSwgdW5pb25BcnJheVBvaW50ZXIo
dW5pb25Qb2ludGVyKSB7IH0KIAorICAgIHZpcnR1YWwgYm9vbCBoYXNTaWRlRWZmZWN0cygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICBDb25zdGFudFVuaW9uKiBnZXRVbmlvbkFycmF5
UG9pbnRlcigpIGNvbnN0IHsgcmV0dXJuIHVuaW9uQXJyYXlQb2ludGVyOyB9CiAgICAgCi0gICAg
aW50IGdldElDb25zdChzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHVuaW9uQXJyYXlQb2lu
dGVyID8gdW5pb25BcnJheVBvaW50ZXJbaW5kZXhdLmdldElDb25zdCgpIDogMDsgfQotICAgIGZs
b2F0IGdldEZDb25zdChzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHVuaW9uQXJyYXlQb2lu
dGVyID8gdW5pb25BcnJheVBvaW50ZXJbaW5kZXhdLmdldEZDb25zdCgpIDogMC4wZjsgfQotICAg
IGJvb2wgZ2V0QkNvbnN0KHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gdW5pb25BcnJheVBv
aW50ZXIgPyB1bmlvbkFycmF5UG9pbnRlcltpbmRleF0uZ2V0QkNvbnN0KCkgOiBmYWxzZTsgfQor
ICAgIGludCBnZXRJQ29uc3QoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiB1bmlvbkFycmF5UG9p
bnRlciA/IHVuaW9uQXJyYXlQb2ludGVyW2luZGV4XS5nZXRJQ29uc3QoKSA6IDA7IH0KKyAgICBm
bG9hdCBnZXRGQ29uc3QoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiB1bmlvbkFycmF5UG9pbnRl
ciA/IHVuaW9uQXJyYXlQb2ludGVyW2luZGV4XS5nZXRGQ29uc3QoKSA6IDAuMGY7IH0KKyAgICBi
b29sIGdldEJDb25zdChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHVuaW9uQXJyYXlQb2ludGVy
ID8gdW5pb25BcnJheVBvaW50ZXJbaW5kZXhdLmdldEJDb25zdCgpIDogZmFsc2U7IH0KIAogICAg
IHZpcnR1YWwgVEludGVybUNvbnN0YW50VW5pb24qIGdldEFzQ29uc3RhbnRVbmlvbigpICB7IHJl
dHVybiB0aGlzOyB9CiAgICAgdmlydHVhbCB2b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIq
KTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVwbGFjZUNoaWxkTm9kZShUSW50ZXJtTm9kZSAqLCBUSW50
ZXJtTm9kZSAqKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgVEludGVybVR5cGVkKiBmb2xkKFRP
cGVyYXRvciwgVEludGVybVR5cGVkKiwgVEluZm9TaW5rJik7CiAKQEAgLTM5MCw5ICs0MDYsMTEg
QEAgcHVibGljOgogICAgIFRPcGVyYXRvciBnZXRPcCgpIGNvbnN0IHsgcmV0dXJuIG9wOyB9CiAg
ICAgdm9pZCBzZXRPcChUT3BlcmF0b3IgbykgeyBvcCA9IG87IH0KIAotICAgIGJvb2wgbW9kaWZp
ZXNTdGF0ZSgpIGNvbnN0OworICAgIGJvb2wgaXNBc3NpZ25tZW50KCkgY29uc3Q7CiAgICAgYm9v
bCBpc0NvbnN0cnVjdG9yKCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaGFzU2lkZUVmZmVj
dHMoKSBjb25zdCB7IHJldHVybiBpc0Fzc2lnbm1lbnQoKTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAg
VEludGVybU9wZXJhdG9yKFRPcGVyYXRvciBvKSA6IFRJbnRlcm1UeXBlZChUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkKSksIG9wKG8pIHt9CiAgICAgVEludGVybU9wZXJhdG9yKFRPcGVyYXRv
ciBvLCBUVHlwZSYgdCkgOiBUSW50ZXJtVHlwZWQodCksIG9wKG8pIHt9ICAgCkBAIC00MDgsNiAr
NDI2LDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVEludGVybUJpbmFyeSogZ2V0QXNCaW5h
cnlOb2RlKCkgeyByZXR1cm4gdGhpczsgfQogICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZShUSW50
ZXJtVHJhdmVyc2VyKik7CisgICAgdmlydHVhbCBib29sIHJlcGxhY2VDaGlsZE5vZGUoCisgICAg
ICAgIFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwgVEludGVybU5vZGUgKnJlcGxhY2VtZW50KTsKKwor
ICAgIHZpcnR1YWwgYm9vbCBoYXNTaWRlRWZmZWN0cygpIGNvbnN0IHsgcmV0dXJuIChpc0Fzc2ln
bm1lbnQoKSB8fCBsZWZ0LT5oYXNTaWRlRWZmZWN0cygpIHx8IHJpZ2h0LT5oYXNTaWRlRWZmZWN0
cygpKTsgfQogCiAgICAgdm9pZCBzZXRMZWZ0KFRJbnRlcm1UeXBlZCogbikgeyBsZWZ0ID0gbjsg
fQogICAgIHZvaWQgc2V0UmlnaHQoVEludGVybVR5cGVkKiBuKSB7IHJpZ2h0ID0gbjsgfQpAQCAt
NDM2LDYgKzQ1OCwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgdHJhdmVyc2UoVElu
dGVybVRyYXZlcnNlciopOwogICAgIHZpcnR1YWwgVEludGVybVVuYXJ5KiBnZXRBc1VuYXJ5Tm9k
ZSgpIHsgcmV0dXJuIHRoaXM7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVwbGFjZUNoaWxkTm9kZSgK
KyAgICAgICAgVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQp
OworCisgICAgdmlydHVhbCBib29sIGhhc1NpZGVFZmZlY3RzKCkgY29uc3QgeyByZXR1cm4gKGlz
QXNzaWdubWVudCgpIHx8IG9wZXJhbmQtPmhhc1NpZGVFZmZlY3RzKCkpOyB9CiAKICAgICB2b2lk
IHNldE9wZXJhbmQoVEludGVybVR5cGVkKiBvKSB7IG9wZXJhbmQgPSBvOyB9CiAgICAgVEludGVy
bVR5cGVkKiBnZXRPcGVyYW5kKCkgeyByZXR1cm4gb3BlcmFuZDsgfSAgICAKQEAgLTQ2Niw2ICs0
OTIsMTEgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBUSW50ZXJtQWdncmVnYXRlKiBnZXRBc0Fn
Z3JlZ2F0ZSgpIHsgcmV0dXJuIHRoaXM7IH0KICAgICB2aXJ0dWFsIHZvaWQgdHJhdmVyc2UoVElu
dGVybVRyYXZlcnNlciopOworICAgIHZpcnR1YWwgYm9vbCByZXBsYWNlQ2hpbGROb2RlKAorICAg
ICAgICBUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCk7CisK
KyAgICAvLyBDb25zZXJ2YXRpdmVseSBhc3N1bWUgZnVuY3Rpb24gY2FsbHMgYW5kIG90aGVyIGFn
Z3JlZ2F0ZSBvcGVyYXRvcnMgaGF2ZSBzaWRlLWVmZmVjdHMKKyAgICB2aXJ0dWFsIGJvb2wgaGFz
U2lkZUVmZmVjdHMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBUSW50ZXJtU2VxdWVu
Y2UmIGdldFNlcXVlbmNlKCkgeyByZXR1cm4gc2VxdWVuY2U7IH0KIApAQCAtNTA5LDYgKzU0MCwx
MSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBUSW50ZXJtVHlwZWQodHlwZSksIGNvbmRpdGlvbihj
b25kKSwgdHJ1ZUJsb2NrKHRydWVCKSwgZmFsc2VCbG9jayhmYWxzZUIpIHt9CiAKICAgICB2aXJ0
dWFsIHZvaWQgdHJhdmVyc2UoVEludGVybVRyYXZlcnNlciopOworICAgIHZpcnR1YWwgYm9vbCBy
ZXBsYWNlQ2hpbGROb2RlKAorICAgICAgICBUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1O
b2RlICpyZXBsYWNlbWVudCk7CisKKyAgICAvLyBDb25zZXJ2YXRpdmVseSBhc3N1bWUgc2VsZWN0
aW9ucyBoYXZlIHNpZGUtZWZmZWN0cworICAgIHZpcnR1YWwgYm9vbCBoYXNTaWRlRWZmZWN0cygp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIGJvb2wgdXNlc1Rlcm5hcnlPcGVyYXRvcigp
IGNvbnN0IHsgcmV0dXJuIGdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQ7IH0KICAgICBUSW50ZXJt
Tm9kZSogZ2V0Q29uZGl0aW9uKCkgY29uc3QgeyByZXR1cm4gY29uZGl0aW9uOyB9CkBAIC01NDAs
OCArNTc2LDcgQEAgZW51bSBWaXNpdAogY2xhc3MgVEludGVybVRyYXZlcnNlcgogewogcHVibGlj
OgotICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xvYmFsUG9vbEFsbG9jYXRvcikKLQor
ICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoKTsKICAgICBUSW50ZXJtVHJhdmVyc2VyKGJv
b2wgcHJlVmlzaXQgPSB0cnVlLCBib29sIGluVmlzaXQgPSBmYWxzZSwgYm9vbCBwb3N0VmlzaXQg
PSBmYWxzZSwgYm9vbCByaWdodFRvTGVmdCA9IGZhbHNlKSA6IAogICAgICAgICAgICAgcHJlVmlz
aXQocHJlVmlzaXQpLAogICAgICAgICAgICAgaW5WaXNpdChpblZpc2l0KSwKQEAgLTU0OSw3ICs1
ODQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByaWdodFRvTGVmdChyaWdodFRvTGVmdCksCiAg
ICAgICAgICAgICBkZXB0aCgwKSwKICAgICAgICAgICAgIG1heERlcHRoKDApIHt9Ci0gICAgdmly
dHVhbCB+VEludGVybVRyYXZlcnNlcigpIHt9OworICAgIHZpcnR1YWwgflRJbnRlcm1UcmF2ZXJz
ZXIoKSB7fQogCiAgICAgdmlydHVhbCB2b2lkIHZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wqKSB7
fQogICAgIHZpcnR1YWwgdm9pZCB2aXNpdENvbnN0YW50VW5pb24oVEludGVybUNvbnN0YW50VW5p
b24qKSB7fQpAQCAtNTYxLDggKzU5NiwyNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHZp
c2l0QnJhbmNoKFZpc2l0IHZpc2l0LCBUSW50ZXJtQnJhbmNoKikge3JldHVybiB0cnVlO30KIAog
ICAgIGludCBnZXRNYXhEZXB0aCgpIGNvbnN0IHtyZXR1cm4gbWF4RGVwdGg7fQotICAgIHZvaWQg
aW5jcmVtZW50RGVwdGgoKSB7ZGVwdGgrKzsgbWF4RGVwdGggPSBzdGQ6Om1heChtYXhEZXB0aCwg
ZGVwdGgpOyB9Ci0gICAgdm9pZCBkZWNyZW1lbnREZXB0aCgpIHtkZXB0aC0tO30KKworICAgIHZv
aWQgaW5jcmVtZW50RGVwdGgoVEludGVybU5vZGUgKmN1cnJlbnQpCisgICAgeworICAgICAgICBk
ZXB0aCsrOworICAgICAgICBtYXhEZXB0aCA9IHN0ZDo6bWF4KG1heERlcHRoLCBkZXB0aCk7Cisg
ICAgICAgIHBhdGgucHVzaF9iYWNrKGN1cnJlbnQpOworICAgIH0KKworICAgIHZvaWQgZGVjcmVt
ZW50RGVwdGgoKQorICAgIHsKKyAgICAgICAgZGVwdGgtLTsKKyAgICAgICAgcGF0aC5wb3BfYmFj
aygpOworICAgIH0KKworICAgIFRJbnRlcm1Ob2RlICpnZXRQYXJlbnROb2RlKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBwYXRoLnNpemUoKSA9PSAwID8gTlVMTCA6IHBhdGguYmFjaygpOworICAg
IH0KIAogICAgIC8vIFJldHVybiB0aGUgb3JpZ2luYWwgbmFtZSBpZiBoYXNoIGZ1bmN0aW9uIHBv
aW50ZXIgaXMgTlVMTDsKICAgICAvLyBvdGhlcndpc2UgcmV0dXJuIHRoZSBoYXNoZWQgbmFtZS4K
QEAgLTU3Niw2ICs2MjcsOSBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgaW50IGRlcHRoOwog
ICAgIGludCBtYXhEZXB0aDsKKworICAgIC8vIEFsbCB0aGUgbm9kZXMgZnJvbSByb290IHRvIHRo
ZSBjdXJyZW50IG5vZGUncyBwYXJlbnQgZHVyaW5nIHRyYXZlcnNpbmcuCisgICAgVFZlY3RvcjxU
SW50ZXJtTm9kZSAqPiBwYXRoOwogfTsKIAogI2VuZGlmIC8vIF9fSU5URVJNRURJQVRFX0gKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9sb2NhbGludGVybWVkaWF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9s
b2NhbGludGVybWVkaWF0ZS5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvbG9jYWxpbnRlcm1lZGlhdGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjIsOSArMjIsOSBAQCBzdHJ1Y3QgVFZlY3RvckZpZWxkcyB7CiBjbGFzcyBUSW5mb1Npbms7
CiBjbGFzcyBUSW50ZXJtZWRpYXRlIHsKIHB1YmxpYzogICAgCi0gICAgUE9PTF9BTExPQ0FUT1Jf
TkVXX0RFTEVURShHbG9iYWxQb29sQWxsb2NhdG9yKQotCisgICAgUE9PTF9BTExPQ0FUT1JfTkVX
X0RFTEVURSgpOwogICAgIFRJbnRlcm1lZGlhdGUoVEluZm9TaW5rJiBpKSA6IGluZm9TaW5rKGkp
IHsgfQorCiAgICAgVEludGVybVN5bWJvbCogYWRkU3ltYm9sKGludCBJZCwgY29uc3QgVFN0cmlu
ZyYsIGNvbnN0IFRUeXBlJiwgY29uc3QgVFNvdXJjZUxvYyYpOwogICAgIFRJbnRlcm1UeXBlZCog
YWRkQ29udmVyc2lvbihUT3BlcmF0b3IsIGNvbnN0IFRUeXBlJiwgVEludGVybVR5cGVkKik7CiAg
ICAgVEludGVybVR5cGVkKiBhZGRCaW5hcnlNYXRoKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVk
KiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBjb25zdCBUU291cmNlTG9jJiwgVFN5bWJvbFRh
YmxlJik7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcGFyc2VD
b25zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3BhcnNlQ29uc3QuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvcGFyc2VDb25zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQs
NyArNCw3IEBACiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KIAotI2luY2x1ZGUg
ImNvbXBpbGVyL1BhcnNlSGVscGVyLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvUGFyc2VDb250ZXh0
LmgiCiAKIC8vCiAvLyBVc2UgdGhpcyBjbGFzcyB0byBjYXJyeSBhbG9uZyBkYXRhIGZyb20gbm9k
ZSB0byBub2RlIGluIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci52Y3hwcm9qCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IudmN4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDMwNCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGlu
Zz0idXRmLTgiPz4NCis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lv
bj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNi
dWlsZC8yMDAzIj4NCisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+
DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+DQorICAg
ICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3Jt
PldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFBy
b2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+DQorICAgICAgPENvbmZpZ3Vy
YXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZv
cm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJh
dGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxl
YXNlPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+DQor
ICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJ
bmNsdWRlPSJSZWxlYXNlfHg2NCI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29u
ZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9q
ZWN0Q29uZmlndXJhdGlvbj4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgTGFi
ZWw9Ikdsb2JhbHMiPg0KKyAgICA8UHJvamVjdEd1aWQ+ezVCM0E2REI4LTFFN0UtNDBENy05MkI5
LURBOEFBRTYxOUZBRH08L1Byb2plY3RHdWlkPg0KKyAgICA8Um9vdE5hbWVzcGFjZT5jb21waWxl
cjwvUm9vdE5hbWVzcGFjZT4NCisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPg0KKyAg
ICA8UHJvamVjdE5hbWU+dHJhbnNsYXRvcjwvUHJvamVjdE5hbWU+DQorICA8L1Byb3BlcnR5R3Jv
dXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5E
ZWZhdWx0LnByb3BzIiAvPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRp
b24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlv
blR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+DQorICAgIDxX
aG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0K
KyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0
aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRp
b25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Q
cm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4N
CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBl
Pg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0Pg0KKyAgICA8V2hvbGVQ
cm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgIDwv
UHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0K
KyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+
DQorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5
R3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNw
cC5wcm9wcyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPg0K
KyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVl
dHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAu
JChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIp
XE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBE
YXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJl
bD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIp
XE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMo
JyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBM
YWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPElt
cG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9
IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29u
ZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSku
dXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9y
dEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPElt
cG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVz
ZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3Bw
LiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAv
Pg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9z
IiAvPg0KKyAgPFByb3BlcnR5R3JvdXA+DQorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAu
NDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4NCisgICAgPE91dERpciBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChTb2x1dGlvbkRp
cikkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKENvbmZpZ3VyYXRp
b24pXGNvbW1vblw8L0ludERpcj4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9y
bSlcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoUGxhdGZvcm0pXCQo
Q29uZmlndXJhdGlvbilcPC9JbnREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikk
KENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoQ29uZmlndXJhdGlv
bilcY29tbW9uXDwvSW50RGlyPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKFNvbHV0aW9uRGlyKSQoUGxhdGZv
cm0pXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoUGxhdGZvcm0p
XCQoQ29uZmlndXJhdGlvbilcPC9JbnREaXI+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8SXRl
bURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlv
bj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPiQoUHJvamVjdERpcik7JChQcm9qZWN0RGlyKS4uLzskKFByb2plY3REaXIpLi4vLi4v
aW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVC
VUc7X0xJQjtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7Tk9NSU5NQVg7JShQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxNaW5pbWFsUmVi
dWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4NCisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVu
YWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4NCisgICAgICA8UnVudGltZUxpYnJh
cnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGls
ZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xl
dmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRy
dWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+
RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxEaXNhYmxl
U3BlY2lmaWNXYXJuaW5ncz40MTAwOzQxMjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7
NDcxODslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+
DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1E
ZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIj4NCisgICAgPE1pZGw+DQorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2
NDwvVGFyZ2V0RW52aXJvbm1lbnQ+DQorICAgIDwvTWlkbD4NCisgICAgPENsQ29tcGlsZT4NCisg
ICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPEFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKTskKFByb2plY3REaXIpLi4vOyQo
UHJvamVjdERpcikuLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmlu
aXRpb25zPldJTjMyO19ERUJVRztfTElCO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtOT01JTk1B
WDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQor
ICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPg0KKyAgICAgIDxCYXNp
Y1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPg0KKyAg
ICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5Pg0K
KyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0K
KyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPFRyZWF0
V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCisgICAgICA8RGVidWdJ
bmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+
DQorICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0
NDs0MjQ1OzQyNjc7NDUxMjs0NzAyOzQ3MTg7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rp
c2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgIDwvSXRlbURlZmlu
aXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPg0KKyAgICA8Q2xDb21waWxl
Pg0KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8
SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+QW55U3VpdGFibGU8L0lubGluZUZ1bmN0aW9uRXhwYW5z
aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcik7
JChQcm9qZWN0RGlyKS4uLzskKFByb2plY3REaXIpLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAg
IDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0xJQjtfQ1JUX1NFQ1VSRV9O
T19ERVBSRUNBVEU7Tk9NSU5NQVg7X1NFQ1VSRV9TQ0w9MDslKFByZXByb2Nlc3NvckRlZmluaXRp
b25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11
bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4N
CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0
PC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRX
YXJuaW5nQXNFcnJvcj4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0
YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPERpc2FibGVTcGVjaWZpY1dh
cm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0NDs0MjQ1OzQ1MTI7NDcwMjs0NzE4OyUoRGlz
YWJsZVNwZWNpZmljV2FybmluZ3MpPC9EaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz4NCisgICAgPC9D
bENvbXBpbGU+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25H
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
eDY0JyI+DQorICAgIDxNaWRsPg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1Rhcmdl
dEVudmlyb25tZW50Pg0KKyAgICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9w
dGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxJbmxpbmVGdW5jdGlv
bkV4cGFuc2lvbj5BbnlTdWl0YWJsZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+DQorICAgICAg
PEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKTskKFByb2plY3REaXIp
Li4vOyQoUHJvamVjdERpcikuLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfTElCO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtO
T01JTk1BWDtfU0VDVVJFX1NDTD0wOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwv
UnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJl
Y29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZl
bD4NCisgICAgICA8VHJlYXRXYXJuaW5nQXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9y
Pg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJ
bmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0
MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7NDI2Nzs0NTEyOzQ3MDI7NDcxODslKERpc2FibGVTcGVj
aWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+DQorICAgIDwvQ2xDb21waWxl
Pg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSJCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAiIC8+DQorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iQ29kZUdlbi5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Q29tcGlsZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImRlYnVnLmNwcCIgLz4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEZXRlY3RDYWxsRGVwdGguY3BwIiAvPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9IkRldGVjdERpc2NvbnRpbnVpdHkuY3BwIiAvPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9IkRpYWdub3N0aWNzLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSJEaXJlY3RpdmVIYW5kbGVyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJG
b3JMb29wVW5yb2xsLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJJbmZvU2luay5j
cHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW5pdGlhbGl6ZS5jcHAiIC8+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iSW5pdGlhbGl6ZURsbC5jcHAiIC8+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iSW5pdGlhbGl6ZUdMUG9zaXRpb24uY3BwIiAvPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IkluaXRpYWxpemVQYXJzZUNvbnRleHQuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IkludGVybWVkaWF0ZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
aW50ZXJtT3V0LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJJbnRlcm1UcmF2ZXJz
ZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iTWFwTG9uZ1ZhcmlhYmxlTmFtZXMu
Y3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Im9zc291cmNlX3dpbi5jcHAiIC8+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iT3V0cHV0RVNTTC5jcHAiIC8+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iT3V0cHV0R0xTTC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
T3V0cHV0R0xTTEJhc2UuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ik91dHB1dEhM
U0wuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InBhcnNlQ29uc3QuY3BwIiAvPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlBhcnNlQ29udGV4dC5jcHAiIC8+DQorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iUG9vbEFsbG9jLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSJRdWFsaWZpZXJBbGl2ZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUmVtb3Zl
VHJlZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iU2VhcmNoU3ltYm9sLmNwcCIg
Lz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJTaGFkZXJMYW5nLmNwcCIgLz4NCisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSJTeW1ib2xUYWJsZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iVHJhbnNsYXRvckVTU0wuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlRy
YW5zbGF0b3JHTFNMLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJUcmFuc2xhdG9y
SExTTC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVW5mb2xkU2hvcnRDaXJjdWl0
LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJVbmZvbGRTaG9ydENpcmN1aXRBU1Qu
Y3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlVuaWZvcm0uY3BwIiAvPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9InV0aWwuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
IlZhbGlkYXRlTGltaXRhdGlvbnMuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlZh
cmlhYmxlSW5mby5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVmFyaWFibGVQYWNr
ZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Imdsc2xhbmdfbGV4LmNwcCIgLz4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJnbHNsYW5nX3RhYi5jcHAiIC8+DQorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iZGVwZ3JhcGhcRGVwZW5kZW5jeUdyYXBoLmNwcCIgLz4NCisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSJkZXBncmFwaFxEZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcCIgLz4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJkZXBncmFwaFxEZXBlbmRlbmN5R3JhcGhPdXRwdXQu
Y3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImRlcGdyYXBoXERlcGVuZGVuY3lHcmFw
aFRyYXZlcnNlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJ0aW1pbmdcUmVzdHJp
Y3RGcmFnbWVudFNoYWRlclRpbWluZy5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
dGltaW5nXFJlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmNwcCIgLz4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlx0aGlyZF9wYXJ0eVxjb21waWxlclxBcnJheUJvdW5kc0NsYW1wZXIuY3Bw
IiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlZlcnNpb25HTFNMLmNwcCIgLz4NCisgIDwv
SXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPEN1c3RvbUJ1aWxkIEluY2x1ZGU9Imds
c2xhbmcubCI+DQorICAgICAgPE1lc3NhZ2UgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPg0KKyAgICAgIDwvTWVzc2FnZT4NCisgICAgICA8
Q29tbWFuZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fFdpbjMyJyI+DQorICAgICAgPC9Db21tYW5kPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5wdXRzIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4l
KEFkZGl0aW9uYWxJbnB1dHMpPC9BZGRpdGlvbmFsSW5wdXRzPg0KKyAgICAgIDxPdXRwdXRzIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4l
KE91dHB1dHMpPC9PdXRwdXRzPg0KKyAgICAgIDxNZXNzYWdlIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+DQorICAgICAgPC9NZXNzYWdlPg0K
KyAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8eDY0JyI+DQorICAgICAgPC9Db21tYW5kPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5w
dXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0
JyI+JShBZGRpdGlvbmFsSW5wdXRzKTwvQWRkaXRpb25hbElucHV0cz4NCisgICAgICA8T3V0cHV0
cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCci
PiUoT3V0cHV0cyk8L091dHB1dHM+DQorICAgICAgPE1lc3NhZ2UgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgICAgPC9NZXNz
YWdlPg0KKyAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPg0KKyAgICAgIDwvQ29tbWFuZD4NCisgICAgICA8QWRk
aXRpb25hbElucHV0cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIj4lKEFkZGl0aW9uYWxJbnB1dHMpPC9BZGRpdGlvbmFsSW5wdXRzPg0K
KyAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciPiUoT3V0cHV0cyk8L091dHB1dHM+DQorICAgICAgPE1lc3NhZ2Ug
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCci
Pg0KKyAgICAgIDwvTWVzc2FnZT4NCisgICAgICA8Q29tbWFuZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+DQorICAgICAgPC9Db21tYW5k
Pg0KKyAgICAgIDxBZGRpdGlvbmFsSW5wdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4lKEFkZGl0aW9uYWxJbnB1dHMpPC9BZGRpdGlv
bmFsSW5wdXRzPg0KKyAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4lKE91dHB1dHMpPC9PdXRwdXRzPg0KKyAgICA8
L0N1c3RvbUJ1aWxkPg0KKyAgICA8Q3VzdG9tQnVpbGQgSW5jbHVkZT0iZ2xzbGFuZy55Ij4NCisg
ICAgICA8TWVzc2FnZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyI+DQorICAgICAgPC9NZXNzYWdlPg0KKyAgICAgIDxDb21tYW5kIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4NCisg
ICAgICA8L0NvbW1hbmQ+DQorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiUoT3V0cHV0cyk8L091dHB1dHM+DQor
ICAgICAgPE1lc3NhZ2UgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIj4NCisgICAgICA8L01lc3NhZ2U+DQorICAgICAgPENvbW1hbmQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4NCisgICAg
ICA8L0NvbW1hbmQ+DQorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4lKE91dHB1dHMpPC9PdXRwdXRzPg0KKyAgICAg
IDxNZXNzYWdlIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXxXaW4zMiciPg0KKyAgICAgIDwvTWVzc2FnZT4NCisgICAgICA8Q29tbWFuZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4NCisg
ICAgICA8L0NvbW1hbmQ+DQorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JShPdXRwdXRzKTwvT3V0cHV0cz4N
CisgICAgICA8TWVzc2FnZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8eDY0JyI+DQorICAgICAgPC9NZXNzYWdlPg0KKyAgICAgIDxDb21tYW5kIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4N
CisgICAgICA8L0NvbW1hbmQ+DQorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiUoT3V0cHV0cyk8L091dHB1dHM+
DQorICAgIDwvQ3VzdG9tQnVpbGQ+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQmFzZVR5cGVzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJDb21tb24uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJDb25zdGFudFVu
aW9uLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iZGVidWcuaCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJEZXRlY3RDYWxsRGVwdGguaCIgLz4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJEZXRlY3REaXNjb250aW51aXR5LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iRGlhZ25vc3RpY3MuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJEaXJlY3RpdmVI
YW5kbGVyLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRm9yTG9vcFVucm9sbC5oIiAv
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ikhhc2hOYW1lcy5oIiAvPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IkluZm9TaW5rLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iSW5p
dGlhbGl6ZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkluaXRpYWxpemVEbGwuaCIg
Lz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJJbml0aWFsaXplR2xvYmFscy5oIiAvPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkluaXRpYWxpemVHTFBvc2l0aW9uLmgiIC8+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9ImludGVybWVkaWF0ZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9ImxvY2FsaW50ZXJtZWRpYXRlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iTWFw
TG9uZ1ZhcmlhYmxlTmFtZXMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJNTWFwLmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iTm9kZVNlYXJjaC5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Im9zaW5jbHVkZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ik91dHB1dEVTU0wuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJPdXRwdXRHTFNMLmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iT3V0cHV0R0xTTEJhc2UuaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJPdXRwdXRITFNMLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iUGFyc2VDb250ZXh0LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUG9vbEFs
bG9jLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUXVhbGlmaWVyQWxpdmUuaCIgLz4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJSZW1vdmVUcmVlLmgiIC8+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iUmVuYW1lRnVuY3Rpb24uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlwuLlxpbmNsdWRlXEdMU0xBTkdcU2hhZGVyTGFuZy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9IlNlYXJjaFN5bWJvbC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlNo
SGFuZGxlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iU3ltYm9sVGFibGUuaCIgLz4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJUcmFuc2xhdG9yRVNTTC5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9IlRyYW5zbGF0b3JHTFNMLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iVHJhbnNsYXRvckhMU0wuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJUeXBl
cy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlVuZm9sZFNob3J0Q2lyY3VpdC5oIiAv
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlVuZm9sZFNob3J0Q2lyY3VpdEFTVC5oIiAvPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlVuaWZvcm0uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJ1dGlsLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVmFsaWRhdGVMaW1p
dGF0aW9ucy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlZhcmlhYmxlSW5mby5oIiAv
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlZhcmlhYmxlUGFja2VyLmgiIC8+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iZ2xzbGFuZ190YWIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJ0aW1pbmdcUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZy5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9InRpbWluZ1xSZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5oIiAvPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9ImRlcGdyYXBoXERlcGVuZGVuY3lHcmFwaC5oIiAvPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9ImRlcGdyYXBoXERlcGVuZGVuY3lHcmFwaEJ1aWxkZXIu
aCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJkZXBncmFwaFxEZXBlbmRlbmN5R3JhcGhP
dXRwdXQuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx0aGlyZF9wYXJ0eVxjb21w
aWxlclxBcnJheUJvdW5kc0NsYW1wZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJW
ZXJzaW9uR0xTTC5oIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQo
VkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPg0KKyAgPEltcG9ydEdyb3Vw
IExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4NCisgIDwvSW1wb3J0R3JvdXA+DQorPC9Qcm9qZWN0
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci52Y3hwcm9q
LmZpbHRlcnMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwzNjEgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+DQorPFBy
b2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQu
Y29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPEZpbHRl
ciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPg0KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3
MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAg
ICAgIDxFeHRlbnNpb25zPmNwcDtjO2NjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214
PC9FeHRlbnNpb25zPg0KKyAgICA8L0ZpbHRlcj4NCisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3Vy
Y2UgRmlsZXNcZ2VuZXJhdGVkIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZWI4ZGExNTct
YjI5Yy00M2MzLTg4MGQtNTQ2NzllMTc2ZGM1fTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgPC9G
aWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzXGRlcGdyYXBoIj4NCisg
ICAgICA8VW5pcXVlSWRlbnRpZmllcj57YjU0MTBkM2EtYzNjOC00YWU2LTg0M2EtYjAwMGQ2NTI2
MzJlfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5j
bHVkZT0iU291cmNlIEZpbGVzXHRpbWluZyI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2E5
ODQ3NjExLWRjZDUtNGM4OS04MjYyLWEyMmI5NmM3Yzk4ZH08L1VuaXF1ZUlkZW50aWZpZXI+DQor
ICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+DQorICAg
ICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJG
Qn08L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lu
bDtpbmM7eHNkPC9FeHRlbnNpb25zPg0KKyAgICA8L0ZpbHRlcj4NCisgICAgPEZpbHRlciBJbmNs
dWRlPSJIZWFkZXIgRmlsZXNcZ2VuZXJhdGVkIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57
MDk0ZjcxMTUtMzVkMy00YzYzLTg3MGMtYWI1ZjM5M2RjMmMyfTwvVW5pcXVlSWRlbnRpZmllcj4N
CisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzXHRpbWlu
ZyI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezVmNTc0MmU5LTE1ZTEtNDNiNC1iMWU3LTBj
MTE4YmUxNGUwNH08L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8Rmls
dGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlc1xkZXBncmFwaCI+DQorICAgICAgPFVuaXF1ZUlkZW50
aWZpZXI+e2M0MDA3ZTM1LTNjMTEtNDRkNi05NWY3LWJiODFkYjUyODA2OH08L1VuaXF1ZUlkZW50
aWZpZXI+DQorICAgIDwvRmlsdGVyPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCI+DQor
ICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iQ29tcGlsZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNv
dXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJkZWJ1Zy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+
DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkRldGVjdENhbGxE
ZXB0aC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwv
Q2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkRpYWdub3N0aWNzLmNwcCI+DQor
ICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRGlyZWN0aXZlSGFuZGxlci5jcHAiPg0KKyAgICAgIDxG
aWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9IkZvckxvb3BVbnJvbGwuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJj
ZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSJJbmZvU2luay5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+
DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkluaXRpYWxpemUu
Y3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29t
cGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJJbml0aWFsaXplRGxsLmNwcCI+DQorICAg
ICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5jcHAiPg0KKyAgICAg
IDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9IkludGVybWVkaWF0ZS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291
cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9ImludGVybU91dC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkludGVybVRy
YXZlcnNlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAg
PC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iTWFwTG9uZ1ZhcmlhYmxlTmFt
ZXMuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0Ns
Q29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJvc3NvdXJjZV93aW4uY3BwIj4NCisg
ICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJwYXJzZUNvbnN0LmNwcCI+DQorICAgICAgPEZpbHRlcj5T
b3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iUG9vbEFsbG9jLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0Zp
bHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUXVhbGlm
aWVyQWxpdmUuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAg
ICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJSZW1vdmVUcmVlLmNwcCI+
DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iU2hhZGVyTGFuZy5jcHAiPg0KKyAgICAgIDxGaWx0
ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9IlN5bWJvbFRhYmxlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmls
ZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
dXRpbC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwv
Q2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlZhbGlkYXRlTGltaXRhdGlvbnMu
Y3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29t
cGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJWYXJpYWJsZUluZm8uY3BwIj4NCisgICAg
ICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJWYXJpYWJsZVBhY2tlci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+
U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Imdsc2xhbmdfbGV4LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNc
Z2VuZXJhdGVkPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Imdsc2xhbmdfdGFiLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcZ2Vu
ZXJhdGVkPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9ImRlcGdyYXBoXERlcGVuZGVuY3lHcmFwaC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNl
IEZpbGVzXGRlcGdyYXBoPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9ImRlcGdyYXBoXERlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuY3BwIj4NCisgICAg
ICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xkZXBncmFwaDwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGls
ZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJkZXBncmFwaFxEZXBlbmRlbmN5R3JhcGhPdXRw
dXQuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xkZXBncmFwaDwvRmlsdGVyPg0K
KyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJkZXBncmFwaFxEZXBl
bmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXGRl
cGdyYXBoPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9InRpbWluZ1xSZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nLmNwcCI+DQorICAgICAgPEZp
bHRlcj5Tb3VyY2UgRmlsZXNcdGltaW5nPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9InRpbWluZ1xSZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5j
cHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXHRpbWluZzwvRmlsdGVyPg0KKyAgICA8
L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx0aGlyZF9wYXJ0eVxjb21w
aWxlclxBcnJheUJvdW5kc0NsYW1wZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxl
czwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJJ
bml0aWFsaXplR0xQb3NpdGlvbi5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9G
aWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkRldGVj
dERpc2NvbnRpbnVpdHkuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVy
Pg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJPdXRwdXRITFNM
LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENv
bXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iU2VhcmNoU3ltYm9sLmNwcCI+DQorICAg
ICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iVHJhbnNsYXRvckhMU0wuY3BwIj4NCisgICAgICA8RmlsdGVy
PlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJVbmZvbGRTaG9ydENpcmN1aXQuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJj
ZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSJVbmlmb3JtLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4N
CisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iQ29kZUdlbi5jcHAi
Pg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxl
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlRyYW5zbGF0b3JHTFNMLmNwcCI+DQorICAgICAg
PEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iVHJhbnNsYXRvckVTU0wuY3BwIj4NCisgICAgICA8RmlsdGVyPlNv
dXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJPdXRwdXRFU1NMLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0Zp
bHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iT3V0cHV0
R0xTTC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwv
Q2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ik91dHB1dEdMU0xCYXNlLmNwcCI+
DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVmVyc2lvbkdMU0wuY3BwIj4NCisgICAgICA8Rmls
dGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSJVbmZvbGRTaG9ydENpcmN1aXRBU1QuY3BwIj4NCisgICAgICA8RmlsdGVy
PlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJQYXJzZUNvbnRleHQuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxl
czwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1H
cm91cD4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJCYXNlVHlwZXMuaCI+DQorICAgICAgPEZp
bHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCI+DQorICAgICAgPEZpbHRl
cj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iQ29tbW9uLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkNvbnN0YW50
VW5pb24uaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9D
bEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iZGVidWcuaCI+DQorICAgICAgPEZp
bHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iRGV0ZWN0Q2FsbERlcHRoLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVy
IEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IkRpYWdub3N0aWNzLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+
DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkRpcmVjdGl2ZUhh
bmRsZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9D
bEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRm9yTG9vcFVucm9sbC5oIj4NCisg
ICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJJbmZvU2luay5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRl
ciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJJbml0aWFsaXplLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+
DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkluaXRpYWxpemVE
bGwuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbElu
Y2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iSW5pdGlhbGl6ZUdsb2JhbHMuaCI+DQor
ICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5oIj4NCisgICAg
ICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJpbnRlcm1lZGlhdGUuaCI+DQorICAgICAgPEZpbHRlcj5IZWFk
ZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0ibG9jYWxpbnRlcm1lZGlhdGUuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8
L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iTWFw
TG9uZ1ZhcmlhYmxlTmFtZXMuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRl
cj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iTU1hcC5oIj4N
CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJvc2luY2x1ZGUuaCI+DQorICAgICAgPEZpbHRlcj5I
ZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iUG9vbEFsbG9jLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlF1YWxpZmll
ckFsaXZlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwv
Q2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlJlbW92ZVRyZWUuaCI+DQorICAg
ICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iUmVuYW1lRnVuY3Rpb24uaCI+DQorICAgICAgPEZpbHRlcj5I
ZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cLi5caW5jbHVkZVxHTFNMQU5HXFNoYWRlckxhbmcuaCI+DQorICAgICAgPEZp
bHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iU2hIYW5kbGUuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8
L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iU3lt
Ym9sVGFibGUuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAg
PC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVHlwZXMuaCI+DQorICAgICAg
PEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0idXRpbC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwv
RmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJWYWxp
ZGF0ZUxpbWl0YXRpb25zLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+
DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlZhcmlhYmxlSW5m
by5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5j
bHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJWYXJpYWJsZVBhY2tlci5oIj4NCisgICAg
ICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJnbHNsYW5nX3RhYi5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRl
ciBGaWxlc1xnZW5lcmF0ZWQ8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0idGltaW5nXFJlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmcuaCI+DQor
ICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcdGltaW5nPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNs
dWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InRpbWluZ1xSZXN0cmljdFZlcnRleFNoYWRl
clRpbWluZy5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1x0aW1pbmc8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iZGVwZ3JhcGhcRGVw
ZW5kZW5jeUdyYXBoLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXGRlcGdyYXBoPC9G
aWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9ImRlcGdy
YXBoXERlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmls
ZXNcZGVwZ3JhcGg8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iZGVwZ3JhcGhcRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmgiPg0KKyAgICAgIDxGaWx0
ZXI+SGVhZGVyIEZpbGVzXGRlcGdyYXBoPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ikhhc2hOYW1lcy5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRl
ciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJJbml0aWFsaXplR0xQb3NpdGlvbi5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
czwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
Llx0aGlyZF9wYXJ0eVxjb21waWxlclxBcnJheUJvdW5kc0NsYW1wZXIuaCI+DQorICAgICAgPEZp
bHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iRGV0ZWN0RGlzY29udGludWl0eS5oIj4NCisgICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJPdXRwdXRITFNMLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlNlYXJjaFN5
bWJvbC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0Ns
SW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJUcmFuc2xhdG9ySExTTC5oIj4NCisg
ICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJVbmZvbGRTaG9ydENpcmN1aXQuaCI+DQorICAgICAgPEZp
bHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iVW5pZm9ybS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwv
RmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJUcmFu
c2xhdG9yR0xTTC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAg
ICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJUcmFuc2xhdG9yRVNTTC5o
Ij4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVk
ZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJPdXRwdXRFU1NMLmgiPg0KKyAgICAgIDxGaWx0
ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ik91dHB1dEdMU0wuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8
L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iT3V0
cHV0R0xTTEJhc2UuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisg
ICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVmVyc2lvbkdMU0wuaCI+
DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVW5mb2xkU2hvcnRDaXJjdWl0QVNULmgiPg0KKyAg
ICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlBhcnNlQ29udGV4dC5oIj4NCisgICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJOb2RlU2VhcmNoLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0K
KyAgICA8Q3VzdG9tQnVpbGQgSW5jbHVkZT0iZ2xzbGFuZy5sIj4NCisgICAgICA8RmlsdGVyPlNv
dXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0N1c3RvbUJ1aWxkPg0KKyAgICA8Q3VzdG9tQnVp
bGQgSW5jbHVkZT0iZ2xzbGFuZy55Ij4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmls
dGVyPg0KKyAgICA8L0N1c3RvbUJ1aWxkPg0KKyAgPC9JdGVtR3JvdXA+DQorPC9Qcm9qZWN0Pgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci91dGlsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdXRpbC5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci91dGlsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NCwzMCArNCwyNSBAQAogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCiAKLSNpbmNs
dWRlIDxtYXRoLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSAiY29tcGlsZXIvdXRp
bC5oIgogCi0jaW5jbHVkZSAidXRpbC5oIgorI2luY2x1ZGUgPGxpbWl0cz4KIAotI2lmZGVmIF9N
U0NfVkVSCi0gICAgI2luY2x1ZGUgPGxvY2FsZS5oPgotI2Vsc2UKLSAgICAjaW5jbHVkZSA8c3N0
cmVhbT4KLSNlbmRpZgorI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9udW1lcmljX2xl
eC5oIgogCi1kb3VibGUgYXRvZl9kb3QoY29uc3QgY2hhciAqc3RyKQorYm9vbCBhdG9mX2NsYW1w
KGNvbnN0IGNoYXIgKnN0ciwgZmxvYXQgKnZhbHVlKQogewotI2lmZGVmIF9NU0NfVkVSCi0gICAg
X2xvY2FsZV90IGwgPSBfY3JlYXRlX2xvY2FsZShMQ19OVU1FUklDLCAiQyIpOwotICAgIGRvdWJs
ZSByZXN1bHQgPSBfYXRvZl9sKHN0ciwgbCk7Ci0gICAgX2ZyZWVfbG9jYWxlKGwpOwotICAgIHJl
dHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIGRvdWJsZSByZXN1bHQ7Ci0gICAgc3RkOjppc3RyaW5n
c3RyZWFtIHMoc3RyKTsKLSAgICBzdGQ6OmxvY2FsZSBsKCJDIik7Ci0gICAgcy5pbWJ1ZShsKTsK
LSAgICBzID4+IHJlc3VsdDsKLSAgICByZXR1cm4gcmVzdWx0OwotI2VuZGlmCisgICAgYm9vbCBz
dWNjZXNzID0gcHA6Om51bWVyaWNfbGV4X2Zsb2F0KHN0ciwgdmFsdWUpOworICAgIGlmICghc3Vj
Y2VzcykKKyAgICAgICAgKnZhbHVlID0gc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgp
OworICAgIHJldHVybiBzdWNjZXNzOwogfQorCitib29sIGF0b2lfY2xhbXAoY29uc3QgY2hhciAq
c3RyLCBpbnQgKnZhbHVlKQoreworICAgIGJvb2wgc3VjY2VzcyA9IHBwOjpudW1lcmljX2xleF9p
bnQoc3RyLCB2YWx1ZSk7CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICAqdmFsdWUgPSBzdGQ6
Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOworICAgIHJldHVybiBzdWNjZXNzOworfQorCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdXRpbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci91dGlsLmgJKHJldmlz
aW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci91dGls
LmgJKHdvcmtpbmcgY29weSkKQEAgLTcsMTUgKzcsMTQgQEAKICNpZm5kZWYgQ09NUElMRVJfVVRJ
TF9ICiAjZGVmaW5lIENPTVBJTEVSX1VUSUxfSAogCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVy
biAiQyIgewotI2VuZGlmCisvLyBhdG9mX2NsYW1wIGlzIGxpa2UgYXRvZiBidXQKKy8vICAgMS4g
aXQgZm9yY2VzIEMgbG9jYWxlLCBpLmUuIGZvcmNpbmcgJy4nIGFzIGRlY2ltYWwgcG9pbnQuCisv
LyAgIDIuIGl0IGNsYW1wcyB0aGUgdmFsdWUgdG8gLUZMVF9NQVggb3IgRkxUX01BWCBpZiBvdmVy
ZmxvdyBoYXBwZW5zLgorLy8gUmV0dXJuIGZhbHNlIGlmIG92ZXJmbG93IGhhcHBlbnMuCitleHRl
cm4gYm9vbCBhdG9mX2NsYW1wKGNvbnN0IGNoYXIgKnN0ciwgZmxvYXQgKnZhbHVlKTsKIAotLy8g
YXRvZl9kb3QgaXMgbGlrZSBhdG9mIGJ1dCBmb3JjaW5nIEMgbG9jYWxlLCBpLmUuIGZvcmNpbmcg
Jy4nIGFzIGRlY2ltYWwgcG9pbnQuCi1kb3VibGUgYXRvZl9kb3QoY29uc3QgY2hhciAqc3RyKTsK
LQotI2lmZGVmIF9fY3BsdXNwbHVzCi19IC8vIGVuZCBleHRlcm4gIkMiCi0jZW5kaWYKKy8vIElm
IG92ZXJmbG93IGhhcHBlbnMsIGNsYW1wIHRoZSB2YWx1ZSB0byBJTlRfTUlOIG9yIElOVF9NQVgu
CisvLyBSZXR1cm4gZmFsc2UgaWYgb3ZlcmZsb3cgaGFwcGVucy4KK2V4dGVybiBib29sIGF0b2lf
Y2xhbXAoY29uc3QgY2hhciAqc3RyLCBpbnQgKnZhbHVlKTsKIAogI2VuZGlmIC8vIENPTVBJTEVS
X1VUSUxfSApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2RlcGdy
YXBoL0RlcGVuZGVuY3lHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaC5jcHAJKHJldmlzaW9u
IDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9kZXBncmFw
aC9EZXBlbmRlbmN5R3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00LDkgKzQsNyBAQAogLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCiAKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKQog
I3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ3MTgpCi0jZW5kaWYKIAogI2luY2x1ZGUgImNvbXBp
bGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL2RlcGdy
YXBoL0RlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuaCIKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZGVwZ3JhcGgv
RGVwZW5kZW5jeUdyYXBoQnVpbGRlci5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhCdWls
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFREZXBlbmRlbmN5
R3JhcGhCdWlsZGVyOjp2aXNpdFN5bWJvCiBib29sIFREZXBlbmRlbmN5R3JhcGhCdWlsZGVyOjp2
aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSogaW50ZXJtQmluYXJ5KQogewog
ICAgIFRPcGVyYXRvciBvcCA9IGludGVybUJpbmFyeS0+Z2V0T3AoKTsKLSAgICBpZiAob3AgPT0g
RU9wSW5pdGlhbGl6ZSB8fCBpbnRlcm1CaW5hcnktPm1vZGlmaWVzU3RhdGUoKSkKKyAgICBpZiAo
b3AgPT0gRU9wSW5pdGlhbGl6ZSB8fCBpbnRlcm1CaW5hcnktPmlzQXNzaWdubWVudCgpKQogICAg
ICAgICB2aXNpdEFzc2lnbm1lbnQoaW50ZXJtQmluYXJ5KTsKICAgICBlbHNlIGlmIChvcCA9PSBF
T3BMb2dpY2FsQW5kIHx8IG9wID09IEVPcExvZ2ljYWxPcikKICAgICAgICAgdmlzaXRMb2dpY2Fs
T3AoaW50ZXJtQmluYXJ5KTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9u
UGFyc2VyLmNwcAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSwxNCArMSwxMyBAQAotLyogQSBCaXNvbiBwYXJzZXIsIG1hZGUgYnkgR05VIEJp
c29uIDIuMy4gICovCisvKiBBIEJpc29uIHBhcnNlciwgbWFkZSBieSBHTlUgQmlzb24gMy4wLjEu
ICAqLwogCi0vKiBTa2VsZXRvbiBpbXBsZW1lbnRhdGlvbiBmb3IgQmlzb24ncyBZYWNjLWxpa2Ug
cGFyc2VycyBpbiBDCisvKiBCaXNvbiBpbXBsZW1lbnRhdGlvbiBmb3IgWWFjYy1saWtlIHBhcnNl
cnMgaW4gQwogCi0gICBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5ODksIDE5OTAsIDIwMDAsIDIwMDEs
IDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYKLSAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLgorICAgQ29weXJpZ2h0IChDKSAxOTg0LCAxOTg5LTE5OTAsIDIwMDAtMjAxMyBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAotICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIFRoaXMgcHJv
Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k
aWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieQotICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotICAgYW55IGxhdGVyIHZlcnNpb24u
CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo
ZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIAog
ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgpAQCAtMTYsOSArMTUsNyBAQAogICAgR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIAogICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgIGFsb25nIHdp
dGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gICBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuICAqLworICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u
ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogCiAvKiBB
cyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IGNyZWF0ZSBhIGxhcmdlciB3b3JrIHRoYXQg
Y29udGFpbnMKICAgIHBhcnQgb3IgYWxsIG9mIHRoZSBCaXNvbiBwYXJzZXIgc2tlbGV0b24gYW5k
IGRpc3RyaWJ1dGUgdGhhdCB3b3JrCkBAIC00Nyw3ICs0NCw3IEBACiAjZGVmaW5lIFlZQklTT04g
MQogCiAvKiBCaXNvbiB2ZXJzaW9uLiAgKi8KLSNkZWZpbmUgWVlCSVNPTl9WRVJTSU9OICIyLjMi
CisjZGVmaW5lIFlZQklTT05fVkVSU0lPTiAiMy4wLjEiCiAKIC8qIFNrZWxldG9uIG5hbWUuICAq
LwogI2RlZmluZSBZWVNLRUxFVE9OX05BTUUgInlhY2MuYyIKQEAgLTU1LDUwICs1MiwxOSBAQAog
LyogUHVyZSBwYXJzZXJzLiAgKi8KICNkZWZpbmUgWVlQVVJFIDEKIAotLyogVXNpbmcgbG9jYXRp
b25zLiAgKi8KLSNkZWZpbmUgWVlMU1BfTkVFREVEIDAKKy8qIFB1c2ggcGFyc2Vycy4gICovCisj
ZGVmaW5lIFlZUFVTSCAwCiAKLS8qIFN1YnN0aXR1dGUgdGhlIHZhcmlhYmxlIGFuZCBmdW5jdGlv
biBuYW1lcy4gICovCi0jZGVmaW5lIHl5cGFyc2UgcHBwYXJzZQotI2RlZmluZSB5eWxleCAgIHBw
bGV4Ci0jZGVmaW5lIHl5ZXJyb3IgcHBlcnJvcgotI2RlZmluZSB5eWx2YWwgIHBwbHZhbAotI2Rl
ZmluZSB5eWNoYXIgIHBwY2hhcgotI2RlZmluZSB5eWRlYnVnIHBwZGVidWcKLSNkZWZpbmUgeXlu
ZXJycyBwcG5lcnJzCi0KLQotLyogVG9rZW5zLiAgKi8KLSNpZm5kZWYgWVlUT0tFTlRZUEUKLSMg
ZGVmaW5lIFlZVE9LRU5UWVBFCi0gICAvKiBQdXQgdGhlIHRva2VucyBpbnRvIHRoZSBzeW1ib2wg
dGFibGUsIHNvIHRoYXQgR0RCIGFuZCBvdGhlciBkZWJ1Z2dlcnMKLSAgICAgIGtub3cgYWJvdXQg
dGhlbS4gICovCi0gICBlbnVtIHl5dG9rZW50eXBlIHsKLSAgICAgVE9LX0NPTlNUX0lOVCA9IDI1
OCwKLSAgICAgVE9LX09QX09SID0gMjU5LAotICAgICBUT0tfT1BfQU5EID0gMjYwLAotICAgICBU
T0tfT1BfTkUgPSAyNjEsCi0gICAgIFRPS19PUF9FUSA9IDI2MiwKLSAgICAgVE9LX09QX0dFID0g
MjYzLAotICAgICBUT0tfT1BfTEUgPSAyNjQsCi0gICAgIFRPS19PUF9SSUdIVCA9IDI2NSwKLSAg
ICAgVE9LX09QX0xFRlQgPSAyNjYsCi0gICAgIFRPS19VTkFSWSA9IDI2NwotICAgfTsKLSNlbmRp
ZgotLyogVG9rZW5zLiAgKi8KLSNkZWZpbmUgVE9LX0NPTlNUX0lOVCAyNTgKLSNkZWZpbmUgVE9L
X09QX09SIDI1OQotI2RlZmluZSBUT0tfT1BfQU5EIDI2MAotI2RlZmluZSBUT0tfT1BfTkUgMjYx
Ci0jZGVmaW5lIFRPS19PUF9FUSAyNjIKLSNkZWZpbmUgVE9LX09QX0dFIDI2MwotI2RlZmluZSBU
T0tfT1BfTEUgMjY0Ci0jZGVmaW5lIFRPS19PUF9SSUdIVCAyNjUKLSNkZWZpbmUgVE9LX09QX0xF
RlQgMjY2Ci0jZGVmaW5lIFRPS19VTkFSWSAyNjcKKy8qIFB1bGwgcGFyc2Vycy4gICovCisjZGVm
aW5lIFlZUFVMTCAxCiAKIAorLyogU3Vic3RpdHV0ZSB0aGUgdmFyaWFibGUgYW5kIGZ1bmN0aW9u
IG5hbWVzLiAgKi8KKyNkZWZpbmUgeXlwYXJzZSAgICAgICAgIHBwcGFyc2UKKyNkZWZpbmUgeXls
ZXggICAgICAgICAgIHBwbGV4CisjZGVmaW5lIHl5ZXJyb3IgICAgICAgICBwcGVycm9yCisjZGVm
aW5lIHl5ZGVidWcgICAgICAgICBwcGRlYnVnCisjZGVmaW5lIHl5bmVycnMgICAgICAgICBwcG5l
cnJzCiAKIAogLyogQ29weSB0aGUgZmlyc3QgcGFydCBvZiB1c2VyIGRlY2xhcmF0aW9ucy4gICov
CkBAIC0xMjUsNiArOTEsMTIgQEAKIAogI2luY2x1ZGUgIkV4cHJlc3Npb25QYXJzZXIuaCIKIAor
I2lmIGRlZmluZWQoX01TQ19WRVIpCisjaW5jbHVkZSA8bWFsbG9jLmg+CisjZWxzZQorI2luY2x1
ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisKICNpbmNsdWRlIDxjYXNzZXJ0PgogI2luY2x1ZGUgPHNz
dHJlYW0+CiAKQEAgLTE1OCwxMCArMTMwLDE0IEBAIHN0YXRpYyBpbnQgeXlsZXgoWVlTVFlQRSog
bHZhbHAsIENvbnRleHQKIHN0YXRpYyB2b2lkIHl5ZXJyb3IoQ29udGV4dCogY29udGV4dCwgY29u
c3QgY2hhciogcmVhc29uKTsKIAogCi0vKiBFbmFibGluZyB0cmFjZXMuICAqLwotI2lmbmRlZiBZ
WURFQlVHCi0jIGRlZmluZSBZWURFQlVHIDAKLSNlbmRpZgorCisjIGlmbmRlZiBZWV9OVUxMUFRS
CisjICBpZiBkZWZpbmVkIF9fY3BsdXNwbHVzICYmIDIwMTEwM0wgPD0gX19jcGx1c3BsdXMKKyMg
ICBkZWZpbmUgWVlfTlVMTFBUUiBudWxscHRyCisjICBlbHNlCisjICAgZGVmaW5lIFlZX05VTExQ
VFIgMAorIyAgZW5kaWYKKyMgZW5kaWYKIAogLyogRW5hYmxpbmcgdmVyYm9zZSBlcnJvciBtZXNz
YWdlcy4gICovCiAjaWZkZWYgWVlFUlJPUl9WRVJCT1NFCkBAIC0xNzEsMjQgKzE0Nyw0OCBAQCBz
dGF0aWMgdm9pZCB5eWVycm9yKENvbnRleHQqIGNvbnRleHQsIGNvCiAjIGRlZmluZSBZWUVSUk9S
X1ZFUkJPU0UgMAogI2VuZGlmCiAKLS8qIEVuYWJsaW5nIHRoZSB0b2tlbiB0YWJsZS4gICovCi0j
aWZuZGVmIFlZVE9LRU5fVEFCTEUKLSMgZGVmaW5lIFlZVE9LRU5fVEFCTEUgMAorCisvKiBEZWJ1
ZyB0cmFjZXMuICAqLworI2lmbmRlZiBZWURFQlVHCisjIGRlZmluZSBZWURFQlVHIDAKKyNlbmRp
ZgorI2lmIFlZREVCVUcKK2V4dGVybiBpbnQgcHBkZWJ1ZzsKKyNlbmRpZgorCisvKiBUb2tlbiB0
eXBlLiAgKi8KKyNpZm5kZWYgWVlUT0tFTlRZUEUKKyMgZGVmaW5lIFlZVE9LRU5UWVBFCisgIGVu
dW0geXl0b2tlbnR5cGUKKyAgeworICAgIFRPS19DT05TVF9JTlQgPSAyNTgsCisgICAgVE9LX09Q
X09SID0gMjU5LAorICAgIFRPS19PUF9BTkQgPSAyNjAsCisgICAgVE9LX09QX0VRID0gMjYxLAor
ICAgIFRPS19PUF9ORSA9IDI2MiwKKyAgICBUT0tfT1BfTEUgPSAyNjMsCisgICAgVE9LX09QX0dF
ID0gMjY0LAorICAgIFRPS19PUF9MRUZUID0gMjY1LAorICAgIFRPS19PUF9SSUdIVCA9IDI2NiwK
KyAgICBUT0tfVU5BUlkgPSAyNjcKKyAgfTsKICNlbmRpZgogCisvKiBWYWx1ZSB0eXBlLiAgKi8K
ICNpZiAhIGRlZmluZWQgWVlTVFlQRSAmJiAhIGRlZmluZWQgWVlTVFlQRV9JU19ERUNMQVJFRAog
dHlwZWRlZiBpbnQgWVlTVFlQRTsKLSMgZGVmaW5lIHl5c3R5cGUgWVlTVFlQRSAvKiBvYnNvbGVz
Y2VudDsgd2lsbCBiZSB3aXRoZHJhd24gKi8KLSMgZGVmaW5lIFlZU1RZUEVfSVNfREVDTEFSRUQg
MQogIyBkZWZpbmUgWVlTVFlQRV9JU19UUklWSUFMIDEKKyMgZGVmaW5lIFlZU1RZUEVfSVNfREVD
TEFSRUQgMQogI2VuZGlmCiAKIAogCi0vKiBDb3B5IHRoZSBzZWNvbmQgcGFydCBvZiB1c2VyIGRl
Y2xhcmF0aW9ucy4gICovCitpbnQgcHBwYXJzZSAoQ29udGV4dCAqY29udGV4dCk7CiAKIAotLyog
TGluZSAyMTYgb2YgeWFjYy5jLiAgKi8KKworLyogQ29weSB0aGUgc2Vjb25kIHBhcnQgb2YgdXNl
ciBkZWNsYXJhdGlvbnMuICAqLworCiAKIAogI2lmZGVmIHNob3J0CkBAIC0yMDMsMTEgKzIwMyw4
IEBAIHR5cGVkZWYgdW5zaWduZWQgY2hhciB5eXR5cGVfdWludDg7CiAKICNpZmRlZiBZWVRZUEVf
SU5UOAogdHlwZWRlZiBZWVRZUEVfSU5UOCB5eXR5cGVfaW50ODsKLSNlbGlmIChkZWZpbmVkIF9f
U1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCi0gICAgIHx8IGRlZmluZWQgX19jcGx1
c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKLXR5cGVkZWYgc2lnbmVkIGNoYXIgeXl0eXBlX2lu
dDg7CiAjZWxzZQotdHlwZWRlZiBzaG9ydCBpbnQgeXl0eXBlX2ludDg7Cit0eXBlZGVmIHNpZ25l
ZCBjaGFyIHl5dHlwZV9pbnQ4OwogI2VuZGlmCiAKICNpZmRlZiBZWVRZUEVfVUlOVDE2CkBAIC0y
MjcsOCArMjI0LDcgQEAgdHlwZWRlZiBzaG9ydCBpbnQgeXl0eXBlX2ludDE2OwogIyAgZGVmaW5l
IFlZU0laRV9UIF9fU0laRV9UWVBFX18KICMgZWxpZiBkZWZpbmVkIHNpemVfdAogIyAgZGVmaW5l
IFlZU0laRV9UIHNpemVfdAotIyBlbGlmICEgZGVmaW5lZCBZWVNJWkVfVCAmJiAoZGVmaW5lZCBf
X1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAotICAgICB8fCBkZWZpbmVkIF9fY3Bs
dXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCisjIGVsaWYgISBkZWZpbmVkIFlZU0laRV9UCiAj
ICBpbmNsdWRlIDxzdGRkZWYuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwog
IyAgZGVmaW5lIFlZU0laRV9UIHNpemVfdAogIyBlbHNlCkBAIC0yNDIsMzggKzIzOCw2NyBAQCB0
eXBlZGVmIHNob3J0IGludCB5eXR5cGVfaW50MTY7CiAjIGlmIGRlZmluZWQgWVlFTkFCTEVfTkxT
ICYmIFlZRU5BQkxFX05MUwogIyAgaWYgRU5BQkxFX05MUwogIyAgIGluY2x1ZGUgPGxpYmludGwu
aD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwotIyAgIGRlZmluZSBZWV8obXNn
aWQpIGRnZXR0ZXh0ICgiYmlzb24tcnVudGltZSIsIG1zZ2lkKQorIyAgIGRlZmluZSBZWV8oTXNn
aWQpIGRnZXR0ZXh0ICgiYmlzb24tcnVudGltZSIsIE1zZ2lkKQogIyAgZW5kaWYKICMgZW5kaWYK
ICMgaWZuZGVmIFlZXwotIyAgZGVmaW5lIFlZXyhtc2dpZCkgbXNnaWQKKyMgIGRlZmluZSBZWV8o
TXNnaWQpIE1zZ2lkCisjIGVuZGlmCisjZW5kaWYKKworI2lmbmRlZiBZWV9BVFRSSUJVVEUKKyMg
aWYgKGRlZmluZWQgX19HTlVDX18gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICYmICgyIDwgX19HTlVDX18gfHwgKF9fR05VQ19fID09IDIgJiYg
OTYgPD0gX19HTlVDX01JTk9SX18pKSkgIFwKKyAgICAgfHwgZGVmaW5lZCBfX1NVTlBST19DICYm
IDB4NTExMCA8PSBfX1NVTlBST19DCisjICBkZWZpbmUgWVlfQVRUUklCVVRFKFNwZWMpIF9fYXR0
cmlidXRlX18oU3BlYykKKyMgZWxzZQorIyAgZGVmaW5lIFlZX0FUVFJJQlVURShTcGVjKSAvKiBl
bXB0eSAqLworIyBlbmRpZgorI2VuZGlmCisKKyNpZm5kZWYgWVlfQVRUUklCVVRFX1BVUkUKKyMg
ZGVmaW5lIFlZX0FUVFJJQlVURV9QVVJFICAgWVlfQVRUUklCVVRFICgoX19wdXJlX18pKQorI2Vu
ZGlmCisKKyNpZm5kZWYgWVlfQVRUUklCVVRFX1VOVVNFRAorIyBkZWZpbmUgWVlfQVRUUklCVVRF
X1VOVVNFRCBZWV9BVFRSSUJVVEUgKChfX3VudXNlZF9fKSkKKyNlbmRpZgorCisjaWYgIWRlZmlu
ZWQgX05vcmV0dXJuIFwKKyAgICAgJiYgKCFkZWZpbmVkIF9fU1REQ19WRVJTSU9OX18gfHwgX19T
VERDX1ZFUlNJT05fXyA8IDIwMTExMikKKyMgaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiAxMjAwIDw9
IF9NU0NfVkVSCisjICBkZWZpbmUgX05vcmV0dXJuIF9fZGVjbHNwZWMgKG5vcmV0dXJuKQorIyBl
bHNlCisjICBkZWZpbmUgX05vcmV0dXJuIFlZX0FUVFJJQlVURSAoKF9fbm9yZXR1cm5fXykpCiAj
IGVuZGlmCiAjZW5kaWYKIAogLyogU3VwcHJlc3MgdW51c2VkLXZhcmlhYmxlIHdhcm5pbmdzIGJ5
ICJ1c2luZyIgRS4gICovCiAjaWYgISBkZWZpbmVkIGxpbnQgfHwgZGVmaW5lZCBfX0dOVUNfXwot
IyBkZWZpbmUgWVlVU0UoZSkgKCh2b2lkKSAoZSkpCisjIGRlZmluZSBZWVVTRShFKSAoKHZvaWQp
IChFKSkKICNlbHNlCi0jIGRlZmluZSBZWVVTRShlKSAvKiBlbXB0eSAqLworIyBkZWZpbmUgWVlV
U0UoRSkgLyogZW1wdHkgKi8KICNlbmRpZgogCi0vKiBJZGVudGl0eSBmdW5jdGlvbiwgdXNlZCB0
byBzdXBwcmVzcyB3YXJuaW5ncyBhYm91dCBjb25zdGFudCBjb25kaXRpb25zLiAgKi8KLSNpZm5k
ZWYgbGludAotIyBkZWZpbmUgWVlJRChuKSAobikKLSNlbHNlCi0jaWYgKGRlZmluZWQgX19TVERD
X18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKLSAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1
cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQotc3RhdGljIGludAotWVlJRCAoaW50IGkpCisjaWYgZGVm
aW5lZCBfX0dOVUNfXyAmJiA0MDcgPD0gX19HTlVDX18gKiAxMDAgKyBfX0dOVUNfTUlOT1JfXwor
LyogU3VwcHJlc3MgYW4gaW5jb3JyZWN0IGRpYWdub3N0aWMgYWJvdXQgeXlsdmFsIGJlaW5nIHVu
aW5pdGlhbGl6ZWQuICAqLworIyBkZWZpbmUgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURf
QkVHSU4gXAorICAgIF9QcmFnbWEgKCJHQ0MgZGlhZ25vc3RpYyBwdXNoIikgXAorICAgIF9QcmFn
bWEgKCJHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkIFwiLVd1bmluaXRpYWxpemVkXCIiKVwKKyAgICBf
UHJhZ21hICgiR0NDIGRpYWdub3N0aWMgaWdub3JlZCBcIi1XbWF5YmUtdW5pbml0aWFsaXplZFwi
IikKKyMgZGVmaW5lIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0VORCBcCisgICAgX1By
YWdtYSAoIkdDQyBkaWFnbm9zdGljIHBvcCIpCiAjZWxzZQotc3RhdGljIGludAotWVlJRCAoaSkK
LSAgICBpbnQgaTsKKyMgZGVmaW5lIFlZX0lOSVRJQUxfVkFMVUUoVmFsdWUpIFZhbHVlCiAjZW5k
aWYKLXsKLSAgcmV0dXJuIGk7Ci19CisjaWZuZGVmIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJ
WkVEX0JFR0lOCisjIGRlZmluZSBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9CRUdJTgor
IyBkZWZpbmUgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfRU5ECiAjZW5kaWYKKyNpZm5k
ZWYgWVlfSU5JVElBTF9WQUxVRQorIyBkZWZpbmUgWVlfSU5JVElBTF9WQUxVRShWYWx1ZSkgLyog
Tm90aGluZy4gKi8KKyNlbmRpZgorCiAKICNpZiAhIGRlZmluZWQgeXlvdmVyZmxvdyB8fCBZWUVS
Uk9SX1ZFUkJPU0UKIApAQCAtMjkyLDExICszMTcsMTEgQEAgWVlJRCAoaSkKICMgICAgZGVmaW5l
IGFsbG9jYSBfYWxsb2NhCiAjICAgZWxzZQogIyAgICBkZWZpbmUgWVlTVEFDS19BTExPQyBhbGxv
Y2EKLSMgICAgaWYgISBkZWZpbmVkIF9BTExPQ0FfSCAmJiAhIGRlZmluZWQgX1NURExJQl9IICYm
IChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCi0gICAgIHx8IGRl
ZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKKyMgICAgaWYgISBkZWZpbmVk
IF9BTExPQ0FfSCAmJiAhIGRlZmluZWQgRVhJVF9TVUNDRVNTCiAjICAgICBpbmNsdWRlIDxzdGRs
aWIuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwotIyAgICAgaWZuZGVmIF9T
VERMSUJfSAotIyAgICAgIGRlZmluZSBfU1RETElCX0ggMQorICAgICAgLyogVXNlIEVYSVRfU1VD
Q0VTUyBhcyBhIHdpdG5lc3MgZm9yIHN0ZGxpYi5oLiAgKi8KKyMgICAgIGlmbmRlZiBFWElUX1NV
Q0NFU1MKKyMgICAgICBkZWZpbmUgRVhJVF9TVUNDRVNTIDAKICMgICAgIGVuZGlmCiAjICAgIGVu
ZGlmCiAjICAgZW5kaWYKQEAgLTMwNCw4ICszMjksOCBAQCBZWUlEIChpKQogIyBlbmRpZgogCiAj
IGlmZGVmIFlZU1RBQ0tfQUxMT0MKLSAgIC8qIFBhY2lmeSBHQ0MncyBgZW1wdHkgaWYtYm9keScg
d2FybmluZy4gICovCi0jICBkZWZpbmUgWVlTVEFDS19GUkVFKFB0cikgZG8geyAvKiBlbXB0eSAq
LzsgfSB3aGlsZSAoWVlJRCAoMCkpCisgICAvKiBQYWNpZnkgR0NDJ3MgJ2VtcHR5IGlmLWJvZHkn
IHdhcm5pbmcuICAqLworIyAgZGVmaW5lIFlZU1RBQ0tfRlJFRShQdHIpIGRvIHsgLyogZW1wdHkg
Ki87IH0gd2hpbGUgKDApCiAjICBpZm5kZWYgWVlTVEFDS19BTExPQ19NQVhJTVVNCiAgICAgLyog
VGhlIE9TIG1pZ2h0IGd1YXJhbnRlZSBvbmx5IG9uZSBndWFyZCBwYWdlIGF0IHRoZSBib3R0b20g
b2YgdGhlIHN0YWNrLAogICAgICAgIGFuZCBhIHBhZ2Ugc2l6ZSBjYW4gYmUgYXMgc21hbGwgYXMg
NDA5NiBieXRlcy4gIFNvIHdlIGNhbm5vdCBzYWZlbHkKQEAgLTMxOSwyNSArMzQ0LDIzIEBAIFlZ
SUQgKGkpCiAjICBpZm5kZWYgWVlTVEFDS19BTExPQ19NQVhJTVVNCiAjICAgZGVmaW5lIFlZU1RB
Q0tfQUxMT0NfTUFYSU1VTSBZWVNJWkVfTUFYSU1VTQogIyAgZW5kaWYKLSMgIGlmIChkZWZpbmVk
IF9fY3BsdXNwbHVzICYmICEgZGVmaW5lZCBfU1RETElCX0ggXAorIyAgaWYgKGRlZmluZWQgX19j
cGx1c3BsdXMgJiYgISBkZWZpbmVkIEVYSVRfU1VDQ0VTUyBcCiAgICAgICAgJiYgISAoKGRlZmlu
ZWQgWVlNQUxMT0MgfHwgZGVmaW5lZCBtYWxsb2MpIFwKLQkgICAgICYmIChkZWZpbmVkIFlZRlJF
RSB8fCBkZWZpbmVkIGZyZWUpKSkKKyAgICAgICAgICAgICAmJiAoZGVmaW5lZCBZWUZSRUUgfHwg
ZGVmaW5lZCBmcmVlKSkpCiAjICAgaW5jbHVkZSA8c3RkbGliLmg+IC8qIElORlJJTkdFUyBPTiBV
U0VSIE5BTUUgU1BBQ0UgKi8KLSMgICBpZm5kZWYgX1NURExJQl9ICi0jICAgIGRlZmluZSBfU1RE
TElCX0ggMQorIyAgIGlmbmRlZiBFWElUX1NVQ0NFU1MKKyMgICAgZGVmaW5lIEVYSVRfU1VDQ0VT
UyAwCiAjICAgZW5kaWYKICMgIGVuZGlmCiAjICBpZm5kZWYgWVlNQUxMT0MKICMgICBkZWZpbmUg
WVlNQUxMT0MgbWFsbG9jCi0jICAgaWYgISBkZWZpbmVkIG1hbGxvYyAmJiAhIGRlZmluZWQgX1NU
RExJQl9IICYmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCi0g
ICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKKyMgICBpZiAh
IGRlZmluZWQgbWFsbG9jICYmICEgZGVmaW5lZCBFWElUX1NVQ0NFU1MKIHZvaWQgKm1hbGxvYyAo
WVlTSVpFX1QpOyAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCiAjICAgZW5kaWYK
ICMgIGVuZGlmCiAjICBpZm5kZWYgWVlGUkVFCiAjICAgZGVmaW5lIFlZRlJFRSBmcmVlCi0jICAg
aWYgISBkZWZpbmVkIGZyZWUgJiYgISBkZWZpbmVkIF9TVERMSUJfSCAmJiAoZGVmaW5lZCBfX1NU
RENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAotICAgICB8fCBkZWZpbmVkIF9fY3BsdXNw
bHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCisjICAgaWYgISBkZWZpbmVkIGZyZWUgJiYgISBkZWZp
bmVkIEVYSVRfU1VDQ0VTUwogdm9pZCBmcmVlICh2b2lkICopOyAvKiBJTkZSSU5HRVMgT04gVVNF
UiBOQU1FIFNQQUNFICovCiAjICAgZW5kaWYKICMgIGVuZGlmCkBAIC0zNDcsMTQgKzM3MCwxNCBA
QCB2b2lkIGZyZWUgKHZvaWQgKik7IC8qIElORlJJTkdFUyBPTiBVU0VSCiAKICNpZiAoISBkZWZp
bmVkIHl5b3ZlcmZsb3cgXAogICAgICAmJiAoISBkZWZpbmVkIF9fY3BsdXNwbHVzIFwKLQkgfHwg
KGRlZmluZWQgWVlTVFlQRV9JU19UUklWSUFMICYmIFlZU1RZUEVfSVNfVFJJVklBTCkpKQorICAg
ICAgICAgfHwgKGRlZmluZWQgWVlTVFlQRV9JU19UUklWSUFMICYmIFlZU1RZUEVfSVNfVFJJVklB
TCkpKQogCiAvKiBBIHR5cGUgdGhhdCBpcyBwcm9wZXJseSBhbGlnbmVkIGZvciBhbnkgc3RhY2sg
bWVtYmVyLiAgKi8KIHVuaW9uIHl5YWxsb2MKIHsKLSAgeXl0eXBlX2ludDE2IHl5c3M7Ci0gIFlZ
U1RZUEUgeXl2czsKLSAgfTsKKyAgeXl0eXBlX2ludDE2IHl5c3NfYWxsb2M7CisgIFlZU1RZUEUg
eXl2c19hbGxvYzsKK307CiAKIC8qIFRoZSBzaXplIG9mIHRoZSBtYXhpbXVtIGdhcCBiZXR3ZWVu
IG9uZSBhbGlnbmVkIHN0YWNrIGFuZCB0aGUgbmV4dC4gICovCiAjIGRlZmluZSBZWVNUQUNLX0dB
UF9NQVhJTVVNIChzaXplb2YgKHVuaW9uIHl5YWxsb2MpIC0gMSkKQEAgLTM2NSw0MiArMzg4LDQ2
IEBAIHVuaW9uIHl5YWxsb2MKICAgICAgKChOKSAqIChzaXplb2YgKHl5dHlwZV9pbnQxNikgKyBz
aXplb2YgKFlZU1RZUEUpKSBcCiAgICAgICArIFlZU1RBQ0tfR0FQX01BWElNVU0pCiAKLS8qIENv
cHkgQ09VTlQgb2JqZWN0cyBmcm9tIEZST00gdG8gVE8uICBUaGUgc291cmNlIGFuZCBkZXN0aW5h
dGlvbiBkbwotICAgbm90IG92ZXJsYXAuICAqLwotIyBpZm5kZWYgWVlDT1BZCi0jICBpZiBkZWZp
bmVkIF9fR05VQ19fICYmIDEgPCBfX0dOVUNfXwotIyAgIGRlZmluZSBZWUNPUFkoVG8sIEZyb20s
IENvdW50KSBcCi0gICAgICBfX2J1aWx0aW5fbWVtY3B5IChUbywgRnJvbSwgKENvdW50KSAqIHNp
emVvZiAoKihGcm9tKSkpCi0jICBlbHNlCi0jICAgZGVmaW5lIFlZQ09QWShUbywgRnJvbSwgQ291
bnQpCQlcCi0gICAgICBkbwkJCQkJXAotCXsJCQkJCVwKLQkgIFlZU0laRV9UIHl5aTsJCQkJXAot
CSAgZm9yICh5eWkgPSAwOyB5eWkgPCAoQ291bnQpOyB5eWkrKykJXAotCSAgICAoVG8pW3l5aV0g
PSAoRnJvbSlbeXlpXTsJCVwKLQl9CQkJCQlcCi0gICAgICB3aGlsZSAoWVlJRCAoMCkpCi0jICBl
bmRpZgotIyBlbmRpZgorIyBkZWZpbmUgWVlDT1BZX05FRURFRCAxCiAKIC8qIFJlbG9jYXRlIFNU
QUNLIGZyb20gaXRzIG9sZCBsb2NhdGlvbiB0byB0aGUgbmV3IG9uZS4gIFRoZQogICAgbG9jYWwg
dmFyaWFibGVzIFlZU0laRSBhbmQgWVlTVEFDS1NJWkUgZ2l2ZSB0aGUgb2xkIGFuZCBuZXcgbnVt
YmVyIG9mCiAgICBlbGVtZW50cyBpbiB0aGUgc3RhY2ssIGFuZCBZWVBUUiBnaXZlcyB0aGUgbmV3
IGxvY2F0aW9uIG9mIHRoZQogICAgc3RhY2suICBBZHZhbmNlIFlZUFRSIHRvIGEgcHJvcGVybHkg
YWxpZ25lZCBsb2NhdGlvbiBmb3IgdGhlIG5leHQKICAgIHN0YWNrLiAgKi8KLSMgZGVmaW5lIFlZ
U1RBQ0tfUkVMT0NBVEUoU3RhY2spCQkJCQlcCi0gICAgZG8JCQkJCQkJCQlcCi0gICAgICB7CQkJ
CQkJCQkJXAotCVlZU0laRV9UIHl5bmV3Ynl0ZXM7CQkJCQkJXAotCVlZQ09QWSAoJnl5cHRyLT5T
dGFjaywgU3RhY2ssIHl5c2l6ZSk7CQkJCVwKLQlTdGFjayA9ICZ5eXB0ci0+U3RhY2s7CQkJCQkJ
XAotCXl5bmV3Ynl0ZXMgPSB5eXN0YWNrc2l6ZSAqIHNpemVvZiAoKlN0YWNrKSArIFlZU1RBQ0tf
R0FQX01BWElNVU07IFwKLQl5eXB0ciArPSB5eW5ld2J5dGVzIC8gc2l6ZW9mICgqeXlwdHIpOwkJ
CQlcCi0gICAgICB9CQkJCQkJCQkJXAotICAgIHdoaWxlIChZWUlEICgwKSkKKyMgZGVmaW5lIFlZ
U1RBQ0tfUkVMT0NBVEUoU3RhY2tfYWxsb2MsIFN0YWNrKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICBkbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgWVlTSVpF
X1QgeXluZXdieXRlczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgWVlDT1BZICgmeXlwdHItPlN0YWNrX2FsbG9jLCBTdGFjaywgeXlzaXplKTsg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgU3RhY2sgPSAmeXlwdHItPlN0YWNrX2FsbG9j
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgeXluZXdieXRl
cyA9IHl5c3RhY2tzaXplICogc2l6ZW9mICgqU3RhY2spICsgWVlTVEFDS19HQVBfTUFYSU1VTTsg
XAorICAgICAgICB5eXB0ciArPSB5eW5ld2J5dGVzIC8gc2l6ZW9mICgqeXlwdHIpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHdoaWxlICgwKQogCiAj
ZW5kaWYKIAorI2lmIGRlZmluZWQgWVlDT1BZX05FRURFRCAmJiBZWUNPUFlfTkVFREVECisvKiBD
b3B5IENPVU5UIG9iamVjdHMgZnJvbSBTUkMgdG8gRFNULiAgVGhlIHNvdXJjZSBhbmQgZGVzdGlu
YXRpb24gZG8KKyAgIG5vdCBvdmVybGFwLiAgKi8KKyMgaWZuZGVmIFlZQ09QWQorIyAgaWYgZGVm
aW5lZCBfX0dOVUNfXyAmJiAxIDwgX19HTlVDX18KKyMgICBkZWZpbmUgWVlDT1BZKERzdCwgU3Jj
LCBDb3VudCkgXAorICAgICAgX19idWlsdGluX21lbWNweSAoRHN0LCBTcmMsIChDb3VudCkgKiBz
aXplb2YgKCooU3JjKSkpCisjICBlbHNlCisjICAgZGVmaW5lIFlZQ09QWShEc3QsIFNyYywgQ291
bnQpICAgICAgICAgICAgICBcCisgICAgICBkbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgWVlTSVpFX1QgeXlpOyAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgZm9yICh5eWkgPSAwOyB5eWkgPCAoQ291bnQpOyB5eWkrKykgICBcCisgICAg
ICAgICAgICAoRHN0KVt5eWldID0gKFNyYylbeXlpXTsgICAgICAgICAgICBcCisgICAgICAgIH0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICB3aGlsZSAoMCkK
KyMgIGVuZGlmCisjIGVuZGlmCisjZW5kaWYgLyogIVlZQ09QWV9ORUVERUQgKi8KKwogLyogWVlG
SU5BTCAtLSBTdGF0ZSBudW1iZXIgb2YgdGhlIHRlcm1pbmF0aW9uIHN0YXRlLiAgKi8KICNkZWZp
bmUgWVlGSU5BTCAgMTQKIC8qIFlZTEFTVCAtLSBMYXN0IGluZGV4IGluIFlZVEFCTEUuICAqLwpA
QCAtNDEyLDE3ICs0MzksMTkgQEAgdW5pb24geXlhbGxvYwogI2RlZmluZSBZWU5OVFMgIDMKIC8q
IFlZTlJVTEVTIC0tIE51bWJlciBvZiBydWxlcy4gICovCiAjZGVmaW5lIFlZTlJVTEVTICAyNgot
LyogWVlOUlVMRVMgLS0gTnVtYmVyIG9mIHN0YXRlcy4gICovCisvKiBZWU5TVEFURVMgLS0gTnVt
YmVyIG9mIHN0YXRlcy4gICovCiAjZGVmaW5lIFlZTlNUQVRFUyAgNTIKIAotLyogWVlUUkFOU0xB
VEUoWVlMRVgpIC0tIEJpc29uIHN5bWJvbCBudW1iZXIgY29ycmVzcG9uZGluZyB0byBZWUxFWC4g
ICovCisvKiBZWVRSQU5TTEFURVtZWVhdIC0tIFN5bWJvbCBudW1iZXIgY29ycmVzcG9uZGluZyB0
byBZWVggYXMgcmV0dXJuZWQKKyAgIGJ5IHl5bGV4LCB3aXRoIG91dC1vZi1ib3VuZHMgY2hlY2tp
bmcuICAqLwogI2RlZmluZSBZWVVOREVGVE9LICAyCiAjZGVmaW5lIFlZTUFYVVRPSyAgIDI2Nwog
Ci0jZGVmaW5lIFlZVFJBTlNMQVRFKFlZWCkJCQkJCQlcCisjZGVmaW5lIFlZVFJBTlNMQVRFKFlZ
WCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICgo
dW5zaWduZWQgaW50KSAoWVlYKSA8PSBZWU1BWFVUT0sgPyB5eXRyYW5zbGF0ZVtZWVhdIDogWVlV
TkRFRlRPSykKIAotLyogWVlUUkFOU0xBVEVbWVlMRVhdIC0tIEJpc29uIHN5bWJvbCBudW1iZXIg
Y29ycmVzcG9uZGluZyB0byBZWUxFWC4gICovCisvKiBZWVRSQU5TTEFURVtUT0tFTi1OVU1dIC0t
IFN5bWJvbCBudW1iZXIgY29ycmVzcG9uZGluZyB0byBUT0tFTi1OVU0KKyAgIGFzIHJldHVybmVk
IGJ5IHl5bGV4LCB3aXRob3V0IG91dC1vZi1ib3VuZHMgY2hlY2tpbmcuICAqLwogc3RhdGljIGNv
bnN0IHl5dHlwZV91aW50OCB5eXRyYW5zbGF0ZVtdID0KIHsKICAgICAgICAwLCAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLApAQCAt
NDU1LDU1ICs0ODQsMzEgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXRyYW5zbGF0ZVtd
IAogfTsKIAogI2lmIFlZREVCVUcKLS8qIFlZUFJIU1tZWU5dIC0tIEluZGV4IG9mIHRoZSBmaXJz
dCBSSFMgc3ltYm9sIG9mIHJ1bGUgbnVtYmVyIFlZTiBpbgotICAgWVlSSFMuICAqLwotc3RhdGlj
IGNvbnN0IHl5dHlwZV91aW50OCB5eXByaHNbXSA9Ci17Ci0gICAgICAgMCwgICAgIDAsICAgICAz
LCAgICAgNSwgICAgIDcsICAgIDExLCAgICAxNSwgICAgMTksICAgIDIzLCAgICAyNywKLSAgICAg
IDMxLCAgICAzNSwgICAgMzksICAgIDQzLCAgICA0NywgICAgNTEsICAgIDU1LCAgICA1OSwgICAg
NjMsICAgIDY3LAotICAgICAgNzEsICAgIDc1LCAgICA3OSwgICAgODIsICAgIDg1LCAgICA4OCwg
ICAgOTEKLX07Ci0KLS8qIFlZUkhTIC0tIEEgYC0xJy1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgcnVs
ZXMnIFJIUy4gICovCi1zdGF0aWMgY29uc3QgeXl0eXBlX2ludDggeXlyaHNbXSA9Ci17Ci0gICAg
ICAyOCwgICAgIDAsICAgIC0xLCAgICAyOSwgICAgLTEsICAgICAzLCAgICAtMSwgICAgMjksICAg
ICA0LCAgICAyOSwKLSAgICAgIC0xLCAgICAyOSwgICAgIDUsICAgIDI5LCAgICAtMSwgICAgMjks
ICAgICA2LCAgICAyOSwgICAgLTEsICAgIDI5LAotICAgICAgIDcsICAgIDI5LCAgICAtMSwgICAg
MjksICAgICA4LCAgICAyOSwgICAgLTEsICAgIDI5LCAgICAgOSwgICAgMjksCi0gICAgICAtMSwg
ICAgMjksICAgIDEwLCAgICAyOSwgICAgLTEsICAgIDI5LCAgICAxMywgICAgMjksICAgIC0xLCAg
ICAyOSwKLSAgICAgIDE0LCAgICAyOSwgICAgLTEsICAgIDI5LCAgICAxMiwgICAgMjksICAgIC0x
LCAgICAyOSwgICAgMTEsICAgIDI5LAotICAgICAgLTEsICAgIDI5LCAgICAxNSwgICAgMjksICAg
IC0xLCAgICAyOSwgICAgMTYsICAgIDI5LCAgICAtMSwgICAgMjksCi0gICAgICAxOCwgICAgMjks
ICAgIC0xLCAgICAyOSwgICAgMTcsICAgIDI5LCAgICAtMSwgICAgMjksICAgIDIxLCAgICAyOSwK
LSAgICAgIC0xLCAgICAyOSwgICAgMjAsICAgIDI5LCAgICAtMSwgICAgMjksICAgIDE5LCAgICAy
OSwgICAgLTEsICAgIDIzLAotICAgICAgMjksICAgIC0xLCAgICAyNCwgICAgMjksICAgIC0xLCAg
ICAxOCwgICAgMjksICAgIC0xLCAgICAxNywgICAgMjksCi0gICAgICAtMSwgICAgMjUsICAgIDI5
LCAgICAyNiwgICAgLTEKLX07Ci0KLS8qIFlZUkxJTkVbWVlOXSAtLSBzb3VyY2UgbGluZSB3aGVy
ZSBydWxlIG51bWJlciBZWU4gd2FzIGRlZmluZWQuICAqLworICAvKiBZWVJMSU5FW1lZTl0gLS0g
U291cmNlIGxpbmUgd2hlcmUgcnVsZSBudW1iZXIgWVlOIHdhcyBkZWZpbmVkLiAgKi8KIHN0YXRp
YyBjb25zdCB5eXR5cGVfdWludDggeXlybGluZVtdID0KIHsKLSAgICAgICAwLCAgICA5MSwgICAg
OTEsICAgIDk4LCAgICA5OSwgICAxMDIsICAgMTA1LCAgIDEwOCwgICAxMTEsICAgMTE0LAotICAg
ICAxMTcsICAgMTIwLCAgIDEyMywgICAxMjYsICAgMTI5LCAgIDEzMiwgICAxMzUsICAgMTM4LCAg
IDE0MSwgICAxNDQsCi0gICAgIDE1NywgICAxNzAsICAgMTczLCAgIDE3NiwgICAxNzksICAgMTgy
LCAgIDE4NQorICAgICAgIDAsICAgIDk3LCAgICA5NywgICAxMDQsICAgMTA1LCAgIDEwOCwgICAx
MTEsICAgMTE0LCAgIDExNywgICAxMjAsCisgICAgIDEyMywgICAxMjYsICAgMTI5LCAgIDEzMiwg
ICAxMzUsICAgMTM4LCAgIDE0MSwgICAxNDQsICAgMTQ3LCAgIDE1MCwKKyAgICAgMTYzLCAgIDE3
NiwgICAxNzksICAgMTgyLCAgIDE4NSwgICAxODgsICAgMTkxCiB9OwogI2VuZGlmCiAKLSNpZiBZ
WURFQlVHIHx8IFlZRVJST1JfVkVSQk9TRSB8fCBZWVRPS0VOX1RBQkxFCisjaWYgWVlERUJVRyB8
fCBZWUVSUk9SX1ZFUkJPU0UgfHwgMAogLyogWVlUTkFNRVtTWU1CT0wtTlVNXSAtLSBTdHJpbmcg
bmFtZSBvZiB0aGUgc3ltYm9sIFNZTUJPTC1OVU0uCiAgICBGaXJzdCwgdGhlIHRlcm1pbmFscywg
dGhlbiwgc3RhcnRpbmcgYXQgWVlOVE9LRU5TLCBub250ZXJtaW5hbHMuICAqLwogc3RhdGljIGNv
bnN0IGNoYXIgKmNvbnN0IHl5dG5hbWVbXSA9CiB7CiAgICIkZW5kIiwgImVycm9yIiwgIiR1bmRl
ZmluZWQiLCAiVE9LX0NPTlNUX0lOVCIsICJUT0tfT1BfT1IiLAotICAiVE9LX09QX0FORCIsICIn
fCciLCAiJ14nIiwgIicmJyIsICJUT0tfT1BfTkUiLCAiVE9LX09QX0VRIiwgIic8JyIsCi0gICIn
PiciLCAiVE9LX09QX0dFIiwgIlRPS19PUF9MRSIsICJUT0tfT1BfUklHSFQiLCAiVE9LX09QX0xF
RlQiLCAiJysnIiwKKyAgIlRPS19PUF9BTkQiLCAiJ3wnIiwgIideJyIsICInJiciLCAiVE9LX09Q
X0VRIiwgIlRPS19PUF9ORSIsICInPCciLAorICAiJz4nIiwgIlRPS19PUF9MRSIsICJUT0tfT1Bf
R0UiLCAiVE9LX09QX0xFRlQiLCAiVE9LX09QX1JJR0hUIiwgIicrJyIsCiAgICInLSciLCAiJyon
IiwgIicvJyIsICInJSciLCAiVE9LX1VOQVJZIiwgIichJyIsICInficiLCAiJygnIiwgIicpJyIs
Ci0gICIkYWNjZXB0IiwgImlucHV0IiwgImV4cHJlc3Npb24iLCAwCisgICIkYWNjZXB0IiwgImlu
cHV0IiwgImV4cHJlc3Npb24iLCBZWV9OVUxMUFRSCiB9OwogI2VuZGlmCiAKICMgaWZkZWYgWVlQ
UklOVAotLyogWVlUT0tOVU1bWVlMRVgtTlVNXSAtLSBJbnRlcm5hbCB0b2tlbiBudW1iZXIgY29y
cmVzcG9uZGluZyB0bwotICAgdG9rZW4gWVlMRVgtTlVNLiAgKi8KKy8qIFlZVE9LTlVNW05VTV0g
LS0gKEV4dGVybmFsKSB0b2tlbiBudW1iZXIgY29ycmVzcG9uZGluZyB0byB0aGUKKyAgIChpbnRl
cm5hbCkgc3ltYm9sIG51bWJlciBOVU0gKHdoaWNoIG11c3QgYmUgdGhhdCBvZiBhIHRva2VuKS4g
ICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5eXRva251bVtdID0KIHsKICAgICAgICAw
LCAgIDI1NiwgICAyNTcsICAgMjU4LCAgIDI1OSwgICAyNjAsICAgMTI0LCAgICA5NCwgICAgMzgs
ICAgMjYxLApAQCAtNTEyLDQ0ICs1MTcsMTggQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50MTYg
eXl0b2tudW1bXSA9CiB9OwogIyBlbmRpZgogCi0vKiBZWVIxW1lZTl0gLS0gU3ltYm9sIG51bWJl
ciBvZiBzeW1ib2wgdGhhdCBydWxlIFlZTiBkZXJpdmVzLiAgKi8KLXN0YXRpYyBjb25zdCB5eXR5
cGVfdWludDggeXlyMVtdID0KLXsKLSAgICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAy
OSwgICAgMjksICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5LAotICAgICAgMjksICAgIDI5LCAg
ICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwgICAgMjksCi0g
ICAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOQotfTsKKyNk
ZWZpbmUgWVlQQUNUX05JTkYgLTExCiAKLS8qIFlZUjJbWVlOXSAtLSBOdW1iZXIgb2Ygc3ltYm9s
cyBjb21wb3NpbmcgcmlnaHQgaGFuZCBzaWRlIG9mIHJ1bGUgWVlOLiAgKi8KLXN0YXRpYyBjb25z
dCB5eXR5cGVfdWludDggeXlyMltdID0KLXsKLSAgICAgICAwLCAgICAgMiwgICAgIDEsICAgICAx
LCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLAotICAgICAgIDMsICAg
ICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywgICAg
IDMsCi0gICAgICAgMywgICAgIDMsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMwot
fTsKKyNkZWZpbmUgeXlwYWN0X3ZhbHVlX2lzX2RlZmF1bHQoWXlzdGF0ZSkgXAorICAoISEoKFl5
c3RhdGUpID09ICgtMTEpKSkKIAotLyogWVlERUZBQ1RbU1RBVEUtTkFNRV0gLS0gRGVmYXVsdCBy
dWxlIHRvIHJlZHVjZSB3aXRoIGluIHN0YXRlCi0gICBTVEFURS1OVU0gd2hlbiBZWVRBQkxFIGRv
ZXNuJ3Qgc3BlY2lmeSBzb21ldGhpbmcgZWxzZSB0byBkby4gIFplcm8KLSAgIG1lYW5zIHRoZSBk
ZWZhdWx0IGlzIGFuIGVycm9yLiAgKi8KLXN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlkZWZh
Y3RbXSA9Ci17Ci0gICAgICAgMCwgICAgIDMsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAyLCAgICAyNSwKLSAgICAgIDI0LCAgICAyMiwgICAgMjMsICAgICAw
LCAgICAgMSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAyNiwgICAgIDQsICAgICA1LCAgICAgNiwg
ICAgIDcsICAgICA4LCAgICAgOSwKLSAgICAgIDEwLCAgICAxNCwgICAgMTMsICAgIDExLCAgICAx
MiwgICAgMTUsICAgIDE2LCAgICAxOCwgICAgMTcsICAgIDIxLAotICAgICAgMjAsICAgIDE5Ci19
OworI2RlZmluZSBZWVRBQkxFX05JTkYgLTEKIAotLyogWVlERUZHT1RPW05URVJNLU5VTV0uICAq
Lwotc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQ4IHl5ZGVmZ290b1tdID0KLXsKLSAgICAgIC0xLCAg
ICAgNywgICAgIDgKLX07CisjZGVmaW5lIHl5dGFibGVfdmFsdWVfaXNfZXJyb3IoWXl0YWJsZV92
YWx1ZSkgXAorICAwCiAKLS8qIFlZUEFDVFtTVEFURS1OVU1dIC0tIEluZGV4IGluIFlZVEFCTEUg
b2YgdGhlIHBvcnRpb24gZGVzY3JpYmluZwotICAgU1RBVEUtTlVNLiAgKi8KLSNkZWZpbmUgWVlQ
QUNUX05JTkYgLTExCisgIC8qIFlZUEFDVFtTVEFURS1OVU1dIC0tIEluZGV4IGluIFlZVEFCTEUg
b2YgdGhlIHBvcnRpb24gZGVzY3JpYmluZworICAgICBTVEFURS1OVU0uICAqLwogc3RhdGljIGNv
bnN0IHl5dHlwZV9pbnQxNiB5eXBhY3RbXSA9CiB7CiAgICAgICA0NiwgICAtMTEsICAgIDQ2LCAg
ICA0NiwgICAgNDYsICAgIDQ2LCAgICA0NiwgICAgMTIsICAgIDY4LCAgIC0xMSwKQEAgLTU2MCwx
NyArNTM5LDM0IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXlwYWN0W10gPQogICAgICAt
MTEsICAgLTExCiB9OwogCi0vKiBZWVBHT1RPW05URVJNLU5VTV0uICAqLworICAvKiBZWURFRkFD
VFtTVEFURS1OVU1dIC0tIERlZmF1bHQgcmVkdWN0aW9uIG51bWJlciBpbiBzdGF0ZSBTVEFURS1O
VU0uCisgICAgIFBlcmZvcm1lZCB3aGVuIFlZVEFCTEUgZG9lcyBub3Qgc3BlY2lmeSBzb21ldGhp
bmcgZWxzZSB0byBkby4gIFplcm8KKyAgICAgbWVhbnMgdGhlIGRlZmF1bHQgaXMgYW4gZXJyb3Iu
ICAqLworc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eWRlZmFjdFtdID0KK3sKKyAgICAgICAw
LCAgICAgMywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDIs
ICAgIDI1LAorICAgICAgMjQsICAgIDIyLCAgICAyMywgICAgIDAsICAgICAxLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDI2LCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgIDEw
LAorICAgICAgIDksICAgIDE0LCAgICAxMywgICAgMTIsICAgIDExLCAgICAxNiwgICAgMTUsICAg
IDE4LCAgICAxNywgICAgMjEsCisgICAgICAyMCwgICAgMTkKK307CisKKyAgLyogWVlQR09UT1tO
VEVSTS1OVU1dLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50OCB5eXBnb3RvW10gPQogewog
ICAgICAtMTEsICAgLTExLCAgICAtMgogfTsKIAotLyogWVlUQUJMRVtZWVBBQ1RbU1RBVEUtTlVN
XV0uICBXaGF0IHRvIGRvIGluIHN0YXRlIFNUQVRFLU5VTS4gIElmCi0gICBwb3NpdGl2ZSwgc2hp
ZnQgdGhhdCB0b2tlbi4gIElmIG5lZ2F0aXZlLCByZWR1Y2UgdGhlIHJ1bGUgd2hpY2gKLSAgIG51
bWJlciBpcyB0aGUgb3Bwb3NpdGUuICBJZiB6ZXJvLCBkbyB3aGF0IFlZREVGQUNUIHNheXMuCi0g
ICBJZiBZWVRBQkxFX05JTkYsIHN5bnRheCBlcnJvci4gICovCi0jZGVmaW5lIFlZVEFCTEVfTklO
RiAtMQorICAvKiBZWURFRkdPVE9bTlRFUk0tTlVNXS4gICovCitzdGF0aWMgY29uc3QgeXl0eXBl
X2ludDggeXlkZWZnb3RvW10gPQoreworICAgICAgLTEsICAgICA3LCAgICAgOAorfTsKKworICAv
KiBZWVRBQkxFW1lZUEFDVFtTVEFURS1OVU1dXSAtLSBXaGF0IHRvIGRvIGluIHN0YXRlIFNUQVRF
LU5VTS4gIElmCisgICAgIHBvc2l0aXZlLCBzaGlmdCB0aGF0IHRva2VuLiAgSWYgbmVnYXRpdmUs
IHJlZHVjZSB0aGUgcnVsZSB3aG9zZQorICAgICBudW1iZXIgaXMgdGhlIG9wcG9zaXRlLiAgSWYg
WVlUQUJMRV9OSU5GLCBzeW50YXggZXJyb3IuICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV91aW50
OCB5eXRhYmxlW10gPQogewogICAgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAg
ICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsCkBAIC02MTUsOCArNjExLDggQEAgc3Rh
dGljIGNvbnN0IHl5dHlwZV9pbnQ4IHl5Y2hlY2tbXSA9CiAgICAgICAxNiwgICAgMTcsICAgIDE4
LCAgICAxOSwgICAgMjAsICAgIDIxCiB9OwogCi0vKiBZWVNUT1NbU1RBVEUtTlVNXSAtLSBUaGUg
KGludGVybmFsIG51bWJlciBvZiB0aGUpIGFjY2Vzc2luZwotICAgc3ltYm9sIG9mIHN0YXRlIFNU
QVRFLU5VTS4gICovCisgIC8qIFlZU1RPU1tTVEFURS1OVU1dIC0tIFRoZSAoaW50ZXJuYWwgbnVt
YmVyIG9mIHRoZSkgYWNjZXNzaW5nCisgICAgIHN5bWJvbCBvZiBzdGF0ZSBTVEFURS1OVU0uICAq
Lwogc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXN0b3NbXSA9CiB7CiAgICAgICAgMCwgICAg
IDMsICAgIDE3LCAgICAxOCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjgsICAgIDI5LCAgICAy
OSwKQEAgLTYyNyw5NSArNjIzLDU3IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlzdG9z
W10gPQogICAgICAgMjksICAgIDI5CiB9OwogCi0jZGVmaW5lIHl5ZXJyb2sJCSh5eWVycnN0YXR1
cyA9IDApCi0jZGVmaW5lIHl5Y2xlYXJpbgkoeXljaGFyID0gWVlFTVBUWSkKLSNkZWZpbmUgWVlF
TVBUWQkJKC0yKQotI2RlZmluZSBZWUVPRgkJMAorICAvKiBZWVIxW1lZTl0gLS0gU3ltYm9sIG51
bWJlciBvZiBzeW1ib2wgdGhhdCBydWxlIFlZTiBkZXJpdmVzLiAgKi8KK3N0YXRpYyBjb25zdCB5
eXR5cGVfdWludDggeXlyMVtdID0KK3sKKyAgICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAg
ICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5LAorICAgICAgMjksICAgIDI5
LCAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwgICAgMjks
CisgICAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOQorfTsK
IAotI2RlZmluZSBZWUFDQ0VQVAlnb3RvIHl5YWNjZXB0bGFiCi0jZGVmaW5lIFlZQUJPUlQJCWdv
dG8geXlhYm9ydGxhYgotI2RlZmluZSBZWUVSUk9SCQlnb3RvIHl5ZXJyb3JsYWIKKyAgLyogWVlS
MltZWU5dIC0tIE51bWJlciBvZiBzeW1ib2xzIG9uIHRoZSByaWdodCBoYW5kIHNpZGUgb2YgcnVs
ZSBZWU4uICAqLworc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXIyW10gPQoreworICAgICAg
IDAsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAg
MywgICAgIDMsCisgICAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAg
ICAgMywgICAgIDMsICAgICAzLCAgICAgMywKKyAgICAgICAzLCAgICAgMywgICAgIDIsICAgICAy
LCAgICAgMiwgICAgIDIsICAgICAzCit9OwogCiAKLS8qIExpa2UgWVlFUlJPUiBleGNlcHQgZG8g
Y2FsbCB5eWVycm9yLiAgVGhpcyByZW1haW5zIGhlcmUgdGVtcG9yYXJpbHkKLSAgIHRvIGVhc2Ug
dGhlIHRyYW5zaXRpb24gdG8gdGhlIG5ldyBtZWFuaW5nIG9mIFlZRVJST1IsIGZvciBHQ0MuCi0g
ICBPbmNlIEdDQyB2ZXJzaW9uIDIgaGFzIHN1cHBsYW50ZWQgdmVyc2lvbiAxLCB0aGlzIGNhbiBn
by4gICovCisjZGVmaW5lIHl5ZXJyb2sgICAgICAgICAoeXllcnJzdGF0dXMgPSAwKQorI2RlZmlu
ZSB5eWNsZWFyaW4gICAgICAgKHl5Y2hhciA9IFlZRU1QVFkpCisjZGVmaW5lIFlZRU1QVFkgICAg
ICAgICAoLTIpCisjZGVmaW5lIFlZRU9GICAgICAgICAgICAwCisKKyNkZWZpbmUgWVlBQ0NFUFQg
ICAgICAgIGdvdG8geXlhY2NlcHRsYWIKKyNkZWZpbmUgWVlBQk9SVCAgICAgICAgIGdvdG8geXlh
Ym9ydGxhYgorI2RlZmluZSBZWUVSUk9SICAgICAgICAgZ290byB5eWVycm9ybGFiCiAKLSNkZWZp
bmUgWVlGQUlMCQlnb3RvIHl5ZXJybGFiCiAKICNkZWZpbmUgWVlSRUNPVkVSSU5HKCkgICghIXl5
ZXJyc3RhdHVzKQogCi0jZGVmaW5lIFlZQkFDS1VQKFRva2VuLCBWYWx1ZSkJCQkJCVwKLWRvCQkJ
CQkJCQlcCi0gIGlmICh5eWNoYXIgPT0gWVlFTVBUWSAmJiB5eWxlbiA9PSAxKQkJCQlcCi0gICAg
ewkJCQkJCQkJXAotICAgICAgeXljaGFyID0gKFRva2VuKTsJCQkJCQlcCi0gICAgICB5eWx2YWwg
PSAoVmFsdWUpOwkJCQkJCVwKLSAgICAgIHl5dG9rZW4gPSBZWVRSQU5TTEFURSAoeXljaGFyKTsJ
CQkJXAotICAgICAgWVlQT1BTVEFDSyAoMSk7CQkJCQkJXAotICAgICAgZ290byB5eWJhY2t1cDsJ
CQkJCQlcCi0gICAgfQkJCQkJCQkJXAotICBlbHNlCQkJCQkJCQlcCi0gICAgewkJCQkJCQkJXAor
I2RlZmluZSBZWUJBQ0tVUChUb2tlbiwgVmFsdWUpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKK2RvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgIGlmICh5eWNoYXIgPT0gWVlFTVBUWSkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHl5Y2hhciA9IChU
b2tlbik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICB5
eWx2YWwgPSAoVmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgWVlQT1BTVEFDSyAoeXlsZW4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgIHl5c3RhdGUgPSAqeXlzc3A7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICBnb3RvIHl5YmFja3VwOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZWxzZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgICAgeXllcnJvciAoY29udGV4dCwgWVlfKCJzeW50YXggZXJyb3I6IGNhbm5vdCBi
YWNrIHVwIikpOyBcCi0gICAgICBZWUVSUk9SOwkJCQkJCQlcCi0gICAgfQkJCQkJCQkJXAotd2hp
bGUgKFlZSUQgKDApKQotCi0KLSNkZWZpbmUgWVlURVJST1IJMQotI2RlZmluZSBZWUVSUkNPREUJ
MjU2Ci0KLQotLyogWVlMTE9DX0RFRkFVTFQgLS0gU2V0IENVUlJFTlQgdG8gc3BhbiBmcm9tIFJI
U1sxXSB0byBSSFNbTl0uCi0gICBJZiBOIGlzIDAsIHRoZW4gc2V0IENVUlJFTlQgdG8gdGhlIGVt
cHR5IGxvY2F0aW9uIHdoaWNoIGVuZHMKLSAgIHRoZSBwcmV2aW91cyBzeW1ib2w6IFJIU1swXSAo
YWx3YXlzIGRlZmluZWQpLiAgKi8KLQotI2RlZmluZSBZWVJIU0xPQyhSaHMsIEspICgoUmhzKVtL
XSkKLSNpZm5kZWYgWVlMTE9DX0RFRkFVTFQKLSMgZGVmaW5lIFlZTExPQ19ERUZBVUxUKEN1cnJl
bnQsIFJocywgTikJCQkJXAotICAgIGRvCQkJCQkJCQkJXAotICAgICAgaWYgKFlZSUQgKE4pKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0JewkJ
CQkJCQkJXAotCSAgKEN1cnJlbnQpLmZpcnN0X2xpbmUgICA9IFlZUkhTTE9DIChSaHMsIDEpLmZp
cnN0X2xpbmU7CVwKLQkgIChDdXJyZW50KS5maXJzdF9jb2x1bW4gPSBZWVJIU0xPQyAoUmhzLCAx
KS5maXJzdF9jb2x1bW47CVwKLQkgIChDdXJyZW50KS5sYXN0X2xpbmUgICAgPSBZWVJIU0xPQyAo
UmhzLCBOKS5sYXN0X2xpbmU7CQlcCi0JICAoQ3VycmVudCkubGFzdF9jb2x1bW4gID0gWVlSSFNM
T0MgKFJocywgTikubGFzdF9jb2x1bW47CVwKLQl9CQkJCQkJCQlcCi0gICAgICBlbHNlCQkJCQkJ
CQlcCi0JewkJCQkJCQkJXAotCSAgKEN1cnJlbnQpLmZpcnN0X2xpbmUgICA9IChDdXJyZW50KS5s
YXN0X2xpbmUgICA9CQlcCi0JICAgIFlZUkhTTE9DIChSaHMsIDApLmxhc3RfbGluZTsJCQkJXAot
CSAgKEN1cnJlbnQpLmZpcnN0X2NvbHVtbiA9IChDdXJyZW50KS5sYXN0X2NvbHVtbiA9CQlcCi0J
ICAgIFlZUkhTTE9DIChSaHMsIDApLmxhc3RfY29sdW1uOwkJCQlcCi0JfQkJCQkJCQkJXAotICAg
IHdoaWxlIChZWUlEICgwKSkKLSNlbmRpZgotCi0KLS8qIFlZX0xPQ0FUSU9OX1BSSU5UIC0tIFBy
aW50IHRoZSBsb2NhdGlvbiBvbiB0aGUgc3RyZWFtLgotICAgVGhpcyBtYWNybyB3YXMgbm90IG1h
bmRhdGVkIG9yaWdpbmFsbHk6IGRlZmluZSBvbmx5IGlmIHdlIGtub3cKLSAgIHdlIHdvbid0IGJy
ZWFrIHVzZXIgY29kZTogd2hlbiB0aGVzZSBhcmUgdGhlIGxvY2F0aW9ucyB3ZSBrbm93LiAgKi8K
LQotI2lmbmRlZiBZWV9MT0NBVElPTl9QUklOVAotIyBpZiBkZWZpbmVkIFlZTFRZUEVfSVNfVFJJ
VklBTCAmJiBZWUxUWVBFX0lTX1RSSVZJQUwKLSMgIGRlZmluZSBZWV9MT0NBVElPTl9QUklOVChG
aWxlLCBMb2MpCQkJXAotICAgICBmcHJpbnRmIChGaWxlLCAiJWQuJWQtJWQuJWQiLAkJCVwKLQkg
ICAgICAoTG9jKS5maXJzdF9saW5lLCAoTG9jKS5maXJzdF9jb2x1bW4sCVwKLQkgICAgICAoTG9j
KS5sYXN0X2xpbmUsICAoTG9jKS5sYXN0X2NvbHVtbikKLSMgZWxzZQotIyAgZGVmaW5lIFlZX0xP
Q0FUSU9OX1BSSU5UKEZpbGUsIExvYykgKCh2b2lkKSAwKQotIyBlbmRpZgotI2VuZGlmCi0KKyAg
ICAgIFlZRVJST1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAord2hpbGUgKDApCisKKy8qIEVycm9yIHRva2VuIG51bWJlciAqLwor
I2RlZmluZSBZWVRFUlJPUiAgICAgICAgMQorI2RlZmluZSBZWUVSUkNPREUgICAgICAgMjU2CiAK
LS8qIFlZTEVYIC0tIGNhbGxpbmcgYHl5bGV4JyB3aXRoIHRoZSByaWdodCBhcmd1bWVudHMuICAq
LwogCi0jaWZkZWYgWVlMRVhfUEFSQU0KLSMgZGVmaW5lIFlZTEVYIHl5bGV4ICgmeXlsdmFsLCBZ
WUxFWF9QQVJBTSkKLSNlbHNlCi0jIGRlZmluZSBZWUxFWCB5eWxleCAoJnl5bHZhbCwgY29udGV4
dCkKLSNlbmRpZgogCiAvKiBFbmFibGUgZGVidWdnaW5nIGlmIHJlcXVlc3RlZC4gICovCiAjaWYg
WVlERUJVRwpAQCAtNzI1LDU2ICs2ODMsNDcgQEAgd2hpbGUgKFlZSUQgKDApKQogIyAgZGVmaW5l
IFlZRlBSSU5URiBmcHJpbnRmCiAjIGVuZGlmCiAKLSMgZGVmaW5lIFlZRFBSSU5URihBcmdzKQkJ
CVwKLWRvIHsJCQkJCQlcCi0gIGlmICh5eWRlYnVnKQkJCQkJXAotICAgIFlZRlBSSU5URiBBcmdz
OwkJCQlcCi19IHdoaWxlIChZWUlEICgwKSkKLQotIyBkZWZpbmUgWVlfU1lNQk9MX1BSSU5UKFRp
dGxlLCBUeXBlLCBWYWx1ZSwgTG9jYXRpb24pCQkJICBcCi1kbyB7CQkJCQkJCQkJICBcCi0gIGlm
ICh5eWRlYnVnKQkJCQkJCQkJICBcCi0gICAgewkJCQkJCQkJCSAgXAotICAgICAgWVlGUFJJTlRG
IChzdGRlcnIsICIlcyAiLCBUaXRsZSk7CQkJCQkgIFwKLSAgICAgIHl5X3N5bWJvbF9wcmludCAo
c3RkZXJyLAkJCQkJCSAgXAotCQkgIFR5cGUsIFZhbHVlLCBjb250ZXh0KTsgXAotICAgICAgWVlG
UFJJTlRGIChzdGRlcnIsICJcbiIpOwkJCQkJCSAgXAotICAgIH0JCQkJCQkJCQkgIFwKLX0gd2hp
bGUgKFlZSUQgKDApKQorIyBkZWZpbmUgWVlEUFJJTlRGKEFyZ3MpICAgICAgICAgICAgICAgICAg
ICAgICAgXAorZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICBpZiAoeXlkZWJ1ZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IFlZRlBSSU5URiBBcmdzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfSB3aGlsZSAo
MCkKIAorLyogVGhpcyBtYWNybyBpcyBwcm92aWRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0
eS4gKi8KKyNpZm5kZWYgWVlfTE9DQVRJT05fUFJJTlQKKyMgZGVmaW5lIFlZX0xPQ0FUSU9OX1BS
SU5UKEZpbGUsIExvYykgKCh2b2lkKSAwKQorI2VuZGlmCiAKLS8qLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0uCi18IFByaW50IHRoaXMgc3ltYm9sIG9uIFlZT1VUUFVULiAgfAotYC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAotLypBUkdTVVNFRCovCi0jaWYgKGRl
ZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKLSAgICAgfHwgZGVmaW5l
ZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQorIyBkZWZpbmUgWVlfU1lNQk9MX1BS
SU5UKFRpdGxlLCBUeXBlLCBWYWx1ZSwgTG9jYXRpb24pICAgICAgICAgICAgICAgICAgICBcCitk
byB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgaWYgKHl5ZGVidWcpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIiVzICIsIFRpdGxlKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHl5X3N5bWJvbF9wcmludCAoc3RkZXJyLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAg
ICAgVHlwZSwgVmFsdWUsIGNvbnRleHQpOyBcCisgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIlxu
Iik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorfSB3aGlsZSAoMCkKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0uCit8IFByaW50IHRoaXMgc3ltYm9sJ3MgdmFsdWUgb24gWVlPVVRQVVQu
ICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKIHN0YXRp
YyB2b2lkCiB5eV9zeW1ib2xfdmFsdWVfcHJpbnQgKEZJTEUgKnl5b3V0cHV0LCBpbnQgeXl0eXBl
LCBZWVNUWVBFIGNvbnN0ICogY29uc3QgeXl2YWx1ZXAsIENvbnRleHQgKmNvbnRleHQpCi0jZWxz
ZQotc3RhdGljIHZvaWQKLXl5X3N5bWJvbF92YWx1ZV9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwg
eXl2YWx1ZXAsIGNvbnRleHQpCi0gICAgRklMRSAqeXlvdXRwdXQ7Ci0gICAgaW50IHl5dHlwZTsK
LSAgICBZWVNUWVBFIGNvbnN0ICogY29uc3QgeXl2YWx1ZXA7Ci0gICAgQ29udGV4dCAqY29udGV4
dDsKLSNlbmRpZgogeworICBGSUxFICp5eW8gPSB5eW91dHB1dDsKKyAgWVlVU0UgKHl5byk7Cisg
IFlZVVNFIChjb250ZXh0KTsKICAgaWYgKCF5eXZhbHVlcCkKICAgICByZXR1cm47Ci0gIFlZVVNF
IChjb250ZXh0KTsKICMgaWZkZWYgWVlQUklOVAogICBpZiAoeXl0eXBlIDwgWVlOVE9LRU5TKQog
ICAgIFlZUFJJTlQgKHl5b3V0cHV0LCB5eXRva251bVt5eXR5cGVdLCAqeXl2YWx1ZXApOwotIyBl
bHNlCi0gIFlZVVNFICh5eW91dHB1dCk7CiAjIGVuZGlmCi0gIHN3aXRjaCAoeXl0eXBlKQotICAg
IHsKLSAgICAgIGRlZmF1bHQ6Ci0JYnJlYWs7Ci0gICAgfQorICBZWVVTRSAoeXl0eXBlKTsKIH0K
IAogCkBAIC03ODIsMjMgKzczMSwxMSBAQCB5eV9zeW1ib2xfdmFsdWVfcHJpbnQgKHl5b3V0cHV0
LCB5eXR5cGUsCiB8IFByaW50IHRoaXMgc3ltYm9sIG9uIFlZT1VUUFVULiAgfAogYC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAotI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRl
ZmluZWQgX19DOTlfX0ZVTkNfXyBcCi0gICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVm
aW5lZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lkCiB5eV9zeW1ib2xfcHJpbnQgKEZJTEUgKnl5b3V0
cHV0LCBpbnQgeXl0eXBlLCBZWVNUWVBFIGNvbnN0ICogY29uc3QgeXl2YWx1ZXAsIENvbnRleHQg
KmNvbnRleHQpCi0jZWxzZQotc3RhdGljIHZvaWQKLXl5X3N5bWJvbF9wcmludCAoeXlvdXRwdXQs
IHl5dHlwZSwgeXl2YWx1ZXAsIGNvbnRleHQpCi0gICAgRklMRSAqeXlvdXRwdXQ7Ci0gICAgaW50
IHl5dHlwZTsKLSAgICBZWVNUWVBFIGNvbnN0ICogY29uc3QgeXl2YWx1ZXA7Ci0gICAgQ29udGV4
dCAqY29udGV4dDsKLSNlbmRpZgogewotICBpZiAoeXl0eXBlIDwgWVlOVE9LRU5TKQotICAgIFlZ
RlBSSU5URiAoeXlvdXRwdXQsICJ0b2tlbiAlcyAoIiwgeXl0bmFtZVt5eXR5cGVdKTsKLSAgZWxz
ZQotICAgIFlZRlBSSU5URiAoeXlvdXRwdXQsICJudGVybSAlcyAoIiwgeXl0bmFtZVt5eXR5cGVd
KTsKKyAgWVlGUFJJTlRGICh5eW91dHB1dCwgIiVzICVzICgiLAorICAgICAgICAgICAgIHl5dHlw
ZSA8IFlZTlRPS0VOUyA/ICJ0b2tlbiIgOiAibnRlcm0iLCB5eXRuYW1lW3l5dHlwZV0pOwogCiAg
IHl5X3N5bWJvbF92YWx1ZV9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2YWx1ZXAsIGNvbnRl
eHQpOwogICBZWUZQUklOVEYgKHl5b3V0cHV0LCAiKSIpOwpAQCAtODA5LDY3ICs3NDYsNTQgQEAg
eXlfc3ltYm9sX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbAogfCBUT1AgKGluY2x1ZGVk
KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiBg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKi8KIAotI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZV
TkNfXyBcCi0gICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikK
IHN0YXRpYyB2b2lkCi15eV9zdGFja19wcmludCAoeXl0eXBlX2ludDE2ICpib3R0b20sIHl5dHlw
ZV9pbnQxNiAqdG9wKQotI2Vsc2UKLXN0YXRpYyB2b2lkCi15eV9zdGFja19wcmludCAoYm90dG9t
LCB0b3ApCi0gICAgeXl0eXBlX2ludDE2ICpib3R0b207Ci0gICAgeXl0eXBlX2ludDE2ICp0b3A7
Ci0jZW5kaWYKK3l5X3N0YWNrX3ByaW50ICh5eXR5cGVfaW50MTYgKnl5Ym90dG9tLCB5eXR5cGVf
aW50MTYgKnl5dG9wKQogewogICBZWUZQUklOVEYgKHN0ZGVyciwgIlN0YWNrIG5vdyIpOwotICBm
b3IgKDsgYm90dG9tIDw9IHRvcDsgKytib3R0b20pCi0gICAgWVlGUFJJTlRGIChzdGRlcnIsICIg
JWQiLCAqYm90dG9tKTsKKyAgZm9yICg7IHl5Ym90dG9tIDw9IHl5dG9wOyB5eWJvdHRvbSsrKQor
ICAgIHsKKyAgICAgIGludCB5eWJvdCA9ICp5eWJvdHRvbTsKKyAgICAgIFlZRlBSSU5URiAoc3Rk
ZXJyLCAiICVkIiwgeXlib3QpOworICAgIH0KICAgWVlGUFJJTlRGIChzdGRlcnIsICJcbiIpOwog
fQogCi0jIGRlZmluZSBZWV9TVEFDS19QUklOVChCb3R0b20sIFRvcCkJCQkJXAotZG8gewkJCQkJ
CQkJXAotICBpZiAoeXlkZWJ1ZykJCQkJCQkJXAotICAgIHl5X3N0YWNrX3ByaW50ICgoQm90dG9t
KSwgKFRvcCkpOwkJCQlcCi19IHdoaWxlIChZWUlEICgwKSkKKyMgZGVmaW5lIFlZX1NUQUNLX1BS
SU5UKEJvdHRvbSwgVG9wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitkbyB7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICBpZiAoeXlkZWJ1ZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICB5eV9zdGFja19wcmludCAoKEJvdHRvbSksIChUb3ApKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCit9IHdoaWxlICgwKQogCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgogfCBSZXBvcnQgdGhhdCB0aGUgWVlSVUxF
IGlzIGdvaW5nIHRvIGJlIHJlZHVjZWQuICB8CiBgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAotI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmlu
ZWQgX19DOTlfX0ZVTkNfXyBcCi0gICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5l
ZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lkCi15eV9yZWR1Y2VfcHJpbnQgKFlZU1RZUEUgKnl5dnNw
LCBpbnQgeXlydWxlLCBDb250ZXh0ICpjb250ZXh0KQotI2Vsc2UKLXN0YXRpYyB2b2lkCi15eV9y
ZWR1Y2VfcHJpbnQgKHl5dnNwLCB5eXJ1bGUsIGNvbnRleHQpCi0gICAgWVlTVFlQRSAqeXl2c3A7
Ci0gICAgaW50IHl5cnVsZTsKLSAgICBDb250ZXh0ICpjb250ZXh0OwotI2VuZGlmCit5eV9yZWR1
Y2VfcHJpbnQgKHl5dHlwZV9pbnQxNiAqeXlzc3AsIFlZU1RZUEUgKnl5dnNwLCBpbnQgeXlydWxl
LCBDb250ZXh0ICpjb250ZXh0KQogeworICB1bnNpZ25lZCBsb25nIGludCB5eWxubyA9IHl5cmxp
bmVbeXlydWxlXTsKICAgaW50IHl5bnJocyA9IHl5cjJbeXlydWxlXTsKICAgaW50IHl5aTsKLSAg
dW5zaWduZWQgbG9uZyBpbnQgeXlsbm8gPSB5eXJsaW5lW3l5cnVsZV07CiAgIFlZRlBSSU5URiAo
c3RkZXJyLCAiUmVkdWNpbmcgc3RhY2sgYnkgcnVsZSAlZCAobGluZSAlbHUpOlxuIiwKLQkgICAg
IHl5cnVsZSAtIDEsIHl5bG5vKTsKKyAgICAgICAgICAgICB5eXJ1bGUgLSAxLCB5eWxubyk7CiAg
IC8qIFRoZSBzeW1ib2xzIGJlaW5nIHJlZHVjZWQuICAqLwogICBmb3IgKHl5aSA9IDA7IHl5aSA8
IHl5bnJoczsgeXlpKyspCiAgICAgewotICAgICAgZnByaW50ZiAoc3RkZXJyLCAiICAgJCVkID0g
IiwgeXlpICsgMSk7Ci0gICAgICB5eV9zeW1ib2xfcHJpbnQgKHN0ZGVyciwgeXlyaHNbeXlwcmhz
W3l5cnVsZV0gKyB5eWldLAotCQkgICAgICAgJih5eXZzcFsoeXlpICsgMSkgLSAoeXlucmhzKV0p
Ci0JCSAgICAgICAJCSAgICAgICAsIGNvbnRleHQpOwotICAgICAgZnByaW50ZiAoc3RkZXJyLCAi
XG4iKTsKKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiICAgJCVkID0gIiwgeXlpICsgMSk7Cisg
ICAgICB5eV9zeW1ib2xfcHJpbnQgKHN0ZGVyciwKKyAgICAgICAgICAgICAgICAgICAgICAgeXlz
dG9zW3l5c3NwW3l5aSArIDEgLSB5eW5yaHNdXSwKKyAgICAgICAgICAgICAgICAgICAgICAgJih5
eXZzcFsoeXlpICsgMSkgLSAoeXlucmhzKV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLCBjb250ZXh0KTsKKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAi
XG4iKTsKICAgICB9CiB9CiAKLSMgZGVmaW5lIFlZX1JFRFVDRV9QUklOVChSdWxlKQkJXAotZG8g
ewkJCQkJXAotICBpZiAoeXlkZWJ1ZykJCQkJXAotICAgIHl5X3JlZHVjZV9wcmludCAoeXl2c3As
IFJ1bGUsIGNvbnRleHQpOyBcCi19IHdoaWxlIChZWUlEICgwKSkKKyMgZGVmaW5lIFlZX1JFRFVD
RV9QUklOVChSdWxlKSAgICAgICAgICBcCitkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICBpZiAoeXlkZWJ1ZykgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICB5eV9yZWR1Y2VfcHJpbnQgKHl5c3NwLCB5eXZzcCwgUnVsZSwgY29udGV4dCk7IFwKK30gd2hp
bGUgKDApCiAKIC8qIE5vbnplcm8gbWVhbnMgcHJpbnQgcGFyc2UgdHJhY2UuICBJdCBpcyBsZWZ0
IHVuaW5pdGlhbGl6ZWQgc28gdGhhdAogICAgbXVsdGlwbGUgcGFyc2VycyBjYW4gY29leGlzdC4g
ICovCkBAIC04ODMsNyArODA3LDcgQEAgaW50IHl5ZGVidWc7CiAKIAogLyogWVlJTklUREVQVEgg
LS0gaW5pdGlhbCBzaXplIG9mIHRoZSBwYXJzZXIncyBzdGFja3MuICAqLwotI2lmbmRlZglZWUlO
SVRERVBUSAorI2lmbmRlZiBZWUlOSVRERVBUSAogIyBkZWZpbmUgWVlJTklUREVQVEggMjAwCiAj
ZW5kaWYKIApAQCAtODk4LDcgKzgyMiw2IEBAIGludCB5eWRlYnVnOwogIyBkZWZpbmUgWVlNQVhE
RVBUSCAxMDAwMAogI2VuZGlmCiAKLQwKIAogI2lmIFlZRVJST1JfVkVSQk9TRQogCkBAIC05MDcs
MTUgKzgzMCw4IEBAIGludCB5eWRlYnVnOwogIyAgIGRlZmluZSB5eXN0cmxlbiBzdHJsZW4KICMg
IGVsc2UKIC8qIFJldHVybiB0aGUgbGVuZ3RoIG9mIFlZU1RSLiAgKi8KLSNpZiAoZGVmaW5lZCBf
X1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAotICAgICB8fCBkZWZpbmVkIF9fY3Bs
dXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCiBzdGF0aWMgWVlTSVpFX1QKIHl5c3RybGVuIChj
b25zdCBjaGFyICp5eXN0cikKLSNlbHNlCi1zdGF0aWMgWVlTSVpFX1QKLXl5c3RybGVuICh5eXN0
cikKLSAgICBjb25zdCBjaGFyICp5eXN0cjsKLSNlbmRpZgogewogICBZWVNJWkVfVCB5eWxlbjsK
ICAgZm9yICh5eWxlbiA9IDA7IHl5c3RyW3l5bGVuXTsgeXlsZW4rKykKQEAgLTkzMSwxNiArODQ3
LDggQEAgeXlzdHJsZW4gKHl5c3RyKQogIyAgZWxzZQogLyogQ29weSBZWVNSQyB0byBZWURFU1Qs
IHJldHVybmluZyB0aGUgYWRkcmVzcyBvZiB0aGUgdGVybWluYXRpbmcgJ1wwJyBpbgogICAgWVlE
RVNULiAgKi8KLSNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18g
XAotICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCiBzdGF0
aWMgY2hhciAqCiB5eXN0cGNweSAoY2hhciAqeXlkZXN0LCBjb25zdCBjaGFyICp5eXNyYykKLSNl
bHNlCi1zdGF0aWMgY2hhciAqCi15eXN0cGNweSAoeXlkZXN0LCB5eXNyYykKLSAgICBjaGFyICp5
eWRlc3Q7Ci0gICAgY29uc3QgY2hhciAqeXlzcmM7Ci0jZW5kaWYKIHsKICAgY2hhciAqeXlkID0g
eXlkZXN0OwogICBjb25zdCBjaGFyICp5eXMgPSB5eXNyYzsKQEAgLTk3MCwyNyArODc4LDI3IEBA
IHl5dG5hbWVyciAoY2hhciAqeXlyZXMsIGNvbnN0IGNoYXIgKnl5c3QKICAgICAgIGNoYXIgY29u
c3QgKnl5cCA9IHl5c3RyOwogCiAgICAgICBmb3IgKDs7KQotCXN3aXRjaCAoKisreXlwKQotCSAg
ewotCSAgY2FzZSAnXCcnOgotCSAgY2FzZSAnLCc6Ci0JICAgIGdvdG8gZG9fbm90X3N0cmlwX3F1
b3RlczsKLQotCSAgY2FzZSAnXFwnOgotCSAgICBpZiAoKisreXlwICE9ICdcXCcpCi0JICAgICAg
Z290byBkb19ub3Rfc3RyaXBfcXVvdGVzOwotCSAgICAvKiBGYWxsIHRocm91Z2guICAqLwotCSAg
ZGVmYXVsdDoKLQkgICAgaWYgKHl5cmVzKQotCSAgICAgIHl5cmVzW3l5bl0gPSAqeXlwOwotCSAg
ICB5eW4rKzsKLQkgICAgYnJlYWs7Ci0KLQkgIGNhc2UgJyInOgotCSAgICBpZiAoeXlyZXMpCi0J
ICAgICAgeXlyZXNbeXluXSA9ICdcMCc7Ci0JICAgIHJldHVybiB5eW47Ci0JICB9CisgICAgICAg
IHN3aXRjaCAoKisreXlwKQorICAgICAgICAgIHsKKyAgICAgICAgICBjYXNlICdcJyc6CisgICAg
ICAgICAgY2FzZSAnLCc6CisgICAgICAgICAgICBnb3RvIGRvX25vdF9zdHJpcF9xdW90ZXM7CisK
KyAgICAgICAgICBjYXNlICdcXCc6CisgICAgICAgICAgICBpZiAoKisreXlwICE9ICdcXCcpCisg
ICAgICAgICAgICAgIGdvdG8gZG9fbm90X3N0cmlwX3F1b3RlczsKKyAgICAgICAgICAgIC8qIEZh
bGwgdGhyb3VnaC4gICovCisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlmICh5eXJl
cykKKyAgICAgICAgICAgICAgeXlyZXNbeXluXSA9ICp5eXA7CisgICAgICAgICAgICB5eW4rKzsK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgY2FzZSAnIic6CisgICAgICAgICAgICBp
ZiAoeXlyZXMpCisgICAgICAgICAgICAgIHl5cmVzW3l5bl0gPSAnXDAnOworICAgICAgICAgICAg
cmV0dXJuIHl5bjsKKyAgICAgICAgICB9CiAgICAgZG9fbm90X3N0cmlwX3F1b3RlczogOwogICAg
IH0KIApAQCAtMTAwMSwxNjcgKzkwOSwxNTkgQEAgeXl0bmFtZXJyIChjaGFyICp5eXJlcywgY29u
c3QgY2hhciAqeXlzdAogfQogIyBlbmRpZgogCi0vKiBDb3B5IGludG8gWVlSRVNVTFQgYW4gZXJy
b3IgbWVzc2FnZSBhYm91dCB0aGUgdW5leHBlY3RlZCB0b2tlbgotICAgWVlDSEFSIHdoaWxlIGlu
IHN0YXRlIFlZU1RBVEUuICBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyBjb3BpZWQsCi0gICBp
bmNsdWRpbmcgdGhlIHRlcm1pbmF0aW5nIG51bGwgYnl0ZS4gIElmIFlZUkVTVUxUIGlzIG51bGws
IGRvIG5vdAotICAgY29weSBhbnl0aGluZzsganVzdCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRl
cyB0aGF0IHdvdWxkIGJlCi0gICBjb3BpZWQuICBBcyBhIHNwZWNpYWwgY2FzZSwgcmV0dXJuIDAg
aWYgYW4gb3JkaW5hcnkgInN5bnRheCBlcnJvciIKLSAgIG1lc3NhZ2Ugd2lsbCBkby4gIFJldHVy
biBZWVNJWkVfTUFYSU1VTSBpZiBvdmVyZmxvdyBvY2N1cnMgZHVyaW5nCi0gICBzaXplIGNhbGN1
bGF0aW9uLiAgKi8KLXN0YXRpYyBZWVNJWkVfVAoteXlzeW50YXhfZXJyb3IgKGNoYXIgKnl5cmVz
dWx0LCBpbnQgeXlzdGF0ZSwgaW50IHl5Y2hhcikKKy8qIENvcHkgaW50byAqWVlNU0csIHdoaWNo
IGlzIG9mIHNpemUgKllZTVNHX0FMTE9DLCBhbiBlcnJvciBtZXNzYWdlCisgICBhYm91dCB0aGUg
dW5leHBlY3RlZCB0b2tlbiBZWVRPS0VOIGZvciB0aGUgc3RhdGUgc3RhY2sgd2hvc2UgdG9wIGlz
CisgICBZWVNTUC4KKworICAgUmV0dXJuIDAgaWYgKllZTVNHIHdhcyBzdWNjZXNzZnVsbHkgd3Jp
dHRlbi4gIFJldHVybiAxIGlmICpZWU1TRyBpcworICAgbm90IGxhcmdlIGVub3VnaCB0byBob2xk
IHRoZSBtZXNzYWdlLiAgSW4gdGhhdCBjYXNlLCBhbHNvIHNldAorICAgKllZTVNHX0FMTE9DIHRv
IHRoZSByZXF1aXJlZCBudW1iZXIgb2YgYnl0ZXMuICBSZXR1cm4gMiBpZiB0aGUKKyAgIHJlcXVp
cmVkIG51bWJlciBvZiBieXRlcyBpcyB0b28gbGFyZ2UgdG8gc3RvcmUuICAqLworc3RhdGljIGlu
dAoreXlzeW50YXhfZXJyb3IgKFlZU0laRV9UICp5eW1zZ19hbGxvYywgY2hhciAqKnl5bXNnLAor
ICAgICAgICAgICAgICAgIHl5dHlwZV9pbnQxNiAqeXlzc3AsIGludCB5eXRva2VuKQogewotICBp
bnQgeXluID0geXlwYWN0W3l5c3RhdGVdOworICBZWVNJWkVfVCB5eXNpemUwID0geXl0bmFtZXJy
IChZWV9OVUxMUFRSLCB5eXRuYW1lW3l5dG9rZW5dKTsKKyAgWVlTSVpFX1QgeXlzaXplID0geXlz
aXplMDsKKyAgZW51bSB7IFlZRVJST1JfVkVSQk9TRV9BUkdTX01BWElNVU0gPSA1IH07CisgIC8q
IEludGVybmF0aW9uYWxpemVkIGZvcm1hdCBzdHJpbmcuICovCisgIGNvbnN0IGNoYXIgKnl5Zm9y
bWF0ID0gWVlfTlVMTFBUUjsKKyAgLyogQXJndW1lbnRzIG9mIHl5Zm9ybWF0LiAqLworICBjaGFy
IGNvbnN0ICp5eWFyZ1tZWUVSUk9SX1ZFUkJPU0VfQVJHU19NQVhJTVVNXTsKKyAgLyogTnVtYmVy
IG9mIHJlcG9ydGVkIHRva2VucyAob25lIGZvciB0aGUgInVuZXhwZWN0ZWQiLCBvbmUgcGVyCisg
ICAgICJleHBlY3RlZCIpLiAqLworICBpbnQgeXljb3VudCA9IDA7CisKKyAgLyogVGhlcmUgYXJl
IG1hbnkgcG9zc2liaWxpdGllcyBoZXJlIHRvIGNvbnNpZGVyOgorICAgICAtIElmIHRoaXMgc3Rh
dGUgaXMgYSBjb25zaXN0ZW50IHN0YXRlIHdpdGggYSBkZWZhdWx0IGFjdGlvbiwgdGhlbgorICAg
ICAgIHRoZSBvbmx5IHdheSB0aGlzIGZ1bmN0aW9uIHdhcyBpbnZva2VkIGlzIGlmIHRoZSBkZWZh
dWx0IGFjdGlvbgorICAgICAgIGlzIGFuIGVycm9yIGFjdGlvbi4gIEluIHRoYXQgY2FzZSwgZG9u
J3QgY2hlY2sgZm9yIGV4cGVjdGVkCisgICAgICAgdG9rZW5zIGJlY2F1c2UgdGhlcmUgYXJlIG5v
bmUuCisgICAgIC0gVGhlIG9ubHkgd2F5IHRoZXJlIGNhbiBiZSBubyBsb29rYWhlYWQgcHJlc2Vu
dCAoaW4geXljaGFyKSBpcyBpZgorICAgICAgIHRoaXMgc3RhdGUgaXMgYSBjb25zaXN0ZW50IHN0
YXRlIHdpdGggYSBkZWZhdWx0IGFjdGlvbi4gIFRodXMsCisgICAgICAgZGV0ZWN0aW5nIHRoZSBh
YnNlbmNlIG9mIGEgbG9va2FoZWFkIGlzIHN1ZmZpY2llbnQgdG8gZGV0ZXJtaW5lCisgICAgICAg
dGhhdCB0aGVyZSBpcyBubyB1bmV4cGVjdGVkIG9yIGV4cGVjdGVkIHRva2VuIHRvIHJlcG9ydC4g
IEluIHRoYXQKKyAgICAgICBjYXNlLCBqdXN0IHJlcG9ydCBhIHNpbXBsZSAic3ludGF4IGVycm9y
Ii4KKyAgICAgLSBEb24ndCBhc3N1bWUgdGhlcmUgaXNuJ3QgYSBsb29rYWhlYWQganVzdCBiZWNh
dXNlIHRoaXMgc3RhdGUgaXMgYQorICAgICAgIGNvbnNpc3RlbnQgc3RhdGUgd2l0aCBhIGRlZmF1
bHQgYWN0aW9uLiAgVGhlcmUgbWlnaHQgaGF2ZSBiZWVuIGEKKyAgICAgICBwcmV2aW91cyBpbmNv
bnNpc3RlbnQgc3RhdGUsIGNvbnNpc3RlbnQgc3RhdGUgd2l0aCBhIG5vbi1kZWZhdWx0CisgICAg
ICAgYWN0aW9uLCBvciB1c2VyIHNlbWFudGljIGFjdGlvbiB0aGF0IG1hbmlwdWxhdGVkIHl5Y2hh
ci4KKyAgICAgLSBPZiBjb3Vyc2UsIHRoZSBleHBlY3RlZCB0b2tlbiBsaXN0IGRlcGVuZHMgb24g
c3RhdGVzIHRvIGhhdmUKKyAgICAgICBjb3JyZWN0IGxvb2thaGVhZCBpbmZvcm1hdGlvbiwgYW5k
IGl0IGRlcGVuZHMgb24gdGhlIHBhcnNlciBub3QKKyAgICAgICB0byBwZXJmb3JtIGV4dHJhIHJl
ZHVjdGlvbnMgYWZ0ZXIgZmV0Y2hpbmcgYSBsb29rYWhlYWQgZnJvbSB0aGUKKyAgICAgICBzY2Fu
bmVyIGFuZCBiZWZvcmUgZGV0ZWN0aW5nIGEgc3ludGF4IGVycm9yLiAgVGh1cywgc3RhdGUgbWVy
Z2luZworICAgICAgIChmcm9tIExBTFIgb3IgSUVMUikgYW5kIGRlZmF1bHQgcmVkdWN0aW9ucyBj
b3JydXB0IHRoZSBleHBlY3RlZAorICAgICAgIHRva2VuIGxpc3QuICBIb3dldmVyLCB0aGUgbGlz
dCBpcyBjb3JyZWN0IGZvciBjYW5vbmljYWwgTFIgd2l0aAorICAgICAgIG9uZSBleGNlcHRpb246
IGl0IHdpbGwgc3RpbGwgY29udGFpbiBhbnkgdG9rZW4gdGhhdCB3aWxsIG5vdCBiZQorICAgICAg
IGFjY2VwdGVkIGR1ZSB0byBhbiBlcnJvciBhY3Rpb24gaW4gYSBsYXRlciBzdGF0ZS4KKyAgKi8K
KyAgaWYgKHl5dG9rZW4gIT0gWVlFTVBUWSkKKyAgICB7CisgICAgICBpbnQgeXluID0geXlwYWN0
Wyp5eXNzcF07CisgICAgICB5eWFyZ1t5eWNvdW50KytdID0geXl0bmFtZVt5eXRva2VuXTsKKyAg
ICAgIGlmICgheXlwYWN0X3ZhbHVlX2lzX2RlZmF1bHQgKHl5bikpCisgICAgICAgIHsKKyAgICAg
ICAgICAvKiBTdGFydCBZWVggYXQgLVlZTiBpZiBuZWdhdGl2ZSB0byBhdm9pZCBuZWdhdGl2ZSBp
bmRleGVzIGluCisgICAgICAgICAgICAgWVlDSEVDSy4gIEluIG90aGVyIHdvcmRzLCBza2lwIHRo
ZSBmaXJzdCAtWVlOIGFjdGlvbnMgZm9yCisgICAgICAgICAgICAgdGhpcyBzdGF0ZSBiZWNhdXNl
IHRoZXkgYXJlIGRlZmF1bHQgYWN0aW9ucy4gICovCisgICAgICAgICAgaW50IHl5eGJlZ2luID0g
eXluIDwgMCA/IC15eW4gOiAwOworICAgICAgICAgIC8qIFN0YXkgd2l0aGluIGJvdW5kcyBvZiBi
b3RoIHl5Y2hlY2sgYW5kIHl5dG5hbWUuICAqLworICAgICAgICAgIGludCB5eWNoZWNrbGltID0g
WVlMQVNUIC0geXluICsgMTsKKyAgICAgICAgICBpbnQgeXl4ZW5kID0geXljaGVja2xpbSA8IFlZ
TlRPS0VOUyA/IHl5Y2hlY2tsaW0gOiBZWU5UT0tFTlM7CisgICAgICAgICAgaW50IHl5eDsKKwor
ICAgICAgICAgIGZvciAoeXl4ID0geXl4YmVnaW47IHl5eCA8IHl5eGVuZDsgKyt5eXgpCisgICAg
ICAgICAgICBpZiAoeXljaGVja1t5eXggKyB5eW5dID09IHl5eCAmJiB5eXggIT0gWVlURVJST1IK
KyAgICAgICAgICAgICAgICAmJiAheXl0YWJsZV92YWx1ZV9pc19lcnJvciAoeXl0YWJsZVt5eXgg
KyB5eW5dKSkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh5eWNvdW50ID09
IFlZRVJST1JfVkVSQk9TRV9BUkdTX01BWElNVU0pCisgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHl5Y291bnQgPSAxOworICAgICAgICAgICAgICAgICAgICB5eXNpemUg
PSB5eXNpemUwOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB5eWFyZ1t5eWNvdW50KytdID0geXl0bmFtZVt5eXhdOworICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIFlZU0laRV9UIHl5c2l6ZTEgPSB5eXNp
emUgKyB5eXRuYW1lcnIgKFlZX05VTExQVFIsIHl5dG5hbWVbeXl4XSk7CisgICAgICAgICAgICAg
ICAgICBpZiAoISAoeXlzaXplIDw9IHl5c2l6ZTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAm
JiB5eXNpemUxIDw9IFlZU1RBQ0tfQUxMT0NfTUFYSU1VTSkpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiAyOworICAgICAgICAgICAgICAgICAgeXlzaXplID0geXlzaXplMTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIAotICBpZiAoISAo
WVlQQUNUX05JTkYgPCB5eW4gJiYgeXluIDw9IFlZTEFTVCkpCi0gICAgcmV0dXJuIDA7Ci0gIGVs
c2UKKyAgc3dpdGNoICh5eWNvdW50KQogICAgIHsKLSAgICAgIGludCB5eXR5cGUgPSBZWVRSQU5T
TEFURSAoeXljaGFyKTsKLSAgICAgIFlZU0laRV9UIHl5c2l6ZTAgPSB5eXRuYW1lcnIgKDAsIHl5
dG5hbWVbeXl0eXBlXSk7Ci0gICAgICBZWVNJWkVfVCB5eXNpemUgPSB5eXNpemUwOwotICAgICAg
WVlTSVpFX1QgeXlzaXplMTsKLSAgICAgIGludCB5eXNpemVfb3ZlcmZsb3cgPSAwOwotICAgICAg
ZW51bSB7IFlZRVJST1JfVkVSQk9TRV9BUkdTX01BWElNVU0gPSA1IH07Ci0gICAgICBjaGFyIGNv
bnN0ICp5eWFyZ1tZWUVSUk9SX1ZFUkJPU0VfQVJHU19NQVhJTVVNXTsKLSAgICAgIGludCB5eXg7
Ci0KLSMgaWYgMAotICAgICAgLyogVGhpcyBpcyBzbyB4Z2V0dGV4dCBzZWVzIHRoZSB0cmFuc2xh
dGFibGUgZm9ybWF0cyB0aGF0IGFyZQotCSBjb25zdHJ1Y3RlZCBvbiB0aGUgZmx5LiAgKi8KLSAg
ICAgIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzIik7Ci0gICAgICBZWV8oInN5bnRh
eCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIik7Ci0gICAgICBZWV8oInN5bnRh
eCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIG9yICVzIik7Ci0gICAgICBZWV8o
InN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIG9yICVzIG9yICVzIik7
Ci0gICAgICBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIG9y
ICVzIG9yICVzIG9yICVzIik7Ci0jIGVuZGlmCi0gICAgICBjaGFyICp5eWZtdDsKLSAgICAgIGNo
YXIgY29uc3QgKnl5ZjsKLSAgICAgIHN0YXRpYyBjaGFyIGNvbnN0IHl5dW5leHBlY3RlZFtdID0g
InN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcyI7Ci0gICAgICBzdGF0aWMgY2hhciBjb25zdCB5
eWV4cGVjdGluZ1tdID0gIiwgZXhwZWN0aW5nICVzIjsKLSAgICAgIHN0YXRpYyBjaGFyIGNvbnN0
IHl5b3JbXSA9ICIgb3IgJXMiOwotICAgICAgY2hhciB5eWZvcm1hdFtzaXplb2YgeXl1bmV4cGVj
dGVkCi0JCSAgICArIHNpemVvZiB5eWV4cGVjdGluZyAtIDEKLQkJICAgICsgKChZWUVSUk9SX1ZF
UkJPU0VfQVJHU19NQVhJTVVNIC0gMikKLQkJICAgICAgICogKHNpemVvZiB5eW9yIC0gMSkpXTsK
LSAgICAgIGNoYXIgY29uc3QgKnl5cHJlZml4ID0geXlleHBlY3Rpbmc7Ci0KLSAgICAgIC8qIFN0
YXJ0IFlZWCBhdCAtWVlOIGlmIG5lZ2F0aXZlIHRvIGF2b2lkIG5lZ2F0aXZlIGluZGV4ZXMgaW4K
LQkgWVlDSEVDSy4gICovCi0gICAgICBpbnQgeXl4YmVnaW4gPSB5eW4gPCAwID8gLXl5biA6IDA7
Ci0KLSAgICAgIC8qIFN0YXkgd2l0aGluIGJvdW5kcyBvZiBib3RoIHl5Y2hlY2sgYW5kIHl5dG5h
bWUuICAqLwotICAgICAgaW50IHl5Y2hlY2tsaW0gPSBZWUxBU1QgLSB5eW4gKyAxOwotICAgICAg
aW50IHl5eGVuZCA9IHl5Y2hlY2tsaW0gPCBZWU5UT0tFTlMgPyB5eWNoZWNrbGltIDogWVlOVE9L
RU5TOwotICAgICAgaW50IHl5Y291bnQgPSAxOwotCi0gICAgICB5eWFyZ1swXSA9IHl5dG5hbWVb
eXl0eXBlXTsKLSAgICAgIHl5Zm10ID0geXlzdHBjcHkgKHl5Zm9ybWF0LCB5eXVuZXhwZWN0ZWQp
OwotCi0gICAgICBmb3IgKHl5eCA9IHl5eGJlZ2luOyB5eXggPCB5eXhlbmQ7ICsreXl4KQotCWlm
ICh5eWNoZWNrW3l5eCArIHl5bl0gPT0geXl4ICYmIHl5eCAhPSBZWVRFUlJPUikKLQkgIHsKLQkg
ICAgaWYgKHl5Y291bnQgPT0gWVlFUlJPUl9WRVJCT1NFX0FSR1NfTUFYSU1VTSkKLQkgICAgICB7
Ci0JCXl5Y291bnQgPSAxOwotCQl5eXNpemUgPSB5eXNpemUwOwotCQl5eWZvcm1hdFtzaXplb2Yg
eXl1bmV4cGVjdGVkIC0gMV0gPSAnXDAnOwotCQlicmVhazsKLQkgICAgICB9Ci0JICAgIHl5YXJn
W3l5Y291bnQrK10gPSB5eXRuYW1lW3l5eF07Ci0JICAgIHl5c2l6ZTEgPSB5eXNpemUgKyB5eXRu
YW1lcnIgKDAsIHl5dG5hbWVbeXl4XSk7Ci0JICAgIHl5c2l6ZV9vdmVyZmxvdyB8PSAoeXlzaXpl
MSA8IHl5c2l6ZSk7Ci0JICAgIHl5c2l6ZSA9IHl5c2l6ZTE7Ci0JICAgIHl5Zm10ID0geXlzdHBj
cHkgKHl5Zm10LCB5eXByZWZpeCk7Ci0JICAgIHl5cHJlZml4ID0geXlvcjsKLQkgIH0KLQotICAg
ICAgeXlmID0gWVlfKHl5Zm9ybWF0KTsKLSAgICAgIHl5c2l6ZTEgPSB5eXNpemUgKyB5eXN0cmxl
biAoeXlmKTsKLSAgICAgIHl5c2l6ZV9vdmVyZmxvdyB8PSAoeXlzaXplMSA8IHl5c2l6ZSk7Ci0g
ICAgICB5eXNpemUgPSB5eXNpemUxOwotCi0gICAgICBpZiAoeXlzaXplX292ZXJmbG93KQotCXJl
dHVybiBZWVNJWkVfTUFYSU1VTTsKLQotICAgICAgaWYgKHl5cmVzdWx0KQotCXsKLQkgIC8qIEF2
b2lkIHNwcmludGYsIGFzIHRoYXQgaW5mcmluZ2VzIG9uIHRoZSB1c2VyJ3MgbmFtZSBzcGFjZS4K
LQkgICAgIERvbid0IGhhdmUgdW5kZWZpbmVkIGJlaGF2aW9yIGV2ZW4gaWYgdGhlIHRyYW5zbGF0
aW9uCi0JICAgICBwcm9kdWNlZCBhIHN0cmluZyB3aXRoIHRoZSB3cm9uZyBudW1iZXIgb2YgIiVz
InMuICAqLwotCSAgY2hhciAqeXlwID0geXlyZXN1bHQ7Ci0JICBpbnQgeXlpID0gMDsKLQkgIHdo
aWxlICgoKnl5cCA9ICp5eWYpICE9ICdcMCcpCi0JICAgIHsKLQkgICAgICBpZiAoKnl5cCA9PSAn
JScgJiYgeXlmWzFdID09ICdzJyAmJiB5eWkgPCB5eWNvdW50KQotCQl7Ci0JCSAgeXlwICs9IHl5
dG5hbWVyciAoeXlwLCB5eWFyZ1t5eWkrK10pOwotCQkgIHl5ZiArPSAyOwotCQl9Ci0JICAgICAg
ZWxzZQotCQl7Ci0JCSAgeXlwKys7Ci0JCSAgeXlmKys7Ci0JCX0KLQkgICAgfQotCX0KLSAgICAg
IHJldHVybiB5eXNpemU7CisjIGRlZmluZSBZWUNBU0VfKE4sIFMpICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgIGNhc2UgTjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICB5eWZvcm1hdCA9IFM7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBicmVhawor
ICAgICAgWVlDQVNFXygwLCBZWV8oInN5bnRheCBlcnJvciIpKTsKKyAgICAgIFlZQ0FTRV8oMSwg
WVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMiKSk7CisgICAgICBZWUNBU0VfKDIsIFlZ
Xygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMiKSk7CisgICAgICBZ
WUNBU0VfKDMsIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMg
b3IgJXMiKSk7CisgICAgICBZWUNBU0VfKDQsIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVk
ICVzLCBleHBlY3RpbmcgJXMgb3IgJXMgb3IgJXMiKSk7CisgICAgICBZWUNBU0VfKDUsIFlZXygi
c3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMgb3IgJXMgb3IgJXMgb3Ig
JXMiKSk7CisjIHVuZGVmIFlZQ0FTRV8KICAgICB9CisKKyAgeworICAgIFlZU0laRV9UIHl5c2l6
ZTEgPSB5eXNpemUgKyB5eXN0cmxlbiAoeXlmb3JtYXQpOworICAgIGlmICghICh5eXNpemUgPD0g
eXlzaXplMSAmJiB5eXNpemUxIDw9IFlZU1RBQ0tfQUxMT0NfTUFYSU1VTSkpCisgICAgICByZXR1
cm4gMjsKKyAgICB5eXNpemUgPSB5eXNpemUxOworICB9CisKKyAgaWYgKCp5eW1zZ19hbGxvYyA8
IHl5c2l6ZSkKKyAgICB7CisgICAgICAqeXltc2dfYWxsb2MgPSAyICogeXlzaXplOworICAgICAg
aWYgKCEgKHl5c2l6ZSA8PSAqeXltc2dfYWxsb2MKKyAgICAgICAgICAgICAmJiAqeXltc2dfYWxs
b2MgPD0gWVlTVEFDS19BTExPQ19NQVhJTVVNKSkKKyAgICAgICAgKnl5bXNnX2FsbG9jID0gWVlT
VEFDS19BTExPQ19NQVhJTVVNOworICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgIC8qIEF2b2lk
IHNwcmludGYsIGFzIHRoYXQgaW5mcmluZ2VzIG9uIHRoZSB1c2VyJ3MgbmFtZSBzcGFjZS4KKyAg
ICAgRG9uJ3QgaGF2ZSB1bmRlZmluZWQgYmVoYXZpb3IgZXZlbiBpZiB0aGUgdHJhbnNsYXRpb24K
KyAgICAgcHJvZHVjZWQgYSBzdHJpbmcgd2l0aCB0aGUgd3JvbmcgbnVtYmVyIG9mICIlcyJzLiAg
Ki8KKyAgeworICAgIGNoYXIgKnl5cCA9ICp5eW1zZzsKKyAgICBpbnQgeXlpID0gMDsKKyAgICB3
aGlsZSAoKCp5eXAgPSAqeXlmb3JtYXQpICE9ICdcMCcpCisgICAgICBpZiAoKnl5cCA9PSAnJScg
JiYgeXlmb3JtYXRbMV0gPT0gJ3MnICYmIHl5aSA8IHl5Y291bnQpCisgICAgICAgIHsKKyAgICAg
ICAgICB5eXAgKz0geXl0bmFtZXJyICh5eXAsIHl5YXJnW3l5aSsrXSk7CisgICAgICAgICAgeXlm
b3JtYXQgKz0gMjsKKyAgICAgICAgfQorICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAg
eXlwKys7CisgICAgICAgICAgeXlmb3JtYXQrKzsKKyAgICAgICAgfQorICB9CisgIHJldHVybiAw
OwogfQogI2VuZGlmIC8qIFlZRVJST1JfVkVSQk9TRSAqLwotDAogCiAvKi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgogfCBSZWxlYXNlIHRoZSBtZW1vcnkg
YXNzb2NpYXRlZCB0byB0aGlzIHN5bWJvbC4gIHwKIGAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKLS8qQVJHU1VTRUQqLwotI2lmIChkZWZpbmVkIF9f
U1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCi0gICAgIHx8IGRlZmluZWQgX19jcGx1
c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lkCiB5eWRlc3RydWN0IChjb25z
dCBjaGFyICp5eW1zZywgaW50IHl5dHlwZSwgWVlTVFlQRSAqeXl2YWx1ZXAsIENvbnRleHQgKmNv
bnRleHQpCi0jZWxzZQotc3RhdGljIHZvaWQKLXl5ZGVzdHJ1Y3QgKHl5bXNnLCB5eXR5cGUsIHl5
dmFsdWVwLCBjb250ZXh0KQotICAgIGNvbnN0IGNoYXIgKnl5bXNnOwotICAgIGludCB5eXR5cGU7
Ci0gICAgWVlTVFlQRSAqeXl2YWx1ZXA7Ci0gICAgQ29udGV4dCAqY29udGV4dDsKLSNlbmRpZgog
ewogICBZWVVTRSAoeXl2YWx1ZXApOwogICBZWVVTRSAoY29udGV4dCk7Ci0KICAgaWYgKCF5eW1z
ZykKICAgICB5eW1zZyA9ICJEZWxldGluZyI7CiAgIFlZX1NZTUJPTF9QUklOVCAoeXltc2csIHl5
dHlwZSwgeXl2YWx1ZXAsIHl5bG9jYXRpb25wKTsKIAotICBzd2l0Y2ggKHl5dHlwZSkKLSAgICB7
Ci0KLSAgICAgIGRlZmF1bHQ6Ci0JYnJlYWs7Ci0gICAgfQorICBZWV9JR05PUkVfTUFZQkVfVU5J
TklUSUFMSVpFRF9CRUdJTgorICBZWVVTRSAoeXl0eXBlKTsKKyAgWVlfSUdOT1JFX01BWUJFX1VO
SU5JVElBTElaRURfRU5ECiB9Ci0MCi0KLS8qIFByZXZlbnQgd2FybmluZ3MgZnJvbSAtV21pc3Np
bmctcHJvdG90eXBlcy4gICovCi0KLSNpZmRlZiBZWVBBUlNFX1BBUkFNCi0jaWYgZGVmaW5lZCBf
X1NURENfXyB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzCi1pbnQgeXlwYXJzZSAodm9pZCAqWVlQQVJT
RV9QQVJBTSk7Ci0jZWxzZQotaW50IHl5cGFyc2UgKCk7Ci0jZW5kaWYKLSNlbHNlIC8qICEgWVlQ
QVJTRV9QQVJBTSAqLwotI2lmIGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX2NwbHVzcGx1
cwotaW50IHl5cGFyc2UgKENvbnRleHQgKmNvbnRleHQpOwotI2Vsc2UKLWludCB5eXBhcnNlICgp
OwotI2VuZGlmCi0jZW5kaWYgLyogISBZWVBBUlNFX1BBUkFNICovCi0KLQogCiAKIApAQCAtMTE3
MCw0NCArMTA3MCw1MyBAQCBpbnQgeXlwYXJzZSAoKTsKIHwgeXlwYXJzZS4gIHwKIGAtLS0tLS0t
LS0tKi8KIAotI2lmZGVmIFlZUEFSU0VfUEFSQU0KLSNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBk
ZWZpbmVkIF9fQzk5X19GVU5DX18gXAotICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRl
ZmluZWQgX01TQ19WRVIpCi1pbnQKLXl5cGFyc2UgKHZvaWQgKllZUEFSU0VfUEFSQU0pCi0jZWxz
ZQotaW50Ci15eXBhcnNlIChZWVBBUlNFX1BBUkFNKQotICAgIHZvaWQgKllZUEFSU0VfUEFSQU07
Ci0jZW5kaWYKLSNlbHNlIC8qICEgWVlQQVJTRV9QQVJBTSAqLwotI2lmIChkZWZpbmVkIF9fU1RE
Q19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCi0gICAgIHx8IGRlZmluZWQgX19jcGx1c3Bs
dXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIGludAogeXlwYXJzZSAoQ29udGV4dCAqY29udGV4dCkK
LSNlbHNlCi1pbnQKLXl5cGFyc2UgKGNvbnRleHQpCi0gICAgQ29udGV4dCAqY29udGV4dDsKLSNl
bmRpZgotI2VuZGlmCiB7Ci0gIC8qIFRoZSBsb29rLWFoZWFkIHN5bWJvbC4gICovCisvKiBUaGUg
bG9va2FoZWFkIHN5bWJvbC4gICovCiBpbnQgeXljaGFyOwogCi0vKiBUaGUgc2VtYW50aWMgdmFs
dWUgb2YgdGhlIGxvb2stYWhlYWQgc3ltYm9sLiAgKi8KLVlZU1RZUEUgeXlsdmFsOwogCi0vKiBO
dW1iZXIgb2Ygc3ludGF4IGVycm9ycyBzbyBmYXIuICAqLwotaW50IHl5bmVycnM7CisvKiBUaGUg
c2VtYW50aWMgdmFsdWUgb2YgdGhlIGxvb2thaGVhZCBzeW1ib2wuICAqLworLyogRGVmYXVsdCB2
YWx1ZSB1c2VkIGZvciBpbml0aWFsaXphdGlvbiwgZm9yIHBhY2lmeWluZyBvbGRlciBHQ0NzCisg
ICBvciBub24tR0NDIGNvbXBpbGVycy4gICovCitZWV9JTklUSUFMX1ZBTFVFIChzdGF0aWMgWVlT
VFlQRSB5eXZhbF9kZWZhdWx0OykKK1lZU1RZUEUgeXlsdmFsIFlZX0lOSVRJQUxfVkFMVUUgKD0g
eXl2YWxfZGVmYXVsdCk7CisKKyAgICAvKiBOdW1iZXIgb2Ygc3ludGF4IGVycm9ycyBzbyBmYXIu
ICAqLworICAgIGludCB5eW5lcnJzOworCisgICAgaW50IHl5c3RhdGU7CisgICAgLyogTnVtYmVy
IG9mIHRva2VucyB0byBzaGlmdCBiZWZvcmUgZXJyb3IgbWVzc2FnZXMgZW5hYmxlZC4gICovCisg
ICAgaW50IHl5ZXJyc3RhdHVzOworCisgICAgLyogVGhlIHN0YWNrcyBhbmQgdGhlaXIgdG9vbHM6
CisgICAgICAgJ3l5c3MnOiByZWxhdGVkIHRvIHN0YXRlcy4KKyAgICAgICAneXl2cyc6IHJlbGF0
ZWQgdG8gc2VtYW50aWMgdmFsdWVzLgorCisgICAgICAgUmVmZXIgdG8gdGhlIHN0YWNrcyB0aHJv
dWdoIHNlcGFyYXRlIHBvaW50ZXJzLCB0byBhbGxvdyB5eW92ZXJmbG93CisgICAgICAgdG8gcmVh
bGxvY2F0ZSB0aGVtIGVsc2V3aGVyZS4gICovCisKKyAgICAvKiBUaGUgc3RhdGUgc3RhY2suICAq
LworICAgIHl5dHlwZV9pbnQxNiB5eXNzYVtZWUlOSVRERVBUSF07CisgICAgeXl0eXBlX2ludDE2
ICp5eXNzOworICAgIHl5dHlwZV9pbnQxNiAqeXlzc3A7CisKKyAgICAvKiBUaGUgc2VtYW50aWMg
dmFsdWUgc3RhY2suICAqLworICAgIFlZU1RZUEUgeXl2c2FbWVlJTklUREVQVEhdOworICAgIFlZ
U1RZUEUgKnl5dnM7CisgICAgWVlTVFlQRSAqeXl2c3A7CisKKyAgICBZWVNJWkVfVCB5eXN0YWNr
c2l6ZTsKIAotICBpbnQgeXlzdGF0ZTsKICAgaW50IHl5bjsKICAgaW50IHl5cmVzdWx0OwotICAv
KiBOdW1iZXIgb2YgdG9rZW5zIHRvIHNoaWZ0IGJlZm9yZSBlcnJvciBtZXNzYWdlcyBlbmFibGVk
LiAgKi8KLSAgaW50IHl5ZXJyc3RhdHVzOwotICAvKiBMb29rLWFoZWFkIHRva2VuIGFzIGFuIGlu
dGVybmFsICh0cmFuc2xhdGVkKSB0b2tlbiBudW1iZXIuICAqLworICAvKiBMb29rYWhlYWQgdG9r
ZW4gYXMgYW4gaW50ZXJuYWwgKHRyYW5zbGF0ZWQpIHRva2VuIG51bWJlci4gICovCiAgIGludCB5
eXRva2VuID0gMDsKKyAgLyogVGhlIHZhcmlhYmxlcyB1c2VkIHRvIHJldHVybiBzZW1hbnRpYyB2
YWx1ZSBhbmQgbG9jYXRpb24gZnJvbSB0aGUKKyAgICAgYWN0aW9uIHJvdXRpbmVzLiAgKi8KKyAg
WVlTVFlQRSB5eXZhbDsKKwogI2lmIFlZRVJST1JfVkVSQk9TRQogICAvKiBCdWZmZXIgZm9yIGVy
cm9yIG1lc3NhZ2VzLCBhbmQgaXRzIGFsbG9jYXRlZCBzaXplLiAgKi8KICAgY2hhciB5eW1zZ2J1
ZlsxMjhdOwpAQCAtMTIxNSw1NCArMTEyNCwyMiBAQCBpbnQgeXluZXJyczsKICAgWVlTSVpFX1Qg
eXltc2dfYWxsb2MgPSBzaXplb2YgeXltc2didWY7CiAjZW5kaWYKIAotICAvKiBUaHJlZSBzdGFj
a3MgYW5kIHRoZWlyIHRvb2xzOgotICAgICBgeXlzcyc6IHJlbGF0ZWQgdG8gc3RhdGVzLAotICAg
ICBgeXl2cyc6IHJlbGF0ZWQgdG8gc2VtYW50aWMgdmFsdWVzLAotICAgICBgeXlscyc6IHJlbGF0
ZWQgdG8gbG9jYXRpb25zLgotCi0gICAgIFJlZmVyIHRvIHRoZSBzdGFja3MgdGhydSBzZXBhcmF0
ZSBwb2ludGVycywgdG8gYWxsb3cgeXlvdmVyZmxvdwotICAgICB0byByZWFsbG9jYXRlIHRoZW0g
ZWxzZXdoZXJlLiAgKi8KLQotICAvKiBUaGUgc3RhdGUgc3RhY2suICAqLwotICB5eXR5cGVfaW50
MTYgeXlzc2FbWVlJTklUREVQVEhdOwotICB5eXR5cGVfaW50MTYgKnl5c3MgPSB5eXNzYTsKLSAg
eXl0eXBlX2ludDE2ICp5eXNzcDsKLQotICAvKiBUaGUgc2VtYW50aWMgdmFsdWUgc3RhY2suICAq
LwotICBZWVNUWVBFIHl5dnNhW1lZSU5JVERFUFRIXTsKLSAgWVlTVFlQRSAqeXl2cyA9IHl5dnNh
OwotICBZWVNUWVBFICp5eXZzcDsKLQotCi0KICNkZWZpbmUgWVlQT1BTVEFDSyhOKSAgICh5eXZz
cCAtPSAoTiksIHl5c3NwIC09IChOKSkKIAotICBZWVNJWkVfVCB5eXN0YWNrc2l6ZSA9IFlZSU5J
VERFUFRIOwotCi0gIC8qIFRoZSB2YXJpYWJsZXMgdXNlZCB0byByZXR1cm4gc2VtYW50aWMgdmFs
dWUgYW5kIGxvY2F0aW9uIGZyb20gdGhlCi0gICAgIGFjdGlvbiByb3V0aW5lcy4gICovCi0gIFlZ
U1RZUEUgeXl2YWw7Ci0KLQogICAvKiBUaGUgbnVtYmVyIG9mIHN5bWJvbHMgb24gdGhlIFJIUyBv
ZiB0aGUgcmVkdWNlZCBydWxlLgogICAgICBLZWVwIHRvIHplcm8gd2hlbiBubyBzeW1ib2wgc2hv
dWxkIGJlIHBvcHBlZC4gICovCiAgIGludCB5eWxlbiA9IDA7CiAKKyAgeXlzc3AgPSB5eXNzID0g
eXlzc2E7CisgIHl5dnNwID0geXl2cyA9IHl5dnNhOworICB5eXN0YWNrc2l6ZSA9IFlZSU5JVERF
UFRIOworCiAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlN0YXJ0aW5nIHBhcnNlXG4iKSk7CiAKICAg
eXlzdGF0ZSA9IDA7CiAgIHl5ZXJyc3RhdHVzID0gMDsKICAgeXluZXJycyA9IDA7Ci0gIHl5Y2hh
ciA9IFlZRU1QVFk7CQkvKiBDYXVzZSBhIHRva2VuIHRvIGJlIHJlYWQuICAqLwotCi0gIC8qIElu
aXRpYWxpemUgc3RhY2sgcG9pbnRlcnMuCi0gICAgIFdhc3RlIG9uZSBlbGVtZW50IG9mIHZhbHVl
IGFuZCBsb2NhdGlvbiBzdGFjawotICAgICBzbyB0aGF0IHRoZXkgc3RheSBvbiB0aGUgc2FtZSBs
ZXZlbCBhcyB0aGUgc3RhdGUgc3RhY2suCi0gICAgIFRoZSB3YXN0ZWQgZWxlbWVudHMgYXJlIG5l
dmVyIGluaXRpYWxpemVkLiAgKi8KLQotICB5eXNzcCA9IHl5c3M7Ci0gIHl5dnNwID0geXl2czsK
LQorICB5eWNoYXIgPSBZWUVNUFRZOyAvKiBDYXVzZSBhIHRva2VuIHRvIGJlIHJlYWQuICAqLwog
ICBnb3RvIHl5c2V0c3RhdGU7CiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgpAQCAtMTI4MywyNSArMTE2MCwyMyBAQCBpbnQg
eXluZXJyczsKIAogI2lmZGVmIHl5b3ZlcmZsb3cKICAgICAgIHsKLQkvKiBHaXZlIHVzZXIgYSBj
aGFuY2UgdG8gcmVhbGxvY2F0ZSB0aGUgc3RhY2suICBVc2UgY29waWVzIG9mCi0JICAgdGhlc2Ug
c28gdGhhdCB0aGUgJidzIGRvbid0IGZvcmNlIHRoZSByZWFsIG9uZXMgaW50bwotCSAgIG1lbW9y
eS4gICovCi0JWVlTVFlQRSAqeXl2czEgPSB5eXZzOwotCXl5dHlwZV9pbnQxNiAqeXlzczEgPSB5
eXNzOwotCi0KLQkvKiBFYWNoIHN0YWNrIHBvaW50ZXIgYWRkcmVzcyBpcyBmb2xsb3dlZCBieSB0
aGUgc2l6ZSBvZiB0aGUKLQkgICBkYXRhIGluIHVzZSBpbiB0aGF0IHN0YWNrLCBpbiBieXRlcy4g
IFRoaXMgdXNlZCB0byBiZSBhCi0JICAgY29uZGl0aW9uYWwgYXJvdW5kIGp1c3QgdGhlIHR3byBl
eHRyYSBhcmdzLCBidXQgdGhhdCBtaWdodAotCSAgIGJlIHVuZGVmaW5lZCBpZiB5eW92ZXJmbG93
IGlzIGEgbWFjcm8uICAqLwotCXl5b3ZlcmZsb3cgKFlZXygibWVtb3J5IGV4aGF1c3RlZCIpLAot
CQkgICAgJnl5c3MxLCB5eXNpemUgKiBzaXplb2YgKCp5eXNzcCksCi0JCSAgICAmeXl2czEsIHl5
c2l6ZSAqIHNpemVvZiAoKnl5dnNwKSwKKyAgICAgICAgLyogR2l2ZSB1c2VyIGEgY2hhbmNlIHRv
IHJlYWxsb2NhdGUgdGhlIHN0YWNrLiAgVXNlIGNvcGllcyBvZgorICAgICAgICAgICB0aGVzZSBz
byB0aGF0IHRoZSAmJ3MgZG9uJ3QgZm9yY2UgdGhlIHJlYWwgb25lcyBpbnRvCisgICAgICAgICAg
IG1lbW9yeS4gICovCisgICAgICAgIFlZU1RZUEUgKnl5dnMxID0geXl2czsKKyAgICAgICAgeXl0
eXBlX2ludDE2ICp5eXNzMSA9IHl5c3M7CisKKyAgICAgICAgLyogRWFjaCBzdGFjayBwb2ludGVy
IGFkZHJlc3MgaXMgZm9sbG93ZWQgYnkgdGhlIHNpemUgb2YgdGhlCisgICAgICAgICAgIGRhdGEg
aW4gdXNlIGluIHRoYXQgc3RhY2ssIGluIGJ5dGVzLiAgVGhpcyB1c2VkIHRvIGJlIGEKKyAgICAg
ICAgICAgY29uZGl0aW9uYWwgYXJvdW5kIGp1c3QgdGhlIHR3byBleHRyYSBhcmdzLCBidXQgdGhh
dCBtaWdodAorICAgICAgICAgICBiZSB1bmRlZmluZWQgaWYgeXlvdmVyZmxvdyBpcyBhIG1hY3Jv
LiAgKi8KKyAgICAgICAgeXlvdmVyZmxvdyAoWVlfKCJtZW1vcnkgZXhoYXVzdGVkIiksCisgICAg
ICAgICAgICAgICAgICAgICZ5eXNzMSwgeXlzaXplICogc2l6ZW9mICgqeXlzc3ApLAorICAgICAg
ICAgICAgICAgICAgICAmeXl2czEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5dnNwKSwKKyAgICAgICAg
ICAgICAgICAgICAgJnl5c3RhY2tzaXplKTsKIAotCQkgICAgJnl5c3RhY2tzaXplKTsKLQotCXl5
c3MgPSB5eXNzMTsKLQl5eXZzID0geXl2czE7CisgICAgICAgIHl5c3MgPSB5eXNzMTsKKyAgICAg
ICAgeXl2cyA9IHl5dnMxOwogICAgICAgfQogI2Vsc2UgLyogbm8geXlvdmVyZmxvdyAqLwogIyBp
Zm5kZWYgWVlTVEFDS19SRUxPQ0FURQpAQCAtMTMwOSwyMyArMTE4NCwyMiBAQCBpbnQgeXluZXJy
czsKICMgZWxzZQogICAgICAgLyogRXh0ZW5kIHRoZSBzdGFjayBvdXIgb3duIHdheS4gICovCiAg
ICAgICBpZiAoWVlNQVhERVBUSCA8PSB5eXN0YWNrc2l6ZSkKLQlnb3RvIHl5ZXhoYXVzdGVkbGFi
OworICAgICAgICBnb3RvIHl5ZXhoYXVzdGVkbGFiOwogICAgICAgeXlzdGFja3NpemUgKj0gMjsK
ICAgICAgIGlmIChZWU1BWERFUFRIIDwgeXlzdGFja3NpemUpCi0JeXlzdGFja3NpemUgPSBZWU1B
WERFUFRIOworICAgICAgICB5eXN0YWNrc2l6ZSA9IFlZTUFYREVQVEg7CiAKICAgICAgIHsKLQl5
eXR5cGVfaW50MTYgKnl5c3MxID0geXlzczsKLQl1bmlvbiB5eWFsbG9jICp5eXB0ciA9Ci0JICAo
dW5pb24geXlhbGxvYyAqKSBZWVNUQUNLX0FMTE9DIChZWVNUQUNLX0JZVEVTICh5eXN0YWNrc2l6
ZSkpOwotCWlmICghIHl5cHRyKQotCSAgZ290byB5eWV4aGF1c3RlZGxhYjsKLQlZWVNUQUNLX1JF
TE9DQVRFICh5eXNzKTsKLQlZWVNUQUNLX1JFTE9DQVRFICh5eXZzKTsKLQorICAgICAgICB5eXR5
cGVfaW50MTYgKnl5c3MxID0geXlzczsKKyAgICAgICAgdW5pb24geXlhbGxvYyAqeXlwdHIgPQor
ICAgICAgICAgICh1bmlvbiB5eWFsbG9jICopIFlZU1RBQ0tfQUxMT0MgKFlZU1RBQ0tfQllURVMg
KHl5c3RhY2tzaXplKSk7CisgICAgICAgIGlmICghIHl5cHRyKQorICAgICAgICAgIGdvdG8geXll
eGhhdXN0ZWRsYWI7CisgICAgICAgIFlZU1RBQ0tfUkVMT0NBVEUgKHl5c3NfYWxsb2MsIHl5c3Mp
OworICAgICAgICBZWVNUQUNLX1JFTE9DQVRFICh5eXZzX2FsbG9jLCB5eXZzKTsKICMgIHVuZGVm
IFlZU1RBQ0tfUkVMT0NBVEUKLQlpZiAoeXlzczEgIT0geXlzc2EpCi0JICBZWVNUQUNLX0ZSRUUg
KHl5c3MxKTsKKyAgICAgICAgaWYgKHl5c3MxICE9IHl5c3NhKQorICAgICAgICAgIFlZU1RBQ0tf
RlJFRSAoeXlzczEpOwogICAgICAgfQogIyBlbmRpZgogI2VuZGlmIC8qIG5vIHl5b3ZlcmZsb3cg
Ki8KQEAgLTEzMzMsMTYgKzEyMDcsMTggQEAgaW50IHl5bmVycnM7CiAgICAgICB5eXNzcCA9IHl5
c3MgKyB5eXNpemUgLSAxOwogICAgICAgeXl2c3AgPSB5eXZzICsgeXlzaXplIC0gMTsKIAotCiAg
ICAgICBZWURQUklOVEYgKChzdGRlcnIsICJTdGFjayBzaXplIGluY3JlYXNlZCB0byAlbHVcbiIs
Ci0JCSAgKHVuc2lnbmVkIGxvbmcgaW50KSB5eXN0YWNrc2l6ZSkpOworICAgICAgICAgICAgICAg
ICAgKHVuc2lnbmVkIGxvbmcgaW50KSB5eXN0YWNrc2l6ZSkpOwogCiAgICAgICBpZiAoeXlzcyAr
IHl5c3RhY2tzaXplIC0gMSA8PSB5eXNzcCkKLQlZWUFCT1JUOworICAgICAgICBZWUFCT1JUOwog
ICAgIH0KIAogICBZWURQUklOVEYgKChzdGRlcnIsICJFbnRlcmluZyBzdGF0ZSAlZFxuIiwgeXlz
dGF0ZSkpOwogCisgIGlmICh5eXN0YXRlID09IFlZRklOQUwpCisgICAgWVlBQ0NFUFQ7CisKICAg
Z290byB5eWJhY2t1cDsKIAogLyotLS0tLS0tLS0tLS4KQEAgLTEzNTEsMjAgKzEyMjcsMjAgQEAg
aW50IHl5bmVycnM7CiB5eWJhY2t1cDoKIAogICAvKiBEbyBhcHByb3ByaWF0ZSBwcm9jZXNzaW5n
IGdpdmVuIHRoZSBjdXJyZW50IHN0YXRlLiAgUmVhZCBhCi0gICAgIGxvb2stYWhlYWQgdG9rZW4g
aWYgd2UgbmVlZCBvbmUgYW5kIGRvbid0IGFscmVhZHkgaGF2ZSBvbmUuICAqLworICAgICBsb29r
YWhlYWQgdG9rZW4gaWYgd2UgbmVlZCBvbmUgYW5kIGRvbid0IGFscmVhZHkgaGF2ZSBvbmUuICAq
LwogCi0gIC8qIEZpcnN0IHRyeSB0byBkZWNpZGUgd2hhdCB0byBkbyB3aXRob3V0IHJlZmVyZW5j
ZSB0byBsb29rLWFoZWFkIHRva2VuLiAgKi8KKyAgLyogRmlyc3QgdHJ5IHRvIGRlY2lkZSB3aGF0
IHRvIGRvIHdpdGhvdXQgcmVmZXJlbmNlIHRvIGxvb2thaGVhZCB0b2tlbi4gICovCiAgIHl5biA9
IHl5cGFjdFt5eXN0YXRlXTsKLSAgaWYgKHl5biA9PSBZWVBBQ1RfTklORikKKyAgaWYgKHl5cGFj
dF92YWx1ZV9pc19kZWZhdWx0ICh5eW4pKQogICAgIGdvdG8geXlkZWZhdWx0OwogCi0gIC8qIE5v
dCBrbm93biA9PiBnZXQgYSBsb29rLWFoZWFkIHRva2VuIGlmIGRvbid0IGFscmVhZHkgaGF2ZSBv
bmUuICAqLworICAvKiBOb3Qga25vd24gPT4gZ2V0IGEgbG9va2FoZWFkIHRva2VuIGlmIGRvbid0
IGFscmVhZHkgaGF2ZSBvbmUuICAqLwogCi0gIC8qIFlZQ0hBUiBpcyBlaXRoZXIgWVlFTVBUWSBv
ciBZWUVPRiBvciBhIHZhbGlkIGxvb2stYWhlYWQgc3ltYm9sLiAgKi8KKyAgLyogWVlDSEFSIGlz
IGVpdGhlciBZWUVNUFRZIG9yIFlZRU9GIG9yIGEgdmFsaWQgbG9va2FoZWFkIHN5bWJvbC4gICov
CiAgIGlmICh5eWNoYXIgPT0gWVlFTVBUWSkKICAgICB7CiAgICAgICBZWURQUklOVEYgKChzdGRl
cnIsICJSZWFkaW5nIGEgdG9rZW46ICIpKTsKLSAgICAgIHl5Y2hhciA9IFlZTEVYOworICAgICAg
eXljaGFyID0geXlsZXggKCZ5eWx2YWwsIGNvbnRleHQpOwogICAgIH0KIAogICBpZiAoeXljaGFy
IDw9IFlZRU9GKQpAQCAtMTM4NiwyOSArMTI2MiwyNyBAQCB5eWJhY2t1cDoKICAgeXluID0geXl0
YWJsZVt5eW5dOwogICBpZiAoeXluIDw9IDApCiAgICAgewotICAgICAgaWYgKHl5biA9PSAwIHx8
IHl5biA9PSBZWVRBQkxFX05JTkYpCi0JZ290byB5eWVycmxhYjsKKyAgICAgIGlmICh5eXRhYmxl
X3ZhbHVlX2lzX2Vycm9yICh5eW4pKQorICAgICAgICBnb3RvIHl5ZXJybGFiOwogICAgICAgeXlu
ID0gLXl5bjsKICAgICAgIGdvdG8geXlyZWR1Y2U7CiAgICAgfQogCi0gIGlmICh5eW4gPT0gWVlG
SU5BTCkKLSAgICBZWUFDQ0VQVDsKLQogICAvKiBDb3VudCB0b2tlbnMgc2hpZnRlZCBzaW5jZSBl
cnJvcjsgYWZ0ZXIgdGhyZWUsIHR1cm4gb2ZmIGVycm9yCiAgICAgIHN0YXR1cy4gICovCiAgIGlm
ICh5eWVycnN0YXR1cykKICAgICB5eWVycnN0YXR1cy0tOwogCi0gIC8qIFNoaWZ0IHRoZSBsb29r
LWFoZWFkIHRva2VuLiAgKi8KKyAgLyogU2hpZnQgdGhlIGxvb2thaGVhZCB0b2tlbi4gICovCiAg
IFlZX1NZTUJPTF9QUklOVCAoIlNoaWZ0aW5nIiwgeXl0b2tlbiwgJnl5bHZhbCwgJnl5bGxvYyk7
CiAKLSAgLyogRGlzY2FyZCB0aGUgc2hpZnRlZCB0b2tlbiB1bmxlc3MgaXQgaXMgZW9mLiAgKi8K
LSAgaWYgKHl5Y2hhciAhPSBZWUVPRikKLSAgICB5eWNoYXIgPSBZWUVNUFRZOworICAvKiBEaXNj
YXJkIHRoZSBzaGlmdGVkIHRva2VuLiAgKi8KKyAgeXljaGFyID0gWVlFTVBUWTsKIAogICB5eXN0
YXRlID0geXluOworICBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9CRUdJTgogICAqKyt5
eXZzcCA9IHl5bHZhbDsKKyAgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfRU5ECiAKICAg
Z290byB5eW5ld3N0YXRlOwogCkBAIC0xNDMxLDcgKzEzMDUsNyBAQCB5eXJlZHVjZToKICAgeXls
ZW4gPSB5eXIyW3l5bl07CiAKICAgLyogSWYgWVlMRU4gaXMgbm9uemVybywgaW1wbGVtZW50IHRo
ZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBhY3Rpb246Ci0gICAgIGAkJCA9ICQxJy4KKyAgICAgJyQk
ID0gJDEnLgogCiAgICAgIE90aGVyd2lzZSwgdGhlIGZvbGxvd2luZyBsaW5lIHNldHMgWVlWQUwg
dG8gZ2FyYmFnZS4KICAgICAgVGhpcyBiZWhhdmlvciBpcyB1bmRvY3VtZW50ZWQgYW5kIEJpc29u
CkBAIC0xNDQ3LDE5NyArMTMyMSwyMzEgQEAgeXlyZWR1Y2U6CiAgICAgICAgIGNhc2UgMjoKIAog
ICAgIHsKLSAgICAgICAgKihjb250ZXh0LT5yZXN1bHQpID0gc3RhdGljX2Nhc3Q8aW50PigoeXl2
c3BbKDEpIC0gKDEpXSkpOworICAgICAgICAqKGNvbnRleHQtPnJlc3VsdCkgPSBzdGF0aWNfY2Fz
dDxpbnQ+KCh5eXZzcFswXSkpOwogICAgICAgICBZWUFDQ0VQVDsKLSAgICA7fQorICAgIH0KKwog
ICAgIGJyZWFrOwogCiAgIGNhc2UgNDoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsKSA9ICh5eXZz
cFsoMSkgLSAoMyldKSB8fCAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICAgICAgKHl5
dmFsKSA9ICh5eXZzcFstMl0pIHx8ICh5eXZzcFswXSk7CisgICAgfQorCiAgICAgYnJlYWs7CiAK
ICAgY2FzZSA1OgogCiAgICAgewotICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0p
ICYmICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwpID0gKHl5dnNw
Wy0yXSkgJiYgKHl5dnNwWzBdKTsKKyAgICB9CisKICAgICBicmVhazsKIAogICBjYXNlIDY6CiAK
ICAgICB7Ci0gICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgfCAoeXl2c3BbKDMp
IC0gKDMpXSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFstMl0pIHwgKHl5dnNw
WzBdKTsKKyAgICB9CisKICAgICBicmVhazsKIAogICBjYXNlIDc6CiAKICAgICB7Ci0gICAgICAg
ICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgXiAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAg
O30KKyAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFstMl0pIF4gKHl5dnNwWzBdKTsKKyAgICB9CisK
ICAgICBicmVhazsKIAogICBjYXNlIDg6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbCkgPSAoeXl2
c3BbKDEpIC0gKDMpXSkgJiAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICAgICAgKHl5
dmFsKSA9ICh5eXZzcFstMl0pICYgKHl5dnNwWzBdKTsKKyAgICB9CisKICAgICBicmVhazsKIAog
ICBjYXNlIDk6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkg
IT0gKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgICAgICh5eXZhbCkgPSAoeXl2c3Bb
LTJdKSAhPSAoeXl2c3BbMF0pOworICAgIH0KKwogICAgIGJyZWFrOwogCiAgIGNhc2UgMTA6CiAK
ICAgICB7Ci0gICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgPT0gKHl5dnNwWygz
KSAtICgzKV0pOwotICAgIDt9CisgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbLTJdKSA9PSAoeXl2
c3BbMF0pOworICAgIH0KKwogICAgIGJyZWFrOwogCiAgIGNhc2UgMTE6CiAKICAgICB7Ci0gICAg
ICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgPj0gKHl5dnNwWygzKSAtICgzKV0pOwot
ICAgIDt9CisgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbLTJdKSA+PSAoeXl2c3BbMF0pOworICAg
IH0KKwogICAgIGJyZWFrOwogCiAgIGNhc2UgMTI6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbCkg
PSAoeXl2c3BbKDEpIC0gKDMpXSkgPD0gKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAg
ICAgICh5eXZhbCkgPSAoeXl2c3BbLTJdKSA8PSAoeXl2c3BbMF0pOworICAgIH0KKwogICAgIGJy
ZWFrOwogCiAgIGNhc2UgMTM6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEp
IC0gKDMpXSkgPiAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsKSA9
ICh5eXZzcFstMl0pID4gKHl5dnNwWzBdKTsKKyAgICB9CisKICAgICBicmVhazsKIAogICBjYXNl
IDE0OgogCiAgICAgewotICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pIDwgKHl5
dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbLTJdKSA8
ICh5eXZzcFswXSk7CisgICAgfQorCiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNToKIAogICAgIHsK
LSAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSA+PiAoeXl2c3BbKDMpIC0gKDMp
XSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFstMl0pID4+ICh5eXZzcFswXSk7
CisgICAgfQorCiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNjoKIAogICAgIHsKLSAgICAgICAgKHl5
dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSA8PCAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30K
KyAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFstMl0pIDw8ICh5eXZzcFswXSk7CisgICAgfQorCiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAxNzoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsKSA9ICh5eXZz
cFsoMSkgLSAoMyldKSAtICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgICAgICAoeXl2
YWwpID0gKHl5dnNwWy0yXSkgLSAoeXl2c3BbMF0pOworICAgIH0KKwogICAgIGJyZWFrOwogCiAg
IGNhc2UgMTg6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkg
KyAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFst
Ml0pICsgKHl5dnNwWzBdKTsKKyAgICB9CisKICAgICBicmVhazsKIAogICBjYXNlIDE5OgogCiAg
ICAgewotICAgICAgICBpZiAoKHl5dnNwWygzKSAtICgzKV0pID09IDApIHsKKyAgICAgICAgaWYg
KCh5eXZzcFswXSkgPT0gMCkgewogICAgICAgICAgICAgc3RkOjpvc3RyaW5nc3RyZWFtIHN0cmVh
bTsKLSAgICAgICAgICAgIHN0cmVhbSA8PCAoeXl2c3BbKDEpIC0gKDMpXSkgPDwgIiAlICIgPDwg
KHl5dnNwWygzKSAtICgzKV0pOworICAgICAgICAgICAgc3RyZWFtIDw8ICh5eXZzcFstMl0pIDw8
ICIgJSAiIDw8ICh5eXZzcFswXSk7CiAgICAgICAgICAgICBzdGQ6OnN0cmluZyB0ZXh0ID0gc3Ry
ZWFtLnN0cigpOwogICAgICAgICAgICAgY29udGV4dC0+ZGlhZ25vc3RpY3MtPnJlcG9ydChwcDo6
RGlhZ25vc3RpY3M6OkRJVklTSU9OX0JZX1pFUk8sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnRva2VuLT5sb2NhdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC5jX3N0cigpKTsKICAgICAgICAgICAgIFlZ
QUJPUlQ7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygx
KSAtICgzKV0pICUgKHl5dnNwWygzKSAtICgzKV0pOworICAgICAgICAgICAgKHl5dmFsKSA9ICh5
eXZzcFstMl0pICUgKHl5dnNwWzBdKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQorCiAgICAg
YnJlYWs7CiAKICAgY2FzZSAyMDoKIAogICAgIHsKLSAgICAgICAgaWYgKCh5eXZzcFsoMykgLSAo
MyldKSA9PSAwKSB7CisgICAgICAgIGlmICgoeXl2c3BbMF0pID09IDApIHsKICAgICAgICAgICAg
IHN0ZDo6b3N0cmluZ3N0cmVhbSBzdHJlYW07Ci0gICAgICAgICAgICBzdHJlYW0gPDwgKHl5dnNw
WygxKSAtICgzKV0pIDw8ICIgLyAiIDw8ICh5eXZzcFsoMykgLSAoMyldKTsKKyAgICAgICAgICAg
IHN0cmVhbSA8PCAoeXl2c3BbLTJdKSA8PCAiIC8gIiA8PCAoeXl2c3BbMF0pOwogICAgICAgICAg
ICAgc3RkOjpzdHJpbmcgdGV4dCA9IHN0cmVhbS5zdHIoKTsKICAgICAgICAgICAgIGNvbnRleHQt
PmRpYWdub3N0aWNzLT5yZXBvcnQocHA6OkRpYWdub3N0aWNzOjpESVZJU0lPTl9CWV9aRVJPLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT50b2tlbi0+
bG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQu
Y19zdHIoKSk7CiAgICAgICAgICAgICBZWUFCT1JUOwogICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSAvICh5eXZzcFsoMykgLSAoMyldKTsK
KyAgICAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbLTJdKSAvICh5eXZzcFswXSk7CiAgICAgICAg
IH0KLSAgICA7fQorICAgIH0KKwogICAgIGJyZWFrOwogCiAgIGNhc2UgMjE6CiAKICAgICB7Ci0g
ICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgKiAoeXl2c3BbKDMpIC0gKDMpXSk7
Ci0gICAgO30KKyAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFstMl0pICogKHl5dnNwWzBdKTsKKyAg
ICB9CisKICAgICBicmVhazsKIAogICBjYXNlIDIyOgogCiAgICAgewotICAgICAgICAoeXl2YWwp
ID0gISAoeXl2c3BbKDIpIC0gKDIpXSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsKSA9ICEgKHl5
dnNwWzBdKTsKKyAgICB9CisKICAgICBicmVhazsKIAogICBjYXNlIDIzOgogCiAgICAgewotICAg
ICAgICAoeXl2YWwpID0gfiAoeXl2c3BbKDIpIC0gKDIpXSk7Ci0gICAgO30KKyAgICAgICAgKHl5
dmFsKSA9IH4gKHl5dnNwWzBdKTsKKyAgICB9CisKICAgICBicmVhazsKIAogICBjYXNlIDI0Ogog
CiAgICAgewotICAgICAgICAoeXl2YWwpID0gLSAoeXl2c3BbKDIpIC0gKDIpXSk7Ci0gICAgO30K
KyAgICAgICAgKHl5dmFsKSA9IC0gKHl5dnNwWzBdKTsKKyAgICB9CisKICAgICBicmVhazsKIAog
ICBjYXNlIDI1OgogCiAgICAgewotICAgICAgICAoeXl2YWwpID0gKyAoeXl2c3BbKDIpIC0gKDIp
XSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsKSA9ICsgKHl5dnNwWzBdKTsKKyAgICB9CisKICAg
ICBicmVhazsKIAogICBjYXNlIDI2OgogCiAgICAgewotICAgICAgICAoeXl2YWwpID0gKHl5dnNw
WygyKSAtICgzKV0pOwotICAgIDt9CisgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbLTFdKTsKKyAg
ICB9CisKICAgICBicmVhazsKIAogCi0vKiBMaW5lIDEyNjcgb2YgeWFjYy5jLiAgKi8KIAogICAg
ICAgZGVmYXVsdDogYnJlYWs7CiAgICAgfQorICAvKiBVc2VyIHNlbWFudGljIGFjdGlvbnMgc29t
ZXRpbWVzIGFsdGVyIHl5Y2hhciwgYW5kIHRoYXQgcmVxdWlyZXMKKyAgICAgdGhhdCB5eXRva2Vu
IGJlIHVwZGF0ZWQgd2l0aCB0aGUgbmV3IHRyYW5zbGF0aW9uLiAgV2UgdGFrZSB0aGUKKyAgICAg
YXBwcm9hY2ggb2YgdHJhbnNsYXRpbmcgaW1tZWRpYXRlbHkgYmVmb3JlIGV2ZXJ5IHVzZSBvZiB5
eXRva2VuLgorICAgICBPbmUgYWx0ZXJuYXRpdmUgaXMgdHJhbnNsYXRpbmcgaGVyZSBhZnRlciBl
dmVyeSBzZW1hbnRpYyBhY3Rpb24sCisgICAgIGJ1dCB0aGF0IHRyYW5zbGF0aW9uIHdvdWxkIGJl
IG1pc3NlZCBpZiB0aGUgc2VtYW50aWMgYWN0aW9uIGludm9rZXMKKyAgICAgWVlBQk9SVCwgWVlB
Q0NFUFQsIG9yIFlZRVJST1IgaW1tZWRpYXRlbHkgYWZ0ZXIgYWx0ZXJpbmcgeXljaGFyIG9yCisg
ICAgIGlmIGl0IGludm9rZXMgWVlCQUNLVVAuICBJbiB0aGUgY2FzZSBvZiBZWUFCT1JUIG9yIFlZ
QUNDRVBULCBhbgorICAgICBpbmNvcnJlY3QgZGVzdHJ1Y3RvciBtaWdodCB0aGVuIGJlIGludm9r
ZWQgaW1tZWRpYXRlbHkuICBJbiB0aGUKKyAgICAgY2FzZSBvZiBZWUVSUk9SIG9yIFlZQkFDS1VQ
LCBzdWJzZXF1ZW50IHBhcnNlciBhY3Rpb25zIG1pZ2h0IGxlYWQKKyAgICAgdG8gYW4gaW5jb3Jy
ZWN0IGRlc3RydWN0b3IgY2FsbCBvciB2ZXJib3NlIHN5bnRheCBlcnJvciBtZXNzYWdlCisgICAg
IGJlZm9yZSB0aGUgbG9va2FoZWFkIGlzIHRyYW5zbGF0ZWQuICAqLwogICBZWV9TWU1CT0xfUFJJ
TlQgKCItPiAkJCA9IiwgeXlyMVt5eW5dLCAmeXl2YWwsICZ5eWxvYyk7CiAKICAgWVlQT1BTVEFD
SyAoeXlsZW4pOwpAQCAtMTY0Niw4ICsxNTU0LDcgQEAgeXlyZWR1Y2U6CiAKICAgKisreXl2c3Ag
PSB5eXZhbDsKIAotCi0gIC8qIE5vdyBgc2hpZnQnIHRoZSByZXN1bHQgb2YgdGhlIHJlZHVjdGlv
bi4gIERldGVybWluZSB3aGF0IHN0YXRlCisgIC8qIE5vdyAnc2hpZnQnIHRoZSByZXN1bHQgb2Yg
dGhlIHJlZHVjdGlvbi4gIERldGVybWluZSB3aGF0IHN0YXRlCiAgICAgIHRoYXQgZ29lcyB0bywg
YmFzZWQgb24gdGhlIHN0YXRlIHdlIHBvcHBlZCBiYWNrIHRvIGFuZCB0aGUgcnVsZQogICAgICBu
dW1iZXIgcmVkdWNlZCBieS4gICovCiAKQEAgLTE2NjIsMTAgKzE1NjksMTQgQEAgeXlyZWR1Y2U6
CiAgIGdvdG8geXluZXdzdGF0ZTsKIAogCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS4KLXwgeXllcnJsYWIgLS0gaGVyZSBvbiBkZXRlY3RpbmcgZXJyb3IgfAotYC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLgorfCB5eWVycmxhYiAtLSBoZXJlIG9uIGRldGVjdGluZyBlcnJv
ci4gIHwKK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiB5eWVycmxh
YjoKKyAgLyogTWFrZSBzdXJlIHdlIGhhdmUgbGF0ZXN0IGxvb2thaGVhZCB0cmFuc2xhdGlvbi4g
IFNlZSBjb21tZW50cyBhdAorICAgICB1c2VyIHNlbWFudGljIGFjdGlvbnMgZm9yIHdoeSB0aGlz
IGlzIG5lY2Vzc2FyeS4gICovCisgIHl5dG9rZW4gPSB5eWNoYXIgPT0gWVlFTVBUWSA/IFlZRU1Q
VFkgOiBZWVRSQU5TTEFURSAoeXljaGFyKTsKKwogICAvKiBJZiBub3QgYWxyZWFkeSByZWNvdmVy
aW5nIGZyb20gYW4gZXJyb3IsIHJlcG9ydCB0aGlzIGVycm9yLiAgKi8KICAgaWYgKCF5eWVycnN0
YXR1cykKICAgICB7CkBAIC0xNjczLDM3ICsxNTg0LDM2IEBAIHl5ZXJybGFiOgogI2lmICEgWVlF
UlJPUl9WRVJCT1NFCiAgICAgICB5eWVycm9yIChjb250ZXh0LCBZWV8oInN5bnRheCBlcnJvciIp
KTsKICNlbHNlCisjIGRlZmluZSBZWVNZTlRBWF9FUlJPUiB5eXN5bnRheF9lcnJvciAoJnl5bXNn
X2FsbG9jLCAmeXltc2csIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB5eXNzcCwgeXl0b2tlbikKICAgICAgIHsKLQlZWVNJWkVfVCB5eXNpemUgPSB5eXN5bnRheF9l
cnJvciAoMCwgeXlzdGF0ZSwgeXljaGFyKTsKLQlpZiAoeXltc2dfYWxsb2MgPCB5eXNpemUgJiYg
eXltc2dfYWxsb2MgPCBZWVNUQUNLX0FMTE9DX01BWElNVU0pCi0JICB7Ci0JICAgIFlZU0laRV9U
IHl5YWxsb2MgPSAyICogeXlzaXplOwotCSAgICBpZiAoISAoeXlzaXplIDw9IHl5YWxsb2MgJiYg
eXlhbGxvYyA8PSBZWVNUQUNLX0FMTE9DX01BWElNVU0pKQotCSAgICAgIHl5YWxsb2MgPSBZWVNU
QUNLX0FMTE9DX01BWElNVU07Ci0JICAgIGlmICh5eW1zZyAhPSB5eW1zZ2J1ZikKLQkgICAgICBZ
WVNUQUNLX0ZSRUUgKHl5bXNnKTsKLQkgICAgeXltc2cgPSAoY2hhciAqKSBZWVNUQUNLX0FMTE9D
ICh5eWFsbG9jKTsKLQkgICAgaWYgKHl5bXNnKQotCSAgICAgIHl5bXNnX2FsbG9jID0geXlhbGxv
YzsKLQkgICAgZWxzZQotCSAgICAgIHsKLQkJeXltc2cgPSB5eW1zZ2J1ZjsKLQkJeXltc2dfYWxs
b2MgPSBzaXplb2YgeXltc2didWY7Ci0JICAgICAgfQotCSAgfQotCi0JaWYgKDAgPCB5eXNpemUg
JiYgeXlzaXplIDw9IHl5bXNnX2FsbG9jKQotCSAgewotCSAgICAodm9pZCkgeXlzeW50YXhfZXJy
b3IgKHl5bXNnLCB5eXN0YXRlLCB5eWNoYXIpOwotCSAgICB5eWVycm9yIChjb250ZXh0LCB5eW1z
Zyk7Ci0JICB9Ci0JZWxzZQotCSAgewotCSAgICB5eWVycm9yIChjb250ZXh0LCBZWV8oInN5bnRh
eCBlcnJvciIpKTsKLQkgICAgaWYgKHl5c2l6ZSAhPSAwKQotCSAgICAgIGdvdG8geXlleGhhdXN0
ZWRsYWI7Ci0JICB9CisgICAgICAgIGNoYXIgY29uc3QgKnl5bXNncCA9IFlZXygic3ludGF4IGVy
cm9yIik7CisgICAgICAgIGludCB5eXN5bnRheF9lcnJvcl9zdGF0dXM7CisgICAgICAgIHl5c3lu
dGF4X2Vycm9yX3N0YXR1cyA9IFlZU1lOVEFYX0VSUk9SOworICAgICAgICBpZiAoeXlzeW50YXhf
ZXJyb3Jfc3RhdHVzID09IDApCisgICAgICAgICAgeXltc2dwID0geXltc2c7CisgICAgICAgIGVs
c2UgaWYgKHl5c3ludGF4X2Vycm9yX3N0YXR1cyA9PSAxKQorICAgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICh5eW1zZyAhPSB5eW1zZ2J1ZikKKyAgICAgICAgICAgICAgWVlTVEFDS19GUkVFICh5
eW1zZyk7CisgICAgICAgICAgICB5eW1zZyA9IChjaGFyICopIFlZU1RBQ0tfQUxMT0MgKHl5bXNn
X2FsbG9jKTsKKyAgICAgICAgICAgIGlmICgheXltc2cpCisgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICB5eW1zZyA9IHl5bXNnYnVmOworICAgICAgICAgICAgICAgIHl5bXNnX2FsbG9j
ID0gc2l6ZW9mIHl5bXNnYnVmOworICAgICAgICAgICAgICAgIHl5c3ludGF4X2Vycm9yX3N0YXR1
cyA9IDI7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHl5c3ludGF4X2Vycm9yX3N0YXR1cyA9IFlZU1lOVEFYX0VSUk9S
OworICAgICAgICAgICAgICAgIHl5bXNncCA9IHl5bXNnOworICAgICAgICAgICAgICB9CisgICAg
ICAgICAgfQorICAgICAgICB5eWVycm9yIChjb250ZXh0LCB5eW1zZ3ApOworICAgICAgICBpZiAo
eXlzeW50YXhfZXJyb3Jfc3RhdHVzID09IDIpCisgICAgICAgICAgZ290byB5eWV4aGF1c3RlZGxh
YjsKICAgICAgIH0KKyMgdW5kZWYgWVlTWU5UQVhfRVJST1IKICNlbmRpZgogICAgIH0KIApAQCAt
MTcxMSwyNCArMTYyMSwyNCBAQCB5eWVycmxhYjoKIAogICBpZiAoeXllcnJzdGF0dXMgPT0gMykK
ICAgICB7Ci0gICAgICAvKiBJZiBqdXN0IHRyaWVkIGFuZCBmYWlsZWQgdG8gcmV1c2UgbG9vay1h
aGVhZCB0b2tlbiBhZnRlciBhbgotCSBlcnJvciwgZGlzY2FyZCBpdC4gICovCisgICAgICAvKiBJ
ZiBqdXN0IHRyaWVkIGFuZCBmYWlsZWQgdG8gcmV1c2UgbG9va2FoZWFkIHRva2VuIGFmdGVyIGFu
CisgICAgICAgICBlcnJvciwgZGlzY2FyZCBpdC4gICovCiAKICAgICAgIGlmICh5eWNoYXIgPD0g
WVlFT0YpCi0JewotCSAgLyogUmV0dXJuIGZhaWx1cmUgaWYgYXQgZW5kIG9mIGlucHV0LiAgKi8K
LQkgIGlmICh5eWNoYXIgPT0gWVlFT0YpCi0JICAgIFlZQUJPUlQ7Ci0JfQorICAgICAgICB7Cisg
ICAgICAgICAgLyogUmV0dXJuIGZhaWx1cmUgaWYgYXQgZW5kIG9mIGlucHV0LiAgKi8KKyAgICAg
ICAgICBpZiAoeXljaGFyID09IFlZRU9GKQorICAgICAgICAgICAgWVlBQk9SVDsKKyAgICAgICAg
fQogICAgICAgZWxzZQotCXsKLQkgIHl5ZGVzdHJ1Y3QgKCJFcnJvcjogZGlzY2FyZGluZyIsCi0J
CSAgICAgIHl5dG9rZW4sICZ5eWx2YWwsIGNvbnRleHQpOwotCSAgeXljaGFyID0gWVlFTVBUWTsK
LQl9CisgICAgICAgIHsKKyAgICAgICAgICB5eWRlc3RydWN0ICgiRXJyb3I6IGRpc2NhcmRpbmci
LAorICAgICAgICAgICAgICAgICAgICAgIHl5dG9rZW4sICZ5eWx2YWwsIGNvbnRleHQpOworICAg
ICAgICAgIHl5Y2hhciA9IFlZRU1QVFk7CisgICAgICAgIH0KICAgICB9CiAKLSAgLyogRWxzZSB3
aWxsIHRyeSB0byByZXVzZSBsb29rLWFoZWFkIHRva2VuIGFmdGVyIHNoaWZ0aW5nIHRoZSBlcnJv
cgorICAvKiBFbHNlIHdpbGwgdHJ5IHRvIHJldXNlIGxvb2thaGVhZCB0b2tlbiBhZnRlciBzaGlm
dGluZyB0aGUgZXJyb3IKICAgICAgdG9rZW4uICAqLwogICBnb3RvIHl5ZXJybGFiMTsKIApAQCAt
MTc0NCw3ICsxNjU0LDcgQEAgeXllcnJvcmxhYjoKICAgaWYgKC8qQ09OU1RDT05EKi8gMCkKICAg
ICAgZ290byB5eWVycm9ybGFiOwogCi0gIC8qIERvIG5vdCByZWNsYWltIHRoZSBzeW1ib2xzIG9m
IHRoZSBydWxlIHdoaWNoIGFjdGlvbiB0cmlnZ2VyZWQKKyAgLyogRG8gbm90IHJlY2xhaW0gdGhl
IHN5bWJvbHMgb2YgdGhlIHJ1bGUgd2hvc2UgYWN0aW9uIHRyaWdnZXJlZAogICAgICB0aGlzIFlZ
RVJST1IuICAqLwogICBZWVBPUFNUQUNLICh5eWxlbik7CiAgIHl5bGVuID0gMDsKQEAgLTE3NTcs
MzggKzE2NjcsMzcgQEAgeXllcnJvcmxhYjoKIHwgeXllcnJsYWIxIC0tIGNvbW1vbiBjb2RlIGZv
ciBib3RoIHN5bnRheCBlcnJvciBhbmQgWVlFUlJPUi4gIHwKIGAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIHl5ZXJybGFiMToK
LSAgeXllcnJzdGF0dXMgPSAzOwkvKiBFYWNoIHJlYWwgdG9rZW4gc2hpZnRlZCBkZWNyZW1lbnRz
IHRoaXMuICAqLworICB5eWVycnN0YXR1cyA9IDM7ICAgICAgLyogRWFjaCByZWFsIHRva2VuIHNo
aWZ0ZWQgZGVjcmVtZW50cyB0aGlzLiAgKi8KIAogICBmb3IgKDs7KQogICAgIHsKICAgICAgIHl5
biA9IHl5cGFjdFt5eXN0YXRlXTsKLSAgICAgIGlmICh5eW4gIT0gWVlQQUNUX05JTkYpCi0Jewot
CSAgeXluICs9IFlZVEVSUk9SOwotCSAgaWYgKDAgPD0geXluICYmIHl5biA8PSBZWUxBU1QgJiYg
eXljaGVja1t5eW5dID09IFlZVEVSUk9SKQotCSAgICB7Ci0JICAgICAgeXluID0geXl0YWJsZVt5
eW5dOwotCSAgICAgIGlmICgwIDwgeXluKQotCQlicmVhazsKLQkgICAgfQotCX0KKyAgICAgIGlm
ICgheXlwYWN0X3ZhbHVlX2lzX2RlZmF1bHQgKHl5bikpCisgICAgICAgIHsKKyAgICAgICAgICB5
eW4gKz0gWVlURVJST1I7CisgICAgICAgICAgaWYgKDAgPD0geXluICYmIHl5biA8PSBZWUxBU1Qg
JiYgeXljaGVja1t5eW5dID09IFlZVEVSUk9SKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICB5eW4gPSB5eXRhYmxlW3l5bl07CisgICAgICAgICAgICAgIGlmICgwIDwgeXluKQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CiAKICAgICAgIC8qIFBv
cCB0aGUgY3VycmVudCBzdGF0ZSBiZWNhdXNlIGl0IGNhbm5vdCBoYW5kbGUgdGhlIGVycm9yIHRv
a2VuLiAgKi8KICAgICAgIGlmICh5eXNzcCA9PSB5eXNzKQotCVlZQUJPUlQ7CisgICAgICAgIFlZ
QUJPUlQ7CiAKIAogICAgICAgeXlkZXN0cnVjdCAoIkVycm9yOiBwb3BwaW5nIiwKLQkJICB5eXN0
b3NbeXlzdGF0ZV0sIHl5dnNwLCBjb250ZXh0KTsKKyAgICAgICAgICAgICAgICAgIHl5c3Rvc1t5
eXN0YXRlXSwgeXl2c3AsIGNvbnRleHQpOwogICAgICAgWVlQT1BTVEFDSyAoMSk7CiAgICAgICB5
eXN0YXRlID0gKnl5c3NwOwogICAgICAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKICAg
ICB9CiAKLSAgaWYgKHl5biA9PSBZWUZJTkFMKQotICAgIFlZQUNDRVBUOwotCisgIFlZX0lHTk9S
RV9NQVlCRV9VTklOSVRJQUxJWkVEX0JFR0lOCiAgICorK3l5dnNwID0geXlsdmFsOworICBZWV9J
R05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9FTkQKIAogCiAgIC8qIFNoaWZ0IHRoZSBlcnJvciB0
b2tlbi4gICovCkBAIC0xODEyLDcgKzE3MjEsNyBAQCB5eWFib3J0bGFiOgogICB5eXJlc3VsdCA9
IDE7CiAgIGdvdG8geXlyZXR1cm47CiAKLSNpZm5kZWYgeXlvdmVyZmxvdworI2lmICFkZWZpbmVk
IHl5b3ZlcmZsb3cgfHwgWVlFUlJPUl9WRVJCT1NFCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCiB8IHl5ZXhoYXVzdGVkbGFiIC0tIG1lbW9yeSBl
eGhhdXN0aW9uIGNvbWVzIGhlcmUuICB8CiBgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0xODIzLDE3ICsxNzMyLDIyIEBAIHl5ZXhoYXVzdGVk
bGFiOgogI2VuZGlmCiAKIHl5cmV0dXJuOgotICBpZiAoeXljaGFyICE9IFlZRU9GICYmIHl5Y2hh
ciAhPSBZWUVNUFRZKQotICAgICB5eWRlc3RydWN0ICgiQ2xlYW51cDogZGlzY2FyZGluZyBsb29r
YWhlYWQiLAotCQkgeXl0b2tlbiwgJnl5bHZhbCwgY29udGV4dCk7Ci0gIC8qIERvIG5vdCByZWNs
YWltIHRoZSBzeW1ib2xzIG9mIHRoZSBydWxlIHdoaWNoIGFjdGlvbiB0cmlnZ2VyZWQKKyAgaWYg
KHl5Y2hhciAhPSBZWUVNUFRZKQorICAgIHsKKyAgICAgIC8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGxh
dGVzdCBsb29rYWhlYWQgdHJhbnNsYXRpb24uICBTZWUgY29tbWVudHMgYXQKKyAgICAgICAgIHVz
ZXIgc2VtYW50aWMgYWN0aW9ucyBmb3Igd2h5IHRoaXMgaXMgbmVjZXNzYXJ5LiAgKi8KKyAgICAg
IHl5dG9rZW4gPSBZWVRSQU5TTEFURSAoeXljaGFyKTsKKyAgICAgIHl5ZGVzdHJ1Y3QgKCJDbGVh
bnVwOiBkaXNjYXJkaW5nIGxvb2thaGVhZCIsCisgICAgICAgICAgICAgICAgICB5eXRva2VuLCAm
eXlsdmFsLCBjb250ZXh0KTsKKyAgICB9CisgIC8qIERvIG5vdCByZWNsYWltIHRoZSBzeW1ib2xz
IG9mIHRoZSBydWxlIHdob3NlIGFjdGlvbiB0cmlnZ2VyZWQKICAgICAgdGhpcyBZWUFCT1JUIG9y
IFlZQUNDRVBULiAgKi8KICAgWVlQT1BTVEFDSyAoeXlsZW4pOwogICBZWV9TVEFDS19QUklOVCAo
eXlzcywgeXlzc3ApOwogICB3aGlsZSAoeXlzc3AgIT0geXlzcykKICAgICB7CiAgICAgICB5eWRl
c3RydWN0ICgiQ2xlYW51cDogcG9wcGluZyIsCi0JCSAgeXlzdG9zWyp5eXNzcF0sIHl5dnNwLCBj
b250ZXh0KTsKKyAgICAgICAgICAgICAgICAgIHl5c3Rvc1sqeXlzc3BdLCB5eXZzcCwgY29udGV4
dCk7CiAgICAgICBZWVBPUFNUQUNLICgxKTsKICAgICB9CiAjaWZuZGVmIHl5b3ZlcmZsb3cKQEAg
LTE4NDQsMTQgKzE3NTgsMTEgQEAgeXlyZXR1cm46CiAgIGlmICh5eW1zZyAhPSB5eW1zZ2J1ZikK
ICAgICBZWVNUQUNLX0ZSRUUgKHl5bXNnKTsKICNlbmRpZgotICAvKiBNYWtlIHN1cmUgWVlJRCBp
cyB1c2VkLiAgKi8KLSAgcmV0dXJuIFlZSUQgKHl5cmVzdWx0KTsKKyAgcmV0dXJuIHl5cmVzdWx0
OwogfQogCiAKIAotCi0KIGludCB5eWxleChZWVNUWVBFKiBsdmFscCwgQ29udGV4dCogY29udGV4
dCkKIHsKICAgICBpbnQgdHlwZSA9IDA7CkBAIC0xOTQ2LDQgKzE4NTcsMyBAQCBib29sIEV4cHJl
c3Npb25QYXJzZXI6OnBhcnNlKFRva2VuKiB0b2tlCiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBwcAot
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29y
L0V4cHJlc3Npb25QYXJzZXIueQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25QYXJzZXIueQkocmV2aXNpb24g
MTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nl
c3Nvci9FeHByZXNzaW9uUGFyc2VyLnkJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDEyIEBA
IFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBwcmVwcm9jZXNzb3IKIAogI2luY2x1ZGUgIkV4
cHJlc3Npb25QYXJzZXIuaCIKIAorI2lmIGRlZmluZWQoX01TQ19WRVIpCisjaW5jbHVkZSA8bWFs
bG9jLmg+CisjZWxzZQorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisKICNpbmNsdWRlIDxj
YXNzZXJ0PgogI2luY2x1ZGUgPHNzdHJlYW0+CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvUHJlcHJvY2Vzc29yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1By
ZXByb2Nlc3Nvci5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvUHJlcHJvY2Vzc29yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODEsNiArODEsMTEgQEAgdm9pZCBQcmVwcm9jZXNzb3I6OnByZWRlZmluZU1hY3Jv
KGNvbnN0IAogICAgIG1JbXBsLT5tYWNyb1NldFtuYW1lXSA9IG1hY3JvOwogfQogCit2b2lkIFBy
ZXByb2Nlc3Nvcjo6c2V0TWF4VG9rZW5MZW5ndGgoc2l6ZV90IG1heExlbmd0aCkKK3sKKyAgICBt
SW1wbC0+dG9rZW5pemVyLnNldE1heFRva2VuTGVuZ3RoKG1heExlbmd0aCk7Cit9CisKIHZvaWQg
UHJlcHJvY2Vzc29yOjpsZXgoVG9rZW4qIHRva2VuKQogewogICAgIGJvb2wgdmFsaWRUb2tlbiA9
IGZhbHNlOwpAQCAtOTUsMzQgKzEwMCw2IEBAIHZvaWQgUHJlcHJvY2Vzc29yOjpsZXgoVG9rZW4q
IHRva2VuKQogICAgICAgICAgIGNhc2UgVG9rZW46OlBQX0hBU0g6CiAgICAgICAgICAgICBhc3Nl
cnQoZmFsc2UpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBUb2tlbjo6Q09O
U1RfSU5UOgotICAgICAgICAgIHsKLSAgICAgICAgICAgIGludCB2YWwgPSAwOwotICAgICAgICAg
ICAgaWYgKCF0b2tlbi0+aVZhbHVlKCZ2YWwpKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIC8vIERvIG5vdCBtYXJrIHRoZSB0b2tlbiBhcyBpbnZhbGlkLgotICAgICAgICAgICAgICAg
IC8vIEp1c3QgZW1pdCB0aGUgZGlhZ25vc3RpYyBhbmQgcmVzZXQgdmFsdWUgdG8gMC4KLSAgICAg
ICAgICAgICAgICBtSW1wbC0+ZGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6SU5URUdF
Ul9PVkVSRkxPVywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
b2tlbi0+bG9jYXRpb24sIHRva2VuLT50ZXh0KTsKLSAgICAgICAgICAgICAgICB0b2tlbi0+dGV4
dC5hc3NpZ24oIjAiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZhbGlkVG9rZW4gPSB0
cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgfQotICAgICAgICAgIGNhc2UgVG9r
ZW46OkNPTlNUX0ZMT0FUOgotICAgICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0IHZhbCA9IDA7
Ci0gICAgICAgICAgICBpZiAoIXRva2VuLT5mVmFsdWUoJnZhbCkpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgLy8gRG8gbm90IG1hcmsgdGhlIHRva2VuIGFzIGludmFsaWQuCi0gICAg
ICAgICAgICAgICAgLy8gSnVzdCBlbWl0IHRoZSBkaWFnbm9zdGljIGFuZCByZXNldCB2YWx1ZSB0
byAwLjAuCi0gICAgICAgICAgICAgICAgbUltcGwtPmRpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25v
c3RpY3M6OkZMT0FUX09WRVJGTE9XLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOwotICAgICAgICAgICAgICAg
IHRva2VuLT50ZXh0LmFzc2lnbigiMC4wIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2
YWxpZFRva2VuID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIH0KICAgICAg
ICAgICBjYXNlIFRva2VuOjpQUF9OVU1CRVI6CiAgICAgICAgICAgICBtSW1wbC0+ZGlhZ25vc3Rp
Y3MtPnJlcG9ydChEaWFnbm9zdGljczo6SU5WQUxJRF9OVU1CRVIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi0+bG9jYXRpb24sIHRva2VuLT50ZXh0KTsKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvUHJl
cHJvY2Vzc29yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuaAkocmV2aXNpb24gMTU5NTMyKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9j
ZXNzb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTIgQEAgY2xhc3MgUHJlcHJvY2Vz
c29yCiAgICAgYm9vbCBpbml0KHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3RyaW5n
W10sIGNvbnN0IGludCBsZW5ndGhbXSk7CiAgICAgLy8gQWRkcyBhIHByZS1kZWZpbmVkIG1hY3Jv
LgogICAgIHZvaWQgcHJlZGVmaW5lTWFjcm8oY29uc3QgY2hhciogbmFtZSwgaW50IHZhbHVlKTsK
KyAgICAvLyBTZXRzIG1heGltdW0gYWxsb3dlZCB0b2tlbiBsZW5ndGguCisgICAgLy8gSWYgdG9r
ZW4gbGVuZ3RoIGV4Y2VlZHMgdGhpcyBsaW1pdCwKKyAgICAvLyB0aGUgdG9rZW4gdGV4dCB3aWxs
IGJlIHRydW5jYXRlZCB0byB0aGUgZ2l2ZW4gbWF4aW11bSBsZW5ndGgsIGFuZAorICAgIC8vIFRP
S0VOX1RPT19MT05HIGRpYWdub3N0aWMgd2lsbCBiZSBnZW5lcmF0ZWQuCisgICAgLy8gVGhlIG1h
eGltdW0gbGVuZ3RoIGRlZmF1bHRzIHRvIDI1Ni4KKyAgICB2b2lkIHNldE1heFRva2VuTGVuZ3Ro
KHNpemVfdCBtYXhMZW5ndGgpOwogCiAgICAgdm9pZCBsZXgoVG9rZW4qIHRva2VuKTsKIApJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tl
bml6ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmNwcAkocmV2aXNpb24gMTU5NTMyKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjksMTIgKzUyOSw2IEBAIElGIFlPVSBNT0RJRlkgVEhJ
UyBGSUxFIFlPVSBBTFNPIE5FRUQgVE8KICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAi
LVdtaXNzaW5nLW5vcmV0dXJuIgogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fY2xhbmdfXykKLSNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdu
b3JlZCAiLVd1bmtub3duLXByYWdtYXMiCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3Jl
ZCAiLVdkZXByZWNhdGVkLXJlZ2lzdGVyIgotI2VuZGlmCi0KIHR5cGVkZWYgc3RkOjpzdHJpbmcg
WVlTVFlQRTsKIHR5cGVkZWYgcHA6OlNvdXJjZUxvY2F0aW9uIFlZTFRZUEU7CiAKQEAgLTY4MCwx
NiArNjc0LDYgQEAgc3RhdGljIHZvaWQgeXlfZmxleF9zdHJuY3B5IChjaGFyICoseXljbwogc3Rh
dGljIGludCB5eV9mbGV4X3N0cmxlbiAoeXljb25zdCBjaGFyICogLHl5c2Nhbl90IHl5c2Nhbm5l
cik7CiAjZW5kaWYKIAotI2lmbmRlZiBZWV9OT19JTlBVVAotCi0jaWZkZWYgX19jcGx1c3BsdXMK
LXN0YXRpYyBpbnQgeXlpbnB1dCAoeXlzY2FuX3QgeXlzY2FubmVyICk7Ci0jZWxzZQotc3RhdGlj
IGludCBpbnB1dCAoeXlzY2FuX3QgeXlzY2FubmVyICk7Ci0jZW5kaWYKLQotI2VuZGlmCi0KIC8q
IEFtb3VudCBvZiBzdHVmZiB0byBzbHVycCB1cCB3aXRoIGVhY2ggcmVhZC4gKi8KICNpZm5kZWYg
WVlfUkVBRF9CVUZfU0laRQogI2RlZmluZSBZWV9SRUFEX0JVRl9TSVpFIDgxOTIKQEAgLTE0OTAs
ODEgKzE0NzQsNiBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QgCiAJ
cmV0dXJuIHl5X2lzX2phbSA/IDAgOiB5eV9jdXJyZW50X3N0YXRlOwogfQogCi0jaWZuZGVmIFlZ
X05PX0lOUFVUCi0jaWZkZWYgX19jcGx1c3BsdXMKLSAgICBzdGF0aWMgaW50IHl5aW5wdXQgKHl5
c2Nhbl90IHl5c2Nhbm5lcikKLSNlbHNlCi0gICAgc3RhdGljIGludCBpbnB1dCAgKHl5c2Nhbl90
IHl5c2Nhbm5lcikKLSNlbmRpZgotCi17Ci0JaW50IGM7Ci0gICAgc3RydWN0IHl5Z3V0c190ICog
eXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOwotCi0JKnl5Zy0+eXlfY19idWZfcCA9
IHl5Zy0+eXlfaG9sZF9jaGFyOwotCi0JaWYgKCAqeXlnLT55eV9jX2J1Zl9wID09IFlZX0VORF9P
Rl9CVUZGRVJfQ0hBUiApCi0JCXsKLQkJLyogeXlfY19idWZfcCBub3cgcG9pbnRzIHRvIHRoZSBj
aGFyYWN0ZXIgd2Ugd2FudCB0byByZXR1cm4uCi0JCSAqIElmIHRoaXMgb2NjdXJzICpiZWZvcmUq
IHRoZSBFT0IgY2hhcmFjdGVycywgdGhlbiBpdCdzIGEKLQkJICogdmFsaWQgTlVMOyBpZiBub3Qs
IHRoZW4gd2UndmUgaGl0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlci4KLQkJICovCi0JCWlmICggeXln
LT55eV9jX2J1Zl9wIDwgJllZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfY2hfYnVmW3l5Zy0+
eXlfbl9jaGFyc10gKQotCQkJLyogVGhpcyB3YXMgcmVhbGx5IGEgTlVMLiAqLwotCQkJKnl5Zy0+
eXlfY19idWZfcCA9ICdcMCc7Ci0KLQkJZWxzZQotCQkJeyAvKiBuZWVkIG1vcmUgaW5wdXQgKi8K
LQkJCXl5X3NpemVfdCBvZmZzZXQgPSB5eWctPnl5X2NfYnVmX3AgLSB5eWctPnl5dGV4dF9wdHI7
Ci0JCQkrK3l5Zy0+eXlfY19idWZfcDsKLQotCQkJc3dpdGNoICggeXlfZ2V0X25leHRfYnVmZmVy
KCB5eXNjYW5uZXIgKSApCi0JCQkJewotCQkJCWNhc2UgRU9CX0FDVF9MQVNUX01BVENIOgotCQkJ
CQkvKiBUaGlzIGhhcHBlbnMgYmVjYXVzZSB5eV9nX25fYigpCi0JCQkJCSAqIHNlZXMgdGhhdCB3
ZSd2ZSBhY2N1bXVsYXRlZCBhCi0JCQkJCSAqIHRva2VuIGFuZCBmbGFncyB0aGF0IHdlIG5lZWQg
dG8KLQkJCQkJICogdHJ5IG1hdGNoaW5nIHRoZSB0b2tlbiBiZWZvcmUKLQkJCQkJICogcHJvY2Vl
ZGluZy4gIEJ1dCBmb3IgaW5wdXQoKSwKLQkJCQkJICogdGhlcmUncyBubyBtYXRjaGluZyB0byBj
b25zaWRlci4KLQkJCQkJICogU28gY29udmVydCB0aGUgRU9CX0FDVF9MQVNUX01BVENICi0JCQkJ
CSAqIHRvIEVPQl9BQ1RfRU5EX09GX0ZJTEUuCi0JCQkJCSAqLwotCi0JCQkJCS8qIFJlc2V0IGJ1
ZmZlciBzdGF0dXMuICovCi0JCQkJCXBwcmVzdGFydCh5eWluICx5eXNjYW5uZXIpOwotCi0JCQkJ
CS8qRkFMTFRIUk9VR0gqLwotCi0JCQkJY2FzZSBFT0JfQUNUX0VORF9PRl9GSUxFOgotCQkJCQl7
Ci0JCQkJCWlmICggcHB3cmFwKHl5c2Nhbm5lciApICkKLQkJCQkJCXJldHVybiAwOwotCi0JCQkJ
CWlmICggISB5eWctPnl5X2RpZF9idWZmZXJfc3dpdGNoX29uX2VvZiApCi0JCQkJCQlZWV9ORVdf
RklMRTsKLSNpZmRlZiBfX2NwbHVzcGx1cwotCQkJCQlyZXR1cm4geXlpbnB1dCh5eXNjYW5uZXIp
OwotI2Vsc2UKLQkJCQkJcmV0dXJuIGlucHV0KHl5c2Nhbm5lcik7Ci0jZW5kaWYKLQkJCQkJfQot
Ci0JCQkJY2FzZSBFT0JfQUNUX0NPTlRJTlVFX1NDQU46Ci0JCQkJCXl5Zy0+eXlfY19idWZfcCA9
IHl5Zy0+eXl0ZXh0X3B0ciArIG9mZnNldDsKLQkJCQkJYnJlYWs7Ci0JCQkJfQotCQkJfQotCQl9
Ci0KLQljID0gKih1bnNpZ25lZCBjaGFyICopIHl5Zy0+eXlfY19idWZfcDsJLyogY2FzdCBmb3Ig
OC1iaXQgY2hhcidzICovCi0JKnl5Zy0+eXlfY19idWZfcCA9ICdcMCc7CS8qIHByZXNlcnZlIHl5
dGV4dCAqLwotCXl5Zy0+eXlfaG9sZF9jaGFyID0gKisreXlnLT55eV9jX2J1Zl9wOwotCi0JcmV0
dXJuIGM7Ci19Ci0jZW5kaWYJLyogaWZuZGVmIFlZX05PX0lOUFVUICovCi0KIC8qKiBJbW1lZGlh
dGVseSBzd2l0Y2ggdG8gYSBkaWZmZXJlbnQgaW5wdXQgc3RyZWFtLgogICogQHBhcmFtIGlucHV0
X2ZpbGUgQSByZWFkYWJsZSBzdHJlYW0uCiAgKiBAcGFyYW0geXlzY2FubmVyIFRoZSBzY2FubmVy
IG9iamVjdC4KQEAgLTIyOTQsMTcgKzIyMDMsMTEgQEAgdm9pZCBwcGZyZWUgKHZvaWQgKiBwdHIg
LCB5eXNjYW5fdCB5eXNjYQogCiAjZGVmaW5lIFlZVEFCTEVTX05BTUUgInl5dGFibGVzIgogCi0j
aWYgZGVmaW5lZChfX2NsYW5nX18pCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0jZW5k
aWYKLQogbmFtZXNwYWNlIHBwIHsKIAotLy8gVE9ETyhhbG9rcCk6IE1heGltdW0gdG9rZW4gbGVu
Z3RoIHNob3VsZCBpZGVhbGx5IGJlIHNwZWNpZmllZCBieQotLy8gdGhlIHByZXByb2Nlc3NvciBj
bGllbnQsIGkuZS4sIHRoZSBjb21waWxlci4KLWNvbnN0IHNpemVfdCBUb2tlbml6ZXI6OmtNYXhU
b2tlbkxlbmd0aCA9IDI1NjsKLQotVG9rZW5pemVyOjpUb2tlbml6ZXIoRGlhZ25vc3RpY3MqIGRp
YWdub3N0aWNzKSA6IG1IYW5kbGUoMCkKK1Rva2VuaXplcjo6VG9rZW5pemVyKERpYWdub3N0aWNz
KiBkaWFnbm9zdGljcykKKyAgICA6IG1IYW5kbGUoMCksCisgICAgICBtTWF4VG9rZW5MZW5ndGgo
MjU2KQogewogICAgIG1Db250ZXh0LmRpYWdub3N0aWNzID0gZGlhZ25vc3RpY3M7CiB9CkBAIC0y
MzM3LDExICsyMjQwLDExIEBAIHZvaWQgVG9rZW5pemVyOjpzZXRMaW5lTnVtYmVyKGludCBsaW5l
KQogdm9pZCBUb2tlbml6ZXI6OmxleChUb2tlbiogdG9rZW4pCiB7CiAgICAgdG9rZW4tPnR5cGUg
PSBwcGxleCgmdG9rZW4tPnRleHQsJnRva2VuLT5sb2NhdGlvbixtSGFuZGxlKTsKLSAgICBpZiAo
dG9rZW4tPnRleHQuc2l6ZSgpID4ga01heFRva2VuTGVuZ3RoKQorICAgIGlmICh0b2tlbi0+dGV4
dC5zaXplKCkgPiBtTWF4VG9rZW5MZW5ndGgpCiAgICAgewogICAgICAgICBtQ29udGV4dC5kaWFn
bm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpUT0tFTl9UT09fTE9ORywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi0+bG9jYXRpb24sIHRva2VuLT50ZXh0KTsK
LSAgICAgICAgdG9rZW4tPnRleHQuZXJhc2Uoa01heFRva2VuTGVuZ3RoKTsKKyAgICAgICAgdG9r
ZW4tPnRleHQuZXJhc2UobU1heFRva2VuTGVuZ3RoKTsKICAgICB9CiAKICAgICB0b2tlbi0+Zmxh
Z3MgPSAwOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9Ub2tlbml6ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5oCShyZXZpc2lvbiAxNTk1MzIp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rv
a2VuaXplci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMyArMzIsMTMgQEAgY2xhc3MgVG9rZW5p
emVyIDogcHVibGljIExleGVyCiAgICAgICAgIGJvb2wgbGVhZGluZ1NwYWNlOwogICAgICAgICBi
b29sIGxpbmVTdGFydDsKICAgICB9OwotICAgIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCBrTWF4
VG9rZW5MZW5ndGg7CiAKICAgICBUb2tlbml6ZXIoRGlhZ25vc3RpY3MqIGRpYWdub3N0aWNzKTsK
ICAgICB+VG9rZW5pemVyKCk7CiAKICAgICBib29sIGluaXQoc2l6ZV90IGNvdW50LCBjb25zdCBj
aGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdKTsKIAorICAgIHZvaWQgc2V0
TWF4VG9rZW5MZW5ndGgoc2l6ZV90IG1heExlbmd0aCkgeyBtTWF4VG9rZW5MZW5ndGggPSBtYXhM
ZW5ndGg7IH0KICAgICB2b2lkIHNldEZpbGVOdW1iZXIoaW50IGZpbGUpOwogICAgIHZvaWQgc2V0
TGluZU51bWJlcihpbnQgbGluZSk7CiAKQEAgLTUxLDYgKzUxLDcgQEAgY2xhc3MgVG9rZW5pemVy
IDogcHVibGljIExleGVyCiAKICAgICB2b2lkKiBtSGFuZGxlOyAgLy8gU2Nhbm5lciBoYW5kbGUu
CiAgICAgQ29udGV4dCBtQ29udGV4dDsgIC8vIFNjYW5uZXIgZXh0cmEuCisgICAgc2l6ZV90IG1N
YXhUb2tlbkxlbmd0aDsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSBwcApJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIubAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vz
c29yL1Rva2VuaXplci5sCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5sCSh3b3JraW5nIGNvcHkp
CkBAIC0zMywxMiArMzMsNiBAQCBJRiBZT1UgTU9ESUZZIFRISVMgRklMRSBZT1UgQUxTTyBORUVE
IFRPCiAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XbWlzc2luZy1ub3JldHVybiIK
ICNlbmRpZgogCi0jaWYgZGVmaW5lZChfX2NsYW5nX18pCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5rbm93bi1wcmFn
bWFzIgotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1yZWdp
c3RlciIKLSNlbmRpZgotCiB0eXBlZGVmIHN0ZDo6c3RyaW5nIFlZU1RZUEU7CiB0eXBlZGVmIHBw
OjpTb3VyY2VMb2NhdGlvbiBZWUxUWVBFOwogCkBAIC03Miw4ICs2Niw2IEBAIHR5cGVkZWYgcHA6
OlNvdXJjZUxvY2F0aW9uIFlZTFRZUEU7CiAjZGVmaW5lIFlZX0lOUFVUKGJ1ZiwgcmVzdWx0LCBt
YXhTaXplKSBcCiAgICAgcmVzdWx0ID0geXlleHRyYS0+aW5wdXQucmVhZChidWYsIG1heFNpemUp
OwogCi0jZGVmaW5lIFlZX05PX0lOUFVUCi0KICV9CiAKICVvcHRpb24gbm95eXdyYXAgbm91bnB1
dCBuZXZlci1pbnRlcmFjdGl2ZQpAQCAtMjczLDE3ICsyNjUsMTEgQEAgRlJBQ1RJT05BTF9DT05T
VEFOVCAgKHtESUdJVH0qIi4ie0RJR0lUfQogCiAlJQogCi0jaWYgZGVmaW5lZChfX2NsYW5nX18p
Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0jZW5kaWYKLQogbmFtZXNwYWNlIHBwIHsK
IAotLy8gVE9ETyhhbG9rcCk6IE1heGltdW0gdG9rZW4gbGVuZ3RoIHNob3VsZCBpZGVhbGx5IGJl
IHNwZWNpZmllZCBieQotLy8gdGhlIHByZXByb2Nlc3NvciBjbGllbnQsIGkuZS4sIHRoZSBjb21w
aWxlci4KLWNvbnN0IHNpemVfdCBUb2tlbml6ZXI6OmtNYXhUb2tlbkxlbmd0aCA9IDI1NjsKLQot
VG9rZW5pemVyOjpUb2tlbml6ZXIoRGlhZ25vc3RpY3MqIGRpYWdub3N0aWNzKSA6IG1IYW5kbGUo
MCkKK1Rva2VuaXplcjo6VG9rZW5pemVyKERpYWdub3N0aWNzKiBkaWFnbm9zdGljcykKKyAgICA6
IG1IYW5kbGUoMCksCisgICAgICBtTWF4VG9rZW5MZW5ndGgoMjU2KQogewogICAgIG1Db250ZXh0
LmRpYWdub3N0aWNzID0gZGlhZ25vc3RpY3M7CiB9CkBAIC0zMTYsMTEgKzMwMiwxMSBAQCB2b2lk
IFRva2VuaXplcjo6c2V0TGluZU51bWJlcihpbnQgbGluZSkKIHZvaWQgVG9rZW5pemVyOjpsZXgo
VG9rZW4qIHRva2VuKQogewogICAgIHRva2VuLT50eXBlID0geXlsZXgoJnRva2VuLT50ZXh0LCAm
dG9rZW4tPmxvY2F0aW9uLCBtSGFuZGxlKTsKLSAgICBpZiAodG9rZW4tPnRleHQuc2l6ZSgpID4g
a01heFRva2VuTGVuZ3RoKQorICAgIGlmICh0b2tlbi0+dGV4dC5zaXplKCkgPiBtTWF4VG9rZW5M
ZW5ndGgpCiAgICAgewogICAgICAgICBtQ29udGV4dC5kaWFnbm9zdGljcy0+cmVwb3J0KERpYWdu
b3N0aWNzOjpUT0tFTl9UT09fTE9ORywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0b2tlbi0+bG9jYXRpb24sIHRva2VuLT50ZXh0KTsKLSAgICAgICAgdG9rZW4tPnRleHQu
ZXJhc2Uoa01heFRva2VuTGVuZ3RoKTsKKyAgICAgICAgdG9rZW4tPnRleHQuZXJhc2UobU1heFRv
a2VuTGVuZ3RoKTsKICAgICB9CiAKICAgICB0b2tlbi0+ZmxhZ3MgPSAwOwpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9nZW5lcmF0ZV9wYXJz
ZXIuc2gKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3ByZXByb2Nlc3Nvci9nZW5lcmF0ZV9wYXJzZXIuc2gJKHJldmlzaW9uIDE1OTUzMikKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvZ2VuZXJhdGVf
cGFyc2VyLnNoCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwzICsyNCw0IEBAIHNjcmlwdF9kaXI9JChk
aXJuYW1lICQwKQogIyBHZW5lcmF0ZSBwcmVwcm9jZXNzb3IKIHJ1bl9mbGV4IFRva2VuaXplci5s
IFRva2VuaXplci5jcHAKIHJ1bl9iaXNvbiBFeHByZXNzaW9uUGFyc2VyLnkgRXhwcmVzc2lvblBh
cnNlci5jcHAKK3BhdGNoIC0tc2lsZW50IC0tZm9yd2FyZCA8IDY0Yml0LXRva2VuaXplci1zYWZl
dHkucGF0Y2gKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVw
cm9jZXNzb3IvcHJlcHJvY2Vzc29yLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9wcmVwcm9jZXNzb3IudmN4cHJv
agkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9w
cmVwcm9jZXNzb3IvcHJlcHJvY2Vzc29yLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxNzIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+DQorPFBy
b2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0
dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+DQorICA8
SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPg0KKyAgICA8UHJvamVjdENv
bmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9u
PkRlYnVnPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+
DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlv
biBJbmNsdWRlPSJEZWJ1Z3x4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25m
aWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2pl
Y3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVs
ZWFzZXxXaW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlv
bj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25m
aWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4
NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+DQorICAg
ICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+
DQorICA8L0l0ZW1Hcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4NCisg
ICAgPFByb2plY3RHdWlkPntGQkUzMkRGMy0wRkIwLTRGMkYtQTQyNC0yQzIxQkQ3QkMzMjV9PC9Q
cm9qZWN0R3VpZD4NCisgICAgPFJvb3ROYW1lc3BhY2U+cHJlcHJvY2Vzc29yPC9Sb290TmFtZXNw
YWNlPg0KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+DQorICA8L1Byb3BlcnR5R3Jv
dXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5E
ZWZhdWx0LnByb3BzIiAvPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRp
b24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlv
blR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgICA8
V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4N
CisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJh
dGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0
aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICA8
L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24i
Pg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5
cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgICA8V2hv
bGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisg
IDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24i
Pg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5
cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9w
ZXJ0eUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29m
dC5DcHAucHJvcHMiIC8+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdz
Ij4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5
U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2Fs
QXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIg
TGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhp
c3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMn
KSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisg
IDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9q
ZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMi
IENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZv
cm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9J
bXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAg
IDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3Jt
KS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0
LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9y
bSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1h
Y3JvcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwPg0KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4x
MC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+DQorICAgIDxPdXREaXIgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRp
b25EaXIpJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChDb25maWd1
cmF0aW9uKVw8L0ludERpcj4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybSlc
JChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoUGxhdGZvcm0pXCQoQ29u
ZmlndXJhdGlvbilcPC9JbnREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKENv
bmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoQ29uZmlndXJhdGlvbilc
PC9JbnREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybSlcJChDb25m
aWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChQbGF0Zm9ybSlcJChDb25maWd1
cmF0aW9uKVw8L0ludERpcj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJdGVtRGVmaW5pdGlv
bkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVk
PC9PcHRpbWl6YXRpb24+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19E
RUJVRztfV0lORE9XUztfVVNSRExMO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtOT01JTk1BWDsl
KFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAg
ICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPg0KKyAgICAgIDxCYXNpY1J1
bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPg0KKyAgICAg
IDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAg
ICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAg
ICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPFRyZWF0V2Fy
bmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCisgICAgICA8RGVidWdJbmZv
cm1hdGlvbkZvcm1hdD5FZGl0QW5kQ29udGludWU8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQor
ICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0NDs0
MjQ1OzQ1MTI7NDcwMjs0MjY3OyUoRGlzYWJsZVNwZWNpZmljV2FybmluZ3MpPC9EaXNhYmxlU3Bl
Y2lmaWNXYXJuaW5ncz4NCisgICAgPC9DbENvbXBpbGU+DQorICA8L0l0ZW1EZWZpbml0aW9uR3Jv
dXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPg0KKyAgICA8TWlkbD4NCisgICAgICA8VGFyZ2V0
RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4NCisgICAgPC9NaWRsPg0KKyAgICA8
Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4N
CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19XSU5ET1dTO19V
U1JETEw7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05PTUlOTUFYOyUoUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8TWluaW1hbFJlYnVp
bGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+DQorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFi
bGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5
Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZl
bD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8VHJlYXRXYXJuaW5nQXNFcnJvcj50cnVl
PC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlBy
b2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8RGlzYWJsZVNw
ZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7NDUxMjs0NzAyOzQ3
MTg7NDI2NzslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2Fybmlu
Z3M+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0
ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXph
dGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFu
c2lvbj5BbnlTdWl0YWJsZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+DQorICAgICAgPFByZXBy
b2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfV0lORE9XUztfVVNSRExMO19DUlRfU0VD
VVJFX05PX0RFUFJFQ0FURTtOT01JTk1BWDtfU0VDVVJFX1NDTD0wOyUoUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8UnVudGltZUxpYnJh
cnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVh
ZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5M
ZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8VHJlYXRXYXJuaW5nQXNFcnJvcj50cnVlPC9U
cmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dy
YW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8RGlzYWJsZVNwZWNp
ZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7NDUxMjs0NzAyOzQ3MTg7
NDI2NzslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+
DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1E
ZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfHg2NCciPg0KKyAgICA8TWlkbD4NCisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+
WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4NCisgICAgPC9NaWRsPg0KKyAgICA8Q2xDb21waWxlPg0K
KyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8SW5s
aW5lRnVuY3Rpb25FeHBhbnNpb24+QW55U3VpdGFibGU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9u
Pg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X1dJTkRPV1M7
X1VTUkRMTDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7Tk9NSU5NQVg7X1NFQ1VSRV9TQ0w9MDsl
KFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAg
ICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAg
IDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAg
IDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPFRyZWF0V2Fybmlu
Z0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCisgICAgICA8RGVidWdJbmZvcm1h
dGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAg
ICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0NDs0MjQ1
OzQ1MTI7NDcwMjs0NzE4OzQyNjc7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rpc2FibGVT
cGVjaWZpY1dhcm5pbmdzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgIDwvSXRlbURlZmluaXRpb25H
cm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRGlhZ25vc3Rp
Y3NCYXNlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEaXJlY3RpdmVIYW5kbGVy
QmFzZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRGlyZWN0aXZlUGFyc2VyLmNw
cCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJFeHByZXNzaW9uUGFyc2VyLmNwcCIgLz4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJJbnB1dC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iTGV4ZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ik1hY3JvLmNw
cCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJNYWNyb0V4cGFuZGVyLmNwcCIgLz4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJQcmVwcm9jZXNzb3IuY3BwIiAvPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9IlRva2VuLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJUb2tl
bml6ZXIuY3BwIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Imxlbmd0aF9saW1pdHMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJEaWFnbm9zdGljc0Jhc2UuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJEaXJl
Y3RpdmVIYW5kbGVyQmFzZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkRpcmVjdGl2
ZVBhcnNlci5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkV4cHJlc3Npb25QYXJzZXIu
aCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJJbnB1dC5oIiAvPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IkxleGVyLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iTWFjcm8u
aCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJNYWNyb0V4cGFuZGVyLmgiIC8+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0ibnVtZXJpY19sZXguaCIgLz4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJwcF91dGlscy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlByZXByb2Nl
c3Nvci5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlNvdXJjZUxvY2F0aW9uLmgiIC8+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVG9rZW4uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJUb2tlbml6ZXIuaCIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4N
CisgICAgPE5vbmUgSW5jbHVkZT0iVG9rZW5pemVyLmwiIC8+DQorICA8L0l0ZW1Hcm91cD4NCisg
IDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMi
IC8+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPg0KKyAgPC9JbXBv
cnRHcm91cD4NCis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9wcmVwcm9j
ZXNzb3IudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvcHJlcHJvY2Vzc29yLnZjeHByb2ouZmlsdGVy
cwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9w
cmVwcm9jZXNzb3IvcHJlcHJvY2Vzc29yLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEwMCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgi
Pz4NCis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1p
Y3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+DQorICA8SXRlbUdyb3VwPg0KKyAg
ICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZp
ZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZp
ZXI+DQorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7
YXNtO2FzbXg8L0V4dGVuc2lvbnM+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1
ZGU9IkhlYWRlciBGaWxlcyI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5
QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgICAgPEV4
dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPg0KKyAgICA8L0Zp
bHRlcj4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJEaXJlY3RpdmVQYXJzZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxl
czwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJF
eHByZXNzaW9uUGFyc2VyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRl
cj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW5wdXQuY3Bw
Ij4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGls
ZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJMZXhlci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+
U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ik1hY3JvLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRl
cj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iTWFjcm9FeHBh
bmRlci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwv
Q2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlByZXByb2Nlc3Nvci5jcHAiPg0K
KyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlRva2VuLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iVG9rZW5pemVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRl
cj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRGlhZ25vc3Rp
Y3NCYXNlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAg
PC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRGlyZWN0aXZlSGFuZGxlckJh
c2UuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0Ns
Q29tcGlsZT4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJEaXJlY3RpdmVQYXJzZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmls
ZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
RXhwcmVzc2lvblBhcnNlci5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVy
Pg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJJbnB1dC5oIj4N
CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJMZXhlci5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRl
ciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJNYWNyby5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAg
ICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJNYWNyb0V4cGFuZGVyLmgi
Pg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRl
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Im51bWVyaWNfbGV4LmgiPg0KKyAgICAgIDxGaWx0
ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9InBwX3V0aWxzLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9G
aWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlByZXBy
b2Nlc3Nvci5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8
L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJTb3VyY2VMb2NhdGlvbi5oIj4N
CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJUb2tlbi5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRl
ciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJUb2tlbml6ZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0ibGVuZ3RoX2xpbWl0
cy5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5j
bHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJEaWFnbm9zdGljc0Jhc2UuaCI+DQorICAg
ICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iRGlyZWN0aXZlSGFuZGxlckJhc2UuaCI+DQorICAgICAgPEZp
bHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICA8L0l0ZW1H
cm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxOb25lIEluY2x1ZGU9IlRva2VuaXplci5sIj4N
CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L05vbmU+DQorICA8
L0l0ZW1Hcm91cD4NCis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RpbWluZy9SZXN0cmljdEZy
YWdtZW50U2hhZGVyVGltaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdGltaW5nL1Jlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmcuY3Bw
CShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdGltaW5nL1Jlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01LDcgKzUsNyBAQAogLy8KIAogI2luY2x1ZGUgImNvbXBpbGVyL0luZm9TaW5rLmgiCi0j
aW5jbHVkZSAiY29tcGlsZXIvUGFyc2VIZWxwZXIuaCIKKyNpbmNsdWRlICJjb21waWxlci9QYXJz
ZUNvbnRleHQuaCIKICNpbmNsdWRlICJjb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhP
dXRwdXQuaCIKICNpbmNsdWRlICJjb21waWxlci90aW1pbmcvUmVzdHJpY3RGcmFnbWVudFNoYWRl
clRpbWluZy5oIgogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML1N1
cmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJF
R0wvU3VyZmFjZS5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJFR0wvU3VyZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwLDYgKzEwLDgg
QEAKIAogI2luY2x1ZGUgPHRjaGFyLmg+CiAKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKICNpbmNs
dWRlICJsaWJFR0wvU3VyZmFjZS5oIgogCiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCkBAIC0z
MDksNiArMzExLDEzIEBAIGJvb2wgU3VyZmFjZTo6Y2hlY2tGb3JPdXRPZkRhdGVTd2FwQ2hhaW4K
ICAgICBpbnQgY2xpZW50SGVpZ2h0ID0gY2xpZW50LmJvdHRvbSAtIGNsaWVudC50b3A7CiAgICAg
Ym9vbCBzaXplRGlydHkgPSBjbGllbnRXaWR0aCAhPSBnZXRXaWR0aCgpIHx8IGNsaWVudEhlaWdo
dCAhPSBnZXRIZWlnaHQoKTsKIAorICAgIGlmIChJc0ljb25pYyhnZXRXaW5kb3dIYW5kbGUoKSkp
CisgICAgeworICAgICAgICAvLyBUaGUgd2luZG93IGlzIGF1dG9tYXRpY2FsbHkgcmVzaXplZCB0
byAxNTB4MjIgd2hlbiBpdCdzIG1pbmltaXplZCwgYnV0IHRoZSBzd2FwY2hhaW4gc2hvdWxkbid0
IGJlIHJlc2l6ZWQKKyAgICAgICAgLy8gYmVjYXVzZSB0aGF0J3Mgbm90IGEgdXNlZnVsIHNpemUg
dG8gcmVuZGVyIHRvLgorICAgICAgICBzaXplRGlydHkgPSBmYWxzZTsKKyAgICB9CisKICAgICBp
ZiAobVN3YXBJbnRlcnZhbERpcnR5KQogICAgIHsKICAgICAgICAgcmVzZXRTd2FwQ2hhaW4oY2xp
ZW50V2lkdGgsIGNsaWVudEhlaWdodCk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliRUdML2xpYkVHTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkVHTC9saWJFR0wuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgx
OSwxMyArODE5LDIxIEBAIEVHTENvbnRleHQgX19zdGRjYWxsIGVnbENyZWF0ZUNvbnRleHQoRUcK
ICAgICAgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQ09ORklHLCBFR0xfTk9fQ09O
VEVYVCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoc2hhcmVfY29udGV4dCAmJiBzdGF0aWNf
Y2FzdDxnbDo6Q29udGV4dCo+KHNoYXJlX2NvbnRleHQpLT5pc1Jlc2V0Tm90aWZpY2F0aW9uRW5h
YmxlZCgpICE9IHJlc2V0X25vdGlmaWNhdGlvbikKKyAgICAgICAgZ2w6OkNvbnRleHQgKnNoYXJl
ZENvbnRleHRQdHIgPSAoc2hhcmVfY29udGV4dCAhPSBFR0xfTk9fQ09OVEVYVCA/IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0Kj4oc2hhcmVfY29udGV4dCkgOiBOVUxMKTsKKworICAgICAgICBpZiAo
c2hhcmVkQ29udGV4dFB0ciAhPSBOVUxMICYmIHNoYXJlZENvbnRleHRQdHItPmlzUmVzZXROb3Rp
ZmljYXRpb25FbmFibGVkKCkgIT0gcmVzZXRfbm90aWZpY2F0aW9uKQogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX01BVENILCBFR0xfTk9fQ09OVEVYVCk7
CiAgICAgICAgIH0KIAogICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2Fz
dDxlZ2w6OkRpc3BsYXkqPihkcHkpOwogCisgICAgICAgIC8vIENhbiBub3Qgc2hhcmUgY29udGV4
dHMgYmV0d2VlbiBkaXNwbGF5cworICAgICAgICBpZiAoc2hhcmVkQ29udGV4dFB0ciAhPSBOVUxM
ICYmIHNoYXJlZENvbnRleHRQdHItPmdldFJlbmRlcmVyKCkgIT0gZGlzcGxheS0+Z2V0UmVuZGVy
ZXIoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9N
QVRDSCwgRUdMX05PX0NPTlRFWFQpOworICAgICAgICB9CisKICAgICAgICAgaWYgKCF2YWxpZGF0
ZUNvbmZpZyhkaXNwbGF5LCBjb25maWcpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
RUdMX05PX0NPTlRFWFQ7CkBAIC04ODgsMTUgKzg5NiwxOCBAQCBFR0xCb29sZWFuIF9fc3RkY2Fs
bCBlZ2xNYWtlQ3VycmVudChFR0xECiAgICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAg
ICAgICB9CiAKLSAgICAgICAgcng6OlJlbmRlcmVyICpyZW5kZXJlciA9IGRpc3BsYXktPmdldFJl
bmRlcmVyKCk7Ci0gICAgICAgIGlmIChyZW5kZXJlci0+dGVzdERldmljZUxvc3QodHJ1ZSkpCisg
ICAgICAgIGlmIChkcHkgIT0gRUdMX05PX0RJU1BMQVkpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBFR0xfRkFMU0U7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIHJ4OjpSZW5kZXJlciAq
cmVuZGVyZXIgPSBkaXNwbGF5LT5nZXRSZW5kZXJlcigpOworICAgICAgICAgICAgaWYgKHJlbmRl
cmVyLT50ZXN0RGV2aWNlTG9zdCh0cnVlKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gRUdMX0ZBTFNFOworICAgICAgICAgICAgfQogCi0gICAgICAgIGlmIChyZW5kZXJl
ci0+aXNEZXZpY2VMb3N0KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlZ2w6OmVy
cm9yKEVHTF9DT05URVhUX0xPU1QsIEVHTF9GQUxTRSk7CisgICAgICAgICAgICBpZiAocmVuZGVy
ZXItPmlzRGV2aWNlTG9zdCgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biBlZ2w6OmVycm9yKEVHTF9DT05URVhUX0xPU1QsIEVHTF9GQUxTRSk7CisgICAgICAgICAgICB9
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoKGRyYXcgIT0gRUdMX05PX1NVUkZBQ0UgJiYgIXZh
bGlkYXRlU3VyZmFjZShkaXNwbGF5LCBzdGF0aWNfY2FzdDxlZ2w6OlN1cmZhY2UqPihkcmF3KSkp
IHx8CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5yYwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5y
YwkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVH
TC9saWJFR0wucmMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAyICsxLDEwMiBAQAotLy8gTWljcm9z
b2Z0IFZpc3VhbCBDKysgZ2VuZXJhdGVkIHJlc291cmNlIHNjcmlwdC4KLS8vCi0jaW5jbHVkZSAi
cmVzb3VyY2UuaCIKLQotI2RlZmluZSBBUFNUVURJT19SRUFET05MWV9TWU1CT0xTCi0vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwotLy8KLS8vIEdlbmVyYXRlZCBmcm9tIHRoZSBURVhUSU5DTFVERSAyIHJl
c291cmNlLgotLy8KLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSAiLi4vY29tbW9uL3Zl
cnNpb24uaCIKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSN1bmRlZiBBUFNUVURJT19SRUFET05M
WV9TWU1CT0xTCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBFbmdsaXNoIChVLlMuKSByZXNv
dXJjZXMKLQotI2lmICFkZWZpbmVkKEFGWF9SRVNPVVJDRV9ETEwpIHx8IGRlZmluZWQoQUZYX1RB
UkdfRU5VKQotI2lmZGVmIF9XSU4zMgotTEFOR1VBR0UgTEFOR19FTkdMSVNILCBTVUJMQU5HX0VO
R0xJU0hfVVMKLSNwcmFnbWEgY29kZV9wYWdlKDEyNTIpCi0jZW5kaWYgLy9fV0lOMzIKLQotI2lm
ZGVmIEFQU1RVRElPX0lOVk9LRUQKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gVEVYVElO
Q0xVREUKLS8vCi0KLTEgVEVYVElOQ0xVREUgCi1CRUdJTgotICAgICJyZXNvdXJjZS5oXDAiCi1F
TkQKLQotMiBURVhUSU5DTFVERSAKLUJFR0lOCi0gICAgIiNpbmNsdWRlICIiYWZ4cmVzLmgiIlxy
XG4iCi0gICAgIiNpbmNsdWRlICIiLi4vY29tbW9uL3ZlcnNpb24uaCIiXDAiCi1FTkQKLQotMyBU
RVhUSU5DTFVERSAKLUJFR0lOCi0gICAgIlxyXG4iCi0gICAgIlwwIgotRU5ECi0KLSNlbmRpZiAg
ICAvLyBBUFNUVURJT19JTlZPS0VECi0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBW
ZXJzaW9uCi0vLwotCi1WU19WRVJTSU9OX0lORk8gVkVSU0lPTklORk8KLSBGSUxFVkVSU0lPTiBN
QUpPUl9WRVJTSU9OLE1JTk9SX1ZFUlNJT04sQlVJTERfVkVSU0lPTixCVUlMRF9SRVZJU0lPTgot
IFBST0RVQ1RWRVJTSU9OIE1BSk9SX1ZFUlNJT04sTUlOT1JfVkVSU0lPTixCVUlMRF9WRVJTSU9O
LEJVSUxEX1JFVklTSU9OCi0gRklMRUZMQUdTTUFTSyAweDE3TAotI2lmZGVmIF9ERUJVRwotIEZJ
TEVGTEFHUyAweDFMCi0jZWxzZQotIEZJTEVGTEFHUyAweDBMCi0jZW5kaWYKLSBGSUxFT1MgMHg0
TAotIEZJTEVUWVBFIDB4MkwKLSBGSUxFU1VCVFlQRSAweDBMCi1CRUdJTgotICAgIEJMT0NLICJT
dHJpbmdGaWxlSW5mbyIKLSAgICBCRUdJTgotICAgICAgICBCTE9DSyAiMDQwOTA0YjAiCi0gICAg
ICAgIEJFR0lOCi0gICAgICAgICAgICBWQUxVRSAiRmlsZURlc2NyaXB0aW9uIiwgIkFOR0xFIGxp
YkVHTCBEeW5hbWljIExpbmsgTGlicmFyeSIKLSAgICAgICAgICAgIFZBTFVFICJGaWxlVmVyc2lv
biIsIFZFUlNJT05fU1RSSU5HCi0gICAgICAgICAgICBWQUxVRSAiSW50ZXJuYWxOYW1lIiwgImxp
YkVHTCIKLSAgICAgICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsICJDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4iCi0gICAgICAgICAgICBWQUxVRSAiT3JpZ2luYWxGaWxlbmFtZSIs
ICJsaWJFR0wuZGxsIgotICAgICAgICAgICAgVkFMVUUgIlByaXZhdGVCdWlsZCIsIFZFUlNJT05f
U1RSSU5HCi0gICAgICAgICAgICBWQUxVRSAiUHJvZHVjdE5hbWUiLCAiQU5HTEUgbGliRUdMIER5
bmFtaWMgTGluayBMaWJyYXJ5IgotICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3RWZXJzaW9uIiwg
VkVSU0lPTl9TVFJJTkcKLSAgICAgICAgRU5ECi0gICAgRU5ECi0gICAgQkxPQ0sgIlZhckZpbGVJ
bmZvIgotICAgIEJFR0lOCi0gICAgICAgIFZBTFVFICJUcmFuc2xhdGlvbiIsIDB4NDA5LCAxMjAw
Ci0gICAgRU5ECi1FTkQKLQotI2VuZGlmICAgIC8vIEVuZ2xpc2ggKFUuUy4pIHJlc291cmNlcwot
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KLQotCi0KLSNpZm5kZWYgQVBTVFVESU9fSU5WT0tFRAotLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBHZW5lcmF0ZWQgZnJvbSB0aGUgVEVYVElOQ0xVREUg
MyByZXNvdXJjZS4KLS8vCi0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSNlbmRpZiAgICAvLyBu
b3QgQVBTVFVESU9fSU5WT0tFRAorLy8gTWljcm9zb2Z0IFZpc3VhbCBDKysgZ2VuZXJhdGVkIHJl
c291cmNlIHNjcmlwdC4NCisvLw0KKyNpbmNsdWRlICJyZXNvdXJjZS5oIg0KKw0KKyNkZWZpbmUg
QVBTVFVESU9fUkVBRE9OTFlfU1lNQk9MUw0KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQorLy8NCisv
LyBHZW5lcmF0ZWQgZnJvbSB0aGUgVEVYVElOQ0xVREUgMiByZXNvdXJjZS4NCisvLw0KKyNpbmNs
dWRlIDx3aW5kb3dzLmg+DQorI2luY2x1ZGUgIi4uL2NvbW1vbi92ZXJzaW9uLmgiDQorDQorLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8NCisjdW5kZWYgQVBTVFVESU9fUkVBRE9OTFlfU1lNQk9MUw0KKw0K
Ky8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vDQorLy8gRW5nbGlzaCAoVS5TLikgcmVzb3VyY2VzDQorDQor
I2lmICFkZWZpbmVkKEFGWF9SRVNPVVJDRV9ETEwpIHx8IGRlZmluZWQoQUZYX1RBUkdfRU5VKQ0K
KyNpZmRlZiBfV0lOMzINCitMQU5HVUFHRSBMQU5HX0VOR0xJU0gsIFNVQkxBTkdfRU5HTElTSF9V
Uw0KKyNwcmFnbWEgY29kZV9wYWdlKDEyNTIpDQorI2VuZGlmIC8vX1dJTjMyDQorDQorI2lmZGVm
IEFQU1RVRElPX0lOVk9LRUQNCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KKy8vDQorLy8gVEVYVElO
Q0xVREUNCisvLw0KKw0KKzEgVEVYVElOQ0xVREUgDQorQkVHSU4NCisgICAgInJlc291cmNlLmhc
MCINCitFTkQNCisNCisyIFRFWFRJTkNMVURFIA0KK0JFR0lODQorICAgICIjaW5jbHVkZSAiImFm
eHJlcy5oIiJcclxuIg0KKyAgICAiI2luY2x1ZGUgIiIuLi9jb21tb24vdmVyc2lvbi5oIiJcMCIN
CitFTkQNCisNCiszIFRFWFRJTkNMVURFIA0KK0JFR0lODQorICAgICJcclxuIg0KKyAgICAiXDAi
DQorRU5EDQorDQorI2VuZGlmICAgIC8vIEFQU1RVRElPX0lOVk9LRUQNCisNCisNCisvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLw0KKy8vDQorLy8gVmVyc2lvbg0KKy8vDQorDQorVlNfVkVSU0lPTl9JTkZP
IFZFUlNJT05JTkZPDQorIEZJTEVWRVJTSU9OIE1BSk9SX1ZFUlNJT04sTUlOT1JfVkVSU0lPTixC
VUlMRF9WRVJTSU9OLEJVSUxEX1JFVklTSU9ODQorIFBST0RVQ1RWRVJTSU9OIE1BSk9SX1ZFUlNJ
T04sTUlOT1JfVkVSU0lPTixCVUlMRF9WRVJTSU9OLEJVSUxEX1JFVklTSU9ODQorIEZJTEVGTEFH
U01BU0sgMHgxN0wNCisjaWZkZWYgX0RFQlVHDQorIEZJTEVGTEFHUyAweDFMDQorI2Vsc2UNCisg
RklMRUZMQUdTIDB4MEwNCisjZW5kaWYNCisgRklMRU9TIDB4NEwNCisgRklMRVRZUEUgMHgyTA0K
KyBGSUxFU1VCVFlQRSAweDBMDQorQkVHSU4NCisgICAgQkxPQ0sgIlN0cmluZ0ZpbGVJbmZvIg0K
KyAgICBCRUdJTg0KKyAgICAgICAgQkxPQ0sgIjA0MDkwNGIwIg0KKyAgICAgICAgQkVHSU4NCisg
ICAgICAgICAgICBWQUxVRSAiRmlsZURlc2NyaXB0aW9uIiwgIkFOR0xFIGxpYkVHTCBEeW5hbWlj
IExpbmsgTGlicmFyeSINCisgICAgICAgICAgICBWQUxVRSAiRmlsZVZlcnNpb24iLCBWRVJTSU9O
X1NUUklORw0KKyAgICAgICAgICAgIFZBTFVFICJJbnRlcm5hbE5hbWUiLCAibGliRUdMIg0KKyAg
ICAgICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsICJDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4iDQorICAgICAgICAgICAgVkFMVUUgIk9yaWdpbmFsRmlsZW5hbWUiLCAibGliRUdM
LmRsbCINCisgICAgICAgICAgICBWQUxVRSAiUHJpdmF0ZUJ1aWxkIiwgVkVSU0lPTl9TVFJJTkcN
CisgICAgICAgICAgICBWQUxVRSAiUHJvZHVjdE5hbWUiLCAiQU5HTEUgbGliRUdMIER5bmFtaWMg
TGluayBMaWJyYXJ5Ig0KKyAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0VmVyc2lvbiIsIFZFUlNJ
T05fU1RSSU5HDQorICAgICAgICBFTkQNCisgICAgRU5EDQorICAgIEJMT0NLICJWYXJGaWxlSW5m
byINCisgICAgQkVHSU4NCisgICAgICAgIFZBTFVFICJUcmFuc2xhdGlvbiIsIDB4NDA5LCAxMjAw
DQorICAgIEVORA0KK0VORA0KKw0KKyNlbmRpZiAgICAvLyBFbmdsaXNoIChVLlMuKSByZXNvdXJj
ZXMNCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KKw0KKw0KKw0KKyNpZm5kZWYgQVBTVFVESU9fSU5W
T0tFRA0KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQorLy8NCisvLyBHZW5lcmF0ZWQgZnJvbSB0aGUg
VEVYVElOQ0xVREUgMyByZXNvdXJjZS4NCisvLw0KKw0KKw0KKy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
DQorI2VuZGlmICAgIC8vIG5vdCBBUFNUVURJT19JTlZPS0VEDQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkVHTC9saWJFR0wudmN4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC52Y3hwcm9qCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9saWJFR0wudmN4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI1OCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBl
bmNvZGluZz0idXRmLTgiPz4NCis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xz
VmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9w
ZXIvbXNidWlsZC8yMDAzIj4NCisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0
aW9ucyI+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+
DQorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBs
YXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisg
ICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+DQorICAgICAgPENv
bmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPng2NDwv
UGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29u
ZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlv
bj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZv
cm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJh
dGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFz
ZTwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAg
PC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPFByb3BlcnR5R3Jv
dXAgTGFiZWw9Ikdsb2JhbHMiPg0KKyAgICA8UHJvamVjdEd1aWQ+e0U3NDZGQ0E5LTY0QzMtNDMz
RS04NUU4LTlBNUE2N0FCN0VENn08L1Byb2plY3RHdWlkPg0KKyAgICA8Um9vdE5hbWVzcGFjZT5s
aWJFR0w8L1Jvb3ROYW1lc3BhY2U+DQorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4N
CisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRo
KVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+DQorICA8UHJvcGVydHlHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBM
YWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGli
cmFyeTwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hh
cmFjdGVyU2V0Pg0KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJv
Z3JhbU9wdGltaXphdGlvbj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
IiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWlj
TGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwv
Q2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExh
YmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJy
YXJ5PC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFy
YWN0ZXJTZXQ+DQorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9n
cmFtT3B0aW1pemF0aW9uPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBM
YWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGli
cmFyeTwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hh
cmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZD
VGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+DQorICA8SW1wb3J0R3JvdXAgTGFi
ZWw9IkV4dGVuc2lvblNldHRpbmdzIj4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3Jv
dXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVz
ZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlv
bj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIu
cHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91
cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9y
dCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIu
cHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQo
UGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0K
KyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRz
Ij4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQo
UGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxN
aWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0
YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQ
cm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWlj
cm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChV
c2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVs
PSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8UHJvcGVy
dHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwPg0KKyAgICA8
X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+DQor
ICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25EaXIpJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisg
ICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+JChDb25maWd1cmF0aW9uKVw8L0ludERpcj4NCisgICAgPExpbmtJbmNyZW1l
bnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdp
bjMyJyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25E
aXIpJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKENvbmZpZ3Vy
YXRpb24pXDwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmZhbHNlPC9MaW5rSW5j
cmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm0pXCQoQ29uZmln
dXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKFBsYXRmb3JtKVwkKENvbmZpZ3VyYXRp
b24pXDwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvTGlua0luY3JlbWVudGFs
Pg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXx4NjQnIj4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlv
bilcPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlvbilc
PC9JbnREaXI+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+
DQorICAgIDxMaWJyYXJ5UGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8V2luMzInIj4kKExpYnJhcnlQYXRoKTwvTGlicmFyeVBhdGg+DQorICAg
IDxMaWJyYXJ5UGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyI+JChEWFNES19ESVIpXGxpYlx4ODY7JChMaWJyYXJ5UGF0aCk8L0xpYnJh
cnlQYXRoPg0KKyAgICA8TGlicmFyeVBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKExpYnJhcnlQYXRoKTwvTGlicmFyeVBhdGg+DQor
ICAgIDxMaWJyYXJ5UGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8eDY0JyI+JChMaWJyYXJ5UGF0aCk8L0xpYnJhcnlQYXRoPg0KKyAgICA8SW5j
bHVkZVBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3xXaW4zMiciPiQoRFhTREtfRElSKVxpbmNsdWRlOyQoVkNJbnN0YWxsRGlyKWluY2x1ZGU7JChW
Q0luc3RhbGxEaXIpYXRsbWZjXGluY2x1ZGU7JChXaW5kb3dzU2RrRGlyKWluY2x1ZGU7JChGcmFt
ZXdvcmtTREtEaXIpXGluY2x1ZGU7PC9JbmNsdWRlUGF0aD4NCisgIDwvUHJvcGVydHlHcm91cD4N
CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0
aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS8uLjsgJChQcm9qZWN0RGlyKS8uLi8uLi9pbmNs
dWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztf
V0lORE9XUztfVVNSRExMO0xJQkVHTF9FWFBPUlRTO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtO
T01JTk1BWDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM+DQorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPg0KKyAgICAg
IDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tz
Pg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJy
YXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVh
ZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQorICAgICAg
PFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCisgICAgICA8
RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5FZGl0QW5kQ29udGludWU8L0RlYnVnSW5mb3JtYXRpb25G
b3JtYXQ+DQorICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQy
Mzk7NDI0NDs0MjQ1OzQ1MTI7NDcwMjs0OTk2OyUoRGlzYWJsZVNwZWNpZmljV2FybmluZ3MpPC9E
aXNhYmxlU3BlY2lmaWNXYXJuaW5ncz4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0K
KyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmQzZDkubGliOyUoQWRkaXRpb25hbERlcGVu
ZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPE1vZHVsZURlZmluaXRp
b25GaWxlPmxpYkVHTC5kZWY8L01vZHVsZURlZmluaXRpb25GaWxlPg0KKyAgICAgIDxEZWxheUxv
YWRETExzPiUoRGVsYXlMb2FkRExMcyk8L0RlbGF5TG9hZERMTHM+DQorICAgICAgPEdlbmVyYXRl
RGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAg
PFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2
ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPFRhcmdl
dE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgICA8
UG9zdEJ1aWxkRXZlbnQ+DQorICAgICAgPENvbW1hbmQ+JTQwZWNobyBvbg0KK21rZGlyICIkKFBy
b2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0KK2NvcHkgIiQoT3V0RGlyKWxp
YkVHTC5kbGwiICIkKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0KK2Nv
cHkgIiQoT3V0RGlyKWxpYkVHTC5saWIiICIkKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmln
dXJhdGlvbilcIg0KKyU0MGVjaG8gb2ZmDQorPC9Db21tYW5kPg0KKyAgICA8L1Bvc3RCdWlsZEV2
ZW50Pg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMy
JyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0
aW1pemF0aW9uPg0KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5BbnlTdWl0YWJsZTwv
SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM+JChQcm9qZWN0RGlyKS8uLjsgJChQcm9qZWN0RGlyKS8uLi8uLi9pbmNsdWRlOyUoQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPkFOR0xFX0RJU0FCTEVfVFJBQ0U7V0lO
MzI7TkRFQlVHO19XSU5ET1dTO19VU1JETEw7TElCRUdMX0VYUE9SVFM7X0NSVF9TRUNVUkVfTk9f
REVQUkVDQVRFO05PTUlOTUFYO19TRUNVUkVfU0NMPTA7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9u
cyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0
aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQor
ICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwv
V2FybmluZ0xldmVsPg0KKyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0V2Fy
bmluZ0FzRXJyb3I+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFi
YXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJu
aW5ncz40MTAwOzQxMjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7NDk5NjslKERpc2Fi
bGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+DQorICAgIDwvQ2xD
b21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5kM2Q5
LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0K
KyAgICAgIDxNb2R1bGVEZWZpbml0aW9uRmlsZT5saWJFR0wuZGVmPC9Nb2R1bGVEZWZpbml0aW9u
RmlsZT4NCisgICAgICA8RGVsYXlMb2FkRExMcz4lKERlbGF5TG9hZERMTHMpPC9EZWxheUxvYWRE
TExzPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1
Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPg0KKyAg
ICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPg0KKyAgICAg
IDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+DQorICAgICAg
PERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRp
b24+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4NCisg
ICAgPC9MaW5rPg0KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+DQorICAgICAgPENvbW1hbmQ+JTQwZWNo
byBvbg0KK21rZGlyICIkKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0K
K2NvcHkgIiQoT3V0RGlyKWxpYkVHTC5kbGwiICIkKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29u
ZmlndXJhdGlvbilcIg0KK2NvcHkgIiQoT3V0RGlyKWxpYkVHTC5saWIiICIkKFByb2plY3REaXIp
Li5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0KKyU0MGVjaG8gb2ZmDQorPC9Db21tYW5kPg0K
KyAgICA8L1Bvc3RCdWlsZEV2ZW50Pg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0
ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3x4NjQnIj4NCisgICAgPE1pZGw+DQorICAgICAgPFRhcmdldEVudmlyb25tZW50
Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+DQorICAgIDwvTWlkbD4NCisgICAgPENsQ29tcGlsZT4N
CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS8uLjsgJChQcm9qZWN0RGly
KS8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJ
TjMyO19ERUJVRztfV0lORE9XUztfVVNSRExMO0xJQkVHTF9FWFBPUlRTO19DUlRfU0VDVVJFX05P
X0RFUFJFQ0FURTtOT01JTk1BWDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+DQorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1
aWxkPg0KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNS
dW50aW1lQ2hlY2tzPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8
L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1By
ZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2
ZWw+DQorICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7
NDI0NDs0MjQ1OzQ1MTI7NDcwMjs0OTk2OyUoRGlzYWJsZVNwZWNpZmljV2FybmluZ3MpPC9EaXNh
YmxlU3BlY2lmaWNXYXJuaW5ncz4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9n
cmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPFRyZWF0V2Fybmlu
Z0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCisgICAgPC9DbENvbXBpbGU+DQor
ICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmQzZDkubGliOyUoQWRk
aXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPE1v
ZHVsZURlZmluaXRpb25GaWxlPmxpYkVHTC5kZWY8L01vZHVsZURlZmluaXRpb25GaWxlPg0KKyAg
ICAgIDxEZWxheUxvYWRETExzPiUoRGVsYXlMb2FkRExMcyk8L0RlbGF5TG9hZERMTHM+DQorICAg
ICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRp
b24+DQorICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+DQorICAgICAgPERhdGFF
eGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQor
ICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9M
aW5rPg0KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+DQorICAgICAgPENvbW1hbmQ+JTQwZWNobyBvbg0K
K21rZGlyICIkKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0KK2NvcHkg
IiQoT3V0RGlyKWxpYkVHTC5kbGwiICIkKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJh
dGlvbilcIg0KK2NvcHkgIiQoT3V0RGlyKWxpYkVHTC5saWIiICIkKFByb2plY3REaXIpLi5cLi5c
bGliXCQoQ29uZmlndXJhdGlvbilcIg0KKyU0MGVjaG8gb2ZmDQorPC9Db21tYW5kPg0KKyAgICA8
L1Bvc3RCdWlsZEV2ZW50Pg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZp
bml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciPg0KKyAgICA8TWlkbD4NCisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0
PC9UYXJnZXRFbnZpcm9ubWVudD4NCisgICAgPC9NaWRsPg0KKyAgICA8Q2xDb21waWxlPg0KKyAg
ICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8SW5saW5l
RnVuY3Rpb25FeHBhbnNpb24+QW55U3VpdGFibGU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPg0K
KyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikvLi47ICQo
UHJvamVjdERpcikvLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZp
bml0aW9ucz5XSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtMSUJFR0xfRVhQT1JUUztfQ1JU
X1NFQ1VSRV9OT19ERVBSRUNBVEU7Tk9NSU5NQVg7X1NFQ1VSRV9TQ0w9MDslKFByZXByb2Nlc3Nv
ckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPFJ1bnRpbWVM
aWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxl
ZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2
ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdz
PjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0NDs0MjQ1OzQ1MTI7NDcwMjs0OTk2OyUoRGlzYWJsZVNw
ZWNpZmljV2FybmluZ3MpPC9EaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz4NCisgICAgICA8RGVidWdJ
bmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+
DQorICAgICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4N
CisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5k
ZW5jaWVzPmQzZDkubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBl
bmRlbmNpZXM+DQorICAgICAgPE1vZHVsZURlZmluaXRpb25GaWxlPmxpYkVHTC5kZWY8L01vZHVs
ZURlZmluaXRpb25GaWxlPg0KKyAgICAgIDxEZWxheUxvYWRETExzPiUoRGVsYXlMb2FkRExMcyk8
L0RlbGF5TG9hZERMTHM+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9H
ZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJT
eXN0ZW0+DQorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5j
ZXM+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGlu
Zz4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0
aW9uUHJldmVudGlvbj4NCisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRN
YWNoaW5lPg0KKyAgICA8L0xpbms+DQorICAgIDxQb3N0QnVpbGRFdmVudD4NCisgICAgICA8Q29t
bWFuZD4lNDBlY2hvIG9uDQorbWtkaXIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1
cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIpbGliRUdMLmRsbCIgIiQoUHJvamVjdERpcikuLlwu
LlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIpbGliRUdMLmxpYiIgIiQo
UHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorJTQwZWNobyBvZmYNCis8
L0NvbW1hbmQ+DQorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+DQorICA8L0l0ZW1EZWZpbml0aW9uR3Jv
dXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkNvbmZpZy5jcHAi
IC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cQ29tbW9uXGRlYnVnLmNwcCIgLz4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEaXNwbGF5LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJsaWJFR0wuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Im1haW4uY3Bw
IiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlN1cmZhY2UuY3BwIiAvPg0KKyAgPC9JdGVt
R3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkNvbmZpZy5o
IiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkRpc3BsYXkuaCIgLz4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEVHTFxlZ2wuaCIgLz4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEVHTFxlZ2xleHQuaCIgLz4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEVHTFxlZ2xwbGF0Zm9ybS5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Im1haW4uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZXNv
dXJjZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlN1cmZhY2UuaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjb21tb25cdmVyc2lvbi5oIiAvPg0KKyAgPC9JdGVtR3Jv
dXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Tm9uZSBJbmNsdWRlPSJsaWJFR0wuZGVmIiAvPg0K
KyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8UmVzb3VyY2VDb21waWxlIElu
Y2x1ZGU9ImxpYkVHTC5yYyIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisg
ICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5cbGliR0xFU3YyXGxpYkdMRVN2Mi52Y3hw
cm9qIj4NCisgICAgICA8UHJvamVjdD57YjU4NzFhN2EtOTY4Yy00MmUzLWEzM2ItOTgxZTZmNDQ4
ZTc4fTwvUHJvamVjdD4NCisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPg0KKyAgPC9JdGVtR3JvdXA+
DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJn
ZXRzIiAvPg0KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4NCisgIDwv
SW1wb3J0R3JvdXA+DQorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGliRUdMLnZjeHByb2ouZmls
dGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xp
YkVHTC52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliRUdML2xpYkVHTC52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw2OCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4N
Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jv
c29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8
RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+
ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+
DQorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNt
O2FzbXg8L0V4dGVuc2lvbnM+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9
IkhlYWRlciBGaWxlcyI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQt
NGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgICAgPEV4dGVu
c2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPg0KKyAgICA8L0ZpbHRl
cj4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSJDb25maWcuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0K
KyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxDb21tb25cZGVi
dWcuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0Ns
Q29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEaXNwbGF5LmNwcCI+DQorICAgICAg
PEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0ibGliRUdMLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmls
ZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
bWFpbi5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwv
Q2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlN1cmZhY2UuY3BwIj4NCisgICAg
ICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgIDwv
SXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJDb25m
aWcuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbElu
Y2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRGlzcGxheS5oIj4NCisgICAgICA8Rmls
dGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEVHTFxlZ2wuaCI+DQorICAgICAgPEZpbHRlcj5I
ZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cLi5caW5jbHVkZVxFR0xcZWdsZXh0LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVh
ZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXC4uXGluY2x1ZGVcRUdMXGVnbHBsYXRmb3JtLmgiPg0KKyAgICAgIDxGaWx0ZXI+
SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Im1haW4uaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVzb3VyY2UuaCI+
DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iU3VyZmFjZS5oIj4NCisgICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxjb21tb25cdmVyc2lvbi5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
czwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1H
cm91cD4NCisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSJsaWJFR0wucmMiIC8+DQorICA8
L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxOb25lIEluY2x1ZGU9ImxpYkVHTC5k
ZWYiIC8+DQorICA8L0l0ZW1Hcm91cD4NCis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9CdWZm
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvQnVmZmVyLmNwcAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9CdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3
IEBAIEJ1ZmZlcjo6fkJ1ZmZlcigpCiB2b2lkIEJ1ZmZlcjo6YnVmZmVyRGF0YShjb25zdCB2b2lk
ICpkYXRhLCBHTHNpemVpcHRyIHNpemUsIEdMZW51bSB1c2FnZSkKIHsKICAgICBtQnVmZmVyU3Rv
cmFnZS0+Y2xlYXIoKTsKKyAgICBtSW5kZXhSYW5nZUNhY2hlLmNsZWFyKCk7CiAgICAgbUJ1ZmZl
clN0b3JhZ2UtPnNldERhdGEoZGF0YSwgc2l6ZSwgMCk7CiAKICAgICBtVXNhZ2UgPSB1c2FnZTsK
QEAgLTU2LDYgKzU3LDcgQEAgdm9pZCBCdWZmZXI6OmJ1ZmZlckRhdGEoY29uc3Qgdm9pZCAqZGF0
YQogdm9pZCBCdWZmZXI6OmJ1ZmZlclN1YkRhdGEoY29uc3Qgdm9pZCAqZGF0YSwgR0xzaXplaXB0
ciBzaXplLCBHTGludHB0ciBvZmZzZXQpCiB7CiAgICAgbUJ1ZmZlclN0b3JhZ2UtPnNldERhdGEo
ZGF0YSwgc2l6ZSwgb2Zmc2V0KTsKKyAgICBtSW5kZXhSYW5nZUNhY2hlLmludmFsaWRhdGVSYW5n
ZShvZmZzZXQsIHNpemUpOwogCiAgICAgaWYgKChtU3RhdGljVmVydGV4QnVmZmVyICYmIG1TdGF0
aWNWZXJ0ZXhCdWZmZXItPmdldEJ1ZmZlclNpemUoKSAhPSAwKSB8fCAobVN0YXRpY0luZGV4QnVm
ZmVyICYmIG1TdGF0aWNJbmRleEJ1ZmZlci0+Z2V0QnVmZmVyU2l6ZSgpICE9IDApKQogICAgIHsK
QEAgLTcwLDcgKzcyLDcgQEAgcng6OkJ1ZmZlclN0b3JhZ2UgKkJ1ZmZlcjo6Z2V0U3RvcmFnZSgp
IAogICAgIHJldHVybiBtQnVmZmVyU3RvcmFnZTsKIH0KIAotdW5zaWduZWQgaW50IEJ1ZmZlcjo6
c2l6ZSgpCit1bnNpZ25lZCBpbnQgQnVmZmVyOjpzaXplKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bUJ1ZmZlclN0b3JhZ2UtPmdldFNpemUoKTsKIH0KQEAgLTExNiw0ICsxMTgsOSBAQCB2b2lkIEJ1
ZmZlcjo6cHJvbW90ZVN0YXRpY1VzYWdlKGludCBkYXRhCiAgICAgfQogfQogCityeDo6SW5kZXhS
YW5nZUNhY2hlICpCdWZmZXI6OmdldEluZGV4UmFuZ2VDYWNoZSgpCit7CisgICAgcmV0dXJuICZt
SW5kZXhSYW5nZUNhY2hlOworfQorCiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL0J1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvQnVmZmVyLmgJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzLDYgKzEzLDcgQEAKIAogI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCiAjaW5jbHVk
ZSAiY29tbW9uL1JlZkNvdW50T2JqZWN0LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVy
L0luZGV4UmFuZ2VDYWNoZS5oIgogCiBuYW1lc3BhY2UgcngKIHsKQEAgLTM4LDEzICszOSwxNSBA
QCBjbGFzcyBCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRPYmplY3QKICAgICBHTGVudW0gdXNhZ2Uo
KSBjb25zdDsKIAogICAgIHJ4OjpCdWZmZXJTdG9yYWdlICpnZXRTdG9yYWdlKCkgY29uc3Q7Ci0g
ICAgdW5zaWduZWQgaW50IHNpemUoKTsKKyAgICB1bnNpZ25lZCBpbnQgc2l6ZSgpIGNvbnN0Owog
CiAgICAgcng6OlN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZSAqZ2V0U3RhdGljVmVydGV4QnVm
ZmVyKCk7CiAgICAgcng6OlN0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNlICpnZXRTdGF0aWNJbmRl
eEJ1ZmZlcigpOwogICAgIHZvaWQgaW52YWxpZGF0ZVN0YXRpY0RhdGEoKTsKICAgICB2b2lkIHBy
b21vdGVTdGF0aWNVc2FnZShpbnQgZGF0YVNpemUpOwogCisgICAgcng6OkluZGV4UmFuZ2VDYWNo
ZSAqZ2V0SW5kZXhSYW5nZUNhY2hlKCk7CisKICAgcHJpdmF0ZToKICAgICBESVNBTExPV19DT1BZ
X0FORF9BU1NJR04oQnVmZmVyKTsKIApAQCAtNTMsNiArNTYsOCBAQCBjbGFzcyBCdWZmZXIgOiBw
dWJsaWMgUmVmQ291bnRPYmplY3QKIAogICAgIHJ4OjpCdWZmZXJTdG9yYWdlICptQnVmZmVyU3Rv
cmFnZTsKIAorICAgIHJ4OjpJbmRleFJhbmdlQ2FjaGUgbUluZGV4UmFuZ2VDYWNoZTsKKwogICAg
IHJ4OjpTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UgKm1TdGF0aWNWZXJ0ZXhCdWZmZXI7CiAg
ICAgcng6OlN0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNlICptU3RhdGljSW5kZXhCdWZmZXI7CiAg
ICAgdW5zaWduZWQgaW50IG1Vbm1vZGlmaWVkRGF0YVVzZTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9Db250ZXh0LmNwcAkocmV2aXNpb24gMTU5
NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9Db250ZXh0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTgxMiw2ICsxODEyLDggQEAgdm9pZCBDb250ZXh0OjphcHBs
eVRleHR1cmVzKFNhbXBsZXJUeXBlIAogewogICAgIFByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5h
cnkgPSBnZXRDdXJyZW50UHJvZ3JhbUJpbmFyeSgpOwogCisgICAgRnJhbWVidWZmZXJUZXh0dXJl
U2VyaWFsU2V0IGJvdW5kRnJhbWVidWZmZXJUZXh0dXJlcyA9IGdldEJvdW5kRnJhbWVidWZmZXJU
ZXh0dXJlU2VyaWFscygpOworCiAgICAgLy8gUmFuZ2Ugb2YgRGlyZWN0M0Qgc2FtcGxlcnMgb2Yg
Z2l2ZW4gc2FtcGxlciB0eXBlCiAgICAgaW50IHNhbXBsZXJDb3VudCA9ICh0eXBlID09IFNBTVBM
RVJfUElYRUwpID8gTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMgOiBtUmVuZGVyZXItPmdldE1heFZl
cnRleFRleHR1cmVJbWFnZVVuaXRzKCk7CiAgICAgaW50IHNhbXBsZXJSYW5nZSA9IHByb2dyYW1C
aW5hcnktPmdldFVzZWRTYW1wbGVyUmFuZ2UodHlwZSk7CkBAIC0xODI1LDcgKzE4MjcsOCBAQCB2
b2lkIENvbnRleHQ6OmFwcGx5VGV4dHVyZXMoU2FtcGxlclR5cGUgCiAgICAgICAgICAgICBUZXh0
dXJlVHlwZSB0ZXh0dXJlVHlwZSA9IHByb2dyYW1CaW5hcnktPmdldFNhbXBsZXJUZXh0dXJlVHlw
ZSh0eXBlLCBzYW1wbGVySW5kZXgpOwogICAgICAgICAgICAgVGV4dHVyZSAqdGV4dHVyZSA9IGdl
dFNhbXBsZXJUZXh0dXJlKHRleHR1cmVVbml0LCB0ZXh0dXJlVHlwZSk7CiAKLSAgICAgICAgICAg
IGlmICh0ZXh0dXJlLT5pc1NhbXBsZXJDb21wbGV0ZSgpKQorICAgICAgICAgICAgaWYgKHRleHR1
cmUtPmlzU2FtcGxlckNvbXBsZXRlKCkgJiYKKyAgICAgICAgICAgICAgICBib3VuZEZyYW1lYnVm
ZmVyVGV4dHVyZXMuZmluZCh0ZXh0dXJlLT5nZXRUZXh0dXJlU2VyaWFsKCkpID09IGJvdW5kRnJh
bWVidWZmZXJUZXh0dXJlcy5lbmQoKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBT
YW1wbGVyU3RhdGUgc2FtcGxlclN0YXRlOwogICAgICAgICAgICAgICAgIHRleHR1cmUtPmdldFNh
bXBsZXJTdGF0ZSgmc2FtcGxlclN0YXRlKTsKQEAgLTI2NTUsNiArMjY1OCwyOSBAQCBjb25zdCBj
aGFyICpDb250ZXh0OjpnZXRSZW5kZXJlclN0cmluZygpCiAgICAgcmV0dXJuIG1SZW5kZXJlclN0
cmluZzsKIH0KIAorQ29udGV4dDo6RnJhbWVidWZmZXJUZXh0dXJlU2VyaWFsU2V0IENvbnRleHQ6
OmdldEJvdW5kRnJhbWVidWZmZXJUZXh0dXJlU2VyaWFscygpCit7CisgICAgRnJhbWVidWZmZXJU
ZXh0dXJlU2VyaWFsU2V0IHNldDsKKworICAgIEZyYW1lYnVmZmVyICpkcmF3RnJhbWVidWZmZXIg
PSBnZXREcmF3RnJhbWVidWZmZXIoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IElNUExFTUVOVEFUSU9OX01BWF9EUkFXX0JVRkZFUlM7IGkrKykKKyAgICB7CisgICAgICAgIFJl
bmRlcmJ1ZmZlciAqcmVuZGVyQnVmZmVyID0gZHJhd0ZyYW1lYnVmZmVyLT5nZXRDb2xvcmJ1ZmZl
cihpKTsKKyAgICAgICAgaWYgKHJlbmRlckJ1ZmZlciAmJiByZW5kZXJCdWZmZXItPmdldFRleHR1
cmVTZXJpYWwoKSAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICBzZXQuaW5zZXJ0KHJlbmRl
ckJ1ZmZlci0+Z2V0VGV4dHVyZVNlcmlhbCgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFJl
bmRlcmJ1ZmZlciAqZGVwdGhTdGVuY2lsQnVmZmVyID0gZHJhd0ZyYW1lYnVmZmVyLT5nZXREZXB0
aE9yU3RlbmNpbGJ1ZmZlcigpOworICAgIGlmIChkZXB0aFN0ZW5jaWxCdWZmZXIgJiYgZGVwdGhT
dGVuY2lsQnVmZmVyLT5nZXRUZXh0dXJlU2VyaWFsKCkgIT0gMCkKKyAgICB7CisgICAgICAgIHNl
dC5pbnNlcnQoZGVwdGhTdGVuY2lsQnVmZmVyLT5nZXRUZXh0dXJlU2VyaWFsKCkpOworICAgIH0K
KworICAgIHJldHVybiBzZXQ7Cit9CisKIHZvaWQgQ29udGV4dDo6YmxpdEZyYW1lYnVmZmVyKEdM
aW50IHNyY1gwLCBHTGludCBzcmNZMCwgR0xpbnQgc3JjWDEsIEdMaW50IHNyY1kxLCAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRzdFgwLCBHTGludCBkc3RZMCwgR0xpbnQg
ZHN0WDEsIEdMaW50IGRzdFkxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRm
aWVsZCBtYXNrKQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9D
b250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9Db250ZXh0LmgJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw2ICsxOCw3
IEBACiAKICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPHNldD4K
ICNpZmRlZiBfTVNDX1ZFUgogI2luY2x1ZGUgPGhhc2hfbWFwPgogI2Vsc2UKQEAgLTM3LDcgKzM4
LDYgQEAgY2xhc3MgUmVuZGVyZXI7CiAKIG5hbWVzcGFjZSBlZ2wKIHsKLWNsYXNzIERpc3BsYXk7
CiBjbGFzcyBTdXJmYWNlOwogfQogCkBAIC0zOTgsNiArMzk4LDggQEAgY2xhc3MgQ29udGV4dAog
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRzdFgwLCBHTGludCBkc3RZMCwgR0xpbnQg
ZHN0WDEsIEdMaW50IGRzdFkxLAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQg
bWFzayk7CiAKKyAgICByeDo6UmVuZGVyZXIgKmdldFJlbmRlcmVyKCkgeyByZXR1cm4gbVJlbmRl
cmVyOyB9CisKICAgcHJpdmF0ZToKICAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oQ29udGV4
dCk7CiAKQEAgLTQxOSw2ICs0MjEsOSBAQCBjbGFzcyBDb250ZXh0CiAgICAgdm9pZCBpbml0RXh0
ZW5zaW9uU3RyaW5nKCk7CiAgICAgdm9pZCBpbml0UmVuZGVyZXJTdHJpbmcoKTsKIAorICAgIHR5
cGVkZWYgc3RkOjpzZXQ8dW5zaWduZWQ+IEZyYW1lYnVmZmVyVGV4dHVyZVNlcmlhbFNldDsKKyAg
ICBGcmFtZWJ1ZmZlclRleHR1cmVTZXJpYWxTZXQgZ2V0Qm91bmRGcmFtZWJ1ZmZlclRleHR1cmVT
ZXJpYWxzKCk7CisKICAgICByeDo6UmVuZGVyZXIgKmNvbnN0IG1SZW5kZXJlcjsKIAogICAgIFN0
YXRlIG1TdGF0ZTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
RnJhbWVidWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL0ZyYW1lYnVmZmVyLmgJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvRnJhbWVidWZmZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMTIsNyArMTIsNyBAQAogCiAjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKICNpbmNs
dWRlICJjb21tb24vUmVmQ291bnRPYmplY3QuaCIKLSNpbmNsdWRlICJjb25zdGFudHMuaCIKKyNp
bmNsdWRlICJDb25zdGFudHMuaCIKIAogbmFtZXNwYWNlIHJ4CiB7CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUHJvZ3JhbUJpbmFyeS5j
cHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvUHJvZ3JhbUJpbmFyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDExIEBA
IHN0ZDo6c3RyaW5nIHN0cihpbnQgaSkKICAgICByZXR1cm4gYnVmZmVyOwogfQogCitzdGF0aWMg
cng6OkQzRFdvcmthcm91bmRUeXBlIERpc2NhcmRXb3JrYXJvdW5kKGJvb2wgdXNlc0Rpc2NhcmQp
Cit7CisgICAgcmV0dXJuICh1c2VzRGlzY2FyZCA/IHJ4OjpBTkdMRV9EM0RfV09SS0FST1VORF9T
TTNfT1BUSU1JWkVSIDogcng6OkFOR0xFX0QzRF9XT1JLQVJPVU5EX05PTkUpOworfQorCiBVbmlm
b3JtTG9jYXRpb246OlVuaWZvcm1Mb2NhdGlvbihjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwgdW5z
aWduZWQgaW50IGVsZW1lbnQsIHVuc2lnbmVkIGludCBpbmRleCkgCiAgICAgOiBuYW1lKG5hbWUp
LCBlbGVtZW50KGVsZW1lbnQpLCBpbmRleChpbmRleCkKIHsKQEAgLTE2NDcsNiArMTY1Miw4IEBA
IGJvb2wgUHJvZ3JhbUJpbmFyeTo6bG9hZChJbmZvTG9nICZpbmZvTG8KICAgICAgICAgc3RyZWFt
LnJlYWQoJm1TZW1hbnRpY0luZGV4W2ldKTsKICAgICB9CiAKKyAgICBpbml0QXR0cmlidXRlc0J5
TGF5b3V0KCk7CisKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IE1BWF9URVhUVVJF
X0lNQUdFX1VOSVRTOyArK2kpCiAgICAgewogICAgICAgICBzdHJlYW0ucmVhZCgmbVNhbXBsZXJz
UFNbaV0uYWN0aXZlKTsKQEAgLTE5NjAsMTMgKzE5NjcsMTMgQEAgYm9vbCBQcm9ncmFtQmluYXJ5
OjpsaW5rKEluZm9Mb2cgJmluZm9MbwogCiAgICAgaWYgKHN1Y2Nlc3MpCiAgICAgewotICAgICAg
ICBtVmVydGV4RXhlY3V0YWJsZSA9IG1SZW5kZXJlci0+Y29tcGlsZVRvRXhlY3V0YWJsZShpbmZv
TG9nLCB2ZXJ0ZXhITFNMLmNfc3RyKCksIHJ4OjpTSEFERVJfVkVSVEVYKTsKLSAgICAgICAgbVBp
eGVsRXhlY3V0YWJsZSA9IG1SZW5kZXJlci0+Y29tcGlsZVRvRXhlY3V0YWJsZShpbmZvTG9nLCBw
aXhlbEhMU0wuY19zdHIoKSwgcng6OlNIQURFUl9QSVhFTCk7CisgICAgICAgIG1WZXJ0ZXhFeGVj
dXRhYmxlID0gbVJlbmRlcmVyLT5jb21waWxlVG9FeGVjdXRhYmxlKGluZm9Mb2csIHZlcnRleEhM
U0wuY19zdHIoKSwgcng6OlNIQURFUl9WRVJURVgsIERpc2NhcmRXb3JrYXJvdW5kKHZlcnRleFNo
YWRlci0+bVVzZXNEaXNjYXJkUmV3cml0aW5nKSk7CisgICAgICAgIG1QaXhlbEV4ZWN1dGFibGUg
PSBtUmVuZGVyZXItPmNvbXBpbGVUb0V4ZWN1dGFibGUoaW5mb0xvZywgcGl4ZWxITFNMLmNfc3Ry
KCksIHJ4OjpTSEFERVJfUElYRUwsIERpc2NhcmRXb3JrYXJvdW5kKGZyYWdtZW50U2hhZGVyLT5t
VXNlc0Rpc2NhcmRSZXdyaXRpbmcpKTsKIAogICAgICAgICBpZiAodXNlc0dlb21ldHJ5U2hhZGVy
KCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGdlb21ldHJ5SExTTCA9IGdl
bmVyYXRlR2VvbWV0cnlTaGFkZXJITFNMKHJlZ2lzdGVycywgcGFja2luZywgZnJhZ21lbnRTaGFk
ZXIsIHZlcnRleFNoYWRlcik7Ci0gICAgICAgICAgICBtR2VvbWV0cnlFeGVjdXRhYmxlID0gbVJl
bmRlcmVyLT5jb21waWxlVG9FeGVjdXRhYmxlKGluZm9Mb2csIGdlb21ldHJ5SExTTC5jX3N0cigp
LCByeDo6U0hBREVSX0dFT01FVFJZKTsKKyAgICAgICAgICAgIG1HZW9tZXRyeUV4ZWN1dGFibGUg
PSBtUmVuZGVyZXItPmNvbXBpbGVUb0V4ZWN1dGFibGUoaW5mb0xvZywgZ2VvbWV0cnlITFNMLmNf
c3RyKCksIHJ4OjpTSEFERVJfR0VPTUVUUlksIHJ4OjpBTkdMRV9EM0RfV09SS0FST1VORF9OT05F
KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghbVZlcnRleEV4ZWN1dGFibGUgfHwgIW1QaXhl
bEV4ZWN1dGFibGUgfHwgKHVzZXNHZW9tZXRyeVNoYWRlcigpICYmICFtR2VvbWV0cnlFeGVjdXRh
YmxlKSkKQEAgLTIwNTMsNiArMjA2MCw4IEBAIGJvb2wgUHJvZ3JhbUJpbmFyeTo6bGlua0F0dHJp
YnV0ZXMoSW5mb0wKICAgICAgICAgfQogICAgIH0KIAorICAgIGluaXRBdHRyaWJ1dGVzQnlMYXlv
dXQoKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNTc5LDEyICsyNTg4LDYgQEAgc3Ry
dWN0IEF0dHJpYnV0ZVNvcnRlcgogICAgIEF0dHJpYnV0ZVNvcnRlcihjb25zdCBpbnQgKCZzZW1h
bnRpY0luZGljZXMpW01BWF9WRVJURVhfQVRUUklCU10pCiAgICAgICAgIDogb3JpZ2luYWxJbmRp
Y2VzKHNlbWFudGljSW5kaWNlcykKICAgICB7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
TUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGluZGljZXNb
aV0gPSBpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RkOjpzb3J0KCZpbmRpY2VzWzBdLCAmaW5k
aWNlc1tNQVhfVkVSVEVYX0FUVFJJQlNdLCAqdGhpcyk7CiAgICAgfQogCiAgICAgYm9vbCBvcGVy
YXRvcigpKGludCBhLCBpbnQgYikKQEAgLTI1OTIsMjcgKzI1OTUsMzIgQEAgc3RydWN0IEF0dHJp
YnV0ZVNvcnRlcgogICAgICAgICByZXR1cm4gb3JpZ2luYWxJbmRpY2VzW2FdID09IC0xID8gZmFs
c2UgOiBvcmlnaW5hbEluZGljZXNbYV0gPCBvcmlnaW5hbEluZGljZXNbYl07CiAgICAgfQogCi0g
ICAgaW50IGluZGljZXNbTUFYX1ZFUlRFWF9BVFRSSUJTXTsKICAgICBjb25zdCBpbnQgKCZvcmln
aW5hbEluZGljZXMpW01BWF9WRVJURVhfQVRUUklCU107CiB9OwogCi12b2lkIFByb2dyYW1CaW5h
cnk6OnNvcnRBdHRyaWJ1dGVzQnlMYXlvdXQocng6OlRyYW5zbGF0ZWRBdHRyaWJ1dGUgYXR0cmli
dXRlc1tNQVhfVkVSVEVYX0FUVFJJQlNdLCBpbnQgc29ydGVkU2VtYW50aWNJbmRpY2VzW01BWF9W
RVJURVhfQVRUUklCU10pIGNvbnN0Cit2b2lkIFByb2dyYW1CaW5hcnk6OmluaXRBdHRyaWJ1dGVz
QnlMYXlvdXQoKQogewotICAgIEF0dHJpYnV0ZVNvcnRlciBzb3J0ZXIobVNlbWFudGljSW5kZXgp
OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCisgICAg
eworICAgICAgICBtQXR0cmlidXRlc0J5TGF5b3V0W2ldID0gaTsKKyAgICB9CiAKLSAgICBpbnQg
b2xkSW5kaWNlc1tNQVhfVkVSVEVYX0FUVFJJQlNdOworICAgIHN0ZDo6c29ydCgmbUF0dHJpYnV0
ZXNCeUxheW91dFswXSwgJm1BdHRyaWJ1dGVzQnlMYXlvdXRbTUFYX1ZFUlRFWF9BVFRSSUJTXSwg
QXR0cmlidXRlU29ydGVyKG1TZW1hbnRpY0luZGV4KSk7Cit9CisKK3ZvaWQgUHJvZ3JhbUJpbmFy
eTo6c29ydEF0dHJpYnV0ZXNCeUxheW91dChyeDo6VHJhbnNsYXRlZEF0dHJpYnV0ZSBhdHRyaWJ1
dGVzW01BWF9WRVJURVhfQVRUUklCU10sIGludCBzb3J0ZWRTZW1hbnRpY0luZGljZXNbTUFYX1ZF
UlRFWF9BVFRSSUJTXSkgY29uc3QKK3sKICAgICByeDo6VHJhbnNsYXRlZEF0dHJpYnV0ZSBvbGRU
cmFuc2xhdGVkQXR0cmlidXRlc1tNQVhfVkVSVEVYX0FUVFJJQlNdOwogCiAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKICAgICB7Ci0gICAgICAgIG9sZElu
ZGljZXNbaV0gPSBtU2VtYW50aWNJbmRleFtpXTsKICAgICAgICAgb2xkVHJhbnNsYXRlZEF0dHJp
YnV0ZXNbaV0gPSBhdHRyaWJ1dGVzW2ldOwogICAgIH0KIAogICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCiAgICAgewotICAgICAgICBpbnQgb2xkSW5kZXgg
PSBzb3J0ZXIuaW5kaWNlc1tpXTsKLSAgICAgICAgc29ydGVkU2VtYW50aWNJbmRpY2VzW2ldID0g
b2xkSW5kaWNlc1tvbGRJbmRleF07CisgICAgICAgIGludCBvbGRJbmRleCA9IG1BdHRyaWJ1dGVz
QnlMYXlvdXRbaV07CisgICAgICAgIHNvcnRlZFNlbWFudGljSW5kaWNlc1tpXSA9IG1TZW1hbnRp
Y0luZGV4W29sZEluZGV4XTsKICAgICAgICAgYXR0cmlidXRlc1tpXSA9IG9sZFRyYW5zbGF0ZWRB
dHRyaWJ1dGVzW29sZEluZGV4XTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuaAkocmV2aXNpb24g
MTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9Qcm9ncmFt
QmluYXJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTExNCw2ICsxMTQsNyBAQCBjbGFzcyBQcm9ncmFt
QmluYXJ5IDogcHVibGljIFJlZkNvdW50T2JqCiAKICAgICB1bnNpZ25lZCBpbnQgZ2V0U2VyaWFs
KCkgY29uc3Q7CiAKKyAgICB2b2lkIGluaXRBdHRyaWJ1dGVzQnlMYXlvdXQoKTsKICAgICB2b2lk
IHNvcnRBdHRyaWJ1dGVzQnlMYXlvdXQocng6OlRyYW5zbGF0ZWRBdHRyaWJ1dGUgYXR0cmlidXRl
c1tnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXSwgaW50IHNvcnRlZFNlbWFudGljSW5kaWNlc1tNQVhf
VkVSVEVYX0FUVFJJQlNdKSBjb25zdDsKIAogICAgIHN0YXRpYyBzdGQ6OnN0cmluZyBkZWNvcmF0
ZUF0dHJpYnV0ZShjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSk7ICAgIC8vIFByZXBlbmQgYW4gdW5k
ZXJzY29yZQpAQCAtMTQyLDYgKzE0Myw3IEBAIGNsYXNzIFByb2dyYW1CaW5hcnkgOiBwdWJsaWMg
UmVmQ291bnRPYmoKIAogICAgIEF0dHJpYnV0ZSBtTGlua2VkQXR0cmlidXRlW01BWF9WRVJURVhf
QVRUUklCU107CiAgICAgaW50IG1TZW1hbnRpY0luZGV4W01BWF9WRVJURVhfQVRUUklCU107Cisg
ICAgaW50IG1BdHRyaWJ1dGVzQnlMYXlvdXRbTUFYX1ZFUlRFWF9BVFRSSUJTXTsKIAogICAgIHN0
cnVjdCBTYW1wbGVyCiAgICAgewpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9SZW5kZXJidWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvUmVuZGVyYnVmZmVyLmNwcAkocmV2aXNpb24gMTU5NTMyKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9SZW5kZXJidWZmZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjksNiArMTI5LDExIEBAIHVuc2lnbmVkIGludCBSZW5kZXJi
dWZmZXJUZXh0dXJlMkQ6OmdldFMKICAgICByZXR1cm4gbVRleHR1cmUyRC0+Z2V0UmVuZGVyVGFy
Z2V0U2VyaWFsKG1UYXJnZXQpOwogfQogCit1bnNpZ25lZCBpbnQgUmVuZGVyYnVmZmVyVGV4dHVy
ZTJEOjpnZXRUZXh0dXJlU2VyaWFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVRleHR1cmUyRC0+
Z2V0VGV4dHVyZVNlcmlhbCgpOworfQorCiAvLy8vLyBSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1h
cCBJbXBsZW1lbnRhdGlvbiAvLy8vLy8vLwogCiBSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcDo6
UmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXAoVGV4dHVyZUN1YmVNYXAgKnRleHR1cmUsIEdMZW51
bSB0YXJnZXQpIDogbVRhcmdldCh0YXJnZXQpCkBAIC0xOTMsNiArMTk4LDExIEBAIHVuc2lnbmVk
IGludCBSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcDoKICAgICByZXR1cm4gbVRleHR1cmVDdWJl
TWFwLT5nZXRSZW5kZXJUYXJnZXRTZXJpYWwobVRhcmdldCk7CiB9CiAKK3Vuc2lnbmVkIGludCBS
ZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcDo6Z2V0VGV4dHVyZVNlcmlhbCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1UZXh0dXJlQ3ViZU1hcC0+Z2V0VGV4dHVyZVNlcmlhbCgpOworfQorCiAvLy8v
Ly8gUmVuZGVyYnVmZmVyIEltcGxlbWVudGF0aW9uIC8vLy8vLwogCiBSZW5kZXJidWZmZXI6OlJl
bmRlcmJ1ZmZlcihyeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBHTHVpbnQgaWQsIFJlbmRlcmJ1ZmZl
ckludGVyZmFjZSAqaW5zdGFuY2UpIDogUmVmQ291bnRPYmplY3QoaWQpCkBAIC0yOTIsNiArMzAy
LDExIEBAIHVuc2lnbmVkIGludCBSZW5kZXJidWZmZXI6OmdldFNlcmlhbCgpIGMKICAgICByZXR1
cm4gbUluc3RhbmNlLT5nZXRTZXJpYWwoKTsKIH0KIAordW5zaWduZWQgaW50IFJlbmRlcmJ1ZmZl
cjo6Z2V0VGV4dHVyZVNlcmlhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1JbnN0YW5jZS0+Z2V0
VGV4dHVyZVNlcmlhbCgpOworfQorCiB2b2lkIFJlbmRlcmJ1ZmZlcjo6c2V0U3RvcmFnZShSZW5k
ZXJidWZmZXJTdG9yYWdlICpuZXdTdG9yYWdlKQogewogICAgIEFTU0VSVChuZXdTdG9yYWdlICE9
IE5VTEwpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9SZW5k
ZXJidWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL1JlbmRlcmJ1ZmZlci5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC02MCw2ICs2MCw3IEBAIGNsYXNzIFJlbmRlcmJ1ZmZlckludGVyZmFjZQogICAgIEdMdWludCBn
ZXRTdGVuY2lsU2l6ZSgpIGNvbnN0OwogCiAgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0U2Vy
aWFsKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFRleHR1cmVTZXJp
YWwoKSBjb25zdCA9IDA7CiAKICAgcHJpdmF0ZToKICAgICBESVNBTExPV19DT1BZX0FORF9BU1NJ
R04oUmVuZGVyYnVmZmVySW50ZXJmYWNlKTsKQEAgLTg1LDYgKzg2LDcgQEAgY2xhc3MgUmVuZGVy
YnVmZmVyVGV4dHVyZTJEIDogcHVibGljIFJlbgogICAgIHZpcnR1YWwgR0xzaXplaSBnZXRTYW1w
bGVzKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRTZXJpYWwoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRUZXh0dXJlU2VyaWFsKCkgY29uc3Q7CiAK
ICAgcHJpdmF0ZToKICAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oUmVuZGVyYnVmZmVyVGV4
dHVyZTJEKTsKQEAgLTExMyw2ICsxMTUsNyBAQCBjbGFzcyBSZW5kZXJidWZmZXJUZXh0dXJlQ3Vi
ZU1hcCA6IHB1YmxpCiAgICAgdmlydHVhbCBHTHNpemVpIGdldFNhbXBsZXMoKSBjb25zdDsKIAog
ICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFNlcmlhbCgpIGNvbnN0OworICAgIHZpcnR1YWwg
dW5zaWduZWQgaW50IGdldFRleHR1cmVTZXJpYWwoKSBjb25zdDsKIAogICBwcml2YXRlOgogICAg
IERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcCk7CkBA
IC0xNDEsNiArMTQ0LDcgQEAgY2xhc3MgUmVuZGVyYnVmZmVyU3RvcmFnZSA6IHB1YmxpYyBSZW5k
ZQogICAgIHZpcnR1YWwgR0xzaXplaSBnZXRTYW1wbGVzKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFs
IHVuc2lnbmVkIGludCBnZXRTZXJpYWwoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGlu
dCBnZXRUZXh0dXJlU2VyaWFsKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCiAgICAgc3RhdGljIHVu
c2lnbmVkIGludCBpc3N1ZVNlcmlhbCgpOwogICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgaXNzdWVD
dWJlU2VyaWFscygpOwpAQCAtMTkzLDYgKzE5Nyw3IEBAIGNsYXNzIFJlbmRlcmJ1ZmZlciA6IHB1
YmxpYyBSZWZDb3VudE9iamUKICAgICBHTHNpemVpIGdldFNhbXBsZXMoKSBjb25zdDsKIAogICAg
IHVuc2lnbmVkIGludCBnZXRTZXJpYWwoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBpbnQgZ2V0VGV4
dHVyZVNlcmlhbCgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRTdG9yYWdlKFJlbmRlcmJ1ZmZlclN0
b3JhZ2UgKm5ld1N0b3JhZ2UpOwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL1NoYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9TaGFkZXIuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1NoYWRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwNyw2ICszMDcsNyBAQCB2b2lkIFNoYWRlcjo6cGFyc2VWYXJ5aW5ncygpCiAgICAgICAg
IG1Vc2VzUG9pbnRDb29yZCA9IHN0cnN0cihtSGxzbCwgIkdMX1VTRVNfUE9JTlRfQ09PUkQiKSAh
PSBOVUxMOwogICAgICAgICBtVXNlc0RlcHRoUmFuZ2UgPSBzdHJzdHIobUhsc2wsICJHTF9VU0VT
X0RFUFRIX1JBTkdFIikgIT0gTlVMTDsKICAgICAgICAgbVVzZXNGcmFnRGVwdGggPSBzdHJzdHIo
bUhsc2wsICJHTF9VU0VTX0ZSQUdfREVQVEgiKSAhPSBOVUxMOworICAgICAgICBtVXNlc0Rpc2Nh
cmRSZXdyaXRpbmcgPSBzdHJzdHIobUhsc2wsICJBTkdMRV9VU0VTX0RJU0NBUkRfUkVXUklUSU5H
IikgIT0gTlVMTDsKICAgICB9CiB9CiAKQEAgLTM0MCw2ICszNDEsNyBAQCB2b2lkIFNoYWRlcjo6
dW5jb21waWxlKCkKICAgICBtVXNlc1BvaW50Q29vcmQgPSBmYWxzZTsKICAgICBtVXNlc0RlcHRo
UmFuZ2UgPSBmYWxzZTsKICAgICBtVXNlc0ZyYWdEZXB0aCA9IGZhbHNlOworICAgIG1Vc2VzRGlz
Y2FyZFJld3JpdGluZyA9IGZhbHNlOwogCiAgICAgbUFjdGl2ZVVuaWZvcm1zLmNsZWFyKCk7CiB9
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1NoYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvU2hhZGVy
LmgJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvU2hhZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw2ICsxMDcsNyBAQCBjbGFzcyBT
aGFkZXIKICAgICBib29sIG1Vc2VzUG9pbnRDb29yZDsKICAgICBib29sIG1Vc2VzRGVwdGhSYW5n
ZTsKICAgICBib29sIG1Vc2VzRnJhZ0RlcHRoOworICAgIGJvb2wgbVVzZXNEaXNjYXJkUmV3cml0
aW5nOwogCiAgICAgc3RhdGljIHZvaWQgKm1GcmFnbWVudENvbXBpbGVyOwogICAgIHN0YXRpYyB2
b2lkICptVmVydGV4Q29tcGlsZXI7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL1RleHR1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvVGV4dHVyZS5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVGV4dHVyZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzNTgsMTAgKzEzNTgsMTAgQEAgdm9pZCBUZXh0dXJlQ3ViZU1hcDo6c3RvcmFnZShH
THNpemVpIGxldgogCiAgICAgZm9yIChpbnQgbGV2ZWwgPSAwOyBsZXZlbCA8IGxldmVsczsgbGV2
ZWwrKykKICAgICB7CisgICAgICAgIEdMc2l6ZWkgbWlwU2l6ZSA9IHN0ZDo6bWF4KDEsIHNpemUg
Pj4gbGV2ZWwpOwogICAgICAgICBmb3IgKGludCBmYWNlID0gMDsgZmFjZSA8IDY7IGZhY2UrKykK
ICAgICAgICAgewotICAgICAgICAgICAgbUltYWdlQXJyYXlbZmFjZV1bbGV2ZWxdLT5yZWRlZmlu
ZShtUmVuZGVyZXIsIGludGVybmFsZm9ybWF0LCBzaXplLCBzaXplLCB0cnVlKTsKLSAgICAgICAg
ICAgIHNpemUgPSBzdGQ6Om1heCgxLCBzaXplID4+IDEpOworICAgICAgICAgICAgbUltYWdlQXJy
YXlbZmFjZV1bbGV2ZWxdLT5yZWRlZmluZShtUmVuZGVyZXIsIGludGVybmFsZm9ybWF0LCBtaXBT
aXplLCBtaXBTaXplLCB0cnVlKTsKICAgICAgICAgfQogICAgIH0KIApJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9Vbmlmb3JtLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1VuaWZvcm0uY3BwCShyZXZpc2lv
biAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1VuaWZv
cm0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQzICsxLDQzIEBACiAjaW5jbHVkZSAicHJlY29t
cGlsZWQuaCIKLS8vDQotLy8gQ29weXJpZ2h0IChjKSAyMDEwLTIwMTMgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQotLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCi0vLw0KLQ0KLSNpbmNsdWRlICJsaWJHTEVTdjIv
VW5pZm9ybS5oIg0KLQ0KLSNpbmNsdWRlICJsaWJHTEVTdjIvdXRpbGl0aWVzLmgiDQotDQotbmFt
ZXNwYWNlIGdsDQotew0KLQ0KLVVuaWZvcm06OlVuaWZvcm0oR0xlbnVtIHR5cGUsIEdMZW51bSBw
cmVjaXNpb24sIGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLCB1bnNpZ25lZCBpbnQgYXJyYXlTaXpl
KQ0KLSAgICA6IHR5cGUodHlwZSksIHByZWNpc2lvbihwcmVjaXNpb24pLCBuYW1lKG5hbWUpLCBh
cnJheVNpemUoYXJyYXlTaXplKQ0KLXsNCi0gICAgaW50IGJ5dGVzID0gZ2w6OlVuaWZvcm1JbnRl
cm5hbFNpemUodHlwZSkgKiBlbGVtZW50Q291bnQoKTsNCi0gICAgZGF0YSA9IG5ldyB1bnNpZ25l
ZCBjaGFyW2J5dGVzXTsNCi0gICAgbWVtc2V0KGRhdGEsIDAsIGJ5dGVzKTsNCi0gICAgZGlydHkg
PSB0cnVlOw0KLQ0KLSAgICBwc1JlZ2lzdGVySW5kZXggPSAtMTsNCi0gICAgdnNSZWdpc3Rlcklu
ZGV4ID0gLTE7DQotICAgIHJlZ2lzdGVyQ291bnQgPSBWYXJpYWJsZVJvd0NvdW50KHR5cGUpICog
ZWxlbWVudENvdW50KCk7DQotfQ0KLQ0KLVVuaWZvcm06On5Vbmlmb3JtKCkNCi17DQotICAgIGRl
bGV0ZVtdIGRhdGE7DQotfQ0KLQ0KLWJvb2wgVW5pZm9ybTo6aXNBcnJheSgpIGNvbnN0DQotew0K
LSAgICByZXR1cm4gYXJyYXlTaXplID4gMDsNCi19DQotDQotdW5zaWduZWQgaW50IFVuaWZvcm06
OmVsZW1lbnRDb3VudCgpIGNvbnN0DQotew0KLSAgICByZXR1cm4gYXJyYXlTaXplID4gMCA/IGFy
cmF5U2l6ZSA6IDE7DQotfQ0KLQ0KLX0NCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEwLTIwMTMg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAi
bGliR0xFU3YyL1VuaWZvcm0uaCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi91dGlsaXRpZXMuaCIK
KworbmFtZXNwYWNlIGdsCit7CisKK1VuaWZvcm06OlVuaWZvcm0oR0xlbnVtIHR5cGUsIEdMZW51
bSBwcmVjaXNpb24sIGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLCB1bnNpZ25lZCBpbnQgYXJyYXlT
aXplKQorICAgIDogdHlwZSh0eXBlKSwgcHJlY2lzaW9uKHByZWNpc2lvbiksIG5hbWUobmFtZSks
IGFycmF5U2l6ZShhcnJheVNpemUpCit7CisgICAgaW50IGJ5dGVzID0gZ2w6OlVuaWZvcm1JbnRl
cm5hbFNpemUodHlwZSkgKiBlbGVtZW50Q291bnQoKTsKKyAgICBkYXRhID0gbmV3IHVuc2lnbmVk
IGNoYXJbYnl0ZXNdOworICAgIG1lbXNldChkYXRhLCAwLCBieXRlcyk7CisgICAgZGlydHkgPSB0
cnVlOworCisgICAgcHNSZWdpc3RlckluZGV4ID0gLTE7CisgICAgdnNSZWdpc3RlckluZGV4ID0g
LTE7CisgICAgcmVnaXN0ZXJDb3VudCA9IFZhcmlhYmxlUm93Q291bnQodHlwZSkgKiBlbGVtZW50
Q291bnQoKTsKK30KKworVW5pZm9ybTo6flVuaWZvcm0oKQoreworICAgIGRlbGV0ZVtdIGRhdGE7
Cit9CisKK2Jvb2wgVW5pZm9ybTo6aXNBcnJheSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFycmF5
U2l6ZSA+IDA7Cit9CisKK3Vuc2lnbmVkIGludCBVbmlmb3JtOjplbGVtZW50Q291bnQoKSBjb25z
dAoreworICAgIHJldHVybiBhcnJheVNpemUgPiAwID8gYXJyYXlTaXplIDogMTsKK30KKworfQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9Vbmlmb3JtLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9Vbmlmb3Jt
LmgJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvVW5pZm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ4ICsxLDQ4IEBACi0vLw0KLS8v
IENvcHlyaWdodCAoYykgMjAxMC0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuDQotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KLS8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuDQotLy8NCi0NCi0jaWZuZGVmIExJQkdMRVNWMl9VTklGT1JNX0hfDQotI2RlZmlu
ZSBMSUJHTEVTVjJfVU5JRk9STV9IXw0KLQ0KLSNpbmNsdWRlIDxzdHJpbmc+DQotI2luY2x1ZGUg
PHZlY3Rvcj4NCi0NCi0jZGVmaW5lIEdMX0FQSUNBTEwNCi0jaW5jbHVkZSA8R0xFUzIvZ2wyLmg+
DQotDQotI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIg0KLQ0KLW5hbWVzcGFjZSBnbA0KLXsNCi0N
Ci0vLyBIZWxwZXIgc3RydWN0IHJlcHJlc2VudGluZyBhIHNpbmdsZSBzaGFkZXIgdW5pZm9ybQ0K
LXN0cnVjdCBVbmlmb3JtDQotew0KLSAgICBVbmlmb3JtKEdMZW51bSB0eXBlLCBHTGVudW0gcHJl
Y2lzaW9uLCBjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwgdW5zaWduZWQgaW50IGFycmF5U2l6ZSk7
DQotDQotICAgIH5Vbmlmb3JtKCk7DQotDQotICAgIGJvb2wgaXNBcnJheSgpIGNvbnN0Ow0KLSAg
ICB1bnNpZ25lZCBpbnQgZWxlbWVudENvdW50KCkgY29uc3Q7DQotDQotICAgIGNvbnN0IEdMZW51
bSB0eXBlOw0KLSAgICBjb25zdCBHTGVudW0gcHJlY2lzaW9uOw0KLSAgICBjb25zdCBzdGQ6OnN0
cmluZyBuYW1lOw0KLSAgICBjb25zdCB1bnNpZ25lZCBpbnQgYXJyYXlTaXplOw0KLQ0KLSAgICB1
bnNpZ25lZCBjaGFyICpkYXRhOw0KLSAgICBib29sIGRpcnR5Ow0KLQ0KLSAgICBpbnQgcHNSZWdp
c3RlckluZGV4Ow0KLSAgICBpbnQgdnNSZWdpc3RlckluZGV4Ow0KLSAgICB1bnNpZ25lZCBpbnQg
cmVnaXN0ZXJDb3VudDsNCi19Ow0KLQ0KLXR5cGVkZWYgc3RkOjp2ZWN0b3I8VW5pZm9ybSo+IFVu
aWZvcm1BcnJheTsNCi0NCi19DQotDQotI2VuZGlmICAgLy8gTElCR0xFU1YyX1VOSUZPUk1fSF8N
CisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEwLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisvLworCisjaWZuZGVmIExJQkdMRVNWMl9VTklGT1JNX0hfCisjZGVm
aW5lIExJQkdMRVNWMl9VTklGT1JNX0hfCisKKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8
dmVjdG9yPgorCisjZGVmaW5lIEdMX0FQSUNBTEwKKyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKwor
I2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgZ2wKK3sKKworLy8gSGVscGVy
IHN0cnVjdCByZXByZXNlbnRpbmcgYSBzaW5nbGUgc2hhZGVyIHVuaWZvcm0KK3N0cnVjdCBVbmlm
b3JtCit7CisgICAgVW5pZm9ybShHTGVudW0gdHlwZSwgR0xlbnVtIHByZWNpc2lvbiwgY29uc3Qg
c3RkOjpzdHJpbmcgJm5hbWUsIHVuc2lnbmVkIGludCBhcnJheVNpemUpOworCisgICAgflVuaWZv
cm0oKTsKKworICAgIGJvb2wgaXNBcnJheSgpIGNvbnN0OworICAgIHVuc2lnbmVkIGludCBlbGVt
ZW50Q291bnQoKSBjb25zdDsKKworICAgIGNvbnN0IEdMZW51bSB0eXBlOworICAgIGNvbnN0IEdM
ZW51bSBwcmVjaXNpb247CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgbmFtZTsKKyAgICBjb25zdCB1
bnNpZ25lZCBpbnQgYXJyYXlTaXplOworCisgICAgdW5zaWduZWQgY2hhciAqZGF0YTsKKyAgICBi
b29sIGRpcnR5OworCisgICAgaW50IHBzUmVnaXN0ZXJJbmRleDsKKyAgICBpbnQgdnNSZWdpc3Rl
ckluZGV4OworICAgIHVuc2lnbmVkIGludCByZWdpc3RlckNvdW50OworfTsKKwordHlwZWRlZiBz
dGQ6OnZlY3RvcjxVbmlmb3JtKj4gVW5pZm9ybUFycmF5OworCit9CisKKyNlbmRpZiAgIC8vIExJ
QkdMRVNWMl9VTklGT1JNX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL2NvbnN0YW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvY29uc3RhbnRzLmgJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvY29uc3RhbnRzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsMzQgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxMyBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIENvbnRhbnRzLmg6IERlZmluZXMg
c29tZSBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBhbmQgZ2wgY29uc3RhbnRzCi0KLSNpZm5kZWYg
TElCR0xFU1YyX0NPTlNUQU5UU19IXwotI2RlZmluZSBMSUJHTEVTVjJfQ09OU1RBTlRTX0hfCi0K
LW5hbWVzcGFjZSBnbAotewotCi1lbnVtCi17Ci0gICAgTUFYX1ZFUlRFWF9BVFRSSUJTID0gMTYs
Ci0gICAgTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMgPSAxNiwKLQotICAgIC8vIEltcGxlbWVudGF0
aW9uIHVwcGVyIGxpbWl0cywgcmVhbCBtYXhpbXVtcyBkZXBlbmQgb24gdGhlIGhhcmR3YXJlCi0g
ICAgSU1QTEVNRU5UQVRJT05fTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTID0gMTYsCi0g
ICAgSU1QTEVNRU5UQVRJT05fTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMgPSBNQVhf
VEVYVFVSRV9JTUFHRV9VTklUUyArIElNUExFTUVOVEFUSU9OX01BWF9WRVJURVhfVEVYVFVSRV9J
TUFHRV9VTklUUywgICAgCi0KLSAgICBJTVBMRU1FTlRBVElPTl9NQVhfVkFSWUlOR19WRUNUT1JT
ID0gMzIsCi0gICAgSU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSUyA9IDgKLX07Ci0KLWNv
bnN0IGZsb2F0IEFMSUFTRURfTElORV9XSURUSF9SQU5HRV9NSU4gPSAxLjBmOwotY29uc3QgZmxv
YXQgQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFX01BWCA9IDEuMGY7Ci1jb25zdCBmbG9hdCBBTElB
U0VEX1BPSU5UX1NJWkVfUkFOR0VfTUlOID0gMS4wZjsKLQotfQotCi0jZW5kaWYgLy8gTElCR0xF
U1YyX0NPTlNUQU5UU19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9saWJHTEVTdjIuZGVmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvbGliR0xFU3YyLmRlZgkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIuZGVmCSh3b3JraW5nIGNv
cHkpCkBAIC0xODIsNCArMTgyLDcgQEAgRVhQT1JUUwogICAgIGdsR2V0UHJvY0FkZHJlc3MgICAg
ICAgICAgICAgICAgQDE0OCBOT05BTUUKICAgICBnbEJpbmRUZXhJbWFnZSAgICAgICAgICAgICAg
ICAgIEAxNTggTk9OQU1FCiAgICAgZ2xDcmVhdGVSZW5kZXJlciAgICAgICAgICAgICAgICBAMTc3
IE5PTkFNRQotICAgIGdsRGVzdHJveVJlbmRlcmVyICAgICAgICAgICAgICAgQDE3OCBOT05BTUUK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisgICAgZ2xEZXN0cm95UmVuZGVyZXIgICAgICAg
ICAgICAgICBAMTc4IE5PTkFNRQorCisgICAgOyBTZXR0aW5nIHVwIFRSQUNFIG1hY3JvIGNhbGxi
YWNrcworICAgIFNldFRyYWNlRnVuY3Rpb25Qb2ludGVycyAgICAgICAgQDE4MApJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIucmMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIucmMJ
KHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvbGliR0xFU3YyLnJjCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwMiArMSwxMDIgQEAKLS8vIE1p
Y3Jvc29mdCBWaXN1YWwgQysrIGdlbmVyYXRlZCByZXNvdXJjZSBzY3JpcHQuCi0vLwotI2luY2x1
ZGUgInJlc291cmNlLmgiCi0KLSNkZWZpbmUgQVBTVFVESU9fUkVBRE9OTFlfU1lNQk9MUwotLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBHZW5lcmF0ZWQgZnJvbSB0aGUgVEVYVElOQ0xVREUg
MiByZXNvdXJjZS4KLS8vCi0jaW5jbHVkZSA8d2luZG93cy5oPgotI2luY2x1ZGUgIi4uL2NvbW1v
bi92ZXJzaW9uLmgiCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0jdW5kZWYgQVBTVFVESU9fUkVB
RE9OTFlfU1lNQk9MUwotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gRW5nbGlzaCAoVS5TLikg
cmVzb3VyY2VzCi0KLSNpZiAhZGVmaW5lZChBRlhfUkVTT1VSQ0VfRExMKSB8fCBkZWZpbmVkKEFG
WF9UQVJHX0VOVSkKLSNpZmRlZiBfV0lOMzIKLUxBTkdVQUdFIExBTkdfRU5HTElTSCwgU1VCTEFO
R19FTkdMSVNIX1VTCi0jcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQotI2VuZGlmIC8vX1dJTjMyCi0K
LSNpZmRlZiBBUFNUVURJT19JTlZPS0VECi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIFRF
WFRJTkNMVURFCi0vLwotCi0xIFRFWFRJTkNMVURFIAotQkVHSU4KLSAgICAicmVzb3VyY2UuaFww
IgotRU5ECi0KLTIgVEVYVElOQ0xVREUgCi1CRUdJTgotICAgICIjaW5jbHVkZSAiImFmeHJlcy5o
IiJcclxuIgotICAgICIjaW5jbHVkZSAiIi4uL2NvbW1vbi92ZXJzaW9uLmgiIlwwIgotRU5ECi0K
LTMgVEVYVElOQ0xVREUgCi1CRUdJTgotICAgICJcclxuIgotICAgICJcMCIKLUVORAotCi0jZW5k
aWYgICAgLy8gQVBTVFVESU9fSU5WT0tFRAotCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwot
Ly8gVmVyc2lvbgotLy8KLQotVlNfVkVSU0lPTl9JTkZPIFZFUlNJT05JTkZPCi0gRklMRVZFUlNJ
T04gTUFKT1JfVkVSU0lPTixNSU5PUl9WRVJTSU9OLEJVSUxEX1ZFUlNJT04sQlVJTERfUkVWSVNJ
T04KLSBQUk9EVUNUVkVSU0lPTiBNQUpPUl9WRVJTSU9OLE1JTk9SX1ZFUlNJT04sQlVJTERfVkVS
U0lPTixCVUlMRF9SRVZJU0lPTgotIEZJTEVGTEFHU01BU0sgMHgxN0wKLSNpZmRlZiBfREVCVUcK
LSBGSUxFRkxBR1MgMHgxTAotI2Vsc2UKLSBGSUxFRkxBR1MgMHgwTAotI2VuZGlmCi0gRklMRU9T
IDB4NEwKLSBGSUxFVFlQRSAweDJMCi0gRklMRVNVQlRZUEUgMHgwTAotQkVHSU4KLSAgICBCTE9D
SyAiU3RyaW5nRmlsZUluZm8iCi0gICAgQkVHSU4KLSAgICAgICAgQkxPQ0sgIjA0MDkwNGIwIgot
ICAgICAgICBCRUdJTgotICAgICAgICAgICAgVkFMVUUgIkZpbGVEZXNjcmlwdGlvbiIsICJBTkdM
RSBsaWJHTEVTdjIgRHluYW1pYyBMaW5rIExpYnJhcnkiCi0gICAgICAgICAgICBWQUxVRSAiRmls
ZVZlcnNpb24iLCBWRVJTSU9OX1NUUklORwotICAgICAgICAgICAgVkFMVUUgIkludGVybmFsTmFt
ZSIsICJsaWJHTEVTdjIiCi0gICAgICAgICAgICBWQUxVRSAiTGVnYWxDb3B5cmlnaHQiLCAiQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIgotICAgICAgICAgICAgVkFMVUUgIk9yaWdpbmFs
RmlsZW5hbWUiLCAibGliR0xFU3YyLmRsbCIKLSAgICAgICAgICAgIFZBTFVFICJQcml2YXRlQnVp
bGQiLCBWRVJTSU9OX1NUUklORwotICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3ROYW1lIiwgIkFO
R0xFIGxpYkdMRVN2MiBEeW5hbWljIExpbmsgTGlicmFyeSIKLSAgICAgICAgICAgIFZBTFVFICJQ
cm9kdWN0VmVyc2lvbiIsIFZFUlNJT05fU1RSSU5HCi0gICAgICAgIEVORAotICAgIEVORAotICAg
IEJMT0NLICJWYXJGaWxlSW5mbyIKLSAgICBCRUdJTgotICAgICAgICBWQUxVRSAiVHJhbnNsYXRp
b24iLCAweDQwOSwgMTIwMAotICAgIEVORAotRU5ECi0KLSNlbmRpZiAgICAvLyBFbmdsaXNoIChV
LlMuKSByZXNvdXJjZXMKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLQotCi0jaWZuZGVmIEFQU1RV
RElPX0lOVk9LRUQKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gR2VuZXJhdGVkIGZyb20g
dGhlIFRFWFRJTkNMVURFIDMgcmVzb3VyY2UuCi0vLwotCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ci0jZW5kaWYgICAgLy8gbm90IEFQU1RVRElPX0lOVk9LRUQKKy8vIE1pY3Jvc29mdCBWaXN1YWwg
QysrIGdlbmVyYXRlZCByZXNvdXJjZSBzY3JpcHQuDQorLy8NCisjaW5jbHVkZSAicmVzb3VyY2Uu
aCINCisNCisjZGVmaW5lIEFQU1RVRElPX1JFQURPTkxZX1NZTUJPTFMNCisvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLw0KKy8vDQorLy8gR2VuZXJhdGVkIGZyb20gdGhlIFRFWFRJTkNMVURFIDIgcmVzb3Vy
Y2UuDQorLy8NCisjaW5jbHVkZSA8d2luZG93cy5oPg0KKyNpbmNsdWRlICIuLi9jb21tb24vdmVy
c2lvbi5oIg0KKw0KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQorI3VuZGVmIEFQU1RVRElPX1JFQURP
TkxZX1NZTUJPTFMNCisNCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KKy8vIEVuZ2xpc2ggKFUuUy4p
IHJlc291cmNlcw0KKw0KKyNpZiAhZGVmaW5lZChBRlhfUkVTT1VSQ0VfRExMKSB8fCBkZWZpbmVk
KEFGWF9UQVJHX0VOVSkNCisjaWZkZWYgX1dJTjMyDQorTEFOR1VBR0UgTEFOR19FTkdMSVNILCBT
VUJMQU5HX0VOR0xJU0hfVVMNCisjcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQ0KKyNlbmRpZiAvL19X
SU4zMg0KKw0KKyNpZmRlZiBBUFNUVURJT19JTlZPS0VEDQorLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8N
CisvLw0KKy8vIFRFWFRJTkNMVURFDQorLy8NCisNCisxIFRFWFRJTkNMVURFIA0KK0JFR0lODQor
ICAgICJyZXNvdXJjZS5oXDAiDQorRU5EDQorDQorMiBURVhUSU5DTFVERSANCitCRUdJTg0KKyAg
ICAiI2luY2x1ZGUgIiJhZnhyZXMuaCIiXHJcbiINCisgICAgIiNpbmNsdWRlICIiLi4vY29tbW9u
L3ZlcnNpb24uaCIiXDAiDQorRU5EDQorDQorMyBURVhUSU5DTFVERSANCitCRUdJTg0KKyAgICAi
XHJcbiINCisgICAgIlwwIg0KK0VORA0KKw0KKyNlbmRpZiAgICAvLyBBUFNUVURJT19JTlZPS0VE
DQorDQorDQorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCisvLw0KKy8vIFZlcnNpb24NCisvLw0KKw0K
K1ZTX1ZFUlNJT05fSU5GTyBWRVJTSU9OSU5GTw0KKyBGSUxFVkVSU0lPTiBNQUpPUl9WRVJTSU9O
LE1JTk9SX1ZFUlNJT04sQlVJTERfVkVSU0lPTixCVUlMRF9SRVZJU0lPTg0KKyBQUk9EVUNUVkVS
U0lPTiBNQUpPUl9WRVJTSU9OLE1JTk9SX1ZFUlNJT04sQlVJTERfVkVSU0lPTixCVUlMRF9SRVZJ
U0lPTg0KKyBGSUxFRkxBR1NNQVNLIDB4MTdMDQorI2lmZGVmIF9ERUJVRw0KKyBGSUxFRkxBR1Mg
MHgxTA0KKyNlbHNlDQorIEZJTEVGTEFHUyAweDBMDQorI2VuZGlmDQorIEZJTEVPUyAweDRMDQor
IEZJTEVUWVBFIDB4MkwNCisgRklMRVNVQlRZUEUgMHgwTA0KK0JFR0lODQorICAgIEJMT0NLICJT
dHJpbmdGaWxlSW5mbyINCisgICAgQkVHSU4NCisgICAgICAgIEJMT0NLICIwNDA5MDRiMCINCisg
ICAgICAgIEJFR0lODQorICAgICAgICAgICAgVkFMVUUgIkZpbGVEZXNjcmlwdGlvbiIsICJBTkdM
RSBsaWJHTEVTdjIgRHluYW1pYyBMaW5rIExpYnJhcnkiDQorICAgICAgICAgICAgVkFMVUUgIkZp
bGVWZXJzaW9uIiwgVkVSU0lPTl9TVFJJTkcNCisgICAgICAgICAgICBWQUxVRSAiSW50ZXJuYWxO
YW1lIiwgImxpYkdMRVN2MiINCisgICAgICAgICAgICBWQUxVRSAiTGVnYWxDb3B5cmlnaHQiLCAi
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIg0KKyAgICAgICAgICAgIFZBTFVFICJPcmln
aW5hbEZpbGVuYW1lIiwgImxpYkdMRVN2Mi5kbGwiDQorICAgICAgICAgICAgVkFMVUUgIlByaXZh
dGVCdWlsZCIsIFZFUlNJT05fU1RSSU5HDQorICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3ROYW1l
IiwgIkFOR0xFIGxpYkdMRVN2MiBEeW5hbWljIExpbmsgTGlicmFyeSINCisgICAgICAgICAgICBW
QUxVRSAiUHJvZHVjdFZlcnNpb24iLCBWRVJTSU9OX1NUUklORw0KKyAgICAgICAgRU5EDQorICAg
IEVORA0KKyAgICBCTE9DSyAiVmFyRmlsZUluZm8iDQorICAgIEJFR0lODQorICAgICAgICBWQUxV
RSAiVHJhbnNsYXRpb24iLCAweDQwOSwgMTIwMA0KKyAgICBFTkQNCitFTkQNCisNCisjZW5kaWYg
ICAgLy8gRW5nbGlzaCAoVS5TLikgcmVzb3VyY2VzDQorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCisN
CisNCisNCisjaWZuZGVmIEFQU1RVRElPX0lOVk9LRUQNCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0K
Ky8vDQorLy8gR2VuZXJhdGVkIGZyb20gdGhlIFRFWFRJTkNMVURFIDMgcmVzb3VyY2UuDQorLy8N
CisNCisNCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KKyNlbmRpZiAgICAvLyBub3QgQVBTVFVESU9f
SU5WT0tFRA0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGli
R0xFU3YyLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9saWJHTEVTdjIudmN4cHJvagkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyLnZjeHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0MjUgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0
Zi04Ij8+DQorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQu
MCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQv
MjAwMyI+DQorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPg0KKyAg
ICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPg0KKyAgICAgIDxD
b25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4z
MjwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0
Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9u
PkRlYnVnPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0K
KyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24g
SW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwv
Q29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8
L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVk
ZT0iUmVsZWFzZXx4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3Vy
YXRpb24+DQorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENv
bmZpZ3VyYXRpb24+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJH
bG9iYWxzIj4NCisgICAgPFByb2plY3RHdWlkPntCNTg3MUE3QS05NjhDLTQyRTMtQTMzQi05ODFF
NkY0NDhFNzh9PC9Qcm9qZWN0R3VpZD4NCisgICAgPFJvb3ROYW1lc3BhY2U+bGliR0xFU3YyPC9S
b290TmFtZXNwYWNlPg0KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+DQorICA8L1By
b3BlcnR5R3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9z
b2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNv
bmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0Nv
bmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNl
dD4NCisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRp
bWl6YXRpb24+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9
IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8
L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3Rl
clNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29u
ZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29u
ZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0
Pg0KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGlt
aXphdGlvbj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNv
bmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0Nv
bmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNl
dD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQ
YXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPg0KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRl
bnNpb25TZXR0aW5ncyI+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExh
YmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERp
cilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0
cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJyki
IExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8
SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVj
dD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBD
b25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3Jt
KS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1w
b3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAg
IDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3Jt
KS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0
LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9y
bSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlT
aGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5D
cHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3RE
aXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxB
cHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAg
TGFiZWw9IlVzZXJNYWNyb3MiIC8+DQorICA8UHJvcGVydHlHcm91cD4NCisgICAgPF9Qcm9qZWN0
RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPg0KKyAgICA8T3V0
RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2lu
MzInIj4kKFNvbHV0aW9uRGlyKSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxJbnRE
aXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4z
MiciPiQoQ29uZmlndXJhdGlvbilcPC9JbnREaXI+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRy
dWU8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoQ29u
ZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChDb25maWd1cmF0aW9uKVw8
L0ludERpcj4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFs
Pg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8eDY0JyI+JChTb2x1dGlvbkRpcikkKFBsYXRmb3JtKVwkKENvbmZpZ3VyYXRpb24p
XDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8L0lu
dERpcj4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAg
PE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8eDY0JyI+JChTb2x1dGlvbkRpcikkKFBsYXRmb3JtKVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0
RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXx4NjQnIj4kKFBsYXRmb3JtKVwkKENvbmZpZ3VyYXRpb24pXDwvSW50RGly
Pg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8
SW5jbHVkZVBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciPiQoSW5jbHVkZVBhdGgpPC9JbmNsdWRlUGF0aD4NCisgICAgPExpYnJhcnlQ
YXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4
NjQnIj4kKExpYnJhcnlQYXRoKTwvTGlicmFyeVBhdGg+DQorICAgIDxJbmNsdWRlUGF0aCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoSW5j
bHVkZVBhdGgpPC9JbmNsdWRlUGF0aD4NCisgICAgPExpYnJhcnlQYXRoIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChMaWJyYXJ5UGF0aCk8
L0xpYnJhcnlQYXRoPg0KKyAgICA8SW5jbHVkZVBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoSW5jbHVkZVBhdGgpPC9JbmNsdWRl
UGF0aD4NCisgICAgPEluY2x1ZGVQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoSW5jbHVkZVBhdGgpPC9JbmNsdWRlUGF0aD4N
CisgICAgPExpYnJhcnlQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8V2luMzInIj4kKExpYnJhcnlQYXRoKTwvTGlicmFyeVBhdGg+DQorICAgIDxM
aWJyYXJ5UGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIj4kKExpYnJhcnlQYXRoKTwvTGlicmFyeVBhdGg+DQorICA8L1Byb3BlcnR5
R3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAg
ICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcik7JChQcm9qZWN0RGlyKS8uLjsgJChQ
cm9qZWN0RGlyKS8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmlu
aXRpb25zPldJTjMyO19ERUJVRztfV0lORE9XUztfVVNSRExMO0xJQkdMRVNWMl9FWFBPUlRTO19D
UlRfU0VDVVJFX05PX0RFUFJFQ0FURTtOT01JTk1BWDslKFByZXByb2Nlc3NvckRlZmluaXRpb25z
KTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8
L01pbmltYWxSZWJ1aWxkPg0KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENo
ZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRo
cmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5V
c2U8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJu
aW5nTGV2ZWw+DQorICAgICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5n
QXNFcnJvcj4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5FZGl0QW5kQ29udGludWU8
L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdz
PjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0NDs0MjQ1OzQ1MTI7NDcwMjs0OTk2OyUoRGlzYWJsZVNw
ZWNpZmljV2FybmluZ3MpPC9EaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz4NCisgICAgICA8UHJlY29t
cGlsZWRIZWFkZXJGaWxlPnByZWNvbXBpbGVkLmg8L1ByZWNvbXBpbGVkSGVhZGVyRmlsZT4NCisg
ICAgICA8QWRkaXRpb25hbE9wdGlvbnM+JChFeHRlcm5hbENvbXBpbGVyT3B0aW9ucykgJShBZGRp
dGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPg0KKyAgICA8L0NsQ29tcGlsZT4NCisg
ICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZDNkOS5saWI7ZHhndWlk
LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0K
KyAgICAgIDxNb2R1bGVEZWZpbml0aW9uRmlsZT5saWJHTEVTdjIuZGVmPC9Nb2R1bGVEZWZpbml0
aW9uRmlsZT4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRl
RGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4N
CisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9u
UHJldmVudGlvbj4NCisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNo
aW5lPg0KKyAgICA8L0xpbms+DQorICAgIDxQb3N0QnVpbGRFdmVudD4NCisgICAgICA8Q29tbWFu
ZD4lNDBlY2hvIG9uDQorbWtkaXIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0
aW9uKVwiDQorY29weSAiJChPdXREaXIpbGliR0xFU3YyLmRsbCIgIiQoUHJvamVjdERpcikuLlwu
LlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIpbGliR0xFU3YyLmxpYiIg
IiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorJTQwZWNobyBvZmYN
Cis8L0NvbW1hbmQ+DQorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+DQorICA8L0l0ZW1EZWZpbml0aW9u
R3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4NCisgICAgPENsQ29tcGlsZT4NCisg
ICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPElubGlu
ZUZ1bmN0aW9uRXhwYW5zaW9uPkFueVN1aXRhYmxlPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4N
CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpOyQoUHJv
amVjdERpcikvLi47ICQoUHJvamVjdERpcikvLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz5BTkdMRV9ESVNBQkxFX1RSQUNFO1dJTjMyO05ERUJVRztf
V0lORE9XUztfVVNSRExMO0xJQkdMRVNWMl9FWFBPUlRTO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FU
RTtOT01JTk1BWDtfU0VDVVJFX1NDTD0wOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVw
cm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRl
ZDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29t
cGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4N
CisgICAgICA8VHJlYXRXYXJuaW5nQXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0K
KyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZv
cm1hdGlvbkZvcm1hdD4NCisgICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3
OzQxODk7NDIzOTs0MjQ0OzQyNDU7NDUxMjs0NzAyOzQ3MTg7NDk5NjslKERpc2FibGVTcGVjaWZp
Y1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+DQorICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyRmlsZT5wcmVjb21waWxlZC5oPC9QcmVjb21waWxlZEhlYWRlckZpbGU+DQorICAgICAg
PEFkZGl0aW9uYWxPcHRpb25zPiQoRXh0ZXJuYWxDb21waWxlck9wdGlvbnMpICUoQWRkaXRpb25h
bE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxM
aW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmQzZDkubGliO2R4Z3VpZC5saWI7
JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAg
ICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJh
cmllcz4NCisgICAgICA8TW9kdWxlRGVmaW5pdGlvbkZpbGU+bGliR0xFU3YyLmRlZjwvTW9kdWxl
RGVmaW5pdGlvbkZpbGU+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9H
ZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJT
eXN0ZW0+DQorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5j
ZXM+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGlu
Zz4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0
aW9uUHJldmVudGlvbj4NCisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRN
YWNoaW5lPg0KKyAgICA8L0xpbms+DQorICAgIDxQb3N0QnVpbGRFdmVudD4NCisgICAgICA8Q29t
bWFuZD4lNDBlY2hvIG9uDQorbWtkaXIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1
cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIpbGliR0xFU3YyLmRsbCIgIiQoUHJvamVjdERpciku
LlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIpbGliR0xFU3YyLmxp
YiIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorJTQwZWNobyBv
ZmYNCis8L0NvbW1hbmQ+DQorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+DQorICA8L0l0ZW1EZWZpbml0
aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPg0KKyAgICA8TWlkbD4NCisgICAgICA8
VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4NCisgICAgPC9NaWRsPg0K
KyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXph
dGlvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIp
Ly4uOyAkKFByb2plY3REaXIpLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19XSU5ET1dTO19VU1JETEw7TElCR0xFU1YyX0VY
UE9SVFM7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05PTUlOTUFYOyUoUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8TWluaW1hbFJlYnVp
bGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+DQorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFi
bGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5
Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZl
bDQ8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0
MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7NDUxMjs0NzAyOzQ3MTg7NDk5NjslKERpc2FibGVTcGVj
aWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+DQorICAgICAgPERlYnVnSW5m
b3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0K
KyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+DQor
ICAgICAgPFByZWNvbXBpbGVkSGVhZGVyRmlsZT5wcmVjb21waWxlZC5oPC9QcmVjb21waWxlZEhl
YWRlckZpbGU+DQorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPiQoRXh0ZXJuYWxDb21waWxlck9w
dGlvbnMpICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4NCisgICAgPC9D
bENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmQz
ZDkubGliO2R4Z3VpZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERl
cGVuZGVuY2llcz4NCisgICAgICA8TW9kdWxlRGVmaW5pdGlvbkZpbGU+bGliR0xFU3YyLmRlZjwv
TW9kdWxlRGVmaW5pdGlvbkZpbGU+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50
cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPFN1YlN5c3RlbT5XaW5kb3dz
PC9TdWJTeXN0ZW0+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwv
RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2
NDwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+DQor
ICAgICAgPENvbW1hbmQ+JTQwZWNobyBvbg0KK21rZGlyICIkKFByb2plY3REaXIpLi5cLi5cbGli
XCQoQ29uZmlndXJhdGlvbilcIg0KK2NvcHkgIiQoT3V0RGlyKWxpYkdMRVN2Mi5kbGwiICIkKFBy
b2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0KK2NvcHkgIiQoT3V0RGlyKWxp
YkdMRVN2Mi5saWIiICIkKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0K
KyU0MGVjaG8gb2ZmDQorPC9Db21tYW5kPg0KKyAgICA8L1Bvc3RCdWlsZEV2ZW50Pg0KKyAgPC9J
dGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPg0KKyAgICA8TWlk
bD4NCisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4NCisg
ICAgPC9NaWRsPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3Bl
ZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+QW55U3Vp
dGFibGU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikvLi47ICQoUHJvamVjdERpcikvLi4vLi4vaW5jbHVk
ZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X1dJ
TkRPV1M7X1VTUkRMTDtMSUJHTEVTVjJfRVhQT1JUUztfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7
Tk9NSU5NQVg7X1NFQ1VSRV9TQ0w9MDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8
L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1ByZWNvbXBp
bGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQor
ICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0NDs0
MjQ1OzQ1MTI7NDcwMjs0NzE4OzQ5OTY7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rpc2Fi
bGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dy
YW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8VHJlYXRXYXJuaW5n
QXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICAgIDxQcmVjb21waWxlZEhl
YWRlckZpbGU+cHJlY29tcGlsZWQuaDwvUHJlY29tcGlsZWRIZWFkZXJGaWxlPg0KKyAgICAgIDxB
ZGRpdGlvbmFsT3B0aW9ucz4kKEV4dGVybmFsQ29tcGlsZXJPcHRpb25zKSAlKEFkZGl0aW9uYWxP
cHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGlu
az4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5kM2Q5LmxpYjtkeGd1aWQubGliOyUo
QWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAg
PElnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+ZmFsc2U8L0lnbm9yZUFsbERlZmF1bHRMaWJyYXJp
ZXM+DQorICAgICAgPE1vZHVsZURlZmluaXRpb25GaWxlPmxpYkdMRVN2Mi5kZWY8L01vZHVsZURl
ZmluaXRpb25GaWxlPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2Vu
ZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lz
dGVtPg0KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2Vz
Pg0KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+
DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlv
blByZXZlbnRpb24+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFj
aGluZT4NCisgICAgPC9MaW5rPg0KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+DQorICAgICAgPENvbW1h
bmQ+JTQwZWNobyBvbg0KK21rZGlyICIkKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJh
dGlvbilcIg0KK2NvcHkgIiQoT3V0RGlyKWxpYkdMRVN2Mi5kbGwiICIkKFByb2plY3REaXIpLi5c
Li5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0KK2NvcHkgIiQoT3V0RGlyKWxpYkdMRVN2Mi5saWIi
ICIkKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0KKyU0MGVjaG8gb2Zm
DQorPC9Db21tYW5kPg0KKyAgICA8L1Bvc3RCdWlsZEV2ZW50Pg0KKyAgPC9JdGVtRGVmaW5pdGlv
bkdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx0aGly
ZF9wYXJ0eVxtdXJtdXJoYXNoXE11cm11ckhhc2gzLmNwcCI+DQorICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIj5Ob3RVc2luZzwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXxXaW4zMiciPk5vdFVzaW5nPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8UHJlY29tcGls
ZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3x4NjQnIj5Ob3RVc2luZzwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXx4NjQnIj5Ob3RVc2luZzwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgIDwvQ2xDb21waWxlPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkJ1ZmZlci5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iQ29udGV4dC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cY29t
bW9uXGRlYnVnLmNwcCI+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5Ob3RVc2luZzwvUHJl
Y29tcGlsZWRIZWFkZXI+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPk5vdFVzaW5nPC9Q
cmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5Ob3RVc2luZzwvUHJl
Y29tcGlsZWRIZWFkZXI+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5Ob3RVc2luZzwvUHJl
Y29tcGlsZWRIZWFkZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGNvbW1vblxldmVudF90cmFjZXIuY3BwIj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFk
ZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4z
MiciPk5vdFVzaW5nPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFk
ZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyI+Tm90VXNpbmc8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxQcmVjb21waWxlZEhl
YWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2
NCciPk5vdFVzaW5nPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFk
ZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2
NCciPk5vdFVzaW5nPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iRmVuY2UuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9IkZsb2F0MTZUb0Zsb2F0MzIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkZy
YW1lYnVmZmVyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJIYW5kbGVBbGxvY2F0
b3IuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImxpYkdMRVN2Mi5jcHAiIC8+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ibWFpbi5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0icHJlY29tcGlsZWQuY3BwIj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkNyZWF0
ZTwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkNyZWF0
ZTwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Q3JlYXRlPC9Q
cmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkNyZWF0ZTwvUHJl
Y29tcGlsZWRIZWFkZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9IlByb2dyYW0uY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlByb2dyYW1CaW5h
cnkuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlF1ZXJ5LmNwcCIgLz4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjb21tb25cUmVmQ291bnRPYmplY3QuY3BwIiAvPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9IlJlbmRlcmJ1ZmZlci5jcHAiIC8+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0icmVuZGVyZXJcQmxpdC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0icmVuZGVyZXJcRmVuY2UxMS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVu
ZGVyZXJcRmVuY2U5LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxC
dWZmZXJTdG9yYWdlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxC
dWZmZXJTdG9yYWdlMTEuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVy
XEJ1ZmZlclN0b3JhZ2U5LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJl
clxJbWFnZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW1hZ2U5
LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJbmRleEJ1ZmZlci5j
cHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW5kZXhCdWZmZXIxMS5j
cHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW5kZXhCdWZmZXI5LmNw
cCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJbmRleERhdGFNYW5hZ2Vy
LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJbWFnZVNTRTIuY3Bw
IiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEltYWdlMTEuY3BwIiAvPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEluZGV4UmFuZ2VDYWNoZS5jcHAiIC8+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW5wdXRMYXlvdXRDYWNoZS5jcHAi
IC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcUXVlcnkxMS5jcHAiIC8+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcUXVlcnk5LmNwcCIgLz4NCisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJlci5jcHAiIC8+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyZXIxMS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0icmVuZGVyZXJccmVuZGVyZXIxMV91dGlscy5jcHAiIC8+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyZXI5LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJyZW5kZXJlclxyZW5kZXJlcjlfdXRpbHMuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlclRhcmdldDExLmNwcCIgLz4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJUYXJnZXQ5LmNwcCIgLz4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJTdGF0ZUNhY2hlLmNwcCIgLz4NCisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSJyZW5kZXJlclxTaGFkZXJFeGVjdXRhYmxlMTEuY3BwIiAvPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFNoYWRlckV4ZWN1dGFibGU5LmNwcCIgLz4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxTd2FwQ2hhaW4xMS5jcHAiIC8+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcU3dhcENoYWluOS5jcHAiIC8+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcVGV4dHVyZVN0b3JhZ2UuY3BwIiAvPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFRleHR1cmVTdG9yYWdlMTEuY3BwIiAvPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFRleHR1cmVTdG9yYWdlOS5jcHAiIC8+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4QnVmZmVyLmNwcCIgLz4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxWZXJ0ZXhCdWZmZXIxMS5jcHAiIC8+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4QnVmZmVyOS5jcHAiIC8+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4RGF0YU1hbmFnZXIuY3BwIiAv
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleERlY2xhcmF0aW9uQ2Fj
aGUuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlJlc291cmNlTWFuYWdlci5jcHAi
IC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iU2hhZGVyLmNwcCIgLz4NCisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSJUZXh0dXJlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJV
bmlmb3JtLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJ1dGlsaXRpZXMuY3BwIiAv
Pg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGNvbW1vblxkZWJ1Zy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNv
bW1vblxldmVudF90cmFjZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjb21t
b25cc3lzdGVtLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cdGhpcmRfcGFydHlc
bXVybXVyaGFzaFxNdXJtdXJIYXNoMy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHRoaXJkX3BhcnR5XHRyYWNlX2V2ZW50XHRyYWNlX2V2ZW50LmgiIC8+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iYW5nbGV0eXBlcy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkJp
bmFyeVN0cmVhbS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkJ1ZmZlci5oIiAvPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9ImNvbnN0YW50cy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9IkNvbnRleHQuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJGZW5jZS5o
IiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkZyYW1lYnVmZmVyLmgiIC8+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5caW5jbHVkZVxHTEVTMlxnbDIuaCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEdMRVMyXGdsMmV4dC5oIiAvPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXGluY2x1ZGVcR0xFUzJcZ2wycGxhdGZvcm0uaCIgLz4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJIYW5kbGVBbGxvY2F0b3IuaCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJtYWluLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0ibWF0
aHV0aWwuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJwcmVjb21waWxlZC5oIiAvPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlByb2dyYW0uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJQcm9ncmFtQmluYXJ5LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUXVl
cnkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjb21tb25cUmVmQ291bnRPYmpl
Y3QuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJSZW5kZXJidWZmZXIuaCIgLz4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxCbGl0LmgiIC8+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0icmVuZGVyZXJcRmVuY2UxMS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9InJlbmRlcmVyXEZlbmNlOS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRl
cmVyXEZlbmNlSW1wbC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEJ1
ZmZlclN0b3JhZ2UuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxCdWZm
ZXJTdG9yYWdlMTEuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxCdWZm
ZXJTdG9yYWdlOS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXGdlbmVy
YXRlbWlwLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcSW1hZ2UuaCIg
Lz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxJbWFnZTExLmgiIC8+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcSW1hZ2U5LmgiIC8+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0icmVuZGVyZXJcSW5kZXhCdWZmZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJyZW5kZXJlclxJbmRleEJ1ZmZlcjExLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0icmVuZGVyZXJcSW5kZXhCdWZmZXI5LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0icmVuZGVyZXJcSW5kZXhEYXRhTWFuYWdlci5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9InJlbmRlcmVyXEluZGV4UmFuZ2VDYWNoZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9InJlbmRlcmVyXElucHV0TGF5b3V0Q2FjaGUuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJyZW5kZXJlclxRdWVyeTExLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVu
ZGVyZXJcUXVlcnlJbXBsLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJc
UXVlcnk5LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyZXIu
aCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJlcjExLmgiIC8+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJccmVuZGVyZXIxMV91dGlscy5oIiAv
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlcmVyOS5oIiAvPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHJlbmRlcmVyOV91dGlscy5oIiAvPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlclRhcmdldC5oIiAvPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlclRhcmdldDExLmgiIC8+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyVGFyZ2V0OS5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlclN0YXRlQ2FjaGUuaCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxTaGFkZXJDYWNoZS5oIiAvPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9InJlbmRlcmVyXFNoYWRlckV4ZWN1dGFibGUuaCIgLz4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJyZW5kZXJlclxTaGFkZXJFeGVjdXRhYmxlMTEuaCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxTaGFkZXJFeGVjdXRhYmxlOS5oIiAvPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRcY2xlYXIxMXZzLmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxj
bGVhcm11bHRpcGxlMTFwcy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVy
XHNoYWRlcnNcY29tcGlsZWRcY2xlYXJzaW5nbGUxMXBzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxjb21wb25lbnRtYXNrcHMuaCIgLz4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVkXGZsaXB5
dnMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBp
bGVkXGx1bWluYW5jZXBzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJc
c2hhZGVyc1xjb21waWxlZFxwYXNzdGhyb3VnaDExdnMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVkXHBhc3N0aHJvdWdobHVtMTFwcy5oIiAv
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRccGFz
c3Rocm91Z2hsdW1hbHBoYTExcHMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5k
ZXJlclxzaGFkZXJzXGNvbXBpbGVkXHBhc3N0aHJvdWdocHMuaCIgLz4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVkXHBhc3N0aHJvdWdocmdiMTFwcy5o
IiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRc
cGFzc3Rocm91Z2hyZ2JhMTFwcy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRl
cmVyXHNoYWRlcnNcY29tcGlsZWRcc3RhbmRhcmR2cy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9InJlbmRlcmVyXFN3YXBDaGFpbi5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
InJlbmRlcmVyXFN3YXBDaGFpbjExLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVu
ZGVyZXJcU3dhcENoYWluOS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVy
XFRleHR1cmVTdG9yYWdlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJc
VGV4dHVyZVN0b3JhZ2UxMS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVy
XFRleHR1cmVTdG9yYWdlOS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVy
XFZlcnRleEJ1ZmZlci5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFZl
cnRleEJ1ZmZlcjExLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcVmVy
dGV4QnVmZmVyOS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHZlcnRl
eGNvbnZlcnNpb24uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxWZXJ0
ZXhEYXRhTWFuYWdlci5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFZl
cnRleERlY2xhcmF0aW9uQ2FjaGUuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZXNv
dXJjZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlJlc291cmNlTWFuYWdlci5oIiAv
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlNoYWRlci5oIiAvPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9IlRleHR1cmUuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJVbmlmb3Jt
LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0idXRpbGl0aWVzLmgiIC8+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cY29tbW9uXHZlcnNpb24uaCIgLz4NCisgIDwvSXRlbUdyb3Vw
Pg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPE5vbmUgSW5jbHVkZT0ibGliR0xFU3YyLmRlZiIgLz4N
CisgICAgPE5vbmUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xCbGl0LnBzIiAvPg0KKyAgICA8
Tm9uZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXEJsaXQudnMiIC8+DQorICAgIDxOb25lIElu
Y2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcQ2xlYXIxMS5obHNsIiAvPg0KKyAgICA8Tm9uZSBJbmNs
dWRlPSJyZW5kZXJlclxzaGFkZXJzXGdlbmVyYXRlX3NoYWRlcnMuYmF0IiAvPg0KKyAgICA8Tm9u
ZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXFBhc3N0aHJvdWdoMTEuaGxzbCIgLz4NCisgIDwv
SXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRl
PSJsaWJHTEVTdjIucmMiIC8+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAg
IDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Ii4uXGNvbXBpbGVyXHByZXByb2Nlc3NvclxwcmVw
cm9jZXNzb3IudmN4cHJvaiI+DQorICAgICAgPFByb2plY3Q+e2ZiZTMyZGYzLTBmYjAtNGYyZi1h
NDI0LTJjMjFiZDdiYzMyNX08L1Byb2plY3Q+DQorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4NCisg
ICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5cY29tcGlsZXJcdHJhbnNsYXRvci52Y3hw
cm9qIj4NCisgICAgICA8UHJvamVjdD57NWIzYTZkYjgtMWU3ZS00MGQ3LTkyYjktZGE4YWFlNjE5
ZmFkfTwvUHJvamVjdD4NCisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPg0KKyAgPC9JdGVtR3JvdXA+
DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJn
ZXRzIiAvPg0KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4NCisgIDwv
SW1wb3J0R3JvdXA+DQorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyLnZjeHBy
b2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL2xpYkdMRVN2Mi52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi52Y3hwcm9qLmZpbHRlcnMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MjcgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9InV0Zi04Ij8+DQorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJo
dHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0KKyAg
PEl0ZW1Hcm91cD4NCisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPg0KKyAgICAg
IDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9
PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2NjO2N4eDtkZWY7
b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPg0KKyAgICA8L0ZpbHRlcj4NCisg
ICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPg0KKyAgICAgIDxVbmlxdWVJZGVudGlm
aWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlm
aWVyPg0KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5z
aW9ucz4NCisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iVGhpcmQgUGFydHki
Pg0KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntkYzFkYWM0MC0zNTYzLTQxYmUtOWUyZC1jMjU4
OGQ4NjcwZmJ9PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICA8L0ZpbHRlcj4NCisgICAgPEZpbHRl
ciBJbmNsdWRlPSJUaGlyZCBQYXJ0eVxNdXJtdXJIYXNoIj4NCisgICAgICA8VW5pcXVlSWRlbnRp
Zmllcj57YjAwMDVkMmYtOWI0YS00NjU5LWEyNzAtMTM4ODExMTc0ZjczfTwvVW5pcXVlSWRlbnRp
Zmllcj4NCisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVz
XFJlbmRlcmVyIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NTYyZTQ2OWQtMWFiYi00NGJj
LWI3ZmEtNTVlZWZiZjc1YWNjfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgPC9GaWx0ZXI+DQor
ICAgIDxGaWx0ZXIgSW5jbHVkZT0iU2hhZGVycyI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+
ezZkYzAzMDZmLTYzOTYtNGU4MC05ZWY5LTA5YjU4YWE1M2M0ZH08L1VuaXF1ZUlkZW50aWZpZXI+
DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNoYWRlcnNcQ29tcGlsZWQi
Pg0KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns2MzMyNzA1Yi0xOTk5LTQyOTItYTM4Yi1kZDQ3
MzI5NzM0YWF9PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICA8L0ZpbHRlcj4NCisgICAgPEZpbHRl
ciBJbmNsdWRlPSJTb3VyY2UgRmlsZXNcUmVuZGVyZXIiPg0KKyAgICAgIDxVbmlxdWVJZGVudGlm
aWVyPns5M2E3Njk2NC03N2EzLTRiMjAtYTZmNS1lMTRlNzYyZDRlMTR9PC9VbmlxdWVJZGVudGlm
aWVyPg0KKyAgICA8L0ZpbHRlcj4NCisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXNc
UmVuZGVyZXI5Ij4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57Mzg3N2YzNWUtODQ1Yy00ZTk1
LWI5YTUtYzdkOGI5ZjMwN2M1fTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgPC9GaWx0ZXI+DQor
ICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzXFJlbmRlcmVyMTEiPg0KKyAgICAgIDxV
bmlxdWVJZGVudGlmaWVyPnsyZDcwZmQ2MC02ZGVhLTQ4OWYtYWMwOS0xNjg5MGQzMjU2Njl9PC9V
bmlxdWVJZGVudGlmaWVyPg0KKyAgICA8L0ZpbHRlcj4NCisgICAgPEZpbHRlciBJbmNsdWRlPSJT
b3VyY2UgRmlsZXNcUmVuZGVyZXI5Ij4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NjBlMTRm
MDQtMmNmMi00YTA3LWIzZWYtN2M2OGE4MmJhMmQ5fTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAg
PC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzXFJlbmRlcmVyMTEi
Pg0KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns3MmRiNjFkMy1lMDgxLTRiNTgtYmM2My1hMDRh
OGE3MDU4NWZ9PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICA8L0ZpbHRlcj4NCisgICAgPEZpbHRl
ciBJbmNsdWRlPSJUaGlyZCBQYXJ0eVx0cmFjZV9ldmVudCI+DQorICAgICAgPFVuaXF1ZUlkZW50
aWZpZXI+e2ViZmMxNjE0LThmMGItNDhjNy1iNmJkLTI5NWJmOTFlZjg1Y308L1VuaXF1ZUlkZW50
aWZpZXI+DQorICAgIDwvRmlsdGVyPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkJ1ZmZlci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291
cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IkNvbnRleHQuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVy
Pg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjb21tb25c
ZGVidWcuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8
L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJGZW5jZS5jcHAiPg0KKyAgICAg
IDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9IkZsb2F0MTZUb0Zsb2F0MzIuY3BwIj4NCisgICAgICA8RmlsdGVy
PlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJGcmFtZWJ1ZmZlci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVz
PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ikhh
bmRsZUFsbG9jYXRvci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+
DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImxpYkdMRVN2Mi5j
cHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21w
aWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Im1haW4uY3BwIj4NCisgICAgICA8RmlsdGVy
PlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJQcm9ncmFtLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0Zp
bHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUHJvZ3Jh
bUJpbmFyeS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAg
IDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlF1ZXJ5LmNwcCI+DQorICAg
ICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cY29tbW9uXFJlZkNvdW50T2JqZWN0LmNwcCI+DQorICAg
ICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iUmVuZGVyYnVmZmVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5T
b3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iUmVzb3VyY2VNYW5hZ2VyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmls
ZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
U2hhZGVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAg
PC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVGV4dHVyZS5jcHAiPg0KKyAg
ICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9InV0aWxpdGllcy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291
cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9InJlbmRlcmVyXEltYWdlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNc
UmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0icmVuZGVyZXJcVGV4dHVyZVN0b3JhZ2UuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJj
ZSBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJlci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291
cmNlIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHRoaXJkX3BhcnR5XG11cm11cmhhc2hcTXVybXVySGFzaDMuY3Bw
Ij4NCisgICAgICA8RmlsdGVyPlRoaXJkIFBhcnR5XE11cm11ckhhc2g8L0ZpbHRlcj4NCisgICAg
PC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW5kZXhEYXRh
TWFuYWdlci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyPC9GaWx0
ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVy
XFZlcnRleERhdGFNYW5hZ2VyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVu
ZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0icmVuZGVyZXJcSW1hZ2UuY3BwIj4NCisgICAgICA8RmlsdGVyPlJlbmRlcmVyPC9GaWx0ZXI+
DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXElt
YWdlU1NFMi5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyPC9GaWx0
ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVy
XFZlcnRleEJ1ZmZlci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVy
PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJl
bmRlcmVyXEluZGV4QnVmZmVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVu
ZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iVW5pZm9ybS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQor
ICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEJ1ZmZl
clN0b3JhZ2UuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjwvRmls
dGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJl
clxCdWZmZXJTdG9yYWdlMTEuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5k
ZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9InJlbmRlcmVyXEZlbmNlMTEuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xS
ZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9InJlbmRlcmVyXEltYWdlMTEuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxl
c1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9InJlbmRlcmVyXEluZGV4QnVmZmVyMTEuY3BwIj4NCisgICAgICA8RmlsdGVyPlNv
dXJjZSBGaWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFF1ZXJ5MTEuY3BwIj4NCisgICAgICA8RmlsdGVy
PlNvdXJjZSBGaWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlcmVyMTEuY3BwIj4NCisgICAgICA8
RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxl
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXHJlbmRlcmVyMTFfdXRpbHMuY3Bw
Ij4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAg
IDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlclRh
cmdldDExLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXIxMTwvRmls
dGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJl
clxTaGFkZXJFeGVjdXRhYmxlMTEuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xS
ZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9InJlbmRlcmVyXFN3YXBDaGFpbjExLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2Ug
RmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSJyZW5kZXJlclxUZXh0dXJlU3RvcmFnZTExLmNwcCI+DQorICAgICAgPEZp
bHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxWZXJ0ZXhCdWZmZXIxMS5jcHAiPg0K
KyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9D
bENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcQnVmZmVyU3RvcmFn
ZTkuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4N
CisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcRmVu
Y2U5LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+
DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXElt
YWdlOS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVy
Pg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJ
bmRleEJ1ZmZlcjkuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjk8
L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVu
ZGVyZXJcUXVlcnk5LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI5
PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJl
bmRlcmVyXFJlbmRlcmVyOS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRl
cmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSJyZW5kZXJlclxyZW5kZXJlcjlfdXRpbHMuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBG
aWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyVGFyZ2V0OS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+
U291cmNlIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxTaGFkZXJFeGVjdXRhYmxlOS5jcHAiPg0KKyAg
ICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsQ29t
cGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxTd2FwQ2hhaW45LmNwcCI+
DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwv
Q2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFRleHR1cmVTdG9y
YWdlOS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVy
Pg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxW
ZXJ0ZXhCdWZmZXI5LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI5
PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJl
bmRlcmVyXEJsaXQuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjk8
L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVu
ZGVyZXJcSW5wdXRMYXlvdXRDYWNoZS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVz
XFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyU3RhdGVDYWNoZS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+
U291cmNlIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4RGVjbGFyYXRpb25DYWNoZS5jcHAi
Pg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8
L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJwcmVjb21waWxlZC5jcHAiPg0K
KyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEluZGV4UmFuZ2VDYWNoZS5jcHAiPg0K
KyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xD
b21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGNvbW1vblxldmVudF90cmFjZXIu
Y3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29t
cGlsZT4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJCaW5hcnlTdHJlYW0uaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0Zp
bHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQnVmZmVy
LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNs
dWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkNvbnRleHQuaCI+DQorICAgICAgPEZpbHRl
cj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iRmVuY2UuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRl
cj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRnJhbWVidWZm
ZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbElu
Y2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5caW5jbHVkZVxHTEVTMlxnbDIu
aCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1
ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5caW5jbHVkZVxHTEVTMlxnbDJleHQu
aCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1
ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5caW5jbHVkZVxHTEVTMlxnbDJwbGF0
Zm9ybS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0Ns
SW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJIYW5kbGVBbGxvY2F0b3IuaCI+DQor
ICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0ibWFpbi5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBG
aWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSJtYXRodXRpbC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAg
ICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJQcm9ncmFtLmgiPg0KKyAg
ICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlByb2dyYW1CaW5hcnkuaCI+DQorICAgICAgPEZpbHRlcj5I
ZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iUXVlcnkuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY29tbW9uXFJl
ZkNvdW50T2JqZWN0LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQor
ICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlJlbmRlcmJ1ZmZlci5o
Ij4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVk
ZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZXNvdXJjZS5oIj4NCisgICAgICA8RmlsdGVy
PkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJSZXNvdXJjZU1hbmFnZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmls
ZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
U2hhZGVyLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwv
Q2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlRleHR1cmUuaCI+DQorICAgICAg
PEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0idXRpbGl0aWVzLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGNvbW1vblx2ZXJzaW9uLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9ImFuZ2xldHlw
ZXMuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbElu
Y2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cdGhpcmRfcGFydHlcbXVybXVyaGFz
aFxNdXJtdXJIYXNoMy5oIj4NCisgICAgICA8RmlsdGVyPlRoaXJkIFBhcnR5XE11cm11ckhhc2g8
L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVW5p
Zm9ybS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0Ns
SW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBp
bGVkXHBhc3N0aHJvdWdoMTF2cy5oIj4NCisgICAgICA8RmlsdGVyPlNoYWRlcnNcQ29tcGlsZWQ8
L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVu
ZGVyZXJcc2hhZGVyc1xjb21waWxlZFxwYXNzdGhyb3VnaHBzLmgiPg0KKyAgICAgIDxGaWx0ZXI+
U2hhZGVyc1xDb21waWxlZDwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVkXHN0YW5kYXJkdnMuaCI+DQor
ICAgICAgPEZpbHRlcj5TaGFkZXJzXENvbXBpbGVkPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRl
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRcY29t
cG9uZW50bWFza3BzLmgiPg0KKyAgICAgIDxGaWx0ZXI+U2hhZGVyc1xDb21waWxlZDwvRmlsdGVy
Pg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxz
aGFkZXJzXGNvbXBpbGVkXGZsaXB5dnMuaCI+DQorICAgICAgPEZpbHRlcj5TaGFkZXJzXENvbXBp
bGVkPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRcbHVtaW5hbmNlcHMuaCI+DQorICAgICAgPEZpbHRl
cj5TaGFkZXJzXENvbXBpbGVkPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRccGFzc3Rocm91Z2hyZ2Jh
MTFwcy5oIj4NCisgICAgICA8RmlsdGVyPlNoYWRlcnNcQ29tcGlsZWQ8L0ZpbHRlcj4NCisgICAg
PC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xj
b21waWxlZFxwYXNzdGhyb3VnaHJnYjExcHMuaCI+DQorICAgICAgPEZpbHRlcj5TaGFkZXJzXENv
bXBpbGVkPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRccGFzc3Rocm91Z2hsdW0xMXBzLmgiPg0KKyAg
ICAgIDxGaWx0ZXI+U2hhZGVyc1xDb21waWxlZDwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVkXHBhc3N0
aHJvdWdobHVtYWxwaGExMXBzLmgiPg0KKyAgICAgIDxGaWx0ZXI+U2hhZGVyc1xDb21waWxlZDwv
RmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5k
ZXJlclxzaGFkZXJzXGNvbXBpbGVkXGNsZWFyMTF2cy5oIj4NCisgICAgICA8RmlsdGVyPlNoYWRl
cnNcQ29tcGlsZWQ8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxjbGVhcm11bHRpcGxlMTFwcy5oIj4N
CisgICAgICA8RmlsdGVyPlNoYWRlcnNcQ29tcGlsZWQ8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1
ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxj
bGVhcnNpbmdsZTExcHMuaCI+DQorICAgICAgPEZpbHRlcj5TaGFkZXJzXENvbXBpbGVkPC9GaWx0
ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNvbW1v
blxzeXN0ZW0uaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAg
PC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY29tbW9uXGRlYnVnLmgi
Pg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRl
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEJ1ZmZlclN0b3JhZ2UuaCI+DQor
ICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbElu
Y2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcRmVuY2VJbXBsLmgiPg0K
KyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xJ
bmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXGdlbmVyYXRlbWlwLmgi
Pg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQorICAgIDwv
Q2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEltYWdlLmgiPg0K
KyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xJ
bmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEluZGV4QnVmZmVyLmgi
Pg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQorICAgIDwv
Q2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEluZGV4RGF0YU1h
bmFnZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcUXVl
cnlJbXBsLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+
DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFJl
bmRlcmVyLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+
DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFJl
bmRlclRhcmdldC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjwvRmls
dGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJl
clxTaGFkZXJFeGVjdXRhYmxlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRl
cmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
InJlbmRlcmVyXFN3YXBDaGFpbi5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5k
ZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSJyZW5kZXJlclxUZXh0dXJlU3RvcmFnZS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
c1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJyZW5kZXJlclxWZXJ0ZXhCdWZmZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIg
RmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0icmVuZGVyZXJcdmVydGV4Y29udmVyc2lvbi5oIj4NCisgICAgICA8RmlsdGVy
PkhlYWRlciBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxWZXJ0ZXhEYXRhTWFuYWdlci5oIj4NCisgICAg
ICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVk
ZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxCdWZmZXJTdG9yYWdlMTEuaCI+
DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8
L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxJbmRleEJ1ZmZl
cjExLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcUXVl
cnkxMS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+
DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFJl
bmRlcmVyMTEuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXIxMTwvRmls
dGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJl
clxSZW5kZXJUYXJnZXQxMS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJl
cjExPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
InJlbmRlcmVyXFNoYWRlckV4ZWN1dGFibGUxMS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBG
aWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9InJlbmRlcmVyXFN3YXBDaGFpbjExLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVh
ZGVyIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcVGV4dHVyZVN0b3JhZ2UxMS5oIj4NCisgICAgICA8
RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRl
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleEJ1ZmZlcjExLmgiPg0K
KyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9D
bEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcQnVmZmVyU3RvcmFn
ZTkuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQor
ICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEZlbmNl
OS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisg
ICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcSW1hZ2U5
LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAg
ICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxJbmRleEJ1
ZmZlcjkuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+
DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFF1
ZXJ5OS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcUmVu
ZGVyZXI5LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVy
Pg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxy
ZW5kZXJlcjlfdXRpbHMuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI5
PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJl
bmRlcmVyXFJlbmRlclRhcmdldDkuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVu
ZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9InJlbmRlcmVyXFNoYWRlckV4ZWN1dGFibGU5LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVy
IEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJyZW5kZXJlclxTd2FwQ2hhaW45LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVh
ZGVyIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxUZXh0dXJlU3RvcmFnZTkuaCI+DQorICAgICAgPEZp
bHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleEJ1ZmZlcjkuaCI+DQorICAg
ICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNs
dWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEZlbmNlMTEuaCI+DQorICAg
ICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsSW5j
bHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxJbWFnZTExLmgiPg0KKyAg
ICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbElu
Y2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJccmVuZGVyZXIxMV91dGls
cy5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQor
ICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEZlbmNl
OS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlclxSZW5kZXJlcjk8L0Zp
bHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVy
ZXJcUXVlcnkxMS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlclxSZW5k
ZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9InJlbmRlcmVyXEJsaXQuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVy
ZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
InJlbmRlcmVyXFNoYWRlckNhY2hlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJl
bmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJyZW5kZXJlclxJbnB1dExheW91dENhY2hlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVy
IEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyU3RhdGVDYWNoZS5oIj4NCisgICAgICA8Rmls
dGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleERlY2xhcmF0aW9uQ2FjaGUu
aCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAg
IDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9ImNvbnN0YW50cy5oIj4NCisg
ICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJwcmVjb21waWxlZC5oIj4NCisgICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJyZW5kZXJlclxJbmRleFJhbmdlQ2FjaGUuaCI+DQorICAgICAgPEZpbHRlcj5IZWFk
ZXIgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cY29tbW9uXGV2ZW50X3RyYWNlci5oIj4NCisgICAgICA8RmlsdGVy
PkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlx0aGlyZF9wYXJ0eVx0cmFjZV9ldmVudFx0cmFjZV9ldmVudC5oIj4NCisg
ICAgICA8RmlsdGVyPlRoaXJkIFBhcnR5XHRyYWNlX2V2ZW50PC9GaWx0ZXI+DQorICAgIDwvQ2xJ
bmNsdWRlPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Tm9uZSBJbmNs
dWRlPSJyZW5kZXJlclxzaGFkZXJzXEJsaXQucHMiPg0KKyAgICAgIDxGaWx0ZXI+U2hhZGVyczwv
RmlsdGVyPg0KKyAgICA8L05vbmU+DQorICAgIDxOb25lIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRl
cnNcQmxpdC52cyI+DQorICAgICAgPEZpbHRlcj5TaGFkZXJzPC9GaWx0ZXI+DQorICAgIDwvTm9u
ZT4NCisgICAgPE5vbmUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xnZW5lcmF0ZV9zaGFkZXJz
LmJhdCI+DQorICAgICAgPEZpbHRlcj5TaGFkZXJzPC9GaWx0ZXI+DQorICAgIDwvTm9uZT4NCisg
ICAgPE5vbmUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xQYXNzdGhyb3VnaDExLmhsc2wiPg0K
KyAgICAgIDxGaWx0ZXI+U2hhZGVyczwvRmlsdGVyPg0KKyAgICA8L05vbmU+DQorICAgIDxOb25l
IEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcQ2xlYXIxMS5obHNsIj4NCisgICAgICA8RmlsdGVy
PlNoYWRlcnM8L0ZpbHRlcj4NCisgICAgPC9Ob25lPg0KKyAgICA8Tm9uZSBJbmNsdWRlPSJsaWJH
TEVTdjIuZGVmIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8UmVz
b3VyY2VDb21waWxlIEluY2x1ZGU9ImxpYkdMRVN2Mi5yYyIgLz4NCisgIDwvSXRlbUdyb3VwPg0K
KzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3ByZWNvbXBpbGVkLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9wcmVjb21waWxlZC5oCShyZXZp
c2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3By
ZWNvbXBpbGVkLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMzLDkgQEAKICNpbmNsdWRlIDx2
ZWN0b3I+CiAKICNpbmNsdWRlIDxkM2Q5Lmg+Ci0jaW5jbHVkZSA8RDNEMTEuaD4KKyNpbmNsdWRl
IDxkM2QxMS5oPgogI2luY2x1ZGUgPGR4Z2kuaD4KLSNpbmNsdWRlIDxEM0Rjb21waWxlci5oPgor
I2luY2x1ZGUgPGQzZGNvbXBpbGVyLmg+CiAKICNpZmRlZiBfTVNDX1ZFUgogI2luY2x1ZGUgPGhh
c2hfbWFwPgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi91dGls
aXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvdXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi91dGlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTgsNiArMjE4LDI5IEBAIEdMc2l6ZWkgQ29tcHV0ZUNvbXByZXNzZWRTaXplKEdMc2l6ZWkgd2kK
ICAgICB9CiB9CiAKK0dMc2l6ZWkgQ29tcHV0ZVR5cGVTaXplKEdMZW51bSB0eXBlKQoreworICAg
IHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICBjYXNlIEdMX0JZVEU6ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOiAgICAg
ICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgIGNhc2UgR0xfU0hPUlQ6ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOiAg
ICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgY2FzZSBHTF9JTlQ6ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gNDsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOiAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIDQ7CisgICAgICBjYXNlIEdMX0ZMT0FUOiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiA0OworICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUX09F
UzogICAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hP
UlRfNV82XzU6ICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NI
T1JUXzRfNF80XzQ6ICAgICAgICAgIHJldHVybiAyOworICAgICAgY2FzZSBHTF9VTlNJR05FRF9T
SE9SVF81XzVfNV8xOiAgICAgICAgICByZXR1cm4gMjsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURf
U0hPUlRfNF80XzRfNF9SRVZfRVhUOiAgcmV0dXJuIDI7CisgICAgICBjYXNlIEdMX1VOU0lHTkVE
X1NIT1JUXzFfNV81XzVfUkVWX0VYVDogIHJldHVybiAyOworICAgICAgY2FzZSBHTF9VTlNJR05F
RF9JTlRfMl8xMF8xMF8xMF9SRVZfRVhUOiByZXR1cm4gNDsKKyAgICAgIGNhc2UgR0xfVU5TSUdO
RURfSU5UXzI0XzhfT0VTOiAgICAgICAgICAgcmV0dXJuIDQ7CisgICAgICBkZWZhdWx0OiBVTlJF
QUNIQUJMRSgpOyAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwogYm9vbCBJ
c0NvbXByZXNzZWQoR0xlbnVtIGZvcm1hdCkKIHsKICAgICBpZihmb3JtYXQgPT0gR0xfQ09NUFJF
U1NFRF9SR0JfUzNUQ19EWFQxX0VYVCB8fApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi91dGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3V0aWxpdGllcy5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3V0aWxpdGllcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw2ICszNCw3IEBAIGludCBDb21wdXRlUGl4ZWxTaXplKEdMaW50IGludGVy
bmFsZm9ybWEKIEdMc2l6ZWkgQ29tcHV0ZVBpdGNoKEdMc2l6ZWkgd2lkdGgsIEdMaW50IGludGVy
bmFsZm9ybWF0LCBHTGludCBhbGlnbm1lbnQpOwogR0xzaXplaSBDb21wdXRlQ29tcHJlc3NlZFBp
dGNoKEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQpOwogR0xzaXplaSBDb21wdXRlQ29tcHJl
c3NlZFNpemUoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQpOwor
R0xzaXplaSBDb21wdXRlVHlwZVNpemUoR0xlbnVtIHR5cGUpOwogYm9vbCBJc0NvbXByZXNzZWQo
R0xlbnVtIGZvcm1hdCk7CiBib29sIElzRGVwdGhUZXh0dXJlKEdMZW51bSBmb3JtYXQpOwogYm9v
bCBJc1N0ZW5jaWxUZXh0dXJlKEdMZW51bSBmb3JtYXQpOwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZTExLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlMTEu
Y3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL3JlbmRlcmVyL0ltYWdlMTEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw4ICs1MCw4
IEBAIHZvaWQgSW1hZ2UxMTo6Z2VuZXJhdGVNaXBtYXAoSW1hZ2UxMSAqZGUKICAgICBBU1NFUlQo
c3JjLT5nZXRIZWlnaHQoKSA9PSAxIHx8IHNyYy0+Z2V0SGVpZ2h0KCkgLyAyID09IGRlc3QtPmdl
dEhlaWdodCgpKTsKIAogICAgIEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSBkZXN0TWFwcGVkLCBz
cmNNYXBwZWQ7Ci0gICAgZGVzdC0+bWFwKCZkZXN0TWFwcGVkKTsKLSAgICBzcmMtPm1hcCgmc3Jj
TWFwcGVkKTsKKyAgICBkZXN0LT5tYXAoRDNEMTFfTUFQX1dSSVRFLCAmZGVzdE1hcHBlZCk7Cisg
ICAgc3JjLT5tYXAoRDNEMTFfTUFQX1JFQUQsICZzcmNNYXBwZWQpOwogCiAgICAgY29uc3QgdW5z
aWduZWQgY2hhciAqc291cmNlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQg
Y2hhcio+KHNyY01hcHBlZC5wRGF0YSk7CiAgICAgdW5zaWduZWQgY2hhciAqZGVzdERhdGEgPSBy
ZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihkZXN0TWFwcGVkLnBEYXRhKTsKQEAgLTE3
MSw3ICsxNzEsNyBAQCB2b2lkIEltYWdlMTE6OmxvYWREYXRhKEdMaW50IHhvZmZzZXQsIEdMCiAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAq
aW5wdXQpCiB7CiAgICAgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIG1hcHBlZEltYWdlOwotICAg
IEhSRVNVTFQgcmVzdWx0ID0gbWFwKCZtYXBwZWRJbWFnZSk7CisgICAgSFJFU1VMVCByZXN1bHQg
PSBtYXAoRDNEMTFfTUFQX1dSSVRFLCAmbWFwcGVkSW1hZ2UpOwogICAgIGlmIChGQUlMRUQocmVz
dWx0KSkKICAgICB7CiAgICAgICAgIEVSUigiQ291bGQgbm90IG1hcCBpbWFnZSBmb3IgbG9hZGlu
Zy4iKTsKQEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIEltYWdlMTE6OmxvYWREYXRhKEdMaW50IHhv
ZmZzZXQsIEdMCiAgICAgICAgIGxvYWRBbHBoYUZsb2F0RGF0YVRvUkdCQSh3aWR0aCwgaGVpZ2h0
LCBpbnB1dFBpdGNoLCBpbnB1dCwgbWFwcGVkSW1hZ2UuUm93UGl0Y2gsIG9mZnNldE1hcHBlZERh
dGEpOwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFMzJGX0VYVDoKLSAg
ICAgICAgbG9hZEx1bWluYW5jZUZsb2F0RGF0YVRvUkdCKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0
Y2gsIGlucHV0LCBtYXBwZWRJbWFnZS5Sb3dQaXRjaCwgb2Zmc2V0TWFwcGVkRGF0YSk7CisgICAg
ICAgIGxvYWRMdW1pbmFuY2VGbG9hdERhdGFUb1JHQkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRj
aCwgaW5wdXQsIG1hcHBlZEltYWdlLlJvd1BpdGNoLCBvZmZzZXRNYXBwZWREYXRhKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgICBjYXNlIEdMX0FMUEhBMTZGX0VYVDoKICAgICAgICAgbG9hZEFscGhh
SGFsZkZsb2F0RGF0YVRvUkdCQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbWFw
cGVkSW1hZ2UuUm93UGl0Y2gsIG9mZnNldE1hcHBlZERhdGEpOwpAQCAtMjMwLDcgKzIzMCw3IEBA
IHZvaWQgSW1hZ2UxMTo6bG9hZERhdGEoR0xpbnQgeG9mZnNldCwgR0wKICAgICAgICAgbG9hZEJH
UkFEYXRhVG9CR1JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBtYXBwZWRJbWFn
ZS5Sb3dQaXRjaCwgb2Zmc2V0TWFwcGVkRGF0YSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2Fz
ZSBHTF9SR0IzMkZfRVhUOgotICAgICAgICBsb2FkUkdCRmxvYXREYXRhVG9OYXRpdmUod2lkdGgs
IGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG1hcHBlZEltYWdlLlJvd1BpdGNoLCBvZmZzZXRN
YXBwZWREYXRhKTsKKyAgICAgICAgbG9hZFJHQkZsb2F0RGF0YVRvUkdCQSh3aWR0aCwgaGVpZ2h0
LCBpbnB1dFBpdGNoLCBpbnB1dCwgbWFwcGVkSW1hZ2UuUm93UGl0Y2gsIG9mZnNldE1hcHBlZERh
dGEpOwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgR0xfUkdCMTZGX0VYVDoKICAgICAgICAg
bG9hZFJHQkhhbGZGbG9hdERhdGFUb1JHQkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5w
dXQsIG1hcHBlZEltYWdlLlJvd1BpdGNoLCBvZmZzZXRNYXBwZWREYXRhKTsKQEAgLTI1NCw3ICsy
NTQsNyBAQCB2b2lkIEltYWdlMTE6OmxvYWRDb21wcmVzc2VkRGF0YShHTGludCB4CiAgICAgQVNT
RVJUKHlvZmZzZXQgJSA0ID09IDApOwogCiAgICAgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIG1h
cHBlZEltYWdlOwotICAgIEhSRVNVTFQgcmVzdWx0ID0gbWFwKCZtYXBwZWRJbWFnZSk7CisgICAg
SFJFU1VMVCByZXN1bHQgPSBtYXAoRDNEMTFfTUFQX1dSSVRFLCAmbWFwcGVkSW1hZ2UpOwogICAg
IGlmIChGQUlMRUQocmVzdWx0KSkKICAgICB7CiAgICAgICAgIEVSUigiQ291bGQgbm90IG1hcCBp
bWFnZSBmb3IgbG9hZGluZy4iKTsKQEAgLTM0NCw4ICszNDQsOCBAQCB2b2lkIEltYWdlMTE6OmNv
cHkoR0xpbnQgeG9mZnNldCwgR0xpbnQgCiAgICAgewogICAgICAgICAvLyBUaGlzIGZvcm1hdCBy
ZXF1aXJlcyBjb252ZXJzaW9uLCBzbyB3ZSBtdXN0IGNvcHkgdGhlIHRleHR1cmUgdG8gc3RhZ2lu
ZyBhbmQgbWFudWFsbHkgY29udmVydCB2aWEgcmVhZFBpeGVscwogICAgICAgICBEM0QxMV9NQVBQ
RURfU1VCUkVTT1VSQ0UgbWFwcGVkSW1hZ2U7Ci0gICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbWFw
KCZtYXBwZWRJbWFnZSk7Ci0gICAgICAgICAgICAKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBt
YXAoRDNEMTFfTUFQX1dSSVRFLCAmbWFwcGVkSW1hZ2UpOworCiAgICAgICAgIC8vIGRldGVybWlu
ZSB0aGUgb2Zmc2V0IGNvb3JkaW5hdGUgaW50byB0aGUgZGVzdGluYXRpb24gYnVmZmVyCiAgICAg
ICAgIEdMc2l6ZWkgcm93T2Zmc2V0ID0gZ2w6OkNvbXB1dGVQaXhlbFNpemUobUFjdHVhbEZvcm1h
dCkgKiB4b2Zmc2V0OwogICAgICAgICB2b2lkICpkYXRhT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcio+KG1hcHBlZEltYWdlLnBEYXRhKSArIG1hcHBlZEltYWdlLlJvd1BpdGNoICog
eW9mZnNldCArIHJvd09mZnNldDsKQEAgLTQwMiw3ICs0MDIsNyBAQCB2b2lkIEltYWdlMTE6OmNy
ZWF0ZVN0YWdpbmdUZXh0dXJlKCkKICAgICAgICAgZGVzYy5TYW1wbGVEZXNjLlF1YWxpdHkgPSAw
OwogICAgICAgICBkZXNjLlVzYWdlID0gRDNEMTFfVVNBR0VfU1RBR0lORzsKICAgICAgICAgZGVz
Yy5CaW5kRmxhZ3MgPSAwOwotICAgICAgICBkZXNjLkNQVUFjY2Vzc0ZsYWdzID0gRDNEMTFfQ1BV
X0FDQ0VTU19XUklURTsKKyAgICAgICAgZGVzYy5DUFVBY2Nlc3NGbGFncyA9IEQzRDExX0NQVV9B
Q0NFU1NfUkVBRCB8IEQzRDExX0NQVV9BQ0NFU1NfV1JJVEU7CiAgICAgICAgIGRlc2MuTWlzY0Zs
YWdzID0gMDsKIAogICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVGV4dHVy
ZTJEKCZkZXNjLCBOVUxMLCAmbmV3VGV4dHVyZSk7CkBAIC00MjAsNyArNDIwLDcgQEAgdm9pZCBJ
bWFnZTExOjpjcmVhdGVTdGFnaW5nVGV4dHVyZSgpCiAgICAgbURpcnR5ID0gZmFsc2U7CiB9CiAK
LUhSRVNVTFQgSW1hZ2UxMTo6bWFwKEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSAqbWFwKQorSFJF
U1VMVCBJbWFnZTExOjptYXAoRDNEMTFfTUFQIG1hcFR5cGUsIEQzRDExX01BUFBFRF9TVUJSRVNP
VVJDRSAqbWFwKQogewogICAgIGNyZWF0ZVN0YWdpbmdUZXh0dXJlKCk7CiAKQEAgLTQyOSw3ICs0
MjksNyBAQCBIUkVTVUxUIEltYWdlMTE6Om1hcChEM0QxMV9NQVBQRURfU1VCUkVTCiAgICAgaWYg
KG1TdGFnaW5nVGV4dHVyZSkKICAgICB7CiAgICAgICAgIElEM0QxMURldmljZUNvbnRleHQgKmRl
dmljZUNvbnRleHQgPSBtUmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKTsKLSAgICAgICAgcmVz
dWx0ID0gZGV2aWNlQ29udGV4dC0+TWFwKG1TdGFnaW5nVGV4dHVyZSwgbVN0YWdpbmdTdWJyZXNv
dXJjZSwgRDNEMTFfTUFQX1dSSVRFLCAwLCBtYXApOworICAgICAgICByZXN1bHQgPSBkZXZpY2VD
b250ZXh0LT5NYXAobVN0YWdpbmdUZXh0dXJlLCBtU3RhZ2luZ1N1YnJlc291cmNlLCBtYXBUeXBl
LCAwLCBtYXApOwogCiAgICAgICAgIC8vIHRoaXMgY2FuIGZhaWwgaWYgdGhlIGRldmljZSBpcyBy
ZW1vdmVkIChmcm9tIFREUikKICAgICAgICAgaWYgKGQzZDExOjppc0RldmljZUxvc3RFcnJvcihy
ZXN1bHQpKQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9JbWFnZTExLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZTExLmgJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2UxMS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIEltYWdlMTEgOiBwdWJsaWMgSW1hZ2UK
ICAgICB2aXJ0dWFsIHZvaWQgY29weShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGlu
dCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgZ2w6OkZyYW1lYnVm
ZmVyICpzb3VyY2UpOwogCiAgIHByb3RlY3RlZDoKLSAgICBIUkVTVUxUIG1hcChEM0QxMV9NQVBQ
RURfU1VCUkVTT1VSQ0UgKm1hcCk7CisgICAgSFJFU1VMVCBtYXAoRDNEMTFfTUFQIG1hcFR5cGUs
IEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSAqbWFwKTsKICAgICB2b2lkIHVubWFwKCk7CiAKICAg
cHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvSW5kZXhCdWZmZXIxMS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlcjExLmNwcAkocmV2aXNpb24g
MTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9JbmRleEJ1ZmZlcjExLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsOCBAQCBib29s
IEluZGV4QnVmZmVyMTE6Om1hcEJ1ZmZlcih1bnNpZ25lZCBpCiB7CiAgICAgaWYgKG1CdWZmZXIp
CiAgICAgewotICAgICAgICBpZiAob2Zmc2V0ICsgc2l6ZSA+IG1CdWZmZXJTaXplKQorICAgICAg
ICAvLyBDaGVjayBmb3IgaW50ZWdlciBvdmVyZmxvd3MgYW5kIG91dC1vdXQtYm91bmRzIG1hcCBy
ZXF1ZXN0cworICAgICAgICBpZiAob2Zmc2V0ICsgc2l6ZSA8IG9mZnNldCB8fCBvZmZzZXQgKyBz
aXplID4gbUJ1ZmZlclNpemUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEVSUigiSW5kZXggYnVm
ZmVyIG1hcCByYW5nZSBpcyBub3QgaW5zaWRlIHRoZSBidWZmZXIuIik7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL0luZGV4QnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyLmNwcAkocmV2aXNpb24g
MTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9JbmRleEJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDE4ICs2NywzMCBAQCB1bnNp
Z25lZCBpbnQgSW5kZXhCdWZmZXJJbnRlcmZhY2U6OmdldFNlCiAgICAgcmV0dXJuIG1JbmRleEJ1
ZmZlci0+Z2V0U2VyaWFsKCk7CiB9CiAKLWludCBJbmRleEJ1ZmZlckludGVyZmFjZTo6bWFwQnVm
ZmVyKHVuc2lnbmVkIGludCBzaXplLCB2b2lkKiogb3V0TWFwcGVkTWVtb3J5KQorYm9vbCBJbmRl
eEJ1ZmZlckludGVyZmFjZTo6bWFwQnVmZmVyKHVuc2lnbmVkIGludCBzaXplLCB2b2lkKiogb3V0
TWFwcGVkTWVtb3J5LCB1bnNpZ25lZCBpbnQgKnN0cmVhbU9mZnNldCkKIHsKKyAgICAvLyBQcm90
ZWN0IGFnYWluc3QgaW50ZWdlciBvdmVyZmxvdworICAgIGlmIChtV3JpdGVQb3NpdGlvbiArIHNp
emUgPCBtV3JpdGVQb3NpdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKICAgICBpZiAoIW1JbmRleEJ1ZmZlci0+bWFwQnVmZmVyKG1Xcml0ZVBvc2l0aW9uLCBzaXpl
LCBvdXRNYXBwZWRNZW1vcnkpKQogICAgIHsKLSAgICAgICAgKm91dE1hcHBlZE1lbW9yeSA9IE5V
TEw7Ci0gICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKG91dE1hcHBlZE1lbW9yeSkKKyAg
ICAgICAgeworICAgICAgICAgICAgKm91dE1hcHBlZE1lbW9yeSA9IE5VTEw7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGludCBvbGRXcml0ZVBvcyA9IHN0
YXRpY19jYXN0PGludD4obVdyaXRlUG9zaXRpb24pOwotICAgIG1Xcml0ZVBvc2l0aW9uICs9IHNp
emU7CisgICAgaWYgKHN0cmVhbU9mZnNldCkKKyAgICB7CisgICAgICAgICpzdHJlYW1PZmZzZXQg
PSBtV3JpdGVQb3NpdGlvbjsKKyAgICB9CiAKLSAgICByZXR1cm4gb2xkV3JpdGVQb3M7CisgICAg
bVdyaXRlUG9zaXRpb24gKz0gc2l6ZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBJbmRl
eEJ1ZmZlckludGVyZmFjZTo6dW5tYXBCdWZmZXIoKQpAQCAtMTc2LDI3ICsxODgsOSBAQCBib29s
IFN0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNlOjpyZXNlcnZlCiAgICAgfQogfQogCi11bnNpZ25l
ZCBpbnQgU3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2U6Omxvb2t1cFJhbmdlKGludHB0cl90IG9m
ZnNldCwgR0xzaXplaSBjb3VudCwgdW5zaWduZWQgaW50ICptaW5JbmRleCwgdW5zaWduZWQgaW50
ICptYXhJbmRleCkKLXsKLSAgICBJbmRleFJhbmdlIHJhbmdlID0ge29mZnNldCwgY291bnR9Owot
Ci0gICAgc3RkOjptYXA8SW5kZXhSYW5nZSwgSW5kZXhSZXN1bHQ+OjppdGVyYXRvciByZXMgPSBt
Q2FjaGUuZmluZChyYW5nZSk7Ci0KLSAgICBpZiAocmVzID09IG1DYWNoZS5lbmQoKSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICAqbWluSW5kZXggPSByZXMtPnNlY29u
ZC5taW5JbmRleDsKLSAgICAqbWF4SW5kZXggPSByZXMtPnNlY29uZC5tYXhJbmRleDsKLSAgICBy
ZXR1cm4gcmVzLT5zZWNvbmQuc3RyZWFtT2Zmc2V0OwotfQotCi12b2lkIFN0YXRpY0luZGV4QnVm
ZmVySW50ZXJmYWNlOjphZGRSYW5nZShpbnRwdHJfdCBvZmZzZXQsIEdMc2l6ZWkgY291bnQsIHVu
c2lnbmVkIGludCBtaW5JbmRleCwgdW5zaWduZWQgaW50IG1heEluZGV4LCB1bnNpZ25lZCBpbnQg
c3RyZWFtT2Zmc2V0KQorSW5kZXhSYW5nZUNhY2hlICpTdGF0aWNJbmRleEJ1ZmZlckludGVyZmFj
ZTo6Z2V0SW5kZXhSYW5nZUNhY2hlKCkKIHsKLSAgICBJbmRleFJhbmdlIGluZGV4UmFuZ2UgPSB7
b2Zmc2V0LCBjb3VudH07Ci0gICAgSW5kZXhSZXN1bHQgaW5kZXhSZXN1bHQgPSB7bWluSW5kZXgs
IG1heEluZGV4LCBzdHJlYW1PZmZzZXR9OwotICAgIG1DYWNoZVtpbmRleFJhbmdlXSA9IGluZGV4
UmVzdWx0OworICAgIHJldHVybiAmbUluZGV4UmFuZ2VDYWNoZTsKIH0KIAogfQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvSW5kZXhCdWZmZXIuaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMSw2ICsxMSw3IEBACiAjZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJFUl9JTkRFWEJV
RkZFUl9IXwogCiAjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJsaWJH
TEVTdjIvcmVuZGVyZXIvSW5kZXhSYW5nZUNhY2hlLmgiCiAKIG5hbWVzcGFjZSByeAogewpAQCAt
NTgsNyArNTksNyBAQCBjbGFzcyBJbmRleEJ1ZmZlckludGVyZmFjZQogCiAgICAgdW5zaWduZWQg
aW50IGdldFNlcmlhbCgpIGNvbnN0OwogCi0gICAgaW50IG1hcEJ1ZmZlcih1bnNpZ25lZCBpbnQg
c2l6ZSwgdm9pZCoqIG91dE1hcHBlZE1lbW9yeSk7CisgICAgYm9vbCBtYXBCdWZmZXIodW5zaWdu
ZWQgaW50IHNpemUsIHZvaWQqKiBvdXRNYXBwZWRNZW1vcnksIHVuc2lnbmVkIGludCAqc3RyZWFt
T2Zmc2V0KTsKICAgICBib29sIHVubWFwQnVmZmVyKCk7CiAKICAgICBJbmRleEJ1ZmZlciAqZ2V0
SW5kZXhCdWZmZXIoKSBjb25zdDsKQEAgLTk5LDM3ICsxMDAsMTAgQEAgY2xhc3MgU3RhdGljSW5k
ZXhCdWZmZXJJbnRlcmZhY2UgOiBwdWJsaQogCiAgICAgdmlydHVhbCBib29sIHJlc2VydmVCdWZm
ZXJTcGFjZSh1bnNpZ25lZCBpbnQgc2l6ZSwgR0xlbnVtIGluZGV4VHlwZSk7CiAKLSAgICB1bnNp
Z25lZCBpbnQgbG9va3VwUmFuZ2UoaW50cHRyX3Qgb2Zmc2V0LCBHTHNpemVpIGNvdW50LCB1bnNp
Z25lZCBpbnQgKm1pbkluZGV4LCB1bnNpZ25lZCBpbnQgKm1heEluZGV4KTsgICAvLyBSZXR1cm5z
IHRoZSBvZmZzZXQgaW50byB0aGUgaW5kZXggYnVmZmVyLCBvciAtMSBpZiBub3QgZm91bmQKLSAg
ICB2b2lkIGFkZFJhbmdlKGludHB0cl90IG9mZnNldCwgR0xzaXplaSBjb3VudCwgdW5zaWduZWQg
aW50IG1pbkluZGV4LCB1bnNpZ25lZCBpbnQgbWF4SW5kZXgsIHVuc2lnbmVkIGludCBzdHJlYW1P
ZmZzZXQpOworICAgIEluZGV4UmFuZ2VDYWNoZSAqZ2V0SW5kZXhSYW5nZUNhY2hlKCk7CiAKICAg
cHJpdmF0ZToKLSAgICBzdHJ1Y3QgSW5kZXhSYW5nZQotICAgIHsKLSAgICAgICAgaW50cHRyX3Qg
b2Zmc2V0OwotICAgICAgICBHTHNpemVpIGNvdW50OwotCi0gICAgICAgIGJvb2wgb3BlcmF0b3I8
KGNvbnN0IEluZGV4UmFuZ2UmIHJocykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgaWYg
KG9mZnNldCAhPSByaHMub2Zmc2V0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJl
dHVybiBvZmZzZXQgPCByaHMub2Zmc2V0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYg
KGNvdW50ICE9IHJocy5jb3VudCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gY291bnQgPCByaHMuY291bnQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgc3RydWN0IEluZGV4UmVzdWx0Ci0gICAg
ewotICAgICAgICB1bnNpZ25lZCBpbnQgbWluSW5kZXg7Ci0gICAgICAgIHVuc2lnbmVkIGludCBt
YXhJbmRleDsKLSAgICAgICAgdW5zaWduZWQgaW50IHN0cmVhbU9mZnNldDsKLSAgICB9OwotCi0g
ICAgc3RkOjptYXA8SW5kZXhSYW5nZSwgSW5kZXhSZXN1bHQ+IG1DYWNoZTsKKyAgICBJbmRleFJh
bmdlQ2FjaGUgbUluZGV4UmFuZ2VDYWNoZTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhEYXRhTWFuYWdlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9JbmRleERhdGFNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleERhdGFNYW5hZ2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTMsNiArMTMsNyBAQAogCiAjaW5jbHVkZSAibGliR0xFU3YyL0J1
ZmZlci5oIgogI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisjaW5jbHVkZSAibGliR0xFU3Yy
L3V0aWxpdGllcy5oIgogI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlci5o
IgogCiBuYW1lc3BhY2UgcngKQEAgLTUzLDE3ICs1NCw2IEBAIEluZGV4RGF0YU1hbmFnZXI6On5J
bmRleERhdGFNYW5hZ2VyKCkKICAgICBkZWxldGUgbUNvdW50aW5nQnVmZmVyOwogfQogCi1zdGF0
aWMgdW5zaWduZWQgaW50IGluZGV4VHlwZVNpemUoR0xlbnVtIHR5cGUpCi17Ci0gICAgc3dpdGNo
ICh0eXBlKQotICAgIHsKLSAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOiAgIHJldHVybiBzaXpl
b2YoR0x1aW50KTsKLSAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6IHJldHVybiBzaXplb2Yo
R0x1c2hvcnQpOwotICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOiAgcmV0dXJuIHNpemVvZihH
THVieXRlKTsKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7IHJldHVybiBzaXplb2YoR0x1
c2hvcnQpOwotICAgIH0KLX0KLQogc3RhdGljIHZvaWQgY29udmVydEluZGljZXMoR0xlbnVtIHR5
cGUsIGNvbnN0IHZvaWQgKmlucHV0LCBHTHNpemVpIGNvdW50LCB2b2lkICpvdXRwdXQpCiB7CiAg
ICAgaWYgKHR5cGUgPT0gR0xfVU5TSUdORURfQllURSkKQEAgLTEyNSwxMyArMTE1LDE5IEBAIEdM
ZW51bSBJbmRleERhdGFNYW5hZ2VyOjpwcmVwYXJlSW5kZXhEYXQKICAgICB9CiAKICAgICBHTGVu
dW0gZGVzdGluYXRpb25JbmRleFR5cGUgPSAodHlwZSA9PSBHTF9VTlNJR05FRF9JTlQpID8gR0xf
VU5TSUdORURfSU5UIDogR0xfVU5TSUdORURfU0hPUlQ7Ci0gICAgaW50cHRyX3Qgb2Zmc2V0ID0g
cmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5kaWNlcyk7CisgICAgdW5zaWduZWQgaW50IG9m
ZnNldCA9IDA7CiAgICAgYm9vbCBhbGlnbmVkT2Zmc2V0ID0gZmFsc2U7CiAKICAgICBCdWZmZXJT
dG9yYWdlICpzdG9yYWdlID0gTlVMTDsKIAogICAgIGlmIChidWZmZXIgIT0gTlVMTCkKICAgICB7
CisgICAgICAgIGlmIChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5kaWNlcykgPiBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGludD46Om1heCgpKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gR0xfT1VUX09GX01FTU9SWTsKKyAgICAgICAgfQorICAgICAgICBvZmZzZXQg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihp
bmRpY2VzKSk7CisKICAgICAgICAgc3RvcmFnZSA9IGJ1ZmZlci0+Z2V0U3RvcmFnZSgpOwogCiAg
ICAgICAgIHN3aXRjaCAodHlwZSkKQEAgLTE0Miw3ICsxMzgsMTYgQEAgR0xlbnVtIEluZGV4RGF0
YU1hbmFnZXI6OnByZXBhcmVJbmRleERhdAogICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxF
KCk7IGFsaWduZWRPZmZzZXQgPSBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChpbmRl
eFR5cGVTaXplKHR5cGUpICogY291bnQgKyBvZmZzZXQgPiBzdG9yYWdlLT5nZXRTaXplKCkpCisg
ICAgICAgIHVuc2lnbmVkIGludCB0eXBlU2l6ZSA9IGdsOjpDb21wdXRlVHlwZVNpemUodHlwZSk7
CisKKyAgICAgICAgLy8gY2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3dzCisgICAgICAgIGlmIChz
dGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGNvdW50KSA+IChzdGQ6Om51bWVyaWNfbGltaXRzPHVu
c2lnbmVkIGludD46Om1heCgpIC8gdHlwZVNpemUpIHx8CisgICAgICAgICAgICB0eXBlU2l6ZSAq
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oY291bnQpICsgb2Zmc2V0IDwgb2Zmc2V0KQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gR0xfT1VUX09GX01FTU9SWTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmICh0eXBlU2l6ZSAqIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oY291bnQp
ICsgb2Zmc2V0ID4gc3RvcmFnZS0+Z2V0U2l6ZSgpKQogICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm4gR0xfSU5WQUxJRF9PUEVSQVRJT047CiAgICAgICAgIH0KQEAgLTE1NiwzNyArMTYxLDQ0
IEBAIEdMZW51bSBJbmRleERhdGFNYW5hZ2VyOjpwcmVwYXJlSW5kZXhEYXQKICAgICBJbmRleEJ1
ZmZlckludGVyZmFjZSAqaW5kZXhCdWZmZXIgPSBzdHJlYW1pbmdCdWZmZXI7CiAgICAgYm9vbCBk
aXJlY3RTdG9yYWdlID0gYWxpZ25lZE9mZnNldCAmJiBzdG9yYWdlICYmIHN0b3JhZ2UtPnN1cHBv
cnRzRGlyZWN0QmluZGluZygpICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRp
b25JbmRleFR5cGUgPT0gdHlwZTsKLSAgICBVSU5UIHN0cmVhbU9mZnNldCA9IDA7CisgICAgdW5z
aWduZWQgaW50IHN0cmVhbU9mZnNldCA9IDA7CiAKICAgICBpZiAoZGlyZWN0U3RvcmFnZSkKICAg
ICB7CiAgICAgICAgIGluZGV4QnVmZmVyID0gc3RyZWFtaW5nQnVmZmVyOwogICAgICAgICBzdHJl
YW1PZmZzZXQgPSBvZmZzZXQ7CiAgICAgICAgIHN0b3JhZ2UtPm1hcmtCdWZmZXJVc2FnZSgpOwot
ICAgICAgICBjb21wdXRlUmFuZ2UodHlwZSwgaW5kaWNlcywgY291bnQsICZ0cmFuc2xhdGVkLT5t
aW5JbmRleCwgJnRyYW5zbGF0ZWQtPm1heEluZGV4KTsKKworICAgICAgICBpZiAoIWJ1ZmZlci0+
Z2V0SW5kZXhSYW5nZUNhY2hlKCktPmZpbmRSYW5nZSh0eXBlLCBvZmZzZXQsIGNvdW50LCAmdHJh
bnNsYXRlZC0+bWluSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZ0cmFuc2xhdGVkLT5tYXhJbmRleCwgTlVMTCkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGNvbXB1dGVSYW5nZSh0eXBlLCBpbmRpY2VzLCBjb3VudCwgJnRyYW5zbGF0
ZWQtPm1pbkluZGV4LCAmdHJhbnNsYXRlZC0+bWF4SW5kZXgpOworICAgICAgICAgICAgYnVmZmVy
LT5nZXRJbmRleFJhbmdlQ2FjaGUoKS0+YWRkUmFuZ2UodHlwZSwgb2Zmc2V0LCBjb3VudCwgdHJh
bnNsYXRlZC0+bWluSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0cmFuc2xhdGVkLT5tYXhJbmRleCwgb2Zmc2V0KTsKKyAgICAgICAgfQog
ICAgIH0KICAgICBlbHNlIGlmIChzdGF0aWNCdWZmZXIgJiYgc3RhdGljQnVmZmVyLT5nZXRCdWZm
ZXJTaXplKCkgIT0gMCAmJiBzdGF0aWNCdWZmZXItPmdldEluZGV4VHlwZSgpID09IHR5cGUgJiYg
YWxpZ25lZE9mZnNldCkKICAgICB7CiAgICAgICAgIGluZGV4QnVmZmVyID0gc3RhdGljQnVmZmVy
OwotICAgICAgICBzdHJlYW1PZmZzZXQgPSBzdGF0aWNCdWZmZXItPmxvb2t1cFJhbmdlKG9mZnNl
dCwgY291bnQsICZ0cmFuc2xhdGVkLT5taW5JbmRleCwgJnRyYW5zbGF0ZWQtPm1heEluZGV4KTsK
LQotICAgICAgICBpZiAoc3RyZWFtT2Zmc2V0ID09IC0xKQorICAgICAgICBpZiAoIXN0YXRpY0J1
ZmZlci0+Z2V0SW5kZXhSYW5nZUNhY2hlKCktPmZpbmRSYW5nZSh0eXBlLCBvZmZzZXQsIGNvdW50
LCAmdHJhbnNsYXRlZC0+bWluSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cmFuc2xhdGVkLT5tYXhJbmRleCwgJnN0cmVh
bU9mZnNldCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0cmVhbU9mZnNldCA9IChvZmZzZXQg
LyBpbmRleFR5cGVTaXplKHR5cGUpKSAqIGluZGV4VHlwZVNpemUoZGVzdGluYXRpb25JbmRleFR5
cGUpOworICAgICAgICAgICAgc3RyZWFtT2Zmc2V0ID0gKG9mZnNldCAvIGdsOjpDb21wdXRlVHlw
ZVNpemUodHlwZSkpICogZ2w6OkNvbXB1dGVUeXBlU2l6ZShkZXN0aW5hdGlvbkluZGV4VHlwZSk7
CiAgICAgICAgICAgICBjb21wdXRlUmFuZ2UodHlwZSwgaW5kaWNlcywgY291bnQsICZ0cmFuc2xh
dGVkLT5taW5JbmRleCwgJnRyYW5zbGF0ZWQtPm1heEluZGV4KTsKLSAgICAgICAgICAgIHN0YXRp
Y0J1ZmZlci0+YWRkUmFuZ2Uob2Zmc2V0LCBjb3VudCwgdHJhbnNsYXRlZC0+bWluSW5kZXgsIHRy
YW5zbGF0ZWQtPm1heEluZGV4LCBzdHJlYW1PZmZzZXQpOworICAgICAgICAgICAgc3RhdGljQnVm
ZmVyLT5nZXRJbmRleFJhbmdlQ2FjaGUoKS0+YWRkUmFuZ2UodHlwZSwgb2Zmc2V0LCBjb3VudCwg
dHJhbnNsYXRlZC0+bWluSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVkLT5tYXhJbmRleCwgc3RyZWFtT2Zmc2V0
KTsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBpbnQgY29udmVy
dENvdW50ID0gY291bnQ7CisgICAgICAgIHVuc2lnbmVkIGludCBjb252ZXJ0Q291bnQgPSBjb3Vu
dDsKIAogICAgICAgICBpZiAoc3RhdGljQnVmZmVyKQogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAoc3RhdGljQnVmZmVyLT5nZXRCdWZmZXJTaXplKCkgPT0gMCAmJiBhbGlnbmVkT2Zmc2V0KQog
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGluZGV4QnVmZmVyID0gc3RhdGljQnVmZmVy
OwotICAgICAgICAgICAgICAgIGNvbnZlcnRDb3VudCA9IHN0b3JhZ2UtPmdldFNpemUoKSAvIGlu
ZGV4VHlwZVNpemUodHlwZSk7CisgICAgICAgICAgICAgICAgY29udmVydENvdW50ID0gc3RvcmFn
ZS0+Z2V0U2l6ZSgpIC8gZ2w6OkNvbXB1dGVUeXBlU2l6ZSh0eXBlKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKQEAgLTIwMSwxMiArMjEzLDIyIEBAIEdM
ZW51bSBJbmRleERhdGFNYW5hZ2VyOjpwcmVwYXJlSW5kZXhEYXQKICAgICAgICAgICAgIHJldHVy
biBHTF9JTlZBTElEX09QRVJBVElPTjsKICAgICAgICAgfQogCi0gICAgICAgIHVuc2lnbmVkIGlu
dCBidWZmZXJTaXplUmVxdWlyZWQgPSBjb252ZXJ0Q291bnQgKiBpbmRleFR5cGVTaXplKGRlc3Rp
bmF0aW9uSW5kZXhUeXBlKTsKLSAgICAgICAgaW5kZXhCdWZmZXItPnJlc2VydmVCdWZmZXJTcGFj
ZShidWZmZXJTaXplUmVxdWlyZWQsIHR5cGUpOworICAgICAgICB1bnNpZ25lZCBpbnQgaW5kZXhU
eXBlU2l6ZSA9IGdsOjpDb21wdXRlVHlwZVNpemUoZGVzdGluYXRpb25JbmRleFR5cGUpOworICAg
ICAgICBpZiAoY29udmVydENvdW50ID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBpbnQ+
OjptYXgoKSAvIGluZGV4VHlwZVNpemUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiUmVz
ZXJ2aW5nICV1IGluZGljaWVzIG9mICV1IGJ5dGVzIGVhY2ggZXhjZWVkcyB0aGUgbWF4aW11bSBi
dWZmZXIgc2l6ZS4iLCBjb252ZXJ0Q291bnQsIGluZGV4VHlwZVNpemUpOworICAgICAgICAgICAg
cmV0dXJuIEdMX09VVF9PRl9NRU1PUlk7CisgICAgICAgIH0KKworICAgICAgICB1bnNpZ25lZCBp
bnQgYnVmZmVyU2l6ZVJlcXVpcmVkID0gY29udmVydENvdW50ICogaW5kZXhUeXBlU2l6ZTsKKyAg
ICAgICAgaWYgKCFpbmRleEJ1ZmZlci0+cmVzZXJ2ZUJ1ZmZlclNwYWNlKGJ1ZmZlclNpemVSZXF1
aXJlZCwgdHlwZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiRmFpbGVkIHRvIHJlc2Vy
dmUgJXUgYnl0ZXMgaW4gYW4gaW5kZXggYnVmZmVyLiIsIGJ1ZmZlclNpemVSZXF1aXJlZCk7Cisg
ICAgICAgICAgICByZXR1cm4gR0xfT1VUX09GX01FTU9SWTsKKyAgICAgICAgfQogCiAgICAgICAg
IHZvaWQqIG91dHB1dCA9IE5VTEw7Ci0gICAgICAgIHN0cmVhbU9mZnNldCA9IGluZGV4QnVmZmVy
LT5tYXBCdWZmZXIoYnVmZmVyU2l6ZVJlcXVpcmVkLCAmb3V0cHV0KTsKLSAgICAgICAgaWYgKHN0
cmVhbU9mZnNldCA9PSAtMSB8fCBvdXRwdXQgPT0gTlVMTCkKKyAgICAgICAgaWYgKCFpbmRleEJ1
ZmZlci0+bWFwQnVmZmVyKGJ1ZmZlclNpemVSZXF1aXJlZCwgJm91dHB1dCwgJnN0cmVhbU9mZnNl
dCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIEVSUigiRmFpbGVkIHRvIG1hcCBpbmRleCBidWZm
ZXIuIik7CiAgICAgICAgICAgICByZXR1cm4gR0xfT1VUX09GX01FTU9SWTsKQEAgLTIyNCwyMCAr
MjQ2LDIxIEBAIEdMZW51bSBJbmRleERhdGFNYW5hZ2VyOjpwcmVwYXJlSW5kZXhEYXQKIAogICAg
ICAgICBpZiAoc3RhdGljQnVmZmVyKQogICAgICAgICB7Ci0gICAgICAgICAgICBzdHJlYW1PZmZz
ZXQgPSAob2Zmc2V0IC8gaW5kZXhUeXBlU2l6ZSh0eXBlKSkgKiBpbmRleFR5cGVTaXplKGRlc3Rp
bmF0aW9uSW5kZXhUeXBlKTsKLSAgICAgICAgICAgIHN0YXRpY0J1ZmZlci0+YWRkUmFuZ2Uob2Zm
c2V0LCBjb3VudCwgdHJhbnNsYXRlZC0+bWluSW5kZXgsIHRyYW5zbGF0ZWQtPm1heEluZGV4LCBz
dHJlYW1PZmZzZXQpOworICAgICAgICAgICAgc3RyZWFtT2Zmc2V0ID0gKG9mZnNldCAvIGdsOjpD
b21wdXRlVHlwZVNpemUodHlwZSkpICogZ2w6OkNvbXB1dGVUeXBlU2l6ZShkZXN0aW5hdGlvbklu
ZGV4VHlwZSk7CisgICAgICAgICAgICBzdGF0aWNCdWZmZXItPmdldEluZGV4UmFuZ2VDYWNoZSgp
LT5hZGRSYW5nZSh0eXBlLCBvZmZzZXQsIGNvdW50LCB0cmFuc2xhdGVkLT5taW5JbmRleCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRy
YW5zbGF0ZWQtPm1heEluZGV4LCBzdHJlYW1PZmZzZXQpOwogICAgICAgICB9CiAgICAgfQogCiAg
ICAgdHJhbnNsYXRlZC0+c3RvcmFnZSA9IGRpcmVjdFN0b3JhZ2UgPyBzdG9yYWdlIDogTlVMTDsK
ICAgICB0cmFuc2xhdGVkLT5pbmRleEJ1ZmZlciA9IGluZGV4QnVmZmVyLT5nZXRJbmRleEJ1ZmZl
cigpOwogICAgIHRyYW5zbGF0ZWQtPnNlcmlhbCA9IGRpcmVjdFN0b3JhZ2UgPyBzdG9yYWdlLT5n
ZXRTZXJpYWwoKSA6IGluZGV4QnVmZmVyLT5nZXRTZXJpYWwoKTsKLSAgICB0cmFuc2xhdGVkLT5z
dGFydEluZGV4ID0gc3RyZWFtT2Zmc2V0IC8gaW5kZXhUeXBlU2l6ZShkZXN0aW5hdGlvbkluZGV4
VHlwZSk7CisgICAgdHJhbnNsYXRlZC0+c3RhcnRJbmRleCA9IHN0cmVhbU9mZnNldCAvIGdsOjpD
b21wdXRlVHlwZVNpemUoZGVzdGluYXRpb25JbmRleFR5cGUpOwogICAgIHRyYW5zbGF0ZWQtPnN0
YXJ0T2Zmc2V0ID0gc3RyZWFtT2Zmc2V0OwogCiAgICAgaWYgKGJ1ZmZlcikKICAgICB7Ci0gICAg
ICAgIGJ1ZmZlci0+cHJvbW90ZVN0YXRpY1VzYWdlKGNvdW50ICogaW5kZXhUeXBlU2l6ZSh0eXBl
KSk7CisgICAgICAgIGJ1ZmZlci0+cHJvbW90ZVN0YXRpY1VzYWdlKGNvdW50ICogZ2w6OkNvbXB1
dGVUeXBlU2l6ZSh0eXBlKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIEdMX05PX0VSUk9SOwpAQCAt
MjU2LDcgKzI3OSw3IEBAIFN0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNlICpJbmRleERhdGFNYW4K
ICAgICAgICAgICAgIG1Db3VudGluZ0J1ZmZlci0+cmVzZXJ2ZUJ1ZmZlclNwYWNlKHNwYWNlTmVl
ZGVkLCBHTF9VTlNJR05FRF9TSE9SVCk7CiAKICAgICAgICAgICAgIHZvaWQqIG1hcHBlZE1lbW9y
eSA9IE5VTEw7Ci0gICAgICAgICAgICBpZiAobUNvdW50aW5nQnVmZmVyLT5tYXBCdWZmZXIoc3Bh
Y2VOZWVkZWQsICZtYXBwZWRNZW1vcnkpID09IC0xIHx8IG1hcHBlZE1lbW9yeSA9PSBOVUxMKQor
ICAgICAgICAgICAgaWYgKCFtQ291bnRpbmdCdWZmZXItPm1hcEJ1ZmZlcihzcGFjZU5lZWRlZCwg
Jm1hcHBlZE1lbW9yeSwgTlVMTCkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgRVJS
KCJGYWlsZWQgdG8gbWFwIGNvdW50aW5nIGJ1ZmZlci4iKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gTlVMTDsKQEAgLTI4Niw3ICszMDksNyBAQCBTdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZSAq
SW5kZXhEYXRhTWFuCiAgICAgICAgICAgICBtQ291bnRpbmdCdWZmZXItPnJlc2VydmVCdWZmZXJT
cGFjZShzcGFjZU5lZWRlZCwgR0xfVU5TSUdORURfSU5UKTsKIAogICAgICAgICAgICAgdm9pZCog
bWFwcGVkTWVtb3J5ID0gTlVMTDsKLSAgICAgICAgICAgIGlmIChtQ291bnRpbmdCdWZmZXItPm1h
cEJ1ZmZlcihzcGFjZU5lZWRlZCwgJm1hcHBlZE1lbW9yeSkgPT0gLTEgfHwgbWFwcGVkTWVtb3J5
ID09IE5VTEwpCisgICAgICAgICAgICBpZiAoIW1Db3VudGluZ0J1ZmZlci0+bWFwQnVmZmVyKHNw
YWNlTmVlZGVkLCAmbWFwcGVkTWVtb3J5LCBOVUxMKSkKICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICBFUlIoIkZhaWxlZCB0byBtYXAgY291bnRpbmcgYnVmZmVyLiIpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBOVUxMOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9JbmRleFJhbmdlQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhSYW5nZUNhY2hl
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvcmVuZGVyZXIvSW5kZXhSYW5nZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDk3IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIw
MTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBJbmRl
eFJhbmdlQ2FjaGUuY3BwOiBEZWZpbmVzIHRoZSByeDo6SW5kZXhSYW5nZUNhY2hlIGNsYXNzIHdo
aWNoIHN0b3JlcyBpbmZvcm1hdGlvbiBhYm91dAorLy8gcmFuZ2VzIG9mIGluZGljZXMuCisKKyNp
bmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhSYW5nZUNhY2hlLmgiCisjaW5jbHVkZSAi
Y29tbW9uL2RlYnVnLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3V0aWxpdGllcy5oIgorI2luY2x1
ZGUgPHR1cGxlPgorCituYW1lc3BhY2UgcngKK3sKKwordm9pZCBJbmRleFJhbmdlQ2FjaGU6OmFk
ZFJhbmdlKEdMZW51bSB0eXBlLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBHTHNpemVpIGNvdW50LCB1
bnNpZ25lZCBpbnQgbWluSWR4LCB1bnNpZ25lZCBpbnQgbWF4SWR4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzdHJlYW1PZmZzZXQpCit7CisgICAgbUluZGV4
UmFuZ2VDYWNoZVtJbmRleFJhbmdlKHR5cGUsIG9mZnNldCwgY291bnQpXSA9IEluZGV4Qm91bmRz
KG1pbklkeCwgbWF4SWR4LCBzdHJlYW1PZmZzZXQpOworfQorCit2b2lkIEluZGV4UmFuZ2VDYWNo
ZTo6aW52YWxpZGF0ZVJhbmdlKHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBzaXpl
KQoreworICAgIHVuc2lnbmVkIGludCBpbnZhbGlkYXRlU3RhcnQgPSBvZmZzZXQ7CisgICAgdW5z
aWduZWQgaW50IGludmFsaWRhdGVFbmQgPSBvZmZzZXQgKyBzaXplOworCisgICAgSW5kZXhSYW5n
ZU1hcDo6aXRlcmF0b3IgaSA9IG1JbmRleFJhbmdlQ2FjaGUuYmVnaW4oKTsKKyAgICB3aGlsZSAo
aSAhPSBtSW5kZXhSYW5nZUNhY2hlLmVuZCgpKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50
IHJhbmdlU3RhcnQgPSBpLT5zZWNvbmQuc3RyZWFtT2Zmc2V0OworICAgICAgICB1bnNpZ25lZCBp
bnQgcmFuZ2VFbmQgPSBpLT5zZWNvbmQuc3RyZWFtT2Zmc2V0ICsgKGdsOjpDb21wdXRlVHlwZVNp
emUoaS0+Zmlyc3QudHlwZSkgKiBpLT5maXJzdC5jb3VudCk7CisKKyAgICAgICAgaWYgKGludmFs
aWRhdGVFbmQgPCByYW5nZVN0YXJ0IHx8IGludmFsaWRhdGVTdGFydCA+IHJhbmdlRW5kKQorICAg
ICAgICB7CisgICAgICAgICAgICArK2k7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAg
ICB7CisgICAgICAgICAgICBpID0gbUluZGV4UmFuZ2VDYWNoZS5lcmFzZShpKTsKKyAgICAgICAg
fQorICAgIH0KK30KKworYm9vbCBJbmRleFJhbmdlQ2FjaGU6OmZpbmRSYW5nZShHTGVudW0gdHlw
ZSwgdW5zaWduZWQgaW50IG9mZnNldCwgR0xzaXplaSBjb3VudCwgdW5zaWduZWQgaW50ICpvdXRN
aW5JbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpv
dXRNYXhJbmRleCwgdW5zaWduZWQgaW50ICpvdXRTdHJlYW1PZmZzZXQpIGNvbnN0Cit7CisgICAg
SW5kZXhSYW5nZU1hcDo6Y29uc3RfaXRlcmF0b3IgaSA9IG1JbmRleFJhbmdlQ2FjaGUuZmluZChJ
bmRleFJhbmdlKHR5cGUsIG9mZnNldCwgY291bnQpKTsKKyAgICBpZiAoaSAhPSBtSW5kZXhSYW5n
ZUNhY2hlLmVuZCgpKQorICAgIHsKKyAgICAgICAgaWYgKG91dE1pbkluZGV4KSAgICAgKm91dE1p
bkluZGV4ID0gaS0+c2Vjb25kLm1pbkluZGV4OworICAgICAgICBpZiAob3V0TWF4SW5kZXgpICAg
ICAqb3V0TWF4SW5kZXggPSBpLT5zZWNvbmQubWF4SW5kZXg7CisgICAgICAgIGlmIChvdXRTdHJl
YW1PZmZzZXQpICpvdXRTdHJlYW1PZmZzZXQgPSBpLT5zZWNvbmQuc3RyZWFtT2Zmc2V0OworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaWYgKG91
dE1pbkluZGV4KSAgICAgKm91dE1pbkluZGV4ID0gMDsKKyAgICAgICAgaWYgKG91dE1heEluZGV4
KSAgICAgKm91dE1heEluZGV4ID0gMDsKKyAgICAgICAgaWYgKG91dFN0cmVhbU9mZnNldCkgKm91
dFN0cmVhbU9mZnNldCA9IDA7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3Zv
aWQgSW5kZXhSYW5nZUNhY2hlOjpjbGVhcigpCit7CisgICAgbUluZGV4UmFuZ2VDYWNoZS5jbGVh
cigpOworfQorCitJbmRleFJhbmdlQ2FjaGU6OkluZGV4UmFuZ2U6OkluZGV4UmFuZ2UoKQorICAg
IDogdHlwZShHTF9OT05FKSwgb2Zmc2V0KDApLCBjb3VudCgwKQoreworfQorCitJbmRleFJhbmdl
Q2FjaGU6OkluZGV4UmFuZ2U6OkluZGV4UmFuZ2UoR0xlbnVtIHR5cCwgaW50cHRyX3Qgb2ZmLCBH
THNpemVpIGMpCisgICAgOiB0eXBlKHR5cCksIG9mZnNldChvZmYpLCBjb3VudChjKQoreworfQor
Citib29sIEluZGV4UmFuZ2VDYWNoZTo6SW5kZXhSYW5nZTo6b3BlcmF0b3I8KGNvbnN0IEluZGV4
UmFuZ2UmIHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKHR5cGUsIG9m
ZnNldCwgY291bnQpIDwgc3RkOjptYWtlX3R1cGxlKHJocy50eXBlLCByaHMub2Zmc2V0LCByaHMu
Y291bnQpOworfQorCitJbmRleFJhbmdlQ2FjaGU6OkluZGV4Qm91bmRzOjpJbmRleEJvdW5kcygp
CisgICAgOiBtaW5JbmRleCgwKSwgbWF4SW5kZXgoMCksIHN0cmVhbU9mZnNldCgwKQoreworfQor
CitJbmRleFJhbmdlQ2FjaGU6OkluZGV4Qm91bmRzOjpJbmRleEJvdW5kcyh1bnNpZ25lZCBpbnQg
bWluSWR4LCB1bnNpZ25lZCBpbnQgbWF4SWR4LCB1bnNpZ25lZCBpbnQgb2Zmc2V0KQorICAgIDog
bWluSW5kZXgobWluSWR4KSwgbWF4SW5kZXgobWF4SWR4KSwgc3RyZWFtT2Zmc2V0KG9mZnNldCkK
K3sKK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9JbmRleFJhbmdlQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4UmFuZ2VDYWNoZS5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9J
bmRleFJhbmdlQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU4IEBACisvLworLy8g
Q29weXJpZ2h0IChjKSAyMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKworLy8gSW5kZXhSYW5nZUNhY2hlLmg6IERlZmluZXMgdGhlIHJ4OjpJbmRleFJhbmdl
Q2FjaGUgY2xhc3Mgd2hpY2ggc3RvcmVzIGluZm9ybWF0aW9uIGFib3V0CisvLyByYW5nZXMgb2Yg
aW5kaWNlcy4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfSU5ERVhSQU5HRUNBQ0hFX0hf
CisjZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJFUl9JTkRFWFJBTkdFQ0FDSEVfSF8KKworI2luY2x1
ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBJbmRl
eFJhbmdlQ2FjaGUKK3sKKyAgcHVibGljOgorICAgIHZvaWQgYWRkUmFuZ2UoR0xlbnVtIHR5cGUs
IHVuc2lnbmVkIGludCBvZmZzZXQsIEdMc2l6ZWkgY291bnQsIHVuc2lnbmVkIGludCBtaW5JZHgs
IHVuc2lnbmVkIGludCBtYXhJZHgsCisgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc3Ry
ZWFtT2Zmc2V0KTsKKyAgICBib29sIGZpbmRSYW5nZShHTGVudW0gdHlwZSwgdW5zaWduZWQgaW50
IG9mZnNldCwgR0xzaXplaSBjb3VudCwgdW5zaWduZWQgaW50ICpvdXRNaW5JbmRleCwKKyAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKm91dE1heEluZGV4LCB1bnNpZ25lZCBpbnQgKm91
dFN0cmVhbU9mZnNldCkgY29uc3Q7CisKKyAgICB2b2lkIGludmFsaWRhdGVSYW5nZSh1bnNpZ25l
ZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgc2l6ZSk7CisgICAgdm9pZCBjbGVhcigpOworCisg
IHByaXZhdGU6CisgICAgc3RydWN0IEluZGV4UmFuZ2UKKyAgICB7CisgICAgICAgIEdMZW51bSB0
eXBlOworICAgICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0OworICAgICAgICBHTHNpemVpIGNvdW50
OworCisgICAgICAgIEluZGV4UmFuZ2UoKTsKKyAgICAgICAgSW5kZXhSYW5nZShHTGVudW0gdHlw
ZSwgaW50cHRyX3Qgb2Zmc2V0LCBHTHNpemVpIGNvdW50KTsKKworICAgICAgICBib29sIG9wZXJh
dG9yPChjb25zdCBJbmRleFJhbmdlJiByaHMpIGNvbnN0OworICAgIH07CisKKyAgICBzdHJ1Y3Qg
SW5kZXhCb3VuZHMKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGludCBtaW5JbmRleDsKKyAgICAg
ICAgdW5zaWduZWQgaW50IG1heEluZGV4OworICAgICAgICB1bnNpZ25lZCBpbnQgc3RyZWFtT2Zm
c2V0OworCisgICAgICAgIEluZGV4Qm91bmRzKCk7CisgICAgICAgIEluZGV4Qm91bmRzKHVuc2ln
bmVkIGludCBtaW5JZHgsIHVuc2lnbmVkIGludCBtYXhJZHgsIHVuc2lnbmVkIGludCBvZmZzZXQp
OworICAgIH07CisKKyAgICB0eXBlZGVmIHN0ZDo6bWFwPEluZGV4UmFuZ2UsIEluZGV4Qm91bmRz
PiBJbmRleFJhbmdlTWFwOworICAgIEluZGV4UmFuZ2VNYXAgbUluZGV4UmFuZ2VDYWNoZTsKK307
CisKK30KKworI2VuZGlmIExJQkdMRVNWMl9SRU5ERVJFUl9JTkRFWFJBTkdFQ0FDSEVfSApJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbnB1dExh
eW91dENhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3JlbmRlcmVyL0lucHV0TGF5b3V0Q2FjaGUuY3BwCShyZXZpc2lvbiAxNTk1MzIp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0lucHV0
TGF5b3V0Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCwxMyBAQCBJbnB1dExh
eW91dENhY2hlOjpJbnB1dExheW91dENhY2hlKCkgOiBtCiAgICAgbUNvdW50ZXIgPSAwOwogICAg
IG1EZXZpY2UgPSBOVUxMOwogICAgIG1EZXZpY2VDb250ZXh0ID0gTlVMTDsKKyAgICBtQ3VycmVu
dElMID0gTlVMTDsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGdsOjpNQVhfVkVS
VEVYX0FUVFJJQlM7IGkrKykKKyAgICB7CisgICAgICAgIG1DdXJyZW50QnVmZmVyc1tpXSA9IC0x
OworICAgICAgICBtQ3VycmVudFZlcnRleFN0cmlkZXNbaV0gPSAtMTsKKyAgICAgICAgbUN1cnJl
bnRWZXJ0ZXhPZmZzZXRzW2ldID0gLTE7CisgICAgfQogfQogCiBJbnB1dExheW91dENhY2hlOjp+
SW5wdXRMYXlvdXRDYWNoZSgpCkBAIC00OSw2ICs1NiwxOCBAQCB2b2lkIElucHV0TGF5b3V0Q2Fj
aGU6OmNsZWFyKCkKICAgICAgICAgaS0+c2Vjb25kLmlucHV0TGF5b3V0LT5SZWxlYXNlKCk7CiAg
ICAgfQogICAgIG1JbnB1dExheW91dE1hcC5jbGVhcigpOworICAgIG1hcmtEaXJ0eSgpOworfQor
Cit2b2lkIElucHV0TGF5b3V0Q2FjaGU6Om1hcmtEaXJ0eSgpCit7CisgICAgbUN1cnJlbnRJTCA9
IE5VTEw7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBnbDo6TUFYX1ZFUlRFWF9B
VFRSSUJTOyBpKyspCisgICAgeworICAgICAgICBtQ3VycmVudEJ1ZmZlcnNbaV0gPSAtMTsKKyAg
ICAgICAgbUN1cnJlbnRWZXJ0ZXhTdHJpZGVzW2ldID0gLTE7CisgICAgICAgIG1DdXJyZW50VmVy
dGV4T2Zmc2V0c1tpXSA9IC0xOworICAgIH0KIH0KIAogR0xlbnVtIElucHV0TGF5b3V0Q2FjaGU6
OmFwcGx5VmVydGV4QnVmZmVycyhUcmFuc2xhdGVkQXR0cmlidXRlIGF0dHJpYnV0ZXNbZ2w6Ok1B
WF9WRVJURVhfQVRUUklCU10sCkBAIC02Niw2ICs4NSw3IEBAIEdMZW51bSBJbnB1dExheW91dENh
Y2hlOjphcHBseVZlcnRleEJ1ZmYKICAgICBJbnB1dExheW91dEtleSBpbEtleSA9IHsgMCB9Owog
CiAgICAgSUQzRDExQnVmZmVyICp2ZXJ0ZXhCdWZmZXJzW2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNd
ID0geyBOVUxMIH07CisgICAgdW5zaWduZWQgaW50IHZlcnRleEJ1ZmZlclNlcmlhbHNbZ2w6Ok1B
WF9WRVJURVhfQVRUUklCU10gPSB7IDAgfTsKICAgICBVSU5UIHZlcnRleFN0cmlkZXNbZ2w6Ok1B
WF9WRVJURVhfQVRUUklCU10gPSB7IDAgfTsKICAgICBVSU5UIHZlcnRleE9mZnNldHNbZ2w6Ok1B
WF9WRVJURVhfQVRUUklCU10gPSB7IDAgfTsKIApAQCAtODMsMTggKzEwMywxOSBAQCBHTGVudW0g
SW5wdXRMYXlvdXRDYWNoZTo6YXBwbHlWZXJ0ZXhCdWZmCiAgICAgICAgICAgICAvLyBSZWNvcmQg
dGhlIHR5cGUgb2YgdGhlIGFzc29jaWF0ZWQgdmVydGV4IHNoYWRlciB2ZWN0b3IgaW4gb3VyIGtl
eQogICAgICAgICAgICAgLy8gVGhpcyB3aWxsIHByZXZlbnQgbWlzbWF0Y2hlZCB2ZXJ0ZXggc2hh
ZGVycyBmcm9tIHVzaW5nIHRoZSBzYW1lIGlucHV0IGxheW91dAogICAgICAgICAgICAgR0xpbnQg
YXR0cmlidXRlU2l6ZTsKLSAgICAgICAgICAgIHByb2dyYW1CaW5hcnktPmdldEFjdGl2ZUF0dHJp
YnV0ZShpbEtleS5lbGVtZW50Q291bnQsIDAsIE5VTEwsICZhdHRyaWJ1dGVTaXplLCAmaWxLZXku
Z2xzbEVsZW1lbnRUeXBlW2lsS2V5LmVsZW1lbnRDb3VudF0sIE5VTEwpOworICAgICAgICAgICAg
cHJvZ3JhbUJpbmFyeS0+Z2V0QWN0aXZlQXR0cmlidXRlKGlsS2V5LmVsZW1lbnRDb3VudCwgMCwg
TlVMTCwgJmF0dHJpYnV0ZVNpemUsICZpbEtleS5lbGVtZW50c1tpbEtleS5lbGVtZW50Q291bnRd
Lmdsc2xFbGVtZW50VHlwZSwgTlVMTCk7CiAKLSAgICAgICAgICAgIGlsS2V5LmVsZW1lbnRzW2ls
S2V5LmVsZW1lbnRDb3VudF0uU2VtYW50aWNOYW1lID0gc2VtYW50aWNOYW1lOwotICAgICAgICAg
ICAgaWxLZXkuZWxlbWVudHNbaWxLZXkuZWxlbWVudENvdW50XS5TZW1hbnRpY0luZGV4ID0gc29y
dGVkU2VtYW50aWNJbmRpY2VzW2ldOwotICAgICAgICAgICAgaWxLZXkuZWxlbWVudHNbaWxLZXku
ZWxlbWVudENvdW50XS5Gb3JtYXQgPSBhdHRyaWJ1dGVzW2ldLmF0dHJpYnV0ZS0+bUFycmF5RW5h
YmxlZCA/IHZlcnRleEJ1ZmZlci0+Z2V0RFhHSUZvcm1hdCgqYXR0cmlidXRlc1tpXS5hdHRyaWJ1
dGUpIDogRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUOwotICAgICAgICAgICAgaWxLZXku
ZWxlbWVudHNbaWxLZXkuZWxlbWVudENvdW50XS5JbnB1dFNsb3QgPSBpOwotICAgICAgICAgICAg
aWxLZXkuZWxlbWVudHNbaWxLZXkuZWxlbWVudENvdW50XS5BbGlnbmVkQnl0ZU9mZnNldCA9IDA7
Ci0gICAgICAgICAgICBpbEtleS5lbGVtZW50c1tpbEtleS5lbGVtZW50Q291bnRdLklucHV0U2xv
dENsYXNzID0gaW5wdXRDbGFzczsKLSAgICAgICAgICAgIGlsS2V5LmVsZW1lbnRzW2lsS2V5LmVs
ZW1lbnRDb3VudF0uSW5zdGFuY2VEYXRhU3RlcFJhdGUgPSBhdHRyaWJ1dGVzW2ldLmRpdmlzb3I7
CisgICAgICAgICAgICBpbEtleS5lbGVtZW50c1tpbEtleS5lbGVtZW50Q291bnRdLmRlc2MuU2Vt
YW50aWNOYW1lID0gc2VtYW50aWNOYW1lOworICAgICAgICAgICAgaWxLZXkuZWxlbWVudHNbaWxL
ZXkuZWxlbWVudENvdW50XS5kZXNjLlNlbWFudGljSW5kZXggPSBzb3J0ZWRTZW1hbnRpY0luZGlj
ZXNbaV07CisgICAgICAgICAgICBpbEtleS5lbGVtZW50c1tpbEtleS5lbGVtZW50Q291bnRdLmRl
c2MuRm9ybWF0ID0gYXR0cmlidXRlc1tpXS5hdHRyaWJ1dGUtPm1BcnJheUVuYWJsZWQgPyB2ZXJ0
ZXhCdWZmZXItPmdldERYR0lGb3JtYXQoKmF0dHJpYnV0ZXNbaV0uYXR0cmlidXRlKSA6IERYR0lf
Rk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVDsKKyAgICAgICAgICAgIGlsS2V5LmVsZW1lbnRzW2ls
S2V5LmVsZW1lbnRDb3VudF0uZGVzYy5JbnB1dFNsb3QgPSBpOworICAgICAgICAgICAgaWxLZXku
ZWxlbWVudHNbaWxLZXkuZWxlbWVudENvdW50XS5kZXNjLkFsaWduZWRCeXRlT2Zmc2V0ID0gMDsK
KyAgICAgICAgICAgIGlsS2V5LmVsZW1lbnRzW2lsS2V5LmVsZW1lbnRDb3VudF0uZGVzYy5JbnB1
dFNsb3RDbGFzcyA9IGlucHV0Q2xhc3M7CisgICAgICAgICAgICBpbEtleS5lbGVtZW50c1tpbEtl
eS5lbGVtZW50Q291bnRdLmRlc2MuSW5zdGFuY2VEYXRhU3RlcFJhdGUgPSBhdHRyaWJ1dGVzW2ld
LmRpdmlzb3I7CiAgICAgICAgICAgICBpbEtleS5lbGVtZW50Q291bnQrKzsKIAogICAgICAgICAg
ICAgdmVydGV4QnVmZmVyc1tpXSA9IGJ1ZmZlclN0b3JhZ2UgPyBidWZmZXJTdG9yYWdlLT5nZXRC
dWZmZXIoKSA6IHZlcnRleEJ1ZmZlci0+Z2V0QnVmZmVyKCk7CisgICAgICAgICAgICB2ZXJ0ZXhC
dWZmZXJTZXJpYWxzW2ldID0gYnVmZmVyU3RvcmFnZSA/IGJ1ZmZlclN0b3JhZ2UtPmdldFNlcmlh
bCgpIDogdmVydGV4QnVmZmVyLT5nZXRTZXJpYWwoKTsKICAgICAgICAgICAgIHZlcnRleFN0cmlk
ZXNbaV0gPSBhdHRyaWJ1dGVzW2ldLnN0cmlkZTsKICAgICAgICAgICAgIHZlcnRleE9mZnNldHNb
aV0gPSBhdHRyaWJ1dGVzW2ldLm9mZnNldDsKICAgICAgICAgfQpAQCAtMTEyLDcgKzEzMywxMyBA
QCBHTGVudW0gSW5wdXRMYXlvdXRDYWNoZTo6YXBwbHlWZXJ0ZXhCdWZmCiAgICAgewogICAgICAg
ICBTaGFkZXJFeGVjdXRhYmxlMTEgKnNoYWRlciA9IFNoYWRlckV4ZWN1dGFibGUxMTo6bWFrZVNo
YWRlckV4ZWN1dGFibGUxMShwcm9ncmFtQmluYXJ5LT5nZXRWZXJ0ZXhFeGVjdXRhYmxlKCkpOwog
Ci0gICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlSW5wdXRMYXlvdXQoaWxL
ZXkuZWxlbWVudHMsIGlsS2V5LmVsZW1lbnRDb3VudCwgc2hhZGVyLT5nZXRGdW5jdGlvbigpLCBz
aGFkZXItPmdldExlbmd0aCgpLCAmaW5wdXRMYXlvdXQpOworICAgICAgICBEM0QxMV9JTlBVVF9F
TEVNRU5UX0RFU0MgZGVzY3NbZ2w6Ok1BWF9WRVJURVhfQVRUUklCU107CisgICAgICAgIGZvciAo
dW5zaWduZWQgaW50IGogPSAwOyBqIDwgaWxLZXkuZWxlbWVudENvdW50OyArK2opCisgICAgICAg
IHsKKyAgICAgICAgICAgIGRlc2NzW2pdID0gaWxLZXkuZWxlbWVudHNbal0uZGVzYzsKKyAgICAg
ICAgfQorCisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlSW5wdXRMYXlv
dXQoZGVzY3MsIGlsS2V5LmVsZW1lbnRDb3VudCwgc2hhZGVyLT5nZXRGdW5jdGlvbigpLCBzaGFk
ZXItPmdldExlbmd0aCgpLCAmaW5wdXRMYXlvdXQpOwogICAgICAgICBpZiAoRkFJTEVEKHJlc3Vs
dCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIEVSUigiRmFpbGVkIHRvIGNyYXRlIGlucHV0IGxh
eW91dCwgcmVzdWx0OiAweCUwOHgiLCByZXN1bHQpOwpAQCAtMTQzLDggKzE3MCwyMyBAQCBHTGVu
dW0gSW5wdXRMYXlvdXRDYWNoZTo6YXBwbHlWZXJ0ZXhCdWZmCiAgICAgICAgIG1JbnB1dExheW91
dE1hcC5pbnNlcnQoc3RkOjptYWtlX3BhaXIoaWxLZXksIGlucHV0Q291bnRlclBhaXIpKTsKICAg
ICB9CiAKLSAgICBtRGV2aWNlQ29udGV4dC0+SUFTZXRJbnB1dExheW91dChpbnB1dExheW91dCk7
Ci0gICAgbURldmljZUNvbnRleHQtPklBU2V0VmVydGV4QnVmZmVycygwLCBnbDo6TUFYX1ZFUlRF
WF9BVFRSSUJTLCB2ZXJ0ZXhCdWZmZXJzLCB2ZXJ0ZXhTdHJpZGVzLCB2ZXJ0ZXhPZmZzZXRzKTsK
KyAgICBpZiAoaW5wdXRMYXlvdXQgIT0gbUN1cnJlbnRJTCkKKyAgICB7CisgICAgICAgIG1EZXZp
Y2VDb250ZXh0LT5JQVNldElucHV0TGF5b3V0KGlucHV0TGF5b3V0KTsKKyAgICAgICAgbUN1cnJl
bnRJTCA9IGlucHV0TGF5b3V0OworICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw
OyBpIDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsgaSsrKQorICAgIHsKKyAgICAgICAgaWYgKHZl
cnRleEJ1ZmZlclNlcmlhbHNbaV0gIT0gbUN1cnJlbnRCdWZmZXJzW2ldIHx8IHZlcnRleFN0cmlk
ZXNbaV0gIT0gbUN1cnJlbnRWZXJ0ZXhTdHJpZGVzW2ldIHx8CisgICAgICAgICAgICB2ZXJ0ZXhP
ZmZzZXRzW2ldICE9IG1DdXJyZW50VmVydGV4T2Zmc2V0c1tpXSkKKyAgICAgICAgeworICAgICAg
ICAgICAgbURldmljZUNvbnRleHQtPklBU2V0VmVydGV4QnVmZmVycyhpLCAxLCAmdmVydGV4QnVm
ZmVyc1tpXSwgJnZlcnRleFN0cmlkZXNbaV0sICZ2ZXJ0ZXhPZmZzZXRzW2ldKTsKKyAgICAgICAg
ICAgIG1DdXJyZW50QnVmZmVyc1tpXSA9IHZlcnRleEJ1ZmZlclNlcmlhbHNbaV07CisgICAgICAg
ICAgICBtQ3VycmVudFZlcnRleFN0cmlkZXNbaV0gPSB2ZXJ0ZXhTdHJpZGVzW2ldOworICAgICAg
ICAgICAgbUN1cnJlbnRWZXJ0ZXhPZmZzZXRzW2ldID0gdmVydGV4T2Zmc2V0c1tpXTsKKyAgICAg
ICAgfQorICAgIH0KIAogICAgIHJldHVybiBHTF9OT19FUlJPUjsKIH0KQEAgLTE1NCwxMyArMTk2
LDE4IEBAIHN0ZDo6c2l6ZV90IElucHV0TGF5b3V0Q2FjaGU6Omhhc2hJbnB1dEwKICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgaW50IHNlZWQgPSAweERFQURCRUVGOwogCiAgICAgc3RkOjpzaXpl
X3QgaGFzaCA9IDA7Ci0gICAgTXVybXVySGFzaDNfeDg2XzMyKCZpbnB1dExheW91dCwgc2l6ZW9m
KElucHV0TGF5b3V0S2V5KSwgc2VlZCwgJmhhc2gpOworICAgIE11cm11ckhhc2gzX3g4Nl8zMihp
bnB1dExheW91dC5iZWdpbigpLCBpbnB1dExheW91dC5lbmQoKSAtIGlucHV0TGF5b3V0LmJlZ2lu
KCksIHNlZWQsICZoYXNoKTsKICAgICByZXR1cm4gaGFzaDsKIH0KIAogYm9vbCBJbnB1dExheW91
dENhY2hlOjpjb21wYXJlSW5wdXRMYXlvdXRzKGNvbnN0IElucHV0TGF5b3V0S2V5ICZhLCBjb25z
dCBJbnB1dExheW91dEtleSAmYikKIHsKLSAgICByZXR1cm4gbWVtY21wKCZhLCAmYiwgc2l6ZW9m
KElucHV0TGF5b3V0S2V5KSkgPT0gMDsKKyAgICBpZiAoYS5lbGVtZW50Q291bnQgIT0gYi5lbGVt
ZW50Q291bnQpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0
dXJuIHN0ZDo6ZXF1YWwoYS5iZWdpbigpLCBhLmVuZCgpLCBiLmJlZ2luKCkpOwogfQogCiB9Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0lucHV0
TGF5b3V0Q2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3JlbmRlcmVyL0lucHV0TGF5b3V0Q2FjaGUuaAkocmV2aXNpb24gMTU5NTMyKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbnB1dExh
eW91dENhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAgY2xhc3MgSW5wdXRM
YXlvdXRDYWNoZQogCiAgICAgdm9pZCBpbml0aWFsaXplKElEM0QxMURldmljZSAqZGV2aWNlLCBJ
RDNEMTFEZXZpY2VDb250ZXh0ICpjb250ZXh0KTsKICAgICB2b2lkIGNsZWFyKCk7CisgICAgdm9p
ZCBtYXJrRGlydHkoKTsKIAogICAgIEdMZW51bSBhcHBseVZlcnRleEJ1ZmZlcnMoVHJhbnNsYXRl
ZEF0dHJpYnV0ZSBhdHRyaWJ1dGVzW2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNdLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkpOwpA
QCAtMzcsMTEgKzM4LDI2IEBAIGNsYXNzIElucHV0TGF5b3V0Q2FjaGUKICAgcHJpdmF0ZToKICAg
ICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oSW5wdXRMYXlvdXRDYWNoZSk7CiAKKyAgICBzdHJ1
Y3QgSW5wdXRMYXlvdXRFbGVtZW50CisgICAgeworICAgICAgICBEM0QxMV9JTlBVVF9FTEVNRU5U
X0RFU0MgZGVzYzsKKyAgICAgICAgR0xlbnVtIGdsc2xFbGVtZW50VHlwZTsKKyAgICB9OworCiAg
ICAgc3RydWN0IElucHV0TGF5b3V0S2V5CiAgICAgewogICAgICAgICB1bnNpZ25lZCBpbnQgZWxl
bWVudENvdW50OwotICAgICAgICBEM0QxMV9JTlBVVF9FTEVNRU5UX0RFU0MgZWxlbWVudHNbZ2w6
Ok1BWF9WRVJURVhfQVRUUklCU107Ci0gICAgICAgIEdMZW51bSBnbHNsRWxlbWVudFR5cGVbZ2w6
Ok1BWF9WRVJURVhfQVRUUklCU107CisgICAgICAgIElucHV0TGF5b3V0RWxlbWVudCBlbGVtZW50
c1tnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXTsKKworICAgICAgICBjb25zdCBjaGFyICpiZWdpbigp
IGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPigmZWxlbWVudENvdW50KTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IGNo
YXIgKmVuZCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPigmZWxlbWVudHNbZWxlbWVudENvdW50XSk7CisgICAgICAgIH0K
ICAgICB9OwogCiAgICAgc3RydWN0IElucHV0TGF5b3V0Q291bnRlclBhaXIKQEAgLTUwLDYgKzY2
LDExIEBAIGNsYXNzIElucHV0TGF5b3V0Q2FjaGUKICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25n
IGxhc3RVc2VkVGltZTsKICAgICB9OwogCisgICAgSUQzRDExSW5wdXRMYXlvdXQgKm1DdXJyZW50
SUw7CisgICAgdW5zaWduZWQgaW50IG1DdXJyZW50QnVmZmVyc1tnbDo6TUFYX1ZFUlRFWF9BVFRS
SUJTXTsKKyAgICBVSU5UIG1DdXJyZW50VmVydGV4U3RyaWRlc1tnbDo6TUFYX1ZFUlRFWF9BVFRS
SUJTXTsKKyAgICBVSU5UIG1DdXJyZW50VmVydGV4T2Zmc2V0c1tnbDo6TUFYX1ZFUlRFWF9BVFRS
SUJTXTsKKwogICAgIHN0YXRpYyBzdGQ6OnNpemVfdCBoYXNoSW5wdXRMYXlvdXQoY29uc3QgSW5w
dXRMYXlvdXRLZXkgJmlucHV0TGF5b3V0KTsKICAgICBzdGF0aWMgYm9vbCBjb21wYXJlSW5wdXRM
YXlvdXRzKGNvbnN0IElucHV0TGF5b3V0S2V5ICZhLCBjb25zdCBJbnB1dExheW91dEtleSAmYik7
CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
UmVuZGVyVGFyZ2V0MTEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyVGFyZ2V0MTEuY3BwCShyZXZpc2lvbiAxNTk1
MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1Jl
bmRlclRhcmdldDExLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI5LDQ0ICszMjksMjEgQEAgUmVu
ZGVyVGFyZ2V0MTEgKlJlbmRlclRhcmdldDExOjptYWtlUmVuZAogCiBJRDNEMTFUZXh0dXJlMkQg
KlJlbmRlclRhcmdldDExOjpnZXRUZXh0dXJlKCkgY29uc3QKIHsKLSAgICBpZiAobVRleHR1cmUp
Ci0gICAgewotICAgICAgICBtVGV4dHVyZS0+QWRkUmVmKCk7Ci0gICAgfQotCiAgICAgcmV0dXJu
IG1UZXh0dXJlOwogfQogCi0vLyBBZGRzIHJlZmVyZW5jZSwgY2FsbGVyIG11c3QgY2FsbCBSZWxl
YXNlCiBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpSZW5kZXJUYXJnZXQxMTo6Z2V0UmVuZGVyVGFy
Z2V0VmlldygpIGNvbnN0CiB7Ci0gICAgaWYgKG1SZW5kZXJUYXJnZXQpCi0gICAgewotICAgICAg
ICBtUmVuZGVyVGFyZ2V0LT5BZGRSZWYoKTsKLSAgICB9Ci0KICAgICByZXR1cm4gbVJlbmRlclRh
cmdldDsKIH0KIAotLy8gQWRkcyByZWZlcmVuY2UsIGNhbGxlciBtdXN0IGNhbGwgUmVsZWFzZQog
SUQzRDExRGVwdGhTdGVuY2lsVmlldyAqUmVuZGVyVGFyZ2V0MTE6OmdldERlcHRoU3RlbmNpbFZp
ZXcoKSBjb25zdAogewotICAgIGlmIChtRGVwdGhTdGVuY2lsKQotICAgIHsKLSAgICAgICAgbURl
cHRoU3RlbmNpbC0+QWRkUmVmKCk7Ci0gICAgfQotCiAgICAgcmV0dXJuIG1EZXB0aFN0ZW5jaWw7
CiB9CiAKLS8vIEFkZHMgcmVmZXJlbmNlLCBjYWxsZXIgbXVzdCBjYWxsIFJlbGVhc2UKIElEM0Qx
MVNoYWRlclJlc291cmNlVmlldyAqUmVuZGVyVGFyZ2V0MTE6OmdldFNoYWRlclJlc291cmNlVmll
dygpIGNvbnN0CiB7Ci0gICAgaWYgKG1TaGFkZXJSZXNvdXJjZSkKLSAgICB7Ci0gICAgICAgIG1T
aGFkZXJSZXNvdXJjZS0+QWRkUmVmKCk7Ci0gICAgfQotCiAgICAgcmV0dXJuIG1TaGFkZXJSZXNv
dXJjZTsKIH0KIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9SZW5kZXJUYXJnZXQxMS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyVGFyZ2V0MTEuaAkocmV2aXNpb24g
MTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9SZW5kZXJUYXJnZXQxMS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNiArMjcsOSBAQCBjbGFz
cyBSZW5kZXJUYXJnZXQxMSA6IHB1YmxpYyBSZW5kZXJUYXJnCiAKICAgICBzdGF0aWMgUmVuZGVy
VGFyZ2V0MTEgKm1ha2VSZW5kZXJUYXJnZXQxMShSZW5kZXJUYXJnZXQgKnJlbmRlclRhcmdldCk7
CiAKLSAgICAvLyBBZGRzIHJlZmVyZW5jZSwgY2FsbGVyIG11c3QgY2FsbCBSZWxlYXNlCiAgICAg
SUQzRDExVGV4dHVyZTJEICpnZXRUZXh0dXJlKCkgY29uc3Q7Ci0KLSAgICAvLyBBZGRzIHJlZmVy
ZW5jZSwgY2FsbGVyIG11c3QgY2FsbCBSZWxlYXNlCiAgICAgSUQzRDExUmVuZGVyVGFyZ2V0Vmll
dyAqZ2V0UmVuZGVyVGFyZ2V0VmlldygpIGNvbnN0OwotCi0gICAgLy8gQWRkcyByZWZlcmVuY2Us
IGNhbGxlciBtdXN0IGNhbGwgUmVsZWFzZQogICAgIElEM0QxMURlcHRoU3RlbmNpbFZpZXcgKmdl
dERlcHRoU3RlbmNpbFZpZXcoKSBjb25zdDsKLQotICAgIC8vIEFkZHMgcmVmZXJlbmNlLCBjYWxs
ZXIgbXVzdCBjYWxsIFJlbGVhc2UKICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKmdldFNo
YWRlclJlc291cmNlVmlldygpIGNvbnN0OwogCiAgICAgdW5zaWduZWQgaW50IGdldFN1YnJlc291
cmNlSW5kZXgoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvcmVuZGVyZXIvUmVuZGVyZXI5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyOS5jcHAJKHJldmlzaW9u
IDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvUmVuZGVyZXI5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsOCBAQAogCiAjaW5j
bHVkZSAibGliRUdML0Rpc3BsYXkuaCIKIAorI2luY2x1ZGUgInRoaXJkX3BhcnR5L3RyYWNlX2V2
ZW50L3RyYWNlX2V2ZW50LmgiCisKIC8vIENhbiBhbHNvIGJlIGVuYWJsZWQgYnkgZGVmaW5pbmcg
Rk9SQ0VfUkVGX1JBU1QgaW4gdGhlIHByb2plY3QncyBwcmVkZWZpbmVkIG1hY3JvcwogI2RlZmlu
ZSBSRUZfUkFTVCAwCiAKQEAgLTE4NCwxMCArMTg2LDEyIEBAIEVHTGludCBSZW5kZXJlcjk6Omlu
aXRpYWxpemUoKQogCiAgICAgaWYgKG1Tb2Z0d2FyZURldmljZSkKICAgICB7CisgICAgICAgIFRS
QUNFX0VWRU5UMCgiZ3B1IiwgIkdldE1vZHVsZUhhbmRsZV9zd2lmdHNoYWRlciIpOwogICAgICAg
ICBtRDNkOU1vZHVsZSA9IEdldE1vZHVsZUhhbmRsZShURVhUKCJzd2lmdHNoYWRlcl9kM2Q5LmRs
bCIpKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQwKCJncHUi
LCAiR2V0TW9kdWxlSGFuZGxlX2QzZDkiKTsKICAgICAgICAgbUQzZDlNb2R1bGUgPSBHZXRNb2R1
bGVIYW5kbGUoVEVYVCgiZDNkOS5kbGwiKSk7CiAgICAgfQogCkBAIC0yMDUsMTIgKzIwOSwxNCBA
QCBFR0xpbnQgUmVuZGVyZXI5Ojppbml0aWFsaXplKCkKICAgICAvLyBkZXNrdG9wLiBEaXJlY3Qz
RDlFeCBpcyBhdmFpbGFibGUgaW4gV2luZG93cyBWaXN0YSBhbmQgbGF0ZXIgaWYgc3VpdGFibGUg
ZHJpdmVycyBhcmUgYXZhaWxhYmxlLgogICAgIGlmIChBTkdMRV9FTkFCTEVfRDNEOUVYICYmIERp
cmVjdDNEQ3JlYXRlOUV4UHRyICYmIFNVQ0NFRURFRChEaXJlY3QzRENyZWF0ZTlFeFB0cihEM0Rf
U0RLX1ZFUlNJT04sICZtRDNkOUV4KSkpCiAgICAgeworICAgICAgICBUUkFDRV9FVkVOVDAoImdw
dSIsICJEM2Q5RXhfUXVlcnlJbnRlcmZhY2UiKTsKICAgICAgICAgQVNTRVJUKG1EM2Q5RXgpOwog
ICAgICAgICBtRDNkOUV4LT5RdWVyeUludGVyZmFjZShJSURfSURpcmVjdDNEOSwgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKio+KCZtRDNkOSkpOwogICAgICAgICBBU1NFUlQobUQzZDkpOwogICAgIH0K
ICAgICBlbHNlCiAgICAgeworICAgICAgICBUUkFDRV9FVkVOVDAoImdwdSIsICJEaXJlY3QzRENy
ZWF0ZTkiKTsKICAgICAgICAgbUQzZDkgPSBEaXJlY3QzRENyZWF0ZTkoRDNEX1NES19WRVJTSU9O
KTsKICAgICB9CiAKQEAgLTIyOCwyMSArMjM0LDI0IEBAIEVHTGludCBSZW5kZXJlcjk6OmluaXRp
YWxpemUoKQogICAgIEhSRVNVTFQgcmVzdWx0OwogCiAgICAgLy8gR2l2ZSB1cCBvbiBnZXR0aW5n
IGRldmljZSBjYXBzIGFmdGVyIGFib3V0IG9uZSBzZWNvbmQuCi0gICAgZm9yIChpbnQgaSA9IDA7
IGkgPCAxMDsgKytpKQogICAgIHsKLSAgICAgICAgcmVzdWx0ID0gbUQzZDktPkdldERldmljZUNh
cHMobUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCAmbURldmljZUNhcHMpOwotICAgICAgICBpZiAoU1VD
Q0VFREVEKHJlc3VsdCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UgaWYgKHJlc3VsdCA9PSBEM0RFUlJfTk9UQVZBSUxBQkxFKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBTbGVlcCgxMDApOyAgIC8vIEdpdmUgdGhlIGRyaXZlciBzb21lIHRp
bWUgdG8gaW5pdGlhbGl6ZS9yZWNvdmVyCi0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoRkFJ
TEVEKHJlc3VsdCkpICAgLy8gRDNERVJSX09VVE9GVklERU9NRU1PUlksIEVfT1VUT0ZNRU1PUlks
IEQzREVSUl9JTlZBTElEREVWSUNFLCBvciBhbm90aGVyIGVycm9yIHdlIGNhbid0IHJlY292ZXIg
ZnJvbQorICAgICAgICBUUkFDRV9FVkVOVDAoImdwdSIsICJHZXREZXZpY2VDYXBzIik7CisgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7ICsraSkKICAgICAgICAgewotICAgICAgICAgICAg
RVJSKCJmYWlsZWQgdG8gZ2V0IGRldmljZSBjYXBzICgweCV4KVxuIiwgcmVzdWx0KTsKLSAgICAg
ICAgICAgIHJldHVybiBFR0xfTk9UX0lOSVRJQUxJWkVEOworICAgICAgICAgICAgcmVzdWx0ID0g
bUQzZDktPkdldERldmljZUNhcHMobUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCAmbURldmljZUNhcHMp
OworICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQpKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAo
cmVzdWx0ID09IEQzREVSUl9OT1RBVkFJTEFCTEUpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgU2xlZXAoMTAwKTsgICAvLyBHaXZlIHRoZSBkcml2ZXIgc29tZSB0aW1lIHRvIGluaXRp
YWxpemUvcmVjb3ZlcgorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoRkFJTEVE
KHJlc3VsdCkpICAgLy8gRDNERVJSX09VVE9GVklERU9NRU1PUlksIEVfT1VUT0ZNRU1PUlksIEQz
REVSUl9JTlZBTElEREVWSUNFLCBvciBhbm90aGVyIGVycm9yIHdlIGNhbid0IHJlY292ZXIgZnJv
bQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEVSUigiZmFpbGVkIHRvIGdldCBkZXZp
Y2UgY2FwcyAoMHgleClcbiIsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVHTF9O
T1RfSU5JVElBTElaRUQ7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI2
MCw3ICsyNjksMTAgQEAgRUdMaW50IFJlbmRlcmVyOTo6aW5pdGlhbGl6ZSgpCiAgICAgICAgIHJl
dHVybiBFR0xfTk9UX0lOSVRJQUxJWkVEOwogICAgIH0KIAotICAgIG1EM2Q5LT5HZXRBZGFwdGVy
SWRlbnRpZmllcihtQWRhcHRlciwgMCwgJm1BZGFwdGVySWRlbnRpZmllcik7CisgICAgeworICAg
ICAgICBUUkFDRV9FVkVOVDAoImdwdSIsICJHZXRBZGFwdGVySWRlbnRpZmllciIpOworICAgICAg
ICBtRDNkOS0+R2V0QWRhcHRlcklkZW50aWZpZXIobUFkYXB0ZXIsIDAsICZtQWRhcHRlcklkZW50
aWZpZXIpOworICAgIH0KIAogICAgIC8vIEFUSSBjYXJkcyBvbiBYUCBoYXZlIHByb2JsZW1zIHdp
dGggbm9uLXBvd2VyLW9mLXR3byB0ZXh0dXJlcy4KICAgICBtU3VwcG9ydHNOb25Qb3dlcjJUZXh0
dXJlcyA9ICEobURldmljZUNhcHMuVGV4dHVyZUNhcHMgJiBEM0RQVEVYVFVSRUNBUFNfUE9XMikg
JiYKQEAgLTMwMSwzNSArMzEzLDQxIEBAIEVHTGludCBSZW5kZXJlcjk6OmluaXRpYWxpemUoKQog
ICAgIH0KIAogICAgIGludCBtYXggPSAwOwotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBp
IDwgQXJyYXlTaXplKFJlbmRlclRhcmdldEZvcm1hdHMpOyArK2kpCiAgICAgewotICAgICAgICBi
b29sICptdWx0aXNhbXBsZUFycmF5ID0gbmV3IGJvb2xbRDNETVVMVElTQU1QTEVfMTZfU0FNUExF
UyArIDFdOwotICAgICAgICBnZXRNdWx0aVNhbXBsZVN1cHBvcnQoUmVuZGVyVGFyZ2V0Rm9ybWF0
c1tpXSwgbXVsdGlzYW1wbGVBcnJheSk7Ci0gICAgICAgIG1NdWx0aVNhbXBsZVN1cHBvcnRbUmVu
ZGVyVGFyZ2V0Rm9ybWF0c1tpXV0gPSBtdWx0aXNhbXBsZUFycmF5OwotCi0gICAgICAgIGZvciAo
aW50IGogPSBEM0RNVUxUSVNBTVBMRV8xNl9TQU1QTEVTOyBqID49IDA7IC0taikKKyAgICAgICAg
VFJBQ0VfRVZFTlQwKCJncHUiLCAiZ2V0TXVsdGlTYW1wbGVTdXBwb3J0Iik7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgQXJyYXlTaXplKFJlbmRlclRhcmdldEZvcm1hdHMp
OyArK2kpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtdWx0aXNhbXBsZUFycmF5W2pdICYm
IGogIT0gRDNETVVMVElTQU1QTEVfTk9OTUFTS0FCTEUgJiYgaiA+IG1heCkKKyAgICAgICAgICAg
IGJvb2wgKm11bHRpc2FtcGxlQXJyYXkgPSBuZXcgYm9vbFtEM0RNVUxUSVNBTVBMRV8xNl9TQU1Q
TEVTICsgMV07CisgICAgICAgICAgICBnZXRNdWx0aVNhbXBsZVN1cHBvcnQoUmVuZGVyVGFyZ2V0
Rm9ybWF0c1tpXSwgbXVsdGlzYW1wbGVBcnJheSk7CisgICAgICAgICAgICBtTXVsdGlTYW1wbGVT
dXBwb3J0W1JlbmRlclRhcmdldEZvcm1hdHNbaV1dID0gbXVsdGlzYW1wbGVBcnJheTsKKworICAg
ICAgICAgICAgZm9yIChpbnQgaiA9IEQzRE1VTFRJU0FNUExFXzE2X1NBTVBMRVM7IGogPj0gMDsg
LS1qKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1heCA9IGo7CisgICAgICAgICAg
ICAgICAgaWYgKG11bHRpc2FtcGxlQXJyYXlbal0gJiYgaiAhPSBEM0RNVUxUSVNBTVBMRV9OT05N
QVNLQUJMRSAmJiBqID4gbWF4KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgbWF4ID0gajsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IEFycmF5U2l6ZShEZXB0
aFN0ZW5jaWxGb3JtYXRzKTsgKytpKQogICAgIHsKLSAgICAgICAgaWYgKERlcHRoU3RlbmNpbEZv
cm1hdHNbaV0gPT0gRDNERk1UX1VOS05PV04pCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgVFJBQ0VfRVZFTlQwKCJncHUiLCAiZ2V0TXVsdGlTYW1wbGVTdXBwb3J0MiIpOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IEFycmF5U2l6ZShEZXB0aFN0ZW5jaWxGb3Jt
YXRzKTsgKytpKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoRGVwdGhTdGVuY2lsRm9ybWF0
c1tpXSA9PSBEM0RGTVRfVU5LTk9XTikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICBib29sICptdWx0aXNhbXBsZUFycmF5ID0gbmV3IGJvb2xbRDNETVVMVElTQU1QTEVfMTZf
U0FNUExFUyArIDFdOwotICAgICAgICBnZXRNdWx0aVNhbXBsZVN1cHBvcnQoRGVwdGhTdGVuY2ls
Rm9ybWF0c1tpXSwgbXVsdGlzYW1wbGVBcnJheSk7Ci0gICAgICAgIG1NdWx0aVNhbXBsZVN1cHBv
cnRbRGVwdGhTdGVuY2lsRm9ybWF0c1tpXV0gPSBtdWx0aXNhbXBsZUFycmF5OworICAgICAgICAg
ICAgYm9vbCAqbXVsdGlzYW1wbGVBcnJheSA9IG5ldyBib29sW0QzRE1VTFRJU0FNUExFXzE2X1NB
TVBMRVMgKyAxXTsKKyAgICAgICAgICAgIGdldE11bHRpU2FtcGxlU3VwcG9ydChEZXB0aFN0ZW5j
aWxGb3JtYXRzW2ldLCBtdWx0aXNhbXBsZUFycmF5KTsKKyAgICAgICAgICAgIG1NdWx0aVNhbXBs
ZVN1cHBvcnRbRGVwdGhTdGVuY2lsRm9ybWF0c1tpXV0gPSBtdWx0aXNhbXBsZUFycmF5OwogCi0g
ICAgICAgIGZvciAoaW50IGogPSBEM0RNVUxUSVNBTVBMRV8xNl9TQU1QTEVTOyBqID49IDA7IC0t
aikKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG11bHRpc2FtcGxlQXJyYXlbal0gJiYgaiAh
PSBEM0RNVUxUSVNBTVBMRV9OT05NQVNLQUJMRSAmJiBqID4gbWF4KQorICAgICAgICAgICAgZm9y
IChpbnQgaiA9IEQzRE1VTFRJU0FNUExFXzE2X1NBTVBMRVM7IGogPj0gMDsgLS1qKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIG1heCA9IGo7CisgICAgICAgICAgICAgICAgaWYgKG11
bHRpc2FtcGxlQXJyYXlbal0gJiYgaiAhPSBEM0RNVUxUSVNBTVBMRV9OT05NQVNLQUJMRSAmJiBq
ID4gbWF4KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbWF4ID0gajsK
KyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0z
MzksMTIgKzM1NywxOCBAQCBFR0xpbnQgUmVuZGVyZXI5Ojppbml0aWFsaXplKCkKICAgICBzdGF0
aWMgY29uc3QgVENIQVIgd2luZG93TmFtZVtdID0gVEVYVCgiQW5nbGVIaWRkZW5XaW5kb3ciKTsK
ICAgICBzdGF0aWMgY29uc3QgVENIQVIgY2xhc3NOYW1lW10gPSBURVhUKCJTVEFUSUMiKTsKIAot
ICAgIG1EZXZpY2VXaW5kb3cgPSBDcmVhdGVXaW5kb3dFeChXU19FWF9OT0FDVElWQVRFLCBjbGFz
c05hbWUsIHdpbmRvd05hbWUsIFdTX0RJU0FCTEVEIHwgV1NfUE9QVVAsIDAsIDAsIDEsIDEsIEhX
TkRfTUVTU0FHRSwgTlVMTCwgR2V0TW9kdWxlSGFuZGxlKE5VTEwpLCBOVUxMKTsKKyAgICB7Cisg
ICAgICAgIFRSQUNFX0VWRU5UMCgiZ3B1IiwgIkNyZWF0ZVdpbmRvd0V4Iik7CisgICAgICAgIG1E
ZXZpY2VXaW5kb3cgPSBDcmVhdGVXaW5kb3dFeChXU19FWF9OT0FDVElWQVRFLCBjbGFzc05hbWUs
IHdpbmRvd05hbWUsIFdTX0RJU0FCTEVEIHwgV1NfUE9QVVAsIDAsIDAsIDEsIDEsIEhXTkRfTUVT
U0FHRSwgTlVMTCwgR2V0TW9kdWxlSGFuZGxlKE5VTEwpLCBOVUxMKTsKKyAgICB9CiAKICAgICBE
M0RQUkVTRU5UX1BBUkFNRVRFUlMgcHJlc2VudFBhcmFtZXRlcnMgPSBnZXREZWZhdWx0UHJlc2Vu
dFBhcmFtZXRlcnMoKTsKICAgICBEV09SRCBiZWhhdmlvckZsYWdzID0gRDNEQ1JFQVRFX0ZQVV9Q
UkVTRVJWRSB8IEQzRENSRUFURV9OT1dJTkRPV0NIQU5HRVM7CiAKLSAgICByZXN1bHQgPSBtRDNk
OS0+Q3JlYXRlRGV2aWNlKG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgbURldmljZVdpbmRvdywgYmVo
YXZpb3JGbGFncyB8IEQzRENSRUFURV9IQVJEV0FSRV9WRVJURVhQUk9DRVNTSU5HIHwgRDNEQ1JF
QVRFX1BVUkVERVZJQ0UsICZwcmVzZW50UGFyYW1ldGVycywgJm1EZXZpY2UpOworICAgIHsKKyAg
ICAgICAgVFJBQ0VfRVZFTlQwKCJncHUiLCAiRDNkOV9DcmVhdGVEZXZpY2UiKTsKKyAgICAgICAg
cmVzdWx0ID0gbUQzZDktPkNyZWF0ZURldmljZShtQWRhcHRlciwgbURldmljZVR5cGUsIG1EZXZp
Y2VXaW5kb3csIGJlaGF2aW9yRmxhZ3MgfCBEM0RDUkVBVEVfSEFSRFdBUkVfVkVSVEVYUFJPQ0VT
U0lORyB8IEQzRENSRUFURV9QVVJFREVWSUNFLCAmcHJlc2VudFBhcmFtZXRlcnMsICZtRGV2aWNl
KTsKKyAgICB9CiAgICAgaWYgKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCBy
ZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSB8fCByZXN1bHQgPT0gRDNERVJSX0RFVklDRUxPU1QpCiAg
ICAgewogICAgICAgICByZXR1cm4gRUdMX0JBRF9BTExPQzsKQEAgLTM1Miw2ICszNzYsNyBAQCBF
R0xpbnQgUmVuZGVyZXI5Ojppbml0aWFsaXplKCkKIAogICAgIGlmIChGQUlMRUQocmVzdWx0KSkK
ICAgICB7CisgICAgICAgIFRSQUNFX0VWRU5UMCgiZ3B1IiwgIkQzZDlfQ3JlYXRlRGV2aWNlMiIp
OwogICAgICAgICByZXN1bHQgPSBtRDNkOS0+Q3JlYXRlRGV2aWNlKG1BZGFwdGVyLCBtRGV2aWNl
VHlwZSwgbURldmljZVdpbmRvdywgYmVoYXZpb3JGbGFncyB8IEQzRENSRUFURV9TT0ZUV0FSRV9W
RVJURVhQUk9DRVNTSU5HLCAmcHJlc2VudFBhcmFtZXRlcnMsICZtRGV2aWNlKTsKIAogICAgICAg
ICBpZiAoRkFJTEVEKHJlc3VsdCkpCkBAIC0zNjMsMzUgKzM4OCw0NSBAQCBFR0xpbnQgUmVuZGVy
ZXI5Ojppbml0aWFsaXplKCkKIAogICAgIGlmIChtRDNkOUV4KQogICAgIHsKKyAgICAgICAgVFJB
Q0VfRVZFTlQwKCJncHUiLCAibURldmljZV9RdWVyeUludGVyZmFjZSIpOwogICAgICAgICByZXN1
bHQgPSBtRGV2aWNlLT5RdWVyeUludGVyZmFjZShJSURfSURpcmVjdDNERGV2aWNlOUV4LCAodm9p
ZCoqKSAmbURldmljZUV4KTsKICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKICAg
ICB9CiAKLSAgICBtVmVydGV4U2hhZGVyQ2FjaGUuaW5pdGlhbGl6ZShtRGV2aWNlKTsKLSAgICBt
UGl4ZWxTaGFkZXJDYWNoZS5pbml0aWFsaXplKG1EZXZpY2UpOworICAgIHsKKyAgICAgICAgVFJB
Q0VfRVZFTlQwKCJncHUiLCAiU2hhZGVyQ2FjaGUgaW5pdGlhbGl6ZSIpOworICAgICAgICBtVmVy
dGV4U2hhZGVyQ2FjaGUuaW5pdGlhbGl6ZShtRGV2aWNlKTsKKyAgICAgICAgbVBpeGVsU2hhZGVy
Q2FjaGUuaW5pdGlhbGl6ZShtRGV2aWNlKTsKKyAgICB9CiAKICAgICAvLyBDaGVjayBvY2NsdXNp
b24gcXVlcnkgc3VwcG9ydAogICAgIElEaXJlY3QzRFF1ZXJ5OSAqb2NjbHVzaW9uUXVlcnkgPSBO
VUxMOwotICAgIGlmIChTVUNDRUVERUQobURldmljZS0+Q3JlYXRlUXVlcnkoRDNEUVVFUllUWVBF
X09DQ0xVU0lPTiwgJm9jY2x1c2lvblF1ZXJ5KSkgJiYgb2NjbHVzaW9uUXVlcnkpCiAgICAgewot
ICAgICAgICBvY2NsdXNpb25RdWVyeS0+UmVsZWFzZSgpOwotICAgICAgICBtT2NjbHVzaW9uUXVl
cnlTdXBwb3J0ID0gdHJ1ZTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgbU9jY2x1
c2lvblF1ZXJ5U3VwcG9ydCA9IGZhbHNlOworICAgICAgICBUUkFDRV9FVkVOVDAoImdwdSIsICJk
ZXZpY2VfQ3JlYXRlUXVlcnkiKTsKKyAgICAgICAgaWYgKFNVQ0NFRURFRChtRGV2aWNlLT5DcmVh
dGVRdWVyeShEM0RRVUVSWVRZUEVfT0NDTFVTSU9OLCAmb2NjbHVzaW9uUXVlcnkpKSAmJiBvY2Ns
dXNpb25RdWVyeSkKKyAgICAgICAgeworICAgICAgICAgICAgb2NjbHVzaW9uUXVlcnktPlJlbGVh
c2UoKTsKKyAgICAgICAgICAgIG1PY2NsdXNpb25RdWVyeVN1cHBvcnQgPSB0cnVlOworICAgICAg
ICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgbU9jY2x1c2lvblF1ZXJ5
U3VwcG9ydCA9IGZhbHNlOworICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gQ2hlY2sgZXZlbnQg
cXVlcnkgc3VwcG9ydAogICAgIElEaXJlY3QzRFF1ZXJ5OSAqZXZlbnRRdWVyeSA9IE5VTEw7Ci0g
ICAgaWYgKFNVQ0NFRURFRChtRGV2aWNlLT5DcmVhdGVRdWVyeShEM0RRVUVSWVRZUEVfRVZFTlQs
ICZldmVudFF1ZXJ5KSkgJiYgZXZlbnRRdWVyeSkKLSAgICB7Ci0gICAgICAgIGV2ZW50UXVlcnkt
PlJlbGVhc2UoKTsKLSAgICAgICAgbUV2ZW50UXVlcnlTdXBwb3J0ID0gdHJ1ZTsKLSAgICB9Ci0g
ICAgZWxzZQogICAgIHsKLSAgICAgICAgbUV2ZW50UXVlcnlTdXBwb3J0ID0gZmFsc2U7CisgICAg
ICAgIFRSQUNFX0VWRU5UMCgiZ3B1IiwgImRldmljZV9DcmVhdGVRdWVyeTIiKTsKKyAgICAgICAg
aWYgKFNVQ0NFRURFRChtRGV2aWNlLT5DcmVhdGVRdWVyeShEM0RRVUVSWVRZUEVfRVZFTlQsICZl
dmVudFF1ZXJ5KSkgJiYgZXZlbnRRdWVyeSkKKyAgICAgICAgeworICAgICAgICAgICAgZXZlbnRR
dWVyeS0+UmVsZWFzZSgpOworICAgICAgICAgICAgbUV2ZW50UXVlcnlTdXBwb3J0ID0gdHJ1ZTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIG1FdmVudFF1
ZXJ5U3VwcG9ydCA9IGZhbHNlOworICAgICAgICB9CiAgICAgfQogCiAgICAgRDNERElTUExBWU1P
REUgY3VycmVudERpc3BsYXlNb2RlOwpAQCAtMTA3Niw4ICsxMTExLDEwIEBAIGJvb2wgUmVuZGVy
ZXI5OjpzZXRWaWV3cG9ydChjb25zdCBnbDo6UmUKICAgICAgICAgcmV0dXJuIGZhbHNlOyAgIC8v
IE5vdGhpbmcgdG8gcmVuZGVyCiAgICAgfQogCisgICAgZmxvYXQgZGVwdGhGcm9udCA9ICFnbDo6
SXNUcmlhbmdsZU1vZGUoZHJhd01vZGUpID8gMC4wZiA6IChmcm9udEZhY2UgPT0gR0xfQ0NXID8g
MS4wZiA6IC0xLjBmKTsKKwogICAgIGJvb2wgdmlld3BvcnRDaGFuZ2VkID0gbUZvcmNlU2V0Vmll
d3BvcnQgfHwgbWVtY21wKCZhY3R1YWxWaWV3cG9ydCwgJm1DdXJWaWV3cG9ydCwgc2l6ZW9mKGds
OjpSZWN0YW5nbGUpKSAhPSAwIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWxa
TmVhciAhPSBtQ3VyTmVhciB8fCBhY3R1YWxaRmFyICE9IG1DdXJGYXI7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhY3R1YWxaTmVhciAhPSBtQ3VyTmVhciB8fCBhY3R1YWxaRmFyICE9IG1D
dXJGYXIgfHwgbUN1ckRlcHRoRnJvbnQgIT0gZGVwdGhGcm9udDsKICAgICBpZiAodmlld3BvcnRD
aGFuZ2VkKQogICAgIHsKICAgICAgICAgbURldmljZS0+U2V0Vmlld3BvcnQoJmR4Vmlld3BvcnQp
OwpAQCAtMTA4NSw2ICsxMTIyLDcgQEAgYm9vbCBSZW5kZXJlcjk6OnNldFZpZXdwb3J0KGNvbnN0
IGdsOjpSZQogICAgICAgICBtQ3VyVmlld3BvcnQgPSBhY3R1YWxWaWV3cG9ydDsKICAgICAgICAg
bUN1ck5lYXIgPSBhY3R1YWxaTmVhcjsKICAgICAgICAgbUN1ckZhciA9IGFjdHVhbFpGYXI7Cisg
ICAgICAgIG1DdXJEZXB0aEZyb250ID0gZGVwdGhGcm9udDsKIAogICAgICAgICBkeF9WZXJ0ZXhD
b25zdGFudHMgdmMgPSB7MH07CiAgICAgICAgIGR4X1BpeGVsQ29uc3RhbnRzIHBjID0gezB9OwpA
QCAtMTEwMSw3ICsxMTM5LDcgQEAgYm9vbCBSZW5kZXJlcjk6OnNldFZpZXdwb3J0KGNvbnN0IGds
OjpSZQogCiAgICAgICAgIHBjLmRlcHRoRnJvbnRbMF0gPSAoYWN0dWFsWkZhciAtIGFjdHVhbFpO
ZWFyKSAqIDAuNWY7CiAgICAgICAgIHBjLmRlcHRoRnJvbnRbMV0gPSAoYWN0dWFsWk5lYXIgKyBh
Y3R1YWxaRmFyKSAqIDAuNWY7Ci0gICAgICAgIHBjLmRlcHRoRnJvbnRbMl0gPSAhZ2w6OklzVHJp
YW5nbGVNb2RlKGRyYXdNb2RlKSA/IDAuMGYgOiAoZnJvbnRGYWNlID09IEdMX0NDVyA/IDEuMGYg
OiAtMS4wZik7OworICAgICAgICBwYy5kZXB0aEZyb250WzJdID0gZGVwdGhGcm9udDsKIAogICAg
ICAgICB2Yy5kZXB0aFJhbmdlWzBdID0gYWN0dWFsWk5lYXI7CiAgICAgICAgIHZjLmRlcHRoUmFu
Z2VbMV0gPSBhY3R1YWxaRmFyOwpAQCAtMTQ1NCw3ICsxNDkyLDcgQEAgdm9pZCBSZW5kZXJlcjk6
OmRyYXdMaW5lTG9vcChHTHNpemVpIGNvdQogICAgICAgICBpbmRpY2VzID0gc3RhdGljX2Nhc3Q8
Y29uc3QgR0x1Ynl0ZSo+KHN0b3JhZ2UtPmdldERhdGEoKSkgKyBvZmZzZXQ7CiAgICAgfQogCi0g
ICAgVUlOVCBzdGFydEluZGV4ID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgc3RhcnRJbmRleCA9IDA7
CiAKICAgICBpZiAoZ2V0MzJCaXRJbmRleFN1cHBvcnQoKSkKICAgICB7CkBAIC0xNDcxLDEzICsx
NTA5LDE2IEBAIHZvaWQgUmVuZGVyZXI5OjpkcmF3TGluZUxvb3AoR0xzaXplaSBjb3UKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBp
bnQ+KGNvdW50ICsgMSkgPiAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBpbnQ+OjptYXgo
KSAvIHNpemVvZih1bnNpZ25lZCBpbnQpKSkKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2ln
bmVkIGludD4oY291bnQpICsgMSA+IChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGludD46
Om1heCgpIC8gc2l6ZW9mKHVuc2lnbmVkIGludCkpKQogICAgICAgICB7CiAgICAgICAgICAgICBF
UlIoIkNvdWxkIG5vdCBjcmVhdGUgYSAzMi1iaXQgbG9vcGluZyBpbmRleCBidWZmZXIgZm9yIEdM
X0xJTkVfTE9PUCwgdG9vIG1hbnkgaW5kaWNlcyByZXF1aXJlZC4iKTsKICAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CiAgICAgICAgIH0KIAotICAgICAgICBj
b25zdCB1bnNpZ25lZCBpbnQgc3BhY2VOZWVkZWQgPSAoY291bnQgKyAxKSAqIHNpemVvZih1bnNp
Z25lZCBpbnQpOworICAgICAgICAvLyBDaGVja2VkIGJ5IFJlbmRlcmVyOTo6YXBwbHlQcmltaXRp
dmVUeXBlCisgICAgICAgIEFTU0VSVChjb3VudCA+PSAwKTsKKworICAgICAgICBjb25zdCB1bnNp
Z25lZCBpbnQgc3BhY2VOZWVkZWQgPSAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihjb3VudCkg
KyAxKSAqIHNpemVvZih1bnNpZ25lZCBpbnQpOwogICAgICAgICBpZiAoIW1MaW5lTG9vcElCLT5y
ZXNlcnZlQnVmZmVyU3BhY2Uoc3BhY2VOZWVkZWQsIEdMX1VOU0lHTkVEX0lOVCkpCiAgICAgICAg
IHsKICAgICAgICAgICAgIEVSUigiQ291bGQgbm90IHJlc2VydmUgZW5vdWdoIHNwYWNlIGluIGxv
b3BpbmcgaW5kZXggYnVmZmVyIGZvciBHTF9MSU5FX0xPT1AuIik7CkBAIC0xNDg1LDE0ICsxNTI2
LDE0IEBAIHZvaWQgUmVuZGVyZXI5OjpkcmF3TGluZUxvb3AoR0xzaXplaSBjb3UKICAgICAgICAg
fQogCiAgICAgICAgIHZvaWQqIG1hcHBlZE1lbW9yeSA9IE5VTEw7Ci0gICAgICAgIGludCBvZmZz
ZXQgPSBtTGluZUxvb3BJQi0+bWFwQnVmZmVyKHNwYWNlTmVlZGVkLCAmbWFwcGVkTWVtb3J5KTsK
LSAgICAgICAgaWYgKG9mZnNldCA9PSAtMSB8fCBtYXBwZWRNZW1vcnkgPT0gTlVMTCkKKyAgICAg
ICAgdW5zaWduZWQgaW50IG9mZnNldCA9IDA7CisgICAgICAgIGlmICghbUxpbmVMb29wSUItPm1h
cEJ1ZmZlcihzcGFjZU5lZWRlZCwgJm1hcHBlZE1lbW9yeSwgJm9mZnNldCkpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIEVSUigiQ291bGQgbm90IG1hcCBpbmRleCBidWZmZXIgZm9yIEdMX0xJTkVf
TE9PUC4iKTsKICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7
CiAgICAgICAgIH0KIAotICAgICAgICBzdGFydEluZGV4ID0gc3RhdGljX2Nhc3Q8VUlOVD4ob2Zm
c2V0KSAvIDQ7CisgICAgICAgIHN0YXJ0SW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+
KG9mZnNldCkgLyA0OwogICAgICAgICB1bnNpZ25lZCBpbnQgKmRhdGEgPSByZWludGVycHJldF9j
YXN0PHVuc2lnbmVkIGludCo+KG1hcHBlZE1lbW9yeSk7CiAKICAgICAgICAgc3dpdGNoICh0eXBl
KQpAQCAtMTU0OSwxMyArMTU5MCwxNiBAQCB2b2lkIFJlbmRlcmVyOTo6ZHJhd0xpbmVMb29wKEdM
c2l6ZWkgY291CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgaW50Pihjb3VudCArIDEpID4gKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQgc2hvcnQ+OjptYXgoKSAvIHNpemVvZih1bnNpZ25lZCBzaG9ydCkpKQorICAgICAgICAv
LyBDaGVja2VkIGJ5IFJlbmRlcmVyOTo6YXBwbHlQcmltaXRpdmVUeXBlCisgICAgICAgIEFTU0VS
VChjb3VudCA+PSAwKTsKKworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihj
b3VudCkgKyAxID4gKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgc2hvcnQ+OjptYXgoKSAv
IHNpemVvZih1bnNpZ25lZCBzaG9ydCkpKQogICAgICAgICB7CiAgICAgICAgICAgICBFUlIoIkNv
dWxkIG5vdCBjcmVhdGUgYSAxNi1iaXQgbG9vcGluZyBpbmRleCBidWZmZXIgZm9yIEdMX0xJTkVf
TE9PUCwgdG9vIG1hbnkgaW5kaWNlcyByZXF1aXJlZC4iKTsKICAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CiAgICAgICAgIH0KIAotICAgICAgICBjb25zdCBp
bnQgc3BhY2VOZWVkZWQgPSAoY291bnQgKyAxKSAqIHNpemVvZih1bnNpZ25lZCBzaG9ydCk7Cisg
ICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBzcGFjZU5lZWRlZCA9IChzdGF0aWNfY2FzdDx1bnNp
Z25lZCBpbnQ+KGNvdW50KSArIDEpICogc2l6ZW9mKHVuc2lnbmVkIHNob3J0KTsKICAgICAgICAg
aWYgKCFtTGluZUxvb3BJQi0+cmVzZXJ2ZUJ1ZmZlclNwYWNlKHNwYWNlTmVlZGVkLCBHTF9VTlNJ
R05FRF9TSE9SVCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIEVSUigiQ291bGQgbm90IHJlc2Vy
dmUgZW5vdWdoIHNwYWNlIGluIGxvb3BpbmcgaW5kZXggYnVmZmVyIGZvciBHTF9MSU5FX0xPT1Au
Iik7CkBAIC0xNTYzLDE0ICsxNjA3LDE0IEBAIHZvaWQgUmVuZGVyZXI5OjpkcmF3TGluZUxvb3Ao
R0xzaXplaSBjb3UKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQqIG1hcHBlZE1lbW9yeSA9IE5V
TEw7Ci0gICAgICAgIGludCBvZmZzZXQgPSBtTGluZUxvb3BJQi0+bWFwQnVmZmVyKHNwYWNlTmVl
ZGVkLCAmbWFwcGVkTWVtb3J5KTsKLSAgICAgICAgaWYgKG9mZnNldCA9PSAtMSB8fCBtYXBwZWRN
ZW1vcnkgPT0gTlVMTCkKKyAgICAgICAgdW5zaWduZWQgaW50IG9mZnNldDsKKyAgICAgICAgaWYg
KG1MaW5lTG9vcElCLT5tYXBCdWZmZXIoc3BhY2VOZWVkZWQsICZtYXBwZWRNZW1vcnksICZvZmZz
ZXQpKQogICAgICAgICB7CiAgICAgICAgICAgICBFUlIoIkNvdWxkIG5vdCBtYXAgaW5kZXggYnVm
ZmVyIGZvciBHTF9MSU5FX0xPT1AuIik7CiAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhcnRJbmRleCA9IHN0YXRp
Y19jYXN0PFVJTlQ+KG9mZnNldCkgLyAyOworICAgICAgICBzdGFydEluZGV4ID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQgaW50PihvZmZzZXQpIC8gMjsKICAgICAgICAgdW5zaWduZWQgc2hvcnQgKmRh
dGEgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIHNob3J0Kj4obWFwcGVkTWVtb3J5KTsKIAog
ICAgICAgICBzd2l0Y2ggKHR5cGUpCkBAIC0zMDg1LDcgKzMxMjksNyBAQCBTaGFkZXJFeGVjdXRh
YmxlICpSZW5kZXJlcjk6OmxvYWRFeGVjdXRhCiAgICAgcmV0dXJuIGV4ZWN1dGFibGU7CiB9CiAK
LVNoYWRlckV4ZWN1dGFibGUgKlJlbmRlcmVyOTo6Y29tcGlsZVRvRXhlY3V0YWJsZShnbDo6SW5m
b0xvZyAmaW5mb0xvZywgY29uc3QgY2hhciAqc2hhZGVySExTTCwgcng6OlNoYWRlclR5cGUgdHlw
ZSkKK1NoYWRlckV4ZWN1dGFibGUgKlJlbmRlcmVyOTo6Y29tcGlsZVRvRXhlY3V0YWJsZShnbDo6
SW5mb0xvZyAmaW5mb0xvZywgY29uc3QgY2hhciAqc2hhZGVySExTTCwgcng6OlNoYWRlclR5cGUg
dHlwZSwgRDNEV29ya2Fyb3VuZFR5cGUgd29ya2Fyb3VuZCkKIHsKICAgICBjb25zdCBjaGFyICpw
cm9maWxlID0gTlVMTDsKIApAQCAtMzEwMiw3ICszMTQ2LDExIEBAIFNoYWRlckV4ZWN1dGFibGUg
KlJlbmRlcmVyOTo6Y29tcGlsZVRvRXgKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0g
ICAgSUQzREJsb2IgKmJpbmFyeSA9IChJRDNEQmxvYiopY29tcGlsZVRvQmluYXJ5KGluZm9Mb2cs
IHNoYWRlckhMU0wsIHByb2ZpbGUsIEFOR0xFX0NPTVBJTEVfT1BUSU1JWkFUSU9OX0xFVkVMLCB0
cnVlKTsKKyAgICAvLyBBTkdMRSBpc3N1ZSA0ODY6CisgICAgLy8gV29yay1hcm91bmQgYSBEM0Q5
IGNvbXBpbGVyIGJ1ZyB0aGF0IHByZXNlbnRzIGl0c2VsZiB3aGVuIHVzaW5nIGNvbmRpdGlvbmFs
IGRpc2NhcmQsIGJ5IGRpc2FibGluZyBvcHRpbWl6YXRpb24KKyAgICBVSU5UIG9wdGltaXphdGlv
bkZsYWdzID0gKHdvcmthcm91bmQgPT0gQU5HTEVfRDNEX1dPUktBUk9VTkRfU00zX09QVElNSVpF
UiA/IEQzRENPTVBJTEVfU0tJUF9PUFRJTUlaQVRJT04gOiBBTkdMRV9DT01QSUxFX09QVElNSVpB
VElPTl9MRVZFTCk7CisKKyAgICBJRDNEQmxvYiAqYmluYXJ5ID0gKElEM0RCbG9iKiljb21waWxl
VG9CaW5hcnkoaW5mb0xvZywgc2hhZGVySExTTCwgcHJvZmlsZSwgb3B0aW1pemF0aW9uRmxhZ3Ms
IHRydWUpOwogICAgIGlmICghYmluYXJ5KQogICAgICAgICByZXR1cm4gTlVMTDsKIApJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1JlbmRlcmVyOS5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyOS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzAsNyArMTcwLDcgQEAgY2xhc3MgUmVuZGVyZXI5IDogcHVibGljIFJlbmRlcmVyCiAK
ICAgICAvLyBTaGFkZXIgb3BlcmF0aW9ucwogICAgIHZpcnR1YWwgU2hhZGVyRXhlY3V0YWJsZSAq
bG9hZEV4ZWN1dGFibGUoY29uc3Qgdm9pZCAqZnVuY3Rpb24sIHNpemVfdCBsZW5ndGgsIHJ4OjpT
aGFkZXJUeXBlIHR5cGUpOwotICAgIHZpcnR1YWwgU2hhZGVyRXhlY3V0YWJsZSAqY29tcGlsZVRv
RXhlY3V0YWJsZShnbDo6SW5mb0xvZyAmaW5mb0xvZywgY29uc3QgY2hhciAqc2hhZGVySExTTCwg
cng6OlNoYWRlclR5cGUgdHlwZSk7CisgICAgdmlydHVhbCBTaGFkZXJFeGVjdXRhYmxlICpjb21w
aWxlVG9FeGVjdXRhYmxlKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBjaGFyICpzaGFkZXJI
TFNMLCByeDo6U2hhZGVyVHlwZSB0eXBlLCBEM0RXb3JrYXJvdW5kVHlwZSB3b3JrYXJvdW5kKTsK
IAogICAgIC8vIEltYWdlIG9wZXJhdGlvbnMKICAgICB2aXJ0dWFsIEltYWdlICpjcmVhdGVJbWFn
ZSgpOwpAQCAtMjk4LDYgKzI5OCw3IEBAIGNsYXNzIFJlbmRlcmVyOSA6IHB1YmxpYyBSZW5kZXJl
cgogICAgIGdsOjpSZWN0YW5nbGUgbUN1clZpZXdwb3J0OwogICAgIGZsb2F0IG1DdXJOZWFyOwog
ICAgIGZsb2F0IG1DdXJGYXI7CisgICAgZmxvYXQgbUN1ckRlcHRoRnJvbnQ7CiAKICAgICBib29s
IG1Gb3JjZVNldEJsZW5kU3RhdGU7CiAgICAgZ2w6OkJsZW5kU3RhdGUgbUN1ckJsZW5kU3RhdGU7
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1Jl
bmRlcmVyMTEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIxMS5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIxMS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyLDcgKzEyLDcgQEAKICNpbmNsdWRlICJsaWJHTEVTdjIv
QnVmZmVyLmgiCiAjaW5jbHVkZSAibGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuaCIKICNpbmNsdWRl
ICJsaWJHTEVTdjIvRnJhbWVidWZmZXIuaCIKLSNpbmNsdWRlICJsaWJHTEVTdjIvUmVuZGVyQnVm
ZmVyLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5oIgogI2luY2x1ZGUgImxp
YkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjExLmgiCiAjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRl
cmVyL1JlbmRlclRhcmdldDExLmgiCiAjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL3JlbmRl
cmVyMTFfdXRpbHMuaCIKQEAgLTI0Myw4ICsyNDMsNiBAQCBFR0xpbnQgUmVuZGVyZXIxMTo6aW5p
dGlhbGl6ZSgpCiAgICAgewogICAgICAgICBEM0QxMV9NRVNTQUdFX0lEIGhpZGVNZXNzYWdlc1td
ID0KICAgICAgICAgewotICAgICAgICAgICAgRDNEMTFfTUVTU0FHRV9JRF9ERVZJQ0VfT01TRVRS
RU5ERVJUQVJHRVRTX0hBWkFSRCwKLSAgICAgICAgICAgIEQzRDExX01FU1NBR0VfSURfREVWSUNF
X1BTU0VUU0hBREVSUkVTT1VSQ0VTX0hBWkFSRCwKICAgICAgICAgICAgIEQzRDExX01FU1NBR0Vf
SURfREVWSUNFX0RSQVdfUkVOREVSVEFSR0VUVklFV19OT1RfU0VUCiAgICAgICAgIH07CiAKQEAg
LTMyMiw3ICszMjAsNiBAQCBFR0xpbnQgUmVuZGVyZXIxMTo6aW5pdGlhbGl6ZSgpCiAgICAgewog
ICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfRkxPQVQsCiAgICAgICAgIERYR0lfRk9STUFUX1IzMkcz
Ml9GTE9BVCwKLSAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FULAogICAgICAgICBE
WEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCiAgICAgfTsKIApAQCAtODM1LDIzICs4MzIs
MjkgQEAgYm9vbCBSZW5kZXJlcjExOjphcHBseVByaW1pdGl2ZVR5cGUoR0xlbgogewogICAgIEQz
RDExX1BSSU1JVElWRV9UT1BPTE9HWSBwcmltaXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJVkVf
VE9QT0xPR1lfVU5ERUZJTkVEOwogCisgICAgR0xzaXplaSBtaW5Db3VudCA9IDA7CisKICAgICBz
d2l0Y2ggKG1vZGUpCiAgICAgewotICAgICAgY2FzZSBHTF9QT0lOVFM6ICAgICAgICAgcHJpbWl0
aXZlVG9wb2xvZ3kgPSBEM0QxMV9QUklNSVRJVkVfVE9QT0xPR1lfUE9JTlRMSVNUOyAgIGJyZWFr
OwotICAgICAgY2FzZSBHTF9MSU5FUzogICAgICAgICAgcHJpbWl0aXZlVG9wb2xvZ3kgPSBEM0Rf
UFJJTUlUSVZFX1RPUE9MT0dZX0xJTkVMSVNUOyAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9M
SU5FX0xPT1A6ICAgICAgcHJpbWl0aXZlVG9wb2xvZ3kgPSBEM0RfUFJJTUlUSVZFX1RPUE9MT0dZ
X0xJTkVTVFJJUDsgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9MSU5FX1NUUklQOiAgICAgcHJp
bWl0aXZlVG9wb2xvZ3kgPSBEM0RfUFJJTUlUSVZFX1RPUE9MT0dZX0xJTkVTVFJJUDsgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBHTF9UUklBTkdMRVM6ICAgICAgcHJpbWl0aXZlVG9wb2xvZ3kgPSBE
M0RfUFJJTUlUSVZFX1RPUE9MT0dZX1RSSUFOR0xFTElTVDsgIGJyZWFrOwotICAgICAgY2FzZSBH
TF9UUklBTkdMRV9TVFJJUDogcHJpbWl0aXZlVG9wb2xvZ3kgPSBEM0RfUFJJTUlUSVZFX1RPUE9M
T0dZX1RSSUFOR0xFU1RSSVA7IGJyZWFrOworICAgICAgY2FzZSBHTF9QT0lOVFM6ICAgICAgICAg
cHJpbWl0aXZlVG9wb2xvZ3kgPSBEM0QxMV9QUklNSVRJVkVfVE9QT0xPR1lfUE9JTlRMSVNUOyAg
IG1pbkNvdW50ID0gMTsgYnJlYWs7CisgICAgICBjYXNlIEdMX0xJTkVTOiAgICAgICAgICBwcmlt
aXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfTElORUxJU1Q7ICAgICAgbWlu
Q291bnQgPSAyOyBicmVhazsKKyAgICAgIGNhc2UgR0xfTElORV9MT09QOiAgICAgIHByaW1pdGl2
ZVRvcG9sb2d5ID0gRDNEX1BSSU1JVElWRV9UT1BPTE9HWV9MSU5FU1RSSVA7ICAgICBtaW5Db3Vu
dCA9IDI7IGJyZWFrOworICAgICAgY2FzZSBHTF9MSU5FX1NUUklQOiAgICAgcHJpbWl0aXZlVG9w
b2xvZ3kgPSBEM0RfUFJJTUlUSVZFX1RPUE9MT0dZX0xJTkVTVFJJUDsgICAgIG1pbkNvdW50ID0g
MjsgYnJlYWs7CisgICAgICBjYXNlIEdMX1RSSUFOR0xFUzogICAgICBwcmltaXRpdmVUb3BvbG9n
eSA9IEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfVFJJQU5HTEVMSVNUOyAgbWluQ291bnQgPSAzOyBi
cmVhazsKKyAgICAgIGNhc2UgR0xfVFJJQU5HTEVfU1RSSVA6IHByaW1pdGl2ZVRvcG9sb2d5ID0g
RDNEX1BSSU1JVElWRV9UT1BPTE9HWV9UUklBTkdMRVNUUklQOyBtaW5Db3VudCA9IDM7IGJyZWFr
OwogICAgICAgICAgIC8vIGVtdWxhdGUgZmFucyB2aWEgcmV3cml0aW5nIGluZGV4IGJ1ZmZlcgot
ICAgICAgY2FzZSBHTF9UUklBTkdMRV9GQU46ICAgcHJpbWl0aXZlVG9wb2xvZ3kgPSBEM0RfUFJJ
TUlUSVZFX1RPUE9MT0dZX1RSSUFOR0xFTElTVDsgIGJyZWFrOworICAgICAgY2FzZSBHTF9UUklB
TkdMRV9GQU46ICAgcHJpbWl0aXZlVG9wb2xvZ3kgPSBEM0RfUFJJTUlUSVZFX1RPUE9MT0dZX1RS
SUFOR0xFTElTVDsgIG1pbkNvdW50ID0gMzsgYnJlYWs7CiAgICAgICBkZWZhdWx0OgogICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSwgZmFsc2UpOwogICAgIH0KIAotICAg
IG1EZXZpY2VDb250ZXh0LT5JQVNldFByaW1pdGl2ZVRvcG9sb2d5KHByaW1pdGl2ZVRvcG9sb2d5
KTsKKyAgICBpZiAocHJpbWl0aXZlVG9wb2xvZ3kgIT0gbUN1cnJlbnRQcmltaXRpdmVUb3BvbG9n
eSkKKyAgICB7CisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5JQVNldFByaW1pdGl2ZVRvcG9sb2d5
KHByaW1pdGl2ZVRvcG9sb2d5KTsKKyAgICAgICAgbUN1cnJlbnRQcmltaXRpdmVUb3BvbG9neSA9
IHByaW1pdGl2ZVRvcG9sb2d5OworICAgIH0KIAotICAgIHJldHVybiBjb3VudCA+IDA7CisgICAg
cmV0dXJuIGNvdW50ID49IG1pbkNvdW50OwogfQogCiBib29sIFJlbmRlcmVyMTE6OmFwcGx5UmVu
ZGVyVGFyZ2V0KGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIpCkBAIC05MTQsNiArOTE3LDI1
IEBAIGJvb2wgUmVuZGVyZXIxMTo6YXBwbHlSZW5kZXJUYXJnZXQoZ2w6OkYKICAgICAgICAgICAg
ICAgICByZW5kZXJUYXJnZXRGb3JtYXQgPSBjb2xvcmJ1ZmZlci0+Z2V0QWN0dWFsRm9ybWF0KCk7
CiAgICAgICAgICAgICAgICAgbWlzc2luZ0NvbG9yUmVuZGVyVGFyZ2V0ID0gZmFsc2U7CiAgICAg
ICAgICAgICB9CisKKyNpZmRlZiBfREVCVUcKKyAgICAgICAgICAgIC8vIFdvcmthcm91bmQgZm9y
IERlYnVnIFNFVFNIQURFUlJFU09VUkNFU19IQVpBUkQgRDNEMTEgd2FybmluZ3MKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaW50IHZlcnRleFNlcmlhbEluZGV4ID0gMDsgdmVydGV4U2VyaWFs
SW5kZXggPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRT
OyB2ZXJ0ZXhTZXJpYWxJbmRleCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlm
IChjb2xvcmJ1ZmZlci0+Z2V0VGV4dHVyZVNlcmlhbCgpICE9IDAgJiYgbUN1clZlcnRleFRleHR1
cmVTZXJpYWxzW3ZlcnRleFNlcmlhbEluZGV4XSA9PSBjb2xvcmJ1ZmZlci0+Z2V0VGV4dHVyZVNl
cmlhbCgpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0VGV4dHVy
ZShnbDo6U0FNUExFUl9WRVJURVgsIHZlcnRleFNlcmlhbEluZGV4LCBOVUxMKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50
IHBpeGVsU2VyaWFsSW5kZXggPSAwOyBwaXhlbFNlcmlhbEluZGV4IDwgZ2w6Ok1BWF9URVhUVVJF
X0lNQUdFX1VOSVRTOyBwaXhlbFNlcmlhbEluZGV4KyspCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgaWYgKGNvbG9yYnVmZmVyLT5nZXRUZXh0dXJlU2VyaWFsKCkgIT0gMCAmJiBtQ3Vy
UGl4ZWxUZXh0dXJlU2VyaWFsc1twaXhlbFNlcmlhbEluZGV4XSA9PSBjb2xvcmJ1ZmZlci0+Z2V0
VGV4dHVyZVNlcmlhbCgpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
c2V0VGV4dHVyZShnbDo6U0FNUExFUl9QSVhFTCwgcGl4ZWxTZXJpYWxJbmRleCwgTlVMTCk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTEwMTMsOSArMTAzNSw2IEBAIGJvb2wgUmVuZGVyZXIxMTo6YXBwbHlSZW5kZXJUYXJn
ZXQoZ2w6OkYKICAgICAgICAgbURlcHRoU3RlbmNpbEluaXRpYWxpemVkID0gdHJ1ZTsKICAgICB9
CiAKLSAgICBTYWZlUmVsZWFzZShmcmFtZWJ1ZmZlclJUVnMpOwotICAgIFNhZmVSZWxlYXNlKGZy
YW1lYnVmZmVyRFNWKTsKLQogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMTMwLDEzICsxMTQ5
LDE2IEBAIHZvaWQgUmVuZGVyZXIxMTo6ZHJhd0xpbmVMb29wKEdMc2l6ZWkgY28KICAgICAgICAg
fQogICAgIH0KIAotICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGNvdW50ICsgMSkg
PiAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBpbnQ+OjptYXgoKSAvIHNpemVvZih1bnNp
Z25lZCBpbnQpKSkKKyAgICAvLyBDaGVja2VkIGJ5IFJlbmRlcmVyMTE6OmFwcGx5UHJpbWl0aXZl
VHlwZQorICAgIEFTU0VSVChjb3VudCA+PSAwKTsKKworICAgIGlmIChzdGF0aWNfY2FzdDx1bnNp
Z25lZCBpbnQ+KGNvdW50KSArIDEgPiAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBpbnQ+
OjptYXgoKSAvIHNpemVvZih1bnNpZ25lZCBpbnQpKSkKICAgICB7CiAgICAgICAgIEVSUigiQ291
bGQgbm90IGNyZWF0ZSBhIDMyLWJpdCBsb29waW5nIGluZGV4IGJ1ZmZlciBmb3IgR0xfTElORV9M
T09QLCB0b28gbWFueSBpbmRpY2VzIHJlcXVpcmVkLiIpOwogICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX09VVF9PRl9NRU1PUlkpOwogICAgIH0KIAotICAgIGNvbnN0IHVuc2lnbmVkIGludCBz
cGFjZU5lZWRlZCA9IChjb3VudCArIDEpICogc2l6ZW9mKHVuc2lnbmVkIGludCk7CisgICAgY29u
c3QgdW5zaWduZWQgaW50IHNwYWNlTmVlZGVkID0gKHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4o
Y291bnQpICsgMSkgKiBzaXplb2YodW5zaWduZWQgaW50KTsKICAgICBpZiAoIW1MaW5lTG9vcElC
LT5yZXNlcnZlQnVmZmVyU3BhY2Uoc3BhY2VOZWVkZWQsIEdMX1VOU0lHTkVEX0lOVCkpCiAgICAg
ewogICAgICAgICBFUlIoIkNvdWxkIG5vdCByZXNlcnZlIGVub3VnaCBzcGFjZSBpbiBsb29waW5n
IGluZGV4IGJ1ZmZlciBmb3IgR0xfTElORV9MT09QLiIpOwpAQCAtMTE0NCwxNSArMTE2NiwxNSBA
QCB2b2lkIFJlbmRlcmVyMTE6OmRyYXdMaW5lTG9vcChHTHNpemVpIGNvCiAgICAgfQogCiAgICAg
dm9pZCogbWFwcGVkTWVtb3J5ID0gTlVMTDsKLSAgICBpbnQgb2Zmc2V0ID0gbUxpbmVMb29wSUIt
Pm1hcEJ1ZmZlcihzcGFjZU5lZWRlZCwgJm1hcHBlZE1lbW9yeSk7Ci0gICAgaWYgKG9mZnNldCA9
PSAtMSB8fCBtYXBwZWRNZW1vcnkgPT0gTlVMTCkKKyAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0Owor
ICAgIGlmICghbUxpbmVMb29wSUItPm1hcEJ1ZmZlcihzcGFjZU5lZWRlZCwgJm1hcHBlZE1lbW9y
eSwgJm9mZnNldCkpCiAgICAgewogICAgICAgICBFUlIoIkNvdWxkIG5vdCBtYXAgaW5kZXggYnVm
ZmVyIGZvciBHTF9MSU5FX0xPT1AuIik7CiAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VU
X09GX01FTU9SWSk7CiAgICAgfQogCiAgICAgdW5zaWduZWQgaW50ICpkYXRhID0gcmVpbnRlcnBy
ZXRfY2FzdDx1bnNpZ25lZCBpbnQqPihtYXBwZWRNZW1vcnkpOwotICAgIHVuc2lnbmVkIGludCBp
bmRleEJ1ZmZlck9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4ob2Zmc2V0KTsKKyAg
ICB1bnNpZ25lZCBpbnQgaW5kZXhCdWZmZXJPZmZzZXQgPSBvZmZzZXQ7CiAKICAgICBzd2l0Y2gg
KHR5cGUpCiAgICAgewpAQCAtMTIzMCw5ICsxMjUyLDEyIEBAIHZvaWQgUmVuZGVyZXIxMTo6ZHJh
d1RyaWFuZ2xlRmFuKEdMc2l6ZWkKICAgICAgICAgfQogICAgIH0KIAorICAgIC8vIENoZWNrZWQg
YnkgUmVuZGVyZXIxMTo6YXBwbHlQcmltaXRpdmVUeXBlCisgICAgQVNTRVJUKGNvdW50ID49IDMp
OworCiAgICAgY29uc3QgdW5zaWduZWQgaW50IG51bVRyaXMgPSBjb3VudCAtIDI7CiAKLSAgICBp
ZiAobnVtVHJpcyAqIDMgPiAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBpbnQ+OjptYXgo
KSAvIHNpemVvZih1bnNpZ25lZCBpbnQpKSkKKyAgICBpZiAobnVtVHJpcyA+IChzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkIGludD46Om1heCgpIC8gKHNpemVvZih1bnNpZ25lZCBpbnQpICog
MykpKQogICAgIHsKICAgICAgICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIGEgc2NyYXRjaCBpbmRl
eCBidWZmZXIgZm9yIEdMX1RSSUFOR0xFX0ZBTiwgdG9vIG1hbnkgaW5kaWNlcyByZXF1aXJlZC4i
KTsKICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKQEAgLTEyNDYs
MTUgKzEyNzEsMTUgQEAgdm9pZCBSZW5kZXJlcjExOjpkcmF3VHJpYW5nbGVGYW4oR0xzaXplaQog
ICAgIH0KIAogICAgIHZvaWQqIG1hcHBlZE1lbW9yeSA9IE5VTEw7Ci0gICAgaW50IG9mZnNldCA9
IG1UcmlhbmdsZUZhbklCLT5tYXBCdWZmZXIoc3BhY2VOZWVkZWQsICZtYXBwZWRNZW1vcnkpOwot
ICAgIGlmIChvZmZzZXQgPT0gLTEgfHwgbWFwcGVkTWVtb3J5ID09IE5VTEwpCisgICAgdW5zaWdu
ZWQgaW50IG9mZnNldDsKKyAgICBpZiAoIW1UcmlhbmdsZUZhbklCLT5tYXBCdWZmZXIoc3BhY2VO
ZWVkZWQsICZtYXBwZWRNZW1vcnksICZvZmZzZXQpKQogICAgIHsKICAgICAgICAgRVJSKCJDb3Vs
ZCBub3QgbWFwIHNjcmF0Y2ggaW5kZXggYnVmZmVyIGZvciBHTF9UUklBTkdMRV9GQU4uIik7CiAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CiAgICAgfQogCiAgICAg
dW5zaWduZWQgaW50ICpkYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBpbnQqPihtYXBw
ZWRNZW1vcnkpOwotICAgIHVuc2lnbmVkIGludCBpbmRleEJ1ZmZlck9mZnNldCA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkIGludD4ob2Zmc2V0KTsKKyAgICB1bnNpZ25lZCBpbnQgaW5kZXhCdWZmZXJP
ZmZzZXQgPSBvZmZzZXQ7CiAKICAgICBzd2l0Y2ggKHR5cGUpCiAgICAgewpAQCAtMTQ0Miw5ICsx
NDY3LDE4IEBAIHZvaWQgUmVuZGVyZXIxMTo6YXBwbHlVbmlmb3JtcyhnbDo6UHJvZ3IKICAgICB7
CiAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5Vbm1hcChwaXhlbENvbnN0YW50QnVmZmVyLCAwKTsK
ICAgICB9Ci0gICAgCi0gICAgbURldmljZUNvbnRleHQtPlZTU2V0Q29uc3RhbnRCdWZmZXJzKDAs
IDEsICZ2ZXJ0ZXhDb25zdGFudEJ1ZmZlcik7Ci0gICAgbURldmljZUNvbnRleHQtPlBTU2V0Q29u
c3RhbnRCdWZmZXJzKDAsIDEsICZwaXhlbENvbnN0YW50QnVmZmVyKTsKKworICAgIGlmIChtQ3Vy
cmVudFZlcnRleENvbnN0YW50QnVmZmVyICE9IHZlcnRleENvbnN0YW50QnVmZmVyKQorICAgIHsK
KyAgICAgICAgbURldmljZUNvbnRleHQtPlZTU2V0Q29uc3RhbnRCdWZmZXJzKDAsIDEsICZ2ZXJ0
ZXhDb25zdGFudEJ1ZmZlcik7CisgICAgICAgIG1DdXJyZW50VmVydGV4Q29uc3RhbnRCdWZmZXIg
PSB2ZXJ0ZXhDb25zdGFudEJ1ZmZlcjsKKyAgICB9CisKKyAgICBpZiAobUN1cnJlbnRQaXhlbENv
bnN0YW50QnVmZmVyICE9IHBpeGVsQ29uc3RhbnRCdWZmZXIpCisgICAgeworICAgICAgICBtRGV2
aWNlQ29udGV4dC0+UFNTZXRDb25zdGFudEJ1ZmZlcnMoMCwgMSwgJnBpeGVsQ29uc3RhbnRCdWZm
ZXIpOworICAgICAgICBtQ3VycmVudFBpeGVsQ29uc3RhbnRCdWZmZXIgPSBwaXhlbENvbnN0YW50
QnVmZmVyOworICAgIH0KIAogICAgIC8vIERyaXZlciB1bmlmb3JtcwogICAgIGlmICghbURyaXZl
ckNvbnN0YW50QnVmZmVyVlMpCkBAIC0xNDkyLDcgKzE1MjYsMTEgQEAgdm9pZCBSZW5kZXJlcjEx
OjphcHBseVVuaWZvcm1zKGdsOjpQcm9ncgogICAgIH0KIAogICAgIC8vIG5lZWRlZCBmb3IgdGhl
IHBvaW50IHNwcml0ZSBnZW9tZXRyeSBzaGFkZXIKLSAgICBtRGV2aWNlQ29udGV4dC0+R1NTZXRD
b25zdGFudEJ1ZmZlcnMoMCwgMSwgJm1Ecml2ZXJDb25zdGFudEJ1ZmZlclBTKTsKKyAgICBpZiAo
bUN1cnJlbnRHZW9tZXRyeUNvbnN0YW50QnVmZmVyICE9IG1Ecml2ZXJDb25zdGFudEJ1ZmZlclBT
KQorICAgIHsKKyAgICAgICAgbURldmljZUNvbnRleHQtPkdTU2V0Q29uc3RhbnRCdWZmZXJzKDAs
IDEsICZtRHJpdmVyQ29uc3RhbnRCdWZmZXJQUyk7CisgICAgICAgIG1DdXJyZW50R2VvbWV0cnlD
b25zdGFudEJ1ZmZlciA9IG1Ecml2ZXJDb25zdGFudEJ1ZmZlclBTOworICAgIH0KIH0KIAogdm9p
ZCBSZW5kZXJlcjExOjpjbGVhcihjb25zdCBnbDo6Q2xlYXJQYXJhbWV0ZXJzICZjbGVhclBhcmFt
cywgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZUJ1ZmZlcikKQEAgLTE1NDksOCArMTU4Nyw2IEBAIHZv
aWQgUmVuZGVyZXIxMTo6Y2xlYXIoY29uc3QgZ2w6OkNsZWFyUGEKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclBhcmFtcy5jb2xvckNs
ZWFyVmFsdWUuYmx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjbGVhclBhcmFtcy5jb2xvckNsZWFyVmFsdWUuYWxwaGEgfTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5DbGVhclJlbmRlclRhcmdldFZpZXco
ZnJhbWVidWZmZXJSVFYsIGNsZWFyVmFsdWVzKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAg
ZnJhbWVidWZmZXJSVFYtPlJlbGVhc2UoKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQpAQCAtMTU4OCw4ICsxNjI0LDYgQEAgdm9pZCBS
ZW5kZXJlcjExOjpjbGVhcihjb25zdCBnbDo6Q2xlYXJQYQogICAgICAgICAgICAgICAgIFVJTlQ4
IHN0ZW5jaWxDbGVhciA9IGNsZWFyUGFyYW1zLnN0ZW5jaWxDbGVhclZhbHVlICYgMHgwMDAwMDBG
RjsKIAogICAgICAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5DbGVhckRlcHRoU3RlbmNpbFZp
ZXcoZnJhbWVidWZmZXJEU1YsIGNsZWFyRmxhZ3MsIGRlcHRoQ2xlYXIsIHN0ZW5jaWxDbGVhcik7
Ci0KLSAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlckRTVi0+UmVsZWFzZSgpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTc5Nyw2ICsxODMxLDE0IEBAIHZvaWQgUmVuZGVy
ZXIxMTo6bWFya0FsbFN0YXRlRGlydHkoKQogICAgIG1BcHBsaWVkUHJvZ3JhbUJpbmFyeVNlcmlh
bCA9IDA7CiAgICAgbWVtc2V0KCZtQXBwbGllZFZlcnRleENvbnN0YW50cywgMCwgc2l6ZW9mKGR4
X1ZlcnRleENvbnN0YW50cykpOwogICAgIG1lbXNldCgmbUFwcGxpZWRQaXhlbENvbnN0YW50cywg
MCwgc2l6ZW9mKGR4X1BpeGVsQ29uc3RhbnRzKSk7CisKKyAgICBtSW5wdXRMYXlvdXRDYWNoZS5t
YXJrRGlydHkoKTsKKworICAgIG1DdXJyZW50VmVydGV4Q29uc3RhbnRCdWZmZXIgPSBOVUxMOwor
ICAgIG1DdXJyZW50UGl4ZWxDb25zdGFudEJ1ZmZlciA9IE5VTEw7CisgICAgbUN1cnJlbnRHZW9t
ZXRyeUNvbnN0YW50QnVmZmVyID0gTlVMTDsKKworICAgIG1DdXJyZW50UHJpbWl0aXZlVG9wb2xv
Z3kgPSBEM0RfUFJJTUlUSVZFX1RPUE9MT0dZX1VOREVGSU5FRDsKIH0KIAogdm9pZCBSZW5kZXJl
cjExOjpyZWxlYXNlRGV2aWNlUmVzb3VyY2VzKCkKQEAgLTI0MjQsNyArMjQ2Niw2IEBAIGJvb2wg
UmVuZGVyZXIxMTo6Y29weUltYWdlKGdsOjpGcmFtZWJ1ZmYKICAgICBUZXh0dXJlU3RvcmFnZTEx
XzJEICpzdG9yYWdlMTEgPSBUZXh0dXJlU3RvcmFnZTExXzJEOjptYWtlVGV4dHVyZVN0b3JhZ2Ux
MV8yRChzdG9yYWdlLT5nZXRTdG9yYWdlSW5zdGFuY2UoKSk7CiAgICAgaWYgKCFzdG9yYWdlMTEp
CiAgICAgewotICAgICAgICBzb3VyY2UtPlJlbGVhc2UoKTsKICAgICAgICAgRVJSKCJGYWlsZWQg
dG8gcmV0cmlldmUgdGhlIHRleHR1cmUgc3RvcmFnZSBmcm9tIHRoZSBkZXN0aW5hdGlvbi4iKTsK
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7CiAgICAg
fQpAQCAtMjQzMiw3ICsyNDczLDYgQEAgYm9vbCBSZW5kZXJlcjExOjpjb3B5SW1hZ2UoZ2w6OkZy
YW1lYnVmZgogICAgIFJlbmRlclRhcmdldDExICpkZXN0UmVuZGVyVGFyZ2V0ID0gUmVuZGVyVGFy
Z2V0MTE6Om1ha2VSZW5kZXJUYXJnZXQxMShzdG9yYWdlMTEtPmdldFJlbmRlclRhcmdldChsZXZl
bCkpOwogICAgIGlmICghZGVzdFJlbmRlclRhcmdldCkKICAgICB7Ci0gICAgICAgIHNvdXJjZS0+
UmVsZWFzZSgpOwogICAgICAgICBFUlIoIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUgcmVuZGVyIHRh
cmdldCBmcm9tIHRoZSBkZXN0aW5hdGlvbiBzdG9yYWdlLiIpOwogICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIGZhbHNlKTsKICAgICB9CkBAIC0yNDQwLDcgKzI0ODAs
NiBAQCBib29sIFJlbmRlcmVyMTE6OmNvcHlJbWFnZShnbDo6RnJhbWVidWZmCiAgICAgSUQzRDEx
UmVuZGVyVGFyZ2V0VmlldyAqZGVzdCA9IGRlc3RSZW5kZXJUYXJnZXQtPmdldFJlbmRlclRhcmdl
dFZpZXcoKTsKICAgICBpZiAoIWRlc3QpCiAgICAgewotICAgICAgICBzb3VyY2UtPlJlbGVhc2Uo
KTsKICAgICAgICAgRVJSKCJGYWlsZWQgdG8gcmV0cmlldmUgdGhlIHJlbmRlciB0YXJnZXQgdmll
dyBmcm9tIHRoZSBkZXN0aW5hdGlvbiByZW5kZXIgdGFyZ2V0LiIpOwogICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIGZhbHNlKTsKICAgICB9CkBAIC0yNDU0LDkgKzI0
OTMsNiBAQCBib29sIFJlbmRlcmVyMTE6OmNvcHlJbWFnZShnbDo6RnJhbWVidWZmCiAgICAgYm9v
bCByZXQgPSBjb3B5VGV4dHVyZShzb3VyY2UsIHNvdXJjZVJlY3QsIHNvdXJjZVJlbmRlclRhcmdl
dC0+Z2V0V2lkdGgoKSwgc291cmNlUmVuZGVyVGFyZ2V0LT5nZXRIZWlnaHQoKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlc3QsIGRlc3RSZWN0LCBkZXN0UmVuZGVyVGFyZ2V0LT5nZXRX
aWR0aCgpLCBkZXN0UmVuZGVyVGFyZ2V0LT5nZXRIZWlnaHQoKSwgZGVzdEZvcm1hdCk7CiAKLSAg
ICBzb3VyY2UtPlJlbGVhc2UoKTsKLSAgICBkZXN0LT5SZWxlYXNlKCk7Ci0KICAgICByZXR1cm4g
cmV0OwogfQogCkBAIC0yNDg3LDcgKzI1MjMsNiBAQCBib29sIFJlbmRlcmVyMTE6OmNvcHlJbWFn
ZShnbDo6RnJhbWVidWZmCiAgICAgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlICpzdG9yYWdlMTEgPSBU
ZXh0dXJlU3RvcmFnZTExX0N1YmU6Om1ha2VUZXh0dXJlU3RvcmFnZTExX0N1YmUoc3RvcmFnZS0+
Z2V0U3RvcmFnZUluc3RhbmNlKCkpOwogICAgIGlmICghc3RvcmFnZTExKQogICAgIHsKLSAgICAg
ICAgc291cmNlLT5SZWxlYXNlKCk7CiAgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRo
ZSB0ZXh0dXJlIHN0b3JhZ2UgZnJvbSB0aGUgZGVzdGluYXRpb24uIik7CiAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOwogICAgIH0KQEAgLTI0OTUsNyAr
MjUzMCw2IEBAIGJvb2wgUmVuZGVyZXIxMTo6Y29weUltYWdlKGdsOjpGcmFtZWJ1ZmYKICAgICBS
ZW5kZXJUYXJnZXQxMSAqZGVzdFJlbmRlclRhcmdldCA9IFJlbmRlclRhcmdldDExOjptYWtlUmVu
ZGVyVGFyZ2V0MTEoc3RvcmFnZTExLT5nZXRSZW5kZXJUYXJnZXQodGFyZ2V0LCBsZXZlbCkpOwog
ICAgIGlmICghZGVzdFJlbmRlclRhcmdldCkKICAgICB7Ci0gICAgICAgIHNvdXJjZS0+UmVsZWFz
ZSgpOwogICAgICAgICBFUlIoIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUgcmVuZGVyIHRhcmdldCBm
cm9tIHRoZSBkZXN0aW5hdGlvbiBzdG9yYWdlLiIpOwogICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX09VVF9PRl9NRU1PUlksIGZhbHNlKTsKICAgICB9CkBAIC0yNTAzLDcgKzI1MzcsNiBAQCBi
b29sIFJlbmRlcmVyMTE6OmNvcHlJbWFnZShnbDo6RnJhbWVidWZmCiAgICAgSUQzRDExUmVuZGVy
VGFyZ2V0VmlldyAqZGVzdCA9IGRlc3RSZW5kZXJUYXJnZXQtPmdldFJlbmRlclRhcmdldFZpZXco
KTsKICAgICBpZiAoIWRlc3QpCiAgICAgewotICAgICAgICBzb3VyY2UtPlJlbGVhc2UoKTsKICAg
ICAgICAgRVJSKCJGYWlsZWQgdG8gcmV0cmlldmUgdGhlIHJlbmRlciB0YXJnZXQgdmlldyBmcm9t
IHRoZSBkZXN0aW5hdGlvbiByZW5kZXIgdGFyZ2V0LiIpOwogICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX09VVF9PRl9NRU1PUlksIGZhbHNlKTsKICAgICB9CkBAIC0yNTE3LDkgKzI1NTAsNiBA
QCBib29sIFJlbmRlcmVyMTE6OmNvcHlJbWFnZShnbDo6RnJhbWVidWZmCiAgICAgYm9vbCByZXQg
PSBjb3B5VGV4dHVyZShzb3VyY2UsIHNvdXJjZVJlY3QsIHNvdXJjZVJlbmRlclRhcmdldC0+Z2V0
V2lkdGgoKSwgc291cmNlUmVuZGVyVGFyZ2V0LT5nZXRIZWlnaHQoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRlc3QsIGRlc3RSZWN0LCBkZXN0UmVuZGVyVGFyZ2V0LT5nZXRXaWR0aCgp
LCBkZXN0UmVuZGVyVGFyZ2V0LT5nZXRIZWlnaHQoKSwgZGVzdEZvcm1hdCk7CiAKLSAgICBzb3Vy
Y2UtPlJlbGVhc2UoKTsKLSAgICBkZXN0LT5SZWxlYXNlKCk7Ci0KICAgICByZXR1cm4gcmV0Owog
fQogCkBAIC0yODAwLDcgKzI4MzAsNyBAQCBTaGFkZXJFeGVjdXRhYmxlICpSZW5kZXJlcjExOjps
b2FkRXhlY3V0CiAgICAgcmV0dXJuIGV4ZWN1dGFibGU7CiB9CiAKLVNoYWRlckV4ZWN1dGFibGUg
KlJlbmRlcmVyMTE6OmNvbXBpbGVUb0V4ZWN1dGFibGUoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGNv
bnN0IGNoYXIgKnNoYWRlckhMU0wsIHJ4OjpTaGFkZXJUeXBlIHR5cGUpCitTaGFkZXJFeGVjdXRh
YmxlICpSZW5kZXJlcjExOjpjb21waWxlVG9FeGVjdXRhYmxlKGdsOjpJbmZvTG9nICZpbmZvTG9n
LCBjb25zdCBjaGFyICpzaGFkZXJITFNMLCByeDo6U2hhZGVyVHlwZSB0eXBlLCBEM0RXb3JrYXJv
dW5kVHlwZSB3b3JrYXJvdW5kKQogewogICAgIGNvbnN0IGNoYXIgKnByb2ZpbGUgPSBOVUxMOwog
CkBAIC0yODY5LDcgKzI4OTksNiBAQCBib29sIFJlbmRlcmVyMTE6OmdldFJlbmRlclRhcmdldFJl
c291cmNlCiAgICAgICAgIHsKICAgICAgICAgICAgIElEM0QxMVJlc291cmNlICp0ZXh0dXJlUmVz
b3VyY2UgPSBOVUxMOwogICAgICAgICAgICAgY29sb3JCdWZmZXJSVFYtPkdldFJlc291cmNlKCZ0
ZXh0dXJlUmVzb3VyY2UpOwotICAgICAgICAgICAgY29sb3JCdWZmZXJSVFYtPlJlbGVhc2UoKTsK
IAogICAgICAgICAgICAgaWYgKHRleHR1cmVSZXNvdXJjZSkKICAgICAgICAgICAgIHsKQEAgLTM0
MDQsNiArMzQzMywxNiBAQCBib29sIFJlbmRlcmVyMTE6OmJsaXRSZW5kZXJidWZmZXJSZWN0KGNv
CiB7CiAgICAgQVNTRVJUKHJlYWRSZWN0LndpZHRoID09IGRyYXdSZWN0LndpZHRoICYmIHJlYWRS
ZWN0LmhlaWdodCA9PSBkcmF3UmVjdC5oZWlnaHQpOwogCisgICAgUmVuZGVyVGFyZ2V0MTEgKmRy
YXdSZW5kZXJUYXJnZXQxMSA9IFJlbmRlclRhcmdldDExOjptYWtlUmVuZGVyVGFyZ2V0MTEoZHJh
d1JlbmRlclRhcmdldCk7CisgICAgaWYgKCFkcmF3UmVuZGVyVGFyZ2V0KQorICAgIHsKKyAgICAg
ICAgRVJSKCJGYWlsZWQgdG8gcmV0cmlldmUgdGhlIGRyYXcgcmVuZGVyIHRhcmdldCBmcm9tIHRo
ZSBkcmF3IGZyYW1lYnVmZmVyLiIpOworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9P
Rl9NRU1PUlksIGZhbHNlKTsKKyAgICB9CisKKyAgICBJRDNEMTFUZXh0dXJlMkQgKmRyYXdUZXh0
dXJlID0gZHJhd1JlbmRlclRhcmdldDExLT5nZXRUZXh0dXJlKCk7CisgICAgdW5zaWduZWQgaW50
IGRyYXdTdWJyZXNvdXJjZSA9IGRyYXdSZW5kZXJUYXJnZXQxMS0+Z2V0U3VicmVzb3VyY2VJbmRl
eCgpOworCiAgICAgUmVuZGVyVGFyZ2V0MTEgKnJlYWRSZW5kZXJUYXJnZXQxMSA9IFJlbmRlclRh
cmdldDExOjptYWtlUmVuZGVyVGFyZ2V0MTEocmVhZFJlbmRlclRhcmdldCk7CiAgICAgaWYgKCFy
ZWFkUmVuZGVyVGFyZ2V0KQogICAgIHsKQEAgLTM0MTUsMTYgKzM0NTQsMTMgQEAgYm9vbCBSZW5k
ZXJlcjExOjpibGl0UmVuZGVyYnVmZmVyUmVjdChjbwogICAgIHVuc2lnbmVkIGludCByZWFkU3Vi
cmVzb3VyY2UgPSAwOwogICAgIGlmIChyZWFkUmVuZGVyVGFyZ2V0LT5nZXRTYW1wbGVzKCkgPiAw
KQogICAgIHsKLSAgICAgICAgSUQzRDExVGV4dHVyZTJEICp1bnJlc29sdmVkVGV4dHVyZSA9IHJl
YWRSZW5kZXJUYXJnZXQxMS0+Z2V0VGV4dHVyZSgpOwotCi0gICAgICAgIHJlYWRUZXh0dXJlID0g
cmVzb2x2ZU11bHRpc2FtcGxlZFRleHR1cmUodW5yZXNvbHZlZFRleHR1cmUsIHJlYWRSZW5kZXJU
YXJnZXQxMS0+Z2V0U3VicmVzb3VyY2VJbmRleCgpKTsKKyAgICAgICAgcmVhZFRleHR1cmUgPSBy
ZXNvbHZlTXVsdGlzYW1wbGVkVGV4dHVyZShyZWFkUmVuZGVyVGFyZ2V0MTEtPmdldFRleHR1cmUo
KSwgcmVhZFJlbmRlclRhcmdldDExLT5nZXRTdWJyZXNvdXJjZUluZGV4KCkpOwogICAgICAgICBy
ZWFkU3VicmVzb3VyY2UgPSAwOwotCi0gICAgICAgIHVucmVzb2x2ZWRUZXh0dXJlLT5SZWxlYXNl
KCk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CiAgICAgICAgIHJlYWRUZXh0dXJlID0gcmVhZFJl
bmRlclRhcmdldDExLT5nZXRUZXh0dXJlKCk7CisgICAgICAgIHJlYWRUZXh0dXJlLT5BZGRSZWYo
KTsKICAgICAgICAgcmVhZFN1YnJlc291cmNlID0gcmVhZFJlbmRlclRhcmdldDExLT5nZXRTdWJy
ZXNvdXJjZUluZGV4KCk7CiAgICAgfQogCkBAIC0zNDM0LDE3ICszNDcwLDYgQEAgYm9vbCBSZW5k
ZXJlcjExOjpibGl0UmVuZGVyYnVmZmVyUmVjdChjbwogICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX09VVF9PRl9NRU1PUlksIGZhbHNlKTsKICAgICB9CiAKLSAgICBSZW5kZXJUYXJnZXQxMSAq
ZHJhd1JlbmRlclRhcmdldDExID0gUmVuZGVyVGFyZ2V0MTE6Om1ha2VSZW5kZXJUYXJnZXQxMShk
cmF3UmVuZGVyVGFyZ2V0KTsKLSAgICBpZiAoIWRyYXdSZW5kZXJUYXJnZXQpCi0gICAgewotICAg
ICAgICByZWFkVGV4dHVyZS0+UmVsZWFzZSgpOwotICAgICAgICBFUlIoIkZhaWxlZCB0byByZXRy
aWV2ZSB0aGUgZHJhdyByZW5kZXIgdGFyZ2V0IGZyb20gdGhlIGRyYXcgZnJhbWVidWZmZXIuIik7
Ci0gICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOwotICAg
IH0KLQotICAgIElEM0QxMVRleHR1cmUyRCAqZHJhd1RleHR1cmUgPSBkcmF3UmVuZGVyVGFyZ2V0
MTEtPmdldFRleHR1cmUoKTsKLSAgICB1bnNpZ25lZCBpbnQgZHJhd1N1YnJlc291cmNlID0gZHJh
d1JlbmRlclRhcmdldDExLT5nZXRTdWJyZXNvdXJjZUluZGV4KCk7Ci0KICAgICBEM0QxMV9CT1gg
cmVhZEJveDsKICAgICByZWFkQm94LmxlZnQgPSByZWFkUmVjdC54OwogICAgIHJlYWRCb3gucmln
aHQgPSByZWFkUmVjdC54ICsgcmVhZFJlY3Qud2lkdGg7CkBAIC0zNDYwLDggKzM0ODUsNyBAQCBi
b29sIFJlbmRlcmVyMTE6OmJsaXRSZW5kZXJidWZmZXJSZWN0KGNvCiAgICAgbURldmljZUNvbnRl
eHQtPkNvcHlTdWJyZXNvdXJjZVJlZ2lvbihkcmF3VGV4dHVyZSwgZHJhd1N1YnJlc291cmNlLCBk
cmF3UmVjdC54LCBkcmF3UmVjdC55LCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVhZFRleHR1cmUsIHJlYWRTdWJyZXNvdXJjZSwgcFNyY0JveCk7CiAKLSAg
ICByZWFkVGV4dHVyZS0+UmVsZWFzZSgpOwotICAgIGRyYXdUZXh0dXJlLT5SZWxlYXNlKCk7Cisg
ICAgU2FmZVJlbGVhc2UocmVhZFRleHR1cmUpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVy
MTEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL1JlbmRlcmVyMTEuaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjExLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE1NSw3ICsxNTUsNyBAQCBjbGFzcyBSZW5kZXJlcjExIDogcHVibGljIFJlbmRl
cmVyCiAKICAgICAvLyBTaGFkZXIgb3BlcmF0aW9ucwogICAgIHZpcnR1YWwgU2hhZGVyRXhlY3V0
YWJsZSAqbG9hZEV4ZWN1dGFibGUoY29uc3Qgdm9pZCAqZnVuY3Rpb24sIHNpemVfdCBsZW5ndGgs
IHJ4OjpTaGFkZXJUeXBlIHR5cGUpOwotICAgIHZpcnR1YWwgU2hhZGVyRXhlY3V0YWJsZSAqY29t
cGlsZVRvRXhlY3V0YWJsZShnbDo6SW5mb0xvZyAmaW5mb0xvZywgY29uc3QgY2hhciAqc2hhZGVy
SExTTCwgcng6OlNoYWRlclR5cGUgdHlwZSk7CisgICAgdmlydHVhbCBTaGFkZXJFeGVjdXRhYmxl
ICpjb21waWxlVG9FeGVjdXRhYmxlKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBjaGFyICpz
aGFkZXJITFNMLCByeDo6U2hhZGVyVHlwZSB0eXBlLCBEM0RXb3JrYXJvdW5kVHlwZSB3b3JrYXJv
dW5kKTsKIAogICAgIC8vIEltYWdlIG9wZXJhdGlvbnMKICAgICB2aXJ0dWFsIEltYWdlICpjcmVh
dGVJbWFnZSgpOwpAQCAtMjM1LDcgKzIzNSw3IEBAIGNsYXNzIFJlbmRlcmVyMTEgOiBwdWJsaWMg
UmVuZGVyZXIKICAgICAgICAgdW5zaWduZWQgaW50IHF1YWxpdHlMZXZlbHNbRDNEMTFfTUFYX01V
TFRJU0FNUExFX1NBTVBMRV9DT1VOVF07CiAgICAgfTsKIAotICAgIHR5cGVkZWYgc3RkOjp1bm9y
ZGVyZWRfbWFwPERYR0lfRk9STUFULCBNdWx0aXNhbXBsZVN1cHBvcnRJbmZvPiBNdWx0aXNhbXBs
ZVN1cHBvcnRNYXA7CisgICAgdHlwZWRlZiBzdGQ6OnVub3JkZXJlZF9tYXA8RFhHSV9GT1JNQVQs
IE11bHRpc2FtcGxlU3VwcG9ydEluZm8sIHN0ZDo6aGFzaDxpbnQ+ID4gTXVsdGlzYW1wbGVTdXBw
b3J0TWFwOwogICAgIE11bHRpc2FtcGxlU3VwcG9ydE1hcCBtTXVsdGlzYW1wbGVTdXBwb3J0TWFw
OwogCiAgICAgdW5zaWduZWQgaW50IG1NYXhTdXBwb3J0ZWRTYW1wbGVzOwpAQCAtMjg4LDYgKzI4
OCw5IEBAIGNsYXNzIFJlbmRlcmVyMTEgOiBwdWJsaWMgUmVuZGVyZXIKICAgICBmbG9hdCBtQ3Vy
TmVhcjsKICAgICBmbG9hdCBtQ3VyRmFyOwogCisgICAgLy8gQ3VycmVudGx5IGFwcGxpZWQgcHJp
bWl0aXZlIHRvcG9sb2d5CisgICAgRDNEMTFfUFJJTUlUSVZFX1RPUE9MT0dZIG1DdXJyZW50UHJp
bWl0aXZlVG9wb2xvZ3k7CisKICAgICB1bnNpZ25lZCBpbnQgbUFwcGxpZWRJQlNlcmlhbDsKICAg
ICB1bnNpZ25lZCBpbnQgbUFwcGxpZWRTdG9yYWdlSUJTZXJpYWw7CiAgICAgdW5zaWduZWQgaW50
IG1BcHBsaWVkSUJPZmZzZXQ7CkBAIC0yOTgsMTAgKzMwMSwxNCBAQCBjbGFzcyBSZW5kZXJlcjEx
IDogcHVibGljIFJlbmRlcmVyCiAgICAgZHhfVmVydGV4Q29uc3RhbnRzIG1WZXJ0ZXhDb25zdGFu
dHM7CiAgICAgZHhfVmVydGV4Q29uc3RhbnRzIG1BcHBsaWVkVmVydGV4Q29uc3RhbnRzOwogICAg
IElEM0QxMUJ1ZmZlciAqbURyaXZlckNvbnN0YW50QnVmZmVyVlM7CisgICAgSUQzRDExQnVmZmVy
ICptQ3VycmVudFZlcnRleENvbnN0YW50QnVmZmVyOwogCiAgICAgZHhfUGl4ZWxDb25zdGFudHMg
bVBpeGVsQ29uc3RhbnRzOwogICAgIGR4X1BpeGVsQ29uc3RhbnRzIG1BcHBsaWVkUGl4ZWxDb25z
dGFudHM7CiAgICAgSUQzRDExQnVmZmVyICptRHJpdmVyQ29uc3RhbnRCdWZmZXJQUzsKKyAgICBJ
RDNEMTFCdWZmZXIgKm1DdXJyZW50UGl4ZWxDb25zdGFudEJ1ZmZlcjsKKworICAgIElEM0QxMUJ1
ZmZlciAqbUN1cnJlbnRHZW9tZXRyeUNvbnN0YW50QnVmZmVyOwogCiAgICAgLy8gVmVydGV4LCBp
bmRleCBhbmQgaW5wdXQgbGF5b3V0cwogICAgIFZlcnRleERhdGFNYW5hZ2VyICptVmVydGV4RGF0
YU1hbmFnZXI7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1JlbmRlcmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyLmNwcAkocmV2aXNpb24gMTU5NTMyKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0LDYgKzE0LDcgQEAKICNpbmNsdWRlICJsaWJHTEVT
djIvcmVuZGVyZXIvUmVuZGVyZXI5LmgiCiAjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1Jl
bmRlcmVyMTEuaCIKICNpbmNsdWRlICJsaWJHTEVTdjIvdXRpbGl0aWVzLmgiCisjaW5jbHVkZSAi
dGhpcmRfcGFydHkvdHJhY2VfZXZlbnQvdHJhY2VfZXZlbnQuaCIKIAogI2lmICFkZWZpbmVkKEFO
R0xFX0VOQUJMRV9EM0QxMSkKIC8vIEVuYWJsZXMgdXNlIG9mIHRoZSBEaXJlY3QzRCAxMSBBUEkg
Zm9yIGEgZGVmYXVsdCBkaXNwbGF5LCB3aGVuIGF2YWlsYWJsZQpAQCAtNDAsNiArNDEsNyBAQCBS
ZW5kZXJlcjo6flJlbmRlcmVyKCkKIAogYm9vbCBSZW5kZXJlcjo6aW5pdGlhbGl6ZUNvbXBpbGVy
KCkKIHsKKyAgICBUUkFDRV9FVkVOVDAoImdwdSIsICJpbml0aWFsaXplQ29tcGlsZXIiKTsKICNp
ZiBkZWZpbmVkKEFOR0xFX1BSRUxPQURFRF9EM0RDT01QSUxFUl9NT0RVTEVfTkFNRVMpCiAgICAg
Ly8gRmluZCBhIEQzRENvbXBpbGVyIG1vZHVsZSB0aGF0IGhhZCBhbHJlYWR5IGJlZW4gbG9hZGVk
IGJhc2VkIG9uIGEgcHJlZGVmaW5lZCBsaXN0IG9mIHZlcnNpb25zLgogICAgIHN0YXRpYyBUQ0hB
UiogZDNkQ29tcGlsZXJOYW1lc1tdID0gQU5HTEVfUFJFTE9BREVEX0QzRENPTVBJTEVSX01PRFVM
RV9OQU1FUzsKQEAgLTUxLDEzICs1MywxNiBAQCBib29sIFJlbmRlcmVyOjppbml0aWFsaXplQ29t
cGlsZXIoKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0jZWxzZQotICAg
IC8vIExvYWQgdGhlIHZlcnNpb24gb2YgdGhlIEQzRENvbXBpbGVyIERMTCBhc3NvY2lhdGVkIHdp
dGggdGhlIERpcmVjdDNEIHZlcnNpb24gQU5HTEUgd2FzIGJ1aWx0IHdpdGguCi0gICAgbUQzZENv
bXBpbGVyTW9kdWxlID0gTG9hZExpYnJhcnkoRDNEQ09NUElMRVJfRExMKTsKICNlbmRpZiAgLy8g
QU5HTEVfUFJFTE9BREVEX0QzRENPTVBJTEVSX01PRFVMRV9OQU1FUwogCiAgICAgaWYgKCFtRDNk
Q29tcGlsZXJNb2R1bGUpCiAgICAgeworICAgICAgICAvLyBMb2FkIHRoZSB2ZXJzaW9uIG9mIHRo
ZSBEM0RDb21waWxlciBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBEaXJlY3QzRCB2ZXJzaW9uIEFO
R0xFIHdhcyBidWlsdCB3aXRoLgorICAgICAgICBtRDNkQ29tcGlsZXJNb2R1bGUgPSBMb2FkTGli
cmFyeShEM0RDT01QSUxFUl9ETEwpOworICAgIH0KKworICAgIGlmICghbUQzZENvbXBpbGVyTW9k
dWxlKQorICAgIHsKICAgICAgICAgRVJSKCJObyBEM0QgY29tcGlsZXIgbW9kdWxlIGZvdW5kIC0g
YWJvcnRpbmchXG4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L1JlbmRlcmVyLmgJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTMs
NiArOTMsMTIgQEAgZW51bSBTaGFkZXJUeXBlCiAgICAgU0hBREVSX0dFT01FVFJZCiB9OwogCitl
bnVtIEQzRFdvcmthcm91bmRUeXBlCit7CisgICAgQU5HTEVfRDNEX1dPUktBUk9VTkRfTk9ORSwK
KyAgICBBTkdMRV9EM0RfV09SS0FST1VORF9TTTNfT1BUSU1JWkVSCit9OworCiBjbGFzcyBSZW5k
ZXJlcgogewogICBwdWJsaWM6CkBAIC0yMDcsNyArMjEzLDcgQEAgY2xhc3MgUmVuZGVyZXIKIAog
ICAgIC8vIFNoYWRlciBvcGVyYXRpb25zCiAgICAgdmlydHVhbCBTaGFkZXJFeGVjdXRhYmxlICps
b2FkRXhlY3V0YWJsZShjb25zdCB2b2lkICpmdW5jdGlvbiwgc2l6ZV90IGxlbmd0aCwgcng6OlNo
YWRlclR5cGUgdHlwZSkgPSAwOwotICAgIHZpcnR1YWwgU2hhZGVyRXhlY3V0YWJsZSAqY29tcGls
ZVRvRXhlY3V0YWJsZShnbDo6SW5mb0xvZyAmaW5mb0xvZywgY29uc3QgY2hhciAqc2hhZGVySExT
TCwgcng6OlNoYWRlclR5cGUgdHlwZSkgPSAwOworICAgIHZpcnR1YWwgU2hhZGVyRXhlY3V0YWJs
ZSAqY29tcGlsZVRvRXhlY3V0YWJsZShnbDo6SW5mb0xvZyAmaW5mb0xvZywgY29uc3QgY2hhciAq
c2hhZGVySExTTCwgcng6OlNoYWRlclR5cGUgdHlwZSwgRDNEV29ya2Fyb3VuZFR5cGUgd29ya2Fy
b3VuZCkgPSAwOwogCiAgICAgLy8gSW1hZ2Ugb3BlcmF0aW9ucwogICAgIHZpcnR1YWwgSW1hZ2Ug
KmNyZWF0ZUltYWdlKCkgPSAwOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW45LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbjkuY3BwCShyZXZp
c2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1N3YXBDaGFpbjkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw5IEBAIHZv
aWQgU3dhcENoYWluOTo6cmVsZWFzZSgpCiAKIHN0YXRpYyBEV09SRCBjb252ZXJ0SW50ZXJ2YWwo
RUdMaW50IGludGVydmFsKQogeworI2lmIEFOR0xFX0ZPUkNFX1ZTWU5DX09GRgorICAgIHJldHVy
biBEM0RQUkVTRU5UX0lOVEVSVkFMX0lNTUVESUFURTsKKyNlbHNlCiAgICAgc3dpdGNoKGludGVy
dmFsKQogICAgIHsKICAgICAgIGNhc2UgMDogcmV0dXJuIEQzRFBSRVNFTlRfSU5URVJWQUxfSU1N
RURJQVRFOwpAQCAtODIsNiArODUsNyBAQCBzdGF0aWMgRFdPUkQgY29udmVydEludGVydmFsKEVH
TGludCBpbnRlCiAgICAgfQogCiAgICAgcmV0dXJuIEQzRFBSRVNFTlRfSU5URVJWQUxfREVGQVVM
VDsKKyNlbmRpZgogfQogCiBFR0xpbnQgU3dhcENoYWluOTo6cmVzaXplKGludCBiYWNrYnVmZmVy
V2lkdGgsIGludCBiYWNrYnVmZmVySGVpZ2h0KQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW4xMS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW4x
MS5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluMTEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzUs
NiArMjc1LDcgQEAgRUdMaW50IFN3YXBDaGFpbjExOjpyZXNldE9mZnNjcmVlblRleHR1cgogICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHJlc3VsdCA9IG9m
ZnNjcmVlblRleHR1cmVSZXNvdXJjZS0+R2V0U2hhcmVkSGFuZGxlKCZtU2hhcmVIYW5kbGUpOwor
ICAgICAgICAgICAgICAgIG9mZnNjcmVlblRleHR1cmVSZXNvdXJjZS0+UmVsZWFzZSgpOwogCiAg
ICAgICAgICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgICAgICAgICAgICAgIHsKQEAg
LTQ2NCwxOCArNDY1LDYgQEAgRUdMaW50IFN3YXBDaGFpbjExOjpyZXNldChpbnQgYmFja2J1ZmZl
cgogCiAgICAgaWYgKG1XaW5kb3cpCiAgICAgewotICAgICAgICAvLyBXZSBjYW5ub3QgY3JlYXRl
IGEgc3dhcCBjaGFpbiBmb3IgYW4gSFdORCB0aGF0IGlzIG93bmVkIGJ5IGEgZGlmZmVyZW50IHBy
b2Nlc3MKLSAgICAgICAgRFdPUkQgY3VycmVudFByb2Nlc3NJZCA9IEdldEN1cnJlbnRQcm9jZXNz
SWQoKTsKLSAgICAgICAgRFdPUkQgd25kUHJvY2Vzc0lkOwotICAgICAgICBHZXRXaW5kb3dUaHJl
YWRQcm9jZXNzSWQobVdpbmRvdywgJnduZFByb2Nlc3NJZCk7Ci0KLSAgICAgICAgaWYgKGN1cnJl
bnRQcm9jZXNzSWQgIT0gd25kUHJvY2Vzc0lkKQotICAgICAgICB7Ci0gICAgICAgICAgICBFUlIo
IkNvdWxkIG5vdCBjcmVhdGUgc3dhcCBjaGFpbiwgd2luZG93IG93bmVkIGJ5IGRpZmZlcmVudCBw
cm9jZXNzIik7Ci0gICAgICAgICAgICByZWxlYXNlKCk7Ci0gICAgICAgICAgICByZXR1cm4gRUdM
X0JBRF9OQVRJVkVfV0lORE9XOwotICAgICAgICB9Ci0KICAgICAgICAgSURYR0lGYWN0b3J5ICpm
YWN0b3J5ID0gbVJlbmRlcmVyLT5nZXREeGdpRmFjdG9yeSgpOwogCiAgICAgICAgIERYR0lfU1dB
UF9DSEFJTl9ERVNDIHN3YXBDaGFpbkRlc2MgPSB7MH07CkBAIC01MDcsNyArNDk2LDIxIEBAIEVH
TGludCBTd2FwQ2hhaW4xMTo6cmVzZXQoaW50IGJhY2tidWZmZXIKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRUdM
X0JBRF9BTExPQzsKKyAgICAgICAgICAgICAgICAvLyBXZSBjYW5ub3QgY3JlYXRlIGEgc3dhcCBj
aGFpbiBmb3IgYW4gSFdORCB0aGF0IGlzIG93bmVkIGJ5IGEgZGlmZmVyZW50IHByb2Nlc3Mgb24g
c29tZSB2ZXJzaW9ucyBvZgorICAgICAgICAgICAgICAgIC8vIHdpbmRvd3MKKyAgICAgICAgICAg
ICAgICBEV09SRCBjdXJyZW50UHJvY2Vzc0lkID0gR2V0Q3VycmVudFByb2Nlc3NJZCgpOworICAg
ICAgICAgICAgICAgIERXT1JEIHduZFByb2Nlc3NJZDsKKyAgICAgICAgICAgICAgICBHZXRXaW5k
b3dUaHJlYWRQcm9jZXNzSWQobVdpbmRvdywgJnduZFByb2Nlc3NJZCk7CisKKyAgICAgICAgICAg
ICAgICBpZiAoY3VycmVudFByb2Nlc3NJZCAhPSB3bmRQcm9jZXNzSWQpCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUgc3dhcCBjaGFp
biwgd2luZG93IG93bmVkIGJ5IGRpZmZlcmVudCBwcm9jZXNzIik7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBFR0xfQkFEX05BVElWRV9XSU5ET1c7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBFR0xfQkFEX0FMTE9DOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCkBAIC02NjcsNyArNjcwLDEyIEBAIEVHTGludCBTd2FwQ2hhaW4xMTo6c3dh
cFJlY3QoRUdMaW50IHgsIEUKIAogICAgIC8vIERyYXcKICAgICBkZXZpY2VDb250ZXh0LT5EcmF3
KDQsIDApOworCisjaWYgQU5HTEVfRk9SQ0VfVlNZTkNfT0ZGCisgICAgcmVzdWx0ID0gbVN3YXBD
aGFpbi0+UHJlc2VudCgwLCAwKTsKKyNlbHNlCiAgICAgcmVzdWx0ID0gbVN3YXBDaGFpbi0+UHJl
c2VudChtU3dhcEludGVydmFsLCAwKTsKKyNlbmRpZgogCiAgICAgaWYgKHJlc3VsdCA9PSBEWEdJ
X0VSUk9SX0RFVklDRV9SRU1PVkVEKQogICAgIHsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW4uaAko
cmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9Td2FwQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMTIsNiArMTIsMTAgQEAK
IAogI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCiAKKyNpZiAhZGVmaW5lZChBTkdMRV9G
T1JDRV9WU1lOQ19PRkYpCisjZGVmaW5lIEFOR0xFX0ZPUkNFX1ZTWU5DX09GRiAwCisjZW5kaWYK
KwogbmFtZXNwYWNlIHJ4CiB7CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2UxMS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFn
ZTExLmNwcAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZTExLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjksNyArNjksNiBAQCBib29sIFRleHR1cmVTdG9yYWdlMTE6OklzVGV4dHVyZUZvcm1hdFJl
CiAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNOgogICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9BOF9VTk9STToKICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZM
T0FUOgotICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQ6CiAgICAgICBjYXNl
IERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVDoKICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
QjhHOFI4QThfVU5PUk06CiAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4X1VOT1JNOgpAQCAtODAs
NiArNzksNyBAQCBib29sIFRleHR1cmVTdG9yYWdlMTE6OklzVGV4dHVyZUZvcm1hdFJlCiAgICAg
ICBjYXNlIERYR0lfRk9STUFUX0JDMV9VTk9STToKICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMy
X1VOT1JNOiAKICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMzX1VOT1JNOgorICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQ6IC8vIG5vdCByZW5kZXJhYmxlIG9uIGFsbCBkZXZp
Y2VzCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgIGRlZmF1bHQ6CiAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7CkBAIC0xODcsMTUgKzE4Nyw2IEBAIHZvaWQgVGV4dHVyZVN0b3JhZ2UxMTo6Z2Vu
ZXJhdGVNaXBtYXBMYXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFJU
ViwgZGVzdEFyZWEsIGRlc3QtPmdldFdpZHRoKCksIGRlc3QtPmdldEhlaWdodCgpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBKTsKICAgICAgICAgfQotCi0gICAg
ICAgIGlmIChzb3VyY2VTUlYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNvdXJjZVNSVi0+UmVs
ZWFzZSgpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChkZXN0UlRWKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBkZXN0UlRWLT5SZWxlYXNlKCk7Ci0gICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTU1
OCw3ICs1NDksNyBAQCBSZW5kZXJUYXJnZXQgKlRleHR1cmVTdG9yYWdlMTFfQ3ViZTo6Z2V0CiAK
ICAgICAgICAgICAgIEQzRDExX1NIQURFUl9SRVNPVVJDRV9WSUVXX0RFU0Mgc3J2RGVzYzsKICAg
ICAgICAgICAgIHNydkRlc2MuRm9ybWF0ID0gbVNoYWRlclJlc291cmNlRm9ybWF0OwotICAgICAg
ICAgICAgc3J2RGVzYy5WaWV3RGltZW5zaW9uID0gRDNEMTFfU1JWX0RJTUVOU0lPTl9URVhUVVJF
Q1VCRTsKKyAgICAgICAgICAgIHNydkRlc2MuVmlld0RpbWVuc2lvbiA9IEQzRDExX1NSVl9ESU1F
TlNJT05fVEVYVFVSRTJEQVJSQVk7IC8vIFdpbGwgYmUgdXNlZCB3aXRoIFRleHR1cmUyRCBzYW1w
bGVyLCBub3QgVGV4dHVyZUN1YmUKICAgICAgICAgICAgIHNydkRlc2MuVGV4dHVyZTJEQXJyYXku
TW9zdERldGFpbGVkTWlwID0gbGV2ZWw7CiAgICAgICAgICAgICBzcnZEZXNjLlRleHR1cmUyREFy
cmF5Lk1pcExldmVscyA9IDE7CiAgICAgICAgICAgICBzcnZEZXNjLlRleHR1cmUyREFycmF5LkZp
cnN0QXJyYXlTbGljZSA9IGZhY2VJZHg7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVy
OS5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyOS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1
LDcgKzk1LDE0IEBAIGJvb2wgVmVydGV4QnVmZmVyOTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1dGUKICAg
ICAgICAgRFdPUkQgbG9ja0ZsYWdzID0gbUR5bmFtaWNVc2FnZSA/IEQzRExPQ0tfTk9PVkVSV1JJ
VEUgOiAwOwogCiAgICAgICAgIHZvaWQgKm1hcFB0ciA9IE5VTEw7Ci0gICAgICAgIEhSRVNVTFQg
cmVzdWx0ID0gbVZlcnRleEJ1ZmZlci0+TG9jayhvZmZzZXQsIHNwYWNlUmVxdWlyZWQoYXR0cmli
LCBjb3VudCwgaW5zdGFuY2VzKSwgJm1hcFB0ciwgbG9ja0ZsYWdzKTsKKworICAgICAgICB1bnNp
Z25lZCBpbnQgbWFwU2l6ZTsKKyAgICAgICAgaWYgKCFzcGFjZVJlcXVpcmVkKGF0dHJpYiwgY291
bnQsIGluc3RhbmNlcywgJm1hcFNpemUpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1WZXJ0ZXhCdWZm
ZXItPkxvY2sob2Zmc2V0LCBtYXBTaXplLCAmbWFwUHRyLCBsb2NrRmxhZ3MpOwogCiAgICAgICAg
IGlmIChGQUlMRUQocmVzdWx0KSkKICAgICAgICAgewpAQCAtMTY3LDE5ICsxNzQsMjEgQEAgYm9v
bCBWZXJ0ZXhCdWZmZXI5OjpzdG9yZVJhd0RhdGEoY29uc3QgdgogICAgIH0KIH0KIAotdW5zaWdu
ZWQgaW50IFZlcnRleEJ1ZmZlcjk6OmdldFNwYWNlUmVxdWlyZWQoY29uc3QgZ2w6OlZlcnRleEF0
dHJpYnV0ZSAmYXR0cmliLCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcykgY29uc3QK
K2Jvb2wgVmVydGV4QnVmZmVyOTo6Z2V0U3BhY2VSZXF1aXJlZChjb25zdCBnbDo6VmVydGV4QXR0
cmlidXRlICZhdHRyaWIsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqb3V0U3BhY2VSZXF1
aXJlZCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3BhY2VSZXF1aXJlZChhdHRyaWIsIGNvdW50LCBp
bnN0YW5jZXMpOworICAgIHJldHVybiBzcGFjZVJlcXVpcmVkKGF0dHJpYiwgY291bnQsIGluc3Rh
bmNlcywgb3V0U3BhY2VSZXF1aXJlZCk7CiB9CiAKIGJvb2wgVmVydGV4QnVmZmVyOTo6cmVxdWly
ZXNDb252ZXJzaW9uKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYikgY29uc3QKIHsK
LSAgICByZXR1cm4gZm9ybWF0Q29udmVydGVyKGF0dHJpYikuaWRlbnRpdHk7CisgICAgcmV0dXJu
ICFmb3JtYXRDb252ZXJ0ZXIoYXR0cmliKS5pZGVudGl0eTsKIH0KIAogdW5zaWduZWQgaW50IFZl
cnRleEJ1ZmZlcjk6OmdldFZlcnRleFNpemUoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0
cmliKSBjb25zdAogewotICAgIHJldHVybiBzcGFjZVJlcXVpcmVkKGF0dHJpYiwgMSwgMCk7Cisg
ICAgdW5zaWduZWQgaW50IHNwYWNlUmVxdWlyZWQ7CisgICAgcmV0dXJuIGdldFNwYWNlUmVxdWly
ZWQoYXR0cmliLCAxLCAwLCAmc3BhY2VSZXF1aXJlZCkgPyBzcGFjZVJlcXVpcmVkIDogMDsKIH0K
IAogRDNEREVDTFRZUEUgVmVydGV4QnVmZmVyOTo6Z2V0RGVjbFR5cGUoY29uc3QgZ2w6OlZlcnRl
eEF0dHJpYnV0ZSAmYXR0cmliKSBjb25zdApAQCAtNDY5LDE3ICs0NzgsNTIgQEAgY29uc3QgVmVy
dGV4QnVmZmVyOTo6Rm9ybWF0Q29udmVydGVyICZWZQogICAgIHJldHVybiBtRm9ybWF0Q29udmVy
dGVyc1t0eXBlSW5kZXgoYXR0cmlidXRlLm1UeXBlKV1bYXR0cmlidXRlLm1Ob3JtYWxpemVkXVth
dHRyaWJ1dGUubVNpemUgLSAxXTsKIH0KIAotdW5zaWduZWQgaW50IFZlcnRleEJ1ZmZlcjk6OnNw
YWNlUmVxdWlyZWQoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBzdGQ6OnNpemVf
dCBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpCitib29sIFZlcnRleEJ1ZmZlcjk6OnNwYWNlUmVx
dWlyZWQoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBzdGQ6OnNpemVfdCBjb3Vu
dCwgR0xzaXplaSBpbnN0YW5jZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50ICpvdXRTcGFjZVJlcXVpcmVkKQogewogICAgIHVuc2lnbmVkIGludCBlbGVt
ZW50U2l6ZSA9IGZvcm1hdENvbnZlcnRlcihhdHRyaWIpLm91dHB1dEVsZW1lbnRTaXplOwogCi0g
ICAgaWYgKGluc3RhbmNlcyA9PSAwIHx8IGF0dHJpYi5tRGl2aXNvciA9PSAwKQorICAgIGlmIChh
dHRyaWIubUFycmF5RW5hYmxlZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBlbGVtZW50U2l6ZSAq
IGNvdW50OworICAgICAgICB1bnNpZ25lZCBpbnQgZWxlbWVudENvdW50ID0gMDsKKyAgICAgICAg
aWYgKGluc3RhbmNlcyA9PSAwIHx8IGF0dHJpYi5tRGl2aXNvciA9PSAwKQorICAgICAgICB7Cisg
ICAgICAgICAgICBlbGVtZW50Q291bnQgPSBjb3VudDsKKyAgICAgICAgfQorICAgICAgICBlbHNl
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGlu
c3RhbmNlcykgPCBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGludD46Om1heCgpIC0gKGF0
dHJpYi5tRGl2aXNvciAtIDEpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFJv
dW5kIHVwCisgICAgICAgICAgICAgICAgZWxlbWVudENvdW50ID0gKHN0YXRpY19jYXN0PHVuc2ln
bmVkIGludD4oaW5zdGFuY2VzKSArIChhdHRyaWIubURpdmlzb3IgLSAxKSkgLyBhdHRyaWIubURp
dmlzb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgZWxlbWVudENvdW50ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihp
bnN0YW5jZXMpIC8gYXR0cmliLm1EaXZpc29yOworICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgaWYgKGVsZW1lbnRTaXplIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQg
aW50Pjo6bWF4KCkgLyBlbGVtZW50Q291bnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChv
dXRTcGFjZVJlcXVpcmVkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICpvdXRTcGFj
ZVJlcXVpcmVkID0gZWxlbWVudFNpemUgKiBlbGVtZW50Q291bnQ7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQogICAgIH0KICAgICBlbHNl
CiAgICAgewotICAgICAgICByZXR1cm4gZWxlbWVudFNpemUgKiAoKGluc3RhbmNlcyArIGF0dHJp
Yi5tRGl2aXNvciAtIDEpIC8gYXR0cmliLm1EaXZpc29yKTsKKyAgICAgICAgY29uc3QgdW5zaWdu
ZWQgaW50IGVsZW1lbnRTaXplID0gNDsKKyAgICAgICAgaWYgKG91dFNwYWNlUmVxdWlyZWQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgICpvdXRTcGFjZVJlcXVpcmVkID0gZWxlbWVudFNpemUgKiA0
OworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH0KIApJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXI5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9WZXJ0ZXhCdWZmZXI5LmgJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyOS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBAIGNsYXNzIFZlcnRleEJ1ZmZlcjkgOiBwdWJsaWMg
VmVydGV4QnVmZmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBvZmZzZXQpOwogICAgIHZpcnR1YWwgYm9vbCBzdG9yZVJhd0RhdGEoY29uc3Qgdm9p
ZCogZGF0YSwgdW5zaWduZWQgaW50IHNpemUsIHVuc2lnbmVkIGludCBvZmZzZXQpOwogCi0gICAg
dmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0U3BhY2VSZXF1aXJlZChjb25zdCBnbDo6VmVydGV4QXR0
cmlidXRlICZhdHRyaWIsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgZ2V0U3BhY2VSZXF1aXJlZChjb25zdCBnbDo6VmVydGV4QXR0cmli
dXRlICZhdHRyaWIsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzLCB1bnNpZ25lZCBp
bnQgKm91dFNwYWNlUmVxdWlyZWQpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVz
Q29udmVyc2lvbihjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIpIGNvbnN0OwogCkBA
IC04Miw3ICs4Miw4IEBAIGNsYXNzIFZlcnRleEJ1ZmZlcjkgOiBwdWJsaWMgVmVydGV4QnVmZmUK
ICAgICBzdGF0aWMgdW5zaWduZWQgaW50IHR5cGVJbmRleChHTGVudW0gdHlwZSk7CiAgICAgc3Rh
dGljIGNvbnN0IEZvcm1hdENvbnZlcnRlciAmZm9ybWF0Q29udmVydGVyKGNvbnN0IGdsOjpWZXJ0
ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSk7CiAKLSAgICBzdGF0aWMgdW5zaWduZWQgaW50IHNwYWNl
UmVxdWlyZWQoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBzdGQ6OnNpemVfdCBj
b3VudCwgR0xzaXplaSBpbnN0YW5jZXMpOworICAgIHN0YXRpYyBib29sIHNwYWNlUmVxdWlyZWQo
Y29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBzdGQ6OnNpemVfdCBjb3VudCwgR0xz
aXplaSBpbnN0YW5jZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgKm91dFNwYWNlUmVxdWlyZWQpOwogfTsKIAogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXIxMS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0
ZXhCdWZmZXIxMS5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyMTEuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTIsMTggKzE1Miw0MCBAQCBib29sIFZlcnRleEJ1ZmZlcjExOjpzdG9yZVJhd0Rh
dGEoY29uc3QgCiAgICAgfQogfQogCi11bnNpZ25lZCBpbnQgVmVydGV4QnVmZmVyMTE6OmdldFNw
YWNlUmVxdWlyZWQoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBHTHNpemVpIGNv
dW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgaW5zdGFuY2VzKSBjb25zdAorYm9vbCBWZXJ0ZXhCdWZmZXIxMTo6Z2V0U3BhY2VSZXF1aXJl
ZChjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsIEdMc2l6ZWkgY291bnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzLCB1bnNp
Z25lZCBpbnQgKm91dFNwYWNlUmVxdWlyZWQpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgaW50IGVs
ZW1lbnRTaXplID0gZ2V0VmVydGV4Q29udmVyc2lvbihhdHRyaWIpLm91dHB1dEVsZW1lbnRTaXpl
OwogCisgICAgdW5zaWduZWQgaW50IGVsZW1lbnRDb3VudCA9IDA7CiAgICAgaWYgKGluc3RhbmNl
cyA9PSAwIHx8IGF0dHJpYi5tRGl2aXNvciA9PSAwKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGVs
ZW1lbnRTaXplICogY291bnQ7CisgICAgICAgIGVsZW1lbnRDb3VudCA9IGNvdW50OwogICAgIH0K
ICAgICBlbHNlCiAgICAgewotICAgICAgICByZXR1cm4gZWxlbWVudFNpemUgKiAoKGluc3RhbmNl
cyArIGF0dHJpYi5tRGl2aXNvciAtIDEpIC8gYXR0cmliLm1EaXZpc29yKTsKKyAgICAgICAgaWYg
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oaW5zdGFuY2VzKSA8IHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQgaW50Pjo6bWF4KCkgLSAoYXR0cmliLm1EaXZpc29yIC0gMSkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIC8vIFJvdW5kIHVwCisgICAgICAgICAgICBlbGVtZW50Q291bnQgPSAo
c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihpbnN0YW5jZXMpICsgKGF0dHJpYi5tRGl2aXNvciAt
IDEpKSAvIGF0dHJpYi5tRGl2aXNvcjsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAg
IHsKKyAgICAgICAgICAgIGVsZW1lbnRDb3VudCA9IGluc3RhbmNlcyAvIGF0dHJpYi5tRGl2aXNv
cjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChlbGVtZW50U2l6ZSA8PSBzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkIGludD46Om1heCgpIC8gZWxlbWVudENvdW50KQorICAgIHsKKyAg
ICAgICAgaWYgKG91dFNwYWNlUmVxdWlyZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgICpvdXRT
cGFjZVJlcXVpcmVkID0gZWxlbWVudFNpemUgKiBlbGVtZW50Q291bnQ7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyMTEuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjExLmgJ
KHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvcmVuZGVyZXIvVmVydGV4QnVmZmVyMTEuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTAgKzI2
LDExIEBAIGNsYXNzIFZlcnRleEJ1ZmZlcjExIDogcHVibGljIFZlcnRleEJ1ZmYKICAgICBzdGF0
aWMgVmVydGV4QnVmZmVyMTEgKm1ha2VWZXJ0ZXhCdWZmZXIxMShWZXJ0ZXhCdWZmZXIgKnZldGV4
QnVmZmVyKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzdG9yZVZlcnRleEF0dHJpYnV0ZXMoY29uc3Qg
Z2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBHTGludCBzdGFydCwgR0xzaXplaSBjb3VudCwg
R0xzaXplaSBpbnN0YW5jZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBvZmZzZXQpOwogICAgIHZpcnR1YWwgYm9vbCBzdG9yZVJhd0RhdGEoY29u
c3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgaW50IHNpemUsIHVuc2lnbmVkIGludCBvZmZzZXQpOwog
Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0U3BhY2VSZXF1aXJlZChjb25zdCBnbDo6VmVy
dGV4QXR0cmlidXRlICZhdHRyaWIsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0U3BhY2VSZXF1aXJlZChjb25zdCBnbDo6VmVydGV4
QXR0cmlidXRlICZhdHRyaWIsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqb3V0U3BhY2VSZXF1
aXJlZCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNDb252ZXJzaW9uKGNvbnN0
IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYikgY29uc3Q7CiAKQEAgLTcwLDQgKzcxLDQgQEAg
Y2xhc3MgVmVydGV4QnVmZmVyMTEgOiBwdWJsaWMgVmVydGV4QnVmZgogCiB9CiAKLSNlbmRpZiAv
LyBMSUJHTEVTVjJfUkVOREVSRVJfVkVSVEVYQlVGRkVSMTFfSF8KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX1ZFUlRFWEJVRkZFUjExX0hf
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1Zl
cnRleEJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXIuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1
ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDQ3ICs4Nyw3NiBAQCBib29sIFZlcnRleEJ1
ZmZlckludGVyZmFjZTo6ZGlzY2FyZCgpCiAgICAgcmV0dXJuIG1WZXJ0ZXhCdWZmZXItPmRpc2Nh
cmQoKTsKIH0KIAotaW50IFZlcnRleEJ1ZmZlckludGVyZmFjZTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1
dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xpbnQgc3RhcnQsIEdMc2l6
ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKQorYm9vbCBWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6
OnN0b3JlVmVydGV4QXR0cmlidXRlcyhjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIs
ICBHTGludCBzdGFydCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAq
b3V0U3RyZWFtT2Zmc2V0KQogeworICAgIHVuc2lnbmVkIGludCBzcGFjZVJlcXVpcmVkOworICAg
IGlmICghbVZlcnRleEJ1ZmZlci0+Z2V0U3BhY2VSZXF1aXJlZChhdHRyaWIsIGNvdW50LCBpbnN0
YW5jZXMsICZzcGFjZVJlcXVpcmVkKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBpZiAobVdyaXRlUG9zaXRpb24gKyBzcGFjZVJlcXVpcmVkIDwgbVdyaXRlUG9z
aXRpb24pCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgaWYgKCFy
ZXNlcnZlU3BhY2UobVJlc2VydmVkU3BhY2UpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIC0xOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIG1SZXNlcnZlZFNwYWNlID0gMDsKIAog
ICAgIGlmICghbVZlcnRleEJ1ZmZlci0+c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGF0dHJpYiwgc3Rh
cnQsIGNvdW50LCBpbnN0YW5jZXMsIG1Xcml0ZVBvc2l0aW9uKSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiAtMTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGludCBvbGRXcml0
ZVBvcyA9IHN0YXRpY19jYXN0PGludD4obVdyaXRlUG9zaXRpb24pOwotICAgIG1Xcml0ZVBvc2l0
aW9uICs9IG1WZXJ0ZXhCdWZmZXItPmdldFNwYWNlUmVxdWlyZWQoYXR0cmliLCBjb3VudCwgaW5z
dGFuY2VzKTsKKyAgICBpZiAob3V0U3RyZWFtT2Zmc2V0KQorICAgIHsKKyAgICAgICAgKm91dFN0
cmVhbU9mZnNldCA9IG1Xcml0ZVBvc2l0aW9uOworICAgIH0KKworICAgIG1Xcml0ZVBvc2l0aW9u
ICs9IHNwYWNlUmVxdWlyZWQ7CiAKLSAgICByZXR1cm4gb2xkV3JpdGVQb3M7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWludCBWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OnN0b3JlUmF3RGF0YShjb25z
dCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSkKK2Jvb2wgVmVydGV4QnVmZmVySW50ZXJm
YWNlOjpzdG9yZVJhd0RhdGEoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgaW50IHNpemUsIHVu
c2lnbmVkIGludCAqb3V0U3RyZWFtT2Zmc2V0KQogeworICAgIGlmIChtV3JpdGVQb3NpdGlvbiAr
IHNpemUgPCBtV3JpdGVQb3NpdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKICAgICBpZiAoIXJlc2VydmVTcGFjZShtUmVzZXJ2ZWRTcGFjZSkpCiAgICAgewotICAg
ICAgICByZXR1cm4gLTE7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgbVJlc2Vy
dmVkU3BhY2UgPSAwOwogCiAgICAgaWYgKCFtVmVydGV4QnVmZmVyLT5zdG9yZVJhd0RhdGEoZGF0
YSwgc2l6ZSwgbVdyaXRlUG9zaXRpb24pKQogICAgIHsKLSAgICAgICAgcmV0dXJuIC0xOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKG91dFN0cmVhbU9mZnNldCkKKyAg
ICB7CisgICAgICAgICpvdXRTdHJlYW1PZmZzZXQgPSBtV3JpdGVQb3NpdGlvbjsKICAgICB9CiAK
LSAgICBpbnQgb2xkV3JpdGVQb3MgPSBzdGF0aWNfY2FzdDxpbnQ+KG1Xcml0ZVBvc2l0aW9uKTsK
ICAgICBtV3JpdGVQb3NpdGlvbiArPSBzaXplOwogCi0gICAgcmV0dXJuIG9sZFdyaXRlUG9zOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFZlcnRleEJ1ZmZlckludGVyZmFjZTo6cmVzZXJ2
ZVZlcnRleFNwYWNlKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSwgR0xzaXpl
aSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpCiB7Ci0gICAgdW5zaWduZWQgaW50IHJlcXVpcmVk
U3BhY2UgPSBtVmVydGV4QnVmZmVyLT5nZXRTcGFjZVJlcXVpcmVkKGF0dHJpYnV0ZSwgY291bnQs
IGluc3RhbmNlcyk7CisgICAgdW5zaWduZWQgaW50IHJlcXVpcmVkU3BhY2U7CisgICAgaWYgKCFt
VmVydGV4QnVmZmVyLT5nZXRTcGFjZVJlcXVpcmVkKGF0dHJpYnV0ZSwgY291bnQsIGluc3RhbmNl
cywgJnJlcXVpcmVkU3BhY2UpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
IAogICAgIC8vIFByb3RlY3QgYWdhaW5zdCBpbnRlZ2VyIG92ZXJmbG93CiAgICAgaWYgKG1SZXNl
cnZlZFNwYWNlICsgcmVxdWlyZWRTcGFjZSA8IG1SZXNlcnZlZFNwYWNlKQpAQCAtMTk1LDcgKzIy
NCw3IEBAIFN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6flN0YXRpY1ZlcnQKIHsKIH0KIAot
aW50IFN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6bG9va3VwQXR0cmlidXRlKGNvbnN0IGds
OjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSkKK2Jvb2wgU3RhdGljVmVydGV4QnVmZmVySW50
ZXJmYWNlOjpsb29rdXBBdHRyaWJ1dGUoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmli
dXRlLCB1bnNpZ25lZCBpbnQgKm91dFN0cmVhbU9mZnNldCkKIHsKICAgICBmb3IgKHVuc2lnbmVk
IGludCBlbGVtZW50ID0gMDsgZWxlbWVudCA8IG1DYWNoZS5zaXplKCk7IGVsZW1lbnQrKykKICAg
ICB7CkBAIC0yMDYsMTIgKzIzNSwxNiBAQCBpbnQgU3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNl
Ojpsb29rdXBBCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtQ2FjaGVbZWxlbWVudF0uYXR0
cmlidXRlT2Zmc2V0ID09IGF0dHJpYnV0ZS5tT2Zmc2V0ICUgYXR0cmlidXRlLnN0cmlkZSgpKQog
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBtQ2FjaGVbZWxlbWVudF0uc3Ry
ZWFtT2Zmc2V0OworICAgICAgICAgICAgICAgIGlmIChvdXRTdHJlYW1PZmZzZXQpCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAqb3V0U3RyZWFtT2Zmc2V0ID0gbUNhY2hl
W2VsZW1lbnRdLnN0cmVhbU9mZnNldDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBy
ZXR1cm4gLTE7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIFN0YXRpY1ZlcnRleEJ1ZmZl
ckludGVyZmFjZTo6cmVzZXJ2ZVNwYWNlKHVuc2lnbmVkIGludCBzaXplKQpAQCAtMjMzLDEzICsy
NjYsMjcgQEAgYm9vbCBTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OnJlc2VydgogICAgIH0K
IH0KIAotaW50IFN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1
dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xpbnQgc3RhcnQsIEdMc2l6
ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKQorYm9vbCBTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRl
cmZhY2U6OnN0b3JlVmVydGV4QXR0cmlidXRlcyhjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZh
dHRyaWIsIEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50ICpvdXRTdHJlYW1PZmZzZXQpCiB7Ci0gICAgaW50IGF0dHJpYnV0ZU9mZnNldCA9
IGF0dHJpYi5tT2Zmc2V0ICUgYXR0cmliLnN0cmlkZSgpOwotICAgIFZlcnRleEVsZW1lbnQgZWxl
bWVudCA9IHsgYXR0cmliLm1UeXBlLCBhdHRyaWIubVNpemUsIGF0dHJpYi5zdHJpZGUoKSwgYXR0
cmliLm1Ob3JtYWxpemVkLCBhdHRyaWJ1dGVPZmZzZXQsIGdldFdyaXRlUG9zaXRpb24oKSB9Owot
ICAgIG1DYWNoZS5wdXNoX2JhY2soZWxlbWVudCk7CisgICAgdW5zaWduZWQgaW50IHN0cmVhbU9m
ZnNldDsKKyAgICBpZiAoVmVydGV4QnVmZmVySW50ZXJmYWNlOjpzdG9yZVZlcnRleEF0dHJpYnV0
ZXMoYXR0cmliLCBzdGFydCwgY291bnQsIGluc3RhbmNlcywgJnN0cmVhbU9mZnNldCkpCisgICAg
eworICAgICAgICBpbnQgYXR0cmlidXRlT2Zmc2V0ID0gYXR0cmliLm1PZmZzZXQgJSBhdHRyaWIu
c3RyaWRlKCk7CisgICAgICAgIFZlcnRleEVsZW1lbnQgZWxlbWVudCA9IHsgYXR0cmliLm1UeXBl
LCBhdHRyaWIubVNpemUsIGF0dHJpYi5zdHJpZGUoKSwgYXR0cmliLm1Ob3JtYWxpemVkLCBhdHRy
aWJ1dGVPZmZzZXQsIHN0cmVhbU9mZnNldCB9OworICAgICAgICBtQ2FjaGUucHVzaF9iYWNrKGVs
ZW1lbnQpOwogCi0gICAgcmV0dXJuIFZlcnRleEJ1ZmZlckludGVyZmFjZTo6c3RvcmVWZXJ0ZXhB
dHRyaWJ1dGVzKGF0dHJpYiwgc3RhcnQsIGNvdW50LCBpbnN0YW5jZXMpOworICAgICAgICBpZiAo
b3V0U3RyZWFtT2Zmc2V0KQorICAgICAgICB7CisgICAgICAgICAgICAqb3V0U3RyZWFtT2Zmc2V0
ID0gc3RyZWFtT2Zmc2V0OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiB9CiAKIH0K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVy
dGV4QnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXIuaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsOCBAQCBjbGFzcyBWZXJ0ZXhCdWZmZXIKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzLCB1
bnNpZ25lZCBpbnQgb2Zmc2V0KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHN0b3JlUmF3RGF0YShj
b25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSwgdW5zaWduZWQgaW50IG9mZnNldCkg
PSAwOwogCi0gICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0U3BhY2VSZXF1aXJlZChjb25zdCBn
bDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcykgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBnZXRTcGFjZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhBdHRy
aWJ1dGUgJmF0dHJpYiwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpvdXRTcGFjZVJlcXVpcmVk
KSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNDb252ZXJzaW9uKGNvbnN0
IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYikgY29uc3QgPSAwOwogCkBAIC02Nyw4ICs2Nyw5
IEBAIGNsYXNzIFZlcnRleEJ1ZmZlckludGVyZmFjZQogCiAgICAgdW5zaWduZWQgaW50IGdldFNl
cmlhbCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBpbnQgc3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGNv
bnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291
bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKTsKLSAgICB2aXJ0dWFsIGludCBzdG9yZVJhd0RhdGEoY29u
c3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgaW50IHNpemUpOworICAgIHZpcnR1YWwgYm9vbCBzdG9y
ZVZlcnRleEF0dHJpYnV0ZXMoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBHTGlu
dCBzdGFydCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqb3V0U3RyZWFtT2Zmc2V0KTsK
KyAgICB2aXJ0dWFsIGJvb2wgc3RvcmVSYXdEYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVk
IGludCBzaXplLCB1bnNpZ25lZCBpbnQgKm91dFN0cmVhbU9mZnNldCk7CiAKICAgICBWZXJ0ZXhC
dWZmZXIqIGdldFZlcnRleEJ1ZmZlcigpIGNvbnN0OwogCkBAIC0xMTAsMTAgKzExMSwxMCBAQCBj
bGFzcyBTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UgOiBwdWJsCiAgICAgZXhwbGljaXQgU3Rh
dGljVmVydGV4QnVmZmVySW50ZXJmYWNlKHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIpOwogICAgIH5T
dGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UoKTsKIAotICAgIGludCBzdG9yZVZlcnRleEF0dHJp
YnV0ZXMoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBHTGludCBzdGFydCwgR0xz
aXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpOworICAgIGJvb2wgc3RvcmVWZXJ0ZXhBdHRy
aWJ1dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xpbnQgc3RhcnQsIEdM
c2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCAqb3V0U3RyZWFtT2Zmc2V0KTsKIAotICAgIC8vIFJldHVybnMg
dGhlIG9mZnNldCBpbnRvIHRoZSB2ZXJ0ZXggYnVmZmVyLCBvciAtMSBpZiBub3QgZm91bmQKLSAg
ICBpbnQgbG9va3VwQXR0cmlidXRlKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0
ZSk7CisgICAgYm9vbCBsb29rdXBBdHRyaWJ1dGUoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAm
YXR0cmlidXRlLCB1bnNpZ25lZCBpbnQqIG91dFN0cmVhbU9mZnNldCk7CiAKICAgcHJvdGVjdGVk
OgogICAgIGJvb2wgcmVzZXJ2ZVNwYWNlKHVuc2lnbmVkIGludCBzaXplKTsKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4RGF0YU1hbmFn
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvcmVuZGVyZXIvVmVydGV4RGF0YU1hbmFnZXIuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleERhdGFN
YW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTIgKzI2LDMyIEBAIG5hbWVzcGFjZQog
bmFtZXNwYWNlIHJ4CiB7CiAKLXN0YXRpYyBpbnQgZWxlbWVudHNJbkJ1ZmZlcihjb25zdCBnbDo6
VmVydGV4QXR0cmlidXRlICZhdHRyaWJ1dGUsIGludCBzaXplKQorc3RhdGljIGludCBlbGVtZW50
c0luQnVmZmVyKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSwgdW5zaWduZWQg
aW50IHNpemUpCiB7Ci0gICAgaW50IHN0cmlkZSA9IGF0dHJpYnV0ZS5zdHJpZGUoKTsKKyAgICAv
LyBTaXplIGNhbm5vdCBiZSBsYXJnZXIgdGhhbiBhIEdMc2l6ZWkKKyAgICBpZiAoc2l6ZSA+IHN0
YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSkp
CisgICAgeworICAgICAgICBzaXplID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihzdGQ6Om51
bWVyaWNfbGltaXRzPGludD46Om1heCgpKTsKKyAgICB9CisKKyAgICBHTHNpemVpIHN0cmlkZSA9
IGF0dHJpYnV0ZS5zdHJpZGUoKTsKICAgICByZXR1cm4gKHNpemUgLSBhdHRyaWJ1dGUubU9mZnNl
dCAlIHN0cmlkZSArIChzdHJpZGUgLSBhdHRyaWJ1dGUudHlwZVNpemUoKSkpIC8gc3RyaWRlOwog
fQogCitzdGF0aWMgaW50IFN0cmVhbWluZ0J1ZmZlckVsZW1lbnRDb3VudChjb25zdCBnbDo6VmVy
dGV4QXR0cmlidXRlICZhdHRyaWJ1dGUsIGludCB2ZXJ0ZXhEcmF3Q291bnQsIGludCBpbnN0YW5j
ZURyYXdDb3VudCkKK3sKKyAgICAvLyBGb3IgaW5zdGFuY2VkIHJlbmRlcmluZywgd2UgZHJhdyAi
aW5zdGFuY2VEcmF3Q291bnQiIHNldHMgb2YgInZlcnRleERyYXdDb3VudCIgdmVydGljZXMuCisg
ICAgLy8KKyAgICAvLyBBIHZlcnRleCBhdHRyaWJ1dGUgd2l0aCBhIHBvc2l0aXZlIGRpdmlzb3Ig
bG9hZHMgb25lIGluc3RhbmNlZCB2ZXJ0ZXggZm9yIGV2ZXJ5IHNldCBvZgorICAgIC8vIG5vbi1p
bnN0YW5jZWQgdmVydGljZXMsIGFuZCB0aGUgaW5zdGFuY2VkIHZlcnRleCBpbmRleCBhZHZhbmNl
cyBvbmNlIGV2ZXJ5ICJtRGl2aXNvciIgaW5zdGFuY2VzLgorICAgIGlmIChpbnN0YW5jZURyYXdD
b3VudCA+IDAgJiYgYXR0cmlidXRlLm1EaXZpc29yID4gMCkKKyAgICB7CisgICAgICAgIHJldHVy
biBpbnN0YW5jZURyYXdDb3VudCAvIGF0dHJpYnV0ZS5tRGl2aXNvcjsKKyAgICB9CisKKyAgICBy
ZXR1cm4gdmVydGV4RHJhd0NvdW50OworfQorCiBWZXJ0ZXhEYXRhTWFuYWdlcjo6VmVydGV4RGF0
YU1hbmFnZXIoUmVuZGVyZXIgKnJlbmRlcmVyKSA6IG1SZW5kZXJlcihyZW5kZXJlcikKIHsKICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKQEAgLTky
LDcgKzExMiw3IEBAIEdMZW51bSBWZXJ0ZXhEYXRhTWFuYWdlcjo6cHJlcGFyZVZlcnRleEQKICAg
ICAgICAgICAgIGdsOjpCdWZmZXIgKmJ1ZmZlciA9IGF0dHJpYnNbaV0ubUJvdW5kQnVmZmVyLmdl
dCgpOwogICAgICAgICAgICAgU3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlICpzdGF0aWNCdWZm
ZXIgPSBidWZmZXIgPyBidWZmZXItPmdldFN0YXRpY1ZlcnRleEJ1ZmZlcigpIDogTlVMTDsKIAot
ICAgICAgICAgICAgaWYgKHN0YXRpY0J1ZmZlciAmJiBzdGF0aWNCdWZmZXItPmdldEJ1ZmZlclNp
emUoKSA+IDAgJiYgc3RhdGljQnVmZmVyLT5sb29rdXBBdHRyaWJ1dGUoYXR0cmlic1tpXSkgPT0g
LTEgJiYKKyAgICAgICAgICAgIGlmIChzdGF0aWNCdWZmZXIgJiYgc3RhdGljQnVmZmVyLT5nZXRC
dWZmZXJTaXplKCkgPiAwICYmICFzdGF0aWNCdWZmZXItPmxvb2t1cEF0dHJpYnV0ZShhdHRyaWJz
W2ldLCBOVUxMKSAmJgogICAgICAgICAgICAgICAgICFkaXJlY3RTdG9yYWdlUG9zc2libGUoc3Rh
dGljQnVmZmVyLCBhdHRyaWJzW2ldKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBi
dWZmZXItPmludmFsaWRhdGVTdGF0aWNEYXRhKCk7CkBAIC0xMjQsNyArMTQ0LDE2IEBAIEdMZW51
bSBWZXJ0ZXhEYXRhTWFuYWdlcjo6cHJlcGFyZVZlcnRleEQKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCFtU3RyZWFtaW5nQnVmZmVyLT5yZXNlcnZlVmVydGV4U3BhY2UoYXR0cmlic1tpXSwg
Y291bnQsIGluc3RhbmNlcykpCisgICAgICAgICAgICAgICAgICAgIGludCB0b3RhbENvdW50ID0g
U3RyZWFtaW5nQnVmZmVyRWxlbWVudENvdW50KGF0dHJpYnNbaV0sIGNvdW50LCBpbnN0YW5jZXMp
OworCisgICAgICAgICAgICAgICAgICAgIC8vIFVuZGVmaW5lZCBiZWhhdmlvdXI6CisgICAgICAg
ICAgICAgICAgICAgIC8vIFdlIGNhbiByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT04gaWYgb3VyIHZl
cnRleCBhdHRyaWJ1dGUgZG9lcyBub3QgaGF2ZSBlbm91Z2ggYmFja2luZyBkYXRhLgorICAgICAg
ICAgICAgICAgICAgICBpZiAoYnVmZmVyICYmIGVsZW1lbnRzSW5CdWZmZXIoYXR0cmlic1tpXSwg
YnVmZmVyLT5zaXplKCkpIDwgdG90YWxDb3VudCkKKyAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0lOVkFMSURfT1BFUkFUSU9OOworICAgICAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtU3RyZWFtaW5nQnVm
ZmVyLT5yZXNlcnZlVmVydGV4U3BhY2UoYXR0cmlic1tpXSwgdG90YWxDb3VudCwgaW5zdGFuY2Vz
KSkKICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEdMX09VVF9PRl9NRU1PUlk7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTE1NSw3ICsxODQs
NyBAQCBHTGVudW0gVmVydGV4RGF0YU1hbmFnZXI6OnByZXBhcmVWZXJ0ZXhECiAgICAgICAgICAg
ICAgICAgQnVmZmVyU3RvcmFnZSAqc3RvcmFnZSA9IGJ1ZmZlciA/IGJ1ZmZlci0+Z2V0U3RvcmFn
ZSgpIDogTlVMTDsKICAgICAgICAgICAgICAgICBib29sIGRpcmVjdFN0b3JhZ2UgPSBkaXJlY3RT
dG9yYWdlUG9zc2libGUodmVydGV4QnVmZmVyLCBhdHRyaWJzW2ldKTsKIAotICAgICAgICAgICAg
ICAgIHN0ZDo6c2l6ZV90IHN0cmVhbU9mZnNldCA9IC0xOworICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBzdHJlYW1PZmZzZXQgPSAwOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBv
dXRwdXRFbGVtZW50U2l6ZSA9IDA7CiAKICAgICAgICAgICAgICAgICBpZiAoZGlyZWN0U3RvcmFn
ZSkKQEAgLTE2NiwzNyArMTk1LDQwIEBAIEdMZW51bSBWZXJ0ZXhEYXRhTWFuYWdlcjo6cHJlcGFy
ZVZlcnRleEQKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc3Rh
dGljQnVmZmVyKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RyZWFt
T2Zmc2V0ID0gc3RhdGljQnVmZmVyLT5sb29rdXBBdHRyaWJ1dGUoYXR0cmlic1tpXSk7Ci0gICAg
ICAgICAgICAgICAgICAgIG91dHB1dEVsZW1lbnRTaXplID0gc3RhdGljQnVmZmVyLT5nZXRWZXJ0
ZXhCdWZmZXIoKS0+Z2V0U3BhY2VSZXF1aXJlZChhdHRyaWJzW2ldLCAxLCAwKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFzdGF0aWNCdWZmZXItPmdldFZlcnRleEJ1ZmZlcigpLT5nZXRTcGFj
ZVJlcXVpcmVkKGF0dHJpYnNbaV0sIDEsIDAsICZvdXRwdXRFbGVtZW50U2l6ZSkpCisgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9PVVRfT0Zf
TUVNT1JZOworICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgaWYg
KHN0cmVhbU9mZnNldCA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFzdGF0aWNCdWZm
ZXItPmxvb2t1cEF0dHJpYnV0ZShhdHRyaWJzW2ldLCAmc3RyZWFtT2Zmc2V0KSkKICAgICAgICAg
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29udmVydCB0aGUgZW50
aXJlIGJ1ZmZlcgogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRvdGFsQ291bnQgPSBlbGVt
ZW50c0luQnVmZmVyKGF0dHJpYnNbaV0sIHN0b3JhZ2UtPmdldFNpemUoKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgc3RhcnRJbmRleCA9IGF0dHJpYnNbaV0ubU9mZnNldCAvIGF0dHJp
YnNbaV0uc3RyaWRlKCk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbU9mZnNldCA9
IHN0YXRpY0J1ZmZlci0+c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGF0dHJpYnNbaV0sIC1zdGFydElu
ZGV4LCB0b3RhbENvdW50LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3RhdGlj
QnVmZmVyLT5zdG9yZVZlcnRleEF0dHJpYnV0ZXMoYXR0cmlic1tpXSwgLXN0YXJ0SW5kZXgsIHRv
dGFsQ291bnQsIDAsICZzdHJlYW1PZmZzZXQpKQorICAgICAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9PVVRfT0ZfTUVNT1JZOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHN0cmVhbU9mZnNldCAhPSAtMSkKKyAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IGZpcnN0RWxlbWVudE9mZnNldCA9IChhdHRyaWJzW2ldLm1PZmZzZXQgLyBh
dHRyaWJzW2ldLnN0cmlkZSgpKSAqIG91dHB1dEVsZW1lbnRTaXplOworICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgc3RhcnRPZmZzZXQgPSAoaW5zdGFuY2VzID09IDAgfHwgYXR0cmli
c1tpXS5tRGl2aXNvciA9PSAwKSA/IHN0YXJ0ICogb3V0cHV0RWxlbWVudFNpemUgOiAwOworICAg
ICAgICAgICAgICAgICAgICBpZiAoc3RyZWFtT2Zmc2V0ICsgZmlyc3RFbGVtZW50T2Zmc2V0ICsg
c3RhcnRPZmZzZXQgPCBzdHJlYW1PZmZzZXQpCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cmVhbU9mZnNldCArPSAoYXR0cmlic1tpXS5tT2Zmc2V0IC8g
YXR0cmlic1tpXS5zdHJpZGUoKSkgKiBvdXRwdXRFbGVtZW50U2l6ZTsKLQotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGluc3RhbmNlcyA9PSAwIHx8IGF0dHJpYnNbaV0ubURpdmlzb3IgPT0g
MCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHJlYW1PZmZzZXQgKz0gc3RhcnQgKiBvdXRwdXRFbGVtZW50U2l6ZTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9PVVRfT0Zf
TUVNT1JZOwogICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgc3Ry
ZWFtT2Zmc2V0ICs9IGZpcnN0RWxlbWVudE9mZnNldCArIHN0YXJ0T2Zmc2V0OwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICBvdXRwdXRFbGVtZW50U2l6ZSA9IG1TdHJlYW1pbmdCdWZmZXItPmdldFZl
cnRleEJ1ZmZlcigpLT5nZXRTcGFjZVJlcXVpcmVkKGF0dHJpYnNbaV0sIDEsIDApOwotICAgICAg
ICAgICAgICAgICAgICBzdHJlYW1PZmZzZXQgPSBtU3RyZWFtaW5nQnVmZmVyLT5zdG9yZVZlcnRl
eEF0dHJpYnV0ZXMoYXR0cmlic1tpXSwgc3RhcnQsIGNvdW50LCBpbnN0YW5jZXMpOwotICAgICAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChzdHJlYW1PZmZzZXQgPT0gLTEpCi0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfT1VUX09GX01F
TU9SWTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHRvdGFsQ291bnQgPSBTdHJlYW1pbmdCdWZm
ZXJFbGVtZW50Q291bnQoYXR0cmlic1tpXSwgY291bnQsIGluc3RhbmNlcyk7CisgICAgICAgICAg
ICAgICAgICAgIGlmICghbVN0cmVhbWluZ0J1ZmZlci0+Z2V0VmVydGV4QnVmZmVyKCktPmdldFNw
YWNlUmVxdWlyZWQoYXR0cmlic1tpXSwgMSwgMCwgJm91dHB1dEVsZW1lbnRTaXplKSB8fAorICAg
ICAgICAgICAgICAgICAgICAgICAgIW1TdHJlYW1pbmdCdWZmZXItPnN0b3JlVmVydGV4QXR0cmli
dXRlcyhhdHRyaWJzW2ldLCBzdGFydCwgdG90YWxDb3VudCwgaW5zdGFuY2VzLCAmc3RyZWFtT2Zm
c2V0KSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEdMX09VVF9PRl9NRU1PUlk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgICAgICB0cmFuc2xhdGVkW2ldLnN0b3JhZ2UgPSBkaXJlY3RT
dG9yYWdlID8gc3RvcmFnZSA6IE5VTEw7CkBAIC0yMjcsMTIgKzI1OSwxNyBAQCBHTGVudW0gVmVy
dGV4RGF0YU1hbmFnZXI6OnByZXBhcmVWZXJ0ZXhECiAgICAgICAgICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9PVVRfT0ZfTUVNT1JZOwogICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGludCBzdHJlYW1PZmZzZXQgPSBidWZm
ZXItPnN0b3JlUmF3RGF0YShhdHRyaWJzW2ldLm1DdXJyZW50VmFsdWUsIHJlcXVpcmVkU3BhY2Up
OwotICAgICAgICAgICAgICAgICAgICBpZiAoc3RyZWFtT2Zmc2V0ID09IC0xKQorCisgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzdHJlYW1PZmZzZXQ7CisgICAgICAgICAgICAgICAg
ICAgIGlmICghYnVmZmVyLT5zdG9yZVJhd0RhdGEoYXR0cmlic1tpXS5tQ3VycmVudFZhbHVlLCBy
ZXF1aXJlZFNwYWNlLCAmc3RyZWFtT2Zmc2V0KSkKICAgICAgICAgICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX09VVF9PRl9NRU1PUlk7CiAgICAgICAgICAg
ICAgICAgICAgIH0KIAorICAgICAgICAgICAgICAgICAgICBtQ3VycmVudFZhbHVlW2ldWzBdID0g
YXR0cmlic1tpXS5tQ3VycmVudFZhbHVlWzBdOworICAgICAgICAgICAgICAgICAgICBtQ3VycmVu
dFZhbHVlW2ldWzFdID0gYXR0cmlic1tpXS5tQ3VycmVudFZhbHVlWzFdOworICAgICAgICAgICAg
ICAgICAgICBtQ3VycmVudFZhbHVlW2ldWzJdID0gYXR0cmlic1tpXS5tQ3VycmVudFZhbHVlWzJd
OworICAgICAgICAgICAgICAgICAgICBtQ3VycmVudFZhbHVlW2ldWzNdID0gYXR0cmlic1tpXS5t
Q3VycmVudFZhbHVlWzNdOwogICAgICAgICAgICAgICAgICAgICBtQ3VycmVudFZhbHVlT2Zmc2V0
c1tpXSA9IHN0cmVhbU9mZnNldDsKICAgICAgICAgICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4RGF0YU1hbmFnZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1ZlcnRleERhdGFNYW5hZ2VyLmgJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4RGF0YU1hbmFnZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOCBAQCBzdHJ1Y3QgVHJhbnNsYXRlZEF0dHJp
YnV0ZQogICAgIGJvb2wgYWN0aXZlOwogCiAgICAgY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAq
YXR0cmlidXRlOwotICAgIFVJTlQgb2Zmc2V0OwotICAgIFVJTlQgc3RyaWRlOyAgIC8vIDAgbWVh
bnMgbm90IHRvIGFkdmFuY2UgdGhlIHJlYWQgcG9pbnRlciBhdCBhbGwKKyAgICB1bnNpZ25lZCBp
bnQgb2Zmc2V0OworICAgIHVuc2lnbmVkIGludCBzdHJpZGU7ICAgLy8gMCBtZWFucyBub3QgdG8g
YWR2YW5jZSB0aGUgcmVhZCBwb2ludGVyIGF0IGFsbAogCiAgICAgVmVydGV4QnVmZmVyICp2ZXJ0
ZXhCdWZmZXI7CiAgICAgQnVmZmVyU3RvcmFnZSAqc3RvcmFnZTsKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvcmVuZGVyZXIxMV91dGlscy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9yZW5kZXJlcjExX3V0aWxzLmNwcAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjExX3V0aWxzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzU2LDcgKzM1Niw3IEBAIERYR0lfRk9STUFUIENvbnZlcnRU
ZXh0dXJlRm9ybWF0KEdMZW51bSAKICAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX1IzMkczMkIz
MkEzMl9GTE9BVDsKICAgICAgIGNhc2UgR0xfUkdCMzJGX0VYVDoKICAgICAgIGNhc2UgR0xfTFVN
SU5BTkNFMzJGX0VYVDoKLSAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9B
VDsKKyAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVDsKICAgICAg
IGNhc2UgR0xfUkdCQTE2Rl9FWFQ6CiAgICAgICBjYXNlIEdMX0FMUEhBMTZGX0VYVDoKICAgICAg
IGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVDoKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9nZW5lcmF0ZV9zaGFkZXJzLmJh
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL3NoYWRlcnMvZ2VuZXJhdGVfc2hhZGVycy5iYXQJKHJldmlzaW9uIDE1OTUzMikKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9n
ZW5lcmF0ZV9zaGFkZXJzLmJhdAkod29ya2luZyBjb3B5KQpAQCAtNSw3ICs1LDcgQEAgUkVNIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIAogUkVNIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuDQogUkVNDQogDQotUEFUSCAlUEFUSCU7JURYU0RLX0RJUiVcVXRpbGl0aWVzXGJp
blx4ODYNCitQQVRIICVQQVRIJTslUHJvZ3JhbUZpbGVzKHg4NiklXFdpbmRvd3MgS2l0c1w4LjBc
YmluXHg4NjslRFhTREtfRElSJVxVdGlsaXRpZXNcYmluXHg4Ng0KIA0KIGZ4YyAvRSBzdGFuZGFy
ZHZzIC9UIHZzXzJfMCAvRmggY29tcGlsZWQvc3RhbmRhcmR2cy5oIEJsaXQudnMNCiBmeGMgL0Ug
ZmxpcHl2cyAvVCB2c18yXzAgL0ZoIGNvbXBpbGVkL2ZsaXB5dnMuaCBCbGl0LnZzDQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2Nv
bXBpbGVkL2NsZWFyMTF2cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9jbGVhcjExdnMuaAkocmV2
aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NsZWFyMTF2cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDI2ICsxLDI0IEBACiAjaWYgMA0KIC8vDQotLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikg
SExTTCBTaGFkZXIgQ29tcGlsZXIgOS4yOS45NTIuMzExMQ0KLS8vDQotLy8NCi0vLyAgIGZ4YyAv
RSBWU19DbGVhciAvVCB2c180XzAgL0ZoIGNvbXBpbGVkL2NsZWFyMTF2cy5oIENsZWFyMTEuaGxz
bA0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDku
MzAuOTIwMC4xNjM4NA0KIC8vDQogLy8NCisvLy8NCiAvLw0KIC8vIElucHV0IHNpZ25hdHVyZToN
CiAvLw0KLS8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNW
YWx1ZSBGb3JtYXQgICBVc2VkDQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0t
IC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLSAtLS0tLS0NCi0vLyBQT1NJVElPTiAgICAgICAgICAg
ICAgICAgMCAgIHh5eiAgICAgICAgIDAgICAgIE5PTkUgIGZsb2F0ICAgeHl6IA0KLS8vIENPTE9S
ICAgICAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMSAgICAgTk9ORSAgZmxvYXQgICB4
eXp3DQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1Zh
bHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0t
IC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQorLy8gUE9TSVRJT04gICAgICAgICAg
ICAgICAgIDAgICB4eXogICAgICAgICAwICAgICBOT05FICAgZmxvYXQgICB4eXogDQorLy8gQ09M
T1IgICAgICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAxICAgICBOT05FICAgZmxvYXQg
ICB4eXp3DQogLy8NCiAvLw0KIC8vIE91dHB1dCBzaWduYXR1cmU6DQogLy8NCi0vLyBOYW1lICAg
ICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgRm9ybWF0ICAgVXNl
ZA0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0t
LSAtLS0tLS0gLS0tLS0tDQotLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAg
ICAgICAwICAgICAgUE9TICBmbG9hdCAgIHh5encNCi0vLyBDT0xPUiAgICAgICAgICAgICAgICAg
ICAgMCAgIHh5encgICAgICAgIDEgICAgIE5PTkUgIGZsb2F0ICAgeHl6dw0KKy8vIE5hbWUgICAg
ICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNl
ZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0t
LSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAg
ICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgeHl6dw0KKy8vIENPTE9SICAgICAgICAgICAgICAg
ICAgICAwICAgeHl6dyAgICAgICAgMSAgICAgTk9ORSAgIGZsb2F0ICAgeHl6dw0KIC8vDQogdnNf
NF8wDQogZGNsX2lucHV0IHYwLnh5eg0KQEAgLTM2LDEwICszNCwxMCBAQCByZXQgDQogDQogY29u
c3QgQllURSBnX1ZTX0NsZWFyW10gPQ0KIHsNCi0gICAgIDY4LCAgODgsICA2NiwgIDY3LCAxMDks
IDEzOCwgDQotICAgIDEwNSwgIDgzLCAgODYsIDE5MCwgIDgzLCAxMjUsIA0KLSAgICAgNzIsIDEw
MiwgMTk0LCAxMzYsICA0NiwgIDY5LCANCi0gICAgIDE3LCAxMjEsICAgMSwgICAwLCAgIDAsICAg
MCwgDQorICAgICA2OCwgIDg4LCAgNjYsICA2NywgIDk3LCAgIDUsIA0KKyAgICAgMTMsIDE2Mywg
MTYwLCAyNTQsICA5NSwgMTI3LCANCisgICAgIDMwLCAxOTQsIDEyMSwgMTQ0LCAyMzYsIDE4NSwg
DQorICAgICA1OSwgIDI5LCAgIDEsICAgMCwgICAwLCAgIDAsIA0KICAgICAgNDgsICAgMiwgICAw
LCAgIDAsICAgNSwgICAwLCANCiAgICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgDQog
ICAgIDE0MCwgICAwLCAgIDAsICAgMCwgMjIwLCAgIDAsIA0KQEAgLTU2LDEwICs1NCwxMCBAQCBj
b25zdCBCWVRFIGdfVlNfQ2xlYXJbXSA9DQogICAgICA3MiwgIDc2LCAgODMsICA3NiwgIDMyLCAg
ODMsIA0KICAgICAxMDQsICA5NywgMTAwLCAxMDEsIDExNCwgIDMyLCANCiAgICAgIDY3LCAxMTEs
IDEwOSwgMTEyLCAxMDUsIDEwOCwgDQotICAgIDEwMSwgMTE0LCAgMzIsICA1NywgIDQ2LCAgNTAs
IA0KLSAgICAgNTcsICA0NiwgIDU3LCAgNTMsICA1MCwgIDQ2LCANCi0gICAgIDUxLCAgNDksICA0
OSwgIDQ5LCAgIDAsIDE3MSwgDQotICAgIDE3MSwgMTcxLCAgNzMsICA4MywgIDcxLCAgNzgsIA0K
KyAgICAxMDEsIDExNCwgIDMyLCAgNTcsICA0NiwgIDUxLCANCisgICAgIDQ4LCAgNDYsICA1Nywg
IDUwLCAgNDgsICA0OCwgDQorICAgICA0NiwgIDQ5LCAgNTQsICA1MSwgIDU2LCAgNTIsIA0KKyAg
ICAgIDAsIDE3MSwgIDczLCAgODMsICA3MSwgIDc4LCANCiAgICAgIDcyLCAgIDAsICAgMCwgICAw
LCAgIDIsICAgMCwgDQogICAgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsIA0KICAgICAg
NTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCkBAIC0xMjIsNyArMTIwLDcgQEAgY29uc3Qg
QllURSBnX1ZTX0NsZWFyW10gPQ0KICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQogICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDQsICAgMCwgDQogICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCiAgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NsZWFybXVsdGlw
bGUxMXBzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NsZWFybXVsdGlwbGUxMXBzLmgJKHJldmlz
aW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvc2hhZGVycy9jb21waWxlZC9jbGVhcm11bHRpcGxlMTFwcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMzICsxLDMwIEBACiAjaWYgMA0KIC8vDQotLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29m
dCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgOS4yOS45NTIuMzExMQ0KLS8vDQotLy8NCi0vLyAg
IGZ4YyAvRSBQU19DbGVhck11bHRpcGxlIC9UIHBzXzRfMCAvRmggY29tcGlsZWQvY2xlYXJtdWx0
aXBsZTExcHMuaA0KLS8vICAgIENsZWFyMTEuaGxzbA0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3Nv
ZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDkuMzAuOTIwMC4xNjM4NA0KIC8vDQogLy8NCisv
Ly8NCiAvLw0KIC8vIElucHV0IHNpZ25hdHVyZToNCiAvLw0KLS8vIE5hbWUgICAgICAgICAgICAg
ICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSBGb3JtYXQgICBVc2VkDQotLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLSAt
LS0tLS0NCi0vLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAg
ICBQT1MgIGZsb2F0ICAgICAgIA0KLS8vIENPTE9SICAgICAgICAgICAgICAgICAgICAwICAgeHl6
dyAgICAgICAgMSAgICAgTk9ORSAgZmxvYXQgICB4eXp3DQorLy8gTmFtZSAgICAgICAgICAgICAg
ICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0g
LS0tLS0tDQorLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAg
ICAgUE9TICAgZmxvYXQgICAgICAgDQorLy8gQ09MT1IgICAgICAgICAgICAgICAgICAgIDAgICB4
eXp3ICAgICAgICAxICAgICBOT05FICAgZmxvYXQgICB4eXp3DQogLy8NCiAvLw0KIC8vIE91dHB1
dCBzaWduYXR1cmU6DQogLy8NCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sg
UmVnaXN0ZXIgU3lzVmFsdWUgRm9ybWF0ICAgVXNlZA0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
IC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0gLS0tLS0tDQotLy8gU1ZfVEFS
R0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICBmbG9hdCAgIHh5
encNCi0vLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgMSAgIHh5encgICAgICAgIDEgICBUQVJH
RVQgIGZsb2F0ICAgeHl6dw0KLS8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAyICAgeHl6dyAg
ICAgICAgMiAgIFRBUkdFVCAgZmxvYXQgICB4eXp3DQotLy8gU1ZfVEFSR0VUICAgICAgICAgICAg
ICAgIDMgICB4eXp3ICAgICAgICAzICAgVEFSR0VUICBmbG9hdCAgIHh5encNCi0vLyBTVl9UQVJH
RVQgICAgICAgICAgICAgICAgNCAgIHh5encgICAgICAgIDQgICBUQVJHRVQgIGZsb2F0ICAgeHl6
dw0KLS8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICA1ICAgeHl6dyAgICAgICAgNSAgIFRBUkdF
VCAgZmxvYXQgICB4eXp3DQotLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDYgICB4eXp3ICAg
ICAgICA2ICAgVEFSR0VUICBmbG9hdCAgIHh5encNCi0vLyBTVl9UQVJHRVQgICAgICAgICAgICAg
ICAgNyAgIHh5encgICAgICAgIDcgICBUQVJHRVQgIGZsb2F0ICAgeHl6dw0KKy8vIE5hbWUgICAg
ICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNl
ZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0t
LSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAwICAgeHl6dyAg
ICAgICAgMCAgIFRBUkdFVCAgIGZsb2F0ICAgeHl6dw0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAg
ICAgICAxICAgeHl6dyAgICAgICAgMSAgIFRBUkdFVCAgIGZsb2F0ICAgeHl6dw0KKy8vIFNWX1RB
UkdFVCAgICAgICAgICAgICAgICAyICAgeHl6dyAgICAgICAgMiAgIFRBUkdFVCAgIGZsb2F0ICAg
eHl6dw0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAzICAgeHl6dyAgICAgICAgMyAgIFRB
UkdFVCAgIGZsb2F0ICAgeHl6dw0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICA0ICAgeHl6
dyAgICAgICAgNCAgIFRBUkdFVCAgIGZsb2F0ICAgeHl6dw0KKy8vIFNWX1RBUkdFVCAgICAgICAg
ICAgICAgICA1ICAgeHl6dyAgICAgICAgNSAgIFRBUkdFVCAgIGZsb2F0ICAgeHl6dw0KKy8vIFNW
X1RBUkdFVCAgICAgICAgICAgICAgICA2ICAgeHl6dyAgICAgICAgNiAgIFRBUkdFVCAgIGZsb2F0
ICAgeHl6dw0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICA3ICAgeHl6dyAgICAgICAgNyAg
IFRBUkdFVCAgIGZsb2F0ICAgeHl6dw0KIC8vDQogcHNfNF8wDQogZGNsX2lucHV0X3BzIGxpbmVh
ciB2MS54eXp3DQpAQCAtNTMsMTAgKzUwLDEwIEBAIHJldCANCiANCiBjb25zdCBCWVRFIGdfUFNf
Q2xlYXJNdWx0aXBsZVtdID0NCiB7DQotICAgICA2OCwgIDg4LCAgNjYsICA2NywgMTQ2LCAyNDYs
IA0KLSAgICAyMzYsIDI0MCwgIDUwLCAgNDAsICA4NywgIDU1LCANCi0gICAgIDczLCAxNDAsIDI1
MSwgMjAwLCAgIDgsICAyMiwgDQotICAgIDE3MywgMTE3LCAgIDEsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgNjgsICA4OCwgIDY2LCAgNjcsICA5MiwgIDU0LCANCisgICAgMTIwLCAxMDUsIDE2Niwg
MTk2LCAxMzIsIDE1OCwgDQorICAgIDIwOSwgIDMzLCAxODUsIDEyMiwgICA4LCAxODksIA0KKyAg
ICAxNDUsIDExNCwgICAxLCAgIDAsICAgMCwgICAwLCANCiAgICAgIDg4LCAgIDMsICAgMCwgICAw
LCAgIDUsICAgMCwgDQogICAgICAgMCwgICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIA0KICAgICAx
NDAsICAgMCwgICAwLCAgIDAsIDIyNCwgICAwLCANCkBAIC03MywxMCArNzAsMTAgQEAgY29uc3Qg
QllURSBnX1BTX0NsZWFyTXVsdGlwbGVbXSA9DQogICAgICA3MiwgIDc2LCAgODMsICA3NiwgIDMy
LCAgODMsIA0KICAgICAxMDQsICA5NywgMTAwLCAxMDEsIDExNCwgIDMyLCANCiAgICAgIDY3LCAx
MTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwgDQotICAgIDEwMSwgMTE0LCAgMzIsICA1NywgIDQ2LCAg
NTAsIA0KLSAgICAgNTcsICA0NiwgIDU3LCAgNTMsICA1MCwgIDQ2LCANCi0gICAgIDUxLCAgNDks
ICA0OSwgIDQ5LCAgIDAsIDE3MSwgDQotICAgIDE3MSwgMTcxLCAgNzMsICA4MywgIDcxLCAgNzgs
IA0KKyAgICAxMDEsIDExNCwgIDMyLCAgNTcsICA0NiwgIDUxLCANCisgICAgIDQ4LCAgNDYsICA1
NywgIDUwLCAgNDgsICA0OCwgDQorICAgICA0NiwgIDQ5LCAgNTQsICA1MSwgIDU2LCAgNTIsIA0K
KyAgICAgIDAsIDE3MSwgIDczLCAgODMsICA3MSwgIDc4LCANCiAgICAgIDc2LCAgIDAsICAgMCwg
ICAwLCAgIDIsICAgMCwgDQogICAgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsIA0KICAg
ICAgNTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCkBAIC0xODksNyArMTg2LDcgQEAgY29u
c3QgQllURSBnX1BTX0NsZWFyTXVsdGlwbGVbXSA9DQogICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCiAgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQotICAgICAgOCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDksICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCiAgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQogICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQv
Y2xlYXJzaW5nbGUxMXBzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NsZWFyc2luZ2xlMTFwcy5o
CShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJzaW5nbGUxMXBzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMjYgKzEsMjMgQEAKICNpZiAwDQogLy8NCi0vLyBHZW5lcmF0ZWQgYnkgTWlj
cm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA5LjI5Ljk1Mi4zMTExDQotLy8NCi0vLw0K
LS8vICAgZnhjIC9FIFBTX0NsZWFyU2luZ2xlIC9UIHBzXzRfMCAvRmggY29tcGlsZWQvY2xlYXJz
aW5nbGUxMXBzLmgNCi0vLyAgICBDbGVhcjExLmhsc2wNCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9z
b2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA5LjMwLjkyMDAuMTYzODQNCiAvLw0KIC8vDQor
Ly8vDQogLy8NCiAvLyBJbnB1dCBzaWduYXR1cmU6DQogLy8NCi0vLyBOYW1lICAgICAgICAgICAg
ICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgRm9ybWF0ICAgVXNlZA0KLS8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0g
LS0tLS0tDQotLy8gU1ZfUG9zaXRpb24gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAg
ICAgUE9TICBmbG9hdCAgICAgICANCi0vLyBDT0xPUiAgICAgICAgICAgICAgICAgICAgMCAgIHh5
encgICAgICAgIDEgICAgIE5PTkUgIGZsb2F0ICAgeHl6dw0KKy8vIE5hbWUgICAgICAgICAgICAg
ICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0t
IC0tLS0tLQ0KKy8vIFNWX1Bvc2l0aW9uICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAg
ICAgIFBPUyAgIGZsb2F0ICAgICAgIA0KKy8vIENPTE9SICAgICAgICAgICAgICAgICAgICAwICAg
eHl6dyAgICAgICAgMSAgICAgTk9ORSAgIGZsb2F0ICAgeHl6dw0KIC8vDQogLy8NCiAvLyBPdXRw
dXQgc2lnbmF0dXJlOg0KIC8vDQotLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNr
IFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0KLS8vIFNWX1Rh
cmdldCAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgZmxvYXQgICB4
eXp3DQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1Zh
bHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0t
IC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQorLy8gU1ZfVGFyZ2V0ICAgICAgICAg
ICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICAgZmxvYXQgICB4eXp3DQogLy8NCiBw
c180XzANCiBkY2xfaW5wdXRfcHMgbGluZWFyIHYxLnh5encNCkBAIC0zMiwxMCArMjksMTAgQEAg
cmV0IA0KIA0KIGNvbnN0IEJZVEUgZ19QU19DbGVhclNpbmdsZVtdID0NCiB7DQotICAgICA2OCwg
IDg4LCAgNjYsICA2NywgIDExLCAgNDksIA0KLSAgICAyMjAsIDE1NywgIDM1LCAxMDYsIDE3NSwg
MTYxLCANCi0gICAgMTgwLCAxNzgsIDE0NywgMTUwLCAxMzQsIDE2MiwgDQotICAgIDIyMiwgIDc5
LCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNjgsICA4OCwgIDY2LCAgNjcsICAxMywgMTUy
LCANCisgICAgIDMyLCAgNDksIDIyMiwgMjM2LCAgOTIsICAyMCwgDQorICAgIDE4OCwgIDcxLCAg
ODgsICA0NiwgMTYzLCAyNDEsIA0KKyAgICAxODgsIDIzOCwgICAxLCAgIDAsICAgMCwgICAwLCAN
CiAgICAgMjA4LCAgIDEsICAgMCwgICAwLCAgIDUsICAgMCwgDQogICAgICAgMCwgICAwLCAgNTIs
ICAgMCwgICAwLCAgIDAsIA0KICAgICAxNDAsICAgMCwgICAwLCAgIDAsIDIyNCwgICAwLCANCkBA
IC01MiwxMCArNDksMTAgQEAgY29uc3QgQllURSBnX1BTX0NsZWFyU2luZ2xlW10gPQ0KICAgICAg
NzIsICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCANCiAgICAgMTA0LCAgOTcsIDEwMCwgMTAxLCAx
MTQsICAzMiwgDQogICAgICA2NywgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIA0KLSAgICAxMDEs
IDExNCwgIDMyLCAgNTcsICA0NiwgIDUwLCANCi0gICAgIDU3LCAgNDYsICA1NywgIDUzLCAgNTAs
ICA0NiwgDQotICAgICA1MSwgIDQ5LCAgNDksICA0OSwgICAwLCAxNzEsIA0KLSAgICAxNzEsIDE3
MSwgIDczLCAgODMsICA3MSwgIDc4LCANCisgICAgMTAxLCAxMTQsICAzMiwgIDU3LCAgNDYsICA1
MSwgDQorICAgICA0OCwgIDQ2LCAgNTcsICA1MCwgIDQ4LCAgNDgsIA0KKyAgICAgNDYsICA0OSwg
IDU0LCAgNTEsICA1NiwgIDUyLCANCisgICAgICAwLCAxNzEsICA3MywgIDgzLCAgNzEsICA3OCwg
DQogICAgICA3NiwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KICAgICAgIDAsICAgMCwgICA4
LCAgIDAsICAgMCwgICAwLCANCiAgICAgIDU2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQpA
QCAtMTAyLDcgKzk5LDcgQEAgY29uc3QgQllURSBnX1BTX0NsZWFyU2luZ2xlW10gPQ0KICAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQogICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KLSAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDIs
ICAgMCwgDQogICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KICAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9zaGFkZXJzL2NvbXBpbGVkL2NvbXBvbmVudG1hc2twcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxl
ZC9jb21wb25lbnRtYXNrcHMuaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NvbXBvbmVu
dG1hc2twcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDggQEAKICNpZiAwDQogLy8NCi0v
LyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA5LjI5Ljk1
Mi4zMTExDQotLy8NCi0vLyAgIGZ4YyAvRSBjb21wb25lbnRtYXNrcHMgL1QgcHNfMl8wIC9GaCBj
b21waWxlZC9jb21wb25lbnRtYXNrcHMuaCBCbGl0LnBzDQotLy8NCisvLyBHZW5lcmF0ZWQgYnkg
TWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA5LjMwLjkyMDAuMTYzODQNCiAvLw0K
Ky8vLw0KIC8vIFBhcmFtZXRlcnM6DQogLy8NCiAvLyAgIGZsb2F0NCBtb2RlOw0KQEAgLTMzLDcg
KzMxLDcgQEAKIGNvbnN0IEJZVEUgZ19wczIwX2NvbXBvbmVudG1hc2twc1tdID0NCiB7DQogICAg
ICAgMCwgICAyLCAyNTUsIDI1NSwgMjU0LCAyNTUsIA0KLSAgICAgNDMsICAgMCwgIDY3LCAgODQs
ICA2NSwgIDY2LCANCisgICAgIDQ0LCAgIDAsICA2NywgIDg0LCAgNjUsICA2NiwgDQogICAgICAy
OCwgICAwLCAgIDAsICAgMCwgMTE5LCAgIDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDIsIDI1
NSwgMjU1LCANCiAgICAgICAyLCAgIDAsICAgMCwgICAwLCAgMjgsICAgMCwgDQpAQCAtNjAsMjIg
KzU4LDIyIEBAIGNvbnN0IEJZVEUgZ19wczIwX2NvbXBvbmVudG1hc2twc1tdID0NCiAgICAgIDgz
LCAxMDQsICA5NywgMTAwLCAxMDEsIDExNCwgDQogICAgICAzMiwgIDY3LCAxMTEsIDEwOSwgMTEy
LCAxMDUsIA0KICAgICAxMDgsIDEwMSwgMTE0LCAgMzIsICA1NywgIDQ2LCANCi0gICAgIDUwLCAg
NTcsICA0NiwgIDU3LCAgNTMsICA1MCwgDQotICAgICA0NiwgIDUxLCAgNDksICA0OSwgIDQ5LCAg
IDAsIA0KLSAgICAgMzEsICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCANCi0gICAgICAwLCAxMjgs
ICAgMCwgICAwLCAgIDMsIDE3NiwgDQotICAgICAzMSwgICAwLCAgIDAsICAgMiwgICAwLCAgIDAs
IA0KLSAgICAgIDAsIDE0NCwgICAwLCAgIDgsICAxNSwgMTYwLCANCi0gICAgIDY2LCAgIDAsICAg
MCwgICAzLCAgIDAsICAgMCwgDQotICAgICAxNSwgMTI4LCAgIDAsICAgMCwgMjI4LCAxNzYsIA0K
LSAgICAgIDAsICAgOCwgMjI4LCAxNjAsICAgNSwgICAwLCANCi0gICAgICAwLCAgIDMsICAgMSwg
ICAwLCAgIDcsIDEyOCwgDQotICAgICAgMCwgICAwLCAyMjgsIDEyOCwgICAwLCAgIDAsIA0KLSAg
ICAgIDAsIDE2MCwgICA0LCAgIDAsICAgMCwgICA0LCANCi0gICAgICAxLCAgIDAsICAgOCwgMTI4
LCAgIDAsICAgMCwgDQotICAgIDI1NSwgMTI4LCAgIDAsICAgMCwgMTcwLCAxNjAsIA0KLSAgICAg
IDAsICAgMCwgMjU1LCAxNjAsICAgMSwgICAwLCANCi0gICAgICAwLCAgIDIsICAgMCwgICA4LCAg
MTUsIDEyOCwgDQotICAgICAgMSwgICAwLCAyMjgsIDEyOCwgMjU1LCAyNTUsIA0KLSAgICAgIDAs
ICAgMA0KKyAgICAgNTEsICA0OCwgIDQ2LCAgNTcsICA1MCwgIDQ4LCANCisgICAgIDQ4LCAgNDYs
ICA0OSwgIDU0LCAgNTEsICA1NiwgDQorICAgICA1MiwgICAwLCAxNzEsIDE3MSwgIDMxLCAgIDAs
IA0KKyAgICAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgMTI4LCANCisgICAgICAwLCAgIDAsICAg
MywgMTc2LCAgMzEsICAgMCwgDQorICAgICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAxNDQsIA0K
KyAgICAgIDAsICAgOCwgIDE1LCAxNjAsICA2NiwgICAwLCANCisgICAgICAwLCAgIDMsICAgMCwg
ICAwLCAgMTUsIDEyOCwgDQorICAgICAgMCwgICAwLCAyMjgsIDE3NiwgICAwLCAgIDgsIA0KKyAg
ICAyMjgsIDE2MCwgICA1LCAgIDAsICAgMCwgICAzLCANCisgICAgICAxLCAgIDAsICAgNywgMTI4
LCAgIDAsICAgMCwgDQorICAgIDIyOCwgMTI4LCAgIDAsICAgMCwgICAwLCAxNjAsIA0KKyAgICAg
IDQsICAgMCwgICAwLCAgIDQsICAgMSwgICAwLCANCisgICAgICA4LCAxMjgsICAgMCwgICAwLCAy
NTUsIDEyOCwgDQorICAgICAgMCwgICAwLCAxNzAsIDE2MCwgICAwLCAgIDAsIA0KKyAgICAyNTUs
IDE2MCwgICAxLCAgIDAsICAgMCwgICAyLCANCisgICAgICAwLCAgIDgsICAxNSwgMTI4LCAgIDEs
ICAgMCwgDQorICAgIDIyOCwgMTI4LCAyNTUsIDI1NSwgICAwLCAgIDANCiB9Ow0KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21w
aWxlZC9mbGlweXZzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2ZsaXB5dnMuaAkocmV2aXNpb24g
MTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9zaGFkZXJzL2NvbXBpbGVkL2ZsaXB5dnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMSw4
IEBACiAjaWYgMA0KIC8vDQotLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFk
ZXIgQ29tcGlsZXIgOS4yOS45NTIuMzExMQ0KLS8vDQotLy8gICBmeGMgL0UgZmxpcHl2cyAvVCB2
c18yXzAgL0ZoIGNvbXBpbGVkL2ZsaXB5dnMuaCBCbGl0LnZzDQotLy8NCisvLyBHZW5lcmF0ZWQg
YnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA5LjMwLjkyMDAuMTYzODQNCiAv
Lw0KKy8vLw0KIC8vIFBhcmFtZXRlcnM6DQogLy8NCiAvLyAgIGZsb2F0NCBoYWxmUGl4ZWxTaXpl
Ow0KQEAgLTI5LDcgKzI3LDcgQEAKIGNvbnN0IEJZVEUgZ192czIwX2ZsaXB5dnNbXSA9DQogew0K
ICAgICAgIDAsICAgMiwgMjU0LCAyNTUsIDI1NCwgMjU1LCANCi0gICAgIDM1LCAgIDAsICA2Nywg
IDg0LCAgNjUsICA2NiwgDQorICAgICAzNiwgICAwLCAgNjcsICA4NCwgIDY1LCAgNjYsIA0KICAg
ICAgMjgsICAgMCwgICAwLCAgIDAsICA4NywgICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwgICAy
LCAyNTQsIDI1NSwgDQogICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDI4LCAgIDAsIA0KQEAgLTUw
LDIwICs0OCwyMCBAQCBjb25zdCBCWVRFIGdfdnMyMF9mbGlweXZzW10gPQ0KICAgICAgNzYsICA4
MywgIDc2LCAgMzIsICA4MywgMTA0LCANCiAgICAgIDk3LCAxMDAsIDEwMSwgMTE0LCAgMzIsICA2
NywgDQogICAgIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCAxMDEsIA0KLSAgICAxMTQsICAzMiwg
IDU3LCAgNDYsICA1MCwgIDU3LCANCi0gICAgIDQ2LCAgNTcsICA1MywgIDUwLCAgNDYsICA1MSwg
DQotICAgICA0OSwgIDQ5LCAgNDksICAgMCwgIDgxLCAgIDAsIA0KLSAgICAgIDAsICAgNSwgICAx
LCAgIDAsICAxNSwgMTYwLCANCi0gICAgICAwLCAgIDAsICAgMCwgIDYzLCAgIDAsICAgMCwgDQot
ICAgIDEyOCwgIDYzLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KLSAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAzMSwgICAwLCANCi0gICAgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIDEyOCwgDQotICAg
ICAgMCwgICAwLCAgMTUsIDE0NCwgICAyLCAgIDAsIA0KLSAgICAgIDAsICAgMywgICAwLCAgIDAs
ICAxNSwgMTkyLCANCi0gICAgICAwLCAgIDAsIDIyOCwgMTQ0LCAgIDAsICAgMCwgDQotICAgIDIy
OCwgMTYwLCAgIDQsICAgMCwgICAwLCAgIDQsIA0KLSAgICAgIDAsICAgMCwgIDE1LCAyMjQsICAg
MCwgICAwLCANCi0gICAgMjI4LCAxNDQsICAgMSwgICAwLCAgODAsIDE2MCwgDQotICAgICAgMSwg
ICAwLCAxNjAsIDE2MCwgMjU1LCAyNTUsIA0KLSAgICAgIDAsICAgMA0KKyAgICAxMTQsICAzMiwg
IDU3LCAgNDYsICA1MSwgIDQ4LCANCisgICAgIDQ2LCAgNTcsICA1MCwgIDQ4LCAgNDgsICA0Niwg
DQorICAgICA0OSwgIDU0LCAgNTEsICA1NiwgIDUyLCAgIDAsIA0KKyAgICAxNzEsIDE3MSwgIDgx
LCAgIDAsICAgMCwgICA1LCANCisgICAgICAxLCAgIDAsICAxNSwgMTYwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgIDYzLCAgIDAsICAgMCwgMTI4LCAgNjMsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAzMSwgICAwLCAgIDAsICAgMiwgDQorICAg
ICAgMCwgICAwLCAgIDAsIDEyOCwgICAwLCAgIDAsIA0KKyAgICAgMTUsIDE0NCwgICAyLCAgIDAs
ICAgMCwgICAzLCANCisgICAgICAwLCAgIDAsICAxNSwgMTkyLCAgIDAsICAgMCwgDQorICAgIDIy
OCwgMTQ0LCAgIDAsICAgMCwgMjI4LCAxNjAsIA0KKyAgICAgIDQsICAgMCwgICAwLCAgIDQsICAg
MCwgICAwLCANCisgICAgIDE1LCAyMjQsICAgMCwgICAwLCAyMjgsIDE0NCwgDQorICAgICAgMSwg
ICAwLCAgODAsIDE2MCwgICAxLCAgIDAsIA0KKyAgICAxNjAsIDE2MCwgMjU1LCAyNTUsICAgMCwg
ICAwDQogfTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvbHVtaW5hbmNlcHMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGls
ZWQvbHVtaW5hbmNlcHMuaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2x1bWluYW5jZXBz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzEsOCBAQAogI2lmIDANCiAvLw0KLS8vIEdlbmVy
YXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDkuMjkuOTUyLjMxMTEN
Ci0vLw0KLS8vICAgZnhjIC9FIGx1bWluYW5jZXBzIC9UIHBzXzJfMCAvRmggY29tcGlsZWQvbHVt
aW5hbmNlcHMuaCBCbGl0LnBzDQotLy8NCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBI
TFNMIFNoYWRlciBDb21waWxlciA5LjMwLjkyMDAuMTYzODQNCiAvLw0KKy8vLw0KIC8vIFBhcmFt
ZXRlcnM6DQogLy8NCiAvLyAgIGZsb2F0NCBtb2RlOw0KQEAgLTMzLDcgKzMxLDcgQEAKIGNvbnN0
IEJZVEUgZ19wczIwX2x1bWluYW5jZXBzW10gPQ0KIHsNCiAgICAgICAwLCAgIDIsIDI1NSwgMjU1
LCAyNTQsIDI1NSwgDQotICAgICA0MywgICAwLCAgNjcsICA4NCwgIDY1LCAgNjYsIA0KKyAgICAg
NDQsICAgMCwgIDY3LCAgODQsICA2NSwgIDY2LCANCiAgICAgIDI4LCAgIDAsICAgMCwgICAwLCAx
MTksICAgMCwgDQogICAgICAgMCwgICAwLCAgIDAsICAgMiwgMjU1LCAyNTUsIA0KICAgICAgIDIs
ICAgMCwgICAwLCAgIDAsICAyOCwgICAwLCANCkBAIC02MCwyMSArNTgsMjIgQEAgY29uc3QgQllU
RSBnX3BzMjBfbHVtaW5hbmNlcHNbXSA9DQogICAgICA4MywgMTA0LCAgOTcsIDEwMCwgMTAxLCAx
MTQsIA0KICAgICAgMzIsICA2NywgMTExLCAxMDksIDExMiwgMTA1LCANCiAgICAgMTA4LCAxMDEs
IDExNCwgIDMyLCAgNTcsICA0NiwgDQotICAgICA1MCwgIDU3LCAgNDYsICA1NywgIDUzLCAgNTAs
IA0KLSAgICAgNDYsICA1MSwgIDQ5LCAgNDksICA0OSwgICAwLCANCi0gICAgIDMxLCAgIDAsICAg
MCwgICAyLCAgIDAsICAgMCwgDQotICAgICAgMCwgMTI4LCAgIDAsICAgMCwgICAzLCAxNzYsIA0K
LSAgICAgMzEsICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCANCi0gICAgICAwLCAxNDQsICAgMCwg
ICA4LCAgMTUsIDE2MCwgDQotICAgICA2NiwgICAwLCAgIDAsICAgMywgICAwLCAgIDAsIA0KLSAg
ICAgMTUsIDEyOCwgICAwLCAgIDAsIDIyOCwgMTc2LCANCi0gICAgICAwLCAgIDgsIDIyOCwgMTYw
LCAgIDQsICAgMCwgDQotICAgICAgMCwgICA0LCAgIDEsICAgMCwgICA4LCAxMjgsIA0KLSAgICAg
IDAsICAgMCwgMjU1LCAxMjgsICAgMCwgICAwLCANCi0gICAgICAwLCAxNjAsICAgMCwgICAwLCAg
ODUsIDE2MCwgDQotICAgICAgMSwgICAwLCAgIDAsICAgMiwgICAxLCAgIDAsIA0KLSAgICAgIDcs
IDEyOCwgICAwLCAgIDAsICAgMCwgMTI4LCANCi0gICAgICAxLCAgIDAsICAgMCwgICAyLCAgIDAs
ICAgOCwgDQotICAgICAxNSwgMTI4LCAgIDEsICAgMCwgMjI4LCAxMjgsIA0KLSAgICAyNTUsIDI1
NSwgICAwLCAgIDANCisgICAgIDUxLCAgNDgsICA0NiwgIDU3LCAgNTAsICA0OCwgDQorICAgICA0
OCwgIDQ2LCAgNDksICA1NCwgIDUxLCAgNTYsIA0KKyAgICAgNTIsICAgMCwgMTcxLCAxNzEsICAz
MSwgICAwLCANCisgICAgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIDEyOCwgDQorICAgICAgMCwg
ICAwLCAgIDMsIDE3NiwgIDMxLCAgIDAsIA0KKyAgICAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwg
MTQ0LCANCisgICAgICAwLCAgIDgsICAxNSwgMTYwLCAgNjYsICAgMCwgDQorICAgICAgMCwgICAz
LCAgIDAsICAgMCwgIDE1LCAxMjgsIA0KKyAgICAgIDAsICAgMCwgMjI4LCAxNzYsICAgMCwgICA4
LCANCisgICAgMjI4LCAxNjAsICAgNCwgICAwLCAgIDAsICAgNCwgDQorICAgICAgMSwgICAwLCAg
IDgsIDEyOCwgICAwLCAgIDAsIA0KKyAgICAyNTUsIDEyOCwgICAwLCAgIDAsICAgMCwgMTYwLCAN
CisgICAgICAwLCAgIDAsICA4NSwgMTYwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAyLCAgIDEs
ICAgMCwgICA3LCAxMjgsIA0KKyAgICAgIDAsICAgMCwgICAwLCAxMjgsICAgMSwgICAwLCANCisg
ICAgICAwLCAgIDIsICAgMCwgICA4LCAgMTUsIDEyOCwgDQorICAgICAgMSwgICAwLCAyMjgsIDEy
OCwgMjU1LCAyNTUsIA0KKyAgICAgIDAsICAgMA0KIH07DQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJv
dWdoMTF2cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaDExdnMuaAkocmV2aXNp
b24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdoMTF2cy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDI3ICsxLDI0IEBACiAjaWYgMA0KIC8vDQotLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAo
UikgSExTTCBTaGFkZXIgQ29tcGlsZXIgOS4yOS45NTIuMzExMQ0KLS8vDQotLy8NCi0vLyAgIGZ4
YyAvRSBWU19QYXNzdGhyb3VnaCAvVCB2c180XzAgL0ZoIGNvbXBpbGVkL3Bhc3N0aHJvdWdoMTF2
cy5oDQotLy8gICAgUGFzc3Rocm91Z2gxMS5obHNsDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29m
dCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgOS4zMC45MjAwLjE2Mzg0DQogLy8NCiAvLw0KKy8v
Lw0KIC8vDQogLy8gSW5wdXQgc2lnbmF0dXJlOg0KIC8vDQotLy8gTmFtZSAgICAgICAgICAgICAg
ICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCi0vLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0t
LS0tLQ0KLS8vIFBPU0lUSU9OICAgICAgICAgICAgICAgICAwICAgeHkgICAgICAgICAgMCAgICAg
Tk9ORSAgZmxvYXQgICB4eSAgDQotLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4eSAg
ICAgICAgICAxICAgICBOT05FICBmbG9hdCAgIHh5ICANCisvLyBOYW1lICAgICAgICAgICAgICAg
ICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAt
LS0tLS0NCisvLyBQT1NJVElPTiAgICAgICAgICAgICAgICAgMCAgIHh5ICAgICAgICAgIDAgICAg
IE5PTkUgICBmbG9hdCAgIHh5ICANCisvLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5
ICAgICAgICAgIDEgICAgIE5PTkUgICBmbG9hdCAgIHh5ICANCiAvLw0KIC8vDQogLy8gT3V0cHV0
IHNpZ25hdHVyZToNCiAvLw0KLS8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBS
ZWdpc3RlciBTeXNWYWx1ZSBGb3JtYXQgICBVc2VkDQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0g
LS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLSAtLS0tLS0NCi0vLyBTVl9QT1NJ
VElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1MgIGZsb2F0ICAgeHl6
dw0KLS8vIFRFWENPT1JEICAgICAgICAgICAgICAgICAwICAgeHkgICAgICAgICAgMSAgICAgTk9O
RSAgZmxvYXQgICB4eSAgDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJl
Z2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0g
LS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQorLy8gU1ZfUE9T
SVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAgUE9TICAgZmxvYXQgICB4
eXp3DQorLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4eSAgICAgICAgICAxICAgICBO
T05FICAgZmxvYXQgICB4eSAgDQogLy8NCiB2c180XzANCiBkY2xfaW5wdXQgdjAueHkNCkBAIC0z
NywxMCArMzQsMTAgQEAgcmV0IA0KIA0KIGNvbnN0IEJZVEUgZ19WU19QYXNzdGhyb3VnaFtdID0N
CiB7DQotICAgICA2OCwgIDg4LCAgNjYsICA2NywgMTE3LCAgNzQsIA0KLSAgICAgMzQsICA3OSwg
MTc0LCAyMjYsIDE3MCwgIDc0LCANCi0gICAgMTEwLCAgMTYsIDIzNywgIDE0LCAgNjcsIDE4NSwg
DQotICAgIDExOSwgMTY3LCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNjgsICA4OCwgIDY2
LCAgNjcsIDE5NywgMjE0LCANCisgICAgMTg0LCAgODUsIDI0MCwgIDk0LCAgNzEsICA0OCwgDQor
ICAgIDE2NSwgIDM0LCAxNDIsIDIzMywgICAwLCAxMzUsIA0KKyAgICAxOTMsIDE3OCwgICAxLCAg
IDAsICAgMCwgICAwLCANCiAgICAgIDY4LCAgIDIsICAgMCwgICAwLCAgIDUsICAgMCwgDQogICAg
ICAgMCwgICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIA0KICAgICAxNDAsICAgMCwgICAwLCAgIDAs
IDIyNCwgICAwLCANCkBAIC01NywxMCArNTQsMTAgQEAgY29uc3QgQllURSBnX1ZTX1Bhc3N0aHJv
dWdoW10gPQ0KICAgICAgNzIsICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCANCiAgICAgMTA0LCAg
OTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgDQogICAgICA2NywgMTExLCAxMDksIDExMiwgMTA1LCAx
MDgsIA0KLSAgICAxMDEsIDExNCwgIDMyLCAgNTcsICA0NiwgIDUwLCANCi0gICAgIDU3LCAgNDYs
ICA1NywgIDUzLCAgNTAsICA0NiwgDQotICAgICA1MSwgIDQ5LCAgNDksICA0OSwgICAwLCAxNzEs
IA0KLSAgICAxNzEsIDE3MSwgIDczLCAgODMsICA3MSwgIDc4LCANCisgICAgMTAxLCAxMTQsICAz
MiwgIDU3LCAgNDYsICA1MSwgDQorICAgICA0OCwgIDQ2LCAgNTcsICA1MCwgIDQ4LCAgNDgsIA0K
KyAgICAgNDYsICA0OSwgIDU0LCAgNTEsICA1NiwgIDUyLCANCisgICAgICAwLCAxNzEsICA3Mywg
IDgzLCAgNzEsICA3OCwgDQogICAgICA3NiwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KICAg
ICAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCANCiAgICAgIDU2LCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQpAQCAtMTI3LDcgKzEyNCw3IEBAIGNvbnN0IEJZVEUgZ19WU19QYXNzdGhy
b3VnaFtdID0NCiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQogICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCi0gICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgNCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQogICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaGx1bTExcHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRl
cmVyL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hsdW0xMXBzLmgJKHJldmlzaW9uIDE1OTUz
MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hh
ZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaGx1bTExcHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSwx
MiArMSw5IEBACiAjaWYgMA0KIC8vDQotLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExT
TCBTaGFkZXIgQ29tcGlsZXIgOS4yOS45NTIuMzExMQ0KLS8vDQotLy8NCi0vLyAgIGZ4YyAvRSBQ
U19QYXNzdGhyb3VnaEx1bSAvVCBwc180XzAgL0ZoIGNvbXBpbGVkL3Bhc3N0aHJvdWdobHVtMTFw
cy5oDQotLy8gICAgUGFzc3Rocm91Z2gxMS5obHNsDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29m
dCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgOS4zMC45MjAwLjE2Mzg0DQogLy8NCiAvLw0KKy8v
Lw0KIC8vIFJlc291cmNlIEJpbmRpbmdzOg0KIC8vDQogLy8gTmFtZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAgICAgICAgIERpbSBTbG90IEVsZW1lbnRzDQpA
QCAtMTgsMTcgKzE1LDE3IEBACiAvLw0KIC8vIElucHV0IHNpZ25hdHVyZToNCiAvLw0KLS8vIE5h
bWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSBGb3JtYXQg
ICBVc2VkDQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0t
LS0tLS0tIC0tLS0tLSAtLS0tLS0NCi0vLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5
encgICAgICAgIDAgICAgICBQT1MgIGZsb2F0ICAgICAgIA0KLS8vIFRFWENPT1JEICAgICAgICAg
ICAgICAgICAwICAgeHkgICAgICAgICAgMSAgICAgTk9ORSAgZmxvYXQgICB4eSAgDQorLy8gTmFt
ZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQg
ICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0t
LS0tLS0tIC0tLS0tLS0gLS0tLS0tDQorLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4
eXp3ICAgICAgICAwICAgICAgUE9TICAgZmxvYXQgICAgICAgDQorLy8gVEVYQ09PUkQgICAgICAg
ICAgICAgICAgIDAgICB4eSAgICAgICAgICAxICAgICBOT05FICAgZmxvYXQgICB4eSAgDQogLy8N
CiAvLw0KIC8vIE91dHB1dCBzaWduYXR1cmU6DQogLy8NCi0vLyBOYW1lICAgICAgICAgICAgICAg
ICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgRm9ybWF0ICAgVXNlZA0KLS8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0gLS0t
LS0tDQotLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFS
R0VUICBmbG9hdCAgIHh5encNCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sg
UmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9U
QVJHRVQgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICBUQVJHRVQgICBmbG9hdCAg
IHh5encNCiAvLw0KIHBzXzRfMA0KIGRjbF9zYW1wbGVyIHMwLCBtb2RlX2RlZmF1bHQNCkBAIC00
NSwxMCArNDIsMTAgQEAgcmV0IA0KIA0KIGNvbnN0IEJZVEUgZ19QU19QYXNzdGhyb3VnaEx1bVtd
ID0NCiB7DQotICAgICA2OCwgIDg4LCAgNjYsICA2NywgIDk3LCAgNDEsIA0KLSAgICAgMzcsIDE1
NCwgICAwLCAxNzQsIDEzNywgMTU3LCANCi0gICAgIDc2LCAyMTksIDIzMCwgIDI2LCAyMjcsIDE3
NCwgDQotICAgIDE4NywgIDY2LCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNjgsICA4OCwg
IDY2LCAgNjcsIDI0NCwgICA5LCANCisgICAgMjEzLCAxNDcsICAxOSwgMjQ5LCAgNzAsIDExMSwg
DQorICAgIDE1NywgIDkyLCAyNDMsIDE2MCwgIDQwLCAxNDQsIA0KKyAgICAyMzgsIDIyMSwgICAx
LCAgIDAsICAgMCwgICAwLCANCiAgICAgMTI4LCAgIDIsICAgMCwgICAwLCAgIDUsICAgMCwgDQog
ICAgICAgMCwgICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIA0KICAgICAyMjAsICAgMCwgICAwLCAg
IDAsICA1MiwgICAxLCANCkBAIC03OSw5ICs3Niw5IEBAIGNvbnN0IEJZVEUgZ19QU19QYXNzdGhy
b3VnaEx1bVtdID0NCiAgICAgIDMyLCAgODMsIDEwNCwgIDk3LCAxMDAsIDEwMSwgDQogICAgIDEx
NCwgIDMyLCAgNjcsIDExMSwgMTA5LCAxMTIsIA0KICAgICAxMDUsIDEwOCwgMTAxLCAxMTQsICAz
MiwgIDU3LCANCi0gICAgIDQ2LCAgNTAsICA1NywgIDQ2LCAgNTcsICA1MywgDQotICAgICA1MCwg
IDQ2LCAgNTEsICA0OSwgIDQ5LCAgNDksIA0KLSAgICAgIDAsIDE3MSwgMTcxLCAxNzEsICA3Mywg
IDgzLCANCisgICAgIDQ2LCAgNTEsICA0OCwgIDQ2LCAgNTcsICA1MCwgDQorICAgICA0OCwgIDQ4
LCAgNDYsICA0OSwgIDU0LCAgNTEsIA0KKyAgICAgNTYsICA1MiwgICAwLCAxNzEsICA3MywgIDgz
LCANCiAgICAgIDcxLCAgNzgsICA4MCwgICAwLCAgIDAsICAgMCwgDQogICAgICAgMiwgICAwLCAg
IDAsICAgMCwgICA4LCAgIDAsIA0KICAgICAgIDAsICAgMCwgIDU2LCAgIDAsICAgMCwgICAwLCAN
CkBAIC0xNDUsNyArMTQyLDcgQEAgY29uc3QgQllURSBnX1BTX1Bhc3N0aHJvdWdoTHVtW10gPQ0K
ICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQogICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KLSAg
ICAgIDIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQogICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KICAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdobHVtYWxwaGExMXBzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9z
aGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdobHVtYWxwaGExMXBzLmgJKHJldmlzaW9uIDE1OTUz
MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hh
ZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaGx1bWFscGhhMTFwcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDEyICsxLDkgQEAKICNpZiAwDQogLy8NCi0vLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChS
KSBITFNMIFNoYWRlciBDb21waWxlciA5LjI5Ljk1Mi4zMTExDQotLy8NCi0vLw0KLS8vICAgZnhj
IC9FIFBTX1Bhc3N0aHJvdWdoTHVtQWxwaGEgL1QgcHNfNF8wIC9GaA0KLS8vICAgIGNvbXBpbGVk
L3Bhc3N0aHJvdWdobHVtYWxwaGExMXBzLmggUGFzc3Rocm91Z2gxMS5obHNsDQorLy8gR2VuZXJh
dGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgOS4zMC45MjAwLjE2Mzg0
DQogLy8NCiAvLw0KKy8vLw0KIC8vIFJlc291cmNlIEJpbmRpbmdzOg0KIC8vDQogLy8gTmFtZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAgICAgICAgIERpbSBT
bG90IEVsZW1lbnRzDQpAQCAtMTgsMTcgKzE1LDE3IEBACiAvLw0KIC8vIElucHV0IHNpZ25hdHVy
ZToNCiAvLw0KLS8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBT
eXNWYWx1ZSBGb3JtYXQgICBVc2VkDQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0t
LS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLSAtLS0tLS0NCi0vLyBTVl9QT1NJVElPTiAgICAg
ICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1MgIGZsb2F0ICAgICAgIA0KLS8vIFRF
WENPT1JEICAgICAgICAgICAgICAgICAwICAgeHkgICAgICAgICAgMSAgICAgTk9ORSAgZmxvYXQg
ICB4eSAgDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5
c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0t
LS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQorLy8gU1ZfUE9TSVRJT04gICAg
ICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAgUE9TICAgZmxvYXQgICAgICAgDQorLy8g
VEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4eSAgICAgICAgICAxICAgICBOT05FICAgZmxv
YXQgICB4eSAgDQogLy8NCiAvLw0KIC8vIE91dHB1dCBzaWduYXR1cmU6DQogLy8NCi0vLyBOYW1l
ICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgRm9ybWF0ICAg
VXNlZA0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0t
LS0tLSAtLS0tLS0gLS0tLS0tDQotLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3
ICAgICAgICAwICAgVEFSR0VUICBmbG9hdCAgIHh5encNCisvLyBOYW1lICAgICAgICAgICAgICAg
ICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAt
LS0tLS0NCisvLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICBU
QVJHRVQgICBmbG9hdCAgIHh5encNCiAvLw0KIHBzXzRfMA0KIGRjbF9zYW1wbGVyIHMwLCBtb2Rl
X2RlZmF1bHQNCkBAIC00NCwxMCArNDEsMTAgQEAgcmV0IA0KIA0KIGNvbnN0IEJZVEUgZ19QU19Q
YXNzdGhyb3VnaEx1bUFscGhhW10gPQ0KIHsNCi0gICAgIDY4LCAgODgsICA2NiwgIDY3LCAxOTcs
ICA3MiwgDQotICAgIDI1MSwgMjM2LCAgNTMsIDEwNywgMTgyLCAxNDYsIA0KLSAgICAxOTYsIDIx
OSwgMTMwLCAxODcsIDE0MCwgMTU5LCANCi0gICAgMjExLCAxMjMsICAgMSwgICAwLCAgIDAsICAg
MCwgDQorICAgICA2OCwgIDg4LCAgNjYsICA2NywgMTg1LCAgMTQsIA0KKyAgICAgODQsIDIyMywg
MTkyLCAgNDIsICAxNiwgMTMzLCANCisgICAgIDQ2LCAxMDAsICA5NSwgMjIxLCAxODMsICA5Nywg
DQorICAgIDE5MiwgIDIzLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KICAgICAxMDgsICAgMiwgICAw
LCAgIDAsICAgNSwgICAwLCANCiAgICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgDQog
ICAgIDIyMCwgICAwLCAgIDAsICAgMCwgIDUyLCAgIDEsIA0KQEAgLTc4LDkgKzc1LDkgQEAgY29u
c3QgQllURSBnX1BTX1Bhc3N0aHJvdWdoTHVtQWxwaGFbXSA9DQogICAgICAzMiwgIDgzLCAxMDQs
ICA5NywgMTAwLCAxMDEsIA0KICAgICAxMTQsICAzMiwgIDY3LCAxMTEsIDEwOSwgMTEyLCANCiAg
ICAgMTA1LCAxMDgsIDEwMSwgMTE0LCAgMzIsICA1NywgDQotICAgICA0NiwgIDUwLCAgNTcsICA0
NiwgIDU3LCAgNTMsIA0KLSAgICAgNTAsICA0NiwgIDUxLCAgNDksICA0OSwgIDQ5LCANCi0gICAg
ICAwLCAxNzEsIDE3MSwgMTcxLCAgNzMsICA4MywgDQorICAgICA0NiwgIDUxLCAgNDgsICA0Niwg
IDU3LCAgNTAsIA0KKyAgICAgNDgsICA0OCwgIDQ2LCAgNDksICA1NCwgIDUxLCANCisgICAgIDU2
LCAgNTIsICAgMCwgMTcxLCAgNzMsICA4MywgDQogICAgICA3MSwgIDc4LCAgODAsICAgMCwgICAw
LCAgIDAsIA0KICAgICAgIDIsICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCANCiAgICAgICAwLCAg
IDAsICA1NiwgICAwLCAgIDAsICAgMCwgDQpAQCAtMTQwLDcgKzEzNyw3IEBAIGNvbnN0IEJZVEUg
Z19QU19QYXNzdGhyb3VnaEx1bUFscGhhW10gPQ0KICAgICAgIDAsICAgMCwgICAxLCAgIDAsICAg
MCwgICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQogICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgDQogICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bh
c3N0aHJvdWdocHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hwcy5oCShyZXZp
c2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hwcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDEwICsxLDggQEAKICNpZiAwDQogLy8NCi0vLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChS
KSBITFNMIFNoYWRlciBDb21waWxlciA5LjI5Ljk1Mi4zMTExDQotLy8NCi0vLyAgIGZ4YyAvRSBw
YXNzdGhyb3VnaHBzIC9UIHBzXzJfMCAvRmggY29tcGlsZWQvcGFzc3Rocm91Z2hwcy5oIEJsaXQu
cHMNCi0vLw0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBp
bGVyIDkuMzAuOTIwMC4xNjM4NA0KIC8vDQorLy8vDQogLy8gUGFyYW1ldGVyczoNCiAvLw0KIC8v
ICAgc2FtcGxlcjJEIHRleDsNCkBAIC0yOSw3ICsyNyw3IEBACiBjb25zdCBCWVRFIGdfcHMyMF9w
YXNzdGhyb3VnaHBzW10gPQ0KIHsNCiAgICAgICAwLCAgIDIsIDI1NSwgMjU1LCAyNTQsIDI1NSwg
DQotICAgICAzMiwgICAwLCAgNjcsICA4NCwgIDY1LCAgNjYsIA0KKyAgICAgMzMsICAgMCwgIDY3
LCAgODQsICA2NSwgIDY2LCANCiAgICAgIDI4LCAgIDAsICAgMCwgICAwLCAgNzUsICAgMCwgDQog
ICAgICAgMCwgICAwLCAgIDAsICAgMiwgMjU1LCAyNTUsIA0KICAgICAgIDEsICAgMCwgICAwLCAg
IDAsICAyOCwgICAwLCANCkBAIC00OCwxNiArNDYsMTcgQEAgY29uc3QgQllURSBnX3BzMjBfcGFz
c3Rocm91Z2hwc1tdID0NCiAgICAgIDc2LCAgODMsICA3NiwgIDMyLCAgODMsIDEwNCwgDQogICAg
ICA5NywgMTAwLCAxMDEsIDExNCwgIDMyLCAgNjcsIA0KICAgICAxMTEsIDEwOSwgMTEyLCAxMDUs
IDEwOCwgMTAxLCANCi0gICAgMTE0LCAgMzIsICA1NywgIDQ2LCAgNTAsICA1NywgDQotICAgICA0
NiwgIDU3LCAgNTMsICA1MCwgIDQ2LCAgNTEsIA0KLSAgICAgNDksICA0OSwgIDQ5LCAgIDAsICAz
MSwgICAwLCANCi0gICAgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIDEyOCwgDQotICAgICAgMCwg
ICAwLCAgIDMsIDE3NiwgIDMxLCAgIDAsIA0KLSAgICAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwg
MTQ0LCANCi0gICAgICAwLCAgIDgsICAxNSwgMTYwLCAgNjYsICAgMCwgDQotICAgICAgMCwgICAz
LCAgIDAsICAgMCwgIDE1LCAxMjgsIA0KLSAgICAgIDAsICAgMCwgMjI4LCAxNzYsICAgMCwgICA4
LCANCi0gICAgMjI4LCAxNjAsICAgMSwgICAwLCAgIDAsICAgMiwgDQotICAgICAgMCwgICA4LCAg
MTUsIDEyOCwgICAwLCAgIDAsIA0KLSAgICAyMjgsIDEyOCwgMjU1LCAyNTUsICAgMCwgICAwDQor
ICAgIDExNCwgIDMyLCAgNTcsICA0NiwgIDUxLCAgNDgsIA0KKyAgICAgNDYsICA1NywgIDUwLCAg
NDgsICA0OCwgIDQ2LCANCisgICAgIDQ5LCAgNTQsICA1MSwgIDU2LCAgNTIsICAgMCwgDQorICAg
IDE3MSwgMTcxLCAgMzEsICAgMCwgICAwLCAgIDIsIA0KKyAgICAgIDAsICAgMCwgICAwLCAxMjgs
ICAgMCwgICAwLCANCisgICAgICAzLCAxNzYsICAzMSwgICAwLCAgIDAsICAgMiwgDQorICAgICAg
MCwgICAwLCAgIDAsIDE0NCwgICAwLCAgIDgsIA0KKyAgICAgMTUsIDE2MCwgIDY2LCAgIDAsICAg
MCwgICAzLCANCisgICAgICAwLCAgIDAsICAxNSwgMTI4LCAgIDAsICAgMCwgDQorICAgIDIyOCwg
MTc2LCAgIDAsICAgOCwgMjI4LCAxNjAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDIsICAgMCwg
ICA4LCANCisgICAgIDE1LCAxMjgsICAgMCwgICAwLCAyMjgsIDEyOCwgDQorICAgIDI1NSwgMjU1
LCAgIDAsICAgMA0KIH07DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiMTFwcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
c2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYjExcHMuaAkocmV2aXNpb24gMTU5NTMyKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJz
L2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiMTFwcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICsx
LDkgQEAKICNpZiAwDQogLy8NCi0vLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNo
YWRlciBDb21waWxlciA5LjI5Ljk1Mi4zMTExDQotLy8NCi0vLw0KLS8vICAgZnhjIC9FIFBTX1Bh
c3N0aHJvdWdoUkdCIC9UIHBzXzRfMCAvRmggY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2IxMXBzLmgN
Ci0vLyAgICBQYXNzdGhyb3VnaDExLmhsc2wNCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChS
KSBITFNMIFNoYWRlciBDb21waWxlciA5LjMwLjkyMDAuMTYzODQNCiAvLw0KIC8vDQorLy8vDQog
Ly8gUmVzb3VyY2UgQmluZGluZ3M6DQogLy8NCiAvLyBOYW1lICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAgICAgICAgRGltIFNsb3QgRWxlbWVudHMNCkBAIC0x
OCwxNyArMTUsMTcgQEAKIC8vDQogLy8gSW5wdXQgc2lnbmF0dXJlOg0KIC8vDQotLy8gTmFtZSAg
ICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVz
ZWQNCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0t
LS0gLS0tLS0tIC0tLS0tLQ0KLS8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAg
ICAgICAgMCAgICAgIFBPUyAgZmxvYXQgICAgICAgDQotLy8gVEVYQ09PUkQgICAgICAgICAgICAg
ICAgIDAgICB4eSAgICAgICAgICAxICAgICBOT05FICBmbG9hdCAgIHh5ICANCisvLyBOYW1lICAg
ICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVz
ZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0t
LS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encg
ICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAgICAgICANCisvLyBURVhDT09SRCAgICAgICAgICAg
ICAgICAgMCAgIHh5ICAgICAgICAgIDEgICAgIE5PTkUgICBmbG9hdCAgIHh5ICANCiAvLw0KIC8v
DQogLy8gT3V0cHV0IHNpZ25hdHVyZToNCiAvLw0KLS8vIE5hbWUgICAgICAgICAgICAgICAgIElu
ZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSBGb3JtYXQgICBVc2VkDQotLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLSAtLS0tLS0N
Ci0vLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICBUQVJHRVQg
IGZsb2F0ICAgeHl6dw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdp
c3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0t
LS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1RBUkdF
VCAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgIGZsb2F0ICAgeHl6
dw0KIC8vDQogcHNfNF8wDQogZGNsX3NhbXBsZXIgczAsIG1vZGVfZGVmYXVsdA0KQEAgLTQ1LDEw
ICs0MiwxMCBAQCByZXQgDQogDQogY29uc3QgQllURSBnX1BTX1Bhc3N0aHJvdWdoUkdCW10gPQ0K
IHsNCi0gICAgIDY4LCAgODgsICA2NiwgIDY3LCAyNTMsICA0NSwgDQotICAgICAxMywgIDM0LCAx
MjUsIDE5NCwgIDk1LCAxNDksIA0KLSAgICAgIDEsICA5NSwgMTk0LCAyNTIsIDExOCwgMjI4LCAN
Ci0gICAgMTc4LCAyMDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICA2OCwgIDg4LCAgNjYs
ICA2NywgMTI1LCAxODYsIA0KKyAgICAyNTAsIDI0MiwgMTEzLCAyNTUsICA1OSwgMjM5LCANCisg
ICAgMTE5LCAxNTgsIDIzNywgIDc4LCAyMjAsICA0MywgDQorICAgIDE2MCwgIDQ2LCAgIDEsICAg
MCwgICAwLCAgIDAsIA0KICAgICAxMjgsICAgMiwgICAwLCAgIDAsICAgNSwgICAwLCANCiAgICAg
ICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgDQogICAgIDIyMCwgICAwLCAgIDAsICAgMCwg
IDUyLCAgIDEsIA0KQEAgLTc5LDkgKzc2LDkgQEAgY29uc3QgQllURSBnX1BTX1Bhc3N0aHJvdWdo
UkdCW10gPQ0KICAgICAgMzIsICA4MywgMTA0LCAgOTcsIDEwMCwgMTAxLCANCiAgICAgMTE0LCAg
MzIsICA2NywgMTExLCAxMDksIDExMiwgDQogICAgIDEwNSwgMTA4LCAxMDEsIDExNCwgIDMyLCAg
NTcsIA0KLSAgICAgNDYsICA1MCwgIDU3LCAgNDYsICA1NywgIDUzLCANCi0gICAgIDUwLCAgNDYs
ICA1MSwgIDQ5LCAgNDksICA0OSwgDQotICAgICAgMCwgMTcxLCAxNzEsIDE3MSwgIDczLCAgODMs
IA0KKyAgICAgNDYsICA1MSwgIDQ4LCAgNDYsICA1NywgIDUwLCANCisgICAgIDQ4LCAgNDgsICA0
NiwgIDQ5LCAgNTQsICA1MSwgDQorICAgICA1NiwgIDUyLCAgIDAsIDE3MSwgIDczLCAgODMsIA0K
ICAgICAgNzEsICA3OCwgIDgwLCAgIDAsICAgMCwgICAwLCANCiAgICAgICAyLCAgIDAsICAgMCwg
ICAwLCAgIDgsICAgMCwgDQogICAgICAgMCwgICAwLCAgNTYsICAgMCwgICAwLCAgIDAsIA0KQEAg
LTE0NSw3ICsxNDIsNyBAQCBjb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hSR0JbXSA9DQogICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQotICAgICAg
MiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQogICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRl
cmVyL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2JhMTFwcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9j
b21waWxlZC9wYXNzdGhyb3VnaHJnYmExMXBzLmgJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxl
ZC9wYXNzdGhyb3VnaHJnYmExMXBzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIgKzEsOSBAQAog
I2lmIDANCiAvLw0KLS8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENv
bXBpbGVyIDkuMjkuOTUyLjMxMTENCi0vLw0KLS8vDQotLy8gICBmeGMgL0UgUFNfUGFzc3Rocm91
Z2hSR0JBIC9UIHBzXzRfMCAvRmggY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2JhMTFwcy5oDQotLy8g
ICAgUGFzc3Rocm91Z2gxMS5obHNsDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExT
TCBTaGFkZXIgQ29tcGlsZXIgOS4zMC45MjAwLjE2Mzg0DQogLy8NCiAvLw0KKy8vLw0KIC8vIFJl
c291cmNlIEJpbmRpbmdzOg0KIC8vDQogLy8gTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFR5cGUgIEZvcm1hdCAgICAgICAgIERpbSBTbG90IEVsZW1lbnRzDQpAQCAtMTgsMTcg
KzE1LDE3IEBACiAvLw0KIC8vIElucHV0IHNpZ25hdHVyZToNCiAvLw0KLS8vIE5hbWUgICAgICAg
ICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSBGb3JtYXQgICBVc2VkDQot
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0t
LS0tLSAtLS0tLS0NCi0vLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAg
IDAgICAgICBQT1MgIGZsb2F0ICAgICAgIA0KLS8vIFRFWENPT1JEICAgICAgICAgICAgICAgICAw
ICAgeHkgICAgICAgICAgMSAgICAgTk9ORSAgZmxvYXQgICB4eSAgDQorLy8gTmFtZSAgICAgICAg
ICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0t
LS0tLS0gLS0tLS0tDQorLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAg
ICAwICAgICAgUE9TICAgZmxvYXQgICAgICAgDQorLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAg
IDAgICB4eSAgICAgICAgICAxICAgICBOT05FICAgZmxvYXQgICB4eSAgDQogLy8NCiAvLw0KIC8v
IE91dHB1dCBzaWduYXR1cmU6DQogLy8NCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAg
IE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgRm9ybWF0ICAgVXNlZA0KLS8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0gLS0tLS0tDQotLy8g
U1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICBmbG9h
dCAgIHh5encNCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIg
U3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAt
LS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9UQVJHRVQgICAg
ICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICBUQVJHRVQgICBmbG9hdCAgIHh5encNCiAv
Lw0KIHBzXzRfMA0KIGRjbF9zYW1wbGVyIHMwLCBtb2RlX2RlZmF1bHQNCkBAIC00MiwxMCArMzks
MTAgQEAgcmV0IA0KIA0KIGNvbnN0IEJZVEUgZ19QU19QYXNzdGhyb3VnaFJHQkFbXSA9DQogew0K
LSAgICAgNjgsICA4OCwgIDY2LCAgNjcsIDE1MiwgIDg2LCANCi0gICAgMjI1LCAxMDcsIDE1NSwg
IDgzLCAyMTYsICAxMywgDQotICAgIDE1NCwgMjEyLCAxNDQsICAgNSwgIDgyLCAgNzQsIA0KLSAg
ICAgOTAsICA5OCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDY4LCAgODgsICA2NiwgIDY3
LCAxNTEsIDE1MiwgDQorICAgICAgOCwgMTAyLCAxNzQsIDEzNSwgIDc2LCAgNTcsIA0KKyAgICAx
MDAsIDE0NiwgIDU5LCAgNzQsIDIwNSwgIDM1LCANCisgICAgMjA2LCAgMjEsICAgMSwgICAwLCAg
IDAsICAgMCwgDQogICAgICA4MCwgICAyLCAgIDAsICAgMCwgICA1LCAgIDAsIA0KICAgICAgIDAs
ICAgMCwgIDUyLCAgIDAsICAgMCwgICAwLCANCiAgICAgMjIwLCAgIDAsICAgMCwgICAwLCAgNTIs
ICAgMSwgDQpAQCAtNzYsOSArNzMsOSBAQCBjb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hSR0JB
W10gPQ0KICAgICAgMzIsICA4MywgMTA0LCAgOTcsIDEwMCwgMTAxLCANCiAgICAgMTE0LCAgMzIs
ICA2NywgMTExLCAxMDksIDExMiwgDQogICAgIDEwNSwgMTA4LCAxMDEsIDExNCwgIDMyLCAgNTcs
IA0KLSAgICAgNDYsICA1MCwgIDU3LCAgNDYsICA1NywgIDUzLCANCi0gICAgIDUwLCAgNDYsICA1
MSwgIDQ5LCAgNDksICA0OSwgDQotICAgICAgMCwgMTcxLCAxNzEsIDE3MSwgIDczLCAgODMsIA0K
KyAgICAgNDYsICA1MSwgIDQ4LCAgNDYsICA1NywgIDUwLCANCisgICAgIDQ4LCAgNDgsICA0Niwg
IDQ5LCAgNTQsICA1MSwgDQorICAgICA1NiwgIDUyLCAgIDAsIDE3MSwgIDczLCAgODMsIA0KICAg
ICAgNzEsICA3OCwgIDgwLCAgIDAsICAgMCwgICAwLCANCiAgICAgICAyLCAgIDAsICAgMCwgICAw
LCAgIDgsICAgMCwgDQogICAgICAgMCwgICAwLCAgNTYsICAgMCwgICAwLCAgIDAsIA0KQEAgLTEz
NCw3ICsxMzEsNyBAQCBjb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hSR0JBW10gPQ0KICAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQogICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KLSAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQogICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KICAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9zaGFkZXJzL2NvbXBpbGVkL3N0YW5kYXJkdnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvc3Rh
bmRhcmR2cy5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvc3RhbmRhcmR2cy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDEwICsxLDggQEAKICNpZiAwDQogLy8NCi0vLyBHZW5lcmF0ZWQgYnkg
TWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA5LjI5Ljk1Mi4zMTExDQotLy8NCi0v
LyAgIGZ4YyAvRSBzdGFuZGFyZHZzIC9UIHZzXzJfMCAvRmggY29tcGlsZWQvc3RhbmRhcmR2cy5o
IEJsaXQudnMNCi0vLw0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVy
IENvbXBpbGVyIDkuMzAuOTIwMC4xNjM4NA0KIC8vDQorLy8vDQogLy8gUGFyYW1ldGVyczoNCiAv
Lw0KIC8vICAgZmxvYXQ0IGhhbGZQaXhlbFNpemU7DQpAQCAtMjksNyArMjcsNyBAQAogY29uc3Qg
QllURSBnX3ZzMjBfc3RhbmRhcmR2c1tdID0NCiB7DQogICAgICAgMCwgICAyLCAyNTQsIDI1NSwg
MjU0LCAyNTUsIA0KLSAgICAgMzUsICAgMCwgIDY3LCAgODQsICA2NSwgIDY2LCANCisgICAgIDM2
LCAgIDAsICA2NywgIDg0LCAgNjUsICA2NiwgDQogICAgICAyOCwgICAwLCAgIDAsICAgMCwgIDg3
LCAgIDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDIsIDI1NCwgMjU1LCANCiAgICAgICAxLCAg
IDAsICAgMCwgICAwLCAgMjgsICAgMCwgDQpAQCAtNTAsMjAgKzQ4LDIwIEBAIGNvbnN0IEJZVEUg
Z192czIwX3N0YW5kYXJkdnNbXSA9DQogICAgICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCAxMDQs
IA0KICAgICAgOTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgIDY3LCANCiAgICAgMTExLCAxMDksIDEx
MiwgMTA1LCAxMDgsIDEwMSwgDQotICAgIDExNCwgIDMyLCAgNTcsICA0NiwgIDUwLCAgNTcsIA0K
LSAgICAgNDYsICA1NywgIDUzLCAgNTAsICA0NiwgIDUxLCANCi0gICAgIDQ5LCAgNDksICA0OSwg
ICAwLCAgODEsICAgMCwgDQotICAgICAgMCwgICA1LCAgIDEsICAgMCwgIDE1LCAxNjAsIA0KLSAg
ICAgIDAsICAgMCwgICAwLCAgNjMsICAgMCwgICAwLCANCi0gICAgICAwLCAxOTEsICAgMCwgICAw
LCAxMjgsICA2MywgDQotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDMxLCAgIDAsIA0KLSAgICAg
IDAsICAgMiwgICAwLCAgIDAsICAgMCwgMTI4LCANCi0gICAgICAwLCAgIDAsICAxNSwgMTQ0LCAg
IDIsICAgMCwgDQotICAgICAgMCwgICAzLCAgIDAsICAgMCwgIDE1LCAxOTIsIA0KLSAgICAgIDAs
ICAgMCwgMjI4LCAxNDQsICAgMCwgICAwLCANCi0gICAgMjI4LCAxNjAsICAgNCwgICAwLCAgIDAs
ICAgNCwgDQotICAgICAgMCwgICAwLCAgMTUsIDIyNCwgICAwLCAgIDAsIA0KLSAgICAyMjgsIDE0
NCwgICAxLCAgIDAsIDE2NCwgMTYwLCANCi0gICAgICAxLCAgIDAsIDI0MCwgMTYwLCAyNTUsIDI1
NSwgDQotICAgICAgMCwgICAwDQorICAgIDExNCwgIDMyLCAgNTcsICA0NiwgIDUxLCAgNDgsIA0K
KyAgICAgNDYsICA1NywgIDUwLCAgNDgsICA0OCwgIDQ2LCANCisgICAgIDQ5LCAgNTQsICA1MSwg
IDU2LCAgNTIsICAgMCwgDQorICAgIDE3MSwgMTcxLCAgODEsICAgMCwgICAwLCAgIDUsIA0KKyAg
ICAgIDEsICAgMCwgIDE1LCAxNjAsICAgMCwgICAwLCANCisgICAgICAwLCAgNjMsICAgMCwgICAw
LCAgIDAsIDE5MSwgDQorICAgICAgMCwgICAwLCAxMjgsICA2MywgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgIDMxLCAgIDAsICAgMCwgICAyLCANCisgICAgICAwLCAgIDAsICAgMCwgMTI4LCAg
IDAsICAgMCwgDQorICAgICAxNSwgMTQ0LCAgIDIsICAgMCwgICAwLCAgIDMsIA0KKyAgICAgIDAs
ICAgMCwgIDE1LCAxOTIsICAgMCwgICAwLCANCisgICAgMjI4LCAxNDQsICAgMCwgICAwLCAyMjgs
IDE2MCwgDQorICAgICAgNCwgICAwLCAgIDAsICAgNCwgICAwLCAgIDAsIA0KKyAgICAgMTUsIDIy
NCwgICAwLCAgIDAsIDIyOCwgMTQ0LCANCisgICAgICAxLCAgIDAsIDE2NCwgMTYwLCAgIDEsICAg
MCwgDQorICAgIDI0MCwgMTYwLCAyNTUsIDI1NSwgICAwLCAgIDANCiB9Ow0KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL011cm11ckhhc2gz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFy
dHkvbXVybXVyaGFzaC9NdXJtdXJIYXNoMy5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL011cm11ckhhc2gz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwzMzQgKzEsMzM0IEBACi0vLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQotLy8gTXVybXVySGFzaDMgd2FzIHdyaXR0ZW4gYnkgQXVzdGluIEFwcGxlYnksIGFu
ZCBpcyBwbGFjZWQgaW4gdGhlIHB1YmxpYw0KLS8vIGRvbWFpbi4gVGhlIGF1dGhvciBoZXJlYnkg
ZGlzY2xhaW1zIGNvcHlyaWdodCB0byB0aGlzIHNvdXJjZSBjb2RlLg0KLQ0KLS8vIE5vdGUgLSBU
aGUgeDg2IGFuZCB4NjQgdmVyc2lvbnMgZG8gX25vdF8gcHJvZHVjZSB0aGUgc2FtZSByZXN1bHRz
LCBhcyB0aGUNCi0vLyBhbGdvcml0aG1zIGFyZSBvcHRpbWl6ZWQgZm9yIHRoZWlyIHJlc3BlY3Rp
dmUgcGxhdGZvcm1zLiBZb3UgY2FuIHN0aWxsDQotLy8gY29tcGlsZSBhbmQgcnVuIGFueSBvZiB0
aGVtIG9uIGFueSBwbGF0Zm9ybSwgYnV0IHlvdXIgcGVyZm9ybWFuY2Ugd2l0aCB0aGUNCi0vLyBu
b24tbmF0aXZlIHZlcnNpb24gd2lsbCBiZSBsZXNzIHRoYW4gb3B0aW1hbC4NCi0NCi0jaW5jbHVk
ZSAiTXVybXVySGFzaDMuaCINCi0NCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotLy8gUGxhdGZv
cm0tc3BlY2lmaWMgZnVuY3Rpb25zIGFuZCBtYWNyb3MNCi0NCi0vLyBNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpbw0KLQ0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKQ0KLQ0KLSNkZWZpbmUgRk9SQ0VfSU5M
SU5FICAgIF9fZm9yY2VpbmxpbmUNCi0NCi0jaW5jbHVkZSA8c3RkbGliLmg+DQotDQotI2RlZmlu
ZSBST1RMMzIoeCx5KSBfcm90bCh4LHkpDQotI2RlZmluZSBST1RMNjQoeCx5KSBfcm90bDY0KHgs
eSkNCi0NCi0jZGVmaW5lIEJJR19DT05TVEFOVCh4KSAoeCkNCi0NCi0vLyBPdGhlciBjb21waWxl
cnMNCi0NCi0jZWxzZSAgIC8vIGRlZmluZWQoX01TQ19WRVIpDQotDQotI2RlZmluZSBGT1JDRV9J
TkxJTkUgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpDQotDQotaW5saW5lIHVpbnQzMl90
IHJvdGwzMiAoIHVpbnQzMl90IHgsIGludDhfdCByICkNCi17DQotICByZXR1cm4gKHggPDwgcikg
fCAoeCA+PiAoMzIgLSByKSk7DQotfQ0KLQ0KLWlubGluZSB1aW50NjRfdCByb3RsNjQgKCB1aW50
NjRfdCB4LCBpbnQ4X3QgciApDQotew0KLSAgcmV0dXJuICh4IDw8IHIpIHwgKHggPj4gKDY0IC0g
cikpOw0KLX0NCi0NCi0jZGVmaW5lIFJPVEwzMih4LHkpIHJvdGwzMih4LHkpDQotI2RlZmluZSBS
T1RMNjQoeCx5KSByb3RsNjQoeCx5KQ0KLQ0KLSNkZWZpbmUgQklHX0NPTlNUQU5UKHgpICh4IyNM
TFUpDQotDQotI2VuZGlmIC8vICFkZWZpbmVkKF9NU0NfVkVSKQ0KLQ0KLS8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCi0vLyBCbG9jayByZWFkIC0gaWYgeW91ciBwbGF0Zm9ybSBuZWVkcyB0byBkbyBl
bmRpYW4tc3dhcHBpbmcgb3IgY2FuIG9ubHkNCi0vLyBoYW5kbGUgYWxpZ25lZCByZWFkcywgZG8g
dGhlIGNvbnZlcnNpb24gaGVyZQ0KLQ0KLUZPUkNFX0lOTElORSB1aW50MzJfdCBnZXRibG9jayAo
IGNvbnN0IHVpbnQzMl90ICogcCwgaW50IGkgKQ0KLXsNCi0gIHJldHVybiBwW2ldOw0KLX0NCi0N
Ci1GT1JDRV9JTkxJTkUgdWludDY0X3QgZ2V0YmxvY2sgKCBjb25zdCB1aW50NjRfdCAqIHAsIGlu
dCBpICkNCi17DQotICByZXR1cm4gcFtpXTsNCi19DQotDQotLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KLS8vIEZpbmFsaXphdGlvbiBtaXggLSBmb3JjZSBhbGwgYml0cyBvZiBhIGhhc2ggYmxvY2sg
dG8gYXZhbGFuY2hlDQotDQotRk9SQ0VfSU5MSU5FIHVpbnQzMl90IGZtaXggKCB1aW50MzJfdCBo
ICkNCi17DQotICBoIF49IGggPj4gMTY7DQotICBoICo9IDB4ODVlYmNhNmI7DQotICBoIF49IGgg
Pj4gMTM7DQotICBoICo9IDB4YzJiMmFlMzU7DQotICBoIF49IGggPj4gMTY7DQotDQotICByZXR1
cm4gaDsNCi19DQotDQotLy8tLS0tLS0tLS0tDQotDQotRk9SQ0VfSU5MSU5FIHVpbnQ2NF90IGZt
aXggKCB1aW50NjRfdCBrICkNCi17DQotICBrIF49IGsgPj4gMzM7DQotICBrICo9IEJJR19DT05T
VEFOVCgweGZmNTFhZmQ3ZWQ1NThjY2QpOw0KLSAgayBePSBrID4+IDMzOw0KLSAgayAqPSBCSUdf
Q09OU1RBTlQoMHhjNGNlYjlmZTFhODVlYzUzKTsNCi0gIGsgXj0gayA+PiAzMzsNCi0NCi0gIHJl
dHVybiBrOw0KLX0NCi0NCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotDQotdm9pZCBNdXJtdXJI
YXNoM194ODZfMzIgKCBjb25zdCB2b2lkICoga2V5LCBpbnQgbGVuLA0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3Qgc2VlZCwgdm9pZCAqIG91dCApDQotew0KLSAgY29uc3QgdWlu
dDhfdCAqIGRhdGEgPSAoY29uc3QgdWludDhfdCopa2V5Ow0KLSAgY29uc3QgaW50IG5ibG9ja3Mg
PSBsZW4gLyA0Ow0KLQ0KLSAgdWludDMyX3QgaDEgPSBzZWVkOw0KLQ0KLSAgY29uc3QgdWludDMy
X3QgYzEgPSAweGNjOWUyZDUxOw0KLSAgY29uc3QgdWludDMyX3QgYzIgPSAweDFiODczNTkzOw0K
LQ0KLSAgLy8tLS0tLS0tLS0tDQotICAvLyBib2R5DQotDQotICBjb25zdCB1aW50MzJfdCAqIGJs
b2NrcyA9IChjb25zdCB1aW50MzJfdCAqKShkYXRhICsgbmJsb2Nrcyo0KTsNCi0NCi0gIGZvcihp
bnQgaSA9IC1uYmxvY2tzOyBpOyBpKyspDQotICB7DQotICAgIHVpbnQzMl90IGsxID0gZ2V0Ymxv
Y2soYmxvY2tzLGkpOw0KLQ0KLSAgICBrMSAqPSBjMTsNCi0gICAgazEgPSBST1RMMzIoazEsMTUp
Ow0KLSAgICBrMSAqPSBjMjsNCi0gICAgDQotICAgIGgxIF49IGsxOw0KLSAgICBoMSA9IFJPVEwz
MihoMSwxMyk7IA0KLSAgICBoMSA9IGgxKjUrMHhlNjU0NmI2NDsNCi0gIH0NCi0NCi0gIC8vLS0t
LS0tLS0tLQ0KLSAgLy8gdGFpbA0KLQ0KLSAgY29uc3QgdWludDhfdCAqIHRhaWwgPSAoY29uc3Qg
dWludDhfdCopKGRhdGEgKyBuYmxvY2tzKjQpOw0KLQ0KLSAgdWludDMyX3QgazEgPSAwOw0KLQ0K
LSAgc3dpdGNoKGxlbiAmIDMpDQotICB7DQotICBjYXNlIDM6IGsxIF49IHRhaWxbMl0gPDwgMTY7
DQotICBjYXNlIDI6IGsxIF49IHRhaWxbMV0gPDwgODsNCi0gIGNhc2UgMTogazEgXj0gdGFpbFsw
XTsNCi0gICAgICAgICAgazEgKj0gYzE7IGsxID0gUk9UTDMyKGsxLDE1KTsgazEgKj0gYzI7IGgx
IF49IGsxOw0KLSAgfTsNCi0NCi0gIC8vLS0tLS0tLS0tLQ0KLSAgLy8gZmluYWxpemF0aW9uDQot
DQotICBoMSBePSBsZW47DQotDQotICBoMSA9IGZtaXgoaDEpOw0KLQ0KLSAgKih1aW50MzJfdCop
b3V0ID0gaDE7DQotfSANCi0NCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotDQotdm9pZCBNdXJt
dXJIYXNoM194ODZfMTI4ICggY29uc3Qgdm9pZCAqIGtleSwgY29uc3QgaW50IGxlbiwNCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzZWVkLCB2b2lkICogb3V0ICkNCi17DQot
ICBjb25zdCB1aW50OF90ICogZGF0YSA9IChjb25zdCB1aW50OF90KilrZXk7DQotICBjb25zdCBp
bnQgbmJsb2NrcyA9IGxlbiAvIDE2Ow0KLQ0KLSAgdWludDMyX3QgaDEgPSBzZWVkOw0KLSAgdWlu
dDMyX3QgaDIgPSBzZWVkOw0KLSAgdWludDMyX3QgaDMgPSBzZWVkOw0KLSAgdWludDMyX3QgaDQg
PSBzZWVkOw0KLQ0KLSAgY29uc3QgdWludDMyX3QgYzEgPSAweDIzOWI5NjFiOyANCi0gIGNvbnN0
IHVpbnQzMl90IGMyID0gMHhhYjBlOTc4OTsNCi0gIGNvbnN0IHVpbnQzMl90IGMzID0gMHgzOGIz
NGFlNTsgDQotICBjb25zdCB1aW50MzJfdCBjNCA9IDB4YTFlMzhiOTM7DQotDQotICAvLy0tLS0t
LS0tLS0NCi0gIC8vIGJvZHkNCi0NCi0gIGNvbnN0IHVpbnQzMl90ICogYmxvY2tzID0gKGNvbnN0
IHVpbnQzMl90ICopKGRhdGEgKyBuYmxvY2tzKjE2KTsNCi0NCi0gIGZvcihpbnQgaSA9IC1uYmxv
Y2tzOyBpOyBpKyspDQotICB7DQotICAgIHVpbnQzMl90IGsxID0gZ2V0YmxvY2soYmxvY2tzLGkq
NCswKTsNCi0gICAgdWludDMyX3QgazIgPSBnZXRibG9jayhibG9ja3MsaSo0KzEpOw0KLSAgICB1
aW50MzJfdCBrMyA9IGdldGJsb2NrKGJsb2NrcyxpKjQrMik7DQotICAgIHVpbnQzMl90IGs0ID0g
Z2V0YmxvY2soYmxvY2tzLGkqNCszKTsNCi0NCi0gICAgazEgKj0gYzE7IGsxICA9IFJPVEwzMihr
MSwxNSk7IGsxICo9IGMyOyBoMSBePSBrMTsNCi0NCi0gICAgaDEgPSBST1RMMzIoaDEsMTkpOyBo
MSArPSBoMjsgaDEgPSBoMSo1KzB4NTYxY2NkMWI7DQotDQotICAgIGsyICo9IGMyOyBrMiAgPSBS
T1RMMzIoazIsMTYpOyBrMiAqPSBjMzsgaDIgXj0gazI7DQotDQotICAgIGgyID0gUk9UTDMyKGgy
LDE3KTsgaDIgKz0gaDM7IGgyID0gaDIqNSsweDBiY2FhNzQ3Ow0KLQ0KLSAgICBrMyAqPSBjMzsg
azMgID0gUk9UTDMyKGszLDE3KTsgazMgKj0gYzQ7IGgzIF49IGszOw0KLQ0KLSAgICBoMyA9IFJP
VEwzMihoMywxNSk7IGgzICs9IGg0OyBoMyA9IGgzKjUrMHg5NmNkMWMzNTsNCi0NCi0gICAgazQg
Kj0gYzQ7IGs0ICA9IFJPVEwzMihrNCwxOCk7IGs0ICo9IGMxOyBoNCBePSBrNDsNCi0NCi0gICAg
aDQgPSBST1RMMzIoaDQsMTMpOyBoNCArPSBoMTsgaDQgPSBoNCo1KzB4MzJhYzNiMTc7DQotICB9
DQotDQotICAvLy0tLS0tLS0tLS0NCi0gIC8vIHRhaWwNCi0NCi0gIGNvbnN0IHVpbnQ4X3QgKiB0
YWlsID0gKGNvbnN0IHVpbnQ4X3QqKShkYXRhICsgbmJsb2NrcyoxNik7DQotDQotICB1aW50MzJf
dCBrMSA9IDA7DQotICB1aW50MzJfdCBrMiA9IDA7DQotICB1aW50MzJfdCBrMyA9IDA7DQotICB1
aW50MzJfdCBrNCA9IDA7DQotDQotICBzd2l0Y2gobGVuICYgMTUpDQotICB7DQotICBjYXNlIDE1
OiBrNCBePSB0YWlsWzE0XSA8PCAxNjsNCi0gIGNhc2UgMTQ6IGs0IF49IHRhaWxbMTNdIDw8IDg7
DQotICBjYXNlIDEzOiBrNCBePSB0YWlsWzEyXSA8PCAwOw0KLSAgICAgICAgICAgazQgKj0gYzQ7
IGs0ICA9IFJPVEwzMihrNCwxOCk7IGs0ICo9IGMxOyBoNCBePSBrNDsNCi0NCi0gIGNhc2UgMTI6
IGszIF49IHRhaWxbMTFdIDw8IDI0Ow0KLSAgY2FzZSAxMTogazMgXj0gdGFpbFsxMF0gPDwgMTY7
DQotICBjYXNlIDEwOiBrMyBePSB0YWlsWyA5XSA8PCA4Ow0KLSAgY2FzZSAgOTogazMgXj0gdGFp
bFsgOF0gPDwgMDsNCi0gICAgICAgICAgIGszICo9IGMzOyBrMyAgPSBST1RMMzIoazMsMTcpOyBr
MyAqPSBjNDsgaDMgXj0gazM7DQotDQotICBjYXNlICA4OiBrMiBePSB0YWlsWyA3XSA8PCAyNDsN
Ci0gIGNhc2UgIDc6IGsyIF49IHRhaWxbIDZdIDw8IDE2Ow0KLSAgY2FzZSAgNjogazIgXj0gdGFp
bFsgNV0gPDwgODsNCi0gIGNhc2UgIDU6IGsyIF49IHRhaWxbIDRdIDw8IDA7DQotICAgICAgICAg
ICBrMiAqPSBjMjsgazIgID0gUk9UTDMyKGsyLDE2KTsgazIgKj0gYzM7IGgyIF49IGsyOw0KLQ0K
LSAgY2FzZSAgNDogazEgXj0gdGFpbFsgM10gPDwgMjQ7DQotICBjYXNlICAzOiBrMSBePSB0YWls
WyAyXSA8PCAxNjsNCi0gIGNhc2UgIDI6IGsxIF49IHRhaWxbIDFdIDw8IDg7DQotICBjYXNlICAx
OiBrMSBePSB0YWlsWyAwXSA8PCAwOw0KLSAgICAgICAgICAgazEgKj0gYzE7IGsxICA9IFJPVEwz
MihrMSwxNSk7IGsxICo9IGMyOyBoMSBePSBrMTsNCi0gIH07DQotDQotICAvLy0tLS0tLS0tLS0N
Ci0gIC8vIGZpbmFsaXphdGlvbg0KLQ0KLSAgaDEgXj0gbGVuOyBoMiBePSBsZW47IGgzIF49IGxl
bjsgaDQgXj0gbGVuOw0KLQ0KLSAgaDEgKz0gaDI7IGgxICs9IGgzOyBoMSArPSBoNDsNCi0gIGgy
ICs9IGgxOyBoMyArPSBoMTsgaDQgKz0gaDE7DQotDQotICBoMSA9IGZtaXgoaDEpOw0KLSAgaDIg
PSBmbWl4KGgyKTsNCi0gIGgzID0gZm1peChoMyk7DQotICBoNCA9IGZtaXgoaDQpOw0KLQ0KLSAg
aDEgKz0gaDI7IGgxICs9IGgzOyBoMSArPSBoNDsNCi0gIGgyICs9IGgxOyBoMyArPSBoMTsgaDQg
Kz0gaDE7DQotDQotICAoKHVpbnQzMl90KilvdXQpWzBdID0gaDE7DQotICAoKHVpbnQzMl90Kilv
dXQpWzFdID0gaDI7DQotICAoKHVpbnQzMl90KilvdXQpWzJdID0gaDM7DQotICAoKHVpbnQzMl90
KilvdXQpWzNdID0gaDQ7DQotfQ0KLQ0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0NCi12b2lk
IE11cm11ckhhc2gzX3g2NF8xMjggKCBjb25zdCB2b2lkICoga2V5LCBjb25zdCBpbnQgbGVuLA0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IHNlZWQsIHZvaWQgKiBv
dXQgKQ0KLXsNCi0gIGNvbnN0IHVpbnQ4X3QgKiBkYXRhID0gKGNvbnN0IHVpbnQ4X3QqKWtleTsN
Ci0gIGNvbnN0IGludCBuYmxvY2tzID0gbGVuIC8gMTY7DQotDQotICB1aW50NjRfdCBoMSA9IHNl
ZWQ7DQotICB1aW50NjRfdCBoMiA9IHNlZWQ7DQotDQotICBjb25zdCB1aW50NjRfdCBjMSA9IEJJ
R19DT05TVEFOVCgweDg3YzM3YjkxMTE0MjUzZDUpOw0KLSAgY29uc3QgdWludDY0X3QgYzIgPSBC
SUdfQ09OU1RBTlQoMHg0Y2Y1YWQ0MzI3NDU5MzdmKTsNCi0NCi0gIC8vLS0tLS0tLS0tLQ0KLSAg
Ly8gYm9keQ0KLQ0KLSAgY29uc3QgdWludDY0X3QgKiBibG9ja3MgPSAoY29uc3QgdWludDY0X3Qg
KikoZGF0YSk7DQotDQotICBmb3IoaW50IGkgPSAwOyBpIDwgbmJsb2NrczsgaSsrKQ0KLSAgew0K
LSAgICB1aW50NjRfdCBrMSA9IGdldGJsb2NrKGJsb2NrcyxpKjIrMCk7DQotICAgIHVpbnQ2NF90
IGsyID0gZ2V0YmxvY2soYmxvY2tzLGkqMisxKTsNCi0NCi0gICAgazEgKj0gYzE7IGsxICA9IFJP
VEw2NChrMSwzMSk7IGsxICo9IGMyOyBoMSBePSBrMTsNCi0NCi0gICAgaDEgPSBST1RMNjQoaDEs
MjcpOyBoMSArPSBoMjsgaDEgPSBoMSo1KzB4NTJkY2U3Mjk7DQotDQotICAgIGsyICo9IGMyOyBr
MiAgPSBST1RMNjQoazIsMzMpOyBrMiAqPSBjMTsgaDIgXj0gazI7DQotDQotICAgIGgyID0gUk9U
TDY0KGgyLDMxKTsgaDIgKz0gaDE7IGgyID0gaDIqNSsweDM4NDk1YWI1Ow0KLSAgfQ0KLQ0KLSAg
Ly8tLS0tLS0tLS0tDQotICAvLyB0YWlsDQotDQotICBjb25zdCB1aW50OF90ICogdGFpbCA9IChj
b25zdCB1aW50OF90KikoZGF0YSArIG5ibG9ja3MqMTYpOw0KLQ0KLSAgdWludDY0X3QgazEgPSAw
Ow0KLSAgdWludDY0X3QgazIgPSAwOw0KLQ0KLSAgc3dpdGNoKGxlbiAmIDE1KQ0KLSAgew0KLSAg
Y2FzZSAxNTogazIgXj0gdWludDY0X3QodGFpbFsxNF0pIDw8IDQ4Ow0KLSAgY2FzZSAxNDogazIg
Xj0gdWludDY0X3QodGFpbFsxM10pIDw8IDQwOw0KLSAgY2FzZSAxMzogazIgXj0gdWludDY0X3Qo
dGFpbFsxMl0pIDw8IDMyOw0KLSAgY2FzZSAxMjogazIgXj0gdWludDY0X3QodGFpbFsxMV0pIDw8
IDI0Ow0KLSAgY2FzZSAxMTogazIgXj0gdWludDY0X3QodGFpbFsxMF0pIDw8IDE2Ow0KLSAgY2Fz
ZSAxMDogazIgXj0gdWludDY0X3QodGFpbFsgOV0pIDw8IDg7DQotICBjYXNlICA5OiBrMiBePSB1
aW50NjRfdCh0YWlsWyA4XSkgPDwgMDsNCi0gICAgICAgICAgIGsyICo9IGMyOyBrMiAgPSBST1RM
NjQoazIsMzMpOyBrMiAqPSBjMTsgaDIgXj0gazI7DQotDQotICBjYXNlICA4OiBrMSBePSB1aW50
NjRfdCh0YWlsWyA3XSkgPDwgNTY7DQotICBjYXNlICA3OiBrMSBePSB1aW50NjRfdCh0YWlsWyA2
XSkgPDwgNDg7DQotICBjYXNlICA2OiBrMSBePSB1aW50NjRfdCh0YWlsWyA1XSkgPDwgNDA7DQot
ICBjYXNlICA1OiBrMSBePSB1aW50NjRfdCh0YWlsWyA0XSkgPDwgMzI7DQotICBjYXNlICA0OiBr
MSBePSB1aW50NjRfdCh0YWlsWyAzXSkgPDwgMjQ7DQotICBjYXNlICAzOiBrMSBePSB1aW50NjRf
dCh0YWlsWyAyXSkgPDwgMTY7DQotICBjYXNlICAyOiBrMSBePSB1aW50NjRfdCh0YWlsWyAxXSkg
PDwgODsNCi0gIGNhc2UgIDE6IGsxIF49IHVpbnQ2NF90KHRhaWxbIDBdKSA8PCAwOw0KLSAgICAg
ICAgICAgazEgKj0gYzE7IGsxICA9IFJPVEw2NChrMSwzMSk7IGsxICo9IGMyOyBoMSBePSBrMTsN
Ci0gIH07DQotDQotICAvLy0tLS0tLS0tLS0NCi0gIC8vIGZpbmFsaXphdGlvbg0KLQ0KLSAgaDEg
Xj0gbGVuOyBoMiBePSBsZW47DQotDQotICBoMSArPSBoMjsNCi0gIGgyICs9IGgxOw0KLQ0KLSAg
aDEgPSBmbWl4KGgxKTsNCi0gIGgyID0gZm1peChoMik7DQotDQotICBoMSArPSBoMjsNCi0gIGgy
ICs9IGgxOw0KLQ0KLSAgKCh1aW50NjRfdCopb3V0KVswXSA9IGgxOw0KLSAgKCh1aW50NjRfdCop
b3V0KVsxXSA9IGgyOw0KLX0NCi0NCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorLy8gTXVybXVySGFzaDMgd2FzIHdyaXR0ZW4gYnkgQXVzdGluIEFwcGxl
YnksIGFuZCBpcyBwbGFjZWQgaW4gdGhlIHB1YmxpYworLy8gZG9tYWluLiBUaGUgYXV0aG9yIGhl
cmVieSBkaXNjbGFpbXMgY29weXJpZ2h0IHRvIHRoaXMgc291cmNlIGNvZGUuCisKKy8vIE5vdGUg
LSBUaGUgeDg2IGFuZCB4NjQgdmVyc2lvbnMgZG8gX25vdF8gcHJvZHVjZSB0aGUgc2FtZSByZXN1
bHRzLCBhcyB0aGUKKy8vIGFsZ29yaXRobXMgYXJlIG9wdGltaXplZCBmb3IgdGhlaXIgcmVzcGVj
dGl2ZSBwbGF0Zm9ybXMuIFlvdSBjYW4gc3RpbGwKKy8vIGNvbXBpbGUgYW5kIHJ1biBhbnkgb2Yg
dGhlbSBvbiBhbnkgcGxhdGZvcm0sIGJ1dCB5b3VyIHBlcmZvcm1hbmNlIHdpdGggdGhlCisvLyBu
b24tbmF0aXZlIHZlcnNpb24gd2lsbCBiZSBsZXNzIHRoYW4gb3B0aW1hbC4KKworI2luY2x1ZGUg
Ik11cm11ckhhc2gzLmgiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFBsYXRmb3JtLXNw
ZWNpZmljIGZ1bmN0aW9ucyBhbmQgbWFjcm9zCisKKy8vIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
CisKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorCisjZGVmaW5lIEZPUkNFX0lOTElORQlfX2ZvcmNl
aW5saW5lCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2RlZmluZSBST1RMMzIoeCx5KQlfcm90
bCh4LHkpCisjZGVmaW5lIFJPVEw2NCh4LHkpCV9yb3RsNjQoeCx5KQorCisjZGVmaW5lIEJJR19D
T05TVEFOVCh4KSAoeCkKKworLy8gT3RoZXIgY29tcGlsZXJzCisKKyNlbHNlCS8vIGRlZmluZWQo
X01TQ19WRVIpCisKKyNkZWZpbmUJRk9SQ0VfSU5MSU5FIF9fYXR0cmlidXRlX18oKGFsd2F5c19p
bmxpbmUpKQorCitpbmxpbmUgdWludDMyX3Qgcm90bDMyICggdWludDMyX3QgeCwgaW50OF90IHIg
KQoreworICByZXR1cm4gKHggPDwgcikgfCAoeCA+PiAoMzIgLSByKSk7Cit9CisKK2lubGluZSB1
aW50NjRfdCByb3RsNjQgKCB1aW50NjRfdCB4LCBpbnQ4X3QgciApCit7CisgIHJldHVybiAoeCA8
PCByKSB8ICh4ID4+ICg2NCAtIHIpKTsKK30KKworI2RlZmluZQlST1RMMzIoeCx5KQlyb3RsMzIo
eCx5KQorI2RlZmluZSBST1RMNjQoeCx5KQlyb3RsNjQoeCx5KQorCisjZGVmaW5lIEJJR19DT05T
VEFOVCh4KSAoeCMjTExVKQorCisjZW5kaWYgLy8gIWRlZmluZWQoX01TQ19WRVIpCisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKy8vIEJsb2NrIHJlYWQgLSBpZiB5b3VyIHBsYXRmb3JtIG5lZWRz
IHRvIGRvIGVuZGlhbi1zd2FwcGluZyBvciBjYW4gb25seQorLy8gaGFuZGxlIGFsaWduZWQgcmVh
ZHMsIGRvIHRoZSBjb252ZXJzaW9uIGhlcmUKKworRk9SQ0VfSU5MSU5FIHVpbnQzMl90IGdldGJs
b2NrICggY29uc3QgdWludDMyX3QgKiBwLCBpbnQgaSApCit7CisgIHJldHVybiBwW2ldOworfQor
CitGT1JDRV9JTkxJTkUgdWludDY0X3QgZ2V0YmxvY2sgKCBjb25zdCB1aW50NjRfdCAqIHAsIGlu
dCBpICkKK3sKKyAgcmV0dXJuIHBbaV07Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8v
IEZpbmFsaXphdGlvbiBtaXggLSBmb3JjZSBhbGwgYml0cyBvZiBhIGhhc2ggYmxvY2sgdG8gYXZh
bGFuY2hlCisKK0ZPUkNFX0lOTElORSB1aW50MzJfdCBmbWl4ICggdWludDMyX3QgaCApCit7Cisg
IGggXj0gaCA+PiAxNjsKKyAgaCAqPSAweDg1ZWJjYTZiOworICBoIF49IGggPj4gMTM7CisgIGgg
Kj0gMHhjMmIyYWUzNTsKKyAgaCBePSBoID4+IDE2OworCisgIHJldHVybiBoOworfQorCisvLy0t
LS0tLS0tLS0KKworRk9SQ0VfSU5MSU5FIHVpbnQ2NF90IGZtaXggKCB1aW50NjRfdCBrICkKK3sK
KyAgayBePSBrID4+IDMzOworICBrICo9IEJJR19DT05TVEFOVCgweGZmNTFhZmQ3ZWQ1NThjY2Qp
OworICBrIF49IGsgPj4gMzM7CisgIGsgKj0gQklHX0NPTlNUQU5UKDB4YzRjZWI5ZmUxYTg1ZWM1
Myk7CisgIGsgXj0gayA+PiAzMzsKKworICByZXR1cm4gazsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCit2b2lkIE11cm11ckhhc2gzX3g4Nl8zMiAoIGNvbnN0IHZvaWQgKiBrZXksIGlu
dCBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNlZWQsIHZvaWQgKiBv
dXQgKQoreworICBjb25zdCB1aW50OF90ICogZGF0YSA9IChjb25zdCB1aW50OF90KilrZXk7Cisg
IGNvbnN0IGludCBuYmxvY2tzID0gbGVuIC8gNDsKKworICB1aW50MzJfdCBoMSA9IHNlZWQ7CisK
KyAgY29uc3QgdWludDMyX3QgYzEgPSAweGNjOWUyZDUxOworICBjb25zdCB1aW50MzJfdCBjMiA9
IDB4MWI4NzM1OTM7CisKKyAgLy8tLS0tLS0tLS0tCisgIC8vIGJvZHkKKworICBjb25zdCB1aW50
MzJfdCAqIGJsb2NrcyA9IChjb25zdCB1aW50MzJfdCAqKShkYXRhICsgbmJsb2Nrcyo0KTsKKwor
ICBmb3IoaW50IGkgPSAtbmJsb2NrczsgaTsgaSsrKQorICB7CisgICAgdWludDMyX3QgazEgPSBn
ZXRibG9jayhibG9ja3MsaSk7CisKKyAgICBrMSAqPSBjMTsKKyAgICBrMSA9IFJPVEwzMihrMSwx
NSk7CisgICAgazEgKj0gYzI7CisgICAgCisgICAgaDEgXj0gazE7CisgICAgaDEgPSBST1RMMzIo
aDEsMTMpOyAKKyAgICBoMSA9IGgxKjUrMHhlNjU0NmI2NDsKKyAgfQorCisgIC8vLS0tLS0tLS0t
LQorICAvLyB0YWlsCisKKyAgY29uc3QgdWludDhfdCAqIHRhaWwgPSAoY29uc3QgdWludDhfdCop
KGRhdGEgKyBuYmxvY2tzKjQpOworCisgIHVpbnQzMl90IGsxID0gMDsKKworICBzd2l0Y2gobGVu
ICYgMykKKyAgeworICBjYXNlIDM6IGsxIF49IHRhaWxbMl0gPDwgMTY7CisgIGNhc2UgMjogazEg
Xj0gdGFpbFsxXSA8PCA4OworICBjYXNlIDE6IGsxIF49IHRhaWxbMF07CisgICAgICAgICAgazEg
Kj0gYzE7IGsxID0gUk9UTDMyKGsxLDE1KTsgazEgKj0gYzI7IGgxIF49IGsxOworICB9OworCisg
IC8vLS0tLS0tLS0tLQorICAvLyBmaW5hbGl6YXRpb24KKworICBoMSBePSBsZW47CisKKyAgaDEg
PSBmbWl4KGgxKTsKKworICAqKHVpbnQzMl90KilvdXQgPSBoMTsKK30gCisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKwordm9pZCBNdXJtdXJIYXNoM194ODZfMTI4ICggY29uc3Qgdm9pZCAqIGtl
eSwgY29uc3QgaW50IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNl
ZWQsIHZvaWQgKiBvdXQgKQoreworICBjb25zdCB1aW50OF90ICogZGF0YSA9IChjb25zdCB1aW50
OF90KilrZXk7CisgIGNvbnN0IGludCBuYmxvY2tzID0gbGVuIC8gMTY7CisKKyAgdWludDMyX3Qg
aDEgPSBzZWVkOworICB1aW50MzJfdCBoMiA9IHNlZWQ7CisgIHVpbnQzMl90IGgzID0gc2VlZDsK
KyAgdWludDMyX3QgaDQgPSBzZWVkOworCisgIGNvbnN0IHVpbnQzMl90IGMxID0gMHgyMzliOTYx
YjsgCisgIGNvbnN0IHVpbnQzMl90IGMyID0gMHhhYjBlOTc4OTsKKyAgY29uc3QgdWludDMyX3Qg
YzMgPSAweDM4YjM0YWU1OyAKKyAgY29uc3QgdWludDMyX3QgYzQgPSAweGExZTM4YjkzOworCisg
IC8vLS0tLS0tLS0tLQorICAvLyBib2R5CisKKyAgY29uc3QgdWludDMyX3QgKiBibG9ja3MgPSAo
Y29uc3QgdWludDMyX3QgKikoZGF0YSArIG5ibG9ja3MqMTYpOworCisgIGZvcihpbnQgaSA9IC1u
YmxvY2tzOyBpOyBpKyspCisgIHsKKyAgICB1aW50MzJfdCBrMSA9IGdldGJsb2NrKGJsb2Nrcyxp
KjQrMCk7CisgICAgdWludDMyX3QgazIgPSBnZXRibG9jayhibG9ja3MsaSo0KzEpOworICAgIHVp
bnQzMl90IGszID0gZ2V0YmxvY2soYmxvY2tzLGkqNCsyKTsKKyAgICB1aW50MzJfdCBrNCA9IGdl
dGJsb2NrKGJsb2NrcyxpKjQrMyk7CisKKyAgICBrMSAqPSBjMTsgazEgID0gUk9UTDMyKGsxLDE1
KTsgazEgKj0gYzI7IGgxIF49IGsxOworCisgICAgaDEgPSBST1RMMzIoaDEsMTkpOyBoMSArPSBo
MjsgaDEgPSBoMSo1KzB4NTYxY2NkMWI7CisKKyAgICBrMiAqPSBjMjsgazIgID0gUk9UTDMyKGsy
LDE2KTsgazIgKj0gYzM7IGgyIF49IGsyOworCisgICAgaDIgPSBST1RMMzIoaDIsMTcpOyBoMiAr
PSBoMzsgaDIgPSBoMio1KzB4MGJjYWE3NDc7CisKKyAgICBrMyAqPSBjMzsgazMgID0gUk9UTDMy
KGszLDE3KTsgazMgKj0gYzQ7IGgzIF49IGszOworCisgICAgaDMgPSBST1RMMzIoaDMsMTUpOyBo
MyArPSBoNDsgaDMgPSBoMyo1KzB4OTZjZDFjMzU7CisKKyAgICBrNCAqPSBjNDsgazQgID0gUk9U
TDMyKGs0LDE4KTsgazQgKj0gYzE7IGg0IF49IGs0OworCisgICAgaDQgPSBST1RMMzIoaDQsMTMp
OyBoNCArPSBoMTsgaDQgPSBoNCo1KzB4MzJhYzNiMTc7CisgIH0KKworICAvLy0tLS0tLS0tLS0K
KyAgLy8gdGFpbAorCisgIGNvbnN0IHVpbnQ4X3QgKiB0YWlsID0gKGNvbnN0IHVpbnQ4X3QqKShk
YXRhICsgbmJsb2NrcyoxNik7CisKKyAgdWludDMyX3QgazEgPSAwOworICB1aW50MzJfdCBrMiA9
IDA7CisgIHVpbnQzMl90IGszID0gMDsKKyAgdWludDMyX3QgazQgPSAwOworCisgIHN3aXRjaChs
ZW4gJiAxNSkKKyAgeworICBjYXNlIDE1OiBrNCBePSB0YWlsWzE0XSA8PCAxNjsKKyAgY2FzZSAx
NDogazQgXj0gdGFpbFsxM10gPDwgODsKKyAgY2FzZSAxMzogazQgXj0gdGFpbFsxMl0gPDwgMDsK
KyAgICAgICAgICAgazQgKj0gYzQ7IGs0ICA9IFJPVEwzMihrNCwxOCk7IGs0ICo9IGMxOyBoNCBe
PSBrNDsKKworICBjYXNlIDEyOiBrMyBePSB0YWlsWzExXSA8PCAyNDsKKyAgY2FzZSAxMTogazMg
Xj0gdGFpbFsxMF0gPDwgMTY7CisgIGNhc2UgMTA6IGszIF49IHRhaWxbIDldIDw8IDg7CisgIGNh
c2UgIDk6IGszIF49IHRhaWxbIDhdIDw8IDA7CisgICAgICAgICAgIGszICo9IGMzOyBrMyAgPSBS
T1RMMzIoazMsMTcpOyBrMyAqPSBjNDsgaDMgXj0gazM7CisKKyAgY2FzZSAgODogazIgXj0gdGFp
bFsgN10gPDwgMjQ7CisgIGNhc2UgIDc6IGsyIF49IHRhaWxbIDZdIDw8IDE2OworICBjYXNlICA2
OiBrMiBePSB0YWlsWyA1XSA8PCA4OworICBjYXNlICA1OiBrMiBePSB0YWlsWyA0XSA8PCAwOwor
ICAgICAgICAgICBrMiAqPSBjMjsgazIgID0gUk9UTDMyKGsyLDE2KTsgazIgKj0gYzM7IGgyIF49
IGsyOworCisgIGNhc2UgIDQ6IGsxIF49IHRhaWxbIDNdIDw8IDI0OworICBjYXNlICAzOiBrMSBe
PSB0YWlsWyAyXSA8PCAxNjsKKyAgY2FzZSAgMjogazEgXj0gdGFpbFsgMV0gPDwgODsKKyAgY2Fz
ZSAgMTogazEgXj0gdGFpbFsgMF0gPDwgMDsKKyAgICAgICAgICAgazEgKj0gYzE7IGsxICA9IFJP
VEwzMihrMSwxNSk7IGsxICo9IGMyOyBoMSBePSBrMTsKKyAgfTsKKworICAvLy0tLS0tLS0tLS0K
KyAgLy8gZmluYWxpemF0aW9uCisKKyAgaDEgXj0gbGVuOyBoMiBePSBsZW47IGgzIF49IGxlbjsg
aDQgXj0gbGVuOworCisgIGgxICs9IGgyOyBoMSArPSBoMzsgaDEgKz0gaDQ7CisgIGgyICs9IGgx
OyBoMyArPSBoMTsgaDQgKz0gaDE7CisKKyAgaDEgPSBmbWl4KGgxKTsKKyAgaDIgPSBmbWl4KGgy
KTsKKyAgaDMgPSBmbWl4KGgzKTsKKyAgaDQgPSBmbWl4KGg0KTsKKworICBoMSArPSBoMjsgaDEg
Kz0gaDM7IGgxICs9IGg0OworICBoMiArPSBoMTsgaDMgKz0gaDE7IGg0ICs9IGgxOworCisgICgo
dWludDMyX3QqKW91dClbMF0gPSBoMTsKKyAgKCh1aW50MzJfdCopb3V0KVsxXSA9IGgyOworICAo
KHVpbnQzMl90KilvdXQpWzJdID0gaDM7CisgICgodWludDMyX3QqKW91dClbM10gPSBoNDsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIE11cm11ckhhc2gzX3g2NF8xMjggKCBj
b25zdCB2b2lkICoga2V5LCBjb25zdCBpbnQgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgdWludDMyX3Qgc2VlZCwgdm9pZCAqIG91dCApCit7CisgIGNvbnN0IHVpbnQ4X3Qg
KiBkYXRhID0gKGNvbnN0IHVpbnQ4X3QqKWtleTsKKyAgY29uc3QgaW50IG5ibG9ja3MgPSBsZW4g
LyAxNjsKKworICB1aW50NjRfdCBoMSA9IHNlZWQ7CisgIHVpbnQ2NF90IGgyID0gc2VlZDsKKwor
ICBjb25zdCB1aW50NjRfdCBjMSA9IEJJR19DT05TVEFOVCgweDg3YzM3YjkxMTE0MjUzZDUpOwor
ICBjb25zdCB1aW50NjRfdCBjMiA9IEJJR19DT05TVEFOVCgweDRjZjVhZDQzMjc0NTkzN2YpOwor
CisgIC8vLS0tLS0tLS0tLQorICAvLyBib2R5CisKKyAgY29uc3QgdWludDY0X3QgKiBibG9ja3Mg
PSAoY29uc3QgdWludDY0X3QgKikoZGF0YSk7CisKKyAgZm9yKGludCBpID0gMDsgaSA8IG5ibG9j
a3M7IGkrKykKKyAgeworICAgIHVpbnQ2NF90IGsxID0gZ2V0YmxvY2soYmxvY2tzLGkqMiswKTsK
KyAgICB1aW50NjRfdCBrMiA9IGdldGJsb2NrKGJsb2NrcyxpKjIrMSk7CisKKyAgICBrMSAqPSBj
MTsgazEgID0gUk9UTDY0KGsxLDMxKTsgazEgKj0gYzI7IGgxIF49IGsxOworCisgICAgaDEgPSBS
T1RMNjQoaDEsMjcpOyBoMSArPSBoMjsgaDEgPSBoMSo1KzB4NTJkY2U3Mjk7CisKKyAgICBrMiAq
PSBjMjsgazIgID0gUk9UTDY0KGsyLDMzKTsgazIgKj0gYzE7IGgyIF49IGsyOworCisgICAgaDIg
PSBST1RMNjQoaDIsMzEpOyBoMiArPSBoMTsgaDIgPSBoMio1KzB4Mzg0OTVhYjU7CisgIH0KKwor
ICAvLy0tLS0tLS0tLS0KKyAgLy8gdGFpbAorCisgIGNvbnN0IHVpbnQ4X3QgKiB0YWlsID0gKGNv
bnN0IHVpbnQ4X3QqKShkYXRhICsgbmJsb2NrcyoxNik7CisKKyAgdWludDY0X3QgazEgPSAwOwor
ICB1aW50NjRfdCBrMiA9IDA7CisKKyAgc3dpdGNoKGxlbiAmIDE1KQorICB7CisgIGNhc2UgMTU6
IGsyIF49IHVpbnQ2NF90KHRhaWxbMTRdKSA8PCA0ODsKKyAgY2FzZSAxNDogazIgXj0gdWludDY0
X3QodGFpbFsxM10pIDw8IDQwOworICBjYXNlIDEzOiBrMiBePSB1aW50NjRfdCh0YWlsWzEyXSkg
PDwgMzI7CisgIGNhc2UgMTI6IGsyIF49IHVpbnQ2NF90KHRhaWxbMTFdKSA8PCAyNDsKKyAgY2Fz
ZSAxMTogazIgXj0gdWludDY0X3QodGFpbFsxMF0pIDw8IDE2OworICBjYXNlIDEwOiBrMiBePSB1
aW50NjRfdCh0YWlsWyA5XSkgPDwgODsKKyAgY2FzZSAgOTogazIgXj0gdWludDY0X3QodGFpbFsg
OF0pIDw8IDA7CisgICAgICAgICAgIGsyICo9IGMyOyBrMiAgPSBST1RMNjQoazIsMzMpOyBrMiAq
PSBjMTsgaDIgXj0gazI7CisKKyAgY2FzZSAgODogazEgXj0gdWludDY0X3QodGFpbFsgN10pIDw8
IDU2OworICBjYXNlICA3OiBrMSBePSB1aW50NjRfdCh0YWlsWyA2XSkgPDwgNDg7CisgIGNhc2Ug
IDY6IGsxIF49IHVpbnQ2NF90KHRhaWxbIDVdKSA8PCA0MDsKKyAgY2FzZSAgNTogazEgXj0gdWlu
dDY0X3QodGFpbFsgNF0pIDw8IDMyOworICBjYXNlICA0OiBrMSBePSB1aW50NjRfdCh0YWlsWyAz
XSkgPDwgMjQ7CisgIGNhc2UgIDM6IGsxIF49IHVpbnQ2NF90KHRhaWxbIDJdKSA8PCAxNjsKKyAg
Y2FzZSAgMjogazEgXj0gdWludDY0X3QodGFpbFsgMV0pIDw8IDg7CisgIGNhc2UgIDE6IGsxIF49
IHVpbnQ2NF90KHRhaWxbIDBdKSA8PCAwOworICAgICAgICAgICBrMSAqPSBjMTsgazEgID0gUk9U
TDY0KGsxLDMxKTsgazEgKj0gYzI7IGgxIF49IGsxOworICB9OworCisgIC8vLS0tLS0tLS0tLQor
ICAvLyBmaW5hbGl6YXRpb24KKworICBoMSBePSBsZW47IGgyIF49IGxlbjsKKworICBoMSArPSBo
MjsKKyAgaDIgKz0gaDE7CisKKyAgaDEgPSBmbWl4KGgxKTsKKyAgaDIgPSBmbWl4KGgyKTsKKwor
ICBoMSArPSBoMjsKKyAgaDIgKz0gaDE7CisKKyAgKCh1aW50NjRfdCopb3V0KVswXSA9IGgxOwor
ICAoKHVpbnQ2NF90KilvdXQpWzFdID0gaDI7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9tdXJtdXJoYXNo
L011cm11ckhhc2gzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3RoaXJkX3BhcnR5L211cm11cmhhc2gvTXVybXVySGFzaDMuaAkocmV2aXNpb24gMTU5NTMyKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L211cm11cmhhc2gvTXVy
bXVySGFzaDMuaAkod29ya2luZyBjb3B5KQpAQCAtMSwzNyArMSwzNyBAQAotLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KLS8vIE11cm11ckhhc2gzIHdhcyB3cml0dGVuIGJ5IEF1c3RpbiBBcHBsZWJ5
LCBhbmQgaXMgcGxhY2VkIGluIHRoZSBwdWJsaWMNCi0vLyBkb21haW4uIFRoZSBhdXRob3IgaGVy
ZWJ5IGRpc2NsYWltcyBjb3B5cmlnaHQgdG8gdGhpcyBzb3VyY2UgY29kZS4NCi0NCi0jaWZuZGVm
IF9NVVJNVVJIQVNIM19IXw0KLSNkZWZpbmUgX01VUk1VUkhBU0gzX0hfDQotDQotLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQ0KLS8vIFBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9ucyBhbmQgbWFjcm9z
DQotDQotLy8gTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8NCi0NCi0jaWYgZGVmaW5lZChfTVNDX1ZF
UikNCi0NCi10eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludDhfdDsNCi10eXBlZGVmIHVuc2lnbmVk
IGxvbmcgdWludDMyX3Q7DQotdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IHVpbnQ2NF90Ow0KLQ0K
LS8vIE90aGVyIGNvbXBpbGVycw0KLQ0KLSNlbHNlICAgLy8gZGVmaW5lZChfTVNDX1ZFUikNCi0N
Ci0jaW5jbHVkZSA8c3RkaW50Lmg+DQotDQotI2VuZGlmIC8vICFkZWZpbmVkKF9NU0NfVkVSKQ0K
LQ0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0NCi12b2lkIE11cm11ckhhc2gzX3g4Nl8zMiAg
KCBjb25zdCB2b2lkICoga2V5LCBpbnQgbGVuLCB1aW50MzJfdCBzZWVkLCB2b2lkICogb3V0ICk7
DQotDQotdm9pZCBNdXJtdXJIYXNoM194ODZfMTI4ICggY29uc3Qgdm9pZCAqIGtleSwgaW50IGxl
biwgdWludDMyX3Qgc2VlZCwgdm9pZCAqIG91dCApOw0KLQ0KLXZvaWQgTXVybXVySGFzaDNfeDY0
XzEyOCAoIGNvbnN0IHZvaWQgKiBrZXksIGludCBsZW4sIHVpbnQzMl90IHNlZWQsIHZvaWQgKiBv
dXQgKTsNCi0NCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotDQorLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorLy8gTXVybXVySGFzaDMgd2FzIHdyaXR0ZW4gYnkgQXVzdGluIEFwcGxlYnksIGFuZCBp
cyBwbGFjZWQgaW4gdGhlIHB1YmxpYworLy8gZG9tYWluLiBUaGUgYXV0aG9yIGhlcmVieSBkaXNj
bGFpbXMgY29weXJpZ2h0IHRvIHRoaXMgc291cmNlIGNvZGUuCisKKyNpZm5kZWYgX01VUk1VUkhB
U0gzX0hfCisjZGVmaW5lIF9NVVJNVVJIQVNIM19IXworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisvLyBQbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbnMgYW5kIG1hY3JvcworCisvLyBNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpbworCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKwordHlwZWRlZiB1bnNp
Z25lZCBjaGFyIHVpbnQ4X3Q7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdWludDMyX3Q7Cit0eXBl
ZGVmIHVuc2lnbmVkIF9faW50NjQgdWludDY0X3Q7CisKKy8vIE90aGVyIGNvbXBpbGVycworCisj
ZWxzZQkvLyBkZWZpbmVkKF9NU0NfVkVSKQorCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNlbmRp
ZiAvLyAhZGVmaW5lZChfTVNDX1ZFUikKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lk
IE11cm11ckhhc2gzX3g4Nl8zMiAgKCBjb25zdCB2b2lkICoga2V5LCBpbnQgbGVuLCB1aW50MzJf
dCBzZWVkLCB2b2lkICogb3V0ICk7CisKK3ZvaWQgTXVybXVySGFzaDNfeDg2XzEyOCAoIGNvbnN0
IHZvaWQgKiBrZXksIGludCBsZW4sIHVpbnQzMl90IHNlZWQsIHZvaWQgKiBvdXQgKTsKKwordm9p
ZCBNdXJtdXJIYXNoM194NjRfMTI4ICggY29uc3Qgdm9pZCAqIGtleSwgaW50IGxlbiwgdWludDMy
X3Qgc2VlZCwgdm9pZCAqIG91dCApOworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKICNlbmRp
ZiAvLyBfTVVSTVVSSEFTSDNfSF8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvdHJhY2VfZXZlbnQvdHJhY2Vf
ZXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRf
cGFydHkvdHJhY2VfZXZlbnQvdHJhY2VfZXZlbnQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS90cmFjZV9ldmVudC90cmFjZV9ldmVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODI2IEBACisvLyBDb3B5cmlnaHQgKGMpIDIwMTMg
VGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBUcmFjZSBldmVudHMgYXJl
IGZvciB0cmFja2luZyBhcHBsaWNhdGlvbiBwZXJmb3JtYW5jZSBhbmQgcmVzb3VyY2UgdXNhZ2Uu
CisvLyBNYWNyb3MgYXJlIHByb3ZpZGVkIHRvIHRyYWNrOgorLy8gICAgQmVnaW4gYW5kIGVuZCBv
ZiBmdW5jdGlvbiBjYWxscworLy8gICAgQ291bnRlcnMKKy8vCisvLyBFdmVudHMgYXJlIGlzc3Vl
ZCBhZ2FpbnN0IGNhdGVnb3JpZXMuIFdoZXJlYXMgTE9HJ3MKKy8vIGNhdGVnb3JpZXMgYXJlIHN0
YXRpY2FsbHkgZGVmaW5lZCwgVFJBQ0UgY2F0ZWdvcmllcyBhcmUgY3JlYXRlZAorLy8gaW1wbGlj
aXRseSB3aXRoIGEgc3RyaW5nLiBGb3IgZXhhbXBsZToKKy8vICAgVFJBQ0VfRVZFTlRfSU5TVEFO
VDAoIk1ZX1NVQlNZU1RFTSIsICJTb21lSW1wb3J0YW50RXZlbnQiKQorLy8KKy8vIEV2ZW50cyBj
YW4gYmUgSU5TVEFOVCwgb3IgY2FuIGJlIHBhaXJzIG9mIEJFR0lOIGFuZCBFTkQgaW4gdGhlIHNh
bWUgc2NvcGU6CisvLyAgIFRSQUNFX0VWRU5UX0JFR0lOMCgiTVlfU1VCU1lTVEVNIiwgIlNvbWV0
aGluZ0Nvc3RseSIpCisvLyAgIGRvU29tZXRoaW5nQ29zdGx5KCkKKy8vICAgVFJBQ0VfRVZFTlRf
RU5EMCgiTVlfU1VCU1lTVEVNIiwgIlNvbWV0aGluZ0Nvc3RseSIpCisvLyBOb3RlOiBvdXIgdG9v
bHMgY2FuJ3QgYWx3YXlzIGRldGVybWluZSB0aGUgY29ycmVjdCBCRUdJTi9FTkQgcGFpcnMgdW5s
ZXNzCisvLyB0aGVzZSBhcmUgdXNlZCBpbiB0aGUgc2FtZSBzY29wZS4gVXNlIEFTWU5DX0JFR0lO
L0FTWU5DX0VORCBtYWNyb3MgaWYgeW91IG5lZWQgdGhlbQorLy8gdG8gYmUgaW4gc2VwYXJhdGUg
c2NvcGVzLgorLy8KKy8vIEEgY29tbW9uIHVzZSBjYXNlIGlzIHRvIHRyYWNlIGVudGlyZSBmdW5j
dGlvbiBzY29wZXMuIFRoaXMKKy8vIGlzc3VlcyBhIHRyYWNlIEJFR0lOIGFuZCBFTkQgYXV0b21h
dGljYWxseToKKy8vICAgdm9pZCBkb1NvbWV0aGluZ0Nvc3RseSgpIHsKKy8vICAgICBUUkFDRV9F
VkVOVDAoIk1ZX1NVQlNZU1RFTSIsICJkb1NvbWV0aGluZ0Nvc3RseSIpOworLy8gICAgIC4uLgor
Ly8gICB9CisvLworLy8gQWRkaXRpb25hbCBwYXJhbWV0ZXJzIGNhbiBiZSBhc3NvY2lhdGVkIHdp
dGggYW4gZXZlbnQ6CisvLyAgIHZvaWQgZG9Tb21ldGhpbmdDb3N0bHkyKGludCBob3dNdWNoKSB7
CisvLyAgICAgVFJBQ0VfRVZFTlQxKCJNWV9TVUJTWVNURU0iLCAiZG9Tb21ldGhpbmdDb3N0bHki
LAorLy8gICAgICAgICAiaG93TXVjaCIsIGhvd011Y2gpOworLy8gICAgIC4uLgorLy8gICB9Cisv
LworLy8gVGhlIHRyYWNlIHN5c3RlbSB3aWxsIGF1dG9tYXRpY2FsbHkgYWRkIHRvIHRoaXMgaW5m
b3JtYXRpb24gdGhlCisvLyBjdXJyZW50IHByb2Nlc3MgaWQsIHRocmVhZCBpZCwgYW5kIGEgdGlt
ZXN0YW1wIGluIG1pY3Jvc2Vjb25kcy4KKy8vCisvLyBUbyB0cmFjZSBhbiBhc3luY2hyb25vdXMg
cHJvY2VkdXJlIHN1Y2ggYXMgYW4gSVBDIHNlbmQvcmVjZWl2ZSwgdXNlIEFTWU5DX0JFR0lOIGFu
ZAorLy8gQVNZTkNfRU5EOgorLy8gICBbc2luZ2xlIHRocmVhZGVkIHNlbmRlciBjb2RlXQorLy8g
ICAgIHN0YXRpYyBpbnQgc2VuZF9jb3VudCA9IDA7CisvLyAgICAgKytzZW5kX2NvdW50OworLy8g
ICAgIFRSQUNFX0VWRU5UX0FTWU5DX0JFR0lOMCgiaXBjIiwgIm1lc3NhZ2UiLCBzZW5kX2NvdW50
KTsKKy8vICAgICBTZW5kKG5ldyBNeU1lc3NhZ2Uoc2VuZF9jb3VudCkpOworLy8gICBbcmVjZWl2
ZSBjb2RlXQorLy8gICAgIHZvaWQgT25NeU1lc3NhZ2Uoc2VuZF9jb3VudCkgeworLy8gICAgICAg
VFJBQ0VfRVZFTlRfQVNZTkNfRU5EMCgiaXBjIiwgIm1lc3NhZ2UiLCBzZW5kX2NvdW50KTsKKy8v
ICAgICB9CisvLyBUaGUgdGhpcmQgcGFyYW1ldGVyIGlzIGEgdW5pcXVlIElEIHRvIG1hdGNoIEFT
WU5DX0JFR0lOL0FTWU5DX0VORCBwYWlycy4KKy8vIEFTWU5DX0JFR0lOIGFuZCBBU1lOQ19FTkQg
Y2FuIG9jY3VyIG9uIGFueSB0aHJlYWQgb2YgYW55IHRyYWNlZCBwcm9jZXNzLiBQb2ludGVycyBj
YW4KKy8vIGJlIHVzZWQgZm9yIHRoZSBJRCBwYXJhbWV0ZXIsIGFuZCB0aGV5IHdpbGwgYmUgbWFu
Z2xlZCBpbnRlcm5hbGx5IHNvIHRoYXQKKy8vIHRoZSBzYW1lIHBvaW50ZXIgb24gdHdvIGRpZmZl
cmVudCBwcm9jZXNzZXMgd2lsbCBub3QgbWF0Y2guIEZvciBleGFtcGxlOgorLy8gICBjbGFzcyBN
eVRyYWNlZENsYXNzIHsKKy8vICAgIHB1YmxpYzoKKy8vICAgICBNeVRyYWNlZENsYXNzKCkgewor
Ly8gICAgICAgVFJBQ0VfRVZFTlRfQVNZTkNfQkVHSU4wKCJjYXRlZ29yeSIsICJNeVRyYWNlZENs
YXNzIiwgdGhpcyk7CisvLyAgICAgfQorLy8gICAgIH5NeVRyYWNlZENsYXNzKCkgeworLy8gICAg
ICAgVFJBQ0VfRVZFTlRfQVNZTkNfRU5EMCgiY2F0ZWdvcnkiLCAiTXlUcmFjZWRDbGFzcyIsIHRo
aXMpOworLy8gICAgIH0KKy8vICAgfQorLy8KKy8vIFRyYWNlIGV2ZW50IGFsc28gc3VwcG9ydHMg
Y291bnRlcnMsIHdoaWNoIGlzIGEgd2F5IHRvIHRyYWNrIGEgcXVhbnRpdHkKKy8vIGFzIGl0IHZh
cmllcyBvdmVyIHRpbWUuIENvdW50ZXJzIGFyZSBjcmVhdGVkIHdpdGggdGhlIGZvbGxvd2luZyBt
YWNybzoKKy8vICAgVFJBQ0VfQ09VTlRFUjEoIk1ZX1NVQlNZU1RFTSIsICJteUNvdW50ZXIiLCBn
X215Q291bnRlclZhbHVlKTsKKy8vCisvLyBDb3VudGVycyBhcmUgcHJvY2Vzcy1zcGVjaWZpYy4g
VGhlIG1hY3JvIGl0c2VsZiBjYW4gYmUgaXNzdWVkIGZyb20gYW55CisvLyB0aHJlYWQsIGhvd2V2
ZXIuCisvLworLy8gU29tZXRpbWVzLCB5b3Ugd2FudCB0byB0cmFjayB0d28gY291bnRlcnMgYXQg
b25jZS4gWW91IGNhbiBkbyB0aGlzIHdpdGggdHdvCisvLyBjb3VudGVyIG1hY3JvczoKKy8vICAg
VFJBQ0VfQ09VTlRFUjEoIk1ZX1NVQlNZU1RFTSIsICJteUNvdW50ZXIwIiwgZ19teUNvdW50ZXJW
YWx1ZVswXSk7CisvLyAgIFRSQUNFX0NPVU5URVIxKCJNWV9TVUJTWVNURU0iLCAibXlDb3VudGVy
MSIsIGdfbXlDb3VudGVyVmFsdWVbMV0pOworLy8gT3IgeW91IGNhbiBkbyBpdCB3aXRoIGEgY29t
YmluZWQgbWFjcm86CisvLyAgIFRSQUNFX0NPVU5URVIyKCJNWV9TVUJTWVNURU0iLCAibXlDb3Vu
dGVyIiwKKy8vICAgICAgICJieXRlc1Bpbm5lZCIsIGdfbXlDb3VudGVyVmFsdWVbMF0sCisvLyAg
ICAgICAiYnl0ZXNBbGxvY2F0ZWQiLCBnX215Q291bnRlclZhbHVlWzFdKTsKKy8vIFRoaXMgaW5k
aWNhdGVzIHRvIHRoZSB0cmFjaW5nIFVJIHRoYXQgdGhlc2UgY291bnRlcnMgc2hvdWxkIGJlIGRp
c3BsYXllZAorLy8gaW4gYSBzaW5nbGUgZ3JhcGgsIGFzIGEgc3VtbWVkIGFyZWEgY2hhcnQuCisv
LworLy8gU2luY2UgY291bnRlcnMgYXJlIGluIGEgZ2xvYmFsIG5hbWVzcGFjZSwgeW91IG1heSB3
YW50IHRvIGRpc2VtYmlndWF0ZSB3aXRoIGEKKy8vIHVuaXF1ZSBJRCwgYnkgdXNpbmcgdGhlIFRS
QUNFX0NPVU5URVJfSUQqIHZhcmlhdGlvbnMuCisvLworLy8gQnkgZGVmYXVsdCwgdHJhY2UgY29s
bGVjdGlvbiBpcyBjb21waWxlZCBpbiwgYnV0IHR1cm5lZCBvZmYgYXQgcnVudGltZS4KKy8vIENv
bGxlY3RpbmcgdHJhY2UgZGF0YSBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGVtYmVkZGlu
ZworLy8gYXBwbGljYXRpb24uIEluIENocm9tZSdzIGNhc2UsIG5hdmlnYXRpbmcgdG8gYWJvdXQ6
dHJhY2luZyB3aWxsIHR1cm4gb24KKy8vIHRyYWNpbmcgYW5kIGRpc3BsYXkgZGF0YSBjb2xsZWN0
ZWQgYWNyb3NzIGFsbCBhY3RpdmUgcHJvY2Vzc2VzLgorLy8KKy8vCisvLyBNZW1vcnkgc2NvcGlu
ZyBub3RlOgorLy8gVHJhY2luZyBjb3BpZXMgdGhlIHBvaW50ZXJzLCBub3QgdGhlIHN0cmluZyBj
b250ZW50LCBvZiB0aGUgc3RyaW5ncyBwYXNzZWQKKy8vIGluIGZvciBjYXRlZ29yeSwgbmFtZSwg
YW5kIGFyZ19uYW1lcy4gVGh1cywgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwKKy8vIGNhdXNlIHBy
b2JsZW1zOgorLy8gICAgIGNoYXIqIHN0ciA9IHN0cmR1cCgiaW1wcHJ0YW50TmFtZSIpOworLy8g
ICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQwKCJTVUJTWVNURU0iLCBzdHIpOyAgLy8gQkFEIQorLy8g
ICAgIGZyZWUoc3RyKTsgICAgICAgICAgICAgICAgICAgLy8gVHJhY2Ugc3lzdGVtIG5vdyBoYXMg
ZGFuZ2xpbmcgcG9pbnRlcgorLy8KKy8vIFRvIGF2b2lkIHRoaXMgaXNzdWUgd2l0aCB0aGUgfG5h
bWV8IGFuZCB8YXJnX25hbWV8IHBhcmFtZXRlcnMsIHVzZSB0aGUKKy8vIFRSQUNFX0VWRU5UX0NP
UFlfWFhYIG92ZXJsb2FkcyBvZiB0aGUgbWFjcm9zIGF0IGFkZGl0aW9uYWwgcnVudGltZSBvdmVy
aGVhZC4KKy8vIE5vdGVzOiBUaGUgY2F0ZWdvcnkgbXVzdCBhbHdheXMgYmUgaW4gYSBsb25nLWxp
dmVkIGNoYXIqIChpLmUuIHN0YXRpYyBjb25zdCkuCisvLyAgICAgICAgVGhlIHxhcmdfdmFsdWVz
fCwgd2hlbiB1c2VkLCBhcmUgYWx3YXlzIGRlZXAgY29waWVkIHdpdGggdGhlIF9DT1BZCisvLyAg
ICAgICAgbWFjcm9zLgorLy8KKy8vIFdoZW4gYXJlIHN0cmluZyBhcmd1bWVudCB2YWx1ZXMgY29w
aWVkOgorLy8gY29uc3QgY2hhciogYXJnX3ZhbHVlcyBhcmUgb25seSByZWZlcmVuY2VkIGJ5IGRl
ZmF1bHQ6CisvLyAgICAgVFJBQ0VfRVZFTlQxKCJjYXRlZ29yeSIsICJuYW1lIiwKKy8vICAgICAg
ICAgICAgICAgICAgImFyZzEiLCAibGl0ZXJhbCBzdHJpbmcgaXMgb25seSByZWZlcmVuY2VkIik7
CisvLyBVc2UgVFJBQ0VfU1RSX0NPUFkgdG8gZm9yY2UgY29weWluZyBvZiBhIGNvbnN0IGNoYXIq
OgorLy8gICAgIFRSQUNFX0VWRU5UMSgiY2F0ZWdvcnkiLCAibmFtZSIsCisvLyAgICAgICAgICAg
ICAgICAgICJhcmcxIiwgVFJBQ0VfU1RSX0NPUFkoInN0cmluZyB3aWxsIGJlIGNvcGllZCIpKTsK
Ky8vIHN0ZDo6c3RyaW5nIGFyZ192YWx1ZXMgYXJlIGFsd2F5cyBjb3BpZWQ6CisvLyAgICAgVFJB
Q0VfRVZFTlQxKCJjYXRlZ29yeSIsICJuYW1lIiwKKy8vICAgICAgICAgICAgICAgICAgImFyZzEi
LCBzdGQ6OnN0cmluZygic3RyaW5nIHdpbGwgYmUgY29waWVkIikpOworLy8KKy8vCisvLyBUaHJl
YWQgU2FmZXR5OgorLy8gQSB0aHJlYWQgc2FmZSBzaW5nbGV0b24gYW5kIG11dGV4IGFyZSB1c2Vk
IGZvciB0aHJlYWQgc2FmZXR5LiBDYXRlZ29yeQorLy8gZW5hYmxlZCBmbGFncyBhcmUgdXNlZCB0
byBsaW1pdCB0aGUgcGVyZm9ybWFuY2UgaW1wYWN0IHdoZW4gdGhlIHN5c3RlbQorLy8gaXMgbm90
IGVuYWJsZWQuCisvLworLy8gVFJBQ0VfRVZFTlQgbWFjcm9zIGZpcnN0IGNhY2hlIGEgcG9pbnRl
ciB0byBhIGNhdGVnb3J5LiBUaGUgY2F0ZWdvcmllcyBhcmUKKy8vIHN0YXRpY2FsbHkgYWxsb2Nh
dGVkIGFuZCBzYWZlIGF0IGFsbCB0aW1lcywgZXZlbiBhZnRlciBleGl0LiBGZXRjaGluZyBhCisv
LyBjYXRlZ29yeSBpcyBwcm90ZWN0ZWQgYnkgdGhlIFRyYWNlTG9nOjpsb2NrXy4gTXVsdGlwbGUg
dGhyZWFkcyBpbml0aWFsaXppbmcKKy8vIHRoZSBzdGF0aWMgdmFyaWFibGUgaXMgc2FmZSwgYXMg
dGhleSB3aWxsIGJlIHNlcmlhbGl6ZWQgYnkgdGhlIGxvY2sgYW5kCisvLyBtdWx0aXBsZSBjYWxs
cyB3aWxsIHJldHVybiB0aGUgc2FtZSBwb2ludGVyIHRvIHRoZSBjYXRlZ29yeS4KKy8vCisvLyBU
aGVuIHRoZSBjYXRlZ29yeV9lbmFibGVkIGZsYWcgaXMgY2hlY2tlZC4gVGhpcyBpcyBhIHVuc2ln
bmVkIGNoYXIsIGFuZAorLy8gbm90IGludGVuZGVkIHRvIGJlIG11bHRpdGhyZWFkIHNhZmUuIEl0
IG9wdGltaXplcyBhY2Nlc3MgdG8gYWRkVHJhY2VFdmVudAorLy8gd2hpY2ggaXMgdGhyZWFkc2Fm
ZSBpbnRlcm5hbGx5IHZpYSBUcmFjZUxvZzo6bG9ja18uIFRoZSBlbmFibGVkIGZsYWcgbWF5Cisv
LyBjYXVzZSBzb21lIHRocmVhZHMgdG8gaW5jb3JyZWN0bHkgY2FsbCBvciBza2lwIGNhbGxpbmcg
YWRkVHJhY2VFdmVudCBuZWFyCisvLyB0aGUgdGltZSBvZiB0aGUgc3lzdGVtIGJlaW5nIGVuYWJs
ZWQgb3IgZGlzYWJsZWQuIFRoaXMgaXMgYWNjZXB0YWJsZSBhcworLy8gd2UgdG9sZXJhdGUgc29t
ZSBkYXRhIGxvc3Mgd2hpbGUgdGhlIHN5c3RlbSBpcyBiZWluZyBlbmFibGVkL2Rpc2FibGVkIGFu
ZAorLy8gYmVjYXVzZSBhZGRUcmFjZUV2ZW50IGlzIHRocmVhZHNhZmUgaW50ZXJuYWxseSBhbmQg
Y2hlY2tzIHRoZSBlbmFibGVkIHN0YXRlCisvLyBhZ2FpbiB1bmRlciBsb2NrLgorLy8KKy8vIFdp
dGhvdXQgdGhlIHVzZSBvZiB0aGVzZSBzdGF0aWMgY2F0ZWdvcnkgcG9pbnRlcnMgYW5kIGVuYWJs
ZWQgZmxhZ3MgYWxsCisvLyB0cmFjZSBwb2ludHMgd291bGQgY2FycnkgYSBzaWduaWZpY2FudCBw
ZXJmb3JtYW5jZSBjb3N0IG9mIGFxdWlyaW5nIGEgbG9jaworLy8gYW5kIHJlc29sdmluZyB0aGUg
Y2F0ZWdvcnkuCisKKyNpZm5kZWYgQ09NTU9OX1RSQUNFX0VWRU5UX0hfCisjZGVmaW5lIENPTU1P
Tl9UUkFDRV9FVkVOVF9IXworCisjaW5jbHVkZSA8c3RyaW5nPgorCisjaW5jbHVkZSAiY29tbW9u
L2V2ZW50X3RyYWNlci5oIgorCisvLyBCeSBkZWZhdWx0LCBjb25zdCBjaGFyKiBhcmd1bWVudCB2
YWx1ZXMgYXJlIGFzc3VtZWQgdG8gaGF2ZSBsb25nLWxpdmVkIHNjb3BlCisvLyBhbmQgd2lsbCBu
b3QgYmUgY29waWVkLiBVc2UgdGhpcyBtYWNybyB0byBmb3JjZSBhIGNvbnN0IGNoYXIqIHRvIGJl
IGNvcGllZC4KKyNkZWZpbmUgVFJBQ0VfU1RSX0NPUFkoc3RyKSBcCisgICAgV2ViQ29yZTo6VHJh
Y2VFdmVudDo6VHJhY2VTdHJpbmdXaXRoQ29weShzdHIpCisKKy8vIFJlY29yZHMgYSBwYWlyIG9m
IGJlZ2luIGFuZCBlbmQgZXZlbnRzIGNhbGxlZCAibmFtZSIgZm9yIHRoZSBjdXJyZW50CisvLyBz
Y29wZSwgd2l0aCAwLCAxIG9yIDIgYXNzb2NpYXRlZCBhcmd1bWVudHMuIElmIHRoZSBjYXRlZ29y
eSBpcyBub3QKKy8vIGVuYWJsZWQsIHRoZW4gdGhpcyBkb2VzIG5vdGhpbmcuCisvLyAtIGNhdGVn
b3J5IGFuZCBuYW1lIHN0cmluZ3MgbXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0
aWNzIG9yCisvLyAgIGxpdGVyYWxzKS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKyNk
ZWZpbmUgVFJBQ0VfRVZFTlQwKGNhdGVnb3J5LCBuYW1lKSBcCisgICAgSU5URVJOQUxfVFJBQ0Vf
RVZFTlRfQUREX1NDT1BFRChjYXRlZ29yeSwgbmFtZSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlQxKGNh
dGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0Vf
RVZFTlRfQUREX1NDT1BFRChjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNk
ZWZpbmUgVFJBQ0VfRVZFTlQyKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBh
cmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BF
RChjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25h
bWUsIGFyZzJfdmFsKQorCisvLyBSZWNvcmRzIGEgc2luZ2xlIGV2ZW50IGNhbGxlZCAibmFtZSIg
aW1tZWRpYXRlbHksIHdpdGggMCwgMSBvciAyCisvLyBhc3NvY2lhdGVkIGFyZ3VtZW50cy4gSWYg
dGhlIGNhdGVnb3J5IGlzIG5vdCBlbmFibGVkLCB0aGVuIHRoaXMKKy8vIGRvZXMgbm90aGluZy4K
Ky8vIC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBwbGljYXRpb24gbGlm
ZXRpbWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBub3QgaW5jbHVkZSAi
IGNoYXJzLgorI2RlZmluZSBUUkFDRV9FVkVOVF9JTlNUQU5UMChjYXRlZ29yeSwgbmFtZSkgXAor
ICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9JTlNUQU5ULCBc
CisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUpCisjZGVmaW5l
IFRSQUNFX0VWRU5UX0lOU1RBTlQxKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFs
KSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RB
TlQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJn
MV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfSU5TVEFOVDIoY2F0ZWdvcnks
IG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3Zh
bCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9JTlNU
QU5ULCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUsIGFy
ZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKyNkZWZp
bmUgVFJBQ0VfRVZFTlRfQ09QWV9JTlNUQU5UMChjYXRlZ29yeSwgbmFtZSkgXAorICAgIElOVEVS
TkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9JTlNUQU5ULCBcCisgICAgICAg
IGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFkpCisjZGVmaW5lIFRSQUNFX0VW
RU5UX0NPUFlfSU5TVEFOVDEoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwK
KyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfSU5TVEFOVCwg
XAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBhcmcxX25h
bWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0lOU1RBTlQyKGNhdGVnb3J5
LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92
YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfSU5T
VEFOVCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBh
cmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpCisKKy8v
IFJlY29yZHMgYSBzaW5nbGUgQkVHSU4gZXZlbnQgY2FsbGVkICJuYW1lIiBpbW1lZGlhdGVseSwg
d2l0aCAwLCAxIG9yIDIKKy8vIGFzc29jaWF0ZWQgYXJndW1lbnRzLiBJZiB0aGUgY2F0ZWdvcnkg
aXMgbm90IGVuYWJsZWQsIHRoZW4gdGhpcworLy8gZG9lcyBub3RoaW5nLgorLy8gLSBjYXRlZ29y
eSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAoc3RhdGlj
cyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMuCisjZGVm
aW5lIFRSQUNFX0VWRU5UX0JFR0lOMChjYXRlZ29yeSwgbmFtZSkgXAorICAgIElOVEVSTkFMX1RS
QUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9CRUdJTiwgXAorICAgICAgICBjYXRlZ29y
eSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05FKQorI2RlZmluZSBUUkFDRV9FVkVOVF9CRUdJ
TjEoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9U
UkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4sIFwKKyAgICAgICAgY2F0ZWdv
cnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNk
ZWZpbmUgVFJBQ0VfRVZFTlRfQkVHSU4yKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFf
dmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFD
RV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4sIFwKKyAgICAgICAgY2F0ZWdvcnks
IG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAg
ICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0JFR0lO
MChjYXRlZ29yeSwgbmFtZSkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9F
VkVOVF9QSEFTRV9CRUdJTiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRf
RkxBR19DT1BZKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0JFR0lOMShjYXRlZ29yeSwgbmFt
ZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChU
UkFDRV9FVkVOVF9QSEFTRV9CRUdJTiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0Vf
RVZFTlRfRkxBR19DT1BZLCBhcmcxX25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVO
VF9DT1BZX0JFR0lOMihjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAg
ICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQURE
KFRSQUNFX0VWRU5UX1BIQVNFX0JFR0lOLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFD
RV9FVkVOVF9GTEFHX0NPUFksIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9u
YW1lLCBhcmcyX3ZhbCkKKworLy8gUmVjb3JkcyBhIHNpbmdsZSBFTkQgZXZlbnQgZm9yICJuYW1l
IiBpbW1lZGlhdGVseS4gSWYgdGhlIGNhdGVnb3J5CisvLyBpcyBub3QgZW5hYmxlZCwgdGhlbiB0
aGlzIGRvZXMgbm90aGluZy4KKy8vIC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhh
dmUgYXBwbGljYXRpb24gbGlmZXRpbWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5
IG1heSBub3QgaW5jbHVkZSAiIGNoYXJzLgorI2RlZmluZSBUUkFDRV9FVkVOVF9FTkQwKGNhdGVn
b3J5LCBuYW1lKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BI
QVNFX0VORCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05F
KQorI2RlZmluZSBUUkFDRV9FVkVOVF9FTkQxKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFy
ZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNF
X0VORCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCBh
cmcxX25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9FTkQyKGNhdGVnb3J5LCBu
YW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwp
IFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfRU5ELCBc
CisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUsIGFyZzFfbmFt
ZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKyNkZWZpbmUgVFJB
Q0VfRVZFTlRfQ09QWV9FTkQwKGNhdGVnb3J5LCBuYW1lKSBcCisgICAgSU5URVJOQUxfVFJBQ0Vf
RVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0VORCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFt
ZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0VORDEo
Y2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFD
RV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfRU5ELCBcCisgICAgICAgIGNhdGVnb3J5LCBu
YW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5l
IFRSQUNFX0VWRU5UX0NPUFlfRU5EMihjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3Zh
bCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0Vf
RVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0VORCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFt
ZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAg
IGFyZzJfbmFtZSwgYXJnMl92YWwpCisKKy8vIFJlY29yZHMgdGhlIHZhbHVlIG9mIGEgY291bnRl
ciBjYWxsZWQgIm5hbWUiIGltbWVkaWF0ZWx5LiBWYWx1ZQorLy8gbXVzdCBiZSByZXByZXNlbnRh
YmxlIGFzIGEgMzIgYml0IGludGVnZXIuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0cmluZ3Mg
bXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxpdGVyYWxz
KS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKyNkZWZpbmUgVFJBQ0VfQ09VTlRFUjEo
Y2F0ZWdvcnksIG5hbWUsIHZhbHVlKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRS
QUNFX0VWRU5UX1BIQVNFX0NPVU5URVIsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNF
X0VWRU5UX0ZMQUdfTk9ORSwgXAorICAgICAgICAidmFsdWUiLCBzdGF0aWNfY2FzdDxpbnQ+KHZh
bHVlKSkKKyNkZWZpbmUgVFJBQ0VfQ09QWV9DT1VOVEVSMShjYXRlZ29yeSwgbmFtZSwgdmFsdWUp
IFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRF
UiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBcCisg
ICAgICAgICJ2YWx1ZSIsIHN0YXRpY19jYXN0PGludD4odmFsdWUpKQorCisvLyBSZWNvcmRzIHRo
ZSB2YWx1ZXMgb2YgYSBtdWx0aS1wYXJ0ZWQgY291bnRlciBjYWxsZWQgIm5hbWUiIGltbWVkaWF0
ZWx5LgorLy8gVGhlIFVJIHdpbGwgdHJlYXQgdmFsdWUxIGFuZCB2YWx1ZTIgYXMgcGFydHMgb2Yg
YSB3aG9sZSwgZGlzcGxheWluZyB0aGVpcgorLy8gdmFsdWVzIGFzIGEgc3RhY2tlZC1iYXIgY2hh
cnQuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0cmluZ3MgbXVzdCBoYXZlIGFwcGxpY2F0aW9u
IGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxpdGVyYWxzKS4gVGhleSBtYXkgbm90IGluY2x1
ZGUgIiBjaGFycy4KKyNkZWZpbmUgVFJBQ0VfQ09VTlRFUjIoY2F0ZWdvcnksIG5hbWUsIHZhbHVl
MV9uYW1lLCB2YWx1ZTFfdmFsLCBcCisgICAgICAgIHZhbHVlMl9uYW1lLCB2YWx1ZTJfdmFsKSBc
CisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5URVIs
IFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgXAorICAg
ICAgICB2YWx1ZTFfbmFtZSwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZTFfdmFsKSwgXAorICAgICAg
ICB2YWx1ZTJfbmFtZSwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZTJfdmFsKSkKKyNkZWZpbmUgVFJB
Q0VfQ09QWV9DT1VOVEVSMihjYXRlZ29yeSwgbmFtZSwgdmFsdWUxX25hbWUsIHZhbHVlMV92YWws
IFwKKyAgICAgICAgdmFsdWUyX25hbWUsIHZhbHVlMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFD
RV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAgICBjYXRlZ29y
eSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBcCisgICAgICAgIHZhbHVlMV9uYW1lLCBz
dGF0aWNfY2FzdDxpbnQ+KHZhbHVlMV92YWwpLCBcCisgICAgICAgIHZhbHVlMl9uYW1lLCBzdGF0
aWNfY2FzdDxpbnQ+KHZhbHVlMl92YWwpKQorCisvLyBSZWNvcmRzIHRoZSB2YWx1ZSBvZiBhIGNv
dW50ZXIgY2FsbGVkICJuYW1lIiBpbW1lZGlhdGVseS4gVmFsdWUKKy8vIG11c3QgYmUgcmVwcmVz
ZW50YWJsZSBhcyBhIDMyIGJpdCBpbnRlZ2VyLgorLy8gLSBjYXRlZ29yeSBhbmQgbmFtZSBzdHJp
bmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAoc3RhdGljcyBvcgorLy8gICBsaXRl
cmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMuCisvLyAtIHxpZHwgaXMgdXNlZCB0
byBkaXNhbWJpZ3VhdGUgY291bnRlcnMgd2l0aCB0aGUgc2FtZSBuYW1lLiBJdCBtdXN0IGVpdGhl
cgorLy8gICBiZSBhIHBvaW50ZXIgb3IgYW4gaW50ZWdlciB2YWx1ZSB1cCB0byA2NCBiaXRzLiBJ
ZiBpdCdzIGEgcG9pbnRlciwgdGhlIGJpdHMKKy8vICAgd2lsbCBiZSB4b3JlZCB3aXRoIGEgaGFz
aCBvZiB0aGUgcHJvY2VzcyBJRCBzbyB0aGF0IHRoZSBzYW1lIHBvaW50ZXIgb24KKy8vICAgdHdv
IGRpZmZlcmVudCBwcm9jZXNzZXMgd2lsbCBub3QgY29sbGlkZS4KKyNkZWZpbmUgVFJBQ0VfQ09V
TlRFUl9JRDEoY2F0ZWdvcnksIG5hbWUsIGlkLCB2YWx1ZSkgXAorICAgIElOVEVSTkFMX1RSQUNF
X0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5URVIsIFwKKyAgICAgICAg
Y2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUsIFwKKyAgICAgICAgInZh
bHVlIiwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSkpCisjZGVmaW5lIFRSQUNFX0NPUFlfQ09VTlRF
Ul9JRDEoY2F0ZWdvcnksIG5hbWUsIGlkLCB2YWx1ZSkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VW
RU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5URVIsIFwKKyAgICAgICAgY2F0
ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIFwKKyAgICAgICAgInZhbHVl
Iiwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSkpCisKKy8vIFJlY29yZHMgdGhlIHZhbHVlcyBvZiBh
IG11bHRpLXBhcnRlZCBjb3VudGVyIGNhbGxlZCAibmFtZSIgaW1tZWRpYXRlbHkuCisvLyBUaGUg
VUkgd2lsbCB0cmVhdCB2YWx1ZTEgYW5kIHZhbHVlMiBhcyBwYXJ0cyBvZiBhIHdob2xlLCBkaXNw
bGF5aW5nIHRoZWlyCisvLyB2YWx1ZXMgYXMgYSBzdGFja2VkLWJhciBjaGFydC4KKy8vIC0gY2F0
ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBwbGljYXRpb24gbGlmZXRpbWUgKHN0
YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBub3QgaW5jbHVkZSAiIGNoYXJzLgor
Ly8gLSB8aWR8IGlzIHVzZWQgdG8gZGlzYW1iaWd1YXRlIGNvdW50ZXJzIHdpdGggdGhlIHNhbWUg
bmFtZS4gSXQgbXVzdCBlaXRoZXIKKy8vICAgYmUgYSBwb2ludGVyIG9yIGFuIGludGVnZXIgdmFs
dWUgdXAgdG8gNjQgYml0cy4gSWYgaXQncyBhIHBvaW50ZXIsIHRoZSBiaXRzCisvLyAgIHdpbGwg
YmUgeG9yZWQgd2l0aCBhIGhhc2ggb2YgdGhlIHByb2Nlc3MgSUQgc28gdGhhdCB0aGUgc2FtZSBw
b2ludGVyIG9uCisvLyAgIHR3byBkaWZmZXJlbnQgcHJvY2Vzc2VzIHdpbGwgbm90IGNvbGxpZGUu
CisjZGVmaW5lIFRSQUNFX0NPVU5URVJfSUQyKGNhdGVnb3J5LCBuYW1lLCBpZCwgdmFsdWUxX25h
bWUsIHZhbHVlMV92YWwsIFwKKyAgICAgICAgdmFsdWUyX25hbWUsIHZhbHVlMl92YWwpIFwKKyAg
ICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9DT1VO
VEVSLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19OT05F
LCBcCisgICAgICAgIHZhbHVlMV9uYW1lLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMV92YWwpLCBc
CisgICAgICAgIHZhbHVlMl9uYW1lLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMl92YWwpKQorI2Rl
ZmluZSBUUkFDRV9DT1BZX0NPVU5URVJfSUQyKGNhdGVnb3J5LCBuYW1lLCBpZCwgdmFsdWUxX25h
bWUsIHZhbHVlMV92YWwsIFwKKyAgICAgICAgdmFsdWUyX25hbWUsIHZhbHVlMl92YWwpIFwKKyAg
ICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9DT1VO
VEVSLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZ
LCBcCisgICAgICAgIHZhbHVlMV9uYW1lLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMV92YWwpLCBc
CisgICAgICAgIHZhbHVlMl9uYW1lLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMl92YWwpKQorCisv
LyBSZWNvcmRzIGEgc2luZ2xlIEFTWU5DX0JFR0lOIGV2ZW50IGNhbGxlZCAibmFtZSIgaW1tZWRp
YXRlbHksIHdpdGggMCwgMSBvciAyCisvLyBhc3NvY2lhdGVkIGFyZ3VtZW50cy4gSWYgdGhlIGNh
dGVnb3J5IGlzIG5vdCBlbmFibGVkLCB0aGVuIHRoaXMKKy8vIGRvZXMgbm90aGluZy4KKy8vIC0g
Y2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBwbGljYXRpb24gbGlmZXRpbWUg
KHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBub3QgaW5jbHVkZSAiIGNoYXJz
LgorLy8gLSB8aWR8IGlzIHVzZWQgdG8gbWF0Y2ggdGhlIEFTWU5DX0JFR0lOIGV2ZW50IHdpdGgg
dGhlIEFTWU5DX0VORCBldmVudC4gQVNZTkMKKy8vICAgZXZlbnRzIGFyZSBjb25zaWRlcmVkIHRv
IG1hdGNoIGlmIHRoZWlyIGNhdGVnb3J5LCBuYW1lIGFuZCBpZCB2YWx1ZXMgYWxsCisvLyAgIG1h
dGNoLiB8aWR8IG11c3QgZWl0aGVyIGJlIGEgcG9pbnRlciBvciBhbiBpbnRlZ2VyIHZhbHVlIHVw
IHRvIDY0IGJpdHMuIElmCisvLyAgIGl0J3MgYSBwb2ludGVyLCB0aGUgYml0cyB3aWxsIGJlIHhv
cmVkIHdpdGggYSBoYXNoIG9mIHRoZSBwcm9jZXNzIElEIHNvCisvLyAgIHRoYXQgdGhlIHNhbWUg
cG9pbnRlciBvbiB0d28gZGlmZmVyZW50IHByb2Nlc3NlcyB3aWxsIG5vdCBjb2xsaWRlLgorLy8g
QW4gYXN5bmNocm9ub3VzIG9wZXJhdGlvbiBjYW4gY29uc2lzdCBvZiBtdWx0aXBsZSBwaGFzZXMu
IFRoZSBmaXJzdCBwaGFzZSBpcworLy8gZGVmaW5lZCBieSB0aGUgQVNZTkNfQkVHSU4gY2FsbHMu
IEFkZGl0aW9uYWwgcGhhc2VzIGNhbiBiZSBkZWZpbmVkIHVzaW5nIHRoZQorLy8gQVNZTkNfU1RF
UF9CRUdJTiBtYWNyb3MuIFdoZW4gdGhlIG9wZXJhdGlvbiBjb21wbGV0ZXMsIGNhbGwgQVNZTkNf
RU5ELgorLy8gQW4gYXN5bmMgb3BlcmF0aW9uIGNhbiBzcGFuIHRocmVhZHMgYW5kIHByb2Nlc3Nl
cywgYnV0IGFsbCBldmVudHMgaW4gdGhhdAorLy8gb3BlcmF0aW9uIG11c3QgdXNlIHRoZSBzYW1l
IHxuYW1lfCBhbmQgfGlkfC4gRWFjaCBldmVudCBjYW4gaGF2ZSBpdHMgb3duCisvLyBhcmdzLgor
I2RlZmluZSBUUkFDRV9FVkVOVF9BU1lOQ19CRUdJTjAoY2F0ZWdvcnksIG5hbWUsIGlkKSBcCisg
ICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfQVNZ
TkNfQkVHSU4sIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFH
X05PTkUpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0FTWU5DX0JFR0lOMShjYXRlZ29yeSwgbmFtZSwg
aWQsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERf
V0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9BU1lOQ19CRUdJTiwgXAorICAgICAgICBjYXRlZ29y
eSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkK
KyNkZWZpbmUgVFJBQ0VfRVZFTlRfQVNZTkNfQkVHSU4yKGNhdGVnb3J5LCBuYW1lLCBpZCwgYXJn
MV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAg
SU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfQVNZTkNf
QkVHSU4sIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX05P
TkUsIFwKKyAgICAgICAgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgYXJnMl9uYW1lLCBhcmcyX3ZhbCkK
KyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9BU1lOQ19CRUdJTjAoY2F0ZWdvcnksIG5hbWUsIGlk
KSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhB
U0VfQVNZTkNfQkVHSU4sIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVO
VF9GTEFHX0NPUFkpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfQVNZTkNfQkVHSU4xKGNhdGVn
b3J5LCBuYW1lLCBpZCwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNF
X0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0FTWU5DX0JFR0lOLCBcCisgICAg
ICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBcCisgICAgICAg
IGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfQVNZTkNfQkVH
SU4yKGNhdGVnb3J5LCBuYW1lLCBpZCwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBh
cmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhf
SUQoVFJBQ0VfRVZFTlRfUEhBU0VfQVNZTkNfQkVHSU4sIFwKKyAgICAgICAgY2F0ZWdvcnksIG5h
bWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIFwKKyAgICAgICAgYXJnMV9uYW1lLCBhcmcx
X3ZhbCwgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKworLy8gUmVjb3JkcyBhIHNpbmdsZSBBU1lOQ19T
VEVQIGV2ZW50IGZvciB8c3RlcHwgaW1tZWRpYXRlbHkuIElmIHRoZSBjYXRlZ29yeQorLy8gaXMg
bm90IGVuYWJsZWQsIHRoZW4gdGhpcyBkb2VzIG5vdGhpbmcuIFRoZSB8bmFtZXwgYW5kIHxpZHwg
bXVzdCBtYXRjaCB0aGUKKy8vIEFTWU5DX0JFR0lOIGV2ZW50IGFib3ZlLiBUaGUgfHN0ZXB8IHBh
cmFtIGlkZW50aWZpZXMgdGhpcyBzdGVwIHdpdGhpbiB0aGUKKy8vIGFzeW5jIGV2ZW50LiBUaGlz
IHNob3VsZCBiZSBjYWxsZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBwaGFzZSBvZiBh
bgorLy8gYXN5bmNocm9ub3VzIG9wZXJhdGlvbi4KKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQVNZTkNf
U1RFUDAoY2F0ZWdvcnksIG5hbWUsIGlkLCBzdGVwKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZF
TlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfQVNZTkNfU1RFUCwgXAorICAgICAgICBj
YXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgInN0ZXAiLCBzdGVwKQor
I2RlZmluZSBUUkFDRV9FVkVOVF9BU1lOQ19TVEVQMShjYXRlZ29yeSwgbmFtZSwgaWQsIHN0ZXAs
IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnMV9uYW1lLCBhcmcx
X3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5U
X1BIQVNFX0FTWU5DX1NURVAsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9F
VkVOVF9GTEFHX05PTkUsICJzdGVwIiwgc3RlcCwgXAorICAgICAgICBhcmcxX25hbWUsIGFyZzFf
dmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0FTWU5DX1NURVAwKGNhdGVnb3J5LCBuYW1l
LCBpZCwgc3RlcCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNF
X0VWRU5UX1BIQVNFX0FTWU5DX1NURVAsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBU
UkFDRV9FVkVOVF9GTEFHX0NPUFksICJzdGVwIiwgc3RlcCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRf
Q09QWV9BU1lOQ19TVEVQMShjYXRlZ29yeSwgbmFtZSwgaWQsIHN0ZXAsIFwKKyAgICAgICAgYXJn
MV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lE
KFRSQUNFX0VWRU5UX1BIQVNFX0FTWU5DX1NURVAsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUs
IGlkLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksICJzdGVwIiwgc3RlcCwgXAorICAgICAgICBhcmcx
X25hbWUsIGFyZzFfdmFsKQorCisvLyBSZWNvcmRzIGEgc2luZ2xlIEFTWU5DX0VORCBldmVudCBm
b3IgIm5hbWUiIGltbWVkaWF0ZWx5LiBJZiB0aGUgY2F0ZWdvcnkKKy8vIGlzIG5vdCBlbmFibGVk
LCB0aGVuIHRoaXMgZG9lcyBub3RoaW5nLgorI2RlZmluZSBUUkFDRV9FVkVOVF9BU1lOQ19FTkQw
KGNhdGVnb3J5LCBuYW1lLCBpZCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRI
X0lEKFRSQUNFX0VWRU5UX1BIQVNFX0FTWU5DX0VORCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFt
ZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQVNZTkNf
RU5EMShjYXRlZ29yeSwgbmFtZSwgaWQsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRF
Uk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9BU1lOQ19FTkQs
IFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUsIGFy
ZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0FTWU5DX0VORDIoY2F0ZWdv
cnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwg
YXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9F
VkVOVF9QSEFTRV9BU1lOQ19FTkQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFD
RV9FVkVOVF9GTEFHX05PTkUsIFwKKyAgICAgICAgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgYXJnMl9u
YW1lLCBhcmcyX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9BU1lOQ19FTkQwKGNhdGVn
b3J5LCBuYW1lLCBpZCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRS
QUNFX0VWRU5UX1BIQVNFX0FTWU5DX0VORCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQs
IFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9BU1lOQ19F
TkQxKGNhdGVnb3J5LCBuYW1lLCBpZCwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVS
TkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0FTWU5DX0VORCwg
XAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAor
ICAgICAgICBhcmcxX25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0FT
WU5DX0VORDIoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAg
ICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERf
V0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9BU1lOQ19FTkQsIFwKKyAgICAgICAgY2F0ZWdvcnks
IG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIFwKKyAgICAgICAgYXJnMV9uYW1lLCBh
cmcxX3ZhbCwgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKworLy8gQ3JlYXRlcyBhIHNjb3BlIG9mIGEg
c2FtcGxpbmcgc3RhdGUgd2l0aCB0aGUgZ2l2ZW4gY2F0ZWdvcnkgYW5kIG5hbWUgKGJvdGggbXVz
dAorLy8gYmUgY29uc3RhbnQgc3RyaW5ncykuIFRoZXNlIHN0YXRlcyBhcmUgaW50ZW5kZWQgZm9y
IGEgc2FtcGxpbmcgcHJvZmlsZXIuCisvLyBJbXBsZW1lbnRhdGlvbiBub3RlOiB3ZSBzdG9yZSBj
YXRlZ29yeSBhbmQgbmFtZSB0b2dldGhlciBiZWNhdXNlIHdlIGRvbid0CisvLyB3YW50IHRoZSBp
bmNvbnNpc3RlbmN5L2V4cGVuc2Ugb2Ygc3RvcmluZyB0d28gcG9pbnRlcnMuCisvLyB8dGhyZWFk
X2J1Y2tldHwgaXMgWzAuLjJdIGFuZCBpcyB1c2VkIHRvIHN0YXRpY2FsbHkgaXNvbGF0ZSBzYW1w
bGVzIGluIG9uZQorLy8gdGhyZWFkIGZyb20gb3RoZXJzLgorLy8KKy8vIHsgIC8vIFRoZSBzYW1w
bGluZyBzdGF0ZSBpcyBzZXQgd2l0aGluIHRoaXMgc2NvcGUuCisvLyAgICBUUkFDRV9FVkVOVF9T
QU1QTElOR19TVEFURV9TQ09QRV9GT1JfQlVDS0VUKDAsICJjYXRlZ29yeSIsICJuYW1lIik7Cisv
LyAgICAuLi47CisvLyB9CisjZGVmaW5lIFRSQUNFX0VWRU5UX1NDT1BFRF9TQU1QTElOR19TVEFU
RV9GT1JfQlVDS0VUKGJ1Y2tldF9udW1iZXIsIGNhdGVnb3J5LCBuYW1lKSBcCisgICAgVHJhY2VF
dmVudDo6U2FtcGxpbmdTdGF0ZVNjb3BlPGJ1Y2tldF9udW1iZXI+IHRyYWNlRXZlbnRTYW1wbGlu
Z1Njb3BlKGNhdGVnb3J5ICJcMCIgbmFtZSk7CisKKy8vIFJldHVybnMgYSBjdXJyZW50IHNhbXBs
aW5nIHN0YXRlIG9mIHRoZSBnaXZlbiBidWNrZXQuCisvLyBUaGUgZm9ybWF0IG9mIHRoZSByZXR1
cm5lZCBzdHJpbmcgaXMgImNhdGVnb3J5XDBuYW1lIi4KKyNkZWZpbmUgVFJBQ0VfRVZFTlRfR0VU
X1NBTVBMSU5HX1NUQVRFX0ZPUl9CVUNLRVQoYnVja2V0X251bWJlcikgXAorICAgIFRyYWNlRXZl
bnQ6OlNhbXBsaW5nU3RhdGVTY29wZTxidWNrZXRfbnVtYmVyPjo6Y3VycmVudCgpCisKKy8vIFNl
dHMgYSBjdXJyZW50IHNhbXBsaW5nIHN0YXRlIG9mIHRoZSBnaXZlbiBidWNrZXQuCisvLyB8Y2F0
ZWdvcnl8IGFuZCB8bmFtZXwgaGF2ZSB0byBiZSBjb25zdGFudCBzdHJpbmdzLgorI2RlZmluZSBU
UkFDRV9FVkVOVF9TRVRfU0FNUExJTkdfU1RBVEVfRk9SX0JVQ0tFVChidWNrZXRfbnVtYmVyLCBj
YXRlZ29yeSwgbmFtZSkgXAorICAgIFRyYWNlRXZlbnQ6OlNhbXBsaW5nU3RhdGVTY29wZTxidWNr
ZXRfbnVtYmVyPjo6c2V0KGNhdGVnb3J5ICJcMCIgbmFtZSkKKworLy8gU2V0cyBhIGN1cnJlbnQg
c2FtcGxpbmcgc3RhdGUgb2YgdGhlIGdpdmVuIGJ1Y2tldC4KKy8vIHxjYXRlZ29yeUFuZE5hbWV8
IGRvZXNuJ3QgbmVlZCB0byBiZSBhIGNvbnN0YW50IHN0cmluZy4KKy8vIFRoZSBmb3JtYXQgb2Yg
dGhlIHN0cmluZyBpcyAiY2F0ZWdvcnlcMG5hbWUiLgorI2RlZmluZSBUUkFDRV9FVkVOVF9TRVRf
Tk9OQ09OU1RfU0FNUExJTkdfU1RBVEVfRk9SX0JVQ0tFVChidWNrZXRfbnVtYmVyLCBjYXRlZ29y
eUFuZE5hbWUpIFwKKyAgICBUcmFjZUV2ZW50OjpTYW1wbGluZ1N0YXRlU2NvcGU8YnVja2V0X251
bWJlcj46OnNldChjYXRlZ29yeUFuZE5hbWUpCisKKy8vIFN5bnRhY3RpYyBzdWdhcnMgZm9yIHRo
ZSBzYW1wbGluZyB0cmFjaW5nIGluIHRoZSBtYWluIHRocmVhZC4KKyNkZWZpbmUgVFJBQ0VfRVZF
TlRfU0NPUEVEX1NBTVBMSU5HX1NUQVRFKGNhdGVnb3J5LCBuYW1lKSBcCisgICAgVFJBQ0VfRVZF
TlRfU0NPUEVEX1NBTVBMSU5HX1NUQVRFX0ZPUl9CVUNLRVQoMCwgY2F0ZWdvcnksIG5hbWUpCisj
ZGVmaW5lIFRSQUNFX0VWRU5UX0dFVF9TQU1QTElOR19TVEFURSgpIFwKKyAgICBUUkFDRV9FVkVO
VF9HRVRfU0FNUExJTkdfU1RBVEVfRk9SX0JVQ0tFVCgwKQorI2RlZmluZSBUUkFDRV9FVkVOVF9T
RVRfU0FNUExJTkdfU1RBVEUoY2F0ZWdvcnksIG5hbWUpIFwKKyAgICBUUkFDRV9FVkVOVF9TRVRf
U0FNUExJTkdfU1RBVEVfRk9SX0JVQ0tFVCgwLCBjYXRlZ29yeSwgbmFtZSkKKyNkZWZpbmUgVFJB
Q0VfRVZFTlRfU0VUX05PTkNPTlNUX1NBTVBMSU5HX1NUQVRFKGNhdGVnb3J5QW5kTmFtZSkgXAor
ICAgIFRSQUNFX0VWRU5UX1NFVF9OT05DT05TVF9TQU1QTElOR19TVEFURV9GT1JfQlVDS0VUKDAs
IGNhdGVnb3J5QW5kTmFtZSkKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIEltcGxlbWVu
dGF0aW9uIHNwZWNpZmljIHRyYWNpbmcgQVBJIGRlZmluaXRpb25zLgorCisvLyBHZXQgYSBwb2lu
dGVyIHRvIHRoZSBlbmFibGVkIHN0YXRlIG9mIHRoZSBnaXZlbiB0cmFjZSBjYXRlZ29yeS4gT25s
eQorLy8gbG9uZy1saXZlZCBsaXRlcmFsIHN0cmluZ3Mgc2hvdWxkIGJlIGdpdmVuIGFzIHRoZSBj
YXRlZ29yeSBuYW1lLiBUaGUgcmV0dXJuZWQKKy8vIHBvaW50ZXIgY2FuIGJlIGhlbGQgcGVybWFu
ZW50bHkgaW4gYSBsb2NhbCBzdGF0aWMgZm9yIGV4YW1wbGUuIElmIHRoZQorLy8gdW5zaWduZWQg
Y2hhciBpcyBub24temVybywgdHJhY2luZyBpcyBlbmFibGVkLiBJZiB0cmFjaW5nIGlzIGVuYWJs
ZWQsCisvLyBUUkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5UIGNhbiBiZSBjYWxsZWQuIEl0
J3MgT0sgaWYgdHJhY2luZyBpcyBkaXNhYmxlZAorLy8gYmV0d2VlbiB0aGUgbG9hZCBvZiB0aGUg
dHJhY2luZyBzdGF0ZSBhbmQgdGhlIGNhbGwgdG8KKy8vIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJB
Q0VfRVZFTlQsIGJlY2F1c2UgdGhpcyBmbGFnIG9ubHkgcHJvdmlkZXMgYW4gZWFybHkgb3V0Cisv
LyBmb3IgYmVzdCBwZXJmb3JtYW5jZSB3aGVuIHRyYWNpbmcgaXMgZGlzYWJsZWQuCisvLyBjb25z
dCB1bnNpZ25lZCBjaGFyKgorLy8gICAgIFRSQUNFX0VWRU5UX0FQSV9HRVRfQ0FURUdPUllfRU5B
QkxFRChjb25zdCBjaGFyKiBjYXRlZ29yeV9uYW1lKQorI2RlZmluZSBUUkFDRV9FVkVOVF9BUElf
R0VUX0NBVEVHT1JZX0VOQUJMRUQgXAorICAgIGdsOjpUcmFjZUdldFRyYWNlQ2F0ZWdvcnlFbmFi
bGVkRmxhZworCisvLyBBZGQgYSB0cmFjZSBldmVudCB0byB0aGUgcGxhdGZvcm0gdHJhY2luZyBz
eXN0ZW0uCisvLyB2b2lkIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQoCisvLyAgICAg
ICAgICAgICAgICAgICAgY2hhciBwaGFzZSwKKy8vICAgICAgICAgICAgICAgICAgICBjb25zdCB1
bnNpZ25lZCBjaGFyKiBjYXRlZ29yeV9lbmFibGVkLAorLy8gICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIG5hbWUsCisvLyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25n
IGlkLAorLy8gICAgICAgICAgICAgICAgICAgIGludCBudW1fYXJncywKKy8vICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiogYXJnX25hbWVzLAorLy8gICAgICAgICAgICAgICAgICAgIGNv
bnN0IHVuc2lnbmVkIGNoYXIqIGFyZ190eXBlcywKKy8vICAgICAgICAgICAgICAgICAgICBjb25z
dCB1bnNpZ25lZCBsb25nIGxvbmcqIGFyZ192YWx1ZXMsCisvLyAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgY2hhciBmbGFncykKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9F
VkVOVCBcCisgICAgZ2w6OlRyYWNlQWRkVHJhY2VFdmVudAorCisvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLworCisvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6IHRyYWNlIGV2ZW50IG1hY3JvcyBjcmVh
dGUgdGVtcG9yYXJ5IHZhcmlhYmxlcworLy8gdG8ga2VlcCBpbnN0cnVtZW50YXRpb24gb3Zlcmhl
YWQgbG93LiBUaGVzZSBtYWNyb3MgZ2l2ZSBlYWNoIHRlbXBvcmFyeQorLy8gdmFyaWFibGUgYSB1
bmlxdWUgbmFtZSBiYXNlZCBvbiB0aGUgbGluZSBudW1iZXIgdG8gcHJldmVudCBuYW1lIGNvbGxp
c3Npb25zLgorI2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVOVF9VSUQzKGEsIGIpIFwKKyAgICB0
cmFjZV9ldmVudF91bmlxdWVfIyNhIyNiCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX1VJ
RDIoYSwgYikgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX1VJRDMoYSwgYikKKyNkZWZpbmUg
SU5URVJOQUxUUkFDRUVWRU5UVUlEKG5hbWVfcHJlZml4KSBcCisgICAgSU5URVJOQUxfVFJBQ0Vf
RVZFTlRfVUlEMihuYW1lX3ByZWZpeCwgX19MSU5FX18pCisKKy8vIEltcGxlbWVudGF0aW9uIGRl
dGFpbDogaW50ZXJuYWwgbWFjcm8gdG8gY3JlYXRlIHN0YXRpYyBjYXRlZ29yeS4KKyNkZWZpbmUg
SU5URVJOQUxfVFJBQ0VfRVZFTlRfR0VUX0NBVEVHT1JZX0lORk8oY2F0ZWdvcnkpIFwKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciogSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRp
YykgPSAwOyBcCisgICAgaWYgKCFJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSkgXAor
ICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYykgPSBcCisgICAgICAgICAgVFJB
Q0VfRVZFTlRfQVBJX0dFVF9DQVRFR09SWV9FTkFCTEVEKGNhdGVnb3J5KTsKKworLy8gSW1wbGVt
ZW50YXRpb24gZGV0YWlsOiBpbnRlcm5hbCBtYWNybyB0byBjcmVhdGUgc3RhdGljIGNhdGVnb3J5
IGFuZCBhZGQKKy8vIGV2ZW50IGlmIHRoZSBjYXRlZ29yeSBpcyBlbmFibGVkLgorI2RlZmluZSBJ
TlRFUk5BTF9UUkFDRV9FVkVOVF9BREQocGhhc2UsIGNhdGVnb3J5LCBuYW1lLCBmbGFncywgLi4u
KSBcCisgICAgZG8geyBcCisgICAgICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0dFVF9DQVRFR09S
WV9JTkZPKGNhdGVnb3J5KTsgXAorICAgICAgICBpZiAoKklOVEVSTkFMVFJBQ0VFVkVOVFVJRChj
YXRzdGF0aWMpKSB7IFwKKyAgICAgICAgICAgIGdsOjpUcmFjZUV2ZW50OjphZGRUcmFjZUV2ZW50
KCBcCisgICAgICAgICAgICAgICAgcGhhc2UsIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0
aWMpLCBuYW1lLCBcCisgICAgICAgICAgICAgICAgZ2w6OlRyYWNlRXZlbnQ6Om5vRXZlbnRJZCwg
ZmxhZ3MsICMjX19WQV9BUkdTX18pOyBcCisgICAgICAgIH0gXAorICAgIH0gd2hpbGUgKDApCisK
Ky8vIEltcGxlbWVudGF0aW9uIGRldGFpbDogaW50ZXJuYWwgbWFjcm8gdG8gY3JlYXRlIHN0YXRp
YyBjYXRlZ29yeSBhbmQgYWRkIGJlZ2luCisvLyBldmVudCBpZiB0aGUgY2F0ZWdvcnkgaXMgZW5h
YmxlZC4gQWxzbyBhZGRzIHRoZSBlbmQgZXZlbnQgd2hlbiB0aGUgc2NvcGUKKy8vIGVuZHMuCisj
ZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9TQ09QRUQoY2F0ZWdvcnksIG5hbWUsIC4u
LikgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0dFVF9DQVRFR09SWV9JTkZPKGNhdGVnb3J5
KTsgXAorICAgIGdsOjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZSBcCisgICAgICAg
IElOVEVSTkFMVFJBQ0VFVkVOVFVJRChwcm9maWxlU2NvcGUpOyBcCisgICAgaWYgKCpJTlRFUk5B
TFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSkgeyBcCisgICAgICBnbDo6VHJhY2VFdmVudDo6YWRk
VHJhY2VFdmVudCggXAorICAgICAgICAgIFRSQUNFX0VWRU5UX1BIQVNFX0JFR0lOLCBcCisgICAg
ICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYyksIFwKKyAgICAgICAgICBuYW1l
LCBnbDo6VHJhY2VFdmVudDo6bm9FdmVudElkLCBcCisgICAgICAgICAgVFJBQ0VfRVZFTlRfRkxB
R19OT05FLCAjI19fVkFfQVJHU19fKTsgXAorICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKHBy
b2ZpbGVTY29wZSkuaW5pdGlhbGl6ZSggXAorICAgICAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJ
RChjYXRzdGF0aWMpLCBuYW1lKTsgXAorICAgIH0KKworLy8gSW1wbGVtZW50YXRpb24gZGV0YWls
OiBpbnRlcm5hbCBtYWNybyB0byBjcmVhdGUgc3RhdGljIGNhdGVnb3J5IGFuZCBhZGQKKy8vIGV2
ZW50IGlmIHRoZSBjYXRlZ29yeSBpcyBlbmFibGVkLgorI2RlZmluZSBJTlRFUk5BTF9UUkFDRV9F
VkVOVF9BRERfV0lUSF9JRChwaGFzZSwgY2F0ZWdvcnksIG5hbWUsIGlkLCBmbGFncywgXAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pIFwKKyAgICBkbyB7IFwK
KyAgICAgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfR0VUX0NBVEVHT1JZX0lORk8oY2F0ZWdvcnkp
OyBcCisgICAgICAgIGlmICgqSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYykpIHsgXAor
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciB0cmFjZUV2ZW50RmxhZ3MgPSBmbGFncyB8IFRSQUNF
X0VWRU5UX0ZMQUdfSEFTX0lEOyBcCisgICAgICAgICAgICBnbDo6VHJhY2VFdmVudDo6VHJhY2VJ
RCB0cmFjZUV2ZW50VHJhY2VJRCggXAorICAgICAgICAgICAgICAgIGlkLCAmdHJhY2VFdmVudEZs
YWdzKTsgXAorICAgICAgICAgICAgZ2w6OlRyYWNlRXZlbnQ6OmFkZFRyYWNlRXZlbnQoIFwKKyAg
ICAgICAgICAgICAgICBwaGFzZSwgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYyksIFwK
KyAgICAgICAgICAgICAgICBuYW1lLCB0cmFjZUV2ZW50VHJhY2VJRC5kYXRhKCksIHRyYWNlRXZl
bnRGbGFncywgXAorICAgICAgICAgICAgICAgICMjX19WQV9BUkdTX18pOyBcCisgICAgICAgIH0g
XAorICAgIH0gd2hpbGUgKDApCisKKy8vIE5vdGVzIHJlZ2FyZGluZyB0aGUgZm9sbG93aW5nIGRl
ZmluaXRpb25zOgorLy8gTmV3IHZhbHVlcyBjYW4gYmUgYWRkZWQgYW5kIHByb3BhZ2F0ZWQgdG8g
dGhpcmQgcGFydHkgbGlicmFyaWVzLCBidXQgZXhpc3RpbmcKKy8vIGRlZmluaXRpb25zIG11c3Qg
bmV2ZXIgYmUgY2hhbmdlZCwgYmVjYXVzZSB0aGlyZCBwYXJ0eSBsaWJyYXJpZXMgbWF5IHVzZSBv
bGQKKy8vIGRlZmluaXRpb25zLgorCisvLyBQaGFzZSBpbmRpY2F0ZXMgdGhlIG5hdHVyZSBvZiBh
biBldmVudCBlbnRyeS4gRS5nLiBwYXJ0IG9mIGEgYmVnaW4vZW5kIHBhaXIuCisjZGVmaW5lIFRS
QUNFX0VWRU5UX1BIQVNFX0JFR0lOICAgICgnQicpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1BIQVNF
X0VORCAgICAgICgnRScpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RBTlQgICgnSScp
CisjZGVmaW5lIFRSQUNFX0VWRU5UX1BIQVNFX0FTWU5DX0JFR0lOICgnUycpCisjZGVmaW5lIFRS
QUNFX0VWRU5UX1BIQVNFX0FTWU5DX1NURVAgICgnVCcpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1BI
QVNFX0FTWU5DX0VORCAgICgnRicpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1BIQVNFX01FVEFEQVRB
ICgnTScpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5URVIgICgnQycpCisjZGVmaW5l
IFRSQUNFX0VWRU5UX1BIQVNFX1NBTVBMRSAgKCdQJykKKworLy8gRmxhZ3MgZm9yIGNoYW5naW5n
IHRoZSBiZWhhdmlvciBvZiBUUkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5ULgorI2RlZmlu
ZSBUUkFDRV9FVkVOVF9GTEFHX05PTkUgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
PigwKSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfRkxBR19DT1BZICAgICAgICAoc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4oMSA8PCAwKSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQg
ICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMSA8PCAxKSkKKyNkZWZpbmUgVFJBQ0Vf
RVZFTlRfRkxBR19NQU5HTEVfSUQgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMSA8PCAy
KSkKKworLy8gVHlwZSB2YWx1ZXMgZm9yIGlkZW50aWZ5aW5nIHR5cGVzIGluIHRoZSBUcmFjZVZh
bHVlIHVuaW9uLgorI2RlZmluZSBUUkFDRV9WQUxVRV9UWVBFX0JPT0wgICAgICAgICAoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcj4oMSkpCisjZGVmaW5lIFRSQUNFX1ZBTFVFX1RZUEVfVUlOVCAg
ICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigyKSkKKyNkZWZpbmUgVFJBQ0VfVkFM
VUVfVFlQRV9JTlQgICAgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDMpKQorI2Rl
ZmluZSBUUkFDRV9WQUxVRV9UWVBFX0RPVUJMRSAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcj4oNCkpCisjZGVmaW5lIFRSQUNFX1ZBTFVFX1RZUEVfUE9JTlRFUiAgICAgIChzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyPig1KSkKKyNkZWZpbmUgVFJBQ0VfVkFMVUVfVFlQRV9TVFJJTkcg
ICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDYpKQorI2RlZmluZSBUUkFDRV9WQUxV
RV9UWVBFX0NPUFlfU1RSSU5HICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oNykpCisKKwor
bmFtZXNwYWNlIGdsIHsKKworbmFtZXNwYWNlIFRyYWNlRXZlbnQgeworCisvLyBTcGVjaWZ5IHRo
ZXNlIHZhbHVlcyB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIGFyZ3VtZW50IG9mIGFkZFRyYWNlRXZl
bnQgaXMgbm90CisvLyB1c2VkLgorY29uc3QgaW50IHplcm9OdW1BcmdzID0gMDsKK2NvbnN0IHVu
c2lnbmVkIGxvbmcgbG9uZyBub0V2ZW50SWQgPSAwOworCisvLyBUcmFjZUlEIGVuY2Fwc3VsYXRl
cyBhbiBJRCB0aGF0IGNhbiBlaXRoZXIgYmUgYW4gaW50ZWdlciBvciBwb2ludGVyLiBQb2ludGVy
cworLy8gYXJlIG1hbmdsZWQgd2l0aCB0aGUgUHJvY2VzcyBJRCBzbyB0aGF0IHRoZXkgYXJlIHVu
bGlrZWx5IHRvIGNvbGxpZGUgd2hlbiB0aGUKKy8vIHNhbWUgcG9pbnRlciBpcyB1c2VkIG9uIGRp
ZmZlcmVudCBwcm9jZXNzZXMuCitjbGFzcyBUcmFjZUlEIHsKK3B1YmxpYzoKKyAgICBleHBsaWNp
dCBUcmFjZUlEKGNvbnN0IHZvaWQqIGlkLCB1bnNpZ25lZCBjaGFyKiBmbGFncykgOgorICAgICAg
ICBtX2RhdGEoc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihyZWludGVycHJldF9jYXN0
PHVuc2lnbmVkIGxvbmc+KGlkKSkpCisgICAgeworICAgICAgICAqZmxhZ3MgfD0gVFJBQ0VfRVZF
TlRfRkxBR19NQU5HTEVfSUQ7CisgICAgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQodW5zaWduZWQg
bG9uZyBsb25nIGlkLCB1bnNpZ25lZCBjaGFyKiBmbGFncykgOiBtX2RhdGEoaWQpIHsgKHZvaWQp
ZmxhZ3M7IH0KKyAgICBleHBsaWNpdCBUcmFjZUlEKHVuc2lnbmVkIGxvbmcgaWQsIHVuc2lnbmVk
IGNoYXIqIGZsYWdzKSA6IG1fZGF0YShpZCkgeyAodm9pZClmbGFnczsgfQorICAgIGV4cGxpY2l0
IFRyYWNlSUQodW5zaWduZWQgaW50IGlkLCB1bnNpZ25lZCBjaGFyKiBmbGFncykgOiBtX2RhdGEo
aWQpIHsgKHZvaWQpZmxhZ3M7IH0KKyAgICBleHBsaWNpdCBUcmFjZUlEKHVuc2lnbmVkIHNob3J0
IGlkLCB1bnNpZ25lZCBjaGFyKiBmbGFncykgOiBtX2RhdGEoaWQpIHsgKHZvaWQpZmxhZ3M7IH0K
KyAgICBleHBsaWNpdCBUcmFjZUlEKHVuc2lnbmVkIGNoYXIgaWQsIHVuc2lnbmVkIGNoYXIqIGZs
YWdzKSA6IG1fZGF0YShpZCkgeyAodm9pZClmbGFnczsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQo
bG9uZyBsb25nIGlkLCB1bnNpZ25lZCBjaGFyKiBmbGFncykgOgorICAgICAgICBtX2RhdGEoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihpZCkpIHsgKHZvaWQpZmxhZ3M7IH0KKyAgICBl
eHBsaWNpdCBUcmFjZUlEKGxvbmcgaWQsIHVuc2lnbmVkIGNoYXIqIGZsYWdzKSA6CisgICAgICAg
IG1fZGF0YShzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGlkKSkgeyAodm9pZClmbGFn
czsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQoaW50IGlkLCB1bnNpZ25lZCBjaGFyKiBmbGFncykg
OgorICAgICAgICBtX2RhdGEoc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihpZCkpIHsg
KHZvaWQpZmxhZ3M7IH0KKyAgICBleHBsaWNpdCBUcmFjZUlEKHNob3J0IGlkLCB1bnNpZ25lZCBj
aGFyKiBmbGFncykgOgorICAgICAgICBtX2RhdGEoc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBs
b25nPihpZCkpIHsgKHZvaWQpZmxhZ3M7IH0KKyAgICBleHBsaWNpdCBUcmFjZUlEKHNpZ25lZCBj
aGFyIGlkLCB1bnNpZ25lZCBjaGFyKiBmbGFncykgOgorICAgICAgICBtX2RhdGEoc3RhdGljX2Nh
c3Q8dW5zaWduZWQgbG9uZyBsb25nPihpZCkpIHsgKHZvaWQpZmxhZ3M7IH0KKworICAgIHVuc2ln
bmVkIGxvbmcgbG9uZyBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisKK3ByaXZhdGU6
CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG1fZGF0YTsKK307CisKKy8vIFNpbXBsZSB1bmlvbiB0
byBzdG9yZSB2YXJpb3VzIHR5cGVzIGFzIHVuc2lnbmVkIGxvbmcgbG9uZy4KK3VuaW9uIFRyYWNl
VmFsdWVVbmlvbiB7CisgICAgYm9vbCBtX2Jvb2w7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG1f
dWludDsKKyAgICBsb25nIGxvbmcgbV9pbnQ7CisgICAgZG91YmxlIG1fZG91YmxlOworICAgIGNv
bnN0IHZvaWQqIG1fcG9pbnRlcjsKKyAgICBjb25zdCBjaGFyKiBtX3N0cmluZzsKK307CisKKy8v
IFNpbXBsZSBjb250YWluZXIgZm9yIGNvbnN0IGNoYXIqIHRoYXQgc2hvdWxkIGJlIGNvcGllZCBp
bnN0ZWFkIG9mIHJldGFpbmVkLgorY2xhc3MgVHJhY2VTdHJpbmdXaXRoQ29weSB7CitwdWJsaWM6
CisgICAgZXhwbGljaXQgVHJhY2VTdHJpbmdXaXRoQ29weShjb25zdCBjaGFyKiBzdHIpIDogbV9z
dHIoc3RyKSB7IH0KKyAgICBvcGVyYXRvciBjb25zdCBjaGFyKiAoKSBjb25zdCB7IHJldHVybiBt
X3N0cjsgfQorcHJpdmF0ZToKKyAgICBjb25zdCBjaGFyKiBtX3N0cjsKK307CisKKy8vIERlZmlu
ZSBzZXRUcmFjZVZhbHVlIGZvciBlYWNoIGFsbG93ZWQgdHlwZS4gSXQgc3RvcmVzIHRoZSB0eXBl
IGFuZAorLy8gdmFsdWUgaW4gdGhlIHJldHVybiBhcmd1bWVudHMuIFRoaXMgYWxsb3dzIHRoaXMg
QVBJIHRvIGF2b2lkIGRlY2xhcmluZyBhbnkKKy8vIHN0cnVjdHVyZXMgc28gdGhhdCBpdCBpcyBw
b3J0YWJsZSB0byB0aGlyZF9wYXJ0eSBsaWJyYXJpZXMuCisjZGVmaW5lIElOVEVSTkFMX0RFQ0xB
UkVfU0VUX1RSQUNFX1ZBTFVFKGFjdHVhbF90eXBlLCBcCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuaW9uX21lbWJlciwgXAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlX2lkKSBcCisgICAgc3RhdGljIGlubGluZSB2
b2lkIHNldFRyYWNlVmFsdWUoYWN0dWFsX3R5cGUgYXJnLCBcCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciogdHlwZSwgXAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyogdmFsdWUpIHsgXAorICAg
ICAgICBUcmFjZVZhbHVlVW5pb24gdHlwZVZhbHVlOyBcCisgICAgICAgIHR5cGVWYWx1ZS51bmlv
bl9tZW1iZXIgPSBhcmc7IFwKKyAgICAgICAgKnR5cGUgPSB2YWx1ZV90eXBlX2lkOyBcCisgICAg
ICAgICp2YWx1ZSA9IHR5cGVWYWx1ZS5tX3VpbnQ7IFwKKyAgICB9CisvLyBTaW1wbGVyIGZvcm0g
Zm9yIGludCB0eXBlcyB0aGF0IGNhbiBiZSBzYWZlbHkgY2FzdGVkLgorI2RlZmluZSBJTlRFUk5B
TF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9JTlQoYWN0dWFsX3R5cGUsIFwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGVfaWQpIFwKKyAgICBz
dGF0aWMgaW5saW5lIHZvaWQgc2V0VHJhY2VWYWx1ZShhY3R1YWxfdHlwZSBhcmcsIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiB0eXBlLCBcCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nKiB2
YWx1ZSkgeyBcCisgICAgICAgICp0eXBlID0gdmFsdWVfdHlwZV9pZDsgXAorICAgICAgICAqdmFs
dWUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGFyZyk7IFwKKyAgICB9CisKK0lO
VEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVCh1bnNpZ25lZCBsb25nIGxvbmcsIFRS
QUNFX1ZBTFVFX1RZUEVfVUlOVCkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lO
VCh1bnNpZ25lZCBpbnQsIFRSQUNFX1ZBTFVFX1RZUEVfVUlOVCkKK0lOVEVSTkFMX0RFQ0xBUkVf
U0VUX1RSQUNFX1ZBTFVFX0lOVCh1bnNpZ25lZCBzaG9ydCwgVFJBQ0VfVkFMVUVfVFlQRV9VSU5U
KQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5UKHVuc2lnbmVkIGNoYXIsIFRS
QUNFX1ZBTFVFX1RZUEVfVUlOVCkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lO
VChsb25nIGxvbmcsIFRSQUNFX1ZBTFVFX1RZUEVfSU5UKQorSU5URVJOQUxfREVDTEFSRV9TRVRf
VFJBQ0VfVkFMVUVfSU5UKGludCwgVFJBQ0VfVkFMVUVfVFlQRV9JTlQpCitJTlRFUk5BTF9ERUNM
QVJFX1NFVF9UUkFDRV9WQUxVRV9JTlQoc2hvcnQsIFRSQUNFX1ZBTFVFX1RZUEVfSU5UKQorSU5U
RVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5UKHNpZ25lZCBjaGFyLCBUUkFDRV9WQUxV
RV9UWVBFX0lOVCkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFKGJvb2wsIG1fYm9v
bCwgVFJBQ0VfVkFMVUVfVFlQRV9CT09MKQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFM
VUUoZG91YmxlLCBtX2RvdWJsZSwgVFJBQ0VfVkFMVUVfVFlQRV9ET1VCTEUpCitJTlRFUk5BTF9E
RUNMQVJFX1NFVF9UUkFDRV9WQUxVRShjb25zdCB2b2lkKiwgbV9wb2ludGVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVFJBQ0VfVkFMVUVfVFlQRV9QT0lOVEVSKQorSU5URVJO
QUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUUoY29uc3QgY2hhciosIG1fc3RyaW5nLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJBQ0VfVkFMVUVfVFlQRV9TVFJJTkcpCitJTlRF
Uk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRShjb25zdCBUcmFjZVN0cmluZ1dpdGhDb3B5Jiwg
bV9zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUkFDRV9WQUxVRV9U
WVBFX0NPUFlfU1RSSU5HKQorCisjdW5kZWYgSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFM
VUUKKyN1bmRlZiBJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9JTlQKKworc3RhdGlj
IGlubGluZSB2b2lkIHNldFRyYWNlVmFsdWUoY29uc3Qgc3RkOjpzdHJpbmcmIGFyZywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIHR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcqIHZhbHVlKSB7Cisg
ICAgVHJhY2VWYWx1ZVVuaW9uIHR5cGVWYWx1ZTsKKyAgICB0eXBlVmFsdWUubV9zdHJpbmcgPSBh
cmcuZGF0YSgpOworICAgICp0eXBlID0gVFJBQ0VfVkFMVUVfVFlQRV9DT1BZX1NUUklORzsKKyAg
ICAqdmFsdWUgPSB0eXBlVmFsdWUubV91aW50OworfQorCisvLyBUaGVzZSBhZGRUcmFjZUV2ZW50
IHRlbXBsYXRlIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZCBoZXJlIGluc3RlYWQgb2YgaW4gdGhlCisv
LyBtYWNybywgYmVjYXVzZSB0aGUgYXJnIHZhbHVlcyBjb3VsZCBiZSB0ZW1wb3Jhcnkgc3RyaW5n
IG9iamVjdHMuIEluIG9yZGVyIHRvCisvLyBzdG9yZSBwb2ludGVycyB0byB0aGUgaW50ZXJuYWwg
Y19zdHIgYW5kIHBhc3MgdGhyb3VnaCB0byB0aGUgdHJhY2luZyBBUEksIHRoZQorLy8gYXJnIHZh
bHVlcyBtdXN0IGxpdmUgdGhyb3VnaG91dCB0aGVzZSBwcm9jZWR1cmVzLgorCitzdGF0aWMgaW5s
aW5lIHZvaWQgYWRkVHJhY2VFdmVudChjaGFyIHBoYXNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBmbGFncykgeworICAgIFRSQUNFX0VWRU5U
X0FQSV9BRERfVFJBQ0VfRVZFTlQoCisgICAgICAgIHBoYXNlLCBjYXRlZ29yeUVuYWJsZWQsIG5h
bWUsIGlkLAorICAgICAgICB6ZXJvTnVtQXJncywgMCwgMCwgMCwKKyAgICAgICAgZmxhZ3MpOwor
fQorCit0ZW1wbGF0ZTxjbGFzcyBBUkcxX1RZUEU+CitzdGF0aWMgaW5saW5lIHZvaWQgYWRkVHJh
Y2VFdmVudChjaGFyIHBoYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogYXJnMU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEFSRzFfVFlQRSYgYXJnMVZhbCkgeworICAgIGNvbnN0IGludCBudW1BcmdzID0gMTsKKyAg
ICB1bnNpZ25lZCBjaGFyIGFyZ1R5cGVzWzFdOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBhcmdW
YWx1ZXNbMV07CisgICAgc2V0VHJhY2VWYWx1ZShhcmcxVmFsLCAmYXJnVHlwZXNbMF0sICZhcmdW
YWx1ZXNbMF0pOworICAgIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQoCisgICAgICAg
IHBoYXNlLCBjYXRlZ29yeUVuYWJsZWQsIG5hbWUsIGlkLAorICAgICAgICBudW1BcmdzLCAmYXJn
MU5hbWUsIGFyZ1R5cGVzLCBhcmdWYWx1ZXMsCisgICAgICAgIGZsYWdzKTsKK30KKwordGVtcGxh
dGU8Y2xhc3MgQVJHMV9UWVBFLCBjbGFzcyBBUkcyX1RZUEU+CitzdGF0aWMgaW5saW5lIHZvaWQg
YWRkVHJhY2VFdmVudChjaGFyIHBoYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgY2hhciBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogYXJnMU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEFSRzFfVFlQRSYgYXJnMVZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogYXJnMk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEFSRzJfVFlQRSYgYXJnMlZhbCkgeworICAgIGNvbnN0IGludCBudW1BcmdzID0g
MjsKKyAgICBjb25zdCBjaGFyKiBhcmdOYW1lc1syXSA9IHsgYXJnMU5hbWUsIGFyZzJOYW1lIH07
CisgICAgdW5zaWduZWQgY2hhciBhcmdUeXBlc1syXTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcg
YXJnVmFsdWVzWzJdOworICAgIHNldFRyYWNlVmFsdWUoYXJnMVZhbCwgJmFyZ1R5cGVzWzBdLCAm
YXJnVmFsdWVzWzBdKTsKKyAgICBzZXRUcmFjZVZhbHVlKGFyZzJWYWwsICZhcmdUeXBlc1sxXSwg
JmFyZ1ZhbHVlc1sxXSk7CisgICAgcmV0dXJuIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZF
TlQoCisgICAgICAgIHBoYXNlLCBjYXRlZ29yeUVuYWJsZWQsIG5hbWUsIGlkLAorICAgICAgICBu
dW1BcmdzLCBhcmdOYW1lcywgYXJnVHlwZXMsIGFyZ1ZhbHVlcywKKyAgICAgICAgZmxhZ3MpOwor
fQorCisvLyBVc2VkIGJ5IFRSQUNFX0VWRU5UeCBtYWNyby4gRG8gbm90IHVzZSBkaXJlY3RseS4K
K2NsYXNzIFRyYWNlRW5kT25TY29wZUNsb3NlIHsKK3B1YmxpYzoKKyAgICAvLyBOb3RlOiBtZW1i
ZXJzIG9mIG1fZGF0YSBpbnRlbnRpb25hbGx5IGxlZnQgdW5pbml0aWFsaXplZC4gU2VlIGluaXRp
YWxpemUuCisgICAgVHJhY2VFbmRPblNjb3BlQ2xvc2UoKSA6IG1fcGRhdGEoMCkgeyB9CisgICAg
flRyYWNlRW5kT25TY29wZUNsb3NlKCkKKyAgICB7CisgICAgICAgIGlmIChtX3BkYXRhKQorICAg
ICAgICAgICAgYWRkRXZlbnRJZkVuYWJsZWQoKTsKKyAgICB9CisKKyAgICB2b2lkIGluaXRpYWxp
emUoY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkLAorICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBuYW1lKQorICAgIHsKKyAgICAgICAgbV9kYXRhLmNhdGVnb3J5RW5h
YmxlZCA9IGNhdGVnb3J5RW5hYmxlZDsKKyAgICAgICAgbV9kYXRhLm5hbWUgPSBuYW1lOworICAg
ICAgICBtX3BkYXRhID0gJm1fZGF0YTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgLy8gQWRkIHRo
ZSBlbmQgZXZlbnQgaWYgdGhlIGNhdGVnb3J5IGlzIHN0aWxsIGVuYWJsZWQuCisgICAgdm9pZCBh
ZGRFdmVudElmRW5hYmxlZCgpCisgICAgeworICAgICAgICAvLyBPbmx5IGNhbGxlZCB3aGVuIG1f
cGRhdGEgaXMgbm9uLW51bGwuCisgICAgICAgIGlmICgqbV9wZGF0YS0+Y2F0ZWdvcnlFbmFibGVk
KSB7CisgICAgICAgICAgICBUUkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5UKAorICAgICAg
ICAgICAgICAgIFRSQUNFX0VWRU5UX1BIQVNFX0VORCwKKyAgICAgICAgICAgICAgICBtX3BkYXRh
LT5jYXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAgICAgICAgbV9wZGF0YS0+bmFtZSwgbm9FdmVu
dElkLAorICAgICAgICAgICAgICAgIHplcm9OdW1BcmdzLCAwLCAwLCAwLAorICAgICAgICAgICAg
ICAgIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBU
aGlzIERhdGEgc3RydWN0IHdvcmthcm91bmQgaXMgdG8gYXZvaWQgaW5pdGlhbGl6aW5nIGFsbCB0
aGUgbWVtYmVycworICAgIC8vIGluIERhdGEgZHVyaW5nIGNvbnN0cnVjdGlvbiBvZiB0aGlzIG9i
amVjdCwgc2luY2UgdGhpcyBvYmplY3QgaXMgYWx3YXlzCisgICAgLy8gY29uc3RydWN0ZWQsIGV2
ZW4gd2hlbiB0cmFjaW5nIGlzIGRpc2FibGVkLiBJZiB0aGUgbWVtYmVycyBvZiBEYXRhIHdlcmUK
KyAgICAvLyBtZW1iZXJzIG9mIHRoaXMgY2xhc3MgaW5zdGVhZCwgY29tcGlsZXIgd2FybmluZ3Mg
b2NjdXIgYWJvdXQgcG90ZW50aWFsCisgICAgLy8gdW5pbml0aWFsaXplZCBhY2Nlc3Nlcy4KKyAg
ICBzdHJ1Y3QgRGF0YSB7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5RW5h
YmxlZDsKKyAgICAgICAgY29uc3QgY2hhciogbmFtZTsKKyAgICB9OworICAgIERhdGEqIG1fcGRh
dGE7CisgICAgRGF0YSBtX2RhdGE7Cit9OworCisvLyBUcmFjZUV2ZW50U2FtcGxpbmdTdGF0ZVNj
b3BlIHJlY29yZHMgdGhlIGN1cnJlbnQgc2FtcGxpbmcgc3RhdGUKKy8vIGFuZCBzZXRzIGEgbmV3
IHNhbXBsaW5nIHN0YXRlLiBXaGVuIHRoZSBzY29wZSBleGlzdHMsIGl0IHJlc3RvcmVzCisvLyB0
aGUgc2FtcGxpbmcgc3RhdGUgaGF2aW5nIHJlY29yZGVkLgordGVtcGxhdGU8c2l6ZV90IEJ1Y2tl
dE51bWJlcj4KK2NsYXNzIFNhbXBsaW5nU3RhdGVTY29wZSB7CitwdWJsaWM6CisgICAgU2FtcGxp
bmdTdGF0ZVNjb3BlKGNvbnN0IGNoYXIqIGNhdGVnb3J5QW5kTmFtZSkKKyAgICB7CisgICAgICAg
IG1fcHJldmlvdXNTdGF0ZSA9IFNhbXBsaW5nU3RhdGVTY29wZTxCdWNrZXROdW1iZXI+OjpjdXJy
ZW50KCk7CisgICAgICAgIFNhbXBsaW5nU3RhdGVTY29wZTxCdWNrZXROdW1iZXI+OjpzZXQoY2F0
ZWdvcnlBbmROYW1lKTsKKyAgICB9CisKKyAgICB+U2FtcGxpbmdTdGF0ZVNjb3BlKCkKKyAgICB7
CisgICAgICAgIFNhbXBsaW5nU3RhdGVTY29wZTxCdWNrZXROdW1iZXI+OjpzZXQobV9wcmV2aW91
c1N0YXRlKTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogTWFrZSBsb2FkL3N0b3JlIHRvIHRyYWNl
U2FtcGxpbmdTdGF0ZVtdIHRocmVhZC1zYWZlIGFuZCBhdG9taWMuCisgICAgc3RhdGljIGlubGlu
ZSBjb25zdCBjaGFyKiBjdXJyZW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPigqZ2w6OnRyYWNlU2FtcGxpbmdTdGF0ZVtCdWNrZXROdW1iZXJd
KTsKKyAgICB9CisgICAgc3RhdGljIGlubGluZSB2b2lkIHNldChjb25zdCBjaGFyKiBjYXRlZ29y
eUFuZE5hbWUpCisgICAgeworICAgICAgICAqZ2w6OnRyYWNlU2FtcGxpbmdTdGF0ZVtCdWNrZXRO
dW1iZXJdID0gcmVpbnRlcnByZXRfY2FzdDxsb25nPihjb25zdF9jYXN0PGNoYXIqPihjYXRlZ29y
eUFuZE5hbWUpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgY29uc3QgY2hhciogbV9wcmV2aW91
c1N0YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgVHJhY2VFdmVudAorCit9IC8vIG5hbWVzcGFj
ZSBnbAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEz
LTExLTE5ICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CisKKyAgICAgICAgVXBk
YXRlIEFOR0xFIHNvdXJjZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjQ2MTUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGVzdHMgY292ZXJlZCBieSBLaHJvbm9zIFdlYkdMIGNvbmZvcm1hbmNlIHRl
c3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3Bw
OiBSZXNvbHZlIGEgYnVpbGQgZXJyb3IgdGhhdCByZXN1bHRlZCBmcm9tIHVwZGF0aW5nIEFOR0xF
LgorICAgICAgICAoV2ViQ29yZTo6Z2V0U3ltYm9sSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpB
TkdMRVdlYktpdEJyaWRnZTo6Y29tcGlsZVNoYWRlclNvdXJjZSk6CisKIDIwMTMtMTEtMTkgIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgV2F0Y2hwb2lu
dFNldDo6bm90aWZ5V3JpdGUoKSBzaG91bGQgYmUgcmVuYW1lZCB0byBXYXRjaHBvaW50U2V0Ojpm
aXJlQWxsKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2Vi
S2l0QnJpZGdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODAsMTQgKzgwLDE2IEBAIHN0YXRpYyBib29sIGdldFN5bWJvbEluZm8oU2hIYW5k
bGUgY29tcGkKICAgICBmb3IgKEFOR0xFR2V0SW5mb1R5cGUgaSA9IDA7IGkgPCBudW1TeW1ib2xz
OyArK2kpIHsKICAgICAgICAgQU5HTEVTaGFkZXJTeW1ib2wgc3ltYm9sOwogICAgICAgICBBTkdM
RUdldEluZm9UeXBlIG5hbWVMZW5ndGggPSAwOworICAgICAgICBTaFByZWNpc2lvblR5cGUgcHJl
Y2lzaW9uOworICAgICAgICBpbnQgc3RhdGljVXNlOwogICAgICAgICBzd2l0Y2ggKHN5bWJvbFR5
cGUpIHsKICAgICAgICAgY2FzZSBTSF9BQ1RJVkVfQVRUUklCVVRFUzoKICAgICAgICAgICAgIHN5
bWJvbC5zeW1ib2xUeXBlID0gU0hBREVSX1NZTUJPTF9UWVBFX0FUVFJJQlVURTsKLSAgICAgICAg
ICAgIFNoR2V0QWN0aXZlQXR0cmliKGNvbXBpbGVyLCBpLCAmbmFtZUxlbmd0aCwgJnN5bWJvbC5z
aXplLCAmc3ltYm9sLmRhdGFUeXBlLCBuYW1lQnVmZmVyLmRhdGEoKSwgbWFwcGVkTmFtZUJ1ZmZl
ci5kYXRhKCkpOworICAgICAgICAgICAgU2hHZXRWYXJpYWJsZUluZm8oY29tcGlsZXIsIHN5bWJv
bFR5cGUsIGksICZuYW1lTGVuZ3RoLCAmc3ltYm9sLnNpemUsICZzeW1ib2wuZGF0YVR5cGUsICZw
cmVjaXNpb24sICZzdGF0aWNVc2UsIG5hbWVCdWZmZXIuZGF0YSgpLCBtYXBwZWROYW1lQnVmZmVy
LmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTSF9BQ1RJVkVfVU5J
Rk9STVM6CiAgICAgICAgICAgICBzeW1ib2wuc3ltYm9sVHlwZSA9IFNIQURFUl9TWU1CT0xfVFlQ
RV9VTklGT1JNOwotICAgICAgICAgICAgU2hHZXRBY3RpdmVVbmlmb3JtKGNvbXBpbGVyLCBpLCAm
bmFtZUxlbmd0aCwgJnN5bWJvbC5zaXplLCAmc3ltYm9sLmRhdGFUeXBlLCBuYW1lQnVmZmVyLmRh
dGEoKSwgbWFwcGVkTmFtZUJ1ZmZlci5kYXRhKCkpOworICAgICAgICAgICAgU2hHZXRWYXJpYWJs
ZUluZm8oY29tcGlsZXIsIHN5bWJvbFR5cGUsIGksICZuYW1lTGVuZ3RoLCAmc3ltYm9sLnNpemUs
ICZzeW1ib2wuZGF0YVR5cGUsICZwcmVjaXNpb24sICZzdGF0aWNVc2UsIG5hbWVCdWZmZXIuZGF0
YSgpLCBtYXBwZWROYW1lQnVmZmVyLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTkxLDcg
KzE5Myw3IEBAIGJvb2wgQU5HTEVXZWJLaXRCcmlkZ2U6OmNvbXBpbGVTaGFkZXJTb3UKIAogICAg
IGNvbnN0IGNoYXIqIGNvbnN0IHNoYWRlclNvdXJjZVN0cmluZ3NbXSA9IHsgc2hhZGVyU291cmNl
IH07CiAKLSAgICBib29sIHZhbGlkYXRlU3VjY2VzcyA9IFNoQ29tcGlsZShjb21waWxlciwgc2hh
ZGVyU291cmNlU3RyaW5ncywgMSwgU0hfT0JKRUNUX0NPREUgfCBTSF9BVFRSSUJVVEVTX1VOSUZP
Uk1TIHwgZXh0cmFDb21waWxlT3B0aW9ucyk7CisgICAgYm9vbCB2YWxpZGF0ZVN1Y2Nlc3MgPSBT
aENvbXBpbGUoY29tcGlsZXIsIHNoYWRlclNvdXJjZVN0cmluZ3MsIDEsIFNIX09CSkVDVF9DT0RF
IHwgU0hfVkFSSUFCTEVTIHwgZXh0cmFDb21waWxlT3B0aW9ucyk7CiAgICAgaWYgKCF2YWxpZGF0
ZVN1Y2Nlc3MpIHsKICAgICAgICAgaW50IGxvZ1NpemUgPSBnZXRWYWxpZGF0aW9uUmVzdWx0VmFs
dWUoY29tcGlsZXIsIFNIX0lORk9fTE9HX0xFTkdUSCk7CiAgICAgICAgIGlmIChsb2dTaXplID4g
MSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217364</attachid>
            <date>2013-11-19 17:15:31 -0800</date>
            <delta_ts>2013-11-19 17:30:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124615-20131119171531.patch</filename>
            <type>text/plain</type>
            <size>899959</size>
            <attacher name="Roger Fong">roger_fong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1OTUzMikKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDQ4NiBAQAorMjAxMy0xMS0xOSAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgor
CisgICAgICAgIFVwZGF0ZSBBTkdMRSBzb3VyY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjE1LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBBTkdMRSB0byBjaGVja291dCBhNjBlMDgw
NTcyMWY2MmMyOGE1NWZhZjJkZjc0NDcyY2M1ZmM5MWZjLgorICAgICAgICBNb2RpZnkgeGNvZGVw
cm9qIGZpbGVzIGFzIG5lY2Vzc2FyeSwgdXBkYXRlIHBsaXN0LgorICAgICAgICBTdG9wIHVzaW5n
IERlcml2ZWRTb3VyY2VzLm1ha2UgYW5kIGp1c3QgdXNlIHRoZSBnZW5lcmF0ZWQgc291cmNlcyB0
aGF0IGFyZSBjaGVja2VkIGludG8gQU5HTEUuCisKKyAgICAgICAgKiBBTkdMRS5wbGlzdDoKKyAg
ICAgICAgKiBBTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIERlcml2
ZWRTb3VyY2VzLm1ha2U6IFJlbW92ZWQuCisgICAgICAgICogaW5jbHVkZS9FR0wvZWdsLmg6Cisg
ICAgICAgICogaW5jbHVkZS9FR0wvZWdsc29mdGxpbmtpbmcuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBpbmNsdWRlL0dMRVMyL2dsMi5oOgorICAgICAgICAqIGluY2x1ZGUvR0xFUzIvZ2wyc29mdGxp
bmtpbmcuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5o
OgorICAgICAgICAqIGluY2x1ZGUvS0hSL2tocnBsYXRmb3JtLmg6CisgICAgICAgICogc3JjL0FO
R0xFLnNsbjogQWRkZWQuCisgICAgICAgICogc3JjL2J1aWxkX2FuZ2xlLmd5cGk6CisgICAgICAg
ICogc3JjL2NvbW1vbi9kZWJ1Zy5oOgorICAgICAgICAqIHNyYy9jb21tb24vZXZlbnRfdHJhY2Vy
LmNwcDogQWRkZWQuCisgICAgICAgIChnbDo6VHJhY2VHZXRUcmFjZUNhdGVnb3J5RW5hYmxlZEZs
YWcpOgorICAgICAgICAoZ2w6OlRyYWNlQWRkVHJhY2VFdmVudCk6CisgICAgICAgICogc3JjL2Nv
bW1vbi9ldmVudF90cmFjZXIuaDogQWRkZWQuCisgICAgICAgICogc3JjL2NvbW1vbi92ZXJzaW9u
Lmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0NvZGVHZW4uY3BwOiBBZGRlZC4KKyAgICAgICAg
KENvbnN0cnVjdENvbXBpbGVyKToKKyAgICAgICAgKERlbGV0ZUNvbXBpbGVyKToKKyAgICAgICAg
KiBzcmMvY29tcGlsZXIvQ29kZUdlbkdMU0wuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9j
b21waWxlci9Db2RlR2VuSExTTC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3JjL2NvbXBpbGVy
L0NvbW1vbi5oOgorICAgICAgICAoTmV3UG9vbFRTdHJpbmcpOgorICAgICAgICAqIHNyYy9jb21w
aWxlci9Db21waWxlci5jcHA6CisgICAgICAgIChUQ29tcGlsZXI6OkluaXQpOgorICAgICAgICAo
VENvbXBpbGVyOjpjb21waWxlKToKKyAgICAgICAgKFRDb21waWxlcjo6SW5pdEJ1aWx0SW5TeW1i
b2xUYWJsZSk6CisgICAgICAgIChUQ29tcGlsZXI6OmNsZWFyUmVzdWx0cyk6CisgICAgICAgIChU
Q29tcGlsZXI6OmNvbGxlY3RWYXJpYWJsZXMpOgorICAgICAgICAqIHNyYy9jb21waWxlci9Db25z
dGFudFVuaW9uLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVpdHku
Y3BwOgorICAgICAgICAqIHNyYy9jb21waWxlci9JbmZvU2luay5oOgorICAgICAgICAqIHNyYy9j
b21waWxlci9Jbml0aWFsaXplRGxsLmNwcDoKKyAgICAgICAgKEluaXRQcm9jZXNzKToKKyAgICAg
ICAgKERldGFjaFByb2Nlc3MpOgorICAgICAgICAqIHNyYy9jb21waWxlci9Jbml0aWFsaXplRGxs
Lmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0luaXRpYWxpemVHTFBvc2l0aW9uLmNwcDogQWRk
ZWQuCisgICAgICAgIChJbml0aWFsaXplR0xQb3NpdGlvbjo6dmlzaXRBZ2dyZWdhdGUpOgorICAg
ICAgICAoSW5pdGlhbGl6ZUdMUG9zaXRpb246Omluc2VydENvZGUpOgorICAgICAgICAqIHNyYy9j
b21waWxlci9Jbml0aWFsaXplR0xQb3NpdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEluaXRpYWxp
emVHTFBvc2l0aW9uOjpJbml0aWFsaXplR0xQb3NpdGlvbik6CisgICAgICAgIChJbml0aWFsaXpl
R0xQb3NpdGlvbjo6dmlzaXRCaW5hcnkpOgorICAgICAgICAoSW5pdGlhbGl6ZUdMUG9zaXRpb246
OnZpc2l0VW5hcnkpOgorICAgICAgICAoSW5pdGlhbGl6ZUdMUG9zaXRpb246OnZpc2l0U2VsZWN0
aW9uKToKKyAgICAgICAgKEluaXRpYWxpemVHTFBvc2l0aW9uOjp2aXNpdExvb3ApOgorICAgICAg
ICAoSW5pdGlhbGl6ZUdMUG9zaXRpb246OnZpc2l0QnJhbmNoKToKKyAgICAgICAgKiBzcmMvY29t
cGlsZXIvSW5pdGlhbGl6ZUdsb2JhbHMuaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvSW5pdGlh
bGl6ZVBhcnNlQ29udGV4dC5jcHA6CisgICAgICAgIChJbml0aWFsaXplUGFyc2VDb250ZXh0SW5k
ZXgpOgorICAgICAgICAoRnJlZVBhcnNlQ29udGV4dEluZGV4KToKKyAgICAgICAgKFNldEdsb2Jh
bFBhcnNlQ29udGV4dCk6CisgICAgICAgIChHZXRHbG9iYWxQYXJzZUNvbnRleHQpOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9Jbml0aWFsaXplUGFyc2VDb250ZXh0Lmg6CisgICAgICAgICogc3Jj
L2NvbXBpbGVyL0ludGVybVRyYXZlcnNlLmNwcDoKKyAgICAgICAgKFRJbnRlcm1TeW1ib2w6OnRy
YXZlcnNlKToKKyAgICAgICAgKFRJbnRlcm1Db25zdGFudFVuaW9uOjp0cmF2ZXJzZSk6CisgICAg
ICAgIChUSW50ZXJtQmluYXJ5Ojp0cmF2ZXJzZSk6CisgICAgICAgIChUSW50ZXJtVW5hcnk6OnRy
YXZlcnNlKToKKyAgICAgICAgKFRJbnRlcm1BZ2dyZWdhdGU6OnRyYXZlcnNlKToKKyAgICAgICAg
KFRJbnRlcm1TZWxlY3Rpb246OnRyYXZlcnNlKToKKyAgICAgICAgKFRJbnRlcm1Mb29wOjp0cmF2
ZXJzZSk6CisgICAgICAgIChUSW50ZXJtQnJhbmNoOjp0cmF2ZXJzZSk6CisgICAgICAgICogc3Jj
L2NvbXBpbGVyL0ludGVybWVkaWF0ZS5jcHA6CisgICAgICAgIChHZXRIaWdoZXJQcmVjaXNpb24p
OgorICAgICAgICAoZ2V0T3BlcmF0b3JTdHJpbmcpOgorICAgICAgICAoVEludGVybUxvb3A6OnJl
cGxhY2VDaGlsZE5vZGUpOgorICAgICAgICAoVEludGVybUJyYW5jaDo6cmVwbGFjZUNoaWxkTm9k
ZSk6CisgICAgICAgIChUSW50ZXJtQmluYXJ5OjpyZXBsYWNlQ2hpbGROb2RlKToKKyAgICAgICAg
KFRJbnRlcm1VbmFyeTo6cmVwbGFjZUNoaWxkTm9kZSk6CisgICAgICAgIChUSW50ZXJtQWdncmVn
YXRlOjpyZXBsYWNlQ2hpbGROb2RlKToKKyAgICAgICAgKFRJbnRlcm1TZWxlY3Rpb246OnJlcGxh
Y2VDaGlsZE5vZGUpOgorICAgICAgICAoVEludGVybU9wZXJhdG9yOjppc0Fzc2lnbm1lbnQpOgor
ICAgICAgICAoVEludGVybWVkaWF0ZTo6cHJvbW90ZUNvbnN0YW50VW5pb24pOgorICAgICAgICAq
IHNyYy9jb21waWxlci9NYXBMb25nVmFyaWFibGVOYW1lcy5jcHA6CisgICAgICAgICogc3JjL2Nv
bXBpbGVyL01hcExvbmdWYXJpYWJsZU5hbWVzLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL05v
ZGVTZWFyY2guaDogQWRkZWQuCisgICAgICAgIChzaDo6Tm9kZVNlYXJjaFRyYXZlcnNlcjo6Tm9k
ZVNlYXJjaFRyYXZlcnNlcik6CisgICAgICAgIChzaDo6Tm9kZVNlYXJjaFRyYXZlcnNlcjo6Zm91
bmQpOgorICAgICAgICAoc2g6Ok5vZGVTZWFyY2hUcmF2ZXJzZXI6OnNlYXJjaCk6CisgICAgICAg
IChzaDo6RmluZERpc2NhcmQ6OnZpc2l0QnJhbmNoKToKKyAgICAgICAgKHNoOjpGaW5kU2lkZUVm
ZmVjdFJld3JpdGluZzo6dmlzaXRCaW5hcnkpOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRw
dXRHTFNMQmFzZS5jcHA6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6OnZpc2l0U2VsZWN0aW9u
KToKKyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRBZ2dyZWdhdGUpOgorICAgICAgICAo
VE91dHB1dEdMU0xCYXNlOjp2aXNpdExvb3ApOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRw
dXRHTFNMQmFzZS5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRITFNMLmNwcDoKKyAg
ICAgICAgKHNoOjpPdXRwdXRITFNMOjpPdXRwdXRITFNMKToKKyAgICAgICAgKHNoOjpPdXRwdXRI
TFNMOjpoZWFkZXIpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OnZpc2l0QmluYXJ5KToKKyAg
ICAgICAgKHNoOjpPdXRwdXRITFNMOjp2aXNpdFNlbGVjdGlvbik6CisgICAgICAgIChzaDo6T3V0
cHV0SExTTDo6dmlzaXRCcmFuY2gpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OmhhbmRsZUV4
Y2Vzc2l2ZUxvb3ApOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OmFkZENvbnN0cnVjdG9yKToK
KyAgICAgICAgKiBzcmMvY29tcGlsZXIvT3V0cHV0SExTTC5oOgorICAgICAgICAqIHNyYy9jb21w
aWxlci9QYXJzZUNvbnRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBh
cnNlVmVjdG9yRmllbGRzKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcnNlTWF0cml4Rmll
bGRzKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnJlY292ZXIpOgorICAgICAgICAoVFBhcnNl
Q29udGV4dDo6ZXJyb3IpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6d2FybmluZyk6CisgICAg
ICAgIChUUGFyc2VDb250ZXh0Ojp0cmFjZSk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojphc3Np
Z25FcnJvcik6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojp1bmFyeU9wRXJyb3IpOgorICAgICAg
ICAoVFBhcnNlQ29udGV4dDo6YmluYXJ5T3BFcnJvcik6CisgICAgICAgIChUUGFyc2VDb250ZXh0
OjpwcmVjaXNpb25FcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmxWYWx1ZUVy
cm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6Y29uc3RFcnJvckNoZWNrKToKKyAg
ICAgICAgKFRQYXJzZUNvbnRleHQ6OmludGVnZXJFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJz
ZUNvbnRleHQ6Omdsb2JhbEVycm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6cmVz
ZXJ2ZWRFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJy
b3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojp2b2lkRXJyb3JDaGVjayk6CisgICAg
ICAgIChUUGFyc2VDb250ZXh0Ojpib29sRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250
ZXh0OjpzYW1wbGVyRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpzdHJ1Y3RR
dWFsaWZpZXJFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcmFtZXRlclNh
bXBsZXJFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmNvbnRhaW5zU2FtcGxl
cik6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphcnJheVNpemVFcnJvckNoZWNrKToKKyAgICAg
ICAgKFRQYXJzZUNvbnRleHQ6OmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayk6CisgICAgICAgIChU
UGFyc2VDb250ZXh0OjphcnJheVR5cGVFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRl
eHQ6OmFycmF5RXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpub25Jbml0Q29u
c3RFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6Om5vbkluaXRFcnJvckNoZWNr
KToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcmFtRXJyb3JDaGVjayk6CisgICAgICAgIChU
UGFyc2VDb250ZXh0OjpleHRlbnNpb25FcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRl
eHQ6OnN1cHBvcnRzRXh0ZW5zaW9uKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmlzRXh0ZW5z
aW9uRW5hYmxlZCk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpmaW5kRnVuY3Rpb24pOgorICAg
ICAgICAoVFBhcnNlQ29udGV4dDo6ZXhlY3V0ZUluaXRpYWxpemVyKToKKyAgICAgICAgKFRQYXJz
ZUNvbnRleHQ6OmFyZUFsbENoaWxkQ29uc3QpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6YWRk
Q29uc3RydWN0b3IpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6Zm9sZENvbnN0Q29uc3RydWN0
b3IpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0QnVpbHRJbik6CisgICAgICAg
IChUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RTdHJ1Y3QpOgorICAgICAgICAoVFBhcnNlQ29udGV4
dDo6YWRkQ29uc3RWZWN0b3JOb2RlKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0
TWF0cml4Tm9kZSk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphZGRDb25zdEFycmF5Tm9kZSk6
CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphZGRDb25zdFN0cnVjdCk6CisgICAgICAgIChUUGFy
c2VDb250ZXh0OjplbnRlclN0cnVjdERlY2xhcmF0aW9uKToKKyAgICAgICAgKFRQYXJzZUNvbnRl
eHQ6OmV4aXRTdHJ1Y3REZWNsYXJhdGlvbik6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpzdHJ1
Y3ROZXN0aW5nRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphZGRJbmRleEV4
cHJlc3Npb24pOgorICAgICAgICAoUGFQYXJzZVN0cmluZ3MpOgorICAgICAgICAqIHNyYy9jb21w
aWxlci9QYXJzZUNvbnRleHQuaDogQWRkZWQuCisgICAgICAgIChUUGFyc2VDb250ZXh0OjpUUGFy
c2VDb250ZXh0KToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6Om51bUVycm9ycyk6CisgICAgICAg
IChUUGFyc2VDb250ZXh0OjppbmZvU2luayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpwcmFn
bWEpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6ZXh0ZW5zaW9uQmVoYXZpb3IpOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9QYXJzZUhlbHBlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3Jj
L2NvbXBpbGVyL1BhcnNlSGVscGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogc3JjL2NvbXBpbGVy
L1Bvb2xBbGxvYy5jcHA6CisgICAgICAgIChJbml0aWFsaXplUG9vbEluZGV4KToKKyAgICAgICAg
KEZyZWVQb29sSW5kZXgpOgorICAgICAgICAoR2V0R2xvYmFsUG9vbEFsbG9jYXRvcik6CisgICAg
ICAgIChTZXRHbG9iYWxQb29sQWxsb2NhdG9yKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvUG9v
bEFsbG9jLmg6CisgICAgICAgIChwb29sX2FsbG9jYXRvcjo6cG9vbF9hbGxvY2F0b3IpOgorICAg
ICAgICAqIHNyYy9jb21waWxlci9TZWFyY2hTeW1ib2wuaDoKKyAgICAgICAgKiBzcmMvY29tcGls
ZXIvU2hIYW5kbGUuaDoKKyAgICAgICAgKFRDb21waWxlcjo6Z2V0VmFyeWluZ3MpOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9TaGFkZXJMYW5nLmNwcDoKKyAgICAgICAgKGNoZWNrVmFyaWFibGVN
YXhMZW5ndGhzKToKKyAgICAgICAgKFNoSW5pdGlhbGl6ZSk6CisgICAgICAgIChTaEZpbmFsaXpl
KToKKyAgICAgICAgKFNoQ29uc3RydWN0Q29tcGlsZXIpOgorICAgICAgICAoU2hDb21waWxlKToK
KyAgICAgICAgKFNoR2V0SW5mbyk6CisgICAgICAgIChTaEdldFZhcmlhYmxlSW5mbyk6CisgICAg
ICAgIChTaENoZWNrVmFyaWFibGVzV2l0aGluUGFja2luZ0xpbWl0cyk6CisgICAgICAgICogc3Jj
L2NvbXBpbGVyL1N5bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKFRTeW1ib2xUYWJsZTo6flRTeW1i
b2xUYWJsZSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmg6CisgICAgICAg
IChUU3ltYm9sOjpUU3ltYm9sKToKKyAgICAgICAgKFRTeW1ib2xUYWJsZUxldmVsOjppbnNlcnQp
OgorICAgICAgICAoVFN5bWJvbFRhYmxlOjpwdXNoKToKKyAgICAgICAgKFRTeW1ib2xUYWJsZTo6
cG9wKToKKyAgICAgICAgKFRTeW1ib2xUYWJsZTo6ZmluZEJ1aWx0SW4pOgorICAgICAgICAoVFN5
bWJvbFRhYmxlOjpyZWxhdGVUb0V4dGVuc2lvbik6CisgICAgICAgIChUU3ltYm9sVGFibGU6OnNl
dERlZmF1bHRQcmVjaXNpb24pOgorICAgICAgICAoVFN5bWJvbFRhYmxlOjpnZXREZWZhdWx0UHJl
Y2lzaW9uKToKKyAgICAgICAgKFRTeW1ib2xUYWJsZTo6c3VwcG9ydHNQcmVjaXNpb24pOgorICAg
ICAgICAqIHNyYy9jb21waWxlci9UeXBlcy5oOgorICAgICAgICAoTmV3UG9vbFRGaWVsZExpc3Qp
OgorICAgICAgICAoVFR5cGU6OlRUeXBlKToKKyAgICAgICAgKFRUeXBlOjpzZXROb21pbmFsU2l6
ZSk6CisgICAgICAgIChUUHVibGljVHlwZTo6c2V0QWdncmVnYXRlKToKKyAgICAgICAgKiBzcmMv
Y29tcGlsZXIvVW5mb2xkU2hvcnRDaXJjdWl0LmNwcDoKKyAgICAgICAgKHNoOjpVbmZvbGRTaG9y
dENpcmN1aXQ6OnZpc2l0QmluYXJ5KToKKyAgICAgICAgKHNoOjpVbmZvbGRTaG9ydENpcmN1aXQ6
OnZpc2l0U2VsZWN0aW9uKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvVW5mb2xkU2hvcnRDaXJj
dWl0Lmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1VuZm9sZFNob3J0Q2lyY3VpdEFTVC5jcHA6
IEFkZGVkLgorICAgICAgICAoVW5mb2xkU2hvcnRDaXJjdWl0QVNUOjp2aXNpdEJpbmFyeSk6Cisg
ICAgICAgIChVbmZvbGRTaG9ydENpcmN1aXRBU1Q6OnVwZGF0ZVRyZWUpOgorICAgICAgICAqIHNy
Yy9jb21waWxlci9VbmZvbGRTaG9ydENpcmN1aXRBU1QuaDogQWRkZWQuCisgICAgICAgIChVbmZv
bGRTaG9ydENpcmN1aXRBU1Q6OlVuZm9sZFNob3J0Q2lyY3VpdEFTVCk6CisgICAgICAgIChVbmZv
bGRTaG9ydENpcmN1aXRBU1Q6Ok5vZGVVcGRhdGVFbnRyeTo6Tm9kZVVwZGF0ZUVudHJ5KToKKyAg
ICAgICAgKiBzcmMvY29tcGlsZXIvVW5pZm9ybS5jcHA6CisgICAgICAgIChzaDo6VW5pZm9ybTo6
VW5pZm9ybSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1VuaWZvcm0uaDoKKyAgICAgICAgKiBz
cmMvY29tcGlsZXIvVmFsaWRhdGVMaW1pdGF0aW9ucy5jcHA6CisgICAgICAgIChWYWxpZGF0ZUxp
bWl0YXRpb25zOjp2YWxpZGF0ZUZ1bmN0aW9uQ2FsbCk6CisgICAgICAgIChWYWxpZGF0ZUxpbWl0
YXRpb25zOjp2YWxpZGF0ZU9wZXJhdGlvbik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1Zhcmlh
YmxlSW5mby5jcHA6CisgICAgICAgIChUVmFyaWFibGVJbmZvOjpUVmFyaWFibGVJbmZvKToKKyAg
ICAgICAgKENvbGxlY3RWYXJpYWJsZXM6OkNvbGxlY3RWYXJpYWJsZXMpOgorICAgICAgICAoQ29s
bGVjdFZhcmlhYmxlczo6dmlzaXRTeW1ib2wpOgorICAgICAgICAoQ29sbGVjdFZhcmlhYmxlczo6
dmlzaXRBZ2dyZWdhdGUpOgorICAgICAgICAqIHNyYy9jb21waWxlci9WYXJpYWJsZUluZm8uaDoK
KyAgICAgICAgKiBzcmMvY29tcGlsZXIvZGVidWcuY3BwOgorICAgICAgICAqIHNyYy9jb21waWxl
ci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGguY3BwOgorICAgICAgICAqIHNyYy9jb21waWxlci9k
ZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcDoKKyAgICAgICAgKFREZXBlbmRlbmN5
R3JhcGhCdWlsZGVyOjp2aXNpdEJpbmFyeSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL2dlbmVy
YXRlX3BhcnNlci5zaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvZ2xzbGFuZy5sOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9nbHNsYW5nLnk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL2dsc2xh
bmdfbGV4LmNwcDoKKyAgICAgICAgKGlucHV0KToKKyAgICAgICAgKHl5ZXJyb3IpOgorICAgICAg
ICAoaW50X2NvbnN0YW50KToKKyAgICAgICAgKGZsb2F0X2NvbnN0YW50KToKKyAgICAgICAgKGds
c2xhbmdfc2Nhbik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmNwcDoKKyAg
ICAgICAgKHl5c3ludGF4X2Vycm9yKToKKyAgICAgICAgKGdsc2xhbmdfcGFyc2UpOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9nbHNsYW5nX3RhYi5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9p
bnRlcm1lZGlhdGUuaDoKKyAgICAgICAgKFRJbnRlcm1TeW1ib2w6Omhhc1NpZGVFZmZlY3RzKToK
KyAgICAgICAgKFRJbnRlcm1TeW1ib2w6OnJlcGxhY2VDaGlsZE5vZGUpOgorICAgICAgICAoVElu
dGVybUNvbnN0YW50VW5pb246Omhhc1NpZGVFZmZlY3RzKToKKyAgICAgICAgKFRJbnRlcm1Db25z
dGFudFVuaW9uOjpnZXRJQ29uc3QpOgorICAgICAgICAoVEludGVybUNvbnN0YW50VW5pb246Omdl
dEZDb25zdCk6CisgICAgICAgIChUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Z2V0QkNvbnN0KToKKyAg
ICAgICAgKFRJbnRlcm1Db25zdGFudFVuaW9uOjpyZXBsYWNlQ2hpbGROb2RlKToKKyAgICAgICAg
KFRJbnRlcm1PcGVyYXRvcjo6aGFzU2lkZUVmZmVjdHMpOgorICAgICAgICAoVEludGVybUJpbmFy
eTo6aGFzU2lkZUVmZmVjdHMpOgorICAgICAgICAoVEludGVybVVuYXJ5OjpoYXNTaWRlRWZmZWN0
cyk6CisgICAgICAgIChUSW50ZXJtQWdncmVnYXRlOjpoYXNTaWRlRWZmZWN0cyk6CisgICAgICAg
IChUSW50ZXJtU2VsZWN0aW9uOjpoYXNTaWRlRWZmZWN0cyk6CisgICAgICAgIChUSW50ZXJtVHJh
dmVyc2VyOjp+VEludGVybVRyYXZlcnNlcik6CisgICAgICAgIChUSW50ZXJtVHJhdmVyc2VyOjpp
bmNyZW1lbnREZXB0aCk6CisgICAgICAgIChUSW50ZXJtVHJhdmVyc2VyOjpkZWNyZW1lbnREZXB0
aCk6CisgICAgICAgIChUSW50ZXJtVHJhdmVyc2VyOjpnZXRQYXJlbnROb2RlKToKKyAgICAgICAg
KiBzcmMvY29tcGlsZXIvbG9jYWxpbnRlcm1lZGlhdGUuaDoKKyAgICAgICAgKiBzcmMvY29tcGls
ZXIvcGFyc2VDb25zdC5jcHA6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9F
eHByZXNzaW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKHl5X3N5bWJvbF9wcmludCk6CisgICAgICAg
ICh5eV9zdGFja19wcmludCk6CisgICAgICAgICh5eV9yZWR1Y2VfcHJpbnQpOgorICAgICAgICAo
eXlzdHJsZW4pOgorICAgICAgICAoeXlzdHBjcHkpOgorICAgICAgICAoeXl0bmFtZXJyKToKKyAg
ICAgICAgKHl5c3ludGF4X2Vycm9yKToKKyAgICAgICAgKHl5ZGVzdHJ1Y3QpOgorICAgICAgICAo
eXlwYXJzZSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9u
UGFyc2VyLnk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNz
b3IuY3BwOgorICAgICAgICAocHA6OlByZXByb2Nlc3Nvcjo6c2V0TWF4VG9rZW5MZW5ndGgpOgor
ICAgICAgICAocHA6OlByZXByb2Nlc3Nvcjo6bGV4KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIv
cHJlcHJvY2Vzc29yL1ByZXByb2Nlc3Nvci5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9wcmVw
cm9jZXNzb3IvVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKHBwOjpUb2tlbml6ZXI6OlRva2VuaXpl
cik6CisgICAgICAgIChwcDo6VG9rZW5pemVyOjpsZXgpOgorICAgICAgICAqIHNyYy9jb21waWxl
ci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmg6CisgICAgICAgIChwcDo6VG9rZW5pemVyOjpzZXRN
YXhUb2tlbkxlbmd0aCk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tl
bml6ZXIubDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL2dlbmVyYXRlX3Bh
cnNlci5zaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3ByZXByb2Nlc3Nv
ci52Y3hwcm9qOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3By
ZXByb2Nlc3Nvci52Y3hwcm9qLmZpbHRlcnM6IEFkZGVkLgorICAgICAgICAqIHNyYy9jb21waWxl
ci90aW1pbmcvUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZy5jcHA6CisgICAgICAgICogc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IudmN4cHJvajogQWRkZWQuCisgICAgICAgICogc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IudmN4cHJvai5maWx0ZXJzOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvY29t
cGlsZXIvdXRpbC5jcHA6CisgICAgICAgIChhdG9mX2NsYW1wKToKKyAgICAgICAgKGF0b2lfY2xh
bXApOgorICAgICAgICAqIHNyYy9jb21waWxlci91dGlsLmg6CisgICAgICAgICogc3JjL2xpYkVH
TC9TdXJmYWNlLmNwcDoKKyAgICAgICAgKGVnbDo6U3VyZmFjZTo6Y2hlY2tGb3JPdXRPZkRhdGVT
d2FwQ2hhaW4pOgorICAgICAgICAqIHNyYy9saWJFR0wvbGliRUdMLmNwcDoKKyAgICAgICAgKiBz
cmMvbGliRUdML2xpYkVHTC5yYzoKKyAgICAgICAgKiBzcmMvbGliRUdML2xpYkVHTC52Y3hwcm9q
OiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliRUdML2xpYkVHTC52Y3hwcm9qLmZpbHRlcnM6IEFk
ZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvQnVmZmVyLmNwcDoKKyAgICAgICAgKGdsOjpC
dWZmZXI6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoZ2w6OkJ1ZmZlcjo6YnVmZmVyU3ViRGF0YSk6
CisgICAgICAgIChnbDo6QnVmZmVyOjpzaXplKToKKyAgICAgICAgKGdsOjpCdWZmZXI6OmdldElu
ZGV4UmFuZ2VDYWNoZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9CdWZmZXIuaDoKKyAgICAg
ICAgKiBzcmMvbGliR0xFU3YyL0NvbnRleHQuY3BwOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmFw
cGx5VGV4dHVyZXMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldEJvdW5kRnJhbWVidWZmZXJU
ZXh0dXJlU2VyaWFscyk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9Db250ZXh0Lmg6CisgICAg
ICAgIChnbDo6Q29udGV4dDo6Z2V0UmVuZGVyZXIpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIv
RnJhbWVidWZmZXIuaDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuY3Bw
OgorICAgICAgICAoZ2w6OkRpc2NhcmRXb3JrYXJvdW5kKToKKyAgICAgICAgKGdsOjpQcm9ncmFt
QmluYXJ5Ojpsb2FkKToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpsaW5rKToKKyAgICAg
ICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpsaW5rQXR0cmlidXRlcyk6CisgICAgICAgIChnbDo6QXR0
cmlidXRlU29ydGVyOjpBdHRyaWJ1dGVTb3J0ZXIpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5h
cnk6OmluaXRBdHRyaWJ1dGVzQnlMYXlvdXQpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6
OnNvcnRBdHRyaWJ1dGVzQnlMYXlvdXQpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvUHJvZ3Jh
bUJpbmFyeS5oOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvUmVuZGVyYnVmZmVyLmNwcDoKKyAg
ICAgICAgKGdsOjpSZW5kZXJidWZmZXJUZXh0dXJlMkQ6OmdldFRleHR1cmVTZXJpYWwpOgorICAg
ICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwOjpnZXRUZXh0dXJlU2VyaWFsKToK
KyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXI6OmdldFRleHR1cmVTZXJpYWwpOgorICAgICAgICAq
IHNyYy9saWJHTEVTdjIvUmVuZGVyYnVmZmVyLmg6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVy
U3RvcmFnZTo6Z2V0VGV4dHVyZVNlcmlhbCk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9TaGFk
ZXIuY3BwOgorICAgICAgICAoZ2w6OlNoYWRlcjo6cGFyc2VWYXJ5aW5ncyk6CisgICAgICAgIChn
bDo6U2hhZGVyOjp1bmNvbXBpbGUpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvU2hhZGVyLmg6
CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9UZXh0dXJlLmNwcDoKKyAgICAgICAgKGdsOjpUZXh0
dXJlQ3ViZU1hcDo6c3RvcmFnZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9Vbmlmb3JtLmNw
cDoKKyAgICAgICAgKGdsOjpVbmlmb3JtOjpVbmlmb3JtKToKKyAgICAgICAgKGdsOjpVbmlmb3Jt
Ojp+VW5pZm9ybSk6CisgICAgICAgIChnbDo6VW5pZm9ybTo6aXNBcnJheSk6CisgICAgICAgIChn
bDo6VW5pZm9ybTo6ZWxlbWVudENvdW50KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL1VuaWZv
cm0uaDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL2NvbnN0YW50cy5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHNyYy9saWJHTEVTdjIvbGliR0xFU3YyLmRlZjoKKyAgICAgICAgKiBzcmMvbGliR0xF
U3YyL2xpYkdMRVN2Mi5yYzoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi52Y3hw
cm9qOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi52Y3hwcm9qLmZp
bHRlcnM6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcHJlY29tcGlsZWQuaDoKKyAg
ICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlMTEuY3BwOgorICAgICAgICAocng6
OkltYWdlMTE6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKHJ4OjpJbWFnZTExOjpsb2FkRGF0
YSk6CisgICAgICAgIChyeDo6SW1hZ2UxMTo6bG9hZENvbXByZXNzZWREYXRhKToKKyAgICAgICAg
KHJ4OjpJbWFnZTExOjpjb3B5KToKKyAgICAgICAgKHJ4OjpJbWFnZTExOjpjcmVhdGVTdGFnaW5n
VGV4dHVyZSk6CisgICAgICAgIChyeDo6SW1hZ2UxMTo6bWFwKToKKyAgICAgICAgKiBzcmMvbGli
R0xFU3YyL3JlbmRlcmVyL0ltYWdlMTEuaDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRl
cmVyL0luZGV4QnVmZmVyLmNwcDoKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlckludGVyZmFjZTo6
bWFwQnVmZmVyKToKKyAgICAgICAgKHJ4OjpTdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZTo6Z2V0
SW5kZXhSYW5nZUNhY2hlKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4
QnVmZmVyLmg6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlcjEx
LmNwcDoKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlcjExOjptYXBCdWZmZXIpOgorICAgICAgICAq
IHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhEYXRhTWFuYWdlci5jcHA6CisgICAgICAgIChy
eDo6SW5kZXhEYXRhTWFuYWdlcjo6cHJlcGFyZUluZGV4RGF0YSk6CisgICAgICAgIChyeDo6SW5k
ZXhEYXRhTWFuYWdlcjo6Z2V0Q291bnRpbmdJbmRpY2VzKToKKyAgICAgICAgKiBzcmMvbGliR0xF
U3YyL3JlbmRlcmVyL0luZGV4UmFuZ2VDYWNoZS5jcHA6IEFkZGVkLgorICAgICAgICAocng6Oklu
ZGV4UmFuZ2VDYWNoZTo6YWRkUmFuZ2UpOgorICAgICAgICAocng6OkluZGV4UmFuZ2VDYWNoZTo6
aW52YWxpZGF0ZVJhbmdlKToKKyAgICAgICAgKHJ4OjpJbmRleFJhbmdlQ2FjaGU6OmZpbmRSYW5n
ZSk6CisgICAgICAgIChyeDo6SW5kZXhSYW5nZUNhY2hlOjpjbGVhcik6CisgICAgICAgIChyeDo6
SW5kZXhSYW5nZUNhY2hlOjpJbmRleFJhbmdlOjpJbmRleFJhbmdlKToKKyAgICAgICAgKHJ4OjpJ
bmRleFJhbmdlQ2FjaGU6OkluZGV4UmFuZ2U6Om9wZXJhdG9yPCk6CisgICAgICAgIChyeDo6SW5k
ZXhSYW5nZUNhY2hlOjpJbmRleEJvdW5kczo6SW5kZXhCb3VuZHMpOgorICAgICAgICAqIHNyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhSYW5nZUNhY2hlLmg6IEFkZGVkLgorICAgICAgICAqIHNy
Yy9saWJHTEVTdjIvcmVuZGVyZXIvSW5wdXRMYXlvdXRDYWNoZS5jcHA6CisgICAgICAgIChyeDo6
SW5wdXRMYXlvdXRDYWNoZTo6SW5wdXRMYXlvdXRDYWNoZSk6CisgICAgICAgIChyeDo6SW5wdXRM
YXlvdXRDYWNoZTo6Y2xlYXIpOgorICAgICAgICAocng6OklucHV0TGF5b3V0Q2FjaGU6Om1hcmtE
aXJ0eSk6CisgICAgICAgIChyeDo6SW5wdXRMYXlvdXRDYWNoZTo6YXBwbHlWZXJ0ZXhCdWZmZXJz
KToKKyAgICAgICAgKHJ4OjpJbnB1dExheW91dENhY2hlOjpoYXNoSW5wdXRMYXlvdXQpOgorICAg
ICAgICAocng6OklucHV0TGF5b3V0Q2FjaGU6OmNvbXBhcmVJbnB1dExheW91dHMpOgorICAgICAg
ICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5wdXRMYXlvdXRDYWNoZS5oOgorICAgICAgICAo
cng6OklucHV0TGF5b3V0Q2FjaGU6OklucHV0TGF5b3V0S2V5OjpiZWdpbik6CisgICAgICAgIChy
eDo6SW5wdXRMYXlvdXRDYWNoZTo6SW5wdXRMYXlvdXRLZXk6OmVuZCk6CisgICAgICAgICogc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQxMS5jcHA6CisgICAgICAgIChyeDo6UmVu
ZGVyVGFyZ2V0MTE6OmdldFRleHR1cmUpOgorICAgICAgICAocng6OlJlbmRlclRhcmdldDExOjpn
ZXRSZW5kZXJUYXJnZXRWaWV3KToKKyAgICAgICAgKHJ4OjpSZW5kZXJUYXJnZXQxMTo6Z2V0RGVw
dGhTdGVuY2lsVmlldyk6CisgICAgICAgIChyeDo6UmVuZGVyVGFyZ2V0MTE6OmdldFNoYWRlclJl
c291cmNlVmlldyk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJn
ZXQxMS5oOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIuY3BwOgor
ICAgICAgICAocng6OlJlbmRlcmVyOjppbml0aWFsaXplQ29tcGlsZXIpOgorICAgICAgICAqIHNy
Yy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIuaDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL1JlbmRlcmVyMTEuY3BwOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmluaXRp
YWxpemUpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmFwcGx5UHJpbWl0aXZlVHlwZSk6Cisg
ICAgICAgIChyeDo6UmVuZGVyZXIxMTo6YXBwbHlSZW5kZXJUYXJnZXQpOgorICAgICAgICAocng6
OlJlbmRlcmVyMTE6OmRyYXdMaW5lTG9vcCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6ZHJh
d1RyaWFuZ2xlRmFuKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjphcHBseVVuaWZvcm1zKToK
KyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpjbGVhcik6CisgICAgICAgIChyeDo6UmVuZGVyZXIx
MTo6bWFya0FsbFN0YXRlRGlydHkpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmNvcHlJbWFn
ZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Y29tcGlsZVRvRXhlY3V0YWJsZSk6CisgICAg
ICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0UmVuZGVyVGFyZ2V0UmVzb3VyY2UpOgorICAgICAgICAo
cng6OlJlbmRlcmVyMTE6OmJsaXRSZW5kZXJidWZmZXJSZWN0KToKKyAgICAgICAgKiBzcmMvbGli
R0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyMTEuaDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1JlbmRlcmVyOS5jcHA6CisgICAgICAgIChyeDo6UmVuZGVyZXI5Ojppbml0aWFsaXpl
KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OnNldFZpZXdwb3J0KToKKyAgICAgICAgKHJ4OjpS
ZW5kZXJlcjk6OmRyYXdMaW5lTG9vcCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5Ojpjb21waWxl
VG9FeGVjdXRhYmxlKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVy
OS5oOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluLmg6CisgICAg
ICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW4xMS5jcHA6CisgICAgICAgIChy
eDo6U3dhcENoYWluMTE6OnJlc2V0T2Zmc2NyZWVuVGV4dHVyZSk6CisgICAgICAgIChyeDo6U3dh
cENoYWluMTE6OnJlc2V0KToKKyAgICAgICAgKHJ4OjpTd2FwQ2hhaW4xMTo6c3dhcFJlY3QpOgor
ICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluOS5jcHA6CisgICAgICAg
IChyeDo6Y29udmVydEludGVydmFsKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVy
L1RleHR1cmVTdG9yYWdlMTEuY3BwOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlMTE6Oklz
VGV4dHVyZUZvcm1hdFJlbmRlcmFibGUpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlMTE6
OmdlbmVyYXRlTWlwbWFwTGF5ZXIpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlMTFfQ3Vi
ZTo6Z2V0UmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1Zl
cnRleEJ1ZmZlci5jcHA6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVySW50ZXJmYWNlOjpzdG9y
ZVZlcnRleEF0dHJpYnV0ZXMpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlckludGVyZmFjZTo6
c3RvcmVSYXdEYXRhKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OnJlc2Vy
dmVWZXJ0ZXhTcGFjZSk6CisgICAgICAgIChyeDo6U3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNl
Ojpsb29rdXBBdHRyaWJ1dGUpOgorICAgICAgICAocng6OlN0YXRpY1ZlcnRleEJ1ZmZlckludGVy
ZmFjZTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1ZlcnRleEJ1ZmZlci5oOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIv
VmVydGV4QnVmZmVyMTEuY3BwOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjExOjpnZXRTcGFj
ZVJlcXVpcmVkKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZl
cjExLmg6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXI5LmNw
cDoKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXI5OjpzdG9yZVZlcnRleEF0dHJpYnV0ZXMpOgor
ICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjk6OmdldFNwYWNlUmVxdWlyZWQpOgorICAgICAgICAo
cng6OlZlcnRleEJ1ZmZlcjk6OnJlcXVpcmVzQ29udmVyc2lvbik6CisgICAgICAgIChyeDo6VmVy
dGV4QnVmZmVyOTo6Z2V0VmVydGV4U2l6ZSk6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyOTo6
c3BhY2VSZXF1aXJlZCk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhC
dWZmZXI5Lmg6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhEYXRhTWFu
YWdlci5jcHA6CisgICAgICAgIChyeDo6ZWxlbWVudHNJbkJ1ZmZlcik6CisgICAgICAgIChyeDo6
U3RyZWFtaW5nQnVmZmVyRWxlbWVudENvdW50KToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhEYXRhTWFu
YWdlcjo6cHJlcGFyZVZlcnRleERhdGEpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvVmVydGV4RGF0YU1hbmFnZXIuaDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVy
L3JlbmRlcmVyMTFfdXRpbHMuY3BwOgorICAgICAgICAoZ2xfZDNkMTE6OkNvbnZlcnRUZXh0dXJl
Rm9ybWF0KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGls
ZWQvY2xlYXIxMXZzLmg6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJz
L2NvbXBpbGVkL2NsZWFybXVsdGlwbGUxMXBzLmg6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NsZWFyc2luZ2xlMTFwcy5oOgorICAgICAgICAqIHNy
Yy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9jb21wb25lbnRtYXNrcHMuaDoK
KyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvZmxpcHl2
cy5oOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9s
dW1pbmFuY2Vwcy5oOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9j
b21waWxlZC9wYXNzdGhyb3VnaDExdnMuaDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRl
cmVyL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hsdW0xMXBzLmg6CisgICAgICAgICogc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdobHVtYWxwaGEx
MXBzLmg6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVk
L3Bhc3N0aHJvdWdocHMuaDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRl
cnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2IxMXBzLmg6CisgICAgICAgICogc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiYTExcHMuaDoKKyAgICAg
ICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvc3RhbmRhcmR2cy5o
OgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9nZW5lcmF0ZV9zaGFk
ZXJzLmJhdDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3V0aWxpdGllcy5jcHA6CisgICAgICAg
IChnbDo6Q29tcHV0ZVR5cGVTaXplKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3V0aWxpdGll
cy5oOgorICAgICAgICAqIHNyYy90aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL011cm11ckhhc2gzLmNw
cDoKKyAgICAgICAgKHJvdGwzMik6CisgICAgICAgIChyb3RsNjQpOgorICAgICAgICAoZ2V0Ymxv
Y2spOgorICAgICAgICAoZm1peCk6CisgICAgICAgIChNdXJtdXJIYXNoM194ODZfMzIpOgorICAg
ICAgICAoTXVybXVySGFzaDNfeDg2XzEyOCk6CisgICAgICAgIChNdXJtdXJIYXNoM194NjRfMTI4
KToKKyAgICAgICAgKiBzcmMvdGhpcmRfcGFydHkvbXVybXVyaGFzaC9NdXJtdXJIYXNoMy5oOgor
ICAgICAgICAqIHNyYy90aGlyZF9wYXJ0eS90cmFjZV9ldmVudDogQWRkZWQuCisgICAgICAgICog
c3JjL3RoaXJkX3BhcnR5L3RyYWNlX2V2ZW50L3RyYWNlX2V2ZW50Lmg6IEFkZGVkLgorICAgICAg
ICAoZ2w6OlRyYWNlRXZlbnQ6OlRyYWNlSUQ6OlRyYWNlSUQpOgorICAgICAgICAoZ2w6OlRyYWNl
RXZlbnQ6OlRyYWNlSUQ6OmRhdGEpOgorICAgICAgICAoZ2w6OlRyYWNlRXZlbnQ6OlRyYWNlU3Ry
aW5nV2l0aENvcHk6OlRyYWNlU3RyaW5nV2l0aENvcHkpOgorICAgICAgICAoZ2w6OlRyYWNlRXZl
bnQ6OlRyYWNlU3RyaW5nV2l0aENvcHk6Om9wZXJhdG9yIGNvbnN0IGNoYXIqICk6CisgICAgICAg
IChnbDo6VHJhY2VFdmVudDo6c2V0VHJhY2VWYWx1ZSk6CisgICAgICAgIChnbDo6VHJhY2VFdmVu
dDo6YWRkVHJhY2VFdmVudCk6CisgICAgICAgIChnbDo6VHJhY2VFdmVudDo6VHJhY2VFbmRPblNj
b3BlQ2xvc2U6OlRyYWNlRW5kT25TY29wZUNsb3NlKToKKyAgICAgICAgKGdsOjpUcmFjZUV2ZW50
OjpUcmFjZUVuZE9uU2NvcGVDbG9zZTo6flRyYWNlRW5kT25TY29wZUNsb3NlKToKKyAgICAgICAg
KGdsOjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZTo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChnbDo6VHJhY2VFdmVudDo6VHJhY2VFbmRPblNjb3BlQ2xvc2U6OmFkZEV2ZW50SWZFbmFi
bGVkKToKKyAgICAgICAgKGdsOjpUcmFjZUV2ZW50OjpTYW1wbGluZ1N0YXRlU2NvcGU6OlNhbXBs
aW5nU3RhdGVTY29wZSk6CisgICAgICAgIChnbDo6VHJhY2VFdmVudDo6U2FtcGxpbmdTdGF0ZVNj
b3BlOjp+U2FtcGxpbmdTdGF0ZVNjb3BlKToKKyAgICAgICAgKGdsOjpUcmFjZUV2ZW50OjpTYW1w
bGluZ1N0YXRlU2NvcGU6OmN1cnJlbnQpOgorICAgICAgICAoZ2w6OlRyYWNlRXZlbnQ6OlNhbXBs
aW5nU3RhdGVTY29wZTo6c2V0KToKKwogMjAxMy0xMS0xOCAgTWFyayBSb3dlICA8bXJvd2VAYXBw
bGUuY29tPgogCiAgICAgICAgIFVzZSBody5hY3RpdmVjcHUgZm9yIGRldGVybWluaW5nIGhvdyBt
YW55IHByb2Nlc3NlcyB0byBzcGF3bi4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FO
R0xFLnBsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnBs
aXN0CShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS5w
bGlzdAkod29ya2luZyBjb3B5KQpAQCAtMTAsOSArMTAsOSBAQAogCQk8a2V5Pk9wZW5Tb3VyY2VX
ZWJzaXRlVVJMPC9rZXk+CiAJCTxzdHJpbmc+aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2FuZ2xl
cHJvamVjdC88L3N0cmluZz4KIAkJPGtleT5PcGVuU291cmNlU0NNPC9rZXk+Ci0JCTxzdHJpbmc+
Z2l0IGNsb25lIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvYW5nbGVwcm9qZWN0LyAmJiBjZCBh
bmdsZXByb2plY3QgJiYgZ2l0IGNoZWNrb3V0IDA0NzM3M2FhM2ViNDA4YmU2MmJlNTJhZGU4NDBm
YTVmMTFlNzIzMzc8L3N0cmluZz4KKwkJPHN0cmluZz5naXQgY2xvbmUgaHR0cHM6Ly9jb2RlLmdv
b2dsZS5jb20vcC9hbmdsZXByb2plY3QvICYmIGNkIGFuZ2xlcHJvamVjdCAmJiBnaXQgY2hlY2tv
dXQgYTYwZTA4MDU3MjFmNjJjMjhhNTVmYWYyZGY3NDQ3MmNjNWZjOTFmYzwvc3RyaW5nPgogCQk8
a2V5Pk9wZW5Tb3VyY2VJbXBvcnREYXRlPC9rZXk+Ci0JCTxzdHJpbmc+MjAxMy0wNy0yMjwvc3Ry
aW5nPgorCQk8c3RyaW5nPjIwMTMtMTEtMDc8L3N0cmluZz4KIAkJPGtleT5PcGVuU291cmNlTGlj
ZW5zZTwva2V5PgogCQk8c3RyaW5nPkJTRDwvc3RyaW5nPgogCQk8a2V5Pk9wZW5Tb3VyY2VMaWNl
bnNlRmlsZTwva2V5PgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvRGVyaXZlZFNvdXJj
ZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9EZXJpdmVkU291
cmNlcy5tYWtlCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9E
ZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ0ICswLDAgQEAKLSMgQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgCi0jIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMg
Ci0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0jIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0jIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKLSMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0jIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0jIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1TRUFSQ0hfUEFUSCA9ICQoQU5H
TEUpL3NyYy9jb21waWxlciAkKEFOR0xFKS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yCi0KLXZw
YXRoICUubCAkKFNFQVJDSF9QQVRIKQotdnBhdGggJS55ICQoU0VBUkNIX1BBVEgpCi0KLUZMRVgg
PSBmbGV4IC0tbm9saW5lIC0tbm91bmlzdGQKLUJJU09OID0gYmlzb24gLS1uby1saW5lcyAtLXNr
ZWxldG9uPXlhY2MuYwotCi1hbGwgOiBnbHNsYW5nX2xleC5jcHAgZ2xzbGFuZ190YWIuaCBnbHNs
YW5nX3RhYi5jcHAgRXhwcmVzc2lvblBhcnNlci5jcHAgVG9rZW5pemVyLmNwcAotCi1nbHNsYW5n
X3RhYiVoIGdsc2xhbmdfdGFiJWNwcCA6IGdsc2xhbmcueQotCSQoZXZhbCBPVVRQVVQgPSAkKGJh
c2VuYW1lICRAKSkKLQkkKEJJU09OKSAtLWRlZmluZXM9JChPVVRQVVQpLmggLS1vdXRwdXQ9JChP
VVRQVVQpLmNwcCAkPAotCi1FeHByZXNzaW9uUGFyc2VyLmNwcCA6IEV4cHJlc3Npb25QYXJzZXIu
eQotCSQoQklTT04pIC0tb3V0cHV0PSRAICQ8Ci0KLWdsc2xhbmdfbGV4LmNwcCA6IGdsc2xhbmcu
bAotCSQoRkxFWCkgLS1vdXRmaWxlPSRAICQ8Ci0KLVRva2VuaXplci5jcHAgOiBUb2tlbml6ZXIu
bAotCSQoRkxFWCkgLS1vdXRmaWxlPSRAICQ8ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCwxMSArMjgsMjkgQEAKIAkJNDk5NTFDMEExNEI3QUFEODAwNjBFOTZFIC8qIEJ1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0OTk1MUMwNjE0QjdBQUQ4MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0
b3IuaCAqLzsgfTsKIAkJNUNCMTNGRDQxNzlEQjNGRDAwMUY4NTFEIC8qIERldGVjdENhbGxEZXB0
aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0Ix
M0ZEMjE3OURCM0ZEMDAxRjg1MUQgLyogRGV0ZWN0Q2FsbERlcHRoLmNwcCAqLzsgfTsKIAkJNUNC
MTNGRDUxNzlEQjNGRDAwMUY4NTFEIC8qIERldGVjdENhbGxEZXB0aC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCMTNGRDMxNzlEQjNGRDAwMUY4NTFE
IC8qIERldGVjdENhbGxEZXB0aC5oICovOyB9OwotCQk1Q0IxM0ZFNDE3OUY0NjU4MDAxRjg1MUQg
LyogRXhwcmVzc2lvblBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1Q0IxM0ZERjE3OUY0NjU4MDAxRjg1MUQgLyogRXhwcmVzc2lvblBhcnNl
ci5jcHAgKi87IH07Ci0JCTVDQjEzRkU1MTc5RjQ2NTgwMDFGODUxRCAvKiBnbHNsYW5nX2xleC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IxM0ZF
MDE3OUY0NjU4MDAxRjg1MUQgLyogZ2xzbGFuZ19sZXguY3BwICovOyB9OwotCQk1Q0IxM0ZFNjE3
OUY0NjU4MDAxRjg1MUQgLyogZ2xzbGFuZ190YWIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCMTNGRTExNzlGNDY1ODAwMUY4NTFEIC8qIGdsc2xh
bmdfdGFiLmNwcCAqLzsgfTsKLQkJNUNCMTNGRTcxNzlGNDY1ODAwMUY4NTFEIC8qIGdsc2xhbmdf
dGFiLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0Ix
M0ZFMjE3OUY0NjU4MDAxRjg1MUQgLyogZ2xzbGFuZ190YWIuaCAqLzsgfTsKLQkJNUNCMTNGRTgx
NzlGNDY1ODAwMUY4NTFEIC8qIFRva2VuaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IxM0ZFMzE3OUY0NjU4MDAxRjg1MUQgLyogVG9rZW5p
emVyLmNwcCAqLzsgfTsKKwkJNzIzMDlBNEQxODNDMjU5MzAwMzcwQjkzIC8qIENvZGVHZW4uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2NTA5MzAx
ODNBQTIxMzAwRDI4QjQ4IC8qIENvZGVHZW4uY3BwICovOyB9OworCQk3MjMwOUE0RTE4M0MyNTlD
MDAzNzBCOTMgLyogVW5mb2xkU2hvcnRDaXJjdWl0QVNULmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNjUwOTM2MTgzQUEzQzYwMEQyOEI0OCAvKiBV
bmZvbGRTaG9ydENpcmN1aXRBU1QuY3BwICovOyB9OworCQk3MjMwOUE0RjE4M0MyNTlFMDAzNzBC
OTMgLyogVW5mb2xkU2hvcnRDaXJjdWl0QVNULmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MjY1MDkzNzE4M0FBM0M2MDBEMjhCNDggLyogVW5mb2xkU2hv
cnRDaXJjdWl0QVNULmggKi87IH07CisJCTcyMzA5QTUwMTgzQzI1QTEwMDM3MEI5MyAvKiBQYXJz
ZUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzI2NTA5MzQxODNBQTNCMjAwRDI4QjQ4IC8qIFBhcnNlQ29udGV4dC5jcHAgKi87IH07CisJ
CTcyMzA5QTUxMTgzQzI1QTUwMDM3MEI5MyAvKiBQYXJzZUNvbnRleHQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNjUwOTM1MTgzQUEzQjIwMEQyOEI0
OCAvKiBQYXJzZUNvbnRleHQuaCAqLzsgfTsKKwkJNzIzMDlBNTIxODNDMjVBNzAwMzcwQjkzIC8q
IE5vZGVTZWFyY2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcyNjUwOTMzMTgzQUEyODkwMEQyOEI0OCAvKiBOb2RlU2VhcmNoLmggKi87IH07CisJCTcy
MzA5QTUzMTgzQzI1QUEwMDM3MEI5MyAvKiBJbml0aWFsaXplR0xQb3NpdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjY1MDkzMTE4M0FBMjQ2
MDBEMjhCNDggLyogSW5pdGlhbGl6ZUdMUG9zaXRpb24uY3BwICovOyB9OworCQk3MjMwOUE1NDE4
M0MyNUFEMDAzNzBCOTMgLyogSW5pdGlhbGl6ZUdMUG9zaXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNjUwOTMyMTgzQUEyNDYwMEQyOEI0OCAv
KiBJbml0aWFsaXplR0xQb3NpdGlvbi5oICovOyB9OworCQk3MjMwOUE1NjE4M0MyN0RFMDAzNzBC
OTMgLyogVG9rZW5pemVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyMzA5QTU1MTgzQzI3REIwMDM3MEI5MyAvKiBUb2tlbml6ZXIuY3BwICovOyB9
OworCQk3MjMwOUE1ODE4M0MyN0YzMDAzNzBCOTMgLyogRXhwcmVzc2lvblBhcnNlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjMwOUE1NzE4M0My
N0YxMDAzNzBCOTMgLyogRXhwcmVzc2lvblBhcnNlci5jcHAgKi87IH07CisJCTcyMzA5QTVDMTgz
QzI4NTMwMDM3MEI5MyAvKiBnbHNsYW5nX2xleC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjMwOUE1OTE4M0MyODRFMDAzNzBCOTMgLyogZ2xzbGFu
Z19sZXguY3BwICovOyB9OworCQk3MjMwOUE1RDE4M0MyODUzMDAzNzBCOTMgLyogZ2xzbGFuZ190
YWIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIz
MDlBNUExODNDMjg0RTAwMzcwQjkzIC8qIGdsc2xhbmdfdGFiLmNwcCAqLzsgfTsKKwkJNzIzMDlB
NUUxODNDMjg1MzAwMzcwQjkzIC8qIGdsc2xhbmdfdGFiLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjMwOUE1QjE4M0MyODRFMDAzNzBCOTMgLyogZ2xz
bGFuZ190YWIuaCAqLzsgfTsKKwkJNzIzMDlBNjExODNDMkE3NDAwMzcwQjkzIC8qIFRyYW5zbGF0
b3JITFNMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcyMzA5QTVGMTgzQzJBNjQwMDM3MEI5MyAvKiBUcmFuc2xhdG9ySExTTC5jcHAgKi87IH07CisJ
CTcyMzA5QTYyMTgzQzJBNzQwMDM3MEI5MyAvKiBUcmFuc2xhdG9ySExTTC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIzMDlBNjAxODNDMkE2NDAwMzcw
QjkzIC8qIFRyYW5zbGF0b3JITFNMLmggKi87IH07CisJCTcyMzA5QTY1MTgzQzJBRTUwMDM3MEI5
MyAvKiBPdXRwdXRITFNMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyMzA5QTYzMTgzQzJBRTUwMDM3MEI5MyAvKiBPdXRwdXRITFNMLmNwcCAqLzsg
fTsKKwkJNzIzMDlBNjYxODNDMkFFNTAwMzcwQjkzIC8qIE91dHB1dEhMU0wuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMzA5QTY0MTgzQzJBRTUwMDM3
MEI5MyAvKiBPdXRwdXRITFNMLmggKi87IH07CisJCTcyMzA5QTZEMTgzQzJCRTgwMDM3MEI5MyAv
KiBEZXRlY3REaXNjb250aW51aXR5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcyMzA5QTY3MTgzQzJCRTgwMDM3MEI5MyAvKiBEZXRlY3REaXNjb250
aW51aXR5LmNwcCAqLzsgfTsKKwkJNzIzMDlBNkUxODNDMkJFODAwMzcwQjkzIC8qIERldGVjdERp
c2NvbnRpbnVpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcyMzA5QTY4MTgzQzJCRTgwMDM3MEI5MyAvKiBEZXRlY3REaXNjb250aW51aXR5LmggKi87
IH07CisJCTcyMzA5QTZGMTgzQzJCRTgwMDM3MEI5MyAvKiBVbmZvbGRTaG9ydENpcmN1aXQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIzMDlBNjkx
ODNDMkJFODAwMzcwQjkzIC8qIFVuZm9sZFNob3J0Q2lyY3VpdC5jcHAgKi87IH07CisJCTcyMzA5
QTcwMTgzQzJCRTgwMDM3MEI5MyAvKiBVbmZvbGRTaG9ydENpcmN1aXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMzA5QTZBMTgzQzJCRTgwMDM3MEI5
MyAvKiBVbmZvbGRTaG9ydENpcmN1aXQuaCAqLzsgfTsKKwkJNzIzMDlBNzExODNDMkJFODAwMzcw
QjkzIC8qIFVuaWZvcm0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzIzMDlBNkIxODNDMkJFODAwMzcwQjkzIC8qIFVuaWZvcm0uY3BwICovOyB9Owor
CQk3MjMwOUE3MjE4M0MyQkU4MDAzNzBCOTMgLyogVW5pZm9ybS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIzMDlBNkMxODNDMkJFODAwMzcwQjkzIC8q
IFVuaWZvcm0uaCAqLzsgfTsKIAkJOTBEOUIxMDIxMkUxMURDQjAwMkQ0MjU1IC8qIENvbXBpbGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwRDlC
MEY5MTJFMTFEQ0IwMDJENDI1NSAvKiBDb21waWxlci5jcHAgKi87IH07CiAJCTkwRDlCMTAzMTJF
MTFEQ0IwMDJENDI1NSAvKiBFeHRlbnNpb25CZWhhdmlvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTBEOUIwRkExMkUxMURDQjAwMkQ0MjU1IC8qIEV4
dGVuc2lvbkJlaGF2aW9yLmggKi87IH07CiAJCTkwRDlCMTA3MTJFMTFEQ0IwMDJENDI1NSAvKiBn
bHNsYW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MEQ5QjBGRTEyRTExRENCMDAyRDQyNTUgLyogZ2xzbGFuZy5oICovOyB9OwpAQCAtMTAzLDcgKzEy
MSw2IEBACiAJCUEyNjU2ODQxMTU5QzIzRTEwMDM5ODUzOSAvKiBSZXN0cmljdEZyYWdtZW50U2hh
ZGVyVGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMjY1NjgzNjE1OUMyM0UxMDAzOTg1MzkgLyogUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWlu
Zy5oICovOyB9OwogCQlBMjY1Njg0MjE1OUMyM0UxMDAzOTg1MzkgLyogUmVzdHJpY3RWZXJ0ZXhT
aGFkZXJUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTI2NTY4MzcxNTlDMjNFMTAwMzk4NTM5IC8qIFJlc3RyaWN0VmVydGV4U2hhZGVyVGlt
aW5nLmNwcCAqLzsgfTsKIAkJQTI2NTY4NDMxNTlDMjNFMTAwMzk4NTM5IC8qIFJlc3RyaWN0VmVy
dGV4U2hhZGVyVGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMjY1NjgzODE1OUMyM0UxMDAzOTg1MzkgLyogUmVzdHJpY3RWZXJ0ZXhTaGFkZXJU
aW1pbmcuaCAqLzsgfTsKLQkJRkIzOUQyNzExMjAwRjM1QTAwMDg4RTY5IC8qIENvZGVHZW5HTFNM
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCMzlE
MjIyMTIwMEYzNUEwMDA4OEU2OSAvKiBDb2RlR2VuR0xTTC5jcHAgKi87IH07CiAJCUZCMzlEMjc1
MTIwMEYzNUEwMDA4OEU2OSAvKiBkZWJ1Zy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGQjM5RDIyNjEyMDBGMzVBMDAwODhFNjkgLyogZGVidWcuY3Bw
ICovOyB9OwogCQlGQjM5RDI3OTEyMDBGMzVBMDAwODhFNjkgLyogSW5mb1NpbmsuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkIzOUQyMkExMjAwRjM1
QTAwMDg4RTY5IC8qIEluZm9TaW5rLmNwcCAqLzsgfTsKIAkJRkIzOUQyN0IxMjAwRjM1QTAwMDg4
RTY5IC8qIEluaXRpYWxpemUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkIzOUQyMkMxMjAwRjM1QTAwMDg4RTY5IC8qIEluaXRpYWxpemUuY3BwICov
OyB9OwpAQCAtMTE0LDcgKzEzMSw2IEBACiAJCUZCMzlEMjg4MTIwMEYzNUEwMDA4OEU2OSAvKiBv
c3NvdXJjZV9wb3NpeC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGQjM5RDIzOTEyMDBGMzVBMDAwODhFNjkgLyogb3Nzb3VyY2VfcG9zaXguY3BwICov
OyB9OwogCQlGQjM5RDI4QTEyMDBGMzVBMDAwODhFNjkgLyogT3V0cHV0R0xTTC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjM5RDIzQjEyMDBGMzVB
MDAwODhFNjkgLyogT3V0cHV0R0xTTC5jcHAgKi87IH07CiAJCUZCMzlEMjhFMTIwMEYzNUEwMDA4
OEU2OSAvKiBwYXJzZUNvbnN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZCMzlEMjNGMTIwMEYzNUEwMDA4OEU2OSAvKiBwYXJzZUNvbnN0LmNwcCAq
LzsgfTsKLQkJRkIzOUQyOEYxMjAwRjM1QTAwMDg4RTY5IC8qIFBhcnNlSGVscGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCMzlEMjQwMTIwMEYz
NUEwMDA4OEU2OSAvKiBQYXJzZUhlbHBlci5jcHAgKi87IH07CiAJCUZCMzlEMjkxMTIwMEYzNUEw
MDA4OEU2OSAvKiBQb29sQWxsb2MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkIzOUQyNDIxMjAwRjM1QTAwMDg4RTY5IC8qIFBvb2xBbGxvYy5jcHAg
Ki87IH07CiAJCUZCMzlEMkE0MTIwMEYzNUEwMDA4OEU2OSAvKiBRdWFsaWZpZXJBbGl2ZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjM5RDI1NjEy
MDBGMzVBMDAwODhFNjkgLyogUXVhbGlmaWVyQWxpdmUuY3BwICovOyB9OwogCQlGQjM5RDJBNjEy
MDBGMzVBMDAwODhFNjkgLyogUmVtb3ZlVHJlZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjM5RDI1ODEyMDBGMzVBMDAwODhFNjkgLyogUmVtb3Zl
VHJlZS5jcHAgKi87IH07CkBAIC0xNjYsMTQgKzE4MiwzMiBAQAogCQk0OTk1MUMwNjE0QjdBQUQ4
MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNUNCMTNGRDIxNzlEQjNGRDAwMUY4NTFEIC8qIERldGVjdENhbGxEZXB0
aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXRlY3RDYWxsRGVw
dGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0IxM0ZEMzE3OURCM0ZEMDAx
Rjg1MUQgLyogRGV0ZWN0Q2FsbERlcHRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERldGVjdENhbGxEZXB0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1Q0Ix
M0ZERjE3OUY0NjU4MDAxRjg1MUQgLyogRXhwcmVzc2lvblBhcnNlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHByZXNzaW9uUGFyc2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNCMTNGRTAxNzlGNDY1ODAwMUY4NTFEIC8qIGdsc2xhbmdf
bGV4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGdsc2xhbmdfbGV4
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNCMTNGRTExNzlGNDY1ODAwMUY4
NTFEIC8qIGdsc2xhbmdfdGFiLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IGdsc2xhbmdfdGFiLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNCMTNG
RTIxNzlGNDY1ODAwMUY4NTFEIC8qIGdsc2xhbmdfdGFiLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IGdsc2xhbmdfdGFiLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTVDQjEzRkUzMTc5RjQ2NTgwMDFGODUxRCAvKiBUb2tlbml6ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVG9rZW5pemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUQ3QzU5QzUxMjA4QzY4QjAwMUM4NzNFIC8qIEFOR0xFLnhjY29uZmlnICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEFOR0xFLnhjY29uZmlnOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1RDdDNTlDNjEyMDhDNjhCMDAxQzg3M0UgLyogQmFzZS54Y2Nv
bmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDdDNTlDNzEyMDhDNjhCMDAxQzg3M0UgLyogRGVi
dWdSZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IERlYnVn
UmVsZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIzMDlBNTUx
ODNDMjdEQjAwMzcwQjkzIC8qIFRva2VuaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUb2tl
bml6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjMwOUE1NzE4M0MyN0Yx
MDAzNzBCOTMgLyogRXhwcmVzc2lvblBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHBy
ZXNzaW9uUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIzMDlBNTkx
ODNDMjg0RTAwMzcwQjkzIC8qIGdsc2xhbmdfbGV4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGds
c2xhbmdfbGV4LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIzMDlBNUExODND
Mjg0RTAwMzcwQjkzIC8qIGdsc2xhbmdfdGFiLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGdsc2xh
bmdfdGFiLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIzMDlBNUIxODNDMjg0
RTAwMzcwQjkzIC8qIGdsc2xhbmdfdGFiLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGdsc2xhbmdfdGFiLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMzA5QTVGMTgzQzJBNjQwMDM3MEI5MyAv
KiBUcmFuc2xhdG9ySExTTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmFuc2xhdG9ySExTTC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMzA5QTYwMTgzQzJBNjQwMDM3MEI5
MyAvKiBUcmFuc2xhdG9ySExTTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFuc2xhdG9ySExTTC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjMwOUE2MzE4M0MyQUU1MDAzNzBCOTMgLyog
T3V0cHV0SExTTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPdXRw
dXRITFNMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIzMDlBNjQxODNDMkFF
NTAwMzcwQjkzIC8qIE91dHB1dEhMU0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gT3V0cHV0SExTTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjMwOUE2NzE4
M0MyQkU4MDAzNzBCOTMgLyogRGV0ZWN0RGlzY29udGludWl0eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXRlY3REaXNjb250aW51aXR5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIzMDlBNjgxODNDMkJFODAwMzcwQjkzIC8qIERldGVjdERp
c2NvbnRpbnVpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV0ZWN0RGlz
Y29udGludWl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjMwOUE2OTE4M0My
QkU4MDAzNzBCOTMgLyogVW5mb2xkU2hvcnRDaXJjdWl0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFVuZm9sZFNob3J0Q2lyY3VpdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTcyMzA5QTZBMTgzQzJCRTgwMDM3MEI5MyAvKiBVbmZvbGRTaG9ydENp
cmN1aXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5mb2xkU2hvcnRDaXJj
dWl0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMzA5QTZCMTgzQzJCRTgwMDM3
MEI5MyAvKiBVbmlmb3JtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFVuaWZvcm0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjMwOUE2QzE4M0My
QkU4MDAzNzBCOTMgLyogVW5pZm9ybS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBVbmlmb3JtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNjUwOTMwMTgzQUEy
MTMwMEQyOEI0OCAvKiBDb2RlR2VuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvZGVHZW4uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjY1MDkzMTE4M0FBMjQ2MDBEMjhCNDgg
LyogSW5pdGlhbGl6ZUdMUG9zaXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5pdGlhbGl6
ZUdMUG9zaXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjY1MDkzMjE4
M0FBMjQ2MDBEMjhCNDggLyogSW5pdGlhbGl6ZUdMUG9zaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5pdGlhbGl6ZUdMUG9zaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI2
NTA5MzMxODNBQTI4OTAwRDI4QjQ4IC8qIE5vZGVTZWFyY2guaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm9k
ZVNlYXJjaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjY1MDkzNDE4M0FBM0Iy
MDBEMjhCNDggLyogUGFyc2VDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcnNlQ29u
dGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNjUwOTM1MTgzQUEzQjIw
MEQyOEI0OCAvKiBQYXJzZUNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFyc2VDb250ZXh0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNjUwOTM2MTgzQUEzQzYwMEQyOEI0OCAv
KiBVbmZvbGRTaG9ydENpcmN1aXRBU1QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5mb2xkU2hv
cnRDaXJjdWl0QVNULmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI2NTA5Mzcx
ODNBQTNDNjAwRDI4QjQ4IC8qIFVuZm9sZFNob3J0Q2lyY3VpdEFTVC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBVbmZvbGRTaG9ydENpcmN1aXRBU1QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTBEOUIwRjkxMkUxMURDQjAwMkQ0MjU1IC8qIENvbXBpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbXBpbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTBEOUIwRkExMkUxMURDQjAwMkQ0MjU1IC8qIEV4dGVuc2lvbkJlaGF2aW9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVuc2lvbkJlaGF2aW9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkwRDlCMEZFMTJFMTFEQ0IwMDJENDI1NSAvKiBn
bHNsYW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGdsc2xhbmcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0Niw3ICsyODAsNiBAQAogCQlBMjY1NjgzODE1
OUMyM0UxMDAzOTg1MzkgLyogUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkIzOUQwRDExMjAwRjBFMzAwMDg4RTY5IC8qIGxp
YkFOR0xFLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9
IGFyY2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYkFOR0xFLmE7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUZCMzlEMjIxMTIwMEYzNUEwMDA4OEU2
OSAvKiBCYXNlVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IEJhc2VU
eXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGQjM5RDIyMjEyMDBGMzVBMDAw
ODhFNjkgLyogQ29kZUdlbkdMU0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ29kZUdlbkdMU0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQjM5
RDIyNDEyMDBGMzVBMDAwODhFNjkgLyogQ29tbW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVFbmNvZGluZyA9
IDQ7IHBhdGggPSBDb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkIzOUQy
MjUxMjAwRjM1QTAwMDg4RTY5IC8qIENvbnN0YW50VW5pb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgZmlsZUVuY29k
aW5nID0gNDsgcGF0aCA9IENvbnN0YW50VW5pb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkIzOUQyMjYxMjAwRjM1QTAwMDg4RTY5IC8qIGRlYnVnLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGRlYnVnLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI3MSw4ICszMDQsNiBAQAogCQlGQjM5RDIzQjEyMDBGMzVBMDAwODhFNjkgLyog
T3V0cHV0R0xTTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPdXRw
dXRHTFNMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkIzOUQyM0MxMjAwRjM1
QTAwMDg4RTY5IC8qIE91dHB1dEdMU0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBl
eHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgZmlsZUVuY29kaW5nID0gNDsgcGF0
aCA9IE91dHB1dEdMU0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkIzOUQyM0Yx
MjAwRjM1QTAwMDg4RTY5IC8qIHBhcnNlQ29uc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gcGFyc2VDb25zdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUZCMzlEMjQwMTIwMEYzNUEwMDA4OEU2OSAvKiBQYXJzZUhlbHBlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXJzZUhlbHBlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUZCMzlEMjQxMTIwMEYzNUEwMDA4OEU2OSAvKiBQYXJzZUhlbHBl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5oOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gUGFyc2VIZWxwZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkIzOUQyNDIxMjAwRjM1QTAwMDg4RTY5IC8qIFBv
b2xBbGxvYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb29sQWxs
b2MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQjM5RDI0MzEyMDBGMzVBMDAw
ODhFNjkgLyogUG9vbEFsbG9jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGlj
aXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBQ
b29sQWxsb2MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkIzOUQyNTYxMjAwRjM1
QTAwMDg4RTY5IC8qIFF1YWxpZmllckFsaXZlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFF1YWxpZmllckFsaXZlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTMwOSwxOSArMzQwLDYgQEAKIAkJCW5hbWUgPSBtaXNjOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKIAkJfTsKLQkJNUNCMTNGREUxNzlGNDU3QjAwMUY4NTFEIC8qIERlcml2ZWQg
U291cmNlcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJ
NUNCMTNGREYxNzlGNDY1ODAwMUY4NTFEIC8qIEV4cHJlc3Npb25QYXJzZXIuY3BwICovLAotCQkJ
CTVDQjEzRkUwMTc5RjQ2NTgwMDFGODUxRCAvKiBnbHNsYW5nX2xleC5jcHAgKi8sCi0JCQkJNUNC
MTNGRTExNzlGNDY1ODAwMUY4NTFEIC8qIGdsc2xhbmdfdGFiLmNwcCAqLywKLQkJCQk1Q0IxM0ZF
MjE3OUY0NjU4MDAxRjg1MUQgLyogZ2xzbGFuZ190YWIuaCAqLywKLQkJCQk1Q0IxM0ZFMzE3OUY0
NjU4MDAxRjg1MUQgLyogVG9rZW5pemVyLmNwcCAqLywKLQkJCSk7Ci0JCQluYW1lID0gIkRlcml2
ZWQgU291cmNlcyI7Ci0JCQlwYXRoID0gRGVyaXZlZFNvdXJjZXMvQU5HTEU7Ci0JCQlzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOwotCQl9OwogCQk1RDdDNTlDNDEyMDhDNjhCMDAxQzg3
M0UgLyogQ29uZmlndXJhdGlvbnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKApAQCAtMzk2LDcgKzQxNCw2IEBACiAJCUZCMzlEMDZFMTIwMEVEOTIwMDA4OEU2OSA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNUNCMTNGREUxNzlG
NDU3QjAwMUY4NTFEIC8qIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQk1RDdDNTlDNDEyMDhDNjhC
MDAxQzg3M0UgLyogQ29uZmlndXJhdGlvbnMgKi8sCiAJCQkJQTI5QjE1RTkxNjk3OEI3RDAwMTEx
RDk3IC8qIGluY2x1ZGUgKi8sCiAJCQkJMzEyQkRCMDcxNUZFQzhFNjAwOTdFQkM3IC8qIG1pc2Mg
Ki8sCkBAIC00MzAsOCArNDQ3LDIxIEBACiAJCQkJQTI2NTY4MzQxNTlDMjNFMTAwMzk4NTM5IC8q
IHRpbWluZyAqLywKIAkJCQlGQjM5RDIyMTEyMDBGMzVBMDAwODhFNjkgLyogQmFzZVR5cGVzLmgg
Ki8sCiAJCQkJNDk5NTFDMDUxNEI3QUFENzAwNjBFOTZFIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxh
dG9yLmNwcCAqLywKKwkJCQk3MjY1MDkzNjE4M0FBM0M2MDBEMjhCNDggLyogVW5mb2xkU2hvcnRD
aXJjdWl0QVNULmNwcCAqLywKKwkJCQk3MjY1MDkzNzE4M0FBM0M2MDBEMjhCNDggLyogVW5mb2xk
U2hvcnRDaXJjdWl0QVNULmggKi8sCisJCQkJNzI2NTA5MzQxODNBQTNCMjAwRDI4QjQ4IC8qIFBh
cnNlQ29udGV4dC5jcHAgKi8sCisJCQkJNzIzMDlBNjcxODNDMkJFODAwMzcwQjkzIC8qIERldGVj
dERpc2NvbnRpbnVpdHkuY3BwICovLAorCQkJCTcyMzA5QTY4MTgzQzJCRTgwMDM3MEI5MyAvKiBE
ZXRlY3REaXNjb250aW51aXR5LmggKi8sCisJCQkJNzIzMDlBNjkxODNDMkJFODAwMzcwQjkzIC8q
IFVuZm9sZFNob3J0Q2lyY3VpdC5jcHAgKi8sCisJCQkJNzIzMDlBNkExODNDMkJFODAwMzcwQjkz
IC8qIFVuZm9sZFNob3J0Q2lyY3VpdC5oICovLAorCQkJCTcyMzA5QTZCMTgzQzJCRTgwMDM3MEI5
MyAvKiBVbmlmb3JtLmNwcCAqLywKKwkJCQk3MjMwOUE2QzE4M0MyQkU4MDAzNzBCOTMgLyogVW5p
Zm9ybS5oICovLAorCQkJCTcyNjUwOTM1MTgzQUEzQjIwMEQyOEI0OCAvKiBQYXJzZUNvbnRleHQu
aCAqLywKKwkJCQk3MjY1MDkzMzE4M0FBMjg5MDBEMjhCNDggLyogTm9kZVNlYXJjaC5oICovLAor
CQkJCTcyNjUwOTMxMTgzQUEyNDYwMEQyOEI0OCAvKiBJbml0aWFsaXplR0xQb3NpdGlvbi5jcHAg
Ki8sCisJCQkJNzI2NTA5MzIxODNBQTI0NjAwRDI4QjQ4IC8qIEluaXRpYWxpemVHTFBvc2l0aW9u
LmggKi8sCiAJCQkJNDk5NTFDMDYxNEI3QUFEODAwNjBFOTZFIC8qIEJ1aWx0SW5GdW5jdGlvbkVt
dWxhdG9yLmggKi8sCi0JCQkJRkIzOUQyMjIxMjAwRjM1QTAwMDg4RTY5IC8qIENvZGVHZW5HTFNM
LmNwcCAqLywKKwkJCQk3MjY1MDkzMDE4M0FBMjEzMDBEMjhCNDggLyogQ29kZUdlbi5jcHAgKi8s
CiAJCQkJRkIzOUQyMjQxMjAwRjM1QTAwMDg4RTY5IC8qIENvbW1vbi5oICovLAogCQkJCTkwRDlC
MEY5MTJFMTFEQ0IwMDJENDI1NSAvKiBDb21waWxlci5jcHAgKi8sCiAJCQkJRkIzOUQyMjUxMjAw
RjM1QTAwMDg4RTY5IC8qIENvbnN0YW50VW5pb24uaCAqLywKQEAgLTQ0Nyw2ICs0NzcsOSBAQAog
CQkJCUEwQUFCRTJBMTNBRkU4MTAwMEYyRUJEMSAvKiBGb3JMb29wVW5yb2xsLmNwcCAqLywKIAkJ
CQlBMEFBQkUyQjEzQUZFODEwMDBGMkVCRDEgLyogRm9yTG9vcFVucm9sbC5oICovLAogCQkJCTkw
RDlCMEZFMTJFMTFEQ0IwMDJENDI1NSAvKiBnbHNsYW5nLmggKi8sCisJCQkJNzIzMDlBNTkxODND
Mjg0RTAwMzcwQjkzIC8qIGdsc2xhbmdfbGV4LmNwcCAqLywKKwkJCQk3MjMwOUE1QTE4M0MyODRF
MDAzNzBCOTMgLyogZ2xzbGFuZ190YWIuY3BwICovLAorCQkJCTcyMzA5QTVCMTgzQzI4NEUwMDM3
MEI5MyAvKiBnbHNsYW5nX3RhYi5oICovLAogCQkJCUEyNjRGOEM1MTY5NzRFMkEwMDZGQUE1QSAv
KiBIYXNoTmFtZXMuaCAqLywKIAkJCQlGQjM5RDIyQTEyMDBGMzVBMDAwODhFNjkgLyogSW5mb1Np
bmsuY3BwICovLAogCQkJCUZCMzlEMjJCMTIwMEYzNUEwMDA4OEU2OSAvKiBJbmZvU2luay5oICov
LApAQCAtNDc0LDkgKzUwNyw5IEBACiAJCQkJRkIzOUQyM0MxMjAwRjM1QTAwMDg4RTY5IC8qIE91
dHB1dEdMU0wuaCAqLywKIAkJCQlBMEFBQkUzMjEzQUZFODQ3MDBGMkVCRDEgLyogT3V0cHV0R0xT
TEJhc2UuY3BwICovLAogCQkJCUEwQUFCRTMzMTNBRkU4NDcwMEYyRUJEMSAvKiBPdXRwdXRHTFNM
QmFzZS5oICovLAorCQkJCTcyMzA5QTYzMTgzQzJBRTUwMDM3MEI5MyAvKiBPdXRwdXRITFNMLmNw
cCAqLywKKwkJCQk3MjMwOUE2NDE4M0MyQUU1MDAzNzBCOTMgLyogT3V0cHV0SExTTC5oICovLAog
CQkJCUZCMzlEMjNGMTIwMEYzNUEwMDA4OEU2OSAvKiBwYXJzZUNvbnN0LmNwcCAqLywKLQkJCQlG
QjM5RDI0MDEyMDBGMzVBMDAwODhFNjkgLyogUGFyc2VIZWxwZXIuY3BwICovLAotCQkJCUZCMzlE
MjQxMTIwMEYzNUEwMDA4OEU2OSAvKiBQYXJzZUhlbHBlci5oICovLAogCQkJCUZCMzlEMjQyMTIw
MEYzNUEwMDA4OEU2OSAvKiBQb29sQWxsb2MuY3BwICovLAogCQkJCUZCMzlEMjQzMTIwMEYzNUEw
MDA4OEU2OSAvKiBQb29sQWxsb2MuaCAqLywKIAkJCQlBMjY1NjdCNTE1OUMyMUIxMDAzOTg1Mzkg
LyogUHJhZ21hLmggKi8sCkBAIC00OTUsNiArNTI4LDggQEAKIAkJCQlBMEFBQkU0NzEzQUZFOTYx
MDBGMkVCRDEgLyogVHJhbnNsYXRvckVTU0wuaCAqLywKIAkJCQlGQjM5RDI2ODEyMDBGMzVBMDAw
ODhFNjkgLyogVHJhbnNsYXRvckdMU0wuY3BwICovLAogCQkJCUZCMzlEMjY5MTIwMEYzNUEwMDA4
OEU2OSAvKiBUcmFuc2xhdG9yR0xTTC5oICovLAorCQkJCTcyMzA5QTVGMTgzQzJBNjQwMDM3MEI5
MyAvKiBUcmFuc2xhdG9ySExTTC5jcHAgKi8sCisJCQkJNzIzMDlBNjAxODNDMkE2NDAwMzcwQjkz
IC8qIFRyYW5zbGF0b3JITFNMLmggKi8sCiAJCQkJRkIzOUQyNkMxMjAwRjM1QTAwMDg4RTY5IC8q
IFR5cGVzLmggKi8sCiAJCQkJOTBEOUIxMEIxMkUxMURENjAwMkQ0MjU1IC8qIHV0aWwuY3BwICov
LAogCQkJCTkwRDlCMTBDMTJFMTFERDYwMDJENDI1NSAvKiB1dGlsLmggKi8sCkBAIC01MTQsNiAr
NTQ5LDggQEAKIAkJRkIzOUQyNDQxMjAwRjM1QTAwMDg4RTY5IC8qIHByZXByb2Nlc3NvciAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNzIzMDlBNTcxODND
MjdGMTAwMzcwQjkzIC8qIEV4cHJlc3Npb25QYXJzZXIuY3BwICovLAorCQkJCTcyMzA5QTU1MTgz
QzI3REIwMDM3MEI5MyAvKiBUb2tlbml6ZXIuY3BwICovLAogCQkJCUEyNjRGODkzMTY5NzRERUQw
MDZGQUE1QSAvKiBEaWFnbm9zdGljc0Jhc2UuY3BwICovLAogCQkJCUEyNjRGODk0MTY5NzRERUQw
MDZGQUE1QSAvKiBEaWFnbm9zdGljc0Jhc2UuaCAqLywKIAkJCQlBMjY0Rjg5NTE2OTc0REVEMDA2
RkFBNUEgLyogRGlyZWN0aXZlSGFuZGxlckJhc2UuY3BwICovLApAQCAtNTY5LDI1ICs2MDYsMzQg
QEAKIAkJCQlBMjY0RjhBRjE2OTc0REVEMDA2RkFBNUEgLyogRGlyZWN0aXZlSGFuZGxlckJhc2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRGOEIxMTY5NzRERUQwMDZGQUE1QSAvKiBEaXJlY3Rp
dmVQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRGOEIzMTY5NzRERUQwMDZGQUE1QSAv
KiBFeHByZXNzaW9uUGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjMwOUE0RjE4M0MyNTlF
MDAzNzBCOTMgLyogVW5mb2xkU2hvcnRDaXJjdWl0QVNULmggaW4gSGVhZGVycyAqLywKIAkJCQk5
MEQ5QjEwMzEyRTExRENCMDAyRDQyNTUgLyogRXh0ZW5zaW9uQmVoYXZpb3IuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTcyMzA5QTVFMTgzQzI4NTMwMDM3MEI5MyAvKiBnbHNsYW5nX3RhYi5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNzIzMDlBNzIxODNDMkJFODAwMzcwQjkzIC8qIFVuaWZvcm0uaCBpbiBI
ZWFkZXJzICovLAorCQkJCTcyMzA5QTY2MTgzQzJBRTUwMDM3MEI5MyAvKiBPdXRwdXRITFNMLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMEFBQkUyRDEzQUZFODEwMDBGMkVCRDEgLyogRm9yTG9vcFVu
cm9sbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTBEOUIxMDcxMkUxMURDQjAwMkQ0MjU1IC8qIGds
c2xhbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRGOEM4MTY5NzRFMkEwMDZGQUE1QSAvKiBI
YXNoTmFtZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyMzA5QTYyMTgzQzJBNzQwMDM3MEI5MyAv
KiBUcmFuc2xhdG9ySExTTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NEY4QjUxNjk3NERFRDAw
NkZBQTVBIC8qIElucHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY0RjhDRDE2OTc2MkFBMDA2
RkFBNUEgLyoga2hycGxhdGZvcm0uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5OTUxQzAzMTRCN0FB
QjMwMDYwRTk2RSAvKiBsZW5ndGhfbGltaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY0RjhC
NzE2OTc0REVEMDA2RkFBNUEgLyogTGV4ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRGOEI5
MTY5NzRERUQwMDZGQUE1QSAvKiBNYWNyby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NEY4QkIx
Njk3NERFRDAwNkZBQTVBIC8qIE1hY3JvRXhwYW5kZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTcy
MzA5QTU0MTgzQzI1QUQwMDM3MEI5MyAvKiBJbml0aWFsaXplR0xQb3NpdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTBBQUJFMzExM0FGRTgzMDAwRjJFQkQxIC8qIE1hcExvbmdWYXJpYWJsZU5h
bWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY0RjhCQzE2OTc0REVEMDA2RkFBNUEgLyogbnVt
ZXJpY19sZXguaCBpbiBIZWFkZXJzICovLAogCQkJCUEwQUFCRTQ1MTNBRkU5NDUwMEYyRUJEMSAv
KiBPdXRwdXRFU1NMLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjMwOUE3MDE4M0MyQkU4MDAzNzBC
OTMgLyogVW5mb2xkU2hvcnRDaXJjdWl0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMEFBQkUzNTEz
QUZFODQ3MDBGMkVCRDEgLyogT3V0cHV0R0xTTEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUEy
NjRGOEJEMTY5NzRERUQwMDZGQUE1QSAvKiBwcF91dGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTI2NTY3QzAxNTlDMjFCMTAwMzk4NTM5IC8qIFByYWdtYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTI2NEY4QkYxNjk3NERFRDAwNkZBQTVBIC8qIFByZXByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTI2NTY3QzExNTlDMjFCMTAwMzk4NTM5IC8qIFJlbmFtZUZ1bmN0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3MjMwOUE1MjE4M0MyNUE3MDAzNzBCOTMgLyogTm9kZVNlYXJjaC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTI2NTY4NDExNTlDMjNFMTAwMzk4NTM5IC8qIFJlc3RyaWN0RnJh
Z21lbnRTaGFkZXJUaW1pbmcuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyMzA5QTZFMTgzQzJCRTgw
MDM3MEI5MyAvKiBEZXRlY3REaXNjb250aW51aXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY1
Njg0MzE1OUMyM0UxMDAzOTg1MzkgLyogUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkwRDlCMTBBMTJFMTFEQ0IwMDJENDI1NSAvKiBTZWFyY2hTeW1ib2wu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZCMzlENzZFMTIwMTEwRkMwMDA4OEU2OSAvKiBTaGFkZXJM
YW5nLmggaW4gSGVhZGVycyAqLywKQEAgLTU5NywxMSArNjQzLDExIEBACiAJCQkJQTBBQUJFNDkx
M0FGRTk2MTAwRjJFQkQxIC8qIFRyYW5zbGF0b3JFU1NMLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
MEQ5QjExNDEyRTExREQ2MDAyRDQyNTUgLyogdXRpbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTBE
OUIxMTYxMkUxMURENjAwMkQ0MjU1IC8qIFZhbGlkYXRlTGltaXRhdGlvbnMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTcyMzA5QTUxMTgzQzI1QTUwMDM3MEI5MyAvKiBQYXJzZUNvbnRleHQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkwRDlCMTE4MTJFMTFERDYwMDJENDI1NSAvKiBWYXJpYWJsZUluZm8u
aCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRGOENBMTY5NzRFMkEwMDZGQUE1QSAvKiBWYXJpYWJs
ZVBhY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTBEOUIxMUExMkUxMURENjAwMkQ0MjU1IC8q
IFZlcnNpb25HTFNMLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0IxM0ZENTE3OURCM0ZEMDAxRjg1
MUQgLyogRGV0ZWN0Q2FsbERlcHRoLmggaW4gSGVhZGVycyAqLywKLQkJCQk1Q0IxM0ZFNzE3OUY0
NjU4MDAxRjg1MUQgLyogZ2xzbGFuZ190YWIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNjY4LDcgKzcx
NCw3IEBACiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCQlzaGVsbFBhdGggPSAvYmluL3NoOwotCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIk
e0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvQU5HTEVcIlxuY2QgXCIke0JVSUxU
X1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvQU5HTEVcIlxuXG4vYmluL2xuIC1zZmggXCIk
e1NSQ1JPT1R9XCIgQU5HTEVcbmV4cG9ydCBBTkdMRT1cIkFOR0xFXCJcblxubWFrZSAgLS1uby1i
dWlsdGluLXJ1bGVzIC1mIFwiQU5HTEUvRGVyaXZlZFNvdXJjZXMubWFrZVwiIC1qIGAvdXNyL3Ni
aW4vc3lzY3RsIC1uIGh3LmFjdGl2ZWNwdWAiOworCQkJc2hlbGxTY3JpcHQgPSAiIjsKIAkJfTsK
IC8qIEVuZCBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCkBAIC02NzksNyAr
NzI1LDcgQEAKIAkJCWZpbGVzID0gKAogCQkJCUEwOEMzQ0RDMTZENkNCNjEwMDNGMEI4MyAvKiBB
cnJheUJvdW5kc0NsYW1wZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk5NTFDMDkxNEI3QUFE
ODAwNjBFOTZFIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCUZCMzlEMjcxMTIwMEYzNUEwMDA4OEU2OSAvKiBDb2RlR2VuR0xTTC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk3MjMwOUE1RDE4M0MyODUzMDAzNzBCOTMgLyogZ2xzbGFuZ190YWIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTBEOUIxMDIxMkUxMURDQjAwMkQ0MjU1IC8qIENvbXBpbGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUZCMzlEMjc1MTIwMEYzNUEwMDA4OEU2OSAvKiBkZWJ1Zy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBMjY1NjgzOTE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5k
ZW5jeUdyYXBoLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNjg3LDE0ICs3MzMsMTkgQEAKIAkJCQlB
MjY1NjgzRDE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUEyNjU2ODNGMTU5QzIzRTEwMDM5ODUzOSAvKiBEZXBlbmRlbmN5R3Jh
cGhUcmF2ZXJzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMjY1NjdCQjE1OUMyMUIxMDAzOTg1
MzkgLyogRGlhZ25vc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzIzMDlBNTYxODNDMjdE
RTAwMzcwQjkzIC8qIFRva2VuaXplci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MjMwOUE1MDE4
M0MyNUExMDAzNzBCOTMgLyogUGFyc2VDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcy
MzA5QTcxMTgzQzJCRTgwMDM3MEI5MyAvKiBVbmlmb3JtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUEyNjRGOEFDMTY5NzRERUQwMDZGQUE1QSAvKiBEaWFnbm9zdGljc0Jhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTI2NTY3QkQxNTlDMjFCMTAwMzk4NTM5IC8qIERpcmVjdGl2ZUhhbmRsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTI2NEY4QUUxNjk3NERFRDAwNkZBQTVBIC8qIERpcmVj
dGl2ZUhhbmRsZXJCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjRGOEIwMTY5NzRERUQw
MDZGQUE1QSAvKiBEaXJlY3RpdmVQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTBBQUJF
MkMxM0FGRTgxMDAwRjJFQkQxIC8qIEZvckxvb3BVbnJvbGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRkIzOUQyNzkxMjAwRjM1QTAwMDg4RTY5IC8qIEluZm9TaW5rLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTcyMzA5QTYxMTgzQzJBNzQwMDM3MEI5MyAvKiBUcmFuc2xhdG9ySExTTC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGQjM5RDI3QjEyMDBGMzVBMDAwODhFNjkgLyogSW5pdGlhbGl6ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGQjM5RDI3RDEyMDBGMzVBMDAwODhFNjkgLyogSW5pdGlh
bGl6ZURsbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MjMwOUE1ODE4M0MyN0YzMDAzNzBCOTMg
LyogRXhwcmVzc2lvblBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMjY1NjdCRjE1OUMy
MUIxMDAzOTg1MzkgLyogSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBMjY0RjhCNDE2OTc0REVEMDA2RkFBNUEgLyogSW5wdXQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRkIzOUQyODExMjAwRjM1QTAwMDg4RTY5IC8qIEludGVybWVkaWF0ZS5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTcwOSw5ICs3NjAsMTQgQEAKIAkJCQlGQjM5RDI4QTEyMDBGMzVBMDAwODhF
NjkgLyogT3V0cHV0R0xTTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMEFBQkUzNDEzQUZFODQ3
MDBGMkVCRDEgLyogT3V0cHV0R0xTTEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkIzOUQy
OEUxMjAwRjM1QTAwMDg4RTY5IC8qIHBhcnNlQ29uc3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
RkIzOUQyOEYxMjAwRjM1QTAwMDg4RTY5IC8qIFBhcnNlSGVscGVyLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTcyMzA5QTY1MTgzQzJBRTUwMDM3MEI5MyAvKiBPdXRwdXRITFNMLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUZCMzlEMjkxMTIwMEYzNUEwMDA4OEU2OSAvKiBQb29sQWxsb2MuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNzIzMDlBNTMxODNDMjVBQTAwMzcwQjkzIC8qIEluaXRpYWxpemVH
TFBvc2l0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcyMzA5QTZEMTgzQzJCRTgwMDM3MEI5
MyAvKiBEZXRlY3REaXNjb250aW51aXR5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcyMzA5QTZG
MTgzQzJCRTgwMDM3MEI5MyAvKiBVbmZvbGRTaG9ydENpcmN1aXQuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNzIzMDlBNUMxODNDMjg1MzAwMzcwQjkzIC8qIGdsc2xhbmdfbGV4LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUEyNjRGOEJFMTY5NzRERUQwMDZGQUE1QSAvKiBQcmVwcm9jZXNzb3IuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNzIzMDlBNEQxODNDMjU5MzAwMzcwQjkzIC8qIENvZGVHZW4u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkIzOUQyQTQxMjAwRjM1QTAwMDg4RTY5IC8qIFF1YWxp
ZmllckFsaXZlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZCMzlEMkE2MTIwMEYzNUEwMDA4OEU2
OSAvKiBSZW1vdmVUcmVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjU2ODQwMTU5QzIzRTEw
MDM5ODUzOSAvKiBSZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtNzI4LDEwICs3ODQsNyBAQAogCQkJCUEyNjRGOEM5MTY5NzRFMkEwMDZGQUE1QSAvKiBW
YXJpYWJsZVBhY2tlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MEQ5QjExOTEyRTExREQ2MDAy
RDQyNTUgLyogVmVyc2lvbkdMU0wuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNCMTNGRDQxNzlE
QjNGRDAwMUY4NTFEIC8qIERldGVjdENhbGxEZXB0aC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1
Q0IxM0ZFNDE3OUY0NjU4MDAxRjg1MUQgLyogRXhwcmVzc2lvblBhcnNlci5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQk1Q0IxM0ZFNTE3OUY0NjU4MDAxRjg1MUQgLyogZ2xzbGFuZ19sZXguY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJNUNCMTNGRTYxNzlGNDY1ODAwMUY4NTFEIC8qIGdsc2xhbmdfdGFi
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTVDQjEzRkU4MTc5RjQ2NTgwMDFGODUxRCAvKiBUb2tl
bml6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzIzMDlBNEUxODNDMjU5QzAwMzcwQjkzIC8q
IFVuZm9sZFNob3J0Q2lyY3VpdEFTVC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvRUdML2VnbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvRUdML2VnbC5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0VHTC9lZ2wuaAkod29ya2luZyBjb3B5KQpA
QCAtMjQ2LDEwICsyNDYsNiBAQCB0eXBlZGVmIHZvaWQgKkVHTENsaWVudEJ1ZmZlcjsKIAogLyog
RUdMIEZ1bmN0aW9ucyAqLwogCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoQU5H
TEVfV0VCS0lUX1dJTikKLSNpbmNsdWRlIDxFR0wvZWdsc29mdGxpbmtpbmcuaD4KLSNlbHNlCi0K
IEVHTEFQSSBFR0xpbnQgRUdMQVBJRU5UUlkgZWdsR2V0RXJyb3Iodm9pZCk7CiAKIEVHTEFQSSBF
R0xEaXNwbGF5IEVHTEFQSUVOVFJZIGVnbEdldERpc3BsYXkoRUdMTmF0aXZlRGlzcGxheVR5cGUg
ZGlzcGxheV9pZCk7CkBAIC0zMjYsOCArMzIyLDYgQEAgdHlwZWRlZiB2b2lkICgqX19lZ2xNdXN0
Q2FzdFRvUHJvcGVyRnVuYwogRUdMQVBJIF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9p
bnRlclR5cGUgRUdMQVBJRU5UUlkKICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcyhjb25zdCBjaGFy
ICpwcm9jbmFtZSk7CiAKLSNlbmRpZgotCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9FR0wvZWdsc29mdGxpbmtpbmcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0VHTC9lZ2xz
b2Z0bGlua2luZy5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9pbmNsdWRlL0VHTC9lZ2xzb2Z0bGlua2luZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYzICsw
LDAgQEAKLS8qIAotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIAotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgiCi0KLVNPRlRf
TElOS19MSUJSQVJZKGxpYkVHTCkKLQotU09GVF9MSU5LKGxpYkVHTCwgZWdsR2V0RXJyb3IsIEVH
TGludCwgRUdMQVBJRU5UUlksICh2b2lkKSwgKCkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsR2V0
RGlzcGxheSwgRUdMRGlzcGxheSwgRUdMQVBJRU5UUlksIChFR0xOYXRpdmVEaXNwbGF5VHlwZSBk
aXNwbGF5X2lkKSwgKGRpc3BsYXlfaWQpKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbEluaXRpYWxp
emUsIEVHTEJvb2xlYW4sIEVHTEFQSUVOVFJZLCAoRUdMRGlzcGxheSBkcHksIEVHTGludCAqbWFq
b3IsIEVHTGludCAqbWlub3IpLCAoZHB5LCBtYWpvciwgbWlub3IpKTsKLVNPRlRfTElOSyhsaWJF
R0wsIGVnbFRlcm1pbmF0ZSwgRUdMQm9vbGVhbiwgRUdMQVBJRU5UUlksIChFR0xEaXNwbGF5IGRw
eSksIChkcHkpKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbFF1ZXJ5U3RyaW5nLCBjb25zdCBjaGFy
ICosIEVHTEFQSUVOVFJZLCAoRUdMRGlzcGxheSBkcHksIEVHTGludCBuYW1lKSwgKGRweSwgbmFt
ZSkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsR2V0Q29uZmlncywgRUdMQm9vbGVhbiwgRUdMQVBJ
RU5UUlksIChFR0xEaXNwbGF5IGRweSwgRUdMQ29uZmlnICpjb25maWdzLCBFR0xpbnQgY29uZmln
X3NpemUsIEVHTGludCAqbnVtX2NvbmZpZyksIChkcHksIGNvbmZpZ3MsIGNvbmZpZ19zaXplLCBu
dW1fY29uZmlnKSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xDaG9vc2VDb25maWcsIEVHTEJvb2xl
YW4sIEVHTEFQSUVOVFJZLCAoRUdMRGlzcGxheSBkcHksIGNvbnN0IEVHTGludCAqYXR0cmliX2xp
c3QsIEVHTENvbmZpZyAqY29uZmlncywgRUdMaW50IGNvbmZpZ19zaXplLCBFR0xpbnQgKm51bV9j
b25maWcpLCAoZHB5LCBhdHRyaWJfbGlzdCwgY29uZmlncywgY29uZmlnX3NpemUsIG51bV9jb25m
aWcpKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbEdldENvbmZpZ0F0dHJpYiwgRUdMaW50LCBFR0xB
UElFTlRSWSwgKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgY29uZmlnLCBFR0xpbnQgYXR0cmli
dXRlLCBFR0xpbnQgKnZhbHVlKSwgKGRweSwgY29uZmlnLCBhdHRyaWJ1dGUsIHZhbHVlKSk7Ci1T
T0ZUX0xJTksobGliRUdMLCBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNlLCBFR0xTdXJmYWNlLCBFR0xB
UElFTlRSWSwgKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgY29uZmlnLCBFR0xOYXRpdmVXaW5k
b3dUeXBlIHdpbiwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCksIChkcHksIGNvbmZpZywgd2lu
LCBhdHRyaWJfbGlzdCkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsQ3JlYXRlUGJ1ZmZlclN1cmZh
Y2UsIEVHTFN1cmZhY2UsIEVHTEFQSUVOVFJZLCAoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBj
b25maWcsIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpLCAoZHB5LCBjb25maWcsIGF0dHJpYl9s
aXN0KSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xDcmVhdGVQaXhtYXBTdXJmYWNlLCBFR0xTdXJm
YWNlLCBFR0xBUElFTlRSWSwgKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgY29uZmlnLCBFR0xO
YXRpdmVQaXhtYXBUeXBlIHBpeG1hcCwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCksIChkcHks
IGNvbmZpZywgcGl4bWFwLCBhdHRyaWJfbGlzdCkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsRGVz
dHJveVN1cmZhY2UsIEVHTEJvb2xlYW4sIEVHTEFQSUVOVFJZLCAoRUdMRGlzcGxheSBkcHksIEVH
TFN1cmZhY2Ugc3VyZmFjZSksIChkcHksIHN1cmZhY2UpKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVn
bFF1ZXJ5U3VyZmFjZSwgRUdMQm9vbGVhbiwgRUdMQVBJRU5UUlksIChFR0xEaXNwbGF5IGRweSwg
RUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xpbnQgYXR0cmlidXRlLCBFR0xpbnQgKnZhbHVlKSwgKGRw
eSwgc3VyZmFjZSwgYXR0cmlidXRlLCB2YWx1ZSkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsQmlu
ZEFQSSwgRUdMQm9vbGVhbiwgRUdMQVBJRU5UUlksIChFR0xlbnVtIGFwaSksIChhcGkpKTsKLVNP
RlRfTElOSyhsaWJFR0wsIGVnbFF1ZXJ5QVBJLCBFR0xlbnVtLCBFR0xBUElFTlRSWSwgKHZvaWQp
LCAoKSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xXYWl0Q2xpZW50LCBFR0xCb29sZWFuLCBFR0xB
UElFTlRSWSwgKHZvaWQpLCAoKSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xSZWxlYXNlVGhyZWFk
LCBFR0xCb29sZWFuLCBFR0xBUElFTlRSWSwgKHZvaWQpLCAoKSk7Ci1TT0ZUX0xJTksobGliRUdM
LCBlZ2xDcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlciwgRUdMU3VyZmFjZSwgRUdMQVBJRU5U
UlksIChFR0xEaXNwbGF5IGRweSwgRUdMZW51bSBidWZ0eXBlLCBFR0xDbGllbnRCdWZmZXIgYnVm
ZmVyLCBFR0xDb25maWcgY29uZmlnLCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KSwgKGRweSwg
YnVmdHlwZSwgYnVmZmVyLCBjb25maWcsIGF0dHJpYl9saXN0KSk7Ci1TT0ZUX0xJTksobGliRUdM
LCBlZ2xTdXJmYWNlQXR0cmliLCBFR0xCb29sZWFuLCBFR0xBUElFTlRSWSwgKEVHTERpc3BsYXkg
ZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTGludCBhdHRyaWJ1dGUsIEVHTGludCB2YWx1ZSks
IChkcHksIHN1cmZhY2UsIGF0dHJpYnV0ZSwgdmFsdWUpKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVn
bEJpbmRUZXhJbWFnZSwgRUdMQm9vbGVhbiwgRUdMQVBJRU5UUlksIChFR0xEaXNwbGF5IGRweSwg
RUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xpbnQgYnVmZmVyKSwgKGRweSwgc3VyZmFjZSwgYnVmZmVy
KSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xSZWxlYXNlVGV4SW1hZ2UsIEVHTEJvb2xlYW4sIEVH
TEFQSUVOVFJZLCAoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IGJ1
ZmZlciksIChkcHksIHN1cmZhY2UsIGJ1ZmZlcikpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsU3dh
cEludGVydmFsLCBFR0xCb29sZWFuLCBFR0xBUElFTlRSWSwgKEVHTERpc3BsYXkgZHB5LCBFR0xp
bnQgaW50ZXJ2YWwpLCAoZHB5LCBpbnRlcnZhbCkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsQ3Jl
YXRlQ29udGV4dCwgRUdMQ29udGV4dCwgRUdMQVBJRU5UUlksIChFR0xEaXNwbGF5IGRweSwgRUdM
Q29uZmlnIGNvbmZpZywgRUdMQ29udGV4dCBzaGFyZV9jb250ZXh0LCBjb25zdCBFR0xpbnQgKmF0
dHJpYl9saXN0KSwgKGRweSwgY29uZmlnLCBzaGFyZV9jb250ZXh0LCBhdHRyaWJfbGlzdCkpOwot
U09GVF9MSU5LKGxpYkVHTCwgZWdsRGVzdHJveUNvbnRleHQsIEVHTEJvb2xlYW4sIEVHTEFQSUVO
VFJZLCAoRUdMRGlzcGxheSBkcHksIEVHTENvbnRleHQgY3R4KSwgKGRweSwgY3R4KSk7Ci1TT0ZU
X0xJTksobGliRUdMLCBlZ2xNYWtlQ3VycmVudCwgRUdMQm9vbGVhbiwgRUdMQVBJRU5UUlksIChF
R0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBkcmF3LCBFR0xTdXJmYWNlIHJlYWQsIEVHTENvbnRl
eHQgY3R4KSwgKGRweSwgZHJhdywgcmVhZCwgY3R4KSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xH
ZXRDdXJyZW50Q29udGV4dCwgRUdMQ29udGV4dCwgRUdMQVBJRU5UUlksICh2b2lkKSwgKCkpOwot
U09GVF9MSU5LKGxpYkVHTCwgZWdsR2V0Q3VycmVudFN1cmZhY2UsIEVHTFN1cmZhY2UsIEVHTEFQ
SUVOVFJZLCAoRUdMaW50IHJlYWRkcmF3KSwgKHJlYWRkcmF3KSk7Ci1TT0ZUX0xJTksobGliRUdM
LCBlZ2xHZXRDdXJyZW50RGlzcGxheSwgRUdMRGlzcGxheSwgRUdMQVBJRU5UUlksICh2b2lkKSwg
KCkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsUXVlcnlDb250ZXh0LCBFR0xCb29sZWFuLCBFR0xB
UElFTlRSWSwgKEVHTERpc3BsYXkgZHB5LCBFR0xDb250ZXh0IGN0eCwgRUdMaW50IGF0dHJpYnV0
ZSwgRUdMaW50ICp2YWx1ZSksIChkcHksIGN0eCwgYXR0cmlidXRlLCB2YWx1ZSkpOwotU09GVF9M
SU5LKGxpYkVHTCwgZWdsV2FpdEdMLCBFR0xCb29sZWFuLCBFR0xBUElFTlRSWSwgKHZvaWQpLCAo
KSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xXYWl0TmF0aXZlLCBFR0xCb29sZWFuLCBFR0xBUElF
TlRSWSwgKEVHTGludCBlbmdpbmUpLCAoZW5naW5lKSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xT
d2FwQnVmZmVycywgRUdMQm9vbGVhbiwgRUdMQVBJRU5UUlksIChFR0xEaXNwbGF5IGRweSwgRUdM
U3VyZmFjZSBzdXJmYWNlKSwgKGRweSwgc3VyZmFjZSkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWds
Q29weUJ1ZmZlcnMsIEVHTEJvb2xlYW4sIEVHTEFQSUVOVFJZLCAoRUdMRGlzcGxheSBkcHksIEVH
TFN1cmZhY2Ugc3VyZmFjZSwgRUdMTmF0aXZlUGl4bWFwVHlwZSB0YXJnZXQpLCAoZHB5LCBzdXJm
YWNlLCB0YXJnZXQpKTsKLXR5cGVkZWYgdm9pZCAoKl9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0
aW9uUG9pbnRlclR5cGUpKHZvaWQpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsR2V0UHJvY0FkZHJl
c3MsIF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUsIEVHTEFQSUVOVFJZ
LCAoY29uc3QgY2hhciAqcHJvY25hbWUpLCAocHJvY25hbWUpKTsKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzIvZ2wyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMi9nbDIuaAkocmV2aXNpb24gMTU5NTMyKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMi9nbDIuaAkod29ya2luZyBjb3B5
KQpAQCAtNDcxLDEwICs0NzEsNiBAQCB0eXBlZGVmIGtocm9ub3Nfc3NpemVfdCAgR0xzaXplaXB0
cjsKICAqIEdMIGNvcmUgZnVuY3Rpb25zLgogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKLSNpZiBkZWZp
bmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChBTkdMRV9XRUJLSVRfV0lOKQotI2luY2x1ZGUgPEdM
RVMyL2dsMnNvZnRsaW5raW5nLmg+Ci0jZWxzZQotCiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBH
TF9BUElFTlRSWSBnbEFjdGl2ZVRleHR1cmUgKEdMZW51bSB0ZXh0dXJlKTsKIEdMX0FQSUNBTEwg
dm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsQXR0YWNoU2hhZGVyIChHTHVpbnQgcHJvZ3JhbSwg
R0x1aW50IHNoYWRlcik7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEJp
bmRBdHRyaWJMb2NhdGlvbiAoR0x1aW50IHByb2dyYW0sIEdMdWludCBpbmRleCwgY29uc3QgR0xj
aGFyKiBuYW1lKTsKQEAgLTYxOCw4ICs2MTQsNiBAQCBHTF9BUElDQUxMIHZvaWQgICAgICAgICBH
TF9BUElFTlRSWSBnbFZlCiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbFZl
cnRleEF0dHJpYlBvaW50ZXIgKEdMdWludCBpbmR4LCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwg
R0xib29sZWFuIG5vcm1hbGl6ZWQsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQqIHB0cik7
CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbFZpZXdwb3J0IChHTGludCB4
LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CiAKLSNlbmRpZgotCiAj
aWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvaW5jbHVkZS9HTEVTMi9nbDJzb2Z0bGlua2luZy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzIvZ2wyc29mdGxpbmtpbmcuaAkocmV2aXNpb24g
MTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMi9nbDJzb2Z0
bGlua2luZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3MCArMCwwIEBACi0vKiAKLSAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
Ci0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJTb2Z0TGlua2luZy5oIgotCi1TT0ZUX0xJTktfTElCUkFSWShsaWJHTEVT
djIpCi0KLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQWN0aXZlVGV4dHVyZSwgdm9pZCwgR0xfQVBJ
RU5UUlksIChHTGVudW0gdGV4dHVyZSksICh0ZXh0dXJlKSk7Ci1TT0ZUX0xJTksobGliR0xFU3Yy
LCBnbEF0dGFjaFNoYWRlciwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgcHJvZ3JhbSwgR0x1
aW50IHNoYWRlciksIChwcm9ncmFtLCBzaGFkZXIpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGds
QmluZEF0dHJpYkxvY2F0aW9uLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBwcm9ncmFtLCBH
THVpbnQgaW5kZXgsIGNvbnN0IEdMY2hhciogbmFtZSksIChwcm9ncmFtLCBpbmRleCwgbmFtZSkp
OwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xCaW5kQnVmZmVyLCB2b2lkLCBHTF9BUElFTlRSWSwg
KEdMZW51bSB0YXJnZXQsIEdMdWludCBidWZmZXIpLCAodGFyZ2V0LCBidWZmZXIpKTsKLVNPRlRf
TElOSyhsaWJHTEVTdjIsIGdsQmluZEZyYW1lYnVmZmVyLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdM
ZW51bSB0YXJnZXQsIEdMdWludCBmcmFtZWJ1ZmZlciksICh0YXJnZXQsIGZyYW1lYnVmZmVyKSk7
Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEJpbmRSZW5kZXJidWZmZXIsIHZvaWQsIEdMX0FQSUVO
VFJZLCAoR0xlbnVtIHRhcmdldCwgR0x1aW50IHJlbmRlcmJ1ZmZlciksICh0YXJnZXQsIHJlbmRl
cmJ1ZmZlcikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xCaW5kVGV4dHVyZSwgdm9pZCwgR0xf
QVBJRU5UUlksIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSksICh0YXJnZXQsIHRleHR1
cmUpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQmxlbmRDb2xvciwgdm9pZCwgR0xfQVBJRU5U
UlksIChHTGNsYW1wZiByZWQsIEdMY2xhbXBmIGdyZWVuLCBHTGNsYW1wZiBibHVlLCBHTGNsYW1w
ZiBhbHBoYSksIChyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSkpOwotU09GVF9MSU5LKGxpYkdMRVN2
MiwgZ2xCbGVuZEVxdWF0aW9uLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSBtb2RlKSwgKG1v
ZGUpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlLCB2b2lk
LCBHTF9BUElFTlRSWSwgKEdMZW51bSBtb2RlUkdCLCBHTGVudW0gbW9kZUFscGhhKSwgKG1vZGVS
R0IsIG1vZGVBbHBoYSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xCbGVuZEZ1bmMsIHZvaWQs
IEdMX0FQSUVOVFJZLCAoR0xlbnVtIHNmYWN0b3IsIEdMZW51bSBkZmFjdG9yKSwgKHNmYWN0b3Is
IGRmYWN0b3IpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQmxlbmRGdW5jU2VwYXJhdGUsIHZv
aWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHNyY1JHQiwgR0xlbnVtIGRzdFJHQiwgR0xlbnVtIHNy
Y0FscGhhLCBHTGVudW0gZHN0QWxwaGEpLCAoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RB
bHBoYSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xCdWZmZXJEYXRhLCB2b2lkLCBHTF9BUElF
TlRSWSwgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWlwdHIgc2l6ZSwgY29uc3QgR0x2b2lkKiBkYXRh
LCBHTGVudW0gdXNhZ2UpLCAodGFyZ2V0LCBzaXplLCBkYXRhLCB1c2FnZSkpOwotU09GVF9MSU5L
KGxpYkdMRVN2MiwgZ2xCdWZmZXJTdWJEYXRhLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSB0
YXJnZXQsIEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBzaXplLCBjb25zdCBHTHZvaWQqIGRh
dGEpLCAodGFyZ2V0LCBvZmZzZXQsIHNpemUsIGRhdGEpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIs
IGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cywgR0xlbnVtLCBHTF9BUElFTlRSWSwgKEdMZW51bSB0
YXJnZXQpLCAodGFyZ2V0KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbENsZWFyLCB2b2lkLCBH
TF9BUElFTlRSWSwgKEdMYml0ZmllbGQgbWFzayksIChtYXNrKSk7Ci1TT0ZUX0xJTksobGliR0xF
U3YyLCBnbENsZWFyQ29sb3IsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xjbGFtcGYgcmVkLCBHTGNs
YW1wZiBncmVlbiwgR0xjbGFtcGYgYmx1ZSwgR0xjbGFtcGYgYWxwaGEpLCAocmVkLCBncmVlbiwg
Ymx1ZSwgYWxwaGEpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQ2xlYXJEZXB0aGYsIHZvaWQs
IEdMX0FQSUVOVFJZLCAoR0xjbGFtcGYgZGVwdGgpLCAoZGVwdGgpKTsKLVNPRlRfTElOSyhsaWJH
TEVTdjIsIGdsQ2xlYXJTdGVuY2lsLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMaW50IHMpLCAocykp
OwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xDb2xvck1hc2ssIHZvaWQsIEdMX0FQSUVOVFJZLCAo
R0xib29sZWFuIHJlZCwgR0xib29sZWFuIGdyZWVuLCBHTGJvb2xlYW4gYmx1ZSwgR0xib29sZWFu
IGFscGhhKSwgKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSk7Ci1TT0ZUX0xJTksobGliR0xFU3Yy
LCBnbENvbXBpbGVTaGFkZXIsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IHNoYWRlciksIChz
aGFkZXIpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQ29tcHJlc3NlZFRleEltYWdlMkQsIHZv
aWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGJvcmRlciwg
R0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCogZGF0YSksICh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIGRhdGEpKTsK
LVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQsIHZvaWQsIEdM
X0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdM
aW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0
LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkKiBkYXRhKSwgKHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBkYXRh
KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbENvcHlUZXhJbWFnZTJELCB2b2lkLCBHTF9BUElF
TlRSWSwgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBi
b3JkZXIpLCAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsIHksIHdpZHRoLCBoZWln
aHQsIGJvcmRlcikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xDb3B5VGV4U3ViSW1hZ2UyRCwg
dm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9m
ZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQpLCAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lk
dGgsIGhlaWdodCkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xDcmVhdGVQcm9ncmFtLCBHTHVp
bnQsIEdMX0FQSUVOVFJZLCAodm9pZCksICgpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQ3Jl
YXRlU2hhZGVyLCBHTHVpbnQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHR5cGUpLCAodHlwZSkpOwot
U09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xDdWxsRmFjZSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVu
dW0gbW9kZSksIChtb2RlKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbERlbGV0ZUJ1ZmZlcnMs
IHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqIGJ1ZmZlcnMpLCAo
biwgYnVmZmVycykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMs
IHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqIGZyYW1lYnVmZmVy
cyksIChuLCBmcmFtZWJ1ZmZlcnMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsRGVsZXRlUHJv
Z3JhbSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgcHJvZ3JhbSksIChwcm9ncmFtKSk7Ci1T
T0ZUX0xJTksobGliR0xFU3YyLCBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMsIHZvaWQsIEdMX0FQSUVO
VFJZLCAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqIHJlbmRlcmJ1ZmZlcnMpLCAobiwgcmVuZGVy
YnVmZmVycykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xEZWxldGVTaGFkZXIsIHZvaWQsIEdM
X0FQSUVOVFJZLCAoR0x1aW50IHNoYWRlciksIChzaGFkZXIpKTsKLVNPRlRfTElOSyhsaWJHTEVT
djIsIGdsRGVsZXRlVGV4dHVyZXMsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xzaXplaSBuLCBjb25z
dCBHTHVpbnQqIHRleHR1cmVzKSwgKG4sIHRleHR1cmVzKSk7Ci1TT0ZUX0xJTksobGliR0xFU3Yy
LCBnbERlcHRoRnVuYywgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gZnVuYyksIChmdW5jKSk7
Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbERlcHRoTWFzaywgdm9pZCwgR0xfQVBJRU5UUlksIChH
TGJvb2xlYW4gZmxhZyksIChmbGFnKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbERlcHRoUmFu
Z2VmLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMY2xhbXBmIHpOZWFyLCBHTGNsYW1wZiB6RmFyKSwg
KHpOZWFyLCB6RmFyKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbERldGFjaFNoYWRlciwgdm9p
ZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IHNoYWRlciksIChwcm9ncmFt
LCBzaGFkZXIpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsRGlzYWJsZSwgdm9pZCwgR0xfQVBJ
RU5UUlksIChHTGVudW0gY2FwKSwgKGNhcCkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xEaXNh
YmxlVmVydGV4QXR0cmliQXJyYXksIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IGluZGV4KSwg
KGluZGV4KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbERyYXdBcnJheXMsIHZvaWQsIEdMX0FQ
SUVOVFJZLCAoR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50KSwgKG1vZGUs
IGZpcnN0LCBjb3VudCkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xEcmF3RWxlbWVudHMsIHZv
aWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBl
LCBjb25zdCBHTHZvaWQqIGluZGljZXMpLCAobW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMpKTsK
LVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsRW5hYmxlLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51
bSBjYXApLCAoY2FwKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEVuYWJsZVZlcnRleEF0dHJp
YkFycmF5LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBpbmRleCksIChpbmRleCkpOwotU09G
VF9MSU5LKGxpYkdMRVN2MiwgZ2xGaW5pc2gsIHZvaWQsIEdMX0FQSUVOVFJZLCAodm9pZCksICgp
KTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsRmx1c2gsIHZvaWQsIEdMX0FQSUVOVFJZLCAodm9p
ZCksICgpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIs
IHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdM
ZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIEdMdWludCByZW5kZXJidWZmZXIpLCAodGFyZ2V0LCBh
dHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIHJlbmRlcmJ1ZmZlcikpOwotU09GVF9MSU5L
KGxpYkdMRVN2MiwgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRCwgdm9pZCwgR0xfQVBJRU5UUlksIChH
TGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHRleHRhcmdldCwgR0x1aW50
IHRleHR1cmUsIEdMaW50IGxldmVsKSwgKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCB0
ZXh0dXJlLCBsZXZlbCkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xGcm9udEZhY2UsIHZvaWQs
IEdMX0FQSUVOVFJZLCAoR0xlbnVtIG1vZGUpLCAobW9kZSkpOwotU09GVF9MSU5LKGxpYkdMRVN2
MiwgZ2xHZW5CdWZmZXJzLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMc2l6ZWkgbiwgR0x1aW50KiBi
dWZmZXJzKSwgKG4sIGJ1ZmZlcnMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2VuZXJhdGVN
aXBtYXAsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCksICh0YXJnZXQpKTsKLVNP
RlRfTElOSyhsaWJHTEVTdjIsIGdsR2VuRnJhbWVidWZmZXJzLCB2b2lkLCBHTF9BUElFTlRSWSwg
KEdMc2l6ZWkgbiwgR0x1aW50KiBmcmFtZWJ1ZmZlcnMpLCAobiwgZnJhbWVidWZmZXJzKSk7Ci1T
T0ZUX0xJTksobGliR0xFU3YyLCBnbEdlblJlbmRlcmJ1ZmZlcnMsIGludCwgR0xfQVBJRU5UUlks
IChHTHNpemVpIG4sIEdMdWludCogcmVuZGVyYnVmZmVycyksIChuLCByZW5kZXJidWZmZXJzKSk7
Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdlblRleHR1cmVzLCB2b2lkLCBHTF9BUElFTlRSWSwg
KEdMc2l6ZWkgbiwgR0x1aW50KiB0ZXh0dXJlcyksIChuLCB0ZXh0dXJlcykpOwotU09GVF9MSU5L
KGxpYkdMRVN2MiwgZ2xHZXRBY3RpdmVBdHRyaWIsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50
IHByb2dyYW0sIEdMdWludCBpbmRleCwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgs
IEdMaW50KiBzaXplLCBHTGVudW0qIHR5cGUsIEdMY2hhciogbmFtZSksIChwcm9ncmFtLCBpbmRl
eCwgYnVmc2l6ZSwgbGVuZ3RoLCBzaXplLCB0eXBlLCBuYW1lKSk7Ci1TT0ZUX0xJTksobGliR0xF
U3YyLCBnbEdldEFjdGl2ZVVuaWZvcm0sIEdMZW51bSwgR0xfQVBJRU5UUlksIChHTHVpbnQgcHJv
Z3JhbSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xp
bnQqIHNpemUsIEdMZW51bSogdHlwZSwgR0xjaGFyKiBuYW1lKSwgKHByb2dyYW0sIGluZGV4LCBi
dWZzaXplLCBsZW5ndGgsIHNpemUsIHR5cGUsIG5hbWUpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIs
IGdsR2V0QXR0YWNoZWRTaGFkZXJzLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBwcm9ncmFt
LCBHTHNpemVpIG1heGNvdW50LCBHTHNpemVpKiBjb3VudCwgR0x1aW50KiBzaGFkZXJzKSwgKHBy
b2dyYW0sIG1heGNvdW50LCBjb3VudCwgc2hhZGVycykpOwotU09GVF9MSU5LKGxpYkdMRVN2Miwg
Z2xHZXRBdHRyaWJMb2NhdGlvbiwgaW50LCBHTF9BUElFTlRSWSwgKEdMdWludCBwcm9ncmFtLCBj
b25zdCBHTGNoYXIqIG5hbWUpLCAocHJvZ3JhbSwgbmFtZSkpOwotU09GVF9MSU5LKGxpYkdMRVN2
MiwgZ2xHZXRCb29sZWFudiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gcG5hbWUsIEdMYm9v
bGVhbiogcGFyYW1zKSwgKHBuYW1lLCBwYXJhbXMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGds
R2V0QnVmZmVyUGFyYW1ldGVyaXYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCwg
R0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKSwgKHRhcmdldCwgcG5hbWUsIHBhcmFtcykpOwot
U09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xHZXRFcnJvciwgR0xlbnVtLCBHTF9BUElFTlRSWSwgKHZv
aWQpLCAoKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdldEZsb2F0diwgdm9pZCwgR0xfQVBJ
RU5UUlksIChHTGVudW0gcG5hbWUsIEdMZmxvYXQqIHBhcmFtcyksIChwbmFtZSwgcGFyYW1zKSk7
Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cml2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50
LCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpLCAodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFt
ZSwgcGFyYW1zKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdldEludGVnZXJ2LCB2b2lkLCBH
TF9BUElFTlRSWSwgKEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcyksIChwbmFtZSwgcGFyYW1z
KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdldFByb2dyYW1pdiwgdm9pZCwgR0xfQVBJRU5U
UlksIChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKSwgKHByb2dy
YW0sIHBuYW1lLCBwYXJhbXMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2V0UHJvZ3JhbUlu
Zm9Mb2csIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgYnVmc2l6
ZSwgR0xzaXplaSogbGVuZ3RoLCBHTGNoYXIqIGluZm9sb2cpLCAocHJvZ3JhbSwgYnVmc2l6ZSwg
bGVuZ3RoLCBpbmZvbG9nKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcml2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwgR0xpbnQqIHBhcmFtcyksICh0YXJnZXQsIHBuYW1lLCBwYXJhbXMpKTsKLVNPRlRfTElO
SyhsaWJHTEVTdjIsIGdsR2V0U2hhZGVyaXYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IHNo
YWRlciwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKSwgKHNoYWRlciwgcG5hbWUsIHBhcmFt
cykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xHZXRTaGFkZXJJbmZvTG9nLCB2b2lkLCBHTF9B
UElFTlRSWSwgKEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3Ro
LCBHTGNoYXIqIGluZm9sb2cpLCAoc2hhZGVyLCBidWZzaXplLCBsZW5ndGgsIGluZm9sb2cpKTsK
LVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0LCB2b2lkLCBH
TF9BUElFTlRSWSwgKEdMZW51bSBzaGFkZXJ0eXBlLCBHTGVudW0gcHJlY2lzaW9udHlwZSwgR0xp
bnQqIHJhbmdlLCBHTGludCogcHJlY2lzaW9uKSwgKHNoYWRlcnR5cGUsIHByZWNpc2lvbnR5cGUs
IHJhbmdlLCBwcmVjaXNpb24pKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2V0U2hhZGVyU291
cmNlLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgYnVmc2l6ZSwg
R0xzaXplaSogbGVuZ3RoLCBHTGNoYXIqIHNvdXJjZSksIChzaGFkZXIsIGJ1ZnNpemUsIGxlbmd0
aCwgc291cmNlKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdldFN0cmluZywgY29uc3QgR0x1
Ynl0ZSosIEdMX0FQSUVOVFJZLCAoR0xlbnVtIG5hbWUpLCAobmFtZSkpOwotU09GVF9MSU5LKGxp
YkdMRVN2MiwgZ2xHZXRUZXhQYXJhbWV0ZXJmdiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0g
dGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQqIHBhcmFtcyksICh0YXJnZXQsIHBuYW1lLCBw
YXJhbXMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2V0VGV4UGFyYW1ldGVyaXYsIHZvaWQs
IEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1z
KSwgKHRhcmdldCwgcG5hbWUsIHBhcmFtcykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xHZXRV
bmlmb3JtZnYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0
aW9uLCBHTGZsb2F0KiBwYXJhbXMpLCAocHJvZ3JhbSwgbG9jYXRpb24sIHBhcmFtcykpOwotU09G
VF9MSU5LKGxpYkdMRVN2MiwgZ2xHZXRVbmlmb3JtaXYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1
aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCogcGFyYW1zKSwgKHByb2dyYW0sIGxv
Y2F0aW9uLCBwYXJhbXMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2V0VW5pZm9ybUxvY2F0
aW9uLCBpbnQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciogbmFt
ZSksIChwcm9ncmFtLCBuYW1lKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdldFZlcnRleEF0
dHJpYmZ2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBH
TGZsb2F0KiBwYXJhbXMpLCAoaW5kZXgsIHBuYW1lLCBwYXJhbXMpKTsKLVNPRlRfTElOSyhsaWJH
TEVTdjIsIGdsR2V0VmVydGV4QXR0cmliaXYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKSwgKHRhcmdldCwgcG5hbWUsIHBhcmFt
cykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydiwgdm9p
ZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0x2b2lkKiogcG9p
bnRlciksIChpbmRleCwgcG5hbWUsIHBvaW50ZXIpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGds
SGludCwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gbW9kZSksICh0
YXJnZXQsIG1vZGUpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsSXNCdWZmZXIsIEdMYm9vbGVh
biwgR0xfQVBJRU5UUlksIChHTHVpbnQgYnVmZmVyKSwgKGJ1ZmZlcikpOwotU09GVF9MSU5LKGxp
YkdMRVN2MiwgZ2xJc0VuYWJsZWQsIEdMYm9vbGVhbiwgR0xfQVBJRU5UUlksIChHTGVudW0gY2Fw
KSwgKGNhcCkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xJc0ZyYW1lYnVmZmVyLCBHTGJvb2xl
YW4sIEdMX0FQSUVOVFJZLCAoR0x1aW50IGZyYW1lYnVmZmVyKSwgKGZyYW1lYnVmZmVyKSk7Ci1T
T0ZUX0xJTksobGliR0xFU3YyLCBnbElzUHJvZ3JhbSwgR0xib29sZWFuLCBHTF9BUElFTlRSWSwg
KEdMdWludCBwcm9ncmFtKSwgKHByb2dyYW0pKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsSXNS
ZW5kZXJidWZmZXIsIEdMYm9vbGVhbiwgR0xfQVBJRU5UUlksIChHTHVpbnQgcmVuZGVyYnVmZmVy
KSwgKHJlbmRlcmJ1ZmZlcikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xJc1NoYWRlciwgR0xi
b29sZWFuLCBHTF9BUElFTlRSWSwgKEdMdWludCBzaGFkZXIpLCAoc2hhZGVyKSk7Ci1TT0ZUX0xJ
TksobGliR0xFU3YyLCBnbElzVGV4dHVyZSwgR0xib29sZWFuLCBHTF9BUElFTlRSWSwgKEdMdWlu
dCB0ZXh0dXJlKSwgKHRleHR1cmUpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsTGluZVdpZHRo
LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZmxvYXQgd2lkdGgpLCAod2lkdGgpKTsKLVNPRlRfTElO
SyhsaWJHTEVTdjIsIGdsTGlua1Byb2dyYW0sIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IHBy
b2dyYW0pLCAocHJvZ3JhbSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xQaXhlbFN0b3JlaSwg
dm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKSwgKHBuYW1lLCBw
YXJhbSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xQb2x5Z29uT2Zmc2V0LCB2b2lkLCBHTF9B
UElFTlRSWSwgKEdMZmxvYXQgZmFjdG9yLCBHTGZsb2F0IHVuaXRzKSwgKGZhY3RvciwgdW5pdHMp
KTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsUmVhZFBpeGVscywgdm9pZCwgR0xfQVBJRU5UUlks
IChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVt
IGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9pZCogcGl4ZWxzKSwgKHgsIHksIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFJlbGVh
c2VTaGFkZXJDb21waWxlciwgdm9pZCwgR0xfQVBJRU5UUlksICh2b2lkKSwgKCkpOwotU09GVF9M
SU5LKGxpYkdMRVN2MiwgZ2xSZW5kZXJidWZmZXJTdG9yYWdlLCB2b2lkLCBHTF9BUElFTlRSWSwg
KEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQpLCAodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCkpOwot
U09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xTYW1wbGVDb3ZlcmFnZSwgdm9pZCwgR0xfQVBJRU5UUlks
IChHTGNsYW1wZiB2YWx1ZSwgR0xib29sZWFuIGludmVydCksICh2YWx1ZSwgaW52ZXJ0KSk7Ci1T
T0ZUX0xJTksobGliR0xFU3YyLCBnbFNjaXNzb3IsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xpbnQg
eCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpLCAoeCwgeSwgd2lkdGgs
IGhlaWdodCkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xTaGFkZXJCaW5hcnksIHZvaWQsIEdM
X0FQSUVOVFJZLCAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqIHNoYWRlcnMsIEdMZW51bSBiaW5h
cnlmb3JtYXQsIGNvbnN0IEdMdm9pZCogYmluYXJ5LCBHTHNpemVpIGxlbmd0aCksIChuLCBzaGFk
ZXJzLCBiaW5hcnlmb3JtYXQsIGJpbmFyeSwgbGVuZ3RoKSk7Ci1TT0ZUX0xJTksobGliR0xFU3Yy
LCBnbFNoYWRlclNvdXJjZSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgc2hhZGVyLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTGNoYXIqKiBzdHJpbmcsIGNvbnN0IEdMaW50KiBsZW5ndGgpLCAo
c2hhZGVyLCBjb3VudCwgc3RyaW5nLCBsZW5ndGgpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGds
U3RlbmNpbEZ1bmMsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwg
R0x1aW50IG1hc2spLCAoZnVuYywgcmVmLCBtYXNrKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBn
bFN0ZW5jaWxGdW5jU2VwYXJhdGUsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIGZhY2UsIEdM
ZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKSwgKGZhY2UsIGZ1bmMsIHJlZiwgbWFz
aykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xTdGVuY2lsTWFzaywgdm9pZCwgR0xfQVBJRU5U
UlksIChHTHVpbnQgbWFzayksIChtYXNrKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFN0ZW5j
aWxNYXNrU2VwYXJhdGUsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIGZhY2UsIEdMdWludCBt
YXNrKSwgKGZhY2UsIG1hc2spKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsU3RlbmNpbE9wLCB2
b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSBmYWlsLCBHTGVudW0gemZhaWwsIEdMZW51bSB6cGFz
cyksIChmYWlsLCB6ZmFpbCwgenBhc3MpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsU3RlbmNp
bE9wU2VwYXJhdGUsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIGZhY2UsIEdMZW51bSBmYWls
LCBHTGVudW0gemZhaWwsIEdMZW51bSB6cGFzcyksIChmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3Mp
KTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVGV4SW1hZ2UyRCwgdm9pZCwgR0xfQVBJRU5UUlks
IChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdM
ZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqIHBpeGVscyksICh0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscykpOwot
U09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xUZXhQYXJhbWV0ZXJmLCB2b2lkLCBHTF9BUElFTlRSWSwg
KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSksICh0YXJnZXQsIHBu
YW1lLCBwYXJhbSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xUZXhQYXJhbWV0ZXJmdiwgdm9p
ZCwgR0xfQVBJRU5UUlksIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxv
YXQqIHBhcmFtcyksICh0YXJnZXQsIHBuYW1lLCBwYXJhbXMpKTsKLVNPRlRfTElOSyhsaWJHTEVT
djIsIGdsVGV4UGFyYW1ldGVyaSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gdGFyZ2V0LCBH
TGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKSwgKHRhcmdldCwgcG5hbWUsIHBhcmFtKSk7Ci1TT0ZU
X0xJTksobGliR0xFU3YyLCBnbFRleFBhcmFtZXRlcml2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQqIHBhcmFtcyksICh0YXJnZXQs
IHBuYW1lLCBwYXJhbXMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVGV4U3ViSW1hZ2UyRCwg
dm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9m
ZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51
bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqIHBpeGVscyksICh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVs
cykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xVbmlmb3JtMWYsIHZvaWQsIEdMX0FQSUVOVFJZ
LCAoR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgeCksIChsb2NhdGlvbiwgeCkpOwotU09GVF9MSU5L
KGxpYkdMRVN2MiwgZ2xVbmlmb3JtMWZ2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0KiB2KSwgKGxvY2F0aW9uLCBjb3VudCwg
dikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xVbmlmb3JtMWksIHZvaWQsIEdMX0FQSUVOVFJZ
LCAoR0xpbnQgbG9jYXRpb24sIEdMaW50IHgpLCAobG9jYXRpb24sIHgpKTsKLVNPRlRfTElOSyhs
aWJHTEVTdjIsIGdsVW5pZm9ybTFpdiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQqIHYpLCAobG9jYXRpb24sIGNvdW50LCB2KSk7
Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFVuaWZvcm0yZiwgdm9pZCwgR0xfQVBJRU5UUlksIChH
TGludCBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpLCAobG9jYXRpb24sIHgsIHkpKTsK
LVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVW5pZm9ybTJmdiwgdm9pZCwgR0xfQVBJRU5UUlksIChH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCogdiksIChsb2NhdGlv
biwgY291bnQsIHYpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVW5pZm9ybTJpLCB2b2lkLCBH
TF9BUElFTlRSWSwgKEdMaW50IGxvY2F0aW9uLCBHTGludCB4LCBHTGludCB5KSwgKGxvY2F0aW9u
LCB4LCB5KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFVuaWZvcm0yaXYsIHZvaWQsIEdMX0FQ
SUVOVFJZLCAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50KiB2KSwg
KGxvY2F0aW9uLCBjb3VudCwgdikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xVbmlmb3JtM2Ys
IHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgeCwgR0xmbG9hdCB5
LCBHTGZsb2F0IHopLCAobG9jYXRpb24sIHgsIHksIHopKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIs
IGdsVW5pZm9ybTNmdiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGludCBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgY29uc3QgR0xmbG9hdCogdiksIChsb2NhdGlvbiwgY291bnQsIHYpKTsKLVNPRlRf
TElOSyhsaWJHTEVTdjIsIGdsVW5pZm9ybTNpLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMaW50IGxv
Y2F0aW9uLCBHTGludCB4LCBHTGludCB5LCBHTGludCB6KSwgKGxvY2F0aW9uLCB4LCB5LCB6KSk7
Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFVuaWZvcm0zaXYsIHZvaWQsIEdMX0FQSUVOVFJZLCAo
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50KiB2KSwgKGxvY2F0aW9u
LCBjb3VudCwgdikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xVbmlmb3JtNGYsIHZvaWQsIEdM
X0FQSUVOVFJZLCAoR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0
IHosIEdMZmxvYXQgdyksIChsb2NhdGlvbiwgeCwgeSwgeiwgdykpOwotU09GVF9MSU5LKGxpYkdM
RVN2MiwgZ2xVbmlmb3JtNGZ2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0KiB2KSwgKGxvY2F0aW9uLCBjb3VudCwgdikpOwot
U09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xVbmlmb3JtNGksIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xp
bnQgbG9jYXRpb24sIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHosIEdMaW50IHcpLCAobG9jYXRp
b24sIHgsIHksIHosIHcpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVW5pZm9ybTRpdiwgdm9p
ZCwgR0xfQVBJRU5UUlksIChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xp
bnQqIHYpLCAobG9jYXRpb24sIGNvdW50LCB2KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFVu
aWZvcm1NYXRyaXgyZnYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xpbnQgbG9jYXRpb24sIEdMc2l6
ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQqIHZhbHVlKSwgKGxv
Y2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwotU09GVF9MSU5LKGxpYkdMRVN2Miwg
Z2xVbmlmb3JtTWF0cml4M2Z2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0KiB2YWx1ZSks
IChsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKLVNPRlRfTElOSyhsaWJHTEVT
djIsIGdsVW5pZm9ybU1hdHJpeDRmdiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCogdmFs
dWUpLCAobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7Ci1TT0ZUX0xJTksobGli
R0xFU3YyLCBnbFVzZVByb2dyYW0sIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IHByb2dyYW0p
LCAocHJvZ3JhbSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xWYWxpZGF0ZVByb2dyYW0sIHZv
aWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IHByb2dyYW0pLCAocHJvZ3JhbSkpOwotU09GVF9MSU5L
KGxpYkdMRVN2MiwgZ2xWZXJ0ZXhBdHRyaWIxZiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQg
aW5keCwgR0xmbG9hdCB4KSwgKGluZHgsIHgpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVmVy
dGV4QXR0cmliMWZ2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBpbmR4LCBjb25zdCBHTGZs
b2F0KiB2YWx1ZXMpLCAoaW5keCwgdmFsdWVzKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFZl
cnRleEF0dHJpYjJmLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBpbmR4LCBHTGZsb2F0IHgs
IEdMZmxvYXQgeSksIChpbmR4LCB4LCB5KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFZlcnRl
eEF0dHJpYjJmdiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgaW5keCwgY29uc3QgR0xmbG9h
dCogdmFsdWVzKSwgKGluZHgsIHZhbHVlcykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xWZXJ0
ZXhBdHRyaWIzZiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgaW5keCwgR0xmbG9hdCB4LCBH
TGZsb2F0IHksIEdMZmxvYXQgeiksIChpbmR4LCB4LCB5LCB6KSk7Ci1TT0ZUX0xJTksobGliR0xF
U3YyLCBnbFZlcnRleEF0dHJpYjNmdiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgaW5keCwg
Y29uc3QgR0xmbG9hdCogdmFsdWVzKSwgKGluZHgsIHZhbHVlcykpOwotU09GVF9MSU5LKGxpYkdM
RVN2MiwgZ2xWZXJ0ZXhBdHRyaWI0Ziwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgaW5keCwg
R0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiwgR0xmbG9hdCB3KSwgKGluZHgsIHgsIHks
IHosIHcpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVmVydGV4QXR0cmliNGZ2LCB2b2lkLCBH
TF9BUElFTlRSWSwgKEdMdWludCBpbmR4LCBjb25zdCBHTGZsb2F0KiB2YWx1ZXMpLCAoaW5keCwg
dmFsdWVzKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFZlcnRleEF0dHJpYlBvaW50ZXIsIHZv
aWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IGluZHgsIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBH
TGJvb2xlYW4gbm9ybWFsaXplZCwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCogcHRyKSwg
KGluZHgsIHNpemUsIHR5cGUsIG5vcm1hbGl6ZWQsIHN0cmlkZSwgcHRyKSk7Ci1TT0ZUX0xJTkso
bGliR0xFU3YyLCBnbFZpZXdwb3J0LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMaW50IHgsIEdMaW50
IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KSwgKHgsIHksIHdpZHRoLCBoZWlnaHQp
KTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xTTEFORy9TaGFkZXJM
YW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNM
QU5HL1NoYWRlckxhbmcuaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNiwy
MCArNiwyMCBAQAogI2lmbmRlZiBfQ09NUElMRVJfSU5URVJGQUNFX0lOQ0xVREVEXwogI2RlZmlu
ZSBfQ09NUElMRVJfSU5URVJGQUNFX0lOQ0xVREVEXwogCi0jaWYgZGVmaW5lZChDT01QT05FTlRf
QlVJTEQpCisjaWYgZGVmaW5lZChDT01QT05FTlRfQlVJTEQpICYmICFkZWZpbmVkKEFOR0xFX1RS
QU5TTEFUT1JfU1RBVElDKQogI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9XSU42NCkK
IAotI2lmIGRlZmluZWQoQ09NUElMRVJfSU1QTEVNRU5UQVRJT04pCisjaWYgZGVmaW5lZChBTkdM
RV9UUkFOU0xBVE9SX0lNUExFTUVOVEFUSU9OKQogI2RlZmluZSBDT01QSUxFUl9FWFBPUlQgX19k
ZWNsc3BlYyhkbGxleHBvcnQpCiAjZWxzZQogI2RlZmluZSBDT01QSUxFUl9FWFBPUlQgX19kZWNs
c3BlYyhkbGxpbXBvcnQpCi0jZW5kaWYgIC8vIGRlZmluZWQoQ09NUElMRVJfSU1QTEVNRU5UQVRJ
T04pCisjZW5kaWYgIC8vIGRlZmluZWQoQU5HTEVfVFJBTlNMQVRPUl9JTVBMRU1FTlRBVElPTikK
IAotI2Vsc2UgIC8vIGRlZmluZWQoV0lOMzIpCisjZWxzZSAgLy8gZGVmaW5lZChfV0lOMzIpIHx8
IGRlZmluZWQoX1dJTjY0KQogI2RlZmluZSBDT01QSUxFUl9FWFBPUlQgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKICNlbmRpZgogCi0jZWxzZSAgLy8gZGVmaW5lZChDT01Q
T05FTlRfQlVJTEQpCisjZWxzZSAgLy8gZGVmaW5lZChDT01QT05FTlRfQlVJTEQpICYmICFkZWZp
bmVkKEFOR0xFX1RSQU5TTEFUT1JfU1RBVElDKQogI2RlZmluZSBDT01QSUxFUl9FWFBPUlQKICNl
bmRpZgogCkBAIC0zNyw3ICszNyw3IEBAIGV4dGVybiAiQyIgewogCiAvLyBWZXJzaW9uIG51bWJl
ciBmb3Igc2hhZGVyIHRyYW5zbGF0aW9uIEFQSS4KIC8vIEl0IGlzIGluY3JlbWVudGVkIGV2ZXJ5
dGltZSB0aGUgQVBJIGNoYW5nZXMuCi0jZGVmaW5lIEFOR0xFX1NIX1ZFUlNJT04gMTEwCisjZGVm
aW5lIEFOR0xFX1NIX1ZFUlNJT04gMTEyCiAKIC8vCiAvLyBUaGUgbmFtZXMgb2YgdGhlIGZvbGxv
d2luZyBlbnVtcyBoYXZlIGJlZW4gZGVyaXZlZCBieSByZXBsYWNpbmcgR0wgcHJlZml4CkBAIC0x
MDksMTIgKzEwOSwyMSBAQCB0eXBlZGVmIGVudW0gewogfSBTaERhdGFUeXBlOwogCiB0eXBlZGVm
IGVudW0geworICBTSF9QUkVDSVNJT05fSElHSFAgICAgID0gMHg1MDAxLAorICBTSF9QUkVDSVNJ
T05fTUVESVVNUCAgID0gMHg1MDAyLAorICBTSF9QUkVDSVNJT05fTE9XUCAgICAgID0gMHg1MDAz
LAorICBTSF9QUkVDSVNJT05fVU5ERUZJTkVEID0gMAorfSBTaFByZWNpc2lvblR5cGU7CisKK3R5
cGVkZWYgZW51bSB7CiAgIFNIX0lORk9fTE9HX0xFTkdUSCAgICAgICAgICAgICA9ICAweDhCODQs
CiAgIFNIX09CSkVDVF9DT0RFX0xFTkdUSCAgICAgICAgICA9ICAweDhCODgsICAvLyBHTF9TSEFE
RVJfU09VUkNFX0xFTkdUSAogICBTSF9BQ1RJVkVfVU5JRk9STVMgICAgICAgICAgICAgPSAgMHg4
Qjg2LAogICBTSF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIICAgPSAgMHg4Qjg3LAogICBTSF9B
Q1RJVkVfQVRUUklCVVRFUyAgICAgICAgICAgPSAgMHg4Qjg5LAogICBTSF9BQ1RJVkVfQVRUUklC
VVRFX01BWF9MRU5HVEggPSAgMHg4QjhBLAorICBTSF9WQVJZSU5HUyAgICAgICAgICAgICAgICAg
ICAgPSAgMHg4QkJCLAorICBTSF9WQVJZSU5HX01BWF9MRU5HVEggICAgICAgICAgPSAgMHg4QkJD
LAogICBTSF9NQVBQRURfTkFNRV9NQVhfTEVOR1RIICAgICAgPSAgMHg2MDAwLAogICBTSF9OQU1F
X01BWF9MRU5HVEggICAgICAgICAgICAgPSAgMHg2MDAxLAogICBTSF9IQVNIRURfTkFNRV9NQVhf
TEVOR1RIICAgICAgPSAgMHg2MDAyLApAQCAtMTI4LDcgKzEzNyw3IEBAIHR5cGVkZWYgZW51bSB7
CiAgIFNIX1ZBTElEQVRFX0xPT1BfSU5ERVhJTkcgID0gMHgwMDAxLAogICBTSF9JTlRFUk1FRElB
VEVfVFJFRSAgICAgICA9IDB4MDAwMiwKICAgU0hfT0JKRUNUX0NPREUgICAgICAgICAgICAgPSAw
eDAwMDQsCi0gIFNIX0FUVFJJQlVURVNfVU5JRk9STVMgICAgID0gMHgwMDA4LAorICBTSF9WQVJJ
QUJMRVMgICAgICAgICAgICAgICA9IDB4MDAwOCwKICAgU0hfTElORV9ESVJFQ1RJVkVTICAgICAg
ICAgPSAweDAwMTAsCiAgIFNIX1NPVVJDRV9QQVRIICAgICAgICAgICAgID0gMHgwMDIwLAogICBT
SF9NQVBfTE9OR19WQVJJQUJMRV9OQU1FUyA9IDB4MDA0MCwKQEAgLTEzNywxNCArMTQ2LDE0IEBA
IHR5cGVkZWYgZW51bSB7CiAgIC8vIFRoaXMgaXMgbmVlZGVkIG9ubHkgYXMgYSB3b3JrYXJvdW5k
IGZvciBjZXJ0YWluIE9wZW5HTCBkcml2ZXIgYnVncy4KICAgU0hfRU1VTEFURV9CVUlMVF9JTl9G
VU5DVElPTlMgPSAweDAxMDAsCiAKLSAgLy8gVGhpcyBpcyBhbiBleHBlcmltZW50YWwgZmxhZyB0
byBlbmZvcmNlIHJlc3RyaWN0aW9ucyB0aGF0IGFpbSB0byBwcmV2ZW50IAorICAvLyBUaGlzIGlz
IGFuIGV4cGVyaW1lbnRhbCBmbGFnIHRvIGVuZm9yY2UgcmVzdHJpY3Rpb25zIHRoYXQgYWltIHRv
IHByZXZlbnQKICAgLy8gdGltaW5nIGF0dGFja3MuCiAgIC8vIEl0IGdlbmVyYXRlcyBjb21waWxh
dGlvbiBlcnJvcnMgZm9yIHNoYWRlcnMgdGhhdCBjb3VsZCBleHBvc2Ugc2Vuc2l0aXZlCiAgIC8v
IHRleHR1cmUgaW5mb3JtYXRpb24gdmlhIHRoZSB0aW1pbmcgY2hhbm5lbC4KICAgLy8gVG8gdXNl
IHRoaXMgZmxhZywgeW91IG11c3QgY29tcGlsZSB0aGUgc2hhZGVyIHVuZGVyIHRoZSBXZWJHTCBz
cGVjCiAgIC8vICh1c2luZyB0aGUgU0hfV0VCR0xfU1BFQyBmbGFnKS4KICAgU0hfVElNSU5HX1JF
U1RSSUNUSU9OUyA9IDB4MDIwMCwKLSAgICAKKwogICAvLyBUaGlzIGZsYWcgcHJpbnRzIHRoZSBk
ZXBlbmRlbmN5IGdyYXBoIHRoYXQgaXMgdXNlZCB0byBlbmZvcmNlIHRpbWluZwogICAvLyByZXN0
cmljdGlvbnMgb24gZnJhZ21lbnQgc2hhZGVycy4KICAgLy8gVGhpcyBmbGFnIG9ubHkgaGFzIGFu
IGVmZmVjdCBpZiBhbGwgb2YgdGhlIGZvbGxvd2luZyBhcmUgdHJ1ZToKQEAgLTE1NCw2ICsxNjMs
MTEgQEAgdHlwZWRlZiBlbnVtIHsKICAgU0hfREVQRU5ERU5DWV9HUkFQSCA9IDB4MDQwMCwKIAog
ICAvLyBFbmZvcmNlIHRoZSBHTFNMIDEuMDE3IEFwcGVuZGl4IEEgc2VjdGlvbiA3IHBhY2tpbmcg
cmVzdHJpY3Rpb25zLgorICAvLyBUaGlzIGZsYWcgb25seSBlbmZvcmNlcyAoYW5kIGNhbiBvbmx5
IGVuZm9yY2UpIHRoZSBwYWNraW5nCisgIC8vIHJlc3RyaWN0aW9ucyBmb3IgdW5pZm9ybSB2YXJp
YWJsZXMgaW4gYm90aCB2ZXJ0ZXggYW5kIGZyYWdtZW50CisgIC8vIHNoYWRlcnMuIFNoQ2hlY2tW
YXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRzKCkgbGV0cyBlbWJlZGRlcnMKKyAgLy8gZW5mb3Jj
ZSB0aGUgcGFja2luZyByZXN0cmljdGlvbnMgZm9yIHZhcnlpbmcgdmFyaWFibGVzIGR1cmluZwor
ICAvLyBwcm9ncmFtIGxpbmsgdGltZS4KICAgU0hfRU5GT1JDRV9QQUNLSU5HX1JFU1RSSUNUSU9O
UyA9IDB4MDgwMCwKIAogICAvLyBUaGlzIGZsYWcgZW5zdXJlcyBhbGwgaW5kaXJlY3QgKGV4cHJl
c3Npb24tYmFzZWQpIGFycmF5IGluZGV4aW5nCkBAIC0xNjksNiArMTgzLDE5IEBAIHR5cGVkZWYg
ZW51bSB7CiAKICAgLy8gVGhpcyBmbGFnIGxpbWl0cyB0aGUgZGVwdGggb2YgdGhlIGNhbGwgc3Rh
Y2suCiAgIFNIX0xJTUlUX0NBTExfU1RBQ0tfREVQVEggPSAweDQwMDAsCisKKyAgLy8gVGhpcyBm
bGFnIGluaXRpYWxpemVzIGdsX1Bvc2l0aW9uIHRvIHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKSBh
dAorICAvLyB0aGUgYmVnaW5uaW5nIG9mIHRoZSB2ZXJ0ZXggc2hhZGVyLCBhbmQgaGFzIG5vIGVm
ZmVjdCBpbiB0aGUKKyAgLy8gZnJhZ21lbnQgc2hhZGVyLiBJdCBpcyBpbnRlbmRlZCBhcyBhIHdv
cmthcm91bmQgZm9yIGRyaXZlcnMgd2hpY2gKKyAgLy8gaW5jb3JyZWN0bHkgZmFpbCB0byBsaW5r
IHByb2dyYW1zIGlmIGdsX1Bvc2l0aW9uIGlzIG5vdCB3cml0dGVuLgorICBTSF9JTklUX0dMX1BP
U0lUSU9OID0gMHg4MDAwLAorCisgIC8vIFRoaXMgZmxhZyByZXBsYWNlcworICAvLyAgICJhICYm
IGIiIHdpdGggImEgPyBiIDogZmFsc2UiLAorICAvLyAgICJhIHx8IGIiIHdpdGggImEgPyB0cnVl
IDogYiIuCisgIC8vIFRoaXMgaXMgdG8gd29yayBhcm91bmQgYSBNYWNPU1ggZHJpdmVyIGJ1ZyB0
aGF0IHxifCBpcyBleGVjdXRlZAorICAvLyBpbmRlcGVuZGVudCBvZiB8YXwncyB2YWx1ZS4KKyAg
U0hfVU5GT0xEX1NIT1JUX0NJUkNVSVQgPSAweDEwMDAwLAogfSBTaENvbXBpbGVPcHRpb25zOwog
CiAvLyBEZWZpbmVzIGFsdGVybmF0ZSBzdHJhdGVnaWVzIGZvciBpbXBsZW1lbnRpbmcgYXJyYXkg
aW5kZXggY2xhbXBpbmcuCkBAIC0yNDcsNyArMjc0LDcgQEAgQ09NUElMRVJfRVhQT1JUIHZvaWQg
U2hJbml0QnVpbHRJblJlc291cgogCiAvLwogLy8gU2hIYW5kbGUgaGVsZCBieSBidXQgb3BhcXVl
IHRvIHRoZSBkcml2ZXIuICBJdCBpcyBhbGxvY2F0ZWQsCi0vLyBtYW5hZ2VkLCBhbmQgZGUtYWxs
b2NhdGVkIGJ5IHRoZSBjb21waWxlci4gSXQncyBjb250ZW50cyAKKy8vIG1hbmFnZWQsIGFuZCBk
ZS1hbGxvY2F0ZWQgYnkgdGhlIGNvbXBpbGVyLiBJdCdzIGNvbnRlbnRzCiAvLyBhcmUgZGVmaW5l
ZCBieSBhbmQgdXNlZCBieSB0aGUgY29tcGlsZXIuCiAvLwogLy8gSWYgaGFuZGxlIGNyZWF0aW9u
IGZhaWxzLCAwIHdpbGwgYmUgcmV0dXJuZWQuCkBAIC0yOTQsOSArMzIxLDggQEAgQ09NUElMRVJf
RVhQT1JUIHZvaWQgU2hEZXN0cnVjdChTaEhhbmRsZQogLy8gICAgICAgICAgICAgICAgICAgICAg
IENhbiBiZSBxdWVyaWVkIGJ5IGNhbGxpbmcgU2hHZXRJbmZvTG9nKCkuCiAvLyBTSF9PQkpFQ1Rf
Q09ERTogVHJhbnNsYXRlcyBpbnRlcm1lZGlhdGUgdHJlZSB0byBnbHNsIG9yIGhsc2wgc2hhZGVy
LgogLy8gICAgICAgICAgICAgICAgIENhbiBiZSBxdWVyaWVkIGJ5IGNhbGxpbmcgU2hHZXRPYmpl
Y3RDb2RlKCkuCi0vLyBTSF9BVFRSSUJVVEVTX1VOSUZPUk1TOiBFeHRyYWN0cyBhdHRyaWJ1dGVz
IGFuZCB1bmlmb3Jtcy4KLS8vICAgICAgICAgICAgICAgICAgICAgICAgIENhbiBiZSBxdWVyaWVk
IGJ5IGNhbGxpbmcgU2hHZXRBY3RpdmVBdHRyaWIoKSBhbmQKLS8vICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoR2V0QWN0aXZlVW5pZm9ybSgpLgorLy8gU0hfVkFSSUFCTEVTOiBFeHRyYWN0cyBh
dHRyaWJ1dGVzLCB1bmlmb3JtcywgYW5kIHZhcnlpbmdzLgorLy8gICAgICAgICAgICAgICBDYW4g
YmUgcXVlcmllZCBieSBjYWxsaW5nIFNoR2V0VmFyaWFibGVJbmZvKCkuCiAvLwogQ09NUElMRVJf
RVhQT1JUIGludCBTaENvbXBpbGUoCiAgICAgY29uc3QgU2hIYW5kbGUgaGFuZGxlLApAQCAtMzIy
LDYgKzM0OCw5IEBAIENPTVBJTEVSX0VYUE9SVCBpbnQgU2hDb21waWxlKAogLy8gU0hfQUNUSVZF
X1VOSUZPUk1fTUFYX0xFTkdUSDogdGhlIGxlbmd0aCBvZiB0aGUgbG9uZ2VzdCBhY3RpdmUgdW5p
Zm9ybQogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgbmFtZSBpbmNs
dWRpbmcgdGhlIG51bGwKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcm1pbmF0
aW9uIGNoYXJhY3Rlci4KKy8vIFNIX1ZBUllJTkdTOiB0aGUgbnVtYmVyIG9mIHZhcnlpbmcgdmFy
aWFibGVzLgorLy8gU0hfVkFSWUlOR19NQVhfTEVOR1RIOiB0aGUgbGVuZ3RoIG9mIHRoZSBsb25n
ZXN0IHZhcnlpbmcgdmFyaWFibGUgbmFtZQorLy8gICAgICAgICAgICAgICAgICAgICAgICBpbmNs
dWRpbmcgdGhlIG51bGwgdGVybWluYXRpb24gY2hhcmFjdGVyLgogLy8gU0hfTUFQUEVEX05BTUVf
TUFYX0xFTkdUSDogdGhlIGxlbmd0aCBvZiB0aGUgbWFwcGVkIHZhcmlhYmxlIG5hbWUgaW5jbHVk
aW5nCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbnVsbCB0ZXJtaW5hdGlvbiBj
aGFyYWN0ZXIuCiAvLyBTSF9OQU1FX01BWF9MRU5HVEg6IHRoZSBtYXggbGVuZ3RoIG9mIGEgdXNl
ci1kZWZpbmVkIG5hbWUgaW5jbHVkaW5nIHRoZQpAQCAtMzU1LDYwICszODQsNDQgQEAgQ09NUElM
RVJfRVhQT1JUIHZvaWQgU2hHZXRJbmZvTG9nKGNvbnN0IAogLy8gICAgICAgICAgU2hHZXRJbmZv
IHdpdGggU0hfT0JKRUNUX0NPREVfTEVOR1RILgogQ09NUElMRVJfRVhQT1JUIHZvaWQgU2hHZXRP
YmplY3RDb2RlKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwgY2hhciogb2JqQ29kZSk7CiAKLS8vIFJl
dHVybnMgaW5mb3JtYXRpb24gYWJvdXQgYW4gYWN0aXZlIGF0dHJpYnV0ZSB2YXJpYWJsZS4KKy8v
IFJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgYSBzaGFkZXIgdmFyaWFibGUuCiAvLyBQYXJhbWV0
ZXJzOgogLy8gaGFuZGxlOiBTcGVjaWZpZXMgdGhlIGNvbXBpbGVyCi0vLyBpbmRleDogU3BlY2lm
aWVzIHRoZSBpbmRleCBvZiB0aGUgYXR0cmlidXRlIHZhcmlhYmxlIHRvIGJlIHF1ZXJpZWQuCisv
LyB2YXJpYWJsZVR5cGU6IFNwZWNpZmllcyB0aGUgdmFyaWFibGUgdHlwZTsgb3B0aW9ucyBpbmNs
dWRlCisvLyAgICAgICAgICAgICAgIFNIX0FDVElWRV9BVFRSSUJVVEVTLCBTSF9BQ1RJVkVfVU5J
Rk9STVMsIFNIX1ZBUllJTkdTLgorLy8gaW5kZXg6IFNwZWNpZmllcyB0aGUgaW5kZXggb2YgdGhl
IHZhcmlhYmxlIHRvIGJlIHF1ZXJpZWQuCiAvLyBsZW5ndGg6IFJldHVybnMgdGhlIG51bWJlciBv
ZiBjaGFyYWN0ZXJzIGFjdHVhbGx5IHdyaXR0ZW4gaW4gdGhlIHN0cmluZwogLy8gICAgICAgICBp
bmRpY2F0ZWQgYnkgbmFtZSAoZXhjbHVkaW5nIHRoZSBudWxsIHRlcm1pbmF0b3IpIGlmIGEgdmFs
dWUgb3RoZXIKIC8vICAgICAgICAgdGhhbiBOVUxMIGlzIHBhc3NlZC4KLS8vIHNpemU6IFJldHVy
bnMgdGhlIHNpemUgb2YgdGhlIGF0dHJpYnV0ZSB2YXJpYWJsZS4KLS8vIHR5cGU6IFJldHVybnMg
dGhlIGRhdGEgdHlwZSBvZiB0aGUgYXR0cmlidXRlIHZhcmlhYmxlLgorLy8gc2l6ZTogUmV0dXJu
cyB0aGUgc2l6ZSBvZiB0aGUgdmFyaWFibGUuCisvLyB0eXBlOiBSZXR1cm5zIHRoZSBkYXRhIHR5
cGUgb2YgdGhlIHZhcmlhYmxlLgorLy8gcHJlY2lzaW9uOiBSZXR1cm5zIHRoZSBwcmVjaXNpb24g
b2YgdGhlIHZhcmlhYmxlLgorLy8gc3RhdGljVXNlOiBSZXR1cm5zIDEgaWYgdGhlIHZhcmlhYmxl
IGlzIGFjY2Vzc2VkIGluIGEgc3RhdGVtZW50IGFmdGVyCisvLyAgICAgICAgICAgIHByZS1wcm9j
ZXNzaW5nLCB3aGV0aGVyIG9yIG5vdCBydW4tdGltZSBmbG93IG9mIGNvbnRyb2wgd2lsbAorLy8g
ICAgICAgICAgICBjYXVzZSB0aGF0IHN0YXRlbWVudCB0byBiZSBleGVjdXRlZC4KKy8vICAgICAg
ICAgICAgUmV0dXJucyAwIG90aGVyd2lzZS4KIC8vIG5hbWU6IFJldHVybnMgYSBudWxsIHRlcm1p
bmF0ZWQgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG5hbWUgb2YgdGhlCi0vLyAgICAgICBhdHRyaWJ1
dGUgdmFyaWFibGUuIEl0IGlzIGFzc3VtZWQgdGhhdCBuYW1lIGhhcyBlbm91Z2ggbWVtb3J5IHRv
Ci0vLyAgICAgICBhY2NvbW9kYXRlIHRoZSBhdHRyaWJ1dGUgdmFyaWFibGUgbmFtZS4gVGhlIHNp
emUgb2YgdGhlIGJ1ZmZlcgotLy8gICAgICAgcmVxdWlyZWQgdG8gc3RvcmUgdGhlIGF0dHJpYnV0
ZSB2YXJpYWJsZSBuYW1lIGNhbiBiZSBvYnRhaW5lZCBieQotLy8gICAgICAgY2FsbGluZyBTaEdl
dEluZm8gd2l0aCBTSF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEguCisvLyAgICAgICB2YXJp
YWJsZS4gSXQgaXMgYXNzdW1lZCB0aGF0IG5hbWUgaGFzIGVub3VnaCBtZW1vcnkgdG8gYWNjb3Jt
b2RhdGUKKy8vICAgICAgIHRoZSB2YXJpYWJsZSBuYW1lLiBUaGUgc2l6ZSBvZiB0aGUgYnVmZmVy
IHJlcXVpcmVkIHRvIHN0b3JlIHRoZQorLy8gICAgICAgdmFyaWFibGUgbmFtZSBjYW4gYmUgb2J0
YWluZWQgYnkgY2FsbGluZyBTaEdldEluZm8gd2l0aAorLy8gICAgICAgU0hfQUNUSVZFX0FUVFJJ
QlVURV9NQVhfTEVOR1RILCBTSF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RILAorLy8gICAgICAg
U0hfVkFSWUlOR19NQVhfTEVOR1RILgogLy8gbWFwcGVkTmFtZTogUmV0dXJucyBhIG51bGwgdGVy
bWluYXRlZCBzdHJpbmcgY29udGFpbmluZyB0aGUgbWFwcGVkIG5hbWUgb2YKLS8vICAgICAgICAg
ICAgIHRoZSBhdHRyaWJ1dGUgdmFyaWFibGUsIEl0IGlzIGFzc3VtZWQgdGhhdCBtYXBwZWROYW1l
IGhhcyBlbm91Z2gKLS8vICAgICAgICAgICAgIG1lbW9yeSAoU0hfTUFQUEVEX05BTUVfTUFYX0xF
TkdUSCksIG9yIE5VTEwgaWYgZG9uJ3QgY2FyZQotLy8gICAgICAgICAgICAgYWJvdXQgdGhlIG1h
cHBlZCBuYW1lLiBJZiB0aGUgbmFtZSBpcyBub3QgbWFwcGVkLCB0aGVuIG5hbWUgYW5kCi0vLyAg
ICAgICAgICAgICBtYXBwZWROYW1lIGFyZSB0aGUgc2FtZS4KLUNPTVBJTEVSX0VYUE9SVCB2b2lk
IFNoR2V0QWN0aXZlQXR0cmliKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwKKy8vICAgICAgICAgICAg
IHRoZSB2YXJpYWJsZSwgSXQgaXMgYXNzdW1lZCB0aGF0IG1hcHBlZE5hbWUgaGFzIGVub3VnaCBt
ZW1vcnkKKy8vICAgICAgICAgICAgIChTSF9NQVBQRURfTkFNRV9NQVhfTEVOR1RIKSwgb3IgTlVM
TCBpZiBkb24ndCBjYXJlIGFib3V0IHRoZQorLy8gICAgICAgICAgICAgbWFwcGVkIG5hbWUuIElm
IHRoZSBuYW1lIGlzIG5vdCBtYXBwZWQsIHRoZW4gbmFtZSBhbmQgbWFwcGVkTmFtZQorLy8gICAg
ICAgICAgICAgYXJlIHRoZSBzYW1lLgorQ09NUElMRVJfRVhQT1JUIHZvaWQgU2hHZXRWYXJpYWJs
ZUluZm8oY29uc3QgU2hIYW5kbGUgaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2hTaGFkZXJJbmZvIHZhcmlhYmxlVHlwZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCogbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50KiBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2hEYXRhVHlwZSogdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNoUHJlY2lzaW9uVHlwZSogcHJlY2lzaW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50KiBzdGF0aWNVc2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyKiBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciogbWFwcGVkTmFtZSk7CiAKLS8vIFJldHVybnMgaW5mb3JtYXRp
b24gYWJvdXQgYW4gYWN0aXZlIHVuaWZvcm0gdmFyaWFibGUuCi0vLyBQYXJhbWV0ZXJzOgotLy8g
aGFuZGxlOiBTcGVjaWZpZXMgdGhlIGNvbXBpbGVyCi0vLyBpbmRleDogU3BlY2lmaWVzIHRoZSBp
bmRleCBvZiB0aGUgdW5pZm9ybSB2YXJpYWJsZSB0byBiZSBxdWVyaWVkLgotLy8gbGVuZ3RoOiBS
ZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBhY3R1YWxseSB3cml0dGVuIGluIHRoZSBz
dHJpbmcKLS8vICAgICAgICAgaW5kaWNhdGVkIGJ5IG5hbWUgKGV4Y2x1ZGluZyB0aGUgbnVsbCB0
ZXJtaW5hdG9yKSBpZiBhIHZhbHVlCi0vLyAgICAgICAgIG90aGVyIHRoYW4gTlVMTCBpcyBwYXNz
ZWQuCi0vLyBzaXplOiBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSB1bmlmb3JtIHZhcmlhYmxlLgot
Ly8gdHlwZTogUmV0dXJucyB0aGUgZGF0YSB0eXBlIG9mIHRoZSB1bmlmb3JtIHZhcmlhYmxlLgot
Ly8gbmFtZTogUmV0dXJucyBhIG51bGwgdGVybWluYXRlZCBzdHJpbmcgY29udGFpbmluZyB0aGUg
bmFtZSBvZiB0aGUKLS8vICAgICAgIHVuaWZvcm0gdmFyaWFibGUuIEl0IGlzIGFzc3VtZWQgdGhh
dCBuYW1lIGhhcyBlbm91Z2ggbWVtb3J5IHRvCi0vLyAgICAgICBhY2NvbW9kYXRlIHRoZSB1bmlm
b3JtIHZhcmlhYmxlIG5hbWUuIFRoZSBzaXplIG9mIHRoZSBidWZmZXIgcmVxdWlyZWQKLS8vICAg
ICAgIHRvIHN0b3JlIHRoZSB1bmlmb3JtIHZhcmlhYmxlIG5hbWUgY2FuIGJlIG9idGFpbmVkIGJ5
IGNhbGxpbmcKLS8vICAgICAgIFNoR2V0SW5mbyB3aXRoIFNIX0FDVElWRV9VTklGT1JNU19NQVhf
TEVOR1RILgotLy8gbWFwcGVkTmFtZTogUmV0dXJucyBhIG51bGwgdGVybWluYXRlZCBzdHJpbmcg
Y29udGFpbmluZyB0aGUgbWFwcGVkIG5hbWUgb2YKLS8vICAgICAgICAgICAgIHRoZSB1bmlmb3Jt
IHZhcmlhYmxlLCBJdCBpcyBhc3N1bWVkIHRoYXQgbWFwcGVkTmFtZSBoYXMgZW5vdWdoCi0vLyAg
ICAgICAgICAgICBtZW1vcnkgKFNIX01BUFBFRF9OQU1FX01BWF9MRU5HVEgpLCBvciBOVUxMIGlm
IGRvbid0IGNhcmUKLS8vICAgICAgICAgICAgIGFib3V0IHRoZSBtYXBwZWQgbmFtZS4gSWYgdGhl
IG5hbWUgaXMgbm90IG1hcHBlZCwgdGhlbiBuYW1lIGFuZAotLy8gICAgICAgICAgICAgbWFwcGVk
TmFtZSBhcmUgdGhlIHNhbWUuCi1DT01QSUxFUl9FWFBPUlQgdm9pZCBTaEdldEFjdGl2ZVVuaWZv
cm0oY29uc3QgU2hIYW5kbGUgaGFuZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QqIGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQqIHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2hEYXRhVHlwZSogdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyKiBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXIqIG1hcHBlZE5hbWUpOwotCiAvLyBSZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IGEgbmFtZSBo
YXNoaW5nIGVudHJ5IGZyb20gdGhlIGxhdGVzdCBjb21waWxlLgogLy8gUGFyYW1ldGVyczoKIC8v
IGhhbmRsZTogU3BlY2lmaWVzIHRoZSBjb21waWxlcgpAQCAtNDM5LDYgKzQ1MiwyNSBAQCBDT01Q
SUxFUl9FWFBPUlQgdm9pZCBTaEdldEluZm9Qb2ludGVyKGNvCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNoU2hhZGVySW5mbyBwbmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdm9pZCoqIHBhcmFtcyk7CiAKK3R5cGVkZWYgc3RydWN0Cit7
CisgICAgU2hEYXRhVHlwZSB0eXBlOworICAgIGludCBzaXplOworfSBTaFZhcmlhYmxlSW5mbzsK
KworLy8gUmV0dXJucyAxIGlmIHRoZSBwYXNzZWQgaW4gdmFyaWFibGVzIHBhY2sgaW4gbWF4VmVj
dG9ycyBmb2xsb3dpbmcKKy8vIHRoZSBwYWNraW5nIHJ1bGVzIGZyb20gdGhlIEdMU0wgMS4wMTcg
c3BlYywgQXBwZW5kaXggQSwgc2VjdGlvbiA3LgorLy8gUmV0dXJucyAwIG90aGVyd2lzZS4gQWxz
byBsb29rIGF0IHRoZSBTSF9FTkZPUkNFX1BBQ0tJTkdfUkVTVFJJQ1RJT05TCisvLyBmbGFnIGFi
b3ZlLgorLy8gUGFyYW1ldGVyczoKKy8vIG1heFZlY3RvcnM6IHRoZSBhdmFpbGFibGUgcm93cyBv
ZiByZWdpc3RlcnMuCisvLyB2YXJJbmZvQXJyYXk6IGFuIGFycmF5IG9mIHZhcmlhYmxlIGluZm8g
KHR5cGVzIGFuZCBzaXplcykuCisvLyB2YXJJbmZvQXJyYXlTaXplOiB0aGUgc2l6ZSBvZiB0aGUg
dmFyaWFibGUgYXJyYXkuCitDT01QSUxFUl9FWFBPUlQgaW50IFNoQ2hlY2tWYXJpYWJsZXNXaXRo
aW5QYWNraW5nTGltaXRzKAorICAgIGludCBtYXhWZWN0b3JzLAorICAgIFNoVmFyaWFibGVJbmZv
KiB2YXJJbmZvQXJyYXksCisgICAgc2l6ZV90IHZhckluZm9BcnJheVNpemUpOworCiAjaWZkZWYg
X19jcGx1c3BsdXMKIH0KICNlbmRpZgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5j
bHVkZS9LSFIva2hycGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9pbmNsdWRlL0tIUi9raHJwbGF0Zm9ybS5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0tIUi9raHJwbGF0Zm9ybS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKIC8qIEtocm9ub3MgcGxhdGZvcm0tc3BlY2lmaWMgdHlw
ZXMgYW5kIGRlZmluaXRpb25zLgogICoKLSAqICRSZXZpc2lvbjogOTM1NiAkIG9uICREYXRlOiAy
MDA5LTEwLTIxIDAyOjUyOjI1IC0wNzAwIChXZWQsIDIxIE9jdCAyMDA5KSAkCisgKiAkUmV2aXNp
b246IDIzMjk4ICQgb24gJERhdGU6IDIwMTMtMDktMzAgMTc6MDc6MTMgLTA3MDAgKE1vbiwgMzAg
U2VwIDIwMTMpICQKICAqCiAgKiBBZG9wdGVycyBtYXkgbW9kaWZ5IHRoaXMgZmlsZSB0byBzdWl0
IHRoZWlyIHBsYXRmb3JtLiBBZG9wdGVycyBhcmUKICAqIGVuY291cmFnZWQgdG8gc3VibWl0IHBs
YXRmb3JtIHNwZWNpZmljIG1vZGlmaWNhdGlvbnMgdG8gdGhlIEtocm9ub3MKQEAgLTIyMSwxMCAr
MjIxLDIzIEBAIHR5cGVkZWYgc2lnbmVkICAgY2hhciAgICAgICAgICBraHJvbm9zX2kKIHR5cGVk
ZWYgdW5zaWduZWQgY2hhciAgICAgICAgICBraHJvbm9zX3VpbnQ4X3Q7CiB0eXBlZGVmIHNpZ25l
ZCAgIHNob3J0IGludCAgICAga2hyb25vc19pbnQxNl90OwogdHlwZWRlZiB1bnNpZ25lZCBzaG9y
dCBpbnQgICAgIGtocm9ub3NfdWludDE2X3Q7CisKKy8qCisgKiBUeXBlcyB0aGF0IGRpZmZlciBi
ZXR3ZWVuIExMUDY0IGFuZCBMUDY0IGFyY2hpdGVjdHVyZXMgLSBpbiBMTFA2NCwgCisgKiBwb2lu
dGVycyBhcmUgNjQgYml0cywgYnV0ICdsb25nJyBpcyBzdGlsbCAzMiBiaXRzLiBXaW42NCBhcHBl
YXJzCisgKiB0byBiZSB0aGUgb25seSBMTFA2NCBhcmNoaXRlY3R1cmUgaW4gY3VycmVudCB1c2Uu
CisgKi8KKyNpZmRlZiBfV0lONjQKK3R5cGVkZWYgc2lnbmVkICAgbG9uZyBsb25nIGludCBraHJv
bm9zX2ludHB0cl90OwordHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IGtocm9ub3NfdWlu
dHB0cl90OwordHlwZWRlZiBzaWduZWQgICBsb25nIGxvbmcgaW50IGtocm9ub3Nfc3NpemVfdDsK
K3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBraHJvbm9zX3VzaXplX3Q7CisjZWxzZQog
dHlwZWRlZiBzaWduZWQgICBsb25nICBpbnQgICAgIGtocm9ub3NfaW50cHRyX3Q7CiB0eXBlZGVm
IHVuc2lnbmVkIGxvbmcgIGludCAgICAga2hyb25vc191aW50cHRyX3Q7CiB0eXBlZGVmIHNpZ25l
ZCAgIGxvbmcgIGludCAgICAga2hyb25vc19zc2l6ZV90OwogdHlwZWRlZiB1bnNpZ25lZCBsb25n
ICBpbnQgICAgIGtocm9ub3NfdXNpemVfdDsKKyNlbmRpZgogCiAjaWYgS0hST05PU19TVVBQT1JU
X0ZMT0FUCiAvKgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL0FOR0xFLnNsbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvQU5HTEUuc2xuCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL0FOR0xFLnNsbgkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACivvu78NCitNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBT
b2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMS4wMA0KKyMgVmlzdWFsIEMrKyBFeHByZXNz
IDIwMTANCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIp
ID0gImxpYkVHTCIsICJsaWJFR0xcbGliRUdMLnZjeHByb2oiLCAie0U3NDZGQ0E5LTY0QzMtNDMz
RS04NUU4LTlBNUE2N0FCN0VENn0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04
QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibGliR0xFU3YyIiwgImxpYkdMRVN2Mlxs
aWJHTEVTdjIudmN4cHJvaiIsICJ7QjU4NzFBN0EtOTY4Qy00MkUzLUEzM0ItOTgxRTZGNDQ4RTc4
fSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBD
OTFCQzk0Mn0iKSA9ICJ0cmFuc2xhdG9yIiwgImNvbXBpbGVyXHRyYW5zbGF0b3IudmN4cHJvaiIs
ICJ7NUIzQTZEQjgtMUU3RS00MEQ3LTkyQjktREE4QUFFNjE5RkFEfSINCitFbmRQcm9qZWN0DQor
UHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJwcmVw
cm9jZXNzb3IiLCAiY29tcGlsZXJccHJlcHJvY2Vzc29yXHByZXByb2Nlc3Nvci52Y3hwcm9qIiwg
IntGQkUzMkRGMy0wRkIwLTRGMkYtQTQyNC0yQzIxQkQ3QkMzMjV9Ig0KK0VuZFByb2plY3QNCitH
bG9iYWwNCisJR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0g
cHJlU29sdXRpb24NCisJCURlYnVnfFdpbjMyID0gRGVidWd8V2luMzINCisJCURlYnVnfHg2NCA9
IERlYnVnfHg2NA0KKwkJUmVsZWFzZXxXaW4zMiA9IFJlbGVhc2V8V2luMzINCisJCVJlbGVhc2V8
eDY0ID0gUmVsZWFzZXx4NjQNCisJRW5kR2xvYmFsU2VjdGlvbg0KKwlHbG9iYWxTZWN0aW9uKFBy
b2plY3RDb25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHBvc3RTb2x1dGlvbg0KKwkJe0U3NDZGQ0E5
LTY0QzMtNDMzRS04NUU4LTlBNUE2N0FCN0VENn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVi
dWd8V2luMzINCisJCXtFNzQ2RkNBOS02NEMzLTQzM0UtODVFOC05QTVBNjdBQjdFRDZ9LkRlYnVn
fFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0U3NDZGQ0E5LTY0QzMtNDMzRS04NUU4
LTlBNUE2N0FCN0VENn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0U3NDZG
Q0E5LTY0QzMtNDMzRS04NUU4LTlBNUE2N0FCN0VENn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1
Z3x4NjQNCisJCXtFNzQ2RkNBOS02NEMzLTQzM0UtODVFOC05QTVBNjdBQjdFRDZ9LlJlbGVhc2V8
V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0U3NDZGQ0E5LTY0QzMtNDMzRS04
NUU4LTlBNUE2N0FCN0VENn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0K
KwkJe0U3NDZGQ0E5LTY0QzMtNDMzRS04NUU4LTlBNUE2N0FCN0VENn0uUmVsZWFzZXx4NjQuQWN0
aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtFNzQ2RkNBOS02NEMzLTQzM0UtODVFOC05QTVBNjdB
QjdFRDZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0I1ODcxQTdBLTk2
OEMtNDJFMy1BMzNCLTk4MUU2RjQ0OEU3OH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8
V2luMzINCisJCXtCNTg3MUE3QS05NjhDLTQyRTMtQTMzQi05ODFFNkY0NDhFNzh9LkRlYnVnfFdp
bjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0I1ODcxQTdBLTk2OEMtNDJFMy1BMzNCLTk4
MUU2RjQ0OEU3OH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0I1ODcxQTdB
LTk2OEMtNDJFMy1BMzNCLTk4MUU2RjQ0OEU3OH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4
NjQNCisJCXtCNTg3MUE3QS05NjhDLTQyRTMtQTMzQi05ODFFNkY0NDhFNzh9LlJlbGVhc2V8V2lu
MzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0I1ODcxQTdBLTk2OEMtNDJFMy1BMzNC
LTk4MUU2RjQ0OEU3OH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJ
e0I1ODcxQTdBLTk2OEMtNDJFMy1BMzNCLTk4MUU2RjQ0OEU3OH0uUmVsZWFzZXx4NjQuQWN0aXZl
Q2ZnID0gUmVsZWFzZXx4NjQNCisJCXtCNTg3MUE3QS05NjhDLTQyRTMtQTMzQi05ODFFNkY0NDhF
Nzh9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezVCM0E2REI4LTFFN0Ut
NDBENy05MkI5LURBOEFBRTYxOUZBRH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2lu
MzINCisJCXs1QjNBNkRCOC0xRTdFLTQwRDctOTJCOS1EQThBQUU2MTlGQUR9LkRlYnVnfFdpbjMy
LkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezVCM0E2REI4LTFFN0UtNDBENy05MkI5LURBOEFB
RTYxOUZBRH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezVCM0E2REI4LTFF
N0UtNDBENy05MkI5LURBOEFBRTYxOUZBRH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQN
CisJCXs1QjNBNkRCOC0xRTdFLTQwRDctOTJCOS1EQThBQUU2MTlGQUR9LlJlbGVhc2V8V2luMzIu
QWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezVCM0E2REI4LTFFN0UtNDBENy05MkI5LURB
OEFBRTYxOUZBRH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezVC
M0E2REI4LTFFN0UtNDBENy05MkI5LURBOEFBRTYxOUZBRH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2Zn
ID0gUmVsZWFzZXx4NjQNCisJCXs1QjNBNkRCOC0xRTdFLTQwRDctOTJCOS1EQThBQUU2MTlGQUR9
LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0ZCRTMyREYzLTBGQjAtNEYy
Ri1BNDI0LTJDMjFCRDdCQzMyNX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIN
CisJCXtGQkUzMkRGMy0wRkIwLTRGMkYtQTQyNC0yQzIxQkQ3QkMzMjV9LkRlYnVnfFdpbjMyLkJ1
aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0ZCRTMyREYzLTBGQjAtNEYyRi1BNDI0LTJDMjFCRDdC
QzMyNX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0ZCRTMyREYzLTBGQjAt
NEYyRi1BNDI0LTJDMjFCRDdCQzMyNX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJ
CXtGQkUzMkRGMy0wRkIwLTRGMkYtQTQyNC0yQzIxQkQ3QkMzMjV9LlJlbGVhc2V8V2luMzIuQWN0
aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0ZCRTMyREYzLTBGQjAtNEYyRi1BNDI0LTJDMjFC
RDdCQzMyNX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0ZCRTMy
REYzLTBGQjAtNEYyRi1BNDI0LTJDMjFCRDdCQzMyNX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0g
UmVsZWFzZXx4NjQNCisJCXtGQkUzMkRGMy0wRkIwLTRGMkYtQTQyNC0yQzIxQkQ3QkMzMjV9LlJl
bGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwlFbmRHbG9iYWxTZWN0aW9uDQorCUds
b2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uDQorCQlIaWRlU29s
dXRpb25Ob2RlID0gRkFMU0UNCisJRW5kR2xvYmFsU2VjdGlvbg0KK0VuZEdsb2JhbA0KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9idWlsZF9hbmdsZS5neXBpCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9idWlsZF9hbmdsZS5neXBpCShyZXZpc2lv
biAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYnVpbGRfYW5nbGUuZ3lw
aQkod29ya2luZyBjb3B5KQpAQCAtNSw2OCArNSwxMSBAQAogewogICAndmFyaWFibGVzJzogewog
ICAgICdhbmdsZV9jb2RlJzogMSwKLSAgfSwKLSAgJ3RhcmdldF9kZWZhdWx0cyc6IHsKLSAgICAn
ZGVmaW5lcyc6IFsKLSAgICAgICdBTkdMRV9ESVNBQkxFX1RSQUNFJywKLSAgICAgICdBTkdMRV9D
T01QSUxFX09QVElNSVpBVElPTl9MRVZFTD1EM0RDT01QSUxFX09QVElNSVpBVElPTl9MRVZFTDEn
LAotICAgICAgJ0FOR0xFX1BSRUxPQURFRF9EM0RDT01QSUxFUl9NT0RVTEVfTkFNRVM9eyBURVhU
KCJkM2Rjb21waWxlcl80Ni5kbGwiKSwgVEVYVCgiZDNkY29tcGlsZXJfNDMuZGxsIikgfScsCi0g
ICAgXSwKLSAgfSwKLSAgJ3RhcmdldHMnOiBbCi0gICAgewotICAgICAgJ3RhcmdldF9uYW1lJzog
J3ByZXByb2Nlc3NvcicsCi0gICAgICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScsCi0gICAgICAn
aW5jbHVkZV9kaXJzJzogWwotICAgICAgXSwKLSAgICAgICdzb3VyY2VzJzogWwotICAgICAgICAn
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpYWdub3N0aWNzQmFzZS5jcHAnLAotICAgICAgICAnY29t
cGlsZXIvcHJlcHJvY2Vzc29yL0RpYWdub3N0aWNzQmFzZS5oJywKLSAgICAgICAgJ2NvbXBpbGVy
L3ByZXByb2Nlc3Nvci9EaXJlY3RpdmVIYW5kbGVyQmFzZS5jcHAnLAotICAgICAgICAnY29tcGls
ZXIvcHJlcHJvY2Vzc29yL0RpcmVjdGl2ZUhhbmRsZXJCYXNlLmgnLAotICAgICAgICAnY29tcGls
ZXIvcHJlcHJvY2Vzc29yL0RpcmVjdGl2ZVBhcnNlci5jcHAnLAotICAgICAgICAnY29tcGlsZXIv
cHJlcHJvY2Vzc29yL0RpcmVjdGl2ZVBhcnNlci5oJywKLSAgICAgICAgJ2NvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLmNwcCcsCi0gICAgICAgICdjb21waWxlci9wcmVwcm9j
ZXNzb3IvRXhwcmVzc2lvblBhcnNlci5oJywKLSAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9JbnB1dC5jcHAnLAotICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL0lucHV0LmgnLAot
ICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL2xlbmd0aF9saW1pdHMuaCcsCi0gICAgICAg
ICdjb21waWxlci9wcmVwcm9jZXNzb3IvTGV4ZXIuY3BwJywKLSAgICAgICAgJ2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9MZXhlci5oJywKLSAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9NYWNy
by5jcHAnLAotICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvLmgnLAotICAgICAg
ICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvRXhwYW5kZXIuY3BwJywKLSAgICAgICAgJ2Nv
bXBpbGVyL3ByZXByb2Nlc3Nvci9NYWNyb0V4cGFuZGVyLmgnLAotICAgICAgICAnY29tcGlsZXIv
cHJlcHJvY2Vzc29yL251bWVyaWNfbGV4LmgnLAotICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vz
c29yL3BwX3V0aWxzLmgnLAotICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL1ByZXByb2Nl
c3Nvci5jcHAnLAotICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL1ByZXByb2Nlc3Nvci5o
JywKLSAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Tb3VyY2VMb2NhdGlvbi5oJywKLSAg
ICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5jcHAnLAotICAgICAgICAnY29tcGls
ZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmgnLAotICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29y
L1Rva2VuaXplci5jcHAnLAotICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXpl
ci5oJywKLSAgICAgIF0sCi0gICAgICAjIFRPRE8oanNjaHVoKTogaHR0cDovL2NyYnVnLmNvbS8x
NjcxODcKLSAgICAgICdtc3ZzX2Rpc2FibGVkX3dhcm5pbmdzJzogWwotICAgICAgICA0MjY3LAot
ICAgICAgXSwgICAgICAKLSAgICB9LAotICAgIHsKLSAgICAgICd0YXJnZXRfbmFtZSc6ICd0cmFu
c2xhdG9yX2NvbW1vbicsCi0gICAgICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScsCi0gICAgICAn
ZGVwZW5kZW5jaWVzJzogWydwcmVwcm9jZXNzb3InXSwKLSAgICAgICdpbmNsdWRlX2RpcnMnOiBb
Ci0gICAgICAgICcuJywKLSAgICAgICAgJy4uL2luY2x1ZGUnLAotICAgICAgXSwKLSAgICAgICdk
ZWZpbmVzJzogWwotICAgICAgICAnQ09NUElMRVJfSU1QTEVNRU5UQVRJT04nLAotICAgICAgXSwK
LSAgICAgICdzb3VyY2VzJzogWworICAgICd0cmFuc2xhdG9yX3NvdXJjZXMnOiBbCiAgICAgICAg
ICdjb21waWxlci9CYXNlVHlwZXMuaCcsCiAgICAgICAgICdjb21waWxlci9CdWlsdEluRnVuY3Rp
b25FbXVsYXRvci5jcHAnLAogICAgICAgICAnY29tcGlsZXIvQnVpbHRJbkZ1bmN0aW9uRW11bGF0
b3IuaCcsCisgICAgICAgICdjb21waWxlci9Db2RlR2VuLmNwcCcsCiAgICAgICAgICdjb21waWxl
ci9Db21tb24uaCcsCiAgICAgICAgICdjb21waWxlci9Db21waWxlci5jcHAnLAogICAgICAgICAn
Y29tcGlsZXIvQ29uc3RhbnRVbmlvbi5oJywKQEAgLTc0LDYgKzE3LDggQEAKICAgICAgICAgJ2Nv
bXBpbGVyL2RlYnVnLmgnLAogICAgICAgICAnY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmNwcCcs
CiAgICAgICAgICdjb21waWxlci9EZXRlY3RDYWxsRGVwdGguaCcsCisgICAgICAgICdjb21waWxl
ci9EZXRlY3REaXNjb250aW51aXR5LmNwcCcsCisgICAgICAgICdjb21waWxlci9EZXRlY3REaXNj
b250aW51aXR5LmgnLAogICAgICAgICAnY29tcGlsZXIvRGlhZ25vc3RpY3MuaCcsCiAgICAgICAg
ICdjb21waWxlci9EaWFnbm9zdGljcy5jcHAnLAogICAgICAgICAnY29tcGlsZXIvRGlyZWN0aXZl
SGFuZGxlci5oJywKQEAgLTkzLDYgKzM4LDggQEAKICAgICAgICAgJ2NvbXBpbGVyL0luaXRpYWxp
emVEbGwuY3BwJywKICAgICAgICAgJ2NvbXBpbGVyL0luaXRpYWxpemVEbGwuaCcsCiAgICAgICAg
ICdjb21waWxlci9Jbml0aWFsaXplR2xvYmFscy5oJywKKyAgICAgICAgJ2NvbXBpbGVyL0luaXRp
YWxpemVHTFBvc2l0aW9uLmNwcCcsCisgICAgICAgICdjb21waWxlci9Jbml0aWFsaXplR0xQb3Np
dGlvbi5oJywKICAgICAgICAgJ2NvbXBpbGVyL0luaXRpYWxpemVQYXJzZUNvbnRleHQuY3BwJywK
ICAgICAgICAgJ2NvbXBpbGVyL0luaXRpYWxpemVQYXJzZUNvbnRleHQuaCcsCiAgICAgICAgICdj
b21waWxlci9JbnRlcm1lZGlhdGUuY3BwJywKQEAgLTEwNCw5ICs1MSwxNyBAQAogICAgICAgICAn
Y29tcGlsZXIvTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuaCcsCiAgICAgICAgICdjb21waWxlci9NTWFw
LmgnLAogICAgICAgICAnY29tcGlsZXIvb3NpbmNsdWRlLmgnLAorICAgICAgICAnY29tcGlsZXIv
T3V0cHV0RVNTTC5jcHAnLAorICAgICAgICAnY29tcGlsZXIvT3V0cHV0RVNTTC5oJywKKyAgICAg
ICAgJ2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmNwcCcsCisgICAgICAgICdjb21waWxlci9PdXRw
dXRHTFNMQmFzZS5oJywKKyAgICAgICAgJ2NvbXBpbGVyL091dHB1dEdMU0wuY3BwJywKKyAgICAg
ICAgJ2NvbXBpbGVyL091dHB1dEdMU0wuaCcsCisgICAgICAgICdjb21waWxlci9PdXRwdXRITFNM
LmNwcCcsCisgICAgICAgICdjb21waWxlci9PdXRwdXRITFNMLmgnLAogICAgICAgICAnY29tcGls
ZXIvcGFyc2VDb25zdC5jcHAnLAotICAgICAgICAnY29tcGlsZXIvUGFyc2VIZWxwZXIuY3BwJywK
LSAgICAgICAgJ2NvbXBpbGVyL1BhcnNlSGVscGVyLmgnLAorICAgICAgICAnY29tcGlsZXIvUGFy
c2VDb250ZXh0LmNwcCcsCisgICAgICAgICdjb21waWxlci9QYXJzZUNvbnRleHQuaCcsCiAgICAg
ICAgICdjb21waWxlci9Qb29sQWxsb2MuY3BwJywKICAgICAgICAgJ2NvbXBpbGVyL1Bvb2xBbGxv
Yy5oJywKICAgICAgICAgJ2NvbXBpbGVyL1F1YWxpZmllckFsaXZlLmNwcCcsCkBAIC0xMTQsMTAg
KzY5LDIzIEBACiAgICAgICAgICdjb21waWxlci9SZW1vdmVUcmVlLmNwcCcsCiAgICAgICAgICdj
b21waWxlci9SZW1vdmVUcmVlLmgnLAogICAgICAgICAnY29tcGlsZXIvUmVuYW1lRnVuY3Rpb24u
aCcsCisgICAgICAgICdjb21waWxlci9TZWFyY2hTeW1ib2wuY3BwJywKKyAgICAgICAgJ2NvbXBp
bGVyL1NlYXJjaFN5bWJvbC5oJywKKyAgICAgICAgJ2NvbXBpbGVyL1NoYWRlckxhbmcuY3BwJywK
ICAgICAgICAgJ2NvbXBpbGVyL1NoSGFuZGxlLmgnLAogICAgICAgICAnY29tcGlsZXIvU3ltYm9s
VGFibGUuY3BwJywKICAgICAgICAgJ2NvbXBpbGVyL1N5bWJvbFRhYmxlLmgnLAorICAgICAgICAn
Y29tcGlsZXIvVHJhbnNsYXRvckVTU0wuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL1RyYW5zbGF0
b3JFU1NMLmgnLAorICAgICAgICAnY29tcGlsZXIvVHJhbnNsYXRvckdMU0wuY3BwJywKKyAgICAg
ICAgJ2NvbXBpbGVyL1RyYW5zbGF0b3JHTFNMLmgnLAorICAgICAgICAnY29tcGlsZXIvVHJhbnNs
YXRvckhMU0wuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL1RyYW5zbGF0b3JITFNMLmgnLAogICAg
ICAgICAnY29tcGlsZXIvVHlwZXMuaCcsCisgICAgICAgICdjb21waWxlci9VbmZvbGRTaG9ydENp
cmN1aXRBU1QuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL1VuZm9sZFNob3J0Q2lyY3VpdEFTVC5o
JywKKyAgICAgICAgJ2NvbXBpbGVyL1VuZm9sZFNob3J0Q2lyY3VpdC5jcHAnLAorICAgICAgICAn
Y29tcGlsZXIvVW5mb2xkU2hvcnRDaXJjdWl0LmgnLAogICAgICAgICAnY29tcGlsZXIvVW5pZm9y
bS5jcHAnLAogICAgICAgICAnY29tcGlsZXIvVW5pZm9ybS5oJywKICAgICAgICAgJ2NvbXBpbGVy
L3V0aWwuY3BwJywKQEAgLTEyOCw2ICs5Niw4IEBACiAgICAgICAgICdjb21waWxlci9WYXJpYWJs
ZUluZm8uaCcsCiAgICAgICAgICdjb21waWxlci9WYXJpYWJsZVBhY2tlci5jcHAnLAogICAgICAg
ICAnY29tcGlsZXIvVmFyaWFibGVQYWNrZXIuaCcsCisgICAgICAgICdjb21waWxlci9WZXJzaW9u
R0xTTC5jcHAnLAorICAgICAgICAnY29tcGlsZXIvVmVyc2lvbkdMU0wuaCcsCiAgICAgICAgICMg
RGVwZW5kZW5jeSBncmFwaAogICAgICAgICAnY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdy
YXBoLmNwcCcsCiAgICAgICAgICdjb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGguaCcs
CkBAIC0xNDQsMTAgKzExNCw2OSBAQAogICAgICAgICAndGhpcmRfcGFydHkvY29tcGlsZXIvQXJy
YXlCb3VuZHNDbGFtcGVyLmNwcCcsCiAgICAgICAgICd0aGlyZF9wYXJ0eS9jb21waWxlci9BcnJh
eUJvdW5kc0NsYW1wZXIuaCcsCiAgICAgICBdLAorICB9LAorICAndGFyZ2V0X2RlZmF1bHRzJzog
eworICAgICdkZWZpbmVzJzogWworICAgICAgJ0FOR0xFX0RJU0FCTEVfVFJBQ0UnLAorICAgICAg
J0FOR0xFX0NPTVBJTEVfT1BUSU1JWkFUSU9OX0xFVkVMPUQzRENPTVBJTEVfT1BUSU1JWkFUSU9O
X0xFVkVMMScsCisgICAgICAnQU5HTEVfUFJFTE9BREVEX0QzRENPTVBJTEVSX01PRFVMRV9OQU1F
Uz17IFRFWFQoImQzZGNvbXBpbGVyXzQ2LmRsbCIpLCBURVhUKCJkM2Rjb21waWxlcl80My5kbGwi
KSB9JywKKyAgICBdLAorICB9LAorICAndGFyZ2V0cyc6IFsKKyAgICB7CisgICAgICAndGFyZ2V0
X25hbWUnOiAncHJlcHJvY2Vzc29yJywKKyAgICAgICd0eXBlJzogJ3N0YXRpY19saWJyYXJ5JywK
KyAgICAgICdpbmNsdWRlX2RpcnMnOiBbCisgICAgICBdLAorICAgICAgJ3NvdXJjZXMnOiBbCisg
ICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvRGlhZ25vc3RpY3NCYXNlLmNwcCcsCisgICAg
ICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvRGlhZ25vc3RpY3NCYXNlLmgnLAorICAgICAgICAn
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpcmVjdGl2ZUhhbmRsZXJCYXNlLmNwcCcsCisgICAgICAg
ICdjb21waWxlci9wcmVwcm9jZXNzb3IvRGlyZWN0aXZlSGFuZGxlckJhc2UuaCcsCisgICAgICAg
ICdjb21waWxlci9wcmVwcm9jZXNzb3IvRGlyZWN0aXZlUGFyc2VyLmNwcCcsCisgICAgICAgICdj
b21waWxlci9wcmVwcm9jZXNzb3IvRGlyZWN0aXZlUGFyc2VyLmgnLAorICAgICAgICAnY29tcGls
ZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25QYXJzZXIuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVy
L3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLmgnLAorICAgICAgICAnY29tcGlsZXIvcHJl
cHJvY2Vzc29yL0lucHV0LmNwcCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvSW5w
dXQuaCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvbGVuZ3RoX2xpbWl0cy5oJywK
KyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9MZXhlci5jcHAnLAorICAgICAgICAnY29t
cGlsZXIvcHJlcHJvY2Vzc29yL0xleGVyLmgnLAorICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vz
c29yL01hY3JvLmNwcCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvTWFjcm8uaCcs
CisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvTWFjcm9FeHBhbmRlci5jcHAnLAorICAg
ICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvRXhwYW5kZXIuaCcsCisgICAgICAgICdj
b21waWxlci9wcmVwcm9jZXNzb3IvbnVtZXJpY19sZXguaCcsCisgICAgICAgICdjb21waWxlci9w
cmVwcm9jZXNzb3IvcHBfdXRpbHMuaCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3Iv
UHJlcHJvY2Vzc29yLmNwcCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvUHJlcHJv
Y2Vzc29yLmgnLAorICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL1NvdXJjZUxvY2F0aW9u
LmgnLAorICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmNwcCcsCisgICAgICAg
ICdjb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uaCcsCisgICAgICAgICdjb21waWxlci9wcmVw
cm9jZXNzb3IvVG9rZW5pemVyLmNwcCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3Iv
VG9rZW5pemVyLmgnLAorICAgICAgXSwKKyAgICAgICMgVE9ETyhqc2NodWgpOiBodHRwOi8vY3Ji
dWcuY29tLzE2NzE4NworICAgICAgJ21zdnNfZGlzYWJsZWRfd2FybmluZ3MnOiBbCisgICAgICAg
IDQyNjcsCisgICAgICBdLAorICAgIH0sCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ3Ry
YW5zbGF0b3InLAorICAgICAgJ3R5cGUnOiAnPChjb21wb25lbnQpJywKKyAgICAgICdkZXBlbmRl
bmNpZXMnOiBbJ3ByZXByb2Nlc3NvciddLAorICAgICAgJ2luY2x1ZGVfZGlycyc6IFsKKyAgICAg
ICAgJy4nLAorICAgICAgICAnLi4vaW5jbHVkZScsCisgICAgICBdLAorICAgICAgJ2RlZmluZXMn
OiBbCisgICAgICAgICdBTkdMRV9UUkFOU0xBVE9SX0lNUExFTUVOVEFUSU9OJywKKyAgICAgIF0s
CisgICAgICAnc291cmNlcyc6IFsnPEAodHJhbnNsYXRvcl9zb3VyY2VzKSddLAorICAgICAgIyBU
T0RPKGpzY2h1aCk6IGh0dHA6Ly9jcmJ1Zy5jb20vMTY3MTg3IHNpemVfdCAtPiBpbnQKKyAgICAg
ICdtc3ZzX2Rpc2FibGVkX3dhcm5pbmdzJzogWyA0MjY3IF0sCiAgICAgICAnY29uZGl0aW9ucyc6
IFsKICAgICAgICAgWydPUz09IndpbiInLCB7Ci0gICAgICAgICAgIyBUT0RPKGpzY2h1aCk6IGh0
dHA6Ly9jcmJ1Zy5jb20vMTY3MTg3IHNpemVfdCAtPiBpbnQKLSAgICAgICAgICAnbXN2c19kaXNh
YmxlZF93YXJuaW5ncyc6IFsgNDI2NyBdLAogICAgICAgICAgICdzb3VyY2VzJzogWydjb21waWxl
ci9vc3NvdXJjZV93aW4uY3BwJ10sCiAgICAgICAgIH0sIHsgIyBlbHNlOiBwb3NpeAogICAgICAg
ICAgICdzb3VyY2VzJzogWydjb21waWxlci9vc3NvdXJjZV9wb3NpeC5jcHAnXSwKQEAgLTE1NSw3
MSArMTg0LDQwIEBACiAgICAgICBdLAogICAgIH0sCiAgICAgewotICAgICAgJ3RhcmdldF9uYW1l
JzogJ3RyYW5zbGF0b3JfZ2xzbCcsCi0gICAgICAndHlwZSc6ICc8KGNvbXBvbmVudCknLAotICAg
ICAgJ2RlcGVuZGVuY2llcyc6IFsndHJhbnNsYXRvcl9jb21tb24nXSwKKyAgICAgICd0YXJnZXRf
bmFtZSc6ICd0cmFuc2xhdG9yX3N0YXRpYycsCisgICAgICAndHlwZSc6ICdzdGF0aWNfbGlicmFy
eScsCisgICAgICAnZGVwZW5kZW5jaWVzJzogWydwcmVwcm9jZXNzb3InXSwKICAgICAgICdpbmNs
dWRlX2RpcnMnOiBbCiAgICAgICAgICcuJywKICAgICAgICAgJy4uL2luY2x1ZGUnLAogICAgICAg
XSwKKyAgICAgICdkaXJlY3RfZGVwZW5kZW50X3NldHRpbmdzJzogeworICAgICAgICAnZGVmaW5l
cyc6IFsKKyAgICAgICAgICAnQU5HTEVfVFJBTlNMQVRPUl9TVEFUSUMnLAorICAgICAgICBdLAor
ICAgICAgfSwKICAgICAgICdkZWZpbmVzJzogWwotICAgICAgICAnQ09NUElMRVJfSU1QTEVNRU5U
QVRJT04nLAotICAgICAgXSwKLSAgICAgICdzb3VyY2VzJzogWwotICAgICAgICAnY29tcGlsZXIv
Q29kZUdlbkdMU0wuY3BwJywKLSAgICAgICAgJ2NvbXBpbGVyL091dHB1dEVTU0wuY3BwJywKLSAg
ICAgICAgJ2NvbXBpbGVyL091dHB1dEVTU0wuaCcsICAgICAgICAKLSAgICAgICAgJ2NvbXBpbGVy
L091dHB1dEdMU0xCYXNlLmNwcCcsCi0gICAgICAgICdjb21waWxlci9PdXRwdXRHTFNMQmFzZS5o
JywKLSAgICAgICAgJ2NvbXBpbGVyL091dHB1dEdMU0wuY3BwJywKLSAgICAgICAgJ2NvbXBpbGVy
L091dHB1dEdMU0wuaCcsCi0gICAgICAgICdjb21waWxlci9TaGFkZXJMYW5nLmNwcCcsCi0gICAg
ICAgICdjb21waWxlci9UcmFuc2xhdG9yRVNTTC5jcHAnLAotICAgICAgICAnY29tcGlsZXIvVHJh
bnNsYXRvckVTU0wuaCcsCi0gICAgICAgICdjb21waWxlci9UcmFuc2xhdG9yR0xTTC5jcHAnLAot
ICAgICAgICAnY29tcGlsZXIvVHJhbnNsYXRvckdMU0wuaCcsCi0gICAgICAgICdjb21waWxlci9W
ZXJzaW9uR0xTTC5jcHAnLAotICAgICAgICAnY29tcGlsZXIvVmVyc2lvbkdMU0wuaCcsCisgICAg
ICAgICdBTkdMRV9UUkFOU0xBVE9SX1NUQVRJQycsCiAgICAgICBdLAorICAgICAgJ3NvdXJjZXMn
OiBbJzxAKHRyYW5zbGF0b3Jfc291cmNlcyknXSwKICAgICAgICMgVE9ETyhqc2NodWgpOiBodHRw
Oi8vY3JidWcuY29tLzE2NzE4NyBzaXplX3QgLT4gaW50CiAgICAgICAnbXN2c19kaXNhYmxlZF93
YXJuaW5ncyc6IFsgNDI2NyBdLAorICAgICAgJ2NvbmRpdGlvbnMnOiBbCisgICAgICAgIFsnT1M9
PSJ3aW4iJywgeworICAgICAgICAgICdzb3VyY2VzJzogWydjb21waWxlci9vc3NvdXJjZV93aW4u
Y3BwJ10sCisgICAgICAgIH0sIHsgIyBlbHNlOiBwb3NpeAorICAgICAgICAgICdzb3VyY2VzJzog
Wydjb21waWxlci9vc3NvdXJjZV9wb3NpeC5jcHAnXSwKKyAgICAgICAgfV0sCisgICAgICBdLAog
ICAgIH0sCiAgIF0sCiAgICdjb25kaXRpb25zJzogWwogICAgIFsnT1M9PSJ3aW4iJywgewogICAg
ICAgJ3RhcmdldHMnOiBbCiAgICAgICAgIHsKLSAgICAgICAgICAndGFyZ2V0X25hbWUnOiAndHJh
bnNsYXRvcl9obHNsJywKLSAgICAgICAgICAndHlwZSc6ICc8KGNvbXBvbmVudCknLAotICAgICAg
ICAgICdkZXBlbmRlbmNpZXMnOiBbJ3RyYW5zbGF0b3JfY29tbW9uJ10sCi0gICAgICAgICAgJ2lu
Y2x1ZGVfZGlycyc6IFsKLSAgICAgICAgICAgICcuJywKLSAgICAgICAgICAgICcuLi9pbmNsdWRl
JywKLSAgICAgICAgICBdLAotICAgICAgICAgICdkZWZpbmVzJzogWwotICAgICAgICAgICAgJ0NP
TVBJTEVSX0lNUExFTUVOVEFUSU9OJywKLSAgICAgICAgICBdLAotICAgICAgICAgICdzb3VyY2Vz
JzogWwotICAgICAgICAgICAgJ2NvbXBpbGVyL1NoYWRlckxhbmcuY3BwJywKLSAgICAgICAgICAg
ICdjb21waWxlci9EZXRlY3REaXNjb250aW51aXR5LmNwcCcsCi0gICAgICAgICAgICAnY29tcGls
ZXIvRGV0ZWN0RGlzY29udGludWl0eS5oJywKLSAgICAgICAgICAgICdjb21waWxlci9Db2RlR2Vu
SExTTC5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL091dHB1dEhMU0wuY3BwJywKLSAgICAg
ICAgICAgICdjb21waWxlci9PdXRwdXRITFNMLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL1Ry
YW5zbGF0b3JITFNMLmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvVHJhbnNsYXRvckhMU0wu
aCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvVW5mb2xkU2hvcnRDaXJjdWl0LmNwcCcsCi0gICAg
ICAgICAgICAnY29tcGlsZXIvVW5mb2xkU2hvcnRDaXJjdWl0LmgnLAotICAgICAgICAgICAgJ2Nv
bXBpbGVyL1NlYXJjaFN5bWJvbC5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL1NlYXJjaFN5
bWJvbC5oJywKLSAgICAgICAgICBdLAotICAgICAgICAgICMgVE9ETyhqc2NodWgpOiBodHRwOi8v
Y3JidWcuY29tLzE2NzE4NyBzaXplX3QgLT4gaW50Ci0gICAgICAgICAgJ21zdnNfZGlzYWJsZWRf
d2FybmluZ3MnOiBbIDQyNjcgXSwKLSAgICAgICAgfSwKLSAgICAgICAgewogICAgICAgICAgICd0
YXJnZXRfbmFtZSc6ICdsaWJHTEVTdjInLAogICAgICAgICAgICd0eXBlJzogJ3NoYXJlZF9saWJy
YXJ5JywKLSAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogWyd0cmFuc2xhdG9yX2hsc2wnXSwKKyAg
ICAgICAgICAnZGVwZW5kZW5jaWVzJzogWyd0cmFuc2xhdG9yJ10sCiAgICAgICAgICAgJ2luY2x1
ZGVfZGlycyc6IFsKICAgICAgICAgICAgICcuJywKICAgICAgICAgICAgICcuLi9pbmNsdWRlJywK
QEAgLTIyOCw5ICsyMjYsMTIgQEAKICAgICAgICAgICAnc291cmNlcyc6IFsKICAgICAgICAgICAg
ICd0aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL011cm11ckhhc2gzLmgnLAogICAgICAgICAgICAgJ3Ro
aXJkX3BhcnR5L211cm11cmhhc2gvTXVybXVySGFzaDMuY3BwJywKKyAgICAgICAgICAgICd0aGly
ZF9wYXJ0eS90cmFjZV9ldmVudC90cmFjZV9ldmVudC5oJywKICAgICAgICAgICAgICdjb21tb24v
YW5nbGV1dGlscy5oJywKICAgICAgICAgICAgICdjb21tb24vZGVidWcuY3BwJywKICAgICAgICAg
ICAgICdjb21tb24vZGVidWcuaCcsCisgICAgICAgICAgICAnY29tbW9uL2V2ZW50X3RyYWNlci5j
cHAnLAorICAgICAgICAgICAgJ2NvbW1vbi9ldmVudF90cmFjZXIuaCcsCiAgICAgICAgICAgICAn
Y29tbW9uL1JlZkNvdW50T2JqZWN0LmNwcCcsCiAgICAgICAgICAgICAnY29tbW9uL1JlZkNvdW50
T2JqZWN0LmgnLAogICAgICAgICAgICAgJ2NvbW1vbi92ZXJzaW9uLmgnLApAQCAtMjkzLDYgKzI5
NCw4IEBACiAgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyMTEuaCcs
CiAgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4RGF0YU1hbmFnZXIuY3BwJywK
ICAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhEYXRhTWFuYWdlci5oJywKKyAg
ICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhSYW5nZUNhY2hlLmNwcCcsCisgICAg
ICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4UmFuZ2VDYWNoZS5oJywKICAgICAgICAg
ICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvSW5wdXRMYXlvdXRDYWNoZS5jcHAnLAogICAgICAgICAg
ICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9JbnB1dExheW91dENhY2hlLmgnLAogICAgICAgICAgICAg
J2xpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeUltcGwuaCcsCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbW1vbi9kZWJ1Zy5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmgJKHdvcmtpbmcgY29weSkKQEAgLTk5
LDggKzk5LDEwIEBAIG5hbWVzcGFjZSBnbAogICAgICNkZWZpbmUgVU5SRUFDSEFCTEUoKSBFUlIo
Ilx0ISBVbnJlYWNoYWJsZSByZWFjaGVkOiAlcyglZClcbiIsIF9fRlVOQ1RJT05fXywgX19MSU5F
X18pCiAjZW5kaWYKIAotLy8gQSBtYWNybyB0aGF0IGRldGVybWluZXMgd2hldGhlciBhbiBvYmpl
Y3QgaGFzIGEgZ2l2ZW4gcnVudGltZSB0eXBlLgotI2lmICFkZWZpbmVkKE5ERUJVRykgJiYgKCFk
ZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9DUFBSVFRJKSkKKy8vIEEgbWFjcm8gdGhhdCBk
ZXRlcm1pbmVzIHdoZXRoZXIgYW4gb2JqZWN0IGhhcyBhIGdpdmVuIHJ1bnRpbWUgdHlwZS4gTVNW
QyB1c2VzIF9DUFBSVFRJLgorLy8gR0NDIHVzZXMgX19HWFhfUlRUSSwgYnV0IHRoZSBtYWNybyB3
YXMgaW50cm9kdWNlZCBpbiB2ZXJzaW9uIDQuMywgc28gd2UgYXNzdW1lIHRoYXQgYWxsIG9sZGVy
CisvLyB2ZXJzaW9ucyBzdXBwb3J0IFJUVEkuCisjaWYgIWRlZmluZWQoTkRFQlVHKSAmJiAoIWRl
ZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX0NQUFJUVEkpKSAmJiAoIWRlZmluZWQoX19HTlVD
X18pIHx8IF9fR05VQ19fIDwgNCB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8
IDMpIHx8IGRlZmluZWQoX19HWFhfUlRUSSkpCiAjZGVmaW5lIEhBU19EWU5BTUlDX1RZUEUodHlw
ZSwgb2JqKSAoZHluYW1pY19jYXN0PHR5cGUgPihvYmopICE9IE5VTEwpCiAjZWxzZQogI2RlZmlu
ZSBIQVNfRFlOQU1JQ19UWVBFKHR5cGUsIG9iaikgdHJ1ZQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbW1vbi9ldmVudF90cmFjZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZXZlbnRfdHJhY2VyLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZXZlbnRfdHJhY2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvLyBDb3B5cmlnaHQgKGMpIDIwMTIg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKyNpbmNsdWRlICJjb21t
b24vZXZlbnRfdHJhY2VyLmgiCisKK25hbWVzcGFjZSBnbAoreworCitHZXRDYXRlZ29yeUVuYWJs
ZWRGbGFnRnVuYyBnX2dldENhdGVnb3J5RW5hYmxlZEZsYWc7CitBZGRUcmFjZUV2ZW50RnVuYyBn
X2FkZFRyYWNlRXZlbnQ7CisKK30gIC8vIG5hbWVzcGFjZSBnbAorCitleHRlcm4gIkMiIHsKKwor
dm9pZCBfX3N0ZGNhbGwgU2V0VHJhY2VGdW5jdGlvblBvaW50ZXJzKEdldENhdGVnb3J5RW5hYmxl
ZEZsYWdGdW5jIGdldENhdGVnb3J5RW5hYmxlZEZsYWcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQWRkVHJhY2VFdmVudEZ1bmMgYWRkVHJhY2VFdmVudCkKK3sKKyAg
ICBnbDo6Z19nZXRDYXRlZ29yeUVuYWJsZWRGbGFnID0gZ2V0Q2F0ZWdvcnlFbmFibGVkRmxhZzsK
KyAgICBnbDo6Z19hZGRUcmFjZUV2ZW50ID0gYWRkVHJhY2VFdmVudDsKK30KKworfSAgLy8gZXh0
ZXJuICJDIgorCituYW1lc3BhY2UgZ2wKK3sKKworY29uc3QgdW5zaWduZWQgY2hhciogVHJhY2VH
ZXRUcmFjZUNhdGVnb3J5RW5hYmxlZEZsYWcoY29uc3QgY2hhciogbmFtZSkKK3sKKyAgICBpZiAo
Z19nZXRDYXRlZ29yeUVuYWJsZWRGbGFnKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdfZ2V0Q2F0
ZWdvcnlFbmFibGVkRmxhZyhuYW1lKTsKKyAgICB9CisgICAgc3RhdGljIHVuc2lnbmVkIGNoYXIg
ZGlzYWJsZWQgPSAwOworICAgIHJldHVybiAmZGlzYWJsZWQ7Cit9CisKK3ZvaWQgVHJhY2VBZGRU
cmFjZUV2ZW50KGNoYXIgcGhhc2UsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5R3JvdXBF
bmFibGVkLCBjb25zdCBjaGFyKiBuYW1lLCB1bnNpZ25lZCBsb25nIGxvbmcgaWQsCisgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgbnVtQXJncywgY29uc3QgY2hhcioqIGFyZ05hbWVzLCBjb25z
dCB1bnNpZ25lZCBjaGFyKiBhcmdUeXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHVuc2lnbmVkIGxvbmcgbG9uZyogYXJnVmFsdWVzLCB1bnNpZ25lZCBjaGFyIGZsYWdzKQorewor
ICAgIGlmIChnX2FkZFRyYWNlRXZlbnQpCisgICAgeworICAgICAgICBnX2FkZFRyYWNlRXZlbnQo
cGhhc2UsIGNhdGVnb3J5R3JvdXBFbmFibGVkLCBuYW1lLCBpZCwgbnVtQXJncywgYXJnTmFtZXMs
IGFyZ1R5cGVzLCBhcmdWYWx1ZXMsIGZsYWdzKTsKKyAgICB9Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSBnbApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9ldmVudF90cmFj
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2V2
ZW50X3RyYWNlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbW1vbi9ldmVudF90cmFjZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMzIEBACisv
LyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisKKyNpZm5kZWYgQ09NTU9OX0VWRU5UX1RSQUNFUl9IXworI2RlZmluZSBDT01NT05fRVZF
TlRfVFJBQ0VSX0hfCisKK2V4dGVybiAiQyIgeworCit0eXBlZGVmIGNvbnN0IHVuc2lnbmVkIGNo
YXIqICgqR2V0Q2F0ZWdvcnlFbmFibGVkRmxhZ0Z1bmMpKGNvbnN0IGNoYXIqIG5hbWUpOwordHlw
ZWRlZiB2b2lkICgqQWRkVHJhY2VFdmVudEZ1bmMpKGNoYXIgcGhhc2UsIGNvbnN0IHVuc2lnbmVk
IGNoYXIqIGNhdGVnb3J5R3JvdXBFbmFibGVkLCBjb25zdCBjaGFyKiBuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwgaW50IG51bUFy
Z3MsIGNvbnN0IGNoYXIqKiBhcmdOYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBhcmdUeXBlcywgY29uc3QgdW5zaWduZWQgbG9uZyBs
b25nKiBhcmdWYWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgY2hhciBmbGFncyk7CisKKy8vIGV4dGVybiAiQyIgc28gdGhhdCBpdCBoYXMgYSByZWFzb25h
YmxlIG5hbWUgZm9yIEdldFByb2NBZGRyZXNzLgordm9pZCBfX3N0ZGNhbGwgU2V0VHJhY2VGdW5j
dGlvblBvaW50ZXJzKEdldENhdGVnb3J5RW5hYmxlZEZsYWdGdW5jIGdldF9jYXRlZ29yeV9lbmFi
bGVkX2ZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkVHJh
Y2VFdmVudEZ1bmMgYWRkX3RyYWNlX2V2ZW50X2Z1bmMpOworCit9CisKK25hbWVzcGFjZSBnbAor
eworCitjb25zdCB1bnNpZ25lZCBjaGFyKiBUcmFjZUdldFRyYWNlQ2F0ZWdvcnlFbmFibGVkRmxh
Zyhjb25zdCBjaGFyKiBuYW1lKTsKKwordm9pZCBUcmFjZUFkZFRyYWNlRXZlbnQoY2hhciBwaGFz
ZSwgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlHcm91cEVuYWJsZWQsIGNvbnN0IGNoYXIq
IG5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBudW1BcmdzLCBjb25zdCBjaGFyKiogYXJnTmFtZXMsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGFy
Z1R5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBsb25n
KiBhcmdWYWx1ZXMsIHVuc2lnbmVkIGNoYXIgZmxhZ3MpOworCit9CisKKyNlbmRpZiAgLy8gQ09N
TU9OX0VWRU5UX1RSQUNFUl9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bW1vbi92ZXJzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbW1vbi92ZXJzaW9uLmgJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21tb24vdmVyc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBA
QAogI2RlZmluZSBNQUpPUl9WRVJTSU9OIDEKICNkZWZpbmUgTUlOT1JfVkVSU0lPTiAyCiAjZGVm
aW5lIEJVSUxEX1ZFUlNJT04gMAotI2RlZmluZSBCVUlMRF9SRVZJU0lPTiAyNDI2CisjZGVmaW5l
IEJVSUxEX1JFVklTSU9OIDI0NTAKIAogI2RlZmluZSBTVFJJTkdJRlkoeCkgI3gKICNkZWZpbmUg
TUFDUk9fU1RSSU5HSUZZKHgpIFNUUklOR0lGWSh4KQpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL0NvZGVHZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db2RlR2VuLmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db2RlR2VuLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDM4IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAiY29t
cGlsZXIvVHJhbnNsYXRvckVTU0wuaCIKKyNpbmNsdWRlICJjb21waWxlci9UcmFuc2xhdG9yR0xT
TC5oIgorI2luY2x1ZGUgImNvbXBpbGVyL1RyYW5zbGF0b3JITFNMLmgiCisKKy8vCisvLyBUaGlz
IGZ1bmN0aW9uIG11c3QgYmUgcHJvdmlkZWQgdG8gY3JlYXRlIHRoZSBhY3R1YWwKKy8vIGNvbXBp
bGUgb2JqZWN0IHVzZWQgYnkgaGlnaGVyIGxldmVsIGNvZGUuICBJdCByZXR1cm5zCisvLyBhIHN1
YmNsYXNzIG9mIFRDb21waWxlci4KKy8vCitUQ29tcGlsZXIqIENvbnN0cnVjdENvbXBpbGVyKAor
ICAgIFNoU2hhZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywgU2hTaGFkZXJPdXRwdXQg
b3V0cHV0KQoreworICAgIHN3aXRjaCAob3V0cHV0KSB7CisgICAgICBjYXNlIFNIX0VTU0xfT1VU
UFVUOgorICAgICAgICByZXR1cm4gbmV3IFRyYW5zbGF0b3JFU1NMKHR5cGUsIHNwZWMpOworICAg
ICAgY2FzZSBTSF9HTFNMX09VVFBVVDoKKyAgICAgICAgcmV0dXJuIG5ldyBUcmFuc2xhdG9yR0xT
TCh0eXBlLCBzcGVjKTsKKyAgICAgIGNhc2UgU0hfSExTTDlfT1VUUFVUOgorICAgICAgY2FzZSBT
SF9ITFNMMTFfT1VUUFVUOgorICAgICAgICByZXR1cm4gbmV3IFRyYW5zbGF0b3JITFNMKHR5cGUs
IHNwZWMsIG91dHB1dCk7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gTlVMTDsKKyAg
ICB9Cit9CisKKy8vCisvLyBEZWxldGUgdGhlIGNvbXBpbGVyIG1hZGUgYnkgQ29uc3RydWN0Q29t
cGlsZXIKKy8vCit2b2lkIERlbGV0ZUNvbXBpbGVyKFRDb21waWxlciogY29tcGlsZXIpCit7Cisg
ICAgZGVsZXRlIGNvbXBpbGVyOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL0NvZGVHZW5HTFNMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29kZUdlbkdMU0wuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29kZUdlbkdMU0wuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDM0ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDIt
MjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNs
dWRlICJjb21waWxlci9UcmFuc2xhdG9yR0xTTC5oIgotI2luY2x1ZGUgImNvbXBpbGVyL1RyYW5z
bGF0b3JFU1NMLmgiCi0KLS8vCi0vLyBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgcHJvdmlkZWQgdG8g
Y3JlYXRlIHRoZSBhY3R1YWwKLS8vIGNvbXBpbGUgb2JqZWN0IHVzZWQgYnkgaGlnaGVyIGxldmVs
IGNvZGUuICBJdCByZXR1cm5zCi0vLyBhIHN1YmNsYXNzIG9mIFRDb21waWxlci4KLS8vCi1UQ29t
cGlsZXIqIENvbnN0cnVjdENvbXBpbGVyKAotICAgIFNoU2hhZGVyVHlwZSB0eXBlLCBTaFNoYWRl
clNwZWMgc3BlYywgU2hTaGFkZXJPdXRwdXQgb3V0cHV0KQotewotICAgIHN3aXRjaCAob3V0cHV0
KSB7Ci0gICAgICBjYXNlIFNIX0dMU0xfT1VUUFVUOgotICAgICAgICByZXR1cm4gbmV3IFRyYW5z
bGF0b3JHTFNMKHR5cGUsIHNwZWMpOwotICAgICAgY2FzZSBTSF9FU1NMX09VVFBVVDoKLSAgICAg
ICAgcmV0dXJuIG5ldyBUcmFuc2xhdG9yRVNTTCh0eXBlLCBzcGVjKTsKLSAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLX0KLQotLy8KLS8vIERlbGV0ZSB0aGUgY29t
cGlsZXIgbWFkZSBieSBDb25zdHJ1Y3RDb21waWxlcgotLy8KLXZvaWQgRGVsZXRlQ29tcGlsZXIo
VENvbXBpbGVyKiBjb21waWxlcikKLXsKLSAgICBkZWxldGUgY29tcGlsZXI7Ci19CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29kZUdlbkhMU0wuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db2RlR2VuSExT
TC5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9Db2RlR2VuSExTTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMzMgKzAsMCBAQAot
Ly8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgImNvbXBpbGVyL1RyYW5zbGF0b3JITFNMLmgi
Ci0KLS8vCi0vLyBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgcHJvdmlkZWQgdG8gY3JlYXRlIHRoZSBh
Y3R1YWwKLS8vIGNvbXBpbGUgb2JqZWN0IHVzZWQgYnkgaGlnaGVyIGxldmVsIGNvZGUuICBJdCBy
ZXR1cm5zCi0vLyBhIHN1YmNsYXNzIG9mIFRDb21waWxlci4KLS8vCi1UQ29tcGlsZXIqIENvbnN0
cnVjdENvbXBpbGVyKAotICAgIFNoU2hhZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywg
U2hTaGFkZXJPdXRwdXQgb3V0cHV0KQotewotICBzd2l0Y2ggKG91dHB1dCkKLSAgewotICAgIGNh
c2UgU0hfSExTTDlfT1VUUFVUOgotICAgIGNhc2UgU0hfSExTTDExX09VVFBVVDoKLSAgICAgIHJl
dHVybiBuZXcgVHJhbnNsYXRvckhMU0wodHlwZSwgc3BlYywgb3V0cHV0KTsKLSAgICBkZWZhdWx0
OgotICAgICAgcmV0dXJuIE5VTEw7Ci0gIH0KLX0KLQotLy8KLS8vIERlbGV0ZSB0aGUgY29tcGls
ZXIgbWFkZSBieSBDb25zdHJ1Y3RDb21waWxlcgotLy8KLXZvaWQgRGVsZXRlQ29tcGlsZXIoVENv
bXBpbGVyKiBjb21waWxlcikKLXsKLSAgICBkZWxldGUgY29tcGlsZXI7Ci19CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29tbW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbW1vbi5oCShyZXZpc2lvbiAx
NTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29tbW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI0LDE0ICsyNCwxNCBAQCBzdHJ1Y3QgVFNvdXJjZUxvYyB7CiAv
LwogLy8gUHV0IFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUgaW4gYmFzZSBjbGFzc2VzIHRvIG1h
a2UgdGhlbSB1c2UgdGhpcyBzY2hlbWUuCiAvLwotI2RlZmluZSBQT09MX0FMTE9DQVRPUl9ORVdf
REVMRVRFKEEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkKiBv
cGVyYXRvciBuZXcoc2l6ZV90IHMpIHsgcmV0dXJuIChBKS5hbGxvY2F0ZShzKTsgfSAgICAgICAg
ICBcCi0gICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCAqX1doZXJlKSB7IHJldHVy
biAoX1doZXJlKTsJfSAgICAgXAotICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqKSB7IH0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIG9wZXJhdG9yIGRl
bGV0ZSh2b2lkICosIHZvaWQgKikgeyB9ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
dm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHMpIHsgcmV0dXJuIChBKS5hbGxvY2F0ZShzKTsg
fSAgICAgICAgXAotICAgIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCAqX1doZXJl
KSB7IHJldHVybiAoX1doZXJlKTsJfSBcCi0gICAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lk
KikgeyB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBQT09MX0FM
TE9DQVRPUl9ORVdfREVMRVRFKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHMpIHsgcmV0dXJu
IEdldEdsb2JhbFBvb2xBbGxvY2F0b3IoKS0+YWxsb2NhdGUocyk7IH0gICBcCisgICAgdm9pZCog
b3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCAqX1doZXJlKSB7IHJldHVybiAoX1doZXJlKTsgfSAg
ICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqKSB7IH0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB2
b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkICosIHZvaWQgKikgeyB9ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90
IHMpIHsgcmV0dXJuIEdldEdsb2JhbFBvb2xBbGxvY2F0b3IoKS0+YWxsb2NhdGUocyk7IH0gXAor
ICAgIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCAqX1doZXJlKSB7IHJldHVybiAo
X1doZXJlKTsgfSAgICAgICAgICAgICAgICAgIFwKKyAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtd
KHZvaWQqKSB7IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkICosIHZvaWQgKikgeyB9CiAKIC8v
CkBAIC00Miw3ICs0Miw3IEBAIHR5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmcgPGNoYXIsIHN0ZDo6
Y2gKIHR5cGVkZWYgc3RkOjpiYXNpY19vc3RyaW5nc3RyZWFtPGNoYXIsIHN0ZDo6Y2hhcl90cmFp
dHM8Y2hhcj4sIFRTdHJpbmdBbGxvY2F0b3I+IFRTdHJpbmdTdHJlYW07CiBpbmxpbmUgVFN0cmlu
ZyogTmV3UG9vbFRTdHJpbmcoY29uc3QgY2hhciogcykKIHsKLQl2b2lkKiBtZW1vcnkgPSBHbG9i
YWxQb29sQWxsb2NhdG9yLmFsbG9jYXRlKHNpemVvZihUU3RyaW5nKSk7CisJdm9pZCogbWVtb3J5
ID0gR2V0R2xvYmFsUG9vbEFsbG9jYXRvcigpLT5hbGxvY2F0ZShzaXplb2YoVFN0cmluZykpOwog
CXJldHVybiBuZXcobWVtb3J5KSBUU3RyaW5nKHMpOwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db21waWxlci5jcHAJKHJldmlzaW9uIDE1
OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db21waWxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTgsMTEgKzgsMTMgQEAKICNpbmNsdWRlICJjb21waWxlci9E
ZXRlY3RDYWxsRGVwdGguaCIKICNpbmNsdWRlICJjb21waWxlci9Gb3JMb29wVW5yb2xsLmgiCiAj
aW5jbHVkZSAiY29tcGlsZXIvSW5pdGlhbGl6ZS5oIgorI2luY2x1ZGUgImNvbXBpbGVyL0luaXRp
YWxpemVHTFBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvSW5pdGlhbGl6ZVBhcnNlQ29u
dGV4dC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL01hcExvbmdWYXJpYWJsZU5hbWVzLmgiCi0jaW5j
bHVkZSAiY29tcGlsZXIvUGFyc2VIZWxwZXIuaCIKKyNpbmNsdWRlICJjb21waWxlci9QYXJzZUNv
bnRleHQuaCIKICNpbmNsdWRlICJjb21waWxlci9SZW5hbWVGdW5jdGlvbi5oIgogI2luY2x1ZGUg
ImNvbXBpbGVyL1NoSGFuZGxlLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvVW5mb2xkU2hvcnRDaXJj
dWl0QVNULmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvVmFsaWRhdGVMaW1pdGF0aW9ucy5oIgogI2lu
Y2x1ZGUgImNvbXBpbGVyL1ZhcmlhYmxlUGFja2VyLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvZGVw
Z3JhcGgvRGVwZW5kZW5jeUdyYXBoLmgiCkBAIC0yOSwxOSArMzEsMzIgQEAgYm9vbCBpc1dlYkdM
QmFzZWRTcGVjKFNoU2hhZGVyU3BlYyBzcGVjKQogbmFtZXNwYWNlIHsKIGNsYXNzIFRTY29wZWRQ
b29sQWxsb2NhdG9yIHsKIHB1YmxpYzoKLSAgICBUU2NvcGVkUG9vbEFsbG9jYXRvcihUUG9vbEFs
bG9jYXRvciogYWxsb2NhdG9yLCBib29sIHB1c2hQb3ApCi0gICAgICAgIDogbUFsbG9jYXRvcihh
bGxvY2F0b3IpLCBtUHVzaFBvcEFsbG9jYXRvcihwdXNoUG9wKSB7Ci0gICAgICAgIGlmIChtUHVz
aFBvcEFsbG9jYXRvcikgbUFsbG9jYXRvci0+cHVzaCgpOworICAgIFRTY29wZWRQb29sQWxsb2Nh
dG9yKFRQb29sQWxsb2NhdG9yKiBhbGxvY2F0b3IpIDogbUFsbG9jYXRvcihhbGxvY2F0b3IpIHsK
KyAgICAgICAgbUFsbG9jYXRvci0+cHVzaCgpOwogICAgICAgICBTZXRHbG9iYWxQb29sQWxsb2Nh
dG9yKG1BbGxvY2F0b3IpOwogICAgIH0KICAgICB+VFNjb3BlZFBvb2xBbGxvY2F0b3IoKSB7CiAg
ICAgICAgIFNldEdsb2JhbFBvb2xBbGxvY2F0b3IoTlVMTCk7Ci0gICAgICAgIGlmIChtUHVzaFBv
cEFsbG9jYXRvcikgbUFsbG9jYXRvci0+cG9wKCk7CisgICAgICAgIG1BbGxvY2F0b3ItPnBvcCgp
OwogICAgIH0KIAogcHJpdmF0ZToKICAgICBUUG9vbEFsbG9jYXRvciogbUFsbG9jYXRvcjsKLSAg
ICBib29sIG1QdXNoUG9wQWxsb2NhdG9yOworfTsKKworY2xhc3MgVFNjb3BlZFN5bWJvbFRhYmxl
TGV2ZWwgeworcHVibGljOgorICAgIFRTY29wZWRTeW1ib2xUYWJsZUxldmVsKFRTeW1ib2xUYWJs
ZSogdGFibGUpIDogbVRhYmxlKHRhYmxlKSB7CisgICAgICAgIEFTU0VSVChtVGFibGUtPmF0QnVp
bHRJbkxldmVsKCkpOworICAgICAgICBtVGFibGUtPnB1c2goKTsKKyAgICB9CisgICAgflRTY29w
ZWRTeW1ib2xUYWJsZUxldmVsKCkgeworICAgICAgICB3aGlsZSAoIW1UYWJsZS0+YXRCdWlsdElu
TGV2ZWwoKSkKKyAgICAgICAgICAgIG1UYWJsZS0+cG9wKCk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIFRTeW1ib2xUYWJsZSogbVRhYmxlOwogfTsKIH0gIC8vIG5hbWVzcGFjZQogCkBAIC04MSw3
ICs5Niw4IEBAIGJvb2wgVENvbXBpbGVyOjpJbml0KGNvbnN0IFNoQnVpbHRJblJlc28KICAgICAg
ICAgcmVzb3VyY2VzLk1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnM7CiAgICAgbWF4RXhwcmVzc2lv
bkNvbXBsZXhpdHkgPSByZXNvdXJjZXMuTWF4RXhwcmVzc2lvbkNvbXBsZXhpdHk7CiAgICAgbWF4
Q2FsbFN0YWNrRGVwdGggPSByZXNvdXJjZXMuTWF4Q2FsbFN0YWNrRGVwdGg7Ci0gICAgVFNjb3Bl
ZFBvb2xBbGxvY2F0b3Igc2NvcGVkQWxsb2MoJmFsbG9jYXRvciwgZmFsc2UpOworCisgICAgU2V0
R2xvYmFsUG9vbEFsbG9jYXRvcigmYWxsb2NhdG9yKTsKIAogICAgIC8vIEdlbmVyYXRlIGJ1aWx0
LWluIHN5bWJvbCB0YWJsZS4KICAgICBpZiAoIUluaXRCdWlsdEluU3ltYm9sVGFibGUocmVzb3Vy
Y2VzKSkKQEAgLTEwMSw3ICsxMTcsNyBAQCBib29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBj
aGFyKiBjb25zCiAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtU3RyaW5ncywKICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBjb21waWxlT3B0aW9ucykKIHsKLSAgICBUU2NvcGVk
UG9vbEFsbG9jYXRvciBzY29wZWRBbGxvYygmYWxsb2NhdG9yLCB0cnVlKTsKKyAgICBUU2NvcGVk
UG9vbEFsbG9jYXRvciBzY29wZWRBbGxvYygmYWxsb2NhdG9yKTsKICAgICBjbGVhclJlc3VsdHMo
KTsKIAogICAgIGlmIChudW1TdHJpbmdzID09IDApCkBAIC0xMjUsMTUgKzE0MSwxMSBAQCBib29s
IFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2hhZGVyVHlwZSwgc2hhZGVyU3BlYywgY29tcGlsZU9wdGlvbnMsIHRydWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlUGF0aCwgaW5mb1NpbmspOwog
ICAgIHBhcnNlQ29udGV4dC5mcmFnbWVudFByZWNpc2lvbkhpZ2ggPSBmcmFnbWVudFByZWNpc2lv
bkhpZ2g7Ci0gICAgR2xvYmFsUGFyc2VDb250ZXh0ID0gJnBhcnNlQ29udGV4dDsKKyAgICBTZXRH
bG9iYWxQYXJzZUNvbnRleHQoJnBhcnNlQ29udGV4dCk7CiAKICAgICAvLyBXZSBwcmVzZXJ2ZSBz
eW1ib2xzIGF0IHRoZSBidWlsdC1pbiBsZXZlbCBmcm9tIGNvbXBpbGUtdG8tY29tcGlsZS4KICAg
ICAvLyBTdGFydCBwdXNoaW5nIHRoZSB1c2VyLWRlZmluZWQgc3ltYm9scyBhdCBnbG9iYWwgbGV2
ZWwuCi0gICAgc3ltYm9sVGFibGUucHVzaCgpOwotICAgIGlmICghc3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpKSB7Ci0gICAgICAgIGluZm9TaW5rLmluZm8ucHJlZml4KEVQcmVmaXhJbnRlcm5h
bEVycm9yKTsKLSAgICAgICAgaW5mb1NpbmsuaW5mbyA8PCAiV3Jvbmcgc3ltYm9sIHRhYmxlIGxl
dmVsIjsKLSAgICB9CisgICAgVFNjb3BlZFN5bWJvbFRhYmxlTGV2ZWwgc2NvcGVkU3ltYm9sTGV2
ZWwoJnN5bWJvbFRhYmxlKTsKIAogICAgIC8vIFBhcnNlIHNoYWRlci4KICAgICBib29sIHN1Y2Nl
c3MgPQpAQCAtMTc4LDggKzE5MCwxOSBAQCBib29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBj
aGFyKiBjb25zCiAgICAgICAgIGlmIChzdWNjZXNzICYmIChjb21waWxlT3B0aW9ucyAmIFNIX01B
UF9MT05HX1ZBUklBQkxFX05BTUVTKSAmJiBoYXNoRnVuY3Rpb24gPT0gTlVMTCkKICAgICAgICAg
ICAgIG1hcExvbmdWYXJpYWJsZU5hbWVzKHJvb3QpOwogCi0gICAgICAgIGlmIChzdWNjZXNzICYm
IChjb21waWxlT3B0aW9ucyAmIFNIX0FUVFJJQlVURVNfVU5JRk9STVMpKSB7Ci0gICAgICAgICAg
ICBjb2xsZWN0QXR0cmlic1VuaWZvcm1zKHJvb3QpOworICAgICAgICBpZiAoc3VjY2VzcyAmJiBz
aGFkZXJUeXBlID09IFNIX1ZFUlRFWF9TSEFERVIgJiYgKGNvbXBpbGVPcHRpb25zICYgU0hfSU5J
VF9HTF9QT1NJVElPTikpIHsKKyAgICAgICAgICAgIEluaXRpYWxpemVHTFBvc2l0aW9uIGluaXRH
TFBvc2l0aW9uOworICAgICAgICAgICAgcm9vdC0+dHJhdmVyc2UoJmluaXRHTFBvc2l0aW9uKTsK
KyAgICAgICAgfQorCisJaWYgKHN1Y2Nlc3MgJiYgKGNvbXBpbGVPcHRpb25zICYgU0hfVU5GT0xE
X1NIT1JUX0NJUkNVSVQpKSB7CisgICAgICAgICAgICBVbmZvbGRTaG9ydENpcmN1aXRBU1QgdW5m
b2xkU2hvcnRDaXJjdWl0OworICAgICAgICAgICAgcm9vdC0+dHJhdmVyc2UoJnVuZm9sZFNob3J0
Q2lyY3VpdCk7CisgICAgICAgICAgICB1bmZvbGRTaG9ydENpcmN1aXQudXBkYXRlVHJlZSgpOwor
CX0KKworICAgICAgICBpZiAoc3VjY2VzcyAmJiAoY29tcGlsZU9wdGlvbnMgJiBTSF9WQVJJQUJM
RVMpKSB7CisgICAgICAgICAgICBjb2xsZWN0VmFyaWFibGVzKHJvb3QpOwogICAgICAgICAgICAg
aWYgKGNvbXBpbGVPcHRpb25zICYgU0hfRU5GT1JDRV9QQUNLSU5HX1JFU1RSSUNUSU9OUykgewog
ICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBlbmZvcmNlUGFja2luZ1Jlc3RyaWN0aW9ucygpOwog
ICAgICAgICAgICAgICAgIGlmICghc3VjY2VzcykgewpAQCAtMTk4LDEwICsyMjEsNiBAQCBib29s
IFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zCiAKICAgICAvLyBDbGVhbnVwIG1l
bW9yeS4KICAgICBpbnRlcm1lZGlhdGUucmVtb3ZlKHBhcnNlQ29udGV4dC50cmVlUm9vdCk7Ci0g
ICAgLy8gRW5zdXJlIHN5bWJvbCB0YWJsZSBpcyByZXR1cm5lZCB0byB0aGUgYnVpbHQtaW4gbGV2
ZWwsCi0gICAgLy8gdGhyb3dpbmcgYXdheSBhbGwgYnV0IHRoZSBidWlsdC1pbnMuCi0gICAgd2hp
bGUgKCFzeW1ib2xUYWJsZS5hdEJ1aWx0SW5MZXZlbCgpKQotICAgICAgICBzeW1ib2xUYWJsZS5w
b3AoKTsKIAogICAgIHJldHVybiBzdWNjZXNzOwogfQpAQCAtMjI1LDYgKzI0NCwxMSBAQCBib29s
IFRDb21waWxlcjo6SW5pdEJ1aWx0SW5TeW1ib2xUYWJsZShjCiAgICAgZmxvYXRpbmdQb2ludC5t
YXRyaXggPSBmYWxzZTsKICAgICBmbG9hdGluZ1BvaW50LmFycmF5ID0gZmFsc2U7CiAKKyAgICBU
UHVibGljVHlwZSBzYW1wbGVyOworICAgIHNhbXBsZXIuc2l6ZSA9IDE7CisgICAgc2FtcGxlci5t
YXRyaXggPSBmYWxzZTsKKyAgICBzYW1wbGVyLmFycmF5ID0gZmFsc2U7CisKICAgICBzd2l0Y2go
c2hhZGVyVHlwZSkKICAgICB7CiAgICAgICBjYXNlIFNIX0ZSQUdNRU5UX1NIQURFUjoKQEAgLTIz
Niw2ICsyNjAsMTMgQEAgYm9vbCBUQ29tcGlsZXI6OkluaXRCdWlsdEluU3ltYm9sVGFibGUoYwog
ICAgICAgICBicmVhazsKICAgICAgIGRlZmF1bHQ6IGFzc2VydChmYWxzZSAmJiAiTGFuZ3VhZ2Ug
bm90IHN1cHBvcnRlZCIpOwogICAgIH0KKyAgICAvLyBXZSBzZXQgZGVmYXVsdHMgZm9yIGFsbCB0
aGUgc2FtcGxlciB0eXBlcywgZXZlbiB0aG9zZSB0aGF0IGFyZQorICAgIC8vIG9ubHkgYXZhaWxh
YmxlIGlmIGFuIGV4dGVuc2lvbiBleGlzdHMuCisgICAgZm9yIChpbnQgc2FtcGxlclR5cGUgPSBF
YnRHdWFyZFNhbXBsZXJCZWdpbiArIDE7CisgICAgICAgICBzYW1wbGVyVHlwZSA8IEVidEd1YXJk
U2FtcGxlckVuZDsgKytzYW1wbGVyVHlwZSkgeworICAgICAgICBzYW1wbGVyLnR5cGUgPSBzdGF0
aWNfY2FzdDxUQmFzaWNUeXBlPihzYW1wbGVyVHlwZSk7CisgICAgICAgIHN5bWJvbFRhYmxlLnNl
dERlZmF1bHRQcmVjaXNpb24oc2FtcGxlciwgRWJwTG93KTsKKyAgICB9CiAKICAgICBJbnNlcnRC
dWlsdEluRnVuY3Rpb25zKHNoYWRlclR5cGUsIHNoYWRlclNwZWMsIHJlc291cmNlcywgc3ltYm9s
VGFibGUpOwogCkBAIC0yNTMsNiArMjg0LDcgQEAgdm9pZCBUQ29tcGlsZXI6OmNsZWFyUmVzdWx0
cygpCiAKICAgICBhdHRyaWJzLmNsZWFyKCk7CiAgICAgdW5pZm9ybXMuY2xlYXIoKTsKKyAgICB2
YXJ5aW5ncy5jbGVhcigpOwogCiAgICAgYnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuQ2xlYW51cCgp
OwogCkBAIC0zNTgsOSArMzkwLDkgQEAgYm9vbCBUQ29tcGlsZXI6OmVuZm9yY2VWZXJ0ZXhTaGFk
ZXJUaW1pbgogICAgIHJldHVybiByZXN0cmljdG9yLm51bUVycm9ycygpID09IDA7CiB9CiAKLXZv
aWQgVENvbXBpbGVyOjpjb2xsZWN0QXR0cmlic1VuaWZvcm1zKFRJbnRlcm1Ob2RlKiByb290KQor
dm9pZCBUQ29tcGlsZXI6OmNvbGxlY3RWYXJpYWJsZXMoVEludGVybU5vZGUqIHJvb3QpCiB7Ci0g
ICAgQ29sbGVjdEF0dHJpYnNVbmlmb3JtcyBjb2xsZWN0KGF0dHJpYnMsIHVuaWZvcm1zLCBoYXNo
RnVuY3Rpb24pOworICAgIENvbGxlY3RWYXJpYWJsZXMgY29sbGVjdChhdHRyaWJzLCB1bmlmb3Jt
cywgdmFyeWluZ3MsIGhhc2hGdW5jdGlvbik7CiAgICAgcm9vdC0+dHJhdmVyc2UoJmNvbGxlY3Qp
OwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29uc3Rh
bnRVbmlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9Db25zdGFudFVuaW9uLmgJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9Db25zdGFudFVuaW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTExLDEzICsxMSwxMyBAQAogCiBjbGFzcyBDb25zdGFudFVuaW9uIHsKIHB1YmxpYzoKKyAgICBQ
T09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKCk7CiAgICAgQ29uc3RhbnRVbmlvbigpCiAgICAgewog
ICAgICAgICBpQ29uc3QgPSAwOwogICAgICAgICB0eXBlID0gRWJ0Vm9pZDsKICAgICB9CiAKLSAg
ICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKEdsb2JhbFBvb2xBbGxvY2F0b3IpICAgICAgICAK
ICAgICB2b2lkIHNldElDb25zdChpbnQgaSkge2lDb25zdCA9IGk7IHR5cGUgPSBFYnRJbnQ7IH0K
ICAgICB2b2lkIHNldEZDb25zdChmbG9hdCBmKSB7ZkNvbnN0ID0gZjsgdHlwZSA9IEVidEZsb2F0
OyB9CiAgICAgdm9pZCBzZXRCQ29uc3QoYm9vbCBiKSB7YkNvbnN0ID0gYjsgdHlwZSA9IEVidEJv
b2w7IH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RE
aXNjb250aW51aXR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvRGV0ZWN0RGlzY29udGludWl0eS5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3REaXNjb250aW51aXR5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAsNyArMTAsNyBAQAogCiAjaW5jbHVkZSAiY29tcGls
ZXIvRGV0ZWN0RGlzY29udGludWl0eS5oIgogCi0jaW5jbHVkZSAiY29tcGlsZXIvUGFyc2VIZWxw
ZXIuaCIKKyNpbmNsdWRlICJjb21waWxlci9QYXJzZUNvbnRleHQuaCIKIAogbmFtZXNwYWNlIHNo
CiB7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5mb1Npbmsu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5m
b1NpbmsuaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL0luZm9TaW5rLmgJKHdvcmtpbmcgY29weSkKQEAgLTgsNiArOCw3IEBACiAjZGVm
aW5lIF9JTkZPU0lOS19JTkNMVURFRF8KIAogI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlIDxz
dGRsaWIuaD4KICNpbmNsdWRlICJjb21waWxlci9Db21tb24uaCIKIAogLy8gUmV0dXJucyB0aGUg
ZnJhY3Rpb25hbCBwYXJ0IG9mIHRoZSBnaXZlbiBmbG9hdGluZy1wb2ludCBudW1iZXIuCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZURsbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRp
YWxpemVEbGwuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZURsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwLDI1
ICsxMCw4IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5oIgog
I2luY2x1ZGUgImNvbXBpbGVyL29zaW5jbHVkZS5oIgogCi1PU19UTFNJbmRleCBUaHJlYWRJbml0
aWFsaXplSW5kZXggPSBPU19JTlZBTElEX1RMU19JTkRFWDsKLQogYm9vbCBJbml0UHJvY2Vzcygp
CiB7Ci0gICAgaWYgKFRocmVhZEluaXRpYWxpemVJbmRleCAhPSBPU19JTlZBTElEX1RMU19JTkRF
WCkgewotICAgICAgICAvLwotICAgICAgICAvLyBGdW5jdGlvbiBpcyByZS1lbnRyYW50LgotICAg
ICAgICAvLwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBUaHJlYWRJbml0aWFs
aXplSW5kZXggPSBPU19BbGxvY1RMU0luZGV4KCk7Ci0KLSAgICBpZiAoVGhyZWFkSW5pdGlhbGl6
ZUluZGV4ID09IE9TX0lOVkFMSURfVExTX0lOREVYKSB7Ci0gICAgICAgIGFzc2VydCgwICYmICJJ
bml0UHJvY2VzcygpOiBGYWlsZWQgdG8gYWxsb2NhdGUgVExTIGFyZWEgZm9yIGluaXQgZmxhZyIp
OwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0KICAgICBpZiAoIUluaXRpYWxpemVQ
b29sSW5kZXgoKSkgewogICAgICAgICBhc3NlcnQoMCAmJiAiSW5pdFByb2Nlc3MoKTogRmFpbGVk
IHRvIGluaXRhbGl6ZSBnbG9iYWwgcG9vbCIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0z
OSw3NyArMjIsMTEgQEAgYm9vbCBJbml0UHJvY2VzcygpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICByZXR1cm4gSW5pdFRocmVhZCgpOwotfQotCi1ib29sIERldGFjaFByb2Nl
c3MoKQotewotICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7Ci0KLSAgICBpZiAoVGhyZWFkSW5pdGlh
bGl6ZUluZGV4ID09IE9TX0lOVkFMSURfVExTX0lOREVYKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgIHN1Y2Nlc3MgPSBEZXRhY2hUaHJlYWQoKTsKLQotICAgIGlmICghRnJlZVBhcnNlQ29u
dGV4dEluZGV4KCkpCi0gICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLQotICAgIEZyZWVQb29sSW5k
ZXgoKTsKLQotICAgIE9TX0ZyZWVUTFNJbmRleChUaHJlYWRJbml0aWFsaXplSW5kZXgpOwotICAg
IFRocmVhZEluaXRpYWxpemVJbmRleCA9IE9TX0lOVkFMSURfVExTX0lOREVYOwotCi0gICAgcmV0
dXJuIHN1Y2Nlc3M7Ci19Ci0KLWJvb2wgSW5pdFRocmVhZCgpCi17Ci0gICAgLy8KLSAgICAvLyBU
aGlzIGZ1bmN0aW9uIGlzIHJlLWVudHJhbnQKLSAgICAvLwotICAgIGlmIChUaHJlYWRJbml0aWFs
aXplSW5kZXggPT0gT1NfSU5WQUxJRF9UTFNfSU5ERVgpIHsKLSAgICAgICAgYXNzZXJ0KDAgJiYg
IkluaXRUaHJlYWQoKTogUHJvY2VzcyBoYXNuJ3QgYmVlbiBpbml0YWxpc2VkLiIpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKE9TX0dldFRMU1ZhbHVlKFRocmVhZElu
aXRpYWxpemVJbmRleCkgIT0gMCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBJbml0aWFs
aXplR2xvYmFsUG9vbHMoKTsKLQotICAgIGlmICghSW5pdGlhbGl6ZUdsb2JhbFBhcnNlQ29udGV4
dCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIU9TX1NldFRMU1ZhbHVlKFRo
cmVhZEluaXRpYWxpemVJbmRleCwgKHZvaWQgKikxKSkgewotICAgICAgICBhc3NlcnQoMCAmJiAi
SW5pdFRocmVhZCgpOiBVbmFibGUgdG8gc2V0IGluaXQgZmxhZy4iKTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIERldGFjaFRocmVh
ZCgpCit2b2lkIERldGFjaFByb2Nlc3MoKQogewotICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7Ci0K
LSAgICBpZiAoVGhyZWFkSW5pdGlhbGl6ZUluZGV4ID09IE9TX0lOVkFMSURfVExTX0lOREVYKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vCi0gICAgLy8gRnVuY3Rpb24gaXMgcmUtZW50
cmFudCBhbmQgdGhpcyB0aHJlYWQgbWF5IG5vdCBoYXZlIGJlZW4gaW5pdGFsaXNlZC4KLSAgICAv
LwotICAgIGlmIChPU19HZXRUTFNWYWx1ZShUaHJlYWRJbml0aWFsaXplSW5kZXgpICE9IDApIHsK
LSAgICAgICAgaWYgKCFPU19TZXRUTFNWYWx1ZShUaHJlYWRJbml0aWFsaXplSW5kZXgsICh2b2lk
ICopMCkpIHsKLSAgICAgICAgICAgIGFzc2VydCgwICYmICJEZXRhY2hUaHJlYWQoKTogVW5hYmxl
IHRvIGNsZWFyIGluaXQgZmxhZy4iKTsKLSAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmICghRnJlZVBhcnNlQ29udGV4dCgpKQotICAgICAgICAgICAg
c3VjY2VzcyA9IGZhbHNlOwotCi0gICAgICAgIEZyZWVHbG9iYWxQb29scygpOwotICAgIH0KLQot
ICAgIHJldHVybiBzdWNjZXNzOworICAgIEZyZWVQYXJzZUNvbnRleHRJbmRleCgpOworICAgIEZy
ZWVQb29sSW5kZXgoKTsKIH0KLQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL0luaXRpYWxpemVEbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZURsbC5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZURsbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03LDEwICs3LDcgQEAKICNkZWZpbmUgX19JTklUSUFMSVpFRExMX0gKIAog
Ym9vbCBJbml0UHJvY2VzcygpOwotYm9vbCBEZXRhY2hQcm9jZXNzKCk7Ci0KLWJvb2wgSW5pdFRo
cmVhZCgpOwotYm9vbCBEZXRhY2hUaHJlYWQoKTsKK3ZvaWQgRGV0YWNoUHJvY2VzcygpOwogCiAj
ZW5kaWYgLy8gX19JTklUSUFMSVpFRExMX0gKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemVHTFBvc2l0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZUdMUG9zaXRpb24u
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L0luaXRpYWxpemVHTFBvc2l0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYxIEBA
CisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAiY29tcGlsZXIvSW5pdGlhbGl6ZUdMUG9z
aXRpb24uaCIKKyNpbmNsdWRlICJjb21waWxlci9kZWJ1Zy5oIgorCitib29sIEluaXRpYWxpemVH
TFBvc2l0aW9uOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSog
bm9kZSkKK3sKKyAgICBib29sIHZpc2l0Q2hpbGRyZW4gPSAhbUNvZGVJbnNlcnRlZDsKKyAgICBz
d2l0Y2ggKG5vZGUtPmdldE9wKCkpCisgICAgeworICAgICAgY2FzZSBFT3BTZXF1ZW5jZTogYnJl
YWs7CisgICAgICBjYXNlIEVPcEZ1bmN0aW9uOgorICAgICAgeworICAgICAgICAvLyBGdW5jdGlv
biBkZWZpbml0aW9uLgorICAgICAgICBBU1NFUlQodmlzaXQgPT0gUHJlVmlzaXQpOworICAgICAg
ICBpZiAobm9kZS0+Z2V0TmFtZSgpID09ICJtYWluKCIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IFRJbnRlcm1TZXF1ZW5jZSAmc2VxdWVuY2UgPSBub2RlLT5nZXRTZXF1ZW5jZSgpOworICAgICAg
ICAgICAgQVNTRVJUKChzZXF1ZW5jZS5zaXplKCkgPT0gMSkgfHwgKHNlcXVlbmNlLnNpemUoKSA9
PSAyKSk7CisgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICpib2R5ID0gTlVMTDsKKyAgICAg
ICAgICAgIGlmIChzZXF1ZW5jZS5zaXplKCkgPT0gMSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBib2R5ID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoRU9wU2VxdWVuY2UpOworICAgICAg
ICAgICAgICAgIHNlcXVlbmNlLnB1c2hfYmFjayhib2R5KTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBib2R5ID0gc2VxdWVu
Y2VbMV0tPmdldEFzQWdncmVnYXRlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NF
UlQoYm9keSk7CisgICAgICAgICAgICBpbnNlcnRDb2RlKGJvZHktPmdldFNlcXVlbmNlKCkpOwor
ICAgICAgICAgICAgbUNvZGVJbnNlcnRlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgYnJl
YWs7CisgICAgICB9CisgICAgICBkZWZhdWx0OiB2aXNpdENoaWxkcmVuID0gZmFsc2U7IGJyZWFr
OworICAgIH0KKyAgICByZXR1cm4gdmlzaXRDaGlsZHJlbjsKK30KKwordm9pZCBJbml0aWFsaXpl
R0xQb3NpdGlvbjo6aW5zZXJ0Q29kZShUSW50ZXJtU2VxdWVuY2UmIHNlcXVlbmNlKQoreworICAg
IFRJbnRlcm1CaW5hcnkgKmJpbmFyeSA9IG5ldyBUSW50ZXJtQmluYXJ5KEVPcEFzc2lnbik7Cisg
ICAgc2VxdWVuY2UuaW5zZXJ0KHNlcXVlbmNlLmJlZ2luKCksIGJpbmFyeSk7CisKKyAgICBUSW50
ZXJtU3ltYm9sICpsZWZ0ID0gbmV3IFRJbnRlcm1TeW1ib2woCisgICAgICAgIDAsICJnbF9Qb3Np
dGlvbiIsIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cVBvc2l0aW9uLCA0KSk7Cisg
ICAgYmluYXJ5LT5zZXRMZWZ0KGxlZnQpOworCisgICAgQ29uc3RhbnRVbmlvbiAqdSA9IG5ldyBD
b25zdGFudFVuaW9uWzRdOworICAgIGZvciAoaW50IGlpID0gMDsgaWkgPCAzOyArK2lpKQorICAg
ICAgICB1W2lpXS5zZXRGQ29uc3QoMC4wZik7CisgICAgdVszXS5zZXRGQ29uc3QoMS4wZik7Cisg
ICAgVEludGVybUNvbnN0YW50VW5pb24gKnJpZ2h0ID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9u
KAorICAgICAgICB1LCBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCwgNCkp
OworICAgIGJpbmFyeS0+c2V0UmlnaHQocmlnaHQpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemVHTFBvc2l0aW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemVHTFBvc2l0
aW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvSW5pdGlhbGl6ZUdMUG9zaXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMzIEBA
CisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisvLworCisjaWZuZGVmIENPTVBJTEVSX0lOSVRJQUxJWkVfR0xfUE9T
SVRJT05fSF8KKyNkZWZpbmUgQ09NUElMRVJfSU5JVElBTElaRV9HTF9QT1NJVElPTl9IXworCisj
aW5jbHVkZSAiY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgiCisKK2NsYXNzIEluaXRpYWxpemVHTFBv
c2l0aW9uIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKK3sKK3B1YmxpYzoKKyAgICBJbml0aWFs
aXplR0xQb3NpdGlvbigpIDogbUNvZGVJbnNlcnRlZChmYWxzZSkgeyB9CisKK3Byb3RlY3RlZDoK
KyAgICB2aXJ0dWFsIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkq
IG5vZGUpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHZpc2l0VW5hcnkoVmlz
aXQgdmlzaXQsIFRJbnRlcm1VbmFyeSogbm9kZSkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgdmlzaXRTZWxlY3Rpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24qIG5v
ZGUpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHZpc2l0TG9vcChWaXNpdCB2
aXNpdCwgVEludGVybUxvb3AqIG5vZGUpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIHZpc2l0QnJhbmNoKFZpc2l0IHZpc2l0LCBUSW50ZXJtQnJhbmNoKiBub2RlKSB7IHJldHVy
biBmYWxzZTsgfQorCisgICAgdmlydHVhbCBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0
LCBUSW50ZXJtQWdncmVnYXRlKiBub2RlKTsKKworcHJpdmF0ZToKKyAgICAvLyBJbnNlcnQgQVNU
IG5vZGUgaW4gdGhlIGJlZ2lubmluZyBvZiBtYWluKCkgZm9yICJnbF9Qb3NpdGlvbiA9IHZlYzQo
MC4wLCAwLjAsIDAuMCwgMS4wKTsiLgorICAgIHZvaWQgaW5zZXJ0Q29kZShUSW50ZXJtU2VxdWVu
Y2UmIHNlcXVlbmNlKTsKKworICAgIGJvb2wgbUNvZGVJbnNlcnRlZDsKK307CisKKyNlbmRpZiAg
Ly8gQ09NUElMRVJfSU5JVElBTElaRV9HTF9QT1NJVElPTl9IXwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemVHbG9iYWxzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemVHbG9iYWxz
LmgJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9Jbml0aWFsaXplR2xvYmFscy5oCSh3b3JraW5nIGNvcHkpCkBAIC03LDggKzcsNiBAQAog
I2lmbmRlZiBfX0lOSVRJQUxJWkVfR0xPQkFMU19JTkNMVURFRF8KICNkZWZpbmUgX19JTklUSUFM
SVpFX0dMT0JBTFNfSU5DTFVERURfCiAKLXZvaWQgSW5pdGlhbGl6ZUdsb2JhbFBvb2xzKCk7Ci12
b2lkIEZyZWVHbG9iYWxQb29scygpOwogYm9vbCBJbml0aWFsaXplUG9vbEluZGV4KCk7CiB2b2lk
IEZyZWVQb29sSW5kZXgoKTsKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL0luaXRpYWxpemVQYXJzZUNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Jbml0aWFsaXplUGFyc2VDb250ZXh0LmNwcAko
cmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L0luaXRpYWxpemVQYXJzZUNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw4NSArMTIs
MjkgQEAgT1NfVExTSW5kZXggR2xvYmFsUGFyc2VDb250ZXh0SW5kZXggPSBPUwogCiBib29sIElu
aXRpYWxpemVQYXJzZUNvbnRleHRJbmRleCgpCiB7Ci0gICAgaWYgKEdsb2JhbFBhcnNlQ29udGV4
dEluZGV4ICE9IE9TX0lOVkFMSURfVExTX0lOREVYKSB7Ci0gICAgICAgIGFzc2VydCgwICYmICJJ
bml0aWFsaXplUGFyc2VDb250ZXh0SW5kZXgoKTogUGFyc2UgQ29udGV4dCBhbHJlYWR5IGluaXRh
bGl6ZWQiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vCi0gICAgLy8g
QWxsb2NhdGUgYSBUTFMgaW5kZXguCi0gICAgLy8KLSAgICBHbG9iYWxQYXJzZUNvbnRleHRJbmRl
eCA9IE9TX0FsbG9jVExTSW5kZXgoKTsKLSAgICAKLSAgICBpZiAoR2xvYmFsUGFyc2VDb250ZXh0
SW5kZXggPT0gT1NfSU5WQUxJRF9UTFNfSU5ERVgpIHsKLSAgICAgICAgYXNzZXJ0KDAgJiYgIklu
aXRpYWxpemVQYXJzZUNvbnRleHRJbmRleCgpOiBQYXJzZSBDb250ZXh0IGFscmVhZHkgaW5pdGFs
aXplZCIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIGFzc2VydChHbG9iYWxQ
YXJzZUNvbnRleHRJbmRleCA9PSBPU19JTlZBTElEX1RMU19JTkRFWCk7CiAKLSAgICByZXR1cm4g
dHJ1ZTsKKyAgICBHbG9iYWxQYXJzZUNvbnRleHRJbmRleCA9IE9TX0FsbG9jVExTSW5kZXgoKTsK
KyAgICByZXR1cm4gR2xvYmFsUGFyc2VDb250ZXh0SW5kZXggIT0gT1NfSU5WQUxJRF9UTFNfSU5E
RVg7CiB9CiAKLWJvb2wgRnJlZVBhcnNlQ29udGV4dEluZGV4KCkKK3ZvaWQgRnJlZVBhcnNlQ29u
dGV4dEluZGV4KCkKIHsKLSAgICBPU19UTFNJbmRleCB0bHNpSW5kZXggPSBHbG9iYWxQYXJzZUNv
bnRleHRJbmRleDsKLQotICAgIGlmIChHbG9iYWxQYXJzZUNvbnRleHRJbmRleCA9PSBPU19JTlZB
TElEX1RMU19JTkRFWCkgewotICAgICAgICBhc3NlcnQoMCAmJiAiRnJlZVBhcnNlQ29udGV4dElu
ZGV4KCk6IFBhcnNlIENvbnRleHQgaW5kZXggbm90IGluaXRhbGl6ZWQiKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KKyAgICBhc3NlcnQoR2xvYmFsUGFyc2VDb250ZXh0SW5kZXggIT0g
T1NfSU5WQUxJRF9UTFNfSU5ERVgpOwogCisgICAgT1NfRnJlZVRMU0luZGV4KEdsb2JhbFBhcnNl
Q29udGV4dEluZGV4KTsKICAgICBHbG9iYWxQYXJzZUNvbnRleHRJbmRleCA9IE9TX0lOVkFMSURf
VExTX0lOREVYOwotCi0gICAgcmV0dXJuIE9TX0ZyZWVUTFNJbmRleCh0bHNpSW5kZXgpOwotfQot
Ci1ib29sIEluaXRpYWxpemVHbG9iYWxQYXJzZUNvbnRleHQoKQotewotICAgIGlmIChHbG9iYWxQ
YXJzZUNvbnRleHRJbmRleCA9PSBPU19JTlZBTElEX1RMU19JTkRFWCkgewotICAgICAgICBhc3Nl
cnQoMCAmJiAiSW5pdGlhbGl6ZUdsb2JhbFBhcnNlQ29udGV4dCgpOiBQYXJzZSBDb250ZXh0IGlu
ZGV4IG5vdCBpbml0YWxpemVkIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICBUVGhyZWFkUGFyc2VDb250ZXh0ICpscFBhcnNlQ29udGV4dCA9IHN0YXRpY19jYXN0PFRUaHJl
YWRQYXJzZUNvbnRleHQgKj4oT1NfR2V0VExTVmFsdWUoR2xvYmFsUGFyc2VDb250ZXh0SW5kZXgp
KTsKLSAgICBpZiAobHBQYXJzZUNvbnRleHQgIT0gMCkgewotICAgICAgICBhc3NlcnQoMCAmJiAi
SW5pdGlhbGl6ZVBhcnNlQ29udGV4dEluZGV4KCk6IFBhcnNlIENvbnRleHQgYWxyZWFkeSBpbml0
YWxpemVkIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBUVGhyZWFkUGFy
c2VDb250ZXh0ICpscFRocmVhZERhdGEgPSBuZXcgVFRocmVhZFBhcnNlQ29udGV4dCgpOwotICAg
IGlmIChscFRocmVhZERhdGEgPT0gMCkgewotICAgICAgICBhc3NlcnQoMCAmJiAiSW5pdGlhbGl6
ZUdsb2JhbFBhcnNlQ29udGV4dCgpOiBVbmFibGUgdG8gY3JlYXRlIHRocmVhZCBwYXJzZSBjb250
ZXh0Iik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBscFRocmVhZERhdGEt
PmxwR2xvYmFsUGFyc2VDb250ZXh0ID0gMDsKLSAgICBPU19TZXRUTFNWYWx1ZShHbG9iYWxQYXJz
ZUNvbnRleHRJbmRleCwgbHBUaHJlYWREYXRhKTsKLQotICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIEZyZWVQYXJzZUNvbnRleHQoKQordm9pZCBTZXRHbG9iYWxQYXJzZUNvbnRleHQoVFBhcnNl
Q29udGV4dCogY29udGV4dCkKIHsKLSAgICBpZiAoR2xvYmFsUGFyc2VDb250ZXh0SW5kZXggPT0g
T1NfSU5WQUxJRF9UTFNfSU5ERVgpIHsKLSAgICAgICAgYXNzZXJ0KDAgJiYgIkZyZWVQYXJzZUNv
bnRleHQoKTogUGFyc2UgQ29udGV4dCBpbmRleCBub3QgaW5pdGFsaXplZCIpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgVFRocmVhZFBhcnNlQ29udGV4dCAqbHBQYXJzZUNv
bnRleHQgPSBzdGF0aWNfY2FzdDxUVGhyZWFkUGFyc2VDb250ZXh0ICo+KE9TX0dldFRMU1ZhbHVl
KEdsb2JhbFBhcnNlQ29udGV4dEluZGV4KSk7Ci0gICAgaWYgKGxwUGFyc2VDb250ZXh0KQotICAg
ICAgICBkZWxldGUgbHBQYXJzZUNvbnRleHQ7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBhc3Nl
cnQoR2xvYmFsUGFyc2VDb250ZXh0SW5kZXggIT0gT1NfSU5WQUxJRF9UTFNfSU5ERVgpOworICAg
IE9TX1NldFRMU1ZhbHVlKEdsb2JhbFBhcnNlQ29udGV4dEluZGV4LCBjb250ZXh0KTsKIH0KIAot
VFBhcnNlQ29udGV4dFBvaW50ZXImIEdldEdsb2JhbFBhcnNlQ29udGV4dCgpCitUUGFyc2VDb250
ZXh0KiBHZXRHbG9iYWxQYXJzZUNvbnRleHQoKQogewotICAgIC8vCi0gICAgLy8gTWluaW1hbCBl
cnJvciBjaGVja2luZyBmb3Igc3BlZWQKLSAgICAvLwotCi0gICAgVFRocmVhZFBhcnNlQ29udGV4
dCAqbHBQYXJzZUNvbnRleHQgPSBzdGF0aWNfY2FzdDxUVGhyZWFkUGFyc2VDb250ZXh0ICo+KE9T
X0dldFRMU1ZhbHVlKEdsb2JhbFBhcnNlQ29udGV4dEluZGV4KSk7Ci0KLSAgICByZXR1cm4gbHBQ
YXJzZUNvbnRleHQtPmxwR2xvYmFsUGFyc2VDb250ZXh0OworICAgIGFzc2VydChHbG9iYWxQYXJz
ZUNvbnRleHRJbmRleCAhPSBPU19JTlZBTElEX1RMU19JTkRFWCk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFRQYXJzZUNvbnRleHQqPihPU19HZXRUTFNWYWx1ZShHbG9iYWxQYXJzZUNvbnRleHRJ
bmRleCkpOwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
SW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9Jbml0aWFsaXplUGFyc2VDb250ZXh0LmgJKHJldmlzaW9uIDE1
OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Jbml0aWFsaXpl
UGFyc2VDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTgsMTkgKzgsMTAgQEAKICNkZWZpbmUg
X19JTklUSUFMSVpFX1BBUlNFX0NPTlRFWFRfSU5DTFVERURfCiAKIGJvb2wgSW5pdGlhbGl6ZVBh
cnNlQ29udGV4dEluZGV4KCk7Ci1ib29sIEZyZWVQYXJzZUNvbnRleHRJbmRleCgpOwotCi1ib29s
IEluaXRpYWxpemVHbG9iYWxQYXJzZUNvbnRleHQoKTsKLWJvb2wgRnJlZVBhcnNlQ29udGV4dCgp
Owordm9pZCBGcmVlUGFyc2VDb250ZXh0SW5kZXgoKTsKIAogc3RydWN0IFRQYXJzZUNvbnRleHQ7
Ci10eXBlZGVmIFRQYXJzZUNvbnRleHQqIFRQYXJzZUNvbnRleHRQb2ludGVyOwotZXh0ZXJuIFRQ
YXJzZUNvbnRleHRQb2ludGVyJiBHZXRHbG9iYWxQYXJzZUNvbnRleHQoKTsKLSNkZWZpbmUgR2xv
YmFsUGFyc2VDb250ZXh0IEdldEdsb2JhbFBhcnNlQ29udGV4dCgpCi0KLXR5cGVkZWYgc3RydWN0
IFRUaHJlYWRQYXJzZUNvbnRleHRSZWMKLXsKLSAgICBUUGFyc2VDb250ZXh0ICpscEdsb2JhbFBh
cnNlQ29udGV4dDsKLX0gVFRocmVhZFBhcnNlQ29udGV4dDsKK2V4dGVybiB2b2lkIFNldEdsb2Jh
bFBhcnNlQ29udGV4dChUUGFyc2VDb250ZXh0KiBjb250ZXh0KTsKK2V4dGVybiBUUGFyc2VDb250
ZXh0KiBHZXRHbG9iYWxQYXJzZUNvbnRleHQoKTsKIAogI2VuZGlmIC8vIF9fSU5JVElBTElaRV9Q
QVJTRV9DT05URVhUX0lOQ0xVREVEXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL0ludGVybVRyYXZlcnNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW50ZXJtVHJhdmVyc2UuY3BwCShyZXZpc2lvbiAxNTk1
MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW50ZXJtVHJhdmVy
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMywyNzEgKzIzLDIzNyBAQAogLy8KIC8vIFRyYXZl
cnNhbCBmdW5jdGlvbnMgZm9yIHRlcm1pbmFscyBhcmUgc3RyYWlnaGZvcndhcmQuLi4uCiAvLwot
dm9pZCBUSW50ZXJtU3ltYm9sOjp0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyKiBpdCkKK3ZvaWQg
VEludGVybVN5bWJvbDo6dHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqaXQpCiB7Ci0JaXQtPnZp
c2l0U3ltYm9sKHRoaXMpOworICAgIGl0LT52aXNpdFN5bWJvbCh0aGlzKTsKIH0KIAotdm9pZCBU
SW50ZXJtQ29uc3RhbnRVbmlvbjo6dHJhdmVyc2UoVEludGVybVRyYXZlcnNlciogaXQpCit2b2lk
IFRJbnRlcm1Db25zdGFudFVuaW9uOjp0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyICppdCkKIHsK
LQlpdC0+dmlzaXRDb25zdGFudFVuaW9uKHRoaXMpOworICAgIGl0LT52aXNpdENvbnN0YW50VW5p
b24odGhpcyk7CiB9CiAKIC8vCiAvLyBUcmF2ZXJzZSBhIGJpbmFyeSBub2RlLgogLy8KLXZvaWQg
VEludGVybUJpbmFyeTo6dHJhdmVyc2UoVEludGVybVRyYXZlcnNlciogaXQpCit2b2lkIFRJbnRl
cm1CaW5hcnk6OnRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIgKml0KQogewotCWJvb2wgdmlzaXQg
PSB0cnVlOworICAgIGJvb2wgdmlzaXQgPSB0cnVlOwogCi0JLy8KLQkvLyB2aXNpdCB0aGUgbm9k
ZSBiZWZvcmUgY2hpbGRyZW4gaWYgcHJlLXZpc2l0aW5nLgotCS8vCi0JaWYoaXQtPnByZVZpc2l0
KQotCXsKLQkJdmlzaXQgPSBpdC0+dmlzaXRCaW5hcnkoUHJlVmlzaXQsIHRoaXMpOwotCX0KLQkK
LQkvLwotCS8vIFZpc2l0IHRoZSBjaGlsZHJlbiwgaW4gdGhlIHJpZ2h0IG9yZGVyLgotCS8vCi0J
aWYodmlzaXQpCi0JewotCQlpdC0+aW5jcmVtZW50RGVwdGgoKTsKLQotCQlpZihpdC0+cmlnaHRU
b0xlZnQpIAotCQl7Ci0JCQlpZihyaWdodCkKLQkJCXsKLQkJCQlyaWdodC0+dHJhdmVyc2UoaXQp
OwotCQkJfQotCQkJCi0JCQlpZihpdC0+aW5WaXNpdCkKLQkJCXsKLQkJCQl2aXNpdCA9IGl0LT52
aXNpdEJpbmFyeShJblZpc2l0LCB0aGlzKTsKLQkJCX0KLQotCQkJaWYodmlzaXQgJiYgbGVmdCkK
LQkJCXsKLQkJCQlsZWZ0LT50cmF2ZXJzZShpdCk7Ci0JCQl9Ci0JCX0KLQkJZWxzZQotCQl7Ci0J
CQlpZihsZWZ0KQotCQkJewotCQkJCWxlZnQtPnRyYXZlcnNlKGl0KTsKLQkJCX0KLQkJCQotCQkJ
aWYoaXQtPmluVmlzaXQpCi0JCQl7Ci0JCQkJdmlzaXQgPSBpdC0+dmlzaXRCaW5hcnkoSW5WaXNp
dCwgdGhpcyk7Ci0JCQl9Ci0KLQkJCWlmKHZpc2l0ICYmIHJpZ2h0KQotCQkJewotCQkJCXJpZ2h0
LT50cmF2ZXJzZShpdCk7Ci0JCQl9Ci0JCX0KLQotCQlpdC0+ZGVjcmVtZW50RGVwdGgoKTsKLQl9
Ci0KLQkvLwotCS8vIFZpc2l0IHRoZSBub2RlIGFmdGVyIHRoZSBjaGlsZHJlbiwgaWYgcmVxdWVz
dGVkIGFuZCB0aGUgdHJhdmVyc2FsCi0JLy8gaGFzbid0IGJlZW4gY2FuY2VsbGVkIHlldC4KLQkv
LwotCWlmKHZpc2l0ICYmIGl0LT5wb3N0VmlzaXQpCi0JewotCQlpdC0+dmlzaXRCaW5hcnkoUG9z
dFZpc2l0LCB0aGlzKTsKLQl9CisgICAgLy8KKyAgICAvLyB2aXNpdCB0aGUgbm9kZSBiZWZvcmUg
Y2hpbGRyZW4gaWYgcHJlLXZpc2l0aW5nLgorICAgIC8vCisgICAgaWYgKGl0LT5wcmVWaXNpdCkK
KyAgICAgICAgdmlzaXQgPSBpdC0+dmlzaXRCaW5hcnkoUHJlVmlzaXQsIHRoaXMpOworICAgIAor
ICAgIC8vCisgICAgLy8gVmlzaXQgdGhlIGNoaWxkcmVuLCBpbiB0aGUgcmlnaHQgb3JkZXIuCisg
ICAgLy8KKyAgICBpZiAodmlzaXQpCisgICAgeworICAgICAgICBpdC0+aW5jcmVtZW50RGVwdGgo
dGhpcyk7CisKKyAgICAgICAgaWYgKGl0LT5yaWdodFRvTGVmdCkgCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmIChyaWdodCkKKyAgICAgICAgICAgICAgICByaWdodC0+dHJhdmVyc2UoaXQpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoaXQtPmluVmlzaXQpCisgICAgICAgICAgICAg
ICAgdmlzaXQgPSBpdC0+dmlzaXRCaW5hcnkoSW5WaXNpdCwgdGhpcyk7CisKKyAgICAgICAgICAg
IGlmICh2aXNpdCAmJiBsZWZ0KQorICAgICAgICAgICAgICAgIGxlZnQtPnRyYXZlcnNlKGl0KTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChsZWZ0
KQorICAgICAgICAgICAgICAgIGxlZnQtPnRyYXZlcnNlKGl0KTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgaWYgKGl0LT5pblZpc2l0KQorICAgICAgICAgICAgICAgIHZpc2l0ID0gaXQtPnZp
c2l0QmluYXJ5KEluVmlzaXQsIHRoaXMpOworCisgICAgICAgICAgICBpZiAodmlzaXQgJiYgcmln
aHQpCisgICAgICAgICAgICAgICAgcmlnaHQtPnRyYXZlcnNlKGl0KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGl0LT5kZWNyZW1lbnREZXB0aCgpOworICAgIH0KKworICAgIC8vCisgICAgLy8gVmlz
aXQgdGhlIG5vZGUgYWZ0ZXIgdGhlIGNoaWxkcmVuLCBpZiByZXF1ZXN0ZWQgYW5kIHRoZSB0cmF2
ZXJzYWwKKyAgICAvLyBoYXNuJ3QgYmVlbiBjYW5jZWxsZWQgeWV0LgorICAgIC8vCisgICAgaWYg
KHZpc2l0ICYmIGl0LT5wb3N0VmlzaXQpCisgICAgICAgIGl0LT52aXNpdEJpbmFyeShQb3N0Vmlz
aXQsIHRoaXMpOwogfQogCiAvLwogLy8gVHJhdmVyc2UgYSB1bmFyeSBub2RlLiAgU2FtZSBjb21t
ZW50cyBpbiBiaW5hcnkgbm9kZSBhcHBseSBoZXJlLgogLy8KLXZvaWQgVEludGVybVVuYXJ5Ojp0
cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyKiBpdCkKK3ZvaWQgVEludGVybVVuYXJ5Ojp0cmF2ZXJz
ZShUSW50ZXJtVHJhdmVyc2VyICppdCkKIHsKLQlib29sIHZpc2l0ID0gdHJ1ZTsKKyAgICBib29s
IHZpc2l0ID0gdHJ1ZTsKIAotCWlmIChpdC0+cHJlVmlzaXQpCi0JCXZpc2l0ID0gaXQtPnZpc2l0
VW5hcnkoUHJlVmlzaXQsIHRoaXMpOworICAgIGlmIChpdC0+cHJlVmlzaXQpCisgICAgICAgIHZp
c2l0ID0gaXQtPnZpc2l0VW5hcnkoUHJlVmlzaXQsIHRoaXMpOwogCi0JaWYgKHZpc2l0KSB7Ci0J
CWl0LT5pbmNyZW1lbnREZXB0aCgpOwotCQlvcGVyYW5kLT50cmF2ZXJzZShpdCk7Ci0JCWl0LT5k
ZWNyZW1lbnREZXB0aCgpOwotCX0KLQkKLQlpZiAodmlzaXQgJiYgaXQtPnBvc3RWaXNpdCkKLQkJ
aXQtPnZpc2l0VW5hcnkoUG9zdFZpc2l0LCB0aGlzKTsKKyAgICBpZiAodmlzaXQpIHsKKyAgICAg
ICAgaXQtPmluY3JlbWVudERlcHRoKHRoaXMpOworICAgICAgICBvcGVyYW5kLT50cmF2ZXJzZShp
dCk7CisgICAgICAgIGl0LT5kZWNyZW1lbnREZXB0aCgpOworICAgIH0KKyAgICAKKyAgICBpZiAo
dmlzaXQgJiYgaXQtPnBvc3RWaXNpdCkKKyAgICAgICAgaXQtPnZpc2l0VW5hcnkoUG9zdFZpc2l0
LCB0aGlzKTsKIH0KIAogLy8KIC8vIFRyYXZlcnNlIGFuIGFnZ3JlZ2F0ZSBub2RlLiAgU2FtZSBj
b21tZW50cyBpbiBiaW5hcnkgbm9kZSBhcHBseSBoZXJlLgogLy8KLXZvaWQgVEludGVybUFnZ3Jl
Z2F0ZTo6dHJhdmVyc2UoVEludGVybVRyYXZlcnNlciogaXQpCit2b2lkIFRJbnRlcm1BZ2dyZWdh
dGU6OnRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIgKml0KQogewotCWJvb2wgdmlzaXQgPSB0cnVl
OwotCQotCWlmKGl0LT5wcmVWaXNpdCkKLQl7Ci0JCXZpc2l0ID0gaXQtPnZpc2l0QWdncmVnYXRl
KFByZVZpc2l0LCB0aGlzKTsKLQl9Ci0JCi0JaWYodmlzaXQpCi0JewotCQlpdC0+aW5jcmVtZW50
RGVwdGgoKTsKLQotCQlpZihpdC0+cmlnaHRUb0xlZnQpCi0JCXsKLQkJCWZvcihUSW50ZXJtU2Vx
dWVuY2U6OnJldmVyc2VfaXRlcmF0b3Igc2l0ID0gc2VxdWVuY2UucmJlZ2luKCk7IHNpdCAhPSBz
ZXF1ZW5jZS5yZW5kKCk7IHNpdCsrKQotCQkJewotCQkJCSgqc2l0KS0+dHJhdmVyc2UoaXQpOwot
Ci0JCQkJaWYodmlzaXQgJiYgaXQtPmluVmlzaXQpCi0JCQkJewotCQkJCQlpZigqc2l0ICE9IHNl
cXVlbmNlLmZyb250KCkpCi0JCQkJCXsKLQkJCQkJCXZpc2l0ID0gaXQtPnZpc2l0QWdncmVnYXRl
KEluVmlzaXQsIHRoaXMpOwotCQkJCQl9Ci0JCQkJfQotCQkJfQotCQl9Ci0JCWVsc2UKLQkJewot
CQkJZm9yKFRJbnRlcm1TZXF1ZW5jZTo6aXRlcmF0b3Igc2l0ID0gc2VxdWVuY2UuYmVnaW4oKTsg
c2l0ICE9IHNlcXVlbmNlLmVuZCgpOyBzaXQrKykKLQkJCXsKLQkJCQkoKnNpdCktPnRyYXZlcnNl
KGl0KTsKLQotCQkJCWlmKHZpc2l0ICYmIGl0LT5pblZpc2l0KQotCQkJCXsKLQkJCQkJaWYoKnNp
dCAhPSBzZXF1ZW5jZS5iYWNrKCkpCi0JCQkJCXsKLQkJCQkJCXZpc2l0ID0gaXQtPnZpc2l0QWdn
cmVnYXRlKEluVmlzaXQsIHRoaXMpOwotCQkJCQl9Ci0JCQkJfQotCQkJfQotCQl9Ci0JCQotCQlp
dC0+ZGVjcmVtZW50RGVwdGgoKTsKLQl9Ci0KLQlpZih2aXNpdCAmJiBpdC0+cG9zdFZpc2l0KQot
CXsKLQkJaXQtPnZpc2l0QWdncmVnYXRlKFBvc3RWaXNpdCwgdGhpcyk7Ci0JfQorICAgIGJvb2wg
dmlzaXQgPSB0cnVlOworICAgIAorICAgIGlmIChpdC0+cHJlVmlzaXQpCisgICAgICAgIHZpc2l0
ID0gaXQtPnZpc2l0QWdncmVnYXRlKFByZVZpc2l0LCB0aGlzKTsKKyAgICAKKyAgICBpZiAodmlz
aXQpCisgICAgeworICAgICAgICBpdC0+aW5jcmVtZW50RGVwdGgodGhpcyk7CisKKyAgICAgICAg
aWYgKGl0LT5yaWdodFRvTGVmdCkKKyAgICAgICAgeworICAgICAgICAgICAgZm9yIChUSW50ZXJt
U2VxdWVuY2U6OnJldmVyc2VfaXRlcmF0b3Igc2l0ID0gc2VxdWVuY2UucmJlZ2luKCk7IHNpdCAh
PSBzZXF1ZW5jZS5yZW5kKCk7IHNpdCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICgqc2l0KS0+dHJhdmVyc2UoaXQpOworCisgICAgICAgICAgICAgICAgaWYgKHZpc2l0ICYmIGl0
LT5pblZpc2l0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCpz
aXQgIT0gc2VxdWVuY2UuZnJvbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0ID0g
aXQtPnZpc2l0QWdncmVnYXRlKEluVmlzaXQsIHRoaXMpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGZvciAoVEludGVybVNlcXVlbmNlOjppdGVyYXRvciBzaXQgPSBzZXF1ZW5jZS5iZWdpbigp
OyBzaXQgIT0gc2VxdWVuY2UuZW5kKCk7IHNpdCsrKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICgqc2l0KS0+dHJhdmVyc2UoaXQpOworCisgICAgICAgICAgICAgICAgaWYgKHZpc2l0
ICYmIGl0LT5pblZpc2l0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCpzaXQgIT0gc2VxdWVuY2UuYmFjaygpKQorICAgICAgICAgICAgICAgICAgICAgICAgdmlz
aXQgPSBpdC0+dmlzaXRBZ2dyZWdhdGUoSW5WaXNpdCwgdGhpcyk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpdC0+ZGVjcmVt
ZW50RGVwdGgoKTsKKyAgICB9CisKKyAgICBpZiAodmlzaXQgJiYgaXQtPnBvc3RWaXNpdCkKKyAg
ICAgICAgaXQtPnZpc2l0QWdncmVnYXRlKFBvc3RWaXNpdCwgdGhpcyk7CiB9CiAKIC8vCiAvLyBU
cmF2ZXJzZSBhIHNlbGVjdGlvbiBub2RlLiAgU2FtZSBjb21tZW50cyBpbiBiaW5hcnkgbm9kZSBh
cHBseSBoZXJlLgogLy8KLXZvaWQgVEludGVybVNlbGVjdGlvbjo6dHJhdmVyc2UoVEludGVybVRy
YXZlcnNlciogaXQpCit2b2lkIFRJbnRlcm1TZWxlY3Rpb246OnRyYXZlcnNlKFRJbnRlcm1UcmF2
ZXJzZXIgKml0KQogewotCWJvb2wgdmlzaXQgPSB0cnVlOworICAgIGJvb2wgdmlzaXQgPSB0cnVl
OwogCi0JaWYgKGl0LT5wcmVWaXNpdCkKLQkJdmlzaXQgPSBpdC0+dmlzaXRTZWxlY3Rpb24oUHJl
VmlzaXQsIHRoaXMpOwotCQotCWlmICh2aXNpdCkgewotCQlpdC0+aW5jcmVtZW50RGVwdGgoKTsK
LQkJaWYgKGl0LT5yaWdodFRvTGVmdCkgewotCQkJaWYgKGZhbHNlQmxvY2spCi0JCQkJZmFsc2VC
bG9jay0+dHJhdmVyc2UoaXQpOwotCQkJaWYgKHRydWVCbG9jaykKLQkJCQl0cnVlQmxvY2stPnRy
YXZlcnNlKGl0KTsKLQkJCWNvbmRpdGlvbi0+dHJhdmVyc2UoaXQpOwotCQl9IGVsc2UgewotCQkJ
Y29uZGl0aW9uLT50cmF2ZXJzZShpdCk7Ci0JCQlpZiAodHJ1ZUJsb2NrKQotCQkJCXRydWVCbG9j
ay0+dHJhdmVyc2UoaXQpOwotCQkJaWYgKGZhbHNlQmxvY2spCi0JCQkJZmFsc2VCbG9jay0+dHJh
dmVyc2UoaXQpOwotCQl9Ci0JCWl0LT5kZWNyZW1lbnREZXB0aCgpOwotCX0KKyAgICBpZiAoaXQt
PnByZVZpc2l0KQorICAgICAgICB2aXNpdCA9IGl0LT52aXNpdFNlbGVjdGlvbihQcmVWaXNpdCwg
dGhpcyk7CisgICAgCisgICAgaWYgKHZpc2l0KSB7CisgICAgICAgIGl0LT5pbmNyZW1lbnREZXB0
aCh0aGlzKTsKKyAgICAgICAgaWYgKGl0LT5yaWdodFRvTGVmdCkgeworICAgICAgICAgICAgaWYg
KGZhbHNlQmxvY2spCisgICAgICAgICAgICAgICAgZmFsc2VCbG9jay0+dHJhdmVyc2UoaXQpOwor
ICAgICAgICAgICAgaWYgKHRydWVCbG9jaykKKyAgICAgICAgICAgICAgICB0cnVlQmxvY2stPnRy
YXZlcnNlKGl0KTsKKyAgICAgICAgICAgIGNvbmRpdGlvbi0+dHJhdmVyc2UoaXQpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgY29uZGl0aW9uLT50cmF2ZXJzZShpdCk7CisgICAgICAg
ICAgICBpZiAodHJ1ZUJsb2NrKQorICAgICAgICAgICAgICAgIHRydWVCbG9jay0+dHJhdmVyc2Uo
aXQpOworICAgICAgICAgICAgaWYgKGZhbHNlQmxvY2spCisgICAgICAgICAgICAgICAgZmFsc2VC
bG9jay0+dHJhdmVyc2UoaXQpOworICAgICAgICB9CisgICAgICAgIGl0LT5kZWNyZW1lbnREZXB0
aCgpOworICAgIH0KIAotCWlmICh2aXNpdCAmJiBpdC0+cG9zdFZpc2l0KQotCQlpdC0+dmlzaXRT
ZWxlY3Rpb24oUG9zdFZpc2l0LCB0aGlzKTsKKyAgICBpZiAodmlzaXQgJiYgaXQtPnBvc3RWaXNp
dCkKKyAgICAgICAgaXQtPnZpc2l0U2VsZWN0aW9uKFBvc3RWaXNpdCwgdGhpcyk7CiB9CiAKIC8v
CiAvLyBUcmF2ZXJzZSBhIGxvb3Agbm9kZS4gIFNhbWUgY29tbWVudHMgaW4gYmluYXJ5IG5vZGUg
YXBwbHkgaGVyZS4KIC8vCi12b2lkIFRJbnRlcm1Mb29wOjp0cmF2ZXJzZShUSW50ZXJtVHJhdmVy
c2VyKiBpdCkKK3ZvaWQgVEludGVybUxvb3A6OnRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIgKml0
KQogewotCWJvb2wgdmlzaXQgPSB0cnVlOworICAgIGJvb2wgdmlzaXQgPSB0cnVlOworCisgICAg
aWYgKGl0LT5wcmVWaXNpdCkKKyAgICAgICAgdmlzaXQgPSBpdC0+dmlzaXRMb29wKFByZVZpc2l0
LCB0aGlzKTsKKyAgICAKKyAgICBpZiAodmlzaXQpCisgICAgeworICAgICAgICBpdC0+aW5jcmVt
ZW50RGVwdGgodGhpcyk7CisKKyAgICAgICAgaWYgKGl0LT5yaWdodFRvTGVmdCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKGV4cHIpCisgICAgICAgICAgICAgICAgZXhwci0+dHJhdmVyc2Uo
aXQpOworCisgICAgICAgICAgICBpZiAoYm9keSkKKyAgICAgICAgICAgICAgICBib2R5LT50cmF2
ZXJzZShpdCk7CisKKyAgICAgICAgICAgIGlmIChjb25kKQorICAgICAgICAgICAgICAgIGNvbmQt
PnRyYXZlcnNlKGl0KTsKKworICAgICAgICAgICAgaWYgKGluaXQpCisgICAgICAgICAgICAgICAg
aW5pdC0+dHJhdmVyc2UoaXQpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKGluaXQpCisgICAgICAgICAgICAgICAgaW5pdC0+dHJhdmVyc2UoaXQp
OworCisgICAgICAgICAgICBpZiAoY29uZCkKKyAgICAgICAgICAgICAgICBjb25kLT50cmF2ZXJz
ZShpdCk7CisKKyAgICAgICAgICAgIGlmIChib2R5KQorICAgICAgICAgICAgICAgIGJvZHktPnRy
YXZlcnNlKGl0KTsKKworICAgICAgICAgICAgaWYgKGV4cHIpCisgICAgICAgICAgICAgICAgZXhw
ci0+dHJhdmVyc2UoaXQpOworICAgICAgICB9CisKKyAgICAgICAgaXQtPmRlY3JlbWVudERlcHRo
KCk7CisgICAgfQogCi0JaWYoaXQtPnByZVZpc2l0KQotCXsKLQkJdmlzaXQgPSBpdC0+dmlzaXRM
b29wKFByZVZpc2l0LCB0aGlzKTsKLQl9Ci0JCi0JaWYodmlzaXQpCi0JewotCQlpdC0+aW5jcmVt
ZW50RGVwdGgoKTsKLQotCQlpZihpdC0+cmlnaHRUb0xlZnQpCi0JCXsKLQkJCWlmKGV4cHIpCi0J
CQl7Ci0JCQkJZXhwci0+dHJhdmVyc2UoaXQpOwotCQkJfQotCi0JCQlpZihib2R5KQotCQkJewot
CQkJCWJvZHktPnRyYXZlcnNlKGl0KTsKLQkJCX0KLQotCQkJaWYoY29uZCkKLQkJCXsKLQkJCQlj
b25kLT50cmF2ZXJzZShpdCk7Ci0JCQl9Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQlpZihjb25kKQot
CQkJewotCQkJCWNvbmQtPnRyYXZlcnNlKGl0KTsKLQkJCX0KLQotCQkJaWYoYm9keSkKLQkJCXsK
LQkJCQlib2R5LT50cmF2ZXJzZShpdCk7Ci0JCQl9Ci0KLQkJCWlmKGV4cHIpCi0JCQl7Ci0JCQkJ
ZXhwci0+dHJhdmVyc2UoaXQpOwotCQkJfQotCQl9Ci0KLQkJaXQtPmRlY3JlbWVudERlcHRoKCk7
Ci0JfQotCi0JaWYodmlzaXQgJiYgaXQtPnBvc3RWaXNpdCkKLQl7Ci0JCWl0LT52aXNpdExvb3Ao
UG9zdFZpc2l0LCB0aGlzKTsKLQl9CisgICAgaWYgKHZpc2l0ICYmIGl0LT5wb3N0VmlzaXQpCisg
ICAgICAgIGl0LT52aXNpdExvb3AoUG9zdFZpc2l0LCB0aGlzKTsKIH0KIAogLy8KIC8vIFRyYXZl
cnNlIGEgYnJhbmNoIG5vZGUuICBTYW1lIGNvbW1lbnRzIGluIGJpbmFyeSBub2RlIGFwcGx5IGhl
cmUuCiAvLwotdm9pZCBUSW50ZXJtQnJhbmNoOjp0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyKiBp
dCkKK3ZvaWQgVEludGVybUJyYW5jaDo6dHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqaXQpCiB7
Ci0JYm9vbCB2aXNpdCA9IHRydWU7CisgICAgYm9vbCB2aXNpdCA9IHRydWU7CiAKLQlpZiAoaXQt
PnByZVZpc2l0KQotCQl2aXNpdCA9IGl0LT52aXNpdEJyYW5jaChQcmVWaXNpdCwgdGhpcyk7Ci0J
Ci0JaWYgKHZpc2l0ICYmIGV4cHJlc3Npb24pIHsKLQkJaXQtPmluY3JlbWVudERlcHRoKCk7Ci0J
CWV4cHJlc3Npb24tPnRyYXZlcnNlKGl0KTsKLQkJaXQtPmRlY3JlbWVudERlcHRoKCk7Ci0JfQor
ICAgIGlmIChpdC0+cHJlVmlzaXQpCisgICAgICAgIHZpc2l0ID0gaXQtPnZpc2l0QnJhbmNoKFBy
ZVZpc2l0LCB0aGlzKTsKKyAgICAKKyAgICBpZiAodmlzaXQgJiYgZXhwcmVzc2lvbikgeworICAg
ICAgICBpdC0+aW5jcmVtZW50RGVwdGgodGhpcyk7CisgICAgICAgIGV4cHJlc3Npb24tPnRyYXZl
cnNlKGl0KTsKKyAgICAgICAgaXQtPmRlY3JlbWVudERlcHRoKCk7CisgICAgfQogCi0JaWYgKHZp
c2l0ICYmIGl0LT5wb3N0VmlzaXQpCi0JCWl0LT52aXNpdEJyYW5jaChQb3N0VmlzaXQsIHRoaXMp
OworICAgIGlmICh2aXNpdCAmJiBpdC0+cG9zdFZpc2l0KQorICAgICAgICBpdC0+dmlzaXRCcmFu
Y2goUG9zdFZpc2l0LCB0aGlzKTsKIH0KIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL0ludGVybWVkaWF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0ludGVybWVkaWF0ZS5jcHAJKHJldmlzaW9uIDE1OTUz
MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbnRlcm1lZGlhdGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOSwxMSArMTksMTMgQEAKIAogYm9vbCBDb21wYXJlU3Ry
dWN0dXJlKGNvbnN0IFRUeXBlJiBsZWZ0Tm9kZVR5cGUsIENvbnN0YW50VW5pb24qIHJpZ2h0VW5p
b25BcnJheSwgQ29uc3RhbnRVbmlvbiogbGVmdFVuaW9uQXJyYXkpOwogCi1zdGF0aWMgVFByZWNp
c2lvbiBHZXRIaWdoZXJQcmVjaXNpb24oIFRQcmVjaXNpb24gbGVmdCwgVFByZWNpc2lvbiByaWdo
dCApeworc3RhdGljIFRQcmVjaXNpb24gR2V0SGlnaGVyUHJlY2lzaW9uKFRQcmVjaXNpb24gbGVm
dCwgVFByZWNpc2lvbiByaWdodCkKK3sKICAgICByZXR1cm4gbGVmdCA+IHJpZ2h0ID8gbGVmdCA6
IHJpZ2h0OwogfQogCi1jb25zdCBjaGFyKiBnZXRPcGVyYXRvclN0cmluZyhUT3BlcmF0b3Igb3Ap
IHsKK2NvbnN0IGNoYXIqIGdldE9wZXJhdG9yU3RyaW5nKFRPcGVyYXRvciBvcCkKK3sKICAgICBz
d2l0Y2ggKG9wKSB7CiAgICAgICBjYXNlIEVPcEluaXRpYWxpemU6IHJldHVybiAiPSI7CiAgICAg
ICBjYXNlIEVPcEFzc2lnbjogcmV0dXJuICI9IjsKQEAgLTc0MiwxMiArNzQ0LDY3IEBAIHZvaWQg
VEludGVybWVkaWF0ZTo6cmVtb3ZlKFRJbnRlcm1Ob2RlKiAKIC8vCiAvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKKyNkZWZp
bmUgUkVQTEFDRV9JRl9JUyhub2RlLCB0eXBlLCBvcmlnaW5hbCwgcmVwbGFjZW1lbnQpIFwKKyAg
ICBpZiAobm9kZSA9PSBvcmlnaW5hbCkgeyBcCisgICAgICAgIG5vZGUgPSBzdGF0aWNfY2FzdDx0
eXBlICo+KHJlcGxhY2VtZW50KTsgXAorICAgICAgICByZXR1cm4gdHJ1ZTsgXAorICAgIH0KKwor
Ym9vbCBUSW50ZXJtTG9vcDo6cmVwbGFjZUNoaWxkTm9kZSgKKyAgICBUSW50ZXJtTm9kZSAqb3Jp
Z2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCkKK3sKKyAgICBSRVBMQUNFX0lGX0lTKGlu
aXQsIFRJbnRlcm1Ob2RlLCBvcmlnaW5hbCwgcmVwbGFjZW1lbnQpOworICAgIFJFUExBQ0VfSUZf
SVMoY29uZCwgVEludGVybVR5cGVkLCBvcmlnaW5hbCwgcmVwbGFjZW1lbnQpOworICAgIFJFUExB
Q0VfSUZfSVMoZXhwciwgVEludGVybVR5cGVkLCBvcmlnaW5hbCwgcmVwbGFjZW1lbnQpOworICAg
IFJFUExBQ0VfSUZfSVMoYm9keSwgVEludGVybU5vZGUsIG9yaWdpbmFsLCByZXBsYWNlbWVudCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFRJbnRlcm1CcmFuY2g6OnJlcGxhY2VDaGls
ZE5vZGUoCisgICAgVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1l
bnQpCit7CisgICAgUkVQTEFDRV9JRl9JUyhleHByZXNzaW9uLCBUSW50ZXJtVHlwZWQsIG9yaWdp
bmFsLCByZXBsYWNlbWVudCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFRJbnRlcm1C
aW5hcnk6OnJlcGxhY2VDaGlsZE5vZGUoCisgICAgVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50
ZXJtTm9kZSAqcmVwbGFjZW1lbnQpCit7CisgICAgUkVQTEFDRV9JRl9JUyhsZWZ0LCBUSW50ZXJt
VHlwZWQsIG9yaWdpbmFsLCByZXBsYWNlbWVudCk7CisgICAgUkVQTEFDRV9JRl9JUyhyaWdodCwg
VEludGVybVR5cGVkLCBvcmlnaW5hbCwgcmVwbGFjZW1lbnQpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBUSW50ZXJtVW5hcnk6OnJlcGxhY2VDaGlsZE5vZGUoCisgICAgVEludGVybU5v
ZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpCit7CisgICAgUkVQTEFDRV9J
Rl9JUyhvcGVyYW5kLCBUSW50ZXJtVHlwZWQsIG9yaWdpbmFsLCByZXBsYWNlbWVudCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIFRJbnRlcm1BZ2dyZWdhdGU6OnJlcGxhY2VDaGlsZE5v
ZGUoCisgICAgVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQp
Cit7CisgICAgZm9yIChzaXplX3QgaWkgPSAwOyBpaSA8IHNlcXVlbmNlLnNpemUoKTsgKytpaSkK
KyAgICB7CisgICAgICAgIFJFUExBQ0VfSUZfSVMoc2VxdWVuY2VbaWldLCBUSW50ZXJtTm9kZSwg
b3JpZ2luYWwsIHJlcGxhY2VtZW50KTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiti
b29sIFRJbnRlcm1TZWxlY3Rpb246OnJlcGxhY2VDaGlsZE5vZGUoCisgICAgVEludGVybU5vZGUg
Km9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpCit7CisgICAgUkVQTEFDRV9JRl9J
Uyhjb25kaXRpb24sIFRJbnRlcm1UeXBlZCwgb3JpZ2luYWwsIHJlcGxhY2VtZW50KTsKKyAgICBS
RVBMQUNFX0lGX0lTKHRydWVCbG9jaywgVEludGVybU5vZGUsIG9yaWdpbmFsLCByZXBsYWNlbWVu
dCk7CisgICAgUkVQTEFDRV9JRl9JUyhmYWxzZUJsb2NrLCBUSW50ZXJtTm9kZSwgb3JpZ2luYWws
IHJlcGxhY2VtZW50KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIC8vCiAvLyBTYXkgd2hldGhl
ciBvciBub3QgYW4gb3BlcmF0aW9uIG5vZGUgY2hhbmdlcyB0aGUgdmFsdWUgb2YgYSB2YXJpYWJs
ZS4KIC8vCi0vLyBSZXR1cm5zIHRydWUgaWYgc3RhdGUgaXMgbW9kaWZpZWQuCi0vLwotYm9vbCBU
SW50ZXJtT3BlcmF0b3I6Om1vZGlmaWVzU3RhdGUoKSBjb25zdAorYm9vbCBUSW50ZXJtT3BlcmF0
b3I6OmlzQXNzaWdubWVudCgpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBj
YXNlIEVPcFBvc3RJbmNyZW1lbnQ6CkBAIC03OTYsNiArODUzLDcgQEAgYm9vbCBUSW50ZXJtT3Bl
cmF0b3I6OmlzQ29uc3RydWN0b3IoKSBjbwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIH0KKwogLy8KIC8vIE1ha2Ugc3VyZSB0aGUgdHlwZSBvZiBhIHVuYXJ5IG9wZXJhdG9yIGlz
IGFwcHJvcHJpYXRlIGZvciBpdHMKIC8vIGNvbWJpbmF0aW9uIG9mIG9wZXJhdGlvbiBhbmQgb3Bl
cmFuZCB0eXBlLgpAQCAtMTM2NiwxOCArMTQyNCwxOCBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1l
ZGlhdGU6OnByb21vdGVDb25zCiAgICAgQ29uc3RhbnRVbmlvbiAqbGVmdFVuaW9uQXJyYXkgPSBu
ZXcgQ29uc3RhbnRVbmlvbltzaXplXTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgaSsrKSB7Ci0KKyAgICAgICAgaW50IGluZGV4ID0gc3RhdGljX2Nhc3Q8aW50PihpKTsKICAg
ICAgICAgc3dpdGNoIChwcm9tb3RlVG8pIHsKICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CiAg
ICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5nZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBsZWZ0VW5pb25BcnJheVtpXS5zZXRGQ29uc3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vZGUtPmdl
dElDb25zdChpKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0u
c2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0Pihub2RlLT5nZXRJQ29uc3QoaW5kZXgpKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBF
YnRCb29sOgotICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNv
bnN0KHN0YXRpY19jYXN0PGZsb2F0Pihub2RlLT5nZXRCQ29uc3QoaSkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEZDb25zdChzdGF0aWNfY2FzdDxmbG9h
dD4obm9kZS0+Z2V0QkNvbnN0KGluZGV4KSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRGQ29uc3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5v
ZGUtPmdldEZDb25zdChpKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJy
YXlbaV0uc2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0Pihub2RlLT5nZXRGQ29uc3QoaW5kZXgp
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShF
UHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQ2Fubm90IHByb21vdGUiKTsK
QEAgLTEzODcsMTMgKzE0NDUsMTMgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjpwcm9t
b3RlQ29ucwogICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CiAgICAgICAgICAgICAgICAgc3dpdGNo
IChub2RlLT5nZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpIHsKICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBFYnRJbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5z
ZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50Pihub2RlLT5nZXRJQ29uc3QoaSkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldElDb25zdChzdGF0aWNfY2FzdDxp
bnQ+KG5vZGUtPmdldElDb25zdChpbmRleCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50Pihub2Rl
LT5nZXRCQ29uc3QoaSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5
W2ldLnNldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KG5vZGUtPmdldEJDb25zdChpbmRleCkpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNl
IEVidEZsb2F0OgotICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0
SUNvbnN0KHN0YXRpY19jYXN0PGludD4obm9kZS0+Z2V0RkNvbnN0KGkpKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50
Pihub2RlLT5nZXRGQ29uc3QoaW5kZXgpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAg
IGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGlu
ZSgpLCAiQ2Fubm90IHByb21vdGUiKTsKQEAgLTE0MDMsMTMgKzE0NjEsMTMgQEAgVEludGVybVR5
cGVkKiBUSW50ZXJtZWRpYXRlOjpwcm9tb3RlQ29ucwogICAgICAgICAgICAgY2FzZSBFYnRCb29s
OgogICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0VHlwZSgpLmdldEJhc2ljVHlwZSgp
KSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgotICAgICAgICAgICAgICAgICAg
ICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0QkNvbnN0KG5vZGUtPmdldElDb25zdChpKSAhPSAw
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEJDb25zdChu
b2RlLT5nZXRJQ29uc3QoaW5kZXgpICE9IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEJDb25zdChub2RlLT5nZXRCQ29uc3QoaSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0QkNvbnN0KG5vZGUt
PmdldEJDb25zdChpbmRleCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBs
ZWZ0VW5pb25BcnJheVtpXS5zZXRCQ29uc3Qobm9kZS0+Z2V0RkNvbnN0KGkpICE9IDAuMGYpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0QkNvbnN0KG5vZGUt
PmdldEZDb25zdChpbmRleCkgIT0gMC4wZik7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAg
IGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGlu
ZSgpLCAiQ2Fubm90IHByb21vdGUiKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9NYXBMb25nVmFyaWFibGVOYW1lcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL01hcExvbmdWYXJpYWJsZU5hbWVzLmNwcAko
cmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L01hcExvbmdWYXJpYWJsZU5hbWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDEzICsxMDIs
NiBAQCB2b2lkIE1hcExvbmdWYXJpYWJsZU5hbWVzOjp2aXNpdFN5bWJvbChUCiAgICAgfQogfQog
Ci1ib29sIE1hcExvbmdWYXJpYWJsZU5hbWVzOjp2aXNpdExvb3AoVmlzaXQsIFRJbnRlcm1Mb29w
KiBub2RlKQotewotICAgIGlmIChub2RlLT5nZXRJbml0KCkpCi0gICAgICAgIG5vZGUtPmdldElu
aXQoKS0+dHJhdmVyc2UodGhpcyk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIFRTdHJpbmcgTWFw
TG9uZ1ZhcmlhYmxlTmFtZXM6Om1hcEdsb2JhbExvbmdOYW1lKGNvbnN0IFRTdHJpbmcmIG5hbWUp
CiB7CiAgICAgQVNTRVJUKG1HbG9iYWxNYXApOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL01hcExvbmdWYXJpYWJsZU5hbWVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL01hcExvbmdWYXJpYWJsZU5hbWVzLmgJ
KHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9NYXBMb25nVmFyaWFibGVOYW1lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw2IEBA
IHB1YmxpYzoKICAgICBNYXBMb25nVmFyaWFibGVOYW1lcyhMb25nTmFtZU1hcCogZ2xvYmFsTWFw
KTsKIAogICAgIHZpcnR1YWwgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sKik7Ci0gICAg
dmlydHVhbCBib29sIHZpc2l0TG9vcChWaXNpdCwgVEludGVybUxvb3AqKTsKIAogcHJpdmF0ZToK
ICAgICBUU3RyaW5nIG1hcEdsb2JhbExvbmdOYW1lKGNvbnN0IFRTdHJpbmcmIG5hbWUpOwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL05vZGVTZWFyY2guaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvTm9kZVNlYXJj
aC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L05vZGVTZWFyY2guaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc4IEBACisvLworLy8gQ29w
eXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworLy8gTm9kZVNlYXJjaC5oOiBVdGlsaXRpZXMgZm9yIHNlYXJjaGluZyB0cmFuc2xh
dG9yIG5vZGUgZ3JhcGhzCisvLworCisjaWZuZGVmIFRSQU5TTEFUT1JfTk9ERVNFQVJDSF9IXwor
I2RlZmluZSBUUkFOU0xBVE9SX05PREVTRUFSQ0hfSF8KKworbmFtZXNwYWNlIHNoCit7CisKK3Rl
bXBsYXRlIDxjbGFzcyBQYXJlbnQ+CitjbGFzcyBOb2RlU2VhcmNoVHJhdmVyc2VyIDogcHVibGlj
IFRJbnRlcm1UcmF2ZXJzZXIKK3sKKyAgcHVibGljOgorICAgIE5vZGVTZWFyY2hUcmF2ZXJzZXIo
KQorICAgICAgICA6IG1Gb3VuZChmYWxzZSkKKyAgICB7fQorCisgICAgYm9vbCBmb3VuZCgpIGNv
bnN0IHsgcmV0dXJuIG1Gb3VuZDsgfQorCisgICAgc3RhdGljIGJvb2wgc2VhcmNoKFRJbnRlcm1O
b2RlICpub2RlKQorICAgIHsKKyAgICAgICAgUGFyZW50IHNlYXJjaFRyYXZlcnNlcjsKKyAgICAg
ICAgbm9kZS0+dHJhdmVyc2UoJnNlYXJjaFRyYXZlcnNlcik7CisgICAgICAgIHJldHVybiBzZWFy
Y2hUcmF2ZXJzZXIuZm91bmQoKTsKKyAgICB9CisKKyAgcHJvdGVjdGVkOgorICAgIGJvb2wgbUZv
dW5kOworfTsKKworY2xhc3MgRmluZERpc2NhcmQgOiBwdWJsaWMgTm9kZVNlYXJjaFRyYXZlcnNl
cjxGaW5kRGlzY2FyZD4KK3sKKyAgcHVibGljOgorICAgIHZpcnR1YWwgYm9vbCB2aXNpdEJyYW5j
aChWaXNpdCB2aXNpdCwgVEludGVybUJyYW5jaCAqbm9kZSkKKyAgICB7CisgICAgICAgIHN3aXRj
aCAobm9kZS0+Z2V0Rmxvd09wKCkpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEVPcEtpbGw6
CisgICAgICAgICAgICBtRm91bmQgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICBkZWZhdWx0OiBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAhbUZvdW5k
OworICAgIH0KK307CisKK2NsYXNzIEZpbmRTaWRlRWZmZWN0UmV3cml0aW5nIDogcHVibGljIE5v
ZGVTZWFyY2hUcmF2ZXJzZXI8RmluZFNpZGVFZmZlY3RSZXdyaXRpbmc+Cit7CisgIHB1YmxpYzoK
KyAgICB2aXJ0dWFsIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkg
Km5vZGUpCisgICAgeworICAgICAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCisgICAgICAgIHsK
KyAgICAgICAgICBjYXNlIEVPcExvZ2ljYWxPcjoKKyAgICAgICAgICBjYXNlIEVPcExvZ2ljYWxB
bmQ6CisgICAgICAgICAgICBpZiAobm9kZS0+Z2V0UmlnaHQoKS0+aGFzU2lkZUVmZmVjdHMoKSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtRm91bmQgPSB0cnVlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBkZWZhdWx0OiBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiAhbUZvdW5kOworICAgIH0KK307CisKK30KKworI2Vu
ZGlmIC8vIFRSQU5TTEFUT1JfTk9ERVNFQVJDSF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTEJhc2UuY3BwCShyZXZp
c2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0
cHV0R0xTTEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzUsNyArNDM1LDcgQEAgYm9vbCBU
T3V0cHV0R0xTTEJhc2U6OnZpc2l0U2VsZWN0aW9uKFZpcwogICAgICAgICBub2RlLT5nZXRDb25k
aXRpb24oKS0+dHJhdmVyc2UodGhpcyk7CiAgICAgICAgIG91dCA8PCAiKVxuIjsKIAotICAgICAg
ICBpbmNyZW1lbnREZXB0aCgpOworICAgICAgICBpbmNyZW1lbnREZXB0aChub2RlKTsKICAgICAg
ICAgdmlzaXRDb2RlQmxvY2sobm9kZS0+Z2V0VHJ1ZUJsb2NrKCkpOwogCiAgICAgICAgIGlmIChu
b2RlLT5nZXRGYWxzZUJsb2NrKCkpCkBAIC00NjAsNyArNDYwLDcgQEAgYm9vbCBUT3V0cHV0R0xT
TEJhc2U6OnZpc2l0QWdncmVnYXRlKFZpcwogICAgICAgICAgICAgLy8gU2NvcGUgdGhlIHNlcXVl
bmNlcyBleGNlcHQgd2hlbiBhdCB0aGUgZ2xvYmFsIHNjb3BlLgogICAgICAgICAgICAgaWYgKGRl
cHRoID4gMCkgb3V0IDw8ICJ7XG4iOwogCi0gICAgICAgICAgICBpbmNyZW1lbnREZXB0aCgpOwor
ICAgICAgICAgICAgaW5jcmVtZW50RGVwdGgobm9kZSk7CiAgICAgICAgICAgICBjb25zdCBUSW50
ZXJtU2VxdWVuY2UmIHNlcXVlbmNlID0gbm9kZS0+Z2V0U2VxdWVuY2UoKTsKICAgICAgICAgICAg
IGZvciAoVEludGVybVNlcXVlbmNlOjpjb25zdF9pdGVyYXRvciBpdGVyID0gc2VxdWVuY2UuYmVn
aW4oKTsKICAgICAgICAgICAgICAgICAgaXRlciAhPSBzZXF1ZW5jZS5lbmQoKTsgKytpdGVyKQpA
QCAtNDk4LDcgKzQ5OCw3IEBAIGJvb2wgVE91dHB1dEdMU0xCYXNlOjp2aXNpdEFnZ3JlZ2F0ZShW
aXMKICAgICAgICAgICAgIHdyaXRlVmFyaWFibGVUeXBlKG5vZGUtPmdldFR5cGUoKSk7CiAgICAg
ICAgICAgICBvdXQgPDwgIiAiIDw8IGhhc2hGdW5jdGlvbk5hbWUobm9kZS0+Z2V0TmFtZSgpKTsK
IAotICAgICAgICAgICAgaW5jcmVtZW50RGVwdGgoKTsKKyAgICAgICAgICAgIGluY3JlbWVudERl
cHRoKG5vZGUpOwogICAgICAgICAgICAgLy8gRnVuY3Rpb24gZGVmaW5pdGlvbiBub2RlIGNvbnRh
aW5zIG9uZSBvciB0d28gY2hpbGRyZW4gbm9kZXMKICAgICAgICAgICAgIC8vIHJlcHJlc2VudGlu
ZyBmdW5jdGlvbiBwYXJhbWV0ZXJzIGFuZCBmdW5jdGlvbiBib2R5LiBUaGUgbGF0dGVyCiAgICAg
ICAgICAgICAvLyBpcyBub3QgcHJlc2VudCBpbiBjYXNlIG9mIGVtcHR5IGZ1bmN0aW9uIGJvZGll
cy4KQEAgLTYzOCw3ICs2MzgsNyBAQCBib29sIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRMb29wKFZp
c2l0IHZpCiB7CiAgICAgVEluZm9TaW5rQmFzZSYgb3V0ID0gb2JqU2luaygpOwogCi0gICAgaW5j
cmVtZW50RGVwdGgoKTsKKyAgICBpbmNyZW1lbnREZXB0aChub2RlKTsKICAgICAvLyBMb29wIGhl
YWRlci4KICAgICBUTG9vcFR5cGUgbG9vcFR5cGUgPSBub2RlLT5nZXRUeXBlKCk7CiAgICAgaWYg
KGxvb3BUeXBlID09IEVMb29wRm9yKSAgLy8gZm9yIGxvb3AKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5oCShyZXZp
c2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0
cHV0R0xTTEJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTEsNyArMTEsNyBAQAogCiAjaW5jbHVk
ZSAiY29tcGlsZXIvRm9yTG9vcFVucm9sbC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL2ludGVybWVk
aWF0ZS5oIgotI2luY2x1ZGUgImNvbXBpbGVyL1BhcnNlSGVscGVyLmgiCisjaW5jbHVkZSAiY29t
cGlsZXIvUGFyc2VDb250ZXh0LmgiCiAKIGNsYXNzIFRPdXRwdXRHTFNMQmFzZSA6IHB1YmxpYyBU
SW50ZXJtVHJhdmVyc2VyCiB7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvT3V0cHV0SExTTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0SExTTC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyLDYgKzEyLDcgQEAKICNpbmNsdWRlICJjb21waWxlci9JbmZvU2luay5oIgog
I2luY2x1ZGUgImNvbXBpbGVyL1NlYXJjaFN5bWJvbC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL1Vu
Zm9sZFNob3J0Q2lyY3VpdC5oIgorI2luY2x1ZGUgImNvbXBpbGVyL05vZGVTZWFyY2guaCIKIAog
I2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjZmxvYXQ+CkBAIC02OCwyMiArNjksMTEg
QEAgT3V0cHV0SExTTDo6T3V0cHV0SExTTChUUGFyc2VDb250ZXh0ICZjbwogICAgIG1Vc2VzRmFj
ZWZvcndhcmQyID0gZmFsc2U7CiAgICAgbVVzZXNGYWNlZm9yd2FyZDMgPSBmYWxzZTsKICAgICBt
VXNlc0ZhY2Vmb3J3YXJkNCA9IGZhbHNlOwotICAgIG1Vc2VzRXF1YWxNYXQyID0gZmFsc2U7Ci0g
ICAgbVVzZXNFcXVhbE1hdDMgPSBmYWxzZTsKLSAgICBtVXNlc0VxdWFsTWF0NCA9IGZhbHNlOwot
ICAgIG1Vc2VzRXF1YWxWZWMyID0gZmFsc2U7Ci0gICAgbVVzZXNFcXVhbFZlYzMgPSBmYWxzZTsK
LSAgICBtVXNlc0VxdWFsVmVjNCA9IGZhbHNlOwotICAgIG1Vc2VzRXF1YWxJVmVjMiA9IGZhbHNl
OwotICAgIG1Vc2VzRXF1YWxJVmVjMyA9IGZhbHNlOwotICAgIG1Vc2VzRXF1YWxJVmVjNCA9IGZh
bHNlOwotICAgIG1Vc2VzRXF1YWxCVmVjMiA9IGZhbHNlOwotICAgIG1Vc2VzRXF1YWxCVmVjMyA9
IGZhbHNlOwotICAgIG1Vc2VzRXF1YWxCVmVjNCA9IGZhbHNlOwogICAgIG1Vc2VzQXRhbjJfMSA9
IGZhbHNlOwogICAgIG1Vc2VzQXRhbjJfMiA9IGZhbHNlOwogICAgIG1Vc2VzQXRhbjJfMyA9IGZh
bHNlOwogICAgIG1Vc2VzQXRhbjJfNCA9IGZhbHNlOworICAgIG1Vc2VzRGlzY2FyZFJld3JpdGlu
ZyA9IGZhbHNlOwogCiAgICAgbU51bVJlbmRlclRhcmdldHMgPSByZXNvdXJjZXMuRVhUX2RyYXdf
YnVmZmVycyA/IHJlc291cmNlcy5NYXhEcmF3QnVmZmVycyA6IDE7CiAKQEAgLTIwOCw2ICsxOTgs
MTEgQEAgdm9pZCBPdXRwdXRITFNMOjpoZWFkZXIoKQogICAgICAgICBhdHRyaWJ1dGVzICs9ICJz
dGF0aWMgIiArIHR5cGVTdHJpbmcodHlwZSkgKyAiICIgKyBkZWNvcmF0ZShuYW1lKSArIGFycmF5
U3RyaW5nKHR5cGUpICsgIiA9ICIgKyBpbml0aWFsaXplcih0eXBlKSArICI7XG4iOwogICAgIH0K
IAorICAgIGlmIChtVXNlc0Rpc2NhcmRSZXdyaXRpbmcpCisgICAgeworICAgICAgICBvdXQgPDwg
IiNkZWZpbmUgQU5HTEVfVVNFU19ESVNDQVJEX1JFV1JJVElORyIgPDwgIlxuIjsKKyAgICB9CisK
ICAgICBpZiAoc2hhZGVyVHlwZSA9PSBTSF9GUkFHTUVOVF9TSEFERVIpCiAgICAgewogICAgICAg
ICBURXh0ZW5zaW9uQmVoYXZpb3I6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtQ29udGV4dC5leHRl
bnNpb25CZWhhdmlvcigpLmZpbmQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKQEAgLTk5NiwxMDgg
Kzk5MSw2IEBAIHZvaWQgT3V0cHV0SExTTDo6aGVhZGVyKCkKICAgICAgICAgICAgICAgICJcbiI7
CiAgICAgfQogCi0gICAgaWYgKG1Vc2VzRXF1YWxNYXQyKQotICAgIHsKLSAgICAgICAgb3V0IDw8
ICJib29sIGVxdWFsKGZsb2F0MngyIG0sIGZsb2F0MngyIG4pXG4iCi0gICAgICAgICAgICAgICAi
e1xuIgotICAgICAgICAgICAgICAgIiAgICByZXR1cm4gbVswXVswXSA9PSBuWzBdWzBdICYmIG1b
MF1bMV0gPT0gblswXVsxXSAmJlxuIgotICAgICAgICAgICAgICAgIiAgICAgICAgICAgbVsxXVsw
XSA9PSBuWzFdWzBdICYmIG1bMV1bMV0gPT0gblsxXVsxXTtcbiIKLSAgICAgICAgICAgICAgICJ9
XG4iOwotICAgIH0KLQotICAgIGlmIChtVXNlc0VxdWFsTWF0MykKLSAgICB7Ci0gICAgICAgIG91
dCA8PCAiYm9vbCBlcXVhbChmbG9hdDN4MyBtLCBmbG9hdDN4MyBuKVxuIgotICAgICAgICAgICAg
ICAgIntcbiIKLSAgICAgICAgICAgICAgICIgICAgcmV0dXJuIG1bMF1bMF0gPT0gblswXVswXSAm
JiBtWzBdWzFdID09IG5bMF1bMV0gJiYgbVswXVsyXSA9PSBuWzBdWzJdICYmXG4iCi0gICAgICAg
ICAgICAgICAiICAgICAgICAgICBtWzFdWzBdID09IG5bMV1bMF0gJiYgbVsxXVsxXSA9PSBuWzFd
WzFdICYmIG1bMV1bMl0gPT0gblsxXVsyXSAmJlxuIgotICAgICAgICAgICAgICAgIiAgICAgICAg
ICAgbVsyXVswXSA9PSBuWzJdWzBdICYmIG1bMl1bMV0gPT0gblsyXVsxXSAmJiBtWzJdWzJdID09
IG5bMl1bMl07XG4iCi0gICAgICAgICAgICAgICAifVxuIjsKLSAgICB9Ci0KLSAgICBpZiAobVVz
ZXNFcXVhbE1hdDQpCi0gICAgewotICAgICAgICBvdXQgPDwgImJvb2wgZXF1YWwoZmxvYXQ0eDQg
bSwgZmxvYXQ0eDQgbilcbiIKLSAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAi
ICAgIHJldHVybiBtWzBdWzBdID09IG5bMF1bMF0gJiYgbVswXVsxXSA9PSBuWzBdWzFdICYmIG1b
MF1bMl0gPT0gblswXVsyXSAmJiBtWzBdWzNdID09IG5bMF1bM10gJiZcbiIKLSAgICAgICAgICAg
ICAgICIgICAgICAgICAgIG1bMV1bMF0gPT0gblsxXVswXSAmJiBtWzFdWzFdID09IG5bMV1bMV0g
JiYgbVsxXVsyXSA9PSBuWzFdWzJdICYmIG1bMV1bM10gPT0gblsxXVszXSAmJlxuIgotICAgICAg
ICAgICAgICAgIiAgICAgICAgICAgbVsyXVswXSA9PSBuWzJdWzBdICYmIG1bMl1bMV0gPT0gblsy
XVsxXSAmJiBtWzJdWzJdID09IG5bMl1bMl0gJiYgbVsyXVszXSA9PSBuWzJdWzNdICYmXG4iCi0g
ICAgICAgICAgICAgICAiICAgICAgICAgICBtWzNdWzBdID09IG5bM11bMF0gJiYgbVszXVsxXSA9
PSBuWzNdWzFdICYmIG1bM11bMl0gPT0gblszXVsyXSAmJiBtWzNdWzNdID09IG5bM11bM107XG4i
Ci0gICAgICAgICAgICAgICAifVxuIjsKLSAgICB9Ci0KLSAgICBpZiAobVVzZXNFcXVhbFZlYzIp
Ci0gICAgewotICAgICAgICBvdXQgPDwgImJvb2wgZXF1YWwoZmxvYXQyIHYsIGZsb2F0MiB1KVxu
IgotICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHYueCA9
PSB1LnggJiYgdi55ID09IHUueTtcbiIKLSAgICAgICAgICAgICAgICJ9XG4iOwotICAgIH0KLQot
ICAgIGlmIChtVXNlc0VxdWFsVmVjMykKLSAgICB7Ci0gICAgICAgIG91dCA8PCAiYm9vbCBlcXVh
bChmbG9hdDMgdiwgZmxvYXQzIHUpXG4iCi0gICAgICAgICAgICAgICAie1xuIgotICAgICAgICAg
ICAgICAgIiAgICByZXR1cm4gdi54ID09IHUueCAmJiB2LnkgPT0gdS55ICYmIHYueiA9PSB1Lno7
XG4iCi0gICAgICAgICAgICAgICAifVxuIjsKLSAgICB9Ci0KLSAgICBpZiAobVVzZXNFcXVhbFZl
YzQpCi0gICAgewotICAgICAgICBvdXQgPDwgImJvb2wgZXF1YWwoZmxvYXQ0IHYsIGZsb2F0NCB1
KVxuIgotICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHYu
eCA9PSB1LnggJiYgdi55ID09IHUueSAmJiB2LnogPT0gdS56ICYmIHYudyA9PSB1Lnc7XG4iCi0g
ICAgICAgICAgICAgICAifVxuIjsKLSAgICB9Ci0KLSAgICBpZiAobVVzZXNFcXVhbElWZWMyKQot
ICAgIHsKLSAgICAgICAgb3V0IDw8ICJib29sIGVxdWFsKGludDIgdiwgaW50MiB1KVxuIgotICAg
ICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHYueCA9PSB1Lngg
JiYgdi55ID09IHUueTtcbiIKLSAgICAgICAgICAgICAgICJ9XG4iOwotICAgIH0KLQotICAgIGlm
IChtVXNlc0VxdWFsSVZlYzMpCi0gICAgewotICAgICAgICBvdXQgPDwgImJvb2wgZXF1YWwoaW50
MyB2LCBpbnQzIHUpXG4iCi0gICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAgIiAg
ICByZXR1cm4gdi54ID09IHUueCAmJiB2LnkgPT0gdS55ICYmIHYueiA9PSB1Lno7XG4iCi0gICAg
ICAgICAgICAgICAifVxuIjsKLSAgICB9Ci0KLSAgICBpZiAobVVzZXNFcXVhbElWZWM0KQotICAg
IHsKLSAgICAgICAgb3V0IDw8ICJib29sIGVxdWFsKGludDQgdiwgaW50NCB1KVxuIgotICAgICAg
ICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHYueCA9PSB1LnggJiYg
di55ID09IHUueSAmJiB2LnogPT0gdS56ICYmIHYudyA9PSB1Lnc7XG4iCi0gICAgICAgICAgICAg
ICAifVxuIjsKLSAgICB9Ci0KLSAgICBpZiAobVVzZXNFcXVhbEJWZWMyKQotICAgIHsKLSAgICAg
ICAgb3V0IDw8ICJib29sIGVxdWFsKGJvb2wyIHYsIGJvb2wyIHUpXG4iCi0gICAgICAgICAgICAg
ICAie1xuIgotICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdi54ID09IHUueCAmJiB2LnkgPT0g
dS55O1xuIgotICAgICAgICAgICAgICAgIn1cbiI7Ci0gICAgfQotCi0gICAgaWYgKG1Vc2VzRXF1
YWxCVmVjMykKLSAgICB7Ci0gICAgICAgIG91dCA8PCAiYm9vbCBlcXVhbChib29sMyB2LCBib29s
MyB1KVxuIgotICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICIgICAgcmV0dXJu
IHYueCA9PSB1LnggJiYgdi55ID09IHUueSAmJiB2LnogPT0gdS56O1xuIgotICAgICAgICAgICAg
ICAgIn1cbiI7Ci0gICAgfQotCi0gICAgaWYgKG1Vc2VzRXF1YWxCVmVjNCkKLSAgICB7Ci0gICAg
ICAgIG91dCA8PCAiYm9vbCBlcXVhbChib29sNCB2LCBib29sNCB1KVxuIgotICAgICAgICAgICAg
ICAgIntcbiIKLSAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHYueCA9PSB1LnggJiYgdi55ID09
IHUueSAmJiB2LnogPT0gdS56ICYmIHYudyA9PSB1Lnc7XG4iCi0gICAgICAgICAgICAgICAifVxu
IjsKLSAgICB9Ci0KICAgICBpZiAobVVzZXNBdGFuMl8xKQogICAgIHsKICAgICAgICAgb3V0IDw8
ICJmbG9hdCBhdGFueXgoZmxvYXQgeSwgZmxvYXQgeClcbiIKQEAgLTEzOTEsNTkgKzEyODQsMTUg
QEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEJpbmFyeShWaXNpdCB2aXNpdAogICAgICAgICB9CiAg
ICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGUtPmdldExlZnQoKS0+
aXNNYXRyaXgoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUt
PmdldExlZnQoKS0+Z2V0Tm9taW5hbFNpemUoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICBjYXNlIDI6IG1Vc2VzRXF1YWxNYXQyID0gdHJ1ZTsgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICBjYXNlIDM6IG1Vc2VzRXF1YWxNYXQzID0gdHJ1ZTsgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICBjYXNlIDQ6IG1Vc2VzRXF1YWxNYXQ0ID0gdHJ1ZTsgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmdldExlZnQoKS0+aXNWZWN0
b3IoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmdldExl
ZnQoKS0+Z2V0QmFzaWNUeXBlKCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5nZXRM
ZWZ0KCktPmdldE5vbWluYWxTaXplKCkpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICBjYXNlIDI6IG1Vc2VzRXF1YWxWZWMyID0gdHJ1ZTsgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgICAgY2FzZSAzOiBtVXNlc0VxdWFsVmVjMyA9IHRydWU7IGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDogbVVzZXNFcXVhbFZlYzQgPSB0cnVlOyBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgY2FzZSBFYnRJbnQ6Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0
TGVmdCgpLT5nZXROb21pbmFsU2l6ZSgpKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgY2FzZSAyOiBtVXNlc0VxdWFsSVZlYzIgPSB0cnVlOyBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IG1Vc2VzRXF1YWxJVmVjMyA9IHRydWU7IGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDogbVVzZXNFcXVhbElWZWM0ID0gdHJ1ZTsg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChub2Rl
LT5nZXRMZWZ0KCktPmdldE5vbWluYWxTaXplKCkpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IG1Vc2VzRXF1YWxCVmVjMiA9IHRydWU7IGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzogbVVzZXNFcXVhbEJWZWMzID0gdHJ1ZTsg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiBtVXNlc0VxdWFsQlZlYzQgPSB0
cnVlOyBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgp
OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisgICAgICAg
ICAgICBBU1NFUlQobm9kZS0+Z2V0TGVmdCgpLT5pc01hdHJpeCgpIHx8IG5vZGUtPmdldExlZnQo
KS0+aXNWZWN0b3IoKSk7CiAKICAgICAgICAgICAgIGlmIChub2RlLT5nZXRPcCgpID09IEVPcEVx
dWFsKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQs
ICJlcXVhbCgiLCAiLCAiLCAiKSIpOworICAgICAgICAgICAgICAgIG91dHB1dFRyaXBsZXQodmlz
aXQsICJhbGwoIiwgIiA9PSAiLCAiKSIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICIh
ZXF1YWwoIiwgIiwgIiwgIikiKTsKKyAgICAgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0
LCAiIWFsbCgiLCAiID09ICIsICIpIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7CkBAIC0xNDU3LDE1ICsxMzA2LDMxIEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRC
aW5hcnkoVmlzaXQgdmlzaXQKICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNWZWN0b3I6IG91dHB1
dFRyaXBsZXQodmlzaXQsICJtdWwodHJhbnNwb3NlKCIsICIpLCAiLCAiKSIpOyBicmVhazsKICAg
ICAgIGNhc2UgRU9wTWF0cml4VGltZXNNYXRyaXg6IG91dHB1dFRyaXBsZXQodmlzaXQsICJ0cmFu
c3Bvc2UobXVsKHRyYW5zcG9zZSgiLCAiKSwgdHJhbnNwb3NlKCIsICIpKSkiKTsgYnJlYWs7CiAg
ICAgICBjYXNlIEVPcExvZ2ljYWxPcjoKLSAgICAgICAgb3V0IDw8ICJzIiA8PCBtVW5mb2xkU2hv
cnRDaXJjdWl0LT5nZXROZXh0VGVtcG9yYXJ5SW5kZXgoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBpZiAobm9kZS0+Z2V0UmlnaHQoKS0+aGFzU2lkZUVmZmVjdHMoKSkKKyAgICAg
ICAgeworICAgICAgICAgICAgb3V0IDw8ICJzIiA8PCBtVW5mb2xkU2hvcnRDaXJjdWl0LT5nZXRO
ZXh0VGVtcG9yYXJ5SW5kZXgoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgb3V0cHV0VHJpcGxldCh2aXNp
dCwgIigiLCAiIHx8ICIsICIpIik7CisgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CiAgICAgICBjYXNlIEVPcExvZ2ljYWxYb3I6CiAgICAgICAgIG1Vc2VzWG9yID0gdHJ1ZTsKICAg
ICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgInhvcigiLCAiLCAiLCAiKSIpOwogICAgICAgICBi
cmVhazsKICAgICAgIGNhc2UgRU9wTG9naWNhbEFuZDoKLSAgICAgICAgb3V0IDw8ICJzIiA8PCBt
VW5mb2xkU2hvcnRDaXJjdWl0LT5nZXROZXh0VGVtcG9yYXJ5SW5kZXgoKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBpZiAobm9kZS0+Z2V0UmlnaHQoKS0+aGFzU2lkZUVmZmVjdHMo
KSkKKyAgICAgICAgeworICAgICAgICAgICAgb3V0IDw8ICJzIiA8PCBtVW5mb2xkU2hvcnRDaXJj
dWl0LT5nZXROZXh0VGVtcG9yYXJ5SW5kZXgoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgb3V0cHV0VHJp
cGxldCh2aXNpdCwgIigiLCAiICYmICIsICIpIik7CisgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CiAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwogICAgIH0KIApAQCAtMjEw
Miw3ICsxOTY3LDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdFNlbGVjdGlvbihWaXNpdCB2aQog
ICAgIHsKICAgICAgICAgbVVuZm9sZFNob3J0Q2lyY3VpdC0+dHJhdmVyc2Uobm9kZS0+Z2V0Q29u
ZGl0aW9uKCkpOwogCi0gICAgICAgIG91dCA8PCAiaWYoIjsKKyAgICAgICAgb3V0IDw8ICJpZiAo
IjsKIAogICAgICAgICBub2RlLT5nZXRDb25kaXRpb24oKS0+dHJhdmVyc2UodGhpcyk7CiAKQEAg
LTIxMTEsOSArMTk3NiwxNCBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0U2VsZWN0aW9uKFZpc2l0
IHZpCiAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xp
bmUpOwogICAgICAgICBvdXQgPDwgIntcbiI7CiAKKyAgICAgICAgYm9vbCBkaXNjYXJkID0gZmFs
c2U7CisKICAgICAgICAgaWYgKG5vZGUtPmdldFRydWVCbG9jaygpKQogICAgICAgICB7CiAgICAg
ICAgICAgICB0cmF2ZXJzZVN0YXRlbWVudHMobm9kZS0+Z2V0VHJ1ZUJsb2NrKCkpOworCisgICAg
ICAgICAgICAvLyBEZXRlY3QgdHJ1ZSBkaXNjYXJkCisgICAgICAgICAgICBkaXNjYXJkID0gKGRp
c2NhcmQgfHwgRmluZERpc2NhcmQ6OnNlYXJjaChub2RlLT5nZXRUcnVlQmxvY2soKSkpOwogICAg
ICAgICB9CiAKICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkuZmly
c3RfbGluZSk7CkBAIC0yMTMxLDYgKzIwMDEsMTUgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdFNl
bGVjdGlvbihWaXNpdCB2aQogCiAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUt
PmdldEZhbHNlQmxvY2soKS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICAgICAgb3V0
IDw8ICI7XG59XG4iOworCisgICAgICAgICAgICAvLyBEZXRlY3QgZmFsc2UgZGlzY2FyZAorICAg
ICAgICAgICAgZGlzY2FyZCA9IChkaXNjYXJkIHx8IEZpbmREaXNjYXJkOjpzZWFyY2gobm9kZS0+
Z2V0RmFsc2VCbG9jaygpKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBBTkdMRSBpc3N1ZSA0
ODY6IERldGVjdCBwcm9ibGVtYXRpYyBjb25kaXRpb25hbCBkaXNjYXJkCisgICAgICAgIGlmIChk
aXNjYXJkICYmIEZpbmRTaWRlRWZmZWN0UmV3cml0aW5nOjpzZWFyY2gobm9kZSkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1Vc2VzRGlzY2FyZFJld3JpdGluZyA9IHRydWU7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTIyMjgsNyArMjEwNyw5IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRCcmFu
Y2goVmlzaXQgdmlzaXQKIAogICAgIHN3aXRjaCAobm9kZS0+Z2V0Rmxvd09wKCkpCiAgICAgewot
ICAgICAgY2FzZSBFT3BLaWxsOiAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgImRpc2NhcmQ7XG4i
LCAiIiwgIiIpOyAgYnJlYWs7CisgICAgICBjYXNlIEVPcEtpbGw6CisgICAgICAgIG91dHB1dFRy
aXBsZXQodmlzaXQsICJkaXNjYXJkO1xuIiwgIiIsICIiKTsKKyAgICAgICAgYnJlYWs7CiAgICAg
ICBjYXNlIEVPcEJyZWFrOgogICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCiAgICAgICAg
IHsKQEAgLTI0NTEsNyArMjMzMiw3IEBAIGJvb2wgT3V0cHV0SExTTDo6aGFuZGxlRXhjZXNzaXZl
TG9vcChUSW4KIAogICAgICAgICAgICAgICAgIGlmICghZmlyc3RMb29wRnJhZ21lbnQpCiAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBvdXQgPDwgImlmKCFCcmVhayI7Cisg
ICAgICAgICAgICAgICAgICAgIG91dCA8PCAiaWYgKCFCcmVhayI7CiAgICAgICAgICAgICAgICAg
ICAgIGluZGV4LT50cmF2ZXJzZSh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIp
IHtcbiI7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjg2Myw3ICsyNzQ0LDcgQEAgdm9pZCBPdXRw
dXRITFNMOjphZGRDb25zdHJ1Y3Rvcihjb25zdCBUVAogICAgICAgICAgICAgY29uc3Qgc2l6ZV90
IHBhcmFtZXRlclNpemUgPSBwYXJhbWV0ZXIuZ2V0T2JqZWN0U2l6ZSgpOwogICAgICAgICAgICAg
Ym9vbCBtb3JlUGFyYW1ldGVycyA9IHBhcmFtZXRlckluZGV4ICsgMSA8IGN0b3JQYXJhbWV0ZXJz
LnNpemUoKTsKIAotICAgICAgICAgICAgY29uc3RydWN0b3IgKz0gIngiICsgc3RyKHBhcmFtZXRl
ckluZGV4KTsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yICs9ICJ4IiArIHN0cihzdGF0aWNfY2Fz
dDxpbnQ+KHBhcmFtZXRlckluZGV4KSk7CiAKICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXIuaXNT
Y2FsYXIoKSkKICAgICAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9PdXRwdXRITFNMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuaAkod29ya2luZyBj
b3B5KQpAQCAtMTUsNyArMTUsNyBAQAogI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgogCiAjaW5jbHVk
ZSAiY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvUGFyc2VIZWxw
ZXIuaCIKKyNpbmNsdWRlICJjb21waWxlci9QYXJzZUNvbnRleHQuaCIKICNpbmNsdWRlICJjb21w
aWxlci9Vbmlmb3JtLmgiCiAKIG5hbWVzcGFjZSBzaApAQCAtMTIxLDIyICsxMjEsMTEgQEAgY2xh
c3MgT3V0cHV0SExTTCA6IHB1YmxpYyBUSW50ZXJtVHJhdmVycwogICAgIGJvb2wgbVVzZXNGYWNl
Zm9yd2FyZDI7CiAgICAgYm9vbCBtVXNlc0ZhY2Vmb3J3YXJkMzsKICAgICBib29sIG1Vc2VzRmFj
ZWZvcndhcmQ0OwotICAgIGJvb2wgbVVzZXNFcXVhbE1hdDI7Ci0gICAgYm9vbCBtVXNlc0VxdWFs
TWF0MzsKLSAgICBib29sIG1Vc2VzRXF1YWxNYXQ0OwotICAgIGJvb2wgbVVzZXNFcXVhbFZlYzI7
Ci0gICAgYm9vbCBtVXNlc0VxdWFsVmVjMzsKLSAgICBib29sIG1Vc2VzRXF1YWxWZWM0OwotICAg
IGJvb2wgbVVzZXNFcXVhbElWZWMyOwotICAgIGJvb2wgbVVzZXNFcXVhbElWZWMzOwotICAgIGJv
b2wgbVVzZXNFcXVhbElWZWM0OwotICAgIGJvb2wgbVVzZXNFcXVhbEJWZWMyOwotICAgIGJvb2wg
bVVzZXNFcXVhbEJWZWMzOwotICAgIGJvb2wgbVVzZXNFcXVhbEJWZWM0OwogICAgIGJvb2wgbVVz
ZXNBdGFuMl8xOwogICAgIGJvb2wgbVVzZXNBdGFuMl8yOwogICAgIGJvb2wgbVVzZXNBdGFuMl8z
OwogICAgIGJvb2wgbVVzZXNBdGFuMl80OworICAgIGJvb2wgbVVzZXNEaXNjYXJkUmV3cml0aW5n
OwogCiAgICAgaW50IG1OdW1SZW5kZXJUYXJnZXRzOwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VDb250ZXh0LmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUNvbnRl
eHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYwMiBAQAorLy8KKy8vIENvcHlyaWdo
dCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKworI2luY2x1ZGUgImNvbXBpbGVyL1BhcnNlQ29udGV4dC5oIgorCisjaW5jbHVkZSA8c3Rk
YXJnLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworI2luY2x1ZGUgImNvbXBpbGVyL2dsc2xhbmcu
aCIKKyNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvU291cmNlTG9jYXRpb24uaCIKKwor
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KKy8vCisvLyBTdWItIHZlY3RvciBhbmQgbWF0cml4IGZpZWxkcworLy8K
Ky8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLworCisvLworLy8gTG9vayBhdCBhICcuJyBmaWVsZCBzZWxlY3RvciBz
dHJpbmcgYW5kIGNoYW5nZSBpdCBpbnRvIG9mZnNldHMKKy8vIGZvciBhIHZlY3Rvci4KKy8vCiti
b29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlVmVjdG9yRmllbGRzKGNvbnN0IFRTdHJpbmcmIGNvbXBT
dHJpbmcsIGludCB2ZWNTaXplLCBUVmVjdG9yRmllbGRzJiBmaWVsZHMsIGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUpCit7CisgICAgZmllbGRzLm51bSA9IChpbnQpIGNvbXBTdHJpbmcuc2l6ZSgpOwor
ICAgIGlmIChmaWVsZHMubnVtID4gNCkgeworICAgICAgICBlcnJvcihsaW5lLCAiaWxsZWdhbCB2
ZWN0b3IgZmllbGQgc2VsZWN0aW9uIiwgY29tcFN0cmluZy5jX3N0cigpKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGVudW0geworICAgICAgICBleHl6dywKKyAgICAgICAg
ZXJnYmEsCisgICAgICAgIGVzdHBxCisgICAgfSBmaWVsZFNldFs0XTsKKworICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgZmllbGRzLm51bTsgKytpKSB7CisgICAgICAgIHN3aXRjaCAoY29tcFN0cmlu
Z1tpXSkgIHsKKyAgICAgICAgY2FzZSAneCc6IAorICAgICAgICAgICAgZmllbGRzLm9mZnNldHNb
aV0gPSAwOworICAgICAgICAgICAgZmllbGRTZXRbaV0gPSBleHl6dzsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlICdyJzogCisgICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1tpXSA9
IDA7CisgICAgICAgICAgICBmaWVsZFNldFtpXSA9IGVyZ2JhOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgJ3MnOgorICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbaV0gPSAwOwor
ICAgICAgICAgICAgZmllbGRTZXRbaV0gPSBlc3RwcTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlICd5JzogCisgICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1tpXSA9IDE7CisgICAg
ICAgICAgICBmaWVsZFNldFtpXSA9IGV4eXp3OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgJ2cnOiAKKyAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzW2ldID0gMTsKKyAgICAgICAg
ICAgIGZpZWxkU2V0W2ldID0gZXJnYmE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSAndCc6CisgICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1tpXSA9IDE7CisgICAgICAgICAgICBm
aWVsZFNldFtpXSA9IGVzdHBxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ3on
OiAKKyAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzW2ldID0gMjsKKyAgICAgICAgICAgIGZpZWxk
U2V0W2ldID0gZXh5enc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnYic6IAor
ICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbaV0gPSAyOworICAgICAgICAgICAgZmllbGRTZXRb
aV0gPSBlcmdiYTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdwJzoKKyAgICAg
ICAgICAgIGZpZWxkcy5vZmZzZXRzW2ldID0gMjsKKyAgICAgICAgICAgIGZpZWxkU2V0W2ldID0g
ZXN0cHE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgICAgIGNhc2UgJ3cnOiAK
KyAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzW2ldID0gMzsKKyAgICAgICAgICAgIGZpZWxkU2V0
W2ldID0gZXh5enc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnYSc6IAorICAg
ICAgICAgICAgZmllbGRzLm9mZnNldHNbaV0gPSAzOworICAgICAgICAgICAgZmllbGRTZXRbaV0g
PSBlcmdiYTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdxJzoKKyAgICAgICAg
ICAgIGZpZWxkcy5vZmZzZXRzW2ldID0gMzsKKyAgICAgICAgICAgIGZpZWxkU2V0W2ldID0gZXN0
cHE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGVy
cm9yKGxpbmUsICJpbGxlZ2FsIHZlY3RvciBmaWVsZCBzZWxlY3Rpb24iLCBjb21wU3RyaW5nLmNf
c3RyKCkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmaWVsZHMubnVtOyArK2kpIHsKKyAgICAgICAgaWYgKGZp
ZWxkcy5vZmZzZXRzW2ldID49IHZlY1NpemUpIHsKKyAgICAgICAgICAgIGVycm9yKGxpbmUsICJ2
ZWN0b3IgZmllbGQgc2VsZWN0aW9uIG91dCBvZiByYW5nZSIsICBjb21wU3RyaW5nLmNfc3RyKCkp
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGkg
PiAwKSB7CisgICAgICAgICAgICBpZiAoZmllbGRTZXRbaV0gIT0gZmllbGRTZXRbaS0xXSkgewor
ICAgICAgICAgICAgICAgIGVycm9yKGxpbmUsICJpbGxlZ2FsIC0gdmVjdG9yIGNvbXBvbmVudCBm
aWVsZHMgbm90IGZyb20gdGhlIHNhbWUgc2V0IiwgY29tcFN0cmluZy5jX3N0cigpKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworCisvLworLy8gTG9vayBhdCBhICcuJyBmaWVsZCBz
ZWxlY3RvciBzdHJpbmcgYW5kIGNoYW5nZSBpdCBpbnRvIG9mZnNldHMKKy8vIGZvciBhIG1hdHJp
eC4KKy8vCitib29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlTWF0cml4RmllbGRzKGNvbnN0IFRTdHJp
bmcmIGNvbXBTdHJpbmcsIGludCBtYXRTaXplLCBUTWF0cml4RmllbGRzJiBmaWVsZHMsIGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUpCit7CisgICAgZmllbGRzLndob2xlUm93ID0gZmFsc2U7CisgICAg
ZmllbGRzLndob2xlQ29sID0gZmFsc2U7CisgICAgZmllbGRzLnJvdyA9IC0xOworICAgIGZpZWxk
cy5jb2wgPSAtMTsKKworICAgIGlmIChjb21wU3RyaW5nLnNpemUoKSAhPSAyKSB7CisgICAgICAg
IGVycm9yKGxpbmUsICJpbGxlZ2FsIGxlbmd0aCBvZiBtYXRyaXggZmllbGQgc2VsZWN0aW9uIiwg
Y29tcFN0cmluZy5jX3N0cigpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IGlmIChjb21wU3RyaW5nWzBdID09ICdfJykgeworICAgICAgICBpZiAoY29tcFN0cmluZ1sxXSA8
ICcwJyB8fCBjb21wU3RyaW5nWzFdID4gJzMnKSB7CisgICAgICAgICAgICBlcnJvcihsaW5lLCAi
aWxsZWdhbCBtYXRyaXggZmllbGQgc2VsZWN0aW9uIiwgY29tcFN0cmluZy5jX3N0cigpKTsKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBmaWVsZHMud2hvbGVD
b2wgPSB0cnVlOworICAgICAgICBmaWVsZHMuY29sID0gY29tcFN0cmluZ1sxXSAtICcwJzsKKyAg
ICB9IGVsc2UgaWYgKGNvbXBTdHJpbmdbMV0gPT0gJ18nKSB7CisgICAgICAgIGlmIChjb21wU3Ry
aW5nWzBdIDwgJzAnIHx8IGNvbXBTdHJpbmdbMF0gPiAnMycpIHsKKyAgICAgICAgICAgIGVycm9y
KGxpbmUsICJpbGxlZ2FsIG1hdHJpeCBmaWVsZCBzZWxlY3Rpb24iLCBjb21wU3RyaW5nLmNfc3Ry
KCkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGZpZWxk
cy53aG9sZVJvdyA9IHRydWU7CisgICAgICAgIGZpZWxkcy5yb3cgPSBjb21wU3RyaW5nWzBdIC0g
JzAnOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChjb21wU3RyaW5nWzBdIDwgJzAnIHx8IGNv
bXBTdHJpbmdbMF0gPiAnMycgfHwKKyAgICAgICAgICAgIGNvbXBTdHJpbmdbMV0gPCAnMCcgfHwg
Y29tcFN0cmluZ1sxXSA+ICczJykgeworICAgICAgICAgICAgZXJyb3IobGluZSwgImlsbGVnYWwg
bWF0cml4IGZpZWxkIHNlbGVjdGlvbiIsIGNvbXBTdHJpbmcuY19zdHIoKSk7CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZmllbGRzLnJvdyA9IGNvbXBTdHJp
bmdbMF0gLSAnMCc7CisgICAgICAgIGZpZWxkcy5jb2wgPSBjb21wU3RyaW5nWzFdIC0gJzAnOwor
ICAgIH0KKworICAgIGlmIChmaWVsZHMucm93ID49IG1hdFNpemUgfHwgZmllbGRzLmNvbCA+PSBt
YXRTaXplKSB7CisgICAgICAgIGVycm9yKGxpbmUsICJtYXRyaXggZmllbGQgc2VsZWN0aW9uIG91
dCBvZiByYW5nZSIsIGNvbXBTdHJpbmcuY19zdHIoKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBF
cnJvcnMKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworLy8KKy8vIFRyYWNrIHdoZXRoZXIgZXJyb3Jz
IGhhdmUgb2NjdXJyZWQuCisvLwordm9pZCBUUGFyc2VDb250ZXh0OjpyZWNvdmVyKCkKK3sKK30K
KworLy8KKy8vIFVzZWQgYnkgZmxleC9iaXNvbiB0byBvdXRwdXQgYWxsIHN5bnRheCBhbmQgcGFy
c2luZyBlcnJvcnMuCisvLwordm9pZCBUUGFyc2VDb250ZXh0OjplcnJvcihjb25zdCBUU291cmNl
TG9jJiBsb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJlYXNvbiwg
Y29uc3QgY2hhciogdG9rZW4sIAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBleHRyYUluZm8pCit7CisgICAgcHA6OlNvdXJjZUxvY2F0aW9uIHNyY0xvYzsKKyAgICBzcmNM
b2MuZmlsZSA9IGxvYy5maXJzdF9maWxlOworICAgIHNyY0xvYy5saW5lID0gbG9jLmZpcnN0X2xp
bmU7CisgICAgZGlhZ25vc3RpY3Mud3JpdGVJbmZvKHBwOjpEaWFnbm9zdGljczo6RVJST1IsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNyY0xvYywgcmVhc29uLCB0b2tlbiwgZXh0cmFJbmZv
KTsKKworfQorCit2b2lkIFRQYXJzZUNvbnRleHQ6Ondhcm5pbmcoY29uc3QgVFNvdXJjZUxvYyYg
bG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJlYXNvbiwgY29u
c3QgY2hhciogdG9rZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
ZXh0cmFJbmZvKSB7CisgICAgcHA6OlNvdXJjZUxvY2F0aW9uIHNyY0xvYzsKKyAgICBzcmNMb2Mu
ZmlsZSA9IGxvYy5maXJzdF9maWxlOworICAgIHNyY0xvYy5saW5lID0gbG9jLmZpcnN0X2xpbmU7
CisgICAgZGlhZ25vc3RpY3Mud3JpdGVJbmZvKHBwOjpEaWFnbm9zdGljczo6V0FSTklORywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3JjTG9jLCByZWFzb24sIHRva2VuLCBleHRyYUluZm8p
OworfQorCit2b2lkIFRQYXJzZUNvbnRleHQ6OnRyYWNlKGNvbnN0IGNoYXIqIHN0cikKK3sKKyAg
ICBkaWFnbm9zdGljcy53cml0ZURlYnVnKHN0cik7Cit9CisKKy8vCisvLyBTYW1lIGVycm9yIG1l
c3NhZ2UgZm9yIGFsbCBwbGFjZXMgYXNzaWdubWVudHMgZG9uJ3Qgd29yay4KKy8vCit2b2lkIFRQ
YXJzZUNvbnRleHQ6OmFzc2lnbkVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNo
YXIqIG9wLCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcgcmlnaHQpCit7CisgICAgc3RkOjpzdHJpbmdz
dHJlYW0gZXh0cmFJbmZvU3RyZWFtOworICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiY2Fubm90IGNv
bnZlcnQgZnJvbSAnIiA8PCByaWdodCA8PCAiJyB0byAnIiA8PCBsZWZ0IDw8ICInIjsKKyAgICBz
dGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7CisgICAgZXJyb3Io
bGluZSwgIiIsIG9wLCBleHRyYUluZm8uY19zdHIoKSk7Cit9CisKKy8vCisvLyBTYW1lIGVycm9y
IG1lc3NhZ2UgZm9yIGFsbCBwbGFjZXMgdW5hcnkgb3BlcmF0aW9ucyBkb24ndCB3b3JrLgorLy8K
K3ZvaWQgVFBhcnNlQ29udGV4dDo6dW5hcnlPcEVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUs
IGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIG9wZXJhbmQpCit7CisgICAgc3RkOjpzdHJpbmdzdHJl
YW0gZXh0cmFJbmZvU3RyZWFtOworICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAibm8gb3BlcmF0aW9u
ICciIDw8IG9wIDw8ICInIGV4aXN0cyB0aGF0IHRha2VzIGFuIG9wZXJhbmQgb2YgdHlwZSAiIDw8
IG9wZXJhbmQgCisgICAgICAgICAgICAgICAgICAgIDw8ICIgKG9yIHRoZXJlIGlzIG5vIGFjY2Vw
dGFibGUgY29udmVyc2lvbikiOworICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5m
b1N0cmVhbS5zdHIoKTsKKyAgICBlcnJvcihsaW5lLCAiIHdyb25nIG9wZXJhbmQgdHlwZSIsIG9w
LCBleHRyYUluZm8uY19zdHIoKSk7Cit9CisKKy8vCisvLyBTYW1lIGVycm9yIG1lc3NhZ2UgZm9y
IGFsbCBiaW5hcnkgb3BlcmF0aW9ucyBkb24ndCB3b3JrLgorLy8KK3ZvaWQgVFBhcnNlQ29udGV4
dDo6YmluYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwg
VFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KQoreworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4
dHJhSW5mb1N0cmVhbTsKKyAgICBleHRyYUluZm9TdHJlYW0gPDwgIm5vIG9wZXJhdGlvbiAnIiA8
PCBvcCA8PCAiJyBleGlzdHMgdGhhdCB0YWtlcyBhIGxlZnQtaGFuZCBvcGVyYW5kIG9mIHR5cGUg
JyIgPDwgbGVmdCAKKyAgICAgICAgICAgICAgICAgICAgPDwgIicgYW5kIGEgcmlnaHQgb3BlcmFu
ZCBvZiB0eXBlICciIDw8IHJpZ2h0IDw8ICInIChvciB0aGVyZSBpcyBubyBhY2NlcHRhYmxlIGNv
bnZlcnNpb24pIjsKKyAgICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0u
c3RyKCk7CisgICAgZXJyb3IobGluZSwgIiB3cm9uZyBvcGVyYW5kIHR5cGVzICIsIG9wLCBleHRy
YUluZm8uY19zdHIoKSk7IAorfQorCitib29sIFRQYXJzZUNvbnRleHQ6OnByZWNpc2lvbkVycm9y
Q2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFByZWNpc2lvbiBwcmVjaXNpb24sIFRCYXNp
Y1R5cGUgdHlwZSl7CisgICAgaWYgKCFjaGVja3NQcmVjaXNpb25FcnJvcnMpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBzd2l0Y2goIHR5cGUgKXsKKyAgICBjYXNlIEVidEZsb2F0OgorICAg
ICAgICBpZiggcHJlY2lzaW9uID09IEVicFVuZGVmaW5lZCApeworICAgICAgICAgICAgZXJyb3Io
IGxpbmUsICJObyBwcmVjaXNpb24gc3BlY2lmaWVkIGZvciAoZmxvYXQpIiwgIiIgKTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
RWJ0SW50OgorICAgICAgICBpZiggcHJlY2lzaW9uID09IEVicFVuZGVmaW5lZCApeworICAgICAg
ICAgICAgZXJyb3IoIGxpbmUsICJObyBwcmVjaXNpb24gc3BlY2lmaWVkIChpbnQpIiwgIiIgKTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAg
IGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNl
OworfQorCisvLworLy8gQm90aCB0ZXN0IGFuZCBpZiBuZWNlc3NhcnksIHNwaXQgb3V0IGFuIGVy
cm9yLCB0byBzZWUgaWYgdGhlIG5vZGUgaXMgcmVhbGx5CisvLyBhbiBsLXZhbHVlIHRoYXQgY2Fu
IGJlIG9wZXJhdGVkIG9uIHRoaXMgd2F5LgorLy8KKy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgd2Fz
IGFuIGVycm9yLgorLy8KK2Jvb2wgVFBhcnNlQ29udGV4dDo6bFZhbHVlRXJyb3JDaGVjayhjb25z
dCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVEludGVybVR5cGVkKiBub2RlKQor
eworICAgIFRJbnRlcm1TeW1ib2wqIHN5bU5vZGUgPSBub2RlLT5nZXRBc1N5bWJvbE5vZGUoKTsK
KyAgICBUSW50ZXJtQmluYXJ5KiBiaW5hcnlOb2RlID0gbm9kZS0+Z2V0QXNCaW5hcnlOb2RlKCk7
CisKKyAgICBpZiAoYmluYXJ5Tm9kZSkgeworICAgICAgICBib29sIGVycm9yUmV0dXJuOworCisg
ICAgICAgIHN3aXRjaChiaW5hcnlOb2RlLT5nZXRPcCgpKSB7CisgICAgICAgIGNhc2UgRU9wSW5k
ZXhEaXJlY3Q6CisgICAgICAgIGNhc2UgRU9wSW5kZXhJbmRpcmVjdDoKKyAgICAgICAgY2FzZSBF
T3BJbmRleERpcmVjdFN0cnVjdDoKKyAgICAgICAgICAgIHJldHVybiBsVmFsdWVFcnJvckNoZWNr
KGxpbmUsIG9wLCBiaW5hcnlOb2RlLT5nZXRMZWZ0KCkpOworICAgICAgICBjYXNlIEVPcFZlY3Rv
clN3aXp6bGU6CisgICAgICAgICAgICBlcnJvclJldHVybiA9IGxWYWx1ZUVycm9yQ2hlY2sobGlu
ZSwgb3AsIGJpbmFyeU5vZGUtPmdldExlZnQoKSk7CisgICAgICAgICAgICBpZiAoIWVycm9yUmV0
dXJuKSB7CisgICAgICAgICAgICAgICAgaW50IG9mZnNldFs0XSA9IHswLDAsMCwwfTsKKworICAg
ICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogcmlnaHROb2RlID0gYmluYXJ5Tm9kZS0+Z2V0Umln
aHQoKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICphZ2dyTm9kZSA9IHJpZ2h0
Tm9kZS0+Z2V0QXNBZ2dyZWdhdGUoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICBmb3IgKFRJbnRlcm1TZXF1ZW5jZTo6aXRlcmF0b3IgcCA9IGFnZ3JOb2RlLT5nZXRTZXF1ZW5j
ZSgpLmJlZ2luKCk7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwICE9IGFnZ3JOb2RlLT5nZXRTZXF1ZW5jZSgpLmVuZCgpOyBwKyspIHsKKyAgICAgICAg
ICAgICAgICAgICAgaW50IHZhbHVlID0gKCpwKS0+Z2V0QXNUeXBlZCgpLT5nZXRBc0NvbnN0YW50
VW5pb24oKS0+Z2V0SUNvbnN0KDApOworICAgICAgICAgICAgICAgICAgICBvZmZzZXRbdmFsdWVd
Kys7ICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9mZnNldFt2YWx1ZV0gPiAxKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihsaW5lLCAiIGwtdmFsdWUgb2Ygc3dpenpsZSBj
YW5ub3QgaGF2ZSBkdXBsaWNhdGUgY29tcG9uZW50cyIsIG9wKTsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9IAorCisgICAgICAgICAgICByZXR1cm4gZXJyb3JSZXR1cm47
CisgICAgICAgIGRlZmF1bHQ6IAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgZXJyb3IobGluZSwgIiBsLXZhbHVlIHJlcXVpcmVkIiwgb3ApOworCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworCisgICAgY29uc3QgY2hhciogc3ltYm9sID0gMDsKKyAgICBpZiAo
c3ltTm9kZSAhPSAwKQorICAgICAgICBzeW1ib2wgPSBzeW1Ob2RlLT5nZXRTeW1ib2woKS5jX3N0
cigpOworCisgICAgY29uc3QgY2hhciogbWVzc2FnZSA9IDA7CisgICAgc3dpdGNoIChub2RlLT5n
ZXRRdWFsaWZpZXIoKSkgeworICAgIGNhc2UgRXZxQ29uc3Q6ICAgICAgICAgIG1lc3NhZ2UgPSAi
Y2FuJ3QgbW9kaWZ5IGEgY29uc3QiOyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFdnFDb25zdFJl
YWRPbmx5OiAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgYSBjb25zdCI7ICAgICAgICBicmVhazsK
KyAgICBjYXNlIEV2cUF0dHJpYnV0ZTogICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBhbiBh
dHRyaWJ1dGUiOyAgIGJyZWFrOworICAgIGNhc2UgRXZxVW5pZm9ybTogICAgICAgIG1lc3NhZ2Ug
PSAiY2FuJ3QgbW9kaWZ5IGEgdW5pZm9ybSI7ICAgICAgYnJlYWs7CisgICAgY2FzZSBFdnFWYXJ5
aW5nSW46ICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgYSB2YXJ5aW5nIjsgICAgICBicmVh
azsKKyAgICBjYXNlIEV2cUZyYWdDb29yZDogICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBn
bF9GcmFnQ29vcmQiOyAgIGJyZWFrOworICAgIGNhc2UgRXZxRnJvbnRGYWNpbmc6ICAgIG1lc3Nh
Z2UgPSAiY2FuJ3QgbW9kaWZ5IGdsX0Zyb250RmFjaW5nIjsgYnJlYWs7CisgICAgY2FzZSBFdnFQ
b2ludENvb3JkOiAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgZ2xfUG9pbnRDb29yZCI7ICBi
cmVhazsKKyAgICBkZWZhdWx0OgorCisgICAgICAgIC8vCisgICAgICAgIC8vIFR5cGUgdGhhdCBj
YW4ndCBiZSB3cml0dGVuIHRvPworICAgICAgICAvLworICAgICAgICBzd2l0Y2ggKG5vZGUtPmdl
dEJhc2ljVHlwZSgpKSB7CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEOgorICAgICAgICBjYXNl
IEVidFNhbXBsZXJDdWJlOgorICAgICAgICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgYSBz
YW1wbGVyIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVidFZvaWQ6CisgICAg
ICAgICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSB2b2lkIjsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OiAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKG1lc3NhZ2UgPT0gMCAmJiBiaW5hcnlOb2RlID09IDAgJiYgc3ltTm9kZSA9
PSAwKSB7CisgICAgICAgIGVycm9yKGxpbmUsICIgbC12YWx1ZSByZXF1aXJlZCIsIG9wKTsKKwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKworICAgIC8vCisgICAgLy8gRXZlcnl0aGlu
ZyBlbHNlIGlzIG9rYXksIG5vIGVycm9yLgorICAgIC8vCisgICAgaWYgKG1lc3NhZ2UgPT0gMCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8KKyAgICAvLyBJZiB3ZSBnZXQgaGVyZSwg
d2UgaGF2ZSBhbiBlcnJvciBhbmQgYSBtZXNzYWdlLgorICAgIC8vCisgICAgaWYgKHN5bU5vZGUp
IHsKKyAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOworICAgICAgICBl
eHRyYUluZm9TdHJlYW0gPDwgIlwiIiA8PCBzeW1ib2wgPDwgIlwiICgiIDw8IG1lc3NhZ2UgPDwg
IikiOworICAgICAgICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3Ry
KCk7CisgICAgICAgIGVycm9yKGxpbmUsICIgbC12YWx1ZSByZXF1aXJlZCIsIG9wLCBleHRyYUlu
Zm8uY19zdHIoKSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdGQ6OnN0cmluZ3N0cmVh
bSBleHRyYUluZm9TdHJlYW07CisgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiKCIgPDwgbWVz
c2FnZSA8PCAiKSI7CisgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0
cmVhbS5zdHIoKTsKKyAgICAgICAgZXJyb3IobGluZSwgIiBsLXZhbHVlIHJlcXVpcmVkIiwgb3As
IGV4dHJhSW5mby5jX3N0cigpKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8K
Ky8vIEJvdGggdGVzdCwgYW5kIGlmIG5lY2Vzc2FyeSBzcGl0IG91dCBhbiBlcnJvciwgdG8gc2Vl
IGlmIHRoZSBub2RlIGlzIHJlYWxseQorLy8gYSBjb25zdGFudC4KKy8vCisvLyBSZXR1cm5zIHRy
dWUgaWYgdGhlIHdhcyBhbiBlcnJvci4KKy8vCitib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0RXJy
b3JDaGVjayhUSW50ZXJtVHlwZWQqIG5vZGUpCit7CisgICAgaWYgKG5vZGUtPmdldFF1YWxpZmll
cigpID09IEV2cUNvbnN0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBlcnJvcihub2Rl
LT5nZXRMaW5lKCksICJjb25zdGFudCBleHByZXNzaW9uIHJlcXVpcmVkIiwgIiIpOworCisgICAg
cmV0dXJuIHRydWU7Cit9CisKKy8vCisvLyBCb3RoIHRlc3QsIGFuZCBpZiBuZWNlc3Nhcnkgc3Bp
dCBvdXQgYW4gZXJyb3IsIHRvIHNlZSBpZiB0aGUgbm9kZSBpcyByZWFsbHkKKy8vIGFuIGludGVn
ZXIuCisvLworLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB3YXMgYW4gZXJyb3IuCisvLworYm9vbCBU
UGFyc2VDb250ZXh0OjppbnRlZ2VyRXJyb3JDaGVjayhUSW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0
IGNoYXIqIHRva2VuKQoreworICAgIGlmIChub2RlLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRJbnQg
JiYgbm9kZS0+Z2V0Tm9taW5hbFNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBlcnJvcihub2RlLT5nZXRMaW5lKCksICJpbnRlZ2VyIGV4cHJlc3Npb24gcmVxdWlyZWQi
LCB0b2tlbik7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8KKy8vIEJvdGggdGVzdCwgYW5k
IGlmIG5lY2Vzc2FyeSBzcGl0IG91dCBhbiBlcnJvciwgdG8gc2VlIGlmIHdlIGFyZSBjdXJyZW50
bHkKKy8vIGdsb2JhbGx5IHNjb3BlZC4KKy8vCisvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHdhcyBh
biBlcnJvci4KKy8vCitib29sIFRQYXJzZUNvbnRleHQ6Omdsb2JhbEVycm9yQ2hlY2soY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSwgYm9vbCBnbG9iYWwsIGNvbnN0IGNoYXIqIHRva2VuKQoreworICAg
IGlmIChnbG9iYWwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGVycm9yKGxpbmUsICJv
bmx5IGFsbG93ZWQgYXQgZ2xvYmFsIHNjb3BlIiwgdG9rZW4pOworCisgICAgcmV0dXJuIHRydWU7
Cit9CisKKy8vCisvLyBGb3Igbm93LCBrZWVwIGl0IHNpbXBsZTogIGlmIGl0IHN0YXJ0cyAiZ2xf
IiwgaXQncyByZXNlcnZlZCwgaW5kZXBlbmRlbnQKKy8vIG9mIHNjb3BlLiAgRXhjZXB0LCBpZiB0
aGUgc3ltYm9sIHRhYmxlIGlzIGF0IHRoZSBidWlsdC1pbiBwdXNoLWxldmVsLAorLy8gd2hpY2gg
aXMgd2hlbiB3ZSBhcmUgcGFyc2luZyBidWlsdC1pbnMuCisvLyBBbHNvIGNoZWNrcyBmb3IgIndl
YmdsXyIgYW5kICJfd2ViZ2xfIiByZXNlcnZlZCBpZGVudGlmaWVycyBpZiBwYXJzaW5nIGEKKy8v
IHdlYmdsIHNoYWRlci4KKy8vCisvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9y
LgorLy8KK2Jvb2wgVFBhcnNlQ29udGV4dDo6cmVzZXJ2ZWRFcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIpCit7CisgICAgc3RhdGljIGNv
bnN0IGNoYXIqIHJlc2VydmVkRXJyTXNnID0gInJlc2VydmVkIGJ1aWx0LWluIG5hbWUiOworICAg
IGlmICghc3ltYm9sVGFibGUuYXRCdWlsdEluTGV2ZWwoKSkgeworICAgICAgICBpZiAoaWRlbnRp
Zmllci5jb21wYXJlKDAsIDMsICJnbF8iKSA9PSAwKSB7CisgICAgICAgICAgICBlcnJvcihsaW5l
LCByZXNlcnZlZEVyck1zZywgImdsXyIpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGlzV2ViR0xCYXNlZFNwZWMoc2hhZGVyU3BlYykpIHsKKyAgICAg
ICAgICAgIGlmIChpZGVudGlmaWVyLmNvbXBhcmUoMCwgNiwgIndlYmdsXyIpID09IDApIHsKKyAg
ICAgICAgICAgICAgICBlcnJvcihsaW5lLCByZXNlcnZlZEVyck1zZywgIndlYmdsXyIpOworICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KGlkZW50aWZpZXIuY29tcGFyZSgwLCA3LCAiX3dlYmdsXyIpID09IDApIHsKKyAgICAgICAgICAg
ICAgICBlcnJvcihsaW5lLCByZXNlcnZlZEVyck1zZywgIl93ZWJnbF8iKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzaGFkZXJT
cGVjID09IFNIX0NTU19TSEFERVJTX1NQRUMgJiYgaWRlbnRpZmllci5jb21wYXJlKDAsIDQsICJj
c3NfIikgPT0gMCkgeworICAgICAgICAgICAgICAgIGVycm9yKGxpbmUsIHJlc2VydmVkRXJyTXNn
LCAiY3NzXyIpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGlmIChpZGVudGlmaWVyLmZpbmQoIl9fIikgIT0gVFN0cmluZzo6
bnBvcykgeworICAgICAgICAgICAgZXJyb3IobGluZSwgImlkZW50aWZpZXJzIGNvbnRhaW5pbmcg
dHdvIGNvbnNlY3V0aXZlIHVuZGVyc2NvcmVzIChfXykgYXJlIHJlc2VydmVkIGFzIHBvc3NpYmxl
IGZ1dHVyZSBrZXl3b3JkcyIsIGlkZW50aWZpZXIuY19zdHIoKSk7CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8K
Ky8vIE1ha2Ugc3VyZSB0aGVyZSBpcyBlbm91Z2ggZGF0YSBwcm92aWRlZCB0byB0aGUgY29uc3Ry
dWN0b3IgdG8gYnVpbGQKKy8vIHNvbWV0aGluZyBvZiB0aGUgdHlwZSBvZiB0aGUgY29uc3RydWN0
b3IuICBBbHNvIHJldHVybnMgdGhlIHR5cGUgb2YKKy8vIHRoZSBjb25zdHJ1Y3Rvci4KKy8vCisv
LyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yIGluIGNvbnN0cnVjdGlvbi4KKy8v
Citib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVjayhjb25zdCBUU291cmNl
TG9jJiBsaW5lLCBUSW50ZXJtTm9kZSogbm9kZSwgVEZ1bmN0aW9uJiBmdW5jdGlvbiwgVE9wZXJh
dG9yIG9wLCBUVHlwZSogdHlwZSkKK3sKKyAgICAqdHlwZSA9IGZ1bmN0aW9uLmdldFJldHVyblR5
cGUoKTsKKworICAgIGJvb2wgY29uc3RydWN0aW5nTWF0cml4ID0gZmFsc2U7CisgICAgc3dpdGNo
KG9wKSB7CisgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQyOgorICAgIGNhc2UgRU9wQ29uc3RydWN0
TWF0MzoKKyAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDQ6CisgICAgICAgIGNvbnN0cnVjdGluZ01h
dHJpeCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6IAorICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICAvLworICAgIC8vIE5vdGU6IEl0J3Mgb2theSB0byBoYXZlIHRvbyBt
YW55IGNvbXBvbmVudHMgYXZhaWxhYmxlLCBidXQgbm90IG9rYXkgdG8gaGF2ZSB1bnVzZWQKKyAg
ICAvLyBhcmd1bWVudHMuICAnZnVsbCcgd2lsbCBnbyB0byB0cnVlIHdoZW4gZW5vdWdoIGFyZ3Mg
aGF2ZSBiZWVuIHNlZW4uICBJZiB3ZSBsb29wCisgICAgLy8gYWdhaW4sIHRoZXJlIGlzIGFuIGV4
dHJhIGFyZ3VtZW50LCBzbyAnb3ZlcmZ1bGwnIHdpbGwgYmVjb21lIHRydWUuCisgICAgLy8KKwor
ICAgIHNpemVfdCBzaXplID0gMDsKKyAgICBib29sIGNvbnN0VHlwZSA9IHRydWU7CisgICAgYm9v
bCBmdWxsID0gZmFsc2U7CisgICAgYm9vbCBvdmVyRnVsbCA9IGZhbHNlOworICAgIGJvb2wgbWF0
cml4SW5NYXRyaXggPSBmYWxzZTsKKyAgICBib29sIGFycmF5QXJnID0gZmFsc2U7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbi5nZXRQYXJhbUNvdW50KCk7ICsraSkgeworICAg
ICAgICBjb25zdCBUUGFyYW1ldGVyJiBwYXJhbSA9IGZ1bmN0aW9uLmdldFBhcmFtKGkpOworICAg
ICAgICBzaXplICs9IHBhcmFtLnR5cGUtPmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgCisgICAg
ICAgIGlmIChjb25zdHJ1Y3RpbmdNYXRyaXggJiYgcGFyYW0udHlwZS0+aXNNYXRyaXgoKSkKKyAg
ICAgICAgICAgIG1hdHJpeEluTWF0cml4ID0gdHJ1ZTsKKyAgICAgICAgaWYgKGZ1bGwpCisgICAg
ICAgICAgICBvdmVyRnVsbCA9IHRydWU7CisgICAgICAgIGlmIChvcCAhPSBFT3BDb25zdHJ1Y3RT
dHJ1Y3QgJiYgIXR5cGUtPmlzQXJyYXkoKSAmJiBzaXplID49IHR5cGUtPmdldE9iamVjdFNpemUo
KSkKKyAgICAgICAgICAgIGZ1bGwgPSB0cnVlOworICAgICAgICBpZiAocGFyYW0udHlwZS0+Z2V0
UXVhbGlmaWVyKCkgIT0gRXZxQ29uc3QpCisgICAgICAgICAgICBjb25zdFR5cGUgPSBmYWxzZTsK
KyAgICAgICAgaWYgKHBhcmFtLnR5cGUtPmlzQXJyYXkoKSkKKyAgICAgICAgICAgIGFycmF5QXJn
ID0gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgaWYgKGNvbnN0VHlwZSkKKyAgICAgICAgdHlwZS0+
c2V0UXVhbGlmaWVyKEV2cUNvbnN0KTsKKworICAgIGlmICh0eXBlLT5pc0FycmF5KCkgJiYgc3Rh
dGljX2Nhc3Q8c2l6ZV90Pih0eXBlLT5nZXRBcnJheVNpemUoKSkgIT0gZnVuY3Rpb24uZ2V0UGFy
YW1Db3VudCgpKSB7CisgICAgICAgIGVycm9yKGxpbmUsICJhcnJheSBjb25zdHJ1Y3RvciBuZWVk
cyBvbmUgYXJndW1lbnQgcGVyIGFycmF5IGVsZW1lbnQiLCAiY29uc3RydWN0b3IiKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGFycmF5QXJnICYmIG9wICE9IEVPcENv
bnN0cnVjdFN0cnVjdCkgeworICAgICAgICBlcnJvcihsaW5lLCAiY29uc3RydWN0aW5nIGZyb20g
YSBub24tZGVyZWZlcmVuY2VkIGFycmF5IiwgImNvbnN0cnVjdG9yIik7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIGlmIChtYXRyaXhJbk1hdHJpeCAmJiAhdHlwZS0+aXNBcnJh
eSgpKSB7CisgICAgICAgIGlmIChmdW5jdGlvbi5nZXRQYXJhbUNvdW50KCkgIT0gMSkgeworICAg
ICAgICAgIGVycm9yKGxpbmUsICJjb25zdHJ1Y3RpbmcgbWF0cml4IGZyb20gbWF0cml4IGNhbiBv
bmx5IHRha2Ugb25lIGFyZ3VtZW50IiwgImNvbnN0cnVjdG9yIik7CisgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAob3ZlckZ1bGwpIHsKKyAgICAgICAg
ZXJyb3IobGluZSwgInRvbyBtYW55IGFyZ3VtZW50cyIsICJjb25zdHJ1Y3RvciIpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgaWYgKG9wID09IEVPcENvbnN0cnVjdFN0
cnVjdCAmJiAhdHlwZS0+aXNBcnJheSgpICYmIGludCh0eXBlLT5nZXRTdHJ1Y3QoKS0+ZmllbGRz
KCkuc2l6ZSgpKSAhPSBmdW5jdGlvbi5nZXRQYXJhbUNvdW50KCkpIHsKKyAgICAgICAgZXJyb3Io
bGluZSwgIk51bWJlciBvZiBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzIGRvZXMgbm90IG1hdGNoIHRo
ZSBudW1iZXIgb2Ygc3RydWN0dXJlIGZpZWxkcyIsICJjb25zdHJ1Y3RvciIpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoIXR5cGUtPmlzTWF0cml4KCkgfHwgIW1hdHJp
eEluTWF0cml4KSB7CisgICAgICAgIGlmICgob3AgIT0gRU9wQ29uc3RydWN0U3RydWN0ICYmIHNp
emUgIT0gMSAmJiBzaXplIDwgdHlwZS0+Z2V0T2JqZWN0U2l6ZSgpKSB8fAorICAgICAgICAgICAg
KG9wID09IEVPcENvbnN0cnVjdFN0cnVjdCAmJiBzaXplIDwgdHlwZS0+Z2V0T2JqZWN0U2l6ZSgp
KSkgeworICAgICAgICAgICAgZXJyb3IobGluZSwgIm5vdCBlbm91Z2ggZGF0YSBwcm92aWRlZCBm
b3IgY29uc3RydWN0aW9uIiwgImNvbnN0cnVjdG9yIik7CisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFRJbnRlcm1UeXBlZCAqdHlwZWQgPSBub2RlID8g
bm9kZS0+Z2V0QXNUeXBlZCgpIDogMDsKKyAgICBpZiAodHlwZWQgPT0gMCkgeworICAgICAgICBl
cnJvcihsaW5lLCAiY29uc3RydWN0b3IgYXJndW1lbnQgZG9lcyBub3QgaGF2ZSBhIHR5cGUiLCAi
Y29uc3RydWN0b3IiKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmIChvcCAh
PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QgJiYgSXNTYW1wbGVyKHR5cGVkLT5nZXRCYXNpY1R5cGUoKSkp
IHsKKyAgICAgICAgZXJyb3IobGluZSwgImNhbm5vdCBjb252ZXJ0IGEgc2FtcGxlciIsICJjb25z
dHJ1Y3RvciIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKHR5cGVkLT5n
ZXRCYXNpY1R5cGUoKSA9PSBFYnRWb2lkKSB7CisgICAgICAgIGVycm9yKGxpbmUsICJjYW5ub3Qg
Y29udmVydCBhIHZvaWQiLCAiY29uc3RydWN0b3IiKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCisvLyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyB0
byBzZWUgaWYgYSB2b2lkIHZhcmlhYmxlIGhhcyBiZWVuIGRlY2xhcmVkIGFuZCByYWlzZSBhbiBl
cnJvciBtZXNzYWdlIGZvciBzdWNoIGEgY2FzZQorLy8KKy8vIHJldHVybnMgdHJ1ZSBpbiBjYXNl
IG9mIGFuIGVycm9yCisvLworYm9vbCBUUGFyc2VDb250ZXh0Ojp2b2lkRXJyb3JDaGVjayhjb25z
dCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBUUHVi
bGljVHlwZSYgcHViVHlwZSkKK3sKKyAgICBpZiAocHViVHlwZS50eXBlID09IEVidFZvaWQpIHsK
KyAgICAgICAgZXJyb3IobGluZSwgImlsbGVnYWwgdXNlIG9mIHR5cGUgJ3ZvaWQnIiwgaWRlbnRp
Zmllci5jX3N0cigpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSAKKworICAgIHJldHVy
biBmYWxzZTsKK30KKworLy8gVGhpcyBmdW5jdGlvbiBjaGVja3MgdG8gc2VlIGlmIHRoZSBub2Rl
IChmb3IgdGhlIGV4cHJlc3Npb24pIGNvbnRhaW5zIGEgc2NhbGFyIGJvb2xlYW4gZXhwcmVzc2lv
biBvciBub3QKKy8vCisvLyByZXR1cm5zIHRydWUgaW4gY2FzZSBvZiBhbiBlcnJvcgorLy8KK2Jv
b2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwg
Y29uc3QgVEludGVybVR5cGVkKiB0eXBlKQoreworICAgIGlmICh0eXBlLT5nZXRCYXNpY1R5cGUo
KSAhPSBFYnRCb29sIHx8IHR5cGUtPmlzQXJyYXkoKSB8fCB0eXBlLT5pc01hdHJpeCgpIHx8IHR5
cGUtPmlzVmVjdG9yKCkpIHsKKyAgICAgICAgZXJyb3IobGluZSwgImJvb2xlYW4gZXhwcmVzc2lv
biBleHBlY3RlZCIsICIiKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSAKKworICAgIHJl
dHVybiBmYWxzZTsKK30KKworLy8gVGhpcyBmdW5jdGlvbiBjaGVja3MgdG8gc2VlIGlmIHRoZSBu
b2RlIChmb3IgdGhlIGV4cHJlc3Npb24pIGNvbnRhaW5zIGEgc2NhbGFyIGJvb2xlYW4gZXhwcmVz
c2lvbiBvciBub3QKKy8vCisvLyByZXR1cm5zIHRydWUgaW4gY2FzZSBvZiBhbiBlcnJvcgorLy8K
K2Jvb2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGlu
ZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlKQoreworICAgIGlmIChwVHlwZS50eXBlICE9IEVi
dEJvb2wgfHwgcFR5cGUuYXJyYXkgfHwgcFR5cGUubWF0cml4IHx8IChwVHlwZS5zaXplID4gMSkp
IHsKKyAgICAgICAgZXJyb3IobGluZSwgImJvb2xlYW4gZXhwcmVzc2lvbiBleHBlY3RlZCIsICIi
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSAKKworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBUUGFyc2VDb250ZXh0OjpzYW1wbGVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9j
JiBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUsIGNvbnN0IGNoYXIqIHJlYXNvbikKK3sK
KyAgICBpZiAocFR5cGUudHlwZSA9PSBFYnRTdHJ1Y3QpIHsKKyAgICAgICAgaWYgKGNvbnRhaW5z
U2FtcGxlcigqcFR5cGUudXNlckRlZikpIHsKKyAgICAgICAgICAgIGVycm9yKGxpbmUsIHJlYXNv
biwgZ2V0QmFzaWNTdHJpbmcocFR5cGUudHlwZSksICIoc3RydWN0dXJlIGNvbnRhaW5zIGEgc2Ft
cGxlcikiKTsKKyAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gZWxzZSBpZiAoSXNTYW1wbGVy
KHBUeXBlLnR5cGUpKSB7CisgICAgICAgIGVycm9yKGxpbmUsIHJlYXNvbiwgZ2V0QmFzaWNTdHJp
bmcocFR5cGUudHlwZSkpOworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBUUGFyc2VDb250ZXh0OjpzdHJ1Y3RRdWFsaWZpZXJFcnJv
ckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSkK
K3sKKyAgICBpZiAoKHBUeXBlLnF1YWxpZmllciA9PSBFdnFWYXJ5aW5nSW4gfHwgcFR5cGUucXVh
bGlmaWVyID09IEV2cVZhcnlpbmdPdXQgfHwgcFR5cGUucXVhbGlmaWVyID09IEV2cUF0dHJpYnV0
ZSkgJiYKKyAgICAgICAgcFR5cGUudHlwZSA9PSBFYnRTdHJ1Y3QpIHsKKyAgICAgICAgZXJyb3Io
bGluZSwgImNhbm5vdCBiZSB1c2VkIHdpdGggYSBzdHJ1Y3R1cmUiLCBnZXRRdWFsaWZpZXJTdHJp
bmcocFR5cGUucXVhbGlmaWVyKSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICBpZiAocFR5cGUucXVhbGlmaWVyICE9IEV2cVVuaWZvcm0gJiYgc2FtcGxlckVy
cm9yQ2hlY2sobGluZSwgcFR5cGUsICJzYW1wbGVycyBtdXN0IGJlIHVuaWZvcm0iKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgVFBhcnNlQ29u
dGV4dDo6cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwg
VFF1YWxpZmllciBxdWFsaWZpZXIsIGNvbnN0IFRUeXBlJiB0eXBlKQoreworICAgIGlmICgocXVh
bGlmaWVyID09IEV2cU91dCB8fCBxdWFsaWZpZXIgPT0gRXZxSW5PdXQpICYmIAorICAgICAgICAg
ICAgIHR5cGUuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0ICYmIElzU2FtcGxlcih0eXBlLmdl
dEJhc2ljVHlwZSgpKSkgeworICAgICAgICBlcnJvcihsaW5lLCAic2FtcGxlcnMgY2Fubm90IGJl
IG91dHB1dCBwYXJhbWV0ZXJzIiwgdHlwZS5nZXRCYXNpY1N0cmluZygpKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFRQYXJzZUNv
bnRleHQ6OmNvbnRhaW5zU2FtcGxlcihUVHlwZSYgdHlwZSkKK3sKKyAgICBpZiAoSXNTYW1wbGVy
KHR5cGUuZ2V0QmFzaWNUeXBlKCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmICh0
eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkgeworICAgICAgICBjb25zdCBURmllbGRM
aXN0JiBmaWVsZHMgPSB0eXBlLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAg
IGlmIChjb250YWluc1NhbXBsZXIoKmZpZWxkc1tpXS0+dHlwZSgpKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30K
KworLy8KKy8vIERvIHNpemUgY2hlY2tpbmcgZm9yIGFuIGFycmF5IHR5cGUncyBzaXplLgorLy8K
Ky8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCisvLworYm9vbCBUUGFyc2VD
b250ZXh0OjphcnJheVNpemVFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRJbnRl
cm1UeXBlZCogZXhwciwgaW50JiBzaXplKQoreworICAgIFRJbnRlcm1Db25zdGFudFVuaW9uKiBj
b25zdGFudCA9IGV4cHItPmdldEFzQ29uc3RhbnRVbmlvbigpOworICAgIGlmIChjb25zdGFudCA9
PSAwIHx8IGNvbnN0YW50LT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRJbnQpIHsKKyAgICAgICAgZXJy
b3IobGluZSwgImFycmF5IHNpemUgbXVzdCBiZSBhIGNvbnN0YW50IGludGVnZXIgZXhwcmVzc2lv
biIsICIiKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgc2l6ZSA9IGNvbnN0
YW50LT5nZXRJQ29uc3QoMCk7CisKKyAgICBpZiAoc2l6ZSA8PSAwKSB7CisgICAgICAgIGVycm9y
KGxpbmUsICJhcnJheSBzaXplIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIiwgIiIpOworICAg
ICAgICBzaXplID0gMTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJu
IGZhbHNlOworfQorCisvLworLy8gU2VlIGlmIHRoaXMgcXVhbGlmaWVyIGNhbiBiZSBhbiBhcnJh
eS4KKy8vCisvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgaXMgYW4gZXJyb3IuCisvLworYm9vbCBU
UGFyc2VDb250ZXh0OjphcnJheVF1YWxpZmllckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYg
bGluZSwgVFB1YmxpY1R5cGUgdHlwZSkKK3sKKyAgICBpZiAoKHR5cGUucXVhbGlmaWVyID09IEV2
cUF0dHJpYnV0ZSkgfHwgKHR5cGUucXVhbGlmaWVyID09IEV2cUNvbnN0KSkgeworICAgICAgICBl
cnJvcihsaW5lLCAiY2Fubm90IGRlY2xhcmUgYXJyYXlzIG9mIHRoaXMgcXVhbGlmaWVyIiwgVFR5
cGUodHlwZSkuZ2V0Q29tcGxldGVTdHJpbmcoKS5jX3N0cigpKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCisvLworLy8gU2VlIGlmIHRoaXMg
dHlwZSBjYW4gYmUgYW4gYXJyYXkuCisvLworLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIGlzIGFu
IGVycm9yLgorLy8KK2Jvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlUeXBlRXJyb3JDaGVjayhjb25z
dCBUU291cmNlTG9jJiBsaW5lLCBUUHVibGljVHlwZSB0eXBlKQoreworICAgIC8vCisgICAgLy8g
Q2FuIHRoZSB0eXBlIGJlIGFuIGFycmF5PworICAgIC8vCisgICAgaWYgKHR5cGUuYXJyYXkpIHsK
KyAgICAgICAgZXJyb3IobGluZSwgImNhbm5vdCBkZWNsYXJlIGFycmF5cyBvZiBhcnJheXMiLCBU
VHlwZSh0eXBlKS5nZXRDb21wbGV0ZVN0cmluZygpLmNfc3RyKCkpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8vCisvLyBEbyBhbGwgdGhl
IHNlbWFudGljIGNoZWNraW5nIGZvciBkZWNsYXJpbmcgYW4gYXJyYXksIHdpdGggYW5kIAorLy8g
d2l0aG91dCBhIHNpemUsIGFuZCBtYWtlIHRoZSByaWdodCBjaGFuZ2VzIHRvIHRoZSBzeW1ib2wg
dGFibGUuCisvLworLy8gc2l6ZSA9PSAwIG1lYW5zIG5vIHNwZWNpZmllZCBzaXplLgorLy8KKy8v
IFJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCisvLworYm9vbCBUUGFyc2VDb250
ZXh0OjphcnJheUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRl
bnRpZmllciwgVFB1YmxpY1R5cGUgdHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpCit7CisgICAg
Ly8KKyAgICAvLyBEb24ndCBjaGVjayBmb3IgcmVzZXJ2ZWQgd29yZCB1c2UgdW50aWwgYWZ0ZXIg
d2Uga25vdyBpdCdzIG5vdCBpbiB0aGUgc3ltYm9sIHRhYmxlLAorICAgIC8vIGJlY2F1c2UgcmVz
ZXJ2ZWQgYXJyYXlzIGNhbiBiZSByZWRlY2xhcmVkLgorICAgIC8vCisKKyAgICBib29sIGJ1aWx0
SW4gPSBmYWxzZTsgCisgICAgYm9vbCBzYW1lU2NvcGUgPSBmYWxzZTsKKyAgICBUU3ltYm9sKiBz
eW1ib2wgPSBzeW1ib2xUYWJsZS5maW5kKGlkZW50aWZpZXIsICZidWlsdEluLCAmc2FtZVNjb3Bl
KTsKKyAgICBpZiAoc3ltYm9sID09IDAgfHwgIXNhbWVTY29wZSkgeworICAgICAgICBpZiAocmVz
ZXJ2ZWRFcnJvckNoZWNrKGxpbmUsIGlkZW50aWZpZXIpKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIAorICAgICAgICB2YXJpYWJsZSA9IG5ldyBUVmFyaWFibGUoJmlkZW50aWZp
ZXIsIFRUeXBlKHR5cGUpKTsKKworICAgICAgICBpZiAodHlwZS5hcnJheVNpemUpCisgICAgICAg
ICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLnNldEFycmF5U2l6ZSh0eXBlLmFycmF5U2l6ZSk7CisK
KyAgICAgICAgaWYgKCEgc3ltYm9sVGFibGUuaW5zZXJ0KCp2YXJpYWJsZSkpIHsKKyAgICAgICAg
ICAgIGRlbGV0ZSB2YXJpYWJsZTsKKyAgICAgICAgICAgIGVycm9yKGxpbmUsICJJTlRFUk5BTCBF
UlJPUiBpbnNlcnRpbmcgbmV3IHN5bWJvbCIsIGlkZW50aWZpZXIuY19zdHIoKSk7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmICgh
IHN5bWJvbC0+aXNWYXJpYWJsZSgpKSB7CisgICAgICAgICAgICBlcnJvcihsaW5lLCAidmFyaWFi
bGUgZXhwZWN0ZWQiLCBpZGVudGlmaWVyLmNfc3RyKCkpOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKworICAgICAgICB2YXJpYWJsZSA9IHN0YXRpY19jYXN0PFRWYXJpYWJs
ZSo+KHN5bWJvbCk7CisgICAgICAgIGlmICghIHZhcmlhYmxlLT5nZXRUeXBlKCkuaXNBcnJheSgp
KSB7CisgICAgICAgICAgICBlcnJvcihsaW5lLCAicmVkZWNsYXJpbmcgbm9uLWFycmF5IGFzIGFy
cmF5IiwgaWRlbnRpZmllci5jX3N0cigpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgICAgIGlmICh2YXJpYWJsZS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpID4g
MCkgeworICAgICAgICAgICAgZXJyb3IobGluZSwgInJlZGVjbGFyYXRpb24gb2YgYXJyYXkgd2l0
aCBzaXplIiwgaWRlbnRpZmllci5jX3N0cigpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoISB2YXJpYWJsZS0+Z2V0VHlwZSgpLnNh
bWVFbGVtZW50VHlwZShUVHlwZSh0eXBlKSkpIHsKKyAgICAgICAgICAgIGVycm9yKGxpbmUsICJy
ZWRlY2xhcmF0aW9uIG9mIGFycmF5IHdpdGggYSBkaWZmZXJlbnQgdHlwZSIsIGlkZW50aWZpZXIu
Y19zdHIoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmICh0eXBlLmFycmF5U2l6ZSkKKyAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCkuc2V0
QXJyYXlTaXplKHR5cGUuYXJyYXlTaXplKTsKKyAgICB9IAorCisgICAgaWYgKHZvaWRFcnJvckNo
ZWNrKGxpbmUsIGlkZW50aWZpZXIsIHR5cGUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IHJldHVybiBmYWxzZTsKK30KKworLy8KKy8vIEVuZm9yY2Ugbm9uLWluaXRpYWxpemVyIHR5cGUv
cXVhbGlmaWVyIHJ1bGVzLgorLy8KKy8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3YXMgYW4gZXJy
b3IuCisvLworYm9vbCBUUGFyc2VDb250ZXh0Ojpub25Jbml0Q29uc3RFcnJvckNoZWNrKGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiB0eXBl
LCBib29sIGFycmF5KQoreworICAgIGlmICh0eXBlLnF1YWxpZmllciA9PSBFdnFDb25zdCkKKyAg
ICB7CisgICAgICAgIC8vIE1ha2UgdGhlIHF1YWxpZmllciBtYWtlIHNlbnNlLgorICAgICAgICB0
eXBlLnF1YWxpZmllciA9IEV2cVRlbXBvcmFyeTsKKyAgICAgICAgCisgICAgICAgIGlmIChhcnJh
eSkKKyAgICAgICAgeworICAgICAgICAgICAgZXJyb3IobGluZSwgImFycmF5cyBtYXkgbm90IGJl
IGRlY2xhcmVkIGNvbnN0YW50IHNpbmNlIHRoZXkgY2Fubm90IGJlIGluaXRpYWxpemVkIiwgaWRl
bnRpZmllci5jX3N0cigpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICh0eXBlLmlzU3Ry
dWN0dXJlQ29udGFpbmluZ0FycmF5cygpKQorICAgICAgICB7CisgICAgICAgICAgICBlcnJvcihs
aW5lLCAic3RydWN0dXJlcyBjb250YWluaW5nIGFycmF5cyBtYXkgbm90IGJlIGRlY2xhcmVkIGNv
bnN0YW50IHNpbmNlIHRoZXkgY2Fubm90IGJlIGluaXRpYWxpemVkIiwgaWRlbnRpZmllci5jX3N0
cigpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGVy
cm9yKGxpbmUsICJ2YXJpYWJsZXMgd2l0aCBxdWFsaWZpZXIgJ2NvbnN0JyBtdXN0IGJlIGluaXRp
YWxpemVkIiwgaWRlbnRpZmllci5jX3N0cigpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8KKy8vIERvIHNlbWFu
dGljIGNoZWNraW5nIGZvciBhIHZhcmlhYmxlIGRlY2xhcmF0aW9uIHRoYXQgaGFzIG5vIGluaXRp
YWxpemVyLAorLy8gYW5kIHVwZGF0ZSB0aGUgc3ltYm9sIHRhYmxlLgorLy8KKy8vIFJldHVybnMg
dHJ1ZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCisvLworYm9vbCBUUGFyc2VDb250ZXh0Ojpub25J
bml0RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVy
LCBUUHVibGljVHlwZSYgdHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpCit7CisgICAgaWYgKHJl
c2VydmVkRXJyb3JDaGVjayhsaW5lLCBpZGVudGlmaWVyKSkKKyAgICAgICAgcmVjb3ZlcigpOwor
CisgICAgdmFyaWFibGUgPSBuZXcgVFZhcmlhYmxlKCZpZGVudGlmaWVyLCBUVHlwZSh0eXBlKSk7
CisKKyAgICBpZiAoISBzeW1ib2xUYWJsZS5pbnNlcnQoKnZhcmlhYmxlKSkgeworICAgICAgICBl
cnJvcihsaW5lLCAicmVkZWZpbml0aW9uIiwgdmFyaWFibGUtPmdldE5hbWUoKS5jX3N0cigpKTsK
KyAgICAgICAgZGVsZXRlIHZhcmlhYmxlOworICAgICAgICB2YXJpYWJsZSA9IDA7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmICh2b2lkRXJyb3JDaGVjayhsaW5lLCBpZGVu
dGlmaWVyLCB0eXBlKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgVFBhcnNlQ29udGV4dDo6cGFyYW1FcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBUUXVhbGlmaWVyIHBhcmFtUXVhbGlmaWVy
LCBUVHlwZSogdHlwZSkKK3sgICAgCisgICAgaWYgKHF1YWxpZmllciAhPSBFdnFDb25zdCAmJiBx
dWFsaWZpZXIgIT0gRXZxVGVtcG9yYXJ5KSB7CisgICAgICAgIGVycm9yKGxpbmUsICJxdWFsaWZp
ZXIgbm90IGFsbG93ZWQgb24gZnVuY3Rpb24gcGFyYW1ldGVyIiwgZ2V0UXVhbGlmaWVyU3RyaW5n
KHF1YWxpZmllcikpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKHF1YWxp
ZmllciA9PSBFdnFDb25zdCAmJiBwYXJhbVF1YWxpZmllciAhPSBFdnFJbikgeworICAgICAgICBl
cnJvcihsaW5lLCAicXVhbGlmaWVyIG5vdCBhbGxvd2VkIHdpdGggIiwgZ2V0UXVhbGlmaWVyU3Ry
aW5nKHF1YWxpZmllciksIGdldFF1YWxpZmllclN0cmluZyhwYXJhbVF1YWxpZmllcikpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAocXVhbGlmaWVyID09IEV2cUNvbnN0
KQorICAgICAgICB0eXBlLT5zZXRRdWFsaWZpZXIoRXZxQ29uc3RSZWFkT25seSk7CisgICAgZWxz
ZQorICAgICAgICB0eXBlLT5zZXRRdWFsaWZpZXIocGFyYW1RdWFsaWZpZXIpOworCisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIFRQYXJzZUNvbnRleHQ6OmV4dGVuc2lvbkVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYgZXh0ZW5zaW9uKQoreworICAg
IGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciYgZXh0QmVoYXZpb3IgPSBleHRlbnNpb25CZWhhdmlv
cigpOworICAgIFRFeHRlbnNpb25CZWhhdmlvcjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGV4dEJl
aGF2aW9yLmZpbmQoZXh0ZW5zaW9uLmNfc3RyKCkpOworICAgIGlmIChpdGVyID09IGV4dEJlaGF2
aW9yLmVuZCgpKSB7CisgICAgICAgIGVycm9yKGxpbmUsICJleHRlbnNpb24iLCBleHRlbnNpb24u
Y19zdHIoKSwgImlzIG5vdCBzdXBwb3J0ZWQiKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIC8vIEluIEdMU0wgRVMsIGFuIGV4dGVuc2lvbidzIGRlZmF1bHQgYmVoYXZpb3IgaXMg
ImRpc2FibGUiLgorICAgIGlmIChpdGVyLT5zZWNvbmQgPT0gRUJoRGlzYWJsZSB8fCBpdGVyLT5z
ZWNvbmQgPT0gRUJoVW5kZWZpbmVkKSB7CisgICAgICAgIGVycm9yKGxpbmUsICJleHRlbnNpb24i
LCBleHRlbnNpb24uY19zdHIoKSwgImlzIGRpc2FibGVkIik7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICBpZiAoaXRlci0+c2Vjb25kID09IEVCaFdhcm4pIHsKKyAgICAgICAgd2Fy
bmluZyhsaW5lLCAiZXh0ZW5zaW9uIiwgZXh0ZW5zaW9uLmNfc3RyKCksICJpcyBiZWluZyB1c2Vk
Iik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgVFBhcnNlQ29udGV4dDo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgY2hhciogZXh0
ZW5zaW9uKQoreworICAgIGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciYgZXh0YmVoYXZpb3IgPSBl
eHRlbnNpb25CZWhhdmlvcigpOworICAgIFRFeHRlbnNpb25CZWhhdmlvcjo6Y29uc3RfaXRlcmF0
b3IgaXRlciA9IGV4dGJlaGF2aW9yLmZpbmQoZXh0ZW5zaW9uKTsKKyAgICByZXR1cm4gKGl0ZXIg
IT0gZXh0YmVoYXZpb3IuZW5kKCkpOworfQorCitib29sIFRQYXJzZUNvbnRleHQ6OmlzRXh0ZW5z
aW9uRW5hYmxlZChjb25zdCBjaGFyKiBleHRlbnNpb24pIGNvbnN0Cit7CisgICAgY29uc3QgVEV4
dGVuc2lvbkJlaGF2aW9yJiBleHRiZWhhdmlvciA9IGV4dGVuc2lvbkJlaGF2aW9yKCk7CisgICAg
VEV4dGVuc2lvbkJlaGF2aW9yOjpjb25zdF9pdGVyYXRvciBpdGVyID0gZXh0YmVoYXZpb3IuZmlu
ZChleHRlbnNpb24pOworCisgICAgaWYgKGl0ZXIgPT0gZXh0YmVoYXZpb3IuZW5kKCkpCisgICAg
eworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIChpdGVyLT5zZWNv
bmQgPT0gRUJoRW5hYmxlIHx8IGl0ZXItPnNlY29uZCA9PSBFQmhSZXF1aXJlKTsKK30KKworLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gTm9uLUVycm9ycy4KKy8vCisvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KKworLy8KKy8vIExvb2sgdXAgYSBmdW5jdGlvbiBuYW1lIGluIHRoZSBz
eW1ib2wgdGFibGUsIGFuZCBtYWtlIHN1cmUgaXQgaXMgYSBmdW5jdGlvbi4KKy8vCisvLyBSZXR1
cm4gdGhlIGZ1bmN0aW9uIHN5bWJvbCBpZiBmb3VuZCwgb3RoZXJ3aXNlIDAuCisvLworY29uc3Qg
VEZ1bmN0aW9uKiBUUGFyc2VDb250ZXh0OjpmaW5kRnVuY3Rpb24oY29uc3QgVFNvdXJjZUxvYyYg
bGluZSwgVEZ1bmN0aW9uKiBjYWxsLCBib29sICpidWlsdEluKQoreworICAgIC8vIEZpcnN0IGZp
bmQgYnkgdW5tYW5nbGVkIG5hbWUgdG8gY2hlY2sgd2hldGhlciB0aGUgZnVuY3Rpb24gbmFtZSBo
YXMgYmVlbgorICAgIC8vIGhpZGRlbiBieSBhIHZhcmlhYmxlIG5hbWUgb3Igc3RydWN0IHR5cGVu
YW1lLgorICAgIC8vIElmIGEgZnVuY3Rpb24gaXMgZm91bmQsIGNoZWNrIGZvciBvbmUgd2l0aCBh
IG1hdGNoaW5nIGFyZ3VtZW50IGxpc3QuCisgICAgY29uc3QgVFN5bWJvbCogc3ltYm9sID0gc3lt
Ym9sVGFibGUuZmluZChjYWxsLT5nZXROYW1lKCksIGJ1aWx0SW4pOworICAgIGlmIChzeW1ib2wg
PT0gMCB8fCBzeW1ib2wtPmlzRnVuY3Rpb24oKSkgeworICAgICAgICBzeW1ib2wgPSBzeW1ib2xU
YWJsZS5maW5kKGNhbGwtPmdldE1hbmdsZWROYW1lKCksIGJ1aWx0SW4pOworICAgIH0KKworICAg
IGlmIChzeW1ib2wgPT0gMCkgeworICAgICAgICBlcnJvcihsaW5lLCAibm8gbWF0Y2hpbmcgb3Zl
cmxvYWRlZCBmdW5jdGlvbiBmb3VuZCIsIGNhbGwtPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKCFzeW1ib2wtPmlzRnVuY3Rpb24oKSkgewor
ICAgICAgICBlcnJvcihsaW5lLCAiZnVuY3Rpb24gbmFtZSBleHBlY3RlZCIsIGNhbGwtPmdldE5h
bWUoKS5jX3N0cigpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IFRGdW5jdGlvbio+KHN5bWJvbCk7Cit9CisKKy8vCisvLyBJbml0aWFs
aXplcnMgc2hvdyB1cCBpbiBzZXZlcmFsIHBsYWNlcyBpbiB0aGUgZ3JhbW1hci4gIEhhdmUgb25l
IHNldCBvZgorLy8gY29kZSB0byBoYW5kbGUgdGhlbSBoZXJlLgorLy8KK2Jvb2wgVFBhcnNlQ29u
dGV4dDo6ZXhlY3V0ZUluaXRpYWxpemVyKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcm
IGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiBwVHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluaXRpYWxpemVyLCBUSW50ZXJtTm9kZSom
IGludGVybU5vZGUsIFRWYXJpYWJsZSogdmFyaWFibGUpCit7CisgICAgVFR5cGUgdHlwZSA9IFRU
eXBlKHBUeXBlKTsKKworICAgIGlmICh2YXJpYWJsZSA9PSAwKSB7CisgICAgICAgIGlmIChyZXNl
cnZlZEVycm9yQ2hlY2sobGluZSwgaWRlbnRpZmllcikpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgICAgICBpZiAodm9pZEVycm9yQ2hlY2sobGluZSwgaWRlbnRpZmllciwgcFR5cGUp
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgLy8KKyAgICAgICAgLy8gYWRk
IHZhcmlhYmxlIHRvIHN5bWJvbCB0YWJsZQorICAgICAgICAvLworICAgICAgICB2YXJpYWJsZSA9
IG5ldyBUVmFyaWFibGUoJmlkZW50aWZpZXIsIHR5cGUpOworICAgICAgICBpZiAoISBzeW1ib2xU
YWJsZS5pbnNlcnQoKnZhcmlhYmxlKSkgeworICAgICAgICAgICAgZXJyb3IobGluZSwgInJlZGVm
aW5pdGlvbiIsIHZhcmlhYmxlLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgIC8vIGRvbid0IGRlbGV0ZSB2YXJpYWJsZSwgaXQncyB1c2Vk
IGJ5IGVycm9yIHJlY292ZXJ5LCBhbmQgdGhlIHBvb2wgCisgICAgICAgICAgICAvLyBwb3Agd2ls
bCB0YWtlIGNhcmUgb2YgdGhlIG1lbW9yeQorICAgICAgICB9CisgICAgfQorCisgICAgLy8KKyAg
ICAvLyBpZGVudGlmaWVyIG11c3QgYmUgb2YgdHlwZSBjb25zdGFudCwgYSBnbG9iYWwsIG9yIGEg
dGVtcG9yYXJ5CisgICAgLy8KKyAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA9IHZhcmlhYmxlLT5n
ZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCk7CisgICAgaWYgKChxdWFsaWZpZXIgIT0gRXZxVGVtcG9y
YXJ5KSAmJiAocXVhbGlmaWVyICE9IEV2cUdsb2JhbCkgJiYgKHF1YWxpZmllciAhPSBFdnFDb25z
dCkpIHsKKyAgICAgICAgZXJyb3IobGluZSwgIiBjYW5ub3QgaW5pdGlhbGl6ZSB0aGlzIHR5cGUg
b2YgcXVhbGlmaWVyICIsIHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyU3RyaW5nKCkp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgLy8KKyAgICAvLyB0ZXN0IGZvciBh
bmQgcHJvcGFnYXRlIGNvbnN0YW50CisgICAgLy8KKworICAgIGlmIChxdWFsaWZpZXIgPT0gRXZx
Q29uc3QpIHsKKyAgICAgICAgaWYgKHF1YWxpZmllciAhPSBpbml0aWFsaXplci0+Z2V0VHlwZSgp
LmdldFF1YWxpZmllcigpKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUlu
Zm9TdHJlYW07CisgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgIiciIDw8IHZhcmlhYmxl
LT5nZXRUeXBlKCkuZ2V0Q29tcGxldGVTdHJpbmcoKSA8PCAiJyI7CisgICAgICAgICAgICBzdGQ6
OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7CisgICAgICAgICAgICBl
cnJvcihsaW5lLCAiIGFzc2lnbmluZyBub24tY29uc3RhbnQgdG8iLCAiPSIsIGV4dHJhSW5mby5j
X3N0cigpKTsKKyAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCkuc2V0UXVhbGlmaWVyKEV2
cVRlbXBvcmFyeSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAodHlwZSAhPSBpbml0aWFsaXplci0+Z2V0VHlwZSgpKSB7CisgICAgICAgICAgICBlcnJv
cihsaW5lLCAiIG5vbi1tYXRjaGluZyB0eXBlcyBmb3IgY29uc3QgaW5pdGlhbGl6ZXIgIiwgCisg
ICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXJTdHJpbmcoKSk7
CisgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLnNldFF1YWxpZmllcihFdnFUZW1wb3Jh
cnkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlu
aXRpYWxpemVyLT5nZXRBc0NvbnN0YW50VW5pb24oKSkgeyAKKyAgICAgICAgICAgIHZhcmlhYmxl
LT5zaGFyZUNvbnN0UG9pbnRlcihpbml0aWFsaXplci0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdl
dFVuaW9uQXJyYXlQb2ludGVyKCkpOworICAgICAgICB9IGVsc2UgaWYgKGluaXRpYWxpemVyLT5n
ZXRBc1N5bWJvbE5vZGUoKSkgeworICAgICAgICAgICAgY29uc3QgVFN5bWJvbCogc3ltYm9sID0g
c3ltYm9sVGFibGUuZmluZChpbml0aWFsaXplci0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJv
bCgpKTsKKyAgICAgICAgICAgIGNvbnN0IFRWYXJpYWJsZSogdFZhciA9IHN0YXRpY19jYXN0PGNv
bnN0IFRWYXJpYWJsZSo+KHN5bWJvbCk7CisKKyAgICAgICAgICAgIENvbnN0YW50VW5pb24qIGNv
bnN0QXJyYXkgPSB0VmFyLT5nZXRDb25zdFBvaW50ZXIoKTsKKyAgICAgICAgICAgIHZhcmlhYmxl
LT5zaGFyZUNvbnN0UG9pbnRlcihjb25zdEFycmF5KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKKyAgICAgICAgICAgIGV4
dHJhSW5mb1N0cmVhbSA8PCAiJyIgPDwgdmFyaWFibGUtPmdldFR5cGUoKS5nZXRDb21wbGV0ZVN0
cmluZygpIDw8ICInIjsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJh
SW5mb1N0cmVhbS5zdHIoKTsKKyAgICAgICAgICAgIGVycm9yKGxpbmUsICIgY2Fubm90IGFzc2ln
biB0byIsICI9IiwgZXh0cmFJbmZvLmNfc3RyKCkpOworICAgICAgICAgICAgdmFyaWFibGUtPmdl
dFR5cGUoKS5zZXRRdWFsaWZpZXIoRXZxVGVtcG9yYXJ5KTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisgICAgfQorIAorICAgIGlmIChxdWFsaWZpZXIgIT0gRXZxQ29uc3Qp
IHsKKyAgICAgICAgVEludGVybVN5bWJvbCogaW50ZXJtU3ltYm9sID0gaW50ZXJtZWRpYXRlLmFk
ZFN5bWJvbCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwgdmFyaWFibGUtPmdldE5hbWUoKSwgdmFy
aWFibGUtPmdldFR5cGUoKSwgbGluZSk7CisgICAgICAgIGludGVybU5vZGUgPSBpbnRlcm1lZGlh
dGUuYWRkQXNzaWduKEVPcEluaXRpYWxpemUsIGludGVybVN5bWJvbCwgaW5pdGlhbGl6ZXIsIGxp
bmUpOworICAgICAgICBpZiAoaW50ZXJtTm9kZSA9PSAwKSB7CisgICAgICAgICAgICBhc3NpZ25F
cnJvcihsaW5lLCAiPSIsIGludGVybVN5bWJvbC0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgaW5pdGlh
bGl6ZXItPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UgCisgICAgICAgIGludGVybU5vZGUgPSAwOworCisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIFRQYXJzZUNvbnRleHQ6OmFyZUFsbENoaWxkQ29uc3QoVElu
dGVybUFnZ3JlZ2F0ZSogYWdnck5vZGUpCit7CisgICAgQVNTRVJUKGFnZ3JOb2RlICE9IE5VTEwp
OworICAgIGlmICghYWdnck5vZGUtPmlzQ29uc3RydWN0b3IoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgYm9vbCBhbGxDb25zdGFudCA9IHRydWU7CisKKyAgICAvLyBjaGVjayBpZiBh
bGwgdGhlIGNoaWxkIG5vZGVzIGFyZSBjb25zdGFudHMgc28gdGhhdCB0aGV5IGNhbiBiZSBpbnNl
cnRlZCBpbnRvIAorICAgIC8vIHRoZSBwYXJlbnQgbm9kZQorICAgIFRJbnRlcm1TZXF1ZW5jZSAm
c2VxdWVuY2UgPSBhZ2dyTm9kZS0+Z2V0U2VxdWVuY2UoKSA7CisgICAgZm9yIChUSW50ZXJtU2Vx
dWVuY2U6Oml0ZXJhdG9yIHAgPSBzZXF1ZW5jZS5iZWdpbigpOyBwICE9IHNlcXVlbmNlLmVuZCgp
OyArK3ApIHsKKyAgICAgICAgaWYgKCEoKnApLT5nZXRBc1R5cGVkKCktPmdldEFzQ29uc3RhbnRV
bmlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBh
bGxDb25zdGFudDsKK30KKworLy8gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHRlc3QgZm9yIHRo
ZSBjb3JyZWN0bmVzcyBvZiB0aGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gdmFyaW91cyBjb25zdHJ1
Y3RvciBmdW5jdGlvbnMKKy8vIGFuZCBhbHNvIGNvbnZlcnQgdGhlbSB0byB0aGUgcmlnaHQgZGF0
YXR5cGUgaWYgaXQgaXMgYWxsb3dlZCBhbmQgcmVxdWlyZWQuIAorLy8KKy8vIFJldHVybnMgMCBm
b3IgYW4gZXJyb3Igb3IgdGhlIGNvbnN0cnVjdGVkIG5vZGUgKGFnZ3JlZ2F0ZSBvciB0eXBlZCkg
Zm9yIG5vIGVycm9yLgorLy8KK1RJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3Ry
dWN0b3IoVEludGVybU5vZGUqIG5vZGUsIGNvbnN0IFRUeXBlKiB0eXBlLCBUT3BlcmF0b3Igb3As
IFRGdW5jdGlvbiogZm5DYWxsLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQoreworICAgIGlmIChu
b2RlID09IDApCisgICAgICAgIHJldHVybiAwOworCisgICAgVEludGVybUFnZ3JlZ2F0ZSogYWdn
ck5vZGUgPSBub2RlLT5nZXRBc0FnZ3JlZ2F0ZSgpOworICAgIAorICAgIFRGaWVsZExpc3Q6OmNv
bnN0X2l0ZXJhdG9yIG1lbWJlckZpZWxkczsKKyAgICBpZiAob3AgPT0gRU9wQ29uc3RydWN0U3Ry
dWN0KQorICAgICAgICBtZW1iZXJGaWVsZHMgPSB0eXBlLT5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCku
YmVnaW4oKTsKKyAgICAKKyAgICBUVHlwZSBlbGVtZW50VHlwZSA9ICp0eXBlOworICAgIGlmICh0
eXBlLT5pc0FycmF5KCkpCisgICAgICAgIGVsZW1lbnRUeXBlLmNsZWFyQXJyYXluZXNzKCk7CisK
KyAgICBib29sIHNpbmdsZUFyZzsKKyAgICBpZiAoYWdnck5vZGUpIHsKKyAgICAgICAgaWYgKGFn
Z3JOb2RlLT5nZXRPcCgpICE9IEVPcE51bGwgfHwgYWdnck5vZGUtPmdldFNlcXVlbmNlKCkuc2l6
ZSgpID09IDEpCisgICAgICAgICAgICBzaW5nbGVBcmcgPSB0cnVlOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBzaW5nbGVBcmcgPSBmYWxzZTsKKyAgICB9IGVsc2UKKyAgICAgICAgc2luZ2xl
QXJnID0gdHJ1ZTsKKworICAgIFRJbnRlcm1UeXBlZCAqbmV3Tm9kZTsKKyAgICBpZiAoc2luZ2xl
QXJnKSB7CisgICAgICAgIC8vIElmIHN0cnVjdHVyZSBjb25zdHJ1Y3RvciBvciBhcnJheSBjb25z
dHJ1Y3RvciBpcyBiZWluZyBjYWxsZWQgCisgICAgICAgIC8vIGZvciBvbmx5IG9uZSBwYXJhbWV0
ZXIgaW5zaWRlIHRoZSBzdHJ1Y3R1cmUsIHdlIG5lZWQgdG8gY2FsbCBjb25zdHJ1Y3RTdHJ1Y3Qg
ZnVuY3Rpb24gb25jZS4KKyAgICAgICAgaWYgKHR5cGUtPmlzQXJyYXkoKSkKKyAgICAgICAgICAg
IG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qobm9kZSwgJmVsZW1lbnRUeXBlLCAxLCBub2RlLT5n
ZXRMaW5lKCksIGZhbHNlKTsKKyAgICAgICAgZWxzZSBpZiAob3AgPT0gRU9wQ29uc3RydWN0U3Ry
dWN0KQorICAgICAgICAgICAgbmV3Tm9kZSA9IGNvbnN0cnVjdFN0cnVjdChub2RlLCAoKm1lbWJl
ckZpZWxkcyktPnR5cGUoKSwgMSwgbm9kZS0+Z2V0TGluZSgpLCBmYWxzZSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RCdWlsdEluKHR5cGUsIG9wLCBub2Rl
LCBub2RlLT5nZXRMaW5lKCksIGZhbHNlKTsKKworICAgICAgICBpZiAobmV3Tm9kZSAmJiBuZXdO
b2RlLT5nZXRBc0FnZ3JlZ2F0ZSgpKSB7CisgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGNvbnN0
Q29uc3RydWN0b3IgPSBmb2xkQ29uc3RDb25zdHJ1Y3RvcihuZXdOb2RlLT5nZXRBc0FnZ3JlZ2F0
ZSgpLCAqdHlwZSk7CisgICAgICAgICAgICBpZiAoY29uc3RDb25zdHJ1Y3RvcikKKyAgICAgICAg
ICAgICAgICByZXR1cm4gY29uc3RDb25zdHJ1Y3RvcjsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiBuZXdOb2RlOworICAgIH0KKyAgICAKKyAgICAvLworICAgIC8vIEhhbmRsZSBsaXN0IG9m
IGFyZ3VtZW50cy4KKyAgICAvLworICAgIFRJbnRlcm1TZXF1ZW5jZSAmc2VxdWVuY2VWZWN0b3Ig
PSBhZ2dyTm9kZS0+Z2V0U2VxdWVuY2UoKSA7ICAgIC8vIFN0b3JlcyB0aGUgaW5mb3JtYXRpb24g
YWJvdXQgdGhlIHBhcmFtZXRlciB0byB0aGUgY29uc3RydWN0b3IKKyAgICAvLyBpZiB0aGUgc3Ry
dWN0dXJlIGNvbnN0cnVjdG9yIGNvbnRhaW5zIG1vcmUgdGhhbiBvbmUgcGFyYW1ldGVyLCB0aGVu
IGNvbnN0cnVjdAorICAgIC8vIGVhY2ggcGFyYW1ldGVyCisgICAgCisgICAgaW50IHBhcmFtQ291
bnQgPSAwOyAgLy8ga2VlcHMgYSB0cmFjayBvZiB0aGUgY29uc3RydWN0b3IgcGFyYW1ldGVyIG51
bWJlciBiZWluZyBjaGVja2VkICAgIAorICAgIAorICAgIC8vIGZvciBlYWNoIHBhcmFtZXRlciB0
byB0aGUgY29uc3RydWN0b3IgY2FsbCwgY2hlY2sgdG8gc2VlIGlmIHRoZSByaWdodCB0eXBlIGlz
IHBhc3NlZCBvciBjb252ZXJ0IHRoZW0gCisgICAgLy8gdG8gdGhlIHJpZ2h0IHR5cGUgaWYgcG9z
c2libGUgKGFuZCBhbGxvd2VkKS4KKyAgICAvLyBmb3Igc3RydWN0dXJlIGNvbnN0cnVjdG9ycywg
anVzdCBjaGVjayBpZiB0aGUgcmlnaHQgdHlwZSBpcyBwYXNzZWQsIG5vIGNvbnZlcnNpb24gaXMg
YWxsb3dlZC4KKyAgICAKKyAgICBmb3IgKFRJbnRlcm1TZXF1ZW5jZTo6aXRlcmF0b3IgcCA9IHNl
cXVlbmNlVmVjdG9yLmJlZ2luKCk7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwICE9IHNlcXVlbmNlVmVjdG9yLmVuZCgpOyBwKyssIHBhcmFtQ291bnQrKykgeworICAgICAg
ICBpZiAodHlwZS0+aXNBcnJheSgpKQorICAgICAgICAgICAgbmV3Tm9kZSA9IGNvbnN0cnVjdFN0
cnVjdCgqcCwgJmVsZW1lbnRUeXBlLCBwYXJhbUNvdW50KzEsIG5vZGUtPmdldExpbmUoKSwgdHJ1
ZSk7CisgICAgICAgIGVsc2UgaWYgKG9wID09IEVPcENvbnN0cnVjdFN0cnVjdCkKKyAgICAgICAg
ICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3QoKnAsIG1lbWJlckZpZWxkc1twYXJhbUNvdW50
XS0+dHlwZSgpLCBwYXJhbUNvdW50KzEsIG5vZGUtPmdldExpbmUoKSwgdHJ1ZSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RCdWlsdEluKHR5cGUsIG9wLCAq
cCwgbm9kZS0+Z2V0TGluZSgpLCB0cnVlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChuZXdOb2Rl
KSB7CisgICAgICAgICAgICAqcCA9IG5ld05vZGU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBU
SW50ZXJtVHlwZWQqIGNvbnN0cnVjdG9yID0gaW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJh
dG9yKGFnZ3JOb2RlLCBvcCwgbGluZSk7CisgICAgVEludGVybVR5cGVkKiBjb25zdENvbnN0cnVj
dG9yID0gZm9sZENvbnN0Q29uc3RydWN0b3IoY29uc3RydWN0b3ItPmdldEFzQWdncmVnYXRlKCks
ICp0eXBlKTsKKyAgICBpZiAoY29uc3RDb25zdHJ1Y3RvcikKKyAgICAgICAgcmV0dXJuIGNvbnN0
Q29uc3RydWN0b3I7CisKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1RJbnRlcm1UeXBl
ZCogVFBhcnNlQ29udGV4dDo6Zm9sZENvbnN0Q29uc3RydWN0b3IoVEludGVybUFnZ3JlZ2F0ZSog
YWdnck5vZGUsIGNvbnN0IFRUeXBlJiB0eXBlKQoreworICAgIGJvb2wgY2FuQmVGb2xkZWQgPSBh
cmVBbGxDaGlsZENvbnN0KGFnZ3JOb2RlKTsKKyAgICBhZ2dyTm9kZS0+c2V0VHlwZSh0eXBlKTsK
KyAgICBpZiAoY2FuQmVGb2xkZWQpIHsKKyAgICAgICAgYm9vbCByZXR1cm5WYWwgPSBmYWxzZTsK
KyAgICAgICAgQ29uc3RhbnRVbmlvbiogdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW3R5
cGUuZ2V0T2JqZWN0U2l6ZSgpXTsKKyAgICAgICAgaWYgKGFnZ3JOb2RlLT5nZXRTZXF1ZW5jZSgp
LnNpemUoKSA9PSAxKSAgeworICAgICAgICAgICAgcmV0dXJuVmFsID0gaW50ZXJtZWRpYXRlLnBh
cnNlQ29uc3RUcmVlKGFnZ3JOb2RlLT5nZXRMaW5lKCksIGFnZ3JOb2RlLCB1bmlvbkFycmF5LCBh
Z2dyTm9kZS0+Z2V0T3AoKSwgc3ltYm9sVGFibGUsICB0eXBlLCB0cnVlKTsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVyblZhbCA9IGludGVybWVkaWF0ZS5wYXJz
ZUNvbnN0VHJlZShhZ2dyTm9kZS0+Z2V0TGluZSgpLCBhZ2dyTm9kZSwgdW5pb25BcnJheSwgYWdn
ck5vZGUtPmdldE9wKCksIHN5bWJvbFRhYmxlLCAgdHlwZSk7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKHJldHVyblZhbCkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIHJldHVybiBp
bnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCB0eXBlLCBhZ2dyTm9kZS0+
Z2V0TGluZSgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLy8gRnVuY3Rpb24gZm9y
IGNvbnN0cnVjdG9yIGltcGxlbWVudGF0aW9uLiBDYWxscyBhZGRVbmFyeU1hdGggd2l0aCBhcHBy
b3ByaWF0ZSBFT3AgdmFsdWUKKy8vIGZvciB0aGUgcGFyYW1ldGVyIHRvIHRoZSBjb25zdHJ1Y3Rv
ciAocGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24pLiBFc3NlbnRpYWxseSwgaXQgY29udmVydHMKKy8v
IHRoZSBwYXJhbWV0ZXIgdHlwZXMgY29ycmVjdGx5LiBJZiBhIGNvbnN0cnVjdG9yIGV4cGVjdHMg
YW4gaW50IChsaWtlIGl2ZWMyKSBhbmQgaXMgcGFzc2VkIGEgCisvLyBmbG9hdCwgdGhlbiBmbG9h
dCBpcyBjb252ZXJ0ZWQgdG8gaW50LgorLy8KKy8vIFJldHVybnMgMCBmb3IgYW4gZXJyb3Igb3Ig
dGhlIGNvbnN0cnVjdGVkIG5vZGUuCisvLworVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0Ojpj
b25zdHJ1Y3RCdWlsdEluKGNvbnN0IFRUeXBlKiB0eXBlLCBUT3BlcmF0b3Igb3AsIFRJbnRlcm1O
b2RlKiBub2RlLCBjb25zdCBUU291cmNlTG9jJiBsaW5lLCBib29sIHN1YnNldCkKK3sKKyAgICBU
SW50ZXJtVHlwZWQqIG5ld05vZGU7CisgICAgVE9wZXJhdG9yIGJhc2ljT3A7CisKKyAgICAvLwor
ICAgIC8vIEZpcnN0LCBjb252ZXJ0IHR5cGVzIGFzIG5lZWRlZC4KKyAgICAvLworICAgIHN3aXRj
aCAob3ApIHsKKyAgICBjYXNlIEVPcENvbnN0cnVjdFZlYzI6CisgICAgY2FzZSBFT3BDb25zdHJ1
Y3RWZWMzOgorICAgIGNhc2UgRU9wQ29uc3RydWN0VmVjNDoKKyAgICBjYXNlIEVPcENvbnN0cnVj
dE1hdDI6CisgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQzOgorICAgIGNhc2UgRU9wQ29uc3RydWN0
TWF0NDoKKyAgICBjYXNlIEVPcENvbnN0cnVjdEZsb2F0OgorICAgICAgICBiYXNpY09wID0gRU9w
Q29uc3RydWN0RmxvYXQ7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBFT3BDb25zdHJ1Y3RJ
VmVjMjoKKyAgICBjYXNlIEVPcENvbnN0cnVjdElWZWMzOgorICAgIGNhc2UgRU9wQ29uc3RydWN0
SVZlYzQ6CisgICAgY2FzZSBFT3BDb25zdHJ1Y3RJbnQ6CisgICAgICAgIGJhc2ljT3AgPSBFT3BD
b25zdHJ1Y3RJbnQ7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBFT3BDb25zdHJ1Y3RCVmVj
MjoKKyAgICBjYXNlIEVPcENvbnN0cnVjdEJWZWMzOgorICAgIGNhc2UgRU9wQ29uc3RydWN0QlZl
YzQ6CisgICAgY2FzZSBFT3BDb25zdHJ1Y3RCb29sOgorICAgICAgICBiYXNpY09wID0gRU9wQ29u
c3RydWN0Qm9vbDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBlcnJv
cihsaW5lLCAidW5zdXBwb3J0ZWQgY29uc3RydWN0aW9uIiwgIiIpOworICAgICAgICByZWNvdmVy
KCk7CisKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIG5ld05vZGUgPSBpbnRlcm1lZGlh
dGUuYWRkVW5hcnlNYXRoKGJhc2ljT3AsIG5vZGUsIG5vZGUtPmdldExpbmUoKSwgc3ltYm9sVGFi
bGUpOworICAgIGlmIChuZXdOb2RlID09IDApIHsKKyAgICAgICAgZXJyb3IobGluZSwgImNhbid0
IGNvbnZlcnQiLCAiY29uc3RydWN0b3IiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisg
ICAgLy8KKyAgICAvLyBOb3csIGlmIHRoZXJlIHN0aWxsIGlzbid0IGFuIG9wZXJhdGlvbiB0byBk
byB0aGUgY29uc3RydWN0aW9uLCBhbmQgd2UgbmVlZCBvbmUsIGFkZCBvbmUuCisgICAgLy8KKyAg
ICAKKyAgICAvLyBPdGhlcndpc2UsIHNraXAgb3V0IGVhcmx5LgorICAgIGlmIChzdWJzZXQgfHwg
KG5ld05vZGUgIT0gbm9kZSAmJiBuZXdOb2RlLT5nZXRUeXBlKCkgPT0gKnR5cGUpKQorICAgICAg
ICByZXR1cm4gbmV3Tm9kZTsKKworICAgIC8vIHNldEFnZ3JlZ2F0ZU9wZXJhdG9yIHdpbGwgaW5z
ZXJ0IGEgbmV3IG5vZGUgZm9yIHRoZSBjb25zdHJ1Y3RvciwgYXMgbmVlZGVkLgorICAgIHJldHVy
biBpbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IobmV3Tm9kZSwgb3AsIGxpbmUpOwor
fQorCisvLyBUaGlzIGZ1bmN0aW9uIHRlc3RzIGZvciB0aGUgdHlwZSBvZiB0aGUgcGFyYW1ldGVy
cyB0byB0aGUgc3RydWN0dXJlcyBjb25zdHJ1Y3RvcnMuIFJhaXNlcworLy8gYW4gZXJyb3IgbWVz
c2FnZSBpZiB0aGUgZXhwZWN0ZWQgdHlwZSBkb2VzIG5vdCBtYXRjaCB0aGUgcGFyYW1ldGVyIHBh
c3NlZCB0byB0aGUgY29uc3RydWN0b3IuCisvLworLy8gUmV0dXJucyAwIGZvciBhbiBlcnJvciBv
ciB0aGUgaW5wdXQgbm9kZSBpdHNlbGYgaWYgdGhlIGV4cGVjdGVkIGFuZCB0aGUgZ2l2ZW4gcGFy
YW1ldGVyIHR5cGVzIG1hdGNoLgorLy8KK1RJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6Y29u
c3RydWN0U3RydWN0KFRJbnRlcm1Ob2RlKiBub2RlLCBUVHlwZSogdHlwZSwgaW50IHBhcmFtQ291
bnQsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGJvb2wgc3Vic2V0KQoreworICAgIGlmICgqdHlw
ZSA9PSBub2RlLT5nZXRBc1R5cGVkKCktPmdldFR5cGUoKSkgeworICAgICAgICBpZiAoc3Vic2V0
KQorICAgICAgICAgICAgcmV0dXJuIG5vZGUtPmdldEFzVHlwZWQoKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgcmV0dXJuIGludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcihub2Rl
LT5nZXRBc1R5cGVkKCksIEVPcENvbnN0cnVjdFN0cnVjdCwgbGluZSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOworICAgICAgICBleHRy
YUluZm9TdHJlYW0gPDwgImNhbm5vdCBjb252ZXJ0IHBhcmFtZXRlciAiIDw8IHBhcmFtQ291bnQg
CisgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGZyb20gJyIgPDwgbm9kZS0+Z2V0QXNUeXBl
ZCgpLT5nZXRUeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKQorICAgICAgICAgICAgICAgICAgICAgICAg
PDwgIicgdG8gJyIgPDwgdHlwZS0+Z2V0QmFzaWNTdHJpbmcoKSA8PCAiJyI7CisgICAgICAgIHN0
ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKKyAgICAgICAgZXJy
b3IobGluZSwgIiIsICJjb25zdHJ1Y3RvciIsIGV4dHJhSW5mby5jX3N0cigpKTsKKyAgICAgICAg
cmVjb3ZlcigpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvLworLy8gVGhpcyBmdW5j
dGlvbiByZXR1cm5zIHRoZSB0cmVlIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgdmVjdG9yIGZpZWxk
KHMpIGJlaW5nIGFjY2Vzc2VkIGZyb20gY29udGFudCB2ZWN0b3IuCisvLyBJZiBvbmx5IG9uZSBj
b21wb25lbnQgb2YgdmVjdG9yIGlzIGFjY2Vzc2VkICh2Lnggb3IgdlswXSB3aGVyZSB2IGlzIGEg
Y29udGFudCB2ZWN0b3IpLCB0aGVuIGEgY29udGFudCBub2RlIGlzCisvLyByZXR1cm5lZCwgZWxz
ZSBhbiBhZ2dyZWdhdGUgbm9kZSBpcyByZXR1cm5lZCAoZm9yIHYueHkpLiBUaGUgaW5wdXQgdG8g
dGhpcyBmdW5jdGlvbiBjb3VsZCBlaXRoZXIgYmUgdGhlIHN5bWJvbAorLy8gbm9kZSBvciBpdCBj
b3VsZCBiZSB0aGUgaW50ZXJtZWRpYXRlIHRyZWUgcmVwcmVzZW50YXRpb24gb2YgYWNjZXNzaW5n
IGZpZWxkcyBpbiBhIGNvbnN0YW50IHN0cnVjdHVyZSBvciBjb2x1bW4gb2YgCisvLyBhIGNvbnN0
YW50IG1hdHJpeC4KKy8vCitUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0VmVj
dG9yTm9kZShUVmVjdG9yRmllbGRzJiBmaWVsZHMsIFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSkKK3sKKyAgICBUSW50ZXJtVHlwZWQqIHR5cGVkTm9kZTsKKyAgICBU
SW50ZXJtQ29uc3RhbnRVbmlvbiogdGVtcENvbnN0YW50Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3Rh
bnRVbmlvbigpOworCisgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheTsKKyAgICBpZiAodGVt
cENvbnN0YW50Tm9kZSkgeworICAgICAgICB1bmlvbkFycmF5ID0gdGVtcENvbnN0YW50Tm9kZS0+
Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKKworICAgICAgICBpZiAoIXVuaW9uQXJyYXkpIHsKKyAg
ICAgICAgICAgIHJldHVybiBub2RlOworICAgICAgICB9CisgICAgfSBlbHNlIHsgLy8gVGhlIG5v
ZGUgaGFzIHRvIGJlIGVpdGhlciBhIHN5bWJvbCBub2RlIG9yIGFuIGFnZ3JlZ2F0ZSBub2RlIG9y
IGEgdGVtcENvbnN0YW50IG5vZGUsIGVsc2UsIGl0cyBhbiBlcnJvcgorICAgICAgICBlcnJvcihs
aW5lLCAiQ2Fubm90IG9mZnNldCBpbnRvIHRoZSB2ZWN0b3IiLCAiRXJyb3IiKTsKKyAgICAgICAg
cmVjb3ZlcigpOworCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIENvbnN0YW50VW5p
b24qIGNvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltmaWVsZHMubnVtXTsKKworICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgZmllbGRzLm51bTsgaSsrKSB7CisgICAgICAgIGlmIChmaWVsZHMu
b2Zmc2V0c1tpXSA+PSBub2RlLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSkgeworICAgICAg
ICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOworICAgICAgICAgICAgZXh0
cmFJbmZvU3RyZWFtIDw8ICJ2ZWN0b3IgZmllbGQgc2VsZWN0aW9uIG91dCBvZiByYW5nZSAnIiA8
PCBmaWVsZHMub2Zmc2V0c1tpXSA8PCAiJyI7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyBleHRy
YUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7CisgICAgICAgICAgICBlcnJvcihsaW5lLCAi
IiwgIlsiLCBleHRyYUluZm8uY19zdHIoKSk7CisgICAgICAgICAgICByZWNvdmVyKCk7CisgICAg
ICAgICAgICBmaWVsZHMub2Zmc2V0c1tpXSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIGNvbnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ZpZWxkcy5vZmZzZXRzW2ldXTsKKworICAg
IH0gCisgICAgdHlwZWROb2RlID0gaW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24oY29uc3RB
cnJheSwgbm9kZS0+Z2V0VHlwZSgpLCBsaW5lKTsKKyAgICByZXR1cm4gdHlwZWROb2RlOworfQor
CisvLworLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBjb2x1bW4gYmVpbmcgYWNjZXNzZWQg
ZnJvbSBhIGNvbnN0YW50IG1hdHJpeC4gVGhlIHZhbHVlcyBhcmUgcmV0cmlldmVkIGZyb20KKy8v
IHRoZSBzeW1ib2wgdGFibGUgYW5kIHBhcnNlLXRyZWUgaXMgYnVpbHQgZm9yIGEgdmVjdG9yIChl
YWNoIGNvbHVtbiBvZiBhIG1hdHJpeCBpcyBhIHZlY3RvcikuIFRoZSBpbnB1dCAKKy8vIHRvIHRo
ZSBmdW5jdGlvbiBjb3VsZCBlaXRoZXIgYmUgYSBzeW1ib2wgbm9kZSAobVswXSB3aGVyZSBtIGlz
IGEgY29uc3RhbnQgbWF0cml4KXRoYXQgcmVwcmVzZW50cyBhIAorLy8gY29uc3RhbnQgbWF0cml4
IG9yIGl0IGNvdWxkIGJlIHRoZSB0cmVlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb25zdGFudCBt
YXRyaXggKHMubTFbMF0gd2hlcmUgcyBpcyBhIGNvbnN0YW50IHN0cnVjdHVyZSkKKy8vCitUSW50
ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0TWF0cml4Tm9kZShpbnQgaW5kZXgsIFRJ
bnRlcm1UeXBlZCogbm9kZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKK3sKKyAgICBUSW50ZXJt
VHlwZWQqIHR5cGVkTm9kZTsKKyAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiogdGVtcENvbnN0YW50
Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3RhbnRVbmlvbigpOworCisgICAgaWYgKGluZGV4ID49IG5v
ZGUtPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpKSB7CisgICAgICAgIHN0ZDo6c3RyaW5nc3Ry
ZWFtIGV4dHJhSW5mb1N0cmVhbTsKKyAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJtYXRyaXgg
ZmllbGQgc2VsZWN0aW9uIG91dCBvZiByYW5nZSAnIiA8PCBpbmRleCA8PCAiJyI7CisgICAgICAg
IHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKKyAgICAgICAg
ZXJyb3IobGluZSwgIiIsICJbIiwgZXh0cmFJbmZvLmNfc3RyKCkpOworICAgICAgICByZWNvdmVy
KCk7CisgICAgICAgIGluZGV4ID0gMDsKKyAgICB9CisKKyAgICBpZiAodGVtcENvbnN0YW50Tm9k
ZSkgeworICAgICAgICAgQ29uc3RhbnRVbmlvbiogdW5pb25BcnJheSA9IHRlbXBDb25zdGFudE5v
ZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCk7CisgICAgICAgICBpbnQgc2l6ZSA9IHRlbXBDb25z
dGFudE5vZGUtPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpOworICAgICAgICAgdHlwZWROb2Rl
ID0gaW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24oJnVuaW9uQXJyYXlbc2l6ZSppbmRleF0s
IHRlbXBDb25zdGFudE5vZGUtPmdldFR5cGUoKSwgbGluZSk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgZXJyb3IobGluZSwgIkNhbm5vdCBvZmZzZXQgaW50byB0aGUgbWF0cml4IiwgIkVycm9yIik7
CisgICAgICAgIHJlY292ZXIoKTsKKworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBy
ZXR1cm4gdHlwZWROb2RlOworfQorCisKKy8vCisvLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYW4g
ZWxlbWVudCBvZiBhbiBhcnJheSBhY2Nlc3NlZCBmcm9tIGEgY29uc3RhbnQgYXJyYXkuIFRoZSB2
YWx1ZXMgYXJlIHJldHJpZXZlZCBmcm9tCisvLyB0aGUgc3ltYm9sIHRhYmxlIGFuZCBwYXJzZS10
cmVlIGlzIGJ1aWx0IGZvciB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudC4gVGhlIGlucHV0IAorLy8g
dG8gdGhlIGZ1bmN0aW9uIGNvdWxkIGVpdGhlciBiZSBhIHN5bWJvbCBub2RlIChhWzBdIHdoZXJl
IGEgaXMgYSBjb25zdGFudCBhcnJheSl0aGF0IHJlcHJlc2VudHMgYSAKKy8vIGNvbnN0YW50IGFy
cmF5IG9yIGl0IGNvdWxkIGJlIHRoZSB0cmVlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb25zdGFu
dCBhcnJheSAocy5hMVswXSB3aGVyZSBzIGlzIGEgY29uc3RhbnQgc3RydWN0dXJlKQorLy8KK1RJ
bnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RBcnJheU5vZGUoaW50IGluZGV4LCBU
SW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCit7CisgICAgVEludGVy
bVR5cGVkKiB0eXBlZE5vZGU7CisgICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFu
dE5vZGUgPSBub2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKKyAgICBUVHlwZSBhcnJheUVsZW1l
bnRUeXBlID0gbm9kZS0+Z2V0VHlwZSgpOworICAgIGFycmF5RWxlbWVudFR5cGUuY2xlYXJBcnJh
eW5lc3MoKTsKKworICAgIGlmIChpbmRleCA+PSBub2RlLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXpl
KCkpIHsKKyAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOworICAgICAg
ICBleHRyYUluZm9TdHJlYW0gPDwgImFycmF5IGZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2Ug
JyIgPDwgaW5kZXggPDwgIiciOworICAgICAgICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRy
YUluZm9TdHJlYW0uc3RyKCk7CisgICAgICAgIGVycm9yKGxpbmUsICIiLCAiWyIsIGV4dHJhSW5m
by5jX3N0cigpKTsKKyAgICAgICAgcmVjb3ZlcigpOworICAgICAgICBpbmRleCA9IDA7CisgICAg
fQorCisgICAgaWYgKHRlbXBDb25zdGFudE5vZGUpIHsKKyAgICAgICAgIHNpemVfdCBhcnJheUVs
ZW1lbnRTaXplID0gYXJyYXlFbGVtZW50VHlwZS5nZXRPYmplY3RTaXplKCk7CisgICAgICAgICBD
b25zdGFudFVuaW9uKiB1bmlvbkFycmF5ID0gdGVtcENvbnN0YW50Tm9kZS0+Z2V0VW5pb25BcnJh
eVBvaW50ZXIoKTsKKyAgICAgICAgIHR5cGVkTm9kZSA9IGludGVybWVkaWF0ZS5hZGRDb25zdGFu
dFVuaW9uKCZ1bmlvbkFycmF5W2FycmF5RWxlbWVudFNpemUgKiBpbmRleF0sIHRlbXBDb25zdGFu
dE5vZGUtPmdldFR5cGUoKSwgbGluZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZXJyb3IobGlu
ZSwgIkNhbm5vdCBvZmZzZXQgaW50byB0aGUgYXJyYXkiLCAiRXJyb3IiKTsKKyAgICAgICAgcmVj
b3ZlcigpOworCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiB0eXBlZE5v
ZGU7Cit9CisKKworLy8KKy8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdmFsdWUgb2YgYSBw
YXJ0aWN1bGFyIGZpZWxkIGluc2lkZSBhIGNvbnN0YW50IHN0cnVjdHVyZSBmcm9tIHRoZSBzeW1i
b2wgdGFibGUuIAorLy8gSWYgdGhlcmUgaXMgYW4gZW1iZWRkZWQvbmVzdGVkIHN0cnVjdCwgaXQg
YXBwcm9wcmlhdGVseSBjYWxscyBhZGRDb25zdFN0cnVjdE5lc3RlZCBvciBhZGRDb25zdFN0cnVj
dEZyb21BZ2dyCisvLyBmdW5jdGlvbiBhbmQgcmV0dXJucyB0aGUgcGFyc2UtdHJlZSB3aXRoIHRo
ZSB2YWx1ZXMgb2YgdGhlIGVtYmVkZGVkL25lc3RlZCBzdHJ1Y3QuCisvLworVEludGVybVR5cGVk
KiBUUGFyc2VDb250ZXh0OjphZGRDb25zdFN0cnVjdChUU3RyaW5nJiBpZGVudGlmaWVyLCBUSW50
ZXJtVHlwZWQqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCit7CisgICAgY29uc3QgVEZp
ZWxkTGlzdCYgZmllbGRzID0gbm9kZS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5maWVsZHMoKTsK
KworICAgIHNpemVfdCBpbnN0YW5jZVNpemUgPSAwOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0g
MDsgaW5kZXggPCBmaWVsZHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmIChmaWVsZHNb
aW5kZXhdLT5uYW1lKCkgPT0gaWRlbnRpZmllcikgeworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbnN0YW5jZVNpemUgKz0gZmllbGRzW2luZGV4XS0+
dHlwZSgpLT5nZXRPYmplY3RTaXplKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBUSW50ZXJt
VHlwZWQqIHR5cGVkTm9kZSA9IDA7CisgICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25z
dGFudE5vZGUgPSBub2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKKyAgICBpZiAodGVtcENvbnN0
YW50Tm9kZSkgeworICAgICAgICAgQ29uc3RhbnRVbmlvbiogY29uc3RBcnJheSA9IHRlbXBDb25z
dGFudE5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCk7CisKKyAgICAgICAgIHR5cGVkTm9kZSA9
IGludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKGNvbnN0QXJyYXkraW5zdGFuY2VTaXplLCB0
ZW1wQ29uc3RhbnROb2RlLT5nZXRUeXBlKCksIGxpbmUpOyAvLyB0eXBlIHdpbGwgYmUgY2hhbmdl
ZCBpbiB0aGUgY2FsbGluZyBmdW5jdGlvbgorICAgIH0gZWxzZSB7CisgICAgICAgIGVycm9yKGxp
bmUsICJDYW5ub3Qgb2Zmc2V0IGludG8gdGhlIHN0cnVjdHVyZSIsICJFcnJvciIpOworICAgICAg
ICByZWNvdmVyKCk7CisKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIHR5
cGVkTm9kZTsKK30KKworYm9vbCBUUGFyc2VDb250ZXh0OjplbnRlclN0cnVjdERlY2xhcmF0aW9u
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIpCit7Cisg
ICAgKytzdHJ1Y3ROZXN0aW5nTGV2ZWw7CisKKyAgICAvLyBFbWJlZGRlZCBzdHJ1Y3R1cmUgZGVm
aW5pdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgcGVyIEdMU0wgRVMgc3BlYy4KKyAgICAvLyBUaGV5
IGFyZW4ndCBhbGxvd2VkIGluIEdMU0wgZWl0aGVyLCBidXQgd2UgbmVlZCB0byBkZXRlY3QgdGhp
cyBoZXJlCisgICAgLy8gc28gd2UgZG9uJ3QgcmVseSBvbiB0aGUgR0xTTCBjb21waWxlciB0byBj
YXRjaCBpdC4KKyAgICBpZiAoc3RydWN0TmVzdGluZ0xldmVsID4gMSkgeworICAgICAgICBlcnJv
cihsaW5lLCAiIiwgIkVtYmVkZGVkIHN0cnVjdCBkZWZpbml0aW9ucyBhcmUgbm90IGFsbG93ZWQi
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQor
Cit2b2lkIFRQYXJzZUNvbnRleHQ6OmV4aXRTdHJ1Y3REZWNsYXJhdGlvbigpCit7CisgICAgLS1z
dHJ1Y3ROZXN0aW5nTGV2ZWw7Cit9CisKK25hbWVzcGFjZSB7CisKK2NvbnN0IGludCBrV2ViR0xN
YXhTdHJ1Y3ROZXN0aW5nID0gNDsKKworfSAgLy8gbmFtZXNwYWNlCisKK2Jvb2wgVFBhcnNlQ29u
dGV4dDo6c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29u
c3QgVEZpZWxkJiBmaWVsZCkKK3sKKyAgICBpZiAoIWlzV2ViR0xCYXNlZFNwZWMoc2hhZGVyU3Bl
YykpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChmaWVsZC50eXBl
KCktPmdldEJhc2ljVHlwZSgpICE9IEVidFN0cnVjdCkgeworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgLy8gV2UncmUgYWxyZWFkeSBpbnNpZGUgYSBzdHJ1Y3R1cmUgZGVmaW5p
dGlvbiBhdCB0aGlzIHBvaW50LCBzbyBhZGQKKyAgICAvLyBvbmUgdG8gdGhlIGZpZWxkJ3Mgc3Ry
dWN0IG5lc3RpbmcuCisgICAgaWYgKDEgKyBmaWVsZC50eXBlKCktPmdldERlZXBlc3RTdHJ1Y3RO
ZXN0aW5nKCkgPiBrV2ViR0xNYXhTdHJ1Y3ROZXN0aW5nKSB7CisgICAgICAgIHN0ZDo6c3RyaW5n
c3RyZWFtIHJlYXNvblN0cmVhbTsKKyAgICAgICAgcmVhc29uU3RyZWFtIDw8ICJSZWZlcmVuY2Ug
b2Ygc3RydWN0IHR5cGUgIgorICAgICAgICAgICAgICAgICAgICAgPDwgZmllbGQudHlwZSgpLT5n
ZXRTdHJ1Y3QoKS0+bmFtZSgpLmNfc3RyKCkKKyAgICAgICAgICAgICAgICAgICAgIDw8ICIgZXhj
ZWVkcyBtYXhpbXVtIGFsbG93ZWQgbmVzdGluZyBsZXZlbCBvZiAiCisgICAgICAgICAgICAgICAg
ICAgICA8PCBrV2ViR0xNYXhTdHJ1Y3ROZXN0aW5nOworICAgICAgICBzdGQ6OnN0cmluZyByZWFz
b24gPSByZWFzb25TdHJlYW0uc3RyKCk7CisgICAgICAgIGVycm9yKGxpbmUsIHJlYXNvbi5jX3N0
cigpLCBmaWVsZC5uYW1lKCkuY19zdHIoKSwgIiIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8vCisvLyBQYXJzZSBhbiBhcnJheSBpbmRl
eCBleHByZXNzaW9uCisvLworVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRJbmRleEV4
cHJlc3Npb24oVEludGVybVR5cGVkICpiYXNlRXhwcmVzc2lvbiwgY29uc3QgVFNvdXJjZUxvYyYg
bG9jYXRpb24sIFRJbnRlcm1UeXBlZCAqaW5kZXhFeHByZXNzaW9uKQoreworICAgIFRJbnRlcm1U
eXBlZCAqaW5kZXhlZEV4cHJlc3Npb24gPSBOVUxMOworCisgICAgaWYgKCFiYXNlRXhwcmVzc2lv
bi0+aXNBcnJheSgpICYmICFiYXNlRXhwcmVzc2lvbi0+aXNNYXRyaXgoKSAmJiAhYmFzZUV4cHJl
c3Npb24tPmlzVmVjdG9yKCkpCisgICAgeworICAgICAgICBpZiAoYmFzZUV4cHJlc3Npb24tPmdl
dEFzU3ltYm9sTm9kZSgpKQorICAgICAgICB7CisgICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwg
IiBsZWZ0IG9mICdbJyBpcyBub3Qgb2YgdHlwZSBhcnJheSwgbWF0cml4LCBvciB2ZWN0b3IgIiwg
YmFzZUV4cHJlc3Npb24tPmdldEFzU3ltYm9sTm9kZSgpLT5nZXRTeW1ib2woKS5jX3N0cigpKTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGVycm9yKGxv
Y2F0aW9uLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZl
Y3RvciAiLCAiZXhwcmVzc2lvbiIpOworICAgICAgICB9CisgICAgICAgIHJlY292ZXIoKTsKKyAg
ICB9CisKKyAgICBpZiAoaW5kZXhFeHByZXNzaW9uLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25z
dCkKKyAgICB7CisgICAgICAgIGludCBpbmRleCA9IGluZGV4RXhwcmVzc2lvbi0+Z2V0QXNDb25z
dGFudFVuaW9uKCktPmdldElDb25zdCgwKTsKKyAgICAgICAgaWYgKGluZGV4IDwgMCkKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gaW5mb1N0cmVhbTsKKyAgICAgICAg
ICAgIGluZm9TdHJlYW0gPDwgaW5kZXg7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyBpbmZvID0g
aW5mb1N0cmVhbS5zdHIoKTsKKyAgICAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAibmVnYXRpdmUg
aW5kZXgiLCBpbmZvLmNfc3RyKCkpOworICAgICAgICAgICAgcmVjb3ZlcigpOworICAgICAgICAg
ICAgaW5kZXggPSAwOworICAgICAgICB9CisgICAgICAgIGlmIChiYXNlRXhwcmVzc2lvbi0+Z2V0
VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoYmFzZUV4cHJlc3Npb24tPmlzQXJyYXkoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAvLyBjb25zdGFudCBmb2xkaW5nIGZvciBhcnJheXMKKyAgICAgICAgICAgICAgICBp
bmRleGVkRXhwcmVzc2lvbiA9IGFkZENvbnN0QXJyYXlOb2RlKGluZGV4LCBiYXNlRXhwcmVzc2lv
biwgbG9jYXRpb24pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoYmFzZUV4
cHJlc3Npb24tPmlzVmVjdG9yKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8g
Y29uc3RhbnQgZm9sZGluZyBmb3IgdmVjdG9ycworICAgICAgICAgICAgICAgIFRWZWN0b3JGaWVs
ZHMgZmllbGRzOworICAgICAgICAgICAgICAgIGZpZWxkcy5udW0gPSAxOworICAgICAgICAgICAg
ICAgIGZpZWxkcy5vZmZzZXRzWzBdID0gaW5kZXg7IC8vIG5lZWQgdG8gZG8gaXQgdGhpcyB3YXkg
YmVjYXVzZSB2Lnh5IHNlbmRzIGZpZWxkcyBpbnRlZ2VyIGFycmF5CisgICAgICAgICAgICAgICAg
aW5kZXhlZEV4cHJlc3Npb24gPSBhZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCBiYXNlRXhwcmVz
c2lvbiwgbG9jYXRpb24pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoYmFz
ZUV4cHJlc3Npb24tPmlzTWF0cml4KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Ly8gY29uc3RhbnQgZm9sZGluZyBmb3IgbWF0cmljZXMKKyAgICAgICAgICAgICAgICBpbmRleGVk
RXhwcmVzc2lvbiA9IGFkZENvbnN0TWF0cml4Tm9kZShpbmRleCwgYmFzZUV4cHJlc3Npb24sIGxv
Y2F0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNBcnJheSgpKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSBiYXNlRXhwcmVzc2lvbi0+Z2V0VHlw
ZSgpLmdldEFycmF5U2l6ZSgpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOworICAgICAgICAgICAgICAgICAg
ICBleHRyYUluZm9TdHJlYW0gPDwgImFycmF5IGluZGV4IG91dCBvZiByYW5nZSAnIiA8PCBpbmRl
eCA8PCAiJyI7CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4
dHJhSW5mb1N0cmVhbS5zdHIoKTsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IobG9jYXRpb24s
ICIiLCAiWyIsIGV4dHJhSW5mby5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVjb3Zl
cigpOworICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGJhc2VFeHByZXNzaW9uLT5nZXRUeXBl
KCkuZ2V0QXJyYXlTaXplKCkgLSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBlbHNlIGlmIChiYXNlRXhwcmVzc2lvbi0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxRnJhZ0RhdGEg
JiYgaW5kZXggPiAwICYmICFpc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMi
KSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGVycm9yKGxvY2F0aW9u
LCAiIiwgIlsiLCAiYXJyYXkgaW5kZXhlcyBmb3IgZ2xfRnJhZ0RhdGEgbXVzdCBiZSB6ZXJvIHdo
ZW4gR0xfRVhUX2RyYXdfYnVmZmVycyBpcyBkaXNhYmxlZCIpOworICAgICAgICAgICAgICAgICAg
ICByZWNvdmVyKCk7CisgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gMDsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmICgoYmFzZUV4cHJlc3Np
b24tPmlzVmVjdG9yKCkgfHwgYmFzZUV4cHJlc3Npb24tPmlzTWF0cml4KCkpICYmIGJhc2VFeHBy
ZXNzaW9uLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSA8PSBpbmRleCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07Cisg
ICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJmaWVsZCBzZWxlY3Rpb24gb3V0IG9m
IHJhbmdlICciIDw8IGluZGV4IDw8ICInIjsKKyAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBl
eHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7CisgICAgICAgICAgICAgICAgZXJyb3Io
bG9jYXRpb24sICIiLCAiWyIsIGV4dHJhSW5mby5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICBy
ZWNvdmVyKCk7CisgICAgICAgICAgICAgICAgaW5kZXggPSBiYXNlRXhwcmVzc2lvbi0+Z2V0VHlw
ZSgpLmdldE5vbWluYWxTaXplKCkgLSAxOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
bmRleEV4cHJlc3Npb24tPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRl
cigpLT5zZXRJQ29uc3QoaW5kZXgpOworICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24gPSBp
bnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsIGJhc2VFeHByZXNzaW9uLCBpbmRl
eEV4cHJlc3Npb24sIGxvY2F0aW9uKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAg
eworICAgICAgICBpbmRleGVkRXhwcmVzc2lvbiA9IGludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJ
bmRleEluZGlyZWN0LCBiYXNlRXhwcmVzc2lvbiwgaW5kZXhFeHByZXNzaW9uLCBsb2NhdGlvbik7
CisgICAgfQorCisgICAgaWYgKGluZGV4ZWRFeHByZXNzaW9uID09IDApCisgICAgeworICAgICAg
ICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CisgICAg
ICAgIHVuaW9uQXJyYXktPnNldEZDb25zdCgwLjBmKTsKKyAgICAgICAgaW5kZXhlZEV4cHJlc3Np
b24gPSBpbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRG
bG9hdCwgRWJwSGlnaCwgRXZxQ29uc3QpLCBsb2NhdGlvbik7CisgICAgfQorICAgIGVsc2UgaWYg
KGJhc2VFeHByZXNzaW9uLT5pc0FycmF5KCkpCisgICAgeworICAgICAgICBjb25zdCBUVHlwZSAm
YmFzZVR5cGUgPSBiYXNlRXhwcmVzc2lvbi0+Z2V0VHlwZSgpOworICAgICAgICBpZiAoYmFzZVR5
cGUuZ2V0U3RydWN0KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIFRUeXBlIGNvcHlPZlR5cGUo
YmFzZVR5cGUuZ2V0U3RydWN0KCkpOworICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24tPnNl
dFR5cGUoY29weU9mVHlwZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7Cisg
ICAgICAgICAgICBpbmRleGVkRXhwcmVzc2lvbi0+c2V0VHlwZShUVHlwZShiYXNlRXhwcmVzc2lv
bi0+Z2V0QmFzaWNUeXBlKCksIGJhc2VFeHByZXNzaW9uLT5nZXRQcmVjaXNpb24oKSwgRXZxVGVt
cG9yYXJ5LCBiYXNlRXhwcmVzc2lvbi0+Z2V0Tm9taW5hbFNpemUoKSwgYmFzZUV4cHJlc3Npb24t
PmlzTWF0cml4KCkpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChiYXNlRXhwcmVzc2lvbi0+
Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KQorICAgICAgICB7CisgICAgICAg
ICAgICBpbmRleGVkRXhwcmVzc2lvbi0+Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVyKEV2
cUNvbnN0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChiYXNlRXhwcmVzc2lvbi0+
aXNNYXRyaXgoKSkKKyAgICB7CisgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gYmFzZUV4
cHJlc3Npb24tPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCA/IEV2cUNvbnN0
IDogRXZxVGVtcG9yYXJ5OworICAgICAgICBpbmRleGVkRXhwcmVzc2lvbi0+c2V0VHlwZShUVHlw
ZShiYXNlRXhwcmVzc2lvbi0+Z2V0QmFzaWNUeXBlKCksIGJhc2VFeHByZXNzaW9uLT5nZXRQcmVj
aXNpb24oKSwgcXVhbGlmaWVyLCBiYXNlRXhwcmVzc2lvbi0+Z2V0Tm9taW5hbFNpemUoKSkpOwor
ICAgIH0KKyAgICBlbHNlIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNWZWN0b3IoKSkKKyAgICB7Cisg
ICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKS5n
ZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCA/IEV2cUNvbnN0IDogRXZxVGVtcG9yYXJ5OworICAg
ICAgICBpbmRleGVkRXhwcmVzc2lvbi0+c2V0VHlwZShUVHlwZShiYXNlRXhwcmVzc2lvbi0+Z2V0
QmFzaWNUeXBlKCksIGJhc2VFeHByZXNzaW9uLT5nZXRQcmVjaXNpb24oKSwgcXVhbGlmaWVyKSk7
CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uLT5zZXRU
eXBlKGJhc2VFeHByZXNzaW9uLT5nZXRUeXBlKCkpOworICAgIH0KKworICAgIHJldHVybiBpbmRl
eGVkRXhwcmVzc2lvbjsKK30KKworLy8KKy8vIFBhcnNlIGFuIGFycmF5IG9mIHN0cmluZ3MgdXNp
bmcgeXlwYXJzZS4KKy8vCisvLyBSZXR1cm5zIDAgZm9yIHN1Y2Nlc3MuCisvLworaW50IFBhUGFy
c2VTdHJpbmdzKHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nW10sIGNvbnN0
IGludCBsZW5ndGhbXSwKKyAgICAgICAgICAgICAgICAgICBUUGFyc2VDb250ZXh0KiBjb250ZXh0
KSB7CisgICAgaWYgKChjb3VudCA9PSAwKSB8fCAoc3RyaW5nID09IE5VTEwpKQorICAgICAgICBy
ZXR1cm4gMTsKKworICAgIGlmIChnbHNsYW5nX2luaXRpYWxpemUoY29udGV4dCkpCisgICAgICAg
IHJldHVybiAxOworCisgICAgaW50IGVycm9yID0gZ2xzbGFuZ19zY2FuKGNvdW50LCBzdHJpbmcs
IGxlbmd0aCwgY29udGV4dCk7CisgICAgaWYgKCFlcnJvcikKKyAgICAgICAgZXJyb3IgPSBnbHNs
YW5nX3BhcnNlKGNvbnRleHQpOworCisgICAgZ2xzbGFuZ19maW5hbGl6ZShjb250ZXh0KTsKKwor
ICAgIHJldHVybiAoZXJyb3IgPT0gMCkgJiYgKGNvbnRleHQtPm51bUVycm9ycygpID09IDApID8g
MCA6IDE7Cit9CisKKworCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvUGFyc2VDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL1BhcnNlQ29udGV4dC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1BhcnNlQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTM0IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworI2lmbmRlZiBfUEFSU0VSX0hFTFBF
Ul9JTkNMVURFRF8KKyNkZWZpbmUgX1BBUlNFUl9IRUxQRVJfSU5DTFVERURfCisKKyNpbmNsdWRl
ICJjb21waWxlci9EaWFnbm9zdGljcy5oIgorI2luY2x1ZGUgImNvbXBpbGVyL0RpcmVjdGl2ZUhh
bmRsZXIuaCIKKyNpbmNsdWRlICJjb21waWxlci9sb2NhbGludGVybWVkaWF0ZS5oIgorI2luY2x1
ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuaCIKKyNpbmNsdWRlICJjb21w
aWxlci9TaEhhbmRsZS5oIgorI2luY2x1ZGUgImNvbXBpbGVyL1N5bWJvbFRhYmxlLmgiCisKK3N0
cnVjdCBUTWF0cml4RmllbGRzIHsKKyAgICBib29sIHdob2xlUm93OworICAgIGJvb2wgd2hvbGVD
b2w7CisgICAgaW50IHJvdzsKKyAgICBpbnQgY29sOworfTsKKworLy8KKy8vIFRoZSBmb2xsb3dp
bmcgYXJlIGV4dHJhIHZhcmlhYmxlcyBuZWVkZWQgZHVyaW5nIHBhcnNpbmcsIGdyb3VwZWQgdG9n
ZXRoZXIgc28KKy8vIHRoZXkgY2FuIGJlIHBhc3NlZCB0byB0aGUgcGFyc2VyIHdpdGhvdXQgbmVl
ZGluZyBhIGdsb2JhbC4KKy8vCitzdHJ1Y3QgVFBhcnNlQ29udGV4dCB7CisgICAgVFBhcnNlQ29u
dGV4dChUU3ltYm9sVGFibGUmIHN5bXQsIFRFeHRlbnNpb25CZWhhdmlvciYgZXh0LCBUSW50ZXJt
ZWRpYXRlJiBpbnRlcm0sIFNoU2hhZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywgaW50
IG9wdGlvbnMsIGJvb2wgY2hlY2tzUHJlY0Vycm9ycywgY29uc3QgY2hhciogc291cmNlUGF0aCwg
VEluZm9TaW5rJiBpcykgOgorICAgICAgICAgICAgaW50ZXJtZWRpYXRlKGludGVybSksCisgICAg
ICAgICAgICBzeW1ib2xUYWJsZShzeW10KSwKKyAgICAgICAgICAgIHNoYWRlclR5cGUodHlwZSks
CisgICAgICAgICAgICBzaGFkZXJTcGVjKHNwZWMpLAorICAgICAgICAgICAgY29tcGlsZU9wdGlv
bnMob3B0aW9ucyksCisgICAgICAgICAgICBzb3VyY2VQYXRoKHNvdXJjZVBhdGgpLAorICAgICAg
ICAgICAgdHJlZVJvb3QoMCksCisgICAgICAgICAgICBsb29wTmVzdGluZ0xldmVsKDApLAorICAg
ICAgICAgICAgc3RydWN0TmVzdGluZ0xldmVsKDApLAorICAgICAgICAgICAgY3VycmVudEZ1bmN0
aW9uVHlwZShOVUxMKSwKKyAgICAgICAgICAgIGZ1bmN0aW9uUmV0dXJuc1ZhbHVlKGZhbHNlKSwK
KyAgICAgICAgICAgIGNoZWNrc1ByZWNpc2lvbkVycm9ycyhjaGVja3NQcmVjRXJyb3JzKSwKKyAg
ICAgICAgICAgIGRpYWdub3N0aWNzKGlzKSwKKyAgICAgICAgICAgIGRpcmVjdGl2ZUhhbmRsZXIo
ZXh0LCBkaWFnbm9zdGljcyksCisgICAgICAgICAgICBwcmVwcm9jZXNzb3IoJmRpYWdub3N0aWNz
LCAmZGlyZWN0aXZlSGFuZGxlciksCisgICAgICAgICAgICBzY2FubmVyKE5VTEwpIHsgIH0KKyAg
ICBUSW50ZXJtZWRpYXRlJiBpbnRlcm1lZGlhdGU7IC8vIHRvIGhvbGQgYW5kIGJ1aWxkIGEgcGFy
c2UgdHJlZQorICAgIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGU7ICAgLy8gc3ltYm9sIHRhYmxl
IHRoYXQgZ29lcyB3aXRoIHRoZSBsYW5ndWFnZSBjdXJyZW50bHkgYmVpbmcgcGFyc2VkCisgICAg
U2hTaGFkZXJUeXBlIHNoYWRlclR5cGU7ICAgICAgICAgICAgICAvLyB2ZXJ0ZXggb3IgZnJhZ21l
bnQgbGFuZ3VhZ2UgKGZ1dHVyZTogcGFjayBvciB1bnBhY2spCisgICAgU2hTaGFkZXJTcGVjIHNo
YWRlclNwZWM7ICAgICAgICAgICAgICAvLyBUaGUgbGFuZ3VhZ2Ugc3BlY2lmaWNhdGlvbiBjb21w
aWxlciBjb25mb3JtcyB0byAtIEdMRVMyIG9yIFdlYkdMLgorICAgIGludCBjb21waWxlT3B0aW9u
czsKKyAgICBjb25zdCBjaGFyKiBzb3VyY2VQYXRoOyAgICAgIC8vIFBhdGggb2Ygc291cmNlIGZp
bGUgb3IgTlVMTC4KKyAgICBUSW50ZXJtTm9kZSogdHJlZVJvb3Q7ICAgICAgIC8vIHJvb3Qgb2Yg
cGFyc2UgdHJlZSBiZWluZyBjcmVhdGVkCisgICAgaW50IGxvb3BOZXN0aW5nTGV2ZWw7ICAgICAg
ICAvLyAwIGlmIG91dHNpZGUgYWxsIGxvb3BzCisgICAgaW50IHN0cnVjdE5lc3RpbmdMZXZlbDsg
ICAgICAvLyBpbmNyZW1lbnRlZCB3aGlsZSBwYXJzaW5nIGEgc3RydWN0IGRlY2xhcmF0aW9uCisg
ICAgY29uc3QgVFR5cGUqIGN1cnJlbnRGdW5jdGlvblR5cGU7ICAvLyB0aGUgcmV0dXJuIHR5cGUg
b2YgdGhlIGZ1bmN0aW9uIHRoYXQncyBjdXJyZW50bHkgYmVpbmcgcGFyc2VkCisgICAgYm9vbCBm
dW5jdGlvblJldHVybnNWYWx1ZTsgICAvLyB0cnVlIGlmIGEgbm9uLXZvaWQgZnVuY3Rpb24gaGFz
IGEgcmV0dXJuCisgICAgYm9vbCBjaGVja3NQcmVjaXNpb25FcnJvcnM7ICAvLyB0cnVlIGlmIGFu
IGVycm9yIHdpbGwgYmUgZ2VuZXJhdGVkIHdoZW4gYSB2YXJpYWJsZSBpcyBkZWNsYXJlZCB3aXRo
b3V0IHByZWNpc2lvbiwgZXhwbGljaXQgb3IgaW1wbGljaXQuCisgICAgYm9vbCBmcmFnbWVudFBy
ZWNpc2lvbkhpZ2g7ICAvLyB0cnVlIGlmIGhpZ2hwIHByZWNpc2lvbiBpcyBzdXBwb3J0ZWQgaW4g
dGhlIGZyYWdtZW50IGxhbmd1YWdlLgorICAgIFRTdHJpbmcgSGFzaEVyck1zZzsKKyAgICBURGlh
Z25vc3RpY3MgZGlhZ25vc3RpY3M7CisgICAgVERpcmVjdGl2ZUhhbmRsZXIgZGlyZWN0aXZlSGFu
ZGxlcjsKKyAgICBwcDo6UHJlcHJvY2Vzc29yIHByZXByb2Nlc3NvcjsKKyAgICB2b2lkKiBzY2Fu
bmVyOworCisgICAgaW50IG51bUVycm9ycygpIGNvbnN0IHsgcmV0dXJuIGRpYWdub3N0aWNzLm51
bUVycm9ycygpOyB9CisgICAgVEluZm9TaW5rJiBpbmZvU2luaygpIHsgcmV0dXJuIGRpYWdub3N0
aWNzLmluZm9TaW5rKCk7IH0KKyAgICB2b2lkIGVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxvYywg
Y29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFyKiB0b2tlbiwKKyAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGV4dHJhSW5mbz0iIik7CisgICAgdm9pZCB3YXJuaW5nKGNvbnN0IFRTb3VyY2VM
b2MmIGxvYywgY29uc3QgY2hhciogcmVhc29uLCBjb25zdCBjaGFyKiB0b2tlbiwKKyAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogZXh0cmFJbmZvPSIiKTsKKyAgICB2b2lkIHRyYWNlKGNvbnN0
IGNoYXIqIHN0cik7CisgICAgdm9pZCByZWNvdmVyKCk7CisKKyAgICBib29sIHBhcnNlVmVjdG9y
RmllbGRzKGNvbnN0IFRTdHJpbmcmLCBpbnQgdmVjU2l6ZSwgVFZlY3RvckZpZWxkcyYsIGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUpOworICAgIGJvb2wgcGFyc2VNYXRyaXhGaWVsZHMoY29uc3QgVFN0
cmluZyYsIGludCBtYXRTaXplLCBUTWF0cml4RmllbGRzJiwgY29uc3QgVFNvdXJjZUxvYyYgbGlu
ZSk7CisKKyAgICBib29sIHJlc2VydmVkRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5l
LCBjb25zdCBUU3RyaW5nJiBpZGVudGlmaWVyKTsKKyAgICB2b2lkIGFzc2lnbkVycm9yKGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcg
cmlnaHQpOworICAgIHZvaWQgdW5hcnlPcEVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNv
bnN0IGNoYXIqIG9wLCBUU3RyaW5nIG9wZXJhbmQpOworICAgIHZvaWQgYmluYXJ5T3BFcnJvcihj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3Ry
aW5nIHJpZ2h0KTsKKyAgICBib29sIHByZWNpc2lvbkVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxv
YyYgbGluZSwgVFByZWNpc2lvbiBwcmVjaXNpb24sIFRCYXNpY1R5cGUgdHlwZSk7CisgICAgYm9v
bCBsVmFsdWVFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNoYXIqIG9w
LCBUSW50ZXJtVHlwZWQqKTsKKyAgICBib29sIGNvbnN0RXJyb3JDaGVjayhUSW50ZXJtVHlwZWQq
IG5vZGUpOworICAgIGJvb2wgaW50ZWdlckVycm9yQ2hlY2soVEludGVybVR5cGVkKiBub2RlLCBj
b25zdCBjaGFyKiB0b2tlbik7CisgICAgYm9vbCBnbG9iYWxFcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUsIGJvb2wgZ2xvYmFsLCBjb25zdCBjaGFyKiB0b2tlbik7CisgICAgYm9vbCBj
b25zdHJ1Y3RvckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEludGVybU5vZGUq
LCBURnVuY3Rpb24mLCBUT3BlcmF0b3IsIFRUeXBlKik7CisgICAgYm9vbCBhcnJheVNpemVFcnJv
ckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRJbnRlcm1UeXBlZCogZXhwciwgaW50JiBz
aXplKTsKKyAgICBib29sIGFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9j
JiBsaW5lLCBUUHVibGljVHlwZSB0eXBlKTsKKyAgICBib29sIGFycmF5VHlwZUVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSk7CisgICAgYm9vbCBhcnJh
eUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwg
VFB1YmxpY1R5cGUgdHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpOworICAgIGJvb2wgdm9pZEVy
cm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYsIGNvbnN0IFRTdHJpbmcmLCBjb25zdCBUUHVibGlj
VHlwZSYpOworICAgIGJvb2wgYm9vbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYsIGNvbnN0
IFRJbnRlcm1UeXBlZCopOworICAgIGJvb2wgYm9vbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxv
YyYsIGNvbnN0IFRQdWJsaWNUeXBlJik7CisgICAgYm9vbCBzYW1wbGVyRXJyb3JDaGVjayhjb25z
dCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUsIGNvbnN0IGNoYXIq
IHJlYXNvbik7CisgICAgYm9vbCBzdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSk7CisgICAgYm9vbCBwYXJhbWV0
ZXJTYW1wbGVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUXVhbGlmaWVyIHF1
YWxpZmllciwgY29uc3QgVFR5cGUmIHR5cGUpOworICAgIGJvb2wgbm9uSW5pdENvbnN0RXJyb3JD
aGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGlj
VHlwZSYgdHlwZSwgYm9vbCBhcnJheSk7CisgICAgYm9vbCBub25Jbml0RXJyb3JDaGVjayhjb25z
dCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgdHlw
ZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpOworICAgIGJvb2wgcGFyYW1FcnJvckNoZWNrKGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBUUXVhbGlmaWVyIHBhcmFt
UXVhbGlmaWVyLCBUVHlwZSogdHlwZSk7CisgICAgYm9vbCBleHRlbnNpb25FcnJvckNoZWNrKGNv
bnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmKTsKKworICAgIGNvbnN0IFRQcmFn
bWEmIHByYWdtYSgpIGNvbnN0IHsgcmV0dXJuIGRpcmVjdGl2ZUhhbmRsZXIucHJhZ21hKCk7IH0K
KyAgICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIGV4dGVuc2lvbkJlaGF2aW9yKCkgY29uc3Qg
eyByZXR1cm4gZGlyZWN0aXZlSGFuZGxlci5leHRlbnNpb25CZWhhdmlvcigpOyB9CisgICAgYm9v
bCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBjaGFyKiBleHRlbnNpb24pOworICAgIGJvb2wgaXNF
eHRlbnNpb25FbmFibGVkKGNvbnN0IGNoYXIqIGV4dGVuc2lvbikgY29uc3Q7CisKKyAgICBib29s
IGNvbnRhaW5zU2FtcGxlcihUVHlwZSYgdHlwZSk7CisgICAgYm9vbCBhcmVBbGxDaGlsZENvbnN0
KFRJbnRlcm1BZ2dyZWdhdGUqIGFnZ3JOb2RlKTsKKyAgICBjb25zdCBURnVuY3Rpb24qIGZpbmRG
dW5jdGlvbihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBURnVuY3Rpb24qIHBmbkNhbGwsIGJvb2wg
KmJ1aWx0SW4gPSAwKTsKKyAgICBib29sIGV4ZWN1dGVJbml0aWFsaXplcihjb25zdCBUU291cmNl
TG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgcFR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbml0aWFsaXplciwgVEludGVy
bU5vZGUqJiBpbnRlcm1Ob2RlLCBUVmFyaWFibGUqIHZhcmlhYmxlID0gMCk7CisKKyAgICBUSW50
ZXJtVHlwZWQqIGFkZENvbnN0cnVjdG9yKFRJbnRlcm1Ob2RlKiwgY29uc3QgVFR5cGUqLCBUT3Bl
cmF0b3IsIFRGdW5jdGlvbiosIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQq
IGZvbGRDb25zdENvbnN0cnVjdG9yKFRJbnRlcm1BZ2dyZWdhdGUqIGFnZ3JOb2RlLCBjb25zdCBU
VHlwZSYgdHlwZSk7CisgICAgVEludGVybVR5cGVkKiBjb25zdHJ1Y3RTdHJ1Y3QoVEludGVybU5v
ZGUqLCBUVHlwZSosIGludCwgY29uc3QgVFNvdXJjZUxvYyYsIGJvb2wgc3Vic2V0KTsKKyAgICBU
SW50ZXJtVHlwZWQqIGNvbnN0cnVjdEJ1aWx0SW4oY29uc3QgVFR5cGUqLCBUT3BlcmF0b3IsIFRJ
bnRlcm1Ob2RlKiwgY29uc3QgVFNvdXJjZUxvYyYsIGJvb2wgc3Vic2V0KTsKKyAgICBUSW50ZXJt
VHlwZWQqIGFkZENvbnN0VmVjdG9yTm9kZShUVmVjdG9yRmllbGRzJiwgVEludGVybVR5cGVkKiwg
Y29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RNYXRyaXhOb2Rl
KGludCAsIFRJbnRlcm1UeXBlZCosIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlw
ZWQqIGFkZENvbnN0QXJyYXlOb2RlKGludCBpbmRleCwgVEludGVybVR5cGVkKiBub2RlLCBjb25z
dCBUU291cmNlTG9jJiBsaW5lKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0U3RydWN0KFRT
dHJpbmcmICwgVEludGVybVR5cGVkKiwgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1U
eXBlZCogYWRkSW5kZXhFeHByZXNzaW9uKFRJbnRlcm1UeXBlZCAqYmFzZUV4cHJlc3Npb24sIGNv
bnN0IFRTb3VyY2VMb2MmIGxvY2F0aW9uLCBUSW50ZXJtVHlwZWQgKmluZGV4RXhwcmVzc2lvbik7
CisKKyAgICAvLyBQZXJmb3JtcyBhbiBlcnJvciBjaGVjayBmb3IgZW1iZWRkZWQgc3RydWN0IGRl
Y2xhcmF0aW9ucy4KKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgYW4gZXJyb3Igd2FzIHJhaXNlZCBk
dWUgdG8gdGhlIGRlY2xhcmF0aW9uIG9mCisgICAgLy8gdGhpcyBzdHJ1Y3QuCisgICAgYm9vbCBl
bnRlclN0cnVjdERlY2xhcmF0aW9uKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJp
bmcmIGlkZW50aWZpZXIpOworICAgIHZvaWQgZXhpdFN0cnVjdERlY2xhcmF0aW9uKCk7CisKKyAg
ICBib29sIHN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNv
bnN0IFRGaWVsZCYgZmllbGQpOworfTsKKworaW50IFBhUGFyc2VTdHJpbmdzKHNpemVfdCBjb3Vu
dCwgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nW10sIGNvbnN0IGludCBsZW5ndGhbXSwKKyAgICAg
ICAgICAgICAgICAgICBUUGFyc2VDb250ZXh0KiBjb250ZXh0KTsKKworI2VuZGlmIC8vIF9QQVJT
RVJfSEVMUEVSX0lOQ0xVREVEXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL1BhcnNlSGVscGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDE2MDAgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0y
MDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1
ZGUgImNvbXBpbGVyL1BhcnNlSGVscGVyLmgiCi0KLSNpbmNsdWRlIDxzdGRhcmcuaD4KLSNpbmNs
dWRlIDxzdGRpby5oPgotCi0jaW5jbHVkZSAiY29tcGlsZXIvZ2xzbGFuZy5oIgotI2luY2x1ZGUg
ImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Tb3VyY2VMb2NhdGlvbi5oIgotCi0vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LwotLy8KLS8vIFN1Yi0gdmVjdG9yIGFuZCBtYXRyaXggZmllbGRzCi0vLwotLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCi0KLS8vCi0vLyBMb29rIGF0IGEgJy4nIGZpZWxkIHNlbGVjdG9yIHN0cmluZyBhbmQgY2hh
bmdlIGl0IGludG8gb2Zmc2V0cwotLy8gZm9yIGEgdmVjdG9yLgotLy8KLWJvb2wgVFBhcnNlQ29u
dGV4dDo6cGFyc2VWZWN0b3JGaWVsZHMoY29uc3QgVFN0cmluZyYgY29tcFN0cmluZywgaW50IHZl
Y1NpemUsIFRWZWN0b3JGaWVsZHMmIGZpZWxkcywgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKLXsK
LSAgICBmaWVsZHMubnVtID0gKGludCkgY29tcFN0cmluZy5zaXplKCk7Ci0gICAgaWYgKGZpZWxk
cy5udW0gPiA0KSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJpbGxlZ2FsIHZlY3RvciBmaWVsZCBz
ZWxlY3Rpb24iLCBjb21wU3RyaW5nLmNfc3RyKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgZW51bSB7Ci0gICAgICAgIGV4eXp3LAotICAgICAgICBlcmdiYSwKLSAgICAg
ICAgZXN0cHEKLSAgICB9IGZpZWxkU2V0WzRdOwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBm
aWVsZHMubnVtOyArK2kpIHsKLSAgICAgICAgc3dpdGNoIChjb21wU3RyaW5nW2ldKSAgewotICAg
ICAgICBjYXNlICd4JzogCi0gICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1tpXSA9IDA7Ci0gICAg
ICAgICAgICBmaWVsZFNldFtpXSA9IGV4eXp3OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgJ3InOiAKLSAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzW2ldID0gMDsKLSAgICAgICAg
ICAgIGZpZWxkU2V0W2ldID0gZXJnYmE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSAncyc6Ci0gICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1tpXSA9IDA7Ci0gICAgICAgICAgICBm
aWVsZFNldFtpXSA9IGVzdHBxOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3kn
OiAKLSAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzW2ldID0gMTsKLSAgICAgICAgICAgIGZpZWxk
U2V0W2ldID0gZXh5enc7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnZyc6IAot
ICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbaV0gPSAxOwotICAgICAgICAgICAgZmllbGRTZXRb
aV0gPSBlcmdiYTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICd0JzoKLSAgICAg
ICAgICAgIGZpZWxkcy5vZmZzZXRzW2ldID0gMTsKLSAgICAgICAgICAgIGZpZWxkU2V0W2ldID0g
ZXN0cHE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAneic6IAotICAgICAgICAg
ICAgZmllbGRzLm9mZnNldHNbaV0gPSAyOwotICAgICAgICAgICAgZmllbGRTZXRbaV0gPSBleHl6
dzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICdiJzogCi0gICAgICAgICAgICBm
aWVsZHMub2Zmc2V0c1tpXSA9IDI7Ci0gICAgICAgICAgICBmaWVsZFNldFtpXSA9IGVyZ2JhOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3AnOgotICAgICAgICAgICAgZmllbGRz
Lm9mZnNldHNbaV0gPSAyOwotICAgICAgICAgICAgZmllbGRTZXRbaV0gPSBlc3RwcTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAKLSAgICAgICAgY2FzZSAndyc6IAotICAgICAgICAgICAg
ZmllbGRzLm9mZnNldHNbaV0gPSAzOwotICAgICAgICAgICAgZmllbGRTZXRbaV0gPSBleHl6dzsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICdhJzogCi0gICAgICAgICAgICBmaWVs
ZHMub2Zmc2V0c1tpXSA9IDM7Ci0gICAgICAgICAgICBmaWVsZFNldFtpXSA9IGVyZ2JhOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3EnOgotICAgICAgICAgICAgZmllbGRzLm9m
ZnNldHNbaV0gPSAzOwotICAgICAgICAgICAgZmllbGRTZXRbaV0gPSBlc3RwcTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgZXJyb3IobGluZSwgImls
bGVnYWwgdmVjdG9yIGZpZWxkIHNlbGVjdGlvbiIsIGNvbXBTdHJpbmcuY19zdHIoKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGZpZWxkcy5udW07ICsraSkgewotICAgICAgICBpZiAoZmllbGRzLm9mZnNldHNb
aV0gPj0gdmVjU2l6ZSkgewotICAgICAgICAgICAgZXJyb3IobGluZSwgInZlY3RvciBmaWVsZCBz
ZWxlY3Rpb24gb3V0IG9mIHJhbmdlIiwgIGNvbXBTdHJpbmcuY19zdHIoKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaSA+IDApIHsKLSAgICAg
ICAgICAgIGlmIChmaWVsZFNldFtpXSAhPSBmaWVsZFNldFtpLTFdKSB7Ci0gICAgICAgICAgICAg
ICAgZXJyb3IobGluZSwgImlsbGVnYWwgLSB2ZWN0b3IgY29tcG9uZW50IGZpZWxkcyBub3QgZnJv
bSB0aGUgc2FtZSBzZXQiLCBjb21wU3RyaW5nLmNfc3RyKCkpOwotICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVy
biB0cnVlOwotfQotCi0KLS8vCi0vLyBMb29rIGF0IGEgJy4nIGZpZWxkIHNlbGVjdG9yIHN0cmlu
ZyBhbmQgY2hhbmdlIGl0IGludG8gb2Zmc2V0cwotLy8gZm9yIGEgbWF0cml4LgotLy8KLWJvb2wg
VFBhcnNlQ29udGV4dDo6cGFyc2VNYXRyaXhGaWVsZHMoY29uc3QgVFN0cmluZyYgY29tcFN0cmlu
ZywgaW50IG1hdFNpemUsIFRNYXRyaXhGaWVsZHMmIGZpZWxkcywgY29uc3QgVFNvdXJjZUxvYyYg
bGluZSkKLXsKLSAgICBmaWVsZHMud2hvbGVSb3cgPSBmYWxzZTsKLSAgICBmaWVsZHMud2hvbGVD
b2wgPSBmYWxzZTsKLSAgICBmaWVsZHMucm93ID0gLTE7Ci0gICAgZmllbGRzLmNvbCA9IC0xOwot
Ci0gICAgaWYgKGNvbXBTdHJpbmcuc2l6ZSgpICE9IDIpIHsKLSAgICAgICAgZXJyb3IobGluZSwg
ImlsbGVnYWwgbGVuZ3RoIG9mIG1hdHJpeCBmaWVsZCBzZWxlY3Rpb24iLCBjb21wU3RyaW5nLmNf
c3RyKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKGNvbXBTdHJp
bmdbMF0gPT0gJ18nKSB7Ci0gICAgICAgIGlmIChjb21wU3RyaW5nWzFdIDwgJzAnIHx8IGNvbXBT
dHJpbmdbMV0gPiAnMycpIHsKLSAgICAgICAgICAgIGVycm9yKGxpbmUsICJpbGxlZ2FsIG1hdHJp
eCBmaWVsZCBzZWxlY3Rpb24iLCBjb21wU3RyaW5nLmNfc3RyKCkpOwotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGZpZWxkcy53aG9sZUNvbCA9IHRydWU7Ci0g
ICAgICAgIGZpZWxkcy5jb2wgPSBjb21wU3RyaW5nWzFdIC0gJzAnOwotICAgIH0gZWxzZSBpZiAo
Y29tcFN0cmluZ1sxXSA9PSAnXycpIHsKLSAgICAgICAgaWYgKGNvbXBTdHJpbmdbMF0gPCAnMCcg
fHwgY29tcFN0cmluZ1swXSA+ICczJykgewotICAgICAgICAgICAgZXJyb3IobGluZSwgImlsbGVn
YWwgbWF0cml4IGZpZWxkIHNlbGVjdGlvbiIsIGNvbXBTdHJpbmcuY19zdHIoKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgZmllbGRzLndob2xlUm93ID0g
dHJ1ZTsKLSAgICAgICAgZmllbGRzLnJvdyA9IGNvbXBTdHJpbmdbMF0gLSAnMCc7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgaWYgKGNvbXBTdHJpbmdbMF0gPCAnMCcgfHwgY29tcFN0cmluZ1swXSA+
ICczJyB8fAotICAgICAgICAgICAgY29tcFN0cmluZ1sxXSA8ICcwJyB8fCBjb21wU3RyaW5nWzFd
ID4gJzMnKSB7Ci0gICAgICAgICAgICBlcnJvcihsaW5lLCAiaWxsZWdhbCBtYXRyaXggZmllbGQg
c2VsZWN0aW9uIiwgY29tcFN0cmluZy5jX3N0cigpKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgfQotICAgICAgICBmaWVsZHMucm93ID0gY29tcFN0cmluZ1swXSAtICcwJzsK
LSAgICAgICAgZmllbGRzLmNvbCA9IGNvbXBTdHJpbmdbMV0gLSAnMCc7Ci0gICAgfQotCi0gICAg
aWYgKGZpZWxkcy5yb3cgPj0gbWF0U2l6ZSB8fCBmaWVsZHMuY29sID49IG1hdFNpemUpIHsKLSAg
ICAgICAgZXJyb3IobGluZSwgIm1hdHJpeCBmaWVsZCBzZWxlY3Rpb24gb3V0IG9mIHJhbmdlIiwg
Y29tcFN0cmluZy5jX3N0cigpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAg
IHJldHVybiB0cnVlOwotfQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIEVycm9ycwotLy8KLS8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwotCi0vLwotLy8gVHJhY2sgd2hldGhlciBlcnJvcnMgaGF2ZSBvY2N1cnJl
ZC4KLS8vCi12b2lkIFRQYXJzZUNvbnRleHQ6OnJlY292ZXIoKQotewotfQotCi0vLwotLy8gVXNl
ZCBieSBmbGV4L2Jpc29uIHRvIG91dHB1dCBhbGwgc3ludGF4IGFuZCBwYXJzaW5nIGVycm9ycy4K
LS8vCi12b2lkIFRQYXJzZUNvbnRleHQ6OmVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxvYywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmVhc29uLCBjb25zdCBjaGFyKiB0
b2tlbiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4dHJhSW5mbykK
LXsKLSAgICBwcDo6U291cmNlTG9jYXRpb24gc3JjTG9jOwotICAgIHNyY0xvYy5maWxlID0gbG9j
LmZpcnN0X2ZpbGU7Ci0gICAgc3JjTG9jLmxpbmUgPSBsb2MuZmlyc3RfbGluZTsKLSAgICBkaWFn
bm9zdGljcy53cml0ZUluZm8ocHA6OkRpYWdub3N0aWNzOjpFUlJPUiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3JjTG9jLCByZWFzb24sIHRva2VuLCBleHRyYUluZm8pOwotCi19Ci0KLXZv
aWQgVFBhcnNlQ29udGV4dDo6d2FybmluZyhjb25zdCBUU291cmNlTG9jJiBsb2MsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmVhc29uLCBjb25zdCBjaGFyKiB0b2tl
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHRyYUluZm8pIHsK
LSAgICBwcDo6U291cmNlTG9jYXRpb24gc3JjTG9jOwotICAgIHNyY0xvYy5maWxlID0gbG9jLmZp
cnN0X2ZpbGU7Ci0gICAgc3JjTG9jLmxpbmUgPSBsb2MuZmlyc3RfbGluZTsKLSAgICBkaWFnbm9z
dGljcy53cml0ZUluZm8ocHA6OkRpYWdub3N0aWNzOjpXQVJOSU5HLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBzcmNMb2MsIHJlYXNvbiwgdG9rZW4sIGV4dHJhSW5mbyk7Ci19Ci0KLXZvaWQg
VFBhcnNlQ29udGV4dDo6dHJhY2UoY29uc3QgY2hhciogc3RyKQotewotICAgIGRpYWdub3N0aWNz
LndyaXRlRGVidWcoc3RyKTsKLX0KLQotLy8KLS8vIFNhbWUgZXJyb3IgbWVzc2FnZSBmb3IgYWxs
IHBsYWNlcyBhc3NpZ25tZW50cyBkb24ndCB3b3JrLgotLy8KLXZvaWQgVFBhcnNlQ29udGV4dDo6
YXNzaWduRXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJp
bmcgbGVmdCwgVFN0cmluZyByaWdodCkKLXsKLSAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUlu
Zm9TdHJlYW07Ci0gICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJjYW5ub3QgY29udmVydCBmcm9tICci
IDw8IHJpZ2h0IDw8ICInIHRvICciIDw8IGxlZnQgPDwgIiciOwotICAgIHN0ZDo6c3RyaW5nIGV4
dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICBlcnJvcihsaW5lLCAiIiwgb3As
IGV4dHJhSW5mby5jX3N0cigpKTsKLX0KLQotLy8KLS8vIFNhbWUgZXJyb3IgbWVzc2FnZSBmb3Ig
YWxsIHBsYWNlcyB1bmFyeSBvcGVyYXRpb25zIGRvbid0IHdvcmsuCi0vLwotdm9pZCBUUGFyc2VD
b250ZXh0Ojp1bmFyeU9wRXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hhciog
b3AsIFRTdHJpbmcgb3BlcmFuZCkKLXsKLSAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9T
dHJlYW07Ci0gICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJubyBvcGVyYXRpb24gJyIgPDwgb3AgPDwg
IicgZXhpc3RzIHRoYXQgdGFrZXMgYW4gb3BlcmFuZCBvZiB0eXBlICIgPDwgb3BlcmFuZCAKLSAg
ICAgICAgICAgICAgICAgICAgPDwgIiAob3IgdGhlcmUgaXMgbm8gYWNjZXB0YWJsZSBjb252ZXJz
aW9uKSI7Ci0gICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigp
OwotICAgIGVycm9yKGxpbmUsICIgd3Jvbmcgb3BlcmFuZCB0eXBlIiwgb3AsIGV4dHJhSW5mby5j
X3N0cigpKTsKLX0KLQotLy8KLS8vIFNhbWUgZXJyb3IgbWVzc2FnZSBmb3IgYWxsIGJpbmFyeSBv
cGVyYXRpb25zIGRvbid0IHdvcmsuCi0vLwotdm9pZCBUUGFyc2VDb250ZXh0OjpiaW5hcnlPcEVy
cm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIGxlZnQs
IFRTdHJpbmcgcmlnaHQpCi17Ci0gICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFt
OwotICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAibm8gb3BlcmF0aW9uICciIDw8IG9wIDw8ICInIGV4
aXN0cyB0aGF0IHRha2VzIGEgbGVmdC1oYW5kIG9wZXJhbmQgb2YgdHlwZSAnIiA8PCBsZWZ0IAot
ICAgICAgICAgICAgICAgICAgICA8PCAiJyBhbmQgYSByaWdodCBvcGVyYW5kIG9mIHR5cGUgJyIg
PDwgcmlnaHQgPDwgIicgKG9yIHRoZXJlIGlzIG5vIGFjY2VwdGFibGUgY29udmVyc2lvbikiOwot
ICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICBl
cnJvcihsaW5lLCAiIHdyb25nIG9wZXJhbmQgdHlwZXMgIiwgb3AsIGV4dHJhSW5mby5jX3N0cigp
KTsgCi19Ci0KLWJvb2wgVFBhcnNlQ29udGV4dDo6cHJlY2lzaW9uRXJyb3JDaGVjayhjb25zdCBU
U291cmNlTG9jJiBsaW5lLCBUUHJlY2lzaW9uIHByZWNpc2lvbiwgVEJhc2ljVHlwZSB0eXBlKXsK
LSAgICBpZiAoIWNoZWNrc1ByZWNpc2lvbkVycm9ycykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHN3aXRjaCggdHlwZSApewotICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgIGlmKCBwcmVj
aXNpb24gPT0gRWJwVW5kZWZpbmVkICl7Ci0gICAgICAgICAgICBlcnJvciggbGluZSwgIk5vIHBy
ZWNpc2lvbiBzcGVjaWZpZWQgZm9yIChmbG9hdCkiLCAiIiApOwotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFYnRJbnQ6Ci0gICAg
ICAgIGlmKCBwcmVjaXNpb24gPT0gRWJwVW5kZWZpbmVkICl7Ci0gICAgICAgICAgICBlcnJvcigg
bGluZSwgIk5vIHByZWNpc2lvbiBzcGVjaWZpZWQgKGludCkiLCAiIiApOwotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLS8vCi0v
LyBCb3RoIHRlc3QgYW5kIGlmIG5lY2Vzc2FyeSwgc3BpdCBvdXQgYW4gZXJyb3IsIHRvIHNlZSBp
ZiB0aGUgbm9kZSBpcyByZWFsbHkKLS8vIGFuIGwtdmFsdWUgdGhhdCBjYW4gYmUgb3BlcmF0ZWQg
b24gdGhpcyB3YXkuCi0vLwotLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB3YXMgYW4gZXJyb3IuCi0v
LwotYm9vbCBUUGFyc2VDb250ZXh0OjpsVmFsdWVFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2Mm
IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUSW50ZXJtVHlwZWQqIG5vZGUpCi17Ci0gICAgVEludGVy
bVN5bWJvbCogc3ltTm9kZSA9IG5vZGUtPmdldEFzU3ltYm9sTm9kZSgpOwotICAgIFRJbnRlcm1C
aW5hcnkqIGJpbmFyeU5vZGUgPSBub2RlLT5nZXRBc0JpbmFyeU5vZGUoKTsKLQotICAgIGlmIChi
aW5hcnlOb2RlKSB7Ci0gICAgICAgIGJvb2wgZXJyb3JSZXR1cm47Ci0KLSAgICAgICAgc3dpdGNo
KGJpbmFyeU5vZGUtPmdldE9wKCkpIHsKLSAgICAgICAgY2FzZSBFT3BJbmRleERpcmVjdDoKLSAg
ICAgICAgY2FzZSBFT3BJbmRleEluZGlyZWN0OgotICAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0
U3RydWN0OgotICAgICAgICAgICAgcmV0dXJuIGxWYWx1ZUVycm9yQ2hlY2sobGluZSwgb3AsIGJp
bmFyeU5vZGUtPmdldExlZnQoKSk7Ci0gICAgICAgIGNhc2UgRU9wVmVjdG9yU3dpenpsZToKLSAg
ICAgICAgICAgIGVycm9yUmV0dXJuID0gbFZhbHVlRXJyb3JDaGVjayhsaW5lLCBvcCwgYmluYXJ5
Tm9kZS0+Z2V0TGVmdCgpKTsKLSAgICAgICAgICAgIGlmICghZXJyb3JSZXR1cm4pIHsKLSAgICAg
ICAgICAgICAgICBpbnQgb2Zmc2V0WzRdID0gezAsMCwwLDB9OwotCi0gICAgICAgICAgICAgICAg
VEludGVybVR5cGVkKiByaWdodE5vZGUgPSBiaW5hcnlOb2RlLT5nZXRSaWdodCgpOwotICAgICAg
ICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JOb2RlID0gcmlnaHROb2RlLT5nZXRBc0Fn
Z3JlZ2F0ZSgpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGZvciAoVEludGVy
bVNlcXVlbmNlOjppdGVyYXRvciBwID0gYWdnck5vZGUtPmdldFNlcXVlbmNlKCkuYmVnaW4oKTsg
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgIT0gYWdn
ck5vZGUtPmdldFNlcXVlbmNlKCkuZW5kKCk7IHArKykgewotICAgICAgICAgICAgICAgICAgICBp
bnQgdmFsdWUgPSAoKnApLT5nZXRBc1R5cGVkKCktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRJ
Q29uc3QoMCk7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNldFt2YWx1ZV0rKzsgICAgIAotICAg
ICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0W3ZhbHVlXSA+IDEpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGVycm9yKGxpbmUsICIgbC12YWx1ZSBvZiBzd2l6emxlIGNhbm5vdCBoYXZlIGR1
cGxpY2F0ZSBjb21wb25lbnRzIiwgb3ApOwotCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0gCi0KLSAgICAgICAgICAgIHJldHVybiBlcnJvclJldHVybjsKLSAgICAgICAgZGVm
YXVsdDogCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBlcnJvcihsaW5l
LCAiIGwtdmFsdWUgcmVxdWlyZWQiLCBvcCk7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotCi0KLSAgICBjb25zdCBjaGFyKiBzeW1ib2wgPSAwOwotICAgIGlmIChzeW1Ob2RlICE9IDAp
Ci0gICAgICAgIHN5bWJvbCA9IHN5bU5vZGUtPmdldFN5bWJvbCgpLmNfc3RyKCk7Ci0KLSAgICBj
b25zdCBjaGFyKiBtZXNzYWdlID0gMDsKLSAgICBzd2l0Y2ggKG5vZGUtPmdldFF1YWxpZmllcigp
KSB7Ci0gICAgY2FzZSBFdnFDb25zdDogICAgICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkg
YSBjb25zdCI7ICAgICAgICBicmVhazsKLSAgICBjYXNlIEV2cUNvbnN0UmVhZE9ubHk6ICBtZXNz
YWdlID0gImNhbid0IG1vZGlmeSBhIGNvbnN0IjsgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXZx
QXR0cmlidXRlOiAgICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGFuIGF0dHJpYnV0ZSI7ICAg
YnJlYWs7Ci0gICAgY2FzZSBFdnFVbmlmb3JtOiAgICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2Rp
ZnkgYSB1bmlmb3JtIjsgICAgICBicmVhazsKLSAgICBjYXNlIEV2cVZhcnlpbmdJbjogICAgICBt
ZXNzYWdlID0gImNhbid0IG1vZGlmeSBhIHZhcnlpbmciOyAgICAgIGJyZWFrOwotICAgIGNhc2Ug
RXZxRnJhZ0Nvb3JkOiAgICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGdsX0ZyYWdDb29yZCI7
ICAgYnJlYWs7Ci0gICAgY2FzZSBFdnFGcm9udEZhY2luZzogICAgbWVzc2FnZSA9ICJjYW4ndCBt
b2RpZnkgZ2xfRnJvbnRGYWNpbmciOyBicmVhazsKLSAgICBjYXNlIEV2cVBvaW50Q29vcmQ6ICAg
ICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBnbF9Qb2ludENvb3JkIjsgIGJyZWFrOwotICAgIGRl
ZmF1bHQ6Ci0KLSAgICAgICAgLy8KLSAgICAgICAgLy8gVHlwZSB0aGF0IGNhbid0IGJlIHdyaXR0
ZW4gdG8/Ci0gICAgICAgIC8vCi0gICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0QmFzaWNUeXBlKCkp
IHsKLSAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkQ6Ci0gICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1
YmU6Ci0gICAgICAgICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBhIHNhbXBsZXIiOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRWJ0Vm9pZDoKLSAgICAgICAgICAgIG1lc3Nh
Z2UgPSAiY2FuJ3QgbW9kaWZ5IHZvaWQiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRl
ZmF1bHQ6IAotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAo
bWVzc2FnZSA9PSAwICYmIGJpbmFyeU5vZGUgPT0gMCAmJiBzeW1Ob2RlID09IDApIHsKLSAgICAg
ICAgZXJyb3IobGluZSwgIiBsLXZhbHVlIHJlcXVpcmVkIiwgb3ApOwotCi0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLQotCi0gICAgLy8KLSAgICAvLyBFdmVyeXRoaW5nIGVsc2UgaXMgb2th
eSwgbm8gZXJyb3IuCi0gICAgLy8KLSAgICBpZiAobWVzc2FnZSA9PSAwKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICAvLwotICAgIC8vIElmIHdlIGdldCBoZXJlLCB3ZSBoYXZlIGFuIGVy
cm9yIGFuZCBhIG1lc3NhZ2UuCi0gICAgLy8KLSAgICBpZiAoc3ltTm9kZSkgewotICAgICAgICBz
dGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07Ci0gICAgICAgIGV4dHJhSW5mb1N0cmVh
bSA8PCAiXCIiIDw8IHN5bWJvbCA8PCAiXCIgKCIgPDwgbWVzc2FnZSA8PCAiKSI7Ci0gICAgICAg
IHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAg
ZXJyb3IobGluZSwgIiBsLXZhbHVlIHJlcXVpcmVkIiwgb3AsIGV4dHJhSW5mby5jX3N0cigpKTsK
LSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0
cmVhbTsKLSAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICIoIiA8PCBtZXNzYWdlIDw8ICIpIjsK
LSAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwot
ICAgICAgICBlcnJvcihsaW5lLCAiIGwtdmFsdWUgcmVxdWlyZWQiLCBvcCwgZXh0cmFJbmZvLmNf
c3RyKCkpOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi0vLwotLy8gQm90aCB0ZXN0
LCBhbmQgaWYgbmVjZXNzYXJ5IHNwaXQgb3V0IGFuIGVycm9yLCB0byBzZWUgaWYgdGhlIG5vZGUg
aXMgcmVhbGx5Ci0vLyBhIGNvbnN0YW50LgotLy8KLS8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgd2Fz
IGFuIGVycm9yLgotLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6Y29uc3RFcnJvckNoZWNrKFRJbnRl
cm1UeXBlZCogbm9kZSkKLXsKLSAgICBpZiAobm9kZS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29u
c3QpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGVycm9yKG5vZGUtPmdldExpbmUoKSwg
ImNvbnN0YW50IGV4cHJlc3Npb24gcmVxdWlyZWQiLCAiIik7Ci0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotLy8KLS8vIEJvdGggdGVzdCwgYW5kIGlmIG5lY2Vzc2FyeSBzcGl0IG91dCBhbiBlcnJv
ciwgdG8gc2VlIGlmIHRoZSBub2RlIGlzIHJlYWxseQotLy8gYW4gaW50ZWdlci4KLS8vCi0vLyBS
ZXR1cm5zIHRydWUgaWYgdGhlIHdhcyBhbiBlcnJvci4KLS8vCi1ib29sIFRQYXJzZUNvbnRleHQ6
OmludGVnZXJFcnJvckNoZWNrKFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgY2hhciogdG9rZW4p
Ci17Ci0gICAgaWYgKG5vZGUtPmdldEJhc2ljVHlwZSgpID09IEVidEludCAmJiBub2RlLT5nZXRO
b21pbmFsU2l6ZSgpID09IDEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGVycm9yKG5v
ZGUtPmdldExpbmUoKSwgImludGVnZXIgZXhwcmVzc2lvbiByZXF1aXJlZCIsIHRva2VuKTsKLQot
ICAgIHJldHVybiB0cnVlOwotfQotCi0vLwotLy8gQm90aCB0ZXN0LCBhbmQgaWYgbmVjZXNzYXJ5
IHNwaXQgb3V0IGFuIGVycm9yLCB0byBzZWUgaWYgd2UgYXJlIGN1cnJlbnRseQotLy8gZ2xvYmFs
bHkgc2NvcGVkLgotLy8KLS8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgd2FzIGFuIGVycm9yLgotLy8K
LWJvb2wgVFBhcnNlQ29udGV4dDo6Z2xvYmFsRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBs
aW5lLCBib29sIGdsb2JhbCwgY29uc3QgY2hhciogdG9rZW4pCi17Ci0gICAgaWYgKGdsb2JhbCkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZXJyb3IobGluZSwgIm9ubHkgYWxsb3dlZCBh
dCBnbG9iYWwgc2NvcGUiLCB0b2tlbik7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8KLS8v
IEZvciBub3csIGtlZXAgaXQgc2ltcGxlOiAgaWYgaXQgc3RhcnRzICJnbF8iLCBpdCdzIHJlc2Vy
dmVkLCBpbmRlcGVuZGVudAotLy8gb2Ygc2NvcGUuICBFeGNlcHQsIGlmIHRoZSBzeW1ib2wgdGFi
bGUgaXMgYXQgdGhlIGJ1aWx0LWluIHB1c2gtbGV2ZWwsCi0vLyB3aGljaCBpcyB3aGVuIHdlIGFy
ZSBwYXJzaW5nIGJ1aWx0LWlucy4KLS8vIEFsc28gY2hlY2tzIGZvciAid2ViZ2xfIiBhbmQgIl93
ZWJnbF8iIHJlc2VydmVkIGlkZW50aWZpZXJzIGlmIHBhcnNpbmcgYQotLy8gd2ViZ2wgc2hhZGVy
LgotLy8KLS8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCi0vLwotYm9vbCBU
UGFyc2VDb250ZXh0OjpyZXNlcnZlZEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwg
Y29uc3QgVFN0cmluZyYgaWRlbnRpZmllcikKLXsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogcmVz
ZXJ2ZWRFcnJNc2cgPSAicmVzZXJ2ZWQgYnVpbHQtaW4gbmFtZSI7Ci0gICAgaWYgKCFzeW1ib2xU
YWJsZS5hdEJ1aWx0SW5MZXZlbCgpKSB7Ci0gICAgICAgIGlmIChpZGVudGlmaWVyLmNvbXBhcmUo
MCwgMywgImdsXyIpID09IDApIHsKLSAgICAgICAgICAgIGVycm9yKGxpbmUsIHJlc2VydmVkRXJy
TXNnLCAiZ2xfIik7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAg
ICBpZiAoaXNXZWJHTEJhc2VkU3BlYyhzaGFkZXJTcGVjKSkgewotICAgICAgICAgICAgaWYgKGlk
ZW50aWZpZXIuY29tcGFyZSgwLCA2LCAid2ViZ2xfIikgPT0gMCkgewotICAgICAgICAgICAgICAg
IGVycm9yKGxpbmUsIHJlc2VydmVkRXJyTXNnLCAid2ViZ2xfIik7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaWRlbnRpZmllci5j
b21wYXJlKDAsIDcsICJfd2ViZ2xfIikgPT0gMCkgewotICAgICAgICAgICAgICAgIGVycm9yKGxp
bmUsIHJlc2VydmVkRXJyTXNnLCAiX3dlYmdsXyIpOwotICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHNoYWRlclNwZWMgPT0gU0hfQ1NT
X1NIQURFUlNfU1BFQyAmJiBpZGVudGlmaWVyLmNvbXBhcmUoMCwgNCwgImNzc18iKSA9PSAwKSB7
Ci0gICAgICAgICAgICAgICAgZXJyb3IobGluZSwgcmVzZXJ2ZWRFcnJNc2csICJjc3NfIik7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKGlkZW50aWZpZXIuZmluZCgiX18iKSAhPSBUU3RyaW5nOjpucG9zKSB7Ci0gICAg
ICAgICAgICBlcnJvcihsaW5lLCAiaWRlbnRpZmllcnMgY29udGFpbmluZyB0d28gY29uc2VjdXRp
dmUgdW5kZXJzY29yZXMgKF9fKSBhcmUgcmVzZXJ2ZWQgYXMgcG9zc2libGUgZnV0dXJlIGtleXdv
cmRzIiwgaWRlbnRpZmllci5jX3N0cigpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0vLwotLy8gTWFrZSBzdXJl
IHRoZXJlIGlzIGVub3VnaCBkYXRhIHByb3ZpZGVkIHRvIHRoZSBjb25zdHJ1Y3RvciB0byBidWls
ZAotLy8gc29tZXRoaW5nIG9mIHRoZSB0eXBlIG9mIHRoZSBjb25zdHJ1Y3Rvci4gIEFsc28gcmV0
dXJucyB0aGUgdHlwZSBvZgotLy8gdGhlIGNvbnN0cnVjdG9yLgotLy8KLS8vIFJldHVybnMgdHJ1
ZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgaW4gY29uc3RydWN0aW9uLgotLy8KLWJvb2wgVFBhcnNl
Q29udGV4dDo6Y29uc3RydWN0b3JFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRJ
bnRlcm1Ob2RlKiBub2RlLCBURnVuY3Rpb24mIGZ1bmN0aW9uLCBUT3BlcmF0b3Igb3AsIFRUeXBl
KiB0eXBlKQotewotICAgICp0eXBlID0gZnVuY3Rpb24uZ2V0UmV0dXJuVHlwZSgpOwotCi0gICAg
Ym9vbCBjb25zdHJ1Y3RpbmdNYXRyaXggPSBmYWxzZTsKLSAgICBzd2l0Y2gob3ApIHsKLSAgICBj
YXNlIEVPcENvbnN0cnVjdE1hdDI6Ci0gICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQzOgotICAgIGNh
c2UgRU9wQ29uc3RydWN0TWF0NDoKLSAgICAgICAgY29uc3RydWN0aW5nTWF0cml4ID0gdHJ1ZTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDogCi0gICAgICAgIGJyZWFrOwotICAgIH0KLQot
ICAgIC8vCi0gICAgLy8gTm90ZTogSXQncyBva2F5IHRvIGhhdmUgdG9vIG1hbnkgY29tcG9uZW50
cyBhdmFpbGFibGUsIGJ1dCBub3Qgb2theSB0byBoYXZlIHVudXNlZAotICAgIC8vIGFyZ3VtZW50
cy4gICdmdWxsJyB3aWxsIGdvIHRvIHRydWUgd2hlbiBlbm91Z2ggYXJncyBoYXZlIGJlZW4gc2Vl
bi4gIElmIHdlIGxvb3AKLSAgICAvLyBhZ2FpbiwgdGhlcmUgaXMgYW4gZXh0cmEgYXJndW1lbnQs
IHNvICdvdmVyZnVsbCcgd2lsbCBiZWNvbWUgdHJ1ZS4KLSAgICAvLwotCi0gICAgc2l6ZV90IHNp
emUgPSAwOwotICAgIGJvb2wgY29uc3RUeXBlID0gdHJ1ZTsKLSAgICBib29sIGZ1bGwgPSBmYWxz
ZTsKLSAgICBib29sIG92ZXJGdWxsID0gZmFsc2U7Ci0gICAgYm9vbCBtYXRyaXhJbk1hdHJpeCA9
IGZhbHNlOwotICAgIGJvb2wgYXJyYXlBcmcgPSBmYWxzZTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGZ1bmN0aW9uLmdldFBhcmFtQ291bnQoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFRQ
YXJhbWV0ZXImIHBhcmFtID0gZnVuY3Rpb24uZ2V0UGFyYW0oaSk7Ci0gICAgICAgIHNpemUgKz0g
cGFyYW0udHlwZS0+Z2V0T2JqZWN0U2l6ZSgpOwotICAgICAgICAKLSAgICAgICAgaWYgKGNvbnN0
cnVjdGluZ01hdHJpeCAmJiBwYXJhbS50eXBlLT5pc01hdHJpeCgpKQotICAgICAgICAgICAgbWF0
cml4SW5NYXRyaXggPSB0cnVlOwotICAgICAgICBpZiAoZnVsbCkKLSAgICAgICAgICAgIG92ZXJG
dWxsID0gdHJ1ZTsKLSAgICAgICAgaWYgKG9wICE9IEVPcENvbnN0cnVjdFN0cnVjdCAmJiAhdHlw
ZS0+aXNBcnJheSgpICYmIHNpemUgPj0gdHlwZS0+Z2V0T2JqZWN0U2l6ZSgpKQotICAgICAgICAg
ICAgZnVsbCA9IHRydWU7Ci0gICAgICAgIGlmIChwYXJhbS50eXBlLT5nZXRRdWFsaWZpZXIoKSAh
PSBFdnFDb25zdCkKLSAgICAgICAgICAgIGNvbnN0VHlwZSA9IGZhbHNlOwotICAgICAgICBpZiAo
cGFyYW0udHlwZS0+aXNBcnJheSgpKQotICAgICAgICAgICAgYXJyYXlBcmcgPSB0cnVlOwotICAg
IH0KLSAgICAKLSAgICBpZiAoY29uc3RUeXBlKQotICAgICAgICB0eXBlLT5zZXRRdWFsaWZpZXIo
RXZxQ29uc3QpOwotCi0gICAgaWYgKHR5cGUtPmlzQXJyYXkoKSAmJiBzdGF0aWNfY2FzdDxzaXpl
X3Q+KHR5cGUtPmdldEFycmF5U2l6ZSgpKSAhPSBmdW5jdGlvbi5nZXRQYXJhbUNvdW50KCkpIHsK
LSAgICAgICAgZXJyb3IobGluZSwgImFycmF5IGNvbnN0cnVjdG9yIG5lZWRzIG9uZSBhcmd1bWVu
dCBwZXIgYXJyYXkgZWxlbWVudCIsICJjb25zdHJ1Y3RvciIpOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0KLSAgICBpZiAoYXJyYXlBcmcgJiYgb3AgIT0gRU9wQ29uc3RydWN0U3RydWN0
KSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJjb25zdHJ1Y3RpbmcgZnJvbSBhIG5vbi1kZXJlZmVy
ZW5jZWQgYXJyYXkiLCAiY29uc3RydWN0b3IiKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotCi0gICAgaWYgKG1hdHJpeEluTWF0cml4ICYmICF0eXBlLT5pc0FycmF5KCkpIHsKLSAgICAg
ICAgaWYgKGZ1bmN0aW9uLmdldFBhcmFtQ291bnQoKSAhPSAxKSB7Ci0gICAgICAgICAgZXJyb3Io
bGluZSwgImNvbnN0cnVjdGluZyBtYXRyaXggZnJvbSBtYXRyaXggY2FuIG9ubHkgdGFrZSBvbmUg
YXJndW1lbnQiLCAiY29uc3RydWN0b3IiKTsKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIGlmIChvdmVyRnVsbCkgewotICAgICAgICBlcnJvcihsaW5lLCAi
dG9vIG1hbnkgYXJndW1lbnRzIiwgImNvbnN0cnVjdG9yIik7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLSAgICAKLSAgICBpZiAob3AgPT0gRU9wQ29uc3RydWN0U3RydWN0ICYmICF0eXBl
LT5pc0FycmF5KCkgJiYgaW50KHR5cGUtPmdldFN0cnVjdCgpLT5maWVsZHMoKS5zaXplKCkpICE9
IGZ1bmN0aW9uLmdldFBhcmFtQ291bnQoKSkgewotICAgICAgICBlcnJvcihsaW5lLCAiTnVtYmVy
IG9mIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMgZG9lcyBub3QgbWF0Y2ggdGhlIG51bWJlciBvZiBz
dHJ1Y3R1cmUgZmllbGRzIiwgImNvbnN0cnVjdG9yIik7Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KLQotICAgIGlmICghdHlwZS0+aXNNYXRyaXgoKSB8fCAhbWF0cml4SW5NYXRyaXgpIHsK
LSAgICAgICAgaWYgKChvcCAhPSBFT3BDb25zdHJ1Y3RTdHJ1Y3QgJiYgc2l6ZSAhPSAxICYmIHNp
emUgPCB0eXBlLT5nZXRPYmplY3RTaXplKCkpIHx8Ci0gICAgICAgICAgICAob3AgPT0gRU9wQ29u
c3RydWN0U3RydWN0ICYmIHNpemUgPCB0eXBlLT5nZXRPYmplY3RTaXplKCkpKSB7Ci0gICAgICAg
ICAgICBlcnJvcihsaW5lLCAibm90IGVub3VnaCBkYXRhIHByb3ZpZGVkIGZvciBjb25zdHJ1Y3Rp
b24iLCAiY29uc3RydWN0b3IiKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgVEludGVybVR5cGVkICp0eXBlZCA9IG5vZGUgPyBub2RlLT5nZXRBc1R5
cGVkKCkgOiAwOwotICAgIGlmICh0eXBlZCA9PSAwKSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJj
b25zdHJ1Y3RvciBhcmd1bWVudCBkb2VzIG5vdCBoYXZlIGEgdHlwZSIsICJjb25zdHJ1Y3RvciIp
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgaWYgKG9wICE9IEVPcENvbnN0cnVj
dFN0cnVjdCAmJiBJc1NhbXBsZXIodHlwZWQtPmdldEJhc2ljVHlwZSgpKSkgewotICAgICAgICBl
cnJvcihsaW5lLCAiY2Fubm90IGNvbnZlcnQgYSBzYW1wbGVyIiwgImNvbnN0cnVjdG9yIik7Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBpZiAodHlwZWQtPmdldEJhc2ljVHlwZSgp
ID09IEVidFZvaWQpIHsKLSAgICAgICAgZXJyb3IobGluZSwgImNhbm5vdCBjb252ZXJ0IGEgdm9p
ZCIsICJjb25zdHJ1Y3RvciIpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLS8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIHRvIHNlZSBpZiBhIHZv
aWQgdmFyaWFibGUgaGFzIGJlZW4gZGVjbGFyZWQgYW5kIHJhaXNlIGFuIGVycm9yIG1lc3NhZ2Ug
Zm9yIHN1Y2ggYSBjYXNlCi0vLwotLy8gcmV0dXJucyB0cnVlIGluIGNhc2Ugb2YgYW4gZXJyb3IK
LS8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OnZvaWRFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2Mm
IGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFRQdWJsaWNUeXBlJiBwdWJU
eXBlKQotewotICAgIGlmIChwdWJUeXBlLnR5cGUgPT0gRWJ0Vm9pZCkgewotICAgICAgICBlcnJv
cihsaW5lLCAiaWxsZWdhbCB1c2Ugb2YgdHlwZSAndm9pZCciLCBpZGVudGlmaWVyLmNfc3RyKCkp
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9IAotCi0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci0vLyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyB0byBzZWUgaWYgdGhlIG5vZGUgKGZvciB0aGUgZXhw
cmVzc2lvbikgY29udGFpbnMgYSBzY2FsYXIgYm9vbGVhbiBleHByZXNzaW9uIG9yIG5vdAotLy8K
LS8vIHJldHVybnMgdHJ1ZSBpbiBjYXNlIG9mIGFuIGVycm9yCi0vLwotYm9vbCBUUGFyc2VDb250
ZXh0Ojpib29sRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUSW50ZXJt
VHlwZWQqIHR5cGUpCi17Ci0gICAgaWYgKHR5cGUtPmdldEJhc2ljVHlwZSgpICE9IEVidEJvb2wg
fHwgdHlwZS0+aXNBcnJheSgpIHx8IHR5cGUtPmlzTWF0cml4KCkgfHwgdHlwZS0+aXNWZWN0b3Io
KSkgewotICAgICAgICBlcnJvcihsaW5lLCAiYm9vbGVhbiBleHByZXNzaW9uIGV4cGVjdGVkIiwg
IiIpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9IAotCi0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi0vLyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyB0byBzZWUgaWYgdGhlIG5vZGUgKGZvciB0aGUg
ZXhwcmVzc2lvbikgY29udGFpbnMgYSBzY2FsYXIgYm9vbGVhbiBleHByZXNzaW9uIG9yIG5vdAot
Ly8KLS8vIHJldHVybnMgdHJ1ZSBpbiBjYXNlIG9mIGFuIGVycm9yCi0vLwotYm9vbCBUUGFyc2VD
b250ZXh0Ojpib29sRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUUHVi
bGljVHlwZSYgcFR5cGUpCi17Ci0gICAgaWYgKHBUeXBlLnR5cGUgIT0gRWJ0Qm9vbCB8fCBwVHlw
ZS5hcnJheSB8fCBwVHlwZS5tYXRyaXggfHwgKHBUeXBlLnNpemUgPiAxKSkgewotICAgICAgICBl
cnJvcihsaW5lLCAiYm9vbGVhbiBleHByZXNzaW9uIGV4cGVjdGVkIiwgIiIpOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9IAotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFRQYXJz
ZUNvbnRleHQ6OnNhbXBsZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0
IFRQdWJsaWNUeXBlJiBwVHlwZSwgY29uc3QgY2hhciogcmVhc29uKQotewotICAgIGlmIChwVHlw
ZS50eXBlID09IEVidFN0cnVjdCkgewotICAgICAgICBpZiAoY29udGFpbnNTYW1wbGVyKCpwVHlw
ZS51c2VyRGVmKSkgewotICAgICAgICAgICAgZXJyb3IobGluZSwgcmVhc29uLCBnZXRCYXNpY1N0
cmluZyhwVHlwZS50eXBlKSwgIihzdHJ1Y3R1cmUgY29udGFpbnMgYSBzYW1wbGVyKSIpOwotICAg
ICAgICAKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSBlbHNlIGlmIChJc1NhbXBsZXIocFR5cGUudHlwZSkp
IHsKLSAgICAgICAgZXJyb3IobGluZSwgcmVhc29uLCBnZXRCYXNpY1N0cmluZyhwVHlwZS50eXBl
KSk7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi1ib29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlKQotewotICAgIGlmICgo
cFR5cGUucXVhbGlmaWVyID09IEV2cVZhcnlpbmdJbiB8fCBwVHlwZS5xdWFsaWZpZXIgPT0gRXZx
VmFyeWluZ091dCB8fCBwVHlwZS5xdWFsaWZpZXIgPT0gRXZxQXR0cmlidXRlKSAmJgotICAgICAg
ICBwVHlwZS50eXBlID09IEVidFN0cnVjdCkgewotICAgICAgICBlcnJvcihsaW5lLCAiY2Fubm90
IGJlIHVzZWQgd2l0aCBhIHN0cnVjdHVyZSIsIGdldFF1YWxpZmllclN0cmluZyhwVHlwZS5xdWFs
aWZpZXIpKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGlm
IChwVHlwZS5xdWFsaWZpZXIgIT0gRXZxVW5pZm9ybSAmJiBzYW1wbGVyRXJyb3JDaGVjayhsaW5l
LCBwVHlwZSwgInNhbXBsZXJzIG11c3QgYmUgdW5pZm9ybSIpKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBUUGFyc2VDb250ZXh0OjpwYXJhbWV0
ZXJTYW1wbGVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUXVhbGlmaWVyIHF1
YWxpZmllciwgY29uc3QgVFR5cGUmIHR5cGUpCi17Ci0gICAgaWYgKChxdWFsaWZpZXIgPT0gRXZx
T3V0IHx8IHF1YWxpZmllciA9PSBFdnFJbk91dCkgJiYgCi0gICAgICAgICAgICAgdHlwZS5nZXRC
YXNpY1R5cGUoKSAhPSBFYnRTdHJ1Y3QgJiYgSXNTYW1wbGVyKHR5cGUuZ2V0QmFzaWNUeXBlKCkp
KSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJzYW1wbGVycyBjYW5ub3QgYmUgb3V0cHV0IHBhcmFt
ZXRlcnMiLCB0eXBlLmdldEJhc2ljU3RyaW5nKCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgVFBhcnNlQ29udGV4dDo6Y29udGFp
bnNTYW1wbGVyKFRUeXBlJiB0eXBlKQotewotICAgIGlmIChJc1NhbXBsZXIodHlwZS5nZXRCYXNp
Y1R5cGUoKSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKHR5cGUuZ2V0QmFzaWNU
eXBlKCkgPT0gRWJ0U3RydWN0KSB7Ci0gICAgICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9
IHR5cGUuZ2V0U3RydWN0KCktPmZpZWxkcygpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKGNvbnRhaW5z
U2FtcGxlcigqZmllbGRzW2ldLT50eXBlKCkpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0vLwotLy8gRG8g
c2l6ZSBjaGVja2luZyBmb3IgYW4gYXJyYXkgdHlwZSdzIHNpemUuCi0vLwotLy8gUmV0dXJucyB0
cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KLS8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5
U2l6ZUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEludGVybVR5cGVkKiBleHBy
LCBpbnQmIHNpemUpCi17Ci0gICAgVEludGVybUNvbnN0YW50VW5pb24qIGNvbnN0YW50ID0gZXhw
ci0+Z2V0QXNDb25zdGFudFVuaW9uKCk7Ci0gICAgaWYgKGNvbnN0YW50ID09IDAgfHwgY29uc3Rh
bnQtPmdldEJhc2ljVHlwZSgpICE9IEVidEludCkgewotICAgICAgICBlcnJvcihsaW5lLCAiYXJy
YXkgc2l6ZSBtdXN0IGJlIGEgY29uc3RhbnQgaW50ZWdlciBleHByZXNzaW9uIiwgIiIpOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBzaXplID0gY29uc3RhbnQtPmdldElDb25z
dCgwKTsKLQotICAgIGlmIChzaXplIDw9IDApIHsKLSAgICAgICAgZXJyb3IobGluZSwgImFycmF5
IHNpemUgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIiLCAiIik7Ci0gICAgICAgIHNpemUgPSAx
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LS8vCi0vLyBTZWUgaWYgdGhpcyBxdWFsaWZpZXIgY2FuIGJlIGFuIGFycmF5LgotLy8KLS8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhbiBlcnJvci4KLS8vCi1ib29sIFRQYXJzZUNvbnRleHQ6
OmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUHVibGlj
VHlwZSB0eXBlKQotewotICAgIGlmICgodHlwZS5xdWFsaWZpZXIgPT0gRXZxQXR0cmlidXRlKSB8
fCAodHlwZS5xdWFsaWZpZXIgPT0gRXZxQ29uc3QpKSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJj
YW5ub3QgZGVjbGFyZSBhcnJheXMgb2YgdGhpcyBxdWFsaWZpZXIiLCBUVHlwZSh0eXBlKS5nZXRD
b21wbGV0ZVN0cmluZygpLmNfc3RyKCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLS8vCi0vLyBTZWUgaWYgdGhpcyB0eXBlIGNhbiBiZSBh
biBhcnJheS4KLS8vCi0vLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgaXMgYW4gZXJyb3IuCi0vLwot
Ym9vbCBUUGFyc2VDb250ZXh0OjphcnJheVR5cGVFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2Mm
IGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpCi17Ci0gICAgLy8KLSAgICAvLyBDYW4gdGhlIHR5cGUg
YmUgYW4gYXJyYXk/Ci0gICAgLy8KLSAgICBpZiAodHlwZS5hcnJheSkgewotICAgICAgICBlcnJv
cihsaW5lLCAiY2Fubm90IGRlY2xhcmUgYXJyYXlzIG9mIGFycmF5cyIsIFRUeXBlKHR5cGUpLmdl
dENvbXBsZXRlU3RyaW5nKCkuY19zdHIoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotLy8KLS8vIERvIGFsbCB0aGUgc2VtYW50aWMgY2hl
Y2tpbmcgZm9yIGRlY2xhcmluZyBhbiBhcnJheSwgd2l0aCBhbmQgCi0vLyB3aXRob3V0IGEgc2l6
ZSwgYW5kIG1ha2UgdGhlIHJpZ2h0IGNoYW5nZXMgdG8gdGhlIHN5bWJvbCB0YWJsZS4KLS8vCi0v
LyBzaXplID09IDAgbWVhbnMgbm8gc3BlY2lmaWVkIHNpemUuCi0vLwotLy8gUmV0dXJucyB0cnVl
IGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KLS8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5RXJy
b3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVi
bGljVHlwZSB0eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSkKLXsKLSAgICAvLwotICAgIC8vIERv
bid0IGNoZWNrIGZvciByZXNlcnZlZCB3b3JkIHVzZSB1bnRpbCBhZnRlciB3ZSBrbm93IGl0J3Mg
bm90IGluIHRoZSBzeW1ib2wgdGFibGUsCi0gICAgLy8gYmVjYXVzZSByZXNlcnZlZCBhcnJheXMg
Y2FuIGJlIHJlZGVjbGFyZWQuCi0gICAgLy8KLQotICAgIGJvb2wgYnVpbHRJbiA9IGZhbHNlOyAK
LSAgICBib29sIHNhbWVTY29wZSA9IGZhbHNlOwotICAgIFRTeW1ib2wqIHN5bWJvbCA9IHN5bWJv
bFRhYmxlLmZpbmQoaWRlbnRpZmllciwgJmJ1aWx0SW4sICZzYW1lU2NvcGUpOwotICAgIGlmIChz
eW1ib2wgPT0gMCB8fCAhc2FtZVNjb3BlKSB7Ci0gICAgICAgIGlmIChyZXNlcnZlZEVycm9yQ2hl
Y2sobGluZSwgaWRlbnRpZmllcikpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
Ci0gICAgICAgIHZhcmlhYmxlID0gbmV3IFRWYXJpYWJsZSgmaWRlbnRpZmllciwgVFR5cGUodHlw
ZSkpOwotCi0gICAgICAgIGlmICh0eXBlLmFycmF5U2l6ZSkKLSAgICAgICAgICAgIHZhcmlhYmxl
LT5nZXRUeXBlKCkuc2V0QXJyYXlTaXplKHR5cGUuYXJyYXlTaXplKTsKLQotICAgICAgICBpZiAo
ISBzeW1ib2xUYWJsZS5pbnNlcnQoKnZhcmlhYmxlKSkgewotICAgICAgICAgICAgZGVsZXRlIHZh
cmlhYmxlOwotICAgICAgICAgICAgZXJyb3IobGluZSwgIklOVEVSTkFMIEVSUk9SIGluc2VydGlu
ZyBuZXcgc3ltYm9sIiwgaWRlbnRpZmllci5jX3N0cigpKTsKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCEgc3ltYm9sLT5pc1Zh
cmlhYmxlKCkpIHsKLSAgICAgICAgICAgIGVycm9yKGxpbmUsICJ2YXJpYWJsZSBleHBlY3RlZCIs
IGlkZW50aWZpZXIuY19zdHIoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
fQotCi0gICAgICAgIHZhcmlhYmxlID0gc3RhdGljX2Nhc3Q8VFZhcmlhYmxlKj4oc3ltYm9sKTsK
LSAgICAgICAgaWYgKCEgdmFyaWFibGUtPmdldFR5cGUoKS5pc0FycmF5KCkpIHsKLSAgICAgICAg
ICAgIGVycm9yKGxpbmUsICJyZWRlY2xhcmluZyBub24tYXJyYXkgYXMgYXJyYXkiLCBpZGVudGlm
aWVyLmNfc3RyKCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkgPiAwKSB7Ci0gICAgICAg
ICAgICBlcnJvcihsaW5lLCAicmVkZWNsYXJhdGlvbiBvZiBhcnJheSB3aXRoIHNpemUiLCBpZGVu
dGlmaWVyLmNfc3RyKCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIGlmICghIHZhcmlhYmxlLT5nZXRUeXBlKCkuc2FtZUVsZW1lbnRUeXBl
KFRUeXBlKHR5cGUpKSkgewotICAgICAgICAgICAgZXJyb3IobGluZSwgInJlZGVjbGFyYXRpb24g
b2YgYXJyYXkgd2l0aCBhIGRpZmZlcmVudCB0eXBlIiwgaWRlbnRpZmllci5jX3N0cigpKTsKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHR5cGUuYXJy
YXlTaXplKQotICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKS5zZXRBcnJheVNpemUodHlw
ZS5hcnJheVNpemUpOwotICAgIH0gCi0KLSAgICBpZiAodm9pZEVycm9yQ2hlY2sobGluZSwgaWRl
bnRpZmllciwgdHlwZSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi0vLwotLy8gRW5mb3JjZSBub24taW5pdGlhbGl6ZXIgdHlwZS9xdWFsaWZpZXIgcnVs
ZXMuCi0vLwotLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KLS8vCi1ib29s
IFRQYXJzZUNvbnRleHQ6Om5vbkluaXRDb25zdEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYg
bGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHR5cGUsIGJvb2wgYXJyYXkp
Ci17Ci0gICAgaWYgKHR5cGUucXVhbGlmaWVyID09IEV2cUNvbnN0KQotICAgIHsKLSAgICAgICAg
Ly8gTWFrZSB0aGUgcXVhbGlmaWVyIG1ha2Ugc2Vuc2UuCi0gICAgICAgIHR5cGUucXVhbGlmaWVy
ID0gRXZxVGVtcG9yYXJ5OwotICAgICAgICAKLSAgICAgICAgaWYgKGFycmF5KQotICAgICAgICB7
Ci0gICAgICAgICAgICBlcnJvcihsaW5lLCAiYXJyYXlzIG1heSBub3QgYmUgZGVjbGFyZWQgY29u
c3RhbnQgc2luY2UgdGhleSBjYW5ub3QgYmUgaW5pdGlhbGl6ZWQiLCBpZGVudGlmaWVyLmNfc3Ry
KCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHR5cGUuaXNTdHJ1Y3R1cmVDb250YWlu
aW5nQXJyYXlzKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVycm9yKGxpbmUsICJzdHJ1Y3R1
cmVzIGNvbnRhaW5pbmcgYXJyYXlzIG1heSBub3QgYmUgZGVjbGFyZWQgY29uc3RhbnQgc2luY2Ug
dGhleSBjYW5ub3QgYmUgaW5pdGlhbGl6ZWQiLCBpZGVudGlmaWVyLmNfc3RyKCkpOwotICAgICAg
ICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgZXJyb3IobGluZSwgInZh
cmlhYmxlcyB3aXRoIHF1YWxpZmllciAnY29uc3QnIG11c3QgYmUgaW5pdGlhbGl6ZWQiLCBpZGVu
dGlmaWVyLmNfc3RyKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0vLwotLy8gRG8gc2VtYW50aWMgY2hlY2tpbmcg
Zm9yIGEgdmFyaWFibGUgZGVjbGFyYXRpb24gdGhhdCBoYXMgbm8gaW5pdGlhbGl6ZXIsCi0vLyBh
bmQgdXBkYXRlIHRoZSBzeW1ib2wgdGFibGUuCi0vLwotLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJl
IHdhcyBhbiBlcnJvci4KLS8vCi1ib29sIFRQYXJzZUNvbnRleHQ6Om5vbkluaXRFcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBl
JiB0eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSkKLXsKLSAgICBpZiAocmVzZXJ2ZWRFcnJvckNo
ZWNrKGxpbmUsIGlkZW50aWZpZXIpKQotICAgICAgICByZWNvdmVyKCk7Ci0KLSAgICB2YXJpYWJs
ZSA9IG5ldyBUVmFyaWFibGUoJmlkZW50aWZpZXIsIFRUeXBlKHR5cGUpKTsKLQotICAgIGlmICgh
IHN5bWJvbFRhYmxlLmluc2VydCgqdmFyaWFibGUpKSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJy
ZWRlZmluaXRpb24iLCB2YXJpYWJsZS0+Z2V0TmFtZSgpLmNfc3RyKCkpOwotICAgICAgICBkZWxl
dGUgdmFyaWFibGU7Ci0gICAgICAgIHZhcmlhYmxlID0gMDsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotCi0gICAgaWYgKHZvaWRFcnJvckNoZWNrKGxpbmUsIGlkZW50aWZpZXIsIHR5cGUp
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBU
UGFyc2VDb250ZXh0OjpwYXJhbUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFF1
YWxpZmllciBxdWFsaWZpZXIsIFRRdWFsaWZpZXIgcGFyYW1RdWFsaWZpZXIsIFRUeXBlKiB0eXBl
KQoteyAgICAKLSAgICBpZiAocXVhbGlmaWVyICE9IEV2cUNvbnN0ICYmIHF1YWxpZmllciAhPSBF
dnFUZW1wb3JhcnkpIHsKLSAgICAgICAgZXJyb3IobGluZSwgInF1YWxpZmllciBub3QgYWxsb3dl
ZCBvbiBmdW5jdGlvbiBwYXJhbWV0ZXIiLCBnZXRRdWFsaWZpZXJTdHJpbmcocXVhbGlmaWVyKSk7
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBpZiAocXVhbGlmaWVyID09IEV2cUNv
bnN0ICYmIHBhcmFtUXVhbGlmaWVyICE9IEV2cUluKSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJx
dWFsaWZpZXIgbm90IGFsbG93ZWQgd2l0aCAiLCBnZXRRdWFsaWZpZXJTdHJpbmcocXVhbGlmaWVy
KSwgZ2V0UXVhbGlmaWVyU3RyaW5nKHBhcmFtUXVhbGlmaWVyKSk7Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLQotICAgIGlmIChxdWFsaWZpZXIgPT0gRXZxQ29uc3QpCi0gICAgICAgIHR5
cGUtPnNldFF1YWxpZmllcihFdnFDb25zdFJlYWRPbmx5KTsKLSAgICBlbHNlCi0gICAgICAgIHR5
cGUtPnNldFF1YWxpZmllcihwYXJhbVF1YWxpZmllcik7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KLWJvb2wgVFBhcnNlQ29udGV4dDo6ZXh0ZW5zaW9uRXJyb3JDaGVjayhjb25zdCBUU291cmNl
TG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJiBleHRlbnNpb24pCi17Ci0gICAgY29uc3QgVEV4dGVu
c2lvbkJlaGF2aW9yJiBleHRCZWhhdmlvciA9IGV4dGVuc2lvbkJlaGF2aW9yKCk7Ci0gICAgVEV4
dGVuc2lvbkJlaGF2aW9yOjpjb25zdF9pdGVyYXRvciBpdGVyID0gZXh0QmVoYXZpb3IuZmluZChl
eHRlbnNpb24uY19zdHIoKSk7Ci0gICAgaWYgKGl0ZXIgPT0gZXh0QmVoYXZpb3IuZW5kKCkpIHsK
LSAgICAgICAgZXJyb3IobGluZSwgImV4dGVuc2lvbiIsIGV4dGVuc2lvbi5jX3N0cigpLCAiaXMg
bm90IHN1cHBvcnRlZCIpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgLy8gSW4g
R0xTTCBFUywgYW4gZXh0ZW5zaW9uJ3MgZGVmYXVsdCBiZWhhdmlvciBpcyAiZGlzYWJsZSIuCi0g
ICAgaWYgKGl0ZXItPnNlY29uZCA9PSBFQmhEaXNhYmxlIHx8IGl0ZXItPnNlY29uZCA9PSBFQmhV
bmRlZmluZWQpIHsKLSAgICAgICAgZXJyb3IobGluZSwgImV4dGVuc2lvbiIsIGV4dGVuc2lvbi5j
X3N0cigpLCAiaXMgZGlzYWJsZWQiKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAg
IGlmIChpdGVyLT5zZWNvbmQgPT0gRUJoV2FybikgewotICAgICAgICB3YXJuaW5nKGxpbmUsICJl
eHRlbnNpb24iLCBleHRlbnNpb24uY19zdHIoKSwgImlzIGJlaW5nIHVzZWQiKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBUUGFy
c2VDb250ZXh0OjpzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBjaGFyKiBleHRlbnNpb24pCi17Ci0g
ICAgY29uc3QgVEV4dGVuc2lvbkJlaGF2aW9yJiBleHRiZWhhdmlvciA9IGV4dGVuc2lvbkJlaGF2
aW9yKCk7Ci0gICAgVEV4dGVuc2lvbkJlaGF2aW9yOjpjb25zdF9pdGVyYXRvciBpdGVyID0gZXh0
YmVoYXZpb3IuZmluZChleHRlbnNpb24pOwotICAgIHJldHVybiAoaXRlciAhPSBleHRiZWhhdmlv
ci5lbmQoKSk7Ci19Ci0KLWJvb2wgVFBhcnNlQ29udGV4dDo6aXNFeHRlbnNpb25FbmFibGVkKGNv
bnN0IGNoYXIqIGV4dGVuc2lvbikgY29uc3QKLXsKLSAgICBjb25zdCBURXh0ZW5zaW9uQmVoYXZp
b3ImIGV4dGJlaGF2aW9yID0gZXh0ZW5zaW9uQmVoYXZpb3IoKTsKLSAgICBzdGQ6Om1hcDxzdGQ6
OnN0cmluZywgVEJlaGF2aW9yPjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGV4dGJlaGF2aW9yLmZp
bmQoZXh0ZW5zaW9uKTsKLQotICAgIGlmIChpdGVyID09IGV4dGJlaGF2aW9yLmVuZCgpKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiAoaXRlci0+c2Vj
b25kID09IEVCaEVuYWJsZSB8fCBpdGVyLT5zZWNvbmQgPT0gRUJoUmVxdWlyZSk7Ci19Ci0KLS8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIE5vbi1FcnJvcnMuCi0vLwotLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCi0KLS8vCi0vLyBMb29rIHVwIGEgZnVuY3Rpb24gbmFtZSBpbiB0aGUg
c3ltYm9sIHRhYmxlLCBhbmQgbWFrZSBzdXJlIGl0IGlzIGEgZnVuY3Rpb24uCi0vLwotLy8gUmV0
dXJuIHRoZSBmdW5jdGlvbiBzeW1ib2wgaWYgZm91bmQsIG90aGVyd2lzZSAwLgotLy8KLWNvbnN0
IFRGdW5jdGlvbiogVFBhcnNlQ29udGV4dDo6ZmluZEZ1bmN0aW9uKGNvbnN0IFRTb3VyY2VMb2Mm
IGxpbmUsIFRGdW5jdGlvbiogY2FsbCwgYm9vbCAqYnVpbHRJbikKLXsKLSAgICAvLyBGaXJzdCBm
aW5kIGJ5IHVubWFuZ2xlZCBuYW1lIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGZ1bmN0aW9uIG5hbWUg
aGFzIGJlZW4KLSAgICAvLyBoaWRkZW4gYnkgYSB2YXJpYWJsZSBuYW1lIG9yIHN0cnVjdCB0eXBl
bmFtZS4KLSAgICAvLyBJZiBhIGZ1bmN0aW9uIGlzIGZvdW5kLCBjaGVjayBmb3Igb25lIHdpdGgg
YSBtYXRjaGluZyBhcmd1bWVudCBsaXN0LgotICAgIGNvbnN0IFRTeW1ib2wqIHN5bWJvbCA9IHN5
bWJvbFRhYmxlLmZpbmQoY2FsbC0+Z2V0TmFtZSgpLCBidWlsdEluKTsKLSAgICBpZiAoc3ltYm9s
ID09IDAgfHwgc3ltYm9sLT5pc0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgc3ltYm9sID0gc3ltYm9s
VGFibGUuZmluZChjYWxsLT5nZXRNYW5nbGVkTmFtZSgpLCBidWlsdEluKTsKLSAgICB9Ci0KLSAg
ICBpZiAoc3ltYm9sID09IDApIHsKLSAgICAgICAgZXJyb3IobGluZSwgIm5vIG1hdGNoaW5nIG92
ZXJsb2FkZWQgZnVuY3Rpb24gZm91bmQiLCBjYWxsLT5nZXROYW1lKCkuY19zdHIoKSk7Ci0gICAg
ICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlmICghc3ltYm9sLT5pc0Z1bmN0aW9uKCkpIHsK
LSAgICAgICAgZXJyb3IobGluZSwgImZ1bmN0aW9uIG5hbWUgZXhwZWN0ZWQiLCBjYWxsLT5nZXRO
YW1lKCkuY19zdHIoKSk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBURnVuY3Rpb24qPihzeW1ib2wpOwotfQotCi0vLwotLy8gSW5pdGlh
bGl6ZXJzIHNob3cgdXAgaW4gc2V2ZXJhbCBwbGFjZXMgaW4gdGhlIGdyYW1tYXIuICBIYXZlIG9u
ZSBzZXQgb2YKLS8vIGNvZGUgdG8gaGFuZGxlIHRoZW0gaGVyZS4KLS8vCi1ib29sIFRQYXJzZUNv
bnRleHQ6OmV4ZWN1dGVJbml0aWFsaXplcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5n
JiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgcFR5cGUsIAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbml0aWFsaXplciwgVEludGVybU5vZGUq
JiBpbnRlcm1Ob2RlLCBUVmFyaWFibGUqIHZhcmlhYmxlKQotewotICAgIFRUeXBlIHR5cGUgPSBU
VHlwZShwVHlwZSk7Ci0KLSAgICBpZiAodmFyaWFibGUgPT0gMCkgewotICAgICAgICBpZiAocmVz
ZXJ2ZWRFcnJvckNoZWNrKGxpbmUsIGlkZW50aWZpZXIpKQotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KLSAgICAgICAgaWYgKHZvaWRFcnJvckNoZWNrKGxpbmUsIGlkZW50aWZpZXIsIHBUeXBl
KSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIC8vCi0gICAgICAgIC8vIGFk
ZCB2YXJpYWJsZSB0byBzeW1ib2wgdGFibGUKLSAgICAgICAgLy8KLSAgICAgICAgdmFyaWFibGUg
PSBuZXcgVFZhcmlhYmxlKCZpZGVudGlmaWVyLCB0eXBlKTsKLSAgICAgICAgaWYgKCEgc3ltYm9s
VGFibGUuaW5zZXJ0KCp2YXJpYWJsZSkpIHsKLSAgICAgICAgICAgIGVycm9yKGxpbmUsICJyZWRl
ZmluaXRpb24iLCB2YXJpYWJsZS0+Z2V0TmFtZSgpLmNfc3RyKCkpOwotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgICAgICAvLyBkb24ndCBkZWxldGUgdmFyaWFibGUsIGl0J3MgdXNl
ZCBieSBlcnJvciByZWNvdmVyeSwgYW5kIHRoZSBwb29sIAotICAgICAgICAgICAgLy8gcG9wIHdp
bGwgdGFrZSBjYXJlIG9mIHRoZSBtZW1vcnkKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vCi0g
ICAgLy8gaWRlbnRpZmllciBtdXN0IGJlIG9mIHR5cGUgY29uc3RhbnQsIGEgZ2xvYmFsLCBvciBh
IHRlbXBvcmFyeQotICAgIC8vCi0gICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSB2YXJpYWJsZS0+
Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpOwotICAgIGlmICgocXVhbGlmaWVyICE9IEV2cVRlbXBv
cmFyeSkgJiYgKHF1YWxpZmllciAhPSBFdnFHbG9iYWwpICYmIChxdWFsaWZpZXIgIT0gRXZxQ29u
c3QpKSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICIgY2Fubm90IGluaXRpYWxpemUgdGhpcyB0eXBl
IG9mIHF1YWxpZmllciAiLCB2YXJpYWJsZS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllclN0cmluZygp
KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIC8vCi0gICAgLy8gdGVzdCBmb3Ig
YW5kIHByb3BhZ2F0ZSBjb25zdGFudAotICAgIC8vCi0KLSAgICBpZiAocXVhbGlmaWVyID09IEV2
cUNvbnN0KSB7Ci0gICAgICAgIGlmIChxdWFsaWZpZXIgIT0gaW5pdGlhbGl6ZXItPmdldFR5cGUo
KS5nZXRRdWFsaWZpZXIoKSkgewotICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJ
bmZvU3RyZWFtOwotICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICInIiA8PCB2YXJpYWJs
ZS0+Z2V0VHlwZSgpLmdldENvbXBsZXRlU3RyaW5nKCkgPDwgIiciOwotICAgICAgICAgICAgc3Rk
OjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwotICAgICAgICAgICAg
ZXJyb3IobGluZSwgIiBhc3NpZ25pbmcgbm9uLWNvbnN0YW50IHRvIiwgIj0iLCBleHRyYUluZm8u
Y19zdHIoKSk7Ci0gICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLnNldFF1YWxpZmllcihF
dnFUZW1wb3JhcnkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKHR5cGUgIT0gaW5pdGlhbGl6ZXItPmdldFR5cGUoKSkgewotICAgICAgICAgICAgZXJy
b3IobGluZSwgIiBub24tbWF0Y2hpbmcgdHlwZXMgZm9yIGNvbnN0IGluaXRpYWxpemVyICIsIAot
ICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyU3RyaW5nKCkp
OwotICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKS5zZXRRdWFsaWZpZXIoRXZxVGVtcG9y
YXJ5KTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChp
bml0aWFsaXplci0+Z2V0QXNDb25zdGFudFVuaW9uKCkpIHsgCi0gICAgICAgICAgICB2YXJpYWJs
ZS0+c2hhcmVDb25zdFBvaW50ZXIoaW5pdGlhbGl6ZXItPmdldEFzQ29uc3RhbnRVbmlvbigpLT5n
ZXRVbmlvbkFycmF5UG9pbnRlcigpKTsKLSAgICAgICAgfSBlbHNlIGlmIChpbml0aWFsaXplci0+
Z2V0QXNTeW1ib2xOb2RlKCkpIHsKLSAgICAgICAgICAgIGNvbnN0IFRTeW1ib2wqIHN5bWJvbCA9
IHN5bWJvbFRhYmxlLmZpbmQoaW5pdGlhbGl6ZXItPmdldEFzU3ltYm9sTm9kZSgpLT5nZXRTeW1i
b2woKSk7Ci0gICAgICAgICAgICBjb25zdCBUVmFyaWFibGUqIHRWYXIgPSBzdGF0aWNfY2FzdDxj
b25zdCBUVmFyaWFibGUqPihzeW1ib2wpOwotCi0gICAgICAgICAgICBDb25zdGFudFVuaW9uKiBj
b25zdEFycmF5ID0gdFZhci0+Z2V0Q29uc3RQb2ludGVyKCk7Ci0gICAgICAgICAgICB2YXJpYWJs
ZS0+c2hhcmVDb25zdFBvaW50ZXIoY29uc3RBcnJheSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07Ci0gICAgICAgICAgICBl
eHRyYUluZm9TdHJlYW0gPDwgIiciIDw8IHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0Q29tcGxldGVT
dHJpbmcoKSA8PCAiJyI7Ci0gICAgICAgICAgICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRy
YUluZm9TdHJlYW0uc3RyKCk7Ci0gICAgICAgICAgICBlcnJvcihsaW5lLCAiIGNhbm5vdCBhc3Np
Z24gdG8iLCAiPSIsIGV4dHJhSW5mby5jX3N0cigpKTsKLSAgICAgICAgICAgIHZhcmlhYmxlLT5n
ZXRUeXBlKCkuc2V0UXVhbGlmaWVyKEV2cVRlbXBvcmFyeSk7Ci0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLSAKLSAgICBpZiAocXVhbGlmaWVyICE9IEV2cUNvbnN0
KSB7Ci0gICAgICAgIFRJbnRlcm1TeW1ib2wqIGludGVybVN5bWJvbCA9IGludGVybWVkaWF0ZS5h
ZGRTeW1ib2wodmFyaWFibGUtPmdldFVuaXF1ZUlkKCksIHZhcmlhYmxlLT5nZXROYW1lKCksIHZh
cmlhYmxlLT5nZXRUeXBlKCksIGxpbmUpOwotICAgICAgICBpbnRlcm1Ob2RlID0gaW50ZXJtZWRp
YXRlLmFkZEFzc2lnbihFT3BJbml0aWFsaXplLCBpbnRlcm1TeW1ib2wsIGluaXRpYWxpemVyLCBs
aW5lKTsKLSAgICAgICAgaWYgKGludGVybU5vZGUgPT0gMCkgewotICAgICAgICAgICAgYXNzaWdu
RXJyb3IobGluZSwgIj0iLCBpbnRlcm1TeW1ib2wtPmdldENvbXBsZXRlU3RyaW5nKCksIGluaXRp
YWxpemVyLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9Ci0gICAgfSBlbHNlIAotICAgICAgICBpbnRlcm1Ob2RlID0gMDsKLQotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotYm9vbCBUUGFyc2VDb250ZXh0OjphcmVBbGxDaGlsZENvbnN0KFRJ
bnRlcm1BZ2dyZWdhdGUqIGFnZ3JOb2RlKQotewotICAgIEFTU0VSVChhZ2dyTm9kZSAhPSBOVUxM
KTsKLSAgICBpZiAoIWFnZ3JOb2RlLT5pc0NvbnN0cnVjdG9yKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGJvb2wgYWxsQ29uc3RhbnQgPSB0cnVlOwotCi0gICAgLy8gY2hlY2sgaWYg
YWxsIHRoZSBjaGlsZCBub2RlcyBhcmUgY29uc3RhbnRzIHNvIHRoYXQgdGhleSBjYW4gYmUgaW5z
ZXJ0ZWQgaW50byAKLSAgICAvLyB0aGUgcGFyZW50IG5vZGUKLSAgICBUSW50ZXJtU2VxdWVuY2Ug
JnNlcXVlbmNlID0gYWdnck5vZGUtPmdldFNlcXVlbmNlKCkgOwotICAgIGZvciAoVEludGVybVNl
cXVlbmNlOjppdGVyYXRvciBwID0gc2VxdWVuY2UuYmVnaW4oKTsgcCAhPSBzZXF1ZW5jZS5lbmQo
KTsgKytwKSB7Ci0gICAgICAgIGlmICghKCpwKS0+Z2V0QXNUeXBlZCgpLT5nZXRBc0NvbnN0YW50
VW5pb24oKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
YWxsQ29uc3RhbnQ7Ci19Ci0KLS8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byB0ZXN0IGZvciB0
aGUgY29ycmVjdG5lc3Mgb2YgdGhlIHBhcmFtZXRlcnMgcGFzc2VkIHRvIHZhcmlvdXMgY29uc3Ry
dWN0b3IgZnVuY3Rpb25zCi0vLyBhbmQgYWxzbyBjb252ZXJ0IHRoZW0gdG8gdGhlIHJpZ2h0IGRh
dGF0eXBlIGlmIGl0IGlzIGFsbG93ZWQgYW5kIHJlcXVpcmVkLiAKLS8vCi0vLyBSZXR1cm5zIDAg
Zm9yIGFuIGVycm9yIG9yIHRoZSBjb25zdHJ1Y3RlZCBub2RlIChhZ2dyZWdhdGUgb3IgdHlwZWQp
IGZvciBubyBlcnJvci4KLS8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0
cnVjdG9yKFRJbnRlcm1Ob2RlKiBub2RlLCBjb25zdCBUVHlwZSogdHlwZSwgVE9wZXJhdG9yIG9w
LCBURnVuY3Rpb24qIGZuQ2FsbCwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKLXsKLSAgICBpZiAo
bm9kZSA9PSAwKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFRJbnRlcm1BZ2dyZWdhdGUqIGFn
Z3JOb2RlID0gbm9kZS0+Z2V0QXNBZ2dyZWdhdGUoKTsKLSAgICAKLSAgICBURmllbGRMaXN0Ojpj
b25zdF9pdGVyYXRvciBtZW1iZXJGaWVsZHM7Ci0gICAgaWYgKG9wID09IEVPcENvbnN0cnVjdFN0
cnVjdCkKLSAgICAgICAgbWVtYmVyRmllbGRzID0gdHlwZS0+Z2V0U3RydWN0KCktPmZpZWxkcygp
LmJlZ2luKCk7Ci0gICAgCi0gICAgVFR5cGUgZWxlbWVudFR5cGUgPSAqdHlwZTsKLSAgICBpZiAo
dHlwZS0+aXNBcnJheSgpKQotICAgICAgICBlbGVtZW50VHlwZS5jbGVhckFycmF5bmVzcygpOwot
Ci0gICAgYm9vbCBzaW5nbGVBcmc7Ci0gICAgaWYgKGFnZ3JOb2RlKSB7Ci0gICAgICAgIGlmIChh
Z2dyTm9kZS0+Z2V0T3AoKSAhPSBFT3BOdWxsIHx8IGFnZ3JOb2RlLT5nZXRTZXF1ZW5jZSgpLnNp
emUoKSA9PSAxKQotICAgICAgICAgICAgc2luZ2xlQXJnID0gdHJ1ZTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgc2luZ2xlQXJnID0gZmFsc2U7Ci0gICAgfSBlbHNlCi0gICAgICAgIHNpbmds
ZUFyZyA9IHRydWU7Ci0KLSAgICBUSW50ZXJtVHlwZWQgKm5ld05vZGU7Ci0gICAgaWYgKHNpbmds
ZUFyZykgewotICAgICAgICAvLyBJZiBzdHJ1Y3R1cmUgY29uc3RydWN0b3Igb3IgYXJyYXkgY29u
c3RydWN0b3IgaXMgYmVpbmcgY2FsbGVkIAotICAgICAgICAvLyBmb3Igb25seSBvbmUgcGFyYW1l
dGVyIGluc2lkZSB0aGUgc3RydWN0dXJlLCB3ZSBuZWVkIHRvIGNhbGwgY29uc3RydWN0U3RydWN0
IGZ1bmN0aW9uIG9uY2UuCi0gICAgICAgIGlmICh0eXBlLT5pc0FycmF5KCkpCi0gICAgICAgICAg
ICBuZXdOb2RlID0gY29uc3RydWN0U3RydWN0KG5vZGUsICZlbGVtZW50VHlwZSwgMSwgbm9kZS0+
Z2V0TGluZSgpLCBmYWxzZSk7Ci0gICAgICAgIGVsc2UgaWYgKG9wID09IEVPcENvbnN0cnVjdFN0
cnVjdCkKLSAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qobm9kZSwgKCptZW1i
ZXJGaWVsZHMpLT50eXBlKCksIDEsIG5vZGUtPmdldExpbmUoKSwgZmFsc2UpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBuZXdOb2RlID0gY29uc3RydWN0QnVpbHRJbih0eXBlLCBvcCwgbm9k
ZSwgbm9kZS0+Z2V0TGluZSgpLCBmYWxzZSk7Ci0KLSAgICAgICAgaWYgKG5ld05vZGUgJiYgbmV3
Tm9kZS0+Z2V0QXNBZ2dyZWdhdGUoKSkgewotICAgICAgICAgICAgVEludGVybVR5cGVkKiBjb25z
dENvbnN0cnVjdG9yID0gZm9sZENvbnN0Q29uc3RydWN0b3IobmV3Tm9kZS0+Z2V0QXNBZ2dyZWdh
dGUoKSwgKnR5cGUpOwotICAgICAgICAgICAgaWYgKGNvbnN0Q29uc3RydWN0b3IpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGNvbnN0Q29uc3RydWN0b3I7Ci0gICAgICAgIH0KLQotICAgICAgICBy
ZXR1cm4gbmV3Tm9kZTsKLSAgICB9Ci0gICAgCi0gICAgLy8KLSAgICAvLyBIYW5kbGUgbGlzdCBv
ZiBhcmd1bWVudHMuCi0gICAgLy8KLSAgICBUSW50ZXJtU2VxdWVuY2UgJnNlcXVlbmNlVmVjdG9y
ID0gYWdnck5vZGUtPmdldFNlcXVlbmNlKCkgOyAgICAvLyBTdG9yZXMgdGhlIGluZm9ybWF0aW9u
IGFib3V0IHRoZSBwYXJhbWV0ZXIgdG8gdGhlIGNvbnN0cnVjdG9yCi0gICAgLy8gaWYgdGhlIHN0
cnVjdHVyZSBjb25zdHJ1Y3RvciBjb250YWlucyBtb3JlIHRoYW4gb25lIHBhcmFtZXRlciwgdGhl
biBjb25zdHJ1Y3QKLSAgICAvLyBlYWNoIHBhcmFtZXRlcgotICAgIAotICAgIGludCBwYXJhbUNv
dW50ID0gMDsgIC8vIGtlZXBzIGEgdHJhY2sgb2YgdGhlIGNvbnN0cnVjdG9yIHBhcmFtZXRlciBu
dW1iZXIgYmVpbmcgY2hlY2tlZCAgICAKLSAgICAKLSAgICAvLyBmb3IgZWFjaCBwYXJhbWV0ZXIg
dG8gdGhlIGNvbnN0cnVjdG9yIGNhbGwsIGNoZWNrIHRvIHNlZSBpZiB0aGUgcmlnaHQgdHlwZSBp
cyBwYXNzZWQgb3IgY29udmVydCB0aGVtIAotICAgIC8vIHRvIHRoZSByaWdodCB0eXBlIGlmIHBv
c3NpYmxlIChhbmQgYWxsb3dlZCkuCi0gICAgLy8gZm9yIHN0cnVjdHVyZSBjb25zdHJ1Y3RvcnMs
IGp1c3QgY2hlY2sgaWYgdGhlIHJpZ2h0IHR5cGUgaXMgcGFzc2VkLCBubyBjb252ZXJzaW9uIGlz
IGFsbG93ZWQuCi0gICAgCi0gICAgZm9yIChUSW50ZXJtU2VxdWVuY2U6Oml0ZXJhdG9yIHAgPSBz
ZXF1ZW5jZVZlY3Rvci5iZWdpbigpOyAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcCAhPSBzZXF1ZW5jZVZlY3Rvci5lbmQoKTsgcCsrLCBwYXJhbUNvdW50KyspIHsKLSAgICAg
ICAgaWYgKHR5cGUtPmlzQXJyYXkoKSkKLSAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RT
dHJ1Y3QoKnAsICZlbGVtZW50VHlwZSwgcGFyYW1Db3VudCsxLCBub2RlLT5nZXRMaW5lKCksIHRy
dWUpOwotICAgICAgICBlbHNlIGlmIChvcCA9PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QpCi0gICAgICAg
ICAgICBuZXdOb2RlID0gY29uc3RydWN0U3RydWN0KCpwLCBtZW1iZXJGaWVsZHNbcGFyYW1Db3Vu
dF0tPnR5cGUoKSwgcGFyYW1Db3VudCsxLCBub2RlLT5nZXRMaW5lKCksIHRydWUpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBuZXdOb2RlID0gY29uc3RydWN0QnVpbHRJbih0eXBlLCBvcCwg
KnAsIG5vZGUtPmdldExpbmUoKSwgdHJ1ZSk7Ci0gICAgICAgIAotICAgICAgICBpZiAobmV3Tm9k
ZSkgewotICAgICAgICAgICAgKnAgPSBuZXdOb2RlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
VEludGVybVR5cGVkKiBjb25zdHJ1Y3RvciA9IGludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVy
YXRvcihhZ2dyTm9kZSwgb3AsIGxpbmUpOwotICAgIFRJbnRlcm1UeXBlZCogY29uc3RDb25zdHJ1
Y3RvciA9IGZvbGRDb25zdENvbnN0cnVjdG9yKGNvbnN0cnVjdG9yLT5nZXRBc0FnZ3JlZ2F0ZSgp
LCAqdHlwZSk7Ci0gICAgaWYgKGNvbnN0Q29uc3RydWN0b3IpCi0gICAgICAgIHJldHVybiBjb25z
dENvbnN0cnVjdG9yOwotCi0gICAgcmV0dXJuIGNvbnN0cnVjdG9yOwotfQotCi1USW50ZXJtVHlw
ZWQqIFRQYXJzZUNvbnRleHQ6OmZvbGRDb25zdENvbnN0cnVjdG9yKFRJbnRlcm1BZ2dyZWdhdGUq
IGFnZ3JOb2RlLCBjb25zdCBUVHlwZSYgdHlwZSkKLXsKLSAgICBib29sIGNhbkJlRm9sZGVkID0g
YXJlQWxsQ2hpbGRDb25zdChhZ2dyTm9kZSk7Ci0gICAgYWdnck5vZGUtPnNldFR5cGUodHlwZSk7
Ci0gICAgaWYgKGNhbkJlRm9sZGVkKSB7Ci0gICAgICAgIGJvb2wgcmV0dXJuVmFsID0gZmFsc2U7
Ci0gICAgICAgIENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblt0
eXBlLmdldE9iamVjdFNpemUoKV07Ci0gICAgICAgIGlmIChhZ2dyTm9kZS0+Z2V0U2VxdWVuY2Uo
KS5zaXplKCkgPT0gMSkgIHsKLSAgICAgICAgICAgIHJldHVyblZhbCA9IGludGVybWVkaWF0ZS5w
YXJzZUNvbnN0VHJlZShhZ2dyTm9kZS0+Z2V0TGluZSgpLCBhZ2dyTm9kZSwgdW5pb25BcnJheSwg
YWdnck5vZGUtPmdldE9wKCksIHN5bWJvbFRhYmxlLCAgdHlwZSwgdHJ1ZSk7Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm5WYWwgPSBpbnRlcm1lZGlhdGUucGFy
c2VDb25zdFRyZWUoYWdnck5vZGUtPmdldExpbmUoKSwgYWdnck5vZGUsIHVuaW9uQXJyYXksIGFn
Z3JOb2RlLT5nZXRPcCgpLCBzeW1ib2xUYWJsZSwgIHR5cGUpOwotICAgICAgICB9Ci0gICAgICAg
IGlmIChyZXR1cm5WYWwpCi0gICAgICAgICAgICByZXR1cm4gMDsKLQotICAgICAgICByZXR1cm4g
aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgdHlwZSwgYWdnck5vZGUt
PmdldExpbmUoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLS8vIEZ1bmN0aW9uIGZv
ciBjb25zdHJ1Y3RvciBpbXBsZW1lbnRhdGlvbi4gQ2FsbHMgYWRkVW5hcnlNYXRoIHdpdGggYXBw
cm9wcmlhdGUgRU9wIHZhbHVlCi0vLyBmb3IgdGhlIHBhcmFtZXRlciB0byB0aGUgY29uc3RydWN0
b3IgKHBhc3NlZCB0byB0aGlzIGZ1bmN0aW9uKS4gRXNzZW50aWFsbHksIGl0IGNvbnZlcnRzCi0v
LyB0aGUgcGFyYW1ldGVyIHR5cGVzIGNvcnJlY3RseS4gSWYgYSBjb25zdHJ1Y3RvciBleHBlY3Rz
IGFuIGludCAobGlrZSBpdmVjMikgYW5kIGlzIHBhc3NlZCBhIAotLy8gZmxvYXQsIHRoZW4gZmxv
YXQgaXMgY29udmVydGVkIHRvIGludC4KLS8vCi0vLyBSZXR1cm5zIDAgZm9yIGFuIGVycm9yIG9y
IHRoZSBjb25zdHJ1Y3RlZCBub2RlLgotLy8KLVRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6
Y29uc3RydWN0QnVpbHRJbihjb25zdCBUVHlwZSogdHlwZSwgVE9wZXJhdG9yIG9wLCBUSW50ZXJt
Tm9kZSogbm9kZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgYm9vbCBzdWJzZXQpCi17Ci0gICAg
VEludGVybVR5cGVkKiBuZXdOb2RlOwotICAgIFRPcGVyYXRvciBiYXNpY09wOwotCi0gICAgLy8K
LSAgICAvLyBGaXJzdCwgY29udmVydCB0eXBlcyBhcyBuZWVkZWQuCi0gICAgLy8KLSAgICBzd2l0
Y2ggKG9wKSB7Ci0gICAgY2FzZSBFT3BDb25zdHJ1Y3RWZWMyOgotICAgIGNhc2UgRU9wQ29uc3Ry
dWN0VmVjMzoKLSAgICBjYXNlIEVPcENvbnN0cnVjdFZlYzQ6Ci0gICAgY2FzZSBFT3BDb25zdHJ1
Y3RNYXQyOgotICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0MzoKLSAgICBjYXNlIEVPcENvbnN0cnVj
dE1hdDQ6Ci0gICAgY2FzZSBFT3BDb25zdHJ1Y3RGbG9hdDoKLSAgICAgICAgYmFzaWNPcCA9IEVP
cENvbnN0cnVjdEZsb2F0OwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRU9wQ29uc3RydWN0
SVZlYzI6Ci0gICAgY2FzZSBFT3BDb25zdHJ1Y3RJVmVjMzoKLSAgICBjYXNlIEVPcENvbnN0cnVj
dElWZWM0OgotICAgIGNhc2UgRU9wQ29uc3RydWN0SW50OgotICAgICAgICBiYXNpY09wID0gRU9w
Q29uc3RydWN0SW50OwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRU9wQ29uc3RydWN0QlZl
YzI6Ci0gICAgY2FzZSBFT3BDb25zdHJ1Y3RCVmVjMzoKLSAgICBjYXNlIEVPcENvbnN0cnVjdEJW
ZWM0OgotICAgIGNhc2UgRU9wQ29uc3RydWN0Qm9vbDoKLSAgICAgICAgYmFzaWNPcCA9IEVPcENv
bnN0cnVjdEJvb2w7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgZXJy
b3IobGluZSwgInVuc3VwcG9ydGVkIGNvbnN0cnVjdGlvbiIsICIiKTsKLSAgICAgICAgcmVjb3Zl
cigpOwotCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBuZXdOb2RlID0gaW50ZXJtZWRp
YXRlLmFkZFVuYXJ5TWF0aChiYXNpY09wLCBub2RlLCBub2RlLT5nZXRMaW5lKCksIHN5bWJvbFRh
YmxlKTsKLSAgICBpZiAobmV3Tm9kZSA9PSAwKSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJjYW4n
dCBjb252ZXJ0IiwgImNvbnN0cnVjdG9yIik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQot
ICAgIC8vCi0gICAgLy8gTm93LCBpZiB0aGVyZSBzdGlsbCBpc24ndCBhbiBvcGVyYXRpb24gdG8g
ZG8gdGhlIGNvbnN0cnVjdGlvbiwgYW5kIHdlIG5lZWQgb25lLCBhZGQgb25lLgotICAgIC8vCi0g
ICAgCi0gICAgLy8gT3RoZXJ3aXNlLCBza2lwIG91dCBlYXJseS4KLSAgICBpZiAoc3Vic2V0IHx8
IChuZXdOb2RlICE9IG5vZGUgJiYgbmV3Tm9kZS0+Z2V0VHlwZSgpID09ICp0eXBlKSkKLSAgICAg
ICAgcmV0dXJuIG5ld05vZGU7Ci0KLSAgICAvLyBzZXRBZ2dyZWdhdGVPcGVyYXRvciB3aWxsIGlu
c2VydCBhIG5ldyBub2RlIGZvciB0aGUgY29uc3RydWN0b3IsIGFzIG5lZWRlZC4KLSAgICByZXR1
cm4gaW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKG5ld05vZGUsIG9wLCBsaW5lKTsK
LX0KLQotLy8gVGhpcyBmdW5jdGlvbiB0ZXN0cyBmb3IgdGhlIHR5cGUgb2YgdGhlIHBhcmFtZXRl
cnMgdG8gdGhlIHN0cnVjdHVyZXMgY29uc3RydWN0b3JzLiBSYWlzZXMKLS8vIGFuIGVycm9yIG1l
c3NhZ2UgaWYgdGhlIGV4cGVjdGVkIHR5cGUgZG9lcyBub3QgbWF0Y2ggdGhlIHBhcmFtZXRlciBw
YXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yLgotLy8KLS8vIFJldHVybnMgMCBmb3IgYW4gZXJyb3Ig
b3IgdGhlIGlucHV0IG5vZGUgaXRzZWxmIGlmIHRoZSBleHBlY3RlZCBhbmQgdGhlIGdpdmVuIHBh
cmFtZXRlciB0eXBlcyBtYXRjaC4KLS8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmNv
bnN0cnVjdFN0cnVjdChUSW50ZXJtTm9kZSogbm9kZSwgVFR5cGUqIHR5cGUsIGludCBwYXJhbUNv
dW50LCBjb25zdCBUU291cmNlTG9jJiBsaW5lLCBib29sIHN1YnNldCkKLXsKLSAgICBpZiAoKnR5
cGUgPT0gbm9kZS0+Z2V0QXNUeXBlZCgpLT5nZXRUeXBlKCkpIHsKLSAgICAgICAgaWYgKHN1YnNl
dCkKLSAgICAgICAgICAgIHJldHVybiBub2RlLT5nZXRBc1R5cGVkKCk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHJldHVybiBpbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3Iobm9k
ZS0+Z2V0QXNUeXBlZCgpLCBFT3BDb25zdHJ1Y3RTdHJ1Y3QsIGxpbmUpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKLSAgICAgICAgZXh0
cmFJbmZvU3RyZWFtIDw8ICJjYW5ub3QgY29udmVydCBwYXJhbWV0ZXIgIiA8PCBwYXJhbUNvdW50
IAotICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiBmcm9tICciIDw8IG5vZGUtPmdldEFzVHlw
ZWQoKS0+Z2V0VHlwZSgpLmdldEJhc2ljU3RyaW5nKCkKLSAgICAgICAgICAgICAgICAgICAgICAg
IDw8ICInIHRvICciIDw8IHR5cGUtPmdldEJhc2ljU3RyaW5nKCkgPDwgIiciOwotICAgICAgICBz
dGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7Ci0gICAgICAgIGVy
cm9yKGxpbmUsICIiLCAiY29uc3RydWN0b3IiLCBleHRyYUluZm8uY19zdHIoKSk7Ci0gICAgICAg
IHJlY292ZXIoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotLy8KLS8vIFRoaXMgZnVu
Y3Rpb24gcmV0dXJucyB0aGUgdHJlZSByZXByZXNlbnRhdGlvbiBmb3IgdGhlIHZlY3RvciBmaWVs
ZChzKSBiZWluZyBhY2Nlc3NlZCBmcm9tIGNvbnRhbnQgdmVjdG9yLgotLy8gSWYgb25seSBvbmUg
Y29tcG9uZW50IG9mIHZlY3RvciBpcyBhY2Nlc3NlZCAodi54IG9yIHZbMF0gd2hlcmUgdiBpcyBh
IGNvbnRhbnQgdmVjdG9yKSwgdGhlbiBhIGNvbnRhbnQgbm9kZSBpcwotLy8gcmV0dXJuZWQsIGVs
c2UgYW4gYWdncmVnYXRlIG5vZGUgaXMgcmV0dXJuZWQgKGZvciB2Lnh5KS4gVGhlIGlucHV0IHRv
IHRoaXMgZnVuY3Rpb24gY291bGQgZWl0aGVyIGJlIHRoZSBzeW1ib2wKLS8vIG5vZGUgb3IgaXQg
Y291bGQgYmUgdGhlIGludGVybWVkaWF0ZSB0cmVlIHJlcHJlc2VudGF0aW9uIG9mIGFjY2Vzc2lu
ZyBmaWVsZHMgaW4gYSBjb25zdGFudCBzdHJ1Y3R1cmUgb3IgY29sdW1uIG9mIAotLy8gYSBjb25z
dGFudCBtYXRyaXguCi0vLwotVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdFZl
Y3Rvck5vZGUoVFZlY3RvckZpZWxkcyYgZmllbGRzLCBUSW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUpCi17Ci0gICAgVEludGVybVR5cGVkKiB0eXBlZE5vZGU7Ci0gICAg
VEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFudE5vZGUgPSBub2RlLT5nZXRBc0NvbnN0
YW50VW5pb24oKTsKLQotICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXk7Ci0gICAgaWYgKHRl
bXBDb25zdGFudE5vZGUpIHsKLSAgICAgICAgdW5pb25BcnJheSA9IHRlbXBDb25zdGFudE5vZGUt
PmdldFVuaW9uQXJyYXlQb2ludGVyKCk7Ci0KLSAgICAgICAgaWYgKCF1bmlvbkFycmF5KSB7Ci0g
ICAgICAgICAgICByZXR1cm4gbm9kZTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7IC8vIFRoZSBu
b2RlIGhhcyB0byBiZSBlaXRoZXIgYSBzeW1ib2wgbm9kZSBvciBhbiBhZ2dyZWdhdGUgbm9kZSBv
ciBhIHRlbXBDb25zdGFudCBub2RlLCBlbHNlLCBpdHMgYW4gZXJyb3IKLSAgICAgICAgZXJyb3Io
bGluZSwgIkNhbm5vdCBvZmZzZXQgaW50byB0aGUgdmVjdG9yIiwgIkVycm9yIik7Ci0gICAgICAg
IHJlY292ZXIoKTsKLQotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBDb25zdGFudFVu
aW9uKiBjb25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bZmllbGRzLm51bV07Ci0KLSAgICBm
b3IgKGludCBpID0gMDsgaSA8IGZpZWxkcy5udW07IGkrKykgewotICAgICAgICBpZiAoZmllbGRz
Lm9mZnNldHNbaV0gPj0gbm9kZS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkpIHsKLSAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKLSAgICAgICAgICAgIGV4
dHJhSW5mb1N0cmVhbSA8PCAidmVjdG9yIGZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIg
PDwgZmllbGRzLm9mZnNldHNbaV0gPDwgIiciOwotICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0
cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwotICAgICAgICAgICAgZXJyb3IobGluZSwg
IiIsICJbIiwgZXh0cmFJbmZvLmNfc3RyKCkpOwotICAgICAgICAgICAgcmVjb3ZlcigpOwotICAg
ICAgICAgICAgZmllbGRzLm9mZnNldHNbaV0gPSAwOwotICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBjb25zdEFycmF5W2ldID0gdW5pb25BcnJheVtmaWVsZHMub2Zmc2V0c1tpXV07Ci0KLSAg
ICB9IAotICAgIHR5cGVkTm9kZSA9IGludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKGNvbnN0
QXJyYXksIG5vZGUtPmdldFR5cGUoKSwgbGluZSk7Ci0gICAgcmV0dXJuIHR5cGVkTm9kZTsKLX0K
LQotLy8KLS8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgY29sdW1uIGJlaW5nIGFjY2Vzc2Vk
IGZyb20gYSBjb25zdGFudCBtYXRyaXguIFRoZSB2YWx1ZXMgYXJlIHJldHJpZXZlZCBmcm9tCi0v
LyB0aGUgc3ltYm9sIHRhYmxlIGFuZCBwYXJzZS10cmVlIGlzIGJ1aWx0IGZvciBhIHZlY3RvciAo
ZWFjaCBjb2x1bW4gb2YgYSBtYXRyaXggaXMgYSB2ZWN0b3IpLiBUaGUgaW5wdXQgCi0vLyB0byB0
aGUgZnVuY3Rpb24gY291bGQgZWl0aGVyIGJlIGEgc3ltYm9sIG5vZGUgKG1bMF0gd2hlcmUgbSBp
cyBhIGNvbnN0YW50IG1hdHJpeCl0aGF0IHJlcHJlc2VudHMgYSAKLS8vIGNvbnN0YW50IG1hdHJp
eCBvciBpdCBjb3VsZCBiZSB0aGUgdHJlZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgY29uc3RhbnQg
bWF0cml4IChzLm0xWzBdIHdoZXJlIHMgaXMgYSBjb25zdGFudCBzdHJ1Y3R1cmUpCi0vLwotVElu
dGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdE1hdHJpeE5vZGUoaW50IGluZGV4LCBU
SW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCi17Ci0gICAgVEludGVy
bVR5cGVkKiB0eXBlZE5vZGU7Ci0gICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFu
dE5vZGUgPSBub2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKLQotICAgIGlmIChpbmRleCA+PSBu
b2RlLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSkgewotICAgICAgICBzdGQ6OnN0cmluZ3N0
cmVhbSBleHRyYUluZm9TdHJlYW07Ci0gICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAibWF0cml4
IGZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgaW5kZXggPDwgIiciOwotICAgICAg
ICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7Ci0gICAgICAg
IGVycm9yKGxpbmUsICIiLCAiWyIsIGV4dHJhSW5mby5jX3N0cigpKTsKLSAgICAgICAgcmVjb3Zl
cigpOwotICAgICAgICBpbmRleCA9IDA7Ci0gICAgfQotCi0gICAgaWYgKHRlbXBDb25zdGFudE5v
ZGUpIHsKLSAgICAgICAgIENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXkgPSB0ZW1wQ29uc3RhbnRO
b2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOwotICAgICAgICAgaW50IHNpemUgPSB0ZW1wQ29u
c3RhbnROb2RlLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKTsKLSAgICAgICAgIHR5cGVkTm9k
ZSA9IGludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKCZ1bmlvbkFycmF5W3NpemUqaW5kZXhd
LCB0ZW1wQ29uc3RhbnROb2RlLT5nZXRUeXBlKCksIGxpbmUpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGVycm9yKGxpbmUsICJDYW5ub3Qgb2Zmc2V0IGludG8gdGhlIG1hdHJpeCIsICJFcnJvciIp
OwotICAgICAgICByZWNvdmVyKCk7Ci0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAg
cmV0dXJuIHR5cGVkTm9kZTsKLX0KLQotCi0vLwotLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIGFu
IGVsZW1lbnQgb2YgYW4gYXJyYXkgYWNjZXNzZWQgZnJvbSBhIGNvbnN0YW50IGFycmF5LiBUaGUg
dmFsdWVzIGFyZSByZXRyaWV2ZWQgZnJvbQotLy8gdGhlIHN5bWJvbCB0YWJsZSBhbmQgcGFyc2Ut
dHJlZSBpcyBidWlsdCBmb3IgdGhlIHR5cGUgb2YgdGhlIGVsZW1lbnQuIFRoZSBpbnB1dCAKLS8v
IHRvIHRoZSBmdW5jdGlvbiBjb3VsZCBlaXRoZXIgYmUgYSBzeW1ib2wgbm9kZSAoYVswXSB3aGVy
ZSBhIGlzIGEgY29uc3RhbnQgYXJyYXkpdGhhdCByZXByZXNlbnRzIGEgCi0vLyBjb25zdGFudCBh
cnJheSBvciBpdCBjb3VsZCBiZSB0aGUgdHJlZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgY29uc3Rh
bnQgYXJyYXkgKHMuYTFbMF0gd2hlcmUgcyBpcyBhIGNvbnN0YW50IHN0cnVjdHVyZSkKLS8vCi1U
SW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0QXJyYXlOb2RlKGludCBpbmRleCwg
VEludGVybVR5cGVkKiBub2RlLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQotewotICAgIFRJbnRl
cm1UeXBlZCogdHlwZWROb2RlOwotICAgIFRJbnRlcm1Db25zdGFudFVuaW9uKiB0ZW1wQ29uc3Rh
bnROb2RlID0gbm9kZS0+Z2V0QXNDb25zdGFudFVuaW9uKCk7Ci0gICAgVFR5cGUgYXJyYXlFbGVt
ZW50VHlwZSA9IG5vZGUtPmdldFR5cGUoKTsKLSAgICBhcnJheUVsZW1lbnRUeXBlLmNsZWFyQXJy
YXluZXNzKCk7Ci0KLSAgICBpZiAoaW5kZXggPj0gbm9kZS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6
ZSgpKSB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKLSAgICAg
ICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJhcnJheSBmaWVsZCBzZWxlY3Rpb24gb3V0IG9mIHJhbmdl
ICciIDw8IGluZGV4IDw8ICInIjsKLSAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0
cmFJbmZvU3RyZWFtLnN0cigpOwotICAgICAgICBlcnJvcihsaW5lLCAiIiwgIlsiLCBleHRyYUlu
Zm8uY19zdHIoKSk7Ci0gICAgICAgIHJlY292ZXIoKTsKLSAgICAgICAgaW5kZXggPSAwOwotICAg
IH0KLQotICAgIGlmICh0ZW1wQ29uc3RhbnROb2RlKSB7Ci0gICAgICAgICBzaXplX3QgYXJyYXlF
bGVtZW50U2l6ZSA9IGFycmF5RWxlbWVudFR5cGUuZ2V0T2JqZWN0U2l6ZSgpOwotICAgICAgICAg
Q29uc3RhbnRVbmlvbiogdW5pb25BcnJheSA9IHRlbXBDb25zdGFudE5vZGUtPmdldFVuaW9uQXJy
YXlQb2ludGVyKCk7Ci0gICAgICAgICB0eXBlZE5vZGUgPSBpbnRlcm1lZGlhdGUuYWRkQ29uc3Rh
bnRVbmlvbigmdW5pb25BcnJheVthcnJheUVsZW1lbnRTaXplICogaW5kZXhdLCB0ZW1wQ29uc3Rh
bnROb2RlLT5nZXRUeXBlKCksIGxpbmUpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGVycm9yKGxp
bmUsICJDYW5ub3Qgb2Zmc2V0IGludG8gdGhlIGFycmF5IiwgIkVycm9yIik7Ci0gICAgICAgIHJl
Y292ZXIoKTsKLQotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHlwZWRO
b2RlOwotfQotCi0KLS8vCi0vLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHZhbHVlIG9mIGEg
cGFydGljdWxhciBmaWVsZCBpbnNpZGUgYSBjb25zdGFudCBzdHJ1Y3R1cmUgZnJvbSB0aGUgc3lt
Ym9sIHRhYmxlLiAKLS8vIElmIHRoZXJlIGlzIGFuIGVtYmVkZGVkL25lc3RlZCBzdHJ1Y3QsIGl0
IGFwcHJvcHJpYXRlbHkgY2FsbHMgYWRkQ29uc3RTdHJ1Y3ROZXN0ZWQgb3IgYWRkQ29uc3RTdHJ1
Y3RGcm9tQWdncgotLy8gZnVuY3Rpb24gYW5kIHJldHVybnMgdGhlIHBhcnNlLXRyZWUgd2l0aCB0
aGUgdmFsdWVzIG9mIHRoZSBlbWJlZGRlZC9uZXN0ZWQgc3RydWN0LgotLy8KLVRJbnRlcm1UeXBl
ZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RTdHJ1Y3QoVFN0cmluZyYgaWRlbnRpZmllciwgVElu
dGVybVR5cGVkKiBub2RlLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQotewotICAgIGNvbnN0IFRG
aWVsZExpc3QmIGZpZWxkcyA9IG5vZGUtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7
Ci0KLSAgICBzaXplX3QgaW5zdGFuY2VTaXplID0gMDsKLSAgICBmb3IgKHNpemVfdCBpbmRleCA9
IDA7IGluZGV4IDwgZmllbGRzLnNpemUoKTsgKytpbmRleCkgewotICAgICAgICBpZiAoZmllbGRz
W2luZGV4XS0+bmFtZSgpID09IGlkZW50aWZpZXIpIHsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgaW5zdGFuY2VTaXplICs9IGZpZWxkc1tpbmRleF0t
PnR5cGUoKS0+Z2V0T2JqZWN0U2l6ZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgVEludGVy
bVR5cGVkKiB0eXBlZE5vZGUgPSAwOwotICAgIFRJbnRlcm1Db25zdGFudFVuaW9uKiB0ZW1wQ29u
c3RhbnROb2RlID0gbm9kZS0+Z2V0QXNDb25zdGFudFVuaW9uKCk7Ci0gICAgaWYgKHRlbXBDb25z
dGFudE5vZGUpIHsKLSAgICAgICAgIENvbnN0YW50VW5pb24qIGNvbnN0QXJyYXkgPSB0ZW1wQ29u
c3RhbnROb2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOwotCi0gICAgICAgICB0eXBlZE5vZGUg
PSBpbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbihjb25zdEFycmF5K2luc3RhbmNlU2l6ZSwg
dGVtcENvbnN0YW50Tm9kZS0+Z2V0VHlwZSgpLCBsaW5lKTsgLy8gdHlwZSB3aWxsIGJlIGNoYW5n
ZWQgaW4gdGhlIGNhbGxpbmcgZnVuY3Rpb24KLSAgICB9IGVsc2UgewotICAgICAgICBlcnJvcihs
aW5lLCAiQ2Fubm90IG9mZnNldCBpbnRvIHRoZSBzdHJ1Y3R1cmUiLCAiRXJyb3IiKTsKLSAgICAg
ICAgcmVjb3ZlcigpOwotCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIHJldHVybiB0
eXBlZE5vZGU7Ci19Ci0KLWJvb2wgVFBhcnNlQ29udGV4dDo6ZW50ZXJTdHJ1Y3REZWNsYXJhdGlv
bihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVudGlmaWVyKQotewot
ICAgICsrc3RydWN0TmVzdGluZ0xldmVsOwotCi0gICAgLy8gRW1iZWRkZWQgc3RydWN0dXJlIGRl
ZmluaXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIHBlciBHTFNMIEVTIHNwZWMuCi0gICAgLy8gVGhl
eSBhcmVuJ3QgYWxsb3dlZCBpbiBHTFNMIGVpdGhlciwgYnV0IHdlIG5lZWQgdG8gZGV0ZWN0IHRo
aXMgaGVyZQotICAgIC8vIHNvIHdlIGRvbid0IHJlbHkgb24gdGhlIEdMU0wgY29tcGlsZXIgdG8g
Y2F0Y2ggaXQuCi0gICAgaWYgKHN0cnVjdE5lc3RpbmdMZXZlbCA+IDEpIHsKLSAgICAgICAgZXJy
b3IobGluZSwgIiIsICJFbWJlZGRlZCBzdHJ1Y3QgZGVmaW5pdGlvbnMgYXJlIG5vdCBhbGxvd2Vk
Iik7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotdm9pZCBUUGFyc2VDb250ZXh0OjpleGl0U3RydWN0RGVjbGFyYXRpb24oKQotewotICAgIC0t
c3RydWN0TmVzdGluZ0xldmVsOwotfQotCi1uYW1lc3BhY2UgewotCi1jb25zdCBpbnQga1dlYkdM
TWF4U3RydWN0TmVzdGluZyA9IDQ7Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1ib29sIFRQYXJzZUNv
bnRleHQ6OnN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNv
bnN0IFRGaWVsZCYgZmllbGQpCi17Ci0gICAgaWYgKCFpc1dlYkdMQmFzZWRTcGVjKHNoYWRlclNw
ZWMpKSB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoZmllbGQudHlw
ZSgpLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRTdHJ1Y3QpIHsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLQotICAgIC8vIFdlJ3JlIGFscmVhZHkgaW5zaWRlIGEgc3RydWN0dXJlIGRlZmlu
aXRpb24gYXQgdGhpcyBwb2ludCwgc28gYWRkCi0gICAgLy8gb25lIHRvIHRoZSBmaWVsZCdzIHN0
cnVjdCBuZXN0aW5nLgotICAgIGlmICgxICsgZmllbGQudHlwZSgpLT5nZXREZWVwZXN0U3RydWN0
TmVzdGluZygpID4ga1dlYkdMTWF4U3RydWN0TmVzdGluZykgewotICAgICAgICBzdGQ6OnN0cmlu
Z3N0cmVhbSBleHRyYUluZm9TdHJlYW07Ci0gICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiUmVm
ZXJlbmNlIG9mIHN0cnVjdCB0eXBlICIgPDwgZmllbGQubmFtZSgpCi0gICAgICAgICAgICAgICAg
ICAgICAgICA8PCAiIGV4Y2VlZHMgbWF4aW11bSBzdHJ1Y3QgbmVzdGluZyBvZiAiIDw8IGtXZWJH
TE1heFN0cnVjdE5lc3Rpbmc7Ci0gICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJh
SW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAgZXJyb3IobGluZSwgIiIsICIiLCBleHRyYUluZm8u
Y19zdHIoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotLy8KLS8vIFBhcnNlIGFuIGFycmF5IGluZGV4IGV4cHJlc3Npb24KLS8vCi1USW50
ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZEluZGV4RXhwcmVzc2lvbihUSW50ZXJtVHlwZWQg
KmJhc2VFeHByZXNzaW9uLCBjb25zdCBUU291cmNlTG9jJiBsb2NhdGlvbiwgVEludGVybVR5cGVk
ICppbmRleEV4cHJlc3Npb24pCi17Ci0gICAgVEludGVybVR5cGVkICppbmRleGVkRXhwcmVzc2lv
biA9IE5VTEw7Ci0KLSAgICBpZiAoIWJhc2VFeHByZXNzaW9uLT5pc0FycmF5KCkgJiYgIWJhc2VF
eHByZXNzaW9uLT5pc01hdHJpeCgpICYmICFiYXNlRXhwcmVzc2lvbi0+aXNWZWN0b3IoKSkKLSAg
ICB7Ci0gICAgICAgIGlmIChiYXNlRXhwcmVzc2lvbi0+Z2V0QXNTeW1ib2xOb2RlKCkpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBv
ZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZlY3RvciAiLCBiYXNlRXhwcmVzc2lvbi0+Z2V0QXNT
eW1ib2xOb2RlKCktPmdldFN5bWJvbCgpLmNfc3RyKCkpOwotICAgICAgICB9Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgewotICAgICAgICAgICAgZXJyb3IobG9jYXRpb24sICIgbGVmdCBvZiAnWycg
aXMgbm90IG9mIHR5cGUgYXJyYXksIG1hdHJpeCwgb3IgdmVjdG9yICIsICJleHByZXNzaW9uIik7
Ci0gICAgICAgIH0KLSAgICAgICAgcmVjb3ZlcigpOwotICAgIH0KLQotICAgIGlmIChpbmRleEV4
cHJlc3Npb24tPmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KQotICAgIHsKLSAgICAgICAgaW50
IGluZGV4ID0gaW5kZXhFeHByZXNzaW9uLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0SUNvbnN0
KDApOwotICAgICAgICBpZiAoaW5kZXggPCAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6
OnN0cmluZ3N0cmVhbSBpbmZvU3RyZWFtOwotICAgICAgICAgICAgaW5mb1N0cmVhbSA8PCBpbmRl
eDsKLSAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGluZm8gPSBpbmZvU3RyZWFtLnN0cigpOwotICAg
ICAgICAgICAgZXJyb3IobG9jYXRpb24sICJuZWdhdGl2ZSBpbmRleCIsIGluZm8uY19zdHIoKSk7
Ci0gICAgICAgICAgICByZWNvdmVyKCk7Ci0gICAgICAgICAgICBpbmRleCA9IDA7Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKGJhc2VFeHByZXNzaW9uLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkg
PT0gRXZxQ29uc3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChiYXNlRXhwcmVzc2lvbi0+
aXNBcnJheSgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIGNvbnN0YW50IGZv
bGRpbmcgZm9yIGFycmF5cwotICAgICAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0gYWRk
Q29uc3RBcnJheU5vZGUoaW5kZXgsIGJhc2VFeHByZXNzaW9uLCBsb2NhdGlvbik7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNWZWN0b3IoKSkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBjb25zdGFudCBmb2xkaW5nIGZvciB2
ZWN0b3JzCi0gICAgICAgICAgICAgICAgVFZlY3RvckZpZWxkcyBmaWVsZHM7Ci0gICAgICAgICAg
ICAgICAgZmllbGRzLm51bSA9IDE7Ci0gICAgICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbMF0g
PSBpbmRleDsgLy8gbmVlZCB0byBkbyBpdCB0aGlzIHdheSBiZWNhdXNlIHYueHkgc2VuZHMgZmll
bGRzIGludGVnZXIgYXJyYXkKLSAgICAgICAgICAgICAgICBpbmRleGVkRXhwcmVzc2lvbiA9IGFk
ZENvbnN0VmVjdG9yTm9kZShmaWVsZHMsIGJhc2VFeHByZXNzaW9uLCBsb2NhdGlvbik7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNNYXRyaXgo
KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBjb25zdGFudCBmb2xkaW5nIGZv
ciBtYXRyaWNlcwotICAgICAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0gYWRkQ29uc3RN
YXRyaXhOb2RlKGluZGV4LCBiYXNlRXhwcmVzc2lvbiwgbG9jYXRpb24pOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGJh
c2VFeHByZXNzaW9uLT5pc0FycmF5KCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
aWYgKGluZGV4ID49IGJhc2VFeHByZXNzaW9uLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkpCi0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBl
eHRyYUluZm9TdHJlYW07Ci0gICAgICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAi
YXJyYXkgaW5kZXggb3V0IG9mIHJhbmdlICciIDw8IGluZGV4IDw8ICInIjsKLSAgICAgICAgICAg
ICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwot
ICAgICAgICAgICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwgIiIsICJbIiwgZXh0cmFJbmZvLmNf
c3RyKCkpOwotICAgICAgICAgICAgICAgICAgICByZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGluZGV4ID0gYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSAtIDE7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJhc2VFeHByZXNz
aW9uLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFGcmFnRGF0YSAmJiBpbmRleCA+IDAgJiYgIWlzRXh0
ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyIpKQotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgZXJyb3IobG9jYXRpb24sICIiLCAiWyIsICJhcnJheSBpbmRl
eGVzIGZvciBnbF9GcmFnRGF0YSBtdXN0IGJlIHplcm8gd2hlbiBHTF9FWFRfZHJhd19idWZmZXJz
IGlzIGRpc2FibGVkIik7Ci0gICAgICAgICAgICAgICAgICAgIHJlY292ZXIoKTsKLSAgICAgICAg
ICAgICAgICAgICAgaW5kZXggPSAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGVsc2UgaWYgKChiYXNlRXhwcmVzc2lvbi0+aXNWZWN0b3IoKSB8fCBiYXNl
RXhwcmVzc2lvbi0+aXNNYXRyaXgoKSkgJiYgYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXRO
b21pbmFsU2l6ZSgpIDw9IGluZGV4KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0
ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKLSAgICAgICAgICAgICAgICBleHRyYUlu
Zm9TdHJlYW0gPDwgImZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgaW5kZXggPDwg
IiciOwotICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0
cmVhbS5zdHIoKTsKLSAgICAgICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwgIiIsICJbIiwgZXh0
cmFJbmZvLmNfc3RyKCkpOwotICAgICAgICAgICAgICAgIHJlY292ZXIoKTsKLSAgICAgICAgICAg
ICAgICBpbmRleCA9IGJhc2VFeHByZXNzaW9uLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSAt
IDE7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGluZGV4RXhwcmVzc2lvbi0+Z2V0QXND
b25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPnNldElDb25zdChpbmRleCk7
Ci0gICAgICAgICAgICBpbmRleGVkRXhwcmVzc2lvbiA9IGludGVybWVkaWF0ZS5hZGRJbmRleChF
T3BJbmRleERpcmVjdCwgYmFzZUV4cHJlc3Npb24sIGluZGV4RXhwcmVzc2lvbiwgbG9jYXRpb24p
OwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGluZGV4ZWRFeHBy
ZXNzaW9uID0gaW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4SW5kaXJlY3QsIGJhc2VFeHBy
ZXNzaW9uLCBpbmRleEV4cHJlc3Npb24sIGxvY2F0aW9uKTsKLSAgICB9Ci0KLSAgICBpZiAoaW5k
ZXhlZEV4cHJlc3Npb24gPT0gMCkKLSAgICB7Ci0gICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9u
QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKLSAgICAgICAgdW5pb25BcnJheS0+c2V0RkNv
bnN0KDAuMGYpOwotICAgICAgICBpbmRleGVkRXhwcmVzc2lvbiA9IGludGVybWVkaWF0ZS5hZGRD
b25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBIaWdoLCBFdnFDb25z
dCksIGxvY2F0aW9uKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoYmFzZUV4cHJlc3Npb24tPmlzQXJy
YXkoKSkKLSAgICB7Ci0gICAgICAgIGNvbnN0IFRUeXBlICZiYXNlVHlwZSA9IGJhc2VFeHByZXNz
aW9uLT5nZXRUeXBlKCk7Ci0gICAgICAgIGlmIChiYXNlVHlwZS5nZXRTdHJ1Y3QoKSkKLSAgICAg
ICAgewotICAgICAgICAgICAgVFR5cGUgY29weU9mVHlwZShiYXNlVHlwZS5nZXRTdHJ1Y3QoKSk7
Ci0gICAgICAgICAgICBpbmRleGVkRXhwcmVzc2lvbi0+c2V0VHlwZShjb3B5T2ZUeXBlKTsKLSAg
ICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGluZGV4ZWRFeHBy
ZXNzaW9uLT5zZXRUeXBlKFRUeXBlKGJhc2VFeHByZXNzaW9uLT5nZXRCYXNpY1R5cGUoKSwgYmFz
ZUV4cHJlc3Npb24tPmdldFByZWNpc2lvbigpLCBFdnFUZW1wb3JhcnksIGJhc2VFeHByZXNzaW9u
LT5nZXROb21pbmFsU2l6ZSgpLCBiYXNlRXhwcmVzc2lvbi0+aXNNYXRyaXgoKSkpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKGJhc2VFeHByZXNzaW9uLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVy
KCkgPT0gRXZxQ29uc3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9u
LT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwotICAgICAgICB9Ci0g
ICAgfQotICAgIGVsc2UgaWYgKGJhc2VFeHByZXNzaW9uLT5pc01hdHJpeCgpKQotICAgIHsKLSAg
ICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSBiYXNlRXhwcmVzc2lvbi0+Z2V0VHlwZSgpLmdl
dFF1YWxpZmllcigpID09IEV2cUNvbnN0ID8gRXZxQ29uc3QgOiBFdnFUZW1wb3Jhcnk7Ci0gICAg
ICAgIGluZGV4ZWRFeHByZXNzaW9uLT5zZXRUeXBlKFRUeXBlKGJhc2VFeHByZXNzaW9uLT5nZXRC
YXNpY1R5cGUoKSwgYmFzZUV4cHJlc3Npb24tPmdldFByZWNpc2lvbigpLCBxdWFsaWZpZXIsIGJh
c2VFeHByZXNzaW9uLT5nZXROb21pbmFsU2l6ZSgpKSk7Ci0gICAgfQotICAgIGVsc2UgaWYgKGJh
c2VFeHByZXNzaW9uLT5pc1ZlY3RvcigpKQotICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFs
aWZpZXIgPSBiYXNlRXhwcmVzc2lvbi0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNv
bnN0ID8gRXZxQ29uc3QgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgIGluZGV4ZWRFeHByZXNzaW9u
LT5zZXRUeXBlKFRUeXBlKGJhc2VFeHByZXNzaW9uLT5nZXRCYXNpY1R5cGUoKSwgYmFzZUV4cHJl
c3Npb24tPmdldFByZWNpc2lvbigpLCBxdWFsaWZpZXIpKTsKLSAgICB9Ci0gICAgZWxzZQotICAg
IHsKLSAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24tPnNldFR5cGUoYmFzZUV4cHJlc3Npb24tPmdl
dFR5cGUoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGluZGV4ZWRFeHByZXNzaW9uOwotfQotCi0v
LwotLy8gUGFyc2UgYW4gYXJyYXkgb2Ygc3RyaW5ncyB1c2luZyB5eXBhcnNlLgotLy8KLS8vIFJl
dHVybnMgMCBmb3Igc3VjY2Vzcy4KLS8vCi1pbnQgUGFQYXJzZVN0cmluZ3Moc2l6ZV90IGNvdW50
LCBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdLAotICAgICAg
ICAgICAgICAgICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpIHsKLSAgICBpZiAoKGNvdW50ID09
IDApIHx8IChzdHJpbmcgPT0gTlVMTCkpCi0gICAgICAgIHJldHVybiAxOwotCi0gICAgaWYgKGds
c2xhbmdfaW5pdGlhbGl6ZShjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICBpbnQg
ZXJyb3IgPSBnbHNsYW5nX3NjYW4oY291bnQsIHN0cmluZywgbGVuZ3RoLCBjb250ZXh0KTsKLSAg
ICBpZiAoIWVycm9yKQotICAgICAgICBlcnJvciA9IGdsc2xhbmdfcGFyc2UoY29udGV4dCk7Ci0K
LSAgICBnbHNsYW5nX2ZpbmFsaXplKGNvbnRleHQpOwotCi0gICAgcmV0dXJuIChlcnJvciA9PSAw
KSAmJiAoY29udGV4dC0+bnVtRXJyb3JzKCkgPT0gMCkgPyAwIDogMTsKLX0KLQotCi0KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBl
ci5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvUGFyc2VIZWxwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxMzQgKzAsMCBAQAotLy8K
LS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgotLy8KLSNpZm5kZWYgX1BBUlNFUl9IRUxQRVJfSU5DTFVERURfCi0jZGVmaW5l
IF9QQVJTRVJfSEVMUEVSX0lOQ0xVREVEXwotCi0jaW5jbHVkZSAiY29tcGlsZXIvRGlhZ25vc3Rp
Y3MuaCIKLSNpbmNsdWRlICJjb21waWxlci9EaXJlY3RpdmVIYW5kbGVyLmgiCi0jaW5jbHVkZSAi
Y29tcGlsZXIvbG9jYWxpbnRlcm1lZGlhdGUuaCIKLSNpbmNsdWRlICJjb21waWxlci9wcmVwcm9j
ZXNzb3IvUHJlcHJvY2Vzc29yLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvU2hIYW5kbGUuaCIKLSNp
bmNsdWRlICJjb21waWxlci9TeW1ib2xUYWJsZS5oIgotCi1zdHJ1Y3QgVE1hdHJpeEZpZWxkcyB7
Ci0gICAgYm9vbCB3aG9sZVJvdzsKLSAgICBib29sIHdob2xlQ29sOwotICAgIGludCByb3c7Ci0g
ICAgaW50IGNvbDsKLX07Ci0KLS8vCi0vLyBUaGUgZm9sbG93aW5nIGFyZSBleHRyYSB2YXJpYWJs
ZXMgbmVlZGVkIGR1cmluZyBwYXJzaW5nLCBncm91cGVkIHRvZ2V0aGVyIHNvCi0vLyB0aGV5IGNh
biBiZSBwYXNzZWQgdG8gdGhlIHBhcnNlciB3aXRob3V0IG5lZWRpbmcgYSBnbG9iYWwuCi0vLwot
c3RydWN0IFRQYXJzZUNvbnRleHQgewotICAgIFRQYXJzZUNvbnRleHQoVFN5bWJvbFRhYmxlJiBz
eW10LCBURXh0ZW5zaW9uQmVoYXZpb3ImIGV4dCwgVEludGVybWVkaWF0ZSYgaW50ZXJtLCBTaFNo
YWRlclR5cGUgdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsIGludCBvcHRpb25zLCBib29sIGNoZWNr
c1ByZWNFcnJvcnMsIGNvbnN0IGNoYXIqIHNvdXJjZVBhdGgsIFRJbmZvU2luayYgaXMpIDoKLSAg
ICAgICAgICAgIGludGVybWVkaWF0ZShpbnRlcm0pLAotICAgICAgICAgICAgc3ltYm9sVGFibGUo
c3ltdCksCi0gICAgICAgICAgICBzaGFkZXJUeXBlKHR5cGUpLAotICAgICAgICAgICAgc2hhZGVy
U3BlYyhzcGVjKSwKLSAgICAgICAgICAgIGNvbXBpbGVPcHRpb25zKG9wdGlvbnMpLAotICAgICAg
ICAgICAgc291cmNlUGF0aChzb3VyY2VQYXRoKSwKLSAgICAgICAgICAgIHRyZWVSb290KDApLAot
ICAgICAgICAgICAgbG9vcE5lc3RpbmdMZXZlbCgwKSwKLSAgICAgICAgICAgIHN0cnVjdE5lc3Rp
bmdMZXZlbCgwKSwKLSAgICAgICAgICAgIGN1cnJlbnRGdW5jdGlvblR5cGUoTlVMTCksCi0gICAg
ICAgICAgICBmdW5jdGlvblJldHVybnNWYWx1ZShmYWxzZSksCi0gICAgICAgICAgICBjaGVja3NQ
cmVjaXNpb25FcnJvcnMoY2hlY2tzUHJlY0Vycm9ycyksCi0gICAgICAgICAgICBkaWFnbm9zdGlj
cyhpcyksCi0gICAgICAgICAgICBkaXJlY3RpdmVIYW5kbGVyKGV4dCwgZGlhZ25vc3RpY3MpLAot
ICAgICAgICAgICAgcHJlcHJvY2Vzc29yKCZkaWFnbm9zdGljcywgJmRpcmVjdGl2ZUhhbmRsZXIp
LAotICAgICAgICAgICAgc2Nhbm5lcihOVUxMKSB7ICB9Ci0gICAgVEludGVybWVkaWF0ZSYgaW50
ZXJtZWRpYXRlOyAvLyB0byBob2xkIGFuZCBidWlsZCBhIHBhcnNlIHRyZWUKLSAgICBUU3ltYm9s
VGFibGUmIHN5bWJvbFRhYmxlOyAgIC8vIHN5bWJvbCB0YWJsZSB0aGF0IGdvZXMgd2l0aCB0aGUg
bGFuZ3VhZ2UgY3VycmVudGx5IGJlaW5nIHBhcnNlZAotICAgIFNoU2hhZGVyVHlwZSBzaGFkZXJU
eXBlOyAgICAgICAgICAgICAgLy8gdmVydGV4IG9yIGZyYWdtZW50IGxhbmd1YWdlIChmdXR1cmU6
IHBhY2sgb3IgdW5wYWNrKQotICAgIFNoU2hhZGVyU3BlYyBzaGFkZXJTcGVjOyAgICAgICAgICAg
ICAgLy8gVGhlIGxhbmd1YWdlIHNwZWNpZmljYXRpb24gY29tcGlsZXIgY29uZm9ybXMgdG8gLSBH
TEVTMiBvciBXZWJHTC4KLSAgICBpbnQgY29tcGlsZU9wdGlvbnM7Ci0gICAgY29uc3QgY2hhciog
c291cmNlUGF0aDsgICAgICAvLyBQYXRoIG9mIHNvdXJjZSBmaWxlIG9yIE5VTEwuCi0gICAgVElu
dGVybU5vZGUqIHRyZWVSb290OyAgICAgICAvLyByb290IG9mIHBhcnNlIHRyZWUgYmVpbmcgY3Jl
YXRlZAotICAgIGludCBsb29wTmVzdGluZ0xldmVsOyAgICAgICAgLy8gMCBpZiBvdXRzaWRlIGFs
bCBsb29wcwotICAgIGludCBzdHJ1Y3ROZXN0aW5nTGV2ZWw7ICAgICAgLy8gaW5jcmVtZW50ZWQg
d2hpbGUgcGFyc2luZyBhIHN0cnVjdCBkZWNsYXJhdGlvbgotICAgIGNvbnN0IFRUeXBlKiBjdXJy
ZW50RnVuY3Rpb25UeXBlOyAgLy8gdGhlIHJldHVybiB0eXBlIG9mIHRoZSBmdW5jdGlvbiB0aGF0
J3MgY3VycmVudGx5IGJlaW5nIHBhcnNlZAotICAgIGJvb2wgZnVuY3Rpb25SZXR1cm5zVmFsdWU7
ICAgLy8gdHJ1ZSBpZiBhIG5vbi12b2lkIGZ1bmN0aW9uIGhhcyBhIHJldHVybgotICAgIGJvb2wg
Y2hlY2tzUHJlY2lzaW9uRXJyb3JzOyAgLy8gdHJ1ZSBpZiBhbiBlcnJvciB3aWxsIGJlIGdlbmVy
YXRlZCB3aGVuIGEgdmFyaWFibGUgaXMgZGVjbGFyZWQgd2l0aG91dCBwcmVjaXNpb24sIGV4cGxp
Y2l0IG9yIGltcGxpY2l0LgotICAgIGJvb2wgZnJhZ21lbnRQcmVjaXNpb25IaWdoOyAgLy8gdHJ1
ZSBpZiBoaWdocCBwcmVjaXNpb24gaXMgc3VwcG9ydGVkIGluIHRoZSBmcmFnbWVudCBsYW5ndWFn
ZS4KLSAgICBUU3RyaW5nIEhhc2hFcnJNc2c7Ci0gICAgVERpYWdub3N0aWNzIGRpYWdub3N0aWNz
OwotICAgIFREaXJlY3RpdmVIYW5kbGVyIGRpcmVjdGl2ZUhhbmRsZXI7Ci0gICAgcHA6OlByZXBy
b2Nlc3NvciBwcmVwcm9jZXNzb3I7Ci0gICAgdm9pZCogc2Nhbm5lcjsKLQotICAgIGludCBudW1F
cnJvcnMoKSBjb25zdCB7IHJldHVybiBkaWFnbm9zdGljcy5udW1FcnJvcnMoKTsgfQotICAgIFRJ
bmZvU2luayYgaW5mb1NpbmsoKSB7IHJldHVybiBkaWFnbm9zdGljcy5pbmZvU2luaygpOyB9Ci0g
ICAgdm9pZCBlcnJvcihjb25zdCBUU291cmNlTG9jJiBsb2MsIGNvbnN0IGNoYXIgKnJlYXNvbiwg
Y29uc3QgY2hhciogdG9rZW4sCi0gICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHRyYUluZm89
IiIpOwotICAgIHZvaWQgd2FybmluZyhjb25zdCBUU291cmNlTG9jJiBsb2MsIGNvbnN0IGNoYXIq
IHJlYXNvbiwgY29uc3QgY2hhciogdG9rZW4sCi0gICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGV4dHJhSW5mbz0iIik7Ci0gICAgdm9pZCB0cmFjZShjb25zdCBjaGFyKiBzdHIpOwotICAgIHZv
aWQgcmVjb3ZlcigpOwotCi0gICAgYm9vbCBwYXJzZVZlY3RvckZpZWxkcyhjb25zdCBUU3RyaW5n
JiwgaW50IHZlY1NpemUsIFRWZWN0b3JGaWVsZHMmLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKTsK
LSAgICBib29sIHBhcnNlTWF0cml4RmllbGRzKGNvbnN0IFRTdHJpbmcmLCBpbnQgbWF0U2l6ZSwg
VE1hdHJpeEZpZWxkcyYsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpOwotCi0gICAgYm9vbCByZXNl
cnZlZEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYgaWRl
bnRpZmllcik7Ci0gICAgdm9pZCBhc3NpZ25FcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBj
b25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KTsKLSAgICB2b2lkIHVu
YXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmlu
ZyBvcGVyYW5kKTsKLSAgICB2b2lkIGJpbmFyeU9wRXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbGlu
ZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCk7Ci0gICAgYm9v
bCBwcmVjaXNpb25FcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQcmVjaXNpb24g
cHJlY2lzaW9uLCBUQmFzaWNUeXBlIHR5cGUpOwotICAgIGJvb2wgbFZhbHVlRXJyb3JDaGVjayhj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVEludGVybVR5cGVkKik7Ci0g
ICAgYm9vbCBjb25zdEVycm9yQ2hlY2soVEludGVybVR5cGVkKiBub2RlKTsKLSAgICBib29sIGlu
dGVnZXJFcnJvckNoZWNrKFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgY2hhciogdG9rZW4pOwot
ICAgIGJvb2wgZ2xvYmFsRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBib29sIGds
b2JhbCwgY29uc3QgY2hhciogdG9rZW4pOwotICAgIGJvb2wgY29uc3RydWN0b3JFcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRJbnRlcm1Ob2RlKiwgVEZ1bmN0aW9uJiwgVE9wZXJh
dG9yLCBUVHlwZSopOwotICAgIGJvb2wgYXJyYXlTaXplRXJyb3JDaGVjayhjb25zdCBUU291cmNl
TG9jJiBsaW5lLCBUSW50ZXJtVHlwZWQqIGV4cHIsIGludCYgc2l6ZSk7Ci0gICAgYm9vbCBhcnJh
eVF1YWxpZmllckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFB1YmxpY1R5cGUg
dHlwZSk7Ci0gICAgYm9vbCBhcnJheVR5cGVFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxp
bmUsIFRQdWJsaWNUeXBlIHR5cGUpOwotICAgIGJvb2wgYXJyYXlFcnJvckNoZWNrKGNvbnN0IFRT
b3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlIHR5cGUsIFRW
YXJpYWJsZSomIHZhcmlhYmxlKTsKLSAgICBib29sIHZvaWRFcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MmLCBjb25zdCBUU3RyaW5nJiwgY29uc3QgVFB1YmxpY1R5cGUmKTsKLSAgICBib29sIGJv
b2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmLCBjb25zdCBUSW50ZXJtVHlwZWQqKTsKLSAg
ICBib29sIGJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmLCBjb25zdCBUUHVibGljVHlw
ZSYpOwotICAgIGJvb2wgc2FtcGxlckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwg
Y29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlLCBjb25zdCBjaGFyKiByZWFzb24pOwotICAgIGJvb2wg
c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBU
UHVibGljVHlwZSYgcFR5cGUpOwotICAgIGJvb2wgcGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFF1YWxpZmllciBxdWFsaWZpZXIsIGNvbnN0IFRUeXBl
JiB0eXBlKTsKLSAgICBib29sIG5vbkluaXRDb25zdEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxv
YyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHR5cGUsIGJvb2wgYXJy
YXkpOwotICAgIGJvb2wgbm9uSW5pdEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwg
VFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHR5cGUsIFRWYXJpYWJsZSomIHZhcmlh
YmxlKTsKLSAgICBib29sIHBhcmFtRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBU
UXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1YWxpZmllciwgVFR5cGUqIHR5
cGUpOwotICAgIGJvb2wgZXh0ZW5zaW9uRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5l
LCBjb25zdCBUU3RyaW5nJik7Ci0KLSAgICBjb25zdCBUUHJhZ21hJiBwcmFnbWEoKSBjb25zdCB7
IHJldHVybiBkaXJlY3RpdmVIYW5kbGVyLnByYWdtYSgpOyB9Ci0gICAgY29uc3QgVEV4dGVuc2lv
bkJlaGF2aW9yJiBleHRlbnNpb25CZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIGRpcmVjdGl2ZUhh
bmRsZXIuZXh0ZW5zaW9uQmVoYXZpb3IoKTsgfQotICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24o
Y29uc3QgY2hhciogZXh0ZW5zaW9uKTsKLSAgICBib29sIGlzRXh0ZW5zaW9uRW5hYmxlZChjb25z
dCBjaGFyKiBleHRlbnNpb24pIGNvbnN0OwotCi0gICAgYm9vbCBjb250YWluc1NhbXBsZXIoVFR5
cGUmIHR5cGUpOwotICAgIGJvb2wgYXJlQWxsQ2hpbGRDb25zdChUSW50ZXJtQWdncmVnYXRlKiBh
Z2dyTm9kZSk7Ci0gICAgY29uc3QgVEZ1bmN0aW9uKiBmaW5kRnVuY3Rpb24oY29uc3QgVFNvdXJj
ZUxvYyYgbGluZSwgVEZ1bmN0aW9uKiBwZm5DYWxsLCBib29sICpidWlsdEluID0gMCk7Ci0gICAg
Ym9vbCBleGVjdXRlSW5pdGlhbGl6ZXIoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYg
aWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHBUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRJbnRlcm1UeXBlZCogaW5pdGlhbGl6ZXIsIFRJbnRlcm1Ob2RlKiYgaW50ZXJtTm9kZSwg
VFZhcmlhYmxlKiB2YXJpYWJsZSA9IDApOwotCi0gICAgVEludGVybVR5cGVkKiBhZGRDb25zdHJ1
Y3RvcihUSW50ZXJtTm9kZSosIGNvbnN0IFRUeXBlKiwgVE9wZXJhdG9yLCBURnVuY3Rpb24qLCBj
b25zdCBUU291cmNlTG9jJik7Ci0gICAgVEludGVybVR5cGVkKiBmb2xkQ29uc3RDb25zdHJ1Y3Rv
cihUSW50ZXJtQWdncmVnYXRlKiBhZ2dyTm9kZSwgY29uc3QgVFR5cGUmIHR5cGUpOwotICAgIFRJ
bnRlcm1UeXBlZCogY29uc3RydWN0U3RydWN0KFRJbnRlcm1Ob2RlKiwgVFR5cGUqLCBpbnQsIGNv
bnN0IFRTb3VyY2VMb2MmLCBib29sIHN1YnNldCk7Ci0gICAgVEludGVybVR5cGVkKiBjb25zdHJ1
Y3RCdWlsdEluKGNvbnN0IFRUeXBlKiwgVE9wZXJhdG9yLCBUSW50ZXJtTm9kZSosIGNvbnN0IFRT
b3VyY2VMb2MmLCBib29sIHN1YnNldCk7Ci0gICAgVEludGVybVR5cGVkKiBhZGRDb25zdFZlY3Rv
ck5vZGUoVFZlY3RvckZpZWxkcyYsIFRJbnRlcm1UeXBlZCosIGNvbnN0IFRTb3VyY2VMb2MmKTsK
LSAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0TWF0cml4Tm9kZShpbnQgLCBUSW50ZXJtVHlwZWQq
LCBjb25zdCBUU291cmNlTG9jJik7Ci0gICAgVEludGVybVR5cGVkKiBhZGRDb25zdEFycmF5Tm9k
ZShpbnQgaW5kZXgsIFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSk7
Ci0gICAgVEludGVybVR5cGVkKiBhZGRDb25zdFN0cnVjdChUU3RyaW5nJiAsIFRJbnRlcm1UeXBl
ZCosIGNvbnN0IFRTb3VyY2VMb2MmKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZEluZGV4RXhwcmVz
c2lvbihUSW50ZXJtVHlwZWQgKmJhc2VFeHByZXNzaW9uLCBjb25zdCBUU291cmNlTG9jJiBsb2Nh
dGlvbiwgVEludGVybVR5cGVkICppbmRleEV4cHJlc3Npb24pOwotCi0gICAgLy8gUGVyZm9ybXMg
YW4gZXJyb3IgY2hlY2sgZm9yIGVtYmVkZGVkIHN0cnVjdCBkZWNsYXJhdGlvbnMuCi0gICAgLy8g
UmV0dXJucyB0cnVlIGlmIGFuIGVycm9yIHdhcyByYWlzZWQgZHVlIHRvIHRoZSBkZWNsYXJhdGlv
biBvZgotICAgIC8vIHRoaXMgc3RydWN0LgotICAgIGJvb2wgZW50ZXJTdHJ1Y3REZWNsYXJhdGlv
bihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVudGlmaWVyKTsKLSAg
ICB2b2lkIGV4aXRTdHJ1Y3REZWNsYXJhdGlvbigpOwotCi0gICAgYm9vbCBzdHJ1Y3ROZXN0aW5n
RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBURmllbGQmIGZpZWxkKTsK
LX07Ci0KLWludCBQYVBhcnNlU3RyaW5ncyhzaXplX3QgY291bnQsIGNvbnN0IGNoYXIqIGNvbnN0
IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10sCi0gICAgICAgICAgICAgICAgICAgVFBhcnNl
Q29udGV4dCogY29udGV4dCk7Ci0KLSNlbmRpZiAvLyBfUEFSU0VSX0hFTFBFUl9JTkNMVURFRF8K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Qb29sQWxsb2MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Qb29s
QWxsb2MuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvUG9vbEFsbG9jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcsNTUgKzE3LDMy
IEBACiAKIE9TX1RMU0luZGV4IFBvb2xJbmRleCA9IE9TX0lOVkFMSURfVExTX0lOREVYOwogCi12
b2lkIEluaXRpYWxpemVHbG9iYWxQb29scygpCi17Ci0gICAgVFRocmVhZEdsb2JhbFBvb2xzKiBn
bG9iYWxQb29scz0gc3RhdGljX2Nhc3Q8VFRocmVhZEdsb2JhbFBvb2xzKj4oT1NfR2V0VExTVmFs
dWUoUG9vbEluZGV4KSk7ICAgIAotICAgIGlmIChnbG9iYWxQb29scykKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgVFRocmVhZEdsb2JhbFBvb2xzKiB0aHJlYWREYXRhID0gbmV3IFRUaHJlYWRHbG9i
YWxQb29scygpOwotICAgIHRocmVhZERhdGEtPmdsb2JhbFBvb2xBbGxvY2F0b3IgPSAwOwotCi0g
ICAgT1NfU2V0VExTVmFsdWUoUG9vbEluZGV4LCB0aHJlYWREYXRhKTsKLX0KLQotdm9pZCBGcmVl
R2xvYmFsUG9vbHMoKQotewotICAgIC8vIFJlbGVhc2UgdGhlIGFsbG9jYXRlZCBtZW1vcnkgZm9y
IHRoaXMgdGhyZWFkLgotICAgIFRUaHJlYWRHbG9iYWxQb29scyogZ2xvYmFsUG9vbHM9IHN0YXRp
Y19jYXN0PFRUaHJlYWRHbG9iYWxQb29scyo+KE9TX0dldFRMU1ZhbHVlKFBvb2xJbmRleCkpOyAg
ICAKLSAgICBpZiAoIWdsb2JhbFBvb2xzKQotICAgICAgICByZXR1cm47Ci0gCi0gICAgZGVsZXRl
IGdsb2JhbFBvb2xzOwotfQotCiBib29sIEluaXRpYWxpemVQb29sSW5kZXgoKQogewotICAgIC8v
IEFsbG9jYXRlIGEgVExTIGluZGV4LgotICAgIGlmICgoUG9vbEluZGV4ID0gT1NfQWxsb2NUTFNJ
bmRleCgpKSA9PSBPU19JTlZBTElEX1RMU19JTkRFWCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGFzc2VydChQb29sSW5kZXggPT0gT1NfSU5WQUxJRF9UTFNfSU5ERVgpOwogCi0gICAgcmV0
dXJuIHRydWU7CisgICAgUG9vbEluZGV4ID0gT1NfQWxsb2NUTFNJbmRleCgpOworICAgIHJldHVy
biBQb29sSW5kZXggIT0gT1NfSU5WQUxJRF9UTFNfSU5ERVg7CiB9CiAKIHZvaWQgRnJlZVBvb2xJ
bmRleCgpCiB7Ci0gICAgLy8gUmVsZWFzZSB0aGUgVExTIGluZGV4LgorICAgIGFzc2VydChQb29s
SW5kZXggIT0gT1NfSU5WQUxJRF9UTFNfSU5ERVgpOworCiAgICAgT1NfRnJlZVRMU0luZGV4KFBv
b2xJbmRleCk7CisgICAgUG9vbEluZGV4ID0gT1NfSU5WQUxJRF9UTFNfSU5ERVg7CiB9CiAKLVRQ
b29sQWxsb2NhdG9yJiBHZXRHbG9iYWxQb29sQWxsb2NhdG9yKCkKK1RQb29sQWxsb2NhdG9yKiBH
ZXRHbG9iYWxQb29sQWxsb2NhdG9yKCkKIHsKLSAgICBUVGhyZWFkR2xvYmFsUG9vbHMqIHRocmVh
ZERhdGEgPSBzdGF0aWNfY2FzdDxUVGhyZWFkR2xvYmFsUG9vbHMqPihPU19HZXRUTFNWYWx1ZShQ
b29sSW5kZXgpKTsKLQotICAgIHJldHVybiAqdGhyZWFkRGF0YS0+Z2xvYmFsUG9vbEFsbG9jYXRv
cjsKKyAgICBhc3NlcnQoUG9vbEluZGV4ICE9IE9TX0lOVkFMSURfVExTX0lOREVYKTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VFBvb2xBbGxvY2F0b3IqPihPU19HZXRUTFNWYWx1ZShQb29sSW5k
ZXgpKTsKIH0KIAogdm9pZCBTZXRHbG9iYWxQb29sQWxsb2NhdG9yKFRQb29sQWxsb2NhdG9yKiBw
b29sQWxsb2NhdG9yKQogewotICAgIFRUaHJlYWRHbG9iYWxQb29scyogdGhyZWFkRGF0YSA9IHN0
YXRpY19jYXN0PFRUaHJlYWRHbG9iYWxQb29scyo+KE9TX0dldFRMU1ZhbHVlKFBvb2xJbmRleCkp
OwotCi0gICAgdGhyZWFkRGF0YS0+Z2xvYmFsUG9vbEFsbG9jYXRvciA9IHBvb2xBbGxvY2F0b3I7
CisgICAgYXNzZXJ0KFBvb2xJbmRleCAhPSBPU19JTlZBTElEX1RMU19JTkRFWCk7CisgICAgT1Nf
U2V0VExTVmFsdWUoUG9vbEluZGV4LCBwb29sQWxsb2NhdG9yKTsKIH0KIAogLy8KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Qb29sQWxsb2MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUG9vbEFsbG9jLmgJKHJl
dmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Q
b29sQWxsb2MuaAkod29ya2luZyBjb3B5KQpAQCAtMjE5LDE0ICsyMTksOCBAQCBwcml2YXRlOgog
Ly8gZGlmZmVyZW50IHRpbWVzLiAgQnV0IGEgc2ltcGxlIHVzZSBpcyB0byBoYXZlIGEgZ2xvYmFs
IHBvcAogLy8gd2l0aCBldmVyeW9uZSB1c2luZyB0aGUgc2FtZSBnbG9iYWwgYWxsb2NhdG9yLgog
Ly8KLWV4dGVybiBUUG9vbEFsbG9jYXRvciYgR2V0R2xvYmFsUG9vbEFsbG9jYXRvcigpOworZXh0
ZXJuIFRQb29sQWxsb2NhdG9yKiBHZXRHbG9iYWxQb29sQWxsb2NhdG9yKCk7CiBleHRlcm4gdm9p
ZCBTZXRHbG9iYWxQb29sQWxsb2NhdG9yKFRQb29sQWxsb2NhdG9yKiBwb29sQWxsb2NhdG9yKTsK
LSNkZWZpbmUgR2xvYmFsUG9vbEFsbG9jYXRvciBHZXRHbG9iYWxQb29sQWxsb2NhdG9yKCkKLQot
c3RydWN0IFRUaHJlYWRHbG9iYWxQb29scwotewotICAgIFRQb29sQWxsb2NhdG9yKiBnbG9iYWxQ
b29sQWxsb2NhdG9yOwotfTsKIAogLy8KIC8vIFRoaXMgU1RMIGNvbXBhdGlibGUgYWxsb2NhdG9y
IGlzIGludGVuZGVkIHRvIGJlIHVzZWQgYXMgdGhlIGFsbG9jYXRvcgpAQCAtMjUzLDcgKzI0Nyw3
IEBAIHB1YmxpYzoKICAgICBwb2ludGVyIGFkZHJlc3MocmVmZXJlbmNlIHgpIGNvbnN0IHsgcmV0
dXJuICZ4OyB9CiAgICAgY29uc3RfcG9pbnRlciBhZGRyZXNzKGNvbnN0X3JlZmVyZW5jZSB4KSBj
b25zdCB7IHJldHVybiAmeDsgfQogCi0gICAgcG9vbF9hbGxvY2F0b3IoKSA6IGFsbG9jYXRvcigm
R2xvYmFsUG9vbEFsbG9jYXRvcikgeyB9CisgICAgcG9vbF9hbGxvY2F0b3IoKSA6IGFsbG9jYXRv
cihHZXRHbG9iYWxQb29sQWxsb2NhdG9yKCkpIHsgfQogICAgIHBvb2xfYWxsb2NhdG9yKFRQb29s
QWxsb2NhdG9yJiBhKSA6IGFsbG9jYXRvcigmYSkgeyB9CiAgICAgcG9vbF9hbGxvY2F0b3IoY29u
c3QgcG9vbF9hbGxvY2F0b3I8VD4mIHApIDogYWxsb2NhdG9yKHAuYWxsb2NhdG9yKSB7IH0KIApJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1NlYXJjaFN5bWJvbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TZWFy
Y2hTeW1ib2wuaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL1NlYXJjaFN5bWJvbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw3ICsxMCw3
IEBACiAjZGVmaW5lIENPTVBJTEVSX1NFQVJDSFNZTUJPTF9IXwogCiAjaW5jbHVkZSAiY29tcGls
ZXIvaW50ZXJtZWRpYXRlLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvUGFyc2VIZWxwZXIuaCIKKyNp
bmNsdWRlICJjb21waWxlci9QYXJzZUNvbnRleHQuaCIKIAogbmFtZXNwYWNlIHNoCiB7CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU2hIYW5kbGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU2hIYW5kbGUuaAko
cmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L1NoSGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogICAg
IFRJbmZvU2luayYgZ2V0SW5mb1NpbmsoKSB7IHJldHVybiBpbmZvU2luazsgfQogICAgIGNvbnN0
IFRWYXJpYWJsZUluZm9MaXN0JiBnZXRBdHRyaWJzKCkgY29uc3QgeyByZXR1cm4gYXR0cmliczsg
fQogICAgIGNvbnN0IFRWYXJpYWJsZUluZm9MaXN0JiBnZXRVbmlmb3JtcygpIGNvbnN0IHsgcmV0
dXJuIHVuaWZvcm1zOyB9CisgICAgY29uc3QgVFZhcmlhYmxlSW5mb0xpc3QmIGdldFZhcnlpbmdz
KCkgY29uc3QgeyByZXR1cm4gdmFyeWluZ3M7IH0KICAgICBpbnQgZ2V0TWFwcGVkTmFtZU1heExl
bmd0aCgpIGNvbnN0OwogCiAgICAgU2hIYXNoRnVuY3Rpb242NCBnZXRIYXNoRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBoYXNoRnVuY3Rpb247IH0KQEAgLTkwLDggKzkxLDggQEAgcHJvdGVjdGVk
OgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gc2hhZGVyIGRvZXMgbm90IGV4Y2Vl
ZCB0aGUgbWluaW11bQogICAgIC8vIGZ1bmN0aW9uYWxpdHkgbWFuZGF0ZWQgaW4gR0xTTCAxLjAg
c3BlYyBBcHBlbmRpeCBBLgogICAgIGJvb2wgdmFsaWRhdGVMaW1pdGF0aW9ucyhUSW50ZXJtTm9k
ZSogcm9vdCk7Ci0gICAgLy8gQ29sbGVjdCBpbmZvIGZvciBhbGwgYXR0cmlicyBhbmQgdW5pZm9y
bXMuCi0gICAgdm9pZCBjb2xsZWN0QXR0cmlic1VuaWZvcm1zKFRJbnRlcm1Ob2RlKiByb290KTsK
KyAgICAvLyBDb2xsZWN0IGluZm8gZm9yIGFsbCBhdHRyaWJzLCB1bmlmb3JtcywgdmFyeWluZ3Mu
CisgICAgdm9pZCBjb2xsZWN0VmFyaWFibGVzKFRJbnRlcm1Ob2RlKiByb290KTsKICAgICAvLyBN
YXAgbG9uZyB2YXJpYWJsZSBuYW1lcyBpbnRvIHNob3J0ZXIgb25lcy4KICAgICB2b2lkIG1hcExv
bmdWYXJpYWJsZU5hbWVzKFRJbnRlcm1Ob2RlKiByb290KTsKICAgICAvLyBUcmFuc2xhdGUgdG8g
b2JqZWN0IGNvZGUuCkBAIC0xNDIsNiArMTQzLDcgQEAgcHJpdmF0ZToKICAgICBUSW5mb1Npbmsg
aW5mb1Npbms7ICAvLyBPdXRwdXQgc2luay4KICAgICBUVmFyaWFibGVJbmZvTGlzdCBhdHRyaWJz
OyAgLy8gQWN0aXZlIGF0dHJpYnV0ZXMgaW4gdGhlIGNvbXBpbGVkIHNoYWRlci4KICAgICBUVmFy
aWFibGVJbmZvTGlzdCB1bmlmb3JtczsgIC8vIEFjdGl2ZSB1bmlmb3JtcyBpbiB0aGUgY29tcGls
ZWQgc2hhZGVyLgorICAgIFRWYXJpYWJsZUluZm9MaXN0IHZhcnlpbmdzOyAgLy8gVmFyeWluZ3Mg
aW4gdGhlIGNvbXBpbGVkIHNoYWRlci4KIAogICAgIC8vIENhY2hlZCBjb3B5IG9mIHRoZSByZWYt
Y291bnRlZCBzaW5nbGV0b24uCiAgICAgTG9uZ05hbWVNYXAqIGxvbmdOYW1lTWFwOwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1NoYWRlckxhbmcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaGFkZXJMYW5n
LmNwcAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL1NoYWRlckxhbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNSwyMCArMTUsMjUgQEAK
ICNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvbGVuZ3RoX2xpbWl0cy5oIgogI2luY2x1
ZGUgImNvbXBpbGVyL1NoSGFuZGxlLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvVHJhbnNsYXRvckhM
U0wuaCIKKyNpbmNsdWRlICJjb21waWxlci9WYXJpYWJsZVBhY2tlci5oIgogCiAvLwogLy8gVGhp
cyBpcyB0aGUgcGxhdGZvcm0gaW5kZXBlbmRlbnQgaW50ZXJmYWNlIGJldHdlZW4gYW4gT0dMIGRy
aXZlcgogLy8gYW5kIHRoZSBzaGFkaW5nIGxhbmd1YWdlIGNvbXBpbGVyLgogLy8KIAotc3RhdGlj
IGJvb2wgY2hlY2tBY3RpdmVVbmlmb3JtQW5kQXR0cmliTWF4TGVuZ3Rocyhjb25zdCBTaEhhbmRs
ZSBoYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBleHBlY3RlZFZhbHVlKQorc3RhdGljIGJvb2wgY2hlY2tWYXJpYWJsZU1heExl
bmd0aHMoY29uc3QgU2hIYW5kbGUgaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGV4cGVjdGVkVmFsdWUpCiB7CiAgICAgc2l6ZV90IGFjdGl2ZVVuaWZv
cm1MaW1pdCA9IDA7CiAgICAgU2hHZXRJbmZvKGhhbmRsZSwgU0hfQUNUSVZFX1VOSUZPUk1fTUFY
X0xFTkdUSCwgJmFjdGl2ZVVuaWZvcm1MaW1pdCk7CiAgICAgc2l6ZV90IGFjdGl2ZUF0dHJpYkxp
bWl0ID0gMDsKICAgICBTaEdldEluZm8oaGFuZGxlLCBTSF9BQ1RJVkVfQVRUUklCVVRFX01BWF9M
RU5HVEgsICZhY3RpdmVBdHRyaWJMaW1pdCk7Ci0gICAgcmV0dXJuIChleHBlY3RlZFZhbHVlID09
IGFjdGl2ZVVuaWZvcm1MaW1pdCAmJiBleHBlY3RlZFZhbHVlID09IGFjdGl2ZUF0dHJpYkxpbWl0
KTsKKyAgICBzaXplX3QgdmFyeWluZ0xpbWl0ID0gMDsKKyAgICBTaEdldEluZm8oaGFuZGxlLCBT
SF9WQVJZSU5HX01BWF9MRU5HVEgsICZ2YXJ5aW5nTGltaXQpOworICAgIHJldHVybiAoZXhwZWN0
ZWRWYWx1ZSA9PSBhY3RpdmVVbmlmb3JtTGltaXQgJiYKKyAgICAgICAgICAgIGV4cGVjdGVkVmFs
dWUgPT0gYWN0aXZlQXR0cmliTGltaXQgJiYKKyAgICAgICAgICAgIGV4cGVjdGVkVmFsdWUgPT0g
dmFyeWluZ0xpbWl0KTsKIH0KIAogc3RhdGljIGJvb2wgY2hlY2tNYXBwZWROYW1lTWF4TGVuZ3Ro
KGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwgc2l6ZV90IGV4cGVjdGVkVmFsdWUpCkBAIC0zOCw2MiAr
NDMsMTQgQEAgc3RhdGljIGJvb2wgY2hlY2tNYXBwZWROYW1lTWF4TGVuZ3RoKGNvbgogICAgIHJl
dHVybiAoZXhwZWN0ZWRWYWx1ZSA9PSBtYXBwZWROYW1lTWF4TGVuZ3RoKTsKIH0KIAotc3RhdGlj
IHZvaWQgZ2V0VmFyaWFibGVJbmZvKFNoU2hhZGVySW5mbyB2YXJUeXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
KiBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBzaXplLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNoRGF0YVR5cGUqIHR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhciogbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
KiBtYXBwZWROYW1lKQotewotICAgIGlmICghaGFuZGxlIHx8ICFzaXplIHx8ICF0eXBlIHx8ICFu
YW1lKQotICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKCh2YXJUeXBlID09IFNIX0FDVElWRV9B
VFRSSUJVVEVTKSB8fAotICAgICAgICAgICAodmFyVHlwZSA9PSBTSF9BQ1RJVkVfVU5JRk9STVMp
KTsKLQotICAgIFRTaEhhbmRsZUJhc2UqIGJhc2UgPSByZWludGVycHJldF9jYXN0PFRTaEhhbmRs
ZUJhc2UqPihoYW5kbGUpOwotICAgIFRDb21waWxlciogY29tcGlsZXIgPSBiYXNlLT5nZXRBc0Nv
bXBpbGVyKCk7Ci0gICAgaWYgKGNvbXBpbGVyID09IDApCi0gICAgICAgIHJldHVybjsKLQotICAg
IGNvbnN0IFRWYXJpYWJsZUluZm9MaXN0JiB2YXJMaXN0ID0gdmFyVHlwZSA9PSBTSF9BQ1RJVkVf
QVRUUklCVVRFUyA/Ci0gICAgICAgIGNvbXBpbGVyLT5nZXRBdHRyaWJzKCkgOiBjb21waWxlci0+
Z2V0VW5pZm9ybXMoKTsKLSAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHN0YXRpY19jYXN0
PGludD4odmFyTGlzdC5zaXplKCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjb25zdCBUVmFy
aWFibGVJbmZvJiB2YXJJbmZvID0gdmFyTGlzdFtpbmRleF07Ci0gICAgaWYgKGxlbmd0aCkgKmxl
bmd0aCA9IHZhckluZm8ubmFtZS5zaXplKCk7Ci0gICAgKnNpemUgPSB2YXJJbmZvLnNpemU7Ci0g
ICAgKnR5cGUgPSB2YXJJbmZvLnR5cGU7Ci0KLSAgICAvLyBUaGlzIHNpemUgbXVzdCBtYXRjaCB0
aGF0IHF1ZXJpZWQgYnkKLSAgICAvLyBTSF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIIGFuZCBT
SF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEgKLSAgICAvLyBpbiBTaEdldEluZm8sIGJlbG93
LgotICAgIHNpemVfdCBhY3RpdmVVbmlmb3JtQW5kQXR0cmliTGVuZ3RoID0gMSArIE1BWF9TWU1C
T0xfTkFNRV9MRU47Ci0gICAgQVNTRVJUKGNoZWNrQWN0aXZlVW5pZm9ybUFuZEF0dHJpYk1heExl
bmd0aHMoaGFuZGxlLCBhY3RpdmVVbmlmb3JtQW5kQXR0cmliTGVuZ3RoKSk7Ci0gICAgc3RybmNw
eShuYW1lLCB2YXJJbmZvLm5hbWUuY19zdHIoKSwgYWN0aXZlVW5pZm9ybUFuZEF0dHJpYkxlbmd0
aCk7Ci0gICAgbmFtZVthY3RpdmVVbmlmb3JtQW5kQXR0cmliTGVuZ3RoIC0gMV0gPSAwOwotICAg
IGlmIChtYXBwZWROYW1lKSB7Ci0gICAgICAgIC8vIFRoaXMgc2l6ZSBtdXN0IG1hdGNoIHRoYXQg
cXVlcmllZCBieQotICAgICAgICAvLyBTSF9NQVBQRURfTkFNRV9NQVhfTEVOR1RIIGluIFNoR2V0
SW5mbywgYmVsb3cuCi0gICAgICAgIHNpemVfdCBtYXhNYXBwZWROYW1lTGVuZ3RoID0gMSArIE1B
WF9TWU1CT0xfTkFNRV9MRU47Ci0gICAgICAgIEFTU0VSVChjaGVja01hcHBlZE5hbWVNYXhMZW5n
dGgoaGFuZGxlLCBtYXhNYXBwZWROYW1lTGVuZ3RoKSk7Ci0gICAgICAgIHN0cm5jcHkobWFwcGVk
TmFtZSwgdmFySW5mby5tYXBwZWROYW1lLmNfc3RyKCksIG1heE1hcHBlZE5hbWVMZW5ndGgpOwot
ICAgICAgICBtYXBwZWROYW1lW21heE1hcHBlZE5hbWVMZW5ndGggLSAxXSA9IDA7Ci0gICAgfQot
fQotCiAvLwotLy8gRHJpdmVyIG11c3QgY2FsbCB0aGlzIGZpcnN0LCBvbmNlLCBiZWZvcmUgZG9p
bmcgYW55IG90aGVyCi0vLyBjb21waWxlciBvcGVyYXRpb25zLgorLy8gRHJpdmVyIG11c3QgY2Fs
bCB0aGlzIGZpcnN0LCBvbmNlLCBiZWZvcmUgZG9pbmcgYW55IG90aGVyIGNvbXBpbGVyIG9wZXJh
dGlvbnMuCisvLyBTdWJzZXF1ZW50IGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24gYXJlIG5vLW9wLgog
Ly8KIGludCBTaEluaXRpYWxpemUoKQogewotICAgIGlmICghSW5pdFByb2Nlc3MoKSkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gMTsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBrSW5p
dGlhbGl6ZWQgPSBJbml0UHJvY2VzcygpOworICAgIHJldHVybiBrSW5pdGlhbGl6ZWQgPyAxIDog
MDsKIH0KIAogLy8KQEAgLTEwMSw5ICs1OCw3IEBAIGludCBTaEluaXRpYWxpemUoKQogLy8KIGlu
dCBTaEZpbmFsaXplKCkKIHsKLSAgICBpZiAoIURldGFjaFByb2Nlc3MoKSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0KKyAgICBEZXRhY2hQcm9jZXNzKCk7CiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTE0
NSw5ICsxMDAsNiBAQCBTaEhhbmRsZSBTaENvbnN0cnVjdENvbXBpbGVyKFNoU2hhZGVyVHlwCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzKiByZXNvdXJj
ZXMpCiB7Ci0gICAgaWYgKCFJbml0VGhyZWFkKCkpCi0gICAgICAgIHJldHVybiAwOwotCiAgICAg
VFNoSGFuZGxlQmFzZSogYmFzZSA9IHN0YXRpY19jYXN0PFRTaEhhbmRsZUJhc2UqPihDb25zdHJ1
Y3RDb21waWxlcih0eXBlLCBzcGVjLCBvdXRwdXQpKTsKICAgICBUQ29tcGlsZXIqIGNvbXBpbGVy
ID0gYmFzZS0+Z2V0QXNDb21waWxlcigpOwogICAgIGlmIChjb21waWxlciA9PSAwKQpAQCAtMTg2
LDkgKzEzOCw2IEBAIGludCBTaENvbXBpbGUoCiAgICAgc2l6ZV90IG51bVN0cmluZ3MsCiAgICAg
aW50IGNvbXBpbGVPcHRpb25zKQogewotICAgIGlmICghSW5pdFRocmVhZCgpKQotICAgICAgICBy
ZXR1cm4gMDsKLQogICAgIGlmIChoYW5kbGUgPT0gMCkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAg
LTIzMCw2ICsxNzksMTIgQEAgdm9pZCBTaEdldEluZm8oY29uc3QgU2hIYW5kbGUgaGFuZGxlLCBT
aAogICAgIGNhc2UgU0hfQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RIOgogICAgICAgICAqcGFy
YW1zID0gMSArIE1BWF9TWU1CT0xfTkFNRV9MRU47CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
U0hfVkFSWUlOR1M6CisgICAgICAgICpwYXJhbXMgPSBjb21waWxlci0+Z2V0VmFyeWluZ3MoKS5z
aXplKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU0hfVkFSWUlOR19NQVhfTEVOR1RIOgor
ICAgICAgICAqcGFyYW1zID0gMSArIE1BWF9TWU1CT0xfTkFNRV9MRU47CisgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgU0hfTUFQUEVEX05BTUVfTUFYX0xFTkdUSDoKICAgICAgICAgLy8gVXNlIGxv
bmdlciBsZW5ndGggdGhhbiBNQVhfU0hPUlRFTkVEX0lERU5USUZJRVJfU0laRSB0bwogICAgICAg
ICAvLyBoYW5kbGUgYXJyYXkgYW5kIHN0cnVjdCBkZXJlZmVyZW5jZXMuCkBAIC0yODcsMjggKzI0
Miw3MSBAQCB2b2lkIFNoR2V0T2JqZWN0Q29kZShjb25zdCBTaEhhbmRsZSBoYW5kCiAgICAgc3Ry
Y3B5KG9iakNvZGUsIGluZm9TaW5rLm9iai5jX3N0cigpKTsKIH0KIAotdm9pZCBTaEdldEFjdGl2
ZUF0dHJpYihjb25zdCBTaEhhbmRsZSBoYW5kbGUsCit2b2lkIFNoR2V0VmFyaWFibGVJbmZvKGNv
bnN0IFNoSGFuZGxlIGhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgU2hTaGFkZXJJbmZv
IHZhclR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmRleCwKICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90KiBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGludCog
c2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgU2hEYXRhVHlwZSogdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgU2hQcmVjaXNpb25UeXBlKiBwcmVjaXNpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgIGludCogc3RhdGljVXNlLAogICAgICAgICAgICAgICAgICAgICAgICBjaGFyKiBu
YW1lLAogICAgICAgICAgICAgICAgICAgICAgICBjaGFyKiBtYXBwZWROYW1lKQogewotICAgIGdl
dFZhcmlhYmxlSW5mbyhTSF9BQ1RJVkVfQVRUUklCVVRFUywKLSAgICAgICAgICAgICAgICAgICAg
aGFuZGxlLCBpbmRleCwgbGVuZ3RoLCBzaXplLCB0eXBlLCBuYW1lLCBtYXBwZWROYW1lKTsKLX0K
KyAgICBpZiAoIWhhbmRsZSB8fCAhc2l6ZSB8fCAhdHlwZSB8fCAhcHJlY2lzaW9uIHx8ICFzdGF0
aWNVc2UgfHwgIW5hbWUpCisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoKHZhclR5cGUgPT0g
U0hfQUNUSVZFX0FUVFJJQlVURVMpIHx8CisgICAgICAgICAgICh2YXJUeXBlID09IFNIX0FDVElW
RV9VTklGT1JNUykgfHwKKyAgICAgICAgICAgKHZhclR5cGUgPT0gU0hfVkFSWUlOR1MpKTsKIAot
dm9pZCBTaEdldEFjdGl2ZVVuaWZvcm0oY29uc3QgU2hIYW5kbGUgaGFuZGxlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
KiBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQqIHNpemUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBTaERhdGFUeXBlKiB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciogbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIG1hcHBlZE5hbWUpCi17
Ci0gICAgZ2V0VmFyaWFibGVJbmZvKFNIX0FDVElWRV9VTklGT1JNUywKLSAgICAgICAgICAgICAg
ICAgICAgaGFuZGxlLCBpbmRleCwgbGVuZ3RoLCBzaXplLCB0eXBlLCBuYW1lLCBtYXBwZWROYW1l
KTsKKyAgICBUU2hIYW5kbGVCYXNlKiBiYXNlID0gcmVpbnRlcnByZXRfY2FzdDxUU2hIYW5kbGVC
YXNlKj4oaGFuZGxlKTsKKyAgICBUQ29tcGlsZXIqIGNvbXBpbGVyID0gYmFzZS0+Z2V0QXNDb21w
aWxlcigpOworICAgIGlmIChjb21waWxlciA9PSAwKQorICAgICAgICByZXR1cm47CisKKyAgICBj
b25zdCBUVmFyaWFibGVJbmZvTGlzdCYgdmFyTGlzdCA9CisgICAgICAgIHZhclR5cGUgPT0gU0hf
QUNUSVZFX0FUVFJJQlVURVMgPyBjb21waWxlci0+Z2V0QXR0cmlicygpIDoKKyAgICAgICAgICAg
ICh2YXJUeXBlID09IFNIX0FDVElWRV9VTklGT1JNUyA/IGNvbXBpbGVyLT5nZXRVbmlmb3Jtcygp
IDoKKyAgICAgICAgICAgICAgICBjb21waWxlci0+Z2V0VmFyeWluZ3MoKSk7CisgICAgaWYgKGlu
ZGV4IDwgMCB8fCBpbmRleCA+PSBzdGF0aWNfY2FzdDxpbnQ+KHZhckxpc3Quc2l6ZSgpKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgY29uc3QgVFZhcmlhYmxlSW5mbyYgdmFySW5mbyA9IHZhckxp
c3RbaW5kZXhdOworICAgIGlmIChsZW5ndGgpICpsZW5ndGggPSB2YXJJbmZvLm5hbWUuc2l6ZSgp
OworICAgICpzaXplID0gdmFySW5mby5zaXplOworICAgICp0eXBlID0gdmFySW5mby50eXBlOwor
ICAgIHN3aXRjaCAodmFySW5mby5wcmVjaXNpb24pIHsKKyAgICBjYXNlIEVicExvdzoKKyAgICAg
ICAgKnByZWNpc2lvbiA9IFNIX1BSRUNJU0lPTl9MT1dQOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEVicE1lZGl1bToKKyAgICAgICAgKnByZWNpc2lvbiA9IFNIX1BSRUNJU0lPTl9NRURJVU1Q
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVicEhpZ2g6CisgICAgICAgICpwcmVjaXNpb24g
PSBTSF9QUkVDSVNJT05fSElHSFA7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIC8vIFNvbWUgdHlwZXMgZG9lcyBub3Qgc3VwcG9ydCBwcmVjaXNpb24sIGZvciBleGFtcGxl
LCBib29sZWFuLgorICAgICAgICAqcHJlY2lzaW9uID0gU0hfUFJFQ0lTSU9OX1VOREVGSU5FRDsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICpzdGF0aWNVc2UgPSB2YXJJbmZvLnN0YXRpY1Vz
ZSA/IDEgOiAwOworCisgICAgLy8gVGhpcyBzaXplIG11c3QgbWF0Y2ggdGhhdCBxdWVyaWVkIGJ5
CisgICAgLy8gU0hfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCwgU0hfQUNUSVZFX0FUVFJJQlVU
RV9NQVhfTEVOR1RILCBTSF9WQVJZSU5HX01BWF9MRU5HVEgKKyAgICAvLyBpbiBTaEdldEluZm8s
IGJlbG93LgorICAgIHNpemVfdCB2YXJpYWJsZUxlbmd0aCA9IDEgKyBNQVhfU1lNQk9MX05BTUVf
TEVOOworICAgIEFTU0VSVChjaGVja1ZhcmlhYmxlTWF4TGVuZ3RocyhoYW5kbGUsIHZhcmlhYmxl
TGVuZ3RoKSk7CisgICAgc3RybmNweShuYW1lLCB2YXJJbmZvLm5hbWUuY19zdHIoKSwgdmFyaWFi
bGVMZW5ndGgpOworICAgIG5hbWVbdmFyaWFibGVMZW5ndGggLSAxXSA9IDA7CisgICAgaWYgKG1h
cHBlZE5hbWUpIHsKKyAgICAgICAgLy8gVGhpcyBzaXplIG11c3QgbWF0Y2ggdGhhdCBxdWVyaWVk
IGJ5CisgICAgICAgIC8vIFNIX01BUFBFRF9OQU1FX01BWF9MRU5HVEggaW4gU2hHZXRJbmZvLCBi
ZWxvdy4KKyAgICAgICAgc2l6ZV90IG1heE1hcHBlZE5hbWVMZW5ndGggPSAxICsgTUFYX1NZTUJP
TF9OQU1FX0xFTjsKKyAgICAgICAgQVNTRVJUKGNoZWNrTWFwcGVkTmFtZU1heExlbmd0aChoYW5k
bGUsIG1heE1hcHBlZE5hbWVMZW5ndGgpKTsKKyAgICAgICAgc3RybmNweShtYXBwZWROYW1lLCB2
YXJJbmZvLm1hcHBlZE5hbWUuY19zdHIoKSwgbWF4TWFwcGVkTmFtZUxlbmd0aCk7CisgICAgICAg
IG1hcHBlZE5hbWVbbWF4TWFwcGVkTmFtZUxlbmd0aCAtIDFdID0gMDsKKyAgICB9CiB9CiAKIHZv
aWQgU2hHZXROYW1lSGFzaGluZ0VudHJ5KGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwKQEAgLTM3MSwz
ICszNjksMTkgQEAgdm9pZCBTaEdldEluZm9Qb2ludGVyKGNvbnN0IFNoSGFuZGxlIGhhbgogICAg
IGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CiAgICAgfQogfQorCitpbnQgU2hDaGVja1ZhcmlhYmxl
c1dpdGhpblBhY2tpbmdMaW1pdHMoCisgICAgaW50IG1heFZlY3RvcnMsIFNoVmFyaWFibGVJbmZv
KiB2YXJJbmZvQXJyYXksIHNpemVfdCB2YXJJbmZvQXJyYXlTaXplKQoreworICAgIGlmICh2YXJJ
bmZvQXJyYXlTaXplID09IDApCisgICAgICAgIHJldHVybiAxOworICAgIEFTU0VSVCh2YXJJbmZv
QXJyYXkpOworICAgIFRWYXJpYWJsZUluZm9MaXN0IHZhcmlhYmxlczsKKyAgICBmb3IgKHNpemVf
dCBpaSA9IDA7IGlpIDwgdmFySW5mb0FycmF5U2l6ZTsgKytpaSkKKyAgICB7CisgICAgICAgIFRW
YXJpYWJsZUluZm8gdmFyKHZhckluZm9BcnJheVtpaV0udHlwZSwgdmFySW5mb0FycmF5W2lpXS5z
aXplKTsKKyAgICAgICAgdmFyaWFibGVzLnB1c2hfYmFjayh2YXIpOworICAgIH0KKyAgICBWYXJp
YWJsZVBhY2tlciBwYWNrZXI7CisgICAgcmV0dXJuIHBhY2tlci5DaGVja1ZhcmlhYmxlc1dpdGhp
blBhY2tpbmdMaW1pdHMobWF4VmVjdG9ycywgdmFyaWFibGVzKSA/IDEgOiAwOworfQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFi
bGUuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvU3ltYm9sVGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsMyArMjA2LDEx
IEBAIHZvaWQgVFN5bWJvbFRhYmxlTGV2ZWw6OnJlbGF0ZVRvRXh0ZW5zaW8KICAgICAgICAgICAg
IHN5bWJvbC0+cmVsYXRlVG9FeHRlbnNpb24oZXh0KTsKICAgICB9CiB9CisKK1RTeW1ib2xUYWJs
ZTo6flRTeW1ib2xUYWJsZSgpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0YWJsZS5z
aXplKCk7ICsraSkKKyAgICAgICAgZGVsZXRlIHRhYmxlW2ldOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcHJlY2lzaW9uU3RhY2suc2l6ZSgpOyArK2kpCisgICAgICAgIGRlbGV0ZSBwcmVj
aXNpb25TdGFja1tpXTsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNDEsOSArNDEsMTAgQEAKIC8vCiBjbGFzcyBUU3ltYm9sIHsgICAgCiBwdWJsaWM6Ci0g
ICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxsb2NhdG9yKQotICAgIFRT
eW1ib2woY29uc3QgVFN0cmluZyAqbikgOiAgbmFtZShuKSB7IH0KKyAgICBQT09MX0FMTE9DQVRP
Ul9ORVdfREVMRVRFKCk7CisgICAgVFN5bWJvbChjb25zdCBUU3RyaW5nKiBuKSA6ICB1bmlxdWVJ
ZCgwKSwgbmFtZShuKSB7IH0KICAgICB2aXJ0dWFsIH5UU3ltYm9sKCkgeyAvKiBkb24ndCBkZWxl
dGUgbmFtZSwgaXQncyBmcm9tIHRoZSBwb29sICovIH0KKwogICAgIGNvbnN0IFRTdHJpbmcmIGdl
dE5hbWUoKSBjb25zdCB7IHJldHVybiAqbmFtZTsgfQogICAgIHZpcnR1YWwgY29uc3QgVFN0cmlu
ZyYgZ2V0TWFuZ2xlZE5hbWUoKSBjb25zdCB7IHJldHVybiBnZXROYW1lKCk7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC01Nyw4ICs1
OCw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRT
eW1ib2wpOwogCisgICAgaW50IHVuaXF1ZUlkOyAgICAgIC8vIEZvciByZWFsIGNvbXBhcmluZyBk
dXJpbmcgY29kZSBnZW5lcmF0aW9uCiAgICAgY29uc3QgVFN0cmluZyAqbmFtZTsKLSAgICB1bnNp
Z25lZCBpbnQgdW5pcXVlSWQ7ICAgICAgLy8gRm9yIHJlYWwgY29tcGFyaW5nIGR1cmluZyBjb2Rl
IGdlbmVyYXRpb24KICAgICBUU3RyaW5nIGV4dGVuc2lvbjsKIH07CiAKQEAgLTE4Niw3ICsxODcs
NiBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBjb25zdCB0TGV2ZWw6OnZhbHVlX3R5cGUgdExldmVs
UGFpcjsKICAgICB0eXBlZGVmIHN0ZDo6cGFpcjx0TGV2ZWw6Oml0ZXJhdG9yLCBib29sPiB0SW5z
ZXJ0UmVzdWx0OwogCi0gICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxs
b2NhdG9yKQogICAgIFRTeW1ib2xUYWJsZUxldmVsKCkgeyB9CiAgICAgflRTeW1ib2xUYWJsZUxl
dmVsKCk7CiAKQEAgLTE5NSw4ICsxOTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vCiAgICAgICAg
IC8vIHJldHVybmluZyB0cnVlIG1lYW5zIHN5bWJvbCB3YXMgYWRkZWQgdG8gdGhlIHRhYmxlCiAg
ICAgICAgIC8vCi0gICAgICAgIHRJbnNlcnRSZXN1bHQgcmVzdWx0OwotICAgICAgICByZXN1bHQg
PSBsZXZlbC5pbnNlcnQodExldmVsUGFpcihuYW1lLCAmc3ltYm9sKSk7CisgICAgICAgIHRJbnNl
cnRSZXN1bHQgcmVzdWx0ID0gbGV2ZWwuaW5zZXJ0KHRMZXZlbFBhaXIobmFtZSwgJnN5bWJvbCkp
OwogCiAgICAgICAgIHJldHVybiByZXN1bHQuc2Vjb25kOwogICAgIH0KQEAgLTI0MywxMyArMjQy
LDcgQEAgcHVibGljOgogICAgICAgICAvLyB0aGF0IHRoZSBzeW1ib2wgdGFibGUgaGFzIG5vdCBi
ZWVuIHByZWxvYWRlZCB3aXRoIGJ1aWx0LWlucy4KICAgICAgICAgLy8KICAgICB9Ci0KLSAgICB+
VFN5bWJvbFRhYmxlKCkKLSAgICB7Ci0gICAgICAgIC8vIGxldmVsIDAgaXMgYWx3YXlzIGJ1aWx0
IEluIHN5bWJvbHMsIHNvIHdlIG5ldmVyIHBvcCB0aGF0IG91dAotICAgICAgICB3aGlsZSAodGFi
bGUuc2l6ZSgpID4gMSkKLSAgICAgICAgICAgIHBvcCgpOwotICAgIH0KKyAgICB+VFN5bWJvbFRh
YmxlKCk7CiAKICAgICAvLwogICAgIC8vIFdoZW4gdGhlIHN5bWJvbCB0YWJsZSBpcyBpbml0aWFs
aXplZCB3aXRoIHRoZSBidWlsdC1pbnMsIHRoZXJlIHNob3VsZApAQCAtMjYyLDEzICsyNTUsMTUg
QEAgcHVibGljOgogICAgIHZvaWQgcHVzaCgpCiAgICAgewogICAgICAgICB0YWJsZS5wdXNoX2Jh
Y2sobmV3IFRTeW1ib2xUYWJsZUxldmVsKTsKLSAgICAgICAgcHJlY2lzaW9uU3RhY2sucHVzaF9i
YWNrKCBQcmVjaXNpb25TdGFja0xldmVsKCkgKTsKKyAgICAgICAgcHJlY2lzaW9uU3RhY2sucHVz
aF9iYWNrKG5ldyBQcmVjaXNpb25TdGFja0xldmVsKTsKICAgICB9CiAKICAgICB2b2lkIHBvcCgp
Ci0gICAgeyAKLSAgICAgICAgZGVsZXRlIHRhYmxlW2N1cnJlbnRMZXZlbCgpXTsgCi0gICAgICAg
IHRhYmxlLnBvcF9iYWNrKCk7IAorICAgIHsKKyAgICAgICAgZGVsZXRlIHRhYmxlLmJhY2soKTsK
KyAgICAgICAgdGFibGUucG9wX2JhY2soKTsKKworICAgICAgICBkZWxldGUgcHJlY2lzaW9uU3Rh
Y2suYmFjaygpOwogICAgICAgICBwcmVjaXNpb25TdGFjay5wb3BfYmFjaygpOwogICAgIH0KIApA
QCAtMzIzLDE2ICszMTgsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3ltYm9sOwogICAg
IH0KIAotICAgIFRTeW1ib2wgKmZpbmRCdWlsdEluKGNvbnN0IFRTdHJpbmcgJm5hbWUpCisgICAg
VFN5bWJvbCogZmluZEJ1aWx0SW4oY29uc3QgVFN0cmluZyAmbmFtZSkKICAgICB7CiAgICAgICAg
IHJldHVybiB0YWJsZVswXS0+ZmluZChuYW1lKTsKICAgICB9CiAKLSAgICBUU3ltYm9sVGFibGVM
ZXZlbCogZ2V0R2xvYmFsTGV2ZWwoKSB7Ci0gICAgICAgIGFzc2VydCh0YWJsZS5zaXplKCkgPj0g
Mik7Ci0gICAgICAgIHJldHVybiB0YWJsZVsxXTsKLSAgICB9Ci0KICAgICBUU3ltYm9sVGFibGVM
ZXZlbCogZ2V0T3V0ZXJMZXZlbCgpIHsKICAgICAgICAgYXNzZXJ0KHRhYmxlLnNpemUoKSA+PSAy
KTsKICAgICAgICAgcmV0dXJuIHRhYmxlW2N1cnJlbnRMZXZlbCgpIC0gMV07CkBAIC0zNDQsMzEg
KzMzNCwyOSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWxhdGVUb0V4dGVuc2lvbihjb25zdCBjaGFy
KiBuYW1lLCBjb25zdCBUU3RyaW5nJiBleHQpIHsKICAgICAgICAgdGFibGVbMF0tPnJlbGF0ZVRv
RXh0ZW5zaW9uKG5hbWUsIGV4dCk7CiAgICAgfQotICAgIGludCBnZXRNYXhTeW1ib2xJZCgpIHsg
cmV0dXJuIHVuaXF1ZUlkOyB9CiAgICAgdm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1NpbmspIGNv
bnN0OwogCi0gICAgYm9vbCBzZXREZWZhdWx0UHJlY2lzaW9uKCBjb25zdCBUUHVibGljVHlwZSYg
dHlwZSwgVFByZWNpc2lvbiBwcmVjICl7Ci0gICAgICAgIGlmIChJc1NhbXBsZXIodHlwZS50eXBl
KSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOyAgLy8gU2tpcCBzYW1wbGVyIHR5cGVzIGZvciB0
aGUgdGltZSBiZWluZwotICAgICAgICBpZiAodHlwZS50eXBlICE9IEVidEZsb2F0ICYmIHR5cGUu
dHlwZSAhPSBFYnRJbnQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIE9ubHkgc2V0IGRl
ZmF1bHQgcHJlY2lzaW9uIGZvciBpbnQvZmxvYXQKKyAgICBib29sIHNldERlZmF1bHRQcmVjaXNp
b24oY29uc3QgVFB1YmxpY1R5cGUmIHR5cGUsIFRQcmVjaXNpb24gcHJlYykgeworICAgICAgICBp
ZiAoIXN1cHBvcnRzUHJlY2lzaW9uKHR5cGUudHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIGlmICh0eXBlLnNpemUgIT0gMSB8fCB0eXBlLm1hdHJpeCB8fCB0eXBlLmFy
cmF5KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBOb3QgYWxsb3dlZCB0byBzZXQgZm9y
IGFnZ3JlZ2F0ZSB0eXBlcwogICAgICAgICBpbnQgaW5kZXhPZkxhc3RFbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8aW50PihwcmVjaXNpb25TdGFjay5zaXplKCkpIC0gMTsKLSAgICAgICAgcHJlY2lzaW9u
U3RhY2tbaW5kZXhPZkxhc3RFbGVtZW50XVt0eXBlLnR5cGVdID0gcHJlYzsgLy8gVXNlcyBtYXAg
b3BlcmF0b3IgW10sIG92ZXJ3cml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUKKyAgICAgICAgKCpwcmVj
aXNpb25TdGFja1tpbmRleE9mTGFzdEVsZW1lbnRdKVt0eXBlLnR5cGVdID0gcHJlYzsgLy8gVXNl
cyBtYXAgb3BlcmF0b3IgW10sIG92ZXJ3cml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgLy8gU2VhcmNoZXMgZG93biB0aGUgcHJlY2lzaW9u
U3RhY2sgZm9yIGEgcHJlY2lzaW9uIHF1YWxpZmllciBmb3IgdGhlIHNwZWNpZmllZCBUQmFzaWNU
eXBlCi0gICAgVFByZWNpc2lvbiBnZXREZWZhdWx0UHJlY2lzaW9uKCBUQmFzaWNUeXBlIHR5cGUp
ewotICAgICAgICBpZiggdHlwZSAhPSBFYnRGbG9hdCAmJiB0eXBlICE9IEVidEludCApIHJldHVy
biBFYnBVbmRlZmluZWQ7CisgICAgVFByZWNpc2lvbiBnZXREZWZhdWx0UHJlY2lzaW9uKFRCYXNp
Y1R5cGUgdHlwZSkgeworICAgICAgICBpZiAoIXN1cHBvcnRzUHJlY2lzaW9uKHR5cGUpKQorICAg
ICAgICAgICAgcmV0dXJuIEVicFVuZGVmaW5lZDsKICAgICAgICAgaW50IGxldmVsID0gc3RhdGlj
X2Nhc3Q8aW50PihwcmVjaXNpb25TdGFjay5zaXplKCkpIC0gMTsKLSAgICAgICAgYXNzZXJ0KCBs
ZXZlbCA+PSAwKTsgLy8gSnVzdCB0byBiZSBzYWZlLiBTaG91bGQgbm90IGhhcHBlbi4KKyAgICAg
ICAgYXNzZXJ0KGxldmVsID49IDApOyAvLyBKdXN0IHRvIGJlIHNhZmUuIFNob3VsZCBub3QgaGFw
cGVuLgogICAgICAgICBQcmVjaXNpb25TdGFja0xldmVsOjppdGVyYXRvciBpdDsKICAgICAgICAg
VFByZWNpc2lvbiBwcmVjID0gRWJwVW5kZWZpbmVkOyAvLyBJZiB3ZSBkb250IGZpbmQgYW55dGhp
bmcgd2UgcmV0dXJuIHRoaXMuIFNob3VsZCB3ZSBlcnJvciBjaGVjayB0aGlzPwotICAgICAgICB3
aGlsZSggbGV2ZWwgPj0gMCApewotICAgICAgICAgICAgaXQgPSBwcmVjaXNpb25TdGFja1tsZXZl
bF0uZmluZCggdHlwZSApOwotICAgICAgICAgICAgaWYoIGl0ICE9IHByZWNpc2lvblN0YWNrW2xl
dmVsXS5lbmQoKSApeworICAgICAgICB3aGlsZSAobGV2ZWwgPj0gMCkgeworICAgICAgICAgICAg
aXQgPSBwcmVjaXNpb25TdGFja1tsZXZlbF0tPmZpbmQodHlwZSk7CisgICAgICAgICAgICBpZiAo
aXQgIT0gcHJlY2lzaW9uU3RhY2tbbGV2ZWxdLT5lbmQoKSkgewogICAgICAgICAgICAgICAgIHBy
ZWMgPSAoKml0KS5zZWNvbmQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CkBAIC0zNzcsMTMgKzM2NSwxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBwcmVjOwogICAg
IH0KIAotcHJvdGVjdGVkOiAgICAKK3ByaXZhdGU6CiAgICAgaW50IGN1cnJlbnRMZXZlbCgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGludD4odGFibGUuc2l6ZSgpKSAtIDE7IH0KIAotICAg
IHN0ZDo6dmVjdG9yPFRTeW1ib2xUYWJsZUxldmVsKj4gdGFibGU7Ci0gICAgdHlwZWRlZiBzdGQ6
Om1hcDwgVEJhc2ljVHlwZSwgVFByZWNpc2lvbiA+IFByZWNpc2lvblN0YWNrTGV2ZWw7Ci0gICAg
c3RkOjp2ZWN0b3I8IFByZWNpc2lvblN0YWNrTGV2ZWwgPiBwcmVjaXNpb25TdGFjazsKKyAgICBi
b29sIHN1cHBvcnRzUHJlY2lzaW9uKFRCYXNpY1R5cGUgdHlwZSkgeworICAgICAgLy8gT25seSBz
dXBwb3J0cyBwcmVjaXNpb24gZm9yIGludCwgZmxvYXQsIGFuZCBzYW1wbGVyIHR5cGVzLgorICAg
ICAgcmV0dXJuIHR5cGUgPT0gRWJ0RmxvYXQgfHwgdHlwZSA9PSBFYnRJbnQgfHwgSXNTYW1wbGVy
KHR5cGUpOworICAgIH0KKwogICAgIGludCB1bmlxdWVJZDsgICAgIC8vIGZvciB1bmlxdWUgaWRl
bnRpZmljYXRpb24gaW4gY29kZSBnZW5lcmF0aW9uCisgICAgc3RkOjp2ZWN0b3I8VFN5bWJvbFRh
YmxlTGV2ZWwqPiB0YWJsZTsKKyAgICB0eXBlZGVmIFRNYXA8VEJhc2ljVHlwZSwgVFByZWNpc2lv
bj4gUHJlY2lzaW9uU3RhY2tMZXZlbDsKKyAgICBzdGQ6OnZlY3RvcjxQcmVjaXNpb25TdGFja0xl
dmVsKj4gcHJlY2lzaW9uU3RhY2s7CiB9OwogCiAjZW5kaWYgLy8gX1NZTUJPTF9UQUJMRV9JTkNM
VURFRF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9UeXBlcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9UeXBl
cy5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8vCi0vLyBDb3B5
cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMTksNyArMTksNyBAQCBjbGFzcyBUVHlwZTsK
IGNsYXNzIFRGaWVsZAogewogcHVibGljOgotICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUo
R2xvYmFsUG9vbEFsbG9jYXRvcik7CisgICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURSgpOwog
ICAgIFRGaWVsZChUVHlwZSogdHlwZSwgVFN0cmluZyogbmFtZSkgOiBtVHlwZSh0eXBlKSwgbU5h
bWUobmFtZSkge30KIAogICAgIC8vIFRPRE8oYWxva3ApOiBXZSBzaG91bGQgb25seSByZXR1cm4g
Y29uc3QgdHlwZS4KQEAgLTM4LDE0ICszOCwxNCBAQCBwcml2YXRlOgogdHlwZWRlZiBUVmVjdG9y
PFRGaWVsZCo+IFRGaWVsZExpc3Q7CiBpbmxpbmUgVEZpZWxkTGlzdCogTmV3UG9vbFRGaWVsZExp
c3QoKQogewotICAgIHZvaWQqIG1lbW9yeSA9IEdsb2JhbFBvb2xBbGxvY2F0b3IuYWxsb2NhdGUo
c2l6ZW9mKFRGaWVsZExpc3QpKTsKKyAgICB2b2lkKiBtZW1vcnkgPSBHZXRHbG9iYWxQb29sQWxs
b2NhdG9yKCktPmFsbG9jYXRlKHNpemVvZihURmllbGRMaXN0KSk7CiAgICAgcmV0dXJuIG5ldyht
ZW1vcnkpIFRGaWVsZExpc3Q7CiB9CiAKIGNsYXNzIFRTdHJ1Y3R1cmUKIHsKIHB1YmxpYzoKLSAg
ICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKEdsb2JhbFBvb2xBbGxvY2F0b3IpOworICAgIFBP
T0xfQUxMT0NBVE9SX05FV19ERUxFVEUoKTsKICAgICBUU3RydWN0dXJlKFRTdHJpbmcqIG5hbWUs
IFRGaWVsZExpc3QqIGZpZWxkcykKICAgICAgICAgOiBtTmFtZShuYW1lKSwKICAgICAgICAgICBt
RmllbGRzKGZpZWxkcyksCkBAIC05Myw5ICs5Myw5IEBAIHByaXZhdGU6CiBjbGFzcyBUVHlwZQog
ewogcHVibGljOgotICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xvYmFsUG9vbEFsbG9j
YXRvcikKKyAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKCk7CiAgICAgVFR5cGUoKSB7fQot
ICAgIFRUeXBlKFRCYXNpY1R5cGUgdCwgVFByZWNpc2lvbiBwLCBUUXVhbGlmaWVyIHEgPSBFdnFU
ZW1wb3JhcnksIGludCBzID0gMSwgYm9vbCBtID0gZmFsc2UsIGJvb2wgYSA9IGZhbHNlKSA6Cisg
ICAgVFR5cGUoVEJhc2ljVHlwZSB0LCBUUHJlY2lzaW9uIHAsIFRRdWFsaWZpZXIgcSA9IEV2cVRl
bXBvcmFyeSwgdW5zaWduZWQgY2hhciBzID0gMSwgYm9vbCBtID0gZmFsc2UsIGJvb2wgYSA9IGZh
bHNlKSA6CiAgICAgICAgICAgICB0eXBlKHQpLCBwcmVjaXNpb24ocCksIHF1YWxpZmllcihxKSwg
c2l6ZShzKSwgbWF0cml4KG0pLCBhcnJheShhKSwgYXJyYXlTaXplKDApLCBzdHJ1Y3R1cmUoMCkK
ICAgICB7CiAgICAgfQpAQCAtMTE2LDcgKzExNiw3IEBAIHB1YmxpYzoKIAogICAgIC8vIE9uZS1k
aW1lbnNpb25hbCBzaXplIG9mIHNpbmdsZSBpbnN0YW5jZSB0eXBlCiAgICAgaW50IGdldE5vbWlu
YWxTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZTsgfQotICAgIHZvaWQgc2V0Tm9taW5hbFNpemUo
aW50IHMpIHsgc2l6ZSA9IHM7IH0KKyAgICB2b2lkIHNldE5vbWluYWxTaXplKHVuc2lnbmVkIGNo
YXIgcykgeyBzaXplID0gczsgfQogICAgIC8vIEZ1bGwgc2l6ZSBvZiBzaW5nbGUgaW5zdGFuY2Ug
b2YgdHlwZQogICAgIHNpemVfdCBnZXRPYmplY3RTaXplKCkgY29uc3Q7CiAKQEAgLTIzNCwxOCAr
MjM0LDEyIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgVFN0cmluZyBidWlsZE1hbmdsZWROYW1l
KCkgY29uc3Q7CiAKLSNpZmRlZiBfX0dOVUNfXwogICAgIFRCYXNpY1R5cGUgdHlwZTsKICAgICBU
UHJlY2lzaW9uIHByZWNpc2lvbjsKICAgICBUUXVhbGlmaWVyIHF1YWxpZmllcjsKLSNlbHNlCi0g
ICAgVEJhc2ljVHlwZSB0eXBlICAgICAgOiA2OwotICAgIFRQcmVjaXNpb24gcHJlY2lzaW9uOwot
ICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyIDogNzsKLSNlbmRpZgotICAgIGludCBzaXplICAgICAg
ICAgICAgIDogODsgLy8gc2l6ZSBvZiB2ZWN0b3Igb3IgbWF0cml4LCBub3Qgc2l6ZSBvZiBhcnJh
eQotICAgIHVuc2lnbmVkIGludCBtYXRyaXggIDogMTsKLSAgICB1bnNpZ25lZCBpbnQgYXJyYXkg
ICA6IDE7CisgICAgdW5zaWduZWQgY2hhciBzaXplOworICAgIGJvb2wgbWF0cml4OworICAgIGJv
b2wgYXJyYXk7CiAgICAgaW50IGFycmF5U2l6ZTsKIAogICAgIFRTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZTsgICAgICAvLyAwIHVubGVzcyB0aGlzIGlzIGEgc3RydWN0CkBAIC0yNjcsNyArMjYxLDcgQEAg
c3RydWN0IFRQdWJsaWNUeXBlCiAgICAgVEJhc2ljVHlwZSB0eXBlOwogICAgIFRRdWFsaWZpZXIg
cXVhbGlmaWVyOwogICAgIFRQcmVjaXNpb24gcHJlY2lzaW9uOwotICAgIGludCBzaXplOyAgICAg
ICAgICAvLyBzaXplIG9mIHZlY3RvciBvciBtYXRyaXgsIG5vdCBzaXplIG9mIGFycmF5CisgICAg
dW5zaWduZWQgY2hhciBzaXplOyAgICAgICAgICAvLyBzaXplIG9mIHZlY3RvciBvciBtYXRyaXgs
IG5vdCBzaXplIG9mIGFycmF5CiAgICAgYm9vbCBtYXRyaXg7CiAgICAgYm9vbCBhcnJheTsKICAg
ICBpbnQgYXJyYXlTaXplOwpAQCAtMjg3LDcgKzI4MSw3IEBAIHN0cnVjdCBUUHVibGljVHlwZQog
ICAgICAgICBsaW5lID0gbG47CiAgICAgfQogCi0gICAgdm9pZCBzZXRBZ2dyZWdhdGUoaW50IHMs
IGJvb2wgbSA9IGZhbHNlKQorICAgIHZvaWQgc2V0QWdncmVnYXRlKHVuc2lnbmVkIGNoYXIgcywg
Ym9vbCBtID0gZmFsc2UpCiAgICAgewogICAgICAgICBzaXplID0gczsKICAgICAgICAgbWF0cml4
ID0gbTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9VbmZvbGRT
aG9ydENpcmN1aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9VbmZvbGRTaG9ydENpcmN1aXQuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVW5mb2xkU2hvcnRDaXJjdWl0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsMTQgQEAgYm9vbCBVbmZvbGRTaG9ydENpcmN1
aXQ6OnZpc2l0QmluYXJ5KFZpcwogewogICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9IG1PdXRwdXRI
TFNMLT5nZXRCb2R5U3RyZWFtKCk7CiAKKyAgICAvLyBJZiBvdXIgcmlnaHQgbm9kZSBkb2Vzbid0
IGhhdmUgc2lkZSBlZmZlY3RzLCB3ZSBrbm93IHdlIGRvbid0IG5lZWQgdG8gdW5mb2xkIHRoaXMK
KyAgICAvLyBleHByZXNzaW9uOiB0aGVyZSB3aWxsIGJlIG5vIHNob3J0LWNpcmN1aXRpbmcgc2lk
ZSBlZmZlY3RzIHRvIGF2b2lkCisgICAgLy8gKG5vdGU6IHVuZm9sZGluZyBkb2Vzbid0IGRlcGVu
ZCBvbiB0aGUgbGVmdCBub2RlIC0tIGl0IHdpbGwgYWx3YXlzIGJlIGV2YWx1YXRlZCkKKyAgICBp
ZiAoIW5vZGUtPmdldFJpZ2h0KCktPmhhc1NpZGVFZmZlY3RzKCkpCisgICAgeworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCiAgICAgewog
ICAgICAgY2FzZSBFT3BMb2dpY2FsT3I6CkBAIC00OSw3ICs1Nyw3IEBAIGJvb2wgVW5mb2xkU2hv
cnRDaXJjdWl0Ojp2aXNpdEJpbmFyeShWaXMKICAgICAgICAgICAgIG1UZW1wb3JhcnlJbmRleCA9
IGkgKyAxOwogICAgICAgICAgICAgbm9kZS0+Z2V0TGVmdCgpLT50cmF2ZXJzZShtT3V0cHV0SExT
TCk7CiAgICAgICAgICAgICBvdXQgPDwgIjtcbiI7Ci0gICAgICAgICAgICBvdXQgPDwgImlmKCFz
IiA8PCBpIDw8ICIpXG4iCisgICAgICAgICAgICBvdXQgPDwgImlmICghcyIgPDwgaSA8PCAiKVxu
IgogICAgICAgICAgICAgICAgICAgICJ7XG4iOwogICAgICAgICAgICAgbVRlbXBvcmFyeUluZGV4
ID0gaSArIDE7CiAgICAgICAgICAgICBub2RlLT5nZXRSaWdodCgpLT50cmF2ZXJzZSh0aGlzKTsK
QEAgLTgwLDcgKzg4LDcgQEAgYm9vbCBVbmZvbGRTaG9ydENpcmN1aXQ6OnZpc2l0QmluYXJ5KFZp
cwogICAgICAgICAgICAgbVRlbXBvcmFyeUluZGV4ID0gaSArIDE7CiAgICAgICAgICAgICBub2Rl
LT5nZXRMZWZ0KCktPnRyYXZlcnNlKG1PdXRwdXRITFNMKTsKICAgICAgICAgICAgIG91dCA8PCAi
O1xuIjsKLSAgICAgICAgICAgIG91dCA8PCAiaWYocyIgPDwgaSA8PCAiKVxuIgorICAgICAgICAg
ICAgb3V0IDw8ICJpZiAocyIgPDwgaSA8PCAiKVxuIgogICAgICAgICAgICAgICAgICAgICJ7XG4i
OwogICAgICAgICAgICAgbVRlbXBvcmFyeUluZGV4ID0gaSArIDE7CiAgICAgICAgICAgICBub2Rl
LT5nZXRSaWdodCgpLT50cmF2ZXJzZSh0aGlzKTsKQEAgLTExNSw3ICsxMjMsNyBAQCBib29sIFVu
Zm9sZFNob3J0Q2lyY3VpdDo6dmlzaXRTZWxlY3Rpb24oCiAKICAgICAgICAgbVRlbXBvcmFyeUlu
ZGV4ID0gaSArIDE7CiAgICAgICAgIG5vZGUtPmdldENvbmRpdGlvbigpLT50cmF2ZXJzZSh0aGlz
KTsKLSAgICAgICAgb3V0IDw8ICJpZigiOworICAgICAgICBvdXQgPDwgImlmICgiOwogICAgICAg
ICBtVGVtcG9yYXJ5SW5kZXggPSBpICsgMTsKICAgICAgICAgbm9kZS0+Z2V0Q29uZGl0aW9uKCkt
PnRyYXZlcnNlKG1PdXRwdXRITFNMKTsKICAgICAgICAgb3V0IDw8ICIpXG4iCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVW5mb2xkU2hvcnRDaXJjdWl0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1VuZm9sZFNo
b3J0Q2lyY3VpdC5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvVW5mb2xkU2hvcnRDaXJjdWl0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
LDcgKzEwLDcgQEAKICNkZWZpbmUgQ09NUElMRVJfVU5GT0xEU0hPUlRDSVJDVUlUX0hfCiAKICNp
bmNsdWRlICJjb21waWxlci9pbnRlcm1lZGlhdGUuaCIKLSNpbmNsdWRlICJjb21waWxlci9QYXJz
ZUhlbHBlci5oIgorI2luY2x1ZGUgImNvbXBpbGVyL1BhcnNlQ29udGV4dC5oIgogCiBuYW1lc3Bh
Y2Ugc2gKIHsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9VbmZv
bGRTaG9ydENpcmN1aXRBU1QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9VbmZvbGRTaG9ydENpcmN1aXRBU1QuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1VuZm9sZFNob3J0Q2lyY3Vp
dEFTVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MSBAQAorLy8KKy8vIENvcHlyaWdo
dCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKworI2luY2x1ZGUgImNvbXBpbGVyL1VuZm9sZFNob3J0Q2lyY3VpdEFTVC5oIgorCituYW1l
c3BhY2UKK3sKKworLy8gInggfHwgeSIgaXMgZXF1aXZhbGVudCB0byAieCA/IHRydWUgOiB5Ii4K
K1RJbnRlcm1TZWxlY3Rpb24gKlVuZm9sZE9SKFRJbnRlcm1UeXBlZCAqeCwgVEludGVybVR5cGVk
ICp5KQoreworICAgIGNvbnN0IFRUeXBlIGJvb2xUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCk7
CisgICAgQ29uc3RhbnRVbmlvbiAqdSA9IG5ldyBDb25zdGFudFVuaW9uOworICAgIHUtPnNldEJD
b25zdCh0cnVlKTsKKyAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqdHJ1ZU5vZGUgPSBuZXcgVElu
dGVybUNvbnN0YW50VW5pb24oCisgICAgICAgIHUsIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxQ29uc3QsIDEpKTsKKyAgICByZXR1cm4gbmV3IFRJbnRlcm1TZWxlY3Rpb24oeCwgdHJ1
ZU5vZGUsIHksIGJvb2xUeXBlKTsKK30KKworLy8gInggJiYgeSIgaXMgZXF1aXZhbGVudCB0byAi
eCA/IHkgOiBmYWxzZSIuCitUSW50ZXJtU2VsZWN0aW9uICpVbmZvbGRBTkQoVEludGVybVR5cGVk
ICp4LCBUSW50ZXJtVHlwZWQgKnkpCit7CisgICAgY29uc3QgVFR5cGUgYm9vbFR5cGUoRWJ0Qm9v
bCwgRWJwVW5kZWZpbmVkKTsKKyAgICBDb25zdGFudFVuaW9uICp1ID0gbmV3IENvbnN0YW50VW5p
b247CisgICAgdS0+c2V0QkNvbnN0KGZhbHNlKTsKKyAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAq
ZmFsc2VOb2RlID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKAorICAgICAgICB1LCBUVHlwZShF
YnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0LCAxKSk7CisgICAgcmV0dXJuIG5ldyBUSW50
ZXJtU2VsZWN0aW9uKHgsIHksIGZhbHNlTm9kZSwgYm9vbFR5cGUpOworfQorCit9ICAvLyBuYW1l
c3BhY2UgYW5vbnltb3VzCisKK2Jvb2wgVW5mb2xkU2hvcnRDaXJjdWl0QVNUOjp2aXNpdEJpbmFy
eShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkKK3sKKyAgICBUSW50ZXJtU2VsZWN0
aW9uICpyZXBsYWNlbWVudCA9IE5VTEw7CisKKyAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCisg
ICAgeworICAgICAgY2FzZSBFT3BMb2dpY2FsT3I6CisgICAgICAgIHJlcGxhY2VtZW50ID0gVW5m
b2xkT1Iobm9kZS0+Z2V0TGVmdCgpLCBub2RlLT5nZXRSaWdodCgpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIEVPcExvZ2ljYWxBbmQ6CisgICAgICAgIHJlcGxhY2VtZW50ID0gVW5mb2xk
QU5EKG5vZGUtPmdldExlZnQoKSwgbm9kZS0+Z2V0UmlnaHQoKSk7CisgICAgICAgIGJyZWFrOwor
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChyZXBsYWNlbWVu
dCkKKyAgICB7CisgICAgICAgIHJlcGxhY2VtZW50cy5wdXNoX2JhY2soCisgICAgICAgICAgICBO
b2RlVXBkYXRlRW50cnkoZ2V0UGFyZW50Tm9kZSgpLCBub2RlLCByZXBsYWNlbWVudCkpOworICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBVbmZvbGRTaG9ydENpcmN1aXRBU1Q6OnVw
ZGF0ZVRyZWUoKQoreworICAgIGZvciAoc2l6ZV90IGlpID0gMDsgaWkgPCByZXBsYWNlbWVudHMu
c2l6ZSgpOyArK2lpKQorICAgIHsKKyAgICAgICAgY29uc3QgTm9kZVVwZGF0ZUVudHJ5JiBlbnRy
eSA9IHJlcGxhY2VtZW50c1tpaV07CisgICAgICAgIEFTU0VSVChlbnRyeS5wYXJlbnQpOworICAg
ICAgICBib29sIHJlcGxhY2VkID0gZW50cnkucGFyZW50LT5yZXBsYWNlQ2hpbGROb2RlKAorICAg
ICAgICAgICAgZW50cnkub3JpZ2luYWwsIGVudHJ5LnJlcGxhY2VtZW50KTsKKyAgICAgICAgQVNT
RVJUKHJlcGxhY2VkKTsKKworICAgICAgICAvLyBJbiBBU1QgdHJhdmVyc2luZywgYSBwYXJlbnQg
aXMgdmlzaXRlZCBiZWZvcmUgaXRzIGNoaWxkcmVuLgorICAgICAgICAvLyBBZnRlciB3ZSByZXBs
YWNlIGEgbm9kZSwgaWYgYW4gaW1tZWRpYXRlIGNoaWxkIGlzIHRvCisgICAgICAgIC8vIGJlIHJl
cGxhY2VkLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCB1cGRhdGUgdGhlIHJlcGxhY2Vk
CisJLy8gbm9kZTsgaW5zdGVhZCwgd2UgdXBkYXRlIHRoZSByZXBsYWNlbWVudCBub2RlLgorICAg
ICAgICBmb3IgKHNpemVfdCBqaiA9IGlpICsgMTsgamogPCByZXBsYWNlbWVudHMuc2l6ZSgpOyAr
K2pqKQorICAgICAgICB7CisgICAgICAgICAgICBOb2RlVXBkYXRlRW50cnkmIGVudHJ5MiA9IHJl
cGxhY2VtZW50c1tqal07CisgICAgICAgICAgICBpZiAoZW50cnkyLnBhcmVudCA9PSBlbnRyeS5v
cmlnaW5hbCkKKyAgICAgICAgICAgICAgICBlbnRyeTIucGFyZW50ID0gZW50cnkucmVwbGFjZW1l
bnQ7CisgICAgICAgIH0KKyAgICB9Cit9CisKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9VbmZvbGRTaG9ydENpcmN1aXRBU1QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVW5mb2xkU2hvcnRDaXJjdWl0QVNULmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVW5m
b2xkU2hvcnRDaXJjdWl0QVNULmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLy8K
Ky8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKy8vIFVuZm9sZFNob3J0Q2lyY3VpdEFTVCBpcyBhbiBBU1QgdHJhdmVy
c2VyIHRvIHJlcGxhY2Ugc2hvcnQtY2lyY3VpdGluZworLy8gb3BlcmF0aW9ucyB3aXRoIHRlcm5h
cnkgb3BlcmF0aW9ucy4KKy8vCisKKyNpZm5kZWYgQ09NUElMRVJfVU5GT0xEX1NIT1JUX0NJUkNV
SVRfQVNUX0hfCisjZGVmaW5lIENPTVBJTEVSX1VORk9MRF9TSE9SVF9DSVJDVUlUX0FTVF9IXwor
CisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJjb21waWxlci9pbnRl
cm1lZGlhdGUuaCIKKworLy8gVGhpcyB0cmF2ZXJzZXIgaWRlbnRpZmllcyBhbGwgdGhlIHNob3J0
IGNpcmN1aXQgYmluYXJ5ICBub2RlcyB0aGF0IG5lZWQgdG8KKy8vIGJlIHJlcGxhY2VkLCBhbmQg
Y3JlYXRlcyB0aGUgY29ycmVzcG9uZGluZyByZXBsYWNlbWVudCBub2Rlcy4gSG93ZXZlciwKKy8v
IHRoZSBhY3R1YWwgcmVwbGFjZW1lbnRzIGhhcHBlbiBhZnRlciB0aGUgdHJhdmVyc2UgdGhyb3Vn
aCB1cGRhdGVUcmVlKCkuCisKK2NsYXNzIFVuZm9sZFNob3J0Q2lyY3VpdEFTVCA6IHB1YmxpYyBU
SW50ZXJtVHJhdmVyc2VyCit7CisgIHB1YmxpYzoKKyAgICBVbmZvbGRTaG9ydENpcmN1aXRBU1Qo
KSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCB2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVy
bUJpbmFyeSAqKTsKKworICAgIHZvaWQgdXBkYXRlVHJlZSgpOworCisgIHByaXZhdGU6CisgICAg
c3RydWN0IE5vZGVVcGRhdGVFbnRyeQorICAgIHsKKyAgICAgICAgTm9kZVVwZGF0ZUVudHJ5KFRJ
bnRlcm1Ob2RlICpfcGFyZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybU5vZGUg
Kl9vcmlnaW5hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICpfcmVwbGFj
ZW1lbnQpCisgICAgICAgICAgICA6IHBhcmVudChfcGFyZW50KSwKKyAgICAgICAgICAgICAgb3Jp
Z2luYWwoX29yaWdpbmFsKSwKKyAgICAgICAgICAgICAgcmVwbGFjZW1lbnQoX3JlcGxhY2VtZW50
KSB7fQorCisgICAgICAgIFRJbnRlcm1Ob2RlICpwYXJlbnQ7CisgICAgICAgIFRJbnRlcm1Ob2Rl
ICpvcmlnaW5hbDsKKyAgICAgICAgVEludGVybU5vZGUgKnJlcGxhY2VtZW50OworICAgIH07CisK
KyAgICAvLyBEdXJpbmcgdHJhdmVyc2luZywgc2F2ZSBhbGwgdGhlIHJlcGxhY2VtZW50cyB0aGF0
IG5lZWQgdG8gaGFwcGVuOworICAgIC8vIHRoZW4gcmVwbGFjZSB0aGVtIGJ5IGNhbGxpbmcgdXBk
YXRlTm9kZXMoKS4KKyAgICBzdGQ6OnZlY3RvcjxOb2RlVXBkYXRlRW50cnk+IHJlcGxhY2VtZW50
czsKKworICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihVbmZvbGRTaG9ydENpcmN1aXRBU1Qp
OworfTsKKworI2VuZGlmICAvLyBDT01QSUxFUl9VTkZPTERfU0hPUlRfQ0lSQ1VJVF9BU1RfSF8K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Vbmlmb3JtLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVW5pZm9y
bS5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9Vbmlmb3JtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwyMSArMSwyMSBAQAotLy8N
Ci0vLyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4NCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQotLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4NCi0vLw0KLQ0KLSNpbmNsdWRlICJjb21waWxlci9Vbmlmb3JtLmgiDQotDQotbmFt
ZXNwYWNlIHNoDQotew0KLQ0KLVVuaWZvcm06OlVuaWZvcm0oR0xlbnVtIHR5cGUsIEdMZW51bSBw
cmVjaXNpb24sIGNvbnN0IGNoYXIgKm5hbWUsIGludCBhcnJheVNpemUsIGludCByZWdpc3Rlcklu
ZGV4KQ0KLXsNCi0gICAgdGhpcy0+dHlwZSA9IHR5cGU7DQotICAgIHRoaXMtPnByZWNpc2lvbiA9
IHByZWNpc2lvbjsNCi0gICAgdGhpcy0+bmFtZSA9IG5hbWU7DQotICAgIHRoaXMtPmFycmF5U2l6
ZSA9IGFycmF5U2l6ZTsNCi0gICAgdGhpcy0+cmVnaXN0ZXJJbmRleCA9IHJlZ2lzdGVySW5kZXg7
DQotfQ0KLQ0KLX0NCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgImNvbXBpbGVyL1VuaWZvcm0u
aCIKKworbmFtZXNwYWNlIHNoCit7CisKK1VuaWZvcm06OlVuaWZvcm0oR0xlbnVtIHR5cGUsIEdM
ZW51bSBwcmVjaXNpb24sIGNvbnN0IGNoYXIgKm5hbWUsIGludCBhcnJheVNpemUsIGludCByZWdp
c3RlckluZGV4KQoreworICAgIHRoaXMtPnR5cGUgPSB0eXBlOworICAgIHRoaXMtPnByZWNpc2lv
biA9IHByZWNpc2lvbjsKKyAgICB0aGlzLT5uYW1lID0gbmFtZTsKKyAgICB0aGlzLT5hcnJheVNp
emUgPSBhcnJheVNpemU7CisgICAgdGhpcy0+cmVnaXN0ZXJJbmRleCA9IHJlZ2lzdGVySW5kZXg7
Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Vbmlm
b3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L1VuaWZvcm0uaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL1VuaWZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMSwzNSArMSwzNSBAQAot
Ly8NCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4NCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQotLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4NCi0vLw0KLQ0KLSNpZm5kZWYgQ09NUElMRVJfVU5JRk9STV9IXw0KLSNkZWZp
bmUgQ09NUElMRVJfVU5JRk9STV9IXw0KLQ0KLSNpbmNsdWRlIDxzdHJpbmc+DQotI2luY2x1ZGUg
PHZlY3Rvcj4NCi0NCi0jZGVmaW5lIEdMX0FQSUNBTEwNCi0jaW5jbHVkZSA8R0xFUzIvZ2wyLmg+
DQotDQotbmFtZXNwYWNlIHNoDQotew0KLQ0KLXN0cnVjdCBVbmlmb3JtDQotew0KLSAgICBVbmlm
b3JtKEdMZW51bSB0eXBlLCBHTGVudW0gcHJlY2lzaW9uLCBjb25zdCBjaGFyICpuYW1lLCBpbnQg
YXJyYXlTaXplLCBpbnQgcmVnaXN0ZXJJbmRleCk7DQotDQotICAgIEdMZW51bSB0eXBlOw0KLSAg
ICBHTGVudW0gcHJlY2lzaW9uOw0KLSAgICBzdGQ6OnN0cmluZyBuYW1lOw0KLSAgICB1bnNpZ25l
ZCBpbnQgYXJyYXlTaXplOw0KLSAgICANCi0gICAgaW50IHJlZ2lzdGVySW5kZXg7DQotfTsNCi0N
Ci10eXBlZGVmIHN0ZDo6dmVjdG9yPFVuaWZvcm0+IEFjdGl2ZVVuaWZvcm1zOw0KLQ0KLX0NCi0N
Ci0jZW5kaWYgICAvLyBDT01QSUxFUl9VTklGT1JNX0hfDQorLy8KKy8vIENvcHlyaWdodCAoYykg
MjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpZm5k
ZWYgQ09NUElMRVJfVU5JRk9STV9IXworI2RlZmluZSBDT01QSUxFUl9VTklGT1JNX0hfCisKKyNp
bmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjZGVmaW5lIEdMX0FQSUNBTEwK
KyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKworbmFtZXNwYWNlIHNoCit7CisKK3N0cnVjdCBVbmlm
b3JtCit7CisgICAgVW5pZm9ybShHTGVudW0gdHlwZSwgR0xlbnVtIHByZWNpc2lvbiwgY29uc3Qg
Y2hhciAqbmFtZSwgaW50IGFycmF5U2l6ZSwgaW50IHJlZ2lzdGVySW5kZXgpOworCisgICAgR0xl
bnVtIHR5cGU7CisgICAgR0xlbnVtIHByZWNpc2lvbjsKKyAgICBzdGQ6OnN0cmluZyBuYW1lOwor
ICAgIHVuc2lnbmVkIGludCBhcnJheVNpemU7CisgICAgCisgICAgaW50IHJlZ2lzdGVySW5kZXg7
Cit9OworCit0eXBlZGVmIHN0ZDo6dmVjdG9yPFVuaWZvcm0+IEFjdGl2ZVVuaWZvcm1zOworCit9
CisKKyNlbmRpZiAgIC8vIENPTVBJTEVSX1VOSUZPUk1fSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9WYWxpZGF0ZUxpbWl0YXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVmFsaWRhdGVMaW1pdGF0
aW9ucy5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9WYWxpZGF0ZUxpbWl0YXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNyw3
ICs3LDcgQEAKICNpbmNsdWRlICJjb21waWxlci9WYWxpZGF0ZUxpbWl0YXRpb25zLmgiCiAjaW5j
bHVkZSAiY29tcGlsZXIvSW5mb1NpbmsuaCIKICNpbmNsdWRlICJjb21waWxlci9Jbml0aWFsaXpl
UGFyc2VDb250ZXh0LmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvUGFyc2VIZWxwZXIuaCIKKyNpbmNs
dWRlICJjb21waWxlci9QYXJzZUNvbnRleHQuaCIKIAogbmFtZXNwYWNlIHsKIGJvb2wgSXNMb29w
SW5kZXgoY29uc3QgVEludGVybVN5bWJvbCogc3ltYm9sLCBjb25zdCBUTG9vcFN0YWNrJiBzdGFj
aykgewpAQCAtNDM1LDcgKzQzNSw3IEBAIGJvb2wgVmFsaWRhdGVMaW1pdGF0aW9uczo6dmFsaWRh
dGVGdW5jdGkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBib29sIHZhbGlkID0gdHJ1ZTsK
LSAgICBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gR2xvYmFsUGFyc2VDb250ZXh0LT5zeW1i
b2xUYWJsZTsKKyAgICBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gR2V0R2xvYmFsUGFyc2VD
b250ZXh0KCktPnN5bWJvbFRhYmxlOwogICAgIFRTeW1ib2wqIHN5bWJvbCA9IHN5bWJvbFRhYmxl
LmZpbmQobm9kZS0+Z2V0TmFtZSgpKTsKICAgICBBU1NFUlQoc3ltYm9sICYmIHN5bWJvbC0+aXNG
dW5jdGlvbigpKTsKICAgICBURnVuY3Rpb24qIGZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8VEZ1bmN0
aW9uKj4oc3ltYm9sKTsKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBib29sIFZhbGlkYXRlTGltaXRhdGlv
bnM6OnZhbGlkYXRlRnVuY3RpCiBib29sIFZhbGlkYXRlTGltaXRhdGlvbnM6OnZhbGlkYXRlT3Bl
cmF0aW9uKFRJbnRlcm1PcGVyYXRvciogbm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVEludGVybU5vZGUqIG9wZXJhbmQpIHsKICAgICAvLyBDaGVjayBp
ZiBsb29wIGluZGV4IGlzIG1vZGlmaWVkIGluIHRoZSBsb29wIGJvZHkuCi0gICAgaWYgKCF3aXRo
aW5Mb29wQm9keSgpIHx8ICFub2RlLT5tb2RpZmllc1N0YXRlKCkpCisgICAgaWYgKCF3aXRoaW5M
b29wQm9keSgpIHx8ICFub2RlLT5pc0Fzc2lnbm1lbnQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICBjb25zdCBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBvcGVyYW5kLT5nZXRBc1N5bWJv
bE5vZGUoKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9WYXJp
YWJsZUluZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9WYXJpYWJsZUluZm8uY3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVmFyaWFibGVJbmZvLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNiwxNSArNiwxNyBAQAogCiAjaW5jbHVkZSAiY29tcGlsZXIvVmFyaWFibGVJbmZvLmgi
CiAKLXN0YXRpYyBUU3RyaW5nIGFycmF5QnJhY2tldHMoaW50IGluZGV4KQorbmFtZXNwYWNlIHsK
KworVFN0cmluZyBhcnJheUJyYWNrZXRzKGludCBpbmRleCkKIHsKICAgICBUU3RyaW5nU3RyZWFt
IHN0cmVhbTsKICAgICBzdHJlYW0gPDwgIlsiIDw8IGluZGV4IDw8ICJdIjsKICAgICByZXR1cm4g
c3RyZWFtLnN0cigpOwogfQogCi0vLyBSZXR1cm5zIHRoZSBkYXRhIHR5cGUgZm9yIGFuIGF0dHJp
YnV0ZSBvciB1bmlmb3JtLgotc3RhdGljIFNoRGF0YVR5cGUgZ2V0VmFyaWFibGVEYXRhVHlwZShj
b25zdCBUVHlwZSYgdHlwZSkKKy8vIFJldHVybnMgdGhlIGRhdGEgdHlwZSBmb3IgYW4gYXR0cmli
dXRlLCB1bmlmb3JtLCBvciB2YXJ5aW5nLgorU2hEYXRhVHlwZSBnZXRWYXJpYWJsZURhdGFUeXBl
KGNvbnN0IFRUeXBlJiB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZS5nZXRCYXNpY1R5cGUoKSkg
ewogICAgICAgY2FzZSBFYnRGbG9hdDoKQEAgLTcwLDIyICs3MiwyMiBAQCBzdGF0aWMgU2hEYXRh
VHlwZSBnZXRWYXJpYWJsZURhdGFUeXBlKGNvCiAgICAgcmV0dXJuIFNIX05PTkU7CiB9CiAKLXN0
YXRpYyB2b2lkIGdldEJ1aWx0SW5WYXJpYWJsZUluZm8oY29uc3QgVFR5cGUmIHR5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcmIG5hbWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcmIG1hcHBlZE5hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRWYXJpYWJsZUluZm9MaXN0JiBp
bmZvTGlzdCk7Ci1zdGF0aWMgdm9pZCBnZXRVc2VyRGVmaW5lZFZhcmlhYmxlSW5mbyhjb25zdCBU
VHlwZSYgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRTdHJpbmcmIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUU3RyaW5nJiBtYXBwZWROYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVFZhcmlhYmxlSW5mb0xpc3QmIGluZm9MaXN0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2hIYXNoRnVuY3Rpb242NCBoYXNoRnVuY3Rpb24pOwotCi0v
LyBSZXR1cm5zIGluZm8gZm9yIGFuIGF0dHJpYnV0ZSBvciB1bmlmb3JtLgotc3RhdGljIHZvaWQg
Z2V0VmFyaWFibGVJbmZvKGNvbnN0IFRUeXBlJiB0eXBlLAordm9pZCBnZXRCdWlsdEluVmFyaWFi
bGVJbmZvKGNvbnN0IFRUeXBlJiB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRTdHJpbmcmIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0
cmluZyYgbWFwcGVkTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVmFyaWFibGVJ
bmZvTGlzdCYgaW5mb0xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hIYXNoRnVu
Y3Rpb242NCBoYXNoRnVuY3Rpb24pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFZhcmlh
YmxlSW5mb0xpc3QmIGluZm9MaXN0KTsKK3ZvaWQgZ2V0VXNlckRlZmluZWRWYXJpYWJsZUluZm8o
Y29uc3QgVFR5cGUmIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRTdHJpbmcmIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRT
dHJpbmcmIG1hcHBlZE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRWYXJp
YWJsZUluZm9MaXN0JiBpbmZvTGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2hIYXNoRnVuY3Rpb242NCBoYXNoRnVuY3Rpb24pOworCisvLyBSZXR1cm5zIGluZm8gZm9yIGFu
IGF0dHJpYnV0ZSwgdW5pZm9ybSwgb3IgdmFyeWluZy4KK3ZvaWQgZ2V0VmFyaWFibGVJbmZvKGNv
bnN0IFRUeXBlJiB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyYgbmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcmIG1hcHBlZE5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICBUVmFyaWFibGVJbmZvTGlzdCYgaW5mb0xpc3QsCisgICAgICAgICAg
ICAgICAgICAgICBTaEhhc2hGdW5jdGlvbjY0IGhhc2hGdW5jdGlvbikKIHsKICAgICBpZiAodHlw
ZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpIHsKICAgICAgICAgaWYgKHR5cGUuaXNBcnJh
eSgpKSB7CkBAIC0xMTksNiArMTIxLDcgQEAgdm9pZCBnZXRCdWlsdEluVmFyaWFibGVJbmZvKGNv
bnN0IFRUeXBlJgogICAgICAgICB2YXJJbmZvLm1hcHBlZE5hbWUgPSBtYXBwZWROYW1lLmNfc3Ry
KCk7CiAgICAgICAgIHZhckluZm8uc2l6ZSA9IDE7CiAgICAgfQorICAgIHZhckluZm8ucHJlY2lz
aW9uID0gdHlwZS5nZXRQcmVjaXNpb24oKTsKICAgICB2YXJJbmZvLnR5cGUgPSBnZXRWYXJpYWJs
ZURhdGFUeXBlKHR5cGUpOwogICAgIGluZm9MaXN0LnB1c2hfYmFjayh2YXJJbmZvKTsKIH0KQEAg
LTE0Myw3NSArMTQ2LDE0NCBAQCB2b2lkIGdldFVzZXJEZWZpbmVkVmFyaWFibGVJbmZvKGNvbnN0
IFRUCiAgICAgfQogfQogCitUVmFyaWFibGVJbmZvKiBmaW5kVmFyaWFibGUoY29uc3QgVFR5cGUm
IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyYgbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVmFyaWFibGVJbmZvTGlzdCYgaW5mb0xpc3Qp
Cit7CisgICAgLy8gVE9ETyh6bW8pOiBvcHRpbWl6ZSB0aGlzIGZ1bmN0aW9uLgorICAgIFRTdHJp
bmcgbXlOYW1lID0gbmFtZTsKKyAgICBpZiAodHlwZS5pc0FycmF5KCkpCisgICAgICAgIG15TmFt
ZSArPSAiWzBdIjsKKyAgICBmb3IgKHNpemVfdCBpaSA9IDA7IGlpIDwgaW5mb0xpc3Quc2l6ZSgp
OyArK2lpKQorICAgIHsKKyAgICAgICAgaWYgKGluZm9MaXN0W2lpXS5uYW1lLmNfc3RyKCkgPT0g
bXlOYW1lKQorICAgICAgICAgICAgcmV0dXJuICYoaW5mb0xpc3RbaWldKTsKKyAgICB9CisgICAg
cmV0dXJuIE5VTEw7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbm9ueW1vdXMKKwogVFZhcmlhYmxl
SW5mbzo6VFZhcmlhYmxlSW5mbygpCisgICAgOiB0eXBlKFNIX05PTkUpLAorICAgICAgc2l6ZSgw
KSwKKyAgICAgIHByZWNpc2lvbihFYnBVbmRlZmluZWQpLAorICAgICAgc3RhdGljVXNlKGZhbHNl
KQogewogfQogCiBUVmFyaWFibGVJbmZvOjpUVmFyaWFibGVJbmZvKFNoRGF0YVR5cGUgdHlwZSwg
aW50IHNpemUpCiAgICAgOiB0eXBlKHR5cGUpLAotICAgICAgc2l6ZShzaXplKQorICAgICAgc2l6
ZShzaXplKSwKKyAgICAgIHByZWNpc2lvbihFYnBVbmRlZmluZWQpLAorICAgICAgc3RhdGljVXNl
KGZhbHNlKQogewogfQogCi1Db2xsZWN0QXR0cmlic1VuaWZvcm1zOjpDb2xsZWN0QXR0cmlic1Vu
aWZvcm1zKFRWYXJpYWJsZUluZm9MaXN0JiBhdHRyaWJzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUVmFyaWFibGVJbmZvTGlzdCYgdW5pZm9ybXMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoSGFzaEZ1bmN0
aW9uNjQgaGFzaEZ1bmN0aW9uKQorQ29sbGVjdFZhcmlhYmxlczo6Q29sbGVjdFZhcmlhYmxlcyhU
VmFyaWFibGVJbmZvTGlzdCYgYXR0cmlicywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVFZhcmlhYmxlSW5mb0xpc3QmIHVuaWZvcm1zLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUVmFyaWFibGVJbmZvTGlzdCYgdmFyeWluZ3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNoSGFzaEZ1bmN0aW9uNjQgaGFzaEZ1bmN0aW9uKQogICAg
IDogbUF0dHJpYnMoYXR0cmlicyksCiAgICAgICBtVW5pZm9ybXModW5pZm9ybXMpLAorICAgICAg
bVZhcnlpbmdzKHZhcnlpbmdzKSwKKyAgICAgIG1Qb2ludENvb3JkQWRkZWQoZmFsc2UpLAorICAg
ICAgbUZyb250RmFjaW5nQWRkZWQoZmFsc2UpLAorICAgICAgbUZyYWdDb29yZEFkZGVkKGZhbHNl
KSwKICAgICAgIG1IYXNoRnVuY3Rpb24oaGFzaEZ1bmN0aW9uKQogewogfQogCi0vLyBXZSBhcmUg
b25seSBpbnRlcmVzdGVkIGluIGF0dHJpYnV0ZSBhbmQgdW5pZm9ybSB2YXJpYWJsZSBkZWNsYXJh
dGlvbi4KLXZvaWQgQ29sbGVjdEF0dHJpYnNVbmlmb3Jtczo6dmlzaXRTeW1ib2woVEludGVybVN5
bWJvbCopCi17Ci19Ci0KLXZvaWQgQ29sbGVjdEF0dHJpYnNVbmlmb3Jtczo6dmlzaXRDb25zdGFu
dFVuaW9uKFRJbnRlcm1Db25zdGFudFVuaW9uKikKLXsKLX0KLQotYm9vbCBDb2xsZWN0QXR0cmli
c1VuaWZvcm1zOjp2aXNpdEJpbmFyeShWaXNpdCwgVEludGVybUJpbmFyeSopCi17Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi1ib29sIENvbGxlY3RBdHRyaWJzVW5pZm9ybXM6OnZpc2l0VW5hcnko
VmlzaXQsIFRJbnRlcm1VbmFyeSopCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIENv
bGxlY3RBdHRyaWJzVW5pZm9ybXM6OnZpc2l0U2VsZWN0aW9uKFZpc2l0LCBUSW50ZXJtU2VsZWN0
aW9uKikKLXsKLSAgICByZXR1cm4gZmFsc2U7CisvLyBXZSB3YW50IHRvIGNoZWNrIHdoZXRoZXIg
YSB1bmlmb3JtL3ZhcnlpbmcgaXMgc3RhdGljYWxseSB1c2VkCisvLyBiZWNhdXNlIHdlIG9ubHkg
Y291bnQgdGhlIHVzZWQgb25lcyBpbiBwYWNraW5nIGNvbXB1dGluZy4KKy8vIEFsc28sIGdsX0Zy
YWdDb29yZCwgZ2xfUG9pbnRDb29yZCwgYW5kIGdsX0Zyb250RmFjaW5nIGNvdW50CisvLyB0b3dh
cmQgdmFyeWluZyBjb3VudGluZyBpZiB0aGV5IGFyZSBzdGF0aWNhbGx5IHVzZWQgaW4gYSBmcmFn
bWVudAorLy8gc2hhZGVyLgordm9pZCBDb2xsZWN0VmFyaWFibGVzOjp2aXNpdFN5bWJvbChUSW50
ZXJtU3ltYm9sKiBzeW1ib2wpCit7CisgICAgQVNTRVJUKHN5bWJvbCAhPSBOVUxMKTsKKyAgICBU
VmFyaWFibGVJbmZvKiB2YXIgPSBOVUxMOworICAgIHN3aXRjaCAoc3ltYm9sLT5nZXRRdWFsaWZp
ZXIoKSkKKyAgICB7CisgICAgY2FzZSBFdnFWYXJ5aW5nT3V0OgorICAgIGNhc2UgRXZxSW52YXJp
YW50VmFyeWluZ091dDoKKyAgICBjYXNlIEV2cVZhcnlpbmdJbjoKKyAgICBjYXNlIEV2cUludmFy
aWFudFZhcnlpbmdJbjoKKyAgICAgICAgdmFyID0gZmluZFZhcmlhYmxlKHN5bWJvbC0+Z2V0VHlw
ZSgpLCBzeW1ib2wtPmdldFN5bWJvbCgpLCBtVmFyeWluZ3MpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEV2cVVuaWZvcm06CisgICAgICAgIHZhciA9IGZpbmRWYXJpYWJsZShzeW1ib2wtPmdl
dFR5cGUoKSwgc3ltYm9sLT5nZXRTeW1ib2woKSwgbVVuaWZvcm1zKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBFdnFGcmFnQ29vcmQ6CisgICAgICAgIGlmICghbUZyYWdDb29yZEFkZGVkKSB7
CisgICAgICAgICAgICBUVmFyaWFibGVJbmZvIGluZm87CisgICAgICAgICAgICBpbmZvLm5hbWUg
PSAiZ2xfRnJhZ0Nvb3JkIjsKKyAgICAgICAgICAgIGluZm8ubWFwcGVkTmFtZSA9ICJnbF9GcmFn
Q29vcmQiOworICAgICAgICAgICAgaW5mby50eXBlID0gU0hfRkxPQVRfVkVDNDsKKyAgICAgICAg
ICAgIGluZm8uc2l6ZSA9IDE7CisgICAgICAgICAgICBpbmZvLnByZWNpc2lvbiA9IEVicE1lZGl1
bTsgIC8vIFVzZSBtZWRpdW1wIGFzIGl0IGRvZXNuJ3QgcmVhbGx5IG1hdHRlci4KKyAgICAgICAg
ICAgIGluZm8uc3RhdGljVXNlID0gdHJ1ZTsKKwkgICAgbVZhcnlpbmdzLnB1c2hfYmFjayhpbmZv
KTsKKyAgICAgICAgICAgIG1GcmFnQ29vcmRBZGRlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgRXZxRnJvbnRGYWNpbmc6CisgICAgICAgIGlmICghbUZyb250
RmFjaW5nQWRkZWQpIHsKKyAgICAgICAgICAgIFRWYXJpYWJsZUluZm8gaW5mbzsKKyAgICAgICAg
ICAgIGluZm8ubmFtZSA9ICJnbF9Gcm9udEZhY2luZyI7CisgICAgICAgICAgICBpbmZvLm1hcHBl
ZE5hbWUgPSAiZ2xfRnJvbnRGYWNpbmciOworICAgICAgICAgICAgaW5mby50eXBlID0gU0hfQk9P
TDsKKyAgICAgICAgICAgIGluZm8uc2l6ZSA9IDE7CisgICAgICAgICAgICBpbmZvLnByZWNpc2lv
biA9IEVicFVuZGVmaW5lZDsKKyAgICAgICAgICAgIGluZm8uc3RhdGljVXNlID0gdHJ1ZTsKKwkg
ICAgbVZhcnlpbmdzLnB1c2hfYmFjayhpbmZvKTsKKyAgICAgICAgICAgIG1Gcm9udEZhY2luZ0Fk
ZGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgY2FzZSBFdnFQb2lu
dENvb3JkOgorICAgICAgICBpZiAoIW1Qb2ludENvb3JkQWRkZWQpIHsKKyAgICAgICAgICAgIFRW
YXJpYWJsZUluZm8gaW5mbzsKKyAgICAgICAgICAgIGluZm8ubmFtZSA9ICJnbF9Qb2ludENvb3Jk
IjsKKyAgICAgICAgICAgIGluZm8ubWFwcGVkTmFtZSA9ICJnbF9Qb2ludENvb3JkIjsKKyAgICAg
ICAgICAgIGluZm8udHlwZSA9IFNIX0ZMT0FUX1ZFQzI7CisgICAgICAgICAgICBpbmZvLnNpemUg
PSAxOworICAgICAgICAgICAgaW5mby5wcmVjaXNpb24gPSBFYnBNZWRpdW07ICAvLyBVc2UgbWVk
aXVtcCBhcyBpdCBkb2Vzbid0IHJlYWxseSBtYXR0ZXIuCisgICAgICAgICAgICBpbmZvLnN0YXRp
Y1VzZSA9IHRydWU7CisJICAgIG1WYXJ5aW5ncy5wdXNoX2JhY2soaW5mbyk7CisgICAgICAgICAg
ICBtUG9pbnRDb29yZEFkZGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmICh2YXIpCisgICAgICAg
IHZhci0+c3RhdGljVXNlID0gdHJ1ZTsKIH0KIAotYm9vbCBDb2xsZWN0QXR0cmlic1VuaWZvcm1z
Ojp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0ZSogbm9kZSkKK2Jvb2wgQ29s
bGVjdFZhcmlhYmxlczo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUqIG5v
ZGUpCiB7Ci0gICAgYm9vbCB2aXNpdENoaWxkcmVuID0gZmFsc2U7CisgICAgYm9vbCB2aXNpdENo
aWxkcmVuID0gdHJ1ZTsKIAogICAgIHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkKICAgICB7Ci0gICAg
Y2FzZSBFT3BTZXF1ZW5jZToKLSAgICAgICAgLy8gV2UgbmVlZCB0byB2aXNpdCBzZXF1ZW5jZSBj
aGlsZHJlbiB0byBnZXQgdG8gdmFyaWFibGUgZGVjbGFyYXRpb25zLgotICAgICAgICB2aXNpdENo
aWxkcmVuID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBFT3BEZWNsYXJhdGlvbjog
ewogICAgICAgICBjb25zdCBUSW50ZXJtU2VxdWVuY2UmIHNlcXVlbmNlID0gbm9kZS0+Z2V0U2Vx
dWVuY2UoKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSBzZXF1ZW5jZS5mcm9udCgp
LT5nZXRBc1R5cGVkKCktPmdldFF1YWxpZmllcigpOwotICAgICAgICBpZiAocXVhbGlmaWVyID09
IEV2cUF0dHJpYnV0ZSB8fCBxdWFsaWZpZXIgPT0gRXZxVW5pZm9ybSkKKyAgICAgICAgaWYgKHF1
YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUgfHwgcXVhbGlmaWVyID09IEV2cVVuaWZvcm0gfHwKKyAg
ICAgICAgICAgIHF1YWxpZmllciA9PSBFdnFWYXJ5aW5nSW4gfHwgcXVhbGlmaWVyID09IEV2cVZh
cnlpbmdPdXQgfHwKKyAgICAgICAgICAgIHF1YWxpZmllciA9PSBFdnFJbnZhcmlhbnRWYXJ5aW5n
SW4gfHwgcXVhbGlmaWVyID09IEV2cUludmFyaWFudFZhcnlpbmdPdXQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIFRWYXJpYWJsZUluZm9MaXN0JiBpbmZvTGlzdCA9IHF1YWxpZmllciA9PSBFdnFB
dHRyaWJ1dGUgPwotICAgICAgICAgICAgICAgIG1BdHRyaWJzIDogbVVuaWZvcm1zOworICAgICAg
ICAgICAgVFZhcmlhYmxlSW5mb0xpc3QmIGluZm9MaXN0ID0gcXVhbGlmaWVyID09IEV2cUF0dHJp
YnV0ZSA/IG1BdHRyaWJzIDoKKyAgICAgICAgICAgICAgICAocXVhbGlmaWVyID09IEV2cVVuaWZv
cm0gPyBtVW5pZm9ybXMgOiBtVmFyeWluZ3MpOwogICAgICAgICAgICAgZm9yIChUSW50ZXJtU2Vx
dWVuY2U6OmNvbnN0X2l0ZXJhdG9yIGkgPSBzZXF1ZW5jZS5iZWdpbigpOwogICAgICAgICAgICAg
ICAgICBpICE9IHNlcXVlbmNlLmVuZCgpOyArK2kpCiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgY29uc3QgVEludGVybVN5bWJvbCogdmFyaWFibGUgPSAoKmkpLT5nZXRBc1N5bWJvbE5v
ZGUoKTsKICAgICAgICAgICAgICAgICAvLyBUaGUgb25seSBjYXNlIGluIHdoaWNoIHRoZSBzZXF1
ZW5jZSB3aWxsIG5vdCBjb250YWluIGEKICAgICAgICAgICAgICAgICAvLyBUSW50ZXJtU3ltYm9s
IG5vZGUgaXMgaW5pdGlhbGl6YXRpb24uIEl0IHdpbGwgY29udGFpbiBhCi0gICAgICAgICAgICAg
ICAgLy8gVEludGVyQmluYXJ5IG5vZGUgaW4gdGhhdCBjYXNlLiBTaW5jZSBhdHRyaWJ1dGVzIGFu
ZCB1bmlmcm9tcwotICAgICAgICAgICAgICAgIC8vIGNhbm5vdCBiZSBpbml0aWFsaXplZCBpbiBh
IHNoYWRlciwgd2UgbXVzdCBoYXZlIG9ubHkKLSAgICAgICAgICAgICAgICAvLyBUSW50ZXJtU3lt
Ym9sIG5vZGVzIGluIHRoZSBzZXF1ZW5jZS4KKyAgICAgICAgICAgICAgICAvLyBUSW50ZXJCaW5h
cnkgbm9kZSBpbiB0aGF0IGNhc2UuIFNpbmNlIGF0dHJpYnV0ZXMsIHVuaWZvcm1zLAorICAgICAg
ICAgICAgICAgIC8vIGFuZCB2YXJ5aW5ncyBjYW5ub3QgYmUgaW5pdGlhbGl6ZWQgaW4gYSBzaGFk
ZXIsIHdlIG11c3QgaGF2ZQorICAgICAgICAgICAgICAgIC8vIG9ubHkgVEludGVybVN5bWJvbCBu
b2RlcyBpbiB0aGUgc2VxdWVuY2UuCiAgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhYmxlICE9
IE5VTEwpOwogICAgICAgICAgICAgICAgIFRTdHJpbmcgcHJvY2Vzc2VkU3ltYm9sOwogICAgICAg
ICAgICAgICAgIGlmIChtSGFzaEZ1bmN0aW9uID09IE5VTEwpCkBAIC0yMjMsNiArMjk1LDcgQEAg
Ym9vbCBDb2xsZWN0QXR0cmlic1VuaWZvcm1zOjp2aXNpdEFnZ3JlZwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcm9jZXNzZWRTeW1ib2wsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluZm9MaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtSGFz
aEZ1bmN0aW9uKTsKKyAgICAgICAgICAgICAgICB2aXNpdENoaWxkcmVuID0gZmFsc2U7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC0yMzMsMTMgKzMwNiwzIEBA
IGJvb2wgQ29sbGVjdEF0dHJpYnNVbmlmb3Jtczo6dmlzaXRBZ2dyZWcKICAgICByZXR1cm4gdmlz
aXRDaGlsZHJlbjsKIH0KIAotYm9vbCBDb2xsZWN0QXR0cmlic1VuaWZvcm1zOjp2aXNpdExvb3Ao
VmlzaXQsIFRJbnRlcm1Mb29wKikKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgQ29s
bGVjdEF0dHJpYnNVbmlmb3Jtczo6dmlzaXRCcmFuY2goVmlzaXQsIFRJbnRlcm1CcmFuY2gqKQot
ewotICAgIHJldHVybiBmYWxzZTsKLX0KLQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL1ZhcmlhYmxlSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9WYXJpYWJsZUluZm8uaAkocmV2aXNpb24gMTU5NTMyKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1ZhcmlhYmxlSW5mby5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMCwyOCArMjAsMzAgQEAgc3RydWN0IFRWYXJpYWJsZUluZm8gewog
ICAgIFRQZXJzaXN0U3RyaW5nIG1hcHBlZE5hbWU7CiAgICAgU2hEYXRhVHlwZSB0eXBlOwogICAg
IGludCBzaXplOworICAgIFRQcmVjaXNpb24gcHJlY2lzaW9uOworICAgIGJvb2wgc3RhdGljVXNl
OwogfTsKIHR5cGVkZWYgc3RkOjp2ZWN0b3I8VFZhcmlhYmxlSW5mbz4gVFZhcmlhYmxlSW5mb0xp
c3Q7CiAKLS8vIFRyYXZlcnNlcyBpbnRlcm1lZGlhdGUgdHJlZSB0byBjb2xsZWN0IGFsbCBhdHRy
aWJ1dGVzIGFuZCB1bmlmb3Jtcy4KLWNsYXNzIENvbGxlY3RBdHRyaWJzVW5pZm9ybXMgOiBwdWJs
aWMgVEludGVybVRyYXZlcnNlciB7CisvLyBUcmF2ZXJzZXMgaW50ZXJtZWRpYXRlIHRyZWUgdG8g
Y29sbGVjdCBhbGwgYXR0cmlidXRlcywgdW5pZm9ybXMsIHZhcnlpbmdzLgorY2xhc3MgQ29sbGVj
dFZhcmlhYmxlcyA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyIHsKIHB1YmxpYzoKLSAgICBDb2xs
ZWN0QXR0cmlic1VuaWZvcm1zKFRWYXJpYWJsZUluZm9MaXN0JiBhdHRyaWJzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVFZhcmlhYmxlSW5mb0xpc3QmIHVuaWZvcm1zLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2hIYXNoRnVuY3Rpb242NCBoYXNoRnVuY3Rpb24pOworICAgIENv
bGxlY3RWYXJpYWJsZXMoVFZhcmlhYmxlSW5mb0xpc3QmIGF0dHJpYnMsCisgICAgICAgICAgICAg
ICAgICAgICBUVmFyaWFibGVJbmZvTGlzdCYgdW5pZm9ybXMsCisgICAgICAgICAgICAgICAgICAg
ICBUVmFyaWFibGVJbmZvTGlzdCYgdmFyeWluZ3MsCisgICAgICAgICAgICAgICAgICAgICBTaEhh
c2hGdW5jdGlvbjY0IGhhc2hGdW5jdGlvbik7CiAKICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRTeW1i
b2woVEludGVybVN5bWJvbCopOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdENvbnN0YW50VW5pb24o
VEludGVybUNvbnN0YW50VW5pb24qKTsKLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRCaW5hcnkoVmlz
aXQsIFRJbnRlcm1CaW5hcnkqKTsKLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRVbmFyeShWaXNpdCwg
VEludGVybVVuYXJ5Kik7Ci0gICAgdmlydHVhbCBib29sIHZpc2l0U2VsZWN0aW9uKFZpc2l0LCBU
SW50ZXJtU2VsZWN0aW9uKik7CiAgICAgdmlydHVhbCBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0
LCBUSW50ZXJtQWdncmVnYXRlKik7Ci0gICAgdmlydHVhbCBib29sIHZpc2l0TG9vcChWaXNpdCwg
VEludGVybUxvb3AqKTsKLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRCcmFuY2goVmlzaXQsIFRJbnRl
cm1CcmFuY2gqKTsKIAogcHJpdmF0ZToKICAgICBUVmFyaWFibGVJbmZvTGlzdCYgbUF0dHJpYnM7
CiAgICAgVFZhcmlhYmxlSW5mb0xpc3QmIG1Vbmlmb3JtczsKKyAgICBUVmFyaWFibGVJbmZvTGlz
dCYgbVZhcnlpbmdzOworCisgICAgYm9vbCBtUG9pbnRDb29yZEFkZGVkOworICAgIGJvb2wgbUZy
b250RmFjaW5nQWRkZWQ7CisgICAgYm9vbCBtRnJhZ0Nvb3JkQWRkZWQ7CiAKICAgICBTaEhhc2hG
dW5jdGlvbjY0IG1IYXNoRnVuY3Rpb247CiB9OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL2RlYnVnLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvZGVidWcuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZGVidWcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMiwxOSArMTIsMTAgQEAKICNpbmNsdWRlIDxzdGRpby5oPgogCiAjaW5jbHVkZSAiY29t
cGlsZXIvSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5oIgotI2luY2x1ZGUgImNvbXBpbGVyL1BhcnNl
SGVscGVyLmgiCi0KLSNpZiBkZWZpbmVkKF9fY2xhbmdfXykKLSNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBwdXNoCi0jcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLXZhcmlh
YmxlIgotI2VuZGlmCisjaW5jbHVkZSAiY29tcGlsZXIvUGFyc2VDb250ZXh0LmgiCiAKIHN0YXRp
YyBjb25zdCBpbnQga1RyYWNlQnVmZmVyTGVuID0gMTAyNDsKIAotI2lmIGRlZmluZWQoX19jbGFu
Z19fKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotI2VuZGlmCi0KICNpZmRlZiBUUkFD
RV9FTkFCTEVECiBleHRlcm4gIkMiIHsKIHZvaWQgVHJhY2UoY29uc3QgY2hhciAqZm9ybWF0LCAu
Li4pIHsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nZW5lcmF0
ZV9wYXJzZXIuc2gKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL2dlbmVyYXRlX3BhcnNlci5zaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dlbmVyYXRlX3BhcnNlci5zaAkod29ya2luZyBj
b3B5KQpAQCAtMjUsMyArMjUsNCBAQCBzY3JpcHRfZGlyPSQoZGlybmFtZSAkMCkKICMgR2VuZXJh
dGUgUGFyc2VyCiBydW5fZmxleCBnbHNsYW5nCiBydW5fYmlzb24gZ2xzbGFuZworcGF0Y2ggLS1z
aWxlbnQgLS1mb3J3YXJkIDwgNjRiaXQtbGV4ZXItc2FmZXR5LnBhdGNoCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy5sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLmwJKHJldmlzaW9uIDE1
OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLmwJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDE3ICszMywxMSBAQCBXSElDSCBHRU5FUkFURVMgVEhFIEdM
U0wgRVMgTEVYRVIgKGdsc2xhCiAjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDUwNSkKICNwcmFn
bWEgd2FybmluZyhkaXNhYmxlOiA0NzAxKQogI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fY2xhbmdf
XykKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgaWdub3JlZCAiLVd1bmtub3duLXByYWdtYXMiCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
aWdub3JlZCAiLVdkZXByZWNhdGVkLXJlZ2lzdGVyIgotI2VuZGlmCiB9CiAKICV7CiAjaW5jbHVk
ZSAiY29tcGlsZXIvZ2xzbGFuZy5oIgotI2luY2x1ZGUgImNvbXBpbGVyL1BhcnNlSGVscGVyLmgi
CisjaW5jbHVkZSAiY29tcGlsZXIvUGFyc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiY29tcGlsZXIv
cHJlcHJvY2Vzc29yL1Rva2VuLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdXRpbC5oIgogI2luY2x1
ZGUgImdsc2xhbmdfdGFiLmgiCkBAIC02Myw2ICs1Nyw4IEBAIFdISUNIIEdFTkVSQVRFUyBUSEUg
R0xTTCBFUyBMRVhFUiAoZ2xzbGEKIHN0YXRpYyB5eV9zaXplX3Qgc3RyaW5nX2lucHV0KGNoYXIq
IGJ1ZiwgeXlfc2l6ZV90IG1heF9zaXplLCB5eXNjYW5fdCB5eXNjYW5uZXIpOwogc3RhdGljIGlu
dCBjaGVja190eXBlKHl5c2Nhbl90IHl5c2Nhbm5lcik7CiBzdGF0aWMgaW50IHJlc2VydmVkX3dv
cmQoeXlzY2FuX3QgeXlzY2FubmVyKTsKK3N0YXRpYyBpbnQgaW50X2NvbnN0YW50KHl5c2Nhbl90
IHl5c2Nhbm5lcik7CitzdGF0aWMgaW50IGZsb2F0X2NvbnN0YW50KHl5c2Nhbl90IHl5c2Nhbm5l
cik7CiAlfQogCiAlb3B0aW9uIG5veXl3cmFwIG5vdW5wdXQgbmV2ZXItaW50ZXJhY3RpdmUKQEAg
LTE5NSwxMyArMTkxLDEzIEBAIE8gICAgICAgICAgIFswLTddCiAgICByZXR1cm4gY2hlY2tfdHlw
ZSh5eXNjYW5uZXIpOwogfQogCi0wW3hYXXtIfSsgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBz
dGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5U
OyB9Ci0we099KyAgICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+
KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9Ci17RH0rICAgICAg
ICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQs
IDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9Ci0KLXtEfSt7RX0gICAgICAgICAgIHsgeXls
dmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJu
IEZMT0FUQ09OU1RBTlQ7IH0KLXtEfSsiLiJ7RH0qKHtFfSk/IHsgeXlsdmFsLT5sZXguZiA9IHN0
YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7
IH0KLSIuIntEfSsoe0V9KT8gICAgIHsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0
PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KKzBbeFhde0h9KyAg
ICAgICAgIHsgcmV0dXJuIGludF9jb25zdGFudCh5eXNjYW5uZXIpOyB9Ciswe099KyAgICAgICAg
ICAgICB7IHJldHVybiBpbnRfY29uc3RhbnQoeXlzY2FubmVyKTsgfQore0R9KyAgICAgICAgICAg
ICAgeyByZXR1cm4gaW50X2NvbnN0YW50KHl5c2Nhbm5lcik7IH0KKwore0R9K3tFfSAgICAgICAg
ICAgeyByZXR1cm4gZmxvYXRfY29uc3RhbnQoeXlzY2FubmVyKTsgfQore0R9KyIuIntEfSooe0V9
KT8geyByZXR1cm4gZmxvYXRfY29uc3RhbnQoeXlzY2FubmVyKTsgfQorIi4ie0R9Kyh7RX0pPyAg
ICAgeyByZXR1cm4gZmxvYXRfY29uc3RhbnQoeXlzY2FubmVyKTsgfQogCiAiKz0iICAgICAgICAg
ICAgeyByZXR1cm4gQUREX0FTU0lHTjsgfQogIi09IiAgICAgICAgICAgIHsgcmV0dXJuIFNVQl9B
U1NJR047IH0KQEAgLTI1NiwxMCArMjUyLDYgQEAgTyAgICAgICAgICAgWzAtN10KIAogJSUKIAot
I2lmIGRlZmluZWQoX19jbGFuZ19fKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotI2Vu
ZGlmCi0KIHl5X3NpemVfdCBzdHJpbmdfaW5wdXQoY2hhciogYnVmLCB5eV9zaXplX3QgbWF4X3Np
emUsIHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAgIHBwOjpUb2tlbiB0b2tlbjsKICAgICB5eWdl
dF9leHRyYSh5eXNjYW5uZXIpLT5wcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7CkBAIC0yOTgsNiAr
MjkwLDI3IEBAIGludCByZXNlcnZlZF93b3JkKHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAgIHJl
dHVybiAwOwogfQogCit2b2lkIHl5ZXJyb3IoWVlMVFlQRSogbGxvYywgVFBhcnNlQ29udGV4dCog
Y29udGV4dCwgY29uc3QgY2hhciogcmVhc29uKSB7CisgICAgY29udGV4dC0+ZXJyb3IoKmxsb2Ms
IHJlYXNvbiwgeXlnZXRfdGV4dChjb250ZXh0LT5zY2FubmVyKSk7CisgICAgY29udGV4dC0+cmVj
b3ZlcigpOworfQorCitpbnQgaW50X2NvbnN0YW50KHl5c2Nhbl90IHl5c2Nhbm5lcikgeworICAg
IHN0cnVjdCB5eWd1dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIHl5c2Nhbm5lcjsKKwor
ICAgIGlmICghYXRvaV9jbGFtcCh5eXRleHQsICYoeXlsdmFsLT5sZXguaSkpKQorICAgICAgICB5
eWV4dHJhLT53YXJuaW5nKCp5eWxsb2MsICJJbnRlZ2VyIG92ZXJmbG93IiwgeXl0ZXh0LCAiIik7
CisgICAgcmV0dXJuIElOVENPTlNUQU5UOworfQorCitpbnQgZmxvYXRfY29uc3RhbnQoeXlzY2Fu
X3QgeXlzY2FubmVyKSB7CisgICAgc3RydWN0IHl5Z3V0c190KiB5eWcgPSAoc3RydWN0IHl5Z3V0
c190KikgeXlzY2FubmVyOworCisgICAgaWYgKCFhdG9mX2NsYW1wKHl5dGV4dCwgJih5eWx2YWwt
PmxleC5mKSkpCisgICAgICAgIHl5ZXh0cmEtPndhcm5pbmcoKnl5bGxvYywgIkZsb2F0IG92ZXJm
bG93IiwgeXl0ZXh0LCAiIik7CisgICAgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7Cit9CisKIGludCBn
bHNsYW5nX2luaXRpYWxpemUoVFBhcnNlQ29udGV4dCogY29udGV4dCkgewogICAgIHl5c2Nhbl90
IHNjYW5uZXIgPSBOVUxMOwogICAgIGlmICh5eWxleF9pbml0X2V4dHJhKGNvbnRleHQsICZzY2Fu
bmVyKSkKQEAgLTMyNiw2ICszMzksNyBAQCBpbnQgZ2xzbGFuZ19zY2FuKHNpemVfdCBjb3VudCwg
Y29uc3QgY2hhCiAgICAgLy8gSW5pdGlhbGl6ZSBwcmVwcm9jZXNzb3IuCiAgICAgaWYgKCFjb250
ZXh0LT5wcmVwcm9jZXNzb3IuaW5pdChjb3VudCwgc3RyaW5nLCBsZW5ndGgpKQogICAgICAgICBy
ZXR1cm4gMTsKKyAgICBjb250ZXh0LT5wcmVwcm9jZXNzb3Iuc2V0TWF4VG9rZW5MZW5ndGgoU0hf
TUFYX1RPS0VOX0xFTkdUSCk7CiAKICAgICAvLyBEZWZpbmUgZXh0ZW5zaW9uIG1hY3Jvcy4KICAg
ICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIGV4dEJlaGF2aW9yID0gY29udGV4dC0+ZXh0ZW5z
aW9uQmVoYXZpb3IoKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9nbHNsYW5nLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL2dsc2xhbmcueQkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcueQkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUs
NyBAQCBXSElDSCBHRU5FUkFURVMgVEhFIEdMU0wgRVMgUEFSU0VSIChnbHNsCiAjZW5kaWYKIAog
I2luY2x1ZGUgImNvbXBpbGVyL1N5bWJvbFRhYmxlLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvUGFy
c2VIZWxwZXIuaCIKKyNpbmNsdWRlICJjb21waWxlci9QYXJzZUNvbnRleHQuaCIKICNpbmNsdWRl
ICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKIAogI2RlZmluZSBZWUVOQUJMRV9OTFMgMApAQCAtNDcs
MTEgKzQ3LDE0IEBAIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBQQVJTRVIgKGdsc2wKICVw
dXJlLXBhcnNlcgogJXBhcnNlLXBhcmFtIHtUUGFyc2VDb250ZXh0KiBjb250ZXh0fQogJWxvY2F0
aW9ucwotJWxleC1wYXJhbSB7WVlMRVhfUEFSQU19CiAKLSV1bmlvbiB7CislY29kZSByZXF1aXJl
cyB7CiAjZGVmaW5lIFlZTFRZUEUgVFNvdXJjZUxvYwogI2RlZmluZSBZWUxUWVBFX0lTX0RFQ0xB
UkVEIDEKKyNkZWZpbmUgU0hfTUFYX1RPS0VOX0xFTkdUSCAyNTYgIC8vIFdlYkdMIHNwZWMuCit9
CisKKyV1bmlvbiB7CiAgICAgc3RydWN0IHsKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAg
VFN0cmluZyAqc3RyaW5nOwpAQCAtODMsMTEgKzg2LDExIEBAIFdISUNIIEdFTkVSQVRFUyBUSEUg
R0xTTCBFUyBQQVJTRVIgKGdsc2wKIAogJXsKIGV4dGVybiBpbnQgeXlsZXgoWVlTVFlQRSogeXls
dmFsLCBZWUxUWVBFKiB5eWxsb2MsIHZvaWQqIHl5c2Nhbm5lcik7Ci1zdGF0aWMgdm9pZCB5eWVy
cm9yKFlZTFRZUEUqIHl5bGxvYywgVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciog
cmVhc29uKTsKK2V4dGVybiB2b2lkIHl5ZXJyb3IoWVlMVFlQRSogeXlsbG9jLCBUUGFyc2VDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pOwogCiAjZGVmaW5lIFlZTExPQ19ERUZB
VUxUKEN1cnJlbnQsIFJocywgTikgICAgICAgICAgICAgICAgICAgICAgXAogICBkbyB7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
IGlmIChOKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICBpZiAoWVlJRChOKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAogICAgICAgICAoQ3VycmVudCkuZmlyc3RfZmlsZSA9IFlZUkhTTE9DKFJocywgMSku
Zmlyc3RfZmlsZTsgIFwKICAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2xpbmUgPSBZWVJIU0xPQyhS
aHMsIDEpLmZpcnN0X2xpbmU7ICBcCiAgICAgICAgIChDdXJyZW50KS5sYXN0X2ZpbGUgPSBZWVJI
U0xPQyhSaHMsIE4pLmxhc3RfZmlsZTsgICAgXApAQCAtMjI1LDE0ICsyMjgsNiBAQCBwcmltYXJ5
X2V4cHJlc3Npb24KICAgICAgICAgJCQgPSAkMTsKICAgICB9CiAgICAgfCBJTlRDT05TVEFOVCB7
Ci0gICAgICAgIC8vCi0gICAgICAgIC8vIElOVF9UWVBFIGlzIG9ubHkgMTYtYml0IHBsdXMgc2ln
biBiaXQgZm9yIHZlcnRleC9mcmFnbWVudCBzaGFkZXJzLAotICAgICAgICAvLyBjaGVjayBmb3Ig
b3ZlcmZsb3cgZm9yIGNvbnN0YW50cwotICAgICAgICAvLwotICAgICAgICBpZiAoYWJzKCQxLmkp
ID49ICgxIDw8IDE2KSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICIgaW50ZWdl
ciBjb25zdGFudCBvdmVyZmxvdyIsICIiKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKLSAgICAgICAgfQogICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENv
bnN0YW50VW5pb25bMV07CiAgICAgICAgIHVuaW9uQXJyYXktPnNldElDb25zdCgkMS5pKTsKICAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFy
cmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMSk7CkBAIC0yMDAy
LDExICsxOTk3LDYgQEAgZnVuY3Rpb25fZGVmaW5pdGlvbgogCiAlJQogCi12b2lkIHl5ZXJyb3Io
WVlMVFlQRSogeXlsbG9jLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFz
b24pIHsKLSAgICBjb250ZXh0LT5lcnJvcigqeXlsbG9jLCByZWFzb24sICIiKTsKLSAgICBjb250
ZXh0LT5yZWNvdmVyKCk7Ci19Ci0KIGludCBnbHNsYW5nX3BhcnNlKFRQYXJzZUNvbnRleHQqIGNv
bnRleHQpIHsKICAgICByZXR1cm4geXlwYXJzZShjb250ZXh0KTsKIH0KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX2xleC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfbGV4LmNwcAko
cmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L2dsc2xhbmdfbGV4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTksMTIgKzE5LDYgQEAKICNwcmFn
bWEgd2FybmluZyhkaXNhYmxlOiA0NzAxKQogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fY2xhbmdf
XykKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgaWdub3JlZCAiLVd1bmtub3duLXByYWdtYXMiCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
aWdub3JlZCAiLVdkZXByZWNhdGVkLXJlZ2lzdGVyIgotI2VuZGlmCi0KIAogCiAjbGluZSAyNSAi
Li9nbHNsYW5nX2xleC5jcHAiCkBAIC03ODgsNyArNzgyLDcgQEAgV0hJQ0ggR0VORVJBVEVTIFRI
RSBHTFNMIEVTIExFWEVSIChnbHNsYQogKi8KIAogI2luY2x1ZGUgImNvbXBpbGVyL2dsc2xhbmcu
aCIKLSNpbmNsdWRlICJjb21waWxlci9QYXJzZUhlbHBlci5oIgorI2luY2x1ZGUgImNvbXBpbGVy
L1BhcnNlQ29udGV4dC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5o
IgogI2luY2x1ZGUgImNvbXBpbGVyL3V0aWwuaCIKICNpbmNsdWRlICJnbHNsYW5nX3RhYi5oIgpA
QCAtODA4LDYgKzgwMiw4IEBAIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBMRVhFUiAoZ2xz
bGEKIHN0YXRpYyB5eV9zaXplX3Qgc3RyaW5nX2lucHV0KGNoYXIqIGJ1ZiwgeXlfc2l6ZV90IG1h
eF9zaXplLCB5eXNjYW5fdCB5eXNjYW5uZXIpOwogc3RhdGljIGludCBjaGVja190eXBlKHl5c2Nh
bl90IHl5c2Nhbm5lcik7CiBzdGF0aWMgaW50IHJlc2VydmVkX3dvcmQoeXlzY2FuX3QgeXlzY2Fu
bmVyKTsKK3N0YXRpYyBpbnQgaW50X2NvbnN0YW50KHl5c2Nhbl90IHl5c2Nhbm5lcik7CitzdGF0
aWMgaW50IGZsb2F0X2NvbnN0YW50KHl5c2Nhbl90IHl5c2Nhbm5lcik7CiAKICNkZWZpbmUgSU5J
VElBTCAwCiAKQEAgLTE1MDYsMjcgKzE1MDIsMjcgQEAgWVlfUlVMRV9TRVRVUAogCVlZX0JSRUFL
CiBjYXNlIDk0OgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8
aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybiBJTlRDT05TVEFOVDsgfQoreyByZXR1
cm4gaW50X2NvbnN0YW50KHl5c2Nhbm5lcik7IH0KIAlZWV9CUkVBSwogY2FzZSA5NToKIFlZX1JV
TEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4
dCwgMCwgMCkpOyByZXR1cm4gSU5UQ09OU1RBTlQ7IH0KK3sgcmV0dXJuIGludF9jb25zdGFudCh5
eXNjYW5uZXIpOyB9CiAJWVlfQlJFQUsKIGNhc2UgOTY6CiBZWV9SVUxFX1NFVFVQCi17IHl5bHZh
bC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJu
IElOVENPTlNUQU5UOyB9Cit7IHJldHVybiBpbnRfY29uc3RhbnQoeXlzY2FubmVyKTsgfQogCVlZ
X0JSRUFLCiBjYXNlIDk3OgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5mID0gc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkpOyByZXR1cm4gRkxPQVRDT05TVEFOVDsgfQor
eyByZXR1cm4gZmxvYXRfY29uc3RhbnQoeXlzY2FubmVyKTsgfQogCVlZX0JSRUFLCiBjYXNlIDk4
OgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0
b2ZfZG90KHl5dGV4dCkpOyByZXR1cm4gRkxPQVRDT05TVEFOVDsgfQoreyByZXR1cm4gZmxvYXRf
Y29uc3RhbnQoeXlzY2FubmVyKTsgfQogCVlZX0JSRUFLCiBjYXNlIDk5OgogWVlfUlVMRV9TRVRV
UAoteyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkp
OyByZXR1cm4gRkxPQVRDT05TVEFOVDsgfQoreyByZXR1cm4gZmxvYXRfY29uc3RhbnQoeXlzY2Fu
bmVyKTsgfQogCVlZX0JSRUFLCiBjYXNlIDEwMDoKIFlZX1JVTEVfU0VUVVAKQEAgLTIxMDMsNyAr
MjA5OSw3IEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCAKIAkJCQlj
YXNlIEVPQl9BQ1RfRU5EX09GX0ZJTEU6CiAJCQkJCXsKIAkJCQkJaWYgKCB5eXdyYXAoeXlzY2Fu
bmVyICkgKQotCQkJCQkJcmV0dXJuIDA7CisJCQkJCQlyZXR1cm4gRU9GOwogCiAJCQkJCWlmICgg
ISB5eWctPnl5X2RpZF9idWZmZXJfc3dpdGNoX29uX2VvZiApCiAJCQkJCQlZWV9ORVdfRklMRTsK
QEAgLTI4NjUsMTAgKzI4NjEsNiBAQCB2b2lkIHl5ZnJlZSAodm9pZCAqIHB0ciAsIHl5c2Nhbl90
IHl5c2NhCiAKICNkZWZpbmUgWVlUQUJMRVNfTkFNRSAieXl0YWJsZXMiCiAKLSNpZiBkZWZpbmVk
KF9fY2xhbmdfXykKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSNlbmRpZgotCiB5eV9z
aXplX3Qgc3RyaW5nX2lucHV0KGNoYXIqIGJ1ZiwgeXlfc2l6ZV90IG1heF9zaXplLCB5eXNjYW5f
dCB5eXNjYW5uZXIpIHsKICAgICBwcDo6VG9rZW4gdG9rZW47CiAgICAgeXlnZXRfZXh0cmEoeXlz
Y2FubmVyKS0+cHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOwpAQCAtMjkwNyw2ICsyODk5LDI3IEBA
IGludCByZXNlcnZlZF93b3JkKHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAgIHJldHVybiAwOwog
fQogCit2b2lkIHl5ZXJyb3IoWVlMVFlQRSogbGxvYywgVFBhcnNlQ29udGV4dCogY29udGV4dCwg
Y29uc3QgY2hhciogcmVhc29uKSB7CisgICAgY29udGV4dC0+ZXJyb3IoKmxsb2MsIHJlYXNvbiwg
eXlnZXRfdGV4dChjb250ZXh0LT5zY2FubmVyKSk7CisgICAgY29udGV4dC0+cmVjb3ZlcigpOwor
fQorCitpbnQgaW50X2NvbnN0YW50KHl5c2Nhbl90IHl5c2Nhbm5lcikgeworICAgIHN0cnVjdCB5
eWd1dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIHl5c2Nhbm5lcjsKKworICAgIGlmICgh
YXRvaV9jbGFtcCh5eXRleHQsICYoeXlsdmFsLT5sZXguaSkpKQorICAgICAgICB5eWV4dHJhLT53
YXJuaW5nKCp5eWxsb2MsICJJbnRlZ2VyIG92ZXJmbG93IiwgeXl0ZXh0LCAiIik7CisgICAgcmV0
dXJuIElOVENPTlNUQU5UOworfQorCitpbnQgZmxvYXRfY29uc3RhbnQoeXlzY2FuX3QgeXlzY2Fu
bmVyKSB7CisgICAgc3RydWN0IHl5Z3V0c190KiB5eWcgPSAoc3RydWN0IHl5Z3V0c190KikgeXlz
Y2FubmVyOworCisgICAgaWYgKCFhdG9mX2NsYW1wKHl5dGV4dCwgJih5eWx2YWwtPmxleC5mKSkp
CisgICAgICAgIHl5ZXh0cmEtPndhcm5pbmcoKnl5bGxvYywgIkZsb2F0IG92ZXJmbG93IiwgeXl0
ZXh0LCAiIik7CisgICAgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7Cit9CisKIGludCBnbHNsYW5nX2lu
aXRpYWxpemUoVFBhcnNlQ29udGV4dCogY29udGV4dCkgewogICAgIHl5c2Nhbl90IHNjYW5uZXIg
PSBOVUxMOwogICAgIGlmICh5eWxleF9pbml0X2V4dHJhKGNvbnRleHQsJnNjYW5uZXIpKQpAQCAt
MjkzNSw2ICsyOTQ4LDcgQEAgaW50IGdsc2xhbmdfc2NhbihzaXplX3QgY291bnQsIGNvbnN0IGNo
YQogICAgIC8vIEluaXRpYWxpemUgcHJlcHJvY2Vzc29yLgogICAgIGlmICghY29udGV4dC0+cHJl
cHJvY2Vzc29yLmluaXQoY291bnQsIHN0cmluZywgbGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIDE7
CisgICAgY29udGV4dC0+cHJlcHJvY2Vzc29yLnNldE1heFRva2VuTGVuZ3RoKFNIX01BWF9UT0tF
Tl9MRU5HVEgpOwogCiAgICAgLy8gRGVmaW5lIGV4dGVuc2lvbiBtYWNyb3MuCiAgICAgY29uc3Qg
VEV4dGVuc2lvbkJlaGF2aW9yJiBleHRCZWhhdmlvciA9IGNvbnRleHQtPmV4dGVuc2lvbkJlaGF2
aW9yKCk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFu
Z190YWIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9nbHNsYW5nX3RhYi5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsMjQgKzEsMjMgQEAKLS8qIEEgQmlzb24gcGFyc2VyLCBtYWRlIGJ5IEdOVSBCaXNvbiAyLjMu
ICAqLworLyogQXBwbGUgTm90ZTogRm9yIHRoZSBhdm9pZGFuY2Ugb2YgZG91YnQsIEFwcGxlIGVs
ZWN0cyB0byBkaXN0cmlidXRlIHRoaXMgZmlsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEJTRCBs
aWNlbnNlLiAqLwogCi0vKiBTa2VsZXRvbiBpbXBsZW1lbnRhdGlvbiBmb3IgQmlzb24ncyBZYWNj
LWxpa2UgcGFyc2VycyBpbiBDCisvKiBBIEJpc29uIHBhcnNlciwgbWFkZSBieSBHTlUgQmlzb24g
Mi43LiAgKi8KIAotICAgQ29weXJpZ2h0IChDKSAxOTg0LCAxOTg5LCAxOTkwLCAyMDAwLCAyMDAx
LCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2Ci0gICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4KLQotICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy8qIEJpc29uIGltcGxlbWVudGF0aW9uIGZvciBZ
YWNjLWxpa2UgcGFyc2VycyBpbiBDCisgICAKKyAgICAgIENvcHlyaWdodCAoQykgMTk4NCwgMTk4
OS0xOTkwLCAyMDAwLTIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICAKKyAg
IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotICAgYW55IGxhdGVy
IHZlcnNpb24uCi0KKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJz
aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICAgCiAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAgICBHTlUgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCisgICAKICAgIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0
d2FyZQotICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKLSAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KKyAgIGFsb25nIHdpdGggdGhp
cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAg
Ki8KIAogLyogQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSBjcmVhdGUgYSBsYXJnZXIg
d29yayB0aGF0IGNvbnRhaW5zCiAgICBwYXJ0IG9yIGFsbCBvZiB0aGUgQmlzb24gcGFyc2VyIHNr
ZWxldG9uIGFuZCBkaXN0cmlidXRlIHRoYXQgd29yawpAQCAtMjksNyArMjgsNyBAQAogICAgc3Bl
Y2lhbCBleGNlcHRpb24sIHdoaWNoIHdpbGwgY2F1c2UgdGhlIHNrZWxldG9uIGFuZCB0aGUgcmVz
dWx0aW5nCiAgICBCaXNvbiBvdXRwdXQgZmlsZXMgdG8gYmUgbGljZW5zZWQgdW5kZXIgdGhlIEdO
VSBHZW5lcmFsIFB1YmxpYwogICAgTGljZW5zZSB3aXRob3V0IHRoaXMgc3BlY2lhbCBleGNlcHRp
b24uCi0KKyAgIAogICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB3YXMgYWRkZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiBpbgogICAgdmVyc2lvbiAyLjIgb2YgQmlzb24uICAqLwog
CkBAIC00Nyw3ICs0Niw3IEBACiAjZGVmaW5lIFlZQklTT04gMQogCiAvKiBCaXNvbiB2ZXJzaW9u
LiAgKi8KLSNkZWZpbmUgWVlCSVNPTl9WRVJTSU9OICIyLjMiCisjZGVmaW5lIFlZQklTT05fVkVS
U0lPTiAiMi43IgogCiAvKiBTa2VsZXRvbiBuYW1lLiAgKi8KICNkZWZpbmUgWVlTS0VMRVRPTl9O
QU1FICJ5YWNjLmMiCkBAIC01NSw4ICs1NCw4MiBAQAogLyogUHVyZSBwYXJzZXJzLiAgKi8KICNk
ZWZpbmUgWVlQVVJFIDEKIAotLyogVXNpbmcgbG9jYXRpb25zLiAgKi8KLSNkZWZpbmUgWVlMU1Bf
TkVFREVEIDEKKy8qIFB1c2ggcGFyc2Vycy4gICovCisjZGVmaW5lIFlZUFVTSCAwCisKKy8qIFB1
bGwgcGFyc2Vycy4gICovCisjZGVmaW5lIFlZUFVMTCAxCisKKworCisKKy8qIENvcHkgdGhlIGZp
cnN0IHBhcnQgb2YgdXNlciBkZWNsYXJhdGlvbnMuICAqLworCisKKy8vCisvLyBDb3B5cmlnaHQg
KGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8v
CisKKy8vIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSBnZW5lcmF0ZV9wYXJzZXIuc2gu
IERPIE5PVCBFRElUIQorCisvLyBJZ25vcmUgZXJyb3JzIGluIGF1dG8tZ2VuZXJhdGVkIGNvZGUu
CisjaWYgZGVmaW5lZChfX0dOVUNfXykKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAi
LVd1bnVzZWQtZnVuY3Rpb24iCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51
c2VkLXZhcmlhYmxlIgorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3N3aXRjaC1l
bnVtIgorI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0
MDY1KQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxODkpCisjcHJhZ21hIHdhcm5pbmcoZGlz
YWJsZTogNDUwNSkKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NzAxKQorI2VuZGlmCisKKyNp
bmNsdWRlICJjb21waWxlci9TeW1ib2xUYWJsZS5oIgorI2luY2x1ZGUgImNvbXBpbGVyL1BhcnNl
Q29udGV4dC5oIgorI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgorCisjZGVmaW5lIFlZ
RU5BQkxFX05MUyAwCisKKyNkZWZpbmUgWVlMRVhfUEFSQU0gY29udGV4dC0+c2Nhbm5lcgorCisK
KworIyBpZm5kZWYgWVlfTlVMTAorIyAgaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiAyMDExMDNM
IDw9IF9fY3BsdXNwbHVzCisjICAgZGVmaW5lIFlZX05VTEwgbnVsbHB0cgorIyAgZWxzZQorIyAg
IGRlZmluZSBZWV9OVUxMIDAKKyMgIGVuZGlmCisjIGVuZGlmCisKKy8qIEVuYWJsaW5nIHZlcmJv
c2UgZXJyb3IgbWVzc2FnZXMuICAqLworI2lmZGVmIFlZRVJST1JfVkVSQk9TRQorIyB1bmRlZiBZ
WUVSUk9SX1ZFUkJPU0UKKyMgZGVmaW5lIFlZRVJST1JfVkVSQk9TRSAxCisjZWxzZQorIyBkZWZp
bmUgWVlFUlJPUl9WRVJCT1NFIDAKKyNlbmRpZgorCisvKiBJbiBhIGZ1dHVyZSByZWxlYXNlIG9m
IEJpc29uLCB0aGlzIHNlY3Rpb24gd2lsbCBiZSByZXBsYWNlZAorICAgYnkgI2luY2x1ZGUgImds
c2xhbmdfdGFiLmgiLiAgKi8KKyNpZm5kZWYgWVlfWVlfR0xTTEFOR19UQUJfSF9JTkNMVURFRAor
IyBkZWZpbmUgWVlfWVlfR0xTTEFOR19UQUJfSF9JTkNMVURFRAorLyogRW5hYmxpbmcgdHJhY2Vz
LiAgKi8KKyNpZm5kZWYgWVlERUJVRworIyBkZWZpbmUgWVlERUJVRyAwCisjZW5kaWYKKyNpZiBZ
WURFQlVHCitleHRlcm4gaW50IHl5ZGVidWc7CisjZW5kaWYKKy8qICIlY29kZSByZXF1aXJlcyIg
YmxvY2tzLiAgKi8KKworCisjZGVmaW5lIFlZTFRZUEUgVFNvdXJjZUxvYworI2RlZmluZSBZWUxU
WVBFX0lTX0RFQ0xBUkVEIDEKKyNkZWZpbmUgU0hfTUFYX1RPS0VOX0xFTkdUSCAyNTYgIC8vIFdl
YkdMIHNwZWMuCisKIAogCiAKQEAgLTE2MCwxNTkgKzIzMywxMyBAQAogICAgICBRVUVTVElPTiA9
IDM0OQogICAgfTsKICNlbmRpZgotLyogVG9rZW5zLiAgKi8KLSNkZWZpbmUgSU5WQVJJQU5UIDI1
OAotI2RlZmluZSBISUdIX1BSRUNJU0lPTiAyNTkKLSNkZWZpbmUgTUVESVVNX1BSRUNJU0lPTiAy
NjAKLSNkZWZpbmUgTE9XX1BSRUNJU0lPTiAyNjEKLSNkZWZpbmUgUFJFQ0lTSU9OIDI2MgotI2Rl
ZmluZSBBVFRSSUJVVEUgMjYzCi0jZGVmaW5lIENPTlNUX1FVQUwgMjY0Ci0jZGVmaW5lIEJPT0xf
VFlQRSAyNjUKLSNkZWZpbmUgRkxPQVRfVFlQRSAyNjYKLSNkZWZpbmUgSU5UX1RZUEUgMjY3Ci0j
ZGVmaW5lIEJSRUFLIDI2OAotI2RlZmluZSBDT05USU5VRSAyNjkKLSNkZWZpbmUgRE8gMjcwCi0j
ZGVmaW5lIEVMU0UgMjcxCi0jZGVmaW5lIEZPUiAyNzIKLSNkZWZpbmUgSUYgMjczCi0jZGVmaW5l
IERJU0NBUkQgMjc0Ci0jZGVmaW5lIFJFVFVSTiAyNzUKLSNkZWZpbmUgQlZFQzIgMjc2Ci0jZGVm
aW5lIEJWRUMzIDI3NwotI2RlZmluZSBCVkVDNCAyNzgKLSNkZWZpbmUgSVZFQzIgMjc5Ci0jZGVm
aW5lIElWRUMzIDI4MAotI2RlZmluZSBJVkVDNCAyODEKLSNkZWZpbmUgVkVDMiAyODIKLSNkZWZp
bmUgVkVDMyAyODMKLSNkZWZpbmUgVkVDNCAyODQKLSNkZWZpbmUgTUFUUklYMiAyODUKLSNkZWZp
bmUgTUFUUklYMyAyODYKLSNkZWZpbmUgTUFUUklYNCAyODcKLSNkZWZpbmUgSU5fUVVBTCAyODgK
LSNkZWZpbmUgT1VUX1FVQUwgMjg5Ci0jZGVmaW5lIElOT1VUX1FVQUwgMjkwCi0jZGVmaW5lIFVO
SUZPUk0gMjkxCi0jZGVmaW5lIFZBUllJTkcgMjkyCi0jZGVmaW5lIFNUUlVDVCAyOTMKLSNkZWZp
bmUgVk9JRF9UWVBFIDI5NAotI2RlZmluZSBXSElMRSAyOTUKLSNkZWZpbmUgU0FNUExFUjJEIDI5
NgotI2RlZmluZSBTQU1QTEVSQ1VCRSAyOTcKLSNkZWZpbmUgU0FNUExFUl9FWFRFUk5BTF9PRVMg
Mjk4Ci0jZGVmaW5lIFNBTVBMRVIyRFJFQ1QgMjk5Ci0jZGVmaW5lIElERU5USUZJRVIgMzAwCi0j
ZGVmaW5lIFRZUEVfTkFNRSAzMDEKLSNkZWZpbmUgRkxPQVRDT05TVEFOVCAzMDIKLSNkZWZpbmUg
SU5UQ09OU1RBTlQgMzAzCi0jZGVmaW5lIEJPT0xDT05TVEFOVCAzMDQKLSNkZWZpbmUgTEVGVF9P
UCAzMDUKLSNkZWZpbmUgUklHSFRfT1AgMzA2Ci0jZGVmaW5lIElOQ19PUCAzMDcKLSNkZWZpbmUg
REVDX09QIDMwOAotI2RlZmluZSBMRV9PUCAzMDkKLSNkZWZpbmUgR0VfT1AgMzEwCi0jZGVmaW5l
IEVRX09QIDMxMQotI2RlZmluZSBORV9PUCAzMTIKLSNkZWZpbmUgQU5EX09QIDMxMwotI2RlZmlu
ZSBPUl9PUCAzMTQKLSNkZWZpbmUgWE9SX09QIDMxNQotI2RlZmluZSBNVUxfQVNTSUdOIDMxNgot
I2RlZmluZSBESVZfQVNTSUdOIDMxNwotI2RlZmluZSBBRERfQVNTSUdOIDMxOAotI2RlZmluZSBN
T0RfQVNTSUdOIDMxOQotI2RlZmluZSBMRUZUX0FTU0lHTiAzMjAKLSNkZWZpbmUgUklHSFRfQVNT
SUdOIDMyMQotI2RlZmluZSBBTkRfQVNTSUdOIDMyMgotI2RlZmluZSBYT1JfQVNTSUdOIDMyMwot
I2RlZmluZSBPUl9BU1NJR04gMzI0Ci0jZGVmaW5lIFNVQl9BU1NJR04gMzI1Ci0jZGVmaW5lIExF
RlRfUEFSRU4gMzI2Ci0jZGVmaW5lIFJJR0hUX1BBUkVOIDMyNwotI2RlZmluZSBMRUZUX0JSQUNL
RVQgMzI4Ci0jZGVmaW5lIFJJR0hUX0JSQUNLRVQgMzI5Ci0jZGVmaW5lIExFRlRfQlJBQ0UgMzMw
Ci0jZGVmaW5lIFJJR0hUX0JSQUNFIDMzMQotI2RlZmluZSBET1QgMzMyCi0jZGVmaW5lIENPTU1B
IDMzMwotI2RlZmluZSBDT0xPTiAzMzQKLSNkZWZpbmUgRVFVQUwgMzM1Ci0jZGVmaW5lIFNFTUlD
T0xPTiAzMzYKLSNkZWZpbmUgQkFORyAzMzcKLSNkZWZpbmUgREFTSCAzMzgKLSNkZWZpbmUgVElM
REUgMzM5Ci0jZGVmaW5lIFBMVVMgMzQwCi0jZGVmaW5lIFNUQVIgMzQxCi0jZGVmaW5lIFNMQVNI
IDM0MgotI2RlZmluZSBQRVJDRU5UIDM0MwotI2RlZmluZSBMRUZUX0FOR0xFIDM0NAotI2RlZmlu
ZSBSSUdIVF9BTkdMRSAzNDUKLSNkZWZpbmUgVkVSVElDQUxfQkFSIDM0NgotI2RlZmluZSBDQVJF
VCAzNDcKLSNkZWZpbmUgQU1QRVJTQU5EIDM0OAotI2RlZmluZSBRVUVTVElPTiAzNDkKLQotCi0K
LQotLyogQ29weSB0aGUgZmlyc3QgcGFydCBvZiB1c2VyIGRlY2xhcmF0aW9ucy4gICovCiAKIAot
Ly8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgotLy8KLQotLy8gVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IGdl
bmVyYXRlX3BhcnNlci5zaC4gRE8gTk9UIEVESVQhCi0KLS8vIElnbm9yZSBlcnJvcnMgaW4gYXV0
by1nZW5lcmF0ZWQgY29kZS4KLSNpZiBkZWZpbmVkKF9fR05VQ19fKQotI3ByYWdtYSBHQ0MgZGlh
Z25vc3RpYyBpZ25vcmVkICItV3VudXNlZC1mdW5jdGlvbiIKLSNwcmFnbWEgR0NDIGRpYWdub3N0
aWMgaWdub3JlZCAiLVd1bnVzZWQtdmFyaWFibGUiCi0jcHJhZ21hIEdDQyBkaWFnbm9zdGljIGln
bm9yZWQgIi1Xc3dpdGNoLWVudW0iCi0jZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQotI3ByYWdtYSB3
YXJuaW5nKGRpc2FibGU6IDQwNjUpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDE4OSkKLSNw
cmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NTA1KQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ3
MDEpCi0jZW5kaWYKLQotI2luY2x1ZGUgImNvbXBpbGVyL1N5bWJvbFRhYmxlLmgiCi0jaW5jbHVk
ZSAiY29tcGlsZXIvUGFyc2VIZWxwZXIuaCIKLSNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcu
aCIKLQotI2RlZmluZSBZWUVOQUJMRV9OTFMgMAotCi0jZGVmaW5lIFlZTEVYX1BBUkFNIGNvbnRl
eHQtPnNjYW5uZXIKLQotCi0vKiBFbmFibGluZyB0cmFjZXMuICAqLwotI2lmbmRlZiBZWURFQlVH
Ci0jIGRlZmluZSBZWURFQlVHIDAKLSNlbmRpZgotCi0vKiBFbmFibGluZyB2ZXJib3NlIGVycm9y
IG1lc3NhZ2VzLiAgKi8KLSNpZmRlZiBZWUVSUk9SX1ZFUkJPU0UKLSMgdW5kZWYgWVlFUlJPUl9W
RVJCT1NFCi0jIGRlZmluZSBZWUVSUk9SX1ZFUkJPU0UgMQotI2Vsc2UKLSMgZGVmaW5lIFlZRVJS
T1JfVkVSQk9TRSAwCi0jZW5kaWYKLQotLyogRW5hYmxpbmcgdGhlIHRva2VuIHRhYmxlLiAgKi8K
LSNpZm5kZWYgWVlUT0tFTl9UQUJMRQotIyBkZWZpbmUgWVlUT0tFTl9UQUJMRSAwCi0jZW5kaWYK
LQogI2lmICEgZGVmaW5lZCBZWVNUWVBFICYmICEgZGVmaW5lZCBZWVNUWVBFX0lTX0RFQ0xBUkVE
CiB0eXBlZGVmIHVuaW9uIFlZU1RZUEUKLQogewotI2RlZmluZSBZWUxUWVBFIFRTb3VyY2VMb2MK
LSNkZWZpbmUgWVlMVFlQRV9JU19ERUNMQVJFRCAxCisKKwogICAgIHN0cnVjdCB7CiAgICAgICAg
IHVuaW9uIHsKICAgICAgICAgICAgIFRTdHJpbmcgKnN0cmluZzsKQEAgLTM0MCwxMyArMjY3LDEz
IEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQRQogICAgICAgICAgICAgVEZpZWxkTGlzdCogZmllbGRM
aXN0OwogICAgICAgICB9OwogICAgIH0gaW50ZXJtOwotfQotLyogTGluZSAxOTMgb2YgeWFjYy5j
LiAgKi8KIAotCVlZU1RZUEU7CisKKworfSBZWVNUWVBFOworIyBkZWZpbmUgWVlTVFlQRV9JU19U
UklWSUFMIDEKICMgZGVmaW5lIHl5c3R5cGUgWVlTVFlQRSAvKiBvYnNvbGVzY2VudDsgd2lsbCBi
ZSB3aXRoZHJhd24gKi8KICMgZGVmaW5lIFlZU1RZUEVfSVNfREVDTEFSRUQgMQotIyBkZWZpbmUg
WVlTVFlQRV9JU19UUklWSUFMIDEKICNlbmRpZgogCiAjaWYgISBkZWZpbmVkIFlZTFRZUEUgJiYg
ISBkZWZpbmVkIFlZTFRZUEVfSVNfREVDTEFSRUQKQEAgLTM2MywxMSArMjkwLDI3IEBAIHR5cGVk
ZWYgc3RydWN0IFlZTFRZUEUKICNlbmRpZgogCiAKKyNpZmRlZiBZWVBBUlNFX1BBUkFNCisjaWYg
ZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzCitpbnQgeXlwYXJzZSAodm9p
ZCAqWVlQQVJTRV9QQVJBTSk7CisjZWxzZQoraW50IHl5cGFyc2UgKCk7CisjZW5kaWYKKyNlbHNl
IC8qICEgWVlQQVJTRV9QQVJBTSAqLworI2lmIGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBf
X2NwbHVzcGx1cworaW50IHl5cGFyc2UgKFRQYXJzZUNvbnRleHQqIGNvbnRleHQpOworI2Vsc2UK
K2ludCB5eXBhcnNlICgpOworI2VuZGlmCisjZW5kaWYgLyogISBZWVBBUlNFX1BBUkFNICovCisK
KyNlbmRpZiAvKiAhWVlfWVlfR0xTTEFOR19UQUJfSF9JTkNMVURFRCAgKi8KKwogLyogQ29weSB0
aGUgc2Vjb25kIHBhcnQgb2YgdXNlciBkZWNsYXJhdGlvbnMuICAqLwogCiAKIGV4dGVybiBpbnQg
eXlsZXgoWVlTVFlQRSogeXlsdmFsLCBZWUxUWVBFKiB5eWxsb2MsIHZvaWQqIHl5c2Nhbm5lcik7
Ci1zdGF0aWMgdm9pZCB5eWVycm9yKFlZTFRZUEUqIHl5bGxvYywgVFBhcnNlQ29udGV4dCogY29u
dGV4dCwgY29uc3QgY2hhciogcmVhc29uKTsKK2V4dGVybiB2b2lkIHl5ZXJyb3IoWVlMVFlQRSog
eXlsbG9jLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pOwogCiAj
ZGVmaW5lIFlZTExPQ19ERUZBVUxUKEN1cnJlbnQsIFJocywgTikgICAgICAgICAgICAgICAgICAg
ICAgXAogICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKQEAgLTQwMCw4ICszNDMsNiBAQCBzdGF0aWMgdm9pZCB5eWVycm9yKFlZTFRZ
UEUqIHl5bGxvYywgVFBhCiB9CiAKIAotLyogTGluZSAyMTYgb2YgeWFjYy5jLiAgKi8KLQogCiAj
aWZkZWYgc2hvcnQKICMgdW5kZWYgc2hvcnQKQEAgLTQ1NCwzNiArMzk1LDM2IEBAIHR5cGVkZWYg
c2hvcnQgaW50IHl5dHlwZV9pbnQxNjsKICMgaWYgZGVmaW5lZCBZWUVOQUJMRV9OTFMgJiYgWVlF
TkFCTEVfTkxTCiAjICBpZiBFTkFCTEVfTkxTCiAjICAgaW5jbHVkZSA8bGliaW50bC5oPiAvKiBJ
TkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCi0jICAgZGVmaW5lIFlZXyhtc2dpZCkgZGdl
dHRleHQgKCJiaXNvbi1ydW50aW1lIiwgbXNnaWQpCisjICAgZGVmaW5lIFlZXyhNc2dpZCkgZGdl
dHRleHQgKCJiaXNvbi1ydW50aW1lIiwgTXNnaWQpCiAjICBlbmRpZgogIyBlbmRpZgogIyBpZm5k
ZWYgWVlfCi0jICBkZWZpbmUgWVlfKG1zZ2lkKSBtc2dpZAorIyAgZGVmaW5lIFlZXyhNc2dpZCkg
TXNnaWQKICMgZW5kaWYKICNlbmRpZgogCiAvKiBTdXBwcmVzcyB1bnVzZWQtdmFyaWFibGUgd2Fy
bmluZ3MgYnkgInVzaW5nIiBFLiAgKi8KICNpZiAhIGRlZmluZWQgbGludCB8fCBkZWZpbmVkIF9f
R05VQ19fCi0jIGRlZmluZSBZWVVTRShlKSAoKHZvaWQpIChlKSkKKyMgZGVmaW5lIFlZVVNFKEUp
ICgodm9pZCkgKEUpKQogI2Vsc2UKLSMgZGVmaW5lIFlZVVNFKGUpIC8qIGVtcHR5ICovCisjIGRl
ZmluZSBZWVVTRShFKSAvKiBlbXB0eSAqLwogI2VuZGlmCiAKIC8qIElkZW50aXR5IGZ1bmN0aW9u
LCB1c2VkIHRvIHN1cHByZXNzIHdhcm5pbmdzIGFib3V0IGNvbnN0YW50IGNvbmRpdGlvbnMuICAq
LwogI2lmbmRlZiBsaW50Ci0jIGRlZmluZSBZWUlEKG4pIChuKQorIyBkZWZpbmUgWVlJRChOKSAo
TikKICNlbHNlCiAjaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19f
IFwKICAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogc3Rh
dGljIGludAotWVlJRCAoaW50IGkpCitZWUlEIChpbnQgeXlpKQogI2Vsc2UKIHN0YXRpYyBpbnQK
LVlZSUQgKGkpCi0gICAgaW50IGk7CitZWUlEICh5eWkpCisgICAgaW50IHl5aTsKICNlbmRpZgog
ewotICByZXR1cm4gaTsKKyAgcmV0dXJuIHl5aTsKIH0KICNlbmRpZgogCkBAIC01MDQsMTEgKzQ0
NSwxMiBAQCBZWUlEIChpKQogIyAgICBkZWZpbmUgYWxsb2NhIF9hbGxvY2EKICMgICBlbHNlCiAj
ICAgIGRlZmluZSBZWVNUQUNLX0FMTE9DIGFsbG9jYQotIyAgICBpZiAhIGRlZmluZWQgX0FMTE9D
QV9IICYmICEgZGVmaW5lZCBfU1RETElCX0ggJiYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5l
ZCBfX0M5OV9fRlVOQ19fIFwKKyMgICAgaWYgISBkZWZpbmVkIF9BTExPQ0FfSCAmJiAhIGRlZmlu
ZWQgRVhJVF9TVUNDRVNTICYmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZV
TkNfXyBcCiAgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikK
ICMgICAgIGluY2x1ZGUgPHN0ZGxpYi5oPiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNF
ICovCi0jICAgICBpZm5kZWYgX1NURExJQl9ICi0jICAgICAgZGVmaW5lIF9TVERMSUJfSCAxCisg
ICAgICAvKiBVc2UgRVhJVF9TVUNDRVNTIGFzIGEgd2l0bmVzcyBmb3Igc3RkbGliLmguICAqLwor
IyAgICAgaWZuZGVmIEVYSVRfU1VDQ0VTUworIyAgICAgIGRlZmluZSBFWElUX1NVQ0NFU1MgMAog
IyAgICAgZW5kaWYKICMgICAgZW5kaWYKICMgICBlbmRpZgpAQCAtNTMxLDI0ICs0NzMsMjQgQEAg
WVlJRCAoaSkKICMgIGlmbmRlZiBZWVNUQUNLX0FMTE9DX01BWElNVU0KICMgICBkZWZpbmUgWVlT
VEFDS19BTExPQ19NQVhJTVVNIFlZU0laRV9NQVhJTVVNCiAjICBlbmRpZgotIyAgaWYgKGRlZmlu
ZWQgX19jcGx1c3BsdXMgJiYgISBkZWZpbmVkIF9TVERMSUJfSCBcCisjICBpZiAoZGVmaW5lZCBf
X2NwbHVzcGx1cyAmJiAhIGRlZmluZWQgRVhJVF9TVUNDRVNTIFwKICAgICAgICAmJiAhICgoZGVm
aW5lZCBZWU1BTExPQyB8fCBkZWZpbmVkIG1hbGxvYykgXAogCSAgICAgJiYgKGRlZmluZWQgWVlG
UkVFIHx8IGRlZmluZWQgZnJlZSkpKQogIyAgIGluY2x1ZGUgPHN0ZGxpYi5oPiAvKiBJTkZSSU5H
RVMgT04gVVNFUiBOQU1FIFNQQUNFICovCi0jICAgaWZuZGVmIF9TVERMSUJfSAotIyAgICBkZWZp
bmUgX1NURExJQl9IIDEKKyMgICBpZm5kZWYgRVhJVF9TVUNDRVNTCisjICAgIGRlZmluZSBFWElU
X1NVQ0NFU1MgMAogIyAgIGVuZGlmCiAjICBlbmRpZgogIyAgaWZuZGVmIFlZTUFMTE9DCiAjICAg
ZGVmaW5lIFlZTUFMTE9DIG1hbGxvYwotIyAgIGlmICEgZGVmaW5lZCBtYWxsb2MgJiYgISBkZWZp
bmVkIF9TVERMSUJfSCAmJiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5D
X18gXAorIyAgIGlmICEgZGVmaW5lZCBtYWxsb2MgJiYgISBkZWZpbmVkIEVYSVRfU1VDQ0VTUyAm
JiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAogICAgICB8fCBk
ZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCiB2b2lkICptYWxsb2MgKFlZ
U0laRV9UKTsgLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwogIyAgIGVuZGlmCiAj
ICBlbmRpZgogIyAgaWZuZGVmIFlZRlJFRQogIyAgIGRlZmluZSBZWUZSRUUgZnJlZQotIyAgIGlm
ICEgZGVmaW5lZCBmcmVlICYmICEgZGVmaW5lZCBfU1RETElCX0ggJiYgKGRlZmluZWQgX19TVERD
X18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyMgICBpZiAhIGRlZmluZWQgZnJlZSAmJiAh
IGRlZmluZWQgRVhJVF9TVUNDRVNTICYmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19D
OTlfX0ZVTkNfXyBcCiAgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVND
X1ZFUikKIHZvaWQgZnJlZSAodm9pZCAqKTsgLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFD
RSAqLwogIyAgIGVuZGlmCkBAIC01NjUsOSArNTA3LDkgQEAgdm9pZCBmcmVlICh2b2lkICopOyAv
KiBJTkZSSU5HRVMgT04gVVNFUgogLyogQSB0eXBlIHRoYXQgaXMgcHJvcGVybHkgYWxpZ25lZCBm
b3IgYW55IHN0YWNrIG1lbWJlci4gICovCiB1bmlvbiB5eWFsbG9jCiB7Ci0gIHl5dHlwZV9pbnQx
NiB5eXNzOwotICBZWVNUWVBFIHl5dnM7Ci0gICAgWVlMVFlQRSB5eWxzOworICB5eXR5cGVfaW50
MTYgeXlzc19hbGxvYzsKKyAgWVlTVFlQRSB5eXZzX2FsbG9jOworICBZWUxUWVBFIHl5bHNfYWxs
b2M7CiB9OwogCiAvKiBUaGUgc2l6ZSBvZiB0aGUgbWF4aW11bSBnYXAgYmV0d2VlbiBvbmUgYWxp
Z25lZCBzdGFjayBhbmQgdGhlIG5leHQuICAqLwpAQCAtNTc5LDM1ICs1MjEsMTkgQEAgdW5pb24g
eXlhbGxvYwogICAgICAoKE4pICogKHNpemVvZiAoeXl0eXBlX2ludDE2KSArIHNpemVvZiAoWVlT
VFlQRSkgKyBzaXplb2YgKFlZTFRZUEUpKSBcCiAgICAgICArIDIgKiBZWVNUQUNLX0dBUF9NQVhJ
TVVNKQogCi0vKiBDb3B5IENPVU5UIG9iamVjdHMgZnJvbSBGUk9NIHRvIFRPLiAgVGhlIHNvdXJj
ZSBhbmQgZGVzdGluYXRpb24gZG8KLSAgIG5vdCBvdmVybGFwLiAgKi8KLSMgaWZuZGVmIFlZQ09Q
WQotIyAgaWYgZGVmaW5lZCBfX0dOVUNfXyAmJiAxIDwgX19HTlVDX18KLSMgICBkZWZpbmUgWVlD
T1BZKFRvLCBGcm9tLCBDb3VudCkgXAotICAgICAgX19idWlsdGluX21lbWNweSAoVG8sIEZyb20s
IChDb3VudCkgKiBzaXplb2YgKCooRnJvbSkpKQotIyAgZWxzZQotIyAgIGRlZmluZSBZWUNPUFko
VG8sIEZyb20sIENvdW50KQkJXAotICAgICAgZG8JCQkJCVwKLQl7CQkJCQlcCi0JICBZWVNJWkVf
VCB5eWk7CQkJCVwKLQkgIGZvciAoeXlpID0gMDsgeXlpIDwgKENvdW50KTsgeXlpKyspCVwKLQkg
ICAgKFRvKVt5eWldID0gKEZyb20pW3l5aV07CQlcCi0JfQkJCQkJXAotICAgICAgd2hpbGUgKFlZ
SUQgKDApKQotIyAgZW5kaWYKLSMgZW5kaWYKKyMgZGVmaW5lIFlZQ09QWV9ORUVERUQgMQogCiAv
KiBSZWxvY2F0ZSBTVEFDSyBmcm9tIGl0cyBvbGQgbG9jYXRpb24gdG8gdGhlIG5ldyBvbmUuICBU
aGUKICAgIGxvY2FsIHZhcmlhYmxlcyBZWVNJWkUgYW5kIFlZU1RBQ0tTSVpFIGdpdmUgdGhlIG9s
ZCBhbmQgbmV3IG51bWJlciBvZgogICAgZWxlbWVudHMgaW4gdGhlIHN0YWNrLCBhbmQgWVlQVFIg
Z2l2ZXMgdGhlIG5ldyBsb2NhdGlvbiBvZiB0aGUKICAgIHN0YWNrLiAgQWR2YW5jZSBZWVBUUiB0
byBhIHByb3Blcmx5IGFsaWduZWQgbG9jYXRpb24gZm9yIHRoZSBuZXh0CiAgICBzdGFjay4gICov
Ci0jIGRlZmluZSBZWVNUQUNLX1JFTE9DQVRFKFN0YWNrKQkJCQkJXAorIyBkZWZpbmUgWVlTVEFD
S19SRUxPQ0FURShTdGFja19hbGxvYywgU3RhY2spCQkJCVwKICAgICBkbwkJCQkJCQkJCVwKICAg
ICAgIHsJCQkJCQkJCQlcCiAJWVlTSVpFX1QgeXluZXdieXRlczsJCQkJCQlcCi0JWVlDT1BZICgm
eXlwdHItPlN0YWNrLCBTdGFjaywgeXlzaXplKTsJCQkJXAotCVN0YWNrID0gJnl5cHRyLT5TdGFj
azsJCQkJCQlcCisJWVlDT1BZICgmeXlwdHItPlN0YWNrX2FsbG9jLCBTdGFjaywgeXlzaXplKTsJ
CQlcCisJU3RhY2sgPSAmeXlwdHItPlN0YWNrX2FsbG9jOwkJCQkJXAogCXl5bmV3Ynl0ZXMgPSB5
eXN0YWNrc2l6ZSAqIHNpemVvZiAoKlN0YWNrKSArIFlZU1RBQ0tfR0FQX01BWElNVU07IFwKIAl5
eXB0ciArPSB5eW5ld2J5dGVzIC8gc2l6ZW9mICgqeXlwdHIpOwkJCQlcCiAgICAgICB9CQkJCQkJ
CQkJXApAQCAtNjE1LDYgKzU0MSwyNiBAQCB1bmlvbiB5eWFsbG9jCiAKICNlbmRpZgogCisjaWYg
ZGVmaW5lZCBZWUNPUFlfTkVFREVEICYmIFlZQ09QWV9ORUVERUQKKy8qIENvcHkgQ09VTlQgb2Jq
ZWN0cyBmcm9tIFNSQyB0byBEU1QuICBUaGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBkbworICAg
bm90IG92ZXJsYXAuICAqLworIyBpZm5kZWYgWVlDT1BZCisjICBpZiBkZWZpbmVkIF9fR05VQ19f
ICYmIDEgPCBfX0dOVUNfXworIyAgIGRlZmluZSBZWUNPUFkoRHN0LCBTcmMsIENvdW50KSBcCisg
ICAgICBfX2J1aWx0aW5fbWVtY3B5IChEc3QsIFNyYywgKENvdW50KSAqIHNpemVvZiAoKihTcmMp
KSkKKyMgIGVsc2UKKyMgICBkZWZpbmUgWVlDT1BZKERzdCwgU3JjLCBDb3VudCkgICAgICAgICAg
ICAgIFwKKyAgICAgIGRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICBZWVNJWkVfVCB5eWk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBm
b3IgKHl5aSA9IDA7IHl5aSA8IChDb3VudCk7IHl5aSsrKSAgIFwKKyAgICAgICAgICAgIChEc3Qp
W3l5aV0gPSAoU3JjKVt5eWldOyAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHdoaWxlIChZWUlEICgwKSkKKyMgIGVu
ZGlmCisjIGVuZGlmCisjZW5kaWYgLyogIVlZQ09QWV9ORUVERUQgKi8KKwogLyogWVlGSU5BTCAt
LSBTdGF0ZSBudW1iZXIgb2YgdGhlIHRlcm1pbmF0aW9uIHN0YXRlLiAgKi8KICNkZWZpbmUgWVlG
SU5BTCAgNzQKIC8qIFlZTEFTVCAtLSBMYXN0IGluZGV4IGluIFlZVEFCTEUuICAqLwpAQCAtNzcw
LDMxICs3MTYsMzEgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eXJoc1tdID0KIC8qIFlZ
UkxJTkVbWVlOXSAtLSBzb3VyY2UgbGluZSB3aGVyZSBydWxlIG51bWJlciBZWU4gd2FzIGRlZmlu
ZWQuICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV91aW50MTYgeXlybGluZVtdID0KIHsKLSAgICAg
ICAwLCAgIDE3NiwgICAxNzYsICAgMTc3LCAgIDE4MCwgICAyMjMsICAgMjI2LCAgIDIzOSwgICAy
NDQsICAgMjQ5LAotICAgICAyNTUsICAgMjU4LCAgIDI2MSwgICAyNjQsICAgMzU5LCAgIDM2OSwg
ICAzODIsICAgMzkwLCAgIDQ5MCwgICA0OTMsCi0gICAgIDUwMSwgICA1MDQsICAgNTEwLCAgIDUx
NCwgICA1MjEsICAgNTI3LCAgIDUzNiwgICA1NDQsICAgNTk5LCAgIDYwOSwKLSAgICAgNjEyLCAg
IDYyMiwgICA2MzIsICAgNjUzLCAgIDY1NCwgICA2NTUsICAgNjYwLCAgIDY2MSwgICA2NjksICAg
NjgwLAotICAgICA2ODEsICAgNjg5LCAgIDcwMCwgICA3MDQsICAgNzA1LCAgIDcxNSwgICA3MjUs
ICAgNzM1LCAgIDc0OCwgICA3NDksCi0gICAgIDc1OSwgICA3NzIsICAgNzc2LCAgIDc4MCwgICA3
ODQsICAgNzg1LCAgIDc5OCwgICA3OTksICAgODEyLCAgIDgxMywKLSAgICAgODI2LCAgIDgyNywg
ICA4NDQsICAgODQ1LCAgIDg1OCwgICA4NTksICAgODYwLCAgIDg2MSwgICA4NjIsICAgODY2LAot
ICAgICA4NjksICAgODgwLCAgIDg4OCwgICA5MTUsICAgOTIwLCAgIDkzNCwgICA5ODksICAgOTky
LCAgIDk5OSwgIDEwMDcsCi0gICAgMTAyOCwgIDEwNDksICAxMDU5LCAgMTA4NywgIDEwOTIsICAx
MTAyLCAgMTEwNywgIDExMTcsICAxMTIwLCAgMTEyMywKLSAgICAxMTI2LCAgMTEzMiwgIDExMzks
ICAxMTQyLCAgMTE2NCwgIDExODIsICAxMjA2LCAgMTIyOSwgIDEyMzMsICAxMjUxLAotICAgIDEy
NTksICAxMjkxLCAgMTMxMSwgIDEzMzIsICAxMzQxLCAgMTM2NCwgIDEzNjcsICAxMzczLCAgMTM4
MSwgIDEzODksCi0gICAgMTM5NywgIDE0MDcsICAxNDE0LCAgMTQxNywgIDE0MjAsICAxNDI2LCAg
MTQyOSwgIDE0NDQsICAxNDQ4LCAgMTQ1MiwKLSAgICAxNDU2LCAgMTQ2MCwgIDE0NjUsICAxNDcw
LCAgMTQ3NSwgIDE0ODAsICAxNDg1LCAgMTQ5MCwgIDE0OTUsICAxNTAwLAotICAgIDE1MDUsICAx
NTEwLCAgMTUxNSwgIDE1MjAsICAxNTI0LCAgMTUyOCwgIDE1MzYsICAxNTQ0LCAgMTU0OCwgIDE1
NjEsCi0gICAgMTU2MSwgIDE1NzUsICAxNTc1LCAgMTU4NCwgIDE1ODcsICAxNjAzLCAgMTYzNiwg
IDE2NDAsICAxNjQ2LCAgMTY1MywKLSAgICAxNjY4LCAgMTY3MiwgIDE2NzYsICAxNjc3LCAgMTY4
MywgIDE2ODQsICAxNjg1LCAgMTY4NiwgIDE2ODcsICAxNjkxLAotICAgIDE2OTIsICAxNjkyLCAg
MTY5MiwgIDE3MDIsICAxNzAzLCAgMTcwNywgIDE3MDcsICAxNzA4LCAgMTcwOCwgIDE3MTMsCi0g
ICAgMTcxNiwgIDE3MjYsICAxNzI5LCAgMTczNSwgIDE3MzYsICAxNzQwLCAgMTc0OCwgIDE3NTIs
ICAxNzYyLCAgMTc2NywKLSAgICAxNzg0LCAgMTc4NCwgIDE3ODksICAxNzg5LCAgMTc5NiwgIDE3
OTYsICAxODA0LCAgMTgwNywgIDE4MTMsICAxODE2LAotICAgIDE4MjIsICAxODI2LCAgMTgzMywg
IDE4NDAsICAxODQ3LCAgMTg1NCwgIDE4NjUsICAxODc0LCAgMTg3OCwgIDE4ODUsCi0gICAgMTg4
OCwgIDE4OTQsICAxODk0CisgICAgICAgMCwgICAxODAsICAgMTgwLCAgIDE4MSwgICAxODQsICAg
MjI3LCAgIDIzMCwgICAyNDMsICAgMjQ4LCAgIDI1MywKKyAgICAgMjU5LCAgIDI2MiwgICAyNjUs
ICAgMjY4LCAgIDM2MywgICAzNzMsICAgMzg2LCAgIDM5NCwgICA0OTQsICAgNDk3LAorICAgICA1
MDUsICAgNTA4LCAgIDUxNCwgICA1MTgsICAgNTI1LCAgIDUzMSwgICA1NDAsICAgNTQ4LCAgIDYw
MywgICA2MTMsCisgICAgIDYxNiwgICA2MjYsICAgNjM2LCAgIDY1NywgICA2NTgsICAgNjU5LCAg
IDY2NCwgICA2NjUsICAgNjczLCAgIDY4NCwKKyAgICAgNjg1LCAgIDY5MywgICA3MDQsICAgNzA4
LCAgIDcwOSwgICA3MTksICAgNzI5LCAgIDczOSwgICA3NTIsICAgNzUzLAorICAgICA3NjMsICAg
Nzc2LCAgIDc4MCwgICA3ODQsICAgNzg4LCAgIDc4OSwgICA4MDIsICAgODAzLCAgIDgxNiwgICA4
MTcsCisgICAgIDgzMCwgICA4MzEsICAgODQ4LCAgIDg0OSwgICA4NjIsICAgODYzLCAgIDg2NCwg
ICA4NjUsICAgODY2LCAgIDg3MCwKKyAgICAgODczLCAgIDg4NCwgICA4OTIsICAgOTE5LCAgIDky
NCwgICA5MzgsICAgOTkzLCAgIDk5NiwgIDEwMDMsICAxMDExLAorICAgIDEwMzIsICAxMDUzLCAg
MTA2MywgIDEwOTEsICAxMDk2LCAgMTEwNiwgIDExMTEsICAxMTIxLCAgMTEyNCwgIDExMjcsCisg
ICAgMTEzMCwgIDExMzYsICAxMTQzLCAgMTE0NiwgIDExNjgsICAxMTg2LCAgMTIxMCwgIDEyMzMs
ICAxMjM3LCAgMTI1NSwKKyAgICAxMjYzLCAgMTI5NSwgIDEzMTUsICAxMzM2LCAgMTM0NSwgIDEz
NjgsICAxMzcxLCAgMTM3NywgIDEzODUsICAxMzkzLAorICAgIDE0MDEsICAxNDExLCAgMTQxOCwg
IDE0MjEsICAxNDI0LCAgMTQzMCwgIDE0MzMsICAxNDQ4LCAgMTQ1MiwgIDE0NTYsCisgICAgMTQ2
MCwgIDE0NjQsICAxNDY5LCAgMTQ3NCwgIDE0NzksICAxNDg0LCAgMTQ4OSwgIDE0OTQsICAxNDk5
LCAgMTUwNCwKKyAgICAxNTA5LCAgMTUxNCwgIDE1MTksICAxNTI0LCAgMTUyOCwgIDE1MzIsICAx
NTQwLCAgMTU0OCwgIDE1NTIsICAxNTY1LAorICAgIDE1NjUsICAxNTc5LCAgMTU3OSwgIDE1ODgs
ICAxNTkxLCAgMTYwNywgIDE2NDAsICAxNjQ0LCAgMTY1MCwgIDE2NTcsCisgICAgMTY3MiwgIDE2
NzYsICAxNjgwLCAgMTY4MSwgIDE2ODcsICAxNjg4LCAgMTY4OSwgIDE2OTAsICAxNjkxLCAgMTY5
NSwKKyAgICAxNjk2LCAgMTY5NiwgIDE2OTYsICAxNzA2LCAgMTcwNywgIDE3MTEsICAxNzExLCAg
MTcxMiwgIDE3MTIsICAxNzE3LAorICAgIDE3MjAsICAxNzMwLCAgMTczMywgIDE3MzksICAxNzQw
LCAgMTc0NCwgIDE3NTIsICAxNzU2LCAgMTc2NiwgIDE3NzEsCisgICAgMTc4OCwgIDE3ODgsICAx
NzkzLCAgMTc5MywgIDE4MDAsICAxODAwLCAgMTgwOCwgIDE4MTEsICAxODE3LCAgMTgyMCwKKyAg
ICAxODI2LCAgMTgzMCwgIDE4MzcsICAxODQ0LCAgMTg1MSwgIDE4NTgsICAxODY5LCAgMTg3OCwg
IDE4ODIsICAxODg5LAorICAgIDE4OTIsICAxODk4LCAgMTg5OAogfTsKICNlbmRpZgogCi0jaWYg
WVlERUJVRyB8fCBZWUVSUk9SX1ZFUkJPU0UgfHwgWVlUT0tFTl9UQUJMRQorI2lmIFlZREVCVUcg
fHwgWVlFUlJPUl9WRVJCT1NFIHx8IDAKIC8qIFlZVE5BTUVbU1lNQk9MLU5VTV0gLS0gU3RyaW5n
IG5hbWUgb2YgdGhlIHN5bWJvbCBTWU1CT0wtTlVNLgogICAgRmlyc3QsIHRoZSB0ZXJtaW5hbHMs
IHRoZW4sIHN0YXJ0aW5nIGF0IFlZTlRPS0VOUywgbm9udGVybWluYWxzLiAgKi8KIHN0YXRpYyBj
b25zdCBjaGFyICpjb25zdCB5eXRuYW1lW10gPQpAQCAtODM0LDE2ICs3ODAsMTYgQEAgc3RhdGlj
IGNvbnN0IGNoYXIgKmNvbnN0IHl5dG5hbWVbXSA9CiAgICJpbml0X2RlY2xhcmF0b3JfbGlzdCIs
ICJzaW5nbGVfZGVjbGFyYXRpb24iLCAiZnVsbHlfc3BlY2lmaWVkX3R5cGUiLAogICAidHlwZV9x
dWFsaWZpZXIiLCAidHlwZV9zcGVjaWZpZXIiLCAicHJlY2lzaW9uX3F1YWxpZmllciIsCiAgICJ0
eXBlX3NwZWNpZmllcl9ub19wcmVjIiwgInR5cGVfc3BlY2lmaWVyX25vbmFycmF5IiwgInN0cnVj
dF9zcGVjaWZpZXIiLAotICAiQDEiLCAiQDIiLCAic3RydWN0X2RlY2xhcmF0aW9uX2xpc3QiLCAi
c3RydWN0X2RlY2xhcmF0aW9uIiwKKyAgIiRAMSIsICIkQDIiLCAic3RydWN0X2RlY2xhcmF0aW9u
X2xpc3QiLCAic3RydWN0X2RlY2xhcmF0aW9uIiwKICAgInN0cnVjdF9kZWNsYXJhdG9yX2xpc3Qi
LCAic3RydWN0X2RlY2xhcmF0b3IiLCAiaW5pdGlhbGl6ZXIiLAogICAiZGVjbGFyYXRpb25fc3Rh
dGVtZW50IiwgInN0YXRlbWVudCIsICJzaW1wbGVfc3RhdGVtZW50IiwKLSAgImNvbXBvdW5kX3N0
YXRlbWVudCIsICJAMyIsICJANCIsICJzdGF0ZW1lbnRfbm9fbmV3X3Njb3BlIiwKLSAgInN0YXRl
bWVudF93aXRoX3Njb3BlIiwgIkA1IiwgIkA2IiwgImNvbXBvdW5kX3N0YXRlbWVudF9ub19uZXdf
c2NvcGUiLAorICAiY29tcG91bmRfc3RhdGVtZW50IiwgIiRAMyIsICIkQDQiLCAic3RhdGVtZW50
X25vX25ld19zY29wZSIsCisgICJzdGF0ZW1lbnRfd2l0aF9zY29wZSIsICIkQDUiLCAiJEA2Iiwg
ImNvbXBvdW5kX3N0YXRlbWVudF9ub19uZXdfc2NvcGUiLAogICAic3RhdGVtZW50X2xpc3QiLCAi
ZXhwcmVzc2lvbl9zdGF0ZW1lbnQiLCAic2VsZWN0aW9uX3N0YXRlbWVudCIsCi0gICJzZWxlY3Rp
b25fcmVzdF9zdGF0ZW1lbnQiLCAiY29uZGl0aW9uIiwgIml0ZXJhdGlvbl9zdGF0ZW1lbnQiLCAi
QDciLAotICAiQDgiLCAiQDkiLCAiZm9yX2luaXRfc3RhdGVtZW50IiwgImNvbmRpdGlvbm9wdCIs
ICJmb3JfcmVzdF9zdGF0ZW1lbnQiLAorICAic2VsZWN0aW9uX3Jlc3Rfc3RhdGVtZW50IiwgImNv
bmRpdGlvbiIsICJpdGVyYXRpb25fc3RhdGVtZW50IiwgIiRANyIsCisgICIkQDgiLCAiJEA5Iiwg
ImZvcl9pbml0X3N0YXRlbWVudCIsICJjb25kaXRpb25vcHQiLCAiZm9yX3Jlc3Rfc3RhdGVtZW50
IiwKICAgImp1bXBfc3RhdGVtZW50IiwgInRyYW5zbGF0aW9uX3VuaXQiLCAiZXh0ZXJuYWxfZGVj
bGFyYXRpb24iLAotICAiZnVuY3Rpb25fZGVmaW5pdGlvbiIsICJAMTAiLCAwCisgICJmdW5jdGlv
bl9kZWZpbml0aW9uIiwgIiRAMTAiLCBZWV9OVUxMCiB9OwogI2VuZGlmCiAKQEAgLTkxNyw4ICs4
NjMsOCBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5cjJbXSA9CiAgICAgICAgMSwgICAg
IDAsICAgICAzCiB9OwogCi0vKiBZWURFRkFDVFtTVEFURS1OQU1FXSAtLSBEZWZhdWx0IHJ1bGUg
dG8gcmVkdWNlIHdpdGggaW4gc3RhdGUKLSAgIFNUQVRFLU5VTSB3aGVuIFlZVEFCTEUgZG9lc24n
dCBzcGVjaWZ5IHNvbWV0aGluZyBlbHNlIHRvIGRvLiAgWmVybworLyogWVlERUZBQ1RbU1RBVEUt
TkFNRV0gLS0gRGVmYXVsdCByZWR1Y3Rpb24gbnVtYmVyIGluIHN0YXRlIFNUQVRFLU5VTS4KKyAg
IFBlcmZvcm1lZCB3aGVuIFlZVEFCTEUgZG9lc24ndCBzcGVjaWZ5IHNvbWV0aGluZyBlbHNlIHRv
IGRvLiAgWmVybwogICAgbWVhbnMgdGhlIGRlZmF1bHQgaXMgYW4gZXJyb3IuICAqLwogc3RhdGlj
IGNvbnN0IHl5dHlwZV91aW50OCB5eWRlZmFjdFtdID0KIHsKQEAgLTEwMjMsOCArOTY5LDcgQEAg
c3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eXBnb3RvW10gPQogCiAvKiBZWVRBQkxFW1lZUEFD
VFtTVEFURS1OVU1dXS4gIFdoYXQgdG8gZG8gaW4gc3RhdGUgU1RBVEUtTlVNLiAgSWYKICAgIHBv
c2l0aXZlLCBzaGlmdCB0aGF0IHRva2VuLiAgSWYgbmVnYXRpdmUsIHJlZHVjZSB0aGUgcnVsZSB3
aGljaAotICAgbnVtYmVyIGlzIHRoZSBvcHBvc2l0ZS4gIElmIHplcm8sIGRvIHdoYXQgWVlERUZB
Q1Qgc2F5cy4KLSAgIElmIFlZVEFCTEVfTklORiwgc3ludGF4IGVycm9yLiAgKi8KKyAgIG51bWJl
ciBpcyB0aGUgb3Bwb3NpdGUuICBJZiBZWVRBQkxFX05JTkYsIHN5bnRheCBlcnJvci4gICovCiAj
ZGVmaW5lIFlZVEFCTEVfTklORiAtMTY2CiBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDE2IHl5dGFi
bGVbXSA9CiB7CkBAIC0xMTgwLDYgKzExMjUsMTIgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQx
NiB5eXRhYmxlW10gPQogICAgICAgMzEKIH07CiAKKyNkZWZpbmUgeXlwYWN0X3ZhbHVlX2lzX2Rl
ZmF1bHQoWXlzdGF0ZSkgXAorICAoISEoKFl5c3RhdGUpID09ICgtMjYxKSkpCisKKyNkZWZpbmUg
eXl0YWJsZV92YWx1ZV9pc19lcnJvcihZeXRhYmxlX3ZhbHVlKSBcCisgIFlZSUQgKDApCisKIHN0
YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXljaGVja1tdID0KIHsKICAgICAgICAwLCAgICAyNSwg
ICAgODksICAgIDg4LCAgICA5NiwgICAgNTcsICAgMTYyLCAgICA3MywgICAxNTMsICAgMTI4LApA
QCAtMTM4MywzMCArMTMzNCwzOSBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5c3Rvc1td
ID0KIAogLyogTGlrZSBZWUVSUk9SIGV4Y2VwdCBkbyBjYWxsIHl5ZXJyb3IuICBUaGlzIHJlbWFp
bnMgaGVyZSB0ZW1wb3JhcmlseQogICAgdG8gZWFzZSB0aGUgdHJhbnNpdGlvbiB0byB0aGUgbmV3
IG1lYW5pbmcgb2YgWVlFUlJPUiwgZm9yIEdDQy4KLSAgIE9uY2UgR0NDIHZlcnNpb24gMiBoYXMg
c3VwcGxhbnRlZCB2ZXJzaW9uIDEsIHRoaXMgY2FuIGdvLiAgKi8KKyAgIE9uY2UgR0NDIHZlcnNp
b24gMiBoYXMgc3VwcGxhbnRlZCB2ZXJzaW9uIDEsIHRoaXMgY2FuIGdvLiAgSG93ZXZlciwKKyAg
IFlZRkFJTCBhcHBlYXJzIHRvIGJlIGluIHVzZS4gIE5ldmVydGhlbGVzcywgaXQgaXMgZm9ybWFs
bHkgZGVwcmVjYXRlZAorICAgaW4gQmlzb24gMi40LjIncyBORVdTIGVudHJ5LCB3aGVyZSBhIHBs
YW4gdG8gcGhhc2UgaXQgb3V0IGlzCisgICBkaXNjdXNzZWQuICAqLwogCiAjZGVmaW5lIFlZRkFJ
TAkJZ290byB5eWVycmxhYgorI2lmIGRlZmluZWQgWVlGQUlMCisgIC8qIFRoaXMgaXMgaGVyZSB0
byBzdXBwcmVzcyB3YXJuaW5ncyBmcm9tIHRoZSBHQ0MgY3BwJ3MKKyAgICAgLVd1bnVzZWQtbWFj
cm9zLiAgTm9ybWFsbHkgd2UgZG9uJ3Qgd29ycnkgYWJvdXQgdGhhdCB3YXJuaW5nLCBidXQKKyAg
ICAgc29tZSB1c2VycyBkbywgYW5kIHdlIHdhbnQgdG8gbWFrZSBpdCBlYXN5IGZvciB1c2VycyB0
byByZW1vdmUKKyAgICAgWVlGQUlMIHVzZXMsIHdoaWNoIHdpbGwgcHJvZHVjZSB3YXJuaW5ncyBm
cm9tIEJpc29uIDIuNS4gICovCisjZW5kaWYKIAogI2RlZmluZSBZWVJFQ09WRVJJTkcoKSAgKCEh
eXllcnJzdGF0dXMpCiAKLSNkZWZpbmUgWVlCQUNLVVAoVG9rZW4sIFZhbHVlKQkJCQkJXAotZG8J
CQkJCQkJCVwKLSAgaWYgKHl5Y2hhciA9PSBZWUVNUFRZICYmIHl5bGVuID09IDEpCQkJCVwKLSAg
ICB7CQkJCQkJCQlcCi0gICAgICB5eWNoYXIgPSAoVG9rZW4pOwkJCQkJCVwKLSAgICAgIHl5bHZh
bCA9IChWYWx1ZSk7CQkJCQkJXAotICAgICAgeXl0b2tlbiA9IFlZVFJBTlNMQVRFICh5eWNoYXIp
OwkJCQlcCi0gICAgICBZWVBPUFNUQUNLICgxKTsJCQkJCQlcCi0gICAgICBnb3RvIHl5YmFja3Vw
OwkJCQkJCVwKLSAgICB9CQkJCQkJCQlcCi0gIGVsc2UJCQkJCQkJCVwKLSAgICB7CQkJCQkJCQlc
CisjZGVmaW5lIFlZQkFDS1VQKFRva2VuLCBWYWx1ZSkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorZG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgaWYgKHl5Y2hhciA9PSBZWUVNUFRZKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgeXljaGFyID0g
KFRva2VuKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
IHl5bHZhbCA9IChWYWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICBZWVBPUFNUQUNLICh5eWxlbik7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgeXlzdGF0ZSA9ICp5eXNzcDsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGdvdG8geXliYWNrdXA7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBlbHNlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgICB5eWVycm9yICgmeXlsbG9jLCBjb250ZXh0LCBZWV8oInN5bnRheCBlcnJv
cjogY2Fubm90IGJhY2sgdXAiKSk7IFwKICAgICAgIFlZRVJST1I7CQkJCQkJCVwKICAgICB9CQkJ
CQkJCQlcCiB3aGlsZSAoWVlJRCAoMCkpCiAKLQorLyogRXJyb3IgdG9rZW4gbnVtYmVyICovCiAj
ZGVmaW5lIFlZVEVSUk9SCTEKICNkZWZpbmUgWVlFUlJDT0RFCTI1NgogCkBAIC0xNDE1LDI3ICsx
Mzc1LDI4IEBAIHdoaWxlIChZWUlEICgwKSkKICAgIElmIE4gaXMgMCwgdGhlbiBzZXQgQ1VSUkVO
VCB0byB0aGUgZW1wdHkgbG9jYXRpb24gd2hpY2ggZW5kcwogICAgdGhlIHByZXZpb3VzIHN5bWJv
bDogUkhTWzBdIChhbHdheXMgZGVmaW5lZCkuICAqLwogCi0jZGVmaW5lIFlZUkhTTE9DKFJocywg
SykgKChSaHMpW0tdKQogI2lmbmRlZiBZWUxMT0NfREVGQVVMVAotIyBkZWZpbmUgWVlMTE9DX0RF
RkFVTFQoQ3VycmVudCwgUmhzLCBOKQkJCQlcCi0gICAgZG8JCQkJCQkJCQlcCi0gICAgICBpZiAo
WVlJRCAoTikpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLQl7CQkJCQkJCQlcCi0JICAoQ3VycmVudCkuZmlyc3RfbGluZSAgID0gWVlSSFNMT0Mg
KFJocywgMSkuZmlyc3RfbGluZTsJXAotCSAgKEN1cnJlbnQpLmZpcnN0X2NvbHVtbiA9IFlZUkhT
TE9DIChSaHMsIDEpLmZpcnN0X2NvbHVtbjsJXAotCSAgKEN1cnJlbnQpLmxhc3RfbGluZSAgICA9
IFlZUkhTTE9DIChSaHMsIE4pLmxhc3RfbGluZTsJCVwKLQkgIChDdXJyZW50KS5sYXN0X2NvbHVt
biAgPSBZWVJIU0xPQyAoUmhzLCBOKS5sYXN0X2NvbHVtbjsJXAotCX0JCQkJCQkJCVwKLSAgICAg
IGVsc2UJCQkJCQkJCVwKLQl7CQkJCQkJCQlcCi0JICAoQ3VycmVudCkuZmlyc3RfbGluZSAgID0g
KEN1cnJlbnQpLmxhc3RfbGluZSAgID0JCVwKLQkgICAgWVlSSFNMT0MgKFJocywgMCkubGFzdF9s
aW5lOwkJCQlcCi0JICAoQ3VycmVudCkuZmlyc3RfY29sdW1uID0gKEN1cnJlbnQpLmxhc3RfY29s
dW1uID0JCVwKLQkgICAgWVlSSFNMT0MgKFJocywgMCkubGFzdF9jb2x1bW47CQkJCVwKLQl9CQkJ
CQkJCQlcCisjIGRlZmluZSBZWUxMT0NfREVGQVVMVChDdXJyZW50LCBSaHMsIE4pICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBpZiAoWVlJ
RCAoTikpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2xpbmUgICA9
IFlZUkhTTE9DIChSaHMsIDEpLmZpcnN0X2xpbmU7ICAgICAgICBcCisgICAgICAgICAgKEN1cnJl
bnQpLmZpcnN0X2NvbHVtbiA9IFlZUkhTTE9DIChSaHMsIDEpLmZpcnN0X2NvbHVtbjsgICAgICBc
CisgICAgICAgICAgKEN1cnJlbnQpLmxhc3RfbGluZSAgICA9IFlZUkhTTE9DIChSaHMsIE4pLmxh
c3RfbGluZTsgICAgICAgICBcCisgICAgICAgICAgKEN1cnJlbnQpLmxhc3RfY29sdW1uICA9IFlZ
UkhTTE9DIChSaHMsIE4pLmxhc3RfY29sdW1uOyAgICAgICBcCisgICAgICAgIH0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKEN1cnJlbnQpLmZp
cnN0X2xpbmUgICA9IChDdXJyZW50KS5sYXN0X2xpbmUgICA9ICAgICAgICAgICAgICBcCisgICAg
ICAgICAgICBZWVJIU0xPQyAoUmhzLCAwKS5sYXN0X2xpbmU7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2NvbHVtbiA9IChDdXJyZW50
KS5sYXN0X2NvbHVtbiA9ICAgICAgICAgICAgICBcCisgICAgICAgICAgICBZWVJIU0xPQyAoUmhz
LCAwKS5sYXN0X2NvbHVtbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCiAgICAgd2hpbGUgKFlZSUQgKDApKQogI2VuZGlmCiAKKyNkZWZpbmUgWVlSSFNM
T0MoUmhzLCBLKSAoKFJocylbS10pCisKIAogLyogWVlfTE9DQVRJT05fUFJJTlQgLS0gUHJpbnQg
dGhlIGxvY2F0aW9uIG9uIHRoZSBzdHJlYW0uCiAgICBUaGlzIG1hY3JvIHdhcyBub3QgbWFuZGF0
ZWQgb3JpZ2luYWxseTogZGVmaW5lIG9ubHkgaWYgd2Uga25vdwpAQCAtMTQ0MywxMCArMTQwNCw0
NiBAQCB3aGlsZSAoWVlJRCAoMCkpCiAKICNpZm5kZWYgWVlfTE9DQVRJT05fUFJJTlQKICMgaWYg
ZGVmaW5lZCBZWUxUWVBFX0lTX1RSSVZJQUwgJiYgWVlMVFlQRV9JU19UUklWSUFMCi0jICBkZWZp
bmUgWVlfTE9DQVRJT05fUFJJTlQoRmlsZSwgTG9jKQkJCVwKLSAgICAgZnByaW50ZiAoRmlsZSwg
IiVkLiVkLSVkLiVkIiwJCQlcCi0JICAgICAgKExvYykuZmlyc3RfbGluZSwgKExvYykuZmlyc3Rf
Y29sdW1uLAlcCi0JICAgICAgKExvYykubGFzdF9saW5lLCAgKExvYykubGFzdF9jb2x1bW4pCisK
Ky8qIFByaW50ICpZWUxPQ1Agb24gWVlPLiAgUHJpdmF0ZSwgZG8gbm90IHJlbHkgb24gaXRzIGV4
aXN0ZW5jZS4gKi8KKworX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpCisjaWYgKGRlZmluZWQg
X19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyAgICAgfHwgZGVmaW5lZCBfX2Nw
bHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQorc3RhdGljIHVuc2lnbmVkCit5eV9sb2NhdGlv
bl9wcmludF8gKEZJTEUgKnl5bywgWVlMVFlQRSBjb25zdCAqIGNvbnN0IHl5bG9jcCkKKyNlbHNl
CitzdGF0aWMgdW5zaWduZWQKK3l5X2xvY2F0aW9uX3ByaW50XyAoeXlvLCB5eWxvY3ApCisgICAg
RklMRSAqeXlvOworICAgIFlZTFRZUEUgY29uc3QgKiBjb25zdCB5eWxvY3A7CisjZW5kaWYKK3sK
KyAgdW5zaWduZWQgcmVzID0gMDsKKyAgaW50IGVuZF9jb2wgPSAwICE9IHl5bG9jcC0+bGFzdF9j
b2x1bW4gPyB5eWxvY3AtPmxhc3RfY29sdW1uIC0gMSA6IDA7CisgIGlmICgwIDw9IHl5bG9jcC0+
Zmlyc3RfbGluZSkKKyAgICB7CisgICAgICByZXMgKz0gZnByaW50ZiAoeXlvLCAiJWQiLCB5eWxv
Y3AtPmZpcnN0X2xpbmUpOworICAgICAgaWYgKDAgPD0geXlsb2NwLT5maXJzdF9jb2x1bW4pCisg
ICAgICAgIHJlcyArPSBmcHJpbnRmICh5eW8sICIuJWQiLCB5eWxvY3AtPmZpcnN0X2NvbHVtbik7
CisgICAgfQorICBpZiAoMCA8PSB5eWxvY3AtPmxhc3RfbGluZSkKKyAgICB7CisgICAgICBpZiAo
eXlsb2NwLT5maXJzdF9saW5lIDwgeXlsb2NwLT5sYXN0X2xpbmUpCisgICAgICAgIHsKKyAgICAg
ICAgICByZXMgKz0gZnByaW50ZiAoeXlvLCAiLSVkIiwgeXlsb2NwLT5sYXN0X2xpbmUpOworICAg
ICAgICAgIGlmICgwIDw9IGVuZF9jb2wpCisgICAgICAgICAgICByZXMgKz0gZnByaW50ZiAoeXlv
LCAiLiVkIiwgZW5kX2NvbCk7CisgICAgICAgIH0KKyAgICAgIGVsc2UgaWYgKDAgPD0gZW5kX2Nv
bCAmJiB5eWxvY3AtPmZpcnN0X2NvbHVtbiA8IGVuZF9jb2wpCisgICAgICAgIHJlcyArPSBmcHJp
bnRmICh5eW8sICItJWQiLCBlbmRfY29sKTsKKyAgICB9CisgIHJldHVybiByZXM7CisgfQorCisj
ICBkZWZpbmUgWVlfTE9DQVRJT05fUFJJTlQoRmlsZSwgTG9jKSAgICAgICAgICBcCisgIHl5X2xv
Y2F0aW9uX3ByaW50XyAoRmlsZSwgJihMb2MpKQorCiAjIGVsc2UKICMgIGRlZmluZSBZWV9MT0NB
VElPTl9QUklOVChGaWxlLCBMb2MpICgodm9pZCkgMCkKICMgZW5kaWYKQEAgLTE0NTQsNyArMTQ1
MSw2IEBAIHdoaWxlIChZWUlEICgwKSkKIAogCiAvKiBZWUxFWCAtLSBjYWxsaW5nIGB5eWxleCcg
d2l0aCB0aGUgcmlnaHQgYXJndW1lbnRzLiAgKi8KLQogI2lmZGVmIFlZTEVYX1BBUkFNCiAjIGRl
ZmluZSBZWUxFWCB5eWxleCAoJnl5bHZhbCwgJnl5bGxvYywgWVlMRVhfUEFSQU0pCiAjZWxzZQpA
QCAtMTUwNiw2ICsxNTAyLDggQEAgeXlfc3ltYm9sX3ZhbHVlX3ByaW50ICh5eW91dHB1dCwgeXl0
eXBlLAogICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQ7CiAjZW5kaWYKIHsKKyAgRklMRSAqeXlv
ID0geXlvdXRwdXQ7CisgIFlZVVNFICh5eW8pOwogICBpZiAoIXl5dmFsdWVwKQogICAgIHJldHVy
bjsKICAgWVlVU0UgKHl5bG9jYXRpb25wKTsKQEAgLTE1MTksNyArMTUxNyw3IEBAIHl5X3N5bWJv
bF92YWx1ZV9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwKICAgc3dpdGNoICh5eXR5cGUpCiAgICAg
ewogICAgICAgZGVmYXVsdDoKLQlicmVhazsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCkBA
IC0xNTYxLDE3ICsxNTU5LDIwIEBAIHl5X3N5bWJvbF9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwg
eXl2YWwKICNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAog
ICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCiBzdGF0aWMg
dm9pZAoteXlfc3RhY2tfcHJpbnQgKHl5dHlwZV9pbnQxNiAqYm90dG9tLCB5eXR5cGVfaW50MTYg
KnRvcCkKK3l5X3N0YWNrX3ByaW50ICh5eXR5cGVfaW50MTYgKnl5Ym90dG9tLCB5eXR5cGVfaW50
MTYgKnl5dG9wKQogI2Vsc2UKIHN0YXRpYyB2b2lkCi15eV9zdGFja19wcmludCAoYm90dG9tLCB0
b3ApCi0gICAgeXl0eXBlX2ludDE2ICpib3R0b207Ci0gICAgeXl0eXBlX2ludDE2ICp0b3A7Cit5
eV9zdGFja19wcmludCAoeXlib3R0b20sIHl5dG9wKQorICAgIHl5dHlwZV9pbnQxNiAqeXlib3R0
b207CisgICAgeXl0eXBlX2ludDE2ICp5eXRvcDsKICNlbmRpZgogewogICBZWUZQUklOVEYgKHN0
ZGVyciwgIlN0YWNrIG5vdyIpOwotICBmb3IgKDsgYm90dG9tIDw9IHRvcDsgKytib3R0b20pCi0g
ICAgWVlGUFJJTlRGIChzdGRlcnIsICIgJWQiLCAqYm90dG9tKTsKKyAgZm9yICg7IHl5Ym90dG9t
IDw9IHl5dG9wOyB5eWJvdHRvbSsrKQorICAgIHsKKyAgICAgIGludCB5eWJvdCA9ICp5eWJvdHRv
bTsKKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiICVkIiwgeXlib3QpOworICAgIH0KICAgWVlG
UFJJTlRGIChzdGRlcnIsICJcbiIpOwogfQogCkBAIC0xNjA3LDExICsxNjA4LDExIEBAIHl5X3Jl
ZHVjZV9wcmludCAoeXl2c3AsIHl5bHNwLCB5eXJ1bGUsIGMKICAgLyogVGhlIHN5bWJvbHMgYmVp
bmcgcmVkdWNlZC4gICovCiAgIGZvciAoeXlpID0gMDsgeXlpIDwgeXlucmhzOyB5eWkrKykKICAg
ICB7Ci0gICAgICBmcHJpbnRmIChzdGRlcnIsICIgICAkJWQgPSAiLCB5eWkgKyAxKTsKKyAgICAg
IFlZRlBSSU5URiAoc3RkZXJyLCAiICAgJCVkID0gIiwgeXlpICsgMSk7CiAgICAgICB5eV9zeW1i
b2xfcHJpbnQgKHN0ZGVyciwgeXlyaHNbeXlwcmhzW3l5cnVsZV0gKyB5eWldLAogCQkgICAgICAg
Jih5eXZzcFsoeXlpICsgMSkgLSAoeXlucmhzKV0pCiAJCSAgICAgICAsICYoeXlsc3BbKHl5aSAr
IDEpIC0gKHl5bnJocyldKQkJICAgICAgICwgY29udGV4dCk7Ci0gICAgICBmcHJpbnRmIChzdGRl
cnIsICJcbiIpOworICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICJcbiIpOwogICAgIH0KIH0KIApA
QCAtMTY0OCw3ICsxNjQ5LDYgQEAgaW50IHl5ZGVidWc7CiAjIGRlZmluZSBZWU1BWERFUFRIIDEw
MDAwCiAjZW5kaWYKIAotDAogCiAjaWYgWVlFUlJPUl9WRVJCT1NFCiAKQEAgLTE3NTEsMTE1ICsx
NzUxLDE0NSBAQCB5eXRuYW1lcnIgKGNoYXIgKnl5cmVzLCBjb25zdCBjaGFyICp5eXN0CiB9CiAj
IGVuZGlmCiAKLS8qIENvcHkgaW50byBZWVJFU1VMVCBhbiBlcnJvciBtZXNzYWdlIGFib3V0IHRo
ZSB1bmV4cGVjdGVkIHRva2VuCi0gICBZWUNIQVIgd2hpbGUgaW4gc3RhdGUgWVlTVEFURS4gIFJl
dHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGNvcGllZCwKLSAgIGluY2x1ZGluZyB0aGUgdGVybWlu
YXRpbmcgbnVsbCBieXRlLiAgSWYgWVlSRVNVTFQgaXMgbnVsbCwgZG8gbm90Ci0gICBjb3B5IGFu
eXRoaW5nOyBqdXN0IHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgd291bGQgYmUKLSAg
IGNvcGllZC4gIEFzIGEgc3BlY2lhbCBjYXNlLCByZXR1cm4gMCBpZiBhbiBvcmRpbmFyeSAic3lu
dGF4IGVycm9yIgotICAgbWVzc2FnZSB3aWxsIGRvLiAgUmV0dXJuIFlZU0laRV9NQVhJTVVNIGlm
IG92ZXJmbG93IG9jY3VycyBkdXJpbmcKLSAgIHNpemUgY2FsY3VsYXRpb24uICAqLwotc3RhdGlj
IFlZU0laRV9UCi15eXN5bnRheF9lcnJvciAoY2hhciAqeXlyZXN1bHQsIGludCB5eXN0YXRlLCBp
bnQgeXljaGFyKQorLyogQ29weSBpbnRvICpZWU1TRywgd2hpY2ggaXMgb2Ygc2l6ZSAqWVlNU0df
QUxMT0MsIGFuIGVycm9yIG1lc3NhZ2UKKyAgIGFib3V0IHRoZSB1bmV4cGVjdGVkIHRva2VuIFlZ
VE9LRU4gZm9yIHRoZSBzdGF0ZSBzdGFjayB3aG9zZSB0b3AgaXMKKyAgIFlZU1NQLgorCisgICBS
ZXR1cm4gMCBpZiAqWVlNU0cgd2FzIHN1Y2Nlc3NmdWxseSB3cml0dGVuLiAgUmV0dXJuIDEgaWYg
KllZTVNHIGlzCisgICBub3QgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgdGhlIG1lc3NhZ2UuICBJbiB0
aGF0IGNhc2UsIGFsc28gc2V0CisgICAqWVlNU0dfQUxMT0MgdG8gdGhlIHJlcXVpcmVkIG51bWJl
ciBvZiBieXRlcy4gIFJldHVybiAyIGlmIHRoZQorICAgcmVxdWlyZWQgbnVtYmVyIG9mIGJ5dGVz
IGlzIHRvbyBsYXJnZSB0byBzdG9yZS4gICovCitzdGF0aWMgaW50Cit5eXN5bnRheF9lcnJvciAo
WVlTSVpFX1QgKnl5bXNnX2FsbG9jLCBjaGFyICoqeXltc2csCisgICAgICAgICAgICAgICAgeXl0
eXBlX2ludDE2ICp5eXNzcCwgaW50IHl5dG9rZW4pCiB7Ci0gIGludCB5eW4gPSB5eXBhY3RbeXlz
dGF0ZV07CisgIFlZU0laRV9UIHl5c2l6ZTAgPSB5eXRuYW1lcnIgKFlZX05VTEwsIHl5dG5hbWVb
eXl0b2tlbl0pOworICBZWVNJWkVfVCB5eXNpemUgPSB5eXNpemUwOworICBlbnVtIHsgWVlFUlJP
Ul9WRVJCT1NFX0FSR1NfTUFYSU1VTSA9IDUgfTsKKyAgLyogSW50ZXJuYXRpb25hbGl6ZWQgZm9y
bWF0IHN0cmluZy4gKi8KKyAgY29uc3QgY2hhciAqeXlmb3JtYXQgPSBZWV9OVUxMOworICAvKiBB
cmd1bWVudHMgb2YgeXlmb3JtYXQuICovCisgIGNoYXIgY29uc3QgKnl5YXJnW1lZRVJST1JfVkVS
Qk9TRV9BUkdTX01BWElNVU1dOworICAvKiBOdW1iZXIgb2YgcmVwb3J0ZWQgdG9rZW5zIChvbmUg
Zm9yIHRoZSAidW5leHBlY3RlZCIsIG9uZSBwZXIKKyAgICAgImV4cGVjdGVkIikuICovCisgIGlu
dCB5eWNvdW50ID0gMDsKKworICAvKiBUaGVyZSBhcmUgbWFueSBwb3NzaWJpbGl0aWVzIGhlcmUg
dG8gY29uc2lkZXI6CisgICAgIC0gQXNzdW1lIFlZRkFJTCBpcyBub3QgdXNlZC4gIEl0J3MgdG9v
IGZsYXdlZCB0byBjb25zaWRlci4gIFNlZQorICAgICAgIDxodHRwOi8vbGlzdHMuZ251Lm9yZy9h
cmNoaXZlL2h0bWwvYmlzb24tcGF0Y2hlcy8yMDA5LTEyL21zZzAwMDI0Lmh0bWw+CisgICAgICAg
Zm9yIGRldGFpbHMuICBZWUVSUk9SIGlzIGZpbmUgYXMgaXQgZG9lcyBub3QgaW52b2tlIHRoaXMK
KyAgICAgICBmdW5jdGlvbi4KKyAgICAgLSBJZiB0aGlzIHN0YXRlIGlzIGEgY29uc2lzdGVudCBz
dGF0ZSB3aXRoIGEgZGVmYXVsdCBhY3Rpb24sIHRoZW4KKyAgICAgICB0aGUgb25seSB3YXkgdGhp
cyBmdW5jdGlvbiB3YXMgaW52b2tlZCBpcyBpZiB0aGUgZGVmYXVsdCBhY3Rpb24KKyAgICAgICBp
cyBhbiBlcnJvciBhY3Rpb24uICBJbiB0aGF0IGNhc2UsIGRvbid0IGNoZWNrIGZvciBleHBlY3Rl
ZAorICAgICAgIHRva2VucyBiZWNhdXNlIHRoZXJlIGFyZSBub25lLgorICAgICAtIFRoZSBvbmx5
IHdheSB0aGVyZSBjYW4gYmUgbm8gbG9va2FoZWFkIHByZXNlbnQgKGluIHl5Y2hhcikgaXMgaWYK
KyAgICAgICB0aGlzIHN0YXRlIGlzIGEgY29uc2lzdGVudCBzdGF0ZSB3aXRoIGEgZGVmYXVsdCBh
Y3Rpb24uICBUaHVzLAorICAgICAgIGRldGVjdGluZyB0aGUgYWJzZW5jZSBvZiBhIGxvb2thaGVh
ZCBpcyBzdWZmaWNpZW50IHRvIGRldGVybWluZQorICAgICAgIHRoYXQgdGhlcmUgaXMgbm8gdW5l
eHBlY3RlZCBvciBleHBlY3RlZCB0b2tlbiB0byByZXBvcnQuICBJbiB0aGF0CisgICAgICAgY2Fz
ZSwganVzdCByZXBvcnQgYSBzaW1wbGUgInN5bnRheCBlcnJvciIuCisgICAgIC0gRG9uJ3QgYXNz
dW1lIHRoZXJlIGlzbid0IGEgbG9va2FoZWFkIGp1c3QgYmVjYXVzZSB0aGlzIHN0YXRlIGlzIGEK
KyAgICAgICBjb25zaXN0ZW50IHN0YXRlIHdpdGggYSBkZWZhdWx0IGFjdGlvbi4gIFRoZXJlIG1p
Z2h0IGhhdmUgYmVlbiBhCisgICAgICAgcHJldmlvdXMgaW5jb25zaXN0ZW50IHN0YXRlLCBjb25z
aXN0ZW50IHN0YXRlIHdpdGggYSBub24tZGVmYXVsdAorICAgICAgIGFjdGlvbiwgb3IgdXNlciBz
ZW1hbnRpYyBhY3Rpb24gdGhhdCBtYW5pcHVsYXRlZCB5eWNoYXIuCisgICAgIC0gT2YgY291cnNl
LCB0aGUgZXhwZWN0ZWQgdG9rZW4gbGlzdCBkZXBlbmRzIG9uIHN0YXRlcyB0byBoYXZlCisgICAg
ICAgY29ycmVjdCBsb29rYWhlYWQgaW5mb3JtYXRpb24sIGFuZCBpdCBkZXBlbmRzIG9uIHRoZSBw
YXJzZXIgbm90CisgICAgICAgdG8gcGVyZm9ybSBleHRyYSByZWR1Y3Rpb25zIGFmdGVyIGZldGNo
aW5nIGEgbG9va2FoZWFkIGZyb20gdGhlCisgICAgICAgc2Nhbm5lciBhbmQgYmVmb3JlIGRldGVj
dGluZyBhIHN5bnRheCBlcnJvci4gIFRodXMsIHN0YXRlIG1lcmdpbmcKKyAgICAgICAoZnJvbSBM
QUxSIG9yIElFTFIpIGFuZCBkZWZhdWx0IHJlZHVjdGlvbnMgY29ycnVwdCB0aGUgZXhwZWN0ZWQK
KyAgICAgICB0b2tlbiBsaXN0LiAgSG93ZXZlciwgdGhlIGxpc3QgaXMgY29ycmVjdCBmb3IgY2Fu
b25pY2FsIExSIHdpdGgKKyAgICAgICBvbmUgZXhjZXB0aW9uOiBpdCB3aWxsIHN0aWxsIGNvbnRh
aW4gYW55IHRva2VuIHRoYXQgd2lsbCBub3QgYmUKKyAgICAgICBhY2NlcHRlZCBkdWUgdG8gYW4g
ZXJyb3IgYWN0aW9uIGluIGEgbGF0ZXIgc3RhdGUuCisgICovCisgIGlmICh5eXRva2VuICE9IFlZ
RU1QVFkpCisgICAgeworICAgICAgaW50IHl5biA9IHl5cGFjdFsqeXlzc3BdOworICAgICAgeXlh
cmdbeXljb3VudCsrXSA9IHl5dG5hbWVbeXl0b2tlbl07CisgICAgICBpZiAoIXl5cGFjdF92YWx1
ZV9pc19kZWZhdWx0ICh5eW4pKQorICAgICAgICB7CisgICAgICAgICAgLyogU3RhcnQgWVlYIGF0
IC1ZWU4gaWYgbmVnYXRpdmUgdG8gYXZvaWQgbmVnYXRpdmUgaW5kZXhlcyBpbgorICAgICAgICAg
ICAgIFlZQ0hFQ0suICBJbiBvdGhlciB3b3Jkcywgc2tpcCB0aGUgZmlyc3QgLVlZTiBhY3Rpb25z
IGZvcgorICAgICAgICAgICAgIHRoaXMgc3RhdGUgYmVjYXVzZSB0aGV5IGFyZSBkZWZhdWx0IGFj
dGlvbnMuICAqLworICAgICAgICAgIGludCB5eXhiZWdpbiA9IHl5biA8IDAgPyAteXluIDogMDsK
KyAgICAgICAgICAvKiBTdGF5IHdpdGhpbiBib3VuZHMgb2YgYm90aCB5eWNoZWNrIGFuZCB5eXRu
YW1lLiAgKi8KKyAgICAgICAgICBpbnQgeXljaGVja2xpbSA9IFlZTEFTVCAtIHl5biArIDE7Cisg
ICAgICAgICAgaW50IHl5eGVuZCA9IHl5Y2hlY2tsaW0gPCBZWU5UT0tFTlMgPyB5eWNoZWNrbGlt
IDogWVlOVE9LRU5TOworICAgICAgICAgIGludCB5eXg7CisKKyAgICAgICAgICBmb3IgKHl5eCA9
IHl5eGJlZ2luOyB5eXggPCB5eXhlbmQ7ICsreXl4KQorICAgICAgICAgICAgaWYgKHl5Y2hlY2tb
eXl4ICsgeXluXSA9PSB5eXggJiYgeXl4ICE9IFlZVEVSUk9SCisgICAgICAgICAgICAgICAgJiYg
IXl5dGFibGVfdmFsdWVfaXNfZXJyb3IgKHl5dGFibGVbeXl4ICsgeXluXSkpCisgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoeXljb3VudCA9PSBZWUVSUk9SX1ZFUkJPU0VfQVJH
U19NQVhJTVVNKQorICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB5eWNv
dW50ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgeXlzaXplID0geXlzaXplMDsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
eXlhcmdbeXljb3VudCsrXSA9IHl5dG5hbWVbeXl4XTsKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICBZWVNJWkVfVCB5eXNpemUxID0geXlzaXplICsgeXl0bmFtZXJyIChZWV9O
VUxMLCB5eXRuYW1lW3l5eF0pOworICAgICAgICAgICAgICAgICAgaWYgKCEgKHl5c2l6ZSA8PSB5
eXNpemUxCisgICAgICAgICAgICAgICAgICAgICAgICAgJiYgeXlzaXplMSA8PSBZWVNUQUNLX0FM
TE9DX01BWElNVU0pKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAg
ICAgICAgIHl5c2l6ZSA9IHl5c2l6ZTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CiAKLSAgaWYgKCEgKFlZUEFDVF9OSU5GIDwgeXluICYmIHl5
biA8PSBZWUxBU1QpKQotICAgIHJldHVybiAwOwotICBlbHNlCisgIHN3aXRjaCAoeXljb3VudCkK
ICAgICB7Ci0gICAgICBpbnQgeXl0eXBlID0gWVlUUkFOU0xBVEUgKHl5Y2hhcik7Ci0gICAgICBZ
WVNJWkVfVCB5eXNpemUwID0geXl0bmFtZXJyICgwLCB5eXRuYW1lW3l5dHlwZV0pOwotICAgICAg
WVlTSVpFX1QgeXlzaXplID0geXlzaXplMDsKLSAgICAgIFlZU0laRV9UIHl5c2l6ZTE7Ci0gICAg
ICBpbnQgeXlzaXplX292ZXJmbG93ID0gMDsKLSAgICAgIGVudW0geyBZWUVSUk9SX1ZFUkJPU0Vf
QVJHU19NQVhJTVVNID0gNSB9OwotICAgICAgY2hhciBjb25zdCAqeXlhcmdbWVlFUlJPUl9WRVJC
T1NFX0FSR1NfTUFYSU1VTV07Ci0gICAgICBpbnQgeXl4OwotCi0jIGlmIDAKLSAgICAgIC8qIFRo
aXMgaXMgc28geGdldHRleHQgc2VlcyB0aGUgdHJhbnNsYXRhYmxlIGZvcm1hdHMgdGhhdCBhcmUK
LQkgY29uc3RydWN0ZWQgb24gdGhlIGZseS4gICovCi0gICAgICBZWV8oInN5bnRheCBlcnJvciwg
dW5leHBlY3RlZCAlcyIpOwotICAgICAgWVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMs
IGV4cGVjdGluZyAlcyIpOwotICAgICAgWVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMs
IGV4cGVjdGluZyAlcyBvciAlcyIpOwotICAgICAgWVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0
ZWQgJXMsIGV4cGVjdGluZyAlcyBvciAlcyBvciAlcyIpOwotICAgICAgWVlfKCJzeW50YXggZXJy
b3IsIHVuZXhwZWN0ZWQgJXMsIGV4cGVjdGluZyAlcyBvciAlcyBvciAlcyBvciAlcyIpOwotIyBl
bmRpZgotICAgICAgY2hhciAqeXlmbXQ7Ci0gICAgICBjaGFyIGNvbnN0ICp5eWY7Ci0gICAgICBz
dGF0aWMgY2hhciBjb25zdCB5eXVuZXhwZWN0ZWRbXSA9ICJzeW50YXggZXJyb3IsIHVuZXhwZWN0
ZWQgJXMiOwotICAgICAgc3RhdGljIGNoYXIgY29uc3QgeXlleHBlY3RpbmdbXSA9ICIsIGV4cGVj
dGluZyAlcyI7Ci0gICAgICBzdGF0aWMgY2hhciBjb25zdCB5eW9yW10gPSAiIG9yICVzIjsKLSAg
ICAgIGNoYXIgeXlmb3JtYXRbc2l6ZW9mIHl5dW5leHBlY3RlZAotCQkgICAgKyBzaXplb2YgeXll
eHBlY3RpbmcgLSAxCi0JCSAgICArICgoWVlFUlJPUl9WRVJCT1NFX0FSR1NfTUFYSU1VTSAtIDIp
Ci0JCSAgICAgICAqIChzaXplb2YgeXlvciAtIDEpKV07Ci0gICAgICBjaGFyIGNvbnN0ICp5eXBy
ZWZpeCA9IHl5ZXhwZWN0aW5nOwotCi0gICAgICAvKiBTdGFydCBZWVggYXQgLVlZTiBpZiBuZWdh
dGl2ZSB0byBhdm9pZCBuZWdhdGl2ZSBpbmRleGVzIGluCi0JIFlZQ0hFQ0suICAqLwotICAgICAg
aW50IHl5eGJlZ2luID0geXluIDwgMCA/IC15eW4gOiAwOwotCi0gICAgICAvKiBTdGF5IHdpdGhp
biBib3VuZHMgb2YgYm90aCB5eWNoZWNrIGFuZCB5eXRuYW1lLiAgKi8KLSAgICAgIGludCB5eWNo
ZWNrbGltID0gWVlMQVNUIC0geXluICsgMTsKLSAgICAgIGludCB5eXhlbmQgPSB5eWNoZWNrbGlt
IDwgWVlOVE9LRU5TID8geXljaGVja2xpbSA6IFlZTlRPS0VOUzsKLSAgICAgIGludCB5eWNvdW50
ID0gMTsKLQotICAgICAgeXlhcmdbMF0gPSB5eXRuYW1lW3l5dHlwZV07Ci0gICAgICB5eWZtdCA9
IHl5c3RwY3B5ICh5eWZvcm1hdCwgeXl1bmV4cGVjdGVkKTsKLQotICAgICAgZm9yICh5eXggPSB5
eXhiZWdpbjsgeXl4IDwgeXl4ZW5kOyArK3l5eCkKLQlpZiAoeXljaGVja1t5eXggKyB5eW5dID09
IHl5eCAmJiB5eXggIT0gWVlURVJST1IpCi0JICB7Ci0JICAgIGlmICh5eWNvdW50ID09IFlZRVJS
T1JfVkVSQk9TRV9BUkdTX01BWElNVU0pCi0JICAgICAgewotCQl5eWNvdW50ID0gMTsKLQkJeXlz
aXplID0geXlzaXplMDsKLQkJeXlmb3JtYXRbc2l6ZW9mIHl5dW5leHBlY3RlZCAtIDFdID0gJ1ww
JzsKLQkJYnJlYWs7Ci0JICAgICAgfQotCSAgICB5eWFyZ1t5eWNvdW50KytdID0geXl0bmFtZVt5
eXhdOwotCSAgICB5eXNpemUxID0geXlzaXplICsgeXl0bmFtZXJyICgwLCB5eXRuYW1lW3l5eF0p
OwotCSAgICB5eXNpemVfb3ZlcmZsb3cgfD0gKHl5c2l6ZTEgPCB5eXNpemUpOwotCSAgICB5eXNp
emUgPSB5eXNpemUxOwotCSAgICB5eWZtdCA9IHl5c3RwY3B5ICh5eWZtdCwgeXlwcmVmaXgpOwot
CSAgICB5eXByZWZpeCA9IHl5b3I7Ci0JICB9Ci0KLSAgICAgIHl5ZiA9IFlZXyh5eWZvcm1hdCk7
Ci0gICAgICB5eXNpemUxID0geXlzaXplICsgeXlzdHJsZW4gKHl5Zik7Ci0gICAgICB5eXNpemVf
b3ZlcmZsb3cgfD0gKHl5c2l6ZTEgPCB5eXNpemUpOwotICAgICAgeXlzaXplID0geXlzaXplMTsK
LQotICAgICAgaWYgKHl5c2l6ZV9vdmVyZmxvdykKLQlyZXR1cm4gWVlTSVpFX01BWElNVU07Cisj
IGRlZmluZSBZWUNBU0VfKE4sIFMpICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGNhc2Ug
TjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB5eWZvcm1hdCA9IFM7
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBicmVhaworICAgICAgWVlDQVNFXygwLCBZ
WV8oInN5bnRheCBlcnJvciIpKTsKKyAgICAgIFlZQ0FTRV8oMSwgWVlfKCJzeW50YXggZXJyb3Is
IHVuZXhwZWN0ZWQgJXMiKSk7CisgICAgICBZWUNBU0VfKDIsIFlZXygic3ludGF4IGVycm9yLCB1
bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMiKSk7CisgICAgICBZWUNBU0VfKDMsIFlZXygic3lu
dGF4IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMgb3IgJXMiKSk7CisgICAgICBZ
WUNBU0VfKDQsIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMg
b3IgJXMgb3IgJXMiKSk7CisgICAgICBZWUNBU0VfKDUsIFlZXygic3ludGF4IGVycm9yLCB1bmV4
cGVjdGVkICVzLCBleHBlY3RpbmcgJXMgb3IgJXMgb3IgJXMgb3IgJXMiKSk7CisjIHVuZGVmIFlZ
Q0FTRV8KKyAgICB9CiAKLSAgICAgIGlmICh5eXJlc3VsdCkKLQl7Ci0JICAvKiBBdm9pZCBzcHJp
bnRmLCBhcyB0aGF0IGluZnJpbmdlcyBvbiB0aGUgdXNlcidzIG5hbWUgc3BhY2UuCi0JICAgICBE
b24ndCBoYXZlIHVuZGVmaW5lZCBiZWhhdmlvciBldmVuIGlmIHRoZSB0cmFuc2xhdGlvbgotCSAg
ICAgcHJvZHVjZWQgYSBzdHJpbmcgd2l0aCB0aGUgd3JvbmcgbnVtYmVyIG9mICIlcyJzLiAgKi8K
LQkgIGNoYXIgKnl5cCA9IHl5cmVzdWx0OwotCSAgaW50IHl5aSA9IDA7Ci0JICB3aGlsZSAoKCp5
eXAgPSAqeXlmKSAhPSAnXDAnKQotCSAgICB7Ci0JICAgICAgaWYgKCp5eXAgPT0gJyUnICYmIHl5
ZlsxXSA9PSAncycgJiYgeXlpIDwgeXljb3VudCkKLQkJewotCQkgIHl5cCArPSB5eXRuYW1lcnIg
KHl5cCwgeXlhcmdbeXlpKytdKTsKLQkJICB5eWYgKz0gMjsKLQkJfQotCSAgICAgIGVsc2UKLQkJ
ewotCQkgIHl5cCsrOwotCQkgIHl5ZisrOwotCQl9Ci0JICAgIH0KLQl9Ci0gICAgICByZXR1cm4g
eXlzaXplOworICB7CisgICAgWVlTSVpFX1QgeXlzaXplMSA9IHl5c2l6ZSArIHl5c3RybGVuICh5
eWZvcm1hdCk7CisgICAgaWYgKCEgKHl5c2l6ZSA8PSB5eXNpemUxICYmIHl5c2l6ZTEgPD0gWVlT
VEFDS19BTExPQ19NQVhJTVVNKSkKKyAgICAgIHJldHVybiAyOworICAgIHl5c2l6ZSA9IHl5c2l6
ZTE7CisgIH0KKworICBpZiAoKnl5bXNnX2FsbG9jIDwgeXlzaXplKQorICAgIHsKKyAgICAgICp5
eW1zZ19hbGxvYyA9IDIgKiB5eXNpemU7CisgICAgICBpZiAoISAoeXlzaXplIDw9ICp5eW1zZ19h
bGxvYworICAgICAgICAgICAgICYmICp5eW1zZ19hbGxvYyA8PSBZWVNUQUNLX0FMTE9DX01BWElN
VU0pKQorICAgICAgICAqeXltc2dfYWxsb2MgPSBZWVNUQUNLX0FMTE9DX01BWElNVU07CisgICAg
ICByZXR1cm4gMTsKICAgICB9CisKKyAgLyogQXZvaWQgc3ByaW50ZiwgYXMgdGhhdCBpbmZyaW5n
ZXMgb24gdGhlIHVzZXIncyBuYW1lIHNwYWNlLgorICAgICBEb24ndCBoYXZlIHVuZGVmaW5lZCBi
ZWhhdmlvciBldmVuIGlmIHRoZSB0cmFuc2xhdGlvbgorICAgICBwcm9kdWNlZCBhIHN0cmluZyB3
aXRoIHRoZSB3cm9uZyBudW1iZXIgb2YgIiVzInMuICAqLworICB7CisgICAgY2hhciAqeXlwID0g
Knl5bXNnOworICAgIGludCB5eWkgPSAwOworICAgIHdoaWxlICgoKnl5cCA9ICp5eWZvcm1hdCkg
IT0gJ1wwJykKKyAgICAgIGlmICgqeXlwID09ICclJyAmJiB5eWZvcm1hdFsxXSA9PSAncycgJiYg
eXlpIDwgeXljb3VudCkKKyAgICAgICAgeworICAgICAgICAgIHl5cCArPSB5eXRuYW1lcnIgKHl5
cCwgeXlhcmdbeXlpKytdKTsKKyAgICAgICAgICB5eWZvcm1hdCArPSAyOworICAgICAgICB9Cisg
ICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICB5eXArKzsKKyAgICAgICAgICB5eWZvcm1h
dCsrOworICAgICAgICB9CisgIH0KKyAgcmV0dXJuIDA7CiB9CiAjZW5kaWYgLyogWVlFUlJPUl9W
RVJCT1NFICovCi0MCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0uCiB8IFJlbGVhc2UgdGhlIG1lbW9yeSBhc3NvY2lhdGVkIHRvIHRoaXMgc3ltYm9s
LiAgfApAQCAtMTg5MiwyOCArMTkyMiw5IEBAIHl5ZGVzdHJ1Y3QgKHl5bXNnLCB5eXR5cGUsIHl5
dmFsdWVwLCB5eWwKICAgICB7CiAKICAgICAgIGRlZmF1bHQ6Ci0JYnJlYWs7CisgICAgICAgIGJy
ZWFrOwogICAgIH0KIH0KLQwKLQotLyogUHJldmVudCB3YXJuaW5ncyBmcm9tIC1XbWlzc2luZy1w
cm90b3R5cGVzLiAgKi8KLQotI2lmZGVmIFlZUEFSU0VfUEFSQU0KLSNpZiBkZWZpbmVkIF9fU1RE
Q19fIHx8IGRlZmluZWQgX19jcGx1c3BsdXMKLWludCB5eXBhcnNlICh2b2lkICpZWVBBUlNFX1BB
UkFNKTsKLSNlbHNlCi1pbnQgeXlwYXJzZSAoKTsKLSNlbmRpZgotI2Vsc2UgLyogISBZWVBBUlNF
X1BBUkFNICovCi0jaWYgZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzCi1p
bnQgeXlwYXJzZSAoVFBhcnNlQ29udGV4dCogY29udGV4dCk7Ci0jZWxzZQotaW50IHl5cGFyc2Ug
KCk7Ci0jZW5kaWYKLSNlbmRpZiAvKiAhIFlZUEFSU0VfUEFSQU0gKi8KLQotCiAKIAogCkBAIC0x
OTQ0LDI0ICsxOTU1LDg4IEBAIHl5cGFyc2UgKGNvbnRleHQpCiAjZW5kaWYKICNlbmRpZgogewot
ICAvKiBUaGUgbG9vay1haGVhZCBzeW1ib2wuICAqLworLyogVGhlIGxvb2thaGVhZCBzeW1ib2wu
ICAqLwogaW50IHl5Y2hhcjsKIAotLyogVGhlIHNlbWFudGljIHZhbHVlIG9mIHRoZSBsb29rLWFo
ZWFkIHN5bWJvbC4gICovCi1ZWVNUWVBFIHl5bHZhbDsKIAotLyogTnVtYmVyIG9mIHN5bnRheCBl
cnJvcnMgc28gZmFyLiAgKi8KLWludCB5eW5lcnJzOwotLyogTG9jYXRpb24gZGF0YSBmb3IgdGhl
IGxvb2stYWhlYWQgc3ltYm9sLiAgKi8KLVlZTFRZUEUgeXlsbG9jOworI2lmIGRlZmluZWQgX19H
TlVDX18gJiYgNDA3IDw9IF9fR05VQ19fICogMTAwICsgX19HTlVDX01JTk9SX18KKy8qIFN1cHBy
ZXNzIGFuIGluY29ycmVjdCBkaWFnbm9zdGljIGFib3V0IHl5bHZhbCBiZWluZyB1bmluaXRpYWxp
emVkLiAgKi8KKyMgZGVmaW5lIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0JFR0lOIFwK
KyAgICBfUHJhZ21hICgiR0NDIGRpYWdub3N0aWMgcHVzaCIpIFwKKyAgICBfUHJhZ21hICgiR0ND
IGRpYWdub3N0aWMgaWdub3JlZCBcIi1XdW5pbml0aWFsaXplZFwiIilcCisgICAgX1ByYWdtYSAo
IkdDQyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV21heWJlLXVuaW5pdGlhbGl6ZWRcIiIpCisjIGRl
ZmluZSBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9FTkQgXAorICAgIF9QcmFnbWEgKCJH
Q0MgZGlhZ25vc3RpYyBwb3AiKQorI2Vsc2UKKy8qIERlZmF1bHQgdmFsdWUgdXNlZCBmb3IgaW5p
dGlhbGl6YXRpb24sIGZvciBwYWNpZnlpbmcgb2xkZXIgR0NDcworICAgb3Igbm9uLUdDQyBjb21w
aWxlcnMuICAqLworc3RhdGljIFlZU1RZUEUgeXl2YWxfZGVmYXVsdDsKKyMgZGVmaW5lIFlZX0lO
SVRJQUxfVkFMVUUoVmFsdWUpID0gVmFsdWUKKyNlbmRpZgorc3RhdGljIFlZTFRZUEUgeXlsb2Nf
ZGVmYXVsdAorIyBpZiBkZWZpbmVkIFlZTFRZUEVfSVNfVFJJVklBTCAmJiBZWUxUWVBFX0lTX1RS
SVZJQUwKKyAgPSB7IDEsIDEsIDEsIDEgfQorIyBlbmRpZgorOworI2lmbmRlZiBZWV9JR05PUkVf
TUFZQkVfVU5JTklUSUFMSVpFRF9CRUdJTgorIyBkZWZpbmUgWVlfSUdOT1JFX01BWUJFX1VOSU5J
VElBTElaRURfQkVHSU4KKyMgZGVmaW5lIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0VO
RAorI2VuZGlmCisjaWZuZGVmIFlZX0lOSVRJQUxfVkFMVUUKKyMgZGVmaW5lIFlZX0lOSVRJQUxf
VkFMVUUoVmFsdWUpIC8qIE5vdGhpbmcuICovCisjZW5kaWYKKworLyogVGhlIHNlbWFudGljIHZh
bHVlIG9mIHRoZSBsb29rYWhlYWQgc3ltYm9sLiAgKi8KK1lZU1RZUEUgeXlsdmFsIFlZX0lOSVRJ
QUxfVkFMVUUoeXl2YWxfZGVmYXVsdCk7CisKKy8qIExvY2F0aW9uIGRhdGEgZm9yIHRoZSBsb29r
YWhlYWQgc3ltYm9sLiAgKi8KK1lZTFRZUEUgeXlsbG9jID0geXlsb2NfZGVmYXVsdDsKKworCisg
ICAgLyogTnVtYmVyIG9mIHN5bnRheCBlcnJvcnMgc28gZmFyLiAgKi8KKyAgICBpbnQgeXluZXJy
czsKKworICAgIGludCB5eXN0YXRlOworICAgIC8qIE51bWJlciBvZiB0b2tlbnMgdG8gc2hpZnQg
YmVmb3JlIGVycm9yIG1lc3NhZ2VzIGVuYWJsZWQuICAqLworICAgIGludCB5eWVycnN0YXR1czsK
KworICAgIC8qIFRoZSBzdGFja3MgYW5kIHRoZWlyIHRvb2xzOgorICAgICAgIGB5eXNzJzogcmVs
YXRlZCB0byBzdGF0ZXMuCisgICAgICAgYHl5dnMnOiByZWxhdGVkIHRvIHNlbWFudGljIHZhbHVl
cy4KKyAgICAgICBgeXlscyc6IHJlbGF0ZWQgdG8gbG9jYXRpb25zLgorCisgICAgICAgUmVmZXIg
dG8gdGhlIHN0YWNrcyB0aHJvdWdoIHNlcGFyYXRlIHBvaW50ZXJzLCB0byBhbGxvdyB5eW92ZXJm
bG93CisgICAgICAgdG8gcmVhbGxvY2F0ZSB0aGVtIGVsc2V3aGVyZS4gICovCisKKyAgICAvKiBU
aGUgc3RhdGUgc3RhY2suICAqLworICAgIHl5dHlwZV9pbnQxNiB5eXNzYVtZWUlOSVRERVBUSF07
CisgICAgeXl0eXBlX2ludDE2ICp5eXNzOworICAgIHl5dHlwZV9pbnQxNiAqeXlzc3A7CisKKyAg
ICAvKiBUaGUgc2VtYW50aWMgdmFsdWUgc3RhY2suICAqLworICAgIFlZU1RZUEUgeXl2c2FbWVlJ
TklUREVQVEhdOworICAgIFlZU1RZUEUgKnl5dnM7CisgICAgWVlTVFlQRSAqeXl2c3A7CisKKyAg
ICAvKiBUaGUgbG9jYXRpb24gc3RhY2suICAqLworICAgIFlZTFRZUEUgeXlsc2FbWVlJTklUREVQ
VEhdOworICAgIFlZTFRZUEUgKnl5bHM7CisgICAgWVlMVFlQRSAqeXlsc3A7CisKKyAgICAvKiBU
aGUgbG9jYXRpb25zIHdoZXJlIHRoZSBlcnJvciBzdGFydGVkIGFuZCBlbmRlZC4gICovCisgICAg
WVlMVFlQRSB5eWVycm9yX3JhbmdlWzNdOworCisgICAgWVlTSVpFX1QgeXlzdGFja3NpemU7CiAK
LSAgaW50IHl5c3RhdGU7CiAgIGludCB5eW47CiAgIGludCB5eXJlc3VsdDsKLSAgLyogTnVtYmVy
IG9mIHRva2VucyB0byBzaGlmdCBiZWZvcmUgZXJyb3IgbWVzc2FnZXMgZW5hYmxlZC4gICovCi0g
IGludCB5eWVycnN0YXR1czsKLSAgLyogTG9vay1haGVhZCB0b2tlbiBhcyBhbiBpbnRlcm5hbCAo
dHJhbnNsYXRlZCkgdG9rZW4gbnVtYmVyLiAgKi8KKyAgLyogTG9va2FoZWFkIHRva2VuIGFzIGFu
IGludGVybmFsICh0cmFuc2xhdGVkKSB0b2tlbiBudW1iZXIuICAqLwogICBpbnQgeXl0b2tlbiA9
IDA7CisgIC8qIFRoZSB2YXJpYWJsZXMgdXNlZCB0byByZXR1cm4gc2VtYW50aWMgdmFsdWUgYW5k
IGxvY2F0aW9uIGZyb20gdGhlCisgICAgIGFjdGlvbiByb3V0aW5lcy4gICovCisgIFlZU1RZUEUg
eXl2YWw7CisgIFlZTFRZUEUgeXlsb2M7CisKICNpZiBZWUVSUk9SX1ZFUkJPU0UKICAgLyogQnVm
ZmVyIGZvciBlcnJvciBtZXNzYWdlcywgYW5kIGl0cyBhbGxvY2F0ZWQgc2l6ZS4gICovCiAgIGNo
YXIgeXltc2didWZbMTI4XTsKQEAgLTE5NjksNjUgKzIwNDQsMjQgQEAgWVlMVFlQRSB5eWxsb2M7
CiAgIFlZU0laRV9UIHl5bXNnX2FsbG9jID0gc2l6ZW9mIHl5bXNnYnVmOwogI2VuZGlmCiAKLSAg
LyogVGhyZWUgc3RhY2tzIGFuZCB0aGVpciB0b29sczoKLSAgICAgYHl5c3MnOiByZWxhdGVkIHRv
IHN0YXRlcywKLSAgICAgYHl5dnMnOiByZWxhdGVkIHRvIHNlbWFudGljIHZhbHVlcywKLSAgICAg
YHl5bHMnOiByZWxhdGVkIHRvIGxvY2F0aW9ucy4KLQotICAgICBSZWZlciB0byB0aGUgc3RhY2tz
IHRocnUgc2VwYXJhdGUgcG9pbnRlcnMsIHRvIGFsbG93IHl5b3ZlcmZsb3cKLSAgICAgdG8gcmVh
bGxvY2F0ZSB0aGVtIGVsc2V3aGVyZS4gICovCi0KLSAgLyogVGhlIHN0YXRlIHN0YWNrLiAgKi8K
LSAgeXl0eXBlX2ludDE2IHl5c3NhW1lZSU5JVERFUFRIXTsKLSAgeXl0eXBlX2ludDE2ICp5eXNz
ID0geXlzc2E7Ci0gIHl5dHlwZV9pbnQxNiAqeXlzc3A7Ci0KLSAgLyogVGhlIHNlbWFudGljIHZh
bHVlIHN0YWNrLiAgKi8KLSAgWVlTVFlQRSB5eXZzYVtZWUlOSVRERVBUSF07Ci0gIFlZU1RZUEUg
Knl5dnMgPSB5eXZzYTsKLSAgWVlTVFlQRSAqeXl2c3A7Ci0KLSAgLyogVGhlIGxvY2F0aW9uIHN0
YWNrLiAgKi8KLSAgWVlMVFlQRSB5eWxzYVtZWUlOSVRERVBUSF07Ci0gIFlZTFRZUEUgKnl5bHMg
PSB5eWxzYTsKLSAgWVlMVFlQRSAqeXlsc3A7Ci0gIC8qIFRoZSBsb2NhdGlvbnMgd2hlcmUgdGhl
IGVycm9yIHN0YXJ0ZWQgYW5kIGVuZGVkLiAgKi8KLSAgWVlMVFlQRSB5eWVycm9yX3JhbmdlWzJd
OwotCiAjZGVmaW5lIFlZUE9QU1RBQ0soTikgICAoeXl2c3AgLT0gKE4pLCB5eXNzcCAtPSAoTiks
IHl5bHNwIC09IChOKSkKIAotICBZWVNJWkVfVCB5eXN0YWNrc2l6ZSA9IFlZSU5JVERFUFRIOwot
Ci0gIC8qIFRoZSB2YXJpYWJsZXMgdXNlZCB0byByZXR1cm4gc2VtYW50aWMgdmFsdWUgYW5kIGxv
Y2F0aW9uIGZyb20gdGhlCi0gICAgIGFjdGlvbiByb3V0aW5lcy4gICovCi0gIFlZU1RZUEUgeXl2
YWw7Ci0gIFlZTFRZUEUgeXlsb2M7Ci0KICAgLyogVGhlIG51bWJlciBvZiBzeW1ib2xzIG9uIHRo
ZSBSSFMgb2YgdGhlIHJlZHVjZWQgcnVsZS4KICAgICAgS2VlcCB0byB6ZXJvIHdoZW4gbm8gc3lt
Ym9sIHNob3VsZCBiZSBwb3BwZWQuICAqLwogICBpbnQgeXlsZW4gPSAwOwogCisgIHl5c3NwID0g
eXlzcyA9IHl5c3NhOworICB5eXZzcCA9IHl5dnMgPSB5eXZzYTsKKyAgeXlsc3AgPSB5eWxzID0g
eXlsc2E7CisgIHl5c3RhY2tzaXplID0gWVlJTklUREVQVEg7CisKICAgWVlEUFJJTlRGICgoc3Rk
ZXJyLCAiU3RhcnRpbmcgcGFyc2VcbiIpKTsKIAogICB5eXN0YXRlID0gMDsKICAgeXllcnJzdGF0
dXMgPSAwOwogICB5eW5lcnJzID0gMDsKLSAgeXljaGFyID0gWVlFTVBUWTsJCS8qIENhdXNlIGEg
dG9rZW4gdG8gYmUgcmVhZC4gICovCi0KLSAgLyogSW5pdGlhbGl6ZSBzdGFjayBwb2ludGVycy4K
LSAgICAgV2FzdGUgb25lIGVsZW1lbnQgb2YgdmFsdWUgYW5kIGxvY2F0aW9uIHN0YWNrCi0gICAg
IHNvIHRoYXQgdGhleSBzdGF5IG9uIHRoZSBzYW1lIGxldmVsIGFzIHRoZSBzdGF0ZSBzdGFjay4K
LSAgICAgVGhlIHdhc3RlZCBlbGVtZW50cyBhcmUgbmV2ZXIgaW5pdGlhbGl6ZWQuICAqLwotCi0g
IHl5c3NwID0geXlzczsKLSAgeXl2c3AgPSB5eXZzOwotICB5eWxzcCA9IHl5bHM7Ci0jaWYgZGVm
aW5lZCBZWUxUWVBFX0lTX1RSSVZJQUwgJiYgWVlMVFlQRV9JU19UUklWSUFMCi0gIC8qIEluaXRp
YWxpemUgdGhlIGRlZmF1bHQgbG9jYXRpb24gYmVmb3JlIHBhcnNpbmcgc3RhcnRzLiAgKi8KLSAg
eXlsbG9jLmZpcnN0X2xpbmUgICA9IHl5bGxvYy5sYXN0X2xpbmUgICA9IDE7Ci0gIHl5bGxvYy5m
aXJzdF9jb2x1bW4gPSB5eWxsb2MubGFzdF9jb2x1bW4gPSAwOwotI2VuZGlmCi0KKyAgeXljaGFy
ID0gWVlFTVBUWTsgLyogQ2F1c2UgYSB0b2tlbiB0byBiZSByZWFkLiAgKi8KKyAgeXlsc3BbMF0g
PSB5eWxsb2M7CiAgIGdvdG8geXlzZXRzdGF0ZTsKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCkBAIC0yMDY0LDYgKzIwOTgs
NyBAQCBZWUxUWVBFIHl5bGxvYzsKIAkJICAgICZ5eXZzMSwgeXlzaXplICogc2l6ZW9mICgqeXl2
c3ApLAogCQkgICAgJnl5bHMxLCB5eXNpemUgKiBzaXplb2YgKCp5eWxzcCksCiAJCSAgICAmeXlz
dGFja3NpemUpOworCiAJeXlscyA9IHl5bHMxOwogCXl5c3MgPSB5eXNzMTsKIAl5eXZzID0geXl2
czE7CkBAIC0yMDg1LDkgKzIxMjAsOSBAQCBZWUxUWVBFIHl5bGxvYzsKIAkgICh1bmlvbiB5eWFs
bG9jICopIFlZU1RBQ0tfQUxMT0MgKFlZU1RBQ0tfQllURVMgKHl5c3RhY2tzaXplKSk7CiAJaWYg
KCEgeXlwdHIpCiAJICBnb3RvIHl5ZXhoYXVzdGVkbGFiOwotCVlZU1RBQ0tfUkVMT0NBVEUgKHl5
c3MpOwotCVlZU1RBQ0tfUkVMT0NBVEUgKHl5dnMpOwotCVlZU1RBQ0tfUkVMT0NBVEUgKHl5bHMp
OworCVlZU1RBQ0tfUkVMT0NBVEUgKHl5c3NfYWxsb2MsIHl5c3MpOworCVlZU1RBQ0tfUkVMT0NB
VEUgKHl5dnNfYWxsb2MsIHl5dnMpOworCVlZU1RBQ0tfUkVMT0NBVEUgKHl5bHNfYWxsb2MsIHl5
bHMpOwogIyAgdW5kZWYgWVlTVEFDS19SRUxPQ0FURQogCWlmICh5eXNzMSAhPSB5eXNzYSkKIAkg
IFlZU1RBQ0tfRlJFRSAoeXlzczEpOwpAQCAtMjEwOCw2ICsyMTQzLDkgQEAgWVlMVFlQRSB5eWxs
b2M7CiAKICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiRW50ZXJpbmcgc3RhdGUgJWRcbiIsIHl5c3Rh
dGUpKTsKIAorICBpZiAoeXlzdGF0ZSA9PSBZWUZJTkFMKQorICAgIFlZQUNDRVBUOworCiAgIGdv
dG8geXliYWNrdXA7CiAKIC8qLS0tLS0tLS0tLS0uCkBAIC0yMTE2LDE2ICsyMTU0LDE2IEBAIFlZ
TFRZUEUgeXlsbG9jOwogeXliYWNrdXA6CiAKICAgLyogRG8gYXBwcm9wcmlhdGUgcHJvY2Vzc2lu
ZyBnaXZlbiB0aGUgY3VycmVudCBzdGF0ZS4gIFJlYWQgYQotICAgICBsb29rLWFoZWFkIHRva2Vu
IGlmIHdlIG5lZWQgb25lIGFuZCBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiAgKi8KKyAgICAgbG9v
a2FoZWFkIHRva2VuIGlmIHdlIG5lZWQgb25lIGFuZCBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiAg
Ki8KIAotICAvKiBGaXJzdCB0cnkgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aG91dCByZWZlcmVu
Y2UgdG8gbG9vay1haGVhZCB0b2tlbi4gICovCisgIC8qIEZpcnN0IHRyeSB0byBkZWNpZGUgd2hh
dCB0byBkbyB3aXRob3V0IHJlZmVyZW5jZSB0byBsb29rYWhlYWQgdG9rZW4uICAqLwogICB5eW4g
PSB5eXBhY3RbeXlzdGF0ZV07Ci0gIGlmICh5eW4gPT0gWVlQQUNUX05JTkYpCisgIGlmICh5eXBh
Y3RfdmFsdWVfaXNfZGVmYXVsdCAoeXluKSkKICAgICBnb3RvIHl5ZGVmYXVsdDsKIAotICAvKiBO
b3Qga25vd24gPT4gZ2V0IGEgbG9vay1haGVhZCB0b2tlbiBpZiBkb24ndCBhbHJlYWR5IGhhdmUg
b25lLiAgKi8KKyAgLyogTm90IGtub3duID0+IGdldCBhIGxvb2thaGVhZCB0b2tlbiBpZiBkb24n
dCBhbHJlYWR5IGhhdmUgb25lLiAgKi8KIAotICAvKiBZWUNIQVIgaXMgZWl0aGVyIFlZRU1QVFkg
b3IgWVlFT0Ygb3IgYSB2YWxpZCBsb29rLWFoZWFkIHN5bWJvbC4gICovCisgIC8qIFlZQ0hBUiBp
cyBlaXRoZXIgWVlFTVBUWSBvciBZWUVPRiBvciBhIHZhbGlkIGxvb2thaGVhZCBzeW1ib2wuICAq
LwogICBpZiAoeXljaGFyID09IFlZRU1QVFkpCiAgICAgewogICAgICAgWVlEUFJJTlRGICgoc3Rk
ZXJyLCAiUmVhZGluZyBhIHRva2VuOiAiKSk7CkBAIC0yMTUxLDI5ICsyMTg5LDI3IEBAIHl5YmFj
a3VwOgogICB5eW4gPSB5eXRhYmxlW3l5bl07CiAgIGlmICh5eW4gPD0gMCkKICAgICB7Ci0gICAg
ICBpZiAoeXluID09IDAgfHwgeXluID09IFlZVEFCTEVfTklORikKLQlnb3RvIHl5ZXJybGFiOwor
ICAgICAgaWYgKHl5dGFibGVfdmFsdWVfaXNfZXJyb3IgKHl5bikpCisgICAgICAgIGdvdG8geXll
cnJsYWI7CiAgICAgICB5eW4gPSAteXluOwogICAgICAgZ290byB5eXJlZHVjZTsKICAgICB9CiAK
LSAgaWYgKHl5biA9PSBZWUZJTkFMKQotICAgIFlZQUNDRVBUOwotCiAgIC8qIENvdW50IHRva2Vu
cyBzaGlmdGVkIHNpbmNlIGVycm9yOyBhZnRlciB0aHJlZSwgdHVybiBvZmYgZXJyb3IKICAgICAg
c3RhdHVzLiAgKi8KICAgaWYgKHl5ZXJyc3RhdHVzKQogICAgIHl5ZXJyc3RhdHVzLS07CiAKLSAg
LyogU2hpZnQgdGhlIGxvb2stYWhlYWQgdG9rZW4uICAqLworICAvKiBTaGlmdCB0aGUgbG9va2Fo
ZWFkIHRva2VuLiAgKi8KICAgWVlfU1lNQk9MX1BSSU5UICgiU2hpZnRpbmciLCB5eXRva2VuLCAm
eXlsdmFsLCAmeXlsbG9jKTsKIAotICAvKiBEaXNjYXJkIHRoZSBzaGlmdGVkIHRva2VuIHVubGVz
cyBpdCBpcyBlb2YuICAqLwotICBpZiAoeXljaGFyICE9IFlZRU9GKQotICAgIHl5Y2hhciA9IFlZ
RU1QVFk7CisgIC8qIERpc2NhcmQgdGhlIHNoaWZ0ZWQgdG9rZW4uICAqLworICB5eWNoYXIgPSBZ
WUVNUFRZOwogCiAgIHl5c3RhdGUgPSB5eW47CisgIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJ
WkVEX0JFR0lOCiAgICorK3l5dnNwID0geXlsdmFsOworICBZWV9JR05PUkVfTUFZQkVfVU5JTklU
SUFMSVpFRF9FTkQKICAgKisreXlsc3AgPSB5eWxsb2M7CiAgIGdvdG8geXluZXdzdGF0ZTsKIApA
QCAtMjI1MSwzMSArMjI4NywyMyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBl
KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5
bHNwWygxKSAtICgxKV0pKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDU6
CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAgIDt9CisgICAgfQogICAg
IGJyZWFrOwogCiAgIGNhc2UgNjoKIAogICAgIHsKLSAgICAgICAgLy8KLSAgICAgICAgLy8gSU5U
X1RZUEUgaXMgb25seSAxNi1iaXQgcGx1cyBzaWduIGJpdCBmb3IgdmVydGV4L2ZyYWdtZW50IHNo
YWRlcnMsCi0gICAgICAgIC8vIGNoZWNrIGZvciBvdmVyZmxvdyBmb3IgY29uc3RhbnRzCi0gICAg
ICAgIC8vCi0gICAgICAgIGlmIChhYnMoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5pKSA+PSAoMSA8
PCAxNikpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSldKSwg
IiBpbnRlZ2VyIGNvbnN0YW50IG92ZXJmbG93IiwgIiIpOwotICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwotICAgICAgICB9CiAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkg
PSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KCh5
eXZzcFsoMSkgLSAoMSldLmxleCkuaSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJy
YXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMSkgLSAo
MSldKSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA3OgpAQCAtMjI4NCw3
ICsyMzEyLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkg
PSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0RkNvbnN0KCh5
eXZzcFsoMSkgLSAoMSldLmxleCkuZik7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJy
YXksIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygxKSAt
ICgxKV0pKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDg6CkBAIC0yMjkz
LDM1ICsyMzIxLDM1IEBAIHl5cmVkdWNlOgogICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFy
cmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25z
dCgoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmIpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlv
bkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygx
KSAtICgxKV0pKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDk6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMikg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgMTA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAg
IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTE6CiAKICAgICB7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZEluZGV4RXhwcmVzc2lv
bigoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAt
ICg0KV0pLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSk7Ci0gICAg
O30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjoKIAogICAgIHsKICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzoK
QEAgLTI0MjAsNyArMjQ0OCw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSk7CiAgICAgICAgIH0KICAgICAgICAgLy8gZG9uJ3QgZGVsZXRlICQzLnN0cmluZywgaXQn
cyBmcm9tIHRoZSBwb29sCi0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNDoK
QEAgLTI0MzQsNyArMjQ2Miw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0KLSAgICA7
fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE1OgpAQCAtMjQ0OCw3ICsyNDc2LDcgQEAg
eXlyZWR1Y2U6CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwog
CiAgIGNhc2UgMTY6CkBAIC0yNDU3LDcgKzI0ODUsNyBAQCB5eXJlZHVjZToKICAgICAgICAgaWYg
KGNvbnRleHQtPmludGVnZXJFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAiW10iKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAg
Y2FzZSAxNzoKQEAgLTI1NTgsMTQgKzI1ODYsMTQgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICAgICAgZGVsZXRlIGZuQ2FsbDsKLSAgICA7fQorICAgIH0KICAgICBi
cmVhazsKIAogICBjYXNlIDE4OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5
eXZzcFsoMSkgLSAoMSldLmludGVybSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAg
Y2FzZSAxOToKQEAgLTI1NzQsMjEgKzI2MDIsMjEgQEAgeXlyZWR1Y2U6CiAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCh5eWxzcFsoMykgLSAoMyldKSwgIm1ldGhvZHMgYXJlIG5vdCBzdXBwb3J0ZWQi
LCAiIik7CiAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgKHl5dmFsLmludGVy
bSkgPSAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgMjA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNw
WygxKSAtICgyKV0uaW50ZXJtKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNl
IDIxOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMSkgLSAoMild
LmludGVybSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyMjoKQEAgLTI1
OTYsNyArMjYyNCw3IEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSku
ZnVuY3Rpb24gPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pOwogICAgICAgICAo
eXl2YWwuaW50ZXJtKS5pbnRlcm1Ob2RlID0gMDsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsK
IAogICBjYXNlIDIzOgpAQCAtMjYwNCw3ICsyNjMyLDcgQEAgeXlyZWR1Y2U6CiAgICAgewogICAg
ICAgICAoeXl2YWwuaW50ZXJtKS5mdW5jdGlvbiA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5m
dW5jdGlvbik7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybU5vZGUgPSAwOwotICAgIDt9
CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjQ6CkBAIC0yNjE0LDcgKzI2NDIsNyBAQCB5
eXJlZHVjZToKICAgICAgICAgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+YWRk
UGFyYW1ldGVyKHBhcmFtKTsKICAgICAgICAgKHl5dmFsLmludGVybSkuZnVuY3Rpb24gPSAoeXl2
c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pOwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5p
bnRlcm1Ob2RlID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0g
ICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyNToKQEAgLTI2MjQsMTQgKzI2NTIs
MTQgQEAgeXlyZWR1Y2U6CiAgICAgICAgICh5eXZzcFsoMSkgLSAoMyldLmludGVybSkuZnVuY3Rp
b24tPmFkZFBhcmFtZXRlcihwYXJhbSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmZ1bmN0aW9u
ID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5mdW5jdGlvbjsKICAgICAgICAgKHl5dmFsLmlu
dGVybSkuaW50ZXJtTm9kZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5
eXZzcFsoMSkgLSAoMyldLmludGVybSkuaW50ZXJtTm9kZSwgKHl5dnNwWygzKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSk7Ci0gICAgO30KKyAgICB9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyNjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVy
bS5mdW5jdGlvbikgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pOwotICAgIDt9
CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjc6CkBAIC0yNjkwLDcgKzI3MTgsNyBAQCB5
eXJlZHVjZToKICAgICAgICAgVFR5cGUgdHlwZSgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlw
ZSkpOwogICAgICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0gbmV3IFRGdW5jdGlvbigmdGVtcFN0
cmluZywgdHlwZSwgb3ApOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1bmN0aW9uKSA9IGZ1bmN0
aW9uOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjg6CkBAIC0yNzAxLDE0
ICsyNzI5LDE0IEBAIHl5cmVkdWNlOgogICAgICAgICBUVHlwZSB0eXBlKEVidFZvaWQsIEVicFVu
ZGVmaW5lZCk7CiAgICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24gPSBuZXcgVEZ1bmN0aW9uKCh5
eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nLCB0eXBlKTsKICAgICAgICAgKHl5dmFsLmludGVy
bS5mdW5jdGlvbikgPSBmdW5jdGlvbjsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBj
YXNlIDI5OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAogICBjYXNlIDMwOgpAQCAtMjcyMiw3ICsyNzUwLDcgQEAgeXlyZWR1
Y2U6CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNh
c2UgMzE6CkBAIC0yNzM2LDcgKzI3NjQsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAzMjoKQEAgLTI3NTcsMjcgKzI3
ODUsMjcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAg
Y2FzZSAzMzoKIAotICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BOdWxsOyA7fQorICAgIHsg
KHl5dmFsLmludGVybSkub3AgPSBFT3BOdWxsOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAzNDoK
IAotICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BOZWdhdGl2ZTsgO30KKyAgICB7ICh5eXZh
bC5pbnRlcm0pLm9wID0gRU9wTmVnYXRpdmU7IH0KICAgICBicmVhazsKIAogICBjYXNlIDM1Ogog
Ci0gICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcExvZ2ljYWxOb3Q7IDt9CisgICAgeyAoeXl2
YWwuaW50ZXJtKS5vcCA9IEVPcExvZ2ljYWxOb3Q7IH0KICAgICBicmVhazsKIAogICBjYXNlIDM2
OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
OyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAzNzoKQEAgLTI3ODksNyArMjgxNyw3IEBAIHl5cmVk
dWNlOgogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBj
YXNlIDM4OgpAQCAtMjgwMSwxMiArMjgyOSwxMiBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAg
ICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAzOToKIAotICAgIHsgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgNDA6CkBAIC0yODE4LDcgKzI4NDYsNyBAQCB5eXJlZHVjZToKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwog
ICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA0MToKQEAgLTI4
MzAsMTcgKzI4NTgsMTcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNDI6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
OyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDQz
OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
OyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA0NDoKQEAgLTI4NTQsNyArMjg4Miw3IEBAIHl5cmVk
dWNlOgogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKICAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9Ci0gICAgO30KKyAg
ICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA0NToKQEAgLTI4NjgsNyArMjg5Niw3IEBAIHl5cmVk
dWNlOgogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKICAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9Ci0gICAgO30KKyAg
ICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA0NjoKQEAgLTI4ODIsNyArMjkxMCw3IEBAIHl5cmVk
dWNlOgogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKICAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9Ci0gICAgO30KKyAg
ICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA0NzoKQEAgLTI4OTYsMTIgKzI5MjQsMTIgQEAgeXly
ZWR1Y2U6CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwogICAgICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZp
bmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KLSAgICA7fQor
ICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDQ4OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkg
LSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA0
OToKQEAgLTI5MTUsNyArMjk0Myw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgdW5pb25BcnJh
eS0+c2V0QkNvbnN0KGZhbHNlKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJy
YXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0g
KDMpXSkpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA1
MDoKQEAgLTI5MjksMjcgKzI5NTcsMjcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICB1bmlvbkFy
cmF5LT5zZXRCQ29uc3QoZmFsc2UpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25B
cnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikg
LSAoMyldKSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNl
IDUxOgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA1MjoKIAotICAgIHsgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2Ug
NTM6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkg
LSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDU0OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkg
LSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA1
NToKQEAgLTI5NjMsMTIgKzI5OTEsMTIgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICB1bmlvbkFy
cmF5LT5zZXRCQ29uc3QoZmFsc2UpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25B
cnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikg
LSAoMyldKSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNl
IDU2OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA1NzoKQEAgLTI5ODIsMTIgKzMwMTAsMTIgQEAg
eXlyZWR1Y2U6CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwogICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5k
ZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KLSAgICA7
fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDU4OgogCi0gICAgeyAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFso
MSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSA1OToKQEAgLTMwMDEsMTIgKzMwMjksMTIgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICB1bmlv
bkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5p
b25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFso
MikgLSAoMyldKSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBj
YXNlIDYwOgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA2MToKQEAgLTMwMjQsMTIgKzMwNTIsMTIg
QEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDUpIC0gKDUpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgNjI6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDYzOgpAQCAtMzA0MywzOSAr
MzA3MSwzOSBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSA2NDoKIAotICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BB
c3NpZ247IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcEFzc2lnbjsgfQogICAgIGJy
ZWFrOwogCiAgIGNhc2UgNjU6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wTXVsQXNz
aWduOyA7fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BNdWxBc3NpZ247IH0KICAgICBi
cmVhazsKIAogICBjYXNlIDY2OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcERpdkFz
c2lnbjsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wRGl2QXNzaWduOyB9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSA2NzoKIAotICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BBZGRB
c3NpZ247IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcEFkZEFzc2lnbjsgfQogICAg
IGJyZWFrOwogCiAgIGNhc2UgNjg6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wU3Vi
QXNzaWduOyA7fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BTdWJBc3NpZ247IH0KICAg
ICBicmVhazsKIAogICBjYXNlIDY5OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDcwOgpAQCAtMzA4Nyw3ICsz
MTE1LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDMpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAg
IGJyZWFrOwogCiAgIGNhc2UgNzE6CkBAIC0zMDk2LDcgKzMxMjQsNyBAQCB5eXJlZHVjZToKICAg
ICAgICAgaWYgKGNvbnRleHQtPmNvbnN0RXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAg
IGNhc2UgNzI6CkBAIC0zMTI3LDcgKzMxNTUsNyBAQCB5eXJlZHVjZToKICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1Ob2RlKSA9IHByb3RvdHlwZTsKIAogICAgICAgICBjb250ZXh0LT5zeW1i
b2xUYWJsZS5wb3AoKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDczOgpA
QCAtMzEzNiw3ICszMTY0LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0g
KDIpXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSkKICAgICAgICAgICAgICh5eXZzcFsoMSkgLSAo
MildLmludGVybSkuaW50ZXJtQWdncmVnYXRlLT5zZXRPcChFT3BEZWNsYXJhdGlvbik7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0p
LmludGVybUFnZ3JlZ2F0ZTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDc0
OgpAQCAtMzE1MSw3ICszMTc5LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9
IDA7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA3NToKQEAgLTMyMDcsMjEg
KzMyMzUsMjEgQEAgeXlyZWR1Y2U6CiAgICAgICAgIC8vIFdlJ3JlIGF0IHRoZSBpbm5lciBzY29w
ZSBsZXZlbCBvZiB0aGUgZnVuY3Rpb24ncyBhcmd1bWVudHMgYW5kIGJvZHkgc3RhdGVtZW50Lgog
ICAgICAgICAvLyBBZGQgdGhlIGZ1bmN0aW9uIHByb3RvdHlwZSB0byB0aGUgc3Vycm91bmRpbmcg
c2NvcGUgaW5zdGVhZC4KICAgICAgICAgY29udGV4dC0+c3ltYm9sVGFibGUuZ2V0T3V0ZXJMZXZl
bCgpLT5pbnNlcnQoKih5eXZhbC5pbnRlcm0pLmZ1bmN0aW9uKTsKLSAgICA7fQorICAgIH0KICAg
ICBicmVhazsKIAogICBjYXNlIDc2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1
bmN0aW9uKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5mdW5jdGlvbik7Ci0gICAgO30KKyAg
ICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA3NzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmlu
dGVybS5mdW5jdGlvbikgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uZnVuY3Rpb24pOwotICAg
IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNzg6CkBAIC0zMjMzLDcgKzMyNjEsNyBA
QCB5eXJlZHVjZToKICAgICAgICAgICAgICh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5jdGlv
biktPmFkZFBhcmFtZXRlcigoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0pLnBhcmFtKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgZGVsZXRlICh5eXZzcFsoMikgLSAoMildLmludGVybSkucGFy
YW0udHlwZTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDc5OgpAQCAtMzI1
NSw3ICszMjgzLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1bmN0
aW9uKSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5mdW5jdGlvbik7CiAgICAgICAgICAgICAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uZnVuY3Rpb24pLT5hZGRQYXJhbWV0ZXIoKHl5dnNwWygz
KSAtICgzKV0uaW50ZXJtKS5wYXJhbSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBi
cmVhazsKIAogICBjYXNlIDgwOgpAQCAtMzI3Niw3ICszMzA0LDcgQEAgeXlyZWR1Y2U6CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gZnVuY3Rpb247CiAgICAgICAgIAogICAgICAg
ICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSA4MToKQEAgLTMyOTAsNyArMzMxOCw3IEBAIHl5cmVkdWNlOgogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyh5eXZz
cFsoMikgLSAoMildLmxleCkuc3RyaW5nLCBuZXcgVFR5cGUoKHl5dnNwWygxKSAtICgyKV0uaW50
ZXJtLnR5cGUpKX07CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnBhcmFtID0gcGFyYW07Ci0gICAg
O30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA4MjoKQEAgLTMzMTEsNyArMzMzOSw3IEBA
IHl5cmVkdWNlOgogICAgICAgICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZSgoeXl2c3BbKDEpIC0g
KDUpXS5pbnRlcm0udHlwZSkpOwogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyAoeXl2c3Bb
KDIpIC0gKDUpXS5sZXgpLnN0cmluZywgdHlwZSB9OwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5w
YXJhbSA9IHBhcmFtOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgODM6CkBA
IC0zMzIwLDcgKzMzNDgsNyBAQCB5eXJlZHVjZToKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAo
eXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0pOwogICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJv
ckNoZWNrKCh5eWxzcFsoMykgLSAoMyldKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUp
LnF1YWxpZmllciwgKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5p
bnRlcm0pLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAg
IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgODQ6CkBAIC0zMzMxLDcgKzMzNTksNyBA
QCB5eXJlZHVjZToKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgaWYg
KGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksIEV2cVRlbXBvcmFy
eSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBh
cmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgODU6CkBAIC0zMzQwLDcgKzMzNjgsNyBAQCB5eXJlZHVj
ZToKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0pOwog
ICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoMyldKSwg
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciwgKHl5dnNwWygyKSAtICgz
KV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUpKQogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAg
IGNhc2UgODY6CkBAIC0zMzUxLDM1ICszMzc5LDM1IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNr
KCh5eWxzcFsoMikgLSAoMildKSwgRXZxVGVtcG9yYXJ5LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA4
NzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxSW47Ci0g
ICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA4ODoKIAogICAgIHsKICAgICAgICAg
KHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxSW47Ci0gICAgO30KKyAgICB9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSA4OToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZp
ZXIpID0gRXZxT3V0OwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgOTA6CiAK
ICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cUluT3V0OwotICAg
IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgOTE6CkBAIC0zMzg3LDE0ICszNDE1LDE0
IEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHsgMCwgbmV3
IFRUeXBlKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKSkgfTsKICAgICAgICAgKHl5dmFs
LmludGVybSkucGFyYW0gPSBwYXJhbTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBj
YXNlIDkyOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMSkgLSAo
MSldLmludGVybSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA5MzoKQEAg
LTM0MjAsNyArMzQ0OCw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICBpZiAoc3ltYm9sICYmIHZhcmlhYmxlKQogICAgICAgICAgICAgc3ltYm9s
LT5zZXRJZCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSA5NDoKQEAgLTM0NDIsNyArMzQ3MCw3IEBAIHl5cmVkdWNlOgogICAgICAg
ICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjaygoeXlsc3BbKDQpIC0gKDUpXSksICoo
eXl2c3BbKDMpIC0gKDUpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50
eXBlLCB2YXJpYWJsZSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA5NToKQEAgLTM0NzAs
NyArMzQ5OCw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgdHlwZS5zZXRBcnJheVNpemUoc2l6
ZSk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLmlu
dGVybU5vZGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUgPyB2YXJp
YWJsZS0+Z2V0VW5pcXVlSWQoKSA6IDAsICooeXl2c3BbKDMpIC0gKDYpXS5sZXgpLnN0cmluZywg
dHlwZSwgKHl5bHNwWygzKSAtICg2KV0pKSwgKHl5bHNwWygzKSAtICg2KV0pKTsKICAgICAgICAg
fQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgOTY6CkBAIC0zNDk0LDcgKzM1
MjIsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IDA7CiAgICAgICAgIH0KLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDk3OgpAQCAtMzUwMiw3ICszNTMwLDcg
QEAgeXlyZWR1Y2U6CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKS50eXBlID0gKHl5dnNw
WygxKSAtICgxKV0uaW50ZXJtLnR5cGUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1B
Z2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0udHlwZSkpLCAoeXlsc3BbKDEpIC0gKDEpXSkpLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwotICAg
IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgOTg6CkBAIC0zNTI0LDcgKzM1NTIsNyBA
QCB5eXJlZHVjZToKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgaWYg
KHZhcmlhYmxlICYmIHN5bWJvbCkKICAgICAgICAgICAgIHN5bWJvbC0+c2V0SWQodmFyaWFibGUt
PmdldFVuaXF1ZUlkKCkpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgOTk6
CkBAIC0zNTM2LDcgKzM1NjQsNyBAQCB5eXJlZHVjZToKICAgICAgICAgVEludGVybVN5bWJvbCog
c3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygyKSAt
ICg0KV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSks
ICh5eWxzcFsoMikgLSAoNCldKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3Jl
Z2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgKHl5bHNw
WygyKSAtICg0KV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybSkudHlwZSA9ICh5eXZzcFsoMSkg
LSAoNCldLmludGVybS50eXBlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNl
IDEwMDoKQEAgLTM1NzIsNyArMzYwMCw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgaWYgKHZh
cmlhYmxlICYmIHN5bWJvbCkKICAgICAgICAgICAgICAgICBzeW1ib2wtPnNldElkKHZhcmlhYmxl
LT5nZXRVbmlxdWVJZCgpKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwog
CiAgIGNhc2UgMTAxOgpAQCAtMzU5Niw3ICszNjI0LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1B
Z2dyZWdhdGUgPSAwOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAg
Y2FzZSAxMDI6CkBAIC0zNjE4LDcgKzM2NDYsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIFRJ
bnRlcm1TeW1ib2wgKnN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwg
Kih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2YWwuaW50ZXJtKS50eXBl
KSwgKHl5bHNwWygyKSAtICgyKV0pKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVy
bUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwg
KHl5bHNwWygyKSAtICgyKV0pKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgMTAzOgpAQCAtMzYzMSw3ICszNjU5LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0udHlwZSkuc2V0QXJyYXkoZmFsc2UpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAxMDQ6CkBAIC0zNjU1LDE0ICszNjgzLDE0IEBAIHl5cmVkdWNl
OgogICAgICAgICB9CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbKDIpIC0g
KDIpXS5pbnRlcm0udHlwZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkucXVhbGlmaWVy
ID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllcjsKLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAogICBjYXNlIDEwNToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFDb25zdCwgKHl5bHNwWygxKSAtICgxKV0p
KTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEwNjoKQEAgLTM2NzIsNyAr
MzcwMCw3IEBAIHl5cmVkdWNlOgogICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVj
aygoeXlsc3BbKDEpIC0gKDEpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSwgImF0dHJpYnV0ZSIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cUF0dHJpYnV0ZSwgKHl5
bHNwWygxKSAtICgxKV0pKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEw
NzoKQEAgLTM2ODQsNyArMzcxMiw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5nT3V0LCAoeXlsc3BbKDEpIC0g
KDEpXSkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNl
dEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdJbiwgKHl5bHNwWygxKSAtICgxKV0pKTsKLSAgICA7
fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEwODoKQEAgLTM2OTYsNyArMzcyNCw3IEBA
IHl5cmVkdWNlOgogICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRW
b2lkLCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAoeXlsc3BbKDEpIC0gKDIpXSkpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQs
IEV2cUludmFyaWFudFZhcnlpbmdJbiwgKHl5bHNwWygxKSAtICgyKV0pKTsKLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAogICBjYXNlIDEwOToKQEAgLTM3MDUsNyArMzczMyw3IEBAIHl5cmVk
dWNlOgogICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0g
KDEpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgInVuaWZvcm0iKSkK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFVbmlmb3JtLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTEwOgpAQCAtMzcxOSw3ICszNzQ3
LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSAxMTE6CkBAIC0zNzI3LDM1ICszNzU1LDM1IEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlKTsKICAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5wcmVjaXNpb24gPSAoeXl2c3BbKDEpIC0gKDIpXS5p
bnRlcm0ucHJlY2lzaW9uKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEx
MjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5wcmVjaXNpb24pID0gRWJwSGlnaDsK
LSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDExMzoKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsLmludGVybS5wcmVjaXNpb24pID0gRWJwTWVkaXVtOwotICAgIDt9CisgICAgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgMTE0OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJt
LnByZWNpc2lvbikgPSBFYnBMb3c7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSAxMTU6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0udHlwZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSAxMTY6CkBAIC0zNzcxLDcgKzM3OTksNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFy
cmF5KHRydWUsIHNpemUpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAxMTc6CkBAIC0zNzc5LDcgKzM4MDcsNyBAQCB5eXJlZHVjZToKICAgICB7CiAgICAg
ICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRWb2lkLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTE4OgpAQCAtMzc4Nyw3ICszODE1LDcgQEAgeXly
ZWR1Y2U6CiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xU
YWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eWxzcFsoMSkg
LSAoMSldKSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMTk6CkBAIC0z
Nzk1LDcgKzM4MjMsNyBAQCB5eXJlZHVjZToKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVh
bCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2
cVRlbXBvcmFyeTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQs
IHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAxMjA6CkBAIC0zODAzLDcgKzM4MzEsNyBAQCB5eXJlZHVjZToKICAgICB7CiAgICAg
ICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTIxOgpAQCAtMzgxMiw3ICszODQwLDcgQEAgeXly
ZWR1Y2U6CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0p
KTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMik7Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjI6CkBAIC0zODIxLDcgKzM4NDksNyBAQCB5
eXJlZHVjZToKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEp
XSkpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzKTsKLSAgICA7
fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEyMzoKQEAgLTM4MzAsNyArMzg1OCw3IEBA
IHl5cmVkdWNlOgogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJs
ZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eWxzcFsoMSkgLSAo
MSldKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDQpOwotICAg
IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTI0OgpAQCAtMzgzOSw3ICszODY3LDcg
QEAgeXlyZWR1Y2U6CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRh
YmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3BbKDEpIC0g
KDEpXSkpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEyNToKQEAgLTM4NDgsNyArMzg3Niw3
IEBAIHl5cmVkdWNlOgogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xU
YWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5bHNwWygxKSAt
ICgxKV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMyk7Ci0g
ICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjY6CkBAIC0zODU3LDcgKzM4ODUs
NyBAQCB5eXJlZHVjZToKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9s
VGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICh5eWxzcFsoMSkg
LSAoMSldKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDQpOwot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTI3OgpAQCAtMzg2Niw3ICszODk0
LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eWxzcFsoMSkg
LSAoMSldKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDIpOwot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTI4OgpAQCAtMzg3NSw3ICszOTAz
LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eWxzcFsoMSkg
LSAoMSldKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDMpOwot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTI5OgpAQCAtMzg4NCw3ICszOTEy
LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eWxzcFsoMSkg
LSAoMSldKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDQpOwot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTMwOgpAQCAtMzg5Myw3ICszOTIx
LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygx
KSAtICgxKV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMiwg
dHJ1ZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzE6CkBAIC0zOTAy
LDcgKzM5MzAsNyBAQCB5eXJlZHVjZToKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4
dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5
OwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAo
eXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3Jl
Z2F0ZSgzLCB0cnVlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEzMjoK
QEAgLTM5MTEsNyArMzkzOSw3IEBAIHl5cmVkdWNlOgogICAgICAgICBUUXVhbGlmaWVyIHF1YWwg
PSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFU
ZW1wb3Jhcnk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQs
IHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSku
c2V0QWdncmVnYXRlKDQsIHRydWUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNh
c2UgMTMzOgpAQCAtMzkxOSw3ICszOTQ3LDcgQEAgeXlyZWR1Y2U6CiAgICAgewogICAgICAgICBU
UXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBF
dnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0
QmFzaWMoRWJ0U2FtcGxlcjJELCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTM0OgpAQCAtMzkyNyw3ICszOTU1LDcgQEAgeXly
ZWR1Y2U6CiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xU
YWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U2FtcGxlckN1YmUsIHF1YWwsICh5eWxz
cFsoMSkgLSAoMSldKSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzU6
CkBAIC0zOTM5LDcgKzM5NjcsNyBAQCB5eXJlZHVjZToKICAgICAgICAgfQogICAgICAgICBUUXVh
bGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFH
bG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFz
aWMoRWJ0U2FtcGxlckV4dGVybmFsT0VTLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwotICAg
IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTM2OgpAQCAtMzk1MSw3ICszOTc5LDcg
QEAgeXlyZWR1Y2U6CiAgICAgICAgIH0KICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4
dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5
OwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXIyRFJlY3Qs
IHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAxMzc6CkBAIC0zOTU5LDcgKzM5ODcsNyBAQCB5eXJlZHVjZToKICAgICB7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSk7
CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkucXVhbGlmaWVyID0gY29udGV4dC0+c3ltYm9s
VGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgIDt9
CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTM4OgpAQCAtMzk3MywxMiArNDAwMSwxMiBA
QCB5eXJlZHVjZToKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFN0cnVjdCwgcXVhbCwgKHl5bHNwWygxKSAt
ICgxKV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS51c2VyRGVmID0gJnN0cnVjdHVy
ZTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEzOToKIAotICAgIHsgaWYg
KGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oKHl5bHNwWygyKSAtICgzKV0pLCAqKHl5
dnNwWygyKSAtICgzKV0ubGV4KS5zdHJpbmcpKSBjb250ZXh0LT5yZWNvdmVyKCk7IDt9CisgICAg
eyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbigoeXlsc3BbKDIpIC0gKDMpXSks
ICooeXl2c3BbKDIpIC0gKDMpXS5sZXgpLnN0cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgMTQwOgpAQCAtMzk5NiwxMiArNDAyNCwxMiBAQCB5eXJlZHVj
ZToKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTdHJ1Y3QsIEV2cVRl
bXBvcmFyeSwgKHl5bHNwWygxKSAtICg2KV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS51c2VyRGVmID0gc3RydWN0dXJlOwogICAgICAgICBjb250ZXh0LT5leGl0U3RydWN0RGVjbGFy
YXRpb24oKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE0MToKIAotICAg
IHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oKHl5bHNwWygyKSAtICgyKV0p
LCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcpKSBjb250ZXh0LT5yZWNvdmVyKCk7IDt9
CisgICAgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbigoeXlsc3BbKDIpIC0g
KDIpXSksICooeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZykpIGNvbnRleHQtPnJlY292ZXIo
KTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTQyOgpAQCAtNDAxMSwxNCArNDAzOSwxNCBAQCB5
eXJlZHVjZToKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTdHJ1Y3Qs
IEV2cVRlbXBvcmFyeSwgKHl5bHNwWygxKSAtICg1KV0pKTsKICAgICAgICAgKHl5dmFsLmludGVy
bS50eXBlKS51c2VyRGVmID0gc3RydWN0dXJlOwogICAgICAgICBjb250ZXh0LT5leGl0U3RydWN0
RGVjbGFyYXRpb24oKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE0MzoK
IAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5maWVsZExpc3QpID0gKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLmZpZWxkTGlzdCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAg
Y2FzZSAxNDQ6CkBAIC00MDM1LDcgKzQwNjMsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KS0+cHVzaF9iYWNrKGZpZWxkKTsK
ICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTQ1OgpAQCAt
NDA2OSw3ICs0MDk3LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBpZiAoY29udGV4dC0+c3Ry
dWN0TmVzdGluZ0Vycm9yQ2hlY2soKHl5bHNwWygxKSAtICgzKV0pLCAqKCooeXl2YWwuaW50ZXJt
LmZpZWxkTGlzdCkpW2ldKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE0NjoKQEAgLTQw
NzcsMTQgKzQxMDUsMTQgQEAgeXlyZWR1Y2U6CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJt
LmZpZWxkTGlzdCkgPSBOZXdQb29sVEZpZWxkTGlzdCgpOwogICAgICAgICAoeXl2YWwuaW50ZXJt
LmZpZWxkTGlzdCktPnB1c2hfYmFjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uZmllbGQpKTsK
LSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE0NzoKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsLmludGVybS5maWVsZExpc3QpLT5wdXNoX2JhY2soKHl5dnNwWygzKSAtICgzKV0u
aW50ZXJtLmZpZWxkKSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNDg6
CkBAIC00MDk1LDcgKzQxMjMsNyBAQCB5eXJlZHVjZToKIAogICAgICAgICBUVHlwZSogdHlwZSA9
IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwogICAgICAgICAoeXl2YWwuaW50ZXJt
LmZpZWxkKSA9IG5ldyBURmllbGQodHlwZSwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zdHJpbmcp
OwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTQ5OgpAQCAtNDExMSw2NyAr
NDEzOSw2NyBAQCB5eXJlZHVjZToKICAgICAgICAgdHlwZS0+c2V0QXJyYXlTaXplKHNpemUpOwog
CiAgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGQpID0gbmV3IFRGaWVsZCh0eXBlLCAoeXl2c3Bb
KDEpIC0gKDQpXS5sZXgpLnN0cmluZyk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAg
Y2FzZSAxNTA6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1MToKIAotICAgIHsgKHl5dmFsLmlu
dGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsg
O30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1MjoKIAotICAgIHsg
KHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRl
cm1BZ2dyZWdhdGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpOyB9CiAgICAgYnJlYWs7CiAKICAg
Y2FzZSAxNTM6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVy
bU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyB9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSAxNTQ6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50
ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyB9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNTU6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJt
Tm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CisgICAgeyAo
eXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVy
bU5vZGUpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNTY6CiAKLSAgICB7ICh5eXZhbC5pbnRl
cm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9
CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLmludGVybU5vZGUpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNTc6CiAKLSAgICB7ICh5
eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJt
Tm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNTg6CiAK
LSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0uaW50ZXJtTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyB9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSAxNTk6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSA9IDA7IDt9Cisg
ICAgeyAoeXl2YWwuaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkgPSAwOyB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAxNjA6CiAKLSAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgO30KKyAg
ICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2Ug
MTYxOgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgO30KKyAgICB7IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLnBvcCgpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNjI6CkBAIC00
MTgyLDQ0ICs0MjEwLDQ0IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgKHl5dnNwWygzKSAtICg1
KV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldExpbmUoKHl5bG9jKSk7CiAgICAgICAgIH0K
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpID0gKHl5dnNwWygzKSAtICg1
KV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAxNjM6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmlu
dGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyB9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSAxNjQ6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkg
PSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CisgICAgeyAoeXl2YWwu
aW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUp
OyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNjU6CiAKLSAgICB7IGNvbnRleHQtPnN5bWJvbFRh
YmxlLnB1c2goKTsgO30KKyAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgfQogICAg
IGJyZWFrOwogCiAgIGNhc2UgMTY2OgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3Ao
KTsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS5p
bnRlcm1Ob2RlKTsgO30KKyAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyAoeXl2YWwu
aW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybU5vZGUp
OyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNjc6CiAKLSAgICB7IGNvbnRleHQtPnN5bWJvbFRh
YmxlLnB1c2goKTsgO30KKyAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgfQogICAg
IGJyZWFrOwogCiAgIGNhc2UgMTY4OgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3Ao
KTsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS5p
bnRlcm1Ob2RlKTsgO30KKyAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyAoeXl2YWwu
aW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybU5vZGUp
OyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNjk6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSAwOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNh
c2UgMTcwOgpAQCAtNDIzMCwzMSArNDI1OCwzMSBAQCB5eXJlZHVjZToKICAgICAgICAgICAgICh5
eXZzcFsoMikgLSAoMyldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpLT5zZXRMaW5lKCh5eWxvYykp
OwogICAgICAgICB9CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3Bb
KDIpIC0gKDMpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKTsKLSAgICA7fQorICAgIH0KICAgICBi
cmVhazsKIAogICBjYXNlIDE3MToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1BZ2dyZWdhdGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoKHl5dnNw
WygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXlsb2MpKTsKLSAgICA7fQorICAgIH0K
ICAgICBicmVhazsKIAogICBjYXNlIDE3MjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1BZ2dyZWdhdGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUo
KHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSksICh5eXZzcFsoMikgLSAo
MildLmludGVybS5pbnRlcm1Ob2RlKSwgKHl5bG9jKSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSAxNzM6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAw
OyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IDA7IH0KICAgICBicmVhazsK
IAogICBjYXNlIDE3NDoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IHN0YXRp
Y19jYXN0PFRJbnRlcm1Ob2RlKj4oKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IHN0YXRpY19jYXN0
PFRJbnRlcm1Ob2RlKj4oKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkp
OyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNzU6CkBAIC00MjYzLDcgKzQyOTEsNyBAQCB5eXJl
ZHVjZToKICAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAo
NSldKSwgKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigoeXl2c3BbKDMpIC0gKDUp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLm5vZGVQ
YWlyKSwgKHl5bHNwWygxKSAtICg1KV0pKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAog
ICBjYXNlIDE3NjoKQEAgLTQyNzEsNyArNDI5OSw3IEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAg
ICAgKHl5dmFsLmludGVybS5ub2RlUGFpcikubm9kZTEgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtTm9kZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUyID0g
KHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybU5vZGUpOwotICAgIDt9CisgICAgfQogICAg
IGJyZWFrOwogCiAgIGNhc2UgMTc3OgpAQCAtNDI3OSw3ICs0MzA3LDcgQEAgeXlyZWR1Y2U6CiAg
ICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2RlMSA9ICh5eXZzcFsoMSkg
LSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsKICAgICAgICAgKHl5dmFsLmludGVybS5ub2RlUGFp
cikubm9kZTIgPSAwOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTc4OgpA
QCAtNDI4OCw3ICs0MzE2LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
OwogICAgICAgICBpZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldExpbmUoKSwgKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTc5OgpAQCAtNDMwNiwxMiArNDMz
NCwxMiBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IDA7CiAgICAgICAgIH0KLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE4MDoKIAotICAgIHsgY29udGV4dC0+
c3ltYm9sVGFibGUucHVzaCgpOyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IDt9CisgICAg
eyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7ICsrY29udGV4dC0+bG9vcE5lc3RpbmdMZXZl
bDsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTgxOgpAQCAtNDMyMCwxMiArNDM0OCwxMiBAQCB5
eXJlZHVjZToKICAgICAgICAgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChF
TG9vcFdoaWxlLCAwLCAoeXl2c3BbKDQpIC0gKDYpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
MCwgKHl5dnNwWyg2KSAtICg2KV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXlsc3BbKDEpIC0gKDYp
XSkpOwogICAgICAgICAtLWNvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7Ci0gICAgO30KKyAgICB9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxODI6CiAKLSAgICB7ICsrY29udGV4dC0+bG9vcE5lc3Rp
bmdMZXZlbDsgO30KKyAgICB7ICsrY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgfQogICAgIGJy
ZWFrOwogCiAgIGNhc2UgMTgzOgpAQCAtNDMzNiwxMiArNDM2NCwxMiBAQCB5eXJlZHVjZToKIAog
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZExvb3AoRUxvb3BEb1doaWxlLCAwLCAoeXl2c3BbKDYpIC0gKDgpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgMCwgKHl5dnNwWygzKSAtICg4KV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXls
c3BbKDQpIC0gKDgpXSkpOwogICAgICAgICAtLWNvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7Ci0g
ICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxODQ6CiAKLSAgICB7IGNvbnRleHQt
PnN5bWJvbFRhYmxlLnB1c2goKTsgKytjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsOyA7fQorICAg
IHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2
ZWw7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE4NToKQEAgLTQzNTAsMzUgKzQzNzgsMzUgQEAg
eXlyZWR1Y2U6CiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOwogICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZExvb3Ao
RUxvb3BGb3IsICh5eXZzcFsoNCkgLSAoNyldLmludGVybS5pbnRlcm1Ob2RlKSwgcmVpbnRlcnBy
ZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigoeXl2c3BbKDUpIC0gKDcpXS5pbnRlcm0ubm9kZVBhaXIp
Lm5vZGUxKSwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigoeXl2c3BbKDUpIC0gKDcp
XS5pbnRlcm0ubm9kZVBhaXIpLm5vZGUyKSwgKHl5dnNwWyg3KSAtICg3KV0uaW50ZXJtLmludGVy
bU5vZGUpLCAoeXlsc3BbKDEpIC0gKDcpXSkpOwogICAgICAgICAtLWNvbnRleHQtPmxvb3BOZXN0
aW5nTGV2ZWw7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxODY6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0uaW50ZXJtTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSAxODc6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSAxODg6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTg5OgogCiAgICAgewogICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAwOwotICAgIDt9CisgICAgfQogICAg
IGJyZWFrOwogCiAgIGNhc2UgMTkwOgpAQCAtNDM4Niw3ICs0NDE0LDcgQEAgeXlyZWR1Y2U6CiAg
ICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2RlMSA9ICh5eXZzcFsoMSkg
LSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLm5v
ZGVQYWlyKS5ub2RlMiA9IDA7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAx
OTE6CkBAIC00Mzk0LDcgKzQ0MjIsNyBAQCB5eXJlZHVjZToKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUyID0gKHl5
dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAxOTI6CkBAIC00NDA1LDcgKzQ0MzMsNyBAQCB5eXJlZHVjZToK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChF
T3BDb250aW51ZSwgKHl5bHNwWygxKSAtICgyKV0pKTsKLSAgICA7fQorICAgIH0KICAgICBicmVh
azsKIAogICBjYXNlIDE5MzoKQEAgLTQ0MTYsNyArNDQ0NCw3IEBAIHl5cmVkdWNlOgogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcEJyZWFr
LCAoeXlsc3BbKDEpIC0gKDIpXSkpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNh
c2UgMTk0OgpAQCAtNDQyNyw3ICs0NDU1LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDIpXSksICJub24tdm9pZCBmdW5jdGlvbiBtdXN0IHJl
dHVybiBhIHZhbHVlIiwgInJldHVybiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxOTU6CkBA
IC00NDQyLDcgKzQ0NzAsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KCh5eWxzcFsoMSkgLSAoMyldKSwgImZ1bmN0aW9uIHJldHVybiBpcyBub3QgbWF0Y2hpbmcgdHlw
ZToiLCAicmV0dXJuIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
IH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE5NjoKQEAgLTQ0NTAsNyAr
NDQ3OCw3IEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAgICAgRlJBR19PTkxZKCJkaXNjYXJkIiwg
KHl5bHNwWygxKSAtICgyKV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wS2lsbCwgKHl5bHNwWygxKSAtICgy
KV0pKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE5NzoKQEAgLTQ0NTgs
NyArNDQ4Niw3IEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsKICAgICAgICAg
Y29udGV4dC0+dHJlZVJvb3QgPSAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpOwotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTk4OgpAQCAtNDQ2NiwyMSArNDQ5NCwyMSBAQCB5
eXJlZHVjZToKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0u
aW50ZXJtTm9kZSksICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1Ob2RlKSwgKHl5bG9j
KSk7CiAgICAgICAgIGNvbnRleHQtPnRyZWVSb290ID0gKHl5dmFsLmludGVybS5pbnRlcm1Ob2Rl
KTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE5OToKIAogICAgIHsKICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVy
bS5pbnRlcm1Ob2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDIwMDoK
IAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkg
LSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAog
ICBjYXNlIDIwMToKQEAgLTQ1NzAsNyArNDU5OCw3IEBAIHl5cmVkdWNlOgogICAgICAgICBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IocGFyYW1Ob2RlcywgRU9wUGFy
YW1ldGVycywgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAgKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBwYXJhbU5vZGVzOwogICAgICAgICBjb250ZXh0LT5s
b29wTmVzdGluZ0xldmVsID0gMDsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNl
IDIwMjoKQEAgLTQ1OTQsMTQgKzQ2MjIsMjQgQEAgeXlyZWR1Y2U6CiAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSktPmdldEFzQWdncmVnYXRlKCktPnNldERlYnVnKGNvbnRleHQtPnBy
YWdtYSgpLmRlYnVnKTsKIAogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAogCi0vKiBMaW5lIDEyNjcgb2YgeWFjYy5jLiAgKi8K
IAogICAgICAgZGVmYXVsdDogYnJlYWs7CiAgICAgfQorICAvKiBVc2VyIHNlbWFudGljIGFjdGlv
bnMgc29tZXRpbWVzIGFsdGVyIHl5Y2hhciwgYW5kIHRoYXQgcmVxdWlyZXMKKyAgICAgdGhhdCB5
eXRva2VuIGJlIHVwZGF0ZWQgd2l0aCB0aGUgbmV3IHRyYW5zbGF0aW9uLiAgV2UgdGFrZSB0aGUK
KyAgICAgYXBwcm9hY2ggb2YgdHJhbnNsYXRpbmcgaW1tZWRpYXRlbHkgYmVmb3JlIGV2ZXJ5IHVz
ZSBvZiB5eXRva2VuLgorICAgICBPbmUgYWx0ZXJuYXRpdmUgaXMgdHJhbnNsYXRpbmcgaGVyZSBh
ZnRlciBldmVyeSBzZW1hbnRpYyBhY3Rpb24sCisgICAgIGJ1dCB0aGF0IHRyYW5zbGF0aW9uIHdv
dWxkIGJlIG1pc3NlZCBpZiB0aGUgc2VtYW50aWMgYWN0aW9uIGludm9rZXMKKyAgICAgWVlBQk9S
VCwgWVlBQ0NFUFQsIG9yIFlZRVJST1IgaW1tZWRpYXRlbHkgYWZ0ZXIgYWx0ZXJpbmcgeXljaGFy
IG9yCisgICAgIGlmIGl0IGludm9rZXMgWVlCQUNLVVAuICBJbiB0aGUgY2FzZSBvZiBZWUFCT1JU
IG9yIFlZQUNDRVBULCBhbgorICAgICBpbmNvcnJlY3QgZGVzdHJ1Y3RvciBtaWdodCB0aGVuIGJl
IGludm9rZWQgaW1tZWRpYXRlbHkuICBJbiB0aGUKKyAgICAgY2FzZSBvZiBZWUVSUk9SIG9yIFlZ
QkFDS1VQLCBzdWJzZXF1ZW50IHBhcnNlciBhY3Rpb25zIG1pZ2h0IGxlYWQKKyAgICAgdG8gYW4g
aW5jb3JyZWN0IGRlc3RydWN0b3IgY2FsbCBvciB2ZXJib3NlIHN5bnRheCBlcnJvciBtZXNzYWdl
CisgICAgIGJlZm9yZSB0aGUgbG9va2FoZWFkIGlzIHRyYW5zbGF0ZWQuICAqLwogICBZWV9TWU1C
T0xfUFJJTlQgKCItPiAkJCA9IiwgeXlyMVt5eW5dLCAmeXl2YWwsICZ5eWxvYyk7CiAKICAgWVlQ
T1BTVEFDSyAoeXlsZW4pOwpAQCAtNDYzMCw2ICs0NjY4LDEwIEBAIHl5cmVkdWNlOgogfCB5eWVy
cmxhYiAtLSBoZXJlIG9uIGRldGVjdGluZyBlcnJvciB8CiBgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKi8KIHl5ZXJybGFiOgorICAvKiBNYWtlIHN1cmUgd2UgaGF2ZSBsYXRl
c3QgbG9va2FoZWFkIHRyYW5zbGF0aW9uLiAgU2VlIGNvbW1lbnRzIGF0CisgICAgIHVzZXIgc2Vt
YW50aWMgYWN0aW9ucyBmb3Igd2h5IHRoaXMgaXMgbmVjZXNzYXJ5LiAgKi8KKyAgeXl0b2tlbiA9
IHl5Y2hhciA9PSBZWUVNUFRZID8gWVlFTVBUWSA6IFlZVFJBTlNMQVRFICh5eWNoYXIpOworCiAg
IC8qIElmIG5vdCBhbHJlYWR5IHJlY292ZXJpbmcgZnJvbSBhbiBlcnJvciwgcmVwb3J0IHRoaXMg
ZXJyb3IuICAqLwogICBpZiAoIXl5ZXJyc3RhdHVzKQogICAgIHsKQEAgLTQ2MzcsNDUgKzQ2Nzks
NDQgQEAgeXllcnJsYWI6CiAjaWYgISBZWUVSUk9SX1ZFUkJPU0UKICAgICAgIHl5ZXJyb3IgKCZ5
eWxsb2MsIGNvbnRleHQsIFlZXygic3ludGF4IGVycm9yIikpOwogI2Vsc2UKKyMgZGVmaW5lIFlZ
U1lOVEFYX0VSUk9SIHl5c3ludGF4X2Vycm9yICgmeXltc2dfYWxsb2MsICZ5eW1zZywgXAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl5c3NwLCB5eXRva2VuKQogICAg
ICAgewotCVlZU0laRV9UIHl5c2l6ZSA9IHl5c3ludGF4X2Vycm9yICgwLCB5eXN0YXRlLCB5eWNo
YXIpOwotCWlmICh5eW1zZ19hbGxvYyA8IHl5c2l6ZSAmJiB5eW1zZ19hbGxvYyA8IFlZU1RBQ0tf
QUxMT0NfTUFYSU1VTSkKLQkgIHsKLQkgICAgWVlTSVpFX1QgeXlhbGxvYyA9IDIgKiB5eXNpemU7
Ci0JICAgIGlmICghICh5eXNpemUgPD0geXlhbGxvYyAmJiB5eWFsbG9jIDw9IFlZU1RBQ0tfQUxM
T0NfTUFYSU1VTSkpCi0JICAgICAgeXlhbGxvYyA9IFlZU1RBQ0tfQUxMT0NfTUFYSU1VTTsKLQkg
ICAgaWYgKHl5bXNnICE9IHl5bXNnYnVmKQotCSAgICAgIFlZU1RBQ0tfRlJFRSAoeXltc2cpOwot
CSAgICB5eW1zZyA9IChjaGFyICopIFlZU1RBQ0tfQUxMT0MgKHl5YWxsb2MpOwotCSAgICBpZiAo
eXltc2cpCi0JICAgICAgeXltc2dfYWxsb2MgPSB5eWFsbG9jOwotCSAgICBlbHNlCi0JICAgICAg
ewotCQl5eW1zZyA9IHl5bXNnYnVmOwotCQl5eW1zZ19hbGxvYyA9IHNpemVvZiB5eW1zZ2J1ZjsK
LQkgICAgICB9Ci0JICB9Ci0KLQlpZiAoMCA8IHl5c2l6ZSAmJiB5eXNpemUgPD0geXltc2dfYWxs
b2MpCi0JICB7Ci0JICAgICh2b2lkKSB5eXN5bnRheF9lcnJvciAoeXltc2csIHl5c3RhdGUsIHl5
Y2hhcik7Ci0JICAgIHl5ZXJyb3IgKCZ5eWxsb2MsIGNvbnRleHQsIHl5bXNnKTsKLQkgIH0KLQll
bHNlCi0JICB7Ci0JICAgIHl5ZXJyb3IgKCZ5eWxsb2MsIGNvbnRleHQsIFlZXygic3ludGF4IGVy
cm9yIikpOwotCSAgICBpZiAoeXlzaXplICE9IDApCi0JICAgICAgZ290byB5eWV4aGF1c3RlZGxh
YjsKLQkgIH0KKyAgICAgICAgY2hhciBjb25zdCAqeXltc2dwID0gWVlfKCJzeW50YXggZXJyb3Ii
KTsKKyAgICAgICAgaW50IHl5c3ludGF4X2Vycm9yX3N0YXR1czsKKyAgICAgICAgeXlzeW50YXhf
ZXJyb3Jfc3RhdHVzID0gWVlTWU5UQVhfRVJST1I7CisgICAgICAgIGlmICh5eXN5bnRheF9lcnJv
cl9zdGF0dXMgPT0gMCkKKyAgICAgICAgICB5eW1zZ3AgPSB5eW1zZzsKKyAgICAgICAgZWxzZSBp
ZiAoeXlzeW50YXhfZXJyb3Jfc3RhdHVzID09IDEpCisgICAgICAgICAgeworICAgICAgICAgICAg
aWYgKHl5bXNnICE9IHl5bXNnYnVmKQorICAgICAgICAgICAgICBZWVNUQUNLX0ZSRUUgKHl5bXNn
KTsKKyAgICAgICAgICAgIHl5bXNnID0gKGNoYXIgKikgWVlTVEFDS19BTExPQyAoeXltc2dfYWxs
b2MpOworICAgICAgICAgICAgaWYgKCF5eW1zZykKKyAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHl5bXNnID0geXltc2didWY7CisgICAgICAgICAgICAgICAgeXltc2dfYWxsb2MgPSBz
aXplb2YgeXltc2didWY7CisgICAgICAgICAgICAgICAgeXlzeW50YXhfZXJyb3Jfc3RhdHVzID0g
MjsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgeXlzeW50YXhfZXJyb3Jfc3RhdHVzID0gWVlTWU5UQVhfRVJST1I7Cisg
ICAgICAgICAgICAgICAgeXltc2dwID0geXltc2c7CisgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICB9CisgICAgICAgIHl5ZXJyb3IgKCZ5eWxsb2MsIGNvbnRleHQsIHl5bXNncCk7CisgICAgICAg
IGlmICh5eXN5bnRheF9lcnJvcl9zdGF0dXMgPT0gMikKKyAgICAgICAgICBnb3RvIHl5ZXhoYXVz
dGVkbGFiOwogICAgICAgfQorIyB1bmRlZiBZWVNZTlRBWF9FUlJPUgogI2VuZGlmCiAgICAgfQog
Ci0gIHl5ZXJyb3JfcmFuZ2VbMF0gPSB5eWxsb2M7CisgIHl5ZXJyb3JfcmFuZ2VbMV0gPSB5eWxs
b2M7CiAKICAgaWYgKHl5ZXJyc3RhdHVzID09IDMpCiAgICAgewotICAgICAgLyogSWYganVzdCB0
cmllZCBhbmQgZmFpbGVkIHRvIHJldXNlIGxvb2stYWhlYWQgdG9rZW4gYWZ0ZXIgYW4KKyAgICAg
IC8qIElmIGp1c3QgdHJpZWQgYW5kIGZhaWxlZCB0byByZXVzZSBsb29rYWhlYWQgdG9rZW4gYWZ0
ZXIgYW4KIAkgZXJyb3IsIGRpc2NhcmQgaXQuICAqLwogCiAgICAgICBpZiAoeXljaGFyIDw9IFlZ
RU9GKQpAQCAtNDY5Miw3ICs0NzMzLDcgQEAgeXllcnJsYWI6CiAJfQogICAgIH0KIAotICAvKiBF
bHNlIHdpbGwgdHJ5IHRvIHJldXNlIGxvb2stYWhlYWQgdG9rZW4gYWZ0ZXIgc2hpZnRpbmcgdGhl
IGVycm9yCisgIC8qIEVsc2Ugd2lsbCB0cnkgdG8gcmV1c2UgbG9va2FoZWFkIHRva2VuIGFmdGVy
IHNoaWZ0aW5nIHRoZSBlcnJvcgogICAgICB0b2tlbi4gICovCiAgIGdvdG8geXllcnJsYWIxOwog
CkBAIC00NzA4LDcgKzQ3NDksNyBAQCB5eWVycm9ybGFiOgogICBpZiAoLypDT05TVENPTkQqLyAw
KQogICAgICBnb3RvIHl5ZXJyb3JsYWI7CiAKLSAgeXllcnJvcl9yYW5nZVswXSA9IHl5bHNwWzEt
eXlsZW5dOworICB5eWVycm9yX3JhbmdlWzFdID0geXlsc3BbMS15eWxlbl07CiAgIC8qIERvIG5v
dCByZWNsYWltIHRoZSBzeW1ib2xzIG9mIHRoZSBydWxlIHdoaWNoIGFjdGlvbiB0cmlnZ2VyZWQK
ICAgICAgdGhpcyBZWUVSUk9SLiAgKi8KICAgWVlQT1BTVEFDSyAoeXlsZW4pOwpAQCAtNDcyNyw3
ICs0NzY4LDcgQEAgeXllcnJsYWIxOgogICBmb3IgKDs7KQogICAgIHsKICAgICAgIHl5biA9IHl5
cGFjdFt5eXN0YXRlXTsKLSAgICAgIGlmICh5eW4gIT0gWVlQQUNUX05JTkYpCisgICAgICBpZiAo
IXl5cGFjdF92YWx1ZV9pc19kZWZhdWx0ICh5eW4pKQogCXsKIAkgIHl5biArPSBZWVRFUlJPUjsK
IAkgIGlmICgwIDw9IHl5biAmJiB5eW4gPD0gWVlMQVNUICYmIHl5Y2hlY2tbeXluXSA9PSBZWVRF
UlJPUikKQEAgLTQ3NDIsNyArNDc4Myw3IEBAIHl5ZXJybGFiMToKICAgICAgIGlmICh5eXNzcCA9
PSB5eXNzKQogCVlZQUJPUlQ7CiAKLSAgICAgIHl5ZXJyb3JfcmFuZ2VbMF0gPSAqeXlsc3A7Cisg
ICAgICB5eWVycm9yX3JhbmdlWzFdID0gKnl5bHNwOwogICAgICAgeXlkZXN0cnVjdCAoIkVycm9y
OiBwb3BwaW5nIiwKIAkJICB5eXN0b3NbeXlzdGF0ZV0sIHl5dnNwLCB5eWxzcCwgY29udGV4dCk7
CiAgICAgICBZWVBPUFNUQUNLICgxKTsKQEAgLTQ3NTAsMTUgKzQ3OTEsMTQgQEAgeXllcnJsYWIx
OgogICAgICAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKICAgICB9CiAKLSAgaWYgKHl5
biA9PSBZWUZJTkFMKQotICAgIFlZQUNDRVBUOwotCisgIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJ
QUxJWkVEX0JFR0lOCiAgICorK3l5dnNwID0geXlsdmFsOworICBZWV9JR05PUkVfTUFZQkVfVU5J
TklUSUFMSVpFRF9FTkQKIAotICB5eWVycm9yX3JhbmdlWzFdID0geXlsbG9jOworICB5eWVycm9y
X3JhbmdlWzJdID0geXlsbG9jOwogICAvKiBVc2luZyBZWUxMT0MgaXMgdGVtcHRpbmcsIGJ1dCB3
b3VsZCBjaGFuZ2UgdGhlIGxvY2F0aW9uIG9mCi0gICAgIHRoZSBsb29rLWFoZWFkLiAgWVlMT0Mg
aXMgYXZhaWxhYmxlIHRob3VnaC4gICovCi0gIFlZTExPQ19ERUZBVUxUICh5eWxvYywgKHl5ZXJy
b3JfcmFuZ2UgLSAxKSwgMik7CisgICAgIHRoZSBsb29rYWhlYWQuICBZWUxPQyBpcyBhdmFpbGFi
bGUgdGhvdWdoLiAgKi8KKyAgWVlMTE9DX0RFRkFVTFQgKHl5bG9jLCB5eWVycm9yX3JhbmdlLCAy
KTsKICAgKisreXlsc3AgPSB5eWxvYzsKIAogICAvKiBTaGlmdCB0aGUgZXJyb3IgdG9rZW4uICAq
LwpAQCAtNDc4Miw3ICs0ODIyLDcgQEAgeXlhYm9ydGxhYjoKICAgeXlyZXN1bHQgPSAxOwogICBn
b3RvIHl5cmV0dXJuOwogCi0jaWZuZGVmIHl5b3ZlcmZsb3cKKyNpZiAhZGVmaW5lZCB5eW92ZXJm
bG93IHx8IFlZRVJST1JfVkVSQk9TRQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLgogfCB5eWV4aGF1c3RlZGxhYiAtLSBtZW1vcnkgZXhoYXVzdGlv
biBjb21lcyBoZXJlLiAgfAogYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0qLwpAQCAtNDc5Myw5ICs0ODMzLDE0IEBAIHl5ZXhoYXVzdGVkbGFiOgogI2Vu
ZGlmCiAKIHl5cmV0dXJuOgotICBpZiAoeXljaGFyICE9IFlZRU9GICYmIHl5Y2hhciAhPSBZWUVN
UFRZKQotICAgICB5eWRlc3RydWN0ICgiQ2xlYW51cDogZGlzY2FyZGluZyBsb29rYWhlYWQiLAot
CQkgeXl0b2tlbiwgJnl5bHZhbCwgJnl5bGxvYywgY29udGV4dCk7CisgIGlmICh5eWNoYXIgIT0g
WVlFTVBUWSkKKyAgICB7CisgICAgICAvKiBNYWtlIHN1cmUgd2UgaGF2ZSBsYXRlc3QgbG9va2Fo
ZWFkIHRyYW5zbGF0aW9uLiAgU2VlIGNvbW1lbnRzIGF0CisgICAgICAgICB1c2VyIHNlbWFudGlj
IGFjdGlvbnMgZm9yIHdoeSB0aGlzIGlzIG5lY2Vzc2FyeS4gICovCisgICAgICB5eXRva2VuID0g
WVlUUkFOU0xBVEUgKHl5Y2hhcik7CisgICAgICB5eWRlc3RydWN0ICgiQ2xlYW51cDogZGlzY2Fy
ZGluZyBsb29rYWhlYWQiLAorICAgICAgICAgICAgICAgICAgeXl0b2tlbiwgJnl5bHZhbCwgJnl5
bGxvYywgY29udGV4dCk7CisgICAgfQogICAvKiBEbyBub3QgcmVjbGFpbSB0aGUgc3ltYm9scyBv
ZiB0aGUgcnVsZSB3aGljaCBhY3Rpb24gdHJpZ2dlcmVkCiAgICAgIHRoaXMgWVlBQk9SVCBvciBZ
WUFDQ0VQVC4gICovCiAgIFlZUE9QU1RBQ0sgKHl5bGVuKTsKQEAgLTQ4MjIsMTIgKzQ4NjcsNiBA
QCB5eXJldHVybjoKIAogCiAKLXZvaWQgeXllcnJvcihZWUxUWVBFKiB5eWxsb2MsIFRQYXJzZUNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbikgewotICAgIGNvbnRleHQtPmVycm9y
KCp5eWxsb2MsIHJlYXNvbiwgIiIpOwotICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLX0KLQogaW50
IGdsc2xhbmdfcGFyc2UoVFBhcnNlQ29udGV4dCogY29udGV4dCkgewogICAgIHJldHVybiB5eXBh
cnNlKGNvbnRleHQpOwogfQotCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvZ2xzbGFuZ190YWIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMjQgKzEsMjMgQEAKLS8qIEEgQmlzb24gcGFyc2VyLCBtYWRlIGJ5IEdOVSBCaXNv
biAyLjMuICAqLworLyogQXBwbGUgTm90ZTogRm9yIHRoZSBhdm9pZGFuY2Ugb2YgZG91YnQsIEFw
cGxlIGVsZWN0cyB0byBkaXN0cmlidXRlIHRoaXMgZmlsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEJTRCBsaWNlbnNlLiAqLwogCi0vKiBTa2VsZXRvbiBpbnRlcmZhY2UgZm9yIEJpc29uJ3MgWWFj
Yy1saWtlIHBhcnNlcnMgaW4gQworLyogQSBCaXNvbiBwYXJzZXIsIG1hZGUgYnkgR05VIEJpc29u
IDIuNy4gICovCiAKLSAgIENvcHlyaWdodCAoQykgMTk4NCwgMTk4OSwgMTk5MCwgMjAwMCwgMjAw
MSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNgotICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuCi0KLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisvKiBCaXNvbiBpbnRlcmZhY2UgZm9yIFlhY2Mt
bGlrZSBwYXJzZXJzIGluIEMKKyAgIAorICAgICAgQ29weXJpZ2h0IChDKSAxOTg0LCAxOTg5LTE5
OTAsIDIwMDAtMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIAorICAgVGhp
cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
ciBtb2RpZnkKICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0gICBhbnkgbGF0ZXIgdmVy
c2lvbi4KLQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24g
MyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgICAKICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICAgIEdOVSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KKyAgIAogICAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgIGFs
b25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl
Ci0gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuICAqLworICAgYWxvbmcgd2l0aCB0aGlzIHBy
b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwog
CiAvKiBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IGNyZWF0ZSBhIGxhcmdlciB3b3Jr
IHRoYXQgY29udGFpbnMKICAgIHBhcnQgb3IgYWxsIG9mIHRoZSBCaXNvbiBwYXJzZXIgc2tlbGV0
b24gYW5kIGRpc3RyaWJ1dGUgdGhhdCB3b3JrCkBAIC0yOSwxMCArMjgsMjkgQEAKICAgIHNwZWNp
YWwgZXhjZXB0aW9uLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBza2VsZXRvbiBhbmQgdGhlIHJlc3Vs
dGluZwogICAgQmlzb24gb3V0cHV0IGZpbGVzIHRvIGJlIGxpY2Vuc2VkIHVuZGVyIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMKICAgIExpY2Vuc2Ugd2l0aG91dCB0aGlzIHNwZWNpYWwgZXhjZXB0aW9u
LgotCisgICAKICAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gd2FzIGFkZGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24gaW4KICAgIHZlcnNpb24gMi4yIG9mIEJpc29uLiAgKi8KIAor
I2lmbmRlZiBZWV9ZWV9HTFNMQU5HX1RBQl9IX0lOQ0xVREVECisjIGRlZmluZSBZWV9ZWV9HTFNM
QU5HX1RBQl9IX0lOQ0xVREVECisvKiBFbmFibGluZyB0cmFjZXMuICAqLworI2lmbmRlZiBZWURF
QlVHCisjIGRlZmluZSBZWURFQlVHIDAKKyNlbmRpZgorI2lmIFlZREVCVUcKK2V4dGVybiBpbnQg
eXlkZWJ1ZzsKKyNlbmRpZgorLyogIiVjb2RlIHJlcXVpcmVzIiBibG9ja3MuICAqLworCisKKyNk
ZWZpbmUgWVlMVFlQRSBUU291cmNlTG9jCisjZGVmaW5lIFlZTFRZUEVfSVNfREVDTEFSRUQgMQor
I2RlZmluZSBTSF9NQVhfVE9LRU5fTEVOR1RIIDI1NiAgLy8gV2ViR0wgc3BlYy4KKworCisKKwog
LyogVG9rZW5zLiAgKi8KICNpZm5kZWYgWVlUT0tFTlRZUEUKICMgZGVmaW5lIFlZVE9LRU5UWVBF
CkBAIC0xMzMsMTA5ICsxNTEsMTMgQEAKICAgICAgUVVFU1RJT04gPSAzNDkKICAgIH07CiAjZW5k
aWYKLS8qIFRva2Vucy4gICovCi0jZGVmaW5lIElOVkFSSUFOVCAyNTgKLSNkZWZpbmUgSElHSF9Q
UkVDSVNJT04gMjU5Ci0jZGVmaW5lIE1FRElVTV9QUkVDSVNJT04gMjYwCi0jZGVmaW5lIExPV19Q
UkVDSVNJT04gMjYxCi0jZGVmaW5lIFBSRUNJU0lPTiAyNjIKLSNkZWZpbmUgQVRUUklCVVRFIDI2
MwotI2RlZmluZSBDT05TVF9RVUFMIDI2NAotI2RlZmluZSBCT09MX1RZUEUgMjY1Ci0jZGVmaW5l
IEZMT0FUX1RZUEUgMjY2Ci0jZGVmaW5lIElOVF9UWVBFIDI2NwotI2RlZmluZSBCUkVBSyAyNjgK
LSNkZWZpbmUgQ09OVElOVUUgMjY5Ci0jZGVmaW5lIERPIDI3MAotI2RlZmluZSBFTFNFIDI3MQot
I2RlZmluZSBGT1IgMjcyCi0jZGVmaW5lIElGIDI3MwotI2RlZmluZSBESVNDQVJEIDI3NAotI2Rl
ZmluZSBSRVRVUk4gMjc1Ci0jZGVmaW5lIEJWRUMyIDI3NgotI2RlZmluZSBCVkVDMyAyNzcKLSNk
ZWZpbmUgQlZFQzQgMjc4Ci0jZGVmaW5lIElWRUMyIDI3OQotI2RlZmluZSBJVkVDMyAyODAKLSNk
ZWZpbmUgSVZFQzQgMjgxCi0jZGVmaW5lIFZFQzIgMjgyCi0jZGVmaW5lIFZFQzMgMjgzCi0jZGVm
aW5lIFZFQzQgMjg0Ci0jZGVmaW5lIE1BVFJJWDIgMjg1Ci0jZGVmaW5lIE1BVFJJWDMgMjg2Ci0j
ZGVmaW5lIE1BVFJJWDQgMjg3Ci0jZGVmaW5lIElOX1FVQUwgMjg4Ci0jZGVmaW5lIE9VVF9RVUFM
IDI4OQotI2RlZmluZSBJTk9VVF9RVUFMIDI5MAotI2RlZmluZSBVTklGT1JNIDI5MQotI2RlZmlu
ZSBWQVJZSU5HIDI5MgotI2RlZmluZSBTVFJVQ1QgMjkzCi0jZGVmaW5lIFZPSURfVFlQRSAyOTQK
LSNkZWZpbmUgV0hJTEUgMjk1Ci0jZGVmaW5lIFNBTVBMRVIyRCAyOTYKLSNkZWZpbmUgU0FNUExF
UkNVQkUgMjk3Ci0jZGVmaW5lIFNBTVBMRVJfRVhURVJOQUxfT0VTIDI5OAotI2RlZmluZSBTQU1Q
TEVSMkRSRUNUIDI5OQotI2RlZmluZSBJREVOVElGSUVSIDMwMAotI2RlZmluZSBUWVBFX05BTUUg
MzAxCi0jZGVmaW5lIEZMT0FUQ09OU1RBTlQgMzAyCi0jZGVmaW5lIElOVENPTlNUQU5UIDMwMwot
I2RlZmluZSBCT09MQ09OU1RBTlQgMzA0Ci0jZGVmaW5lIExFRlRfT1AgMzA1Ci0jZGVmaW5lIFJJ
R0hUX09QIDMwNgotI2RlZmluZSBJTkNfT1AgMzA3Ci0jZGVmaW5lIERFQ19PUCAzMDgKLSNkZWZp
bmUgTEVfT1AgMzA5Ci0jZGVmaW5lIEdFX09QIDMxMAotI2RlZmluZSBFUV9PUCAzMTEKLSNkZWZp
bmUgTkVfT1AgMzEyCi0jZGVmaW5lIEFORF9PUCAzMTMKLSNkZWZpbmUgT1JfT1AgMzE0Ci0jZGVm
aW5lIFhPUl9PUCAzMTUKLSNkZWZpbmUgTVVMX0FTU0lHTiAzMTYKLSNkZWZpbmUgRElWX0FTU0lH
TiAzMTcKLSNkZWZpbmUgQUREX0FTU0lHTiAzMTgKLSNkZWZpbmUgTU9EX0FTU0lHTiAzMTkKLSNk
ZWZpbmUgTEVGVF9BU1NJR04gMzIwCi0jZGVmaW5lIFJJR0hUX0FTU0lHTiAzMjEKLSNkZWZpbmUg
QU5EX0FTU0lHTiAzMjIKLSNkZWZpbmUgWE9SX0FTU0lHTiAzMjMKLSNkZWZpbmUgT1JfQVNTSUdO
IDMyNAotI2RlZmluZSBTVUJfQVNTSUdOIDMyNQotI2RlZmluZSBMRUZUX1BBUkVOIDMyNgotI2Rl
ZmluZSBSSUdIVF9QQVJFTiAzMjcKLSNkZWZpbmUgTEVGVF9CUkFDS0VUIDMyOAotI2RlZmluZSBS
SUdIVF9CUkFDS0VUIDMyOQotI2RlZmluZSBMRUZUX0JSQUNFIDMzMAotI2RlZmluZSBSSUdIVF9C
UkFDRSAzMzEKLSNkZWZpbmUgRE9UIDMzMgotI2RlZmluZSBDT01NQSAzMzMKLSNkZWZpbmUgQ09M
T04gMzM0Ci0jZGVmaW5lIEVRVUFMIDMzNQotI2RlZmluZSBTRU1JQ09MT04gMzM2Ci0jZGVmaW5l
IEJBTkcgMzM3Ci0jZGVmaW5lIERBU0ggMzM4Ci0jZGVmaW5lIFRJTERFIDMzOQotI2RlZmluZSBQ
TFVTIDM0MAotI2RlZmluZSBTVEFSIDM0MQotI2RlZmluZSBTTEFTSCAzNDIKLSNkZWZpbmUgUEVS
Q0VOVCAzNDMKLSNkZWZpbmUgTEVGVF9BTkdMRSAzNDQKLSNkZWZpbmUgUklHSFRfQU5HTEUgMzQ1
Ci0jZGVmaW5lIFZFUlRJQ0FMX0JBUiAzNDYKLSNkZWZpbmUgQ0FSRVQgMzQ3Ci0jZGVmaW5lIEFN
UEVSU0FORCAzNDgKLSNkZWZpbmUgUVVFU1RJT04gMzQ5Ci0KLQogCiAKICNpZiAhIGRlZmluZWQg
WVlTVFlQRSAmJiAhIGRlZmluZWQgWVlTVFlQRV9JU19ERUNMQVJFRAogdHlwZWRlZiB1bmlvbiBZ
WVNUWVBFCi0KIHsKLSNkZWZpbmUgWVlMVFlQRSBUU291cmNlTG9jCi0jZGVmaW5lIFlZTFRZUEVf
SVNfREVDTEFSRUQgMQorCisKICAgICBzdHJ1Y3QgewogICAgICAgICB1bmlvbiB7CiAgICAgICAg
ICAgICBUU3RyaW5nICpzdHJpbmc7CkBAIC0yNjMsMTcgKzE4NSwxNSBAQCB0eXBlZGVmIHVuaW9u
IFlZU1RZUEUKICAgICAgICAgICAgIFRGaWVsZExpc3QqIGZpZWxkTGlzdDsKICAgICAgICAgfTsK
ICAgICB9IGludGVybTsKLX0KLS8qIExpbmUgMTUyOSBvZiB5YWNjLmMuICAqLwogCi0JWVlTVFlQ
RTsKKworCit9IFlZU1RZUEU7CisjIGRlZmluZSBZWVNUWVBFX0lTX1RSSVZJQUwgMQogIyBkZWZp
bmUgeXlzdHlwZSBZWVNUWVBFIC8qIG9ic29sZXNjZW50OyB3aWxsIGJlIHdpdGhkcmF3biAqLwog
IyBkZWZpbmUgWVlTVFlQRV9JU19ERUNMQVJFRCAxCi0jIGRlZmluZSBZWVNUWVBFX0lTX1RSSVZJ
QUwgMQogI2VuZGlmCiAKLQotCiAjaWYgISBkZWZpbmVkIFlZTFRZUEUgJiYgISBkZWZpbmVkIFlZ
TFRZUEVfSVNfREVDTEFSRUQKIHR5cGVkZWYgc3RydWN0IFlZTFRZUEUKIHsKQEAgLTI4OCwzICsy
MDgsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgWVlMVFlQRQogI2VuZGlmCiAKIAorI2lmZGVmIFlZUEFS
U0VfUEFSQU0KKyNpZiBkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19jcGx1c3BsdXMKK2lu
dCB5eXBhcnNlICh2b2lkICpZWVBBUlNFX1BBUkFNKTsKKyNlbHNlCitpbnQgeXlwYXJzZSAoKTsK
KyNlbmRpZgorI2Vsc2UgLyogISBZWVBBUlNFX1BBUkFNICovCisjaWYgZGVmaW5lZCBfX1NURENf
XyB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzCitpbnQgeXlwYXJzZSAoVFBhcnNlQ29udGV4dCogY29u
dGV4dCk7CisjZWxzZQoraW50IHl5cGFyc2UgKCk7CisjZW5kaWYKKyNlbmRpZiAvKiAhIFlZUEFS
U0VfUEFSQU0gKi8KKworI2VuZGlmIC8qICFZWV9ZWV9HTFNMQU5HX1RBQl9IX0lOQ0xVREVEICAq
LwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2ludGVybWVkaWF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9p
bnRlcm1lZGlhdGUuaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL2ludGVybWVkaWF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUsOCAr
MjA1LDcgQEAgY2xhc3MgVEluZm9TaW5rOwogLy8KIGNsYXNzIFRJbnRlcm1Ob2RlIHsKIHB1Ymxp
YzoKLSAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKEdsb2JhbFBvb2xBbGxvY2F0b3IpCi0K
KyAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKCk7CiAgICAgVEludGVybU5vZGUoKSB7CiAg
ICAgICAgIC8vIFRPRE86IE1vdmUgdGhpcyB0byBUU291cmNlTG9jIGNvbnN0cnVjdG9yCiAgICAg
ICAgIC8vIGFmdGVyIGdldHRpbmcgcmlkIG9mIFRQdWJsaWNUeXBlLgpAQCAtMjI4LDYgKzIyNywx
MSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBUSW50ZXJtU3ltYm9sKiBnZXRBc1N5bWJvbE5vZGUo
KSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBUSW50ZXJtTG9vcCogZ2V0QXNMb29wTm9kZSgp
IHsgcmV0dXJuIDA7IH0KIAorICAgIC8vIFJlcGxhY2UgYSBjaGlsZCBub2RlLiBSZXR1cm4gdHJ1
ZSBpZiB8b3JpZ2luYWx8IGlzIGEgY2hpbGQKKyAgICAvLyBub2RlIGFuZCBpdCBpcyByZXBsYWNl
ZDsgb3RoZXJ3aXNlLCByZXR1cm4gZmFsc2UuCisgICAgdmlydHVhbCBib29sIHJlcGxhY2VDaGls
ZE5vZGUoCisgICAgICAgIFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwgVEludGVybU5vZGUgKnJlcGxh
Y2VtZW50KSA9IDA7CisKIHByb3RlY3RlZDoKICAgICBUU291cmNlTG9jIGxpbmU7CiB9OwpAQCAt
MjQ4LDYgKzI1Miw4IEBAIHB1YmxpYzoKICAgICBUSW50ZXJtVHlwZWQoY29uc3QgVFR5cGUmIHQp
IDogdHlwZSh0KSAgeyB9CiAgICAgdmlydHVhbCBUSW50ZXJtVHlwZWQqIGdldEFzVHlwZWQoKSB7
IHJldHVybiB0aGlzOyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgaGFzU2lkZUVmZmVjdHMoKSBjb25z
dCA9IDA7CisKICAgICB2b2lkIHNldFR5cGUoY29uc3QgVFR5cGUmIHQpIHsgdHlwZSA9IHQ7IH0K
ICAgICBjb25zdCBUVHlwZSYgZ2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGU7IH0KICAgICBU
VHlwZSogZ2V0VHlwZVBvaW50ZXIoKSB7IHJldHVybiAmdHlwZTsgfQpAQCAtMjk2LDYgKzMwMiw4
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVEludGVybUxvb3AqIGdldEFzTG9vcE5vZGUoKSB7
IHJldHVybiB0aGlzOyB9CiAgICAgdmlydHVhbCB2b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJz
ZXIqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVwbGFjZUNoaWxkTm9kZSgKKyAgICAgICAgVEludGVy
bU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpOwogCiAgICAgVExvb3BU
eXBlIGdldFR5cGUoKSBjb25zdCB7IHJldHVybiB0eXBlOyB9CiAgICAgVEludGVybU5vZGUqIGdl
dEluaXQoKSB7IHJldHVybiBpbml0OyB9CkBAIC0zMjYsNiArMzM0LDggQEAgcHVibGljOgogICAg
ICAgICAgICAgZXhwcmVzc2lvbihlKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZShU
SW50ZXJtVHJhdmVyc2VyKik7CisgICAgdmlydHVhbCBib29sIHJlcGxhY2VDaGlsZE5vZGUoCisg
ICAgICAgIFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwgVEludGVybU5vZGUgKnJlcGxhY2VtZW50KTsK
IAogICAgIFRPcGVyYXRvciBnZXRGbG93T3AoKSB7IHJldHVybiBmbG93T3A7IH0KICAgICBUSW50
ZXJtVHlwZWQqIGdldEV4cHJlc3Npb24oKSB7IHJldHVybiBleHByZXNzaW9uOyB9CkBAIC0zNDYs
NiArMzU2LDggQEAgcHVibGljOgogICAgIFRJbnRlcm1TeW1ib2woaW50IGksIGNvbnN0IFRTdHJp
bmcmIHN5bSwgY29uc3QgVFR5cGUmIHQpIDogCiAgICAgICAgICAgICBUSW50ZXJtVHlwZWQodCks
IGlkKGkpICB7IHN5bWJvbCA9IHN5bTsgb3JpZ2luYWxTeW1ib2wgPSBzeW07IH0gCiAKKyAgICB2
aXJ0dWFsIGJvb2wgaGFzU2lkZUVmZmVjdHMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiAg
ICAgaW50IGdldElkKCkgY29uc3QgeyByZXR1cm4gaWQ7IH0KICAgICBjb25zdCBUU3RyaW5nJiBn
ZXRTeW1ib2woKSBjb25zdCB7IHJldHVybiBzeW1ib2w7IH0KIApAQCAtMzU2LDYgKzM2OCw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyKik7
CiAgICAgdmlydHVhbCBUSW50ZXJtU3ltYm9sKiBnZXRBc1N5bWJvbE5vZGUoKSB7IHJldHVybiB0
aGlzOyB9CisgICAgdmlydHVhbCBib29sIHJlcGxhY2VDaGlsZE5vZGUoVEludGVybU5vZGUgKiwg
VEludGVybU5vZGUgKikgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJvdGVjdGVkOgogICAgIGludCBp
ZDsKQEAgLTM2NywxNCArMzgwLDE3IEBAIGNsYXNzIFRJbnRlcm1Db25zdGFudFVuaW9uIDogcHVi
bGljIFRJbnQKIHB1YmxpYzoKICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbihDb25zdGFudFVuaW9u
ICp1bmlvblBvaW50ZXIsIGNvbnN0IFRUeXBlJiB0KSA6IFRJbnRlcm1UeXBlZCh0KSwgdW5pb25B
cnJheVBvaW50ZXIodW5pb25Qb2ludGVyKSB7IH0KIAorICAgIHZpcnR1YWwgYm9vbCBoYXNTaWRl
RWZmZWN0cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICBDb25zdGFudFVuaW9uKiBn
ZXRVbmlvbkFycmF5UG9pbnRlcigpIGNvbnN0IHsgcmV0dXJuIHVuaW9uQXJyYXlQb2ludGVyOyB9
CiAgICAgCi0gICAgaW50IGdldElDb25zdChzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHVu
aW9uQXJyYXlQb2ludGVyID8gdW5pb25BcnJheVBvaW50ZXJbaW5kZXhdLmdldElDb25zdCgpIDog
MDsgfQotICAgIGZsb2F0IGdldEZDb25zdChzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHVu
aW9uQXJyYXlQb2ludGVyID8gdW5pb25BcnJheVBvaW50ZXJbaW5kZXhdLmdldEZDb25zdCgpIDog
MC4wZjsgfQotICAgIGJvb2wgZ2V0QkNvbnN0KHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4g
dW5pb25BcnJheVBvaW50ZXIgPyB1bmlvbkFycmF5UG9pbnRlcltpbmRleF0uZ2V0QkNvbnN0KCkg
OiBmYWxzZTsgfQorICAgIGludCBnZXRJQ29uc3QoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiB1
bmlvbkFycmF5UG9pbnRlciA/IHVuaW9uQXJyYXlQb2ludGVyW2luZGV4XS5nZXRJQ29uc3QoKSA6
IDA7IH0KKyAgICBmbG9hdCBnZXRGQ29uc3QoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiB1bmlv
bkFycmF5UG9pbnRlciA/IHVuaW9uQXJyYXlQb2ludGVyW2luZGV4XS5nZXRGQ29uc3QoKSA6IDAu
MGY7IH0KKyAgICBib29sIGdldEJDb25zdChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHVuaW9u
QXJyYXlQb2ludGVyID8gdW5pb25BcnJheVBvaW50ZXJbaW5kZXhdLmdldEJDb25zdCgpIDogZmFs
c2U7IH0KIAogICAgIHZpcnR1YWwgVEludGVybUNvbnN0YW50VW5pb24qIGdldEFzQ29uc3RhbnRV
bmlvbigpICB7IHJldHVybiB0aGlzOyB9CiAgICAgdmlydHVhbCB2b2lkIHRyYXZlcnNlKFRJbnRl
cm1UcmF2ZXJzZXIqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVwbGFjZUNoaWxkTm9kZShUSW50ZXJt
Tm9kZSAqLCBUSW50ZXJtTm9kZSAqKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgVEludGVybVR5
cGVkKiBmb2xkKFRPcGVyYXRvciwgVEludGVybVR5cGVkKiwgVEluZm9TaW5rJik7CiAKQEAgLTM5
MCw5ICs0MDYsMTEgQEAgcHVibGljOgogICAgIFRPcGVyYXRvciBnZXRPcCgpIGNvbnN0IHsgcmV0
dXJuIG9wOyB9CiAgICAgdm9pZCBzZXRPcChUT3BlcmF0b3IgbykgeyBvcCA9IG87IH0KIAotICAg
IGJvb2wgbW9kaWZpZXNTdGF0ZSgpIGNvbnN0OworICAgIGJvb2wgaXNBc3NpZ25tZW50KCkgY29u
c3Q7CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIGJvb2wg
aGFzU2lkZUVmZmVjdHMoKSBjb25zdCB7IHJldHVybiBpc0Fzc2lnbm1lbnQoKTsgfQorCiBwcm90
ZWN0ZWQ6CiAgICAgVEludGVybU9wZXJhdG9yKFRPcGVyYXRvciBvKSA6IFRJbnRlcm1UeXBlZChU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkKSksIG9wKG8pIHt9CiAgICAgVEludGVybU9wZXJh
dG9yKFRPcGVyYXRvciBvLCBUVHlwZSYgdCkgOiBUSW50ZXJtVHlwZWQodCksIG9wKG8pIHt9ICAg
CkBAIC00MDgsNiArNDI2LDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVEludGVybUJpbmFy
eSogZ2V0QXNCaW5hcnlOb2RlKCkgeyByZXR1cm4gdGhpczsgfQogICAgIHZpcnR1YWwgdm9pZCB0
cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyKik7CisgICAgdmlydHVhbCBib29sIHJlcGxhY2VDaGls
ZE5vZGUoCisgICAgICAgIFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwgVEludGVybU5vZGUgKnJlcGxh
Y2VtZW50KTsKKworICAgIHZpcnR1YWwgYm9vbCBoYXNTaWRlRWZmZWN0cygpIGNvbnN0IHsgcmV0
dXJuIChpc0Fzc2lnbm1lbnQoKSB8fCBsZWZ0LT5oYXNTaWRlRWZmZWN0cygpIHx8IHJpZ2h0LT5o
YXNTaWRlRWZmZWN0cygpKTsgfQogCiAgICAgdm9pZCBzZXRMZWZ0KFRJbnRlcm1UeXBlZCogbikg
eyBsZWZ0ID0gbjsgfQogICAgIHZvaWQgc2V0UmlnaHQoVEludGVybVR5cGVkKiBuKSB7IHJpZ2h0
ID0gbjsgfQpAQCAtNDM2LDYgKzQ1OCwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
dHJhdmVyc2UoVEludGVybVRyYXZlcnNlciopOwogICAgIHZpcnR1YWwgVEludGVybVVuYXJ5KiBn
ZXRBc1VuYXJ5Tm9kZSgpIHsgcmV0dXJuIHRoaXM7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVwbGFj
ZUNoaWxkTm9kZSgKKyAgICAgICAgVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAq
cmVwbGFjZW1lbnQpOworCisgICAgdmlydHVhbCBib29sIGhhc1NpZGVFZmZlY3RzKCkgY29uc3Qg
eyByZXR1cm4gKGlzQXNzaWdubWVudCgpIHx8IG9wZXJhbmQtPmhhc1NpZGVFZmZlY3RzKCkpOyB9
CiAKICAgICB2b2lkIHNldE9wZXJhbmQoVEludGVybVR5cGVkKiBvKSB7IG9wZXJhbmQgPSBvOyB9
CiAgICAgVEludGVybVR5cGVkKiBnZXRPcGVyYW5kKCkgeyByZXR1cm4gb3BlcmFuZDsgfSAgICAK
QEAgLTQ2Niw2ICs0OTIsMTEgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBUSW50ZXJtQWdncmVn
YXRlKiBnZXRBc0FnZ3JlZ2F0ZSgpIHsgcmV0dXJuIHRoaXM7IH0KICAgICB2aXJ0dWFsIHZvaWQg
dHJhdmVyc2UoVEludGVybVRyYXZlcnNlciopOworICAgIHZpcnR1YWwgYm9vbCByZXBsYWNlQ2hp
bGROb2RlKAorICAgICAgICBUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBs
YWNlbWVudCk7CisKKyAgICAvLyBDb25zZXJ2YXRpdmVseSBhc3N1bWUgZnVuY3Rpb24gY2FsbHMg
YW5kIG90aGVyIGFnZ3JlZ2F0ZSBvcGVyYXRvcnMgaGF2ZSBzaWRlLWVmZmVjdHMKKyAgICB2aXJ0
dWFsIGJvb2wgaGFzU2lkZUVmZmVjdHMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBU
SW50ZXJtU2VxdWVuY2UmIGdldFNlcXVlbmNlKCkgeyByZXR1cm4gc2VxdWVuY2U7IH0KIApAQCAt
NTA5LDYgKzU0MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBUSW50ZXJtVHlwZWQodHlwZSks
IGNvbmRpdGlvbihjb25kKSwgdHJ1ZUJsb2NrKHRydWVCKSwgZmFsc2VCbG9jayhmYWxzZUIpIHt9
CiAKICAgICB2aXJ0dWFsIHZvaWQgdHJhdmVyc2UoVEludGVybVRyYXZlcnNlciopOworICAgIHZp
cnR1YWwgYm9vbCByZXBsYWNlQ2hpbGROb2RlKAorICAgICAgICBUSW50ZXJtTm9kZSAqb3JpZ2lu
YWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCk7CisKKyAgICAvLyBDb25zZXJ2YXRpdmVseSBh
c3N1bWUgc2VsZWN0aW9ucyBoYXZlIHNpZGUtZWZmZWN0cworICAgIHZpcnR1YWwgYm9vbCBoYXNT
aWRlRWZmZWN0cygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIGJvb2wgdXNlc1Rlcm5h
cnlPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIGdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQ7IH0K
ICAgICBUSW50ZXJtTm9kZSogZ2V0Q29uZGl0aW9uKCkgY29uc3QgeyByZXR1cm4gY29uZGl0aW9u
OyB9CkBAIC01NDAsOCArNTc2LDcgQEAgZW51bSBWaXNpdAogY2xhc3MgVEludGVybVRyYXZlcnNl
cgogewogcHVibGljOgotICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xvYmFsUG9vbEFs
bG9jYXRvcikKLQorICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoKTsKICAgICBUSW50ZXJt
VHJhdmVyc2VyKGJvb2wgcHJlVmlzaXQgPSB0cnVlLCBib29sIGluVmlzaXQgPSBmYWxzZSwgYm9v
bCBwb3N0VmlzaXQgPSBmYWxzZSwgYm9vbCByaWdodFRvTGVmdCA9IGZhbHNlKSA6IAogICAgICAg
ICAgICAgcHJlVmlzaXQocHJlVmlzaXQpLAogICAgICAgICAgICAgaW5WaXNpdChpblZpc2l0KSwK
QEAgLTU0OSw3ICs1ODQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByaWdodFRvTGVmdChyaWdo
dFRvTGVmdCksCiAgICAgICAgICAgICBkZXB0aCgwKSwKICAgICAgICAgICAgIG1heERlcHRoKDAp
IHt9Ci0gICAgdmlydHVhbCB+VEludGVybVRyYXZlcnNlcigpIHt9OworICAgIHZpcnR1YWwgflRJ
bnRlcm1UcmF2ZXJzZXIoKSB7fQogCiAgICAgdmlydHVhbCB2b2lkIHZpc2l0U3ltYm9sKFRJbnRl
cm1TeW1ib2wqKSB7fQogICAgIHZpcnR1YWwgdm9pZCB2aXNpdENvbnN0YW50VW5pb24oVEludGVy
bUNvbnN0YW50VW5pb24qKSB7fQpAQCAtNTYxLDggKzU5NiwyNCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIHZpc2l0QnJhbmNoKFZpc2l0IHZpc2l0LCBUSW50ZXJtQnJhbmNoKikge3JldHVy
biB0cnVlO30KIAogICAgIGludCBnZXRNYXhEZXB0aCgpIGNvbnN0IHtyZXR1cm4gbWF4RGVwdGg7
fQotICAgIHZvaWQgaW5jcmVtZW50RGVwdGgoKSB7ZGVwdGgrKzsgbWF4RGVwdGggPSBzdGQ6Om1h
eChtYXhEZXB0aCwgZGVwdGgpOyB9Ci0gICAgdm9pZCBkZWNyZW1lbnREZXB0aCgpIHtkZXB0aC0t
O30KKworICAgIHZvaWQgaW5jcmVtZW50RGVwdGgoVEludGVybU5vZGUgKmN1cnJlbnQpCisgICAg
eworICAgICAgICBkZXB0aCsrOworICAgICAgICBtYXhEZXB0aCA9IHN0ZDo6bWF4KG1heERlcHRo
LCBkZXB0aCk7CisgICAgICAgIHBhdGgucHVzaF9iYWNrKGN1cnJlbnQpOworICAgIH0KKworICAg
IHZvaWQgZGVjcmVtZW50RGVwdGgoKQorICAgIHsKKyAgICAgICAgZGVwdGgtLTsKKyAgICAgICAg
cGF0aC5wb3BfYmFjaygpOworICAgIH0KKworICAgIFRJbnRlcm1Ob2RlICpnZXRQYXJlbnROb2Rl
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBwYXRoLnNpemUoKSA9PSAwID8gTlVMTCA6IHBhdGgu
YmFjaygpOworICAgIH0KIAogICAgIC8vIFJldHVybiB0aGUgb3JpZ2luYWwgbmFtZSBpZiBoYXNo
IGZ1bmN0aW9uIHBvaW50ZXIgaXMgTlVMTDsKICAgICAvLyBvdGhlcndpc2UgcmV0dXJuIHRoZSBo
YXNoZWQgbmFtZS4KQEAgLTU3Niw2ICs2MjcsOSBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAg
aW50IGRlcHRoOwogICAgIGludCBtYXhEZXB0aDsKKworICAgIC8vIEFsbCB0aGUgbm9kZXMgZnJv
bSByb290IHRvIHRoZSBjdXJyZW50IG5vZGUncyBwYXJlbnQgZHVyaW5nIHRyYXZlcnNpbmcuCisg
ICAgVFZlY3RvcjxUSW50ZXJtTm9kZSAqPiBwYXRoOwogfTsKIAogI2VuZGlmIC8vIF9fSU5URVJN
RURJQVRFX0gKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9sb2Nh
bGludGVybWVkaWF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9sb2NhbGludGVybWVkaWF0ZS5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvbG9jYWxpbnRlcm1lZGlhdGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMjIsOSArMjIsOSBAQCBzdHJ1Y3QgVFZlY3RvckZpZWxkcyB7CiBjbGFz
cyBUSW5mb1Npbms7CiBjbGFzcyBUSW50ZXJtZWRpYXRlIHsKIHB1YmxpYzogICAgCi0gICAgUE9P
TF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxsb2NhdG9yKQotCisgICAgUE9PTF9B
TExPQ0FUT1JfTkVXX0RFTEVURSgpOwogICAgIFRJbnRlcm1lZGlhdGUoVEluZm9TaW5rJiBpKSA6
IGluZm9TaW5rKGkpIHsgfQorCiAgICAgVEludGVybVN5bWJvbCogYWRkU3ltYm9sKGludCBJZCwg
Y29uc3QgVFN0cmluZyYsIGNvbnN0IFRUeXBlJiwgY29uc3QgVFNvdXJjZUxvYyYpOwogICAgIFRJ
bnRlcm1UeXBlZCogYWRkQ29udmVyc2lvbihUT3BlcmF0b3IsIGNvbnN0IFRUeXBlJiwgVEludGVy
bVR5cGVkKik7CiAgICAgVEludGVybVR5cGVkKiBhZGRCaW5hcnlNYXRoKFRPcGVyYXRvciBvcCwg
VEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBjb25zdCBUU291cmNlTG9j
JiwgVFN5bWJvbFRhYmxlJik7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvcGFyc2VDb25zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3BhcnNlQ29uc3QuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcGFyc2VDb25zdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQsNyArNCw3IEBACiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8K
IAotI2luY2x1ZGUgImNvbXBpbGVyL1BhcnNlSGVscGVyLmgiCisjaW5jbHVkZSAiY29tcGlsZXIv
UGFyc2VDb250ZXh0LmgiCiAKIC8vCiAvLyBVc2UgdGhpcyBjbGFzcyB0byBjYXJyeSBhbG9uZyBk
YXRhIGZyb20gbm9kZSB0byBub2RlIGluIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci52Y3hwcm9qCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IudmN4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMwNCBAQAor77u/PD94bWwgdmVyc2lvbj0i
MS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQi
IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9k
ZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4NCisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25m
aWd1cmF0aW9ucyI+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xX
aW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+DQorICAg
ICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlv
bj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+DQorICAg
ICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3Jt
Png2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9q
ZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4NCisgICAgICA8Q29uZmln
dXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwv
UGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29u
ZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+
UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4N
CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPFByb3Bl
cnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPg0KKyAgICA8UHJvamVjdEd1aWQ+ezVCM0E2REI4LTFF
N0UtNDBENy05MkI5LURBOEFBRTYxOUZBRH08L1Byb2plY3RHdWlkPg0KKyAgICA8Um9vdE5hbWVz
cGFjZT5jb21waWxlcjwvUm9vdE5hbWVzcGFjZT4NCisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9L
ZXl3b3JkPg0KKyAgICA8UHJvamVjdE5hbWU+dHJhbnNsYXRvcjwvUHJvamVjdE5hbWU+DQorICA8
L1Byb3BlcnR5R3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWlj
cm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9
IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwv
Q29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJT
ZXQ+DQorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0
aW1pemF0aW9uPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVs
PSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8
L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVy
U2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25m
aWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZp
Z3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0Pg0K
KyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXph
dGlvbj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZp
Z3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmln
dXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+DQor
ICA8L1Byb3BlcnR5R3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClc
TWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9u
U2V0dGluZ3MiPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0i
UHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJl
bD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9y
dEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0
aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNl
ci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdy
b3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1w
b3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNl
ci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAu
JChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+
DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRz
Ij4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQo
UGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxN
aWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0
YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVs
PSJVc2VyTWFjcm9zIiAvPg0KKyAgPFByb3BlcnR5R3JvdXA+DQorICAgIDxfUHJvamVjdEZpbGVW
ZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4NCisgICAgPE91dERpciBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+
JChTb2x1dGlvbkRpcikkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4k
KENvbmZpZ3VyYXRpb24pXGNvbW1vblw8L0ludERpcj4NCisgICAgPE91dERpciBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoU29sdXRpb25E
aXIpJChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQo
UGxhdGZvcm0pXCQoQ29uZmlndXJhdGlvbilcPC9JbnREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChT
b2x1dGlvbkRpcikkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQo
Q29uZmlndXJhdGlvbilcY29tbW9uXDwvSW50RGlyPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKFNvbHV0aW9u
RGlyKSQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxJbnREaXIg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCci
PiQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlvbilcPC9JbnREaXI+DQorICA8L1Byb3BlcnR5R3Jv
dXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAg
PE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcik7JChQcm9qZWN0RGlyKS4uLzskKFByb2pl
Y3REaXIpLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9u
cz5XSU4zMjtfREVCVUc7X0xJQjtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7Tk9NSU5NQVg7JShQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAg
IDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4NCisgICAgICA8QmFzaWNSdW50
aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4NCisgICAgICA8
UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4NCisgICAg
ICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAg
ICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxUcmVhdFdhcm5p
bmdBc0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+DQorICAgICAgPERlYnVnSW5mb3Jt
YXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAg
ICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40MTAwOzQxMjc7NDE4OTs0MjM5OzQyNDQ7NDI0
NTs0NTEyOzQ3MDI7NDcxODslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNp
ZmljV2FybmluZ3M+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3Vw
Pg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4NCisgICAgPE1pZGw+DQorICAgICAgPFRhcmdldEVu
dmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+DQorICAgIDwvTWlkbD4NCisgICAgPENs
Q29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQor
ICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKTskKFByb2pl
Y3REaXIpLi4vOyQoUHJvamVjdERpcikuLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXBy
b2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfTElCO19DUlRfU0VDVVJFX05PX0RFUFJF
Q0FURTtOT01JTk1BWDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+DQorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPg0K
KyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1l
Q2hlY2tzPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRp
bWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBp
bGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQor
ICAgICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCisg
ICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3Jt
YXRpb25Gb3JtYXQ+DQorICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0
MTg5OzQyMzk7NDI0NDs0MjQ1OzQyNjc7NDUxMjs0NzAyOzQ3MTg7JShEaXNhYmxlU3BlY2lmaWNX
YXJuaW5ncyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisg
IDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPg0KKyAg
ICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlv
bj4NCisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+QW55U3VpdGFibGU8L0lubGluZUZ1
bmN0aW9uRXhwYW5zaW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQo
UHJvamVjdERpcik7JChQcm9qZWN0RGlyKS4uLzskKFByb2plY3REaXIpLi4vLi4vaW5jbHVkZTsl
KEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0xJQjtf
Q1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7Tk9NSU5NQVg7X1NFQ1VSRV9TQ0w9MDslKFByZXByb2Nl
c3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPFJ1bnRp
bWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21w
aWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5n
TGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+
dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1h
dD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPERpc2Fi
bGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0NDs0MjQ1OzQ1MTI7NDcw
Mjs0NzE4OyUoRGlzYWJsZVNwZWNpZmljV2FybmluZ3MpPC9EaXNhYmxlU3BlY2lmaWNXYXJuaW5n
cz4NCisgICAgPC9DbENvbXBpbGU+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRl
bURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8eDY0JyI+DQorICAgIDxNaWRsPg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVu
dD5YNjQ8L1RhcmdldEVudmlyb25tZW50Pg0KKyAgICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+
DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxJ
bmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5BbnlTdWl0YWJsZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNp
b24+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKTsk
KFByb2plY3REaXIpLi4vOyQoUHJvamVjdERpcikuLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAg
PFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfTElCO19DUlRfU0VDVVJFX05P
X0RFUFJFQ0FURTtOT01JTk1BWDtfU0VDVVJFX1NDTD0wOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVs
dGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0K
KyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8
L1dhcm5pbmdMZXZlbD4NCisgICAgICA8VHJlYXRXYXJuaW5nQXNFcnJvcj50cnVlPC9UcmVhdFdh
cm5pbmdBc0Vycm9yPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRh
YmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8RGlzYWJsZVNwZWNpZmljV2Fy
bmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7NDI2Nzs0NTEyOzQ3MDI7NDcxODsl
KERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+DQorICAg
IDwvQ2xDb21waWxlPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAiIC8+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iQ29kZUdlbi5jcHAiIC8+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iQ29tcGlsZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImRl
YnVnLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEZXRlY3RDYWxsRGVwdGguY3Bw
IiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkRldGVjdERpc2NvbnRpbnVpdHkuY3BwIiAv
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkRpYWdub3N0aWNzLmNwcCIgLz4NCisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSJEaXJlY3RpdmVIYW5kbGVyLmNwcCIgLz4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJGb3JMb29wVW5yb2xsLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSJJbmZvU2luay5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW5pdGlhbGl6ZS5j
cHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW5pdGlhbGl6ZURsbC5jcHAiIC8+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW5pdGlhbGl6ZUdMUG9zaXRpb24uY3BwIiAvPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9IkluaXRpYWxpemVQYXJzZUNvbnRleHQuY3BwIiAvPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9IkludGVybWVkaWF0ZS5jcHAiIC8+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iaW50ZXJtT3V0LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJJ
bnRlcm1UcmF2ZXJzZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iTWFwTG9uZ1Zh
cmlhYmxlTmFtZXMuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Im9zc291cmNlX3dp
bi5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iT3V0cHV0RVNTTC5jcHAiIC8+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iT3V0cHV0R0xTTC5jcHAiIC8+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iT3V0cHV0R0xTTEJhc2UuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ik91dHB1dEhMU0wuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InBhcnNlQ29u
c3QuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlBhcnNlQ29udGV4dC5jcHAiIC8+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUG9vbEFsbG9jLmNwcCIgLz4NCisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSJRdWFsaWZpZXJBbGl2ZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iUmVtb3ZlVHJlZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iU2VhcmNo
U3ltYm9sLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJTaGFkZXJMYW5nLmNwcCIg
Lz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJTeW1ib2xUYWJsZS5jcHAiIC8+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iVHJhbnNsYXRvckVTU0wuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IlRyYW5zbGF0b3JHTFNMLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSJUcmFuc2xhdG9ySExTTC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVW5mb2xk
U2hvcnRDaXJjdWl0LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJVbmZvbGRTaG9y
dENpcmN1aXRBU1QuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlVuaWZvcm0uY3Bw
IiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InV0aWwuY3BwIiAvPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9IlZhbGlkYXRlTGltaXRhdGlvbnMuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IlZhcmlhYmxlSW5mby5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
VmFyaWFibGVQYWNrZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Imdsc2xhbmdf
bGV4LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJnbHNsYW5nX3RhYi5jcHAiIC8+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iZGVwZ3JhcGhcRGVwZW5kZW5jeUdyYXBoLmNwcCIg
Lz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJkZXBncmFwaFxEZXBlbmRlbmN5R3JhcGhCdWls
ZGVyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJkZXBncmFwaFxEZXBlbmRlbmN5
R3JhcGhPdXRwdXQuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImRlcGdyYXBoXERl
cGVuZGVuY3lHcmFwaFRyYXZlcnNlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJ0
aW1pbmdcUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZy5jcHAiIC8+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0idGltaW5nXFJlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmNwcCIgLz4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx0aGlyZF9wYXJ0eVxjb21waWxlclxBcnJheUJvdW5k
c0NsYW1wZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlZlcnNpb25HTFNMLmNw
cCIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPEN1c3RvbUJ1aWxk
IEluY2x1ZGU9Imdsc2xhbmcubCI+DQorICAgICAgPE1lc3NhZ2UgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPg0KKyAgICAgIDwvTWVzc2Fn
ZT4NCisgICAgICA8Q29tbWFuZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+DQorICAgICAgPC9Db21tYW5kPg0KKyAgICAgIDxBZGRpdGlv
bmFsSW5wdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8V2luMzInIj4lKEFkZGl0aW9uYWxJbnB1dHMpPC9BZGRpdGlvbmFsSW5wdXRzPg0KKyAgICAg
IDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8V2luMzInIj4lKE91dHB1dHMpPC9PdXRwdXRzPg0KKyAgICAgIDxNZXNzYWdlIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+DQorICAgICAg
PC9NZXNzYWdlPg0KKyAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+DQorICAgICAgPC9Db21tYW5kPg0KKyAgICAgIDxB
ZGRpdGlvbmFsSW5wdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8eDY0JyI+JShBZGRpdGlvbmFsSW5wdXRzKTwvQWRkaXRpb25hbElucHV0cz4NCisg
ICAgICA8T3V0cHV0cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfHg2NCciPiUoT3V0cHV0cyk8L091dHB1dHM+DQorICAgICAgPE1lc3NhZ2UgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQor
ICAgICAgPC9NZXNzYWdlPg0KKyAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPg0KKyAgICAgIDwvQ29tbWFuZD4N
CisgICAgICA8QWRkaXRpb25hbElucHV0cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4lKEFkZGl0aW9uYWxJbnB1dHMpPC9BZGRpdGlv
bmFsSW5wdXRzPg0KKyAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiUoT3V0cHV0cyk8L091dHB1dHM+DQorICAg
ICAgPE1lc3NhZ2UgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciPg0KKyAgICAgIDwvTWVzc2FnZT4NCisgICAgICA8Q29tbWFuZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+DQorICAg
ICAgPC9Db21tYW5kPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5wdXRzIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4lKEFkZGl0aW9uYWxJbnB1
dHMpPC9BZGRpdGlvbmFsSW5wdXRzPg0KKyAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4lKE91dHB1dHMpPC9PdXRw
dXRzPg0KKyAgICA8L0N1c3RvbUJ1aWxkPg0KKyAgICA8Q3VzdG9tQnVpbGQgSW5jbHVkZT0iZ2xz
bGFuZy55Ij4NCisgICAgICA8TWVzc2FnZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+DQorICAgICAgPC9NZXNzYWdlPg0KKyAgICAgIDxD
b21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIj4NCisgICAgICA8L0NvbW1hbmQ+DQorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiUoT3V0cHV0cyk8
L091dHB1dHM+DQorICAgICAgPE1lc3NhZ2UgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4NCisgICAgICA8L01lc3NhZ2U+DQorICAgICAgPENv
bW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIj4NCisgICAgICA8L0NvbW1hbmQ+DQorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4lKE91dHB1dHMpPC9PdXRw
dXRzPg0KKyAgICAgIDxNZXNzYWdlIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPg0KKyAgICAgIDwvTWVzc2FnZT4NCisgICAgICA8Q29t
bWFuZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
V2luMzInIj4NCisgICAgICA8L0NvbW1hbmQ+DQorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JShPdXRwdXRz
KTwvT3V0cHV0cz4NCisgICAgICA8TWVzc2FnZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+DQorICAgICAgPC9NZXNzYWdlPg0KKyAgICAg
IDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXx4NjQnIj4NCisgICAgICA8L0NvbW1hbmQ+DQorICAgICAgPE91dHB1dHMgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiUoT3V0cHV0
cyk8L091dHB1dHM+DQorICAgIDwvQ3VzdG9tQnVpbGQ+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJ
dGVtR3JvdXA+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQmFzZVR5cGVzLmgiIC8+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJDb21tb24uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSJDb25zdGFudFVuaW9uLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iZGVidWcuaCIg
Lz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJEZXRlY3RDYWxsRGVwdGguaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJEZXRlY3REaXNjb250aW51aXR5LmgiIC8+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iRGlhZ25vc3RpY3MuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSJEaXJlY3RpdmVIYW5kbGVyLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRm9yTG9v
cFVucm9sbC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ikhhc2hOYW1lcy5oIiAvPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkluZm9TaW5rLmgiIC8+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iSW5pdGlhbGl6ZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkluaXRp
YWxpemVEbGwuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJJbml0aWFsaXplR2xvYmFs
cy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkluaXRpYWxpemVHTFBvc2l0aW9uLmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5oIiAv
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9ImludGVybWVkaWF0ZS5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9ImxvY2FsaW50ZXJtZWRpYXRlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJNTWFwLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iTm9kZVNlYXJjaC5oIiAv
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Im9zaW5jbHVkZS5oIiAvPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ik91dHB1dEVTU0wuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJP
dXRwdXRHTFNMLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iT3V0cHV0R0xTTEJhc2Uu
aCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJPdXRwdXRITFNMLmgiIC8+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iUGFyc2VDb250ZXh0LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iUG9vbEFsbG9jLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUXVhbGlmaWVy
QWxpdmUuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJSZW1vdmVUcmVlLmgiIC8+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUmVuYW1lRnVuY3Rpb24uaCIgLz4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEdMU0xBTkdcU2hhZGVyTGFuZy5oIiAvPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlNlYXJjaFN5bWJvbC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9IlNoSGFuZGxlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iU3ltYm9s
VGFibGUuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJUcmFuc2xhdG9yRVNTTC5oIiAv
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlRyYW5zbGF0b3JHTFNMLmgiIC8+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iVHJhbnNsYXRvckhMU0wuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJUeXBlcy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlVuZm9sZFNob3J0
Q2lyY3VpdC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlVuZm9sZFNob3J0Q2lyY3Vp
dEFTVC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlVuaWZvcm0uaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJ1dGlsLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
VmFsaWRhdGVMaW1pdGF0aW9ucy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlZhcmlh
YmxlSW5mby5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlZhcmlhYmxlUGFja2VyLmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iZ2xzbGFuZ190YWIuaCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJ0aW1pbmdcUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZy5oIiAv
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InRpbWluZ1xSZXN0cmljdFZlcnRleFNoYWRlclRp
bWluZy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9ImRlcGdyYXBoXERlcGVuZGVuY3lH
cmFwaC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9ImRlcGdyYXBoXERlcGVuZGVuY3lH
cmFwaEJ1aWxkZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJkZXBncmFwaFxEZXBl
bmRlbmN5R3JhcGhPdXRwdXQuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx0aGly
ZF9wYXJ0eVxjb21waWxlclxBcnJheUJvdW5kc0NsYW1wZXIuaCIgLz4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJWZXJzaW9uR0xTTC5oIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SW1wb3J0
IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPg0KKyAg
PEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4NCisgIDwvSW1wb3J0R3JvdXA+
DQorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yLnZjeHByb2ouZmlsdGVycwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwzNjEgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0
Zi04Ij8+DQorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1h
cy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0KKyAgPEl0ZW1Hcm91cD4N
CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPg0KKyAgICAgIDxVbmlxdWVJZGVu
dGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVu
dGlmaWVyPg0KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2NjO2N4eDtkZWY7b2RsO2lkbDtocGo7
YmF0O2FzbTthc214PC9FeHRlbnNpb25zPg0KKyAgICA8L0ZpbHRlcj4NCisgICAgPEZpbHRlciBJ
bmNsdWRlPSJTb3VyY2UgRmlsZXNcZ2VuZXJhdGVkIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmll
cj57ZWI4ZGExNTctYjI5Yy00M2MzLTg4MGQtNTQ2NzllMTc2ZGM1fTwvVW5pcXVlSWRlbnRpZmll
cj4NCisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzXGRl
cGdyYXBoIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57YjU0MTBkM2EtYzNjOC00YWU2LTg0
M2EtYjAwMGQ2NTI2MzJlfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgPC9GaWx0ZXI+DQorICAg
IDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzXHRpbWluZyI+DQorICAgICAgPFVuaXF1ZUlk
ZW50aWZpZXI+e2E5ODQ3NjExLWRjZDUtNGM4OS04MjYyLWEyMmI5NmM3Yzk4ZH08L1VuaXF1ZUlk
ZW50aWZpZXI+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBG
aWxlcyI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVC
LTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgICAgPEV4dGVuc2lvbnM+aDto
cHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPg0KKyAgICA8L0ZpbHRlcj4NCisgICAg
PEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXNcZ2VuZXJhdGVkIj4NCisgICAgICA8VW5pcXVl
SWRlbnRpZmllcj57MDk0ZjcxMTUtMzVkMy00YzYzLTg3MGMtYWI1ZjM5M2RjMmMyfTwvVW5pcXVl
SWRlbnRpZmllcj4NCisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVy
IEZpbGVzXHRpbWluZyI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezVmNTc0MmU5LTE1ZTEt
NDNiNC1iMWU3LTBjMTE4YmUxNGUwNH08L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgIDwvRmlsdGVy
Pg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlc1xkZXBncmFwaCI+DQorICAgICAg
PFVuaXF1ZUlkZW50aWZpZXI+e2M0MDA3ZTM1LTNjMTEtNDRkNi05NWY3LWJiODFkYjUyODA2OH08
L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgIDwvRmlsdGVyPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8
SXRlbUdyb3VwPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkJ1aWx0SW5GdW5jdGlvbkVtdWxh
dG9yLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9D
bENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iQ29tcGlsZXIuY3BwIj4NCisgICAg
ICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJkZWJ1Zy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
IkRldGVjdENhbGxEZXB0aC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkRpYWdub3N0
aWNzLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9D
bENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRGlyZWN0aXZlSGFuZGxlci5jcHAi
Pg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxl
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkZvckxvb3BVbnJvbGwuY3BwIj4NCisgICAgICA8
RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSJJbmZvU2luay5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
IkluaXRpYWxpemUuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0K
KyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJJbml0aWFsaXplRGxs
LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENv
bXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5j
cHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21w
aWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkludGVybWVkaWF0ZS5jcHAiPg0KKyAgICAg
IDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9ImludGVybU91dC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNl
IEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9IkludGVybVRyYXZlcnNlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0Zp
bHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iTWFwTG9u
Z1ZhcmlhYmxlTmFtZXMuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVy
Pg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJvc3NvdXJjZV93
aW4uY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0Ns
Q29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJwYXJzZUNvbnN0LmNwcCI+DQorICAg
ICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iUG9vbEFsbG9jLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iUXVhbGlmaWVyQWxpdmUuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwv
RmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJSZW1v
dmVUcmVlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAg
PC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iU2hhZGVyTGFuZy5jcHAiPg0K
KyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlN5bWJvbFRhYmxlLmNwcCI+DQorICAgICAgPEZpbHRl
cj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0idXRpbC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlZhbGlkYXRl
TGltaXRhdGlvbnMuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0K
KyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJWYXJpYWJsZUluZm8u
Y3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29t
cGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJWYXJpYWJsZVBhY2tlci5jcHAiPg0KKyAg
ICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Imdsc2xhbmdfbGV4LmNwcCI+DQorICAgICAgPEZpbHRlcj5T
b3VyY2UgRmlsZXNcZ2VuZXJhdGVkPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Imdsc2xhbmdfdGFiLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXNcZ2VuZXJhdGVkPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9ImRlcGdyYXBoXERlcGVuZGVuY3lHcmFwaC5jcHAiPg0KKyAgICAgIDxG
aWx0ZXI+U291cmNlIEZpbGVzXGRlcGdyYXBoPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImRlcGdyYXBoXERlcGVuZGVuY3lHcmFwaEJ1aWxkZXIu
Y3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xkZXBncmFwaDwvRmlsdGVyPg0KKyAg
ICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJkZXBncmFwaFxEZXBlbmRl
bmN5R3JhcGhPdXRwdXQuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xkZXBncmFw
aDwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJk
ZXBncmFwaFxEZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291
cmNlIEZpbGVzXGRlcGdyYXBoPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9InRpbWluZ1xSZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nLmNwcCI+
DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcdGltaW5nPC9GaWx0ZXI+DQorICAgIDwvQ2xD
b21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InRpbWluZ1xSZXN0cmljdFZlcnRleFNo
YWRlclRpbWluZy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXHRpbWluZzwvRmls
dGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx0aGly
ZF9wYXJ0eVxjb21waWxlclxBcnJheUJvdW5kc0NsYW1wZXIuY3BwIj4NCisgICAgICA8RmlsdGVy
PlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJJbml0aWFsaXplR0xQb3NpdGlvbi5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291
cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IkRldGVjdERpc2NvbnRpbnVpdHkuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBG
aWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSJPdXRwdXRITFNMLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4N
CisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iU2VhcmNoU3ltYm9s
LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENv
bXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVHJhbnNsYXRvckhMU0wuY3BwIj4NCisg
ICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJVbmZvbGRTaG9ydENpcmN1aXQuY3BwIj4NCisgICAgICA8
RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSJVbmlmb3JtLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmls
ZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Q29kZUdlbi5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAg
IDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlRyYW5zbGF0b3JHTFNMLmNw
cCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBp
bGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVHJhbnNsYXRvckVTU0wuY3BwIj4NCisgICAg
ICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJPdXRwdXRFU1NMLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iT3V0cHV0R0xTTC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ik91dHB1dEdM
U0xCYXNlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAg
PC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVmVyc2lvbkdMU0wuY3BwIj4N
CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJVbmZvbGRTaG9ydENpcmN1aXRBU1QuY3BwIj4NCisg
ICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJQYXJzZUNvbnRleHQuY3BwIj4NCisgICAgICA8RmlsdGVy
PlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgIDwvSXRlbUdyb3Vw
Pg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJCYXNlVHlwZXMuaCI+
DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCI+DQor
ICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQ29tbW9uLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVy
IEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IkNvbnN0YW50VW5pb24uaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRl
cj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iZGVidWcuaCI+
DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRGV0ZWN0Q2FsbERlcHRoLmgiPg0KKyAgICAgIDxG
aWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9IkRpYWdub3N0aWNzLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IkRpcmVjdGl2ZUhhbmRsZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRl
cj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRm9yTG9vcFVu
cm9sbC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0Ns
SW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJJbmZvU2luay5oIj4NCisgICAgICA8
RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJJbml0aWFsaXplLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IkluaXRpYWxpemVEbGwuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iSW5pdGlhbGl6ZUds
b2JhbHMuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9D
bEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iSW5pdGlhbGl6ZVBhcnNlQ29udGV4
dC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5j
bHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJpbnRlcm1lZGlhdGUuaCI+DQorICAgICAg
PEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0ibG9jYWxpbnRlcm1lZGlhdGUuaCI+DQorICAgICAgPEZpbHRlcj5I
ZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIg
RmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iTU1hcC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8
L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJvc2luY2x1ZGUuaCI+DQorICAg
ICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iUG9vbEFsbG9jLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVy
IEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IlF1YWxpZmllckFsaXZlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlJlbW92ZVRy
ZWUuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbElu
Y2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUmVuYW1lRnVuY3Rpb24uaCI+DQorICAg
ICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5caW5jbHVkZVxHTFNMQU5HXFNoYWRlckxhbmcuaCI+
DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iU2hIYW5kbGUuaCI+DQorICAgICAgPEZpbHRlcj5I
ZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iU3ltYm9sVGFibGUuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0Zp
bHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVHlwZXMu
aCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1
ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0idXRpbC5oIj4NCisgICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJWYWxpZGF0ZUxpbWl0YXRpb25zLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IlZhcmlhYmxlSW5mby5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0K
KyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJWYXJpYWJsZVBhY2tl
ci5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5j
bHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJnbHNsYW5nX3RhYi5oIj4NCisgICAgICA8
RmlsdGVyPkhlYWRlciBGaWxlc1xnZW5lcmF0ZWQ8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0idGltaW5nXFJlc3RyaWN0RnJhZ21lbnRTaGFkZXJU
aW1pbmcuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcdGltaW5nPC9GaWx0ZXI+DQor
ICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InRpbWluZ1xSZXN0cmlj
dFZlcnRleFNoYWRlclRpbWluZy5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1x0aW1p
bmc8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
ZGVwZ3JhcGhcRGVwZW5kZW5jeUdyYXBoLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVz
XGRlcGdyYXBoPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9ImRlcGdyYXBoXERlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuaCI+DQorICAgICAgPEZpbHRl
cj5IZWFkZXIgRmlsZXNcZGVwZ3JhcGg8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iZGVwZ3JhcGhcRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmgiPg0K
KyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXGRlcGdyYXBoPC9GaWx0ZXI+DQorICAgIDwvQ2xJ
bmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ikhhc2hOYW1lcy5oIj4NCisgICAgICA8
RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJJbml0aWFsaXplR0xQb3NpdGlvbi5oIj4NCisgICAgICA8RmlsdGVy
PkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlx0aGlyZF9wYXJ0eVxjb21waWxlclxBcnJheUJvdW5kc0NsYW1wZXIuaCI+
DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRGV0ZWN0RGlzY29udGludWl0eS5oIj4NCisgICAg
ICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJPdXRwdXRITFNMLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVy
IEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IlNlYXJjaFN5bWJvbC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVy
Pg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJUcmFuc2xhdG9y
SExTTC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0Ns
SW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJVbmZvbGRTaG9ydENpcmN1aXQuaCI+
DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVW5pZm9ybS5oIj4NCisgICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJUcmFuc2xhdG9yR0xTTC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwv
RmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJUcmFu
c2xhdG9yRVNTTC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAg
ICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJPdXRwdXRFU1NMLmgiPg0K
KyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ik91dHB1dEdMU0wuaCI+DQorICAgICAgPEZpbHRlcj5I
ZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iT3V0cHV0R0xTTEJhc2UuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8
L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVmVy
c2lvbkdMU0wuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAg
PC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVW5mb2xkU2hvcnRDaXJjdWl0
QVNULmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJ
bmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlBhcnNlQ29udGV4dC5oIj4NCisgICAg
ICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJOb2RlU2VhcmNoLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVy
IEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8
SXRlbUdyb3VwPg0KKyAgICA8Q3VzdG9tQnVpbGQgSW5jbHVkZT0iZ2xzbGFuZy5sIj4NCisgICAg
ICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0N1c3RvbUJ1aWxkPg0KKyAg
ICA8Q3VzdG9tQnVpbGQgSW5jbHVkZT0iZ2xzbGFuZy55Ij4NCisgICAgICA8RmlsdGVyPlNvdXJj
ZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0N1c3RvbUJ1aWxkPg0KKyAgPC9JdGVtR3JvdXA+DQor
PC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci91dGlsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdXRpbC5jcHAJKHJldmlzaW9uIDE1OTUzMikK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci91dGlsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNCwzMCArNCwyNSBAQAogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
IC8vCiAKLSNpbmNsdWRlIDxtYXRoLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSAi
Y29tcGlsZXIvdXRpbC5oIgogCi0jaW5jbHVkZSAidXRpbC5oIgorI2luY2x1ZGUgPGxpbWl0cz4K
IAotI2lmZGVmIF9NU0NfVkVSCi0gICAgI2luY2x1ZGUgPGxvY2FsZS5oPgotI2Vsc2UKLSAgICAj
aW5jbHVkZSA8c3N0cmVhbT4KLSNlbmRpZgorI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9udW1lcmljX2xleC5oIgogCi1kb3VibGUgYXRvZl9kb3QoY29uc3QgY2hhciAqc3RyKQorYm9v
bCBhdG9mX2NsYW1wKGNvbnN0IGNoYXIgKnN0ciwgZmxvYXQgKnZhbHVlKQogewotI2lmZGVmIF9N
U0NfVkVSCi0gICAgX2xvY2FsZV90IGwgPSBfY3JlYXRlX2xvY2FsZShMQ19OVU1FUklDLCAiQyIp
OwotICAgIGRvdWJsZSByZXN1bHQgPSBfYXRvZl9sKHN0ciwgbCk7Ci0gICAgX2ZyZWVfbG9jYWxl
KGwpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIGRvdWJsZSByZXN1bHQ7Ci0gICAg
c3RkOjppc3RyaW5nc3RyZWFtIHMoc3RyKTsKLSAgICBzdGQ6OmxvY2FsZSBsKCJDIik7Ci0gICAg
cy5pbWJ1ZShsKTsKLSAgICBzID4+IHJlc3VsdDsKLSAgICByZXR1cm4gcmVzdWx0OwotI2VuZGlm
CisgICAgYm9vbCBzdWNjZXNzID0gcHA6Om51bWVyaWNfbGV4X2Zsb2F0KHN0ciwgdmFsdWUpOwor
ICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgKnZhbHVlID0gc3RkOjpudW1lcmljX2xpbWl0czxm
bG9hdD46Om1heCgpOworICAgIHJldHVybiBzdWNjZXNzOwogfQorCitib29sIGF0b2lfY2xhbXAo
Y29uc3QgY2hhciAqc3RyLCBpbnQgKnZhbHVlKQoreworICAgIGJvb2wgc3VjY2VzcyA9IHBwOjpu
dW1lcmljX2xleF9pbnQoc3RyLCB2YWx1ZSk7CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICAq
dmFsdWUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOworICAgIHJldHVybiBzdWNj
ZXNzOworfQorCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdXRp
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci91
dGlsLmgJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci91dGlsLmgJKHdvcmtpbmcgY29weSkKQEAgLTcsMTUgKzcsMTQgQEAKICNpZm5kZWYg
Q09NUElMRVJfVVRJTF9ICiAjZGVmaW5lIENPTVBJTEVSX1VUSUxfSAogCi0jaWZkZWYgX19jcGx1
c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCisvLyBhdG9mX2NsYW1wIGlzIGxpa2UgYXRvZiBi
dXQKKy8vICAgMS4gaXQgZm9yY2VzIEMgbG9jYWxlLCBpLmUuIGZvcmNpbmcgJy4nIGFzIGRlY2lt
YWwgcG9pbnQuCisvLyAgIDIuIGl0IGNsYW1wcyB0aGUgdmFsdWUgdG8gLUZMVF9NQVggb3IgRkxU
X01BWCBpZiBvdmVyZmxvdyBoYXBwZW5zLgorLy8gUmV0dXJuIGZhbHNlIGlmIG92ZXJmbG93IGhh
cHBlbnMuCitleHRlcm4gYm9vbCBhdG9mX2NsYW1wKGNvbnN0IGNoYXIgKnN0ciwgZmxvYXQgKnZh
bHVlKTsKIAotLy8gYXRvZl9kb3QgaXMgbGlrZSBhdG9mIGJ1dCBmb3JjaW5nIEMgbG9jYWxlLCBp
LmUuIGZvcmNpbmcgJy4nIGFzIGRlY2ltYWwgcG9pbnQuCi1kb3VibGUgYXRvZl9kb3QoY29uc3Qg
Y2hhciAqc3RyKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19IC8vIGVuZCBleHRlcm4gIkMiCi0j
ZW5kaWYKKy8vIElmIG92ZXJmbG93IGhhcHBlbnMsIGNsYW1wIHRoZSB2YWx1ZSB0byBJTlRfTUlO
IG9yIElOVF9NQVguCisvLyBSZXR1cm4gZmFsc2UgaWYgb3ZlcmZsb3cgaGFwcGVucy4KK2V4dGVy
biBib29sIGF0b2lfY2xhbXAoY29uc3QgY2hhciAqc3RyLCBpbnQgKnZhbHVlKTsKIAogI2VuZGlm
IC8vIENPTVBJTEVSX1VUSUxfSApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaC5j
cHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00LDkg
KzQsNyBAQAogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCiAKLSNpZiBkZWZpbmVk
KF9NU0NfVkVSKQogI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ3MTgpCi0jZW5kaWYKIAogI2lu
Y2x1ZGUgImNvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaC5oIgogI2luY2x1ZGUgImNv
bXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuaCIKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhCdWls
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5jcHAJKHJldmlzaW9uIDE1OTUzMikK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRl
bmN5R3JhcGhCdWlsZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNyBAQCB2b2lk
IFREZXBlbmRlbmN5R3JhcGhCdWlsZGVyOjp2aXNpdFN5bWJvCiBib29sIFREZXBlbmRlbmN5R3Jh
cGhCdWlsZGVyOjp2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSogaW50ZXJt
QmluYXJ5KQogewogICAgIFRPcGVyYXRvciBvcCA9IGludGVybUJpbmFyeS0+Z2V0T3AoKTsKLSAg
ICBpZiAob3AgPT0gRU9wSW5pdGlhbGl6ZSB8fCBpbnRlcm1CaW5hcnktPm1vZGlmaWVzU3RhdGUo
KSkKKyAgICBpZiAob3AgPT0gRU9wSW5pdGlhbGl6ZSB8fCBpbnRlcm1CaW5hcnktPmlzQXNzaWdu
bWVudCgpKQogICAgICAgICB2aXNpdEFzc2lnbm1lbnQoaW50ZXJtQmluYXJ5KTsKICAgICBlbHNl
IGlmIChvcCA9PSBFT3BMb2dpY2FsQW5kIHx8IG9wID09IEVPcExvZ2ljYWxPcikKICAgICAgICAg
dmlzaXRMb2dpY2FsT3AoaW50ZXJtQmluYXJ5KTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9FeHByZXNzaW9uUGFyc2VyLmNwcAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCArMSwxNSBAQAotLyogQSBCaXNvbiBwYXJzZXIsIG1h
ZGUgYnkgR05VIEJpc29uIDIuMy4gICovCisvKiBBcHBsZSBOb3RlOiBGb3IgdGhlIGF2b2lkYW5j
ZSBvZiBkb3VidCwgQXBwbGUgZWxlY3RzIHRvIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgQlNEIGxpY2Vuc2UuICovCiAKLS8qIFNrZWxldG9uIGltcGxlbWVudGF0
aW9uIGZvciBCaXNvbidzIFlhY2MtbGlrZSBwYXJzZXJzIGluIEMKKy8qIEEgQmlzb24gcGFyc2Vy
LCBtYWRlIGJ5IEdOVSBCaXNvbiAzLjAuMS4gICovCiAKLSAgIENvcHlyaWdodCAoQykgMTk4NCwg
MTk4OSwgMTk5MCwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNgotICAg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisvKiBCaXNvbiBpbXBsZW1lbnRhdGlvbiBm
b3IgWWFjYy1saWtlIHBhcnNlcnMgaW4gQwogCi0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgQ29weXJpZ2h0
IChDKSAxOTg0LCAxOTg5LTE5OTAsIDIwMDAtMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0gICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0g
ICBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVp
dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgogCiAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCkBAIC0xNiw5ICsxNyw3IEBA
CiAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogCiAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQotICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhl
IEZyZWUgU29mdHdhcmUKLSAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4gICovCisgICBhbG9u
ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj
ZW5zZXMvPi4gICovCiAKIC8qIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgY3JlYXRl
IGEgbGFyZ2VyIHdvcmsgdGhhdCBjb250YWlucwogICAgcGFydCBvciBhbGwgb2YgdGhlIEJpc29u
IHBhcnNlciBza2VsZXRvbiBhbmQgZGlzdHJpYnV0ZSB0aGF0IHdvcmsKQEAgLTQ3LDcgKzQ2LDcg
QEAKICNkZWZpbmUgWVlCSVNPTiAxCiAKIC8qIEJpc29uIHZlcnNpb24uICAqLwotI2RlZmluZSBZ
WUJJU09OX1ZFUlNJT04gIjIuMyIKKyNkZWZpbmUgWVlCSVNPTl9WRVJTSU9OICIzLjAuMSIKIAog
LyogU2tlbGV0b24gbmFtZS4gICovCiAjZGVmaW5lIFlZU0tFTEVUT05fTkFNRSAieWFjYy5jIgpA
QCAtNTUsNTAgKzU0LDE5IEBACiAvKiBQdXJlIHBhcnNlcnMuICAqLwogI2RlZmluZSBZWVBVUkUg
MQogCi0vKiBVc2luZyBsb2NhdGlvbnMuICAqLwotI2RlZmluZSBZWUxTUF9ORUVERUQgMAotCi0v
KiBTdWJzdGl0dXRlIHRoZSB2YXJpYWJsZSBhbmQgZnVuY3Rpb24gbmFtZXMuICAqLwotI2RlZmlu
ZSB5eXBhcnNlIHBwcGFyc2UKLSNkZWZpbmUgeXlsZXggICBwcGxleAotI2RlZmluZSB5eWVycm9y
IHBwZXJyb3IKLSNkZWZpbmUgeXlsdmFsICBwcGx2YWwKLSNkZWZpbmUgeXljaGFyICBwcGNoYXIK
LSNkZWZpbmUgeXlkZWJ1ZyBwcGRlYnVnCi0jZGVmaW5lIHl5bmVycnMgcHBuZXJycworLyogUHVz
aCBwYXJzZXJzLiAgKi8KKyNkZWZpbmUgWVlQVVNIIDAKIAotCi0vKiBUb2tlbnMuICAqLwotI2lm
bmRlZiBZWVRPS0VOVFlQRQotIyBkZWZpbmUgWVlUT0tFTlRZUEUKLSAgIC8qIFB1dCB0aGUgdG9r
ZW5zIGludG8gdGhlIHN5bWJvbCB0YWJsZSwgc28gdGhhdCBHREIgYW5kIG90aGVyIGRlYnVnZ2Vy
cwotICAgICAga25vdyBhYm91dCB0aGVtLiAgKi8KLSAgIGVudW0geXl0b2tlbnR5cGUgewotICAg
ICBUT0tfQ09OU1RfSU5UID0gMjU4LAotICAgICBUT0tfT1BfT1IgPSAyNTksCi0gICAgIFRPS19P
UF9BTkQgPSAyNjAsCi0gICAgIFRPS19PUF9ORSA9IDI2MSwKLSAgICAgVE9LX09QX0VRID0gMjYy
LAotICAgICBUT0tfT1BfR0UgPSAyNjMsCi0gICAgIFRPS19PUF9MRSA9IDI2NCwKLSAgICAgVE9L
X09QX1JJR0hUID0gMjY1LAotICAgICBUT0tfT1BfTEVGVCA9IDI2NiwKLSAgICAgVE9LX1VOQVJZ
ID0gMjY3Ci0gICB9OwotI2VuZGlmCi0vKiBUb2tlbnMuICAqLwotI2RlZmluZSBUT0tfQ09OU1Rf
SU5UIDI1OAotI2RlZmluZSBUT0tfT1BfT1IgMjU5Ci0jZGVmaW5lIFRPS19PUF9BTkQgMjYwCi0j
ZGVmaW5lIFRPS19PUF9ORSAyNjEKLSNkZWZpbmUgVE9LX09QX0VRIDI2MgotI2RlZmluZSBUT0tf
T1BfR0UgMjYzCi0jZGVmaW5lIFRPS19PUF9MRSAyNjQKLSNkZWZpbmUgVE9LX09QX1JJR0hUIDI2
NQotI2RlZmluZSBUT0tfT1BfTEVGVCAyNjYKLSNkZWZpbmUgVE9LX1VOQVJZIDI2NworLyogUHVs
bCBwYXJzZXJzLiAgKi8KKyNkZWZpbmUgWVlQVUxMIDEKIAogCisvKiBTdWJzdGl0dXRlIHRoZSB2
YXJpYWJsZSBhbmQgZnVuY3Rpb24gbmFtZXMuICAqLworI2RlZmluZSB5eXBhcnNlICAgICAgICAg
cHBwYXJzZQorI2RlZmluZSB5eWxleCAgICAgICAgICAgcHBsZXgKKyNkZWZpbmUgeXllcnJvciAg
ICAgICAgIHBwZXJyb3IKKyNkZWZpbmUgeXlkZWJ1ZyAgICAgICAgIHBwZGVidWcKKyNkZWZpbmUg
eXluZXJycyAgICAgICAgIHBwbmVycnMKIAogCiAvKiBDb3B5IHRoZSBmaXJzdCBwYXJ0IG9mIHVz
ZXIgZGVjbGFyYXRpb25zLiAgKi8KQEAgLTEyNSw2ICs5MywxMiBAQAogCiAjaW5jbHVkZSAiRXhw
cmVzc2lvblBhcnNlci5oIgogCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyNpbmNsdWRlIDxtYWxs
b2MuaD4KKyNlbHNlCisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKwogI2luY2x1ZGUgPGNh
c3NlcnQ+CiAjaW5jbHVkZSA8c3N0cmVhbT4KIApAQCAtMTU4LDEwICsxMzIsMTQgQEAgc3RhdGlj
IGludCB5eWxleChZWVNUWVBFKiBsdmFscCwgQ29udGV4dAogc3RhdGljIHZvaWQgeXllcnJvcihD
b250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pOwogCiAKLS8qIEVuYWJsaW5nIHRy
YWNlcy4gICovCi0jaWZuZGVmIFlZREVCVUcKLSMgZGVmaW5lIFlZREVCVUcgMAotI2VuZGlmCisK
KyMgaWZuZGVmIFlZX05VTExQVFIKKyMgIGlmIGRlZmluZWQgX19jcGx1c3BsdXMgJiYgMjAxMTAz
TCA8PSBfX2NwbHVzcGx1cworIyAgIGRlZmluZSBZWV9OVUxMUFRSIG51bGxwdHIKKyMgIGVsc2UK
KyMgICBkZWZpbmUgWVlfTlVMTFBUUiAwCisjICBlbmRpZgorIyBlbmRpZgogCiAvKiBFbmFibGlu
ZyB2ZXJib3NlIGVycm9yIG1lc3NhZ2VzLiAgKi8KICNpZmRlZiBZWUVSUk9SX1ZFUkJPU0UKQEAg
LTE3MSwyNCArMTQ5LDQ4IEBAIHN0YXRpYyB2b2lkIHl5ZXJyb3IoQ29udGV4dCogY29udGV4dCwg
Y28KICMgZGVmaW5lIFlZRVJST1JfVkVSQk9TRSAwCiAjZW5kaWYKIAotLyogRW5hYmxpbmcgdGhl
IHRva2VuIHRhYmxlLiAgKi8KLSNpZm5kZWYgWVlUT0tFTl9UQUJMRQotIyBkZWZpbmUgWVlUT0tF
Tl9UQUJMRSAwCisKKy8qIERlYnVnIHRyYWNlcy4gICovCisjaWZuZGVmIFlZREVCVUcKKyMgZGVm
aW5lIFlZREVCVUcgMAorI2VuZGlmCisjaWYgWVlERUJVRworZXh0ZXJuIGludCBwcGRlYnVnOwor
I2VuZGlmCisKKy8qIFRva2VuIHR5cGUuICAqLworI2lmbmRlZiBZWVRPS0VOVFlQRQorIyBkZWZp
bmUgWVlUT0tFTlRZUEUKKyAgZW51bSB5eXRva2VudHlwZQorICB7CisgICAgVE9LX0NPTlNUX0lO
VCA9IDI1OCwKKyAgICBUT0tfT1BfT1IgPSAyNTksCisgICAgVE9LX09QX0FORCA9IDI2MCwKKyAg
ICBUT0tfT1BfRVEgPSAyNjEsCisgICAgVE9LX09QX05FID0gMjYyLAorICAgIFRPS19PUF9MRSA9
IDI2MywKKyAgICBUT0tfT1BfR0UgPSAyNjQsCisgICAgVE9LX09QX0xFRlQgPSAyNjUsCisgICAg
VE9LX09QX1JJR0hUID0gMjY2LAorICAgIFRPS19VTkFSWSA9IDI2NworICB9OwogI2VuZGlmCiAK
Ky8qIFZhbHVlIHR5cGUuICAqLwogI2lmICEgZGVmaW5lZCBZWVNUWVBFICYmICEgZGVmaW5lZCBZ
WVNUWVBFX0lTX0RFQ0xBUkVECiB0eXBlZGVmIGludCBZWVNUWVBFOwotIyBkZWZpbmUgeXlzdHlw
ZSBZWVNUWVBFIC8qIG9ic29sZXNjZW50OyB3aWxsIGJlIHdpdGhkcmF3biAqLwotIyBkZWZpbmUg
WVlTVFlQRV9JU19ERUNMQVJFRCAxCiAjIGRlZmluZSBZWVNUWVBFX0lTX1RSSVZJQUwgMQorIyBk
ZWZpbmUgWVlTVFlQRV9JU19ERUNMQVJFRCAxCiAjZW5kaWYKIAogCiAKLS8qIENvcHkgdGhlIHNl
Y29uZCBwYXJ0IG9mIHVzZXIgZGVjbGFyYXRpb25zLiAgKi8KK2ludCBwcHBhcnNlIChDb250ZXh0
ICpjb250ZXh0KTsKKwogCiAKLS8qIExpbmUgMjE2IG9mIHlhY2MuYy4gICovCisvKiBDb3B5IHRo
ZSBzZWNvbmQgcGFydCBvZiB1c2VyIGRlY2xhcmF0aW9ucy4gICovCisKIAogCiAjaWZkZWYgc2hv
cnQKQEAgLTIwMywxMSArMjA1LDggQEAgdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHl5dHlwZV91aW50
ODsKIAogI2lmZGVmIFlZVFlQRV9JTlQ4CiB0eXBlZGVmIFlZVFlQRV9JTlQ4IHl5dHlwZV9pbnQ4
OwotI2VsaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKLSAg
ICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQotdHlwZWRlZiBz
aWduZWQgY2hhciB5eXR5cGVfaW50ODsKICNlbHNlCi10eXBlZGVmIHNob3J0IGludCB5eXR5cGVf
aW50ODsKK3R5cGVkZWYgc2lnbmVkIGNoYXIgeXl0eXBlX2ludDg7CiAjZW5kaWYKIAogI2lmZGVm
IFlZVFlQRV9VSU5UMTYKQEAgLTIyNyw4ICsyMjYsNyBAQCB0eXBlZGVmIHNob3J0IGludCB5eXR5
cGVfaW50MTY7CiAjICBkZWZpbmUgWVlTSVpFX1QgX19TSVpFX1RZUEVfXwogIyBlbGlmIGRlZmlu
ZWQgc2l6ZV90CiAjICBkZWZpbmUgWVlTSVpFX1Qgc2l6ZV90Ci0jIGVsaWYgISBkZWZpbmVkIFlZ
U0laRV9UICYmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCi0g
ICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKKyMgZWxpZiAh
IGRlZmluZWQgWVlTSVpFX1QKICMgIGluY2x1ZGUgPHN0ZGRlZi5oPiAvKiBJTkZSSU5HRVMgT04g
VVNFUiBOQU1FIFNQQUNFICovCiAjICBkZWZpbmUgWVlTSVpFX1Qgc2l6ZV90CiAjIGVsc2UKQEAg
LTI0MiwzOSArMjQwLDY4IEBAIHR5cGVkZWYgc2hvcnQgaW50IHl5dHlwZV9pbnQxNjsKICMgaWYg
ZGVmaW5lZCBZWUVOQUJMRV9OTFMgJiYgWVlFTkFCTEVfTkxTCiAjICBpZiBFTkFCTEVfTkxTCiAj
ICAgaW5jbHVkZSA8bGliaW50bC5oPiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICov
Ci0jICAgZGVmaW5lIFlZXyhtc2dpZCkgZGdldHRleHQgKCJiaXNvbi1ydW50aW1lIiwgbXNnaWQp
CisjICAgZGVmaW5lIFlZXyhNc2dpZCkgZGdldHRleHQgKCJiaXNvbi1ydW50aW1lIiwgTXNnaWQp
CiAjICBlbmRpZgogIyBlbmRpZgogIyBpZm5kZWYgWVlfCi0jICBkZWZpbmUgWVlfKG1zZ2lkKSBt
c2dpZAorIyAgZGVmaW5lIFlZXyhNc2dpZCkgTXNnaWQKKyMgZW5kaWYKKyNlbmRpZgorCisjaWZu
ZGVmIFlZX0FUVFJJQlVURQorIyBpZiAoZGVmaW5lZCBfX0dOVUNfXyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgJiYgKDIgPCBfX0dOVUNfXyB8
fCAoX19HTlVDX18gPT0gMiAmJiA5NiA8PSBfX0dOVUNfTUlOT1JfXykpKSAgXAorICAgICB8fCBk
ZWZpbmVkIF9fU1VOUFJPX0MgJiYgMHg1MTEwIDw9IF9fU1VOUFJPX0MKKyMgIGRlZmluZSBZWV9B
VFRSSUJVVEUoU3BlYykgX19hdHRyaWJ1dGVfXyhTcGVjKQorIyBlbHNlCisjICBkZWZpbmUgWVlf
QVRUUklCVVRFKFNwZWMpIC8qIGVtcHR5ICovCisjIGVuZGlmCisjZW5kaWYKKworI2lmbmRlZiBZ
WV9BVFRSSUJVVEVfUFVSRQorIyBkZWZpbmUgWVlfQVRUUklCVVRFX1BVUkUgICBZWV9BVFRSSUJV
VEUgKChfX3B1cmVfXykpCisjZW5kaWYKKworI2lmbmRlZiBZWV9BVFRSSUJVVEVfVU5VU0VECisj
IGRlZmluZSBZWV9BVFRSSUJVVEVfVU5VU0VEIFlZX0FUVFJJQlVURSAoKF9fdW51c2VkX18pKQor
I2VuZGlmCisKKyNpZiAhZGVmaW5lZCBfTm9yZXR1cm4gXAorICAgICAmJiAoIWRlZmluZWQgX19T
VERDX1ZFUlNJT05fXyB8fCBfX1NURENfVkVSU0lPTl9fIDwgMjAxMTEyKQorIyBpZiBkZWZpbmVk
IF9NU0NfVkVSICYmIDEyMDAgPD0gX01TQ19WRVIKKyMgIGRlZmluZSBfTm9yZXR1cm4gX19kZWNs
c3BlYyAobm9yZXR1cm4pCisjIGVsc2UKKyMgIGRlZmluZSBfTm9yZXR1cm4gWVlfQVRUUklCVVRF
ICgoX19ub3JldHVybl9fKSkKICMgZW5kaWYKICNlbmRpZgogCiAvKiBTdXBwcmVzcyB1bnVzZWQt
dmFyaWFibGUgd2FybmluZ3MgYnkgInVzaW5nIiBFLiAgKi8KICNpZiAhIGRlZmluZWQgbGludCB8
fCBkZWZpbmVkIF9fR05VQ19fCi0jIGRlZmluZSBZWVVTRShlKSAoKHZvaWQpIChlKSkKKyMgZGVm
aW5lIFlZVVNFKEUpICgodm9pZCkgKEUpKQogI2Vsc2UKLSMgZGVmaW5lIFlZVVNFKGUpIC8qIGVt
cHR5ICovCisjIGRlZmluZSBZWVVTRShFKSAvKiBlbXB0eSAqLwogI2VuZGlmCiAKLS8qIElkZW50
aXR5IGZ1bmN0aW9uLCB1c2VkIHRvIHN1cHByZXNzIHdhcm5pbmdzIGFib3V0IGNvbnN0YW50IGNv
bmRpdGlvbnMuICAqLwotI2lmbmRlZiBsaW50Ci0jIGRlZmluZSBZWUlEKG4pIChuKQorI2lmIGRl
ZmluZWQgX19HTlVDX18gJiYgNDA3IDw9IF9fR05VQ19fICogMTAwICsgX19HTlVDX01JTk9SX18K
Ky8qIFN1cHByZXNzIGFuIGluY29ycmVjdCBkaWFnbm9zdGljIGFib3V0IHl5bHZhbCBiZWluZyB1
bmluaXRpYWxpemVkLiAgKi8KKyMgZGVmaW5lIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVE
X0JFR0lOIFwKKyAgICBfUHJhZ21hICgiR0NDIGRpYWdub3N0aWMgcHVzaCIpIFwKKyAgICBfUHJh
Z21hICgiR0NDIGRpYWdub3N0aWMgaWdub3JlZCBcIi1XdW5pbml0aWFsaXplZFwiIilcCisgICAg
X1ByYWdtYSAoIkdDQyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV21heWJlLXVuaW5pdGlhbGl6ZWRc
IiIpCisjIGRlZmluZSBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9FTkQgXAorICAgIF9Q
cmFnbWEgKCJHQ0MgZGlhZ25vc3RpYyBwb3AiKQogI2Vsc2UKLSNpZiAoZGVmaW5lZCBfX1NURENf
XyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAotICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVz
IHx8IGRlZmluZWQgX01TQ19WRVIpCi1zdGF0aWMgaW50Ci1ZWUlEIChpbnQgaSkKLSNlbHNlCi1z
dGF0aWMgaW50Ci1ZWUlEIChpKQotICAgIGludCBpOworIyBkZWZpbmUgWVlfSU5JVElBTF9WQUxV
RShWYWx1ZSkgVmFsdWUKICNlbmRpZgotewotICByZXR1cm4gaTsKLX0KKyNpZm5kZWYgWVlfSUdO
T1JFX01BWUJFX1VOSU5JVElBTElaRURfQkVHSU4KKyMgZGVmaW5lIFlZX0lHTk9SRV9NQVlCRV9V
TklOSVRJQUxJWkVEX0JFR0lOCisjIGRlZmluZSBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpF
RF9FTkQKKyNlbmRpZgorI2lmbmRlZiBZWV9JTklUSUFMX1ZBTFVFCisjIGRlZmluZSBZWV9JTklU
SUFMX1ZBTFVFKFZhbHVlKSAvKiBOb3RoaW5nLiAqLwogI2VuZGlmCiAKKwogI2lmICEgZGVmaW5l
ZCB5eW92ZXJmbG93IHx8IFlZRVJST1JfVkVSQk9TRQogCiAvKiBUaGUgcGFyc2VyIGludm9rZXMg
YWxsb2NhIG9yIG1hbGxvYzsgZGVmaW5lIHRoZSBuZWNlc3Nhcnkgc3ltYm9scy4gICovCkBAIC0y
OTIsMTEgKzMxOSwxMSBAQCBZWUlEIChpKQogIyAgICBkZWZpbmUgYWxsb2NhIF9hbGxvY2EKICMg
ICBlbHNlCiAjICAgIGRlZmluZSBZWVNUQUNLX0FMTE9DIGFsbG9jYQotIyAgICBpZiAhIGRlZmlu
ZWQgX0FMTE9DQV9IICYmICEgZGVmaW5lZCBfU1RETElCX0ggJiYgKGRlZmluZWQgX19TVERDX18g
fHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKLSAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8
fCBkZWZpbmVkIF9NU0NfVkVSKQorIyAgICBpZiAhIGRlZmluZWQgX0FMTE9DQV9IICYmICEgZGVm
aW5lZCBFWElUX1NVQ0NFU1MKICMgICAgIGluY2x1ZGUgPHN0ZGxpYi5oPiAvKiBJTkZSSU5HRVMg
T04gVVNFUiBOQU1FIFNQQUNFICovCi0jICAgICBpZm5kZWYgX1NURExJQl9ICi0jICAgICAgZGVm
aW5lIF9TVERMSUJfSCAxCisgICAgICAvKiBVc2UgRVhJVF9TVUNDRVNTIGFzIGEgd2l0bmVzcyBm
b3Igc3RkbGliLmguICAqLworIyAgICAgaWZuZGVmIEVYSVRfU1VDQ0VTUworIyAgICAgIGRlZmlu
ZSBFWElUX1NVQ0NFU1MgMAogIyAgICAgZW5kaWYKICMgICAgZW5kaWYKICMgICBlbmRpZgpAQCAt
MzA0LDggKzMzMSw4IEBAIFlZSUQgKGkpCiAjIGVuZGlmCiAKICMgaWZkZWYgWVlTVEFDS19BTExP
QwotICAgLyogUGFjaWZ5IEdDQydzIGBlbXB0eSBpZi1ib2R5JyB3YXJuaW5nLiAgKi8KLSMgIGRl
ZmluZSBZWVNUQUNLX0ZSRUUoUHRyKSBkbyB7IC8qIGVtcHR5ICovOyB9IHdoaWxlIChZWUlEICgw
KSkKKyAgIC8qIFBhY2lmeSBHQ0MncyAnZW1wdHkgaWYtYm9keScgd2FybmluZy4gICovCisjICBk
ZWZpbmUgWVlTVEFDS19GUkVFKFB0cikgZG8geyAvKiBlbXB0eSAqLzsgfSB3aGlsZSAoMCkKICMg
IGlmbmRlZiBZWVNUQUNLX0FMTE9DX01BWElNVU0KICAgICAvKiBUaGUgT1MgbWlnaHQgZ3VhcmFu
dGVlIG9ubHkgb25lIGd1YXJkIHBhZ2UgYXQgdGhlIGJvdHRvbSBvZiB0aGUgc3RhY2ssCiAgICAg
ICAgYW5kIGEgcGFnZSBzaXplIGNhbiBiZSBhcyBzbWFsbCBhcyA0MDk2IGJ5dGVzLiAgU28gd2Ug
Y2Fubm90IHNhZmVseQpAQCAtMzE5LDI1ICszNDYsMjMgQEAgWVlJRCAoaSkKICMgIGlmbmRlZiBZ
WVNUQUNLX0FMTE9DX01BWElNVU0KICMgICBkZWZpbmUgWVlTVEFDS19BTExPQ19NQVhJTVVNIFlZ
U0laRV9NQVhJTVVNCiAjICBlbmRpZgotIyAgaWYgKGRlZmluZWQgX19jcGx1c3BsdXMgJiYgISBk
ZWZpbmVkIF9TVERMSUJfSCBcCisjICBpZiAoZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiAhIGRlZmlu
ZWQgRVhJVF9TVUNDRVNTIFwKICAgICAgICAmJiAhICgoZGVmaW5lZCBZWU1BTExPQyB8fCBkZWZp
bmVkIG1hbGxvYykgXAotCSAgICAgJiYgKGRlZmluZWQgWVlGUkVFIHx8IGRlZmluZWQgZnJlZSkp
KQorICAgICAgICAgICAgICYmIChkZWZpbmVkIFlZRlJFRSB8fCBkZWZpbmVkIGZyZWUpKSkKICMg
ICBpbmNsdWRlIDxzdGRsaWIuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwot
IyAgIGlmbmRlZiBfU1RETElCX0gKLSMgICAgZGVmaW5lIF9TVERMSUJfSCAxCisjICAgaWZuZGVm
IEVYSVRfU1VDQ0VTUworIyAgICBkZWZpbmUgRVhJVF9TVUNDRVNTIDAKICMgICBlbmRpZgogIyAg
ZW5kaWYKICMgIGlmbmRlZiBZWU1BTExPQwogIyAgIGRlZmluZSBZWU1BTExPQyBtYWxsb2MKLSMg
ICBpZiAhIGRlZmluZWQgbWFsbG9jICYmICEgZGVmaW5lZCBfU1RETElCX0ggJiYgKGRlZmluZWQg
X19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKLSAgICAgfHwgZGVmaW5lZCBfX2Nw
bHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQorIyAgIGlmICEgZGVmaW5lZCBtYWxsb2MgJiYg
ISBkZWZpbmVkIEVYSVRfU1VDQ0VTUwogdm9pZCAqbWFsbG9jIChZWVNJWkVfVCk7IC8qIElORlJJ
TkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KICMgICBlbmRpZgogIyAgZW5kaWYKICMgIGlmbmRl
ZiBZWUZSRUUKICMgICBkZWZpbmUgWVlGUkVFIGZyZWUKLSMgICBpZiAhIGRlZmluZWQgZnJlZSAm
JiAhIGRlZmluZWQgX1NURExJQl9IICYmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19D
OTlfX0ZVTkNfXyBcCi0gICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVND
X1ZFUikKKyMgICBpZiAhIGRlZmluZWQgZnJlZSAmJiAhIGRlZmluZWQgRVhJVF9TVUNDRVNTCiB2
b2lkIGZyZWUgKHZvaWQgKik7IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KICMg
ICBlbmRpZgogIyAgZW5kaWYKQEAgLTM0NywxNCArMzcyLDE0IEBAIHZvaWQgZnJlZSAodm9pZCAq
KTsgLyogSU5GUklOR0VTIE9OIFVTRVIKIAogI2lmICghIGRlZmluZWQgeXlvdmVyZmxvdyBcCiAg
ICAgICYmICghIGRlZmluZWQgX19jcGx1c3BsdXMgXAotCSB8fCAoZGVmaW5lZCBZWVNUWVBFX0lT
X1RSSVZJQUwgJiYgWVlTVFlQRV9JU19UUklWSUFMKSkpCisgICAgICAgICB8fCAoZGVmaW5lZCBZ
WVNUWVBFX0lTX1RSSVZJQUwgJiYgWVlTVFlQRV9JU19UUklWSUFMKSkpCiAKIC8qIEEgdHlwZSB0
aGF0IGlzIHByb3Blcmx5IGFsaWduZWQgZm9yIGFueSBzdGFjayBtZW1iZXIuICAqLwogdW5pb24g
eXlhbGxvYwogewotICB5eXR5cGVfaW50MTYgeXlzczsKLSAgWVlTVFlQRSB5eXZzOwotICB9Owor
ICB5eXR5cGVfaW50MTYgeXlzc19hbGxvYzsKKyAgWVlTVFlQRSB5eXZzX2FsbG9jOworfTsKIAog
LyogVGhlIHNpemUgb2YgdGhlIG1heGltdW0gZ2FwIGJldHdlZW4gb25lIGFsaWduZWQgc3RhY2sg
YW5kIHRoZSBuZXh0LiAgKi8KICMgZGVmaW5lIFlZU1RBQ0tfR0FQX01BWElNVU0gKHNpemVvZiAo
dW5pb24geXlhbGxvYykgLSAxKQpAQCAtMzY1LDQyICszOTAsNDYgQEAgdW5pb24geXlhbGxvYwog
ICAgICAoKE4pICogKHNpemVvZiAoeXl0eXBlX2ludDE2KSArIHNpemVvZiAoWVlTVFlQRSkpIFwK
ICAgICAgICsgWVlTVEFDS19HQVBfTUFYSU1VTSkKIAotLyogQ29weSBDT1VOVCBvYmplY3RzIGZy
b20gRlJPTSB0byBUTy4gIFRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGRvCi0gICBub3Qgb3Zl
cmxhcC4gICovCi0jIGlmbmRlZiBZWUNPUFkKLSMgIGlmIGRlZmluZWQgX19HTlVDX18gJiYgMSA8
IF9fR05VQ19fCi0jICAgZGVmaW5lIFlZQ09QWShUbywgRnJvbSwgQ291bnQpIFwKLSAgICAgIF9f
YnVpbHRpbl9tZW1jcHkgKFRvLCBGcm9tLCAoQ291bnQpICogc2l6ZW9mICgqKEZyb20pKSkKLSMg
IGVsc2UKLSMgICBkZWZpbmUgWVlDT1BZKFRvLCBGcm9tLCBDb3VudCkJCVwKLSAgICAgIGRvCQkJ
CQlcCi0JewkJCQkJXAotCSAgWVlTSVpFX1QgeXlpOwkJCQlcCi0JICBmb3IgKHl5aSA9IDA7IHl5
aSA8IChDb3VudCk7IHl5aSsrKQlcCi0JICAgIChUbylbeXlpXSA9IChGcm9tKVt5eWldOwkJXAot
CX0JCQkJCVwKLSAgICAgIHdoaWxlIChZWUlEICgwKSkKLSMgIGVuZGlmCi0jIGVuZGlmCisjIGRl
ZmluZSBZWUNPUFlfTkVFREVEIDEKIAogLyogUmVsb2NhdGUgU1RBQ0sgZnJvbSBpdHMgb2xkIGxv
Y2F0aW9uIHRvIHRoZSBuZXcgb25lLiAgVGhlCiAgICBsb2NhbCB2YXJpYWJsZXMgWVlTSVpFIGFu
ZCBZWVNUQUNLU0laRSBnaXZlIHRoZSBvbGQgYW5kIG5ldyBudW1iZXIgb2YKICAgIGVsZW1lbnRz
IGluIHRoZSBzdGFjaywgYW5kIFlZUFRSIGdpdmVzIHRoZSBuZXcgbG9jYXRpb24gb2YgdGhlCiAg
ICBzdGFjay4gIEFkdmFuY2UgWVlQVFIgdG8gYSBwcm9wZXJseSBhbGlnbmVkIGxvY2F0aW9uIGZv
ciB0aGUgbmV4dAogICAgc3RhY2suICAqLwotIyBkZWZpbmUgWVlTVEFDS19SRUxPQ0FURShTdGFj
aykJCQkJCVwKLSAgICBkbwkJCQkJCQkJCVwKLSAgICAgIHsJCQkJCQkJCQlcCi0JWVlTSVpFX1Qg
eXluZXdieXRlczsJCQkJCQlcCi0JWVlDT1BZICgmeXlwdHItPlN0YWNrLCBTdGFjaywgeXlzaXpl
KTsJCQkJXAotCVN0YWNrID0gJnl5cHRyLT5TdGFjazsJCQkJCQlcCi0JeXluZXdieXRlcyA9IHl5
c3RhY2tzaXplICogc2l6ZW9mICgqU3RhY2spICsgWVlTVEFDS19HQVBfTUFYSU1VTTsgXAotCXl5
cHRyICs9IHl5bmV3Ynl0ZXMgLyBzaXplb2YgKCp5eXB0cik7CQkJCVwKLSAgICAgIH0JCQkJCQkJ
CQlcCi0gICAgd2hpbGUgKFlZSUQgKDApKQorIyBkZWZpbmUgWVlTVEFDS19SRUxPQ0FURShTdGFj
a19hbGxvYywgU3RhY2spICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBZWVNJWkVfVCB5eW5ld2J5dGVzOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBZWUNPUFkg
KCZ5eXB0ci0+U3RhY2tfYWxsb2MsIFN0YWNrLCB5eXNpemUpOyAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBTdGFjayA9ICZ5eXB0ci0+U3RhY2tfYWxsb2M7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICB5eW5ld2J5dGVzID0geXlzdGFja3NpemUgKiBz
aXplb2YgKCpTdGFjaykgKyBZWVNUQUNLX0dBUF9NQVhJTVVNOyBcCisgICAgICAgIHl5cHRyICs9
IHl5bmV3Ynl0ZXMgLyBzaXplb2YgKCp5eXB0cik7ICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgd2hpbGUgKDApCiAKICNlbmRpZgogCisjaWYgZGVmaW5l
ZCBZWUNPUFlfTkVFREVEICYmIFlZQ09QWV9ORUVERUQKKy8qIENvcHkgQ09VTlQgb2JqZWN0cyBm
cm9tIFNSQyB0byBEU1QuICBUaGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBkbworICAgbm90IG92
ZXJsYXAuICAqLworIyBpZm5kZWYgWVlDT1BZCisjICBpZiBkZWZpbmVkIF9fR05VQ19fICYmIDEg
PCBfX0dOVUNfXworIyAgIGRlZmluZSBZWUNPUFkoRHN0LCBTcmMsIENvdW50KSBcCisgICAgICBf
X2J1aWx0aW5fbWVtY3B5IChEc3QsIFNyYywgKENvdW50KSAqIHNpemVvZiAoKihTcmMpKSkKKyMg
IGVsc2UKKyMgICBkZWZpbmUgWVlDT1BZKERzdCwgU3JjLCBDb3VudCkgICAgICAgICAgICAgIFwK
KyAgICAgIGRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBZ
WVNJWkVfVCB5eWk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBmb3IgKHl5
aSA9IDA7IHl5aSA8IChDb3VudCk7IHl5aSsrKSAgIFwKKyAgICAgICAgICAgIChEc3QpW3l5aV0g
PSAoU3JjKVt5eWldOyAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHdoaWxlICgwKQorIyAgZW5kaWYKKyMgZW5kaWYK
KyNlbmRpZiAvKiAhWVlDT1BZX05FRURFRCAqLworCiAvKiBZWUZJTkFMIC0tIFN0YXRlIG51bWJl
ciBvZiB0aGUgdGVybWluYXRpb24gc3RhdGUuICAqLwogI2RlZmluZSBZWUZJTkFMICAxNAogLyog
WVlMQVNUIC0tIExhc3QgaW5kZXggaW4gWVlUQUJMRS4gICovCkBAIC00MTIsMTcgKzQ0MSwxOSBA
QCB1bmlvbiB5eWFsbG9jCiAjZGVmaW5lIFlZTk5UUyAgMwogLyogWVlOUlVMRVMgLS0gTnVtYmVy
IG9mIHJ1bGVzLiAgKi8KICNkZWZpbmUgWVlOUlVMRVMgIDI2Ci0vKiBZWU5SVUxFUyAtLSBOdW1i
ZXIgb2Ygc3RhdGVzLiAgKi8KKy8qIFlZTlNUQVRFUyAtLSBOdW1iZXIgb2Ygc3RhdGVzLiAgKi8K
ICNkZWZpbmUgWVlOU1RBVEVTICA1MgogCi0vKiBZWVRSQU5TTEFURShZWUxFWCkgLS0gQmlzb24g
c3ltYm9sIG51bWJlciBjb3JyZXNwb25kaW5nIHRvIFlZTEVYLiAgKi8KKy8qIFlZVFJBTlNMQVRF
W1lZWF0gLS0gU3ltYm9sIG51bWJlciBjb3JyZXNwb25kaW5nIHRvIFlZWCBhcyByZXR1cm5lZAor
ICAgYnkgeXlsZXgsIHdpdGggb3V0LW9mLWJvdW5kcyBjaGVja2luZy4gICovCiAjZGVmaW5lIFlZ
VU5ERUZUT0sgIDIKICNkZWZpbmUgWVlNQVhVVE9LICAgMjY3CiAKLSNkZWZpbmUgWVlUUkFOU0xB
VEUoWVlYKQkJCQkJCVwKKyNkZWZpbmUgWVlUUkFOU0xBVEUoWVlYKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgKCh1bnNpZ25lZCBpbnQpIChZWVgp
IDw9IFlZTUFYVVRPSyA/IHl5dHJhbnNsYXRlW1lZWF0gOiBZWVVOREVGVE9LKQogCi0vKiBZWVRS
QU5TTEFURVtZWUxFWF0gLS0gQmlzb24gc3ltYm9sIG51bWJlciBjb3JyZXNwb25kaW5nIHRvIFlZ
TEVYLiAgKi8KKy8qIFlZVFJBTlNMQVRFW1RPS0VOLU5VTV0gLS0gU3ltYm9sIG51bWJlciBjb3Jy
ZXNwb25kaW5nIHRvIFRPS0VOLU5VTQorICAgYXMgcmV0dXJuZWQgYnkgeXlsZXgsIHdpdGhvdXQg
b3V0LW9mLWJvdW5kcyBjaGVja2luZy4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5
dHJhbnNsYXRlW10gPQogewogICAgICAgIDAsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCkBAIC00NTUsNTUgKzQ4NiwzMSBAQCBz
dGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5dHJhbnNsYXRlW10gCiB9OwogCiAjaWYgWVlERUJV
RwotLyogWVlQUkhTW1lZTl0gLS0gSW5kZXggb2YgdGhlIGZpcnN0IFJIUyBzeW1ib2wgb2YgcnVs
ZSBudW1iZXIgWVlOIGluCi0gICBZWVJIUy4gICovCi1zdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4
IHl5cHJoc1tdID0KLXsKLSAgICAgICAwLCAgICAgMCwgICAgIDMsICAgICA1LCAgICAgNywgICAg
MTEsICAgIDE1LCAgICAxOSwgICAgMjMsICAgIDI3LAotICAgICAgMzEsICAgIDM1LCAgICAzOSwg
ICAgNDMsICAgIDQ3LCAgICA1MSwgICAgNTUsICAgIDU5LCAgICA2MywgICAgNjcsCi0gICAgICA3
MSwgICAgNzUsICAgIDc5LCAgICA4MiwgICAgODUsICAgIDg4LCAgICA5MQotfTsKLQotLyogWVlS
SFMgLS0gQSBgLTEnLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSBydWxlcycgUkhTLiAgKi8KLXN0YXRp
YyBjb25zdCB5eXR5cGVfaW50OCB5eXJoc1tdID0KLXsKLSAgICAgIDI4LCAgICAgMCwgICAgLTEs
ICAgIDI5LCAgICAtMSwgICAgIDMsICAgIC0xLCAgICAyOSwgICAgIDQsICAgIDI5LAotICAgICAg
LTEsICAgIDI5LCAgICAgNSwgICAgMjksICAgIC0xLCAgICAyOSwgICAgIDYsICAgIDI5LCAgICAt
MSwgICAgMjksCi0gICAgICAgNywgICAgMjksICAgIC0xLCAgICAyOSwgICAgIDgsICAgIDI5LCAg
ICAtMSwgICAgMjksICAgICA5LCAgICAyOSwKLSAgICAgIC0xLCAgICAyOSwgICAgMTAsICAgIDI5
LCAgICAtMSwgICAgMjksICAgIDEzLCAgICAyOSwgICAgLTEsICAgIDI5LAotICAgICAgMTQsICAg
IDI5LCAgICAtMSwgICAgMjksICAgIDEyLCAgICAyOSwgICAgLTEsICAgIDI5LCAgICAxMSwgICAg
MjksCi0gICAgICAtMSwgICAgMjksICAgIDE1LCAgICAyOSwgICAgLTEsICAgIDI5LCAgICAxNiwg
ICAgMjksICAgIC0xLCAgICAyOSwKLSAgICAgIDE4LCAgICAyOSwgICAgLTEsICAgIDI5LCAgICAx
NywgICAgMjksICAgIC0xLCAgICAyOSwgICAgMjEsICAgIDI5LAotICAgICAgLTEsICAgIDI5LCAg
ICAyMCwgICAgMjksICAgIC0xLCAgICAyOSwgICAgMTksICAgIDI5LCAgICAtMSwgICAgMjMsCi0g
ICAgICAyOSwgICAgLTEsICAgIDI0LCAgICAyOSwgICAgLTEsICAgIDE4LCAgICAyOSwgICAgLTEs
ICAgIDE3LCAgICAyOSwKLSAgICAgIC0xLCAgICAyNSwgICAgMjksICAgIDI2LCAgICAtMQotfTsK
LQotLyogWVlSTElORVtZWU5dIC0tIHNvdXJjZSBsaW5lIHdoZXJlIHJ1bGUgbnVtYmVyIFlZTiB3
YXMgZGVmaW5lZC4gICovCisgIC8qIFlZUkxJTkVbWVlOXSAtLSBTb3VyY2UgbGluZSB3aGVyZSBy
dWxlIG51bWJlciBZWU4gd2FzIGRlZmluZWQuICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV91aW50
OCB5eXJsaW5lW10gPQogewotICAgICAgIDAsICAgIDkxLCAgICA5MSwgICAgOTgsICAgIDk5LCAg
IDEwMiwgICAxMDUsICAgMTA4LCAgIDExMSwgICAxMTQsCi0gICAgIDExNywgICAxMjAsICAgMTIz
LCAgIDEyNiwgICAxMjksICAgMTMyLCAgIDEzNSwgICAxMzgsICAgMTQxLCAgIDE0NCwKLSAgICAg
MTU3LCAgIDE3MCwgICAxNzMsICAgMTc2LCAgIDE3OSwgICAxODIsICAgMTg1CisgICAgICAgMCwg
ICAgOTcsICAgIDk3LCAgIDEwNCwgICAxMDUsICAgMTA4LCAgIDExMSwgICAxMTQsICAgMTE3LCAg
IDEyMCwKKyAgICAgMTIzLCAgIDEyNiwgICAxMjksICAgMTMyLCAgIDEzNSwgICAxMzgsICAgMTQx
LCAgIDE0NCwgICAxNDcsICAgMTUwLAorICAgICAxNjMsICAgMTc2LCAgIDE3OSwgICAxODIsICAg
MTg1LCAgIDE4OCwgICAxOTEKIH07CiAjZW5kaWYKIAotI2lmIFlZREVCVUcgfHwgWVlFUlJPUl9W
RVJCT1NFIHx8IFlZVE9LRU5fVEFCTEUKKyNpZiBZWURFQlVHIHx8IFlZRVJST1JfVkVSQk9TRSB8
fCAwCiAvKiBZWVROQU1FW1NZTUJPTC1OVU1dIC0tIFN0cmluZyBuYW1lIG9mIHRoZSBzeW1ib2wg
U1lNQk9MLU5VTS4KICAgIEZpcnN0LCB0aGUgdGVybWluYWxzLCB0aGVuLCBzdGFydGluZyBhdCBZ
WU5UT0tFTlMsIG5vbnRlcm1pbmFscy4gICovCiBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgeXl0
bmFtZVtdID0KIHsKICAgIiRlbmQiLCAiZXJyb3IiLCAiJHVuZGVmaW5lZCIsICJUT0tfQ09OU1Rf
SU5UIiwgIlRPS19PUF9PUiIsCi0gICJUT0tfT1BfQU5EIiwgIid8JyIsICInXiciLCAiJyYnIiwg
IlRPS19PUF9ORSIsICJUT0tfT1BfRVEiLCAiJzwnIiwKLSAgIic+JyIsICJUT0tfT1BfR0UiLCAi
VE9LX09QX0xFIiwgIlRPS19PUF9SSUdIVCIsICJUT0tfT1BfTEVGVCIsICInKyciLAorICAiVE9L
X09QX0FORCIsICInfCciLCAiJ14nIiwgIicmJyIsICJUT0tfT1BfRVEiLCAiVE9LX09QX05FIiwg
Iic8JyIsCisgICInPiciLCAiVE9LX09QX0xFIiwgIlRPS19PUF9HRSIsICJUT0tfT1BfTEVGVCIs
ICJUT0tfT1BfUklHSFQiLCAiJysnIiwKICAgIictJyIsICInKiciLCAiJy8nIiwgIiclJyIsICJU
T0tfVU5BUlkiLCAiJyEnIiwgIid+JyIsICInKCciLCAiJyknIiwKLSAgIiRhY2NlcHQiLCAiaW5w
dXQiLCAiZXhwcmVzc2lvbiIsIDAKKyAgIiRhY2NlcHQiLCAiaW5wdXQiLCAiZXhwcmVzc2lvbiIs
IFlZX05VTExQVFIKIH07CiAjZW5kaWYKIAogIyBpZmRlZiBZWVBSSU5UCi0vKiBZWVRPS05VTVtZ
WUxFWC1OVU1dIC0tIEludGVybmFsIHRva2VuIG51bWJlciBjb3JyZXNwb25kaW5nIHRvCi0gICB0
b2tlbiBZWUxFWC1OVU0uICAqLworLyogWVlUT0tOVU1bTlVNXSAtLSAoRXh0ZXJuYWwpIHRva2Vu
IG51bWJlciBjb3JyZXNwb25kaW5nIHRvIHRoZQorICAgKGludGVybmFsKSBzeW1ib2wgbnVtYmVy
IE5VTSAod2hpY2ggbXVzdCBiZSB0aGF0IG9mIGEgdG9rZW4pLiAgKi8KIHN0YXRpYyBjb25zdCB5
eXR5cGVfdWludDE2IHl5dG9rbnVtW10gPQogewogICAgICAgIDAsICAgMjU2LCAgIDI1NywgICAy
NTgsICAgMjU5LCAgIDI2MCwgICAxMjQsICAgIDk0LCAgICAzOCwgICAyNjEsCkBAIC01MTIsNDQg
KzUxOSwxOCBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5eXRva251bVtdID0KIH07CiAj
IGVuZGlmCiAKLS8qIFlZUjFbWVlOXSAtLSBTeW1ib2wgbnVtYmVyIG9mIHN5bWJvbCB0aGF0IHJ1
bGUgWVlOIGRlcml2ZXMuICAqLwotc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXIxW10gPQot
ewotICAgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDI5LCAgICAyOSwgICAgMjksICAg
IDI5LCAgICAyOSwgICAgMjksCi0gICAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwgICAgMjks
ICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwKLSAgICAgIDI5LCAgICAyOSwgICAg
MjksICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5Ci19OworI2RlZmluZSBZWVBBQ1RfTklORiAt
MTEKIAotLyogWVlSMltZWU5dIC0tIE51bWJlciBvZiBzeW1ib2xzIGNvbXBvc2luZyByaWdodCBo
YW5kIHNpZGUgb2YgcnVsZSBZWU4uICAqLwotc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXIy
W10gPQotewotICAgICAgIDAsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMywgICAg
IDMsICAgICAzLCAgICAgMywgICAgIDMsCi0gICAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywg
ICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywKLSAgICAgICAzLCAgICAg
MywgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAzCi19OworI2RlZmluZSB5eXBhY3Rf
dmFsdWVfaXNfZGVmYXVsdChZeXN0YXRlKSBcCisgICghISgoWXlzdGF0ZSkgPT0gKC0xMSkpKQog
Ci0vKiBZWURFRkFDVFtTVEFURS1OQU1FXSAtLSBEZWZhdWx0IHJ1bGUgdG8gcmVkdWNlIHdpdGgg
aW4gc3RhdGUKLSAgIFNUQVRFLU5VTSB3aGVuIFlZVEFCTEUgZG9lc24ndCBzcGVjaWZ5IHNvbWV0
aGluZyBlbHNlIHRvIGRvLiAgWmVybwotICAgbWVhbnMgdGhlIGRlZmF1bHQgaXMgYW4gZXJyb3Iu
ICAqLwotc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eWRlZmFjdFtdID0KLXsKLSAgICAgICAw
LCAgICAgMywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDIs
ICAgIDI1LAotICAgICAgMjQsICAgIDIyLCAgICAyMywgICAgIDAsICAgICAxLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDI2LCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5
LAotICAgICAgMTAsICAgIDE0LCAgICAxMywgICAgMTEsICAgIDEyLCAgICAxNSwgICAgMTYsICAg
IDE4LCAgICAxNywgICAgMjEsCi0gICAgICAyMCwgICAgMTkKLX07CisjZGVmaW5lIFlZVEFCTEVf
TklORiAtMQogCi0vKiBZWURFRkdPVE9bTlRFUk0tTlVNXS4gICovCi1zdGF0aWMgY29uc3QgeXl0
eXBlX2ludDggeXlkZWZnb3RvW10gPQotewotICAgICAgLTEsICAgICA3LCAgICAgOAotfTsKKyNk
ZWZpbmUgeXl0YWJsZV92YWx1ZV9pc19lcnJvcihZeXRhYmxlX3ZhbHVlKSBcCisgIDAKIAotLyog
WVlQQUNUW1NUQVRFLU5VTV0gLS0gSW5kZXggaW4gWVlUQUJMRSBvZiB0aGUgcG9ydGlvbiBkZXNj
cmliaW5nCi0gICBTVEFURS1OVU0uICAqLwotI2RlZmluZSBZWVBBQ1RfTklORiAtMTEKKyAgLyog
WVlQQUNUW1NUQVRFLU5VTV0gLS0gSW5kZXggaW4gWVlUQUJMRSBvZiB0aGUgcG9ydGlvbiBkZXNj
cmliaW5nCisgICAgIFNUQVRFLU5VTS4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDE2IHl5
cGFjdFtdID0KIHsKICAgICAgIDQ2LCAgIC0xMSwgICAgNDYsICAgIDQ2LCAgICA0NiwgICAgNDYs
ICAgIDQ2LCAgICAxMiwgICAgNjgsICAgLTExLApAQCAtNTYwLDE3ICs1NDEsMzQgQEAgc3RhdGlj
IGNvbnN0IHl5dHlwZV9pbnQxNiB5eXBhY3RbXSA9CiAgICAgIC0xMSwgICAtMTEKIH07CiAKLS8q
IFlZUEdPVE9bTlRFUk0tTlVNXS4gICovCisgIC8qIFlZREVGQUNUW1NUQVRFLU5VTV0gLS0gRGVm
YXVsdCByZWR1Y3Rpb24gbnVtYmVyIGluIHN0YXRlIFNUQVRFLU5VTS4KKyAgICAgUGVyZm9ybWVk
IHdoZW4gWVlUQUJMRSBkb2VzIG5vdCBzcGVjaWZ5IHNvbWV0aGluZyBlbHNlIHRvIGRvLiAgWmVy
bworICAgICBtZWFucyB0aGUgZGVmYXVsdCBpcyBhbiBlcnJvci4gICovCitzdGF0aWMgY29uc3Qg
eXl0eXBlX3VpbnQ4IHl5ZGVmYWN0W10gPQoreworICAgICAgIDAsICAgICAzLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMiwgICAgMjUsCisgICAgICAyNCwg
ICAgMjIsICAgIDIzLCAgICAgMCwgICAgIDEsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjYsICAg
ICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgMTAsCisgICAgICAgOSwgICAgMTQs
ICAgIDEzLCAgICAxMiwgICAgMTEsICAgIDE2LCAgICAxNSwgICAgMTgsICAgIDE3LCAgICAyMSwK
KyAgICAgIDIwLCAgICAxOQorfTsKKworICAvKiBZWVBHT1RPW05URVJNLU5VTV0uICAqLwogc3Rh
dGljIGNvbnN0IHl5dHlwZV9pbnQ4IHl5cGdvdG9bXSA9CiB7CiAgICAgIC0xMSwgICAtMTEsICAg
IC0yCiB9OwogCi0vKiBZWVRBQkxFW1lZUEFDVFtTVEFURS1OVU1dXS4gIFdoYXQgdG8gZG8gaW4g
c3RhdGUgU1RBVEUtTlVNLiAgSWYKLSAgIHBvc2l0aXZlLCBzaGlmdCB0aGF0IHRva2VuLiAgSWYg
bmVnYXRpdmUsIHJlZHVjZSB0aGUgcnVsZSB3aGljaAotICAgbnVtYmVyIGlzIHRoZSBvcHBvc2l0
ZS4gIElmIHplcm8sIGRvIHdoYXQgWVlERUZBQ1Qgc2F5cy4KLSAgIElmIFlZVEFCTEVfTklORiwg
c3ludGF4IGVycm9yLiAgKi8KLSNkZWZpbmUgWVlUQUJMRV9OSU5GIC0xCisgIC8qIFlZREVGR09U
T1tOVEVSTS1OVU1dLiAgKi8KK3N0YXRpYyBjb25zdCB5eXR5cGVfaW50OCB5eWRlZmdvdG9bXSA9
Cit7CisgICAgICAtMSwgICAgIDcsICAgICA4Cit9OworCisgIC8qIFlZVEFCTEVbWVlQQUNUW1NU
QVRFLU5VTV1dIC0tIFdoYXQgdG8gZG8gaW4gc3RhdGUgU1RBVEUtTlVNLiAgSWYKKyAgICAgcG9z
aXRpdmUsIHNoaWZ0IHRoYXQgdG9rZW4uICBJZiBuZWdhdGl2ZSwgcmVkdWNlIHRoZSBydWxlIHdo
b3NlCisgICAgIG51bWJlciBpcyB0aGUgb3Bwb3NpdGUuICBJZiBZWVRBQkxFX05JTkYsIHN5bnRh
eCBlcnJvci4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5dGFibGVbXSA9CiB7CiAg
ICAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDI2LCAgICAyNywgICAgMjgs
ICAgIDI5LCAgICAzMCwKQEAgLTYxNSw4ICs2MTMsOCBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX2lu
dDggeXljaGVja1tdID0KICAgICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAg
MjEKIH07CiAKLS8qIFlZU1RPU1tTVEFURS1OVU1dIC0tIFRoZSAoaW50ZXJuYWwgbnVtYmVyIG9m
IHRoZSkgYWNjZXNzaW5nCi0gICBzeW1ib2wgb2Ygc3RhdGUgU1RBVEUtTlVNLiAgKi8KKyAgLyog
WVlTVE9TW1NUQVRFLU5VTV0gLS0gVGhlIChpbnRlcm5hbCBudW1iZXIgb2YgdGhlKSBhY2Nlc3Np
bmcKKyAgICAgc3ltYm9sIG9mIHN0YXRlIFNUQVRFLU5VTS4gICovCiBzdGF0aWMgY29uc3QgeXl0
eXBlX3VpbnQ4IHl5c3Rvc1tdID0KIHsKICAgICAgICAwLCAgICAgMywgICAgMTcsICAgIDE4LCAg
ICAyMywgICAgMjQsICAgIDI1LCAgICAyOCwgICAgMjksICAgIDI5LApAQCAtNjI3LDk1ICs2MjUs
NTcgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXN0b3NbXSA9CiAgICAgICAyOSwgICAg
MjkKIH07CiAKLSNkZWZpbmUgeXllcnJvawkJKHl5ZXJyc3RhdHVzID0gMCkKLSNkZWZpbmUgeXlj
bGVhcmluCSh5eWNoYXIgPSBZWUVNUFRZKQotI2RlZmluZSBZWUVNUFRZCQkoLTIpCi0jZGVmaW5l
IFlZRU9GCQkwCisgIC8qIFlZUjFbWVlOXSAtLSBTeW1ib2wgbnVtYmVyIG9mIHN5bWJvbCB0aGF0
IHJ1bGUgWVlOIGRlcml2ZXMuICAqLworc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXIxW10g
PQoreworICAgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDI5LCAgICAyOSwgICAgMjks
ICAgIDI5LCAgICAyOSwgICAgMjksCisgICAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwgICAg
MjksICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwKKyAgICAgIDI5LCAgICAyOSwg
ICAgMjksICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5Cit9OwogCi0jZGVmaW5lIFlZQUNDRVBU
CWdvdG8geXlhY2NlcHRsYWIKLSNkZWZpbmUgWVlBQk9SVAkJZ290byB5eWFib3J0bGFiCi0jZGVm
aW5lIFlZRVJST1IJCWdvdG8geXllcnJvcmxhYgorICAvKiBZWVIyW1lZTl0gLS0gTnVtYmVyIG9m
IHN5bWJvbHMgb24gdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZiBydWxlIFlZTi4gICovCitzdGF0aWMg
Y29uc3QgeXl0eXBlX3VpbnQ4IHl5cjJbXSA9Cit7CisgICAgICAgMCwgICAgIDIsICAgICAxLCAg
ICAgMSwgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywKKyAgICAgICAz
LCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMs
ICAgICAzLAorICAgICAgIDMsICAgICAzLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAg
IDMKK307CiAKIAotLyogTGlrZSBZWUVSUk9SIGV4Y2VwdCBkbyBjYWxsIHl5ZXJyb3IuICBUaGlz
IHJlbWFpbnMgaGVyZSB0ZW1wb3JhcmlseQotICAgdG8gZWFzZSB0aGUgdHJhbnNpdGlvbiB0byB0
aGUgbmV3IG1lYW5pbmcgb2YgWVlFUlJPUiwgZm9yIEdDQy4KLSAgIE9uY2UgR0NDIHZlcnNpb24g
MiBoYXMgc3VwcGxhbnRlZCB2ZXJzaW9uIDEsIHRoaXMgY2FuIGdvLiAgKi8KKyNkZWZpbmUgeXll
cnJvayAgICAgICAgICh5eWVycnN0YXR1cyA9IDApCisjZGVmaW5lIHl5Y2xlYXJpbiAgICAgICAo
eXljaGFyID0gWVlFTVBUWSkKKyNkZWZpbmUgWVlFTVBUWSAgICAgICAgICgtMikKKyNkZWZpbmUg
WVlFT0YgICAgICAgICAgIDAKKworI2RlZmluZSBZWUFDQ0VQVCAgICAgICAgZ290byB5eWFjY2Vw
dGxhYgorI2RlZmluZSBZWUFCT1JUICAgICAgICAgZ290byB5eWFib3J0bGFiCisjZGVmaW5lIFlZ
RVJST1IgICAgICAgICBnb3RvIHl5ZXJyb3JsYWIKIAotI2RlZmluZSBZWUZBSUwJCWdvdG8geXll
cnJsYWIKIAogI2RlZmluZSBZWVJFQ09WRVJJTkcoKSAgKCEheXllcnJzdGF0dXMpCiAKLSNkZWZp
bmUgWVlCQUNLVVAoVG9rZW4sIFZhbHVlKQkJCQkJXAotZG8JCQkJCQkJCVwKLSAgaWYgKHl5Y2hh
ciA9PSBZWUVNUFRZICYmIHl5bGVuID09IDEpCQkJCVwKLSAgICB7CQkJCQkJCQlcCi0gICAgICB5
eWNoYXIgPSAoVG9rZW4pOwkJCQkJCVwKLSAgICAgIHl5bHZhbCA9IChWYWx1ZSk7CQkJCQkJXAot
ICAgICAgeXl0b2tlbiA9IFlZVFJBTlNMQVRFICh5eWNoYXIpOwkJCQlcCi0gICAgICBZWVBPUFNU
QUNLICgxKTsJCQkJCQlcCi0gICAgICBnb3RvIHl5YmFja3VwOwkJCQkJCVwKLSAgICB9CQkJCQkJ
CQlcCi0gIGVsc2UJCQkJCQkJCVwKLSAgICB7CQkJCQkJCQlcCisjZGVmaW5lIFlZQkFDS1VQKFRv
a2VuLCBWYWx1ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorZG8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgaWYgKHl5Y2hhciA9PSBZWUVNUFRZKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgeXljaGFyID0gKFRva2VuKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHl5bHZhbCA9IChWYWx1ZSk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBZWVBPUFNUQUNL
ICh5eWxlbik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
eXlzdGF0ZSA9ICp5eXNzcDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgIGdvdG8geXliYWNrdXA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICB5eWVycm9y
IChjb250ZXh0LCBZWV8oInN5bnRheCBlcnJvcjogY2Fubm90IGJhY2sgdXAiKSk7IFwKLSAgICAg
IFlZRVJST1I7CQkJCQkJCVwKLSAgICB9CQkJCQkJCQlcCi13aGlsZSAoWVlJRCAoMCkpCi0KLQot
I2RlZmluZSBZWVRFUlJPUgkxCi0jZGVmaW5lIFlZRVJSQ09ERQkyNTYKLQotCi0vKiBZWUxMT0Nf
REVGQVVMVCAtLSBTZXQgQ1VSUkVOVCB0byBzcGFuIGZyb20gUkhTWzFdIHRvIFJIU1tOXS4KLSAg
IElmIE4gaXMgMCwgdGhlbiBzZXQgQ1VSUkVOVCB0byB0aGUgZW1wdHkgbG9jYXRpb24gd2hpY2gg
ZW5kcwotICAgdGhlIHByZXZpb3VzIHN5bWJvbDogUkhTWzBdIChhbHdheXMgZGVmaW5lZCkuICAq
LwotCi0jZGVmaW5lIFlZUkhTTE9DKFJocywgSykgKChSaHMpW0tdKQotI2lmbmRlZiBZWUxMT0Nf
REVGQVVMVAotIyBkZWZpbmUgWVlMTE9DX0RFRkFVTFQoQ3VycmVudCwgUmhzLCBOKQkJCQlcCi0g
ICAgZG8JCQkJCQkJCQlcCi0gICAgICBpZiAoWVlJRCAoTikpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLQl7CQkJCQkJCQlcCi0JICAoQ3VycmVu
dCkuZmlyc3RfbGluZSAgID0gWVlSSFNMT0MgKFJocywgMSkuZmlyc3RfbGluZTsJXAotCSAgKEN1
cnJlbnQpLmZpcnN0X2NvbHVtbiA9IFlZUkhTTE9DIChSaHMsIDEpLmZpcnN0X2NvbHVtbjsJXAot
CSAgKEN1cnJlbnQpLmxhc3RfbGluZSAgICA9IFlZUkhTTE9DIChSaHMsIE4pLmxhc3RfbGluZTsJ
CVwKLQkgIChDdXJyZW50KS5sYXN0X2NvbHVtbiAgPSBZWVJIU0xPQyAoUmhzLCBOKS5sYXN0X2Nv
bHVtbjsJXAotCX0JCQkJCQkJCVwKLSAgICAgIGVsc2UJCQkJCQkJCVwKLQl7CQkJCQkJCQlcCi0J
ICAoQ3VycmVudCkuZmlyc3RfbGluZSAgID0gKEN1cnJlbnQpLmxhc3RfbGluZSAgID0JCVwKLQkg
ICAgWVlSSFNMT0MgKFJocywgMCkubGFzdF9saW5lOwkJCQlcCi0JICAoQ3VycmVudCkuZmlyc3Rf
Y29sdW1uID0gKEN1cnJlbnQpLmxhc3RfY29sdW1uID0JCVwKLQkgICAgWVlSSFNMT0MgKFJocywg
MCkubGFzdF9jb2x1bW47CQkJCVwKLQl9CQkJCQkJCQlcCi0gICAgd2hpbGUgKFlZSUQgKDApKQot
I2VuZGlmCi0KLQotLyogWVlfTE9DQVRJT05fUFJJTlQgLS0gUHJpbnQgdGhlIGxvY2F0aW9uIG9u
IHRoZSBzdHJlYW0uCi0gICBUaGlzIG1hY3JvIHdhcyBub3QgbWFuZGF0ZWQgb3JpZ2luYWxseTog
ZGVmaW5lIG9ubHkgaWYgd2Uga25vdwotICAgd2Ugd29uJ3QgYnJlYWsgdXNlciBjb2RlOiB3aGVu
IHRoZXNlIGFyZSB0aGUgbG9jYXRpb25zIHdlIGtub3cuICAqLwotCi0jaWZuZGVmIFlZX0xPQ0FU
SU9OX1BSSU5UCi0jIGlmIGRlZmluZWQgWVlMVFlQRV9JU19UUklWSUFMICYmIFlZTFRZUEVfSVNf
VFJJVklBTAotIyAgZGVmaW5lIFlZX0xPQ0FUSU9OX1BSSU5UKEZpbGUsIExvYykJCQlcCi0gICAg
IGZwcmludGYgKEZpbGUsICIlZC4lZC0lZC4lZCIsCQkJXAotCSAgICAgIChMb2MpLmZpcnN0X2xp
bmUsIChMb2MpLmZpcnN0X2NvbHVtbiwJXAotCSAgICAgIChMb2MpLmxhc3RfbGluZSwgIChMb2Mp
Lmxhc3RfY29sdW1uKQotIyBlbHNlCi0jICBkZWZpbmUgWVlfTE9DQVRJT05fUFJJTlQoRmlsZSwg
TG9jKSAoKHZvaWQpIDApCi0jIGVuZGlmCi0jZW5kaWYKKyAgICAgIFlZRVJST1I7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAord2hp
bGUgKDApCisKKy8qIEVycm9yIHRva2VuIG51bWJlciAqLworI2RlZmluZSBZWVRFUlJPUiAgICAg
ICAgMQorI2RlZmluZSBZWUVSUkNPREUgICAgICAgMjU2CiAKIAotLyogWVlMRVggLS0gY2FsbGlu
ZyBgeXlsZXgnIHdpdGggdGhlIHJpZ2h0IGFyZ3VtZW50cy4gICovCi0KLSNpZmRlZiBZWUxFWF9Q
QVJBTQotIyBkZWZpbmUgWVlMRVggeXlsZXggKCZ5eWx2YWwsIFlZTEVYX1BBUkFNKQotI2Vsc2UK
LSMgZGVmaW5lIFlZTEVYIHl5bGV4ICgmeXlsdmFsLCBjb250ZXh0KQotI2VuZGlmCiAKIC8qIEVu
YWJsZSBkZWJ1Z2dpbmcgaWYgcmVxdWVzdGVkLiAgKi8KICNpZiBZWURFQlVHCkBAIC03MjUsNTYg
KzY4NSw0NyBAQCB3aGlsZSAoWVlJRCAoMCkpCiAjICBkZWZpbmUgWVlGUFJJTlRGIGZwcmludGYK
ICMgZW5kaWYKIAotIyBkZWZpbmUgWVlEUFJJTlRGKEFyZ3MpCQkJXAotZG8gewkJCQkJCVwKLSAg
aWYgKHl5ZGVidWcpCQkJCQlcCi0gICAgWVlGUFJJTlRGIEFyZ3M7CQkJCVwKLX0gd2hpbGUgKFlZ
SUQgKDApKQotCi0jIGRlZmluZSBZWV9TWU1CT0xfUFJJTlQoVGl0bGUsIFR5cGUsIFZhbHVlLCBM
b2NhdGlvbikJCQkgIFwKLWRvIHsJCQkJCQkJCQkgIFwKLSAgaWYgKHl5ZGVidWcpCQkJCQkJCQkg
IFwKLSAgICB7CQkJCQkJCQkJICBcCi0gICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIiVzICIsIFRp
dGxlKTsJCQkJCSAgXAotICAgICAgeXlfc3ltYm9sX3ByaW50IChzdGRlcnIsCQkJCQkJICBcCi0J
CSAgVHlwZSwgVmFsdWUsIGNvbnRleHQpOyBcCi0gICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIlxu
Iik7CQkJCQkJICBcCi0gICAgfQkJCQkJCQkJCSAgXAotfSB3aGlsZSAoWVlJRCAoMCkpCisjIGRl
ZmluZSBZWURQUklOVEYoQXJncykgICAgICAgICAgICAgICAgICAgICAgICBcCitkbyB7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGlmICh5eWRlYnVnKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgWVlGUFJJTlRGIEFyZ3M7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9IHdoaWxlICgwKQorCisvKiBUaGlzIG1hY3Jv
IGlzIHByb3ZpZGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiAqLworI2lmbmRlZiBZWV9M
T0NBVElPTl9QUklOVAorIyBkZWZpbmUgWVlfTE9DQVRJT05fUFJJTlQoRmlsZSwgTG9jKSAoKHZv
aWQpIDApCisjZW5kaWYKKwogCisjIGRlZmluZSBZWV9TWU1CT0xfUFJJTlQoVGl0bGUsIFR5cGUs
IFZhbHVlLCBMb2NhdGlvbikgICAgICAgICAgICAgICAgICAgIFwKK2RvIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICBpZiAoeXlkZWJ1ZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIFlZRlBSSU5U
RiAoc3RkZXJyLCAiJXMgIiwgVGl0bGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgeXlfc3ltYm9sX3ByaW50IChzdGRlcnIsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICBUeXBlLCBWYWx1ZSwg
Y29udGV4dCk7IFwKKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiXG4iKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9IHdo
aWxlICgwKQogCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgotfCBQcmludCB0
aGlzIHN5bWJvbCBvbiBZWU9VVFBVVC4gIHwKLWAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSovCiAKLS8qQVJHU1VTRUQqLwotI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQg
X19DOTlfX0ZVTkNfXyBcCi0gICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBf
TVNDX1ZFUikKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KK3wg
UHJpbnQgdGhpcyBzeW1ib2wncyB2YWx1ZSBvbiBZWU9VVFBVVC4gIHwKK2AtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKwogc3RhdGljIHZvaWQKIHl5X3N5bWJvbF92
YWx1ZV9wcmludCAoRklMRSAqeXlvdXRwdXQsIGludCB5eXR5cGUsIFlZU1RZUEUgY29uc3QgKiBj
b25zdCB5eXZhbHVlcCwgQ29udGV4dCAqY29udGV4dCkKLSNlbHNlCi1zdGF0aWMgdm9pZAoteXlf
c3ltYm9sX3ZhbHVlX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbHVlcCwgY29udGV4dCkK
LSAgICBGSUxFICp5eW91dHB1dDsKLSAgICBpbnQgeXl0eXBlOwotICAgIFlZU1RZUEUgY29uc3Qg
KiBjb25zdCB5eXZhbHVlcDsKLSAgICBDb250ZXh0ICpjb250ZXh0OwotI2VuZGlmCiB7CisgIEZJ
TEUgKnl5byA9IHl5b3V0cHV0OworICBZWVVTRSAoeXlvKTsKKyAgWVlVU0UgKGNvbnRleHQpOwog
ICBpZiAoIXl5dmFsdWVwKQogICAgIHJldHVybjsKLSAgWVlVU0UgKGNvbnRleHQpOwogIyBpZmRl
ZiBZWVBSSU5UCiAgIGlmICh5eXR5cGUgPCBZWU5UT0tFTlMpCiAgICAgWVlQUklOVCAoeXlvdXRw
dXQsIHl5dG9rbnVtW3l5dHlwZV0sICp5eXZhbHVlcCk7Ci0jIGVsc2UKLSAgWVlVU0UgKHl5b3V0
cHV0KTsKICMgZW5kaWYKLSAgc3dpdGNoICh5eXR5cGUpCi0gICAgewotICAgICAgZGVmYXVsdDoK
LQlicmVhazsKLSAgICB9CisgIFlZVVNFICh5eXR5cGUpOwogfQogCiAKQEAgLTc4MiwyMyArNzMz
LDExIEBAIHl5X3N5bWJvbF92YWx1ZV9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwKIHwgUHJpbnQg
dGhpcyBzeW1ib2wgb24gWVlPVVRQVVQuICB8CiBgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0qLwogCi0jaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19f
IFwKLSAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogc3Rh
dGljIHZvaWQKIHl5X3N5bWJvbF9wcmludCAoRklMRSAqeXlvdXRwdXQsIGludCB5eXR5cGUsIFlZ
U1RZUEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcCwgQ29udGV4dCAqY29udGV4dCkKLSNlbHNlCi1z
dGF0aWMgdm9pZAoteXlfc3ltYm9sX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbHVlcCwg
Y29udGV4dCkKLSAgICBGSUxFICp5eW91dHB1dDsKLSAgICBpbnQgeXl0eXBlOwotICAgIFlZU1RZ
UEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcDsKLSAgICBDb250ZXh0ICpjb250ZXh0OwotI2VuZGlm
CiB7Ci0gIGlmICh5eXR5cGUgPCBZWU5UT0tFTlMpCi0gICAgWVlGUFJJTlRGICh5eW91dHB1dCwg
InRva2VuICVzICgiLCB5eXRuYW1lW3l5dHlwZV0pOwotICBlbHNlCi0gICAgWVlGUFJJTlRGICh5
eW91dHB1dCwgIm50ZXJtICVzICgiLCB5eXRuYW1lW3l5dHlwZV0pOworICBZWUZQUklOVEYgKHl5
b3V0cHV0LCAiJXMgJXMgKCIsCisgICAgICAgICAgICAgeXl0eXBlIDwgWVlOVE9LRU5TID8gInRv
a2VuIiA6ICJudGVybSIsIHl5dG5hbWVbeXl0eXBlXSk7CiAKICAgeXlfc3ltYm9sX3ZhbHVlX3By
aW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbHVlcCwgY29udGV4dCk7CiAgIFlZRlBSSU5URiAo
eXlvdXRwdXQsICIpIik7CkBAIC04MDksNjcgKzc0OCw1NCBAQCB5eV9zeW1ib2xfcHJpbnQgKHl5
b3V0cHV0LCB5eXR5cGUsIHl5dmFsCiB8IFRPUCAoaW5jbHVkZWQpLiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKIGAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCi0jaWYg
KGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKLSAgICAgfHwgZGVm
aW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQotc3RhdGljIHZvaWQKLXl5X3N0
YWNrX3ByaW50ICh5eXR5cGVfaW50MTYgKmJvdHRvbSwgeXl0eXBlX2ludDE2ICp0b3ApCi0jZWxz
ZQogc3RhdGljIHZvaWQKLXl5X3N0YWNrX3ByaW50IChib3R0b20sIHRvcCkKLSAgICB5eXR5cGVf
aW50MTYgKmJvdHRvbTsKLSAgICB5eXR5cGVfaW50MTYgKnRvcDsKLSNlbmRpZgoreXlfc3RhY2tf
cHJpbnQgKHl5dHlwZV9pbnQxNiAqeXlib3R0b20sIHl5dHlwZV9pbnQxNiAqeXl0b3ApCiB7CiAg
IFlZRlBSSU5URiAoc3RkZXJyLCAiU3RhY2sgbm93Iik7Ci0gIGZvciAoOyBib3R0b20gPD0gdG9w
OyArK2JvdHRvbSkKLSAgICBZWUZQUklOVEYgKHN0ZGVyciwgIiAlZCIsICpib3R0b20pOworICBm
b3IgKDsgeXlib3R0b20gPD0geXl0b3A7IHl5Ym90dG9tKyspCisgICAgeworICAgICAgaW50IHl5
Ym90ID0gKnl5Ym90dG9tOworICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICIgJWQiLCB5eWJvdCk7
CisgICAgfQogICBZWUZQUklOVEYgKHN0ZGVyciwgIlxuIik7CiB9CiAKLSMgZGVmaW5lIFlZX1NU
QUNLX1BSSU5UKEJvdHRvbSwgVG9wKQkJCQlcCi1kbyB7CQkJCQkJCQlcCi0gIGlmICh5eWRlYnVn
KQkJCQkJCQlcCi0gICAgeXlfc3RhY2tfcHJpbnQgKChCb3R0b20pLCAoVG9wKSk7CQkJCVwKLX0g
d2hpbGUgKFlZSUQgKDApKQorIyBkZWZpbmUgWVlfU1RBQ0tfUFJJTlQoQm90dG9tLCBUb3ApICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2RvIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGlmICh5eWRlYnVnKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHl5X3N0
YWNrX3ByaW50ICgoQm90dG9tKSwgKFRvcCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
K30gd2hpbGUgKDApCiAKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0uCiB8IFJlcG9ydCB0aGF0IHRoZSBZWVJVTEUgaXMgZ29pbmcgdG8gYmUgcmVk
dWNlZC4gIHwKIGAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0qLwogCi0jaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwK
LSAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQotc3RhdGlj
IHZvaWQKLXl5X3JlZHVjZV9wcmludCAoWVlTVFlQRSAqeXl2c3AsIGludCB5eXJ1bGUsIENvbnRl
eHQgKmNvbnRleHQpCi0jZWxzZQogc3RhdGljIHZvaWQKLXl5X3JlZHVjZV9wcmludCAoeXl2c3As
IHl5cnVsZSwgY29udGV4dCkKLSAgICBZWVNUWVBFICp5eXZzcDsKLSAgICBpbnQgeXlydWxlOwot
ICAgIENvbnRleHQgKmNvbnRleHQ7Ci0jZW5kaWYKK3l5X3JlZHVjZV9wcmludCAoeXl0eXBlX2lu
dDE2ICp5eXNzcCwgWVlTVFlQRSAqeXl2c3AsIGludCB5eXJ1bGUsIENvbnRleHQgKmNvbnRleHQp
CiB7CisgIHVuc2lnbmVkIGxvbmcgaW50IHl5bG5vID0geXlybGluZVt5eXJ1bGVdOwogICBpbnQg
eXlucmhzID0geXlyMlt5eXJ1bGVdOwogICBpbnQgeXlpOwotICB1bnNpZ25lZCBsb25nIGludCB5
eWxubyA9IHl5cmxpbmVbeXlydWxlXTsKICAgWVlGUFJJTlRGIChzdGRlcnIsICJSZWR1Y2luZyBz
dGFjayBieSBydWxlICVkIChsaW5lICVsdSk6XG4iLAotCSAgICAgeXlydWxlIC0gMSwgeXlsbm8p
OworICAgICAgICAgICAgIHl5cnVsZSAtIDEsIHl5bG5vKTsKICAgLyogVGhlIHN5bWJvbHMgYmVp
bmcgcmVkdWNlZC4gICovCiAgIGZvciAoeXlpID0gMDsgeXlpIDwgeXlucmhzOyB5eWkrKykKICAg
ICB7Ci0gICAgICBmcHJpbnRmIChzdGRlcnIsICIgICAkJWQgPSAiLCB5eWkgKyAxKTsKLSAgICAg
IHl5X3N5bWJvbF9wcmludCAoc3RkZXJyLCB5eXJoc1t5eXByaHNbeXlydWxlXSArIHl5aV0sCi0J
CSAgICAgICAmKHl5dnNwWyh5eWkgKyAxKSAtICh5eW5yaHMpXSkKLQkJICAgICAgIAkJICAgICAg
ICwgY29udGV4dCk7Ci0gICAgICBmcHJpbnRmIChzdGRlcnIsICJcbiIpOworICAgICAgWVlGUFJJ
TlRGIChzdGRlcnIsICIgICAkJWQgPSAiLCB5eWkgKyAxKTsKKyAgICAgIHl5X3N5bWJvbF9wcmlu
dCAoc3RkZXJyLAorICAgICAgICAgICAgICAgICAgICAgICB5eXN0b3NbeXlzc3BbeXlpICsgMSAt
IHl5bnJoc11dLAorICAgICAgICAgICAgICAgICAgICAgICAmKHl5dnNwWyh5eWkgKyAxKSAtICh5
eW5yaHMpXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAs
IGNvbnRleHQpOworICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICJcbiIpOwogICAgIH0KIH0KIAot
IyBkZWZpbmUgWVlfUkVEVUNFX1BSSU5UKFJ1bGUpCQlcCi1kbyB7CQkJCQlcCi0gIGlmICh5eWRl
YnVnKQkJCQlcCi0gICAgeXlfcmVkdWNlX3ByaW50ICh5eXZzcCwgUnVsZSwgY29udGV4dCk7IFwK
LX0gd2hpbGUgKFlZSUQgKDApKQorIyBkZWZpbmUgWVlfUkVEVUNFX1BSSU5UKFJ1bGUpICAgICAg
ICAgIFwKK2RvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGlmICh5
eWRlYnVnKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHl5X3JlZHVjZV9wcmludCAo
eXlzc3AsIHl5dnNwLCBSdWxlLCBjb250ZXh0KTsgXAorfSB3aGlsZSAoMCkKIAogLyogTm9uemVy
byBtZWFucyBwcmludCBwYXJzZSB0cmFjZS4gIEl0IGlzIGxlZnQgdW5pbml0aWFsaXplZCBzbyB0
aGF0CiAgICBtdWx0aXBsZSBwYXJzZXJzIGNhbiBjb2V4aXN0LiAgKi8KQEAgLTg4Myw3ICs4MDks
NyBAQCBpbnQgeXlkZWJ1ZzsKIAogCiAvKiBZWUlOSVRERVBUSCAtLSBpbml0aWFsIHNpemUgb2Yg
dGhlIHBhcnNlcidzIHN0YWNrcy4gICovCi0jaWZuZGVmCVlZSU5JVERFUFRICisjaWZuZGVmIFlZ
SU5JVERFUFRICiAjIGRlZmluZSBZWUlOSVRERVBUSCAyMDAKICNlbmRpZgogCkBAIC04OTgsNyAr
ODI0LDYgQEAgaW50IHl5ZGVidWc7CiAjIGRlZmluZSBZWU1BWERFUFRIIDEwMDAwCiAjZW5kaWYK
IAotDAogCiAjaWYgWVlFUlJPUl9WRVJCT1NFCiAKQEAgLTkwNywxNSArODMyLDggQEAgaW50IHl5
ZGVidWc7CiAjICAgZGVmaW5lIHl5c3RybGVuIHN0cmxlbgogIyAgZWxzZQogLyogUmV0dXJuIHRo
ZSBsZW5ndGggb2YgWVlTVFIuICAqLwotI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQg
X19DOTlfX0ZVTkNfXyBcCi0gICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBf
TVNDX1ZFUikKIHN0YXRpYyBZWVNJWkVfVAogeXlzdHJsZW4gKGNvbnN0IGNoYXIgKnl5c3RyKQot
I2Vsc2UKLXN0YXRpYyBZWVNJWkVfVAoteXlzdHJsZW4gKHl5c3RyKQotICAgIGNvbnN0IGNoYXIg
Knl5c3RyOwotI2VuZGlmCiB7CiAgIFlZU0laRV9UIHl5bGVuOwogICBmb3IgKHl5bGVuID0gMDsg
eXlzdHJbeXlsZW5dOyB5eWxlbisrKQpAQCAtOTMxLDE2ICs4NDksOCBAQCB5eXN0cmxlbiAoeXlz
dHIpCiAjICBlbHNlCiAvKiBDb3B5IFlZU1JDIHRvIFlZREVTVCwgcmV0dXJuaW5nIHRoZSBhZGRy
ZXNzIG9mIHRoZSB0ZXJtaW5hdGluZyAnXDAnIGluCiAgICBZWURFU1QuICAqLwotI2lmIChkZWZp
bmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCi0gICAgIHx8IGRlZmluZWQg
X19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyBjaGFyICoKIHl5c3RwY3B5
IChjaGFyICp5eWRlc3QsIGNvbnN0IGNoYXIgKnl5c3JjKQotI2Vsc2UKLXN0YXRpYyBjaGFyICoK
LXl5c3RwY3B5ICh5eWRlc3QsIHl5c3JjKQotICAgIGNoYXIgKnl5ZGVzdDsKLSAgICBjb25zdCBj
aGFyICp5eXNyYzsKLSNlbmRpZgogewogICBjaGFyICp5eWQgPSB5eWRlc3Q7CiAgIGNvbnN0IGNo
YXIgKnl5cyA9IHl5c3JjOwpAQCAtOTcwLDI3ICs4ODAsMjcgQEAgeXl0bmFtZXJyIChjaGFyICp5
eXJlcywgY29uc3QgY2hhciAqeXlzdAogICAgICAgY2hhciBjb25zdCAqeXlwID0geXlzdHI7CiAK
ICAgICAgIGZvciAoOzspCi0Jc3dpdGNoICgqKyt5eXApCi0JICB7Ci0JICBjYXNlICdcJyc6Ci0J
ICBjYXNlICcsJzoKLQkgICAgZ290byBkb19ub3Rfc3RyaXBfcXVvdGVzOwotCi0JICBjYXNlICdc
XCc6Ci0JICAgIGlmICgqKyt5eXAgIT0gJ1xcJykKLQkgICAgICBnb3RvIGRvX25vdF9zdHJpcF9x
dW90ZXM7Ci0JICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCi0JICBkZWZhdWx0OgotCSAgICBpZiAo
eXlyZXMpCi0JICAgICAgeXlyZXNbeXluXSA9ICp5eXA7Ci0JICAgIHl5bisrOwotCSAgICBicmVh
azsKLQotCSAgY2FzZSAnIic6Ci0JICAgIGlmICh5eXJlcykKLQkgICAgICB5eXJlc1t5eW5dID0g
J1wwJzsKLQkgICAgcmV0dXJuIHl5bjsKLQkgIH0KKyAgICAgICAgc3dpdGNoICgqKyt5eXApCisg
ICAgICAgICAgeworICAgICAgICAgIGNhc2UgJ1wnJzoKKyAgICAgICAgICBjYXNlICcsJzoKKyAg
ICAgICAgICAgIGdvdG8gZG9fbm90X3N0cmlwX3F1b3RlczsKKworICAgICAgICAgIGNhc2UgJ1xc
JzoKKyAgICAgICAgICAgIGlmICgqKyt5eXAgIT0gJ1xcJykKKyAgICAgICAgICAgICAgZ290byBk
b19ub3Rfc3RyaXBfcXVvdGVzOworICAgICAgICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KKyAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKHl5cmVzKQorICAgICAgICAgICAgICB5
eXJlc1t5eW5dID0gKnl5cDsKKyAgICAgICAgICAgIHl5bisrOworICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICBjYXNlICciJzoKKyAgICAgICAgICAgIGlmICh5eXJlcykKKyAgICAgICAg
ICAgICAgeXlyZXNbeXluXSA9ICdcMCc7CisgICAgICAgICAgICByZXR1cm4geXluOworICAgICAg
ICAgIH0KICAgICBkb19ub3Rfc3RyaXBfcXVvdGVzOiA7CiAgICAgfQogCkBAIC0xMDAxLDE2NyAr
OTExLDE1OSBAQCB5eXRuYW1lcnIgKGNoYXIgKnl5cmVzLCBjb25zdCBjaGFyICp5eXN0CiB9CiAj
IGVuZGlmCiAKLS8qIENvcHkgaW50byBZWVJFU1VMVCBhbiBlcnJvciBtZXNzYWdlIGFib3V0IHRo
ZSB1bmV4cGVjdGVkIHRva2VuCi0gICBZWUNIQVIgd2hpbGUgaW4gc3RhdGUgWVlTVEFURS4gIFJl
dHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGNvcGllZCwKLSAgIGluY2x1ZGluZyB0aGUgdGVybWlu
YXRpbmcgbnVsbCBieXRlLiAgSWYgWVlSRVNVTFQgaXMgbnVsbCwgZG8gbm90Ci0gICBjb3B5IGFu
eXRoaW5nOyBqdXN0IHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgd291bGQgYmUKLSAg
IGNvcGllZC4gIEFzIGEgc3BlY2lhbCBjYXNlLCByZXR1cm4gMCBpZiBhbiBvcmRpbmFyeSAic3lu
dGF4IGVycm9yIgotICAgbWVzc2FnZSB3aWxsIGRvLiAgUmV0dXJuIFlZU0laRV9NQVhJTVVNIGlm
IG92ZXJmbG93IG9jY3VycyBkdXJpbmcKLSAgIHNpemUgY2FsY3VsYXRpb24uICAqLwotc3RhdGlj
IFlZU0laRV9UCi15eXN5bnRheF9lcnJvciAoY2hhciAqeXlyZXN1bHQsIGludCB5eXN0YXRlLCBp
bnQgeXljaGFyKQorLyogQ29weSBpbnRvICpZWU1TRywgd2hpY2ggaXMgb2Ygc2l6ZSAqWVlNU0df
QUxMT0MsIGFuIGVycm9yIG1lc3NhZ2UKKyAgIGFib3V0IHRoZSB1bmV4cGVjdGVkIHRva2VuIFlZ
VE9LRU4gZm9yIHRoZSBzdGF0ZSBzdGFjayB3aG9zZSB0b3AgaXMKKyAgIFlZU1NQLgorCisgICBS
ZXR1cm4gMCBpZiAqWVlNU0cgd2FzIHN1Y2Nlc3NmdWxseSB3cml0dGVuLiAgUmV0dXJuIDEgaWYg
KllZTVNHIGlzCisgICBub3QgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgdGhlIG1lc3NhZ2UuICBJbiB0
aGF0IGNhc2UsIGFsc28gc2V0CisgICAqWVlNU0dfQUxMT0MgdG8gdGhlIHJlcXVpcmVkIG51bWJl
ciBvZiBieXRlcy4gIFJldHVybiAyIGlmIHRoZQorICAgcmVxdWlyZWQgbnVtYmVyIG9mIGJ5dGVz
IGlzIHRvbyBsYXJnZSB0byBzdG9yZS4gICovCitzdGF0aWMgaW50Cit5eXN5bnRheF9lcnJvciAo
WVlTSVpFX1QgKnl5bXNnX2FsbG9jLCBjaGFyICoqeXltc2csCisgICAgICAgICAgICAgICAgeXl0
eXBlX2ludDE2ICp5eXNzcCwgaW50IHl5dG9rZW4pCiB7Ci0gIGludCB5eW4gPSB5eXBhY3RbeXlz
dGF0ZV07CisgIFlZU0laRV9UIHl5c2l6ZTAgPSB5eXRuYW1lcnIgKFlZX05VTExQVFIsIHl5dG5h
bWVbeXl0b2tlbl0pOworICBZWVNJWkVfVCB5eXNpemUgPSB5eXNpemUwOworICBlbnVtIHsgWVlF
UlJPUl9WRVJCT1NFX0FSR1NfTUFYSU1VTSA9IDUgfTsKKyAgLyogSW50ZXJuYXRpb25hbGl6ZWQg
Zm9ybWF0IHN0cmluZy4gKi8KKyAgY29uc3QgY2hhciAqeXlmb3JtYXQgPSBZWV9OVUxMUFRSOwor
ICAvKiBBcmd1bWVudHMgb2YgeXlmb3JtYXQuICovCisgIGNoYXIgY29uc3QgKnl5YXJnW1lZRVJS
T1JfVkVSQk9TRV9BUkdTX01BWElNVU1dOworICAvKiBOdW1iZXIgb2YgcmVwb3J0ZWQgdG9rZW5z
IChvbmUgZm9yIHRoZSAidW5leHBlY3RlZCIsIG9uZSBwZXIKKyAgICAgImV4cGVjdGVkIikuICov
CisgIGludCB5eWNvdW50ID0gMDsKKworICAvKiBUaGVyZSBhcmUgbWFueSBwb3NzaWJpbGl0aWVz
IGhlcmUgdG8gY29uc2lkZXI6CisgICAgIC0gSWYgdGhpcyBzdGF0ZSBpcyBhIGNvbnNpc3RlbnQg
c3RhdGUgd2l0aCBhIGRlZmF1bHQgYWN0aW9uLCB0aGVuCisgICAgICAgdGhlIG9ubHkgd2F5IHRo
aXMgZnVuY3Rpb24gd2FzIGludm9rZWQgaXMgaWYgdGhlIGRlZmF1bHQgYWN0aW9uCisgICAgICAg
aXMgYW4gZXJyb3IgYWN0aW9uLiAgSW4gdGhhdCBjYXNlLCBkb24ndCBjaGVjayBmb3IgZXhwZWN0
ZWQKKyAgICAgICB0b2tlbnMgYmVjYXVzZSB0aGVyZSBhcmUgbm9uZS4KKyAgICAgLSBUaGUgb25s
eSB3YXkgdGhlcmUgY2FuIGJlIG5vIGxvb2thaGVhZCBwcmVzZW50IChpbiB5eWNoYXIpIGlzIGlm
CisgICAgICAgdGhpcyBzdGF0ZSBpcyBhIGNvbnNpc3RlbnQgc3RhdGUgd2l0aCBhIGRlZmF1bHQg
YWN0aW9uLiAgVGh1cywKKyAgICAgICBkZXRlY3RpbmcgdGhlIGFic2VuY2Ugb2YgYSBsb29rYWhl
YWQgaXMgc3VmZmljaWVudCB0byBkZXRlcm1pbmUKKyAgICAgICB0aGF0IHRoZXJlIGlzIG5vIHVu
ZXhwZWN0ZWQgb3IgZXhwZWN0ZWQgdG9rZW4gdG8gcmVwb3J0LiAgSW4gdGhhdAorICAgICAgIGNh
c2UsIGp1c3QgcmVwb3J0IGEgc2ltcGxlICJzeW50YXggZXJyb3IiLgorICAgICAtIERvbid0IGFz
c3VtZSB0aGVyZSBpc24ndCBhIGxvb2thaGVhZCBqdXN0IGJlY2F1c2UgdGhpcyBzdGF0ZSBpcyBh
CisgICAgICAgY29uc2lzdGVudCBzdGF0ZSB3aXRoIGEgZGVmYXVsdCBhY3Rpb24uICBUaGVyZSBt
aWdodCBoYXZlIGJlZW4gYQorICAgICAgIHByZXZpb3VzIGluY29uc2lzdGVudCBzdGF0ZSwgY29u
c2lzdGVudCBzdGF0ZSB3aXRoIGEgbm9uLWRlZmF1bHQKKyAgICAgICBhY3Rpb24sIG9yIHVzZXIg
c2VtYW50aWMgYWN0aW9uIHRoYXQgbWFuaXB1bGF0ZWQgeXljaGFyLgorICAgICAtIE9mIGNvdXJz
ZSwgdGhlIGV4cGVjdGVkIHRva2VuIGxpc3QgZGVwZW5kcyBvbiBzdGF0ZXMgdG8gaGF2ZQorICAg
ICAgIGNvcnJlY3QgbG9va2FoZWFkIGluZm9ybWF0aW9uLCBhbmQgaXQgZGVwZW5kcyBvbiB0aGUg
cGFyc2VyIG5vdAorICAgICAgIHRvIHBlcmZvcm0gZXh0cmEgcmVkdWN0aW9ucyBhZnRlciBmZXRj
aGluZyBhIGxvb2thaGVhZCBmcm9tIHRoZQorICAgICAgIHNjYW5uZXIgYW5kIGJlZm9yZSBkZXRl
Y3RpbmcgYSBzeW50YXggZXJyb3IuICBUaHVzLCBzdGF0ZSBtZXJnaW5nCisgICAgICAgKGZyb20g
TEFMUiBvciBJRUxSKSBhbmQgZGVmYXVsdCByZWR1Y3Rpb25zIGNvcnJ1cHQgdGhlIGV4cGVjdGVk
CisgICAgICAgdG9rZW4gbGlzdC4gIEhvd2V2ZXIsIHRoZSBsaXN0IGlzIGNvcnJlY3QgZm9yIGNh
bm9uaWNhbCBMUiB3aXRoCisgICAgICAgb25lIGV4Y2VwdGlvbjogaXQgd2lsbCBzdGlsbCBjb250
YWluIGFueSB0b2tlbiB0aGF0IHdpbGwgbm90IGJlCisgICAgICAgYWNjZXB0ZWQgZHVlIHRvIGFu
IGVycm9yIGFjdGlvbiBpbiBhIGxhdGVyIHN0YXRlLgorICAqLworICBpZiAoeXl0b2tlbiAhPSBZ
WUVNUFRZKQorICAgIHsKKyAgICAgIGludCB5eW4gPSB5eXBhY3RbKnl5c3NwXTsKKyAgICAgIHl5
YXJnW3l5Y291bnQrK10gPSB5eXRuYW1lW3l5dG9rZW5dOworICAgICAgaWYgKCF5eXBhY3RfdmFs
dWVfaXNfZGVmYXVsdCAoeXluKSkKKyAgICAgICAgeworICAgICAgICAgIC8qIFN0YXJ0IFlZWCBh
dCAtWVlOIGlmIG5lZ2F0aXZlIHRvIGF2b2lkIG5lZ2F0aXZlIGluZGV4ZXMgaW4KKyAgICAgICAg
ICAgICBZWUNIRUNLLiAgSW4gb3RoZXIgd29yZHMsIHNraXAgdGhlIGZpcnN0IC1ZWU4gYWN0aW9u
cyBmb3IKKyAgICAgICAgICAgICB0aGlzIHN0YXRlIGJlY2F1c2UgdGhleSBhcmUgZGVmYXVsdCBh
Y3Rpb25zLiAgKi8KKyAgICAgICAgICBpbnQgeXl4YmVnaW4gPSB5eW4gPCAwID8gLXl5biA6IDA7
CisgICAgICAgICAgLyogU3RheSB3aXRoaW4gYm91bmRzIG9mIGJvdGggeXljaGVjayBhbmQgeXl0
bmFtZS4gICovCisgICAgICAgICAgaW50IHl5Y2hlY2tsaW0gPSBZWUxBU1QgLSB5eW4gKyAxOwor
ICAgICAgICAgIGludCB5eXhlbmQgPSB5eWNoZWNrbGltIDwgWVlOVE9LRU5TID8geXljaGVja2xp
bSA6IFlZTlRPS0VOUzsKKyAgICAgICAgICBpbnQgeXl4OworCisgICAgICAgICAgZm9yICh5eXgg
PSB5eXhiZWdpbjsgeXl4IDwgeXl4ZW5kOyArK3l5eCkKKyAgICAgICAgICAgIGlmICh5eWNoZWNr
W3l5eCArIHl5bl0gPT0geXl4ICYmIHl5eCAhPSBZWVRFUlJPUgorICAgICAgICAgICAgICAgICYm
ICF5eXRhYmxlX3ZhbHVlX2lzX2Vycm9yICh5eXRhYmxlW3l5eCArIHl5bl0pKQorICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgaWYgKHl5Y291bnQgPT0gWVlFUlJPUl9WRVJCT1NFX0FS
R1NfTUFYSU1VTSkKKyAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgeXlj
b3VudCA9IDE7CisgICAgICAgICAgICAgICAgICAgIHl5c2l6ZSA9IHl5c2l6ZTA7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IHl5YXJnW3l5Y291bnQrK10gPSB5eXRuYW1lW3l5eF07CisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgWVlTSVpFX1QgeXlzaXplMSA9IHl5c2l6ZSArIHl5dG5hbWVyciAoWVlf
TlVMTFBUUiwgeXl0bmFtZVt5eXhdKTsKKyAgICAgICAgICAgICAgICAgIGlmICghICh5eXNpemUg
PD0geXlzaXplMQorICAgICAgICAgICAgICAgICAgICAgICAgICYmIHl5c2l6ZTEgPD0gWVlTVEFD
S19BTExPQ19NQVhJTVVNKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAg
ICAgICAgICAgICB5eXNpemUgPSB5eXNpemUxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQogCi0gIGlmICghIChZWVBBQ1RfTklORiA8IHl5biAm
JiB5eW4gPD0gWVlMQVNUKSkKLSAgICByZXR1cm4gMDsKLSAgZWxzZQorICBzd2l0Y2ggKHl5Y291
bnQpCiAgICAgewotICAgICAgaW50IHl5dHlwZSA9IFlZVFJBTlNMQVRFICh5eWNoYXIpOwotICAg
ICAgWVlTSVpFX1QgeXlzaXplMCA9IHl5dG5hbWVyciAoMCwgeXl0bmFtZVt5eXR5cGVdKTsKLSAg
ICAgIFlZU0laRV9UIHl5c2l6ZSA9IHl5c2l6ZTA7Ci0gICAgICBZWVNJWkVfVCB5eXNpemUxOwot
ICAgICAgaW50IHl5c2l6ZV9vdmVyZmxvdyA9IDA7Ci0gICAgICBlbnVtIHsgWVlFUlJPUl9WRVJC
T1NFX0FSR1NfTUFYSU1VTSA9IDUgfTsKLSAgICAgIGNoYXIgY29uc3QgKnl5YXJnW1lZRVJST1Jf
VkVSQk9TRV9BUkdTX01BWElNVU1dOwotICAgICAgaW50IHl5eDsKLQotIyBpZiAwCi0gICAgICAv
KiBUaGlzIGlzIHNvIHhnZXR0ZXh0IHNlZXMgdGhlIHRyYW5zbGF0YWJsZSBmb3JtYXRzIHRoYXQg
YXJlCi0JIGNvbnN0cnVjdGVkIG9uIHRoZSBmbHkuICAqLwotICAgICAgWVlfKCJzeW50YXggZXJy
b3IsIHVuZXhwZWN0ZWQgJXMiKTsKLSAgICAgIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVk
ICVzLCBleHBlY3RpbmcgJXMiKTsKLSAgICAgIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVk
ICVzLCBleHBlY3RpbmcgJXMgb3IgJXMiKTsKLSAgICAgIFlZXygic3ludGF4IGVycm9yLCB1bmV4
cGVjdGVkICVzLCBleHBlY3RpbmcgJXMgb3IgJXMgb3IgJXMiKTsKLSAgICAgIFlZXygic3ludGF4
IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMgb3IgJXMgb3IgJXMgb3IgJXMiKTsK
LSMgZW5kaWYKLSAgICAgIGNoYXIgKnl5Zm10OwotICAgICAgY2hhciBjb25zdCAqeXlmOwotICAg
ICAgc3RhdGljIGNoYXIgY29uc3QgeXl1bmV4cGVjdGVkW10gPSAic3ludGF4IGVycm9yLCB1bmV4
cGVjdGVkICVzIjsKLSAgICAgIHN0YXRpYyBjaGFyIGNvbnN0IHl5ZXhwZWN0aW5nW10gPSAiLCBl
eHBlY3RpbmcgJXMiOwotICAgICAgc3RhdGljIGNoYXIgY29uc3QgeXlvcltdID0gIiBvciAlcyI7
Ci0gICAgICBjaGFyIHl5Zm9ybWF0W3NpemVvZiB5eXVuZXhwZWN0ZWQKLQkJICAgICsgc2l6ZW9m
IHl5ZXhwZWN0aW5nIC0gMQotCQkgICAgKyAoKFlZRVJST1JfVkVSQk9TRV9BUkdTX01BWElNVU0g
LSAyKQotCQkgICAgICAgKiAoc2l6ZW9mIHl5b3IgLSAxKSldOwotICAgICAgY2hhciBjb25zdCAq
eXlwcmVmaXggPSB5eWV4cGVjdGluZzsKLQotICAgICAgLyogU3RhcnQgWVlYIGF0IC1ZWU4gaWYg
bmVnYXRpdmUgdG8gYXZvaWQgbmVnYXRpdmUgaW5kZXhlcyBpbgotCSBZWUNIRUNLLiAgKi8KLSAg
ICAgIGludCB5eXhiZWdpbiA9IHl5biA8IDAgPyAteXluIDogMDsKLQotICAgICAgLyogU3RheSB3
aXRoaW4gYm91bmRzIG9mIGJvdGggeXljaGVjayBhbmQgeXl0bmFtZS4gICovCi0gICAgICBpbnQg
eXljaGVja2xpbSA9IFlZTEFTVCAtIHl5biArIDE7Ci0gICAgICBpbnQgeXl4ZW5kID0geXljaGVj
a2xpbSA8IFlZTlRPS0VOUyA/IHl5Y2hlY2tsaW0gOiBZWU5UT0tFTlM7Ci0gICAgICBpbnQgeXlj
b3VudCA9IDE7Ci0KLSAgICAgIHl5YXJnWzBdID0geXl0bmFtZVt5eXR5cGVdOwotICAgICAgeXlm
bXQgPSB5eXN0cGNweSAoeXlmb3JtYXQsIHl5dW5leHBlY3RlZCk7Ci0KLSAgICAgIGZvciAoeXl4
ID0geXl4YmVnaW47IHl5eCA8IHl5eGVuZDsgKyt5eXgpCi0JaWYgKHl5Y2hlY2tbeXl4ICsgeXlu
XSA9PSB5eXggJiYgeXl4ICE9IFlZVEVSUk9SKQotCSAgewotCSAgICBpZiAoeXljb3VudCA9PSBZ
WUVSUk9SX1ZFUkJPU0VfQVJHU19NQVhJTVVNKQotCSAgICAgIHsKLQkJeXljb3VudCA9IDE7Ci0J
CXl5c2l6ZSA9IHl5c2l6ZTA7Ci0JCXl5Zm9ybWF0W3NpemVvZiB5eXVuZXhwZWN0ZWQgLSAxXSA9
ICdcMCc7Ci0JCWJyZWFrOwotCSAgICAgIH0KLQkgICAgeXlhcmdbeXljb3VudCsrXSA9IHl5dG5h
bWVbeXl4XTsKLQkgICAgeXlzaXplMSA9IHl5c2l6ZSArIHl5dG5hbWVyciAoMCwgeXl0bmFtZVt5
eXhdKTsKLQkgICAgeXlzaXplX292ZXJmbG93IHw9ICh5eXNpemUxIDwgeXlzaXplKTsKLQkgICAg
eXlzaXplID0geXlzaXplMTsKLQkgICAgeXlmbXQgPSB5eXN0cGNweSAoeXlmbXQsIHl5cHJlZml4
KTsKLQkgICAgeXlwcmVmaXggPSB5eW9yOwotCSAgfQotCi0gICAgICB5eWYgPSBZWV8oeXlmb3Jt
YXQpOwotICAgICAgeXlzaXplMSA9IHl5c2l6ZSArIHl5c3RybGVuICh5eWYpOwotICAgICAgeXlz
aXplX292ZXJmbG93IHw9ICh5eXNpemUxIDwgeXlzaXplKTsKLSAgICAgIHl5c2l6ZSA9IHl5c2l6
ZTE7Ci0KLSAgICAgIGlmICh5eXNpemVfb3ZlcmZsb3cpCi0JcmV0dXJuIFlZU0laRV9NQVhJTVVN
OwotCi0gICAgICBpZiAoeXlyZXN1bHQpCi0JewotCSAgLyogQXZvaWQgc3ByaW50ZiwgYXMgdGhh
dCBpbmZyaW5nZXMgb24gdGhlIHVzZXIncyBuYW1lIHNwYWNlLgotCSAgICAgRG9uJ3QgaGF2ZSB1
bmRlZmluZWQgYmVoYXZpb3IgZXZlbiBpZiB0aGUgdHJhbnNsYXRpb24KLQkgICAgIHByb2R1Y2Vk
IGEgc3RyaW5nIHdpdGggdGhlIHdyb25nIG51bWJlciBvZiAiJXMicy4gICovCi0JICBjaGFyICp5
eXAgPSB5eXJlc3VsdDsKLQkgIGludCB5eWkgPSAwOwotCSAgd2hpbGUgKCgqeXlwID0gKnl5Zikg
IT0gJ1wwJykKLQkgICAgewotCSAgICAgIGlmICgqeXlwID09ICclJyAmJiB5eWZbMV0gPT0gJ3Mn
ICYmIHl5aSA8IHl5Y291bnQpCi0JCXsKLQkJICB5eXAgKz0geXl0bmFtZXJyICh5eXAsIHl5YXJn
W3l5aSsrXSk7Ci0JCSAgeXlmICs9IDI7Ci0JCX0KLQkgICAgICBlbHNlCi0JCXsKLQkJICB5eXAr
KzsKLQkJICB5eWYrKzsKLQkJfQotCSAgICB9Ci0JfQotICAgICAgcmV0dXJuIHl5c2l6ZTsKKyMg
ZGVmaW5lIFlZQ0FTRV8oTiwgUykgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgY2FzZSBO
OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHl5Zm9ybWF0ID0gUzsg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGJyZWFrCisgICAgICBZWUNBU0VfKDAsIFlZ
Xygic3ludGF4IGVycm9yIikpOworICAgICAgWVlDQVNFXygxLCBZWV8oInN5bnRheCBlcnJvciwg
dW5leHBlY3RlZCAlcyIpKTsKKyAgICAgIFlZQ0FTRV8oMiwgWVlfKCJzeW50YXggZXJyb3IsIHVu
ZXhwZWN0ZWQgJXMsIGV4cGVjdGluZyAlcyIpKTsKKyAgICAgIFlZQ0FTRV8oMywgWVlfKCJzeW50
YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMsIGV4cGVjdGluZyAlcyBvciAlcyIpKTsKKyAgICAgIFlZ
Q0FTRV8oNCwgWVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMsIGV4cGVjdGluZyAlcyBv
ciAlcyBvciAlcyIpKTsKKyAgICAgIFlZQ0FTRV8oNSwgWVlfKCJzeW50YXggZXJyb3IsIHVuZXhw
ZWN0ZWQgJXMsIGV4cGVjdGluZyAlcyBvciAlcyBvciAlcyBvciAlcyIpKTsKKyMgdW5kZWYgWVlD
QVNFXwogICAgIH0KKworICB7CisgICAgWVlTSVpFX1QgeXlzaXplMSA9IHl5c2l6ZSArIHl5c3Ry
bGVuICh5eWZvcm1hdCk7CisgICAgaWYgKCEgKHl5c2l6ZSA8PSB5eXNpemUxICYmIHl5c2l6ZTEg
PD0gWVlTVEFDS19BTExPQ19NQVhJTVVNKSkKKyAgICAgIHJldHVybiAyOworICAgIHl5c2l6ZSA9
IHl5c2l6ZTE7CisgIH0KKworICBpZiAoKnl5bXNnX2FsbG9jIDwgeXlzaXplKQorICAgIHsKKyAg
ICAgICp5eW1zZ19hbGxvYyA9IDIgKiB5eXNpemU7CisgICAgICBpZiAoISAoeXlzaXplIDw9ICp5
eW1zZ19hbGxvYworICAgICAgICAgICAgICYmICp5eW1zZ19hbGxvYyA8PSBZWVNUQUNLX0FMTE9D
X01BWElNVU0pKQorICAgICAgICAqeXltc2dfYWxsb2MgPSBZWVNUQUNLX0FMTE9DX01BWElNVU07
CisgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgLyogQXZvaWQgc3ByaW50ZiwgYXMgdGhhdCBp
bmZyaW5nZXMgb24gdGhlIHVzZXIncyBuYW1lIHNwYWNlLgorICAgICBEb24ndCBoYXZlIHVuZGVm
aW5lZCBiZWhhdmlvciBldmVuIGlmIHRoZSB0cmFuc2xhdGlvbgorICAgICBwcm9kdWNlZCBhIHN0
cmluZyB3aXRoIHRoZSB3cm9uZyBudW1iZXIgb2YgIiVzInMuICAqLworICB7CisgICAgY2hhciAq
eXlwID0gKnl5bXNnOworICAgIGludCB5eWkgPSAwOworICAgIHdoaWxlICgoKnl5cCA9ICp5eWZv
cm1hdCkgIT0gJ1wwJykKKyAgICAgIGlmICgqeXlwID09ICclJyAmJiB5eWZvcm1hdFsxXSA9PSAn
cycgJiYgeXlpIDwgeXljb3VudCkKKyAgICAgICAgeworICAgICAgICAgIHl5cCArPSB5eXRuYW1l
cnIgKHl5cCwgeXlhcmdbeXlpKytdKTsKKyAgICAgICAgICB5eWZvcm1hdCArPSAyOworICAgICAg
ICB9CisgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICB5eXArKzsKKyAgICAgICAgICB5
eWZvcm1hdCsrOworICAgICAgICB9CisgIH0KKyAgcmV0dXJuIDA7CiB9CiAjZW5kaWYgLyogWVlF
UlJPUl9WRVJCT1NFICovCi0MCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0uCiB8IFJlbGVhc2UgdGhlIG1lbW9yeSBhc3NvY2lhdGVkIHRvIHRoaXMg
c3ltYm9sLiAgfAogYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKi8KIAotLypBUkdTVVNFRCovCi0jaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBf
X0M5OV9fRlVOQ19fIFwKLSAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9N
U0NfVkVSKQogc3RhdGljIHZvaWQKIHl5ZGVzdHJ1Y3QgKGNvbnN0IGNoYXIgKnl5bXNnLCBpbnQg
eXl0eXBlLCBZWVNUWVBFICp5eXZhbHVlcCwgQ29udGV4dCAqY29udGV4dCkKLSNlbHNlCi1zdGF0
aWMgdm9pZAoteXlkZXN0cnVjdCAoeXltc2csIHl5dHlwZSwgeXl2YWx1ZXAsIGNvbnRleHQpCi0g
ICAgY29uc3QgY2hhciAqeXltc2c7Ci0gICAgaW50IHl5dHlwZTsKLSAgICBZWVNUWVBFICp5eXZh
bHVlcDsKLSAgICBDb250ZXh0ICpjb250ZXh0OwotI2VuZGlmCiB7CiAgIFlZVVNFICh5eXZhbHVl
cCk7CiAgIFlZVVNFIChjb250ZXh0KTsKLQogICBpZiAoIXl5bXNnKQogICAgIHl5bXNnID0gIkRl
bGV0aW5nIjsKICAgWVlfU1lNQk9MX1BSSU5UICh5eW1zZywgeXl0eXBlLCB5eXZhbHVlcCwgeXls
b2NhdGlvbnApOwogCi0gIHN3aXRjaCAoeXl0eXBlKQotICAgIHsKLQotICAgICAgZGVmYXVsdDoK
LQlicmVhazsKLSAgICB9CisgIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0JFR0lOCisg
IFlZVVNFICh5eXR5cGUpOworICBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9FTkQKIH0K
LQwKLQotLyogUHJldmVudCB3YXJuaW5ncyBmcm9tIC1XbWlzc2luZy1wcm90b3R5cGVzLiAgKi8K
LQotI2lmZGVmIFlZUEFSU0VfUEFSQU0KLSNpZiBkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQg
X19jcGx1c3BsdXMKLWludCB5eXBhcnNlICh2b2lkICpZWVBBUlNFX1BBUkFNKTsKLSNlbHNlCi1p
bnQgeXlwYXJzZSAoKTsKLSNlbmRpZgotI2Vsc2UgLyogISBZWVBBUlNFX1BBUkFNICovCi0jaWYg
ZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzCi1pbnQgeXlwYXJzZSAoQ29u
dGV4dCAqY29udGV4dCk7Ci0jZWxzZQotaW50IHl5cGFyc2UgKCk7Ci0jZW5kaWYKLSNlbmRpZiAv
KiAhIFlZUEFSU0VfUEFSQU0gKi8KLQotCiAKIAogCkBAIC0xMTcwLDQ0ICsxMDcyLDUzIEBAIGlu
dCB5eXBhcnNlICgpOwogfCB5eXBhcnNlLiAgfAogYC0tLS0tLS0tLS0qLwogCi0jaWZkZWYgWVlQ
QVJTRV9QQVJBTQotI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNf
XyBcCi0gICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKLWlu
dAoteXlwYXJzZSAodm9pZCAqWVlQQVJTRV9QQVJBTSkKLSNlbHNlCi1pbnQKLXl5cGFyc2UgKFlZ
UEFSU0VfUEFSQU0pCi0gICAgdm9pZCAqWVlQQVJTRV9QQVJBTTsKLSNlbmRpZgotI2Vsc2UgLyog
ISBZWVBBUlNFX1BBUkFNICovCi0jaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5
OV9fRlVOQ19fIFwKLSAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0Nf
VkVSKQogaW50CiB5eXBhcnNlIChDb250ZXh0ICpjb250ZXh0KQotI2Vsc2UKLWludAoteXlwYXJz
ZSAoY29udGV4dCkKLSAgICBDb250ZXh0ICpjb250ZXh0OwotI2VuZGlmCi0jZW5kaWYKIHsKLSAg
LyogVGhlIGxvb2stYWhlYWQgc3ltYm9sLiAgKi8KKy8qIFRoZSBsb29rYWhlYWQgc3ltYm9sLiAg
Ki8KIGludCB5eWNoYXI7CiAKLS8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBvZiB0aGUgbG9vay1haGVh
ZCBzeW1ib2wuICAqLwotWVlTVFlQRSB5eWx2YWw7CiAKLS8qIE51bWJlciBvZiBzeW50YXggZXJy
b3JzIHNvIGZhci4gICovCi1pbnQgeXluZXJyczsKKy8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBvZiB0
aGUgbG9va2FoZWFkIHN5bWJvbC4gICovCisvKiBEZWZhdWx0IHZhbHVlIHVzZWQgZm9yIGluaXRp
YWxpemF0aW9uLCBmb3IgcGFjaWZ5aW5nIG9sZGVyIEdDQ3MKKyAgIG9yIG5vbi1HQ0MgY29tcGls
ZXJzLiAgKi8KK1lZX0lOSVRJQUxfVkFMVUUgKHN0YXRpYyBZWVNUWVBFIHl5dmFsX2RlZmF1bHQ7
KQorWVlTVFlQRSB5eWx2YWwgWVlfSU5JVElBTF9WQUxVRSAoPSB5eXZhbF9kZWZhdWx0KTsKKwor
ICAgIC8qIE51bWJlciBvZiBzeW50YXggZXJyb3JzIHNvIGZhci4gICovCisgICAgaW50IHl5bmVy
cnM7CisKKyAgICBpbnQgeXlzdGF0ZTsKKyAgICAvKiBOdW1iZXIgb2YgdG9rZW5zIHRvIHNoaWZ0
IGJlZm9yZSBlcnJvciBtZXNzYWdlcyBlbmFibGVkLiAgKi8KKyAgICBpbnQgeXllcnJzdGF0dXM7
CisKKyAgICAvKiBUaGUgc3RhY2tzIGFuZCB0aGVpciB0b29sczoKKyAgICAgICAneXlzcyc6IHJl
bGF0ZWQgdG8gc3RhdGVzLgorICAgICAgICd5eXZzJzogcmVsYXRlZCB0byBzZW1hbnRpYyB2YWx1
ZXMuCisKKyAgICAgICBSZWZlciB0byB0aGUgc3RhY2tzIHRocm91Z2ggc2VwYXJhdGUgcG9pbnRl
cnMsIHRvIGFsbG93IHl5b3ZlcmZsb3cKKyAgICAgICB0byByZWFsbG9jYXRlIHRoZW0gZWxzZXdo
ZXJlLiAgKi8KKworICAgIC8qIFRoZSBzdGF0ZSBzdGFjay4gICovCisgICAgeXl0eXBlX2ludDE2
IHl5c3NhW1lZSU5JVERFUFRIXTsKKyAgICB5eXR5cGVfaW50MTYgKnl5c3M7CisgICAgeXl0eXBl
X2ludDE2ICp5eXNzcDsKKworICAgIC8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBzdGFjay4gICovCisg
ICAgWVlTVFlQRSB5eXZzYVtZWUlOSVRERVBUSF07CisgICAgWVlTVFlQRSAqeXl2czsKKyAgICBZ
WVNUWVBFICp5eXZzcDsKKworICAgIFlZU0laRV9UIHl5c3RhY2tzaXplOwogCi0gIGludCB5eXN0
YXRlOwogICBpbnQgeXluOwogICBpbnQgeXlyZXN1bHQ7Ci0gIC8qIE51bWJlciBvZiB0b2tlbnMg
dG8gc2hpZnQgYmVmb3JlIGVycm9yIG1lc3NhZ2VzIGVuYWJsZWQuICAqLwotICBpbnQgeXllcnJz
dGF0dXM7Ci0gIC8qIExvb2stYWhlYWQgdG9rZW4gYXMgYW4gaW50ZXJuYWwgKHRyYW5zbGF0ZWQp
IHRva2VuIG51bWJlci4gICovCisgIC8qIExvb2thaGVhZCB0b2tlbiBhcyBhbiBpbnRlcm5hbCAo
dHJhbnNsYXRlZCkgdG9rZW4gbnVtYmVyLiAgKi8KICAgaW50IHl5dG9rZW4gPSAwOworICAvKiBU
aGUgdmFyaWFibGVzIHVzZWQgdG8gcmV0dXJuIHNlbWFudGljIHZhbHVlIGFuZCBsb2NhdGlvbiBm
cm9tIHRoZQorICAgICBhY3Rpb24gcm91dGluZXMuICAqLworICBZWVNUWVBFIHl5dmFsOworCiAj
aWYgWVlFUlJPUl9WRVJCT1NFCiAgIC8qIEJ1ZmZlciBmb3IgZXJyb3IgbWVzc2FnZXMsIGFuZCBp
dHMgYWxsb2NhdGVkIHNpemUuICAqLwogICBjaGFyIHl5bXNnYnVmWzEyOF07CkBAIC0xMjE1LDU0
ICsxMTI2LDIyIEBAIGludCB5eW5lcnJzOwogICBZWVNJWkVfVCB5eW1zZ19hbGxvYyA9IHNpemVv
ZiB5eW1zZ2J1ZjsKICNlbmRpZgogCi0gIC8qIFRocmVlIHN0YWNrcyBhbmQgdGhlaXIgdG9vbHM6
Ci0gICAgIGB5eXNzJzogcmVsYXRlZCB0byBzdGF0ZXMsCi0gICAgIGB5eXZzJzogcmVsYXRlZCB0
byBzZW1hbnRpYyB2YWx1ZXMsCi0gICAgIGB5eWxzJzogcmVsYXRlZCB0byBsb2NhdGlvbnMuCi0K
LSAgICAgUmVmZXIgdG8gdGhlIHN0YWNrcyB0aHJ1IHNlcGFyYXRlIHBvaW50ZXJzLCB0byBhbGxv
dyB5eW92ZXJmbG93Ci0gICAgIHRvIHJlYWxsb2NhdGUgdGhlbSBlbHNld2hlcmUuICAqLwotCi0g
IC8qIFRoZSBzdGF0ZSBzdGFjay4gICovCi0gIHl5dHlwZV9pbnQxNiB5eXNzYVtZWUlOSVRERVBU
SF07Ci0gIHl5dHlwZV9pbnQxNiAqeXlzcyA9IHl5c3NhOwotICB5eXR5cGVfaW50MTYgKnl5c3Nw
OwotCi0gIC8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBzdGFjay4gICovCi0gIFlZU1RZUEUgeXl2c2Fb
WVlJTklUREVQVEhdOwotICBZWVNUWVBFICp5eXZzID0geXl2c2E7Ci0gIFlZU1RZUEUgKnl5dnNw
OwotCi0KLQogI2RlZmluZSBZWVBPUFNUQUNLKE4pICAgKHl5dnNwIC09IChOKSwgeXlzc3AgLT0g
KE4pKQogCi0gIFlZU0laRV9UIHl5c3RhY2tzaXplID0gWVlJTklUREVQVEg7Ci0KLSAgLyogVGhl
IHZhcmlhYmxlcyB1c2VkIHRvIHJldHVybiBzZW1hbnRpYyB2YWx1ZSBhbmQgbG9jYXRpb24gZnJv
bSB0aGUKLSAgICAgYWN0aW9uIHJvdXRpbmVzLiAgKi8KLSAgWVlTVFlQRSB5eXZhbDsKLQotCiAg
IC8qIFRoZSBudW1iZXIgb2Ygc3ltYm9scyBvbiB0aGUgUkhTIG9mIHRoZSByZWR1Y2VkIHJ1bGUu
CiAgICAgIEtlZXAgdG8gemVybyB3aGVuIG5vIHN5bWJvbCBzaG91bGQgYmUgcG9wcGVkLiAgKi8K
ICAgaW50IHl5bGVuID0gMDsKIAorICB5eXNzcCA9IHl5c3MgPSB5eXNzYTsKKyAgeXl2c3AgPSB5
eXZzID0geXl2c2E7CisgIHl5c3RhY2tzaXplID0gWVlJTklUREVQVEg7CisKICAgWVlEUFJJTlRG
ICgoc3RkZXJyLCAiU3RhcnRpbmcgcGFyc2VcbiIpKTsKIAogICB5eXN0YXRlID0gMDsKICAgeXll
cnJzdGF0dXMgPSAwOwogICB5eW5lcnJzID0gMDsKLSAgeXljaGFyID0gWVlFTVBUWTsJCS8qIENh
dXNlIGEgdG9rZW4gdG8gYmUgcmVhZC4gICovCi0KLSAgLyogSW5pdGlhbGl6ZSBzdGFjayBwb2lu
dGVycy4KLSAgICAgV2FzdGUgb25lIGVsZW1lbnQgb2YgdmFsdWUgYW5kIGxvY2F0aW9uIHN0YWNr
Ci0gICAgIHNvIHRoYXQgdGhleSBzdGF5IG9uIHRoZSBzYW1lIGxldmVsIGFzIHRoZSBzdGF0ZSBz
dGFjay4KLSAgICAgVGhlIHdhc3RlZCBlbGVtZW50cyBhcmUgbmV2ZXIgaW5pdGlhbGl6ZWQuICAq
LwotCi0gIHl5c3NwID0geXlzczsKLSAgeXl2c3AgPSB5eXZzOwotCisgIHl5Y2hhciA9IFlZRU1Q
VFk7IC8qIENhdXNlIGEgdG9rZW4gdG8gYmUgcmVhZC4gICovCiAgIGdvdG8geXlzZXRzdGF0ZTsK
IAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0uCkBAIC0xMjgzLDI1ICsxMTYyLDIzIEBAIGludCB5eW5lcnJzOwogCiAjaWZkZWYg
eXlvdmVyZmxvdwogICAgICAgewotCS8qIEdpdmUgdXNlciBhIGNoYW5jZSB0byByZWFsbG9jYXRl
IHRoZSBzdGFjay4gIFVzZSBjb3BpZXMgb2YKLQkgICB0aGVzZSBzbyB0aGF0IHRoZSAmJ3MgZG9u
J3QgZm9yY2UgdGhlIHJlYWwgb25lcyBpbnRvCi0JICAgbWVtb3J5LiAgKi8KLQlZWVNUWVBFICp5
eXZzMSA9IHl5dnM7Ci0JeXl0eXBlX2ludDE2ICp5eXNzMSA9IHl5c3M7Ci0KLQotCS8qIEVhY2gg
c3RhY2sgcG9pbnRlciBhZGRyZXNzIGlzIGZvbGxvd2VkIGJ5IHRoZSBzaXplIG9mIHRoZQotCSAg
IGRhdGEgaW4gdXNlIGluIHRoYXQgc3RhY2ssIGluIGJ5dGVzLiAgVGhpcyB1c2VkIHRvIGJlIGEK
LQkgICBjb25kaXRpb25hbCBhcm91bmQganVzdCB0aGUgdHdvIGV4dHJhIGFyZ3MsIGJ1dCB0aGF0
IG1pZ2h0Ci0JICAgYmUgdW5kZWZpbmVkIGlmIHl5b3ZlcmZsb3cgaXMgYSBtYWNyby4gICovCi0J
eXlvdmVyZmxvdyAoWVlfKCJtZW1vcnkgZXhoYXVzdGVkIiksCi0JCSAgICAmeXlzczEsIHl5c2l6
ZSAqIHNpemVvZiAoKnl5c3NwKSwKLQkJICAgICZ5eXZzMSwgeXlzaXplICogc2l6ZW9mICgqeXl2
c3ApLAotCi0JCSAgICAmeXlzdGFja3NpemUpOworICAgICAgICAvKiBHaXZlIHVzZXIgYSBjaGFu
Y2UgdG8gcmVhbGxvY2F0ZSB0aGUgc3RhY2suICBVc2UgY29waWVzIG9mCisgICAgICAgICAgIHRo
ZXNlIHNvIHRoYXQgdGhlICYncyBkb24ndCBmb3JjZSB0aGUgcmVhbCBvbmVzIGludG8KKyAgICAg
ICAgICAgbWVtb3J5LiAgKi8KKyAgICAgICAgWVlTVFlQRSAqeXl2czEgPSB5eXZzOworICAgICAg
ICB5eXR5cGVfaW50MTYgKnl5c3MxID0geXlzczsKKworICAgICAgICAvKiBFYWNoIHN0YWNrIHBv
aW50ZXIgYWRkcmVzcyBpcyBmb2xsb3dlZCBieSB0aGUgc2l6ZSBvZiB0aGUKKyAgICAgICAgICAg
ZGF0YSBpbiB1c2UgaW4gdGhhdCBzdGFjaywgaW4gYnl0ZXMuICBUaGlzIHVzZWQgdG8gYmUgYQor
ICAgICAgICAgICBjb25kaXRpb25hbCBhcm91bmQganVzdCB0aGUgdHdvIGV4dHJhIGFyZ3MsIGJ1
dCB0aGF0IG1pZ2h0CisgICAgICAgICAgIGJlIHVuZGVmaW5lZCBpZiB5eW92ZXJmbG93IGlzIGEg
bWFjcm8uICAqLworICAgICAgICB5eW92ZXJmbG93IChZWV8oIm1lbW9yeSBleGhhdXN0ZWQiKSwK
KyAgICAgICAgICAgICAgICAgICAgJnl5c3MxLCB5eXNpemUgKiBzaXplb2YgKCp5eXNzcCksCisg
ICAgICAgICAgICAgICAgICAgICZ5eXZzMSwgeXlzaXplICogc2l6ZW9mICgqeXl2c3ApLAorICAg
ICAgICAgICAgICAgICAgICAmeXlzdGFja3NpemUpOwogCi0JeXlzcyA9IHl5c3MxOwotCXl5dnMg
PSB5eXZzMTsKKyAgICAgICAgeXlzcyA9IHl5c3MxOworICAgICAgICB5eXZzID0geXl2czE7CiAg
ICAgICB9CiAjZWxzZSAvKiBubyB5eW92ZXJmbG93ICovCiAjIGlmbmRlZiBZWVNUQUNLX1JFTE9D
QVRFCkBAIC0xMzA5LDIzICsxMTg2LDIyIEBAIGludCB5eW5lcnJzOwogIyBlbHNlCiAgICAgICAv
KiBFeHRlbmQgdGhlIHN0YWNrIG91ciBvd24gd2F5LiAgKi8KICAgICAgIGlmIChZWU1BWERFUFRI
IDw9IHl5c3RhY2tzaXplKQotCWdvdG8geXlleGhhdXN0ZWRsYWI7CisgICAgICAgIGdvdG8geXll
eGhhdXN0ZWRsYWI7CiAgICAgICB5eXN0YWNrc2l6ZSAqPSAyOwogICAgICAgaWYgKFlZTUFYREVQ
VEggPCB5eXN0YWNrc2l6ZSkKLQl5eXN0YWNrc2l6ZSA9IFlZTUFYREVQVEg7CisgICAgICAgIHl5
c3RhY2tzaXplID0gWVlNQVhERVBUSDsKIAogICAgICAgewotCXl5dHlwZV9pbnQxNiAqeXlzczEg
PSB5eXNzOwotCXVuaW9uIHl5YWxsb2MgKnl5cHRyID0KLQkgICh1bmlvbiB5eWFsbG9jICopIFlZ
U1RBQ0tfQUxMT0MgKFlZU1RBQ0tfQllURVMgKHl5c3RhY2tzaXplKSk7Ci0JaWYgKCEgeXlwdHIp
Ci0JICBnb3RvIHl5ZXhoYXVzdGVkbGFiOwotCVlZU1RBQ0tfUkVMT0NBVEUgKHl5c3MpOwotCVlZ
U1RBQ0tfUkVMT0NBVEUgKHl5dnMpOwotCisgICAgICAgIHl5dHlwZV9pbnQxNiAqeXlzczEgPSB5
eXNzOworICAgICAgICB1bmlvbiB5eWFsbG9jICp5eXB0ciA9CisgICAgICAgICAgKHVuaW9uIHl5
YWxsb2MgKikgWVlTVEFDS19BTExPQyAoWVlTVEFDS19CWVRFUyAoeXlzdGFja3NpemUpKTsKKyAg
ICAgICAgaWYgKCEgeXlwdHIpCisgICAgICAgICAgZ290byB5eWV4aGF1c3RlZGxhYjsKKyAgICAg
ICAgWVlTVEFDS19SRUxPQ0FURSAoeXlzc19hbGxvYywgeXlzcyk7CisgICAgICAgIFlZU1RBQ0tf
UkVMT0NBVEUgKHl5dnNfYWxsb2MsIHl5dnMpOwogIyAgdW5kZWYgWVlTVEFDS19SRUxPQ0FURQot
CWlmICh5eXNzMSAhPSB5eXNzYSkKLQkgIFlZU1RBQ0tfRlJFRSAoeXlzczEpOworICAgICAgICBp
ZiAoeXlzczEgIT0geXlzc2EpCisgICAgICAgICAgWVlTVEFDS19GUkVFICh5eXNzMSk7CiAgICAg
ICB9CiAjIGVuZGlmCiAjZW5kaWYgLyogbm8geXlvdmVyZmxvdyAqLwpAQCAtMTMzMywxNiArMTIw
OSwxOCBAQCBpbnQgeXluZXJyczsKICAgICAgIHl5c3NwID0geXlzcyArIHl5c2l6ZSAtIDE7CiAg
ICAgICB5eXZzcCA9IHl5dnMgKyB5eXNpemUgLSAxOwogCi0KICAgICAgIFlZRFBSSU5URiAoKHN0
ZGVyciwgIlN0YWNrIHNpemUgaW5jcmVhc2VkIHRvICVsdVxuIiwKLQkJICAodW5zaWduZWQgbG9u
ZyBpbnQpIHl5c3RhY2tzaXplKSk7CisgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZyBp
bnQpIHl5c3RhY2tzaXplKSk7CiAKICAgICAgIGlmICh5eXNzICsgeXlzdGFja3NpemUgLSAxIDw9
IHl5c3NwKQotCVlZQUJPUlQ7CisgICAgICAgIFlZQUJPUlQ7CiAgICAgfQogCiAgIFlZRFBSSU5U
RiAoKHN0ZGVyciwgIkVudGVyaW5nIHN0YXRlICVkXG4iLCB5eXN0YXRlKSk7CiAKKyAgaWYgKHl5
c3RhdGUgPT0gWVlGSU5BTCkKKyAgICBZWUFDQ0VQVDsKKwogICBnb3RvIHl5YmFja3VwOwogCiAv
Ki0tLS0tLS0tLS0tLgpAQCAtMTM1MSwyMCArMTIyOSwyMCBAQCBpbnQgeXluZXJyczsKIHl5YmFj
a3VwOgogCiAgIC8qIERvIGFwcHJvcHJpYXRlIHByb2Nlc3NpbmcgZ2l2ZW4gdGhlIGN1cnJlbnQg
c3RhdGUuICBSZWFkIGEKLSAgICAgbG9vay1haGVhZCB0b2tlbiBpZiB3ZSBuZWVkIG9uZSBhbmQg
ZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4gICovCisgICAgIGxvb2thaGVhZCB0b2tlbiBpZiB3ZSBu
ZWVkIG9uZSBhbmQgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4gICovCiAKLSAgLyogRmlyc3QgdHJ5
IHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGhvdXQgcmVmZXJlbmNlIHRvIGxvb2stYWhlYWQgdG9r
ZW4uICAqLworICAvKiBGaXJzdCB0cnkgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aG91dCByZWZl
cmVuY2UgdG8gbG9va2FoZWFkIHRva2VuLiAgKi8KICAgeXluID0geXlwYWN0W3l5c3RhdGVdOwot
ICBpZiAoeXluID09IFlZUEFDVF9OSU5GKQorICBpZiAoeXlwYWN0X3ZhbHVlX2lzX2RlZmF1bHQg
KHl5bikpCiAgICAgZ290byB5eWRlZmF1bHQ7CiAKLSAgLyogTm90IGtub3duID0+IGdldCBhIGxv
b2stYWhlYWQgdG9rZW4gaWYgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4gICovCisgIC8qIE5vdCBr
bm93biA9PiBnZXQgYSBsb29rYWhlYWQgdG9rZW4gaWYgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4g
ICovCiAKLSAgLyogWVlDSEFSIGlzIGVpdGhlciBZWUVNUFRZIG9yIFlZRU9GIG9yIGEgdmFsaWQg
bG9vay1haGVhZCBzeW1ib2wuICAqLworICAvKiBZWUNIQVIgaXMgZWl0aGVyIFlZRU1QVFkgb3Ig
WVlFT0Ygb3IgYSB2YWxpZCBsb29rYWhlYWQgc3ltYm9sLiAgKi8KICAgaWYgKHl5Y2hhciA9PSBZ
WUVNUFRZKQogICAgIHsKICAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlJlYWRpbmcgYSB0b2tl
bjogIikpOwotICAgICAgeXljaGFyID0gWVlMRVg7CisgICAgICB5eWNoYXIgPSB5eWxleCAoJnl5
bHZhbCwgY29udGV4dCk7CiAgICAgfQogCiAgIGlmICh5eWNoYXIgPD0gWVlFT0YpCkBAIC0xMzg2
LDI5ICsxMjY0LDI3IEBAIHl5YmFja3VwOgogICB5eW4gPSB5eXRhYmxlW3l5bl07CiAgIGlmICh5
eW4gPD0gMCkKICAgICB7Ci0gICAgICBpZiAoeXluID09IDAgfHwgeXluID09IFlZVEFCTEVfTklO
RikKLQlnb3RvIHl5ZXJybGFiOworICAgICAgaWYgKHl5dGFibGVfdmFsdWVfaXNfZXJyb3IgKHl5
bikpCisgICAgICAgIGdvdG8geXllcnJsYWI7CiAgICAgICB5eW4gPSAteXluOwogICAgICAgZ290
byB5eXJlZHVjZTsKICAgICB9CiAKLSAgaWYgKHl5biA9PSBZWUZJTkFMKQotICAgIFlZQUNDRVBU
OwotCiAgIC8qIENvdW50IHRva2VucyBzaGlmdGVkIHNpbmNlIGVycm9yOyBhZnRlciB0aHJlZSwg
dHVybiBvZmYgZXJyb3IKICAgICAgc3RhdHVzLiAgKi8KICAgaWYgKHl5ZXJyc3RhdHVzKQogICAg
IHl5ZXJyc3RhdHVzLS07CiAKLSAgLyogU2hpZnQgdGhlIGxvb2stYWhlYWQgdG9rZW4uICAqLwor
ICAvKiBTaGlmdCB0aGUgbG9va2FoZWFkIHRva2VuLiAgKi8KICAgWVlfU1lNQk9MX1BSSU5UICgi
U2hpZnRpbmciLCB5eXRva2VuLCAmeXlsdmFsLCAmeXlsbG9jKTsKIAotICAvKiBEaXNjYXJkIHRo
ZSBzaGlmdGVkIHRva2VuIHVubGVzcyBpdCBpcyBlb2YuICAqLwotICBpZiAoeXljaGFyICE9IFlZ
RU9GKQotICAgIHl5Y2hhciA9IFlZRU1QVFk7CisgIC8qIERpc2NhcmQgdGhlIHNoaWZ0ZWQgdG9r
ZW4uICAqLworICB5eWNoYXIgPSBZWUVNUFRZOwogCiAgIHl5c3RhdGUgPSB5eW47CisgIFlZX0lH
Tk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0JFR0lOCiAgICorK3l5dnNwID0geXlsdmFsOworICBZ
WV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9FTkQKIAogICBnb3RvIHl5bmV3c3RhdGU7CiAK
QEAgLTE0MzEsNyArMTMwNyw3IEBAIHl5cmVkdWNlOgogICB5eWxlbiA9IHl5cjJbeXluXTsKIAog
ICAvKiBJZiBZWUxFTiBpcyBub256ZXJvLCBpbXBsZW1lbnQgdGhlIGRlZmF1bHQgdmFsdWUgb2Yg
dGhlIGFjdGlvbjoKLSAgICAgYCQkID0gJDEnLgorICAgICAnJCQgPSAkMScuCiAKICAgICAgT3Ro
ZXJ3aXNlLCB0aGUgZm9sbG93aW5nIGxpbmUgc2V0cyBZWVZBTCB0byBnYXJiYWdlLgogICAgICBU
aGlzIGJlaGF2aW9yIGlzIHVuZG9jdW1lbnRlZCBhbmQgQmlzb24KQEAgLTE0NDcsMTk3ICsxMzIz
LDIzMSBAQCB5eXJlZHVjZToKICAgICAgICAgY2FzZSAyOgogCiAgICAgewotICAgICAgICAqKGNv
bnRleHQtPnJlc3VsdCkgPSBzdGF0aWNfY2FzdDxpbnQ+KCh5eXZzcFsoMSkgLSAoMSldKSk7Cisg
ICAgICAgICooY29udGV4dC0+cmVzdWx0KSA9IHN0YXRpY19jYXN0PGludD4oKHl5dnNwWzBdKSk7
CiAgICAgICAgIFlZQUNDRVBUOwotICAgIDt9CisgICAgfQorCiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSA0OgogCiAgICAgewotICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pIHx8ICh5
eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkg
fHwgKHl5dnNwWzBdKTsKKyAgICB9CisKICAgICBicmVhazsKIAogICBjYXNlIDU6CiAKICAgICB7
Ci0gICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgJiYgKHl5dnNwWygzKSAtICgz
KV0pOwotICAgIDt9CisgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbLTJdKSAmJiAoeXl2c3BbMF0p
OworICAgIH0KKwogICAgIGJyZWFrOwogCiAgIGNhc2UgNjoKIAogICAgIHsKLSAgICAgICAgKHl5
dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSB8ICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQor
ICAgICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkgfCAoeXl2c3BbMF0pOworICAgIH0KKwogICAg
IGJyZWFrOwogCiAgIGNhc2UgNzoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFso
MSkgLSAoMyldKSBeICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwp
ID0gKHl5dnNwWy0yXSkgXiAoeXl2c3BbMF0pOworICAgIH0KKwogICAgIGJyZWFrOwogCiAgIGNh
c2UgODoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSAmICh5
eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkg
JiAoeXl2c3BbMF0pOworICAgIH0KKwogICAgIGJyZWFrOwogCiAgIGNhc2UgOToKIAogICAgIHsK
LSAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSAhPSAoeXl2c3BbKDMpIC0gKDMp
XSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFstMl0pICE9ICh5eXZzcFswXSk7
CisgICAgfQorCiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMDoKIAogICAgIHsKLSAgICAgICAgKHl5
dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSA9PSAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30K
KyAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFstMl0pID09ICh5eXZzcFswXSk7CisgICAgfQorCiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAxMToKIAogICAgIHsKLSAgICAgICAgKHl5dmFsKSA9ICh5eXZz
cFsoMSkgLSAoMyldKSA+PSAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICAgICAgKHl5
dmFsKSA9ICh5eXZzcFstMl0pID49ICh5eXZzcFswXSk7CisgICAgfQorCiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAxMjoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyld
KSA8PSAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsKSA9ICh5eXZz
cFstMl0pIDw9ICh5eXZzcFswXSk7CisgICAgfQorCiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzoK
IAogICAgIHsKLSAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSA+ICh5eXZzcFso
MykgLSAoMyldKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkgPiAoeXl2
c3BbMF0pOworICAgIH0KKwogICAgIGJyZWFrOwogCiAgIGNhc2UgMTQ6CiAKICAgICB7Ci0gICAg
ICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgPCAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0g
ICAgO30KKyAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFstMl0pIDwgKHl5dnNwWzBdKTsKKyAgICB9
CisKICAgICBicmVhazsKIAogICBjYXNlIDE1OgogCiAgICAgewotICAgICAgICAoeXl2YWwpID0g
KHl5dnNwWygxKSAtICgzKV0pID4+ICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgICAg
ICAoeXl2YWwpID0gKHl5dnNwWy0yXSkgPj4gKHl5dnNwWzBdKTsKKyAgICB9CisKICAgICBicmVh
azsKIAogICBjYXNlIDE2OgogCiAgICAgewotICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAt
ICgzKV0pIDw8ICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwpID0g
KHl5dnNwWy0yXSkgPDwgKHl5dnNwWzBdKTsKKyAgICB9CisKICAgICBicmVhazsKIAogICBjYXNl
IDE3OgogCiAgICAgewotICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pIC0gKHl5
dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbLTJdKSAt
ICh5eXZzcFswXSk7CisgICAgfQorCiAgICAgYnJlYWs7CiAKICAgY2FzZSAxODoKIAogICAgIHsK
LSAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSArICh5eXZzcFsoMykgLSAoMyld
KTsKLSAgICA7fQorICAgICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkgKyAoeXl2c3BbMF0pOwor
ICAgIH0KKwogICAgIGJyZWFrOwogCiAgIGNhc2UgMTk6CiAKICAgICB7Ci0gICAgICAgIGlmICgo
eXl2c3BbKDMpIC0gKDMpXSkgPT0gMCkgeworICAgICAgICBpZiAoKHl5dnNwWzBdKSA9PSAwKSB7
CiAgICAgICAgICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gc3RyZWFtOwotICAgICAgICAgICAgc3Ry
ZWFtIDw8ICh5eXZzcFsoMSkgLSAoMyldKSA8PCAiICUgIiA8PCAoeXl2c3BbKDMpIC0gKDMpXSk7
CisgICAgICAgICAgICBzdHJlYW0gPDwgKHl5dnNwWy0yXSkgPDwgIiAlICIgPDwgKHl5dnNwWzBd
KTsKICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHRleHQgPSBzdHJlYW0uc3RyKCk7CiAgICAgICAg
ICAgICBjb250ZXh0LT5kaWFnbm9zdGljcy0+cmVwb3J0KHBwOjpEaWFnbm9zdGljczo6RElWSVNJ
T05fQllfWkVSTywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+dG9rZW4tPmxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXh0LmNfc3RyKCkpOwogICAgICAgICAgICAgWVlBQk9SVDsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgJSAoeXl2c3Bb
KDMpIC0gKDMpXSk7CisgICAgICAgICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkgJSAoeXl2c3Bb
MF0pOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CisKICAgICBicmVhazsKIAogICBjYXNlIDIw
OgogCiAgICAgewotICAgICAgICBpZiAoKHl5dnNwWygzKSAtICgzKV0pID09IDApIHsKKyAgICAg
ICAgaWYgKCh5eXZzcFswXSkgPT0gMCkgewogICAgICAgICAgICAgc3RkOjpvc3RyaW5nc3RyZWFt
IHN0cmVhbTsKLSAgICAgICAgICAgIHN0cmVhbSA8PCAoeXl2c3BbKDEpIC0gKDMpXSkgPDwgIiAv
ICIgPDwgKHl5dnNwWygzKSAtICgzKV0pOworICAgICAgICAgICAgc3RyZWFtIDw8ICh5eXZzcFst
Ml0pIDw8ICIgLyAiIDw8ICh5eXZzcFswXSk7CiAgICAgICAgICAgICBzdGQ6OnN0cmluZyB0ZXh0
ID0gc3RyZWFtLnN0cigpOwogICAgICAgICAgICAgY29udGV4dC0+ZGlhZ25vc3RpY3MtPnJlcG9y
dChwcDo6RGlhZ25vc3RpY3M6OkRJVklTSU9OX0JZX1pFUk8sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnRva2VuLT5sb2NhdGlvbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC5jX3N0cigpKTsKICAgICAgICAg
ICAgIFlZQUJPUlQ7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAoeXl2YWwpID0gKHl5
dnNwWygxKSAtICgzKV0pIC8gKHl5dnNwWygzKSAtICgzKV0pOworICAgICAgICAgICAgKHl5dmFs
KSA9ICh5eXZzcFstMl0pIC8gKHl5dnNwWzBdKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQor
CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyMToKIAogICAgIHsKLSAgICAgICAgKHl5dmFsKSA9ICh5
eXZzcFsoMSkgLSAoMyldKSAqICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgICAgICAo
eXl2YWwpID0gKHl5dnNwWy0yXSkgKiAoeXl2c3BbMF0pOworICAgIH0KKwogICAgIGJyZWFrOwog
CiAgIGNhc2UgMjI6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbCkgPSAhICh5eXZzcFsoMikgLSAo
MildKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwpID0gISAoeXl2c3BbMF0pOworICAgIH0KKwog
ICAgIGJyZWFrOwogCiAgIGNhc2UgMjM6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbCkgPSB+ICh5
eXZzcFsoMikgLSAoMildKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwpID0gfiAoeXl2c3BbMF0p
OworICAgIH0KKwogICAgIGJyZWFrOwogCiAgIGNhc2UgMjQ6CiAKICAgICB7Ci0gICAgICAgICh5
eXZhbCkgPSAtICh5eXZzcFsoMikgLSAoMildKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwpID0g
LSAoeXl2c3BbMF0pOworICAgIH0KKwogICAgIGJyZWFrOwogCiAgIGNhc2UgMjU6CiAKICAgICB7
Ci0gICAgICAgICh5eXZhbCkgPSArICh5eXZzcFsoMikgLSAoMildKTsKLSAgICA7fQorICAgICAg
ICAoeXl2YWwpID0gKyAoeXl2c3BbMF0pOworICAgIH0KKwogICAgIGJyZWFrOwogCiAgIGNhc2Ug
MjY6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDIpIC0gKDMpXSk7Ci0gICAg
O30KKyAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFstMV0pOworICAgIH0KKwogICAgIGJyZWFrOwog
CiAKLS8qIExpbmUgMTI2NyBvZiB5YWNjLmMuICAqLwogCiAgICAgICBkZWZhdWx0OiBicmVhazsK
ICAgICB9CisgIC8qIFVzZXIgc2VtYW50aWMgYWN0aW9ucyBzb21ldGltZXMgYWx0ZXIgeXljaGFy
LCBhbmQgdGhhdCByZXF1aXJlcworICAgICB0aGF0IHl5dG9rZW4gYmUgdXBkYXRlZCB3aXRoIHRo
ZSBuZXcgdHJhbnNsYXRpb24uICBXZSB0YWtlIHRoZQorICAgICBhcHByb2FjaCBvZiB0cmFuc2xh
dGluZyBpbW1lZGlhdGVseSBiZWZvcmUgZXZlcnkgdXNlIG9mIHl5dG9rZW4uCisgICAgIE9uZSBh
bHRlcm5hdGl2ZSBpcyB0cmFuc2xhdGluZyBoZXJlIGFmdGVyIGV2ZXJ5IHNlbWFudGljIGFjdGlv
biwKKyAgICAgYnV0IHRoYXQgdHJhbnNsYXRpb24gd291bGQgYmUgbWlzc2VkIGlmIHRoZSBzZW1h
bnRpYyBhY3Rpb24gaW52b2tlcworICAgICBZWUFCT1JULCBZWUFDQ0VQVCwgb3IgWVlFUlJPUiBp
bW1lZGlhdGVseSBhZnRlciBhbHRlcmluZyB5eWNoYXIgb3IKKyAgICAgaWYgaXQgaW52b2tlcyBZ
WUJBQ0tVUC4gIEluIHRoZSBjYXNlIG9mIFlZQUJPUlQgb3IgWVlBQ0NFUFQsIGFuCisgICAgIGlu
Y29ycmVjdCBkZXN0cnVjdG9yIG1pZ2h0IHRoZW4gYmUgaW52b2tlZCBpbW1lZGlhdGVseS4gIElu
IHRoZQorICAgICBjYXNlIG9mIFlZRVJST1Igb3IgWVlCQUNLVVAsIHN1YnNlcXVlbnQgcGFyc2Vy
IGFjdGlvbnMgbWlnaHQgbGVhZAorICAgICB0byBhbiBpbmNvcnJlY3QgZGVzdHJ1Y3RvciBjYWxs
IG9yIHZlcmJvc2Ugc3ludGF4IGVycm9yIG1lc3NhZ2UKKyAgICAgYmVmb3JlIHRoZSBsb29rYWhl
YWQgaXMgdHJhbnNsYXRlZC4gICovCiAgIFlZX1NZTUJPTF9QUklOVCAoIi0+ICQkID0iLCB5eXIx
W3l5bl0sICZ5eXZhbCwgJnl5bG9jKTsKIAogICBZWVBPUFNUQUNLICh5eWxlbik7CkBAIC0xNjQ2
LDggKzE1NTYsNyBAQCB5eXJlZHVjZToKIAogICAqKyt5eXZzcCA9IHl5dmFsOwogCi0KLSAgLyog
Tm93IGBzaGlmdCcgdGhlIHJlc3VsdCBvZiB0aGUgcmVkdWN0aW9uLiAgRGV0ZXJtaW5lIHdoYXQg
c3RhdGUKKyAgLyogTm93ICdzaGlmdCcgdGhlIHJlc3VsdCBvZiB0aGUgcmVkdWN0aW9uLiAgRGV0
ZXJtaW5lIHdoYXQgc3RhdGUKICAgICAgdGhhdCBnb2VzIHRvLCBiYXNlZCBvbiB0aGUgc3RhdGUg
d2UgcG9wcGVkIGJhY2sgdG8gYW5kIHRoZSBydWxlCiAgICAgIG51bWJlciByZWR1Y2VkIGJ5LiAg
Ki8KIApAQCAtMTY2MiwxMCArMTU3MSwxNCBAQCB5eXJlZHVjZToKICAgZ290byB5eW5ld3N0YXRl
OwogCiAKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgotfCB5eWVycmxh
YiAtLSBoZXJlIG9uIGRldGVjdGluZyBlcnJvciB8Ci1gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKi8KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0u
Cit8IHl5ZXJybGFiIC0tIGhlcmUgb24gZGV0ZWN0aW5nIGVycm9yLiAgfAorYC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIHl5ZXJybGFiOgorICAvKiBNYWtlIHN1cmUg
d2UgaGF2ZSBsYXRlc3QgbG9va2FoZWFkIHRyYW5zbGF0aW9uLiAgU2VlIGNvbW1lbnRzIGF0Cisg
ICAgIHVzZXIgc2VtYW50aWMgYWN0aW9ucyBmb3Igd2h5IHRoaXMgaXMgbmVjZXNzYXJ5LiAgKi8K
KyAgeXl0b2tlbiA9IHl5Y2hhciA9PSBZWUVNUFRZID8gWVlFTVBUWSA6IFlZVFJBTlNMQVRFICh5
eWNoYXIpOworCiAgIC8qIElmIG5vdCBhbHJlYWR5IHJlY292ZXJpbmcgZnJvbSBhbiBlcnJvciwg
cmVwb3J0IHRoaXMgZXJyb3IuICAqLwogICBpZiAoIXl5ZXJyc3RhdHVzKQogICAgIHsKQEAgLTE2
NzMsMzcgKzE1ODYsMzYgQEAgeXllcnJsYWI6CiAjaWYgISBZWUVSUk9SX1ZFUkJPU0UKICAgICAg
IHl5ZXJyb3IgKGNvbnRleHQsIFlZXygic3ludGF4IGVycm9yIikpOwogI2Vsc2UKKyMgZGVmaW5l
IFlZU1lOVEFYX0VSUk9SIHl5c3ludGF4X2Vycm9yICgmeXltc2dfYWxsb2MsICZ5eW1zZywgXAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl5c3NwLCB5eXRva2VuKQog
ICAgICAgewotCVlZU0laRV9UIHl5c2l6ZSA9IHl5c3ludGF4X2Vycm9yICgwLCB5eXN0YXRlLCB5
eWNoYXIpOwotCWlmICh5eW1zZ19hbGxvYyA8IHl5c2l6ZSAmJiB5eW1zZ19hbGxvYyA8IFlZU1RB
Q0tfQUxMT0NfTUFYSU1VTSkKLQkgIHsKLQkgICAgWVlTSVpFX1QgeXlhbGxvYyA9IDIgKiB5eXNp
emU7Ci0JICAgIGlmICghICh5eXNpemUgPD0geXlhbGxvYyAmJiB5eWFsbG9jIDw9IFlZU1RBQ0tf
QUxMT0NfTUFYSU1VTSkpCi0JICAgICAgeXlhbGxvYyA9IFlZU1RBQ0tfQUxMT0NfTUFYSU1VTTsK
LQkgICAgaWYgKHl5bXNnICE9IHl5bXNnYnVmKQotCSAgICAgIFlZU1RBQ0tfRlJFRSAoeXltc2cp
OwotCSAgICB5eW1zZyA9IChjaGFyICopIFlZU1RBQ0tfQUxMT0MgKHl5YWxsb2MpOwotCSAgICBp
ZiAoeXltc2cpCi0JICAgICAgeXltc2dfYWxsb2MgPSB5eWFsbG9jOwotCSAgICBlbHNlCi0JICAg
ICAgewotCQl5eW1zZyA9IHl5bXNnYnVmOwotCQl5eW1zZ19hbGxvYyA9IHNpemVvZiB5eW1zZ2J1
ZjsKLQkgICAgICB9Ci0JICB9Ci0KLQlpZiAoMCA8IHl5c2l6ZSAmJiB5eXNpemUgPD0geXltc2df
YWxsb2MpCi0JICB7Ci0JICAgICh2b2lkKSB5eXN5bnRheF9lcnJvciAoeXltc2csIHl5c3RhdGUs
IHl5Y2hhcik7Ci0JICAgIHl5ZXJyb3IgKGNvbnRleHQsIHl5bXNnKTsKLQkgIH0KLQllbHNlCi0J
ICB7Ci0JICAgIHl5ZXJyb3IgKGNvbnRleHQsIFlZXygic3ludGF4IGVycm9yIikpOwotCSAgICBp
ZiAoeXlzaXplICE9IDApCi0JICAgICAgZ290byB5eWV4aGF1c3RlZGxhYjsKLQkgIH0KKyAgICAg
ICAgY2hhciBjb25zdCAqeXltc2dwID0gWVlfKCJzeW50YXggZXJyb3IiKTsKKyAgICAgICAgaW50
IHl5c3ludGF4X2Vycm9yX3N0YXR1czsKKyAgICAgICAgeXlzeW50YXhfZXJyb3Jfc3RhdHVzID0g
WVlTWU5UQVhfRVJST1I7CisgICAgICAgIGlmICh5eXN5bnRheF9lcnJvcl9zdGF0dXMgPT0gMCkK
KyAgICAgICAgICB5eW1zZ3AgPSB5eW1zZzsKKyAgICAgICAgZWxzZSBpZiAoeXlzeW50YXhfZXJy
b3Jfc3RhdHVzID09IDEpCisgICAgICAgICAgeworICAgICAgICAgICAgaWYgKHl5bXNnICE9IHl5
bXNnYnVmKQorICAgICAgICAgICAgICBZWVNUQUNLX0ZSRUUgKHl5bXNnKTsKKyAgICAgICAgICAg
IHl5bXNnID0gKGNoYXIgKikgWVlTVEFDS19BTExPQyAoeXltc2dfYWxsb2MpOworICAgICAgICAg
ICAgaWYgKCF5eW1zZykKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHl5bXNnID0g
eXltc2didWY7CisgICAgICAgICAgICAgICAgeXltc2dfYWxsb2MgPSBzaXplb2YgeXltc2didWY7
CisgICAgICAgICAgICAgICAgeXlzeW50YXhfZXJyb3Jfc3RhdHVzID0gMjsKKyAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
eXlzeW50YXhfZXJyb3Jfc3RhdHVzID0gWVlTWU5UQVhfRVJST1I7CisgICAgICAgICAgICAgICAg
eXltc2dwID0geXltc2c7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIHl5
ZXJyb3IgKGNvbnRleHQsIHl5bXNncCk7CisgICAgICAgIGlmICh5eXN5bnRheF9lcnJvcl9zdGF0
dXMgPT0gMikKKyAgICAgICAgICBnb3RvIHl5ZXhoYXVzdGVkbGFiOwogICAgICAgfQorIyB1bmRl
ZiBZWVNZTlRBWF9FUlJPUgogI2VuZGlmCiAgICAgfQogCkBAIC0xNzExLDI0ICsxNjIzLDI0IEBA
IHl5ZXJybGFiOgogCiAgIGlmICh5eWVycnN0YXR1cyA9PSAzKQogICAgIHsKLSAgICAgIC8qIElm
IGp1c3QgdHJpZWQgYW5kIGZhaWxlZCB0byByZXVzZSBsb29rLWFoZWFkIHRva2VuIGFmdGVyIGFu
Ci0JIGVycm9yLCBkaXNjYXJkIGl0LiAgKi8KKyAgICAgIC8qIElmIGp1c3QgdHJpZWQgYW5kIGZh
aWxlZCB0byByZXVzZSBsb29rYWhlYWQgdG9rZW4gYWZ0ZXIgYW4KKyAgICAgICAgIGVycm9yLCBk
aXNjYXJkIGl0LiAgKi8KIAogICAgICAgaWYgKHl5Y2hhciA8PSBZWUVPRikKLQl7Ci0JICAvKiBS
ZXR1cm4gZmFpbHVyZSBpZiBhdCBlbmQgb2YgaW5wdXQuICAqLwotCSAgaWYgKHl5Y2hhciA9PSBZ
WUVPRikKLQkgICAgWVlBQk9SVDsKLQl9CisgICAgICAgIHsKKyAgICAgICAgICAvKiBSZXR1cm4g
ZmFpbHVyZSBpZiBhdCBlbmQgb2YgaW5wdXQuICAqLworICAgICAgICAgIGlmICh5eWNoYXIgPT0g
WVlFT0YpCisgICAgICAgICAgICBZWUFCT1JUOworICAgICAgICB9CiAgICAgICBlbHNlCi0Jewot
CSAgeXlkZXN0cnVjdCAoIkVycm9yOiBkaXNjYXJkaW5nIiwKLQkJICAgICAgeXl0b2tlbiwgJnl5
bHZhbCwgY29udGV4dCk7Ci0JICB5eWNoYXIgPSBZWUVNUFRZOwotCX0KKyAgICAgICAgeworICAg
ICAgICAgIHl5ZGVzdHJ1Y3QgKCJFcnJvcjogZGlzY2FyZGluZyIsCisgICAgICAgICAgICAgICAg
ICAgICAgeXl0b2tlbiwgJnl5bHZhbCwgY29udGV4dCk7CisgICAgICAgICAgeXljaGFyID0gWVlF
TVBUWTsKKyAgICAgICAgfQogICAgIH0KIAotICAvKiBFbHNlIHdpbGwgdHJ5IHRvIHJldXNlIGxv
b2stYWhlYWQgdG9rZW4gYWZ0ZXIgc2hpZnRpbmcgdGhlIGVycm9yCisgIC8qIEVsc2Ugd2lsbCB0
cnkgdG8gcmV1c2UgbG9va2FoZWFkIHRva2VuIGFmdGVyIHNoaWZ0aW5nIHRoZSBlcnJvcgogICAg
ICB0b2tlbi4gICovCiAgIGdvdG8geXllcnJsYWIxOwogCkBAIC0xNzQ0LDcgKzE2NTYsNyBAQCB5
eWVycm9ybGFiOgogICBpZiAoLypDT05TVENPTkQqLyAwKQogICAgICBnb3RvIHl5ZXJyb3JsYWI7
CiAKLSAgLyogRG8gbm90IHJlY2xhaW0gdGhlIHN5bWJvbHMgb2YgdGhlIHJ1bGUgd2hpY2ggYWN0
aW9uIHRyaWdnZXJlZAorICAvKiBEbyBub3QgcmVjbGFpbSB0aGUgc3ltYm9scyBvZiB0aGUgcnVs
ZSB3aG9zZSBhY3Rpb24gdHJpZ2dlcmVkCiAgICAgIHRoaXMgWVlFUlJPUi4gICovCiAgIFlZUE9Q
U1RBQ0sgKHl5bGVuKTsKICAgeXlsZW4gPSAwOwpAQCAtMTc1NywzOCArMTY2OSwzNyBAQCB5eWVy
cm9ybGFiOgogfCB5eWVycmxhYjEgLS0gY29tbW9uIGNvZGUgZm9yIGJvdGggc3ludGF4IGVycm9y
IGFuZCBZWUVSUk9SLiAgfAogYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogeXllcnJsYWIxOgotICB5eWVycnN0YXR1cyA9IDM7
CS8qIEVhY2ggcmVhbCB0b2tlbiBzaGlmdGVkIGRlY3JlbWVudHMgdGhpcy4gICovCisgIHl5ZXJy
c3RhdHVzID0gMzsgICAgICAvKiBFYWNoIHJlYWwgdG9rZW4gc2hpZnRlZCBkZWNyZW1lbnRzIHRo
aXMuICAqLwogCiAgIGZvciAoOzspCiAgICAgewogICAgICAgeXluID0geXlwYWN0W3l5c3RhdGVd
OwotICAgICAgaWYgKHl5biAhPSBZWVBBQ1RfTklORikKLQl7Ci0JICB5eW4gKz0gWVlURVJST1I7
Ci0JICBpZiAoMCA8PSB5eW4gJiYgeXluIDw9IFlZTEFTVCAmJiB5eWNoZWNrW3l5bl0gPT0gWVlU
RVJST1IpCi0JICAgIHsKLQkgICAgICB5eW4gPSB5eXRhYmxlW3l5bl07Ci0JICAgICAgaWYgKDAg
PCB5eW4pCi0JCWJyZWFrOwotCSAgICB9Ci0JfQorICAgICAgaWYgKCF5eXBhY3RfdmFsdWVfaXNf
ZGVmYXVsdCAoeXluKSkKKyAgICAgICAgeworICAgICAgICAgIHl5biArPSBZWVRFUlJPUjsKKyAg
ICAgICAgICBpZiAoMCA8PSB5eW4gJiYgeXluIDw9IFlZTEFTVCAmJiB5eWNoZWNrW3l5bl0gPT0g
WVlURVJST1IpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHl5biA9IHl5dGFibGVbeXlu
XTsKKyAgICAgICAgICAgICAgaWYgKDAgPCB5eW4pCisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KIAogICAgICAgLyogUG9wIHRoZSBjdXJyZW50IHN0YXRl
IGJlY2F1c2UgaXQgY2Fubm90IGhhbmRsZSB0aGUgZXJyb3IgdG9rZW4uICAqLwogICAgICAgaWYg
KHl5c3NwID09IHl5c3MpCi0JWVlBQk9SVDsKKyAgICAgICAgWVlBQk9SVDsKIAogCiAgICAgICB5
eWRlc3RydWN0ICgiRXJyb3I6IHBvcHBpbmciLAotCQkgIHl5c3Rvc1t5eXN0YXRlXSwgeXl2c3As
IGNvbnRleHQpOworICAgICAgICAgICAgICAgICAgeXlzdG9zW3l5c3RhdGVdLCB5eXZzcCwgY29u
dGV4dCk7CiAgICAgICBZWVBPUFNUQUNLICgxKTsKICAgICAgIHl5c3RhdGUgPSAqeXlzc3A7CiAg
ICAgICBZWV9TVEFDS19QUklOVCAoeXlzcywgeXlzc3ApOwogICAgIH0KIAotICBpZiAoeXluID09
IFlZRklOQUwpCi0gICAgWVlBQ0NFUFQ7Ci0KKyAgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTEla
RURfQkVHSU4KICAgKisreXl2c3AgPSB5eWx2YWw7CisgIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJ
QUxJWkVEX0VORAogCiAKICAgLyogU2hpZnQgdGhlIGVycm9yIHRva2VuLiAgKi8KQEAgLTE4MTIs
NyArMTcyMyw3IEBAIHl5YWJvcnRsYWI6CiAgIHl5cmVzdWx0ID0gMTsKICAgZ290byB5eXJldHVy
bjsKIAotI2lmbmRlZiB5eW92ZXJmbG93CisjaWYgIWRlZmluZWQgeXlvdmVyZmxvdyB8fCBZWUVS
Uk9SX1ZFUkJPU0UKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS4KIHwgeXlleGhhdXN0ZWRsYWIgLS0gbWVtb3J5IGV4aGF1c3Rpb24gY29tZXMgaGVy
ZS4gIHwKIGAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ki8KQEAgLTE4MjMsMTcgKzE3MzQsMjIgQEAgeXlleGhhdXN0ZWRsYWI6CiAjZW5kaWYKIAogeXly
ZXR1cm46Ci0gIGlmICh5eWNoYXIgIT0gWVlFT0YgJiYgeXljaGFyICE9IFlZRU1QVFkpCi0gICAg
IHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBkaXNjYXJkaW5nIGxvb2thaGVhZCIsCi0JCSB5eXRva2Vu
LCAmeXlsdmFsLCBjb250ZXh0KTsKLSAgLyogRG8gbm90IHJlY2xhaW0gdGhlIHN5bWJvbHMgb2Yg
dGhlIHJ1bGUgd2hpY2ggYWN0aW9uIHRyaWdnZXJlZAorICBpZiAoeXljaGFyICE9IFlZRU1QVFkp
CisgICAgeworICAgICAgLyogTWFrZSBzdXJlIHdlIGhhdmUgbGF0ZXN0IGxvb2thaGVhZCB0cmFu
c2xhdGlvbi4gIFNlZSBjb21tZW50cyBhdAorICAgICAgICAgdXNlciBzZW1hbnRpYyBhY3Rpb25z
IGZvciB3aHkgdGhpcyBpcyBuZWNlc3NhcnkuICAqLworICAgICAgeXl0b2tlbiA9IFlZVFJBTlNM
QVRFICh5eWNoYXIpOworICAgICAgeXlkZXN0cnVjdCAoIkNsZWFudXA6IGRpc2NhcmRpbmcgbG9v
a2FoZWFkIiwKKyAgICAgICAgICAgICAgICAgIHl5dG9rZW4sICZ5eWx2YWwsIGNvbnRleHQpOwor
ICAgIH0KKyAgLyogRG8gbm90IHJlY2xhaW0gdGhlIHN5bWJvbHMgb2YgdGhlIHJ1bGUgd2hvc2Ug
YWN0aW9uIHRyaWdnZXJlZAogICAgICB0aGlzIFlZQUJPUlQgb3IgWVlBQ0NFUFQuICAqLwogICBZ
WVBPUFNUQUNLICh5eWxlbik7CiAgIFlZX1NUQUNLX1BSSU5UICh5eXNzLCB5eXNzcCk7CiAgIHdo
aWxlICh5eXNzcCAhPSB5eXNzKQogICAgIHsKICAgICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBw
b3BwaW5nIiwKLQkJICB5eXN0b3NbKnl5c3NwXSwgeXl2c3AsIGNvbnRleHQpOworICAgICAgICAg
ICAgICAgICAgeXlzdG9zWyp5eXNzcF0sIHl5dnNwLCBjb250ZXh0KTsKICAgICAgIFlZUE9QU1RB
Q0sgKDEpOwogICAgIH0KICNpZm5kZWYgeXlvdmVyZmxvdwpAQCAtMTg0NCwxNCArMTc2MCwxMSBA
QCB5eXJldHVybjoKICAgaWYgKHl5bXNnICE9IHl5bXNnYnVmKQogICAgIFlZU1RBQ0tfRlJFRSAo
eXltc2cpOwogI2VuZGlmCi0gIC8qIE1ha2Ugc3VyZSBZWUlEIGlzIHVzZWQuICAqLwotICByZXR1
cm4gWVlJRCAoeXlyZXN1bHQpOworICByZXR1cm4geXlyZXN1bHQ7CiB9CiAKIAogCi0KLQogaW50
IHl5bGV4KFlZU1RZUEUqIGx2YWxwLCBDb250ZXh0KiBjb250ZXh0KQogewogICAgIGludCB0eXBl
ID0gMDsKQEAgLTE5NDYsNCArMTg1OSwzIEBAIGJvb2wgRXhwcmVzc2lvblBhcnNlcjo6cGFyc2Uo
VG9rZW4qIHRva2UKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHBwCi0KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci55
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVw
cm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci55CShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25QYXJz
ZXIueQkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsMTIgQEAgV0hJQ0ggR0VORVJBVEVTIFRI
RSBHTFNMIEVTIHByZXByb2Nlc3NvcgogCiAjaW5jbHVkZSAiRXhwcmVzc2lvblBhcnNlci5oIgog
CisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyNpbmNsdWRlIDxtYWxsb2MuaD4KKyNlbHNlCisjaW5j
bHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKwogI2luY2x1ZGUgPGNhc3NlcnQ+CiAjaW5jbHVkZSA8
c3N0cmVhbT4KIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvUHJlcHJvY2Vzc29yLmNwcAkocmV2
aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw2ICs4MSwx
MSBAQCB2b2lkIFByZXByb2Nlc3Nvcjo6cHJlZGVmaW5lTWFjcm8oY29uc3QgCiAgICAgbUltcGwt
Pm1hY3JvU2V0W25hbWVdID0gbWFjcm87CiB9CiAKK3ZvaWQgUHJlcHJvY2Vzc29yOjpzZXRNYXhU
b2tlbkxlbmd0aChzaXplX3QgbWF4TGVuZ3RoKQoreworICAgIG1JbXBsLT50b2tlbml6ZXIuc2V0
TWF4VG9rZW5MZW5ndGgobWF4TGVuZ3RoKTsKK30KKwogdm9pZCBQcmVwcm9jZXNzb3I6OmxleChU
b2tlbiogdG9rZW4pCiB7CiAgICAgYm9vbCB2YWxpZFRva2VuID0gZmFsc2U7CkBAIC05NSwzNCAr
MTAwLDYgQEAgdm9pZCBQcmVwcm9jZXNzb3I6OmxleChUb2tlbiogdG9rZW4pCiAgICAgICAgICAg
Y2FzZSBUb2tlbjo6UFBfSEFTSDoKICAgICAgICAgICAgIGFzc2VydChmYWxzZSk7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIFRva2VuOjpDT05TVF9JTlQ6Ci0gICAgICAgICAg
ewotICAgICAgICAgICAgaW50IHZhbCA9IDA7Ci0gICAgICAgICAgICBpZiAoIXRva2VuLT5pVmFs
dWUoJnZhbCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gRG8gbm90IG1hcmsg
dGhlIHRva2VuIGFzIGludmFsaWQuCi0gICAgICAgICAgICAgICAgLy8gSnVzdCBlbWl0IHRoZSBk
aWFnbm9zdGljIGFuZCByZXNldCB2YWx1ZSB0byAwLgotICAgICAgICAgICAgICAgIG1JbXBsLT5k
aWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpJTlRFR0VSX09WRVJGTE9XLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9r
ZW4tPnRleHQpOwotICAgICAgICAgICAgICAgIHRva2VuLT50ZXh0LmFzc2lnbigiMCIpOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgdmFsaWRUb2tlbiA9IHRydWU7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICB9Ci0gICAgICAgICAgY2FzZSBUb2tlbjo6Q09OU1RfRkxPQVQ6Ci0g
ICAgICAgICAgewotICAgICAgICAgICAgZmxvYXQgdmFsID0gMDsKLSAgICAgICAgICAgIGlmICgh
dG9rZW4tPmZWYWx1ZSgmdmFsKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBE
byBub3QgbWFyayB0aGUgdG9rZW4gYXMgaW52YWxpZC4KLSAgICAgICAgICAgICAgICAvLyBKdXN0
IGVtaXQgdGhlIGRpYWdub3N0aWMgYW5kIHJlc2V0IHZhbHVlIHRvIDAuMC4KLSAgICAgICAgICAg
ICAgICBtSW1wbC0+ZGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6RkxPQVRfT1ZFUkZM
T1csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4tPmxv
Y2F0aW9uLCB0b2tlbi0+dGV4dCk7Ci0gICAgICAgICAgICAgICAgdG9rZW4tPnRleHQuYXNzaWdu
KCIwLjAiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZhbGlkVG9rZW4gPSB0cnVlOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgfQogICAgICAgICAgIGNhc2UgVG9rZW46OlBQ
X05VTUJFUjoKICAgICAgICAgICAgIG1JbXBsLT5kaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0
aWNzOjpJTlZBTElEX05VTUJFUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29y
L1ByZXByb2Nlc3Nvci5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1ByZXByb2Nlc3Nvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw2ICszNywxMiBAQCBjbGFzcyBQcmVwcm9jZXNzb3IKICAgICBib29sIGluaXQo
c2l6ZV90IGNvdW50LCBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0
aFtdKTsKICAgICAvLyBBZGRzIGEgcHJlLWRlZmluZWQgbWFjcm8uCiAgICAgdm9pZCBwcmVkZWZp
bmVNYWNybyhjb25zdCBjaGFyKiBuYW1lLCBpbnQgdmFsdWUpOworICAgIC8vIFNldHMgbWF4aW11
bSBhbGxvd2VkIHRva2VuIGxlbmd0aC4KKyAgICAvLyBJZiB0b2tlbiBsZW5ndGggZXhjZWVkcyB0
aGlzIGxpbWl0LAorICAgIC8vIHRoZSB0b2tlbiB0ZXh0IHdpbGwgYmUgdHJ1bmNhdGVkIHRvIHRo
ZSBnaXZlbiBtYXhpbXVtIGxlbmd0aCwgYW5kCisgICAgLy8gVE9LRU5fVE9PX0xPTkcgZGlhZ25v
c3RpYyB3aWxsIGJlIGdlbmVyYXRlZC4KKyAgICAvLyBUaGUgbWF4aW11bSBsZW5ndGggZGVmYXVs
dHMgdG8gMjU2LgorICAgIHZvaWQgc2V0TWF4VG9rZW5MZW5ndGgoc2l6ZV90IG1heExlbmd0aCk7
CiAKICAgICB2b2lkIGxleChUb2tlbiogdG9rZW4pOwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9U
b2tlbml6ZXIuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUyOSwxMiArNTI5LDYgQEAgSUYgWU9VIE1PRElGWSBUSElTIEZJTEUgWU9VIEFMU08gTkVF
RCBUTwogI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV21pc3Npbmctbm9yZXR1cm4i
CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19jbGFuZ19fKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vua25vd24tcHJh
Z21hcyIKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtcmVn
aXN0ZXIiCi0jZW5kaWYKLQogdHlwZWRlZiBzdGQ6OnN0cmluZyBZWVNUWVBFOwogdHlwZWRlZiBw
cDo6U291cmNlTG9jYXRpb24gWVlMVFlQRTsKIApAQCAtNjgwLDE2ICs2NzQsNiBAQCBzdGF0aWMg
dm9pZCB5eV9mbGV4X3N0cm5jcHkgKGNoYXIgKix5eWNvCiBzdGF0aWMgaW50IHl5X2ZsZXhfc3Ry
bGVuICh5eWNvbnN0IGNoYXIgKiAseXlzY2FuX3QgeXlzY2FubmVyKTsKICNlbmRpZgogCi0jaWZu
ZGVmIFlZX05PX0lOUFVUCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotc3RhdGljIGludCB5eWlucHV0
ICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKLSNlbHNlCi1zdGF0aWMgaW50IGlucHV0ICh5eXNjYW5f
dCB5eXNjYW5uZXIgKTsKLSNlbmRpZgotCi0jZW5kaWYKLQogLyogQW1vdW50IG9mIHN0dWZmIHRv
IHNsdXJwIHVwIHdpdGggZWFjaCByZWFkLiAqLwogI2lmbmRlZiBZWV9SRUFEX0JVRl9TSVpFCiAj
ZGVmaW5lIFlZX1JFQURfQlVGX1NJWkUgODE5MgpAQCAtMTQ5MCw4MSArMTQ3NCw2IEBAIHN0YXRp
YyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCAKIAlyZXR1cm4geXlfaXNfamFtID8g
MCA6IHl5X2N1cnJlbnRfc3RhdGU7CiB9CiAKLSNpZm5kZWYgWVlfTk9fSU5QVVQKLSNpZmRlZiBf
X2NwbHVzcGx1cwotICAgIHN0YXRpYyBpbnQgeXlpbnB1dCAoeXlzY2FuX3QgeXlzY2FubmVyKQot
I2Vsc2UKLSAgICBzdGF0aWMgaW50IGlucHV0ICAoeXlzY2FuX3QgeXlzY2FubmVyKQotI2VuZGlm
Ci0KLXsKLQlpbnQgYzsKLSAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0
c190Kil5eXNjYW5uZXI7Ci0KLQkqeXlnLT55eV9jX2J1Zl9wID0geXlnLT55eV9ob2xkX2NoYXI7
Ci0KLQlpZiAoICp5eWctPnl5X2NfYnVmX3AgPT0gWVlfRU5EX09GX0JVRkZFUl9DSEFSICkKLQkJ
ewotCQkvKiB5eV9jX2J1Zl9wIG5vdyBwb2ludHMgdG8gdGhlIGNoYXJhY3RlciB3ZSB3YW50IHRv
IHJldHVybi4KLQkJICogSWYgdGhpcyBvY2N1cnMgKmJlZm9yZSogdGhlIEVPQiBjaGFyYWN0ZXJz
LCB0aGVuIGl0J3MgYQotCQkgKiB2YWxpZCBOVUw7IGlmIG5vdCwgdGhlbiB3ZSd2ZSBoaXQgdGhl
IGVuZCBvZiB0aGUgYnVmZmVyLgotCQkgKi8KLQkJaWYgKCB5eWctPnl5X2NfYnVmX3AgPCAmWVlf
Q1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9jaF9idWZbeXlnLT55eV9uX2NoYXJzXSApCi0JCQkv
KiBUaGlzIHdhcyByZWFsbHkgYSBOVUwuICovCi0JCQkqeXlnLT55eV9jX2J1Zl9wID0gJ1wwJzsK
LQotCQllbHNlCi0JCQl7IC8qIG5lZWQgbW9yZSBpbnB1dCAqLwotCQkJeXlfc2l6ZV90IG9mZnNl
dCA9IHl5Zy0+eXlfY19idWZfcCAtIHl5Zy0+eXl0ZXh0X3B0cjsKLQkJCSsreXlnLT55eV9jX2J1
Zl9wOwotCi0JCQlzd2l0Y2ggKCB5eV9nZXRfbmV4dF9idWZmZXIoIHl5c2Nhbm5lciApICkKLQkJ
CQl7Ci0JCQkJY2FzZSBFT0JfQUNUX0xBU1RfTUFUQ0g6Ci0JCQkJCS8qIFRoaXMgaGFwcGVucyBi
ZWNhdXNlIHl5X2dfbl9iKCkKLQkJCQkJICogc2VlcyB0aGF0IHdlJ3ZlIGFjY3VtdWxhdGVkIGEK
LQkJCQkJICogdG9rZW4gYW5kIGZsYWdzIHRoYXQgd2UgbmVlZCB0bwotCQkJCQkgKiB0cnkgbWF0
Y2hpbmcgdGhlIHRva2VuIGJlZm9yZQotCQkJCQkgKiBwcm9jZWVkaW5nLiAgQnV0IGZvciBpbnB1
dCgpLAotCQkJCQkgKiB0aGVyZSdzIG5vIG1hdGNoaW5nIHRvIGNvbnNpZGVyLgotCQkJCQkgKiBT
byBjb252ZXJ0IHRoZSBFT0JfQUNUX0xBU1RfTUFUQ0gKLQkJCQkJICogdG8gRU9CX0FDVF9FTkRf
T0ZfRklMRS4KLQkJCQkJICovCi0KLQkJCQkJLyogUmVzZXQgYnVmZmVyIHN0YXR1cy4gKi8KLQkJ
CQkJcHByZXN0YXJ0KHl5aW4gLHl5c2Nhbm5lcik7Ci0KLQkJCQkJLypGQUxMVEhST1VHSCovCi0K
LQkJCQljYXNlIEVPQl9BQ1RfRU5EX09GX0ZJTEU6Ci0JCQkJCXsKLQkJCQkJaWYgKCBwcHdyYXAo
eXlzY2FubmVyICkgKQotCQkJCQkJcmV0dXJuIDA7Ci0KLQkJCQkJaWYgKCAhIHl5Zy0+eXlfZGlk
X2J1ZmZlcl9zd2l0Y2hfb25fZW9mICkKLQkJCQkJCVlZX05FV19GSUxFOwotI2lmZGVmIF9fY3Bs
dXNwbHVzCi0JCQkJCXJldHVybiB5eWlucHV0KHl5c2Nhbm5lcik7Ci0jZWxzZQotCQkJCQlyZXR1
cm4gaW5wdXQoeXlzY2FubmVyKTsKLSNlbmRpZgotCQkJCQl9Ci0KLQkJCQljYXNlIEVPQl9BQ1Rf
Q09OVElOVUVfU0NBTjoKLQkJCQkJeXlnLT55eV9jX2J1Zl9wID0geXlnLT55eXRleHRfcHRyICsg
b2Zmc2V0OwotCQkJCQlicmVhazsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQotCWMgPSAqKHVuc2lnbmVk
IGNoYXIgKikgeXlnLT55eV9jX2J1Zl9wOwkvKiBjYXN0IGZvciA4LWJpdCBjaGFyJ3MgKi8KLQkq
eXlnLT55eV9jX2J1Zl9wID0gJ1wwJzsJLyogcHJlc2VydmUgeXl0ZXh0ICovCi0JeXlnLT55eV9o
b2xkX2NoYXIgPSAqKyt5eWctPnl5X2NfYnVmX3A7Ci0KLQlyZXR1cm4gYzsKLX0KLSNlbmRpZgkv
KiBpZm5kZWYgWVlfTk9fSU5QVVQgKi8KLQogLyoqIEltbWVkaWF0ZWx5IHN3aXRjaCB0byBhIGRp
ZmZlcmVudCBpbnB1dCBzdHJlYW0uCiAgKiBAcGFyYW0gaW5wdXRfZmlsZSBBIHJlYWRhYmxlIHN0
cmVhbS4KICAqIEBwYXJhbSB5eXNjYW5uZXIgVGhlIHNjYW5uZXIgb2JqZWN0LgpAQCAtMjI5NCwx
NyArMjIwMywxMSBAQCB2b2lkIHBwZnJlZSAodm9pZCAqIHB0ciAsIHl5c2Nhbl90IHl5c2NhCiAK
ICNkZWZpbmUgWVlUQUJMRVNfTkFNRSAieXl0YWJsZXMiCiAKLSNpZiBkZWZpbmVkKF9fY2xhbmdf
XykKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSNlbmRpZgotCiBuYW1lc3BhY2UgcHAg
ewogCi0vLyBUT0RPKGFsb2twKTogTWF4aW11bSB0b2tlbiBsZW5ndGggc2hvdWxkIGlkZWFsbHkg
YmUgc3BlY2lmaWVkIGJ5Ci0vLyB0aGUgcHJlcHJvY2Vzc29yIGNsaWVudCwgaS5lLiwgdGhlIGNv
bXBpbGVyLgotY29uc3Qgc2l6ZV90IFRva2VuaXplcjo6a01heFRva2VuTGVuZ3RoID0gMjU2Owot
Ci1Ub2tlbml6ZXI6OlRva2VuaXplcihEaWFnbm9zdGljcyogZGlhZ25vc3RpY3MpIDogbUhhbmRs
ZSgwKQorVG9rZW5pemVyOjpUb2tlbml6ZXIoRGlhZ25vc3RpY3MqIGRpYWdub3N0aWNzKQorICAg
IDogbUhhbmRsZSgwKSwKKyAgICAgIG1NYXhUb2tlbkxlbmd0aCgyNTYpCiB7CiAgICAgbUNvbnRl
eHQuZGlhZ25vc3RpY3MgPSBkaWFnbm9zdGljczsKIH0KQEAgLTIzMzcsMTEgKzIyNDAsMTEgQEAg
dm9pZCBUb2tlbml6ZXI6OnNldExpbmVOdW1iZXIoaW50IGxpbmUpCiB2b2lkIFRva2VuaXplcjo6
bGV4KFRva2VuKiB0b2tlbikKIHsKICAgICB0b2tlbi0+dHlwZSA9IHBwbGV4KCZ0b2tlbi0+dGV4
dCwmdG9rZW4tPmxvY2F0aW9uLG1IYW5kbGUpOwotICAgIGlmICh0b2tlbi0+dGV4dC5zaXplKCkg
PiBrTWF4VG9rZW5MZW5ndGgpCisgICAgaWYgKHRva2VuLT50ZXh0LnNpemUoKSA+IG1NYXhUb2tl
bkxlbmd0aCkKICAgICB7CiAgICAgICAgIG1Db250ZXh0LmRpYWdub3N0aWNzLT5yZXBvcnQoRGlh
Z25vc3RpY3M6OlRPS0VOX1RPT19MT05HLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOwotICAgICAgICB0b2tlbi0+dGV4
dC5lcmFzZShrTWF4VG9rZW5MZW5ndGgpOworICAgICAgICB0b2tlbi0+dGV4dC5lcmFzZShtTWF4
VG9rZW5MZW5ndGgpOwogICAgIH0KIAogICAgIHRva2VuLT5mbGFncyA9IDA7CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVw
cm9jZXNzb3IvVG9rZW5pemVyLmgJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDEzICszMiwxMyBAQCBjbGFzcyBUb2tlbml6ZXIgOiBwdWJsaWMgTGV4ZXIK
ICAgICAgICAgYm9vbCBsZWFkaW5nU3BhY2U7CiAgICAgICAgIGJvb2wgbGluZVN0YXJ0OwogICAg
IH07Ci0gICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IGtNYXhUb2tlbkxlbmd0aDsKIAogICAg
IFRva2VuaXplcihEaWFnbm9zdGljcyogZGlhZ25vc3RpY3MpOwogICAgIH5Ub2tlbml6ZXIoKTsK
IAogICAgIGJvb2wgaW5pdChzaXplX3QgY291bnQsIGNvbnN0IGNoYXIqIGNvbnN0IHN0cmluZ1td
LCBjb25zdCBpbnQgbGVuZ3RoW10pOwogCisgICAgdm9pZCBzZXRNYXhUb2tlbkxlbmd0aChzaXpl
X3QgbWF4TGVuZ3RoKSB7IG1NYXhUb2tlbkxlbmd0aCA9IG1heExlbmd0aDsgfQogICAgIHZvaWQg
c2V0RmlsZU51bWJlcihpbnQgZmlsZSk7CiAgICAgdm9pZCBzZXRMaW5lTnVtYmVyKGludCBsaW5l
KTsKIApAQCAtNTEsNiArNTEsNyBAQCBjbGFzcyBUb2tlbml6ZXIgOiBwdWJsaWMgTGV4ZXIKIAog
ICAgIHZvaWQqIG1IYW5kbGU7ICAvLyBTY2FubmVyIGhhbmRsZS4KICAgICBDb250ZXh0IG1Db250
ZXh0OyAgLy8gU2Nhbm5lciBleHRyYS4KKyAgICBzaXplX3QgbU1heFRva2VuTGVuZ3RoOwogfTsK
IAogfSAgLy8gbmFtZXNwYWNlIHBwCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmwJKHJl
dmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9w
cmVwcm9jZXNzb3IvVG9rZW5pemVyLmwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEyICszMyw2IEBA
IElGIFlPVSBNT0RJRlkgVEhJUyBGSUxFIFlPVSBBTFNPIE5FRUQgVE8KICNwcmFnbWEgR0NDIGRp
YWdub3N0aWMgaWdub3JlZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgogI2VuZGlmCiAKLSNpZiBkZWZp
bmVkKF9fY2xhbmdfXykKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bmtub3duLXByYWdtYXMiCi0jcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLXJlZ2lzdGVyIgotI2VuZGlmCi0KIHR5
cGVkZWYgc3RkOjpzdHJpbmcgWVlTVFlQRTsKIHR5cGVkZWYgcHA6OlNvdXJjZUxvY2F0aW9uIFlZ
TFRZUEU7CiAKQEAgLTcyLDggKzY2LDYgQEAgdHlwZWRlZiBwcDo6U291cmNlTG9jYXRpb24gWVlM
VFlQRTsKICNkZWZpbmUgWVlfSU5QVVQoYnVmLCByZXN1bHQsIG1heFNpemUpIFwKICAgICByZXN1
bHQgPSB5eWV4dHJhLT5pbnB1dC5yZWFkKGJ1ZiwgbWF4U2l6ZSk7CiAKLSNkZWZpbmUgWVlfTk9f
SU5QVVQKLQogJX0KIAogJW9wdGlvbiBub3l5d3JhcCBub3VucHV0IG5ldmVyLWludGVyYWN0aXZl
CkBAIC0yNzMsMTcgKzI2NSwxMSBAQCBGUkFDVElPTkFMX0NPTlNUQU5UICAoe0RJR0lUfSoiLiJ7
RElHSVR9CiAKICUlCiAKLSNpZiBkZWZpbmVkKF9fY2xhbmdfXykKLSNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwb3AKLSNlbmRpZgotCiBuYW1lc3BhY2UgcHAgewogCi0vLyBUT0RPKGFsb2twKTog
TWF4aW11bSB0b2tlbiBsZW5ndGggc2hvdWxkIGlkZWFsbHkgYmUgc3BlY2lmaWVkIGJ5Ci0vLyB0
aGUgcHJlcHJvY2Vzc29yIGNsaWVudCwgaS5lLiwgdGhlIGNvbXBpbGVyLgotY29uc3Qgc2l6ZV90
IFRva2VuaXplcjo6a01heFRva2VuTGVuZ3RoID0gMjU2OwotCi1Ub2tlbml6ZXI6OlRva2VuaXpl
cihEaWFnbm9zdGljcyogZGlhZ25vc3RpY3MpIDogbUhhbmRsZSgwKQorVG9rZW5pemVyOjpUb2tl
bml6ZXIoRGlhZ25vc3RpY3MqIGRpYWdub3N0aWNzKQorICAgIDogbUhhbmRsZSgwKSwKKyAgICAg
IG1NYXhUb2tlbkxlbmd0aCgyNTYpCiB7CiAgICAgbUNvbnRleHQuZGlhZ25vc3RpY3MgPSBkaWFn
bm9zdGljczsKIH0KQEAgLTMxNiwxMSArMzAyLDExIEBAIHZvaWQgVG9rZW5pemVyOjpzZXRMaW5l
TnVtYmVyKGludCBsaW5lKQogdm9pZCBUb2tlbml6ZXI6OmxleChUb2tlbiogdG9rZW4pCiB7CiAg
ICAgdG9rZW4tPnR5cGUgPSB5eWxleCgmdG9rZW4tPnRleHQsICZ0b2tlbi0+bG9jYXRpb24sIG1I
YW5kbGUpOwotICAgIGlmICh0b2tlbi0+dGV4dC5zaXplKCkgPiBrTWF4VG9rZW5MZW5ndGgpCisg
ICAgaWYgKHRva2VuLT50ZXh0LnNpemUoKSA+IG1NYXhUb2tlbkxlbmd0aCkKICAgICB7CiAgICAg
ICAgIG1Db250ZXh0LmRpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlRPS0VOX1RPT19M
T05HLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlv
biwgdG9rZW4tPnRleHQpOwotICAgICAgICB0b2tlbi0+dGV4dC5lcmFzZShrTWF4VG9rZW5MZW5n
dGgpOworICAgICAgICB0b2tlbi0+dGV4dC5lcmFzZShtTWF4VG9rZW5MZW5ndGgpOwogICAgIH0K
IAogICAgIHRva2VuLT5mbGFncyA9IDA7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL2dlbmVyYXRlX3BhcnNlci5zaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL2dlbmVy
YXRlX3BhcnNlci5zaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9nZW5lcmF0ZV9wYXJzZXIuc2gJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDMgKzI0LDQgQEAgc2NyaXB0X2Rpcj0kKGRpcm5hbWUgJDApCiAjIEdlbmVy
YXRlIHByZXByb2Nlc3NvcgogcnVuX2ZsZXggVG9rZW5pemVyLmwgVG9rZW5pemVyLmNwcAogcnVu
X2Jpc29uIEV4cHJlc3Npb25QYXJzZXIueSBFeHByZXNzaW9uUGFyc2VyLmNwcAorcGF0Y2ggLS1z
aWxlbnQgLS1mb3J3YXJkIDwgNjRiaXQtdG9rZW5pemVyLXNhZmV0eS5wYXRjaApJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9wcmVwcm9jZXNz
b3IudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvcHJlcHJvY2Vzc29yL3ByZXByb2Nlc3Nvci52Y3hwcm9qCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9wcmVwcm9j
ZXNzb3IudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3MiBAQAor77u/PD94bWwg
dmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0
cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9z
b2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4NCisgIDxJdGVtR3JvdXAgTGFiZWw9IlBy
b2plY3RDb25maWd1cmF0aW9ucyI+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRl
PSJEZWJ1Z3xXaW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRp
b24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29u
ZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2
NCI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+DQorICAgICAg
PFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQor
ICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4NCisgICAg
ICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9y
bT5XaW4zMjwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQ
cm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+DQorICAgICAgPENvbmZp
Z3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9Q
bGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgIDwvSXRlbUdyb3VwPg0K
KyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPg0KKyAgICA8UHJvamVjdEd1aWQ+e0ZC
RTMyREYzLTBGQjAtNEYyRi1BNDI0LTJDMjFCRDdCQzMyNX08L1Byb2plY3RHdWlkPg0KKyAgICA8
Um9vdE5hbWVzcGFjZT5wcmVwcm9jZXNzb3I8L1Jvb3ROYW1lc3BhY2U+DQorICAgIDxLZXl3b3Jk
PldpbjMyUHJvajwvS2V5d29yZD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJbXBvcnQgUHJv
amVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+DQor
ICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1
cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJh
Y3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6
YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgPC9Qcm9wZXJ0eUdyb3Vw
Pg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZp
Z3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hh
cmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisg
IDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0
aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3Rl
clNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRp
b24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0K
KyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0
aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3Rl
clNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8SW1w
b3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4NCisg
IDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPg0KKyAgPC9JbXBvcnRHcm91
cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1w
b3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNl
ci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAu
JChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+
DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVl
dHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAu
JChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIp
XE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBE
YXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJl
bD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIp
XE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMo
JyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBM
YWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPElt
cG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIk
KFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRp
dGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVz
ZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRH
cm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPg0KKyAgPFByb3Bl
cnR5R3JvdXA+DQorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2pl
Y3RGaWxlVmVyc2lvbj4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKENvbmZpZ3VyYXRp
b24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKENvbmZpZ3VyYXRpb24pXDwvSW50RGlyPg0K
KyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8eDY0JyI+JChTb2x1dGlvbkRpcikkKFBsYXRmb3JtKVwkKENvbmZpZ3VyYXRpb24pXDwv
T3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8eDY0JyI+JChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8L0ludERp
cj4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoQ29uZmlndXJhdGlvbilcPC9PdXRE
aXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfFdpbjMyJyI+JChDb25maWd1cmF0aW9uKVw8L0ludERpcj4NCisgICAgPE91
dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
eDY0JyI+JChTb2x1dGlvbkRpcikkKFBsYXRmb3JtKVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGly
Pg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXx4NjQnIj4kKFBsYXRmb3JtKVwkKENvbmZpZ3VyYXRpb24pXDwvSW50RGlyPg0K
KyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPg0KKyAgICA8Q2xD
b21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisg
ICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19XSU5ET1dTO19VU1JE
TEw7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05PTUlOTUFYOyUoUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8TWluaW1hbFJlYnVpbGQ+
dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+DQorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVG
YXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11
bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVh
ZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5M
ZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8VHJlYXRXYXJuaW5nQXNFcnJvcj50cnVlPC9U
cmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRB
bmRDb250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8RGlzYWJsZVNwZWNp
ZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7NDUxMjs0NzAyOzQyNjc7
JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAg
ICA8L0NsQ29tcGlsZT4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5p
dGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8eDY0JyI+DQorICAgIDxNaWRsPg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1Rh
cmdldEVudmlyb25tZW50Pg0KKyAgICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAg
PE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxQcmVwcm9jZXNz
b3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtfQ1JUX1NFQ1VSRV9O
T19ERVBSRUNBVEU7Tk9NSU5NQVg7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nl
c3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVi
dWlsZD4NCisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2lj
UnVudGltZUNoZWNrcz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVn
PC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9Q
cmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xl
dmVsPg0KKyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJy
b3I+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40MTAw
OzQxMjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7NDcxODs0MjY3OyUoRGlzYWJsZVNw
ZWNpZmljV2FybmluZ3MpPC9EaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz4NCisgICAgPC9DbENvbXBp
bGU+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
Ij4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRp
bWl6YXRpb24+DQorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPkFueVN1aXRhYmxlPC9J
bmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+
V0lOMzI7TkRFQlVHO19XSU5ET1dTO19VU1JETEw7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05P
TUlOTUFYO19TRUNVUkVfU0NMPTA7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nl
c3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9S
dW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVj
b21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVs
Pg0KKyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+
DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0lu
Zm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40MTAwOzQx
Mjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7NDcxODs0MjY3OyUoRGlzYWJsZVNwZWNp
ZmljV2FybmluZ3MpPC9EaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz4NCisgICAgPC9DbENvbXBpbGU+
DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+DQor
ICAgIDxNaWRsPg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25t
ZW50Pg0KKyAgICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlv
bj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lv
bj5BbnlTdWl0YWJsZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+DQorICAgICAgPFByZXByb2Nl
c3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfV0lORE9XUztfVVNSRExMO19DUlRfU0VDVVJF
X05PX0RFUFJFQ0FURTtOT01JTk1BWDtfU0VDVVJFX1NDTD0wOyUoUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+
TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVy
Pg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZl
bDQ8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8VHJlYXRXYXJuaW5nQXNFcnJvcj50cnVlPC9UcmVh
dFdhcm5pbmdBc0Vycm9yPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1E
YXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8RGlzYWJsZVNwZWNpZmlj
V2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7NDUxMjs0NzAyOzQ3MTg7NDI2
NzslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+DQor
ICAgIDwvQ2xDb21waWxlPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1Hcm91
cD4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEaWFnbm9zdGljc0Jhc2UuY3BwIiAvPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9IkRpcmVjdGl2ZUhhbmRsZXJCYXNlLmNwcCIgLz4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJEaXJlY3RpdmVQYXJzZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9IkV4cHJlc3Npb25QYXJzZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IklucHV0LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJMZXhlci5jcHAi
IC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iTWFjcm8uY3BwIiAvPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ik1hY3JvRXhwYW5kZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9IlByZXByb2Nlc3Nvci5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVG9rZW4u
Y3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlRva2VuaXplci5jcHAiIC8+DQorICA8
L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0ibGVu
Z3RoX2xpbWl0cy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkRpYWdub3N0aWNzQmFz
ZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkRpcmVjdGl2ZUhhbmRsZXJCYXNlLmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRGlyZWN0aXZlUGFyc2VyLmgiIC8+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iRXhwcmVzc2lvblBhcnNlci5oIiAvPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IklucHV0LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iTGV4ZXIu
aCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJNYWNyby5oIiAvPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ik1hY3JvRXhwYW5kZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSJudW1lcmljX2xleC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InBwX3V0aWxzLmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUHJlcHJvY2Vzc29yLmgiIC8+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iU291cmNlTG9jYXRpb24uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJUb2tlbi5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlRva2VuaXplci5o
IiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Tm9uZSBJbmNsdWRl
PSJUb2tlbml6ZXIubCIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIk
KFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4NCisgIDxJbXBvcnRHcm91
cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+DQorICA8L0ltcG9ydEdyb3VwPg0KKzwvUHJvamVj
dD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3ByZXByb2Nlc3Nvci52Y3hwcm9qLmZpbHRl
cnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9wcmVwcm9jZXNzb3IudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9wcmVwcm9j
ZXNzb3IudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAwIEBACivv
u788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KKzxQcm9qZWN0IFRvb2xz
VmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9w
ZXIvbXNidWlsZC8yMDAzIj4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0i
U291cmNlIEZpbGVzIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00
Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgICA8RXh0ZW5z
aW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9u
cz4NCisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4N
CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJF
NTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7
aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+DQorICAgIDwvRmlsdGVyPg0KKyAgPC9JdGVtR3Jv
dXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkRpcmVjdGl2ZVBh
cnNlci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwv
Q2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkV4cHJlc3Npb25QYXJzZXIuY3Bw
Ij4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGls
ZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJJbnB1dC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+
U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IkxleGVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRl
cj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iTWFjcm8uY3Bw
Ij4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGls
ZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJNYWNyb0V4cGFuZGVyLmNwcCI+DQorICAgICAg
PEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iUHJlcHJvY2Vzc29yLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iVG9rZW4uY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0K
KyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJUb2tlbml6ZXIuY3Bw
Ij4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGls
ZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEaWFnbm9zdGljc0Jhc2UuY3BwIj4NCisgICAg
ICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJEaXJlY3RpdmVIYW5kbGVyQmFzZS5jcHAiPg0KKyAgICAgIDxG
aWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9JdGVt
R3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkRpcmVjdGl2
ZVBhcnNlci5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8
L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJFeHByZXNzaW9uUGFyc2VyLmgi
Pg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRl
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IklucHV0LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVh
ZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IkxleGVyLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQor
ICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ik1hY3JvLmgiPg0KKyAg
ICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ik1hY3JvRXhwYW5kZXIuaCI+DQorICAgICAgPEZpbHRlcj5I
ZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0ibnVtZXJpY19sZXguaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0Zp
bHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icHBfdXRp
bHMuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbElu
Y2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUHJlcHJvY2Vzc29yLmgiPg0KKyAgICAg
IDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IlNvdXJjZUxvY2F0aW9uLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVh
ZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IlRva2VuLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQor
ICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlRva2VuaXplci5oIj4N
CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJsZW5ndGhfbGltaXRzLmgiPg0KKyAgICAgIDxGaWx0
ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IkRpYWdub3N0aWNzQmFzZS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBG
aWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSJEaXJlY3RpdmVIYW5kbGVyQmFzZS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwv
RmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91
cD4NCisgICAgPE5vbmUgSW5jbHVkZT0iVG9rZW5pemVyLmwiPg0KKyAgICAgIDxGaWx0ZXI+U291
cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvTm9uZT4NCisgIDwvSXRlbUdyb3VwPg0KKzwvUHJv
amVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdGltaW5nL1Jlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
aW1pbmcvUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZy5jcHAJKHJldmlzaW9uIDE1OTUzMikK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90aW1pbmcvUmVzdHJpY3RG
cmFnbWVudFNoYWRlclRpbWluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUsNyArNSw3IEBACiAv
LwogCiAjaW5jbHVkZSAiY29tcGlsZXIvSW5mb1NpbmsuaCIKLSNpbmNsdWRlICJjb21waWxlci9Q
YXJzZUhlbHBlci5oIgorI2luY2x1ZGUgImNvbXBpbGVyL1BhcnNlQ29udGV4dC5oIgogI2luY2x1
ZGUgImNvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5oIgogI2luY2x1ZGUg
ImNvbXBpbGVyL3RpbWluZy9SZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nLmgiCiAKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvU3VyZmFjZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9TdXJmYWNlLmNwcAkocmV2
aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9TdXJm
YWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAsNiArMTAsOCBAQAogCiAjaW5jbHVkZSA8dGNo
YXIuaD4KIAorI2luY2x1ZGUgPGFsZ29yaXRobT4KKwogI2luY2x1ZGUgImxpYkVHTC9TdXJmYWNl
LmgiCiAKICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKQEAgLTMwOSw2ICszMTEsMTMgQEAgYm9v
bCBTdXJmYWNlOjpjaGVja0Zvck91dE9mRGF0ZVN3YXBDaGFpbgogICAgIGludCBjbGllbnRIZWln
aHQgPSBjbGllbnQuYm90dG9tIC0gY2xpZW50LnRvcDsKICAgICBib29sIHNpemVEaXJ0eSA9IGNs
aWVudFdpZHRoICE9IGdldFdpZHRoKCkgfHwgY2xpZW50SGVpZ2h0ICE9IGdldEhlaWdodCgpOwog
CisgICAgaWYgKElzSWNvbmljKGdldFdpbmRvd0hhbmRsZSgpKSkKKyAgICB7CisgICAgICAgIC8v
IFRoZSB3aW5kb3cgaXMgYXV0b21hdGljYWxseSByZXNpemVkIHRvIDE1MHgyMiB3aGVuIGl0J3Mg
bWluaW1pemVkLCBidXQgdGhlIHN3YXBjaGFpbiBzaG91bGRuJ3QgYmUgcmVzaXplZAorICAgICAg
ICAvLyBiZWNhdXNlIHRoYXQncyBub3QgYSB1c2VmdWwgc2l6ZSB0byByZW5kZXIgdG8uCisgICAg
ICAgIHNpemVEaXJ0eSA9IGZhbHNlOworICAgIH0KKwogICAgIGlmIChtU3dhcEludGVydmFsRGly
dHkpCiAgICAgewogICAgICAgICByZXNldFN3YXBDaGFpbihjbGllbnRXaWR0aCwgY2xpZW50SGVp
Z2h0KTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGliRUdMLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVH
TC5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJFR0wvbGliRUdMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODE5LDEzICs4MTksMjEgQEAgRUdM
Q29udGV4dCBfX3N0ZGNhbGwgZWdsQ3JlYXRlQ29udGV4dChFRwogICAgICAgICAgICAgcmV0dXJu
IGVnbDo6ZXJyb3IoRUdMX0JBRF9DT05GSUcsIEVHTF9OT19DT05URVhUKTsKICAgICAgICAgfQog
Ci0gICAgICAgIGlmIChzaGFyZV9jb250ZXh0ICYmIHN0YXRpY19jYXN0PGdsOjpDb250ZXh0Kj4o
c2hhcmVfY29udGV4dCktPmlzUmVzZXROb3RpZmljYXRpb25FbmFibGVkKCkgIT0gcmVzZXRfbm90
aWZpY2F0aW9uKQorICAgICAgICBnbDo6Q29udGV4dCAqc2hhcmVkQ29udGV4dFB0ciA9IChzaGFy
ZV9jb250ZXh0ICE9IEVHTF9OT19DT05URVhUID8gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQqPihz
aGFyZV9jb250ZXh0KSA6IE5VTEwpOworCisgICAgICAgIGlmIChzaGFyZWRDb250ZXh0UHRyICE9
IE5VTEwgJiYgc2hhcmVkQ29udGV4dFB0ci0+aXNSZXNldE5vdGlmaWNhdGlvbkVuYWJsZWQoKSAh
PSByZXNldF9ub3RpZmljYXRpb24pCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBlZ2w6
OmVycm9yKEVHTF9CQURfTUFUQ0gsIEVHTF9OT19DT05URVhUKTsKICAgICAgICAgfQogCiAgICAg
ICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGRw
eSk7CiAKKyAgICAgICAgLy8gQ2FuIG5vdCBzaGFyZSBjb250ZXh0cyBiZXR3ZWVuIGRpc3BsYXlz
CisgICAgICAgIGlmIChzaGFyZWRDb250ZXh0UHRyICE9IE5VTEwgJiYgc2hhcmVkQ29udGV4dFB0
ci0+Z2V0UmVuZGVyZXIoKSAhPSBkaXNwbGF5LT5nZXRSZW5kZXJlcigpKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX01BVENILCBFR0xfTk9fQ09OVEVY
VCk7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoIXZhbGlkYXRlQ29uZmlnKGRpc3BsYXksIGNv
bmZpZykpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBFR0xfTk9fQ09OVEVYVDsKQEAg
LTg4OCwxNSArODk2LDE4IEBAIEVHTEJvb2xlYW4gX19zdGRjYWxsIGVnbE1ha2VDdXJyZW50KEVH
TEQKICAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgICAgIH0KIAotICAgICAgICBy
eDo6UmVuZGVyZXIgKnJlbmRlcmVyID0gZGlzcGxheS0+Z2V0UmVuZGVyZXIoKTsKLSAgICAgICAg
aWYgKHJlbmRlcmVyLT50ZXN0RGV2aWNlTG9zdCh0cnVlKSkKKyAgICAgICAgaWYgKGRweSAhPSBF
R0xfTk9fRElTUExBWSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsK
LSAgICAgICAgfQorICAgICAgICAgICAgcng6OlJlbmRlcmVyICpyZW5kZXJlciA9IGRpc3BsYXkt
PmdldFJlbmRlcmVyKCk7CisgICAgICAgICAgICBpZiAocmVuZGVyZXItPnRlc3REZXZpY2VMb3N0
KHRydWUpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7
CisgICAgICAgICAgICB9CiAKLSAgICAgICAgaWYgKHJlbmRlcmVyLT5pc0RldmljZUxvc3QoKSkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0NPTlRFWFRfTE9T
VCwgRUdMX0ZBTFNFKTsKKyAgICAgICAgICAgIGlmIChyZW5kZXJlci0+aXNEZXZpY2VMb3N0KCkp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0NP
TlRFWFRfTE9TVCwgRUdMX0ZBTFNFKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAg
ICAgIGlmICgoZHJhdyAhPSBFR0xfTk9fU1VSRkFDRSAmJiAhdmFsaWRhdGVTdXJmYWNlKGRpc3Bs
YXksIHN0YXRpY19jYXN0PGVnbDo6U3VyZmFjZSo+KGRyYXcpKSkgfHwKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGliRUdMLnJjCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGliRUdMLnJjCShyZXZpc2lvbiAxNTk1MzIp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5yYwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMDIgKzEsMTAyIEBACi0vLyBNaWNyb3NvZnQgVmlzdWFsIEMrKyBnZW5l
cmF0ZWQgcmVzb3VyY2Ugc2NyaXB0LgotLy8KLSNpbmNsdWRlICJyZXNvdXJjZS5oIgotCi0jZGVm
aW5lIEFQU1RVRElPX1JFQURPTkxZX1NZTUJPTFMKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwot
Ly8gR2VuZXJhdGVkIGZyb20gdGhlIFRFWFRJTkNMVURFIDIgcmVzb3VyY2UuCi0vLwotI2luY2x1
ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlICIuLi9jb21tb24vdmVyc2lvbi5oIgotCi0vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwotI3VuZGVmIEFQU1RVRElPX1JFQURPTkxZX1NZTUJPTFMKLQotLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KLS8vIEVuZ2xpc2ggKFUuUy4pIHJlc291cmNlcwotCi0jaWYgIWRlZmlu
ZWQoQUZYX1JFU09VUkNFX0RMTCkgfHwgZGVmaW5lZChBRlhfVEFSR19FTlUpCi0jaWZkZWYgX1dJ
TjMyCi1MQU5HVUFHRSBMQU5HX0VOR0xJU0gsIFNVQkxBTkdfRU5HTElTSF9VUwotI3ByYWdtYSBj
b2RlX3BhZ2UoMTI1MikKLSNlbmRpZiAvL19XSU4zMgotCi0jaWZkZWYgQVBTVFVESU9fSU5WT0tF
RAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBURVhUSU5DTFVERQotLy8KLQotMSBURVhU
SU5DTFVERSAKLUJFR0lOCi0gICAgInJlc291cmNlLmhcMCIKLUVORAotCi0yIFRFWFRJTkNMVURF
IAotQkVHSU4KLSAgICAiI2luY2x1ZGUgIiJhZnhyZXMuaCIiXHJcbiIKLSAgICAiI2luY2x1ZGUg
IiIuLi9jb21tb24vdmVyc2lvbi5oIiJcMCIKLUVORAotCi0zIFRFWFRJTkNMVURFIAotQkVHSU4K
LSAgICAiXHJcbiIKLSAgICAiXDAiCi1FTkQKLQotI2VuZGlmICAgIC8vIEFQU1RVRElPX0lOVk9L
RUQKLQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIFZlcnNpb24KLS8vCi0KLVZTX1ZF
UlNJT05fSU5GTyBWRVJTSU9OSU5GTwotIEZJTEVWRVJTSU9OIE1BSk9SX1ZFUlNJT04sTUlOT1Jf
VkVSU0lPTixCVUlMRF9WRVJTSU9OLEJVSUxEX1JFVklTSU9OCi0gUFJPRFVDVFZFUlNJT04gTUFK
T1JfVkVSU0lPTixNSU5PUl9WRVJTSU9OLEJVSUxEX1ZFUlNJT04sQlVJTERfUkVWSVNJT04KLSBG
SUxFRkxBR1NNQVNLIDB4MTdMCi0jaWZkZWYgX0RFQlVHCi0gRklMRUZMQUdTIDB4MUwKLSNlbHNl
Ci0gRklMRUZMQUdTIDB4MEwKLSNlbmRpZgotIEZJTEVPUyAweDRMCi0gRklMRVRZUEUgMHgyTAot
IEZJTEVTVUJUWVBFIDB4MEwKLUJFR0lOCi0gICAgQkxPQ0sgIlN0cmluZ0ZpbGVJbmZvIgotICAg
IEJFR0lOCi0gICAgICAgIEJMT0NLICIwNDA5MDRiMCIKLSAgICAgICAgQkVHSU4KLSAgICAgICAg
ICAgIFZBTFVFICJGaWxlRGVzY3JpcHRpb24iLCAiQU5HTEUgbGliRUdMIER5bmFtaWMgTGluayBM
aWJyYXJ5IgotICAgICAgICAgICAgVkFMVUUgIkZpbGVWZXJzaW9uIiwgVkVSU0lPTl9TVFJJTkcK
LSAgICAgICAgICAgIFZBTFVFICJJbnRlcm5hbE5hbWUiLCAibGliRUdMIgotICAgICAgICAgICAg
VkFMVUUgIkxlZ2FsQ29weXJpZ2h0IiwgIkNvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiIK
LSAgICAgICAgICAgIFZBTFVFICJPcmlnaW5hbEZpbGVuYW1lIiwgImxpYkVHTC5kbGwiCi0gICAg
ICAgICAgICBWQUxVRSAiUHJpdmF0ZUJ1aWxkIiwgVkVSU0lPTl9TVFJJTkcKLSAgICAgICAgICAg
IFZBTFVFICJQcm9kdWN0TmFtZSIsICJBTkdMRSBsaWJFR0wgRHluYW1pYyBMaW5rIExpYnJhcnki
Ci0gICAgICAgICAgICBWQUxVRSAiUHJvZHVjdFZlcnNpb24iLCBWRVJTSU9OX1NUUklORwotICAg
ICAgICBFTkQKLSAgICBFTkQKLSAgICBCTE9DSyAiVmFyRmlsZUluZm8iCi0gICAgQkVHSU4KLSAg
ICAgICAgVkFMVUUgIlRyYW5zbGF0aW9uIiwgMHg0MDksIDEyMDAKLSAgICBFTkQKLUVORAotCi0j
ZW5kaWYgICAgLy8gRW5nbGlzaCAoVS5TLikgcmVzb3VyY2VzCi0vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LwotCi0KLQotI2lmbmRlZiBBUFNUVURJT19JTlZPS0VECi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwot
Ly8KLS8vIEdlbmVyYXRlZCBmcm9tIHRoZSBURVhUSU5DTFVERSAzIHJlc291cmNlLgotLy8KLQot
Ci0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwotI2VuZGlmICAgIC8vIG5vdCBBUFNUVURJT19JTlZPS0VE
CisvLyBNaWNyb3NvZnQgVmlzdWFsIEMrKyBnZW5lcmF0ZWQgcmVzb3VyY2Ugc2NyaXB0Lg0KKy8v
DQorI2luY2x1ZGUgInJlc291cmNlLmgiDQorDQorI2RlZmluZSBBUFNUVURJT19SRUFET05MWV9T
WU1CT0xTDQorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCisvLw0KKy8vIEdlbmVyYXRlZCBmcm9tIHRo
ZSBURVhUSU5DTFVERSAyIHJlc291cmNlLg0KKy8vDQorI2luY2x1ZGUgPHdpbmRvd3MuaD4NCisj
aW5jbHVkZSAiLi4vY29tbW9uL3ZlcnNpb24uaCINCisNCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0K
KyN1bmRlZiBBUFNUVURJT19SRUFET05MWV9TWU1CT0xTDQorDQorLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8NCisvLyBFbmdsaXNoIChVLlMuKSByZXNvdXJjZXMNCisNCisjaWYgIWRlZmluZWQoQUZYX1JF
U09VUkNFX0RMTCkgfHwgZGVmaW5lZChBRlhfVEFSR19FTlUpDQorI2lmZGVmIF9XSU4zMg0KK0xB
TkdVQUdFIExBTkdfRU5HTElTSCwgU1VCTEFOR19FTkdMSVNIX1VTDQorI3ByYWdtYSBjb2RlX3Bh
Z2UoMTI1MikNCisjZW5kaWYgLy9fV0lOMzINCisNCisjaWZkZWYgQVBTVFVESU9fSU5WT0tFRA0K
Ky8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vDQorLy8NCisvLyBURVhUSU5DTFVERQ0KKy8vDQorDQorMSBU
RVhUSU5DTFVERSANCitCRUdJTg0KKyAgICAicmVzb3VyY2UuaFwwIg0KK0VORA0KKw0KKzIgVEVY
VElOQ0xVREUgDQorQkVHSU4NCisgICAgIiNpbmNsdWRlICIiYWZ4cmVzLmgiIlxyXG4iDQorICAg
ICIjaW5jbHVkZSAiIi4uL2NvbW1vbi92ZXJzaW9uLmgiIlwwIg0KK0VORA0KKw0KKzMgVEVYVElO
Q0xVREUgDQorQkVHSU4NCisgICAgIlxyXG4iDQorICAgICJcMCINCitFTkQNCisNCisjZW5kaWYg
ICAgLy8gQVBTVFVESU9fSU5WT0tFRA0KKw0KKw0KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQorLy8N
CisvLyBWZXJzaW9uDQorLy8NCisNCitWU19WRVJTSU9OX0lORk8gVkVSU0lPTklORk8NCisgRklM
RVZFUlNJT04gTUFKT1JfVkVSU0lPTixNSU5PUl9WRVJTSU9OLEJVSUxEX1ZFUlNJT04sQlVJTERf
UkVWSVNJT04NCisgUFJPRFVDVFZFUlNJT04gTUFKT1JfVkVSU0lPTixNSU5PUl9WRVJTSU9OLEJV
SUxEX1ZFUlNJT04sQlVJTERfUkVWSVNJT04NCisgRklMRUZMQUdTTUFTSyAweDE3TA0KKyNpZmRl
ZiBfREVCVUcNCisgRklMRUZMQUdTIDB4MUwNCisjZWxzZQ0KKyBGSUxFRkxBR1MgMHgwTA0KKyNl
bmRpZg0KKyBGSUxFT1MgMHg0TA0KKyBGSUxFVFlQRSAweDJMDQorIEZJTEVTVUJUWVBFIDB4MEwN
CitCRUdJTg0KKyAgICBCTE9DSyAiU3RyaW5nRmlsZUluZm8iDQorICAgIEJFR0lODQorICAgICAg
ICBCTE9DSyAiMDQwOTA0YjAiDQorICAgICAgICBCRUdJTg0KKyAgICAgICAgICAgIFZBTFVFICJG
aWxlRGVzY3JpcHRpb24iLCAiQU5HTEUgbGliRUdMIER5bmFtaWMgTGluayBMaWJyYXJ5Ig0KKyAg
ICAgICAgICAgIFZBTFVFICJGaWxlVmVyc2lvbiIsIFZFUlNJT05fU1RSSU5HDQorICAgICAgICAg
ICAgVkFMVUUgIkludGVybmFsTmFtZSIsICJsaWJFR0wiDQorICAgICAgICAgICAgVkFMVUUgIkxl
Z2FsQ29weXJpZ2h0IiwgIkNvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiINCisgICAgICAg
ICAgICBWQUxVRSAiT3JpZ2luYWxGaWxlbmFtZSIsICJsaWJFR0wuZGxsIg0KKyAgICAgICAgICAg
IFZBTFVFICJQcml2YXRlQnVpbGQiLCBWRVJTSU9OX1NUUklORw0KKyAgICAgICAgICAgIFZBTFVF
ICJQcm9kdWN0TmFtZSIsICJBTkdMRSBsaWJFR0wgRHluYW1pYyBMaW5rIExpYnJhcnkiDQorICAg
ICAgICAgICAgVkFMVUUgIlByb2R1Y3RWZXJzaW9uIiwgVkVSU0lPTl9TVFJJTkcNCisgICAgICAg
IEVORA0KKyAgICBFTkQNCisgICAgQkxPQ0sgIlZhckZpbGVJbmZvIg0KKyAgICBCRUdJTg0KKyAg
ICAgICAgVkFMVUUgIlRyYW5zbGF0aW9uIiwgMHg0MDksIDEyMDANCisgICAgRU5EDQorRU5EDQor
DQorI2VuZGlmICAgIC8vIEVuZ2xpc2ggKFUuUy4pIHJlc291cmNlcw0KKy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vDQorDQorDQorDQorI2lmbmRlZiBBUFNUVURJT19JTlZPS0VEDQorLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8NCisvLw0KKy8vIEdlbmVyYXRlZCBmcm9tIHRoZSBURVhUSU5DTFVERSAzIHJlc291
cmNlLg0KKy8vDQorDQorDQorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCisjZW5kaWYgICAgLy8gbm90
IEFQU1RVRElPX0lOVk9LRUQNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
RUdML2xpYkVHTC52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJFR0wvbGliRUdMLnZjeHByb2oJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMjU4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0K
KzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5z
PSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0K
KyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4NCisgICAgPFByb2pl
Y3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJh
dGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRm
b3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3Vy
YXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1Zzwv
Q29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Q
cm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9
IlJlbGVhc2V8V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3Vy
YXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0
Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVh
c2V8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPg0K
KyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0
aW9uPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+
DQorICAgIDxQcm9qZWN0R3VpZD57RTc0NkZDQTktNjRDMy00MzNFLTg1RTgtOUE1QTY3QUI3RUQ2
fTwvUHJvamVjdEd1aWQ+DQorICAgIDxSb290TmFtZXNwYWNlPmxpYkVHTDwvUm9vdE5hbWVzcGFj
ZT4NCisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPg0KKyAgPC9Qcm9wZXJ0eUdyb3Vw
Pg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVm
YXVsdC5wcm9wcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9u
Ij4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9u
VHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICAgIDxX
aG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0K
KyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0
aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0
aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICA8
L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24i
Pg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25U
eXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4NCisgICAgPFdo
b2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+DQor
ICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9u
Ij4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9u
VHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1By
b3BlcnR5R3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9z
b2Z0LkNwcC5wcm9wcyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGlu
Z3MiPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVy
dHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29m
dC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJv
b3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9j
YWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
IiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJv
b3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJl
eGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0K
KyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFBy
b2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8
L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisg
ICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZv
cm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3Nv
ZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRm
b3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2Vy
TWFjcm9zIiAvPg0KKyAgPFByb3BlcnR5R3JvdXA+DQorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9u
PjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4NCisgICAgPE91dERpciBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChTb2x1
dGlvbkRpcikkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKENvbmZp
Z3VyYXRpb24pXDwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9MaW5rSW5j
cmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKENvbmZpZ3VyYXRpb24p
XDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoQ29uZmlndXJhdGlvbilcPC9JbnREaXI+DQor
ICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91
dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2
NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4N
CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfHg2NCciPiQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlvbilcPC9JbnREaXI+DQorICAg
IDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQo
U29sdXRpb25EaXIpJChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAg
PEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8eDY0JyI+JChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8L0ludERpcj4NCisgICAgPExp
bmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPExpYnJhcnlQYXRo
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4z
MiciPiQoTGlicmFyeVBhdGgpPC9MaWJyYXJ5UGF0aD4NCisgICAgPExpYnJhcnlQYXRoIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKERY
U0RLX0RJUilcbGliXHg4NjskKExpYnJhcnlQYXRoKTwvTGlicmFyeVBhdGg+DQorICAgIDxMaWJy
YXJ5UGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fHg2NCciPiQoTGlicmFyeVBhdGgpPC9MaWJyYXJ5UGF0aD4NCisgICAgPExpYnJhcnlQYXRoIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4k
KExpYnJhcnlQYXRoKTwvTGlicmFyeVBhdGg+DQorICAgIDxJbmNsdWRlUGF0aCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChEWFNES19E
SVIpXGluY2x1ZGU7JChWQ0luc3RhbGxEaXIpaW5jbHVkZTskKFZDSW5zdGFsbERpcilhdGxtZmNc
aW5jbHVkZTskKFdpbmRvd3NTZGtEaXIpaW5jbHVkZTskKEZyYW1ld29ya1NES0RpcilcaW5jbHVk
ZTs8L0luY2x1ZGVQYXRoPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9u
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xX
aW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8
L09wdGltaXphdGlvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFBy
b2plY3REaXIpLy4uOyAkKFByb2plY3REaXIpLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19XSU5ET1dTO19VU1JETEw7TElC
RUdMX0VYUE9SVFM7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05PTUlOTUFYOyUoUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8TWluaW1h
bFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+DQorICAgICAgPEJhc2ljUnVudGltZUNoZWNr
cz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+DQorICAgICAgPFJ1bnRpbWVM
aWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNv
bXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5p
bmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8VHJlYXRXYXJuaW5nQXNFcnJv
cj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9y
bWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8RGlz
YWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7NDUxMjs0
NzAyOzQ5OTY7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5p
bmdzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxE
ZXBlbmRlbmNpZXM+ZDNkOS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25h
bERlcGVuZGVuY2llcz4NCisgICAgICA8TW9kdWxlRGVmaW5pdGlvbkZpbGU+bGliRUdMLmRlZjwv
TW9kdWxlRGVmaW5pdGlvbkZpbGU+DQorICAgICAgPERlbGF5TG9hZERMTHM+JShEZWxheUxvYWRE
TExzKTwvRGVsYXlMb2FkRExMcz4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRy
dWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8
L1N1YlN5c3RlbT4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9E
YXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2
PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICAgIDxQb3N0QnVpbGRFdmVudD4NCisg
ICAgICA8Q29tbWFuZD4lNDBlY2hvIG9uDQorbWtkaXIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJc
JChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIpbGliRUdMLmRsbCIgIiQoUHJvamVj
dERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIpbGliRUdM
LmxpYiIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorJTQwZWNo
byBvZmYNCis8L0NvbW1hbmQ+DQorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+DQorICA8L0l0ZW1EZWZp
bml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4NCisgICAgPENsQ29tcGls
ZT4NCisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+DQorICAgICAg
PElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPkFueVN1aXRhYmxlPC9JbmxpbmVGdW5jdGlvbkV4cGFu
c2lvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIp
Ly4uOyAkKFByb2plY3REaXIpLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+QU5HTEVfRElTQUJMRV9UUkFDRTtXSU4zMjtOREVCVUc7X1dJTkRPV1M7
X1VTUkRMTDtMSUJFR0xfRVhQT1JUUztfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7Tk9NSU5NQVg7
X1NFQ1VSRV9TQ0w9MDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVM
aWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVk
SGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQorICAg
ICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCisgICAg
ICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRp
b25Gb3JtYXQ+DQorICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5
OzQyMzk7NDI0NDs0MjQ1OzQ1MTI7NDcwMjs0OTk2OyUoRGlzYWJsZVNwZWNpZmljV2FybmluZ3Mp
PC9EaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5r
Pg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmQzZDkubGliOyUoQWRkaXRpb25hbERl
cGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPE1vZHVsZURlZmlu
aXRpb25GaWxlPmxpYkVHTC5kZWY8L01vZHVsZURlZmluaXRpb25GaWxlPg0KKyAgICAgIDxEZWxh
eUxvYWRETExzPiUoRGVsYXlMb2FkRExMcyk8L0RlbGF5TG9hZERMTHM+DQorICAgICAgPEdlbmVy
YXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAg
ICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGltaXplUmVmZXJl
bmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRp
bmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZl
bnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8VGFyZ2V0
TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICAgIDxQ
b3N0QnVpbGRFdmVudD4NCisgICAgICA8Q29tbWFuZD4lNDBlY2hvIG9uDQorbWtkaXIgIiQoUHJv
amVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIpbGli
RUdMLmRsbCIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29w
eSAiJChPdXREaXIpbGliRUdMLmxpYiIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1
cmF0aW9uKVwiDQorJTQwZWNobyBvZmYNCis8L0NvbW1hbmQ+DQorICAgIDwvUG9zdEJ1aWxkRXZl
bnQ+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPg0K
KyAgICA8TWlkbD4NCisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9u
bWVudD4NCisgICAgPC9NaWRsPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRp
b24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz4kKFByb2plY3REaXIpLy4uOyAkKFByb2plY3REaXIpLy4uLy4uL2luY2x1ZGU7JShB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19XSU5ET1dT
O19VU1JETEw7TElCRUdMX0VYUE9SVFM7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05PTUlOTUFY
OyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisg
ICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+DQorICAgICAgPEJhc2lj
UnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+DQorICAg
ICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+DQor
ICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQor
ICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8RGlzYWJs
ZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7NDUxMjs0NzAy
OzQ5OTY7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdz
Pg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJ
bmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8VHJlYXRXYXJuaW5nQXNFcnJvcj50cnVlPC9UcmVh
dFdhcm5pbmdBc0Vycm9yPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAg
PEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZDNkOS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVz
KTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8TW9kdWxlRGVmaW5pdGlvbkZpbGU+
bGliRUdMLmRlZjwvTW9kdWxlRGVmaW5pdGlvbkZpbGU+DQorICAgICAgPERlbGF5TG9hZERMTHM+
JShEZWxheUxvYWRETExzKTwvRGVsYXlMb2FkRExMcz4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0lu
Zm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8U3ViU3lz
dGVtPldpbmRvd3M8L1N1YlN5c3RlbT4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+
DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8VGFyZ2V0TWFjaGlu
ZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICAgIDxQb3N0QnVp
bGRFdmVudD4NCisgICAgICA8Q29tbWFuZD4lNDBlY2hvIG9uDQorbWtkaXIgIiQoUHJvamVjdERp
cikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIpbGliRUdMLmRs
bCIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChP
dXREaXIpbGliRUdMLmxpYiIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9u
KVwiDQorJTQwZWNobyBvZmYNCis8L0NvbW1hbmQ+DQorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+DQor
ICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+DQorICAg
IDxNaWRsPg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50
Pg0KKyAgICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5N
YXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5B
bnlTdWl0YWJsZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+DQorICAgICAgPEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS8uLjsgJChQcm9qZWN0RGlyKS8uLi8uLi9p
bmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJV
RztfV0lORE9XUztfVVNSRExMO0xJQkVHTF9FWFBPUlRTO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FU
RTtOT01JTk1BWDtfU0VDVVJFX1NDTD0wOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVw
cm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRl
ZDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwv
UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdM
ZXZlbD4NCisgICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIz
OTs0MjQ0OzQyNDU7NDUxMjs0NzAyOzQ5OTY7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rp
c2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlBy
b2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8VHJlYXRXYXJu
aW5nQXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICA8L0NsQ29tcGlsZT4N
CisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZDNkOS5saWI7JShB
ZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8
TW9kdWxlRGVmaW5pdGlvbkZpbGU+bGliRUdMLmRlZjwvTW9kdWxlRGVmaW5pdGlvbkZpbGU+DQor
ICAgICAgPERlbGF5TG9hZERMTHM+JShEZWxheUxvYWRETExzKTwvRGVsYXlMb2FkRExMcz4NCisg
ICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1h
dGlvbj4NCisgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4NCisgICAgICA8T3B0
aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4NCisgICAgICA8RW5hYmxl
Q09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPg0KKyAgICAgIDxEYXRhRXhl
Y3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAg
ICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+DQorICAgIDwvTGlu
az4NCisgICAgPFBvc3RCdWlsZEV2ZW50Pg0KKyAgICAgIDxDb21tYW5kPiU0MGVjaG8gb24NCitt
a2RpciAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCitjb3B5ICIk
KE91dERpcilsaWJFR0wuZGxsIiAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRp
b24pXCINCitjb3B5ICIkKE91dERpcilsaWJFR0wubGliIiAiJChQcm9qZWN0RGlyKS4uXC4uXGxp
YlwkKENvbmZpZ3VyYXRpb24pXCINCislNDBlY2hvIG9mZg0KKzwvQ29tbWFuZD4NCisgICAgPC9Q
b3N0QnVpbGRFdmVudD4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtR3JvdXA+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iQ29uZmlnLmNwcCIgLz4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxDb21tb25cZGVidWcuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9IkRpc3BsYXkuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImxpYkVHTC5jcHAi
IC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ibWFpbi5jcHAiIC8+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iU3VyZmFjZS5jcHAiIC8+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3Jv
dXA+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQ29uZmlnLmgiIC8+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iRGlzcGxheS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4u
XGluY2x1ZGVcRUdMXGVnbC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXGlu
Y2x1ZGVcRUdMXGVnbGV4dC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXGlu
Y2x1ZGVcRUdMXGVnbHBsYXRmb3JtLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0ibWFp
bi5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlc291cmNlLmgiIC8+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iU3VyZmFjZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGNvbW1vblx2ZXJzaW9uLmgiIC8+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+
DQorICAgIDxOb25lIEluY2x1ZGU9ImxpYkVHTC5kZWYiIC8+DQorICA8L0l0ZW1Hcm91cD4NCisg
IDxJdGVtR3JvdXA+DQorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0ibGliRUdMLnJjIiAv
Pg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8UHJvamVjdFJlZmVyZW5j
ZSBJbmNsdWRlPSIuLlxsaWJHTEVTdjJcbGliR0xFU3YyLnZjeHByb2oiPg0KKyAgICAgIDxQcm9q
ZWN0PntiNTg3MWE3YS05NjhjLTQyZTMtYTMzYi05ODFlNmY0NDhlNzh9PC9Qcm9qZWN0Pg0KKyAg
ICA8L1Byb2plY3RSZWZlcmVuY2U+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJbXBvcnQgUHJvamVj
dD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+DQorICA8SW1wb3J0
R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPg0KKyAgPC9JbXBvcnRHcm91cD4NCis8L1By
b2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkVHTC9saWJFR0wudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGliRUdMLnZjeHByb2ouZmlsdGVy
cwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGli
RUdMLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY4IEBACivvu788
P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KKzxQcm9qZWN0IFRvb2xzVmVy
c2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIv
bXNidWlsZC8yMDAzIj4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291
cmNlIEZpbGVzIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2
LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgICA8RXh0ZW5zaW9u
cz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4N
CisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4NCisg
ICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJF
QkZCfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07
aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+DQorICAgIDwvRmlsdGVyPg0KKyAgPC9JdGVtR3JvdXA+
DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkNvbmZpZy5jcHAiPg0K
KyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXENvbW1vblxkZWJ1Zy5jcHAiPg0KKyAgICAgIDxG
aWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9IkRpc3BsYXkuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxl
czwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJs
aWJFR0wuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8
L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJtYWluLmNwcCI+DQorICAgICAg
PEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iU3VyZmFjZS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRl
bUdyb3VwPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkNvbmZpZy5oIj4NCisgICAgICA8Rmls
dGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJEaXNwbGF5LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9G
aWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4u
XGluY2x1ZGVcRUdMXGVnbC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVy
Pg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNs
dWRlXEVHTFxlZ2xleHQuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5caW5jbHVk
ZVxFR0xcZWdscGxhdGZvcm0uaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRl
cj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0ibWFpbi5oIj4N
CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZXNvdXJjZS5oIj4NCisgICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJTdXJmYWNlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+
DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNvbW1vblx2
ZXJzaW9uLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwv
Q2xJbmNsdWRlPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8UmVzb3Vy
Y2VDb21waWxlIEluY2x1ZGU9ImxpYkVHTC5yYyIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0
ZW1Hcm91cD4NCisgICAgPE5vbmUgSW5jbHVkZT0ibGliRUdMLmRlZiIgLz4NCisgIDwvSXRlbUdy
b3VwPg0KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0J1ZmZlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9CdWZmZXIuY3BwCShyZXZp
c2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0J1
ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgQnVmZmVyOjp+QnVmZmVy
KCkKIHZvaWQgQnVmZmVyOjpidWZmZXJEYXRhKGNvbnN0IHZvaWQgKmRhdGEsIEdMc2l6ZWlwdHIg
c2l6ZSwgR0xlbnVtIHVzYWdlKQogewogICAgIG1CdWZmZXJTdG9yYWdlLT5jbGVhcigpOworICAg
IG1JbmRleFJhbmdlQ2FjaGUuY2xlYXIoKTsKICAgICBtQnVmZmVyU3RvcmFnZS0+c2V0RGF0YShk
YXRhLCBzaXplLCAwKTsKIAogICAgIG1Vc2FnZSA9IHVzYWdlOwpAQCAtNTYsNiArNTcsNyBAQCB2
b2lkIEJ1ZmZlcjo6YnVmZmVyRGF0YShjb25zdCB2b2lkICpkYXRhCiB2b2lkIEJ1ZmZlcjo6YnVm
ZmVyU3ViRGF0YShjb25zdCB2b2lkICpkYXRhLCBHTHNpemVpcHRyIHNpemUsIEdMaW50cHRyIG9m
ZnNldCkKIHsKICAgICBtQnVmZmVyU3RvcmFnZS0+c2V0RGF0YShkYXRhLCBzaXplLCBvZmZzZXQp
OworICAgIG1JbmRleFJhbmdlQ2FjaGUuaW52YWxpZGF0ZVJhbmdlKG9mZnNldCwgc2l6ZSk7CiAK
ICAgICBpZiAoKG1TdGF0aWNWZXJ0ZXhCdWZmZXIgJiYgbVN0YXRpY1ZlcnRleEJ1ZmZlci0+Z2V0
QnVmZmVyU2l6ZSgpICE9IDApIHx8IChtU3RhdGljSW5kZXhCdWZmZXIgJiYgbVN0YXRpY0luZGV4
QnVmZmVyLT5nZXRCdWZmZXJTaXplKCkgIT0gMCkpCiAgICAgewpAQCAtNzAsNyArNzIsNyBAQCBy
eDo6QnVmZmVyU3RvcmFnZSAqQnVmZmVyOjpnZXRTdG9yYWdlKCkgCiAgICAgcmV0dXJuIG1CdWZm
ZXJTdG9yYWdlOwogfQogCi11bnNpZ25lZCBpbnQgQnVmZmVyOjpzaXplKCkKK3Vuc2lnbmVkIGlu
dCBCdWZmZXI6OnNpemUoKSBjb25zdAogewogICAgIHJldHVybiBtQnVmZmVyU3RvcmFnZS0+Z2V0
U2l6ZSgpOwogfQpAQCAtMTE2LDQgKzExOCw5IEBAIHZvaWQgQnVmZmVyOjpwcm9tb3RlU3RhdGlj
VXNhZ2UoaW50IGRhdGEKICAgICB9CiB9CiAKK3J4OjpJbmRleFJhbmdlQ2FjaGUgKkJ1ZmZlcjo6
Z2V0SW5kZXhSYW5nZUNhY2hlKCkKK3sKKyAgICByZXR1cm4gJm1JbmRleFJhbmdlQ2FjaGU7Cit9
CisKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvQnVmZmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9C
dWZmZXIuaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9CdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTMsNiArMTMsNyBAQAogCiAj
aW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKICNpbmNsdWRlICJjb21tb24vUmVmQ291bnRP
YmplY3QuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhSYW5nZUNhY2hlLmgi
CiAKIG5hbWVzcGFjZSByeAogewpAQCAtMzgsMTMgKzM5LDE1IEBAIGNsYXNzIEJ1ZmZlciA6IHB1
YmxpYyBSZWZDb3VudE9iamVjdAogICAgIEdMZW51bSB1c2FnZSgpIGNvbnN0OwogCiAgICAgcng6
OkJ1ZmZlclN0b3JhZ2UgKmdldFN0b3JhZ2UoKSBjb25zdDsKLSAgICB1bnNpZ25lZCBpbnQgc2l6
ZSgpOworICAgIHVuc2lnbmVkIGludCBzaXplKCkgY29uc3Q7CiAKICAgICByeDo6U3RhdGljVmVy
dGV4QnVmZmVySW50ZXJmYWNlICpnZXRTdGF0aWNWZXJ0ZXhCdWZmZXIoKTsKICAgICByeDo6U3Rh
dGljSW5kZXhCdWZmZXJJbnRlcmZhY2UgKmdldFN0YXRpY0luZGV4QnVmZmVyKCk7CiAgICAgdm9p
ZCBpbnZhbGlkYXRlU3RhdGljRGF0YSgpOwogICAgIHZvaWQgcHJvbW90ZVN0YXRpY1VzYWdlKGlu
dCBkYXRhU2l6ZSk7CiAKKyAgICByeDo6SW5kZXhSYW5nZUNhY2hlICpnZXRJbmRleFJhbmdlQ2Fj
aGUoKTsKKwogICBwcml2YXRlOgogICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihCdWZmZXIp
OwogCkBAIC01Myw2ICs1Niw4IEBAIGNsYXNzIEJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudE9iamVj
dAogCiAgICAgcng6OkJ1ZmZlclN0b3JhZ2UgKm1CdWZmZXJTdG9yYWdlOwogCisgICAgcng6Oklu
ZGV4UmFuZ2VDYWNoZSBtSW5kZXhSYW5nZUNhY2hlOworCiAgICAgcng6OlN0YXRpY1ZlcnRleEJ1
ZmZlckludGVyZmFjZSAqbVN0YXRpY1ZlcnRleEJ1ZmZlcjsKICAgICByeDo6U3RhdGljSW5kZXhC
dWZmZXJJbnRlcmZhY2UgKm1TdGF0aWNJbmRleEJ1ZmZlcjsKICAgICB1bnNpZ25lZCBpbnQgbVVu
bW9kaWZpZWREYXRhVXNlOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9Db250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL0NvbnRleHQuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODEyLDYgKzE4MTIsOCBAQCB2b2lkIENvbnRleHQ6OmFwcGx5VGV4dHVyZXMoU2FtcGxlclR5
cGUgCiB7CiAgICAgUHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9IGdldEN1cnJlbnRQcm9n
cmFtQmluYXJ5KCk7CiAKKyAgICBGcmFtZWJ1ZmZlclRleHR1cmVTZXJpYWxTZXQgYm91bmRGcmFt
ZWJ1ZmZlclRleHR1cmVzID0gZ2V0Qm91bmRGcmFtZWJ1ZmZlclRleHR1cmVTZXJpYWxzKCk7CisK
ICAgICAvLyBSYW5nZSBvZiBEaXJlY3QzRCBzYW1wbGVycyBvZiBnaXZlbiBzYW1wbGVyIHR5cGUK
ICAgICBpbnQgc2FtcGxlckNvdW50ID0gKHR5cGUgPT0gU0FNUExFUl9QSVhFTCkgPyBNQVhfVEVY
VFVSRV9JTUFHRV9VTklUUyA6IG1SZW5kZXJlci0+Z2V0TWF4VmVydGV4VGV4dHVyZUltYWdlVW5p
dHMoKTsKICAgICBpbnQgc2FtcGxlclJhbmdlID0gcHJvZ3JhbUJpbmFyeS0+Z2V0VXNlZFNhbXBs
ZXJSYW5nZSh0eXBlKTsKQEAgLTE4MjUsNyArMTgyNyw4IEBAIHZvaWQgQ29udGV4dDo6YXBwbHlU
ZXh0dXJlcyhTYW1wbGVyVHlwZSAKICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRleHR1cmVUeXBl
ID0gcHJvZ3JhbUJpbmFyeS0+Z2V0U2FtcGxlclRleHR1cmVUeXBlKHR5cGUsIHNhbXBsZXJJbmRl
eCk7CiAgICAgICAgICAgICBUZXh0dXJlICp0ZXh0dXJlID0gZ2V0U2FtcGxlclRleHR1cmUodGV4
dHVyZVVuaXQsIHRleHR1cmVUeXBlKTsKIAotICAgICAgICAgICAgaWYgKHRleHR1cmUtPmlzU2Ft
cGxlckNvbXBsZXRlKCkpCisgICAgICAgICAgICBpZiAodGV4dHVyZS0+aXNTYW1wbGVyQ29tcGxl
dGUoKSAmJgorICAgICAgICAgICAgICAgIGJvdW5kRnJhbWVidWZmZXJUZXh0dXJlcy5maW5kKHRl
eHR1cmUtPmdldFRleHR1cmVTZXJpYWwoKSkgPT0gYm91bmRGcmFtZWJ1ZmZlclRleHR1cmVzLmVu
ZCgpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIFNhbXBsZXJTdGF0ZSBzYW1wbGVy
U3RhdGU7CiAgICAgICAgICAgICAgICAgdGV4dHVyZS0+Z2V0U2FtcGxlclN0YXRlKCZzYW1wbGVy
U3RhdGUpOwpAQCAtMjY1NSw2ICsyNjU4LDI5IEBAIGNvbnN0IGNoYXIgKkNvbnRleHQ6OmdldFJl
bmRlcmVyU3RyaW5nKCkKICAgICByZXR1cm4gbVJlbmRlcmVyU3RyaW5nOwogfQogCitDb250ZXh0
OjpGcmFtZWJ1ZmZlclRleHR1cmVTZXJpYWxTZXQgQ29udGV4dDo6Z2V0Qm91bmRGcmFtZWJ1ZmZl
clRleHR1cmVTZXJpYWxzKCkKK3sKKyAgICBGcmFtZWJ1ZmZlclRleHR1cmVTZXJpYWxTZXQgc2V0
OworCisgICAgRnJhbWVidWZmZXIgKmRyYXdGcmFtZWJ1ZmZlciA9IGdldERyYXdGcmFtZWJ1ZmZl
cigpOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgSU1QTEVNRU5UQVRJT05fTUFY
X0RSQVdfQlVGRkVSUzsgaSsrKQorICAgIHsKKyAgICAgICAgUmVuZGVyYnVmZmVyICpyZW5kZXJC
dWZmZXIgPSBkcmF3RnJhbWVidWZmZXItPmdldENvbG9yYnVmZmVyKGkpOworICAgICAgICBpZiAo
cmVuZGVyQnVmZmVyICYmIHJlbmRlckJ1ZmZlci0+Z2V0VGV4dHVyZVNlcmlhbCgpICE9IDApCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHNldC5pbnNlcnQocmVuZGVyQnVmZmVyLT5nZXRUZXh0dXJl
U2VyaWFsKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgUmVuZGVyYnVmZmVyICpkZXB0aFN0
ZW5jaWxCdWZmZXIgPSBkcmF3RnJhbWVidWZmZXItPmdldERlcHRoT3JTdGVuY2lsYnVmZmVyKCk7
CisgICAgaWYgKGRlcHRoU3RlbmNpbEJ1ZmZlciAmJiBkZXB0aFN0ZW5jaWxCdWZmZXItPmdldFRl
eHR1cmVTZXJpYWwoKSAhPSAwKQorICAgIHsKKyAgICAgICAgc2V0Lmluc2VydChkZXB0aFN0ZW5j
aWxCdWZmZXItPmdldFRleHR1cmVTZXJpYWwoKSk7CisgICAgfQorCisgICAgcmV0dXJuIHNldDsK
K30KKwogdm9pZCBDb250ZXh0OjpibGl0RnJhbWVidWZmZXIoR0xpbnQgc3JjWDAsIEdMaW50IHNy
Y1kwLCBHTGludCBzcmNYMSwgR0xpbnQgc3JjWTEsIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgZHN0WDAsIEdMaW50IGRzdFkwLCBHTGludCBkc3RYMSwgR0xpbnQgZHN0WTEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJpdGZpZWxkIG1hc2spCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0NvbnRleHQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0NvbnRleHQuaAkocmV2
aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9D
b250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4LDYgKzE4LDcgQEAKIAogI2luY2x1ZGUgPHN0
cmluZz4KICNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8c2V0PgogI2lmZGVmIF9NU0NfVkVSCiAj
aW5jbHVkZSA8aGFzaF9tYXA+CiAjZWxzZQpAQCAtMzcsNyArMzgsNiBAQCBjbGFzcyBSZW5kZXJl
cjsKIAogbmFtZXNwYWNlIGVnbAogewotY2xhc3MgRGlzcGxheTsKIGNsYXNzIFN1cmZhY2U7CiB9
CiAKQEAgLTM5OCw2ICszOTgsOCBAQCBjbGFzcyBDb250ZXh0CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgZHN0WDAsIEdMaW50IGRzdFkwLCBHTGludCBkc3RYMSwgR0xpbnQgZHN0WTEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBtYXNrKTsKIAorICAgIHJ4OjpS
ZW5kZXJlciAqZ2V0UmVuZGVyZXIoKSB7IHJldHVybiBtUmVuZGVyZXI7IH0KKwogICBwcml2YXRl
OgogICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihDb250ZXh0KTsKIApAQCAtNDE5LDYgKzQy
MSw5IEBAIGNsYXNzIENvbnRleHQKICAgICB2b2lkIGluaXRFeHRlbnNpb25TdHJpbmcoKTsKICAg
ICB2b2lkIGluaXRSZW5kZXJlclN0cmluZygpOwogCisgICAgdHlwZWRlZiBzdGQ6OnNldDx1bnNp
Z25lZD4gRnJhbWVidWZmZXJUZXh0dXJlU2VyaWFsU2V0OworICAgIEZyYW1lYnVmZmVyVGV4dHVy
ZVNlcmlhbFNldCBnZXRCb3VuZEZyYW1lYnVmZmVyVGV4dHVyZVNlcmlhbHMoKTsKKwogICAgIHJ4
OjpSZW5kZXJlciAqY29uc3QgbVJlbmRlcmVyOwogCiAgICAgU3RhdGUgbVN0YXRlOwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvRnJhbWVidWZm
ZXIuaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9GcmFtZWJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw3ICsxMiw3IEBACiAK
ICNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgogI2luY2x1ZGUgImNvbW1vbi9SZWZDb3Vu
dE9iamVjdC5oIgotI2luY2x1ZGUgImNvbnN0YW50cy5oIgorI2luY2x1ZGUgIkNvbnN0YW50cy5o
IgogCiBuYW1lc3BhY2UgcngKIHsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvUHJvZ3JhbUJpbmFyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9Qcm9ncmFtQmluYXJ5LmNwcAkocmV2aXNpb24gMTU5NTMy
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9Qcm9ncmFtQmluYXJ5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsMTEgQEAgc3RkOjpzdHJpbmcgc3RyKGlu
dCBpKQogICAgIHJldHVybiBidWZmZXI7CiB9CiAKK3N0YXRpYyByeDo6RDNEV29ya2Fyb3VuZFR5
cGUgRGlzY2FyZFdvcmthcm91bmQoYm9vbCB1c2VzRGlzY2FyZCkKK3sKKyAgICByZXR1cm4gKHVz
ZXNEaXNjYXJkID8gcng6OkFOR0xFX0QzRF9XT1JLQVJPVU5EX1NNM19PUFRJTUlaRVIgOiByeDo6
QU5HTEVfRDNEX1dPUktBUk9VTkRfTk9ORSk7Cit9CisKIFVuaWZvcm1Mb2NhdGlvbjo6VW5pZm9y
bUxvY2F0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLCB1bnNpZ25lZCBpbnQgZWxlbWVudCwg
dW5zaWduZWQgaW50IGluZGV4KSAKICAgICA6IG5hbWUobmFtZSksIGVsZW1lbnQoZWxlbWVudCks
IGluZGV4KGluZGV4KQogewpAQCAtMTY0Nyw2ICsxNjUyLDggQEAgYm9vbCBQcm9ncmFtQmluYXJ5
Ojpsb2FkKEluZm9Mb2cgJmluZm9MbwogICAgICAgICBzdHJlYW0ucmVhZCgmbVNlbWFudGljSW5k
ZXhbaV0pOwogICAgIH0KIAorICAgIGluaXRBdHRyaWJ1dGVzQnlMYXlvdXQoKTsKKwogICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFM7ICsraSkK
ICAgICB7CiAgICAgICAgIHN0cmVhbS5yZWFkKCZtU2FtcGxlcnNQU1tpXS5hY3RpdmUpOwpAQCAt
MTk2MCwxMyArMTk2NywxMyBAQCBib29sIFByb2dyYW1CaW5hcnk6OmxpbmsoSW5mb0xvZyAmaW5m
b0xvCiAKICAgICBpZiAoc3VjY2VzcykKICAgICB7Ci0gICAgICAgIG1WZXJ0ZXhFeGVjdXRhYmxl
ID0gbVJlbmRlcmVyLT5jb21waWxlVG9FeGVjdXRhYmxlKGluZm9Mb2csIHZlcnRleEhMU0wuY19z
dHIoKSwgcng6OlNIQURFUl9WRVJURVgpOwotICAgICAgICBtUGl4ZWxFeGVjdXRhYmxlID0gbVJl
bmRlcmVyLT5jb21waWxlVG9FeGVjdXRhYmxlKGluZm9Mb2csIHBpeGVsSExTTC5jX3N0cigpLCBy
eDo6U0hBREVSX1BJWEVMKTsKKyAgICAgICAgbVZlcnRleEV4ZWN1dGFibGUgPSBtUmVuZGVyZXIt
PmNvbXBpbGVUb0V4ZWN1dGFibGUoaW5mb0xvZywgdmVydGV4SExTTC5jX3N0cigpLCByeDo6U0hB
REVSX1ZFUlRFWCwgRGlzY2FyZFdvcmthcm91bmQodmVydGV4U2hhZGVyLT5tVXNlc0Rpc2NhcmRS
ZXdyaXRpbmcpKTsKKyAgICAgICAgbVBpeGVsRXhlY3V0YWJsZSA9IG1SZW5kZXJlci0+Y29tcGls
ZVRvRXhlY3V0YWJsZShpbmZvTG9nLCBwaXhlbEhMU0wuY19zdHIoKSwgcng6OlNIQURFUl9QSVhF
TCwgRGlzY2FyZFdvcmthcm91bmQoZnJhZ21lbnRTaGFkZXItPm1Vc2VzRGlzY2FyZFJld3JpdGlu
ZykpOwogCiAgICAgICAgIGlmICh1c2VzR2VvbWV0cnlTaGFkZXIoKSkKICAgICAgICAgewogICAg
ICAgICAgICAgc3RkOjpzdHJpbmcgZ2VvbWV0cnlITFNMID0gZ2VuZXJhdGVHZW9tZXRyeVNoYWRl
ckhMU0wocmVnaXN0ZXJzLCBwYWNraW5nLCBmcmFnbWVudFNoYWRlciwgdmVydGV4U2hhZGVyKTsK
LSAgICAgICAgICAgIG1HZW9tZXRyeUV4ZWN1dGFibGUgPSBtUmVuZGVyZXItPmNvbXBpbGVUb0V4
ZWN1dGFibGUoaW5mb0xvZywgZ2VvbWV0cnlITFNMLmNfc3RyKCksIHJ4OjpTSEFERVJfR0VPTUVU
UlkpOworICAgICAgICAgICAgbUdlb21ldHJ5RXhlY3V0YWJsZSA9IG1SZW5kZXJlci0+Y29tcGls
ZVRvRXhlY3V0YWJsZShpbmZvTG9nLCBnZW9tZXRyeUhMU0wuY19zdHIoKSwgcng6OlNIQURFUl9H
RU9NRVRSWSwgcng6OkFOR0xFX0QzRF9XT1JLQVJPVU5EX05PTkUpOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKCFtVmVydGV4RXhlY3V0YWJsZSB8fCAhbVBpeGVsRXhlY3V0YWJsZSB8fCAodXNl
c0dlb21ldHJ5U2hhZGVyKCkgJiYgIW1HZW9tZXRyeUV4ZWN1dGFibGUpKQpAQCAtMjA1Myw2ICsy
MDYwLDggQEAgYm9vbCBQcm9ncmFtQmluYXJ5OjpsaW5rQXR0cmlidXRlcyhJbmZvTAogICAgICAg
ICB9CiAgICAgfQogCisgICAgaW5pdEF0dHJpYnV0ZXNCeUxheW91dCgpOworCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTI1NzksMTIgKzI1ODgsNiBAQCBzdHJ1Y3QgQXR0cmlidXRlU29ydGVy
CiAgICAgQXR0cmlidXRlU29ydGVyKGNvbnN0IGludCAoJnNlbWFudGljSW5kaWNlcylbTUFYX1ZF
UlRFWF9BVFRSSUJTXSkKICAgICAgICAgOiBvcmlnaW5hbEluZGljZXMoc2VtYW50aWNJbmRpY2Vz
KQogICAgIHsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNQVhfVkVSVEVYX0FUVFJJQlM7
IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgaW5kaWNlc1tpXSA9IGk7Ci0gICAgICAgIH0K
LQotICAgICAgICBzdGQ6OnNvcnQoJmluZGljZXNbMF0sICZpbmRpY2VzW01BWF9WRVJURVhfQVRU
UklCU10sICp0aGlzKTsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9yKCkoaW50IGEsIGludCBi
KQpAQCAtMjU5MiwyNyArMjU5NSwzMiBAQCBzdHJ1Y3QgQXR0cmlidXRlU29ydGVyCiAgICAgICAg
IHJldHVybiBvcmlnaW5hbEluZGljZXNbYV0gPT0gLTEgPyBmYWxzZSA6IG9yaWdpbmFsSW5kaWNl
c1thXSA8IG9yaWdpbmFsSW5kaWNlc1tiXTsKICAgICB9CiAKLSAgICBpbnQgaW5kaWNlc1tNQVhf
VkVSVEVYX0FUVFJJQlNdOwogICAgIGNvbnN0IGludCAoJm9yaWdpbmFsSW5kaWNlcylbTUFYX1ZF
UlRFWF9BVFRSSUJTXTsKIH07CiAKLXZvaWQgUHJvZ3JhbUJpbmFyeTo6c29ydEF0dHJpYnV0ZXNC
eUxheW91dChyeDo6VHJhbnNsYXRlZEF0dHJpYnV0ZSBhdHRyaWJ1dGVzW01BWF9WRVJURVhfQVRU
UklCU10sIGludCBzb3J0ZWRTZW1hbnRpY0luZGljZXNbTUFYX1ZFUlRFWF9BVFRSSUJTXSkgY29u
c3QKK3ZvaWQgUHJvZ3JhbUJpbmFyeTo6aW5pdEF0dHJpYnV0ZXNCeUxheW91dCgpCiB7Ci0gICAg
QXR0cmlidXRlU29ydGVyIHNvcnRlcihtU2VtYW50aWNJbmRleCk7CisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKKyAgICB7CisgICAgICAgIG1BdHRyaWJ1
dGVzQnlMYXlvdXRbaV0gPSBpOworICAgIH0KIAotICAgIGludCBvbGRJbmRpY2VzW01BWF9WRVJU
RVhfQVRUUklCU107CisgICAgc3RkOjpzb3J0KCZtQXR0cmlidXRlc0J5TGF5b3V0WzBdLCAmbUF0
dHJpYnV0ZXNCeUxheW91dFtNQVhfVkVSVEVYX0FUVFJJQlNdLCBBdHRyaWJ1dGVTb3J0ZXIobVNl
bWFudGljSW5kZXgpKTsKK30KKwordm9pZCBQcm9ncmFtQmluYXJ5Ojpzb3J0QXR0cmlidXRlc0J5
TGF5b3V0KHJ4OjpUcmFuc2xhdGVkQXR0cmlidXRlIGF0dHJpYnV0ZXNbTUFYX1ZFUlRFWF9BVFRS
SUJTXSwgaW50IHNvcnRlZFNlbWFudGljSW5kaWNlc1tNQVhfVkVSVEVYX0FUVFJJQlNdKSBjb25z
dAorewogICAgIHJ4OjpUcmFuc2xhdGVkQXR0cmlidXRlIG9sZFRyYW5zbGF0ZWRBdHRyaWJ1dGVz
W01BWF9WRVJURVhfQVRUUklCU107CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IE1BWF9WRVJU
RVhfQVRUUklCUzsgaSsrKQogICAgIHsKLSAgICAgICAgb2xkSW5kaWNlc1tpXSA9IG1TZW1hbnRp
Y0luZGV4W2ldOwogICAgICAgICBvbGRUcmFuc2xhdGVkQXR0cmlidXRlc1tpXSA9IGF0dHJpYnV0
ZXNbaV07CiAgICAgfQogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNQVhfVkVSVEVYX0FUVFJJ
QlM7IGkrKykKICAgICB7Ci0gICAgICAgIGludCBvbGRJbmRleCA9IHNvcnRlci5pbmRpY2VzW2ld
OwotICAgICAgICBzb3J0ZWRTZW1hbnRpY0luZGljZXNbaV0gPSBvbGRJbmRpY2VzW29sZEluZGV4
XTsKKyAgICAgICAgaW50IG9sZEluZGV4ID0gbUF0dHJpYnV0ZXNCeUxheW91dFtpXTsKKyAgICAg
ICAgc29ydGVkU2VtYW50aWNJbmRpY2VzW2ldID0gbVNlbWFudGljSW5kZXhbb2xkSW5kZXhdOwog
ICAgICAgICBhdHRyaWJ1dGVzW2ldID0gb2xkVHJhbnNsYXRlZEF0dHJpYnV0ZXNbb2xkSW5kZXhd
OwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
UHJvZ3JhbUJpbmFyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvUHJvZ3JhbUJpbmFyeS5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuaAkod29ya2luZyBj
b3B5KQpAQCAtMTE0LDYgKzExNCw3IEBAIGNsYXNzIFByb2dyYW1CaW5hcnkgOiBwdWJsaWMgUmVm
Q291bnRPYmoKIAogICAgIHVuc2lnbmVkIGludCBnZXRTZXJpYWwoKSBjb25zdDsKIAorICAgIHZv
aWQgaW5pdEF0dHJpYnV0ZXNCeUxheW91dCgpOwogICAgIHZvaWQgc29ydEF0dHJpYnV0ZXNCeUxh
eW91dChyeDo6VHJhbnNsYXRlZEF0dHJpYnV0ZSBhdHRyaWJ1dGVzW2dsOjpNQVhfVkVSVEVYX0FU
VFJJQlNdLCBpbnQgc29ydGVkU2VtYW50aWNJbmRpY2VzW01BWF9WRVJURVhfQVRUUklCU10pIGNv
bnN0OwogCiAgICAgc3RhdGljIHN0ZDo6c3RyaW5nIGRlY29yYXRlQXR0cmlidXRlKGNvbnN0IHN0
ZDo6c3RyaW5nICZuYW1lKTsgICAgLy8gUHJlcGVuZCBhbiB1bmRlcnNjb3JlCkBAIC0xNDIsNiAr
MTQzLDcgQEAgY2xhc3MgUHJvZ3JhbUJpbmFyeSA6IHB1YmxpYyBSZWZDb3VudE9iagogCiAgICAg
QXR0cmlidXRlIG1MaW5rZWRBdHRyaWJ1dGVbTUFYX1ZFUlRFWF9BVFRSSUJTXTsKICAgICBpbnQg
bVNlbWFudGljSW5kZXhbTUFYX1ZFUlRFWF9BVFRSSUJTXTsKKyAgICBpbnQgbUF0dHJpYnV0ZXNC
eUxheW91dFtNQVhfVkVSVEVYX0FUVFJJQlNdOwogCiAgICAgc3RydWN0IFNhbXBsZXIKICAgICB7
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1JlbmRlcmJ1ZmZl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9SZW5kZXJidWZmZXIuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyOSw2ICsxMjksMTEgQEAgdW5zaWduZWQgaW50IFJlbmRlcmJ1ZmZlclRleHR1cmUyRDo6Z2V0
UwogICAgIHJldHVybiBtVGV4dHVyZTJELT5nZXRSZW5kZXJUYXJnZXRTZXJpYWwobVRhcmdldCk7
CiB9CiAKK3Vuc2lnbmVkIGludCBSZW5kZXJidWZmZXJUZXh0dXJlMkQ6OmdldFRleHR1cmVTZXJp
YWwoKSBjb25zdAoreworICAgIHJldHVybiBtVGV4dHVyZTJELT5nZXRUZXh0dXJlU2VyaWFsKCk7
Cit9CisKIC8vLy8vIFJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwIEltcGxlbWVudGF0aW9uIC8v
Ly8vLy8vCiAKIFJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwOjpSZW5kZXJidWZmZXJUZXh0dXJl
Q3ViZU1hcChUZXh0dXJlQ3ViZU1hcCAqdGV4dHVyZSwgR0xlbnVtIHRhcmdldCkgOiBtVGFyZ2V0
KHRhcmdldCkKQEAgLTE5Myw2ICsxOTgsMTEgQEAgdW5zaWduZWQgaW50IFJlbmRlcmJ1ZmZlclRl
eHR1cmVDdWJlTWFwOgogICAgIHJldHVybiBtVGV4dHVyZUN1YmVNYXAtPmdldFJlbmRlclRhcmdl
dFNlcmlhbChtVGFyZ2V0KTsKIH0KIAordW5zaWduZWQgaW50IFJlbmRlcmJ1ZmZlclRleHR1cmVD
dWJlTWFwOjpnZXRUZXh0dXJlU2VyaWFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVRleHR1cmVD
dWJlTWFwLT5nZXRUZXh0dXJlU2VyaWFsKCk7Cit9CisKIC8vLy8vLyBSZW5kZXJidWZmZXIgSW1w
bGVtZW50YXRpb24gLy8vLy8vCiAKIFJlbmRlcmJ1ZmZlcjo6UmVuZGVyYnVmZmVyKHJ4OjpSZW5k
ZXJlciAqcmVuZGVyZXIsIEdMdWludCBpZCwgUmVuZGVyYnVmZmVySW50ZXJmYWNlICppbnN0YW5j
ZSkgOiBSZWZDb3VudE9iamVjdChpZCkKQEAgLTI5Miw2ICszMDIsMTEgQEAgdW5zaWduZWQgaW50
IFJlbmRlcmJ1ZmZlcjo6Z2V0U2VyaWFsKCkgYwogICAgIHJldHVybiBtSW5zdGFuY2UtPmdldFNl
cmlhbCgpOwogfQogCit1bnNpZ25lZCBpbnQgUmVuZGVyYnVmZmVyOjpnZXRUZXh0dXJlU2VyaWFs
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUluc3RhbmNlLT5nZXRUZXh0dXJlU2VyaWFsKCk7Cit9
CisKIHZvaWQgUmVuZGVyYnVmZmVyOjpzZXRTdG9yYWdlKFJlbmRlcmJ1ZmZlclN0b3JhZ2UgKm5l
d1N0b3JhZ2UpCiB7CiAgICAgQVNTRVJUKG5ld1N0b3JhZ2UgIT0gTlVMTCk7CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUmVuZGVyYnVmZmVy
LmgJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvUmVuZGVyYnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDcgQEAgY2xh
c3MgUmVuZGVyYnVmZmVySW50ZXJmYWNlCiAgICAgR0x1aW50IGdldFN0ZW5jaWxTaXplKCkgY29u
c3Q7CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRTZXJpYWwoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0VGV4dHVyZVNlcmlhbCgpIGNvbnN0ID0gMDsKIAog
ICBwcml2YXRlOgogICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihSZW5kZXJidWZmZXJJbnRl
cmZhY2UpOwpAQCAtODUsNiArODYsNyBAQCBjbGFzcyBSZW5kZXJidWZmZXJUZXh0dXJlMkQgOiBw
dWJsaWMgUmVuCiAgICAgdmlydHVhbCBHTHNpemVpIGdldFNhbXBsZXMoKSBjb25zdDsKIAogICAg
IHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFNlcmlhbCgpIGNvbnN0OworICAgIHZpcnR1YWwgdW5z
aWduZWQgaW50IGdldFRleHR1cmVTZXJpYWwoKSBjb25zdDsKIAogICBwcml2YXRlOgogICAgIERJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTihSZW5kZXJidWZmZXJUZXh0dXJlMkQpOwpAQCAtMTEzLDYg
KzExNSw3IEBAIGNsYXNzIFJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwIDogcHVibGkKICAgICB2
aXJ0dWFsIEdMc2l6ZWkgZ2V0U2FtcGxlcygpIGNvbnN0OwogCiAgICAgdmlydHVhbCB1bnNpZ25l
ZCBpbnQgZ2V0U2VyaWFsKCkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0VGV4
dHVyZVNlcmlhbCgpIGNvbnN0OwogCiAgIHByaXZhdGU6CiAgICAgRElTQUxMT1dfQ09QWV9BTkRf
QVNTSUdOKFJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwKTsKQEAgLTE0MSw2ICsxNDQsNyBAQCBj
bGFzcyBSZW5kZXJidWZmZXJTdG9yYWdlIDogcHVibGljIFJlbmRlCiAgICAgdmlydHVhbCBHTHNp
emVpIGdldFNhbXBsZXMoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFNl
cmlhbCgpIGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFRleHR1cmVTZXJpYWwo
KSBjb25zdCB7IHJldHVybiAwOyB9CiAKICAgICBzdGF0aWMgdW5zaWduZWQgaW50IGlzc3VlU2Vy
aWFsKCk7CiAgICAgc3RhdGljIHVuc2lnbmVkIGludCBpc3N1ZUN1YmVTZXJpYWxzKCk7CkBAIC0x
OTMsNiArMTk3LDcgQEAgY2xhc3MgUmVuZGVyYnVmZmVyIDogcHVibGljIFJlZkNvdW50T2JqZQog
ICAgIEdMc2l6ZWkgZ2V0U2FtcGxlcygpIGNvbnN0OwogCiAgICAgdW5zaWduZWQgaW50IGdldFNl
cmlhbCgpIGNvbnN0OworICAgIHVuc2lnbmVkIGludCBnZXRUZXh0dXJlU2VyaWFsKCkgY29uc3Q7
CiAKICAgICB2b2lkIHNldFN0b3JhZ2UoUmVuZGVyYnVmZmVyU3RvcmFnZSAqbmV3U3RvcmFnZSk7
CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvU2hhZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1No
YWRlci5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvU2hhZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA3LDYgKzMwNyw3IEBA
IHZvaWQgU2hhZGVyOjpwYXJzZVZhcnlpbmdzKCkKICAgICAgICAgbVVzZXNQb2ludENvb3JkID0g
c3Ryc3RyKG1IbHNsLCAiR0xfVVNFU19QT0lOVF9DT09SRCIpICE9IE5VTEw7CiAgICAgICAgIG1V
c2VzRGVwdGhSYW5nZSA9IHN0cnN0cihtSGxzbCwgIkdMX1VTRVNfREVQVEhfUkFOR0UiKSAhPSBO
VUxMOwogICAgICAgICBtVXNlc0ZyYWdEZXB0aCA9IHN0cnN0cihtSGxzbCwgIkdMX1VTRVNfRlJB
R19ERVBUSCIpICE9IE5VTEw7CisgICAgICAgIG1Vc2VzRGlzY2FyZFJld3JpdGluZyA9IHN0cnN0
cihtSGxzbCwgIkFOR0xFX1VTRVNfRElTQ0FSRF9SRVdSSVRJTkciKSAhPSBOVUxMOwogICAgIH0K
IH0KIApAQCAtMzQwLDYgKzM0MSw3IEBAIHZvaWQgU2hhZGVyOjp1bmNvbXBpbGUoKQogICAgIG1V
c2VzUG9pbnRDb29yZCA9IGZhbHNlOwogICAgIG1Vc2VzRGVwdGhSYW5nZSA9IGZhbHNlOwogICAg
IG1Vc2VzRnJhZ0RlcHRoID0gZmFsc2U7CisgICAgbVVzZXNEaXNjYXJkUmV3cml0aW5nID0gZmFs
c2U7CiAKICAgICBtQWN0aXZlVW5pZm9ybXMuY2xlYXIoKTsKIH0KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvU2hhZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9TaGFkZXIuaAkocmV2aXNpb24gMTU5NTMy
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9TaGFkZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMTA3LDYgKzEwNyw3IEBAIGNsYXNzIFNoYWRlcgogICAgIGJvb2wgbVVz
ZXNQb2ludENvb3JkOwogICAgIGJvb2wgbVVzZXNEZXB0aFJhbmdlOwogICAgIGJvb2wgbVVzZXNG
cmFnRGVwdGg7CisgICAgYm9vbCBtVXNlc0Rpc2NhcmRSZXdyaXRpbmc7CiAKICAgICBzdGF0aWMg
dm9pZCAqbUZyYWdtZW50Q29tcGlsZXI7CiAgICAgc3RhdGljIHZvaWQgKm1WZXJ0ZXhDb21waWxl
cjsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVGV4dHVyZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9U
ZXh0dXJlLmNwcAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9UZXh0dXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM1OCwxMCArMTM1
OCwxMCBAQCB2b2lkIFRleHR1cmVDdWJlTWFwOjpzdG9yYWdlKEdMc2l6ZWkgbGV2CiAKICAgICBm
b3IgKGludCBsZXZlbCA9IDA7IGxldmVsIDwgbGV2ZWxzOyBsZXZlbCsrKQogICAgIHsKKyAgICAg
ICAgR0xzaXplaSBtaXBTaXplID0gc3RkOjptYXgoMSwgc2l6ZSA+PiBsZXZlbCk7CiAgICAgICAg
IGZvciAoaW50IGZhY2UgPSAwOyBmYWNlIDwgNjsgZmFjZSsrKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBtSW1hZ2VBcnJheVtmYWNlXVtsZXZlbF0tPnJlZGVmaW5lKG1SZW5kZXJlciwgaW50ZXJu
YWxmb3JtYXQsIHNpemUsIHNpemUsIHRydWUpOwotICAgICAgICAgICAgc2l6ZSA9IHN0ZDo6bWF4
KDEsIHNpemUgPj4gMSk7CisgICAgICAgICAgICBtSW1hZ2VBcnJheVtmYWNlXVtsZXZlbF0tPnJl
ZGVmaW5lKG1SZW5kZXJlciwgaW50ZXJuYWxmb3JtYXQsIG1pcFNpemUsIG1pcFNpemUsIHRydWUp
OwogICAgICAgICB9CiAgICAgfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL1VuaWZvcm0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvVW5pZm9ybS5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVW5pZm9ybS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNDMgKzEsNDMgQEAKICNpbmNsdWRlICJwcmVjb21waWxlZC5oIgotLy8NCi0vLyBD
b3B5cmlnaHQgKGMpIDIwMTAtMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLg0KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLg0KLS8vDQotDQotI2luY2x1ZGUgImxpYkdMRVN2Mi9Vbmlmb3JtLmgiDQotDQotI2lu
Y2x1ZGUgImxpYkdMRVN2Mi91dGlsaXRpZXMuaCINCi0NCi1uYW1lc3BhY2UgZ2wNCi17DQotDQot
VW5pZm9ybTo6VW5pZm9ybShHTGVudW0gdHlwZSwgR0xlbnVtIHByZWNpc2lvbiwgY29uc3Qgc3Rk
OjpzdHJpbmcgJm5hbWUsIHVuc2lnbmVkIGludCBhcnJheVNpemUpDQotICAgIDogdHlwZSh0eXBl
KSwgcHJlY2lzaW9uKHByZWNpc2lvbiksIG5hbWUobmFtZSksIGFycmF5U2l6ZShhcnJheVNpemUp
DQotew0KLSAgICBpbnQgYnl0ZXMgPSBnbDo6VW5pZm9ybUludGVybmFsU2l6ZSh0eXBlKSAqIGVs
ZW1lbnRDb3VudCgpOw0KLSAgICBkYXRhID0gbmV3IHVuc2lnbmVkIGNoYXJbYnl0ZXNdOw0KLSAg
ICBtZW1zZXQoZGF0YSwgMCwgYnl0ZXMpOw0KLSAgICBkaXJ0eSA9IHRydWU7DQotDQotICAgIHBz
UmVnaXN0ZXJJbmRleCA9IC0xOw0KLSAgICB2c1JlZ2lzdGVySW5kZXggPSAtMTsNCi0gICAgcmVn
aXN0ZXJDb3VudCA9IFZhcmlhYmxlUm93Q291bnQodHlwZSkgKiBlbGVtZW50Q291bnQoKTsNCi19
DQotDQotVW5pZm9ybTo6flVuaWZvcm0oKQ0KLXsNCi0gICAgZGVsZXRlW10gZGF0YTsNCi19DQot
DQotYm9vbCBVbmlmb3JtOjppc0FycmF5KCkgY29uc3QNCi17DQotICAgIHJldHVybiBhcnJheVNp
emUgPiAwOw0KLX0NCi0NCi11bnNpZ25lZCBpbnQgVW5pZm9ybTo6ZWxlbWVudENvdW50KCkgY29u
c3QNCi17DQotICAgIHJldHVybiBhcnJheVNpemUgPiAwID8gYXJyYXlTaXplIDogMTsNCi19DQot
DQotfQ0KKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvVW5pZm9ybS5o
IgorCisjaW5jbHVkZSAibGliR0xFU3YyL3V0aWxpdGllcy5oIgorCituYW1lc3BhY2UgZ2wKK3sK
KworVW5pZm9ybTo6VW5pZm9ybShHTGVudW0gdHlwZSwgR0xlbnVtIHByZWNpc2lvbiwgY29uc3Qg
c3RkOjpzdHJpbmcgJm5hbWUsIHVuc2lnbmVkIGludCBhcnJheVNpemUpCisgICAgOiB0eXBlKHR5
cGUpLCBwcmVjaXNpb24ocHJlY2lzaW9uKSwgbmFtZShuYW1lKSwgYXJyYXlTaXplKGFycmF5U2l6
ZSkKK3sKKyAgICBpbnQgYnl0ZXMgPSBnbDo6VW5pZm9ybUludGVybmFsU2l6ZSh0eXBlKSAqIGVs
ZW1lbnRDb3VudCgpOworICAgIGRhdGEgPSBuZXcgdW5zaWduZWQgY2hhcltieXRlc107CisgICAg
bWVtc2V0KGRhdGEsIDAsIGJ5dGVzKTsKKyAgICBkaXJ0eSA9IHRydWU7CisKKyAgICBwc1JlZ2lz
dGVySW5kZXggPSAtMTsKKyAgICB2c1JlZ2lzdGVySW5kZXggPSAtMTsKKyAgICByZWdpc3RlckNv
dW50ID0gVmFyaWFibGVSb3dDb3VudCh0eXBlKSAqIGVsZW1lbnRDb3VudCgpOworfQorCitVbmlm
b3JtOjp+VW5pZm9ybSgpCit7CisgICAgZGVsZXRlW10gZGF0YTsKK30KKworYm9vbCBVbmlmb3Jt
Ojppc0FycmF5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gYXJyYXlTaXplID4gMDsKK30KKwordW5z
aWduZWQgaW50IFVuaWZvcm06OmVsZW1lbnRDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFy
cmF5U2l6ZSA+IDAgPyBhcnJheVNpemUgOiAxOworfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1VuaWZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1VuaWZvcm0uaAkocmV2aXNpb24gMTU5NTMy
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9Vbmlmb3JtLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNDggKzEsNDggQEAKLS8vDQotLy8gQ29weXJpZ2h0IChjKSAyMDEw
LTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0v
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlDQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCi0vLw0KLQ0K
LSNpZm5kZWYgTElCR0xFU1YyX1VOSUZPUk1fSF8NCi0jZGVmaW5lIExJQkdMRVNWMl9VTklGT1JN
X0hfDQotDQotI2luY2x1ZGUgPHN0cmluZz4NCi0jaW5jbHVkZSA8dmVjdG9yPg0KLQ0KLSNkZWZp
bmUgR0xfQVBJQ0FMTA0KLSNpbmNsdWRlIDxHTEVTMi9nbDIuaD4NCi0NCi0jaW5jbHVkZSAiY29t
bW9uL2RlYnVnLmgiDQotDQotbmFtZXNwYWNlIGdsDQotew0KLQ0KLS8vIEhlbHBlciBzdHJ1Y3Qg
cmVwcmVzZW50aW5nIGEgc2luZ2xlIHNoYWRlciB1bmlmb3JtDQotc3RydWN0IFVuaWZvcm0NCi17
DQotICAgIFVuaWZvcm0oR0xlbnVtIHR5cGUsIEdMZW51bSBwcmVjaXNpb24sIGNvbnN0IHN0ZDo6
c3RyaW5nICZuYW1lLCB1bnNpZ25lZCBpbnQgYXJyYXlTaXplKTsNCi0NCi0gICAgflVuaWZvcm0o
KTsNCi0NCi0gICAgYm9vbCBpc0FycmF5KCkgY29uc3Q7DQotICAgIHVuc2lnbmVkIGludCBlbGVt
ZW50Q291bnQoKSBjb25zdDsNCi0NCi0gICAgY29uc3QgR0xlbnVtIHR5cGU7DQotICAgIGNvbnN0
IEdMZW51bSBwcmVjaXNpb247DQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIG5hbWU7DQotICAgIGNv
bnN0IHVuc2lnbmVkIGludCBhcnJheVNpemU7DQotDQotICAgIHVuc2lnbmVkIGNoYXIgKmRhdGE7
DQotICAgIGJvb2wgZGlydHk7DQotDQotICAgIGludCBwc1JlZ2lzdGVySW5kZXg7DQotICAgIGlu
dCB2c1JlZ2lzdGVySW5kZXg7DQotICAgIHVuc2lnbmVkIGludCByZWdpc3RlckNvdW50Ow0KLX07
DQotDQotdHlwZWRlZiBzdGQ6OnZlY3RvcjxVbmlmb3JtKj4gVW5pZm9ybUFycmF5Ow0KLQ0KLX0N
Ci0NCi0jZW5kaWYgICAvLyBMSUJHTEVTVjJfVU5JRk9STV9IXw0KKy8vCisvLyBDb3B5cmlnaHQg
KGMpIDIwMTAtMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8v
CisKKyNpZm5kZWYgTElCR0xFU1YyX1VOSUZPUk1fSF8KKyNkZWZpbmUgTElCR0xFU1YyX1VOSUZP
Uk1fSF8KKworI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNkZWZpbmUg
R0xfQVBJQ0FMTAorI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgorCisjaW5jbHVkZSAiY29tbW9uL2Rl
YnVnLmgiCisKK25hbWVzcGFjZSBnbAoreworCisvLyBIZWxwZXIgc3RydWN0IHJlcHJlc2VudGlu
ZyBhIHNpbmdsZSBzaGFkZXIgdW5pZm9ybQorc3RydWN0IFVuaWZvcm0KK3sKKyAgICBVbmlmb3Jt
KEdMZW51bSB0eXBlLCBHTGVudW0gcHJlY2lzaW9uLCBjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwg
dW5zaWduZWQgaW50IGFycmF5U2l6ZSk7CisKKyAgICB+VW5pZm9ybSgpOworCisgICAgYm9vbCBp
c0FycmF5KCkgY29uc3Q7CisgICAgdW5zaWduZWQgaW50IGVsZW1lbnRDb3VudCgpIGNvbnN0Owor
CisgICAgY29uc3QgR0xlbnVtIHR5cGU7CisgICAgY29uc3QgR0xlbnVtIHByZWNpc2lvbjsKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyBuYW1lOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBhcnJheVNp
emU7CisKKyAgICB1bnNpZ25lZCBjaGFyICpkYXRhOworICAgIGJvb2wgZGlydHk7CisKKyAgICBp
bnQgcHNSZWdpc3RlckluZGV4OworICAgIGludCB2c1JlZ2lzdGVySW5kZXg7CisgICAgdW5zaWdu
ZWQgaW50IHJlZ2lzdGVyQ291bnQ7Cit9OworCit0eXBlZGVmIHN0ZDo6dmVjdG9yPFVuaWZvcm0q
PiBVbmlmb3JtQXJyYXk7CisKK30KKworI2VuZGlmICAgLy8gTElCR0xFU1YyX1VOSUZPUk1fSF8K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvY29uc3RhbnRzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9jb25z
dGFudHMuaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9jb25zdGFudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSwzNCArMCwwIEBACi0v
LwotLy8gQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgotLy8KLQotLy8gQ29udGFudHMuaDogRGVmaW5lcyBzb21lIGltcGxlbWVudGF0aW9u
IHNwZWNpZmljIGFuZCBnbCBjb25zdGFudHMKLQotI2lmbmRlZiBMSUJHTEVTVjJfQ09OU1RBTlRT
X0hfCi0jZGVmaW5lIExJQkdMRVNWMl9DT05TVEFOVFNfSF8KLQotbmFtZXNwYWNlIGdsCi17Ci0K
LWVudW0KLXsKLSAgICBNQVhfVkVSVEVYX0FUVFJJQlMgPSAxNiwKLSAgICBNQVhfVEVYVFVSRV9J
TUFHRV9VTklUUyA9IDE2LAotCi0gICAgLy8gSW1wbGVtZW50YXRpb24gdXBwZXIgbGltaXRzLCBy
ZWFsIG1heGltdW1zIGRlcGVuZCBvbiB0aGUgaGFyZHdhcmUKLSAgICBJTVBMRU1FTlRBVElPTl9N
QVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMgPSAxNiwKLSAgICBJTVBMRU1FTlRBVElPTl9N
QVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUyA9IE1BWF9URVhUVVJFX0lNQUdFX1VOSVRT
ICsgSU1QTEVNRU5UQVRJT05fTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTLCAgICAKLQot
ICAgIElNUExFTUVOVEFUSU9OX01BWF9WQVJZSU5HX1ZFQ1RPUlMgPSAzMiwKLSAgICBJTVBMRU1F
TlRBVElPTl9NQVhfRFJBV19CVUZGRVJTID0gOAotfTsKLQotY29uc3QgZmxvYXQgQUxJQVNFRF9M
SU5FX1dJRFRIX1JBTkdFX01JTiA9IDEuMGY7Ci1jb25zdCBmbG9hdCBBTElBU0VEX0xJTkVfV0lE
VEhfUkFOR0VfTUFYID0gMS4wZjsKLWNvbnN0IGZsb2F0IEFMSUFTRURfUE9JTlRfU0laRV9SQU5H
RV9NSU4gPSAxLjBmOwotCi19Ci0KLSNlbmRpZiAvLyBMSUJHTEVTVjJfQ09OU1RBTlRTX0hfCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5kZWYK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJH
TEVTdjIuZGVmCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTE4Miw0ICsxODIs
NyBAQCBFWFBPUlRTCiAgICAgZ2xHZXRQcm9jQWRkcmVzcyAgICAgICAgICAgICAgICBAMTQ4IE5P
TkFNRQogICAgIGdsQmluZFRleEltYWdlICAgICAgICAgICAgICAgICAgQDE1OCBOT05BTUUKICAg
ICBnbENyZWF0ZVJlbmRlcmVyICAgICAgICAgICAgICAgIEAxNzcgTk9OQU1FCi0gICAgZ2xEZXN0
cm95UmVuZGVyZXIgICAgICAgICAgICAgICBAMTc4IE5PTkFNRQpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKKyAgICBnbERlc3Ryb3lSZW5kZXJlciAgICAgICAgICAgICAgIEAxNzggTk9OQU1F
CisKKyAgICA7IFNldHRpbmcgdXAgVFJBQ0UgbWFjcm8gY2FsbGJhY2tzCisgICAgU2V0VHJhY2VG
dW5jdGlvblBvaW50ZXJzICAgICAgICBAMTgwCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5yYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5yYwkocmV2aXNpb24gMTU5NTMyKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIucmMJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTAyICsxLDEwMiBAQAotLy8gTWljcm9zb2Z0IFZpc3VhbCBDKysg
Z2VuZXJhdGVkIHJlc291cmNlIHNjcmlwdC4KLS8vCi0jaW5jbHVkZSAicmVzb3VyY2UuaCIKLQot
I2RlZmluZSBBUFNUVURJT19SRUFET05MWV9TWU1CT0xTCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwot
Ly8KLS8vIEdlbmVyYXRlZCBmcm9tIHRoZSBURVhUSU5DTFVERSAyIHJlc291cmNlLgotLy8KLSNp
bmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSAiLi4vY29tbW9uL3ZlcnNpb24uaCIKLQotLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KLSN1bmRlZiBBUFNUVURJT19SRUFET05MWV9TWU1CT0xTCi0KLS8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCi0vLyBFbmdsaXNoIChVLlMuKSByZXNvdXJjZXMKLQotI2lmICFk
ZWZpbmVkKEFGWF9SRVNPVVJDRV9ETEwpIHx8IGRlZmluZWQoQUZYX1RBUkdfRU5VKQotI2lmZGVm
IF9XSU4zMgotTEFOR1VBR0UgTEFOR19FTkdMSVNILCBTVUJMQU5HX0VOR0xJU0hfVVMKLSNwcmFn
bWEgY29kZV9wYWdlKDEyNTIpCi0jZW5kaWYgLy9fV0lOMzIKLQotI2lmZGVmIEFQU1RVRElPX0lO
Vk9LRUQKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gVEVYVElOQ0xVREUKLS8vCi0KLTEg
VEVYVElOQ0xVREUgCi1CRUdJTgotICAgICJyZXNvdXJjZS5oXDAiCi1FTkQKLQotMiBURVhUSU5D
TFVERSAKLUJFR0lOCi0gICAgIiNpbmNsdWRlICIiYWZ4cmVzLmgiIlxyXG4iCi0gICAgIiNpbmNs
dWRlICIiLi4vY29tbW9uL3ZlcnNpb24uaCIiXDAiCi1FTkQKLQotMyBURVhUSU5DTFVERSAKLUJF
R0lOCi0gICAgIlxyXG4iCi0gICAgIlwwIgotRU5ECi0KLSNlbmRpZiAgICAvLyBBUFNUVURJT19J
TlZPS0VECi0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBWZXJzaW9uCi0vLwotCi1W
U19WRVJTSU9OX0lORk8gVkVSU0lPTklORk8KLSBGSUxFVkVSU0lPTiBNQUpPUl9WRVJTSU9OLE1J
Tk9SX1ZFUlNJT04sQlVJTERfVkVSU0lPTixCVUlMRF9SRVZJU0lPTgotIFBST0RVQ1RWRVJTSU9O
IE1BSk9SX1ZFUlNJT04sTUlOT1JfVkVSU0lPTixCVUlMRF9WRVJTSU9OLEJVSUxEX1JFVklTSU9O
Ci0gRklMRUZMQUdTTUFTSyAweDE3TAotI2lmZGVmIF9ERUJVRwotIEZJTEVGTEFHUyAweDFMCi0j
ZWxzZQotIEZJTEVGTEFHUyAweDBMCi0jZW5kaWYKLSBGSUxFT1MgMHg0TAotIEZJTEVUWVBFIDB4
MkwKLSBGSUxFU1VCVFlQRSAweDBMCi1CRUdJTgotICAgIEJMT0NLICJTdHJpbmdGaWxlSW5mbyIK
LSAgICBCRUdJTgotICAgICAgICBCTE9DSyAiMDQwOTA0YjAiCi0gICAgICAgIEJFR0lOCi0gICAg
ICAgICAgICBWQUxVRSAiRmlsZURlc2NyaXB0aW9uIiwgIkFOR0xFIGxpYkdMRVN2MiBEeW5hbWlj
IExpbmsgTGlicmFyeSIKLSAgICAgICAgICAgIFZBTFVFICJGaWxlVmVyc2lvbiIsIFZFUlNJT05f
U1RSSU5HCi0gICAgICAgICAgICBWQUxVRSAiSW50ZXJuYWxOYW1lIiwgImxpYkdMRVN2MiIKLSAg
ICAgICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsICJDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4iCi0gICAgICAgICAgICBWQUxVRSAiT3JpZ2luYWxGaWxlbmFtZSIsICJsaWJHTEVT
djIuZGxsIgotICAgICAgICAgICAgVkFMVUUgIlByaXZhdGVCdWlsZCIsIFZFUlNJT05fU1RSSU5H
Ci0gICAgICAgICAgICBWQUxVRSAiUHJvZHVjdE5hbWUiLCAiQU5HTEUgbGliR0xFU3YyIER5bmFt
aWMgTGluayBMaWJyYXJ5IgotICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3RWZXJzaW9uIiwgVkVS
U0lPTl9TVFJJTkcKLSAgICAgICAgRU5ECi0gICAgRU5ECi0gICAgQkxPQ0sgIlZhckZpbGVJbmZv
IgotICAgIEJFR0lOCi0gICAgICAgIFZBTFVFICJUcmFuc2xhdGlvbiIsIDB4NDA5LCAxMjAwCi0g
ICAgRU5ECi1FTkQKLQotI2VuZGlmICAgIC8vIEVuZ2xpc2ggKFUuUy4pIHJlc291cmNlcwotLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KLQotCi0KLSNpZm5kZWYgQVBTVFVESU9fSU5WT0tFRAotLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KLS8vCi0vLyBHZW5lcmF0ZWQgZnJvbSB0aGUgVEVYVElOQ0xVREUgMyBy
ZXNvdXJjZS4KLS8vCi0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSNlbmRpZiAgICAvLyBub3Qg
QVBTVFVESU9fSU5WT0tFRAorLy8gTWljcm9zb2Z0IFZpc3VhbCBDKysgZ2VuZXJhdGVkIHJlc291
cmNlIHNjcmlwdC4NCisvLw0KKyNpbmNsdWRlICJyZXNvdXJjZS5oIg0KKw0KKyNkZWZpbmUgQVBT
VFVESU9fUkVBRE9OTFlfU1lNQk9MUw0KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQorLy8NCisvLyBH
ZW5lcmF0ZWQgZnJvbSB0aGUgVEVYVElOQ0xVREUgMiByZXNvdXJjZS4NCisvLw0KKyNpbmNsdWRl
IDx3aW5kb3dzLmg+DQorI2luY2x1ZGUgIi4uL2NvbW1vbi92ZXJzaW9uLmgiDQorDQorLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8NCisjdW5kZWYgQVBTVFVESU9fUkVBRE9OTFlfU1lNQk9MUw0KKw0KKy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vDQorLy8gRW5nbGlzaCAoVS5TLikgcmVzb3VyY2VzDQorDQorI2lm
ICFkZWZpbmVkKEFGWF9SRVNPVVJDRV9ETEwpIHx8IGRlZmluZWQoQUZYX1RBUkdfRU5VKQ0KKyNp
ZmRlZiBfV0lOMzINCitMQU5HVUFHRSBMQU5HX0VOR0xJU0gsIFNVQkxBTkdfRU5HTElTSF9VUw0K
KyNwcmFnbWEgY29kZV9wYWdlKDEyNTIpDQorI2VuZGlmIC8vX1dJTjMyDQorDQorI2lmZGVmIEFQ
U1RVRElPX0lOVk9LRUQNCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KKy8vDQorLy8gVEVYVElOQ0xV
REUNCisvLw0KKw0KKzEgVEVYVElOQ0xVREUgDQorQkVHSU4NCisgICAgInJlc291cmNlLmhcMCIN
CitFTkQNCisNCisyIFRFWFRJTkNMVURFIA0KK0JFR0lODQorICAgICIjaW5jbHVkZSAiImFmeHJl
cy5oIiJcclxuIg0KKyAgICAiI2luY2x1ZGUgIiIuLi9jb21tb24vdmVyc2lvbi5oIiJcMCINCitF
TkQNCisNCiszIFRFWFRJTkNMVURFIA0KK0JFR0lODQorICAgICJcclxuIg0KKyAgICAiXDAiDQor
RU5EDQorDQorI2VuZGlmICAgIC8vIEFQU1RVRElPX0lOVk9LRUQNCisNCisNCisvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLw0KKy8vDQorLy8gVmVyc2lvbg0KKy8vDQorDQorVlNfVkVSU0lPTl9JTkZPIFZF
UlNJT05JTkZPDQorIEZJTEVWRVJTSU9OIE1BSk9SX1ZFUlNJT04sTUlOT1JfVkVSU0lPTixCVUlM
RF9WRVJTSU9OLEJVSUxEX1JFVklTSU9ODQorIFBST0RVQ1RWRVJTSU9OIE1BSk9SX1ZFUlNJT04s
TUlOT1JfVkVSU0lPTixCVUlMRF9WRVJTSU9OLEJVSUxEX1JFVklTSU9ODQorIEZJTEVGTEFHU01B
U0sgMHgxN0wNCisjaWZkZWYgX0RFQlVHDQorIEZJTEVGTEFHUyAweDFMDQorI2Vsc2UNCisgRklM
RUZMQUdTIDB4MEwNCisjZW5kaWYNCisgRklMRU9TIDB4NEwNCisgRklMRVRZUEUgMHgyTA0KKyBG
SUxFU1VCVFlQRSAweDBMDQorQkVHSU4NCisgICAgQkxPQ0sgIlN0cmluZ0ZpbGVJbmZvIg0KKyAg
ICBCRUdJTg0KKyAgICAgICAgQkxPQ0sgIjA0MDkwNGIwIg0KKyAgICAgICAgQkVHSU4NCisgICAg
ICAgICAgICBWQUxVRSAiRmlsZURlc2NyaXB0aW9uIiwgIkFOR0xFIGxpYkdMRVN2MiBEeW5hbWlj
IExpbmsgTGlicmFyeSINCisgICAgICAgICAgICBWQUxVRSAiRmlsZVZlcnNpb24iLCBWRVJTSU9O
X1NUUklORw0KKyAgICAgICAgICAgIFZBTFVFICJJbnRlcm5hbE5hbWUiLCAibGliR0xFU3YyIg0K
KyAgICAgICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsICJDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4iDQorICAgICAgICAgICAgVkFMVUUgIk9yaWdpbmFsRmlsZW5hbWUiLCAibGli
R0xFU3YyLmRsbCINCisgICAgICAgICAgICBWQUxVRSAiUHJpdmF0ZUJ1aWxkIiwgVkVSU0lPTl9T
VFJJTkcNCisgICAgICAgICAgICBWQUxVRSAiUHJvZHVjdE5hbWUiLCAiQU5HTEUgbGliR0xFU3Yy
IER5bmFtaWMgTGluayBMaWJyYXJ5Ig0KKyAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0VmVyc2lv
biIsIFZFUlNJT05fU1RSSU5HDQorICAgICAgICBFTkQNCisgICAgRU5EDQorICAgIEJMT0NLICJW
YXJGaWxlSW5mbyINCisgICAgQkVHSU4NCisgICAgICAgIFZBTFVFICJUcmFuc2xhdGlvbiIsIDB4
NDA5LCAxMjAwDQorICAgIEVORA0KK0VORA0KKw0KKyNlbmRpZiAgICAvLyBFbmdsaXNoIChVLlMu
KSByZXNvdXJjZXMNCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KKw0KKw0KKw0KKyNpZm5kZWYgQVBT
VFVESU9fSU5WT0tFRA0KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQorLy8NCisvLyBHZW5lcmF0ZWQg
ZnJvbSB0aGUgVEVYVElOQ0xVREUgMyByZXNvdXJjZS4NCisvLw0KKw0KKw0KKy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vDQorI2VuZGlmICAgIC8vIG5vdCBBUFNUVURJT19JTlZPS0VEDQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIudmN4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2
Mi52Y3hwcm9qCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9saWJHTEVTdjIudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyNSBA
QAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCis8UHJvamVjdCBE
ZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3Nj
aGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4NCisgIDxJdGVtR3Jv
dXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+DQorICAgIDxQcm9qZWN0Q29uZmlndXJh
dGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8
L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAg
PC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1
ZGU9IkRlYnVnfHg2NCI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRp
b24+DQorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZp
Z3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdp
bjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPg0KKyAg
ICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRp
b24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+DQor
ICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxh
dGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgIDwv
SXRlbUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPg0KKyAgICA8UHJv
amVjdEd1aWQ+e0I1ODcxQTdBLTk2OEMtNDJFMy1BMzNCLTk4MUU2RjQ0OEU3OH08L1Byb2plY3RH
dWlkPg0KKyAgICA8Um9vdE5hbWVzcGFjZT5saWJHTEVTdjI8L1Jvb3ROYW1lc3BhY2U+DQorICAg
IDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJ
bXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJv
cHMiIC8+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAg
IDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+DQor
ICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgICA8V2hvbGVQcm9n
cmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgIDwvUHJv
cGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQor
ICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+
DQorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0
eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAg
PENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4NCisg
ICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICAgIDxXaG9sZVByb2dy
YW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgPC9Qcm9w
ZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAg
IDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+DQor
ICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdy
b3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAu
cHJvcHMiIC8+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4NCisg
IDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRz
Ij4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQo
UGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxN
aWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0
YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9
IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxN
aWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCck
KFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFi
ZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBv
cnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIk
KFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRp
dGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVz
ZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRH
cm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBv
cnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2Vy
LnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4k
KFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4N
CisgIDwvSW1wb3J0R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIg
Lz4NCisgIDxQcm9wZXJ0eUdyb3VwPg0KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQw
MjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25EaXIp
JChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChDb25maWd1cmF0aW9u
KVw8L0ludERpcj4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvTGlua0luY3JlbWVudGFs
Pg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChDb25maWd1cmF0aW9uKVw8L091dERp
cj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj4kKENvbmZpZ3VyYXRpb24pXDwvSW50RGlyPg0KKyAgICA8TGlu
a0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKFNv
bHV0aW9uRGlyKSQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxJ
bnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIj4kKFBsYXRmb3JtKVwkKENvbmZpZ3VyYXRpb24pXDwvSW50RGlyPg0KKyAgICA8TGlua0lu
Y3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8eDY0JyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKFNvbHV0aW9u
RGlyKSQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxJbnREaXIg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCci
PiQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlvbilcPC9JbnREaXI+DQorICAgIDxMaW5rSW5jcmVt
ZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxJbmNsdWRlUGF0aCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChJbmNs
dWRlUGF0aCk8L0luY2x1ZGVQYXRoPg0KKyAgICA8TGlicmFyeVBhdGggQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTGlicmFyeVBhdGgp
PC9MaWJyYXJ5UGF0aD4NCisgICAgPEluY2x1ZGVQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChJbmNsdWRlUGF0aCk8L0luY2x1ZGVQ
YXRoPg0KKyAgICA8TGlicmFyeVBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKExpYnJhcnlQYXRoKTwvTGlicmFyeVBhdGg+DQorICAg
IDxJbmNsdWRlUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyI+JChJbmNsdWRlUGF0aCk8L0luY2x1ZGVQYXRoPg0KKyAgICA8SW5jbHVk
ZVBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fFdpbjMyJyI+JChJbmNsdWRlUGF0aCk8L0luY2x1ZGVQYXRoPg0KKyAgICA8TGlicmFyeVBhdGgg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMici
PiQoTGlicmFyeVBhdGgpPC9MaWJyYXJ5UGF0aD4NCisgICAgPExpYnJhcnlQYXRoIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTGli
cmFyeVBhdGgpPC9MaWJyYXJ5UGF0aD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJdGVtRGVm
aW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8V2luMzInIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9uPkRp
c2FibGVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+JChQcm9qZWN0RGlyKTskKFByb2plY3REaXIpLy4uOyAkKFByb2plY3REaXIpLy4uLy4uL2lu
Y2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVH
O19XSU5ET1dTO19VU1JETEw7TElCR0xFU1YyX0VYUE9SVFM7X0NSVF9TRUNVUkVfTk9fREVQUkVD
QVRFO05PTUlOTUFYOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZp
bml0aW9ucz4NCisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+DQor
ICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVD
aGVja3M+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGlt
ZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFk
ZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8
VHJlYXRXYXJuaW5nQXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICAgIDxE
ZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZv
cm1hdD4NCisgICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIz
OTs0MjQ0OzQyNDU7NDUxMjs0NzAyOzQ5OTY7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rp
c2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlckZpbGU+cHJl
Y29tcGlsZWQuaDwvUHJlY29tcGlsZWRIZWFkZXJGaWxlPg0KKyAgICAgIDxBZGRpdGlvbmFsT3B0
aW9ucz4kKEV4dGVybmFsQ29tcGlsZXJPcHRpb25zKSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRk
aXRpb25hbE9wdGlvbnM+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8
QWRkaXRpb25hbERlcGVuZGVuY2llcz5kM2Q5LmxpYjtkeGd1aWQubGliOyUoQWRkaXRpb25hbERl
cGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPE1vZHVsZURlZmlu
aXRpb25GaWxlPmxpYkdMRVN2Mi5kZWY8L01vZHVsZURlZmluaXRpb25GaWxlPg0KKyAgICAgIDxH
ZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0K
KyAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPg0KKyAgICAgIDxEYXRhRXhlY3V0
aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAg
IDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+DQorICAgIDwvTGluaz4N
CisgICAgPFBvc3RCdWlsZEV2ZW50Pg0KKyAgICAgIDxDb21tYW5kPiU0MGVjaG8gb24NCitta2Rp
ciAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCitjb3B5ICIkKE91
dERpcilsaWJHTEVTdjIuZGxsIiAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRp
b24pXCINCitjb3B5ICIkKE91dERpcilsaWJHTEVTdjIubGliIiAiJChQcm9qZWN0RGlyKS4uXC4u
XGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCislNDBlY2hvIG9mZg0KKzwvQ29tbWFuZD4NCisgICAg
PC9Qb3N0QnVpbGRFdmVudD4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVm
aW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXxXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+
TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+
QW55U3VpdGFibGU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPg0KKyAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcik7JChQcm9qZWN0RGlyKS8uLjsgJChQcm9q
ZWN0RGlyKS8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0Fk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRp
b25zPkFOR0xFX0RJU0FCTEVfVFJBQ0U7V0lOMzI7TkRFQlVHO19XSU5ET1dTO19VU1JETEw7TElC
R0xFU1YyX0VYUE9SVFM7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05PTUlOTUFYO19TRUNVUkVf
U0NMPTA7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25z
Pg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4N
CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAg
ICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxUcmVhdFdhcm5p
bmdBc0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+DQorICAgICAgPERlYnVnSW5mb3Jt
YXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAg
ICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40MTAwOzQxMjc7NDE4OTs0MjM5OzQyNDQ7NDI0
NTs0NTEyOzQ3MDI7NDcxODs0OTk2OyUoRGlzYWJsZVNwZWNpZmljV2FybmluZ3MpPC9EaXNhYmxl
U3BlY2lmaWNXYXJuaW5ncz4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXJGaWxlPnByZWNvbXBp
bGVkLmg8L1ByZWNvbXBpbGVkSGVhZGVyRmlsZT4NCisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+
JChFeHRlcm5hbENvbXBpbGVyT3B0aW9ucykgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9u
YWxPcHRpb25zPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0
aW9uYWxEZXBlbmRlbmNpZXM+ZDNkOS5saWI7ZHhndWlkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRl
bmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxJZ25vcmVBbGxEZWZhdWx0
TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPg0KKyAgICAgIDxNb2R1
bGVEZWZpbml0aW9uRmlsZT5saWJHTEVTdjIuZGVmPC9Nb2R1bGVEZWZpbml0aW9uRmlsZT4NCisg
ICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1h
dGlvbj4NCisgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4NCisgICAgICA8T3B0
aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4NCisgICAgICA8RW5hYmxl
Q09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPg0KKyAgICAgIDxEYXRhRXhl
Y3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAg
ICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+DQorICAgIDwvTGlu
az4NCisgICAgPFBvc3RCdWlsZEV2ZW50Pg0KKyAgICAgIDxDb21tYW5kPiU0MGVjaG8gb24NCitt
a2RpciAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCitjb3B5ICIk
KE91dERpcilsaWJHTEVTdjIuZGxsIiAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3Vy
YXRpb24pXCINCitjb3B5ICIkKE91dERpcilsaWJHTEVTdjIubGliIiAiJChQcm9qZWN0RGlyKS4u
XC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCislNDBlY2hvIG9mZg0KKzwvQ29tbWFuZD4NCisg
ICAgPC9Qb3N0QnVpbGRFdmVudD4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVt
RGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8eDY0JyI+DQorICAgIDxNaWRsPg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5Y
NjQ8L1RhcmdldEVudmlyb25tZW50Pg0KKyAgICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+DQor
ICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikvLi47ICQoUHJvamVjdERpcikv
Li4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4z
MjtfREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtMSUJHTEVTVjJfRVhQT1JUUztfQ1JUX1NFQ1VSRV9O
T19ERVBSRUNBVEU7Tk9NSU5NQVg7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nl
c3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVi
dWlsZD4NCisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2lj
UnVudGltZUNoZWNrcz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVn
PC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21w
aWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0K
KyAgICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40MTAwOzQxMjc7NDE4OTs0MjM5OzQyNDQ7
NDI0NTs0NTEyOzQ3MDI7NDcxODs0OTk2OyUoRGlzYWJsZVNwZWNpZmljV2FybmluZ3MpPC9EaXNh
YmxlU3BlY2lmaWNXYXJuaW5ncz4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9n
cmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPFRyZWF0V2Fybmlu
Z0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCisgICAgICA8UHJlY29tcGlsZWRI
ZWFkZXJGaWxlPnByZWNvbXBpbGVkLmg8L1ByZWNvbXBpbGVkSGVhZGVyRmlsZT4NCisgICAgICA8
QWRkaXRpb25hbE9wdGlvbnM+JChFeHRlcm5hbENvbXBpbGVyT3B0aW9ucykgJShBZGRpdGlvbmFs
T3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExp
bms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZDNkOS5saWI7ZHhndWlkLmxpYjsl
KEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAg
IDxNb2R1bGVEZWZpbml0aW9uRmlsZT5saWJHTEVTdjIuZGVmPC9Nb2R1bGVEZWZpbml0aW9uRmls
ZT4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJ
bmZvcm1hdGlvbj4NCisgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4NCisgICAg
ICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVu
dGlvbj4NCisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPg0K
KyAgICA8L0xpbms+DQorICAgIDxQb3N0QnVpbGRFdmVudD4NCisgICAgICA8Q29tbWFuZD4lNDBl
Y2hvIG9uDQorbWtkaXIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwi
DQorY29weSAiJChPdXREaXIpbGliR0xFU3YyLmRsbCIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJc
JChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIpbGliR0xFU3YyLmxpYiIgIiQoUHJv
amVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorJTQwZWNobyBvZmYNCis8L0Nv
bW1hbmQ+DQorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+
DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+DQorICAgIDxNaWRsPg0KKyAgICAgIDxUYXJnZXRF
bnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50Pg0KKyAgICA8L01pZGw+DQorICAgIDxD
bENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0K
KyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5BbnlTdWl0YWJsZTwvSW5saW5lRnVuY3Rp
b25FeHBhbnNpb24+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9q
ZWN0RGlyKS8uLjsgJChQcm9qZWN0RGlyKS8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFBy
ZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfV0lORE9XUztfVVNSRExMO0xJQkdM
RVNWMl9FWFBPUlRTO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtOT01JTk1BWDtfU0VDVVJFX1ND
TD0wOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4N
CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+DQor
ICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAg
PFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8RGlzYWJsZVNwZWNp
ZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7NDUxMjs0NzAyOzQ3MTg7
NDk5NjslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+
DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0lu
Zm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0
V2FybmluZ0FzRXJyb3I+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyRmlsZT5wcmVjb21waWxl
ZC5oPC9QcmVjb21waWxlZEhlYWRlckZpbGU+DQorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPiQo
RXh0ZXJuYWxDb21waWxlck9wdGlvbnMpICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFs
T3B0aW9ucz4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlv
bmFsRGVwZW5kZW5jaWVzPmQzZDkubGliO2R4Z3VpZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5j
aWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8SWdub3JlQWxsRGVmYXVsdExp
YnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4NCisgICAgICA8TW9kdWxl
RGVmaW5pdGlvbkZpbGU+bGliR0xFU3YyLmRlZjwvTW9kdWxlRGVmaW5pdGlvbkZpbGU+DQorICAg
ICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRp
b24+DQorICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGlt
aXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNP
TURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8RGF0YUV4ZWN1
dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAg
ICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+
DQorICAgIDxQb3N0QnVpbGRFdmVudD4NCisgICAgICA8Q29tbWFuZD4lNDBlY2hvIG9uDQorbWtk
aXIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChP
dXREaXIpbGliR0xFU3YyLmRsbCIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0
aW9uKVwiDQorY29weSAiJChPdXREaXIpbGliR0xFU3YyLmxpYiIgIiQoUHJvamVjdERpcikuLlwu
LlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorJTQwZWNobyBvZmYNCis8L0NvbW1hbmQ+DQorICAg
IDwvUG9zdEJ1aWxkRXZlbnQ+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbUdy
b3VwPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHRoaXJkX3BhcnR5XG11cm11cmhhc2hc
TXVybXVySGFzaDMuY3BwIj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPk5vdFVzaW5nPC9Q
cmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Tm90VXNpbmc8
L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPk5vdFVzaW5nPC9Q
cmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPk5vdFVzaW5nPC9Q
cmVjb21waWxlZEhlYWRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iQnVmZmVyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJDb250ZXh0LmNw
cCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjb21tb25cZGVidWcuY3BwIj4NCisg
ICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPk5vdFVzaW5nPC9QcmVjb21waWxlZEhlYWRlcj4NCisg
ICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Tm90VXNpbmc8L1ByZWNvbXBpbGVkSGVhZGVyPg0K
KyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPk5vdFVzaW5nPC9QcmVjb21waWxlZEhlYWRlcj4NCisg
ICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPk5vdFVzaW5nPC9QcmVjb21waWxlZEhlYWRlcj4NCisg
ICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cY29tbW9uXGV2ZW50
X3RyYWNlci5jcHAiPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Tm90VXNpbmc8L1ByZWNv
bXBpbGVkSGVhZGVyPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5Ob3RVc2luZzwvUHJl
Y29tcGlsZWRIZWFkZXI+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Tm90VXNpbmc8L1ByZWNv
bXBpbGVkSGVhZGVyPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Tm90VXNpbmc8L1ByZWNv
bXBpbGVkSGVhZGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSJGZW5jZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRmxvYXQxNlRvRmxvYXQz
Mi5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRnJhbWVidWZmZXIuY3BwIiAvPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkhhbmRsZUFsbG9jYXRvci5jcHAiIC8+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0ibGliR0xFU3YyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSJtYWluLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJwcmVjb21waWxlZC5j
cHAiPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Q3JlYXRlPC9QcmVjb21waWxlZEhlYWRl
cj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Q3JlYXRlPC9QcmVjb21waWxlZEhlYWRl
cj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5DcmVhdGU8L1ByZWNvbXBpbGVkSGVhZGVyPg0K
KyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Q3JlYXRlPC9QcmVjb21waWxlZEhlYWRlcj4NCisg
ICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUHJvZ3JhbS5jcHAiIC8+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUHJvZ3JhbUJpbmFyeS5jcHAiIC8+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iUXVlcnkuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXGNvbW1vblxSZWZDb3VudE9iamVjdC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iUmVuZGVyYnVmZmVyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJl
clxCbGl0LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxGZW5jZTEx
LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxGZW5jZTkuY3BwIiAv
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEJ1ZmZlclN0b3JhZ2UuY3BwIiAv
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEJ1ZmZlclN0b3JhZ2UxMS5jcHAi
IC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcQnVmZmVyU3RvcmFnZTkuY3Bw
IiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEltYWdlLmNwcCIgLz4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJbWFnZTkuY3BwIiAvPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEluZGV4QnVmZmVyLmNwcCIgLz4NCisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJbmRleEJ1ZmZlcjExLmNwcCIgLz4NCisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJbmRleEJ1ZmZlcjkuY3BwIiAvPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9InJlbmRlcmVyXEluZGV4RGF0YU1hbmFnZXIuY3BwIiAvPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEltYWdlU1NFMi5jcHAiIC8+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0icmVuZGVyZXJcSW1hZ2UxMS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0icmVuZGVyZXJcSW5kZXhSYW5nZUNhY2hlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJyZW5kZXJlclxJbnB1dExheW91dENhY2hlLmNwcCIgLz4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJyZW5kZXJlclxRdWVyeTExLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSJyZW5kZXJlclxRdWVyeTkuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJl
bmRlcmVyXFJlbmRlcmVyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJl
clxSZW5kZXJlcjExLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxy
ZW5kZXJlcjExX3V0aWxzLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJl
clxSZW5kZXJlcjkuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXHJl
bmRlcmVyOV91dGlscy5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJc
UmVuZGVyVGFyZ2V0MTEuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVy
XFJlbmRlclRhcmdldDkuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVy
XFJlbmRlclN0YXRlQ2FjaGUuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRl
cmVyXFNoYWRlckV4ZWN1dGFibGUxMS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
cmVuZGVyZXJcU2hhZGVyRXhlY3V0YWJsZTkuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9InJlbmRlcmVyXFN3YXBDaGFpbjExLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSJyZW5kZXJlclxTd2FwQ2hhaW45LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJy
ZW5kZXJlclxUZXh0dXJlU3RvcmFnZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
cmVuZGVyZXJcVGV4dHVyZVN0b3JhZ2UxMS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0icmVuZGVyZXJcVGV4dHVyZVN0b3JhZ2U5LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSJyZW5kZXJlclxWZXJ0ZXhCdWZmZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9InJlbmRlcmVyXFZlcnRleEJ1ZmZlcjExLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSJyZW5kZXJlclxWZXJ0ZXhCdWZmZXI5LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSJyZW5kZXJlclxWZXJ0ZXhEYXRhTWFuYWdlci5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0icmVuZGVyZXJcVmVydGV4RGVjbGFyYXRpb25DYWNoZS5jcHAiIC8+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iUmVzb3VyY2VNYW5hZ2VyLmNwcCIgLz4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJTaGFkZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlRleHR1
cmUuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlVuaWZvcm0uY3BwIiAvPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9InV0aWxpdGllcy5jcHAiIC8+DQorICA8L0l0ZW1Hcm91cD4N
CisgIDxJdGVtR3JvdXA+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY29tbW9uXGRlYnVn
LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY29tbW9uXGV2ZW50X3RyYWNlci5o
IiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNvbW1vblxzeXN0ZW0uaCIgLz4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx0aGlyZF9wYXJ0eVxtdXJtdXJoYXNoXE11cm11ckhh
c2gzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cdGhpcmRfcGFydHlcdHJhY2Vf
ZXZlbnRcdHJhY2VfZXZlbnQuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJhbmdsZXR5
cGVzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQmluYXJ5U3RyZWFtLmgiIC8+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQnVmZmVyLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iY29uc3RhbnRzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQ29udGV4dC5o
IiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkZlbmNlLmgiIC8+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iRnJhbWVidWZmZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlwuLlxpbmNsdWRlXEdMRVMyXGdsMi5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XC4uXGluY2x1ZGVcR0xFUzJcZ2wyZXh0LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cLi5caW5jbHVkZVxHTEVTMlxnbDJwbGF0Zm9ybS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IkhhbmRsZUFsbG9jYXRvci5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Im1h
aW4uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJtYXRodXRpbC5oIiAvPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9InByZWNvbXBpbGVkLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iUHJvZ3JhbS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlByb2dyYW1CaW5h
cnkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJRdWVyeS5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGNvbW1vblxSZWZDb3VudE9iamVjdC5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9IlJlbmRlcmJ1ZmZlci5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9InJlbmRlcmVyXEJsaXQuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJl
clxGZW5jZTExLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcRmVuY2U5
LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcRmVuY2VJbXBsLmgiIC8+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcQnVmZmVyU3RvcmFnZS5oIiAvPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEJ1ZmZlclN0b3JhZ2UxMS5oIiAvPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEJ1ZmZlclN0b3JhZ2U5LmgiIC8+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcZ2VuZXJhdGVtaXAuaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxJbWFnZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9InJlbmRlcmVyXEltYWdlMTEuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSJyZW5kZXJlclxJbWFnZTkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJl
clxJbmRleEJ1ZmZlci5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXElu
ZGV4QnVmZmVyMTEuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxJbmRl
eEJ1ZmZlcjkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxJbmRleERh
dGFNYW5hZ2VyLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcSW5kZXhS
YW5nZUNhY2hlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcSW5wdXRM
YXlvdXRDYWNoZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFF1ZXJ5
MTEuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxRdWVyeUltcGwuaCIg
Lz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxRdWVyeTkuaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJlci5oIiAvPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlcmVyMTEuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJyZW5kZXJlclxyZW5kZXJlcjExX3V0aWxzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyZXI5LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0icmVuZGVyZXJccmVuZGVyZXI5X3V0aWxzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0icmVuZGVyZXJcUmVuZGVyVGFyZ2V0LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
cmVuZGVyZXJcUmVuZGVyVGFyZ2V0MTEuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJy
ZW5kZXJlclxSZW5kZXJUYXJnZXQ5LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVu
ZGVyZXJcUmVuZGVyU3RhdGVDYWNoZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJl
bmRlcmVyXFNoYWRlckNhY2hlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVy
ZXJcU2hhZGVyRXhlY3V0YWJsZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRl
cmVyXFNoYWRlckV4ZWN1dGFibGUxMS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJl
bmRlcmVyXFNoYWRlckV4ZWN1dGFibGU5LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
cmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxjbGVhcjExdnMuaCIgLz4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVkXGNsZWFybXVsdGlwbGUxMXBzLmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxj
bGVhcnNpbmdsZTExcHMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxz
aGFkZXJzXGNvbXBpbGVkXGNvbXBvbmVudG1hc2twcy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRcZmxpcHl2cy5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRcbHVtaW5hbmNlcHMuaCIg
Lz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVkXHBh
c3N0aHJvdWdoMTF2cy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNo
YWRlcnNcY29tcGlsZWRccGFzc3Rocm91Z2hsdW0xMXBzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxwYXNzdGhyb3VnaGx1bWFscGhhMTFw
cy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGls
ZWRccGFzc3Rocm91Z2hwcy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVy
XHNoYWRlcnNcY29tcGlsZWRccGFzc3Rocm91Z2hyZ2IxMXBzLmgiIC8+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxwYXNzdGhyb3VnaHJnYmExMXBz
LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxl
ZFxzdGFuZGFyZHZzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcU3dh
cENoYWluLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcU3dhcENoYWlu
MTEuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxTd2FwQ2hhaW45Lmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcVGV4dHVyZVN0b3JhZ2UuaCIg
Lz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxUZXh0dXJlU3RvcmFnZTExLmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcVGV4dHVyZVN0b3JhZ2U5Lmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4QnVmZmVyLmgiIC8+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4QnVmZmVyMTEuaCIgLz4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxWZXJ0ZXhCdWZmZXI5LmgiIC8+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcdmVydGV4Y29udmVyc2lvbi5oIiAvPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleERhdGFNYW5hZ2VyLmgiIC8+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4RGVjbGFyYXRpb25DYWNo
ZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlc291cmNlLmgiIC8+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iUmVzb3VyY2VNYW5hZ2VyLmgiIC8+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iU2hhZGVyLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVGV4dHVyZS5o
IiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlVuaWZvcm0uaCIgLz4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJ1dGlsaXRpZXMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
Llxjb21tb25cdmVyc2lvbi5oIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0K
KyAgICA8Tm9uZSBJbmNsdWRlPSJsaWJHTEVTdjIuZGVmIiAvPg0KKyAgICA8Tm9uZSBJbmNsdWRl
PSJyZW5kZXJlclxzaGFkZXJzXEJsaXQucHMiIC8+DQorICAgIDxOb25lIEluY2x1ZGU9InJlbmRl
cmVyXHNoYWRlcnNcQmxpdC52cyIgLz4NCisgICAgPE5vbmUgSW5jbHVkZT0icmVuZGVyZXJcc2hh
ZGVyc1xDbGVhcjExLmhsc2wiIC8+DQorICAgIDxOb25lIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRl
cnNcZ2VuZXJhdGVfc2hhZGVycy5iYXQiIC8+DQorICAgIDxOb25lIEluY2x1ZGU9InJlbmRlcmVy
XHNoYWRlcnNcUGFzc3Rocm91Z2gxMS5obHNsIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRl
bUdyb3VwPg0KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9ImxpYkdMRVN2Mi5yYyIgLz4N
CisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPFByb2plY3RSZWZlcmVuY2Ug
SW5jbHVkZT0iLi5cY29tcGlsZXJccHJlcHJvY2Vzc29yXHByZXByb2Nlc3Nvci52Y3hwcm9qIj4N
CisgICAgICA8UHJvamVjdD57ZmJlMzJkZjMtMGZiMC00ZjJmLWE0MjQtMmMyMWJkN2JjMzI1fTwv
UHJvamVjdD4NCisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPg0KKyAgICA8UHJvamVjdFJlZmVyZW5j
ZSBJbmNsdWRlPSIuLlxjb21waWxlclx0cmFuc2xhdG9yLnZjeHByb2oiPg0KKyAgICAgIDxQcm9q
ZWN0Pns1YjNhNmRiOC0xZTdlLTQwZDctOTJiOS1kYThhYWU2MTlmYWR9PC9Qcm9qZWN0Pg0KKyAg
ICA8L1Byb2plY3RSZWZlcmVuY2U+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJbXBvcnQgUHJvamVj
dD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+DQorICA8SW1wb3J0
R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPg0KKyAgPC9JbXBvcnRHcm91cD4NCis8L1By
b2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIudmN4cHJvai5maWx0ZXJzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyLnZj
eHByb2ouZmlsdGVycwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvbGliR0xFU3YyLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDUyNyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4N
Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jv
c29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8
RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+
ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+
DQorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNt
O2FzbXg8L0V4dGVuc2lvbnM+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9
IkhlYWRlciBGaWxlcyI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQt
NGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgICAgPEV4dGVu
c2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPg0KKyAgICA8L0ZpbHRl
cj4NCisgICAgPEZpbHRlciBJbmNsdWRlPSJUaGlyZCBQYXJ0eSI+DQorICAgICAgPFVuaXF1ZUlk
ZW50aWZpZXI+e2RjMWRhYzQwLTM1NjMtNDFiZS05ZTJkLWMyNTg4ZDg2NzBmYn08L1VuaXF1ZUlk
ZW50aWZpZXI+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlRoaXJkIFBh
cnR5XE11cm11ckhhc2giPg0KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntiMDAwNWQyZi05YjRh
LTQ2NTktYTI3MC0xMzg4MTExNzRmNzN9PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICA8L0ZpbHRl
cj4NCisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXNcUmVuZGVyZXIiPg0KKyAgICAg
IDxVbmlxdWVJZGVudGlmaWVyPns1NjJlNDY5ZC0xYWJiLTQ0YmMtYjdmYS01NWVlZmJmNzVhY2N9
PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICA8L0ZpbHRlcj4NCisgICAgPEZpbHRlciBJbmNsdWRl
PSJTaGFkZXJzIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NmRjMDMwNmYtNjM5Ni00ZTgw
LTllZjktMDliNThhYTUzYzRkfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgPC9GaWx0ZXI+DQor
ICAgIDxGaWx0ZXIgSW5jbHVkZT0iU2hhZGVyc1xDb21waWxlZCI+DQorICAgICAgPFVuaXF1ZUlk
ZW50aWZpZXI+ezYzMzI3MDViLTE5OTktNDI5Mi1hMzhiLWRkNDczMjk3MzRhYX08L1VuaXF1ZUlk
ZW50aWZpZXI+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBG
aWxlc1xSZW5kZXJlciI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzYTc2OTY0LTc3YTMt
NGIyMC1hNmY1LWUxNGU3NjJkNGUxNH08L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgIDwvRmlsdGVy
Pg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlc1xSZW5kZXJlcjkiPg0KKyAgICAg
IDxVbmlxdWVJZGVudGlmaWVyPnszODc3ZjM1ZS04NDVjLTRlOTUtYjlhNS1jN2Q4YjlmMzA3YzV9
PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICA8L0ZpbHRlcj4NCisgICAgPEZpbHRlciBJbmNsdWRl
PSJIZWFkZXIgRmlsZXNcUmVuZGVyZXIxMSI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezJk
NzBmZDYwLTZkZWEtNDg5Zi1hYzA5LTE2ODkwZDMyNTY2OX08L1VuaXF1ZUlkZW50aWZpZXI+DQor
ICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlc1xSZW5kZXJl
cjkiPg0KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns2MGUxNGYwNC0yY2YyLTRhMDctYjNlZi03
YzY4YTgyYmEyZDl9PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICA8L0ZpbHRlcj4NCisgICAgPEZp
bHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXNcUmVuZGVyZXIxMSI+DQorICAgICAgPFVuaXF1ZUlk
ZW50aWZpZXI+ezcyZGI2MWQzLWUwODEtNGI1OC1iYzYzLWEwNGE4YTcwNTg1Zn08L1VuaXF1ZUlk
ZW50aWZpZXI+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlRoaXJkIFBh
cnR5XHRyYWNlX2V2ZW50Ij4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZWJmYzE2MTQtOGYw
Yi00OGM3LWI2YmQtMjk1YmY5MWVmODVjfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgPC9GaWx0
ZXI+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iQnVmZmVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4N
CisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iQ29udGV4dC5jcHAi
Pg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxl
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGNvbW1vblxkZWJ1Zy5jcHAiPg0KKyAgICAg
IDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9IkZlbmNlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmls
ZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
RmxvYXQxNlRvRmxvYXQzMi5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkZyYW1lYnVm
ZmVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9D
bENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSGFuZGxlQWxsb2NhdG9yLmNwcCI+
DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ibGliR0xFU3YyLmNwcCI+DQorICAgICAgPEZpbHRl
cj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0ibWFpbi5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlByb2dyYW0u
Y3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29t
cGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJQcm9ncmFtQmluYXJ5LmNwcCI+DQorICAg
ICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iUXVlcnkuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBG
aWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxjb21tb25cUmVmQ291bnRPYmplY3QuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBG
aWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSJSZW5kZXJidWZmZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVy
Pg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJSZXNvdXJjZU1h
bmFnZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8
L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJTaGFkZXIuY3BwIj4NCisgICAg
ICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJUZXh0dXJlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2Ug
RmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0idXRpbGl0aWVzLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4N
CisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW1h
Z2UuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0K
KyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxUZXh0
dXJlU3RvcmFnZS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyPC9G
aWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRl
cmVyXFJlbmRlcmVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI8
L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
dGhpcmRfcGFydHlcbXVybXVyaGFzaFxNdXJtdXJIYXNoMy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+
VGhpcmQgUGFydHlcTXVybXVySGFzaDwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJbmRleERhdGFNYW5hZ2VyLmNwcCI+DQorICAg
ICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBp
bGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4RGF0YU1hbmFnZXIu
Y3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAg
ICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJbWFnZS5j
cHAiPg0KKyAgICAgIDxGaWx0ZXI+UmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW1hZ2VTU0UyLmNwcCI+DQorICAg
ICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBp
bGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4QnVmZmVyLmNwcCI+
DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9D
bENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW5kZXhCdWZmZXIu
Y3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAg
ICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJVbmlmb3JtLmNwcCI+DQor
ICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcQnVmZmVyU3RvcmFnZS5jcHAiPg0KKyAg
ICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21w
aWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEJ1ZmZlclN0b3JhZ2UxMS5j
cHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisg
ICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcRmVuY2Ux
MS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4N
CisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW1h
Z2UxMS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRl
cj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJc
SW5kZXhCdWZmZXIxMS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVy
MTE8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
cmVuZGVyZXJcUXVlcnkxMS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRl
cmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0icmVuZGVyZXJcUmVuZGVyZXIxMS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVz
XFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0icmVuZGVyZXJccmVuZGVyZXIxMV91dGlscy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+
U291cmNlIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyVGFyZ2V0MTEuY3BwIj4NCisgICAg
ICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21w
aWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFNoYWRlckV4ZWN1dGFibGUx
MS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4N
CisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcU3dh
cENoYWluMTEuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjExPC9G
aWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRl
cmVyXFRleHR1cmVTdG9yYWdlMTEuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xS
ZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9InJlbmRlcmVyXFZlcnRleEJ1ZmZlcjExLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxCdWZmZXJTdG9yYWdlOS5jcHAiPg0KKyAgICAgIDxG
aWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxGZW5jZTkuY3BwIj4NCisgICAgICA8
RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW1hZ2U5LmNwcCI+DQorICAgICAg
PEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxl
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEluZGV4QnVmZmVyOS5jcHAiPg0K
KyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0Ns
Q29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxRdWVyeTkuY3BwIj4N
CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9D
bENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyZXI5LmNw
cCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAg
IDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXHJlbmRlcmVy
OV91dGlscy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyOTwvRmls
dGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJl
clxSZW5kZXJUYXJnZXQ5LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVy
ZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
InJlbmRlcmVyXFNoYWRlckV4ZWN1dGFibGU5LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2Ug
RmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9InJlbmRlcmVyXFN3YXBDaGFpbjkuY3BwIj4NCisgICAgICA8RmlsdGVyPlNv
dXJjZSBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcVGV4dHVyZVN0b3JhZ2U5LmNwcCI+DQorICAgICAg
PEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxl
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleEJ1ZmZlcjkuY3BwIj4N
CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9D
bENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcQmxpdC5jcHAiPg0K
KyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0Ns
Q29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJbnB1dExheW91dENh
Y2hlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVy
Pg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxS
ZW5kZXJTdGF0ZUNhY2hlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVy
ZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSJyZW5kZXJlclxWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlLmNwcCI+DQorICAgICAgPEZpbHRlcj5T
b3VyY2UgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9InByZWNvbXBpbGVkLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0icmVuZGVyZXJcSW5kZXhSYW5nZUNhY2hlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cY29tbW9uXGV2ZW50X3RyYWNlci5jcHAiPg0KKyAgICAgIDxGaWx0
ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9JdGVtR3Jv
dXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkJpbmFyeVN0cmVh
bS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5j
bHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJCdWZmZXIuaCI+DQorICAgICAgPEZpbHRl
cj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iQ29udGV4dC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmls
dGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJGZW5jZS5o
Ij4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVk
ZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJGcmFtZWJ1ZmZlci5oIj4NCisgICAgICA8Rmls
dGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEdMRVMyXGdsMi5oIj4NCisgICAgICA8RmlsdGVy
PkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEdMRVMyXGdsMmV4dC5oIj4NCisgICAgICA8RmlsdGVy
PkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEdMRVMyXGdsMnBsYXRmb3JtLmgiPg0KKyAgICAgIDxG
aWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9IkhhbmRsZUFsbG9jYXRvci5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRl
ciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJtYWluLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAg
IDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Im1hdGh1dGlsLmgiPg0KKyAg
ICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlByb2dyYW0uaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIg
RmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iUHJvZ3JhbUJpbmFyeS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVy
Pg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJRdWVyeS5oIj4N
CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjb21tb25cUmVmQ291bnRPYmplY3QuaCI+DQor
ICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUmVuZGVyYnVmZmVyLmgiPg0KKyAgICAgIDxGaWx0ZXI+
SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9InJlc291cmNlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlJlc291cmNl
TWFuYWdlci5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8
L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJTaGFkZXIuaCI+DQorICAgICAg
PEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iVGV4dHVyZS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
czwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJ1
dGlsaXRpZXMuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAg
PC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY29tbW9uXHZlcnNpb24u
aCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1
ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iYW5nbGV0eXBlcy5oIj4NCisgICAgICA8Rmls
dGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlx0aGlyZF9wYXJ0eVxtdXJtdXJoYXNoXE11cm11ckhhc2gzLmgiPg0K
KyAgICAgIDxGaWx0ZXI+VGhpcmQgUGFydHlcTXVybXVySGFzaDwvRmlsdGVyPg0KKyAgICA8L0Ns
SW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJVbmlmb3JtLmgiPg0KKyAgICAgIDxG
aWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRccGFzc3Rocm91Z2gxMXZz
LmgiPg0KKyAgICAgIDxGaWx0ZXI+U2hhZGVyc1xDb21waWxlZDwvRmlsdGVyPg0KKyAgICA8L0Ns
SW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBp
bGVkXHBhc3N0aHJvdWdocHMuaCI+DQorICAgICAgPEZpbHRlcj5TaGFkZXJzXENvbXBpbGVkPC9G
aWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRl
cmVyXHNoYWRlcnNcY29tcGlsZWRcc3RhbmRhcmR2cy5oIj4NCisgICAgICA8RmlsdGVyPlNoYWRl
cnNcQ29tcGlsZWQ8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxjb21wb25lbnRtYXNrcHMuaCI+DQor
ICAgICAgPEZpbHRlcj5TaGFkZXJzXENvbXBpbGVkPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRl
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRcZmxp
cHl2cy5oIj4NCisgICAgICA8RmlsdGVyPlNoYWRlcnNcQ29tcGlsZWQ8L0ZpbHRlcj4NCisgICAg
PC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xj
b21waWxlZFxsdW1pbmFuY2Vwcy5oIj4NCisgICAgICA8RmlsdGVyPlNoYWRlcnNcQ29tcGlsZWQ8
L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVu
ZGVyZXJcc2hhZGVyc1xjb21waWxlZFxwYXNzdGhyb3VnaHJnYmExMXBzLmgiPg0KKyAgICAgIDxG
aWx0ZXI+U2hhZGVyc1xDb21waWxlZDwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVkXHBhc3N0aHJvdWdo
cmdiMTFwcy5oIj4NCisgICAgICA8RmlsdGVyPlNoYWRlcnNcQ29tcGlsZWQ8L0ZpbHRlcj4NCisg
ICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVy
c1xjb21waWxlZFxwYXNzdGhyb3VnaGx1bTExcHMuaCI+DQorICAgICAgPEZpbHRlcj5TaGFkZXJz
XENvbXBpbGVkPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRccGFzc3Rocm91Z2hsdW1hbHBoYTExcHMu
aCI+DQorICAgICAgPEZpbHRlcj5TaGFkZXJzXENvbXBpbGVkPC9GaWx0ZXI+DQorICAgIDwvQ2xJ
bmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGls
ZWRcY2xlYXIxMXZzLmgiPg0KKyAgICAgIDxGaWx0ZXI+U2hhZGVyc1xDb21waWxlZDwvRmlsdGVy
Pg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxz
aGFkZXJzXGNvbXBpbGVkXGNsZWFybXVsdGlwbGUxMXBzLmgiPg0KKyAgICAgIDxGaWx0ZXI+U2hh
ZGVyc1xDb21waWxlZDwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVkXGNsZWFyc2luZ2xlMTFwcy5oIj4N
CisgICAgICA8RmlsdGVyPlNoYWRlcnNcQ29tcGlsZWQ8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1
ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY29tbW9uXHN5c3RlbS5oIj4NCisgICAg
ICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjb21tb25cZGVidWcuaCI+DQorICAgICAgPEZpbHRlcj5I
ZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0icmVuZGVyZXJcQnVmZmVyU3RvcmFnZS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRl
ciBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJyZW5kZXJlclxGZW5jZUltcGwuaCI+DQorICAgICAgPEZpbHRlcj5IZWFk
ZXIgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcZ2VuZXJhdGVtaXAuaCI+DQorICAgICAgPEZpbHRlcj5I
ZWFkZXIgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcSW1hZ2UuaCI+DQorICAgICAgPEZpbHRlcj5IZWFk
ZXIgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcSW5kZXhCdWZmZXIuaCI+DQorICAgICAgPEZpbHRlcj5I
ZWFkZXIgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcSW5kZXhEYXRhTWFuYWdlci5oIj4NCisgICAgICA8
RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxRdWVyeUltcGwuaCI+DQorICAgICAg
PEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyZXIuaCI+DQorICAgICAg
PEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyVGFyZ2V0LmgiPg0KKyAg
ICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNs
dWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFNoYWRlckV4ZWN1dGFibGUu
aCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAg
PC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcU3dhcENoYWlu
LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQorICAg
IDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFRleHR1cmVT
dG9yYWdlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+
DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFZl
cnRleEJ1ZmZlci5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjwvRmls
dGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJl
clx2ZXJ0ZXhjb252ZXJzaW9uLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRl
cmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
InJlbmRlcmVyXFZlcnRleERhdGFNYW5hZ2VyLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9InJlbmRlcmVyXEJ1ZmZlclN0b3JhZ2UxMS5oIj4NCisgICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEluZGV4QnVmZmVyMTEuaCI+DQorICAgICAgPEZp
bHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxRdWVyeTExLmgiPg0KKyAgICAgIDxG
aWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyZXIxMS5oIj4NCisgICAg
ICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNs
dWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlclRhcmdldDExLmgi
Pg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAg
PC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcU2hhZGVyRXhl
Y3V0YWJsZTExLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyMTE8L0Zp
bHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVy
ZXJcU3dhcENoYWluMTEuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXIx
MTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJy
ZW5kZXJlclxUZXh0dXJlU3RvcmFnZTExLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVz
XFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0icmVuZGVyZXJcVmVydGV4QnVmZmVyMTEuaCI+DQorICAgICAgPEZpbHRlcj5IZWFk
ZXIgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxCdWZmZXJTdG9yYWdlOS5oIj4NCisgICAgICA8Rmls
dGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcRmVuY2U5LmgiPg0KKyAgICAgIDxGaWx0
ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxJbWFnZTkuaCI+DQorICAgICAgPEZpbHRl
cj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEluZGV4QnVmZmVyOS5oIj4NCisgICAgICA8
RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcUXVlcnk5LmgiPg0KKyAgICAgIDxG
aWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJlcjkuaCI+DQorICAgICAg
PEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRl
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHJlbmRlcmVyOV91dGlscy5oIj4N
CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9D
bEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyVGFyZ2V0
OS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisg
ICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcU2hhZGVy
RXhlY3V0YWJsZTkuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI5PC9G
aWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRl
cmVyXFN3YXBDaGFpbjkuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI5
PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJl
bmRlcmVyXFRleHR1cmVTdG9yYWdlOS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xS
ZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0icmVuZGVyZXJcVmVydGV4QnVmZmVyOS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBG
aWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0icmVuZGVyZXJcRmVuY2UxMS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBG
aWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9InJlbmRlcmVyXEltYWdlMTEuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIg
RmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJyZW5kZXJlclxyZW5kZXJlcjExX3V0aWxzLmgiPg0KKyAgICAgIDxGaWx0
ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcRmVuY2U5LmgiPg0KKyAgICAgIDxGaWx0
ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsSW5j
bHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxRdWVyeTExLmgiPg0KKyAg
ICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisg
ICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcQmxpdC5o
Ij4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAg
PC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcU2hhZGVyQ2Fj
aGUuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQor
ICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXElucHV0
TGF5b3V0Q2FjaGUuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXIxMTwv
RmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5k
ZXJlclxSZW5kZXJTdGF0ZUNhY2hlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJl
bmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0icmVuZGVyZXJcVmVydGV4RGVjbGFyYXRpb25DYWNoZS5oIj4NCisgICAgICA8RmlsdGVy
PkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iY29uc3RhbnRzLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVy
IEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9InByZWNvbXBpbGVkLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+
DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXElu
ZGV4UmFuZ2VDYWNoZS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjwv
RmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxj
b21tb25cZXZlbnRfdHJhY2VyLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHRoaXJk
X3BhcnR5XHRyYWNlX2V2ZW50XHRyYWNlX2V2ZW50LmgiPg0KKyAgICAgIDxGaWx0ZXI+VGhpcmQg
UGFydHlcdHJhY2VfZXZlbnQ8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICA8L0l0ZW1H
cm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxOb25lIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRl
cnNcQmxpdC5wcyI+DQorICAgICAgPEZpbHRlcj5TaGFkZXJzPC9GaWx0ZXI+DQorICAgIDwvTm9u
ZT4NCisgICAgPE5vbmUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xCbGl0LnZzIj4NCisgICAg
ICA8RmlsdGVyPlNoYWRlcnM8L0ZpbHRlcj4NCisgICAgPC9Ob25lPg0KKyAgICA8Tm9uZSBJbmNs
dWRlPSJyZW5kZXJlclxzaGFkZXJzXGdlbmVyYXRlX3NoYWRlcnMuYmF0Ij4NCisgICAgICA8Rmls
dGVyPlNoYWRlcnM8L0ZpbHRlcj4NCisgICAgPC9Ob25lPg0KKyAgICA8Tm9uZSBJbmNsdWRlPSJy
ZW5kZXJlclxzaGFkZXJzXFBhc3N0aHJvdWdoMTEuaGxzbCI+DQorICAgICAgPEZpbHRlcj5TaGFk
ZXJzPC9GaWx0ZXI+DQorICAgIDwvTm9uZT4NCisgICAgPE5vbmUgSW5jbHVkZT0icmVuZGVyZXJc
c2hhZGVyc1xDbGVhcjExLmhsc2wiPg0KKyAgICAgIDxGaWx0ZXI+U2hhZGVyczwvRmlsdGVyPg0K
KyAgICA8L05vbmU+DQorICAgIDxOb25lIEluY2x1ZGU9ImxpYkdMRVN2Mi5kZWYiIC8+DQorICA8
L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVk
ZT0ibGliR0xFU3YyLnJjIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorPC9Qcm9qZWN0PgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvcHJlY29tcGlsZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL3ByZWNvbXBpbGVkLmgJKHJldmlzaW9uIDE1OTUzMikKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcHJlY29tcGlsZWQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsOSArMzMsOSBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUg
PGQzZDkuaD4KLSNpbmNsdWRlIDxEM0QxMS5oPgorI2luY2x1ZGUgPGQzZDExLmg+CiAjaW5jbHVk
ZSA8ZHhnaS5oPgotI2luY2x1ZGUgPEQzRGNvbXBpbGVyLmg+CisjaW5jbHVkZSA8ZDNkY29tcGls
ZXIuaD4KIAogI2lmZGVmIF9NU0NfVkVSCiAjaW5jbHVkZSA8aGFzaF9tYXA+CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3V0aWxpdGllcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi91dGlsaXRpZXMuY3Bw
CShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3V0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxOCw2ICsyMTgsMjkgQEAgR0xz
aXplaSBDb21wdXRlQ29tcHJlc3NlZFNpemUoR0xzaXplaSB3aQogICAgIH0KIH0KIAorR0xzaXpl
aSBDb21wdXRlVHlwZVNpemUoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAg
IHsKKyAgICAgIGNhc2UgR0xfQllURTogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDE7CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6ICAgICAgICAgICAgICAgICAgIHJldHVy
biAxOworICAgICAgY2FzZSBHTF9TSE9SVDogICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gMjsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6ICAgICAgICAgICAgICAgICAgcmV0
dXJuIDI7CisgICAgICBjYXNlIEdMX0lOVDogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiA0OworICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6ICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gNDsKKyAgICAgIGNhc2UgR0xfRkxPQVQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDQ7CisgICAgICBjYXNlIEdMX0hBTEZfRkxPQVRfT0VTOiAgICAgICAgICAgICAgICAg
IHJldHVybiAyOworICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF81XzZfNTogICAgICAgICAg
ICByZXR1cm4gMjsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNDogICAgICAg
ICAgcmV0dXJuIDI7CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzE6ICAgICAg
ICAgIHJldHVybiAyOworICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80X1JFVl9F
WFQ6ICByZXR1cm4gMjsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfMV81XzVfNV9SRVZf
RVhUOiAgcmV0dXJuIDI7CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JF
Vl9FWFQ6IHJldHVybiA0OworICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfMjRfOF9PRVM6ICAg
ICAgICAgICByZXR1cm4gNDsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCiBib29sIElzQ29tcHJlc3NlZChHTGVudW0g
Zm9ybWF0KQogewogICAgIGlmKGZvcm1hdCA9PSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFf
RVhUIHx8CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3V0aWxp
dGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvdXRpbGl0aWVzLmgJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvdXRpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0
LDcgQEAgaW50IENvbXB1dGVQaXhlbFNpemUoR0xpbnQgaW50ZXJuYWxmb3JtYQogR0xzaXplaSBD
b21wdXRlUGl0Y2goR0xzaXplaSB3aWR0aCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdMaW50IGFs
aWdubWVudCk7CiBHTHNpemVpIENvbXB1dGVDb21wcmVzc2VkUGl0Y2goR0xzaXplaSB3aWR0aCwg
R0xlbnVtIGZvcm1hdCk7CiBHTHNpemVpIENvbXB1dGVDb21wcmVzc2VkU2l6ZShHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCk7CitHTHNpemVpIENvbXB1dGVUeXBl
U2l6ZShHTGVudW0gdHlwZSk7CiBib29sIElzQ29tcHJlc3NlZChHTGVudW0gZm9ybWF0KTsKIGJv
b2wgSXNEZXB0aFRleHR1cmUoR0xlbnVtIGZvcm1hdCk7CiBib29sIElzU3RlbmNpbFRleHR1cmUo
R0xlbnVtIGZvcm1hdCk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3JlbmRlcmVyL0ltYWdlMTEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2UxMS5jcHAJKHJldmlzaW9uIDE1OTUz
MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW1h
Z2UxMS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDggKzUwLDggQEAgdm9pZCBJbWFnZTExOjpn
ZW5lcmF0ZU1pcG1hcChJbWFnZTExICpkZQogICAgIEFTU0VSVChzcmMtPmdldEhlaWdodCgpID09
IDEgfHwgc3JjLT5nZXRIZWlnaHQoKSAvIDIgPT0gZGVzdC0+Z2V0SGVpZ2h0KCkpOwogCiAgICAg
RDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIGRlc3RNYXBwZWQsIHNyY01hcHBlZDsKLSAgICBkZXN0
LT5tYXAoJmRlc3RNYXBwZWQpOwotICAgIHNyYy0+bWFwKCZzcmNNYXBwZWQpOworICAgIGRlc3Qt
Pm1hcChEM0QxMV9NQVBfV1JJVEUsICZkZXN0TWFwcGVkKTsKKyAgICBzcmMtPm1hcChEM0QxMV9N
QVBfUkVBRCwgJnNyY01hcHBlZCk7CiAKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzb3VyY2VE
YXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oc3JjTWFwcGVkLnBE
YXRhKTsKICAgICB1bnNpZ25lZCBjaGFyICpkZXN0RGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5z
aWduZWQgY2hhcio+KGRlc3RNYXBwZWQucERhdGEpOwpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQg
SW1hZ2UxMTo6bG9hZERhdGEoR0xpbnQgeG9mZnNldCwgR0wKICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICppbnB1dCkKIHsKICAgICBEM0Qx
MV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwcGVkSW1hZ2U7Ci0gICAgSFJFU1VMVCByZXN1bHQgPSBt
YXAoJm1hcHBlZEltYWdlKTsKKyAgICBIUkVTVUxUIHJlc3VsdCA9IG1hcChEM0QxMV9NQVBfV1JJ
VEUsICZtYXBwZWRJbWFnZSk7CiAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgIHsKICAgICAg
ICAgRVJSKCJDb3VsZCBub3QgbWFwIGltYWdlIGZvciBsb2FkaW5nLiIpOwpAQCAtMTk0LDcgKzE5
NCw3IEBAIHZvaWQgSW1hZ2UxMTo6bG9hZERhdGEoR0xpbnQgeG9mZnNldCwgR0wKICAgICAgICAg
bG9hZEFscGhhRmxvYXREYXRhVG9SR0JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0
LCBtYXBwZWRJbWFnZS5Sb3dQaXRjaCwgb2Zmc2V0TWFwcGVkRGF0YSk7CiAgICAgICAgIGJyZWFr
OwogICAgICAgY2FzZSBHTF9MVU1JTkFOQ0UzMkZfRVhUOgotICAgICAgICBsb2FkTHVtaW5hbmNl
RmxvYXREYXRhVG9SR0Iod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG1hcHBlZElt
YWdlLlJvd1BpdGNoLCBvZmZzZXRNYXBwZWREYXRhKTsKKyAgICAgICAgbG9hZEx1bWluYW5jZUZs
b2F0RGF0YVRvUkdCQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbWFwcGVkSW1h
Z2UuUm93UGl0Y2gsIG9mZnNldE1hcHBlZERhdGEpOwogICAgICAgICBicmVhazsKICAgICAgIGNh
c2UgR0xfQUxQSEExNkZfRVhUOgogICAgICAgICBsb2FkQWxwaGFIYWxmRmxvYXREYXRhVG9SR0JB
KHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBtYXBwZWRJbWFnZS5Sb3dQaXRjaCwg
b2Zmc2V0TWFwcGVkRGF0YSk7CkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBJbWFnZTExOjpsb2Fk
RGF0YShHTGludCB4b2Zmc2V0LCBHTAogICAgICAgICBsb2FkQkdSQURhdGFUb0JHUkEod2lkdGgs
IGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG1hcHBlZEltYWdlLlJvd1BpdGNoLCBvZmZzZXRN
YXBwZWREYXRhKTsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEdMX1JHQjMyRl9FWFQ6Ci0g
ICAgICAgIGxvYWRSR0JGbG9hdERhdGFUb05hdGl2ZSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNo
LCBpbnB1dCwgbWFwcGVkSW1hZ2UuUm93UGl0Y2gsIG9mZnNldE1hcHBlZERhdGEpOworICAgICAg
ICBsb2FkUkdCRmxvYXREYXRhVG9SR0JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0
LCBtYXBwZWRJbWFnZS5Sb3dQaXRjaCwgb2Zmc2V0TWFwcGVkRGF0YSk7CiAgICAgICAgIGJyZWFr
OwogICAgICAgY2FzZSBHTF9SR0IxNkZfRVhUOgogICAgICAgICBsb2FkUkdCSGFsZkZsb2F0RGF0
YVRvUkdCQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbWFwcGVkSW1hZ2UuUm93
UGl0Y2gsIG9mZnNldE1hcHBlZERhdGEpOwpAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgSW1hZ2Ux
MTo6bG9hZENvbXByZXNzZWREYXRhKEdMaW50IHgKICAgICBBU1NFUlQoeW9mZnNldCAlIDQgPT0g
MCk7CiAKICAgICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwcGVkSW1hZ2U7Ci0gICAgSFJF
U1VMVCByZXN1bHQgPSBtYXAoJm1hcHBlZEltYWdlKTsKKyAgICBIUkVTVUxUIHJlc3VsdCA9IG1h
cChEM0QxMV9NQVBfV1JJVEUsICZtYXBwZWRJbWFnZSk7CiAgICAgaWYgKEZBSUxFRChyZXN1bHQp
KQogICAgIHsKICAgICAgICAgRVJSKCJDb3VsZCBub3QgbWFwIGltYWdlIGZvciBsb2FkaW5nLiIp
OwpAQCAtMzQ0LDggKzM0NCw4IEBAIHZvaWQgSW1hZ2UxMTo6Y29weShHTGludCB4b2Zmc2V0LCBH
TGludCAKICAgICB7CiAgICAgICAgIC8vIFRoaXMgZm9ybWF0IHJlcXVpcmVzIGNvbnZlcnNpb24s
IHNvIHdlIG11c3QgY29weSB0aGUgdGV4dHVyZSB0byBzdGFnaW5nIGFuZCBtYW51YWxseSBjb252
ZXJ0IHZpYSByZWFkUGl4ZWxzCiAgICAgICAgIEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSBtYXBw
ZWRJbWFnZTsKLSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtYXAoJm1hcHBlZEltYWdlKTsKLSAg
ICAgICAgICAgIAorICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1hcChEM0QxMV9NQVBfV1JJVEUs
ICZtYXBwZWRJbWFnZSk7CisKICAgICAgICAgLy8gZGV0ZXJtaW5lIHRoZSBvZmZzZXQgY29vcmRp
bmF0ZSBpbnRvIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIKICAgICAgICAgR0xzaXplaSByb3dPZmZz
ZXQgPSBnbDo6Q29tcHV0ZVBpeGVsU2l6ZShtQWN0dWFsRm9ybWF0KSAqIHhvZmZzZXQ7CiAgICAg
ICAgIHZvaWQgKmRhdGFPZmZzZXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4obWFwcGVk
SW1hZ2UucERhdGEpICsgbWFwcGVkSW1hZ2UuUm93UGl0Y2ggKiB5b2Zmc2V0ICsgcm93T2Zmc2V0
OwpAQCAtNDAyLDcgKzQwMiw3IEBAIHZvaWQgSW1hZ2UxMTo6Y3JlYXRlU3RhZ2luZ1RleHR1cmUo
KQogICAgICAgICBkZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7CiAgICAgICAgIGRlc2MuVXNh
Z2UgPSBEM0QxMV9VU0FHRV9TVEFHSU5HOwogICAgICAgICBkZXNjLkJpbmRGbGFncyA9IDA7Ci0g
ICAgICAgIGRlc2MuQ1BVQWNjZXNzRmxhZ3MgPSBEM0QxMV9DUFVfQUNDRVNTX1dSSVRFOworICAg
ICAgICBkZXNjLkNQVUFjY2Vzc0ZsYWdzID0gRDNEMTFfQ1BVX0FDQ0VTU19SRUFEIHwgRDNEMTFf
Q1BVX0FDQ0VTU19XUklURTsKICAgICAgICAgZGVzYy5NaXNjRmxhZ3MgPSAwOwogCiAgICAgICAg
IEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJmRlc2MsIE5VTEwsICZu
ZXdUZXh0dXJlKTsKQEAgLTQyMCw3ICs0MjAsNyBAQCB2b2lkIEltYWdlMTE6OmNyZWF0ZVN0YWdp
bmdUZXh0dXJlKCkKICAgICBtRGlydHkgPSBmYWxzZTsKIH0KIAotSFJFU1VMVCBJbWFnZTExOjpt
YXAoRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFICptYXApCitIUkVTVUxUIEltYWdlMTE6Om1hcChE
M0QxMV9NQVAgbWFwVHlwZSwgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFICptYXApCiB7CiAgICAg
Y3JlYXRlU3RhZ2luZ1RleHR1cmUoKTsKIApAQCAtNDI5LDcgKzQyOSw3IEBAIEhSRVNVTFQgSW1h
Z2UxMTo6bWFwKEQzRDExX01BUFBFRF9TVUJSRVMKICAgICBpZiAobVN0YWdpbmdUZXh0dXJlKQog
ICAgIHsKICAgICAgICAgSUQzRDExRGV2aWNlQ29udGV4dCAqZGV2aWNlQ29udGV4dCA9IG1SZW5k
ZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpOwotICAgICAgICByZXN1bHQgPSBkZXZpY2VDb250ZXh0
LT5NYXAobVN0YWdpbmdUZXh0dXJlLCBtU3RhZ2luZ1N1YnJlc291cmNlLCBEM0QxMV9NQVBfV1JJ
VEUsIDAsIG1hcCk7CisgICAgICAgIHJlc3VsdCA9IGRldmljZUNvbnRleHQtPk1hcChtU3RhZ2lu
Z1RleHR1cmUsIG1TdGFnaW5nU3VicmVzb3VyY2UsIG1hcFR5cGUsIDAsIG1hcCk7CiAKICAgICAg
ICAgLy8gdGhpcyBjYW4gZmFpbCBpZiB0aGUgZGV2aWNlIGlzIHJlbW92ZWQgKGZyb20gVERSKQog
ICAgICAgICBpZiAoZDNkMTE6OmlzRGV2aWNlTG9zdEVycm9yKHJlc3VsdCkpCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlMTEuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L0ltYWdlMTEuaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZTExLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcg
KzU0LDcgQEAgY2xhc3MgSW1hZ2UxMSA6IHB1YmxpYyBJbWFnZQogICAgIHZpcnR1YWwgdm9pZCBj
b3B5KEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSk7CiAKICAg
cHJvdGVjdGVkOgotICAgIEhSRVNVTFQgbWFwKEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSAqbWFw
KTsKKyAgICBIUkVTVUxUIG1hcChEM0QxMV9NQVAgbWFwVHlwZSwgRDNEMTFfTUFQUEVEX1NVQlJF
U09VUkNFICptYXApOwogICAgIHZvaWQgdW5tYXAoKTsKIAogICBwcml2YXRlOgpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlcjEx
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL0luZGV4QnVmZmVyMTEuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyMTEuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw4IEBAIGJvb2wgSW5kZXhCdWZmZXIxMTo6bWFw
QnVmZmVyKHVuc2lnbmVkIGkKIHsKICAgICBpZiAobUJ1ZmZlcikKICAgICB7Ci0gICAgICAgIGlm
IChvZmZzZXQgKyBzaXplID4gbUJ1ZmZlclNpemUpCisgICAgICAgIC8vIENoZWNrIGZvciBpbnRl
Z2VyIG92ZXJmbG93cyBhbmQgb3V0LW91dC1ib3VuZHMgbWFwIHJlcXVlc3RzCisgICAgICAgIGlm
IChvZmZzZXQgKyBzaXplIDwgb2Zmc2V0IHx8IG9mZnNldCArIHNpemUgPiBtQnVmZmVyU2l6ZSkK
ICAgICAgICAgewogICAgICAgICAgICAgRVJSKCJJbmRleCBidWZmZXIgbWFwIHJhbmdlIGlzIG5v
dCBpbnNpZGUgdGhlIGJ1ZmZlci4iKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhCdWZm
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvcmVuZGVyZXIvSW5kZXhCdWZmZXIuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjcsMTggKzY3LDMwIEBAIHVuc2lnbmVkIGludCBJbmRleEJ1ZmZl
ckludGVyZmFjZTo6Z2V0U2UKICAgICByZXR1cm4gbUluZGV4QnVmZmVyLT5nZXRTZXJpYWwoKTsK
IH0KIAotaW50IEluZGV4QnVmZmVySW50ZXJmYWNlOjptYXBCdWZmZXIodW5zaWduZWQgaW50IHNp
emUsIHZvaWQqKiBvdXRNYXBwZWRNZW1vcnkpCitib29sIEluZGV4QnVmZmVySW50ZXJmYWNlOjpt
YXBCdWZmZXIodW5zaWduZWQgaW50IHNpemUsIHZvaWQqKiBvdXRNYXBwZWRNZW1vcnksIHVuc2ln
bmVkIGludCAqc3RyZWFtT2Zmc2V0KQogeworICAgIC8vIFByb3RlY3QgYWdhaW5zdCBpbnRlZ2Vy
IG92ZXJmbG93CisgICAgaWYgKG1Xcml0ZVBvc2l0aW9uICsgc2l6ZSA8IG1Xcml0ZVBvc2l0aW9u
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIGlmICghbUluZGV4
QnVmZmVyLT5tYXBCdWZmZXIobVdyaXRlUG9zaXRpb24sIHNpemUsIG91dE1hcHBlZE1lbW9yeSkp
CiAgICAgewotICAgICAgICAqb3V0TWFwcGVkTWVtb3J5ID0gTlVMTDsKLSAgICAgICAgcmV0dXJu
IC0xOworICAgICAgICBpZiAob3V0TWFwcGVkTWVtb3J5KQorICAgICAgICB7CisgICAgICAgICAg
ICAqb3V0TWFwcGVkTWVtb3J5ID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgaW50IG9sZFdyaXRlUG9zID0gc3RhdGljX2Nhc3Q8aW50PihtV3Jp
dGVQb3NpdGlvbik7Ci0gICAgbVdyaXRlUG9zaXRpb24gKz0gc2l6ZTsKKyAgICBpZiAoc3RyZWFt
T2Zmc2V0KQorICAgIHsKKyAgICAgICAgKnN0cmVhbU9mZnNldCA9IG1Xcml0ZVBvc2l0aW9uOwor
ICAgIH0KIAotICAgIHJldHVybiBvbGRXcml0ZVBvczsKKyAgICBtV3JpdGVQb3NpdGlvbiArPSBz
aXplOworICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIEluZGV4QnVmZmVySW50ZXJmYWNlOjp1
bm1hcEJ1ZmZlcigpCkBAIC0xNzYsMjcgKzE4OCw5IEBAIGJvb2wgU3RhdGljSW5kZXhCdWZmZXJJ
bnRlcmZhY2U6OnJlc2VydmUKICAgICB9CiB9CiAKLXVuc2lnbmVkIGludCBTdGF0aWNJbmRleEJ1
ZmZlckludGVyZmFjZTo6bG9va3VwUmFuZ2UoaW50cHRyX3Qgb2Zmc2V0LCBHTHNpemVpIGNvdW50
LCB1bnNpZ25lZCBpbnQgKm1pbkluZGV4LCB1bnNpZ25lZCBpbnQgKm1heEluZGV4KQotewotICAg
IEluZGV4UmFuZ2UgcmFuZ2UgPSB7b2Zmc2V0LCBjb3VudH07Ci0KLSAgICBzdGQ6Om1hcDxJbmRl
eFJhbmdlLCBJbmRleFJlc3VsdD46Oml0ZXJhdG9yIHJlcyA9IG1DYWNoZS5maW5kKHJhbmdlKTsK
LQotICAgIGlmIChyZXMgPT0gbUNhY2hlLmVuZCgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIC0x
OwotICAgIH0KLQotICAgICptaW5JbmRleCA9IHJlcy0+c2Vjb25kLm1pbkluZGV4OwotICAgICpt
YXhJbmRleCA9IHJlcy0+c2Vjb25kLm1heEluZGV4OwotICAgIHJldHVybiByZXMtPnNlY29uZC5z
dHJlYW1PZmZzZXQ7Ci19Ci0KLXZvaWQgU3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2U6OmFkZFJh
bmdlKGludHB0cl90IG9mZnNldCwgR0xzaXplaSBjb3VudCwgdW5zaWduZWQgaW50IG1pbkluZGV4
LCB1bnNpZ25lZCBpbnQgbWF4SW5kZXgsIHVuc2lnbmVkIGludCBzdHJlYW1PZmZzZXQpCitJbmRl
eFJhbmdlQ2FjaGUgKlN0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNlOjpnZXRJbmRleFJhbmdlQ2Fj
aGUoKQogewotICAgIEluZGV4UmFuZ2UgaW5kZXhSYW5nZSA9IHtvZmZzZXQsIGNvdW50fTsKLSAg
ICBJbmRleFJlc3VsdCBpbmRleFJlc3VsdCA9IHttaW5JbmRleCwgbWF4SW5kZXgsIHN0cmVhbU9m
ZnNldH07Ci0gICAgbUNhY2hlW2luZGV4UmFuZ2VdID0gaW5kZXhSZXN1bHQ7CisgICAgcmV0dXJu
ICZtSW5kZXhSYW5nZUNhY2hlOwogfQogCiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlci5o
CShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzExLDcg
QEAKICNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX0lOREVYQlVGRkVSX0hfCiAKICNpbmNsdWRl
ICJjb21tb24vYW5nbGV1dGlscy5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9JbmRl
eFJhbmdlQ2FjaGUuaCIKIAogbmFtZXNwYWNlIHJ4CiB7CkBAIC01OCw3ICs1OSw3IEBAIGNsYXNz
IEluZGV4QnVmZmVySW50ZXJmYWNlCiAKICAgICB1bnNpZ25lZCBpbnQgZ2V0U2VyaWFsKCkgY29u
c3Q7CiAKLSAgICBpbnQgbWFwQnVmZmVyKHVuc2lnbmVkIGludCBzaXplLCB2b2lkKiogb3V0TWFw
cGVkTWVtb3J5KTsKKyAgICBib29sIG1hcEJ1ZmZlcih1bnNpZ25lZCBpbnQgc2l6ZSwgdm9pZCoq
IG91dE1hcHBlZE1lbW9yeSwgdW5zaWduZWQgaW50ICpzdHJlYW1PZmZzZXQpOwogICAgIGJvb2wg
dW5tYXBCdWZmZXIoKTsKIAogICAgIEluZGV4QnVmZmVyICpnZXRJbmRleEJ1ZmZlcigpIGNvbnN0
OwpAQCAtOTksMzcgKzEwMCwxMCBAQCBjbGFzcyBTdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZSA6
IHB1YmxpCiAKICAgICB2aXJ0dWFsIGJvb2wgcmVzZXJ2ZUJ1ZmZlclNwYWNlKHVuc2lnbmVkIGlu
dCBzaXplLCBHTGVudW0gaW5kZXhUeXBlKTsKIAotICAgIHVuc2lnbmVkIGludCBsb29rdXBSYW5n
ZShpbnRwdHJfdCBvZmZzZXQsIEdMc2l6ZWkgY291bnQsIHVuc2lnbmVkIGludCAqbWluSW5kZXgs
IHVuc2lnbmVkIGludCAqbWF4SW5kZXgpOyAgIC8vIFJldHVybnMgdGhlIG9mZnNldCBpbnRvIHRo
ZSBpbmRleCBidWZmZXIsIG9yIC0xIGlmIG5vdCBmb3VuZAotICAgIHZvaWQgYWRkUmFuZ2UoaW50
cHRyX3Qgb2Zmc2V0LCBHTHNpemVpIGNvdW50LCB1bnNpZ25lZCBpbnQgbWluSW5kZXgsIHVuc2ln
bmVkIGludCBtYXhJbmRleCwgdW5zaWduZWQgaW50IHN0cmVhbU9mZnNldCk7CisgICAgSW5kZXhS
YW5nZUNhY2hlICpnZXRJbmRleFJhbmdlQ2FjaGUoKTsKIAogICBwcml2YXRlOgotICAgIHN0cnVj
dCBJbmRleFJhbmdlCi0gICAgewotICAgICAgICBpbnRwdHJfdCBvZmZzZXQ7Ci0gICAgICAgIEdM
c2l6ZWkgY291bnQ7Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgSW5kZXhSYW5nZSYg
cmhzKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAob2Zmc2V0ICE9IHJocy5vZmZz
ZXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG9mZnNldCA8IHJocy5v
ZmZzZXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoY291bnQgIT0gcmhzLmNvdW50
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBjb3VudCA8IHJocy5jb3Vu
dDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQot
ICAgIH07Ci0KLSAgICBzdHJ1Y3QgSW5kZXhSZXN1bHQKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVk
IGludCBtaW5JbmRleDsKLSAgICAgICAgdW5zaWduZWQgaW50IG1heEluZGV4OwotICAgICAgICB1
bnNpZ25lZCBpbnQgc3RyZWFtT2Zmc2V0OwotICAgIH07Ci0KLSAgICBzdGQ6Om1hcDxJbmRleFJh
bmdlLCBJbmRleFJlc3VsdD4gbUNhY2hlOworICAgIEluZGV4UmFuZ2VDYWNoZSBtSW5kZXhSYW5n
ZUNhY2hlOwogfTsKIAogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9JbmRleERhdGFNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4RGF0YU1hbmFnZXIu
Y3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL3JlbmRlcmVyL0luZGV4RGF0YU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
Myw2ICsxMyw3IEBACiAKICNpbmNsdWRlICJsaWJHTEVTdjIvQnVmZmVyLmgiCiAjaW5jbHVkZSAi
bGliR0xFU3YyL21haW4uaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvdXRpbGl0aWVzLmgiCiAjaW5j
bHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyLmgiCiAKIG5hbWVzcGFjZSByeApA
QCAtNTMsMTcgKzU0LDYgQEAgSW5kZXhEYXRhTWFuYWdlcjo6fkluZGV4RGF0YU1hbmFnZXIoKQog
ICAgIGRlbGV0ZSBtQ291bnRpbmdCdWZmZXI7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBpbnQgaW5k
ZXhUeXBlU2l6ZShHTGVudW0gdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpCi0gICAgewotICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6ICAgcmV0dXJuIHNpemVvZihHTHVpbnQpOwotICAgICAg
Y2FzZSBHTF9VTlNJR05FRF9TSE9SVDogcmV0dXJuIHNpemVvZihHTHVzaG9ydCk7Ci0gICAgICBj
YXNlIEdMX1VOU0lHTkVEX0JZVEU6ICByZXR1cm4gc2l6ZW9mKEdMdWJ5dGUpOwotICAgICAgZGVm
YXVsdDogVU5SRUFDSEFCTEUoKTsgcmV0dXJuIHNpemVvZihHTHVzaG9ydCk7Ci0gICAgfQotfQot
CiBzdGF0aWMgdm9pZCBjb252ZXJ0SW5kaWNlcyhHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqaW5w
dXQsIEdMc2l6ZWkgY291bnQsIHZvaWQgKm91dHB1dCkKIHsKICAgICBpZiAodHlwZSA9PSBHTF9V
TlNJR05FRF9CWVRFKQpAQCAtMTI1LDEzICsxMTUsMTkgQEAgR0xlbnVtIEluZGV4RGF0YU1hbmFn
ZXI6OnByZXBhcmVJbmRleERhdAogICAgIH0KIAogICAgIEdMZW51bSBkZXN0aW5hdGlvbkluZGV4
VHlwZSA9ICh0eXBlID09IEdMX1VOU0lHTkVEX0lOVCkgPyBHTF9VTlNJR05FRF9JTlQgOiBHTF9V
TlNJR05FRF9TSE9SVDsKLSAgICBpbnRwdHJfdCBvZmZzZXQgPSByZWludGVycHJldF9jYXN0PGlu
dHB0cl90PihpbmRpY2VzKTsKKyAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0ID0gMDsKICAgICBib29s
IGFsaWduZWRPZmZzZXQgPSBmYWxzZTsKIAogICAgIEJ1ZmZlclN0b3JhZ2UgKnN0b3JhZ2UgPSBO
VUxMOwogCiAgICAgaWYgKGJ1ZmZlciAhPSBOVUxMKQogICAgIHsKKyAgICAgICAgaWYgKHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihpbmRpY2VzKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQgaW50Pjo6bWF4KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBHTF9PVVRf
T0ZfTUVNT1JZOworICAgICAgICB9CisgICAgICAgIG9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkIGludD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGluZGljZXMpKTsKKwogICAgICAg
ICBzdG9yYWdlID0gYnVmZmVyLT5nZXRTdG9yYWdlKCk7CiAKICAgICAgICAgc3dpdGNoICh0eXBl
KQpAQCAtMTQyLDcgKzEzOCwxNiBAQCBHTGVudW0gSW5kZXhEYXRhTWFuYWdlcjo6cHJlcGFyZUlu
ZGV4RGF0CiAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgYWxpZ25lZE9mZnNldCA9
IGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGluZGV4VHlwZVNpemUodHlwZSkgKiBj
b3VudCArIG9mZnNldCA+IHN0b3JhZ2UtPmdldFNpemUoKSkKKyAgICAgICAgdW5zaWduZWQgaW50
IHR5cGVTaXplID0gZ2w6OkNvbXB1dGVUeXBlU2l6ZSh0eXBlKTsKKworICAgICAgICAvLyBjaGVj
ayBmb3IgaW50ZWdlciBvdmVyZmxvd3MKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVk
IGludD4oY291bnQpID4gKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6bWF4KCkg
LyB0eXBlU2l6ZSkgfHwKKyAgICAgICAgICAgIHR5cGVTaXplICogc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgaW50Pihjb3VudCkgKyBvZmZzZXQgPCBvZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBHTF9PVVRfT0ZfTUVNT1JZOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHR5cGVT
aXplICogc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihjb3VudCkgKyBvZmZzZXQgPiBzdG9yYWdl
LT5nZXRTaXplKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBHTF9JTlZBTElEX09Q
RVJBVElPTjsKICAgICAgICAgfQpAQCAtMTU2LDM3ICsxNjEsNDQgQEAgR0xlbnVtIEluZGV4RGF0
YU1hbmFnZXI6OnByZXBhcmVJbmRleERhdAogICAgIEluZGV4QnVmZmVySW50ZXJmYWNlICppbmRl
eEJ1ZmZlciA9IHN0cmVhbWluZ0J1ZmZlcjsKICAgICBib29sIGRpcmVjdFN0b3JhZ2UgPSBhbGln
bmVkT2Zmc2V0ICYmIHN0b3JhZ2UgJiYgc3RvcmFnZS0+c3VwcG9ydHNEaXJlY3RCaW5kaW5nKCkg
JiYKICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbkluZGV4VHlwZSA9PSB0eXBl
OwotICAgIFVJTlQgc3RyZWFtT2Zmc2V0ID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgc3RyZWFtT2Zm
c2V0ID0gMDsKIAogICAgIGlmIChkaXJlY3RTdG9yYWdlKQogICAgIHsKICAgICAgICAgaW5kZXhC
dWZmZXIgPSBzdHJlYW1pbmdCdWZmZXI7CiAgICAgICAgIHN0cmVhbU9mZnNldCA9IG9mZnNldDsK
ICAgICAgICAgc3RvcmFnZS0+bWFya0J1ZmZlclVzYWdlKCk7Ci0gICAgICAgIGNvbXB1dGVSYW5n
ZSh0eXBlLCBpbmRpY2VzLCBjb3VudCwgJnRyYW5zbGF0ZWQtPm1pbkluZGV4LCAmdHJhbnNsYXRl
ZC0+bWF4SW5kZXgpOworCisgICAgICAgIGlmICghYnVmZmVyLT5nZXRJbmRleFJhbmdlQ2FjaGUo
KS0+ZmluZFJhbmdlKHR5cGUsIG9mZnNldCwgY291bnQsICZ0cmFuc2xhdGVkLT5taW5JbmRleCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRy
YW5zbGF0ZWQtPm1heEluZGV4LCBOVUxMKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29tcHV0
ZVJhbmdlKHR5cGUsIGluZGljZXMsIGNvdW50LCAmdHJhbnNsYXRlZC0+bWluSW5kZXgsICZ0cmFu
c2xhdGVkLT5tYXhJbmRleCk7CisgICAgICAgICAgICBidWZmZXItPmdldEluZGV4UmFuZ2VDYWNo
ZSgpLT5hZGRSYW5nZSh0eXBlLCBvZmZzZXQsIGNvdW50LCB0cmFuc2xhdGVkLT5taW5JbmRleCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5z
bGF0ZWQtPm1heEluZGV4LCBvZmZzZXQpOworICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgaWYg
KHN0YXRpY0J1ZmZlciAmJiBzdGF0aWNCdWZmZXItPmdldEJ1ZmZlclNpemUoKSAhPSAwICYmIHN0
YXRpY0J1ZmZlci0+Z2V0SW5kZXhUeXBlKCkgPT0gdHlwZSAmJiBhbGlnbmVkT2Zmc2V0KQogICAg
IHsKICAgICAgICAgaW5kZXhCdWZmZXIgPSBzdGF0aWNCdWZmZXI7Ci0gICAgICAgIHN0cmVhbU9m
ZnNldCA9IHN0YXRpY0J1ZmZlci0+bG9va3VwUmFuZ2Uob2Zmc2V0LCBjb3VudCwgJnRyYW5zbGF0
ZWQtPm1pbkluZGV4LCAmdHJhbnNsYXRlZC0+bWF4SW5kZXgpOwotCi0gICAgICAgIGlmIChzdHJl
YW1PZmZzZXQgPT0gLTEpCisgICAgICAgIGlmICghc3RhdGljQnVmZmVyLT5nZXRJbmRleFJhbmdl
Q2FjaGUoKS0+ZmluZFJhbmdlKHR5cGUsIG9mZnNldCwgY291bnQsICZ0cmFuc2xhdGVkLT5taW5J
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJnRyYW5zbGF0ZWQtPm1heEluZGV4LCAmc3RyZWFtT2Zmc2V0KSkKICAgICAgICAg
ewotICAgICAgICAgICAgc3RyZWFtT2Zmc2V0ID0gKG9mZnNldCAvIGluZGV4VHlwZVNpemUodHlw
ZSkpICogaW5kZXhUeXBlU2l6ZShkZXN0aW5hdGlvbkluZGV4VHlwZSk7CisgICAgICAgICAgICBz
dHJlYW1PZmZzZXQgPSAob2Zmc2V0IC8gZ2w6OkNvbXB1dGVUeXBlU2l6ZSh0eXBlKSkgKiBnbDo6
Q29tcHV0ZVR5cGVTaXplKGRlc3RpbmF0aW9uSW5kZXhUeXBlKTsKICAgICAgICAgICAgIGNvbXB1
dGVSYW5nZSh0eXBlLCBpbmRpY2VzLCBjb3VudCwgJnRyYW5zbGF0ZWQtPm1pbkluZGV4LCAmdHJh
bnNsYXRlZC0+bWF4SW5kZXgpOwotICAgICAgICAgICAgc3RhdGljQnVmZmVyLT5hZGRSYW5nZShv
ZmZzZXQsIGNvdW50LCB0cmFuc2xhdGVkLT5taW5JbmRleCwgdHJhbnNsYXRlZC0+bWF4SW5kZXgs
IHN0cmVhbU9mZnNldCk7CisgICAgICAgICAgICBzdGF0aWNCdWZmZXItPmdldEluZGV4UmFuZ2VD
YWNoZSgpLT5hZGRSYW5nZSh0eXBlLCBvZmZzZXQsIGNvdW50LCB0cmFuc2xhdGVkLT5taW5JbmRl
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRyYW5zbGF0ZWQtPm1heEluZGV4LCBzdHJlYW1PZmZzZXQpOwogICAgICAgICB9CiAgICAg
fQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGludCBjb252ZXJ0Q291bnQgPSBjb3VudDsKKyAg
ICAgICAgdW5zaWduZWQgaW50IGNvbnZlcnRDb3VudCA9IGNvdW50OwogCiAgICAgICAgIGlmIChz
dGF0aWNCdWZmZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChzdGF0aWNCdWZmZXItPmdl
dEJ1ZmZlclNpemUoKSA9PSAwICYmIGFsaWduZWRPZmZzZXQpCiAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgaW5kZXhCdWZmZXIgPSBzdGF0aWNCdWZmZXI7Ci0gICAgICAgICAgICAgICAg
Y29udmVydENvdW50ID0gc3RvcmFnZS0+Z2V0U2l6ZSgpIC8gaW5kZXhUeXBlU2l6ZSh0eXBlKTsK
KyAgICAgICAgICAgICAgICBjb252ZXJ0Q291bnQgPSBzdG9yYWdlLT5nZXRTaXplKCkgLyBnbDo6
Q29tcHV0ZVR5cGVTaXplKHR5cGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgewpAQCAtMjAxLDEyICsyMTMsMjIgQEAgR0xlbnVtIEluZGV4RGF0YU1hbmFn
ZXI6OnByZXBhcmVJbmRleERhdAogICAgICAgICAgICAgcmV0dXJuIEdMX0lOVkFMSURfT1BFUkFU
SU9OOwogICAgICAgICB9CiAKLSAgICAgICAgdW5zaWduZWQgaW50IGJ1ZmZlclNpemVSZXF1aXJl
ZCA9IGNvbnZlcnRDb3VudCAqIGluZGV4VHlwZVNpemUoZGVzdGluYXRpb25JbmRleFR5cGUpOwot
ICAgICAgICBpbmRleEJ1ZmZlci0+cmVzZXJ2ZUJ1ZmZlclNwYWNlKGJ1ZmZlclNpemVSZXF1aXJl
ZCwgdHlwZSk7CisgICAgICAgIHVuc2lnbmVkIGludCBpbmRleFR5cGVTaXplID0gZ2w6OkNvbXB1
dGVUeXBlU2l6ZShkZXN0aW5hdGlvbkluZGV4VHlwZSk7CisgICAgICAgIGlmIChjb252ZXJ0Q291
bnQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGludD46Om1heCgpIC8gaW5kZXhUeXBl
U2l6ZSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJSZXNlcnZpbmcgJXUgaW5kaWNpZXMg
b2YgJXUgYnl0ZXMgZWFjaCBleGNlZWRzIHRoZSBtYXhpbXVtIGJ1ZmZlciBzaXplLiIsIGNvbnZl
cnRDb3VudCwgaW5kZXhUeXBlU2l6ZSk7CisgICAgICAgICAgICByZXR1cm4gR0xfT1VUX09GX01F
TU9SWTsKKyAgICAgICAgfQorCisgICAgICAgIHVuc2lnbmVkIGludCBidWZmZXJTaXplUmVxdWly
ZWQgPSBjb252ZXJ0Q291bnQgKiBpbmRleFR5cGVTaXplOworICAgICAgICBpZiAoIWluZGV4QnVm
ZmVyLT5yZXNlcnZlQnVmZmVyU3BhY2UoYnVmZmVyU2l6ZVJlcXVpcmVkLCB0eXBlKSkKKyAgICAg
ICAgeworICAgICAgICAgICAgRVJSKCJGYWlsZWQgdG8gcmVzZXJ2ZSAldSBieXRlcyBpbiBhbiBp
bmRleCBidWZmZXIuIiwgYnVmZmVyU2l6ZVJlcXVpcmVkKTsKKyAgICAgICAgICAgIHJldHVybiBH
TF9PVVRfT0ZfTUVNT1JZOworICAgICAgICB9CiAKICAgICAgICAgdm9pZCogb3V0cHV0ID0gTlVM
TDsKLSAgICAgICAgc3RyZWFtT2Zmc2V0ID0gaW5kZXhCdWZmZXItPm1hcEJ1ZmZlcihidWZmZXJT
aXplUmVxdWlyZWQsICZvdXRwdXQpOwotICAgICAgICBpZiAoc3RyZWFtT2Zmc2V0ID09IC0xIHx8
IG91dHB1dCA9PSBOVUxMKQorICAgICAgICBpZiAoIWluZGV4QnVmZmVyLT5tYXBCdWZmZXIoYnVm
ZmVyU2l6ZVJlcXVpcmVkLCAmb3V0cHV0LCAmc3RyZWFtT2Zmc2V0KSkKICAgICAgICAgewogICAg
ICAgICAgICAgRVJSKCJGYWlsZWQgdG8gbWFwIGluZGV4IGJ1ZmZlci4iKTsKICAgICAgICAgICAg
IHJldHVybiBHTF9PVVRfT0ZfTUVNT1JZOwpAQCAtMjI0LDIwICsyNDYsMjEgQEAgR0xlbnVtIElu
ZGV4RGF0YU1hbmFnZXI6OnByZXBhcmVJbmRleERhdAogCiAgICAgICAgIGlmIChzdGF0aWNCdWZm
ZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0cmVhbU9mZnNldCA9IChvZmZzZXQgLyBpbmRl
eFR5cGVTaXplKHR5cGUpKSAqIGluZGV4VHlwZVNpemUoZGVzdGluYXRpb25JbmRleFR5cGUpOwot
ICAgICAgICAgICAgc3RhdGljQnVmZmVyLT5hZGRSYW5nZShvZmZzZXQsIGNvdW50LCB0cmFuc2xh
dGVkLT5taW5JbmRleCwgdHJhbnNsYXRlZC0+bWF4SW5kZXgsIHN0cmVhbU9mZnNldCk7CisgICAg
ICAgICAgICBzdHJlYW1PZmZzZXQgPSAob2Zmc2V0IC8gZ2w6OkNvbXB1dGVUeXBlU2l6ZSh0eXBl
KSkgKiBnbDo6Q29tcHV0ZVR5cGVTaXplKGRlc3RpbmF0aW9uSW5kZXhUeXBlKTsKKyAgICAgICAg
ICAgIHN0YXRpY0J1ZmZlci0+Z2V0SW5kZXhSYW5nZUNhY2hlKCktPmFkZFJhbmdlKHR5cGUsIG9m
ZnNldCwgY291bnQsIHRyYW5zbGF0ZWQtPm1pbkluZGV4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlZC0+bWF4SW5kZXgs
IHN0cmVhbU9mZnNldCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICB0cmFuc2xhdGVkLT5zdG9y
YWdlID0gZGlyZWN0U3RvcmFnZSA/IHN0b3JhZ2UgOiBOVUxMOwogICAgIHRyYW5zbGF0ZWQtPmlu
ZGV4QnVmZmVyID0gaW5kZXhCdWZmZXItPmdldEluZGV4QnVmZmVyKCk7CiAgICAgdHJhbnNsYXRl
ZC0+c2VyaWFsID0gZGlyZWN0U3RvcmFnZSA/IHN0b3JhZ2UtPmdldFNlcmlhbCgpIDogaW5kZXhC
dWZmZXItPmdldFNlcmlhbCgpOwotICAgIHRyYW5zbGF0ZWQtPnN0YXJ0SW5kZXggPSBzdHJlYW1P
ZmZzZXQgLyBpbmRleFR5cGVTaXplKGRlc3RpbmF0aW9uSW5kZXhUeXBlKTsKKyAgICB0cmFuc2xh
dGVkLT5zdGFydEluZGV4ID0gc3RyZWFtT2Zmc2V0IC8gZ2w6OkNvbXB1dGVUeXBlU2l6ZShkZXN0
aW5hdGlvbkluZGV4VHlwZSk7CiAgICAgdHJhbnNsYXRlZC0+c3RhcnRPZmZzZXQgPSBzdHJlYW1P
ZmZzZXQ7CiAKICAgICBpZiAoYnVmZmVyKQogICAgIHsKLSAgICAgICAgYnVmZmVyLT5wcm9tb3Rl
U3RhdGljVXNhZ2UoY291bnQgKiBpbmRleFR5cGVTaXplKHR5cGUpKTsKKyAgICAgICAgYnVmZmVy
LT5wcm9tb3RlU3RhdGljVXNhZ2UoY291bnQgKiBnbDo6Q29tcHV0ZVR5cGVTaXplKHR5cGUpKTsK
ICAgICB9CiAKICAgICByZXR1cm4gR0xfTk9fRVJST1I7CkBAIC0yNTYsNyArMjc5LDcgQEAgU3Rh
dGljSW5kZXhCdWZmZXJJbnRlcmZhY2UgKkluZGV4RGF0YU1hbgogICAgICAgICAgICAgbUNvdW50
aW5nQnVmZmVyLT5yZXNlcnZlQnVmZmVyU3BhY2Uoc3BhY2VOZWVkZWQsIEdMX1VOU0lHTkVEX1NI
T1JUKTsKIAogICAgICAgICAgICAgdm9pZCogbWFwcGVkTWVtb3J5ID0gTlVMTDsKLSAgICAgICAg
ICAgIGlmIChtQ291bnRpbmdCdWZmZXItPm1hcEJ1ZmZlcihzcGFjZU5lZWRlZCwgJm1hcHBlZE1l
bW9yeSkgPT0gLTEgfHwgbWFwcGVkTWVtb3J5ID09IE5VTEwpCisgICAgICAgICAgICBpZiAoIW1D
b3VudGluZ0J1ZmZlci0+bWFwQnVmZmVyKHNwYWNlTmVlZGVkLCAmbWFwcGVkTWVtb3J5LCBOVUxM
KSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBFUlIoIkZhaWxlZCB0byBtYXAgY291
bnRpbmcgYnVmZmVyLiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjg2LDcg
KzMwOSw3IEBAIFN0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNlICpJbmRleERhdGFNYW4KICAgICAg
ICAgICAgIG1Db3VudGluZ0J1ZmZlci0+cmVzZXJ2ZUJ1ZmZlclNwYWNlKHNwYWNlTmVlZGVkLCBH
TF9VTlNJR05FRF9JTlQpOwogCiAgICAgICAgICAgICB2b2lkKiBtYXBwZWRNZW1vcnkgPSBOVUxM
OwotICAgICAgICAgICAgaWYgKG1Db3VudGluZ0J1ZmZlci0+bWFwQnVmZmVyKHNwYWNlTmVlZGVk
LCAmbWFwcGVkTWVtb3J5KSA9PSAtMSB8fCBtYXBwZWRNZW1vcnkgPT0gTlVMTCkKKyAgICAgICAg
ICAgIGlmICghbUNvdW50aW5nQnVmZmVyLT5tYXBCdWZmZXIoc3BhY2VOZWVkZWQsICZtYXBwZWRN
ZW1vcnksIE5VTEwpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIEVSUigiRmFpbGVk
IHRvIG1hcCBjb3VudGluZyBidWZmZXIuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0lu
ZGV4UmFuZ2VDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleFJhbmdlQ2FjaGUuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleFJh
bmdlQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTcgQEAKKyNpbmNsdWRlICJw
cmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMyBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEluZGV4UmFuZ2VDYWNoZS5jcHA6IERl
ZmluZXMgdGhlIHJ4OjpJbmRleFJhbmdlQ2FjaGUgY2xhc3Mgd2hpY2ggc3RvcmVzIGluZm9ybWF0
aW9uIGFib3V0CisvLyByYW5nZXMgb2YgaW5kaWNlcy4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9y
ZW5kZXJlci9JbmRleFJhbmdlQ2FjaGUuaCIKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKyNp
bmNsdWRlICJsaWJHTEVTdjIvdXRpbGl0aWVzLmgiCisjaW5jbHVkZSA8dHVwbGU+CisKK25hbWVz
cGFjZSByeAoreworCit2b2lkIEluZGV4UmFuZ2VDYWNoZTo6YWRkUmFuZ2UoR0xlbnVtIHR5cGUs
IHVuc2lnbmVkIGludCBvZmZzZXQsIEdMc2l6ZWkgY291bnQsIHVuc2lnbmVkIGludCBtaW5JZHgs
IHVuc2lnbmVkIGludCBtYXhJZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50IHN0cmVhbU9mZnNldCkKK3sKKyAgICBtSW5kZXhSYW5nZUNhY2hlW0luZGV4UmFu
Z2UodHlwZSwgb2Zmc2V0LCBjb3VudCldID0gSW5kZXhCb3VuZHMobWluSWR4LCBtYXhJZHgsIHN0
cmVhbU9mZnNldCk7Cit9CisKK3ZvaWQgSW5kZXhSYW5nZUNhY2hlOjppbnZhbGlkYXRlUmFuZ2Uo
dW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IHNpemUpCit7CisgICAgdW5zaWduZWQg
aW50IGludmFsaWRhdGVTdGFydCA9IG9mZnNldDsKKyAgICB1bnNpZ25lZCBpbnQgaW52YWxpZGF0
ZUVuZCA9IG9mZnNldCArIHNpemU7CisKKyAgICBJbmRleFJhbmdlTWFwOjppdGVyYXRvciBpID0g
bUluZGV4UmFuZ2VDYWNoZS5iZWdpbigpOworICAgIHdoaWxlIChpICE9IG1JbmRleFJhbmdlQ2Fj
aGUuZW5kKCkpCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgcmFuZ2VTdGFydCA9IGktPnNl
Y29uZC5zdHJlYW1PZmZzZXQ7CisgICAgICAgIHVuc2lnbmVkIGludCByYW5nZUVuZCA9IGktPnNl
Y29uZC5zdHJlYW1PZmZzZXQgKyAoZ2w6OkNvbXB1dGVUeXBlU2l6ZShpLT5maXJzdC50eXBlKSAq
IGktPmZpcnN0LmNvdW50KTsKKworICAgICAgICBpZiAoaW52YWxpZGF0ZUVuZCA8IHJhbmdlU3Rh
cnQgfHwgaW52YWxpZGF0ZVN0YXJ0ID4gcmFuZ2VFbmQpCisgICAgICAgIHsKKyAgICAgICAgICAg
ICsraTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGkg
PSBtSW5kZXhSYW5nZUNhY2hlLmVyYXNlKGkpOworICAgICAgICB9CisgICAgfQorfQorCitib29s
IEluZGV4UmFuZ2VDYWNoZTo6ZmluZFJhbmdlKEdMZW51bSB0eXBlLCB1bnNpZ25lZCBpbnQgb2Zm
c2V0LCBHTHNpemVpIGNvdW50LCB1bnNpZ25lZCBpbnQgKm91dE1pbkluZGV4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKm91dE1heEluZGV4LCB1bnNpZ25l
ZCBpbnQgKm91dFN0cmVhbU9mZnNldCkgY29uc3QKK3sKKyAgICBJbmRleFJhbmdlTWFwOjpjb25z
dF9pdGVyYXRvciBpID0gbUluZGV4UmFuZ2VDYWNoZS5maW5kKEluZGV4UmFuZ2UodHlwZSwgb2Zm
c2V0LCBjb3VudCkpOworICAgIGlmIChpICE9IG1JbmRleFJhbmdlQ2FjaGUuZW5kKCkpCisgICAg
eworICAgICAgICBpZiAob3V0TWluSW5kZXgpICAgICAqb3V0TWluSW5kZXggPSBpLT5zZWNvbmQu
bWluSW5kZXg7CisgICAgICAgIGlmIChvdXRNYXhJbmRleCkgICAgICpvdXRNYXhJbmRleCA9IGkt
PnNlY29uZC5tYXhJbmRleDsKKyAgICAgICAgaWYgKG91dFN0cmVhbU9mZnNldCkgKm91dFN0cmVh
bU9mZnNldCA9IGktPnNlY29uZC5zdHJlYW1PZmZzZXQ7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAob3V0TWluSW5kZXgpICAgICAqb3V0
TWluSW5kZXggPSAwOworICAgICAgICBpZiAob3V0TWF4SW5kZXgpICAgICAqb3V0TWF4SW5kZXgg
PSAwOworICAgICAgICBpZiAob3V0U3RyZWFtT2Zmc2V0KSAqb3V0U3RyZWFtT2Zmc2V0ID0gMDsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwordm9pZCBJbmRleFJhbmdlQ2FjaGU6
OmNsZWFyKCkKK3sKKyAgICBtSW5kZXhSYW5nZUNhY2hlLmNsZWFyKCk7Cit9CisKK0luZGV4UmFu
Z2VDYWNoZTo6SW5kZXhSYW5nZTo6SW5kZXhSYW5nZSgpCisgICAgOiB0eXBlKEdMX05PTkUpLCBv
ZmZzZXQoMCksIGNvdW50KDApCit7Cit9CisKK0luZGV4UmFuZ2VDYWNoZTo6SW5kZXhSYW5nZTo6
SW5kZXhSYW5nZShHTGVudW0gdHlwLCBpbnRwdHJfdCBvZmYsIEdMc2l6ZWkgYykKKyAgICA6IHR5
cGUodHlwKSwgb2Zmc2V0KG9mZiksIGNvdW50KGMpCit7Cit9CisKK2Jvb2wgSW5kZXhSYW5nZUNh
Y2hlOjpJbmRleFJhbmdlOjpvcGVyYXRvcjwoY29uc3QgSW5kZXhSYW5nZSYgcmhzKSBjb25zdAor
eworICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUodHlwZSwgb2Zmc2V0LCBjb3VudCkgPCBzdGQ6
Om1ha2VfdHVwbGUocmhzLnR5cGUsIHJocy5vZmZzZXQsIHJocy5jb3VudCk7Cit9CisKK0luZGV4
UmFuZ2VDYWNoZTo6SW5kZXhCb3VuZHM6OkluZGV4Qm91bmRzKCkKKyAgICA6IG1pbkluZGV4KDAp
LCBtYXhJbmRleCgwKSwgc3RyZWFtT2Zmc2V0KDApCit7Cit9CisKK0luZGV4UmFuZ2VDYWNoZTo6
SW5kZXhCb3VuZHM6OkluZGV4Qm91bmRzKHVuc2lnbmVkIGludCBtaW5JZHgsIHVuc2lnbmVkIGlu
dCBtYXhJZHgsIHVuc2lnbmVkIGludCBvZmZzZXQpCisgICAgOiBtaW5JbmRleChtaW5JZHgpLCBt
YXhJbmRleChtYXhJZHgpLCBzdHJlYW1PZmZzZXQob2Zmc2V0KQoreworfQorCit9CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4UmFuZ2VD
YWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvcmVuZGVyZXIvSW5kZXhSYW5nZUNhY2hlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4UmFuZ2VDYWNoZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBJbmRleFJh
bmdlQ2FjaGUuaDogRGVmaW5lcyB0aGUgcng6OkluZGV4UmFuZ2VDYWNoZSBjbGFzcyB3aGljaCBz
dG9yZXMgaW5mb3JtYXRpb24gYWJvdXQKKy8vIHJhbmdlcyBvZiBpbmRpY2VzLgorCisjaWZuZGVm
IExJQkdMRVNWMl9SRU5ERVJFUl9JTkRFWFJBTkdFQ0FDSEVfSF8KKyNkZWZpbmUgTElCR0xFU1Yy
X1JFTkRFUkVSX0lOREVYUkFOR0VDQUNIRV9IXworCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRp
bHMuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIEluZGV4UmFuZ2VDYWNoZQoreworICBw
dWJsaWM6CisgICAgdm9pZCBhZGRSYW5nZShHTGVudW0gdHlwZSwgdW5zaWduZWQgaW50IG9mZnNl
dCwgR0xzaXplaSBjb3VudCwgdW5zaWduZWQgaW50IG1pbklkeCwgdW5zaWduZWQgaW50IG1heElk
eCwKKyAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzdHJlYW1PZmZzZXQpOworICAgIGJv
b2wgZmluZFJhbmdlKEdMZW51bSB0eXBlLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBHTHNpemVpIGNv
dW50LCB1bnNpZ25lZCBpbnQgKm91dE1pbkluZGV4LAorICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCAqb3V0TWF4SW5kZXgsIHVuc2lnbmVkIGludCAqb3V0U3RyZWFtT2Zmc2V0KSBjb25z
dDsKKworICAgIHZvaWQgaW52YWxpZGF0ZVJhbmdlKHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2ln
bmVkIGludCBzaXplKTsKKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgcHJpdmF0ZToKKyAgICBzdHJ1
Y3QgSW5kZXhSYW5nZQorICAgIHsKKyAgICAgICAgR0xlbnVtIHR5cGU7CisgICAgICAgIHVuc2ln
bmVkIGludCBvZmZzZXQ7CisgICAgICAgIEdMc2l6ZWkgY291bnQ7CisKKyAgICAgICAgSW5kZXhS
YW5nZSgpOworICAgICAgICBJbmRleFJhbmdlKEdMZW51bSB0eXBlLCBpbnRwdHJfdCBvZmZzZXQs
IEdMc2l6ZWkgY291bnQpOworCisgICAgICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IEluZGV4UmFu
Z2UmIHJocykgY29uc3Q7CisgICAgfTsKKworICAgIHN0cnVjdCBJbmRleEJvdW5kcworICAgIHsK
KyAgICAgICAgdW5zaWduZWQgaW50IG1pbkluZGV4OworICAgICAgICB1bnNpZ25lZCBpbnQgbWF4
SW5kZXg7CisgICAgICAgIHVuc2lnbmVkIGludCBzdHJlYW1PZmZzZXQ7CisKKyAgICAgICAgSW5k
ZXhCb3VuZHMoKTsKKyAgICAgICAgSW5kZXhCb3VuZHModW5zaWduZWQgaW50IG1pbklkeCwgdW5z
aWduZWQgaW50IG1heElkeCwgdW5zaWduZWQgaW50IG9mZnNldCk7CisgICAgfTsKKworICAgIHR5
cGVkZWYgc3RkOjptYXA8SW5kZXhSYW5nZSwgSW5kZXhCb3VuZHM+IEluZGV4UmFuZ2VNYXA7Cisg
ICAgSW5kZXhSYW5nZU1hcCBtSW5kZXhSYW5nZUNhY2hlOworfTsKKworfQorCisjZW5kaWYgTElC
R0xFU1YyX1JFTkRFUkVSX0lOREVYUkFOR0VDQUNIRV9ICkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0lucHV0TGF5b3V0Q2FjaGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
SW5wdXRMYXlvdXRDYWNoZS5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5wdXRMYXlvdXRDYWNoZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDEzIEBAIElucHV0TGF5b3V0Q2FjaGU6OklucHV0TGF5
b3V0Q2FjaGUoKSA6IG0KICAgICBtQ291bnRlciA9IDA7CiAgICAgbURldmljZSA9IE5VTEw7CiAg
ICAgbURldmljZUNvbnRleHQgPSBOVUxMOworICAgIG1DdXJyZW50SUwgPSBOVUxMOworICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsgaSsrKQor
ICAgIHsKKyAgICAgICAgbUN1cnJlbnRCdWZmZXJzW2ldID0gLTE7CisgICAgICAgIG1DdXJyZW50
VmVydGV4U3RyaWRlc1tpXSA9IC0xOworICAgICAgICBtQ3VycmVudFZlcnRleE9mZnNldHNbaV0g
PSAtMTsKKyAgICB9CiB9CiAKIElucHV0TGF5b3V0Q2FjaGU6On5JbnB1dExheW91dENhY2hlKCkK
QEAgLTQ5LDYgKzU2LDE4IEBAIHZvaWQgSW5wdXRMYXlvdXRDYWNoZTo6Y2xlYXIoKQogICAgICAg
ICBpLT5zZWNvbmQuaW5wdXRMYXlvdXQtPlJlbGVhc2UoKTsKICAgICB9CiAgICAgbUlucHV0TGF5
b3V0TWFwLmNsZWFyKCk7CisgICAgbWFya0RpcnR5KCk7Cit9CisKK3ZvaWQgSW5wdXRMYXlvdXRD
YWNoZTo6bWFya0RpcnR5KCkKK3sKKyAgICBtQ3VycmVudElMID0gTlVMTDsKKyAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKKyAgICB7
CisgICAgICAgIG1DdXJyZW50QnVmZmVyc1tpXSA9IC0xOworICAgICAgICBtQ3VycmVudFZlcnRl
eFN0cmlkZXNbaV0gPSAtMTsKKyAgICAgICAgbUN1cnJlbnRWZXJ0ZXhPZmZzZXRzW2ldID0gLTE7
CisgICAgfQogfQogCiBHTGVudW0gSW5wdXRMYXlvdXRDYWNoZTo6YXBwbHlWZXJ0ZXhCdWZmZXJz
KFRyYW5zbGF0ZWRBdHRyaWJ1dGUgYXR0cmlidXRlc1tnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXSwK
QEAgLTY2LDYgKzg1LDcgQEAgR0xlbnVtIElucHV0TGF5b3V0Q2FjaGU6OmFwcGx5VmVydGV4QnVm
ZgogICAgIElucHV0TGF5b3V0S2V5IGlsS2V5ID0geyAwIH07CiAKICAgICBJRDNEMTFCdWZmZXIg
KnZlcnRleEJ1ZmZlcnNbZ2w6Ok1BWF9WRVJURVhfQVRUUklCU10gPSB7IE5VTEwgfTsKKyAgICB1
bnNpZ25lZCBpbnQgdmVydGV4QnVmZmVyU2VyaWFsc1tnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXSA9
IHsgMCB9OwogICAgIFVJTlQgdmVydGV4U3RyaWRlc1tnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXSA9
IHsgMCB9OwogICAgIFVJTlQgdmVydGV4T2Zmc2V0c1tnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXSA9
IHsgMCB9OwogCkBAIC04MywxOCArMTAzLDE5IEBAIEdMZW51bSBJbnB1dExheW91dENhY2hlOjph
cHBseVZlcnRleEJ1ZmYKICAgICAgICAgICAgIC8vIFJlY29yZCB0aGUgdHlwZSBvZiB0aGUgYXNz
b2NpYXRlZCB2ZXJ0ZXggc2hhZGVyIHZlY3RvciBpbiBvdXIga2V5CiAgICAgICAgICAgICAvLyBU
aGlzIHdpbGwgcHJldmVudCBtaXNtYXRjaGVkIHZlcnRleCBzaGFkZXJzIGZyb20gdXNpbmcgdGhl
IHNhbWUgaW5wdXQgbGF5b3V0CiAgICAgICAgICAgICBHTGludCBhdHRyaWJ1dGVTaXplOwotICAg
ICAgICAgICAgcHJvZ3JhbUJpbmFyeS0+Z2V0QWN0aXZlQXR0cmlidXRlKGlsS2V5LmVsZW1lbnRD
b3VudCwgMCwgTlVMTCwgJmF0dHJpYnV0ZVNpemUsICZpbEtleS5nbHNsRWxlbWVudFR5cGVbaWxL
ZXkuZWxlbWVudENvdW50XSwgTlVMTCk7CisgICAgICAgICAgICBwcm9ncmFtQmluYXJ5LT5nZXRB
Y3RpdmVBdHRyaWJ1dGUoaWxLZXkuZWxlbWVudENvdW50LCAwLCBOVUxMLCAmYXR0cmlidXRlU2l6
ZSwgJmlsS2V5LmVsZW1lbnRzW2lsS2V5LmVsZW1lbnRDb3VudF0uZ2xzbEVsZW1lbnRUeXBlLCBO
VUxMKTsKIAotICAgICAgICAgICAgaWxLZXkuZWxlbWVudHNbaWxLZXkuZWxlbWVudENvdW50XS5T
ZW1hbnRpY05hbWUgPSBzZW1hbnRpY05hbWU7Ci0gICAgICAgICAgICBpbEtleS5lbGVtZW50c1tp
bEtleS5lbGVtZW50Q291bnRdLlNlbWFudGljSW5kZXggPSBzb3J0ZWRTZW1hbnRpY0luZGljZXNb
aV07Ci0gICAgICAgICAgICBpbEtleS5lbGVtZW50c1tpbEtleS5lbGVtZW50Q291bnRdLkZvcm1h
dCA9IGF0dHJpYnV0ZXNbaV0uYXR0cmlidXRlLT5tQXJyYXlFbmFibGVkID8gdmVydGV4QnVmZmVy
LT5nZXREWEdJRm9ybWF0KCphdHRyaWJ1dGVzW2ldLmF0dHJpYnV0ZSkgOiBEWEdJX0ZPUk1BVF9S
MzJHMzJCMzJBMzJfRkxPQVQ7Ci0gICAgICAgICAgICBpbEtleS5lbGVtZW50c1tpbEtleS5lbGVt
ZW50Q291bnRdLklucHV0U2xvdCA9IGk7Ci0gICAgICAgICAgICBpbEtleS5lbGVtZW50c1tpbEtl
eS5lbGVtZW50Q291bnRdLkFsaWduZWRCeXRlT2Zmc2V0ID0gMDsKLSAgICAgICAgICAgIGlsS2V5
LmVsZW1lbnRzW2lsS2V5LmVsZW1lbnRDb3VudF0uSW5wdXRTbG90Q2xhc3MgPSBpbnB1dENsYXNz
OwotICAgICAgICAgICAgaWxLZXkuZWxlbWVudHNbaWxLZXkuZWxlbWVudENvdW50XS5JbnN0YW5j
ZURhdGFTdGVwUmF0ZSA9IGF0dHJpYnV0ZXNbaV0uZGl2aXNvcjsKKyAgICAgICAgICAgIGlsS2V5
LmVsZW1lbnRzW2lsS2V5LmVsZW1lbnRDb3VudF0uZGVzYy5TZW1hbnRpY05hbWUgPSBzZW1hbnRp
Y05hbWU7CisgICAgICAgICAgICBpbEtleS5lbGVtZW50c1tpbEtleS5lbGVtZW50Q291bnRdLmRl
c2MuU2VtYW50aWNJbmRleCA9IHNvcnRlZFNlbWFudGljSW5kaWNlc1tpXTsKKyAgICAgICAgICAg
IGlsS2V5LmVsZW1lbnRzW2lsS2V5LmVsZW1lbnRDb3VudF0uZGVzYy5Gb3JtYXQgPSBhdHRyaWJ1
dGVzW2ldLmF0dHJpYnV0ZS0+bUFycmF5RW5hYmxlZCA/IHZlcnRleEJ1ZmZlci0+Z2V0RFhHSUZv
cm1hdCgqYXR0cmlidXRlc1tpXS5hdHRyaWJ1dGUpIDogRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMy
X0ZMT0FUOworICAgICAgICAgICAgaWxLZXkuZWxlbWVudHNbaWxLZXkuZWxlbWVudENvdW50XS5k
ZXNjLklucHV0U2xvdCA9IGk7CisgICAgICAgICAgICBpbEtleS5lbGVtZW50c1tpbEtleS5lbGVt
ZW50Q291bnRdLmRlc2MuQWxpZ25lZEJ5dGVPZmZzZXQgPSAwOworICAgICAgICAgICAgaWxLZXku
ZWxlbWVudHNbaWxLZXkuZWxlbWVudENvdW50XS5kZXNjLklucHV0U2xvdENsYXNzID0gaW5wdXRD
bGFzczsKKyAgICAgICAgICAgIGlsS2V5LmVsZW1lbnRzW2lsS2V5LmVsZW1lbnRDb3VudF0uZGVz
Yy5JbnN0YW5jZURhdGFTdGVwUmF0ZSA9IGF0dHJpYnV0ZXNbaV0uZGl2aXNvcjsKICAgICAgICAg
ICAgIGlsS2V5LmVsZW1lbnRDb3VudCsrOwogCiAgICAgICAgICAgICB2ZXJ0ZXhCdWZmZXJzW2ld
ID0gYnVmZmVyU3RvcmFnZSA/IGJ1ZmZlclN0b3JhZ2UtPmdldEJ1ZmZlcigpIDogdmVydGV4QnVm
ZmVyLT5nZXRCdWZmZXIoKTsKKyAgICAgICAgICAgIHZlcnRleEJ1ZmZlclNlcmlhbHNbaV0gPSBi
dWZmZXJTdG9yYWdlID8gYnVmZmVyU3RvcmFnZS0+Z2V0U2VyaWFsKCkgOiB2ZXJ0ZXhCdWZmZXIt
PmdldFNlcmlhbCgpOwogICAgICAgICAgICAgdmVydGV4U3RyaWRlc1tpXSA9IGF0dHJpYnV0ZXNb
aV0uc3RyaWRlOwogICAgICAgICAgICAgdmVydGV4T2Zmc2V0c1tpXSA9IGF0dHJpYnV0ZXNbaV0u
b2Zmc2V0OwogICAgICAgICB9CkBAIC0xMTIsNyArMTMzLDEzIEBAIEdMZW51bSBJbnB1dExheW91
dENhY2hlOjphcHBseVZlcnRleEJ1ZmYKICAgICB7CiAgICAgICAgIFNoYWRlckV4ZWN1dGFibGUx
MSAqc2hhZGVyID0gU2hhZGVyRXhlY3V0YWJsZTExOjptYWtlU2hhZGVyRXhlY3V0YWJsZTExKHBy
b2dyYW1CaW5hcnktPmdldFZlcnRleEV4ZWN1dGFibGUoKSk7CiAKLSAgICAgICAgSFJFU1VMVCBy
ZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVJbnB1dExheW91dChpbEtleS5lbGVtZW50cywgaWxLZXku
ZWxlbWVudENvdW50LCBzaGFkZXItPmdldEZ1bmN0aW9uKCksIHNoYWRlci0+Z2V0TGVuZ3RoKCks
ICZpbnB1dExheW91dCk7CisgICAgICAgIEQzRDExX0lOUFVUX0VMRU1FTlRfREVTQyBkZXNjc1tn
bDo6TUFYX1ZFUlRFWF9BVFRSSUJTXTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaiA9IDA7
IGogPCBpbEtleS5lbGVtZW50Q291bnQ7ICsraikKKyAgICAgICAgeworICAgICAgICAgICAgZGVz
Y3Nbal0gPSBpbEtleS5lbGVtZW50c1tqXS5kZXNjOworICAgICAgICB9CisKKyAgICAgICAgSFJF
U1VMVCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVJbnB1dExheW91dChkZXNjcywgaWxLZXkuZWxl
bWVudENvdW50LCBzaGFkZXItPmdldEZ1bmN0aW9uKCksIHNoYWRlci0+Z2V0TGVuZ3RoKCksICZp
bnB1dExheW91dCk7CiAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICAgICAgewogICAg
ICAgICAgICAgRVJSKCJGYWlsZWQgdG8gY3JhdGUgaW5wdXQgbGF5b3V0LCByZXN1bHQ6IDB4JTA4
eCIsIHJlc3VsdCk7CkBAIC0xNDMsOCArMTcwLDIzIEBAIEdMZW51bSBJbnB1dExheW91dENhY2hl
OjphcHBseVZlcnRleEJ1ZmYKICAgICAgICAgbUlucHV0TGF5b3V0TWFwLmluc2VydChzdGQ6Om1h
a2VfcGFpcihpbEtleSwgaW5wdXRDb3VudGVyUGFpcikpOwogICAgIH0KIAotICAgIG1EZXZpY2VD
b250ZXh0LT5JQVNldElucHV0TGF5b3V0KGlucHV0TGF5b3V0KTsKLSAgICBtRGV2aWNlQ29udGV4
dC0+SUFTZXRWZXJ0ZXhCdWZmZXJzKDAsIGdsOjpNQVhfVkVSVEVYX0FUVFJJQlMsIHZlcnRleEJ1
ZmZlcnMsIHZlcnRleFN0cmlkZXMsIHZlcnRleE9mZnNldHMpOworICAgIGlmIChpbnB1dExheW91
dCAhPSBtQ3VycmVudElMKQorICAgIHsKKyAgICAgICAgbURldmljZUNvbnRleHQtPklBU2V0SW5w
dXRMYXlvdXQoaW5wdXRMYXlvdXQpOworICAgICAgICBtQ3VycmVudElMID0gaW5wdXRMYXlvdXQ7
CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBnbDo6TUFYX1ZFUlRF
WF9BVFRSSUJTOyBpKyspCisgICAgeworICAgICAgICBpZiAodmVydGV4QnVmZmVyU2VyaWFsc1tp
XSAhPSBtQ3VycmVudEJ1ZmZlcnNbaV0gfHwgdmVydGV4U3RyaWRlc1tpXSAhPSBtQ3VycmVudFZl
cnRleFN0cmlkZXNbaV0gfHwKKyAgICAgICAgICAgIHZlcnRleE9mZnNldHNbaV0gIT0gbUN1cnJl
bnRWZXJ0ZXhPZmZzZXRzW2ldKQorICAgICAgICB7CisgICAgICAgICAgICBtRGV2aWNlQ29udGV4
dC0+SUFTZXRWZXJ0ZXhCdWZmZXJzKGksIDEsICZ2ZXJ0ZXhCdWZmZXJzW2ldLCAmdmVydGV4U3Ry
aWRlc1tpXSwgJnZlcnRleE9mZnNldHNbaV0pOworICAgICAgICAgICAgbUN1cnJlbnRCdWZmZXJz
W2ldID0gdmVydGV4QnVmZmVyU2VyaWFsc1tpXTsKKyAgICAgICAgICAgIG1DdXJyZW50VmVydGV4
U3RyaWRlc1tpXSA9IHZlcnRleFN0cmlkZXNbaV07CisgICAgICAgICAgICBtQ3VycmVudFZlcnRl
eE9mZnNldHNbaV0gPSB2ZXJ0ZXhPZmZzZXRzW2ldOworICAgICAgICB9CisgICAgfQogCiAgICAg
cmV0dXJuIEdMX05PX0VSUk9SOwogfQpAQCAtMTU0LDEzICsxOTYsMTggQEAgc3RkOjpzaXplX3Qg
SW5wdXRMYXlvdXRDYWNoZTo6aGFzaElucHV0TAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBp
bnQgc2VlZCA9IDB4REVBREJFRUY7CiAKICAgICBzdGQ6OnNpemVfdCBoYXNoID0gMDsKLSAgICBN
dXJtdXJIYXNoM194ODZfMzIoJmlucHV0TGF5b3V0LCBzaXplb2YoSW5wdXRMYXlvdXRLZXkpLCBz
ZWVkLCAmaGFzaCk7CisgICAgTXVybXVySGFzaDNfeDg2XzMyKGlucHV0TGF5b3V0LmJlZ2luKCks
IGlucHV0TGF5b3V0LmVuZCgpIC0gaW5wdXRMYXlvdXQuYmVnaW4oKSwgc2VlZCwgJmhhc2gpOwog
ICAgIHJldHVybiBoYXNoOwogfQogCiBib29sIElucHV0TGF5b3V0Q2FjaGU6OmNvbXBhcmVJbnB1
dExheW91dHMoY29uc3QgSW5wdXRMYXlvdXRLZXkgJmEsIGNvbnN0IElucHV0TGF5b3V0S2V5ICZi
KQogewotICAgIHJldHVybiBtZW1jbXAoJmEsICZiLCBzaXplb2YoSW5wdXRMYXlvdXRLZXkpKSA9
PSAwOworICAgIGlmIChhLmVsZW1lbnRDb3VudCAhPSBiLmVsZW1lbnRDb3VudCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gc3RkOjplcXVhbChhLmJl
Z2luKCksIGEuZW5kKCksIGIuYmVnaW4oKSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5wdXRMYXlvdXRDYWNoZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
SW5wdXRMYXlvdXRDYWNoZS5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0lucHV0TGF5b3V0Q2FjaGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQCBjbGFzcyBJbnB1dExheW91dENhY2hlCiAKICAgICB2
b2lkIGluaXRpYWxpemUoSUQzRDExRGV2aWNlICpkZXZpY2UsIElEM0QxMURldmljZUNvbnRleHQg
KmNvbnRleHQpOwogICAgIHZvaWQgY2xlYXIoKTsKKyAgICB2b2lkIG1hcmtEaXJ0eSgpOwogCiAg
ICAgR0xlbnVtIGFwcGx5VmVydGV4QnVmZmVycyhUcmFuc2xhdGVkQXR0cmlidXRlIGF0dHJpYnV0
ZXNbZ2w6Ok1BWF9WRVJURVhfQVRUUklCU10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSk7CkBAIC0zNywxMSArMzgsMjYgQEAg
Y2xhc3MgSW5wdXRMYXlvdXRDYWNoZQogICBwcml2YXRlOgogICAgIERJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTihJbnB1dExheW91dENhY2hlKTsKIAorICAgIHN0cnVjdCBJbnB1dExheW91dEVsZW1l
bnQKKyAgICB7CisgICAgICAgIEQzRDExX0lOUFVUX0VMRU1FTlRfREVTQyBkZXNjOworICAgICAg
ICBHTGVudW0gZ2xzbEVsZW1lbnRUeXBlOworICAgIH07CisKICAgICBzdHJ1Y3QgSW5wdXRMYXlv
dXRLZXkKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGludCBlbGVtZW50Q291bnQ7Ci0gICAgICAg
IEQzRDExX0lOUFVUX0VMRU1FTlRfREVTQyBlbGVtZW50c1tnbDo6TUFYX1ZFUlRFWF9BVFRSSUJT
XTsKLSAgICAgICAgR0xlbnVtIGdsc2xFbGVtZW50VHlwZVtnbDo6TUFYX1ZFUlRFWF9BVFRSSUJT
XTsKKyAgICAgICAgSW5wdXRMYXlvdXRFbGVtZW50IGVsZW1lbnRzW2dsOjpNQVhfVkVSVEVYX0FU
VFJJQlNdOworCisgICAgICAgIGNvbnN0IGNoYXIgKmJlZ2luKCkgY29uc3QKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KCZlbGVtZW50
Q291bnQpOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgY2hhciAqZW5kKCkgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KCZlbGVtZW50c1tlbGVtZW50Q291bnRdKTsKKyAgICAgICAgfQogICAgIH07CiAKICAgICBzdHJ1
Y3QgSW5wdXRMYXlvdXRDb3VudGVyUGFpcgpAQCAtNTAsNiArNjYsMTEgQEAgY2xhc3MgSW5wdXRM
YXlvdXRDYWNoZQogICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbGFzdFVzZWRUaW1lOwogICAg
IH07CiAKKyAgICBJRDNEMTFJbnB1dExheW91dCAqbUN1cnJlbnRJTDsKKyAgICB1bnNpZ25lZCBp
bnQgbUN1cnJlbnRCdWZmZXJzW2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNdOworICAgIFVJTlQgbUN1
cnJlbnRWZXJ0ZXhTdHJpZGVzW2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNdOworICAgIFVJTlQgbUN1
cnJlbnRWZXJ0ZXhPZmZzZXRzW2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNdOworCiAgICAgc3RhdGlj
IHN0ZDo6c2l6ZV90IGhhc2hJbnB1dExheW91dChjb25zdCBJbnB1dExheW91dEtleSAmaW5wdXRM
YXlvdXQpOwogICAgIHN0YXRpYyBib29sIGNvbXBhcmVJbnB1dExheW91dHMoY29uc3QgSW5wdXRM
YXlvdXRLZXkgJmEsIGNvbnN0IElucHV0TGF5b3V0S2V5ICZiKTsKIApJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQxMS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9SZW5kZXJUYXJnZXQxMS5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyVGFyZ2V0MTEuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMjksNDQgKzMyOSwyMSBAQCBSZW5kZXJUYXJnZXQxMSAqUmVuZGVy
VGFyZ2V0MTE6Om1ha2VSZW5kCiAKIElEM0QxMVRleHR1cmUyRCAqUmVuZGVyVGFyZ2V0MTE6Omdl
dFRleHR1cmUoKSBjb25zdAogewotICAgIGlmIChtVGV4dHVyZSkKLSAgICB7Ci0gICAgICAgIG1U
ZXh0dXJlLT5BZGRSZWYoKTsKLSAgICB9Ci0KICAgICByZXR1cm4gbVRleHR1cmU7CiB9CiAKLS8v
IEFkZHMgcmVmZXJlbmNlLCBjYWxsZXIgbXVzdCBjYWxsIFJlbGVhc2UKIElEM0QxMVJlbmRlclRh
cmdldFZpZXcgKlJlbmRlclRhcmdldDExOjpnZXRSZW5kZXJUYXJnZXRWaWV3KCkgY29uc3QKIHsK
LSAgICBpZiAobVJlbmRlclRhcmdldCkKLSAgICB7Ci0gICAgICAgIG1SZW5kZXJUYXJnZXQtPkFk
ZFJlZigpOwotICAgIH0KLQogICAgIHJldHVybiBtUmVuZGVyVGFyZ2V0OwogfQogCi0vLyBBZGRz
IHJlZmVyZW5jZSwgY2FsbGVyIG11c3QgY2FsbCBSZWxlYXNlCiBJRDNEMTFEZXB0aFN0ZW5jaWxW
aWV3ICpSZW5kZXJUYXJnZXQxMTo6Z2V0RGVwdGhTdGVuY2lsVmlldygpIGNvbnN0CiB7Ci0gICAg
aWYgKG1EZXB0aFN0ZW5jaWwpCi0gICAgewotICAgICAgICBtRGVwdGhTdGVuY2lsLT5BZGRSZWYo
KTsKLSAgICB9Ci0KICAgICByZXR1cm4gbURlcHRoU3RlbmNpbDsKIH0KIAotLy8gQWRkcyByZWZl
cmVuY2UsIGNhbGxlciBtdXN0IGNhbGwgUmVsZWFzZQogSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3
ICpSZW5kZXJUYXJnZXQxMTo6Z2V0U2hhZGVyUmVzb3VyY2VWaWV3KCkgY29uc3QKIHsKLSAgICBp
ZiAobVNoYWRlclJlc291cmNlKQotICAgIHsKLSAgICAgICAgbVNoYWRlclJlc291cmNlLT5BZGRS
ZWYoKTsKLSAgICB9Ci0KICAgICByZXR1cm4gbVNoYWRlclJlc291cmNlOwogfQogCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdl
dDExLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQxMS5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdldDExLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDE2ICsyNyw5IEBAIGNsYXNzIFJlbmRlclRhcmdldDExIDog
cHVibGljIFJlbmRlclRhcmcKIAogICAgIHN0YXRpYyBSZW5kZXJUYXJnZXQxMSAqbWFrZVJlbmRl
clRhcmdldDExKFJlbmRlclRhcmdldCAqcmVuZGVyVGFyZ2V0KTsKIAotICAgIC8vIEFkZHMgcmVm
ZXJlbmNlLCBjYWxsZXIgbXVzdCBjYWxsIFJlbGVhc2UKICAgICBJRDNEMTFUZXh0dXJlMkQgKmdl
dFRleHR1cmUoKSBjb25zdDsKLQotICAgIC8vIEFkZHMgcmVmZXJlbmNlLCBjYWxsZXIgbXVzdCBj
YWxsIFJlbGVhc2UKICAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpnZXRSZW5kZXJUYXJnZXRW
aWV3KCkgY29uc3Q7Ci0KLSAgICAvLyBBZGRzIHJlZmVyZW5jZSwgY2FsbGVyIG11c3QgY2FsbCBS
ZWxlYXNlCiAgICAgSUQzRDExRGVwdGhTdGVuY2lsVmlldyAqZ2V0RGVwdGhTdGVuY2lsVmlldygp
IGNvbnN0OwotCi0gICAgLy8gQWRkcyByZWZlcmVuY2UsIGNhbGxlciBtdXN0IGNhbGwgUmVsZWFz
ZQogICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqZ2V0U2hhZGVyUmVzb3VyY2VWaWV3KCkg
Y29uc3Q7CiAKICAgICB1bnNpZ25lZCBpbnQgZ2V0U3VicmVzb3VyY2VJbmRleCgpIGNvbnN0OwpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5k
ZXJlcjkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvcmVuZGVyZXIvUmVuZGVyZXI5LmNwcAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw4IEBACiAKICNpbmNsdWRlICJsaWJFR0wvRGlzcGxh
eS5oIgogCisjaW5jbHVkZSAidGhpcmRfcGFydHkvdHJhY2VfZXZlbnQvdHJhY2VfZXZlbnQuaCIK
KwogLy8gQ2FuIGFsc28gYmUgZW5hYmxlZCBieSBkZWZpbmluZyBGT1JDRV9SRUZfUkFTVCBpbiB0
aGUgcHJvamVjdCdzIHByZWRlZmluZWQgbWFjcm9zCiAjZGVmaW5lIFJFRl9SQVNUIDAKIApAQCAt
MTg0LDEwICsxODYsMTIgQEAgRUdMaW50IFJlbmRlcmVyOTo6aW5pdGlhbGl6ZSgpCiAKICAgICBp
ZiAobVNvZnR3YXJlRGV2aWNlKQogICAgIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQwKCJncHUiLCAi
R2V0TW9kdWxlSGFuZGxlX3N3aWZ0c2hhZGVyIik7CiAgICAgICAgIG1EM2Q5TW9kdWxlID0gR2V0
TW9kdWxlSGFuZGxlKFRFWFQoInN3aWZ0c2hhZGVyX2QzZDkuZGxsIikpOwogICAgIH0KICAgICBl
bHNlCiAgICAgeworICAgICAgICBUUkFDRV9FVkVOVDAoImdwdSIsICJHZXRNb2R1bGVIYW5kbGVf
ZDNkOSIpOwogICAgICAgICBtRDNkOU1vZHVsZSA9IEdldE1vZHVsZUhhbmRsZShURVhUKCJkM2Q5
LmRsbCIpKTsKICAgICB9CiAKQEAgLTIwNSwxMiArMjA5LDE0IEBAIEVHTGludCBSZW5kZXJlcjk6
OmluaXRpYWxpemUoKQogICAgIC8vIGRlc2t0b3AuIERpcmVjdDNEOUV4IGlzIGF2YWlsYWJsZSBp
biBXaW5kb3dzIFZpc3RhIGFuZCBsYXRlciBpZiBzdWl0YWJsZSBkcml2ZXJzIGFyZSBhdmFpbGFi
bGUuCiAgICAgaWYgKEFOR0xFX0VOQUJMRV9EM0Q5RVggJiYgRGlyZWN0M0RDcmVhdGU5RXhQdHIg
JiYgU1VDQ0VFREVEKERpcmVjdDNEQ3JlYXRlOUV4UHRyKEQzRF9TREtfVkVSU0lPTiwgJm1EM2Q5
RXgpKSkKICAgICB7CisgICAgICAgIFRSQUNFX0VWRU5UMCgiZ3B1IiwgIkQzZDlFeF9RdWVyeUlu
dGVyZmFjZSIpOwogICAgICAgICBBU1NFUlQobUQzZDlFeCk7CiAgICAgICAgIG1EM2Q5RXgtPlF1
ZXJ5SW50ZXJmYWNlKElJRF9JRGlyZWN0M0Q5LCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJm1E
M2Q5KSk7CiAgICAgICAgIEFTU0VSVChtRDNkOSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7Cisg
ICAgICAgIFRSQUNFX0VWRU5UMCgiZ3B1IiwgIkRpcmVjdDNEQ3JlYXRlOSIpOwogICAgICAgICBt
RDNkOSA9IERpcmVjdDNEQ3JlYXRlOShEM0RfU0RLX1ZFUlNJT04pOwogICAgIH0KIApAQCAtMjI4
LDIxICsyMzQsMjQgQEAgRUdMaW50IFJlbmRlcmVyOTo6aW5pdGlhbGl6ZSgpCiAgICAgSFJFU1VM
VCByZXN1bHQ7CiAKICAgICAvLyBHaXZlIHVwIG9uIGdldHRpbmcgZGV2aWNlIGNhcHMgYWZ0ZXIg
YWJvdXQgb25lIHNlY29uZC4KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyArK2kpCiAgICAg
ewotICAgICAgICByZXN1bHQgPSBtRDNkOS0+R2V0RGV2aWNlQ2FwcyhtQWRhcHRlciwgbURldmlj
ZVR5cGUsICZtRGV2aWNlQ2Fwcyk7Ci0gICAgICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKLSAg
ICAgICAgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAo
cmVzdWx0ID09IEQzREVSUl9OT1RBVkFJTEFCTEUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFNs
ZWVwKDEwMCk7ICAgLy8gR2l2ZSB0aGUgZHJpdmVyIHNvbWUgdGltZSB0byBpbml0aWFsaXplL3Jl
Y292ZXIKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChGQUlMRUQocmVzdWx0KSkgICAvLyBE
M0RFUlJfT1VUT0ZWSURFT01FTU9SWSwgRV9PVVRPRk1FTU9SWSwgRDNERVJSX0lOVkFMSURERVZJ
Q0UsIG9yIGFub3RoZXIgZXJyb3Igd2UgY2FuJ3QgcmVjb3ZlciBmcm9tCisgICAgICAgIFRSQUNF
X0VWRU5UMCgiZ3B1IiwgIkdldERldmljZUNhcHMiKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCAxMDsgKytpKQogICAgICAgICB7Ci0gICAgICAgICAgICBFUlIoImZhaWxlZCB0byBnZXQg
ZGV2aWNlIGNhcHMgKDB4JXgpXG4iLCByZXN1bHQpOwotICAgICAgICAgICAgcmV0dXJuIEVHTF9O
T1RfSU5JVElBTElaRUQ7CisgICAgICAgICAgICByZXN1bHQgPSBtRDNkOS0+R2V0RGV2aWNlQ2Fw
cyhtQWRhcHRlciwgbURldmljZVR5cGUsICZtRGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBpZiAo
U1VDQ0VFREVEKHJlc3VsdCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChyZXN1bHQgPT0gRDNERVJSX05P
VEFWQUlMQUJMRSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBTbGVlcCgxMDApOyAg
IC8vIEdpdmUgdGhlIGRyaXZlciBzb21lIHRpbWUgdG8gaW5pdGlhbGl6ZS9yZWNvdmVyCisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChGQUlMRUQocmVzdWx0KSkgICAvLyBEM0RF
UlJfT1VUT0ZWSURFT01FTU9SWSwgRV9PVVRPRk1FTU9SWSwgRDNERVJSX0lOVkFMSURERVZJQ0Us
IG9yIGFub3RoZXIgZXJyb3Igd2UgY2FuJ3QgcmVjb3ZlciBmcm9tCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgRVJSKCJmYWlsZWQgdG8gZ2V0IGRldmljZSBjYXBzICgweCV4KVxuIiwg
cmVzdWx0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRUdMX05PVF9JTklUSUFMSVpFRDsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtMjYwLDcgKzI2OSwxMCBAQCBFR0xp
bnQgUmVuZGVyZXI5Ojppbml0aWFsaXplKCkKICAgICAgICAgcmV0dXJuIEVHTF9OT1RfSU5JVElB
TElaRUQ7CiAgICAgfQogCi0gICAgbUQzZDktPkdldEFkYXB0ZXJJZGVudGlmaWVyKG1BZGFwdGVy
LCAwLCAmbUFkYXB0ZXJJZGVudGlmaWVyKTsKKyAgICB7CisgICAgICAgIFRSQUNFX0VWRU5UMCgi
Z3B1IiwgIkdldEFkYXB0ZXJJZGVudGlmaWVyIik7CisgICAgICAgIG1EM2Q5LT5HZXRBZGFwdGVy
SWRlbnRpZmllcihtQWRhcHRlciwgMCwgJm1BZGFwdGVySWRlbnRpZmllcik7CisgICAgfQogCiAg
ICAgLy8gQVRJIGNhcmRzIG9uIFhQIGhhdmUgcHJvYmxlbXMgd2l0aCBub24tcG93ZXItb2YtdHdv
IHRleHR1cmVzLgogICAgIG1TdXBwb3J0c05vblBvd2VyMlRleHR1cmVzID0gIShtRGV2aWNlQ2Fw
cy5UZXh0dXJlQ2FwcyAmIEQzRFBURVhUVVJFQ0FQU19QT1cyKSAmJgpAQCAtMzAxLDM1ICszMTMs
NDEgQEAgRUdMaW50IFJlbmRlcmVyOTo6aW5pdGlhbGl6ZSgpCiAgICAgfQogCiAgICAgaW50IG1h
eCA9IDA7Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBBcnJheVNpemUoUmVuZGVy
VGFyZ2V0Rm9ybWF0cyk7ICsraSkKICAgICB7Ci0gICAgICAgIGJvb2wgKm11bHRpc2FtcGxlQXJy
YXkgPSBuZXcgYm9vbFtEM0RNVUxUSVNBTVBMRV8xNl9TQU1QTEVTICsgMV07Ci0gICAgICAgIGdl
dE11bHRpU2FtcGxlU3VwcG9ydChSZW5kZXJUYXJnZXRGb3JtYXRzW2ldLCBtdWx0aXNhbXBsZUFy
cmF5KTsKLSAgICAgICAgbU11bHRpU2FtcGxlU3VwcG9ydFtSZW5kZXJUYXJnZXRGb3JtYXRzW2ld
XSA9IG11bHRpc2FtcGxlQXJyYXk7Ci0KLSAgICAgICAgZm9yIChpbnQgaiA9IEQzRE1VTFRJU0FN
UExFXzE2X1NBTVBMRVM7IGogPj0gMDsgLS1qKQorICAgICAgICBUUkFDRV9FVkVOVDAoImdwdSIs
ICJnZXRNdWx0aVNhbXBsZVN1cHBvcnQiKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCBBcnJheVNpemUoUmVuZGVyVGFyZ2V0Rm9ybWF0cyk7ICsraSkKICAgICAgICAgewot
ICAgICAgICAgICAgaWYgKG11bHRpc2FtcGxlQXJyYXlbal0gJiYgaiAhPSBEM0RNVUxUSVNBTVBM
RV9OT05NQVNLQUJMRSAmJiBqID4gbWF4KQorICAgICAgICAgICAgYm9vbCAqbXVsdGlzYW1wbGVB
cnJheSA9IG5ldyBib29sW0QzRE1VTFRJU0FNUExFXzE2X1NBTVBMRVMgKyAxXTsKKyAgICAgICAg
ICAgIGdldE11bHRpU2FtcGxlU3VwcG9ydChSZW5kZXJUYXJnZXRGb3JtYXRzW2ldLCBtdWx0aXNh
bXBsZUFycmF5KTsKKyAgICAgICAgICAgIG1NdWx0aVNhbXBsZVN1cHBvcnRbUmVuZGVyVGFyZ2V0
Rm9ybWF0c1tpXV0gPSBtdWx0aXNhbXBsZUFycmF5OworCisgICAgICAgICAgICBmb3IgKGludCBq
ID0gRDNETVVMVElTQU1QTEVfMTZfU0FNUExFUzsgaiA+PSAwOyAtLWopCiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgbWF4ID0gajsKKyAgICAgICAgICAgICAgICBpZiAobXVsdGlzYW1w
bGVBcnJheVtqXSAmJiBqICE9IEQzRE1VTFRJU0FNUExFX05PTk1BU0tBQkxFICYmIGogPiBtYXgp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtYXggPSBqOworICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIGZvciAo
dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgQXJyYXlTaXplKERlcHRoU3RlbmNpbEZvcm1hdHMpOyAr
K2kpCiAgICAgewotICAgICAgICBpZiAoRGVwdGhTdGVuY2lsRm9ybWF0c1tpXSA9PSBEM0RGTVRf
VU5LTk9XTikKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBUUkFDRV9FVkVOVDAoImdw
dSIsICJnZXRNdWx0aVNhbXBsZVN1cHBvcnQyIik7CisgICAgICAgIGZvciAodW5zaWduZWQgaW50
IGkgPSAwOyBpIDwgQXJyYXlTaXplKERlcHRoU3RlbmNpbEZvcm1hdHMpOyArK2kpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmIChEZXB0aFN0ZW5jaWxGb3JtYXRzW2ldID09IEQzREZNVF9VTktO
T1dOKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGJvb2wgKm11bHRpc2Ft
cGxlQXJyYXkgPSBuZXcgYm9vbFtEM0RNVUxUSVNBTVBMRV8xNl9TQU1QTEVTICsgMV07Ci0gICAg
ICAgIGdldE11bHRpU2FtcGxlU3VwcG9ydChEZXB0aFN0ZW5jaWxGb3JtYXRzW2ldLCBtdWx0aXNh
bXBsZUFycmF5KTsKLSAgICAgICAgbU11bHRpU2FtcGxlU3VwcG9ydFtEZXB0aFN0ZW5jaWxGb3Jt
YXRzW2ldXSA9IG11bHRpc2FtcGxlQXJyYXk7CisgICAgICAgICAgICBib29sICptdWx0aXNhbXBs
ZUFycmF5ID0gbmV3IGJvb2xbRDNETVVMVElTQU1QTEVfMTZfU0FNUExFUyArIDFdOworICAgICAg
ICAgICAgZ2V0TXVsdGlTYW1wbGVTdXBwb3J0KERlcHRoU3RlbmNpbEZvcm1hdHNbaV0sIG11bHRp
c2FtcGxlQXJyYXkpOworICAgICAgICAgICAgbU11bHRpU2FtcGxlU3VwcG9ydFtEZXB0aFN0ZW5j
aWxGb3JtYXRzW2ldXSA9IG11bHRpc2FtcGxlQXJyYXk7CiAKLSAgICAgICAgZm9yIChpbnQgaiA9
IEQzRE1VTFRJU0FNUExFXzE2X1NBTVBMRVM7IGogPj0gMDsgLS1qKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAobXVsdGlzYW1wbGVBcnJheVtqXSAmJiBqICE9IEQzRE1VTFRJU0FNUExFX05P
Tk1BU0tBQkxFICYmIGogPiBtYXgpCisgICAgICAgICAgICBmb3IgKGludCBqID0gRDNETVVMVElT
QU1QTEVfMTZfU0FNUExFUzsgaiA+PSAwOyAtLWopCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgbWF4ID0gajsKKyAgICAgICAgICAgICAgICBpZiAobXVsdGlzYW1wbGVBcnJheVtqXSAm
JiBqICE9IEQzRE1VTFRJU0FNUExFX05PTk1BU0tBQkxFICYmIGogPiBtYXgpCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBtYXggPSBqOworICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTMzOSwxMiArMzU3LDE4IEBAIEVH
TGludCBSZW5kZXJlcjk6OmluaXRpYWxpemUoKQogICAgIHN0YXRpYyBjb25zdCBUQ0hBUiB3aW5k
b3dOYW1lW10gPSBURVhUKCJBbmdsZUhpZGRlbldpbmRvdyIpOwogICAgIHN0YXRpYyBjb25zdCBU
Q0hBUiBjbGFzc05hbWVbXSA9IFRFWFQoIlNUQVRJQyIpOwogCi0gICAgbURldmljZVdpbmRvdyA9
IENyZWF0ZVdpbmRvd0V4KFdTX0VYX05PQUNUSVZBVEUsIGNsYXNzTmFtZSwgd2luZG93TmFtZSwg
V1NfRElTQUJMRUQgfCBXU19QT1BVUCwgMCwgMCwgMSwgMSwgSFdORF9NRVNTQUdFLCBOVUxMLCBH
ZXRNb2R1bGVIYW5kbGUoTlVMTCksIE5VTEwpOworICAgIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQw
KCJncHUiLCAiQ3JlYXRlV2luZG93RXgiKTsKKyAgICAgICAgbURldmljZVdpbmRvdyA9IENyZWF0
ZVdpbmRvd0V4KFdTX0VYX05PQUNUSVZBVEUsIGNsYXNzTmFtZSwgd2luZG93TmFtZSwgV1NfRElT
QUJMRUQgfCBXU19QT1BVUCwgMCwgMCwgMSwgMSwgSFdORF9NRVNTQUdFLCBOVUxMLCBHZXRNb2R1
bGVIYW5kbGUoTlVMTCksIE5VTEwpOworICAgIH0KIAogICAgIEQzRFBSRVNFTlRfUEFSQU1FVEVS
UyBwcmVzZW50UGFyYW1ldGVycyA9IGdldERlZmF1bHRQcmVzZW50UGFyYW1ldGVycygpOwogICAg
IERXT1JEIGJlaGF2aW9yRmxhZ3MgPSBEM0RDUkVBVEVfRlBVX1BSRVNFUlZFIHwgRDNEQ1JFQVRF
X05PV0lORE9XQ0hBTkdFUzsKIAotICAgIHJlc3VsdCA9IG1EM2Q5LT5DcmVhdGVEZXZpY2UobUFk
YXB0ZXIsIG1EZXZpY2VUeXBlLCBtRGV2aWNlV2luZG93LCBiZWhhdmlvckZsYWdzIHwgRDNEQ1JF
QVRFX0hBUkRXQVJFX1ZFUlRFWFBST0NFU1NJTkcgfCBEM0RDUkVBVEVfUFVSRURFVklDRSwgJnBy
ZXNlbnRQYXJhbWV0ZXJzLCAmbURldmljZSk7CisgICAgeworICAgICAgICBUUkFDRV9FVkVOVDAo
ImdwdSIsICJEM2Q5X0NyZWF0ZURldmljZSIpOworICAgICAgICByZXN1bHQgPSBtRDNkOS0+Q3Jl
YXRlRGV2aWNlKG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgbURldmljZVdpbmRvdywgYmVoYXZpb3JG
bGFncyB8IEQzRENSRUFURV9IQVJEV0FSRV9WRVJURVhQUk9DRVNTSU5HIHwgRDNEQ1JFQVRFX1BV
UkVERVZJQ0UsICZwcmVzZW50UGFyYW1ldGVycywgJm1EZXZpY2UpOworICAgIH0KICAgICBpZiAo
cmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJlc3VsdCA9PSBFX09VVE9GTUVN
T1JZIHx8IHJlc3VsdCA9PSBEM0RFUlJfREVWSUNFTE9TVCkKICAgICB7CiAgICAgICAgIHJldHVy
biBFR0xfQkFEX0FMTE9DOwpAQCAtMzUyLDYgKzM3Niw3IEBAIEVHTGludCBSZW5kZXJlcjk6Omlu
aXRpYWxpemUoKQogCiAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgIHsKKyAgICAgICAgVFJB
Q0VfRVZFTlQwKCJncHUiLCAiRDNkOV9DcmVhdGVEZXZpY2UyIik7CiAgICAgICAgIHJlc3VsdCA9
IG1EM2Q5LT5DcmVhdGVEZXZpY2UobUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCBtRGV2aWNlV2luZG93
LCBiZWhhdmlvckZsYWdzIHwgRDNEQ1JFQVRFX1NPRlRXQVJFX1ZFUlRFWFBST0NFU1NJTkcsICZw
cmVzZW50UGFyYW1ldGVycywgJm1EZXZpY2UpOwogCiAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0
KSkKQEAgLTM2MywzNSArMzg4LDQ1IEBAIEVHTGludCBSZW5kZXJlcjk6OmluaXRpYWxpemUoKQog
CiAgICAgaWYgKG1EM2Q5RXgpCiAgICAgeworICAgICAgICBUUkFDRV9FVkVOVDAoImdwdSIsICJt
RGV2aWNlX1F1ZXJ5SW50ZXJmYWNlIik7CiAgICAgICAgIHJlc3VsdCA9IG1EZXZpY2UtPlF1ZXJ5
SW50ZXJmYWNlKElJRF9JRGlyZWN0M0REZXZpY2U5RXgsICh2b2lkKiopICZtRGV2aWNlRXgpOwog
ICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwogICAgIH0KIAotICAgIG1WZXJ0ZXhT
aGFkZXJDYWNoZS5pbml0aWFsaXplKG1EZXZpY2UpOwotICAgIG1QaXhlbFNoYWRlckNhY2hlLmlu
aXRpYWxpemUobURldmljZSk7CisgICAgeworICAgICAgICBUUkFDRV9FVkVOVDAoImdwdSIsICJT
aGFkZXJDYWNoZSBpbml0aWFsaXplIik7CisgICAgICAgIG1WZXJ0ZXhTaGFkZXJDYWNoZS5pbml0
aWFsaXplKG1EZXZpY2UpOworICAgICAgICBtUGl4ZWxTaGFkZXJDYWNoZS5pbml0aWFsaXplKG1E
ZXZpY2UpOworICAgIH0KIAogICAgIC8vIENoZWNrIG9jY2x1c2lvbiBxdWVyeSBzdXBwb3J0CiAg
ICAgSURpcmVjdDNEUXVlcnk5ICpvY2NsdXNpb25RdWVyeSA9IE5VTEw7Ci0gICAgaWYgKFNVQ0NF
RURFRChtRGV2aWNlLT5DcmVhdGVRdWVyeShEM0RRVUVSWVRZUEVfT0NDTFVTSU9OLCAmb2NjbHVz
aW9uUXVlcnkpKSAmJiBvY2NsdXNpb25RdWVyeSkKICAgICB7Ci0gICAgICAgIG9jY2x1c2lvblF1
ZXJ5LT5SZWxlYXNlKCk7Ci0gICAgICAgIG1PY2NsdXNpb25RdWVyeVN1cHBvcnQgPSB0cnVlOwot
ICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBtT2NjbHVzaW9uUXVlcnlTdXBwb3J0ID0g
ZmFsc2U7CisgICAgICAgIFRSQUNFX0VWRU5UMCgiZ3B1IiwgImRldmljZV9DcmVhdGVRdWVyeSIp
OworICAgICAgICBpZiAoU1VDQ0VFREVEKG1EZXZpY2UtPkNyZWF0ZVF1ZXJ5KEQzRFFVRVJZVFlQ
RV9PQ0NMVVNJT04sICZvY2NsdXNpb25RdWVyeSkpICYmIG9jY2x1c2lvblF1ZXJ5KQorICAgICAg
ICB7CisgICAgICAgICAgICBvY2NsdXNpb25RdWVyeS0+UmVsZWFzZSgpOworICAgICAgICAgICAg
bU9jY2x1c2lvblF1ZXJ5U3VwcG9ydCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQor
ICAgICAgICB7CisgICAgICAgICAgICBtT2NjbHVzaW9uUXVlcnlTdXBwb3J0ID0gZmFsc2U7Cisg
ICAgICAgIH0KICAgICB9CiAKICAgICAvLyBDaGVjayBldmVudCBxdWVyeSBzdXBwb3J0CiAgICAg
SURpcmVjdDNEUXVlcnk5ICpldmVudFF1ZXJ5ID0gTlVMTDsKLSAgICBpZiAoU1VDQ0VFREVEKG1E
ZXZpY2UtPkNyZWF0ZVF1ZXJ5KEQzRFFVRVJZVFlQRV9FVkVOVCwgJmV2ZW50UXVlcnkpKSAmJiBl
dmVudFF1ZXJ5KQotICAgIHsKLSAgICAgICAgZXZlbnRRdWVyeS0+UmVsZWFzZSgpOwotICAgICAg
ICBtRXZlbnRRdWVyeVN1cHBvcnQgPSB0cnVlOwotICAgIH0KLSAgICBlbHNlCiAgICAgewotICAg
ICAgICBtRXZlbnRRdWVyeVN1cHBvcnQgPSBmYWxzZTsKKyAgICAgICAgVFJBQ0VfRVZFTlQwKCJn
cHUiLCAiZGV2aWNlX0NyZWF0ZVF1ZXJ5MiIpOworICAgICAgICBpZiAoU1VDQ0VFREVEKG1EZXZp
Y2UtPkNyZWF0ZVF1ZXJ5KEQzRFFVRVJZVFlQRV9FVkVOVCwgJmV2ZW50UXVlcnkpKSAmJiBldmVu
dFF1ZXJ5KQorICAgICAgICB7CisgICAgICAgICAgICBldmVudFF1ZXJ5LT5SZWxlYXNlKCk7Cisg
ICAgICAgICAgICBtRXZlbnRRdWVyeVN1cHBvcnQgPSB0cnVlOworICAgICAgICB9CisgICAgICAg
IGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgbUV2ZW50UXVlcnlTdXBwb3J0ID0gZmFsc2U7
CisgICAgICAgIH0KICAgICB9CiAKICAgICBEM0RESVNQTEFZTU9ERSBjdXJyZW50RGlzcGxheU1v
ZGU7CkBAIC0xMDc2LDggKzExMTEsMTAgQEAgYm9vbCBSZW5kZXJlcjk6OnNldFZpZXdwb3J0KGNv
bnN0IGdsOjpSZQogICAgICAgICByZXR1cm4gZmFsc2U7ICAgLy8gTm90aGluZyB0byByZW5kZXIK
ICAgICB9CiAKKyAgICBmbG9hdCBkZXB0aEZyb250ID0gIWdsOjpJc1RyaWFuZ2xlTW9kZShkcmF3
TW9kZSkgPyAwLjBmIDogKGZyb250RmFjZSA9PSBHTF9DQ1cgPyAxLjBmIDogLTEuMGYpOworCiAg
ICAgYm9vbCB2aWV3cG9ydENoYW5nZWQgPSBtRm9yY2VTZXRWaWV3cG9ydCB8fCBtZW1jbXAoJmFj
dHVhbFZpZXdwb3J0LCAmbUN1clZpZXdwb3J0LCBzaXplb2YoZ2w6OlJlY3RhbmdsZSkpICE9IDAg
fHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbFpOZWFyICE9IG1DdXJOZWFyIHx8
IGFjdHVhbFpGYXIgIT0gbUN1ckZhcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVh
bFpOZWFyICE9IG1DdXJOZWFyIHx8IGFjdHVhbFpGYXIgIT0gbUN1ckZhciB8fCBtQ3VyRGVwdGhG
cm9udCAhPSBkZXB0aEZyb250OwogICAgIGlmICh2aWV3cG9ydENoYW5nZWQpCiAgICAgewogICAg
ICAgICBtRGV2aWNlLT5TZXRWaWV3cG9ydCgmZHhWaWV3cG9ydCk7CkBAIC0xMDg1LDYgKzExMjIs
NyBAQCBib29sIFJlbmRlcmVyOTo6c2V0Vmlld3BvcnQoY29uc3QgZ2w6OlJlCiAgICAgICAgIG1D
dXJWaWV3cG9ydCA9IGFjdHVhbFZpZXdwb3J0OwogICAgICAgICBtQ3VyTmVhciA9IGFjdHVhbFpO
ZWFyOwogICAgICAgICBtQ3VyRmFyID0gYWN0dWFsWkZhcjsKKyAgICAgICAgbUN1ckRlcHRoRnJv
bnQgPSBkZXB0aEZyb250OwogCiAgICAgICAgIGR4X1ZlcnRleENvbnN0YW50cyB2YyA9IHswfTsK
ICAgICAgICAgZHhfUGl4ZWxDb25zdGFudHMgcGMgPSB7MH07CkBAIC0xMTAxLDcgKzExMzksNyBA
QCBib29sIFJlbmRlcmVyOTo6c2V0Vmlld3BvcnQoY29uc3QgZ2w6OlJlCiAKICAgICAgICAgcGMu
ZGVwdGhGcm9udFswXSA9IChhY3R1YWxaRmFyIC0gYWN0dWFsWk5lYXIpICogMC41ZjsKICAgICAg
ICAgcGMuZGVwdGhGcm9udFsxXSA9IChhY3R1YWxaTmVhciArIGFjdHVhbFpGYXIpICogMC41ZjsK
LSAgICAgICAgcGMuZGVwdGhGcm9udFsyXSA9ICFnbDo6SXNUcmlhbmdsZU1vZGUoZHJhd01vZGUp
ID8gMC4wZiA6IChmcm9udEZhY2UgPT0gR0xfQ0NXID8gMS4wZiA6IC0xLjBmKTs7CisgICAgICAg
IHBjLmRlcHRoRnJvbnRbMl0gPSBkZXB0aEZyb250OwogCiAgICAgICAgIHZjLmRlcHRoUmFuZ2Vb
MF0gPSBhY3R1YWxaTmVhcjsKICAgICAgICAgdmMuZGVwdGhSYW5nZVsxXSA9IGFjdHVhbFpGYXI7
CkBAIC0xNDU0LDcgKzE0OTIsNyBAQCB2b2lkIFJlbmRlcmVyOTo6ZHJhd0xpbmVMb29wKEdMc2l6
ZWkgY291CiAgICAgICAgIGluZGljZXMgPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVieXRlKj4oc3Rv
cmFnZS0+Z2V0RGF0YSgpKSArIG9mZnNldDsKICAgICB9CiAKLSAgICBVSU5UIHN0YXJ0SW5kZXgg
PSAwOworICAgIHVuc2lnbmVkIGludCBzdGFydEluZGV4ID0gMDsKIAogICAgIGlmIChnZXQzMkJp
dEluZGV4U3VwcG9ydCgpKQogICAgIHsKQEAgLTE0NzEsMTMgKzE1MDksMTYgQEAgdm9pZCBSZW5k
ZXJlcjk6OmRyYXdMaW5lTG9vcChHTHNpemVpIGNvdQogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oY291bnQgKyAxKSA+IChz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGludD46Om1heCgpIC8gc2l6ZW9mKHVuc2lnbmVk
IGludCkpKQorICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihjb3VudCkgKyAx
ID4gKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6bWF4KCkgLyBzaXplb2YodW5z
aWduZWQgaW50KSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0
ZSBhIDMyLWJpdCBsb29waW5nIGluZGV4IGJ1ZmZlciBmb3IgR0xfTElORV9MT09QLCB0b28gbWFu
eSBpbmRpY2VzIHJlcXVpcmVkLiIpOwogICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9P
VVRfT0ZfTUVNT1JZKTsKICAgICAgICAgfQogCi0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBz
cGFjZU5lZWRlZCA9IChjb3VudCArIDEpICogc2l6ZW9mKHVuc2lnbmVkIGludCk7CisgICAgICAg
IC8vIENoZWNrZWQgYnkgUmVuZGVyZXI5OjphcHBseVByaW1pdGl2ZVR5cGUKKyAgICAgICAgQVNT
RVJUKGNvdW50ID49IDApOworCisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBzcGFjZU5lZWRl
ZCA9IChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGNvdW50KSArIDEpICogc2l6ZW9mKHVuc2ln
bmVkIGludCk7CiAgICAgICAgIGlmICghbUxpbmVMb29wSUItPnJlc2VydmVCdWZmZXJTcGFjZShz
cGFjZU5lZWRlZCwgR0xfVU5TSUdORURfSU5UKSkKICAgICAgICAgewogICAgICAgICAgICAgRVJS
KCJDb3VsZCBub3QgcmVzZXJ2ZSBlbm91Z2ggc3BhY2UgaW4gbG9vcGluZyBpbmRleCBidWZmZXIg
Zm9yIEdMX0xJTkVfTE9PUC4iKTsKQEAgLTE0ODUsMTQgKzE1MjYsMTQgQEAgdm9pZCBSZW5kZXJl
cjk6OmRyYXdMaW5lTG9vcChHTHNpemVpIGNvdQogICAgICAgICB9CiAKICAgICAgICAgdm9pZCog
bWFwcGVkTWVtb3J5ID0gTlVMTDsKLSAgICAgICAgaW50IG9mZnNldCA9IG1MaW5lTG9vcElCLT5t
YXBCdWZmZXIoc3BhY2VOZWVkZWQsICZtYXBwZWRNZW1vcnkpOwotICAgICAgICBpZiAob2Zmc2V0
ID09IC0xIHx8IG1hcHBlZE1lbW9yeSA9PSBOVUxMKQorICAgICAgICB1bnNpZ25lZCBpbnQgb2Zm
c2V0ID0gMDsKKyAgICAgICAgaWYgKCFtTGluZUxvb3BJQi0+bWFwQnVmZmVyKHNwYWNlTmVlZGVk
LCAmbWFwcGVkTWVtb3J5LCAmb2Zmc2V0KSkKICAgICAgICAgewogICAgICAgICAgICAgRVJSKCJD
b3VsZCBub3QgbWFwIGluZGV4IGJ1ZmZlciBmb3IgR0xfTElORV9MT09QLiIpOwogICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHN0YXJ0SW5kZXggPSBzdGF0aWNfY2FzdDxVSU5UPihvZmZzZXQpIC8gNDsKKyAgICAgICAg
c3RhcnRJbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4ob2Zmc2V0KSAvIDQ7CiAgICAg
ICAgIHVuc2lnbmVkIGludCAqZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgaW50Kj4o
bWFwcGVkTWVtb3J5KTsKIAogICAgICAgICBzd2l0Y2ggKHR5cGUpCkBAIC0xNTQ5LDEzICsxNTkw
LDE2IEBAIHZvaWQgUmVuZGVyZXI5OjpkcmF3TGluZUxvb3AoR0xzaXplaSBjb3UKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+
KGNvdW50ICsgMSkgPiAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBzaG9ydD46Om1heCgp
IC8gc2l6ZW9mKHVuc2lnbmVkIHNob3J0KSkpCisgICAgICAgIC8vIENoZWNrZWQgYnkgUmVuZGVy
ZXI5OjphcHBseVByaW1pdGl2ZVR5cGUKKyAgICAgICAgQVNTRVJUKGNvdW50ID49IDApOworCisg
ICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGNvdW50KSArIDEgPiAoc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZCBzaG9ydD46Om1heCgpIC8gc2l6ZW9mKHVuc2lnbmVkIHNo
b3J0KSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0ZSBhIDE2
LWJpdCBsb29waW5nIGluZGV4IGJ1ZmZlciBmb3IgR0xfTElORV9MT09QLCB0b28gbWFueSBpbmRp
Y2VzIHJlcXVpcmVkLiIpOwogICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0Zf
TUVNT1JZKTsKICAgICAgICAgfQogCi0gICAgICAgIGNvbnN0IGludCBzcGFjZU5lZWRlZCA9IChj
b3VudCArIDEpICogc2l6ZW9mKHVuc2lnbmVkIHNob3J0KTsKKyAgICAgICAgY29uc3QgdW5zaWdu
ZWQgaW50IHNwYWNlTmVlZGVkID0gKHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oY291bnQpICsg
MSkgKiBzaXplb2YodW5zaWduZWQgc2hvcnQpOwogICAgICAgICBpZiAoIW1MaW5lTG9vcElCLT5y
ZXNlcnZlQnVmZmVyU3BhY2Uoc3BhY2VOZWVkZWQsIEdMX1VOU0lHTkVEX1NIT1JUKSkKICAgICAg
ICAgewogICAgICAgICAgICAgRVJSKCJDb3VsZCBub3QgcmVzZXJ2ZSBlbm91Z2ggc3BhY2UgaW4g
bG9vcGluZyBpbmRleCBidWZmZXIgZm9yIEdMX0xJTkVfTE9PUC4iKTsKQEAgLTE1NjMsMTQgKzE2
MDcsMTQgQEAgdm9pZCBSZW5kZXJlcjk6OmRyYXdMaW5lTG9vcChHTHNpemVpIGNvdQogICAgICAg
ICB9CiAKICAgICAgICAgdm9pZCogbWFwcGVkTWVtb3J5ID0gTlVMTDsKLSAgICAgICAgaW50IG9m
ZnNldCA9IG1MaW5lTG9vcElCLT5tYXBCdWZmZXIoc3BhY2VOZWVkZWQsICZtYXBwZWRNZW1vcnkp
OwotICAgICAgICBpZiAob2Zmc2V0ID09IC0xIHx8IG1hcHBlZE1lbW9yeSA9PSBOVUxMKQorICAg
ICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0OworICAgICAgICBpZiAobUxpbmVMb29wSUItPm1hcEJ1
ZmZlcihzcGFjZU5lZWRlZCwgJm1hcHBlZE1lbW9yeSwgJm9mZnNldCkpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIEVSUigiQ291bGQgbm90IG1hcCBpbmRleCBidWZmZXIgZm9yIEdMX0xJTkVfTE9P
UC4iKTsKICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBzdGFydEluZGV4ID0gc3RhdGljX2Nhc3Q8VUlOVD4ob2Zmc2V0
KSAvIDI7CisgICAgICAgIHN0YXJ0SW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG9m
ZnNldCkgLyAyOwogICAgICAgICB1bnNpZ25lZCBzaG9ydCAqZGF0YSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dW5zaWduZWQgc2hvcnQqPihtYXBwZWRNZW1vcnkpOwogCiAgICAgICAgIHN3aXRjaCAodHlw
ZSkKQEAgLTMwODUsNyArMzEyOSw3IEBAIFNoYWRlckV4ZWN1dGFibGUgKlJlbmRlcmVyOTo6bG9h
ZEV4ZWN1dGEKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KIAotU2hhZGVyRXhlY3V0YWJsZSAq
UmVuZGVyZXI5Ojpjb21waWxlVG9FeGVjdXRhYmxlKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBjb25z
dCBjaGFyICpzaGFkZXJITFNMLCByeDo6U2hhZGVyVHlwZSB0eXBlKQorU2hhZGVyRXhlY3V0YWJs
ZSAqUmVuZGVyZXI5Ojpjb21waWxlVG9FeGVjdXRhYmxlKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBj
b25zdCBjaGFyICpzaGFkZXJITFNMLCByeDo6U2hhZGVyVHlwZSB0eXBlLCBEM0RXb3JrYXJvdW5k
VHlwZSB3b3JrYXJvdW5kKQogewogICAgIGNvbnN0IGNoYXIgKnByb2ZpbGUgPSBOVUxMOwogCkBA
IC0zMTAyLDcgKzMxNDYsMTEgQEAgU2hhZGVyRXhlY3V0YWJsZSAqUmVuZGVyZXI5Ojpjb21waWxl
VG9FeAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBJRDNEQmxvYiAqYmluYXJ5
ID0gKElEM0RCbG9iKiljb21waWxlVG9CaW5hcnkoaW5mb0xvZywgc2hhZGVySExTTCwgcHJvZmls
ZSwgQU5HTEVfQ09NUElMRV9PUFRJTUlaQVRJT05fTEVWRUwsIHRydWUpOworICAgIC8vIEFOR0xF
IGlzc3VlIDQ4NjoKKyAgICAvLyBXb3JrLWFyb3VuZCBhIEQzRDkgY29tcGlsZXIgYnVnIHRoYXQg
cHJlc2VudHMgaXRzZWxmIHdoZW4gdXNpbmcgY29uZGl0aW9uYWwgZGlzY2FyZCwgYnkgZGlzYWJs
aW5nIG9wdGltaXphdGlvbgorICAgIFVJTlQgb3B0aW1pemF0aW9uRmxhZ3MgPSAod29ya2Fyb3Vu
ZCA9PSBBTkdMRV9EM0RfV09SS0FST1VORF9TTTNfT1BUSU1JWkVSID8gRDNEQ09NUElMRV9TS0lQ
X09QVElNSVpBVElPTiA6IEFOR0xFX0NPTVBJTEVfT1BUSU1JWkFUSU9OX0xFVkVMKTsKKworICAg
IElEM0RCbG9iICpiaW5hcnkgPSAoSUQzREJsb2IqKWNvbXBpbGVUb0JpbmFyeShpbmZvTG9nLCBz
aGFkZXJITFNMLCBwcm9maWxlLCBvcHRpbWl6YXRpb25GbGFncywgdHJ1ZSk7CiAgICAgaWYgKCFi
aW5hcnkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyOS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXI5LmgJ
KHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvcmVuZGVyZXIvUmVuZGVyZXI5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw3ICsxNzAsNyBA
QCBjbGFzcyBSZW5kZXJlcjkgOiBwdWJsaWMgUmVuZGVyZXIKIAogICAgIC8vIFNoYWRlciBvcGVy
YXRpb25zCiAgICAgdmlydHVhbCBTaGFkZXJFeGVjdXRhYmxlICpsb2FkRXhlY3V0YWJsZShjb25z
dCB2b2lkICpmdW5jdGlvbiwgc2l6ZV90IGxlbmd0aCwgcng6OlNoYWRlclR5cGUgdHlwZSk7Ci0g
ICAgdmlydHVhbCBTaGFkZXJFeGVjdXRhYmxlICpjb21waWxlVG9FeGVjdXRhYmxlKGdsOjpJbmZv
TG9nICZpbmZvTG9nLCBjb25zdCBjaGFyICpzaGFkZXJITFNMLCByeDo6U2hhZGVyVHlwZSB0eXBl
KTsKKyAgICB2aXJ0dWFsIFNoYWRlckV4ZWN1dGFibGUgKmNvbXBpbGVUb0V4ZWN1dGFibGUoZ2w6
OkluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IGNoYXIgKnNoYWRlckhMU0wsIHJ4OjpTaGFkZXJUeXBl
IHR5cGUsIEQzRFdvcmthcm91bmRUeXBlIHdvcmthcm91bmQpOwogCiAgICAgLy8gSW1hZ2Ugb3Bl
cmF0aW9ucwogICAgIHZpcnR1YWwgSW1hZ2UgKmNyZWF0ZUltYWdlKCk7CkBAIC0yOTgsNiArMjk4
LDcgQEAgY2xhc3MgUmVuZGVyZXI5IDogcHVibGljIFJlbmRlcmVyCiAgICAgZ2w6OlJlY3Rhbmds
ZSBtQ3VyVmlld3BvcnQ7CiAgICAgZmxvYXQgbUN1ck5lYXI7CiAgICAgZmxvYXQgbUN1ckZhcjsK
KyAgICBmbG9hdCBtQ3VyRGVwdGhGcm9udDsKIAogICAgIGJvb2wgbUZvcmNlU2V0QmxlbmRTdGF0
ZTsKICAgICBnbDo6QmxlbmRTdGF0ZSBtQ3VyQmxlbmRTdGF0ZTsKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIxMS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9S
ZW5kZXJlcjExLmNwcAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjExLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTIsNyArMTIsNyBAQAogI2luY2x1ZGUgImxpYkdMRVN2Mi9CdWZmZXIuaCIKICNpbmNsdWRl
ICJsaWJHTEVTdjIvUHJvZ3JhbUJpbmFyeS5oIgogI2luY2x1ZGUgImxpYkdMRVN2Mi9GcmFtZWJ1
ZmZlci5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi9SZW5kZXJCdWZmZXIuaCIKKyNpbmNsdWRlICJs
aWJHTEVTdjIvUmVuZGVyYnVmZmVyLmgiCiAjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1Jl
bmRlcmVyMTEuaCIKICNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyVGFyZ2V0MTEu
aCIKICNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvcmVuZGVyZXIxMV91dGlscy5oIgpAQCAt
MjQzLDggKzI0Myw2IEBAIEVHTGludCBSZW5kZXJlcjExOjppbml0aWFsaXplKCkKICAgICB7CiAg
ICAgICAgIEQzRDExX01FU1NBR0VfSUQgaGlkZU1lc3NhZ2VzW10gPQogICAgICAgICB7Ci0gICAg
ICAgICAgICBEM0QxMV9NRVNTQUdFX0lEX0RFVklDRV9PTVNFVFJFTkRFUlRBUkdFVFNfSEFaQVJE
LAotICAgICAgICAgICAgRDNEMTFfTUVTU0FHRV9JRF9ERVZJQ0VfUFNTRVRTSEFERVJSRVNPVVJD
RVNfSEFaQVJELAogICAgICAgICAgICAgRDNEMTFfTUVTU0FHRV9JRF9ERVZJQ0VfRFJBV19SRU5E
RVJUQVJHRVRWSUVXX05PVF9TRVQKICAgICAgICAgfTsKIApAQCAtMzIyLDcgKzMyMCw2IEBAIEVH
TGludCBSZW5kZXJlcjExOjppbml0aWFsaXplKCkKICAgICB7CiAgICAgICAgIERYR0lfRk9STUFU
X1IzMl9GTE9BVCwKICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULAotICAgICAgICBE
WEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQsCiAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIz
MkEzMl9GTE9BVCwKICAgICB9OwogCkBAIC04MzUsMjMgKzgzMiwyOSBAQCBib29sIFJlbmRlcmVy
MTE6OmFwcGx5UHJpbWl0aXZlVHlwZShHTGVuCiB7CiAgICAgRDNEMTFfUFJJTUlUSVZFX1RPUE9M
T0dZIHByaW1pdGl2ZVRvcG9sb2d5ID0gRDNEX1BSSU1JVElWRV9UT1BPTE9HWV9VTkRFRklORUQ7
CiAKKyAgICBHTHNpemVpIG1pbkNvdW50ID0gMDsKKwogICAgIHN3aXRjaCAobW9kZSkKICAgICB7
Ci0gICAgICBjYXNlIEdMX1BPSU5UUzogICAgICAgICBwcmltaXRpdmVUb3BvbG9neSA9IEQzRDEx
X1BSSU1JVElWRV9UT1BPTE9HWV9QT0lOVExJU1Q7ICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX0xJ
TkVTOiAgICAgICAgICBwcmltaXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJVkVfVE9QT0xPR1lf
TElORUxJU1Q7ICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX0xJTkVfTE9PUDogICAgICBwcmlt
aXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfTElORVNUUklQOyAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEdMX0xJTkVfU1RSSVA6ICAgICBwcmltaXRpdmVUb3BvbG9neSA9IEQz
RF9QUklNSVRJVkVfVE9QT0xPR1lfTElORVNUUklQOyAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdM
X1RSSUFOR0xFUzogICAgICBwcmltaXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJVkVfVE9QT0xP
R1lfVFJJQU5HTEVMSVNUOyAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1RSSUFOR0xFX1NUUklQOiBw
cmltaXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfVFJJQU5HTEVTVFJJUDsg
YnJlYWs7CisgICAgICBjYXNlIEdMX1BPSU5UUzogICAgICAgICBwcmltaXRpdmVUb3BvbG9neSA9
IEQzRDExX1BSSU1JVElWRV9UT1BPTE9HWV9QT0lOVExJU1Q7ICAgbWluQ291bnQgPSAxOyBicmVh
azsKKyAgICAgIGNhc2UgR0xfTElORVM6ICAgICAgICAgIHByaW1pdGl2ZVRvcG9sb2d5ID0gRDNE
X1BSSU1JVElWRV9UT1BPTE9HWV9MSU5FTElTVDsgICAgICBtaW5Db3VudCA9IDI7IGJyZWFrOwor
ICAgICAgY2FzZSBHTF9MSU5FX0xPT1A6ICAgICAgcHJpbWl0aXZlVG9wb2xvZ3kgPSBEM0RfUFJJ
TUlUSVZFX1RPUE9MT0dZX0xJTkVTVFJJUDsgICAgIG1pbkNvdW50ID0gMjsgYnJlYWs7CisgICAg
ICBjYXNlIEdMX0xJTkVfU1RSSVA6ICAgICBwcmltaXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJ
VkVfVE9QT0xPR1lfTElORVNUUklQOyAgICAgbWluQ291bnQgPSAyOyBicmVhazsKKyAgICAgIGNh
c2UgR0xfVFJJQU5HTEVTOiAgICAgIHByaW1pdGl2ZVRvcG9sb2d5ID0gRDNEX1BSSU1JVElWRV9U
T1BPTE9HWV9UUklBTkdMRUxJU1Q7ICBtaW5Db3VudCA9IDM7IGJyZWFrOworICAgICAgY2FzZSBH
TF9UUklBTkdMRV9TVFJJUDogcHJpbWl0aXZlVG9wb2xvZ3kgPSBEM0RfUFJJTUlUSVZFX1RPUE9M
T0dZX1RSSUFOR0xFU1RSSVA7IG1pbkNvdW50ID0gMzsgYnJlYWs7CiAgICAgICAgICAgLy8gZW11
bGF0ZSBmYW5zIHZpYSByZXdyaXRpbmcgaW5kZXggYnVmZmVyCi0gICAgICBjYXNlIEdMX1RSSUFO
R0xFX0ZBTjogICBwcmltaXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfVFJJ
QU5HTEVMSVNUOyAgYnJlYWs7CisgICAgICBjYXNlIEdMX1RSSUFOR0xFX0ZBTjogICBwcmltaXRp
dmVUb3BvbG9neSA9IEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfVFJJQU5HTEVMSVNUOyAgbWluQ291
bnQgPSAzOyBicmVhazsKICAgICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9FTlVNLCBmYWxzZSk7CiAgICAgfQogCi0gICAgbURldmljZUNvbnRleHQtPklB
U2V0UHJpbWl0aXZlVG9wb2xvZ3kocHJpbWl0aXZlVG9wb2xvZ3kpOworICAgIGlmIChwcmltaXRp
dmVUb3BvbG9neSAhPSBtQ3VycmVudFByaW1pdGl2ZVRvcG9sb2d5KQorICAgIHsKKyAgICAgICAg
bURldmljZUNvbnRleHQtPklBU2V0UHJpbWl0aXZlVG9wb2xvZ3kocHJpbWl0aXZlVG9wb2xvZ3kp
OworICAgICAgICBtQ3VycmVudFByaW1pdGl2ZVRvcG9sb2d5ID0gcHJpbWl0aXZlVG9wb2xvZ3k7
CisgICAgfQogCi0gICAgcmV0dXJuIGNvdW50ID4gMDsKKyAgICByZXR1cm4gY291bnQgPj0gbWlu
Q291bnQ7CiB9CiAKIGJvb2wgUmVuZGVyZXIxMTo6YXBwbHlSZW5kZXJUYXJnZXQoZ2w6OkZyYW1l
YnVmZmVyICpmcmFtZWJ1ZmZlcikKQEAgLTkxNCw2ICs5MTcsMjUgQEAgYm9vbCBSZW5kZXJlcjEx
OjphcHBseVJlbmRlclRhcmdldChnbDo6RgogICAgICAgICAgICAgICAgIHJlbmRlclRhcmdldEZv
cm1hdCA9IGNvbG9yYnVmZmVyLT5nZXRBY3R1YWxGb3JtYXQoKTsKICAgICAgICAgICAgICAgICBt
aXNzaW5nQ29sb3JSZW5kZXJUYXJnZXQgPSBmYWxzZTsKICAgICAgICAgICAgIH0KKworI2lmZGVm
IF9ERUJVRworICAgICAgICAgICAgLy8gV29ya2Fyb3VuZCBmb3IgRGVidWcgU0VUU0hBREVSUkVT
T1VSQ0VTX0hBWkFSRCBEM0QxMSB3YXJuaW5ncworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
bnQgdmVydGV4U2VyaWFsSW5kZXggPSAwOyB2ZXJ0ZXhTZXJpYWxJbmRleCA8IGdsOjpJTVBMRU1F
TlRBVElPTl9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFM7IHZlcnRleFNlcmlhbEluZGV4
KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGNvbG9yYnVmZmVyLT5nZXRU
ZXh0dXJlU2VyaWFsKCkgIT0gMCAmJiBtQ3VyVmVydGV4VGV4dHVyZVNlcmlhbHNbdmVydGV4U2Vy
aWFsSW5kZXhdID09IGNvbG9yYnVmZmVyLT5nZXRUZXh0dXJlU2VyaWFsKCkpCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBzZXRUZXh0dXJlKGdsOjpTQU1QTEVSX1ZFUlRF
WCwgdmVydGV4U2VyaWFsSW5kZXgsIE5VTEwpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgcGl4ZWxTZXJpYWxJbmRleCA9
IDA7IHBpeGVsU2VyaWFsSW5kZXggPCBnbDo6TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFM7IHBpeGVs
U2VyaWFsSW5kZXgrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoY29sb3Ji
dWZmZXItPmdldFRleHR1cmVTZXJpYWwoKSAhPSAwICYmIG1DdXJQaXhlbFRleHR1cmVTZXJpYWxz
W3BpeGVsU2VyaWFsSW5kZXhdID09IGNvbG9yYnVmZmVyLT5nZXRUZXh0dXJlU2VyaWFsKCkpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzZXRUZXh0dXJlKGdsOjpTQU1Q
TEVSX1BJWEVMLCBwaXhlbFNlcmlhbEluZGV4LCBOVUxMKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisjZW5kaWYKICAgICAgICAgfQogICAgIH0KIApAQCAtMTAxMyw5ICsxMDM1
LDYgQEAgYm9vbCBSZW5kZXJlcjExOjphcHBseVJlbmRlclRhcmdldChnbDo6RgogICAgICAgICBt
RGVwdGhTdGVuY2lsSW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgIH0KIAotICAgIFNhZmVSZWxlYXNl
KGZyYW1lYnVmZmVyUlRWcyk7Ci0gICAgU2FmZVJlbGVhc2UoZnJhbWVidWZmZXJEU1YpOwotCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTExMzAsMTMgKzExNDksMTYgQEAgdm9pZCBSZW5kZXJl
cjExOjpkcmF3TGluZUxvb3AoR0xzaXplaSBjbwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYg
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oY291bnQgKyAxKSA+IChzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkIGludD46Om1heCgpIC8gc2l6ZW9mKHVuc2lnbmVkIGludCkpKQorICAgIC8v
IENoZWNrZWQgYnkgUmVuZGVyZXIxMTo6YXBwbHlQcmltaXRpdmVUeXBlCisgICAgQVNTRVJUKGNv
dW50ID49IDApOworCisgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oY291bnQpICsg
MSA+IChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGludD46Om1heCgpIC8gc2l6ZW9mKHVu
c2lnbmVkIGludCkpKQogICAgIHsKICAgICAgICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIGEgMzIt
Yml0IGxvb3BpbmcgaW5kZXggYnVmZmVyIGZvciBHTF9MSU5FX0xPT1AsIHRvbyBtYW55IGluZGlj
ZXMgcmVxdWlyZWQuIik7CiAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9S
WSk7CiAgICAgfQogCi0gICAgY29uc3QgdW5zaWduZWQgaW50IHNwYWNlTmVlZGVkID0gKGNvdW50
ICsgMSkgKiBzaXplb2YodW5zaWduZWQgaW50KTsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgc3Bh
Y2VOZWVkZWQgPSAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihjb3VudCkgKyAxKSAqIHNpemVv
Zih1bnNpZ25lZCBpbnQpOwogICAgIGlmICghbUxpbmVMb29wSUItPnJlc2VydmVCdWZmZXJTcGFj
ZShzcGFjZU5lZWRlZCwgR0xfVU5TSUdORURfSU5UKSkKICAgICB7CiAgICAgICAgIEVSUigiQ291
bGQgbm90IHJlc2VydmUgZW5vdWdoIHNwYWNlIGluIGxvb3BpbmcgaW5kZXggYnVmZmVyIGZvciBH
TF9MSU5FX0xPT1AuIik7CkBAIC0xMTQ0LDE1ICsxMTY2LDE1IEBAIHZvaWQgUmVuZGVyZXIxMTo6
ZHJhd0xpbmVMb29wKEdMc2l6ZWkgY28KICAgICB9CiAKICAgICB2b2lkKiBtYXBwZWRNZW1vcnkg
PSBOVUxMOwotICAgIGludCBvZmZzZXQgPSBtTGluZUxvb3BJQi0+bWFwQnVmZmVyKHNwYWNlTmVl
ZGVkLCAmbWFwcGVkTWVtb3J5KTsKLSAgICBpZiAob2Zmc2V0ID09IC0xIHx8IG1hcHBlZE1lbW9y
eSA9PSBOVUxMKQorICAgIHVuc2lnbmVkIGludCBvZmZzZXQ7CisgICAgaWYgKCFtTGluZUxvb3BJ
Qi0+bWFwQnVmZmVyKHNwYWNlTmVlZGVkLCAmbWFwcGVkTWVtb3J5LCAmb2Zmc2V0KSkKICAgICB7
CiAgICAgICAgIEVSUigiQ291bGQgbm90IG1hcCBpbmRleCBidWZmZXIgZm9yIEdMX0xJTkVfTE9P
UC4iKTsKICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKICAgICB9
CiAKICAgICB1bnNpZ25lZCBpbnQgKmRhdGEgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGlu
dCo+KG1hcHBlZE1lbW9yeSk7Ci0gICAgdW5zaWduZWQgaW50IGluZGV4QnVmZmVyT2Zmc2V0ID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihvZmZzZXQpOworICAgIHVuc2lnbmVkIGludCBpbmRl
eEJ1ZmZlck9mZnNldCA9IG9mZnNldDsKIAogICAgIHN3aXRjaCAodHlwZSkKICAgICB7CkBAIC0x
MjMwLDkgKzEyNTIsMTIgQEAgdm9pZCBSZW5kZXJlcjExOjpkcmF3VHJpYW5nbGVGYW4oR0xzaXpl
aQogICAgICAgICB9CiAgICAgfQogCisgICAgLy8gQ2hlY2tlZCBieSBSZW5kZXJlcjExOjphcHBs
eVByaW1pdGl2ZVR5cGUKKyAgICBBU1NFUlQoY291bnQgPj0gMyk7CisKICAgICBjb25zdCB1bnNp
Z25lZCBpbnQgbnVtVHJpcyA9IGNvdW50IC0gMjsKIAotICAgIGlmIChudW1UcmlzICogMyA+IChz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGludD46Om1heCgpIC8gc2l6ZW9mKHVuc2lnbmVk
IGludCkpKQorICAgIGlmIChudW1UcmlzID4gKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQg
aW50Pjo6bWF4KCkgLyAoc2l6ZW9mKHVuc2lnbmVkIGludCkgKiAzKSkpCiAgICAgewogICAgICAg
ICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUgYSBzY3JhdGNoIGluZGV4IGJ1ZmZlciBmb3IgR0xfVFJJ
QU5HTEVfRkFOLCB0b28gbWFueSBpbmRpY2VzIHJlcXVpcmVkLiIpOwogICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwpAQCAtMTI0NiwxNSArMTI3MSwxNSBAQCB2b2lk
IFJlbmRlcmVyMTE6OmRyYXdUcmlhbmdsZUZhbihHTHNpemVpCiAgICAgfQogCiAgICAgdm9pZCog
bWFwcGVkTWVtb3J5ID0gTlVMTDsKLSAgICBpbnQgb2Zmc2V0ID0gbVRyaWFuZ2xlRmFuSUItPm1h
cEJ1ZmZlcihzcGFjZU5lZWRlZCwgJm1hcHBlZE1lbW9yeSk7Ci0gICAgaWYgKG9mZnNldCA9PSAt
MSB8fCBtYXBwZWRNZW1vcnkgPT0gTlVMTCkKKyAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0OworICAg
IGlmICghbVRyaWFuZ2xlRmFuSUItPm1hcEJ1ZmZlcihzcGFjZU5lZWRlZCwgJm1hcHBlZE1lbW9y
eSwgJm9mZnNldCkpCiAgICAgewogICAgICAgICBFUlIoIkNvdWxkIG5vdCBtYXAgc2NyYXRjaCBp
bmRleCBidWZmZXIgZm9yIEdMX1RSSUFOR0xFX0ZBTi4iKTsKICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKICAgICB9CiAKICAgICB1bnNpZ25lZCBpbnQgKmRhdGEg
PSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGludCo+KG1hcHBlZE1lbW9yeSk7Ci0gICAgdW5z
aWduZWQgaW50IGluZGV4QnVmZmVyT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihv
ZmZzZXQpOworICAgIHVuc2lnbmVkIGludCBpbmRleEJ1ZmZlck9mZnNldCA9IG9mZnNldDsKIAog
ICAgIHN3aXRjaCAodHlwZSkKICAgICB7CkBAIC0xNDQyLDkgKzE0NjcsMTggQEAgdm9pZCBSZW5k
ZXJlcjExOjphcHBseVVuaWZvcm1zKGdsOjpQcm9ncgogICAgIHsKICAgICAgICAgbURldmljZUNv
bnRleHQtPlVubWFwKHBpeGVsQ29uc3RhbnRCdWZmZXIsIDApOwogICAgIH0KLSAgICAKLSAgICBt
RGV2aWNlQ29udGV4dC0+VlNTZXRDb25zdGFudEJ1ZmZlcnMoMCwgMSwgJnZlcnRleENvbnN0YW50
QnVmZmVyKTsKLSAgICBtRGV2aWNlQ29udGV4dC0+UFNTZXRDb25zdGFudEJ1ZmZlcnMoMCwgMSwg
JnBpeGVsQ29uc3RhbnRCdWZmZXIpOworCisgICAgaWYgKG1DdXJyZW50VmVydGV4Q29uc3RhbnRC
dWZmZXIgIT0gdmVydGV4Q29uc3RhbnRCdWZmZXIpCisgICAgeworICAgICAgICBtRGV2aWNlQ29u
dGV4dC0+VlNTZXRDb25zdGFudEJ1ZmZlcnMoMCwgMSwgJnZlcnRleENvbnN0YW50QnVmZmVyKTsK
KyAgICAgICAgbUN1cnJlbnRWZXJ0ZXhDb25zdGFudEJ1ZmZlciA9IHZlcnRleENvbnN0YW50QnVm
ZmVyOworICAgIH0KKworICAgIGlmIChtQ3VycmVudFBpeGVsQ29uc3RhbnRCdWZmZXIgIT0gcGl4
ZWxDb25zdGFudEJ1ZmZlcikKKyAgICB7CisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5QU1NldENv
bnN0YW50QnVmZmVycygwLCAxLCAmcGl4ZWxDb25zdGFudEJ1ZmZlcik7CisgICAgICAgIG1DdXJy
ZW50UGl4ZWxDb25zdGFudEJ1ZmZlciA9IHBpeGVsQ29uc3RhbnRCdWZmZXI7CisgICAgfQogCiAg
ICAgLy8gRHJpdmVyIHVuaWZvcm1zCiAgICAgaWYgKCFtRHJpdmVyQ29uc3RhbnRCdWZmZXJWUykK
QEAgLTE0OTIsNyArMTUyNiwxMSBAQCB2b2lkIFJlbmRlcmVyMTE6OmFwcGx5VW5pZm9ybXMoZ2w6
OlByb2dyCiAgICAgfQogCiAgICAgLy8gbmVlZGVkIGZvciB0aGUgcG9pbnQgc3ByaXRlIGdlb21l
dHJ5IHNoYWRlcgotICAgIG1EZXZpY2VDb250ZXh0LT5HU1NldENvbnN0YW50QnVmZmVycygwLCAx
LCAmbURyaXZlckNvbnN0YW50QnVmZmVyUFMpOworICAgIGlmIChtQ3VycmVudEdlb21ldHJ5Q29u
c3RhbnRCdWZmZXIgIT0gbURyaXZlckNvbnN0YW50QnVmZmVyUFMpCisgICAgeworICAgICAgICBt
RGV2aWNlQ29udGV4dC0+R1NTZXRDb25zdGFudEJ1ZmZlcnMoMCwgMSwgJm1Ecml2ZXJDb25zdGFu
dEJ1ZmZlclBTKTsKKyAgICAgICAgbUN1cnJlbnRHZW9tZXRyeUNvbnN0YW50QnVmZmVyID0gbURy
aXZlckNvbnN0YW50QnVmZmVyUFM7CisgICAgfQogfQogCiB2b2lkIFJlbmRlcmVyMTE6OmNsZWFy
KGNvbnN0IGdsOjpDbGVhclBhcmFtZXRlcnMgJmNsZWFyUGFyYW1zLCBnbDo6RnJhbWVidWZmZXIg
KmZyYW1lQnVmZmVyKQpAQCAtMTU0OSw4ICsxNTg3LDYgQEAgdm9pZCBSZW5kZXJlcjExOjpjbGVh
cihjb25zdCBnbDo6Q2xlYXJQYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNsZWFyUGFyYW1zLmNvbG9yQ2xlYXJWYWx1ZS5ibHVlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFy
UGFyYW1zLmNvbG9yQ2xlYXJWYWx1ZS5hbHBoYSB9OwogICAgICAgICAgICAgICAgICAgICAgICAg
bURldmljZUNvbnRleHQtPkNsZWFyUmVuZGVyVGFyZ2V0VmlldyhmcmFtZWJ1ZmZlclJUViwgY2xl
YXJWYWx1ZXMpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlclJUVi0+UmVs
ZWFzZSgpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICB9CkBAIC0xNTg4LDggKzE2MjQsNiBAQCB2b2lkIFJlbmRlcmVyMTE6OmNsZWFyKGNv
bnN0IGdsOjpDbGVhclBhCiAgICAgICAgICAgICAgICAgVUlOVDggc3RlbmNpbENsZWFyID0gY2xl
YXJQYXJhbXMuc3RlbmNpbENsZWFyVmFsdWUgJiAweDAwMDAwMEZGOwogCiAgICAgICAgICAgICAg
ICAgbURldmljZUNvbnRleHQtPkNsZWFyRGVwdGhTdGVuY2lsVmlldyhmcmFtZWJ1ZmZlckRTViwg
Y2xlYXJGbGFncywgZGVwdGhDbGVhciwgc3RlbmNpbENsZWFyKTsKLQotICAgICAgICAgICAgICAg
IGZyYW1lYnVmZmVyRFNWLT5SZWxlYXNlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CkBAIC0xNzk3LDYgKzE4MzEsMTQgQEAgdm9pZCBSZW5kZXJlcjExOjptYXJrQWxsU3RhdGVE
aXJ0eSgpCiAgICAgbUFwcGxpZWRQcm9ncmFtQmluYXJ5U2VyaWFsID0gMDsKICAgICBtZW1zZXQo
Jm1BcHBsaWVkVmVydGV4Q29uc3RhbnRzLCAwLCBzaXplb2YoZHhfVmVydGV4Q29uc3RhbnRzKSk7
CiAgICAgbWVtc2V0KCZtQXBwbGllZFBpeGVsQ29uc3RhbnRzLCAwLCBzaXplb2YoZHhfUGl4ZWxD
b25zdGFudHMpKTsKKworICAgIG1JbnB1dExheW91dENhY2hlLm1hcmtEaXJ0eSgpOworCisgICAg
bUN1cnJlbnRWZXJ0ZXhDb25zdGFudEJ1ZmZlciA9IE5VTEw7CisgICAgbUN1cnJlbnRQaXhlbENv
bnN0YW50QnVmZmVyID0gTlVMTDsKKyAgICBtQ3VycmVudEdlb21ldHJ5Q29uc3RhbnRCdWZmZXIg
PSBOVUxMOworCisgICAgbUN1cnJlbnRQcmltaXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJVkVf
VE9QT0xPR1lfVU5ERUZJTkVEOwogfQogCiB2b2lkIFJlbmRlcmVyMTE6OnJlbGVhc2VEZXZpY2VS
ZXNvdXJjZXMoKQpAQCAtMjQyNCw3ICsyNDY2LDYgQEAgYm9vbCBSZW5kZXJlcjExOjpjb3B5SW1h
Z2UoZ2w6OkZyYW1lYnVmZgogICAgIFRleHR1cmVTdG9yYWdlMTFfMkQgKnN0b3JhZ2UxMSA9IFRl
eHR1cmVTdG9yYWdlMTFfMkQ6Om1ha2VUZXh0dXJlU3RvcmFnZTExXzJEKHN0b3JhZ2UtPmdldFN0
b3JhZ2VJbnN0YW5jZSgpKTsKICAgICBpZiAoIXN0b3JhZ2UxMSkKICAgICB7Ci0gICAgICAgIHNv
dXJjZS0+UmVsZWFzZSgpOwogICAgICAgICBFUlIoIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUgdGV4
dHVyZSBzdG9yYWdlIGZyb20gdGhlIGRlc3RpbmF0aW9uLiIpOwogICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIGZhbHNlKTsKICAgICB9CkBAIC0yNDMyLDcgKzI0NzMs
NiBAQCBib29sIFJlbmRlcmVyMTE6OmNvcHlJbWFnZShnbDo6RnJhbWVidWZmCiAgICAgUmVuZGVy
VGFyZ2V0MTEgKmRlc3RSZW5kZXJUYXJnZXQgPSBSZW5kZXJUYXJnZXQxMTo6bWFrZVJlbmRlclRh
cmdldDExKHN0b3JhZ2UxMS0+Z2V0UmVuZGVyVGFyZ2V0KGxldmVsKSk7CiAgICAgaWYgKCFkZXN0
UmVuZGVyVGFyZ2V0KQogICAgIHsKLSAgICAgICAgc291cmNlLT5SZWxlYXNlKCk7CiAgICAgICAg
IEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSByZW5kZXIgdGFyZ2V0IGZyb20gdGhlIGRlc3Rp
bmF0aW9uIHN0b3JhZ2UuIik7CiAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01F
TU9SWSwgZmFsc2UpOwogICAgIH0KQEAgLTI0NDAsNyArMjQ4MCw2IEBAIGJvb2wgUmVuZGVyZXIx
MTo6Y29weUltYWdlKGdsOjpGcmFtZWJ1ZmYKICAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpk
ZXN0ID0gZGVzdFJlbmRlclRhcmdldC0+Z2V0UmVuZGVyVGFyZ2V0VmlldygpOwogICAgIGlmICgh
ZGVzdCkKICAgICB7Ci0gICAgICAgIHNvdXJjZS0+UmVsZWFzZSgpOwogICAgICAgICBFUlIoIkZh
aWxlZCB0byByZXRyaWV2ZSB0aGUgcmVuZGVyIHRhcmdldCB2aWV3IGZyb20gdGhlIGRlc3RpbmF0
aW9uIHJlbmRlciB0YXJnZXQuIik7CiAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09G
X01FTU9SWSwgZmFsc2UpOwogICAgIH0KQEAgLTI0NTQsOSArMjQ5Myw2IEBAIGJvb2wgUmVuZGVy
ZXIxMTo6Y29weUltYWdlKGdsOjpGcmFtZWJ1ZmYKICAgICBib29sIHJldCA9IGNvcHlUZXh0dXJl
KHNvdXJjZSwgc291cmNlUmVjdCwgc291cmNlUmVuZGVyVGFyZ2V0LT5nZXRXaWR0aCgpLCBzb3Vy
Y2VSZW5kZXJUYXJnZXQtPmdldEhlaWdodCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVzdCwgZGVzdFJlY3QsIGRlc3RSZW5kZXJUYXJnZXQtPmdldFdpZHRoKCksIGRlc3RSZW5kZXJU
YXJnZXQtPmdldEhlaWdodCgpLCBkZXN0Rm9ybWF0KTsKIAotICAgIHNvdXJjZS0+UmVsZWFzZSgp
OwotICAgIGRlc3QtPlJlbGVhc2UoKTsKLQogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTI0ODcs
NyArMjUyMyw2IEBAIGJvb2wgUmVuZGVyZXIxMTo6Y29weUltYWdlKGdsOjpGcmFtZWJ1ZmYKICAg
ICBUZXh0dXJlU3RvcmFnZTExX0N1YmUgKnN0b3JhZ2UxMSA9IFRleHR1cmVTdG9yYWdlMTFfQ3Vi
ZTo6bWFrZVRleHR1cmVTdG9yYWdlMTFfQ3ViZShzdG9yYWdlLT5nZXRTdG9yYWdlSW5zdGFuY2Uo
KSk7CiAgICAgaWYgKCFzdG9yYWdlMTEpCiAgICAgewotICAgICAgICBzb3VyY2UtPlJlbGVhc2Uo
KTsKICAgICAgICAgRVJSKCJGYWlsZWQgdG8gcmV0cmlldmUgdGhlIHRleHR1cmUgc3RvcmFnZSBm
cm9tIHRoZSBkZXN0aW5hdGlvbi4iKTsKICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRf
T0ZfTUVNT1JZLCBmYWxzZSk7CiAgICAgfQpAQCAtMjQ5NSw3ICsyNTMwLDYgQEAgYm9vbCBSZW5k
ZXJlcjExOjpjb3B5SW1hZ2UoZ2w6OkZyYW1lYnVmZgogICAgIFJlbmRlclRhcmdldDExICpkZXN0
UmVuZGVyVGFyZ2V0ID0gUmVuZGVyVGFyZ2V0MTE6Om1ha2VSZW5kZXJUYXJnZXQxMShzdG9yYWdl
MTEtPmdldFJlbmRlclRhcmdldCh0YXJnZXQsIGxldmVsKSk7CiAgICAgaWYgKCFkZXN0UmVuZGVy
VGFyZ2V0KQogICAgIHsKLSAgICAgICAgc291cmNlLT5SZWxlYXNlKCk7CiAgICAgICAgIEVSUigi
RmFpbGVkIHRvIHJldHJpZXZlIHRoZSByZW5kZXIgdGFyZ2V0IGZyb20gdGhlIGRlc3RpbmF0aW9u
IHN0b3JhZ2UuIik7CiAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwg
ZmFsc2UpOwogICAgIH0KQEAgLTI1MDMsNyArMjUzNyw2IEBAIGJvb2wgUmVuZGVyZXIxMTo6Y29w
eUltYWdlKGdsOjpGcmFtZWJ1ZmYKICAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpkZXN0ID0g
ZGVzdFJlbmRlclRhcmdldC0+Z2V0UmVuZGVyVGFyZ2V0VmlldygpOwogICAgIGlmICghZGVzdCkK
ICAgICB7Ci0gICAgICAgIHNvdXJjZS0+UmVsZWFzZSgpOwogICAgICAgICBFUlIoIkZhaWxlZCB0
byByZXRyaWV2ZSB0aGUgcmVuZGVyIHRhcmdldCB2aWV3IGZyb20gdGhlIGRlc3RpbmF0aW9uIHJl
bmRlciB0YXJnZXQuIik7CiAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9S
WSwgZmFsc2UpOwogICAgIH0KQEAgLTI1MTcsOSArMjU1MCw2IEBAIGJvb2wgUmVuZGVyZXIxMTo6
Y29weUltYWdlKGdsOjpGcmFtZWJ1ZmYKICAgICBib29sIHJldCA9IGNvcHlUZXh0dXJlKHNvdXJj
ZSwgc291cmNlUmVjdCwgc291cmNlUmVuZGVyVGFyZ2V0LT5nZXRXaWR0aCgpLCBzb3VyY2VSZW5k
ZXJUYXJnZXQtPmdldEhlaWdodCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCwg
ZGVzdFJlY3QsIGRlc3RSZW5kZXJUYXJnZXQtPmdldFdpZHRoKCksIGRlc3RSZW5kZXJUYXJnZXQt
PmdldEhlaWdodCgpLCBkZXN0Rm9ybWF0KTsKIAotICAgIHNvdXJjZS0+UmVsZWFzZSgpOwotICAg
IGRlc3QtPlJlbGVhc2UoKTsKLQogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTI4MDAsNyArMjgz
MCw3IEBAIFNoYWRlckV4ZWN1dGFibGUgKlJlbmRlcmVyMTE6OmxvYWRFeGVjdXQKICAgICByZXR1
cm4gZXhlY3V0YWJsZTsKIH0KIAotU2hhZGVyRXhlY3V0YWJsZSAqUmVuZGVyZXIxMTo6Y29tcGls
ZVRvRXhlY3V0YWJsZShnbDo6SW5mb0xvZyAmaW5mb0xvZywgY29uc3QgY2hhciAqc2hhZGVySExT
TCwgcng6OlNoYWRlclR5cGUgdHlwZSkKK1NoYWRlckV4ZWN1dGFibGUgKlJlbmRlcmVyMTE6OmNv
bXBpbGVUb0V4ZWN1dGFibGUoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IGNoYXIgKnNoYWRl
ckhMU0wsIHJ4OjpTaGFkZXJUeXBlIHR5cGUsIEQzRFdvcmthcm91bmRUeXBlIHdvcmthcm91bmQp
CiB7CiAgICAgY29uc3QgY2hhciAqcHJvZmlsZSA9IE5VTEw7CiAKQEAgLTI4NjksNyArMjg5OSw2
IEBAIGJvb2wgUmVuZGVyZXIxMTo6Z2V0UmVuZGVyVGFyZ2V0UmVzb3VyY2UKICAgICAgICAgewog
ICAgICAgICAgICAgSUQzRDExUmVzb3VyY2UgKnRleHR1cmVSZXNvdXJjZSA9IE5VTEw7CiAgICAg
ICAgICAgICBjb2xvckJ1ZmZlclJUVi0+R2V0UmVzb3VyY2UoJnRleHR1cmVSZXNvdXJjZSk7Ci0g
ICAgICAgICAgICBjb2xvckJ1ZmZlclJUVi0+UmVsZWFzZSgpOwogCiAgICAgICAgICAgICBpZiAo
dGV4dHVyZVJlc291cmNlKQogICAgICAgICAgICAgewpAQCAtMzQwNCw2ICszNDMzLDE2IEBAIGJv
b2wgUmVuZGVyZXIxMTo6YmxpdFJlbmRlcmJ1ZmZlclJlY3QoY28KIHsKICAgICBBU1NFUlQocmVh
ZFJlY3Qud2lkdGggPT0gZHJhd1JlY3Qud2lkdGggJiYgcmVhZFJlY3QuaGVpZ2h0ID09IGRyYXdS
ZWN0LmhlaWdodCk7CiAKKyAgICBSZW5kZXJUYXJnZXQxMSAqZHJhd1JlbmRlclRhcmdldDExID0g
UmVuZGVyVGFyZ2V0MTE6Om1ha2VSZW5kZXJUYXJnZXQxMShkcmF3UmVuZGVyVGFyZ2V0KTsKKyAg
ICBpZiAoIWRyYXdSZW5kZXJUYXJnZXQpCisgICAgeworICAgICAgICBFUlIoIkZhaWxlZCB0byBy
ZXRyaWV2ZSB0aGUgZHJhdyByZW5kZXIgdGFyZ2V0IGZyb20gdGhlIGRyYXcgZnJhbWVidWZmZXIu
Iik7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOwor
ICAgIH0KKworICAgIElEM0QxMVRleHR1cmUyRCAqZHJhd1RleHR1cmUgPSBkcmF3UmVuZGVyVGFy
Z2V0MTEtPmdldFRleHR1cmUoKTsKKyAgICB1bnNpZ25lZCBpbnQgZHJhd1N1YnJlc291cmNlID0g
ZHJhd1JlbmRlclRhcmdldDExLT5nZXRTdWJyZXNvdXJjZUluZGV4KCk7CisKICAgICBSZW5kZXJU
YXJnZXQxMSAqcmVhZFJlbmRlclRhcmdldDExID0gUmVuZGVyVGFyZ2V0MTE6Om1ha2VSZW5kZXJU
YXJnZXQxMShyZWFkUmVuZGVyVGFyZ2V0KTsKICAgICBpZiAoIXJlYWRSZW5kZXJUYXJnZXQpCiAg
ICAgewpAQCAtMzQxNSwxNiArMzQ1NCwxMyBAQCBib29sIFJlbmRlcmVyMTE6OmJsaXRSZW5kZXJi
dWZmZXJSZWN0KGNvCiAgICAgdW5zaWduZWQgaW50IHJlYWRTdWJyZXNvdXJjZSA9IDA7CiAgICAg
aWYgKHJlYWRSZW5kZXJUYXJnZXQtPmdldFNhbXBsZXMoKSA+IDApCiAgICAgewotICAgICAgICBJ
RDNEMTFUZXh0dXJlMkQgKnVucmVzb2x2ZWRUZXh0dXJlID0gcmVhZFJlbmRlclRhcmdldDExLT5n
ZXRUZXh0dXJlKCk7Ci0KLSAgICAgICAgcmVhZFRleHR1cmUgPSByZXNvbHZlTXVsdGlzYW1wbGVk
VGV4dHVyZSh1bnJlc29sdmVkVGV4dHVyZSwgcmVhZFJlbmRlclRhcmdldDExLT5nZXRTdWJyZXNv
dXJjZUluZGV4KCkpOworICAgICAgICByZWFkVGV4dHVyZSA9IHJlc29sdmVNdWx0aXNhbXBsZWRU
ZXh0dXJlKHJlYWRSZW5kZXJUYXJnZXQxMS0+Z2V0VGV4dHVyZSgpLCByZWFkUmVuZGVyVGFyZ2V0
MTEtPmdldFN1YnJlc291cmNlSW5kZXgoKSk7CiAgICAgICAgIHJlYWRTdWJyZXNvdXJjZSA9IDA7
Ci0KLSAgICAgICAgdW5yZXNvbHZlZFRleHR1cmUtPlJlbGVhc2UoKTsKICAgICB9CiAgICAgZWxz
ZQogICAgIHsKICAgICAgICAgcmVhZFRleHR1cmUgPSByZWFkUmVuZGVyVGFyZ2V0MTEtPmdldFRl
eHR1cmUoKTsKKyAgICAgICAgcmVhZFRleHR1cmUtPkFkZFJlZigpOwogICAgICAgICByZWFkU3Vi
cmVzb3VyY2UgPSByZWFkUmVuZGVyVGFyZ2V0MTEtPmdldFN1YnJlc291cmNlSW5kZXgoKTsKICAg
ICB9CiAKQEAgLTM0MzQsMTcgKzM0NzAsNiBAQCBib29sIFJlbmRlcmVyMTE6OmJsaXRSZW5kZXJi
dWZmZXJSZWN0KGNvCiAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwg
ZmFsc2UpOwogICAgIH0KIAotICAgIFJlbmRlclRhcmdldDExICpkcmF3UmVuZGVyVGFyZ2V0MTEg
PSBSZW5kZXJUYXJnZXQxMTo6bWFrZVJlbmRlclRhcmdldDExKGRyYXdSZW5kZXJUYXJnZXQpOwot
ICAgIGlmICghZHJhd1JlbmRlclRhcmdldCkKLSAgICB7Ci0gICAgICAgIHJlYWRUZXh0dXJlLT5S
ZWxlYXNlKCk7Ci0gICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSBkcmF3IHJlbmRl
ciB0YXJnZXQgZnJvbSB0aGUgZHJhdyBmcmFtZWJ1ZmZlci4iKTsKLSAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7Ci0gICAgfQotCi0gICAgSUQzRDExVGV4
dHVyZTJEICpkcmF3VGV4dHVyZSA9IGRyYXdSZW5kZXJUYXJnZXQxMS0+Z2V0VGV4dHVyZSgpOwot
ICAgIHVuc2lnbmVkIGludCBkcmF3U3VicmVzb3VyY2UgPSBkcmF3UmVuZGVyVGFyZ2V0MTEtPmdl
dFN1YnJlc291cmNlSW5kZXgoKTsKLQogICAgIEQzRDExX0JPWCByZWFkQm94OwogICAgIHJlYWRC
b3gubGVmdCA9IHJlYWRSZWN0Lng7CiAgICAgcmVhZEJveC5yaWdodCA9IHJlYWRSZWN0LnggKyBy
ZWFkUmVjdC53aWR0aDsKQEAgLTM0NjAsOCArMzQ4NSw3IEBAIGJvb2wgUmVuZGVyZXIxMTo6Ymxp
dFJlbmRlcmJ1ZmZlclJlY3QoY28KICAgICBtRGV2aWNlQ29udGV4dC0+Q29weVN1YnJlc291cmNl
UmVnaW9uKGRyYXdUZXh0dXJlLCBkcmF3U3VicmVzb3VyY2UsIGRyYXdSZWN0LngsIGRyYXdSZWN0
LnksIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkVGV4
dHVyZSwgcmVhZFN1YnJlc291cmNlLCBwU3JjQm94KTsKIAotICAgIHJlYWRUZXh0dXJlLT5SZWxl
YXNlKCk7Ci0gICAgZHJhd1RleHR1cmUtPlJlbGVhc2UoKTsKKyAgICBTYWZlUmVsZWFzZShyZWFk
VGV4dHVyZSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIxMS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIx
MS5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyMTEuaAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDcgKzE1
NSw3IEBAIGNsYXNzIFJlbmRlcmVyMTEgOiBwdWJsaWMgUmVuZGVyZXIKIAogICAgIC8vIFNoYWRl
ciBvcGVyYXRpb25zCiAgICAgdmlydHVhbCBTaGFkZXJFeGVjdXRhYmxlICpsb2FkRXhlY3V0YWJs
ZShjb25zdCB2b2lkICpmdW5jdGlvbiwgc2l6ZV90IGxlbmd0aCwgcng6OlNoYWRlclR5cGUgdHlw
ZSk7Ci0gICAgdmlydHVhbCBTaGFkZXJFeGVjdXRhYmxlICpjb21waWxlVG9FeGVjdXRhYmxlKGds
OjpJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBjaGFyICpzaGFkZXJITFNMLCByeDo6U2hhZGVyVHlw
ZSB0eXBlKTsKKyAgICB2aXJ0dWFsIFNoYWRlckV4ZWN1dGFibGUgKmNvbXBpbGVUb0V4ZWN1dGFi
bGUoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IGNoYXIgKnNoYWRlckhMU0wsIHJ4OjpTaGFk
ZXJUeXBlIHR5cGUsIEQzRFdvcmthcm91bmRUeXBlIHdvcmthcm91bmQpOwogCiAgICAgLy8gSW1h
Z2Ugb3BlcmF0aW9ucwogICAgIHZpcnR1YWwgSW1hZ2UgKmNyZWF0ZUltYWdlKCk7CkBAIC0yMzUs
NyArMjM1LDcgQEAgY2xhc3MgUmVuZGVyZXIxMSA6IHB1YmxpYyBSZW5kZXJlcgogICAgICAgICB1
bnNpZ25lZCBpbnQgcXVhbGl0eUxldmVsc1tEM0QxMV9NQVhfTVVMVElTQU1QTEVfU0FNUExFX0NP
VU5UXTsKICAgICB9OwogCi0gICAgdHlwZWRlZiBzdGQ6OnVub3JkZXJlZF9tYXA8RFhHSV9GT1JN
QVQsIE11bHRpc2FtcGxlU3VwcG9ydEluZm8+IE11bHRpc2FtcGxlU3VwcG9ydE1hcDsKKyAgICB0
eXBlZGVmIHN0ZDo6dW5vcmRlcmVkX21hcDxEWEdJX0ZPUk1BVCwgTXVsdGlzYW1wbGVTdXBwb3J0
SW5mbywgc3RkOjpoYXNoPGludD4gPiBNdWx0aXNhbXBsZVN1cHBvcnRNYXA7CiAgICAgTXVsdGlz
YW1wbGVTdXBwb3J0TWFwIG1NdWx0aXNhbXBsZVN1cHBvcnRNYXA7CiAKICAgICB1bnNpZ25lZCBp
bnQgbU1heFN1cHBvcnRlZFNhbXBsZXM7CkBAIC0yODgsNiArMjg4LDkgQEAgY2xhc3MgUmVuZGVy
ZXIxMSA6IHB1YmxpYyBSZW5kZXJlcgogICAgIGZsb2F0IG1DdXJOZWFyOwogICAgIGZsb2F0IG1D
dXJGYXI7CiAKKyAgICAvLyBDdXJyZW50bHkgYXBwbGllZCBwcmltaXRpdmUgdG9wb2xvZ3kKKyAg
ICBEM0QxMV9QUklNSVRJVkVfVE9QT0xPR1kgbUN1cnJlbnRQcmltaXRpdmVUb3BvbG9neTsKKwog
ICAgIHVuc2lnbmVkIGludCBtQXBwbGllZElCU2VyaWFsOwogICAgIHVuc2lnbmVkIGludCBtQXBw
bGllZFN0b3JhZ2VJQlNlcmlhbDsKICAgICB1bnNpZ25lZCBpbnQgbUFwcGxpZWRJQk9mZnNldDsK
QEAgLTI5OCwxMCArMzAxLDE0IEBAIGNsYXNzIFJlbmRlcmVyMTEgOiBwdWJsaWMgUmVuZGVyZXIK
ICAgICBkeF9WZXJ0ZXhDb25zdGFudHMgbVZlcnRleENvbnN0YW50czsKICAgICBkeF9WZXJ0ZXhD
b25zdGFudHMgbUFwcGxpZWRWZXJ0ZXhDb25zdGFudHM7CiAgICAgSUQzRDExQnVmZmVyICptRHJp
dmVyQ29uc3RhbnRCdWZmZXJWUzsKKyAgICBJRDNEMTFCdWZmZXIgKm1DdXJyZW50VmVydGV4Q29u
c3RhbnRCdWZmZXI7CiAKICAgICBkeF9QaXhlbENvbnN0YW50cyBtUGl4ZWxDb25zdGFudHM7CiAg
ICAgZHhfUGl4ZWxDb25zdGFudHMgbUFwcGxpZWRQaXhlbENvbnN0YW50czsKICAgICBJRDNEMTFC
dWZmZXIgKm1Ecml2ZXJDb25zdGFudEJ1ZmZlclBTOworICAgIElEM0QxMUJ1ZmZlciAqbUN1cnJl
bnRQaXhlbENvbnN0YW50QnVmZmVyOworCisgICAgSUQzRDExQnVmZmVyICptQ3VycmVudEdlb21l
dHJ5Q29uc3RhbnRCdWZmZXI7CiAKICAgICAvLyBWZXJ0ZXgsIGluZGV4IGFuZCBpbnB1dCBsYXlv
dXRzCiAgICAgVmVydGV4RGF0YU1hbmFnZXIgKm1WZXJ0ZXhEYXRhTWFuYWdlcjsKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvUmVuZGVyZXIuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQsNiArMTQsNyBAQAogI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJl
cjkuaCIKICNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIxMS5oIgogI2luY2x1
ZGUgImxpYkdMRVN2Mi91dGlsaXRpZXMuaCIKKyNpbmNsdWRlICJ0aGlyZF9wYXJ0eS90cmFjZV9l
dmVudC90cmFjZV9ldmVudC5oIgogCiAjaWYgIWRlZmluZWQoQU5HTEVfRU5BQkxFX0QzRDExKQog
Ly8gRW5hYmxlcyB1c2Ugb2YgdGhlIERpcmVjdDNEIDExIEFQSSBmb3IgYSBkZWZhdWx0IGRpc3Bs
YXksIHdoZW4gYXZhaWxhYmxlCkBAIC00MCw2ICs0MSw3IEBAIFJlbmRlcmVyOjp+UmVuZGVyZXIo
KQogCiBib29sIFJlbmRlcmVyOjppbml0aWFsaXplQ29tcGlsZXIoKQogeworICAgIFRSQUNFX0VW
RU5UMCgiZ3B1IiwgImluaXRpYWxpemVDb21waWxlciIpOwogI2lmIGRlZmluZWQoQU5HTEVfUFJF
TE9BREVEX0QzRENPTVBJTEVSX01PRFVMRV9OQU1FUykKICAgICAvLyBGaW5kIGEgRDNEQ29tcGls
ZXIgbW9kdWxlIHRoYXQgaGFkIGFscmVhZHkgYmVlbiBsb2FkZWQgYmFzZWQgb24gYSBwcmVkZWZp
bmVkIGxpc3Qgb2YgdmVyc2lvbnMuCiAgICAgc3RhdGljIFRDSEFSKiBkM2RDb21waWxlck5hbWVz
W10gPSBBTkdMRV9QUkVMT0FERURfRDNEQ09NUElMRVJfTU9EVUxFX05BTUVTOwpAQCAtNTEsMTMg
KzUzLDE2IEBAIGJvb2wgUmVuZGVyZXI6OmluaXRpYWxpemVDb21waWxlcigpCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSNlbHNlCi0gICAgLy8gTG9hZCB0aGUgdmVyc2lv
biBvZiB0aGUgRDNEQ29tcGlsZXIgRExMIGFzc29jaWF0ZWQgd2l0aCB0aGUgRGlyZWN0M0QgdmVy
c2lvbiBBTkdMRSB3YXMgYnVpbHQgd2l0aC4KLSAgICBtRDNkQ29tcGlsZXJNb2R1bGUgPSBMb2Fk
TGlicmFyeShEM0RDT01QSUxFUl9ETEwpOwogI2VuZGlmICAvLyBBTkdMRV9QUkVMT0FERURfRDNE
Q09NUElMRVJfTU9EVUxFX05BTUVTCiAKICAgICBpZiAoIW1EM2RDb21waWxlck1vZHVsZSkKICAg
ICB7CisgICAgICAgIC8vIExvYWQgdGhlIHZlcnNpb24gb2YgdGhlIEQzRENvbXBpbGVyIERMTCBh
c3NvY2lhdGVkIHdpdGggdGhlIERpcmVjdDNEIHZlcnNpb24gQU5HTEUgd2FzIGJ1aWx0IHdpdGgu
CisgICAgICAgIG1EM2RDb21waWxlck1vZHVsZSA9IExvYWRMaWJyYXJ5KEQzRENPTVBJTEVSX0RM
TCk7CisgICAgfQorCisgICAgaWYgKCFtRDNkQ29tcGlsZXJNb2R1bGUpCisgICAgewogICAgICAg
ICBFUlIoIk5vIEQzRCBjb21waWxlciBtb2R1bGUgZm91bmQgLSBhYm9ydGluZyFcbiIpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIuaAkocmV2aXNp
b24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9SZW5kZXJlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5MywxMiBAQCBlbnVtIFNo
YWRlclR5cGUKICAgICBTSEFERVJfR0VPTUVUUlkKIH07CiAKK2VudW0gRDNEV29ya2Fyb3VuZFR5
cGUKK3sKKyAgICBBTkdMRV9EM0RfV09SS0FST1VORF9OT05FLAorICAgIEFOR0xFX0QzRF9XT1JL
QVJPVU5EX1NNM19PUFRJTUlaRVIKK307CisKIGNsYXNzIFJlbmRlcmVyCiB7CiAgIHB1YmxpYzoK
QEAgLTIwNyw3ICsyMTMsNyBAQCBjbGFzcyBSZW5kZXJlcgogCiAgICAgLy8gU2hhZGVyIG9wZXJh
dGlvbnMKICAgICB2aXJ0dWFsIFNoYWRlckV4ZWN1dGFibGUgKmxvYWRFeGVjdXRhYmxlKGNvbnN0
IHZvaWQgKmZ1bmN0aW9uLCBzaXplX3QgbGVuZ3RoLCByeDo6U2hhZGVyVHlwZSB0eXBlKSA9IDA7
Ci0gICAgdmlydHVhbCBTaGFkZXJFeGVjdXRhYmxlICpjb21waWxlVG9FeGVjdXRhYmxlKGdsOjpJ
bmZvTG9nICZpbmZvTG9nLCBjb25zdCBjaGFyICpzaGFkZXJITFNMLCByeDo6U2hhZGVyVHlwZSB0
eXBlKSA9IDA7CisgICAgdmlydHVhbCBTaGFkZXJFeGVjdXRhYmxlICpjb21waWxlVG9FeGVjdXRh
YmxlKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBjaGFyICpzaGFkZXJITFNMLCByeDo6U2hh
ZGVyVHlwZSB0eXBlLCBEM0RXb3JrYXJvdW5kVHlwZSB3b3JrYXJvdW5kKSA9IDA7CiAKICAgICAv
LyBJbWFnZSBvcGVyYXRpb25zCiAgICAgdmlydHVhbCBJbWFnZSAqY3JlYXRlSW1hZ2UoKSA9IDA7
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1N3
YXBDaGFpbjkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluOS5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluOS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDkgQEAgdm9pZCBTd2FwQ2hhaW45OjpyZWxl
YXNlKCkKIAogc3RhdGljIERXT1JEIGNvbnZlcnRJbnRlcnZhbChFR0xpbnQgaW50ZXJ2YWwpCiB7
CisjaWYgQU5HTEVfRk9SQ0VfVlNZTkNfT0ZGCisgICAgcmV0dXJuIEQzRFBSRVNFTlRfSU5URVJW
QUxfSU1NRURJQVRFOworI2Vsc2UKICAgICBzd2l0Y2goaW50ZXJ2YWwpCiAgICAgewogICAgICAg
Y2FzZSAwOiByZXR1cm4gRDNEUFJFU0VOVF9JTlRFUlZBTF9JTU1FRElBVEU7CkBAIC04Miw2ICs4
NSw3IEBAIHN0YXRpYyBEV09SRCBjb252ZXJ0SW50ZXJ2YWwoRUdMaW50IGludGUKICAgICB9CiAK
ICAgICByZXR1cm4gRDNEUFJFU0VOVF9JTlRFUlZBTF9ERUZBVUxUOworI2VuZGlmCiB9CiAKIEVH
TGludCBTd2FwQ2hhaW45OjpyZXNpemUoaW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZm
ZXJIZWlnaHQpCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1N3YXBDaGFpbjExLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbjExLmNwcAkocmV2aXNpb24gMTU5
NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9T
d2FwQ2hhaW4xMS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3NSw2ICsyNzUsNyBAQCBFR0xpbnQg
U3dhcENoYWluMTE6OnJlc2V0T2Zmc2NyZWVuVGV4dHVyCiAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gb2Zmc2NyZWVuVGV4dHVyZVJlc291
cmNlLT5HZXRTaGFyZWRIYW5kbGUoJm1TaGFyZUhhbmRsZSk7CisgICAgICAgICAgICAgICAgb2Zm
c2NyZWVuVGV4dHVyZVJlc291cmNlLT5SZWxlYXNlKCk7CiAKICAgICAgICAgICAgICAgICBpZiAo
RkFJTEVEKHJlc3VsdCkpCiAgICAgICAgICAgICAgICAgewpAQCAtNDY0LDE4ICs0NjUsNiBAQCBF
R0xpbnQgU3dhcENoYWluMTE6OnJlc2V0KGludCBiYWNrYnVmZmVyCiAKICAgICBpZiAobVdpbmRv
dykKICAgICB7Ci0gICAgICAgIC8vIFdlIGNhbm5vdCBjcmVhdGUgYSBzd2FwIGNoYWluIGZvciBh
biBIV05EIHRoYXQgaXMgb3duZWQgYnkgYSBkaWZmZXJlbnQgcHJvY2VzcwotICAgICAgICBEV09S
RCBjdXJyZW50UHJvY2Vzc0lkID0gR2V0Q3VycmVudFByb2Nlc3NJZCgpOwotICAgICAgICBEV09S
RCB3bmRQcm9jZXNzSWQ7Ci0gICAgICAgIEdldFdpbmRvd1RocmVhZFByb2Nlc3NJZChtV2luZG93
LCAmd25kUHJvY2Vzc0lkKTsKLQotICAgICAgICBpZiAoY3VycmVudFByb2Nlc3NJZCAhPSB3bmRQ
cm9jZXNzSWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0ZSBz
d2FwIGNoYWluLCB3aW5kb3cgb3duZWQgYnkgZGlmZmVyZW50IHByb2Nlc3MiKTsKLSAgICAgICAg
ICAgIHJlbGVhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBFR0xfQkFEX05BVElWRV9XSU5ET1c7
Ci0gICAgICAgIH0KLQogICAgICAgICBJRFhHSUZhY3RvcnkgKmZhY3RvcnkgPSBtUmVuZGVyZXIt
PmdldER4Z2lGYWN0b3J5KCk7CiAKICAgICAgICAgRFhHSV9TV0FQX0NIQUlOX0RFU0Mgc3dhcENo
YWluRGVzYyA9IHswfTsKQEAgLTUwNyw3ICs0OTYsMjEgQEAgRUdMaW50IFN3YXBDaGFpbjExOjpy
ZXNldChpbnQgYmFja2J1ZmZlcgogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBFR0xfQkFEX0FMTE9DOworICAgICAg
ICAgICAgICAgIC8vIFdlIGNhbm5vdCBjcmVhdGUgYSBzd2FwIGNoYWluIGZvciBhbiBIV05EIHRo
YXQgaXMgb3duZWQgYnkgYSBkaWZmZXJlbnQgcHJvY2VzcyBvbiBzb21lIHZlcnNpb25zIG9mCisg
ICAgICAgICAgICAgICAgLy8gd2luZG93cworICAgICAgICAgICAgICAgIERXT1JEIGN1cnJlbnRQ
cm9jZXNzSWQgPSBHZXRDdXJyZW50UHJvY2Vzc0lkKCk7CisgICAgICAgICAgICAgICAgRFdPUkQg
d25kUHJvY2Vzc0lkOworICAgICAgICAgICAgICAgIEdldFdpbmRvd1RocmVhZFByb2Nlc3NJZCht
V2luZG93LCAmd25kUHJvY2Vzc0lkKTsKKworICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UHJv
Y2Vzc0lkICE9IHduZFByb2Nlc3NJZCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0ZSBzd2FwIGNoYWluLCB3aW5kb3cgb3duZWQgYnkg
ZGlmZmVyZW50IHByb2Nlc3MiKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVHTF9CQURf
TkFUSVZFX1dJTkRPVzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVHTF9CQURfQUxM
T0M7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTY2
Nyw3ICs2NzAsMTIgQEAgRUdMaW50IFN3YXBDaGFpbjExOjpzd2FwUmVjdChFR0xpbnQgeCwgRQog
CiAgICAgLy8gRHJhdwogICAgIGRldmljZUNvbnRleHQtPkRyYXcoNCwgMCk7CisKKyNpZiBBTkdM
RV9GT1JDRV9WU1lOQ19PRkYKKyAgICByZXN1bHQgPSBtU3dhcENoYWluLT5QcmVzZW50KDAsIDAp
OworI2Vsc2UKICAgICByZXN1bHQgPSBtU3dhcENoYWluLT5QcmVzZW50KG1Td2FwSW50ZXJ2YWws
IDApOworI2VuZGlmCiAKICAgICBpZiAocmVzdWx0ID09IERYR0lfRVJST1JfREVWSUNFX1JFTU9W
RUQpCiAgICAgewpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9Td2FwQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbi5oCShyZXZpc2lvbiAxNTk1MzIpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFp
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw2ICsxMiwxMCBAQAogCiAjaW5jbHVkZSAiY29tbW9u
L2FuZ2xldXRpbHMuaCIKIAorI2lmICFkZWZpbmVkKEFOR0xFX0ZPUkNFX1ZTWU5DX09GRikKKyNk
ZWZpbmUgQU5HTEVfRk9SQ0VfVlNZTkNfT0ZGIDAKKyNlbmRpZgorCiBuYW1lc3BhY2UgcngKIHsK
IApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9U
ZXh0dXJlU3RvcmFnZTExLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdlMTEuY3BwCShyZXZpc2lvbiAx
NTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L1RleHR1cmVTdG9yYWdlMTEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw2IEBAIGJv
b2wgVGV4dHVyZVN0b3JhZ2UxMTo6SXNUZXh0dXJlRm9ybWF0UmUKICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfUjhHOEI4QThfVU5PUk06CiAgICAgICBjYXNlIERYR0lfRk9STUFUX0E4X1VOT1JNOgog
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQ6Ci0gICAgICBjYXNlIERY
R0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVDoKICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2
QjE2QTE2X0ZMT0FUOgogICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STToKICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhfVU5PUk06CkBAIC04MCw2ICs3OSw3IEBAIGJvb2wgVGV4
dHVyZVN0b3JhZ2UxMTo6SXNUZXh0dXJlRm9ybWF0UmUKICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
QkMxX1VOT1JNOgogICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJfVU5PUk06IAogICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9CQzNfVU5PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIz
Ml9GTE9BVDogLy8gbm90IHJlbmRlcmFibGUgb24gYWxsIGRldmljZXMKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgZGVmYXVsdDoKICAgICAgICAgVU5SRUFDSEFCTEUoKTsKQEAgLTE4Nywx
NSArMTg3LDYgQEAgdm9pZCBUZXh0dXJlU3RvcmFnZTExOjpnZW5lcmF0ZU1pcG1hcExheQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0UlRWLCBkZXN0QXJlYSwgZGVzdC0+
Z2V0V2lkdGgoKSwgZGVzdC0+Z2V0SGVpZ2h0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1JHQkEpOwogICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHNvdXJjZVNSVikK
LSAgICAgICAgewotICAgICAgICAgICAgc291cmNlU1JWLT5SZWxlYXNlKCk7Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKGRlc3RSVFYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlc3RSVFYtPlJl
bGVhc2UoKTsKLSAgICAgICAgfQogICAgIH0KIH0KIApAQCAtNTU4LDcgKzU0OSw3IEBAIFJlbmRl
clRhcmdldCAqVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjpnZXQKIAogICAgICAgICAgICAgRDNEMTFf
U0hBREVSX1JFU09VUkNFX1ZJRVdfREVTQyBzcnZEZXNjOwogICAgICAgICAgICAgc3J2RGVzYy5G
b3JtYXQgPSBtU2hhZGVyUmVzb3VyY2VGb3JtYXQ7Ci0gICAgICAgICAgICBzcnZEZXNjLlZpZXdE
aW1lbnNpb24gPSBEM0QxMV9TUlZfRElNRU5TSU9OX1RFWFRVUkVDVUJFOworICAgICAgICAgICAg
c3J2RGVzYy5WaWV3RGltZW5zaW9uID0gRDNEMTFfU1JWX0RJTUVOU0lPTl9URVhUVVJFMkRBUlJB
WTsgLy8gV2lsbCBiZSB1c2VkIHdpdGggVGV4dHVyZTJEIHNhbXBsZXIsIG5vdCBUZXh0dXJlQ3Vi
ZQogICAgICAgICAgICAgc3J2RGVzYy5UZXh0dXJlMkRBcnJheS5Nb3N0RGV0YWlsZWRNaXAgPSBs
ZXZlbDsKICAgICAgICAgICAgIHNydkRlc2MuVGV4dHVyZTJEQXJyYXkuTWlwTGV2ZWxzID0gMTsK
ICAgICAgICAgICAgIHNydkRlc2MuVGV4dHVyZTJEQXJyYXkuRmlyc3RBcnJheVNsaWNlID0gZmFj
ZUlkeDsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvVmVydGV4QnVmZmVyOS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXI5LmNwcAkocmV2aXNpb24gMTU5
NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9W
ZXJ0ZXhCdWZmZXI5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsMTQgQEAgYm9vbCBW
ZXJ0ZXhCdWZmZXI5OjpzdG9yZVZlcnRleEF0dHJpYnV0ZQogICAgICAgICBEV09SRCBsb2NrRmxh
Z3MgPSBtRHluYW1pY1VzYWdlID8gRDNETE9DS19OT09WRVJXUklURSA6IDA7CiAKICAgICAgICAg
dm9pZCAqbWFwUHRyID0gTlVMTDsKLSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtVmVydGV4QnVm
ZmVyLT5Mb2NrKG9mZnNldCwgc3BhY2VSZXF1aXJlZChhdHRyaWIsIGNvdW50LCBpbnN0YW5jZXMp
LCAmbWFwUHRyLCBsb2NrRmxhZ3MpOworCisgICAgICAgIHVuc2lnbmVkIGludCBtYXBTaXplOwor
ICAgICAgICBpZiAoIXNwYWNlUmVxdWlyZWQoYXR0cmliLCBjb3VudCwgaW5zdGFuY2VzLCAmbWFw
U2l6ZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbVZlcnRleEJ1ZmZlci0+TG9jayhvZmZzZXQsIG1h
cFNpemUsICZtYXBQdHIsIGxvY2tGbGFncyk7CiAKICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQp
KQogICAgICAgICB7CkBAIC0xNjcsMTkgKzE3NCwyMSBAQCBib29sIFZlcnRleEJ1ZmZlcjk6OnN0
b3JlUmF3RGF0YShjb25zdCB2CiAgICAgfQogfQogCi11bnNpZ25lZCBpbnQgVmVydGV4QnVmZmVy
OTo6Z2V0U3BhY2VSZXF1aXJlZChjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsIEdM
c2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKSBjb25zdAorYm9vbCBWZXJ0ZXhCdWZmZXI5
OjpnZXRTcGFjZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xz
aXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50ICpvdXRTcGFjZVJlcXVpcmVkKSBjb25zdAogewotICAg
IHJldHVybiBzcGFjZVJlcXVpcmVkKGF0dHJpYiwgY291bnQsIGluc3RhbmNlcyk7CisgICAgcmV0
dXJuIHNwYWNlUmVxdWlyZWQoYXR0cmliLCBjb3VudCwgaW5zdGFuY2VzLCBvdXRTcGFjZVJlcXVp
cmVkKTsKIH0KIAogYm9vbCBWZXJ0ZXhCdWZmZXI5OjpyZXF1aXJlc0NvbnZlcnNpb24oY29uc3Qg
Z2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliKSBjb25zdAogewotICAgIHJldHVybiBmb3JtYXRD
b252ZXJ0ZXIoYXR0cmliKS5pZGVudGl0eTsKKyAgICByZXR1cm4gIWZvcm1hdENvbnZlcnRlcihh
dHRyaWIpLmlkZW50aXR5OwogfQogCiB1bnNpZ25lZCBpbnQgVmVydGV4QnVmZmVyOTo6Z2V0VmVy
dGV4U2l6ZShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIHNwYWNlUmVxdWlyZWQoYXR0cmliLCAxLCAwKTsKKyAgICB1bnNpZ25lZCBpbnQgc3Bh
Y2VSZXF1aXJlZDsKKyAgICByZXR1cm4gZ2V0U3BhY2VSZXF1aXJlZChhdHRyaWIsIDEsIDAsICZz
cGFjZVJlcXVpcmVkKSA/IHNwYWNlUmVxdWlyZWQgOiAwOwogfQogCiBEM0RERUNMVFlQRSBWZXJ0
ZXhCdWZmZXI5OjpnZXREZWNsVHlwZShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIp
IGNvbnN0CkBAIC00NjksMTcgKzQ3OCw1MiBAQCBjb25zdCBWZXJ0ZXhCdWZmZXI5OjpGb3JtYXRD
b252ZXJ0ZXIgJlZlCiAgICAgcmV0dXJuIG1Gb3JtYXRDb252ZXJ0ZXJzW3R5cGVJbmRleChhdHRy
aWJ1dGUubVR5cGUpXVthdHRyaWJ1dGUubU5vcm1hbGl6ZWRdW2F0dHJpYnV0ZS5tU2l6ZSAtIDFd
OwogfQogCi11bnNpZ25lZCBpbnQgVmVydGV4QnVmZmVyOTo6c3BhY2VSZXF1aXJlZChjb25zdCBn
bDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsIHN0ZDo6c2l6ZV90IGNvdW50LCBHTHNpemVpIGlu
c3RhbmNlcykKK2Jvb2wgVmVydGV4QnVmZmVyOTo6c3BhY2VSZXF1aXJlZChjb25zdCBnbDo6VmVy
dGV4QXR0cmlidXRlICZhdHRyaWIsIHN0ZDo6c2l6ZV90IGNvdW50LCBHTHNpemVpIGluc3RhbmNl
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKm91dFNw
YWNlUmVxdWlyZWQpCiB7CiAgICAgdW5zaWduZWQgaW50IGVsZW1lbnRTaXplID0gZm9ybWF0Q29u
dmVydGVyKGF0dHJpYikub3V0cHV0RWxlbWVudFNpemU7CiAKLSAgICBpZiAoaW5zdGFuY2VzID09
IDAgfHwgYXR0cmliLm1EaXZpc29yID09IDApCisgICAgaWYgKGF0dHJpYi5tQXJyYXlFbmFibGVk
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGVsZW1lbnRTaXplICogY291bnQ7CisgICAgICAgIHVu
c2lnbmVkIGludCBlbGVtZW50Q291bnQgPSAwOworICAgICAgICBpZiAoaW5zdGFuY2VzID09IDAg
fHwgYXR0cmliLm1EaXZpc29yID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGVsZW1lbnRD
b3VudCA9IGNvdW50OworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oaW5zdGFuY2VzKSA8IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6bWF4KCkgLSAoYXR0cmliLm1EaXZpc29yIC0gMSkp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gUm91bmQgdXAKKyAgICAgICAgICAg
ICAgICBlbGVtZW50Q291bnQgPSAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihpbnN0YW5jZXMp
ICsgKGF0dHJpYi5tRGl2aXNvciAtIDEpKSAvIGF0dHJpYi5tRGl2aXNvcjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBlbGVt
ZW50Q291bnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGluc3RhbmNlcykgLyBhdHRyaWIu
bURpdmlzb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoZWxlbWVu
dFNpemUgPD0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBpbnQ+OjptYXgoKSAvIGVsZW1l
bnRDb3VudCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG91dFNwYWNlUmVxdWlyZWQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgKm91dFNwYWNlUmVxdWlyZWQgPSBlbGVtZW50
U2l6ZSAqIGVsZW1lbnRDb3VudDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIHJl
dHVybiBlbGVtZW50U2l6ZSAqICgoaW5zdGFuY2VzICsgYXR0cmliLm1EaXZpc29yIC0gMSkgLyBh
dHRyaWIubURpdmlzb3IpOworICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgZWxlbWVudFNpemUg
PSA0OworICAgICAgICBpZiAob3V0U3BhY2VSZXF1aXJlZCkKKyAgICAgICAgeworICAgICAgICAg
ICAgKm91dFNwYWNlUmVxdWlyZWQgPSBlbGVtZW50U2l6ZSAqIDQ7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZl
cjkuaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXI5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcg
KzI5LDcgQEAgY2xhc3MgVmVydGV4QnVmZmVyOSA6IHB1YmxpYyBWZXJ0ZXhCdWZmZQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG9mZnNldCk7CiAg
ICAgdmlydHVhbCBib29sIHN0b3JlUmF3RGF0YShjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBp
bnQgc2l6ZSwgdW5zaWduZWQgaW50IG9mZnNldCk7CiAKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGlu
dCBnZXRTcGFjZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xz
aXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBn
ZXRTcGFjZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xzaXpl
aSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMsIHVuc2lnbmVkIGludCAqb3V0U3BhY2VSZXF1aXJl
ZCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNDb252ZXJzaW9uKGNvbnN0IGds
OjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYikgY29uc3Q7CiAKQEAgLTgyLDcgKzgyLDggQEAgY2xh
c3MgVmVydGV4QnVmZmVyOSA6IHB1YmxpYyBWZXJ0ZXhCdWZmZQogICAgIHN0YXRpYyB1bnNpZ25l
ZCBpbnQgdHlwZUluZGV4KEdMZW51bSB0eXBlKTsKICAgICBzdGF0aWMgY29uc3QgRm9ybWF0Q29u
dmVydGVyICZmb3JtYXRDb252ZXJ0ZXIoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmli
dXRlKTsKIAotICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgc3BhY2VSZXF1aXJlZChjb25zdCBnbDo6
VmVydGV4QXR0cmlidXRlICZhdHRyaWIsIHN0ZDo6c2l6ZV90IGNvdW50LCBHTHNpemVpIGluc3Rh
bmNlcyk7CisgICAgc3RhdGljIGJvb2wgc3BhY2VSZXF1aXJlZChjb25zdCBnbDo6VmVydGV4QXR0
cmlidXRlICZhdHRyaWIsIHN0ZDo6c2l6ZV90IGNvdW50LCBHTHNpemVpIGluc3RhbmNlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqb3V0U3BhY2VSZXF1aXJl
ZCk7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjExLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjExLmNwcAkocmV2
aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9WZXJ0ZXhCdWZmZXIxMS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MiwxOCArMTUy
LDQwIEBAIGJvb2wgVmVydGV4QnVmZmVyMTE6OnN0b3JlUmF3RGF0YShjb25zdCAKICAgICB9CiB9
CiAKLXVuc2lnbmVkIGludCBWZXJ0ZXhCdWZmZXIxMTo6Z2V0U3BhY2VSZXF1aXJlZChjb25zdCBn
bDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMpIGNvbnN0
Citib29sIFZlcnRleEJ1ZmZlcjExOjpnZXRTcGFjZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhB
dHRyaWJ1dGUgJmF0dHJpYiwgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMsIHVuc2lnbmVkIGludCAqb3V0U3BhY2VS
ZXF1aXJlZCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBpbnQgZWxlbWVudFNpemUgPSBnZXRWZXJ0
ZXhDb252ZXJzaW9uKGF0dHJpYikub3V0cHV0RWxlbWVudFNpemU7CiAKKyAgICB1bnNpZ25lZCBp
bnQgZWxlbWVudENvdW50ID0gMDsKICAgICBpZiAoaW5zdGFuY2VzID09IDAgfHwgYXR0cmliLm1E
aXZpc29yID09IDApCiAgICAgewotICAgICAgICByZXR1cm4gZWxlbWVudFNpemUgKiBjb3VudDsK
KyAgICAgICAgZWxlbWVudENvdW50ID0gY291bnQ7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0g
ICAgICAgIHJldHVybiBlbGVtZW50U2l6ZSAqICgoaW5zdGFuY2VzICsgYXR0cmliLm1EaXZpc29y
IC0gMSkgLyBhdHRyaWIubURpdmlzb3IpOworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgaW50PihpbnN0YW5jZXMpIDwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBpbnQ+Ojpt
YXgoKSAtIChhdHRyaWIubURpdmlzb3IgLSAxKSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8g
Um91bmQgdXAKKyAgICAgICAgICAgIGVsZW1lbnRDb3VudCA9IChzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBpbnQ+KGluc3RhbmNlcykgKyAoYXR0cmliLm1EaXZpc29yIC0gMSkpIC8gYXR0cmliLm1EaXZp
c29yOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgZWxl
bWVudENvdW50ID0gaW5zdGFuY2VzIC8gYXR0cmliLm1EaXZpc29yOworICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKGVsZW1lbnRTaXplIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQg
aW50Pjo6bWF4KCkgLyBlbGVtZW50Q291bnQpCisgICAgeworICAgICAgICBpZiAob3V0U3BhY2VS
ZXF1aXJlZCkKKyAgICAgICAgeworICAgICAgICAgICAgKm91dFNwYWNlUmVxdWlyZWQgPSBlbGVt
ZW50U2l6ZSAqIGVsZW1lbnRDb3VudDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0K
IApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9W
ZXJ0ZXhCdWZmZXIxMS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyMTEuaAkocmV2aXNpb24gMTU5NTMyKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhC
dWZmZXIxMS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsMTEgQEAgY2xhc3MgVmVydGV4
QnVmZmVyMTEgOiBwdWJsaWMgVmVydGV4QnVmZgogICAgIHN0YXRpYyBWZXJ0ZXhCdWZmZXIxMSAq
bWFrZVZlcnRleEJ1ZmZlcjExKFZlcnRleEJ1ZmZlciAqdmV0ZXhCdWZmZXIpOwogCiAgICAgdmly
dHVhbCBib29sIHN0b3JlVmVydGV4QXR0cmlidXRlcyhjb25zdCBnbDo6VmVydGV4QXR0cmlidXRl
ICZhdHRyaWIsIEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG9mZnNl
dCk7CiAgICAgdmlydHVhbCBib29sIHN0b3JlUmF3RGF0YShjb25zdCB2b2lkKiBkYXRhLCB1bnNp
Z25lZCBpbnQgc2l6ZSwgdW5zaWduZWQgaW50IG9mZnNldCk7CiAKLSAgICB2aXJ0dWFsIHVuc2ln
bmVkIGludCBnZXRTcGFjZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJp
YiwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBnZXRTcGFjZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwg
R0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50ICpvdXRTcGFjZVJlcXVpcmVkKSBjb25zdDsKIAogICAg
IHZpcnR1YWwgYm9vbCByZXF1aXJlc0NvbnZlcnNpb24oY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0
ZSAmYXR0cmliKSBjb25zdDsKIApAQCAtNzAsNCArNzEsNCBAQCBjbGFzcyBWZXJ0ZXhCdWZmZXIx
MSA6IHB1YmxpYyBWZXJ0ZXhCdWZmCiAKIH0KIAotI2VuZGlmIC8vIExJQkdMRVNWMl9SRU5ERVJF
Ul9WRVJURVhCVUZGRVIxMV9IXwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyNlbmRpZiAv
LyBMSUJHTEVTVjJfUkVOREVSRVJfVkVSVEVYQlVGRkVSMTFfSF8KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L1ZlcnRleEJ1ZmZlci5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODcsNDcgKzg3LDc2IEBAIGJvb2wgVmVydGV4QnVmZmVySW50ZXJmYWNlOjpkaXNj
YXJkKCkKICAgICByZXR1cm4gbVZlcnRleEJ1ZmZlci0+ZGlzY2FyZCgpOwogfQogCi1pbnQgVmVy
dGV4QnVmZmVySW50ZXJmYWNlOjpzdG9yZVZlcnRleEF0dHJpYnV0ZXMoY29uc3QgZ2w6OlZlcnRl
eEF0dHJpYnV0ZSAmYXR0cmliLCBHTGludCBzdGFydCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBp
bnN0YW5jZXMpCitib29sIFZlcnRleEJ1ZmZlckludGVyZmFjZTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1
dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgIEdMaW50IHN0YXJ0LCBHTHNp
emVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpvdXRTdHJlYW1PZmZzZXQpCiB7
CisgICAgdW5zaWduZWQgaW50IHNwYWNlUmVxdWlyZWQ7CisgICAgaWYgKCFtVmVydGV4QnVmZmVy
LT5nZXRTcGFjZVJlcXVpcmVkKGF0dHJpYiwgY291bnQsIGluc3RhbmNlcywgJnNwYWNlUmVxdWly
ZWQpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChtV3Jp
dGVQb3NpdGlvbiArIHNwYWNlUmVxdWlyZWQgPCBtV3JpdGVQb3NpdGlvbikKKyAgICB7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICBpZiAoIXJlc2VydmVTcGFjZShtUmVzZXJ2
ZWRTcGFjZSkpCiAgICAgewotICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAgICAgbVJlc2VydmVkU3BhY2UgPSAwOwogCiAgICAgaWYgKCFtVmVydGV4QnVm
ZmVyLT5zdG9yZVZlcnRleEF0dHJpYnV0ZXMoYXR0cmliLCBzdGFydCwgY291bnQsIGluc3RhbmNl
cywgbVdyaXRlUG9zaXRpb24pKQogICAgIHsKLSAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaW50IG9sZFdyaXRlUG9zID0gc3RhdGljX2Nhc3Q8
aW50PihtV3JpdGVQb3NpdGlvbik7Ci0gICAgbVdyaXRlUG9zaXRpb24gKz0gbVZlcnRleEJ1ZmZl
ci0+Z2V0U3BhY2VSZXF1aXJlZChhdHRyaWIsIGNvdW50LCBpbnN0YW5jZXMpOworICAgIGlmIChv
dXRTdHJlYW1PZmZzZXQpCisgICAgeworICAgICAgICAqb3V0U3RyZWFtT2Zmc2V0ID0gbVdyaXRl
UG9zaXRpb247CisgICAgfQorCisgICAgbVdyaXRlUG9zaXRpb24gKz0gc3BhY2VSZXF1aXJlZDsK
IAotICAgIHJldHVybiBvbGRXcml0ZVBvczsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotaW50IFZl
cnRleEJ1ZmZlckludGVyZmFjZTo6c3RvcmVSYXdEYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2ln
bmVkIGludCBzaXplKQorYm9vbCBWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OnN0b3JlUmF3RGF0YShj
b25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSwgdW5zaWduZWQgaW50ICpvdXRTdHJl
YW1PZmZzZXQpCiB7CisgICAgaWYgKG1Xcml0ZVBvc2l0aW9uICsgc2l6ZSA8IG1Xcml0ZVBvc2l0
aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIGlmICghcmVz
ZXJ2ZVNwYWNlKG1SZXNlcnZlZFNwYWNlKSkKICAgICB7Ci0gICAgICAgIHJldHVybiAtMTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBtUmVzZXJ2ZWRTcGFjZSA9IDA7CiAKICAg
ICBpZiAoIW1WZXJ0ZXhCdWZmZXItPnN0b3JlUmF3RGF0YShkYXRhLCBzaXplLCBtV3JpdGVQb3Np
dGlvbikpCiAgICAgewotICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBpZiAob3V0U3RyZWFtT2Zmc2V0KQorICAgIHsKKyAgICAgICAgKm91dFN0
cmVhbU9mZnNldCA9IG1Xcml0ZVBvc2l0aW9uOwogICAgIH0KIAotICAgIGludCBvbGRXcml0ZVBv
cyA9IHN0YXRpY19jYXN0PGludD4obVdyaXRlUG9zaXRpb24pOwogICAgIG1Xcml0ZVBvc2l0aW9u
ICs9IHNpemU7CiAKLSAgICByZXR1cm4gb2xkV3JpdGVQb3M7CisgICAgcmV0dXJuIHRydWU7CiB9
CiAKIGJvb2wgVmVydGV4QnVmZmVySW50ZXJmYWNlOjpyZXNlcnZlVmVydGV4U3BhY2UoY29uc3Qg
Z2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlLCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGlu
c3RhbmNlcykKIHsKLSAgICB1bnNpZ25lZCBpbnQgcmVxdWlyZWRTcGFjZSA9IG1WZXJ0ZXhCdWZm
ZXItPmdldFNwYWNlUmVxdWlyZWQoYXR0cmlidXRlLCBjb3VudCwgaW5zdGFuY2VzKTsKKyAgICB1
bnNpZ25lZCBpbnQgcmVxdWlyZWRTcGFjZTsKKyAgICBpZiAoIW1WZXJ0ZXhCdWZmZXItPmdldFNw
YWNlUmVxdWlyZWQoYXR0cmlidXRlLCBjb3VudCwgaW5zdGFuY2VzLCAmcmVxdWlyZWRTcGFjZSkp
CisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCiAgICAgLy8gUHJvdGVjdCBh
Z2FpbnN0IGludGVnZXIgb3ZlcmZsb3cKICAgICBpZiAobVJlc2VydmVkU3BhY2UgKyByZXF1aXJl
ZFNwYWNlIDwgbVJlc2VydmVkU3BhY2UpCkBAIC0xOTUsNyArMjI0LDcgQEAgU3RhdGljVmVydGV4
QnVmZmVySW50ZXJmYWNlOjp+U3RhdGljVmVydAogewogfQogCi1pbnQgU3RhdGljVmVydGV4QnVm
ZmVySW50ZXJmYWNlOjpsb29rdXBBdHRyaWJ1dGUoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAm
YXR0cmlidXRlKQorYm9vbCBTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6Omxvb2t1cEF0dHJp
YnV0ZShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWJ1dGUsIHVuc2lnbmVkIGludCAq
b3V0U3RyZWFtT2Zmc2V0KQogewogICAgIGZvciAodW5zaWduZWQgaW50IGVsZW1lbnQgPSAwOyBl
bGVtZW50IDwgbUNhY2hlLnNpemUoKTsgZWxlbWVudCsrKQogICAgIHsKQEAgLTIwNiwxMiArMjM1
LDE2IEBAIGludCBTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6Omxvb2t1cEEKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKG1DYWNoZVtlbGVtZW50XS5hdHRyaWJ1dGVPZmZzZXQgPT0gYXR0
cmlidXRlLm1PZmZzZXQgJSBhdHRyaWJ1dGUuc3RyaWRlKCkpCiAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIG1DYWNoZVtlbGVtZW50XS5zdHJlYW1PZmZzZXQ7CisgICAgICAg
ICAgICAgICAgaWYgKG91dFN0cmVhbU9mZnNldCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICpvdXRTdHJlYW1PZmZzZXQgPSBtQ2FjaGVbZWxlbWVudF0uc3RyZWFtT2Zm
c2V0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiAtMTsKKyAgICByZXR1
cm4gZmFsc2U7CiB9CiAKIGJvb2wgU3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlOjpyZXNlcnZl
U3BhY2UodW5zaWduZWQgaW50IHNpemUpCkBAIC0yMzMsMTMgKzI2NiwyNyBAQCBib29sIFN0YXRp
Y1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6cmVzZXJ2CiAgICAgfQogfQogCi1pbnQgU3RhdGljVmVy
dGV4QnVmZmVySW50ZXJmYWNlOjpzdG9yZVZlcnRleEF0dHJpYnV0ZXMoY29uc3QgZ2w6OlZlcnRl
eEF0dHJpYnV0ZSAmYXR0cmliLCBHTGludCBzdGFydCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBp
bnN0YW5jZXMpCitib29sIFN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6c3RvcmVWZXJ0ZXhB
dHRyaWJ1dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xpbnQgc3RhcnQs
IEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKm91dFN0cmVh
bU9mZnNldCkKIHsKLSAgICBpbnQgYXR0cmlidXRlT2Zmc2V0ID0gYXR0cmliLm1PZmZzZXQgJSBh
dHRyaWIuc3RyaWRlKCk7Ci0gICAgVmVydGV4RWxlbWVudCBlbGVtZW50ID0geyBhdHRyaWIubVR5
cGUsIGF0dHJpYi5tU2l6ZSwgYXR0cmliLnN0cmlkZSgpLCBhdHRyaWIubU5vcm1hbGl6ZWQsIGF0
dHJpYnV0ZU9mZnNldCwgZ2V0V3JpdGVQb3NpdGlvbigpIH07Ci0gICAgbUNhY2hlLnB1c2hfYmFj
ayhlbGVtZW50KTsKKyAgICB1bnNpZ25lZCBpbnQgc3RyZWFtT2Zmc2V0OworICAgIGlmIChWZXJ0
ZXhCdWZmZXJJbnRlcmZhY2U6OnN0b3JlVmVydGV4QXR0cmlidXRlcyhhdHRyaWIsIHN0YXJ0LCBj
b3VudCwgaW5zdGFuY2VzLCAmc3RyZWFtT2Zmc2V0KSkKKyAgICB7CisgICAgICAgIGludCBhdHRy
aWJ1dGVPZmZzZXQgPSBhdHRyaWIubU9mZnNldCAlIGF0dHJpYi5zdHJpZGUoKTsKKyAgICAgICAg
VmVydGV4RWxlbWVudCBlbGVtZW50ID0geyBhdHRyaWIubVR5cGUsIGF0dHJpYi5tU2l6ZSwgYXR0
cmliLnN0cmlkZSgpLCBhdHRyaWIubU5vcm1hbGl6ZWQsIGF0dHJpYnV0ZU9mZnNldCwgc3RyZWFt
T2Zmc2V0IH07CisgICAgICAgIG1DYWNoZS5wdXNoX2JhY2soZWxlbWVudCk7CiAKLSAgICByZXR1
cm4gVmVydGV4QnVmZmVySW50ZXJmYWNlOjpzdG9yZVZlcnRleEF0dHJpYnV0ZXMoYXR0cmliLCBz
dGFydCwgY291bnQsIGluc3RhbmNlcyk7CisgICAgICAgIGlmIChvdXRTdHJlYW1PZmZzZXQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgICpvdXRTdHJlYW1PZmZzZXQgPSBzdHJlYW1PZmZzZXQ7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIH0KIAogfQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1Zl
cnRleEJ1ZmZlci5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw4ICszMyw4IEBAIGNsYXNzIFZlcnRleEJ1ZmZlcgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMsIHVuc2lnbmVkIGludCBvZmZzZXQp
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3RvcmVSYXdEYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHVu
c2lnbmVkIGludCBzaXplLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KSA9IDA7CiAKLSAgICB2aXJ0dWFs
IHVuc2lnbmVkIGludCBnZXRTcGFjZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUg
JmF0dHJpYiwgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGdldFNwYWNlUmVxdWlyZWQoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBHTHNp
emVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgKm91dFNwYWNlUmVxdWlyZWQpIGNvbnN0ID0gMDsKIAogICAg
IHZpcnR1YWwgYm9vbCByZXF1aXJlc0NvbnZlcnNpb24oY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0
ZSAmYXR0cmliKSBjb25zdCA9IDA7CiAKQEAgLTY3LDggKzY3LDkgQEAgY2xhc3MgVmVydGV4QnVm
ZmVySW50ZXJmYWNlCiAKICAgICB1bnNpZ25lZCBpbnQgZ2V0U2VyaWFsKCkgY29uc3Q7CiAKLSAg
ICB2aXJ0dWFsIGludCBzdG9yZVZlcnRleEF0dHJpYnV0ZXMoY29uc3QgZ2w6OlZlcnRleEF0dHJp
YnV0ZSAmYXR0cmliLCBHTGludCBzdGFydCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5j
ZXMpOwotICAgIHZpcnR1YWwgaW50IHN0b3JlUmF3RGF0YShjb25zdCB2b2lkKiBkYXRhLCB1bnNp
Z25lZCBpbnQgc2l6ZSk7CisgICAgdmlydHVhbCBib29sIHN0b3JlVmVydGV4QXR0cmlidXRlcyhj
b25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsIEdMaW50IHN0YXJ0LCBHTHNpemVpIGNv
dW50LCBHTHNpemVpIGluc3RhbmNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50ICpvdXRTdHJlYW1PZmZzZXQpOworICAgIHZpcnR1YWwgYm9vbCBz
dG9yZVJhd0RhdGEoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgaW50IHNpemUsIHVuc2lnbmVk
IGludCAqb3V0U3RyZWFtT2Zmc2V0KTsKIAogICAgIFZlcnRleEJ1ZmZlciogZ2V0VmVydGV4QnVm
ZmVyKCkgY29uc3Q7CiAKQEAgLTExMCwxMCArMTExLDEwIEBAIGNsYXNzIFN0YXRpY1ZlcnRleEJ1
ZmZlckludGVyZmFjZSA6IHB1YmwKICAgICBleHBsaWNpdCBTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRl
cmZhY2Uocng6OlJlbmRlcmVyICpyZW5kZXJlcik7CiAgICAgflN0YXRpY1ZlcnRleEJ1ZmZlcklu
dGVyZmFjZSgpOwogCi0gICAgaW50IHN0b3JlVmVydGV4QXR0cmlidXRlcyhjb25zdCBnbDo6VmVy
dGV4QXR0cmlidXRlICZhdHRyaWIsIEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50LCBHTHNpemVp
IGluc3RhbmNlcyk7CisgICAgYm9vbCBzdG9yZVZlcnRleEF0dHJpYnV0ZXMoY29uc3QgZ2w6OlZl
cnRleEF0dHJpYnV0ZSAmYXR0cmliLCBHTGludCBzdGFydCwgR0xzaXplaSBjb3VudCwgR0xzaXpl
aSBpbnN0YW5jZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
ICpvdXRTdHJlYW1PZmZzZXQpOwogCi0gICAgLy8gUmV0dXJucyB0aGUgb2Zmc2V0IGludG8gdGhl
IHZlcnRleCBidWZmZXIsIG9yIC0xIGlmIG5vdCBmb3VuZAotICAgIGludCBsb29rdXBBdHRyaWJ1
dGUoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlKTsKKyAgICBib29sIGxvb2t1
cEF0dHJpYnV0ZShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWJ1dGUsIHVuc2lnbmVk
IGludCogb3V0U3RyZWFtT2Zmc2V0KTsKIAogICBwcm90ZWN0ZWQ6CiAgICAgYm9vbCByZXNlcnZl
U3BhY2UodW5zaWduZWQgaW50IHNpemUpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhEYXRhTWFuYWdlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhE
YXRhTWFuYWdlci5jcHAJKHJldmlzaW9uIDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4RGF0YU1hbmFnZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiwxMiArMjYsMzIgQEAgbmFtZXNwYWNlCiBuYW1lc3BhY2UgcngKIHsKIAot
c3RhdGljIGludCBlbGVtZW50c0luQnVmZmVyKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0
dHJpYnV0ZSwgaW50IHNpemUpCitzdGF0aWMgaW50IGVsZW1lbnRzSW5CdWZmZXIoY29uc3QgZ2w6
OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlLCB1bnNpZ25lZCBpbnQgc2l6ZSkKIHsKLSAgICBp
bnQgc3RyaWRlID0gYXR0cmlidXRlLnN0cmlkZSgpOworICAgIC8vIFNpemUgY2Fubm90IGJlIGxh
cmdlciB0aGFuIGEgR0xzaXplaQorICAgIGlmIChzaXplID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQg
aW50PihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKSkKKyAgICB7CisgICAgICAgIHNp
emUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6
bWF4KCkpOworICAgIH0KKworICAgIEdMc2l6ZWkgc3RyaWRlID0gYXR0cmlidXRlLnN0cmlkZSgp
OwogICAgIHJldHVybiAoc2l6ZSAtIGF0dHJpYnV0ZS5tT2Zmc2V0ICUgc3RyaWRlICsgKHN0cmlk
ZSAtIGF0dHJpYnV0ZS50eXBlU2l6ZSgpKSkgLyBzdHJpZGU7CiB9CiAKK3N0YXRpYyBpbnQgU3Ry
ZWFtaW5nQnVmZmVyRWxlbWVudENvdW50KGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJp
YnV0ZSwgaW50IHZlcnRleERyYXdDb3VudCwgaW50IGluc3RhbmNlRHJhd0NvdW50KQoreworICAg
IC8vIEZvciBpbnN0YW5jZWQgcmVuZGVyaW5nLCB3ZSBkcmF3ICJpbnN0YW5jZURyYXdDb3VudCIg
c2V0cyBvZiAidmVydGV4RHJhd0NvdW50IiB2ZXJ0aWNlcy4KKyAgICAvLworICAgIC8vIEEgdmVy
dGV4IGF0dHJpYnV0ZSB3aXRoIGEgcG9zaXRpdmUgZGl2aXNvciBsb2FkcyBvbmUgaW5zdGFuY2Vk
IHZlcnRleCBmb3IgZXZlcnkgc2V0IG9mCisgICAgLy8gbm9uLWluc3RhbmNlZCB2ZXJ0aWNlcywg
YW5kIHRoZSBpbnN0YW5jZWQgdmVydGV4IGluZGV4IGFkdmFuY2VzIG9uY2UgZXZlcnkgIm1EaXZp
c29yIiBpbnN0YW5jZXMuCisgICAgaWYgKGluc3RhbmNlRHJhd0NvdW50ID4gMCAmJiBhdHRyaWJ1
dGUubURpdmlzb3IgPiAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGluc3RhbmNlRHJhd0NvdW50
IC8gYXR0cmlidXRlLm1EaXZpc29yOworICAgIH0KKworICAgIHJldHVybiB2ZXJ0ZXhEcmF3Q291
bnQ7Cit9CisKIFZlcnRleERhdGFNYW5hZ2VyOjpWZXJ0ZXhEYXRhTWFuYWdlcihSZW5kZXJlciAq
cmVuZGVyZXIpIDogbVJlbmRlcmVyKHJlbmRlcmVyKQogewogICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsgaSsrKQpAQCAtOTIsNyArMTEyLDcgQEAgR0xlbnVt
IFZlcnRleERhdGFNYW5hZ2VyOjpwcmVwYXJlVmVydGV4RAogICAgICAgICAgICAgZ2w6OkJ1ZmZl
ciAqYnVmZmVyID0gYXR0cmlic1tpXS5tQm91bmRCdWZmZXIuZ2V0KCk7CiAgICAgICAgICAgICBT
dGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UgKnN0YXRpY0J1ZmZlciA9IGJ1ZmZlciA/IGJ1ZmZl
ci0+Z2V0U3RhdGljVmVydGV4QnVmZmVyKCkgOiBOVUxMOwogCi0gICAgICAgICAgICBpZiAoc3Rh
dGljQnVmZmVyICYmIHN0YXRpY0J1ZmZlci0+Z2V0QnVmZmVyU2l6ZSgpID4gMCAmJiBzdGF0aWNC
dWZmZXItPmxvb2t1cEF0dHJpYnV0ZShhdHRyaWJzW2ldKSA9PSAtMSAmJgorICAgICAgICAgICAg
aWYgKHN0YXRpY0J1ZmZlciAmJiBzdGF0aWNCdWZmZXItPmdldEJ1ZmZlclNpemUoKSA+IDAgJiYg
IXN0YXRpY0J1ZmZlci0+bG9va3VwQXR0cmlidXRlKGF0dHJpYnNbaV0sIE5VTEwpICYmCiAgICAg
ICAgICAgICAgICAgIWRpcmVjdFN0b3JhZ2VQb3NzaWJsZShzdGF0aWNCdWZmZXIsIGF0dHJpYnNb
aV0pKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGJ1ZmZlci0+aW52YWxpZGF0ZVN0
YXRpY0RhdGEoKTsKQEAgLTEyNCw3ICsxNDQsMTYgQEAgR0xlbnVtIFZlcnRleERhdGFNYW5hZ2Vy
OjpwcmVwYXJlVmVydGV4RAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAoIW1TdHJlYW1pbmdC
dWZmZXItPnJlc2VydmVWZXJ0ZXhTcGFjZShhdHRyaWJzW2ldLCBjb3VudCwgaW5zdGFuY2VzKSkK
KyAgICAgICAgICAgICAgICAgICAgaW50IHRvdGFsQ291bnQgPSBTdHJlYW1pbmdCdWZmZXJFbGVt
ZW50Q291bnQoYXR0cmlic1tpXSwgY291bnQsIGluc3RhbmNlcyk7CisKKyAgICAgICAgICAgICAg
ICAgICAgLy8gVW5kZWZpbmVkIGJlaGF2aW91cjoKKyAgICAgICAgICAgICAgICAgICAgLy8gV2Ug
Y2FuIHJldHVybiBJTlZBTElEX09QRVJBVElPTiBpZiBvdXIgdmVydGV4IGF0dHJpYnV0ZSBkb2Vz
IG5vdCBoYXZlIGVub3VnaCBiYWNraW5nIGRhdGEuCisgICAgICAgICAgICAgICAgICAgIGlmIChi
dWZmZXIgJiYgZWxlbWVudHNJbkJ1ZmZlcihhdHRyaWJzW2ldLCBidWZmZXItPnNpemUoKSkgPCB0
b3RhbENvdW50KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gR0xfSU5WQUxJRF9PUEVSQVRJT047CisgICAgICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgICAgICBpZiAoIW1TdHJlYW1pbmdCdWZmZXItPnJlc2VydmVWZXJ0ZXhT
cGFjZShhdHRyaWJzW2ldLCB0b3RhbENvdW50LCBpbnN0YW5jZXMpKQogICAgICAgICAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfT1VUX09GX01FTU9SWTsK
ICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTU1LDcgKzE4NCw3IEBAIEdMZW51bSBWZXJ0ZXhE
YXRhTWFuYWdlcjo6cHJlcGFyZVZlcnRleEQKICAgICAgICAgICAgICAgICBCdWZmZXJTdG9yYWdl
ICpzdG9yYWdlID0gYnVmZmVyID8gYnVmZmVyLT5nZXRTdG9yYWdlKCkgOiBOVUxMOwogICAgICAg
ICAgICAgICAgIGJvb2wgZGlyZWN0U3RvcmFnZSA9IGRpcmVjdFN0b3JhZ2VQb3NzaWJsZSh2ZXJ0
ZXhCdWZmZXIsIGF0dHJpYnNbaV0pOwogCi0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3Qgc3Ry
ZWFtT2Zmc2V0ID0gLTE7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHN0cmVhbU9mZnNl
dCA9IDA7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG91dHB1dEVsZW1lbnRTaXplID0g
MDsKIAogICAgICAgICAgICAgICAgIGlmIChkaXJlY3RTdG9yYWdlKQpAQCAtMTY2LDM3ICsxOTUs
NDAgQEAgR0xlbnVtIFZlcnRleERhdGFNYW5hZ2VyOjpwcmVwYXJlVmVydGV4RAogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIGlmIChzdGF0aWNCdWZmZXIpCiAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdHJlYW1PZmZzZXQgPSBzdGF0aWNCdWZm
ZXItPmxvb2t1cEF0dHJpYnV0ZShhdHRyaWJzW2ldKTsKLSAgICAgICAgICAgICAgICAgICAgb3V0
cHV0RWxlbWVudFNpemUgPSBzdGF0aWNCdWZmZXItPmdldFZlcnRleEJ1ZmZlcigpLT5nZXRTcGFj
ZVJlcXVpcmVkKGF0dHJpYnNbaV0sIDEsIDApOworICAgICAgICAgICAgICAgICAgICBpZiAoIXN0
YXRpY0J1ZmZlci0+Z2V0VmVydGV4QnVmZmVyKCktPmdldFNwYWNlUmVxdWlyZWQoYXR0cmlic1tp
XSwgMSwgMCwgJm91dHB1dEVsZW1lbnRTaXplKSkKKyAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX09VVF9PRl9NRU1PUlk7CisgICAgICAgICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICBpZiAoc3RyZWFtT2Zmc2V0ID09IC0x
KQorICAgICAgICAgICAgICAgICAgICBpZiAoIXN0YXRpY0J1ZmZlci0+bG9va3VwQXR0cmlidXRl
KGF0dHJpYnNbaV0sICZzdHJlYW1PZmZzZXQpKQogICAgICAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSBlbnRpcmUgYnVmZmVyCiAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgdG90YWxDb3VudCA9IGVsZW1lbnRzSW5CdWZmZXIoYXR0cmli
c1tpXSwgc3RvcmFnZS0+Z2V0U2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBz
dGFydEluZGV4ID0gYXR0cmlic1tpXS5tT2Zmc2V0IC8gYXR0cmlic1tpXS5zdHJpZGUoKTsKIAot
ICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtT2Zmc2V0ID0gc3RhdGljQnVmZmVyLT5zdG9y
ZVZlcnRleEF0dHJpYnV0ZXMoYXR0cmlic1tpXSwgLXN0YXJ0SW5kZXgsIHRvdGFsQ291bnQsIDAp
OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdGF0aWNCdWZmZXItPnN0b3JlVmVydGV4
QXR0cmlidXRlcyhhdHRyaWJzW2ldLCAtc3RhcnRJbmRleCwgdG90YWxDb3VudCwgMCwgJnN0cmVh
bU9mZnNldCkpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEdMX09VVF9PRl9NRU1PUlk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICBpZiAoc3Ry
ZWFtT2Zmc2V0ICE9IC0xKQorICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmlyc3RF
bGVtZW50T2Zmc2V0ID0gKGF0dHJpYnNbaV0ubU9mZnNldCAvIGF0dHJpYnNbaV0uc3RyaWRlKCkp
ICogb3V0cHV0RWxlbWVudFNpemU7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBz
dGFydE9mZnNldCA9IChpbnN0YW5jZXMgPT0gMCB8fCBhdHRyaWJzW2ldLm1EaXZpc29yID09IDAp
ID8gc3RhcnQgKiBvdXRwdXRFbGVtZW50U2l6ZSA6IDA7CisgICAgICAgICAgICAgICAgICAgIGlm
IChzdHJlYW1PZmZzZXQgKyBmaXJzdEVsZW1lbnRPZmZzZXQgKyBzdGFydE9mZnNldCA8IHN0cmVh
bU9mZnNldCkKICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAg
c3RyZWFtT2Zmc2V0ICs9IChhdHRyaWJzW2ldLm1PZmZzZXQgLyBhdHRyaWJzW2ldLnN0cmlkZSgp
KSAqIG91dHB1dEVsZW1lbnRTaXplOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5z
dGFuY2VzID09IDAgfHwgYXR0cmlic1tpXS5tRGl2aXNvciA9PSAwKQotICAgICAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbU9mZnNldCArPSBz
dGFydCAqIG91dHB1dEVsZW1lbnRTaXplOwotICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX09VVF9PRl9NRU1PUlk7CiAgICAgICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBzdHJlYW1PZmZzZXQgKz0gZmlyc3RF
bGVtZW50T2Zmc2V0ICsgc3RhcnRPZmZzZXQ7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIG91dHB1
dEVsZW1lbnRTaXplID0gbVN0cmVhbWluZ0J1ZmZlci0+Z2V0VmVydGV4QnVmZmVyKCktPmdldFNw
YWNlUmVxdWlyZWQoYXR0cmlic1tpXSwgMSwgMCk7Ci0gICAgICAgICAgICAgICAgICAgIHN0cmVh
bU9mZnNldCA9IG1TdHJlYW1pbmdCdWZmZXItPnN0b3JlVmVydGV4QXR0cmlidXRlcyhhdHRyaWJz
W2ldLCBzdGFydCwgY291bnQsIGluc3RhbmNlcyk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAgICAgaWYgKHN0cmVhbU9mZnNldCA9PSAtMSkKLSAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9PVVRfT0ZfTUVNT1JZOworICAgICAgICAgICAg
ICAgICAgICBpbnQgdG90YWxDb3VudCA9IFN0cmVhbWluZ0J1ZmZlckVsZW1lbnRDb3VudChhdHRy
aWJzW2ldLCBjb3VudCwgaW5zdGFuY2VzKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtU3Ry
ZWFtaW5nQnVmZmVyLT5nZXRWZXJ0ZXhCdWZmZXIoKS0+Z2V0U3BhY2VSZXF1aXJlZChhdHRyaWJz
W2ldLCAxLCAwLCAmb3V0cHV0RWxlbWVudFNpemUpIHx8CisgICAgICAgICAgICAgICAgICAgICAg
ICAhbVN0cmVhbWluZ0J1ZmZlci0+c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGF0dHJpYnNbaV0sIHN0
YXJ0LCB0b3RhbENvdW50LCBpbnN0YW5jZXMsICZzdHJlYW1PZmZzZXQpKQorICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfT1VUX09GX01FTU9S
WTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgICAgIHRyYW5zbGF0ZWRbaV0uc3RvcmFnZSA9IGRpcmVjdFN0b3JhZ2UgPyBzdG9yYWdlIDog
TlVMTDsKQEAgLTIyNywxMiArMjU5LDE3IEBAIEdMZW51bSBWZXJ0ZXhEYXRhTWFuYWdlcjo6cHJl
cGFyZVZlcnRleEQKICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEdMX09VVF9PRl9NRU1PUlk7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgaW50IHN0cmVhbU9mZnNldCA9IGJ1ZmZlci0+c3RvcmVSYXdEYXRhKGF0
dHJpYnNbaV0ubUN1cnJlbnRWYWx1ZSwgcmVxdWlyZWRTcGFjZSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChzdHJlYW1PZmZzZXQgPT0gLTEpCisKKyAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IHN0cmVhbU9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFidWZmZXItPnN0
b3JlUmF3RGF0YShhdHRyaWJzW2ldLm1DdXJyZW50VmFsdWUsIHJlcXVpcmVkU3BhY2UsICZzdHJl
YW1PZmZzZXQpKQogICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gR0xfT1VUX09GX01FTU9SWTsKICAgICAgICAgICAgICAgICAgICAgfQogCisgICAg
ICAgICAgICAgICAgICAgIG1DdXJyZW50VmFsdWVbaV1bMF0gPSBhdHRyaWJzW2ldLm1DdXJyZW50
VmFsdWVbMF07CisgICAgICAgICAgICAgICAgICAgIG1DdXJyZW50VmFsdWVbaV1bMV0gPSBhdHRy
aWJzW2ldLm1DdXJyZW50VmFsdWVbMV07CisgICAgICAgICAgICAgICAgICAgIG1DdXJyZW50VmFs
dWVbaV1bMl0gPSBhdHRyaWJzW2ldLm1DdXJyZW50VmFsdWVbMl07CisgICAgICAgICAgICAgICAg
ICAgIG1DdXJyZW50VmFsdWVbaV1bM10gPSBhdHRyaWJzW2ldLm1DdXJyZW50VmFsdWVbM107CiAg
ICAgICAgICAgICAgICAgICAgIG1DdXJyZW50VmFsdWVPZmZzZXRzW2ldID0gc3RyZWFtT2Zmc2V0
OwogICAgICAgICAgICAgICAgIH0KIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhEYXRhTWFuYWdlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4RGF0YU1h
bmFnZXIuaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhEYXRhTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw4ICszMSw4IEBAIHN0cnVjdCBUcmFuc2xhdGVkQXR0cmlidXRlCiAgICAgYm9vbCBhY3Rp
dmU7CiAKICAgICBjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICphdHRyaWJ1dGU7Ci0gICAgVUlO
VCBvZmZzZXQ7Ci0gICAgVUlOVCBzdHJpZGU7ICAgLy8gMCBtZWFucyBub3QgdG8gYWR2YW5jZSB0
aGUgcmVhZCBwb2ludGVyIGF0IGFsbAorICAgIHVuc2lnbmVkIGludCBvZmZzZXQ7CisgICAgdW5z
aWduZWQgaW50IHN0cmlkZTsgICAvLyAwIG1lYW5zIG5vdCB0byBhZHZhbmNlIHRoZSByZWFkIHBv
aW50ZXIgYXQgYWxsCiAKICAgICBWZXJ0ZXhCdWZmZXIgKnZlcnRleEJ1ZmZlcjsKICAgICBCdWZm
ZXJTdG9yYWdlICpzdG9yYWdlOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjExX3V0aWxzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyMTFfdXRp
bHMuY3BwCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyMTFfdXRpbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNTYsNyArMzU2LDcgQEAgRFhHSV9GT1JNQVQgQ29udmVydFRleHR1cmVGb3JtYXQoR0xlbnVt
IAogICAgICAgICByZXR1cm4gRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUOwogICAgICAg
Y2FzZSBHTF9SR0IzMkZfRVhUOgogICAgICAgY2FzZSBHTF9MVU1JTkFOQ0UzMkZfRVhUOgotICAg
ICAgICByZXR1cm4gRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FUOworICAgICAgICByZXR1cm4g
RFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUOwogICAgICAgY2FzZSBHTF9SR0JBMTZGX0VY
VDoKICAgICAgIGNhc2UgR0xfQUxQSEExNkZfRVhUOgogICAgICAgY2FzZSBHTF9MVU1JTkFOQ0Vf
QUxQSEExNkZfRVhUOgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9zaGFkZXJzL2dlbmVyYXRlX3NoYWRlcnMuYmF0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9nZW5l
cmF0ZV9zaGFkZXJzLmJhdAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2dlbmVyYXRlX3NoYWRlcnMuYmF0
CSh3b3JraW5nIGNvcHkpCkBAIC01LDcgKzUsNyBAQCBSRU0gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgCiBSRU0gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCiBSRU0NCiAN
Ci1QQVRIICVQQVRIJTslRFhTREtfRElSJVxVdGlsaXRpZXNcYmluXHg4Ng0KK1BBVEggJVBBVEgl
OyVQcm9ncmFtRmlsZXMoeDg2KSVcV2luZG93cyBLaXRzXDguMFxiaW5ceDg2OyVEWFNES19ESVIl
XFV0aWxpdGllc1xiaW5ceDg2DQogDQogZnhjIC9FIHN0YW5kYXJkdnMgL1QgdnNfMl8wIC9GaCBj
b21waWxlZC9zdGFuZGFyZHZzLmggQmxpdC52cw0KIGZ4YyAvRSBmbGlweXZzIC9UIHZzXzJfMCAv
RmggY29tcGlsZWQvZmxpcHl2cy5oIEJsaXQudnMNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXIxMXZzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NsZWFyMTF2cy5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29t
cGlsZWQvY2xlYXIxMXZzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMjYgKzEsMjQgQEAKICNpZiAw
DQogLy8NCi0vLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxl
ciA5LjI5Ljk1Mi4zMTExDQotLy8NCi0vLw0KLS8vICAgZnhjIC9FIFZTX0NsZWFyIC9UIHZzXzRf
MCAvRmggY29tcGlsZWQvY2xlYXIxMXZzLmggQ2xlYXIxMS5obHNsDQorLy8gR2VuZXJhdGVkIGJ5
IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgOS4zMC45MjAwLjE2Mzg0DQogLy8N
CiAvLw0KKy8vLw0KIC8vDQogLy8gSW5wdXQgc2lnbmF0dXJlOg0KIC8vDQotLy8gTmFtZSAgICAg
ICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQN
Ci0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0g
LS0tLS0tIC0tLS0tLQ0KLS8vIFBPU0lUSU9OICAgICAgICAgICAgICAgICAwICAgeHl6ICAgICAg
ICAgMCAgICAgTk9ORSAgZmxvYXQgICB4eXogDQotLy8gQ09MT1IgICAgICAgICAgICAgICAgICAg
IDAgICB4eXp3ICAgICAgICAxICAgICBOT05FICBmbG9hdCAgIHh5encNCisvLyBOYW1lICAgICAg
ICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQN
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0g
LS0tLS0tLSAtLS0tLS0NCisvLyBQT1NJVElPTiAgICAgICAgICAgICAgICAgMCAgIHh5eiAgICAg
ICAgIDAgICAgIE5PTkUgICBmbG9hdCAgIHh5eiANCisvLyBDT0xPUiAgICAgICAgICAgICAgICAg
ICAgMCAgIHh5encgICAgICAgIDEgICAgIE5PTkUgICBmbG9hdCAgIHh5encNCiAvLw0KIC8vDQog
Ly8gT3V0cHV0IHNpZ25hdHVyZToNCiAvLw0KLS8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4
ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSBGb3JtYXQgICBVc2VkDQotLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLSAtLS0tLS0NCi0v
LyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1MgIGZs
b2F0ICAgeHl6dw0KLS8vIENPTE9SICAgICAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAg
MSAgICAgTk9ORSAgZmxvYXQgICB4eXp3DQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXgg
ICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQor
Ly8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAgUE9TICAg
ZmxvYXQgICB4eXp3DQorLy8gQ09MT1IgICAgICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAg
ICAxICAgICBOT05FICAgZmxvYXQgICB4eXp3DQogLy8NCiB2c180XzANCiBkY2xfaW5wdXQgdjAu
eHl6DQpAQCAtMzYsMTAgKzM0LDEwIEBAIHJldCANCiANCiBjb25zdCBCWVRFIGdfVlNfQ2xlYXJb
XSA9DQogew0KLSAgICAgNjgsICA4OCwgIDY2LCAgNjcsIDEwOSwgMTM4LCANCi0gICAgMTA1LCAg
ODMsICA4NiwgMTkwLCAgODMsIDEyNSwgDQotICAgICA3MiwgMTAyLCAxOTQsIDEzNiwgIDQ2LCAg
NjksIA0KLSAgICAgMTcsIDEyMSwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDY4LCAgODgs
ICA2NiwgIDY3LCAgOTcsICAgNSwgDQorICAgICAxMywgMTYzLCAxNjAsIDI1NCwgIDk1LCAxMjcs
IA0KKyAgICAgMzAsIDE5NCwgMTIxLCAxNDQsIDIzNiwgMTg1LCANCisgICAgIDU5LCAgMjksICAg
MSwgICAwLCAgIDAsICAgMCwgDQogICAgICA0OCwgICAyLCAgIDAsICAgMCwgICA1LCAgIDAsIA0K
ICAgICAgIDAsICAgMCwgIDUyLCAgIDAsICAgMCwgICAwLCANCiAgICAgMTQwLCAgIDAsICAgMCwg
ICAwLCAyMjAsICAgMCwgDQpAQCAtNTYsMTAgKzU0LDEwIEBAIGNvbnN0IEJZVEUgZ19WU19DbGVh
cltdID0NCiAgICAgIDcyLCAgNzYsICA4MywgIDc2LCAgMzIsICA4MywgDQogICAgIDEwNCwgIDk3
LCAxMDAsIDEwMSwgMTE0LCAgMzIsIA0KICAgICAgNjcsIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4
LCANCi0gICAgMTAxLCAxMTQsICAzMiwgIDU3LCAgNDYsICA1MCwgDQotICAgICA1NywgIDQ2LCAg
NTcsICA1MywgIDUwLCAgNDYsIA0KLSAgICAgNTEsICA0OSwgIDQ5LCAgNDksICAgMCwgMTcxLCAN
Ci0gICAgMTcxLCAxNzEsICA3MywgIDgzLCAgNzEsICA3OCwgDQorICAgIDEwMSwgMTE0LCAgMzIs
ICA1NywgIDQ2LCAgNTEsIA0KKyAgICAgNDgsICA0NiwgIDU3LCAgNTAsICA0OCwgIDQ4LCANCisg
ICAgIDQ2LCAgNDksICA1NCwgIDUxLCAgNTYsICA1MiwgDQorICAgICAgMCwgMTcxLCAgNzMsICA4
MywgIDcxLCAgNzgsIA0KICAgICAgNzIsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCANCiAgICAg
ICAwLCAgIDAsICAgOCwgICAwLCAgIDAsICAgMCwgDQogICAgICA1NiwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KQEAgLTEyMiw3ICsxMjAsNyBAQCBjb25zdCBCWVRFIGdfVlNfQ2xlYXJbXSA9
DQogICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KICAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgNCwgICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQogICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJtdWx0aXBsZTExcHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRl
cnMvY29tcGlsZWQvY2xlYXJtdWx0aXBsZTExcHMuaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBp
bGVkL2NsZWFybXVsdGlwbGUxMXBzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMzMgKzEsMzAgQEAK
ICNpZiAwDQogLy8NCi0vLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBD
b21waWxlciA5LjI5Ljk1Mi4zMTExDQotLy8NCi0vLw0KLS8vICAgZnhjIC9FIFBTX0NsZWFyTXVs
dGlwbGUgL1QgcHNfNF8wIC9GaCBjb21waWxlZC9jbGVhcm11bHRpcGxlMTFwcy5oDQotLy8gICAg
Q2xlYXIxMS5obHNsDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIg
Q29tcGlsZXIgOS4zMC45MjAwLjE2Mzg0DQogLy8NCiAvLw0KKy8vLw0KIC8vDQogLy8gSW5wdXQg
c2lnbmF0dXJlOg0KIC8vDQotLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJl
Z2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAt
LS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0KLS8vIFNWX1BPU0lU
SU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgZmxvYXQgICAgICAg
DQotLy8gQ09MT1IgICAgICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAxICAgICBOT05F
ICBmbG9hdCAgIHh5encNCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVn
aXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAt
LS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9QT1NJ
VElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAgICAg
ICANCisvLyBDT0xPUiAgICAgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDEgICAgIE5P
TkUgICBmbG9hdCAgIHh5encNCiAvLw0KIC8vDQogLy8gT3V0cHV0IHNpZ25hdHVyZToNCiAvLw0K
LS8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSBG
b3JtYXQgICBVc2VkDQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0t
LS0tIC0tLS0tLS0tIC0tLS0tLSAtLS0tLS0NCi0vLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAg
MCAgIHh5encgICAgICAgIDAgICBUQVJHRVQgIGZsb2F0ICAgeHl6dw0KLS8vIFNWX1RBUkdFVCAg
ICAgICAgICAgICAgICAxICAgeHl6dyAgICAgICAgMSAgIFRBUkdFVCAgZmxvYXQgICB4eXp3DQot
Ly8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDIgICB4eXp3ICAgICAgICAyICAgVEFSR0VUICBm
bG9hdCAgIHh5encNCi0vLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgMyAgIHh5encgICAgICAg
IDMgICBUQVJHRVQgIGZsb2F0ICAgeHl6dw0KLS8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICA0
ICAgeHl6dyAgICAgICAgNCAgIFRBUkdFVCAgZmxvYXQgICB4eXp3DQotLy8gU1ZfVEFSR0VUICAg
ICAgICAgICAgICAgIDUgICB4eXp3ICAgICAgICA1ICAgVEFSR0VUICBmbG9hdCAgIHh5encNCi0v
LyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgNiAgIHh5encgICAgICAgIDYgICBUQVJHRVQgIGZs
b2F0ICAgeHl6dw0KLS8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICA3ICAgeHl6dyAgICAgICAg
NyAgIFRBUkdFVCAgZmxvYXQgICB4eXp3DQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXgg
ICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQor
Ly8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICAg
ZmxvYXQgICB4eXp3DQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDEgICB4eXp3ICAgICAg
ICAxICAgVEFSR0VUICAgZmxvYXQgICB4eXp3DQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAg
IDIgICB4eXp3ICAgICAgICAyICAgVEFSR0VUICAgZmxvYXQgICB4eXp3DQorLy8gU1ZfVEFSR0VU
ICAgICAgICAgICAgICAgIDMgICB4eXp3ICAgICAgICAzICAgVEFSR0VUICAgZmxvYXQgICB4eXp3
DQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDQgICB4eXp3ICAgICAgICA0ICAgVEFSR0VU
ICAgZmxvYXQgICB4eXp3DQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDUgICB4eXp3ICAg
ICAgICA1ICAgVEFSR0VUICAgZmxvYXQgICB4eXp3DQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAg
ICAgIDYgICB4eXp3ICAgICAgICA2ICAgVEFSR0VUICAgZmxvYXQgICB4eXp3DQorLy8gU1ZfVEFS
R0VUICAgICAgICAgICAgICAgIDcgICB4eXp3ICAgICAgICA3ICAgVEFSR0VUICAgZmxvYXQgICB4
eXp3DQogLy8NCiBwc180XzANCiBkY2xfaW5wdXRfcHMgbGluZWFyIHYxLnh5encNCkBAIC01Mywx
MCArNTAsMTAgQEAgcmV0IA0KIA0KIGNvbnN0IEJZVEUgZ19QU19DbGVhck11bHRpcGxlW10gPQ0K
IHsNCi0gICAgIDY4LCAgODgsICA2NiwgIDY3LCAxNDYsIDI0NiwgDQotICAgIDIzNiwgMjQwLCAg
NTAsICA0MCwgIDg3LCAgNTUsIA0KLSAgICAgNzMsIDE0MCwgMjUxLCAyMDAsICAgOCwgIDIyLCAN
Ci0gICAgMTczLCAxMTcsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICA2OCwgIDg4LCAgNjYs
ICA2NywgIDkyLCAgNTQsIA0KKyAgICAxMjAsIDEwNSwgMTY2LCAxOTYsIDEzMiwgMTU4LCANCisg
ICAgMjA5LCAgMzMsIDE4NSwgMTIyLCAgIDgsIDE4OSwgDQorICAgIDE0NSwgMTE0LCAgIDEsICAg
MCwgICAwLCAgIDAsIA0KICAgICAgODgsICAgMywgICAwLCAgIDAsICAgNSwgICAwLCANCiAgICAg
ICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgDQogICAgIDE0MCwgICAwLCAgIDAsICAgMCwg
MjI0LCAgIDAsIA0KQEAgLTczLDEwICs3MCwxMCBAQCBjb25zdCBCWVRFIGdfUFNfQ2xlYXJNdWx0
aXBsZVtdID0NCiAgICAgIDcyLCAgNzYsICA4MywgIDc2LCAgMzIsICA4MywgDQogICAgIDEwNCwg
IDk3LCAxMDAsIDEwMSwgMTE0LCAgMzIsIA0KICAgICAgNjcsIDExMSwgMTA5LCAxMTIsIDEwNSwg
MTA4LCANCi0gICAgMTAxLCAxMTQsICAzMiwgIDU3LCAgNDYsICA1MCwgDQotICAgICA1NywgIDQ2
LCAgNTcsICA1MywgIDUwLCAgNDYsIA0KLSAgICAgNTEsICA0OSwgIDQ5LCAgNDksICAgMCwgMTcx
LCANCi0gICAgMTcxLCAxNzEsICA3MywgIDgzLCAgNzEsICA3OCwgDQorICAgIDEwMSwgMTE0LCAg
MzIsICA1NywgIDQ2LCAgNTEsIA0KKyAgICAgNDgsICA0NiwgIDU3LCAgNTAsICA0OCwgIDQ4LCAN
CisgICAgIDQ2LCAgNDksICA1NCwgIDUxLCAgNTYsICA1MiwgDQorICAgICAgMCwgMTcxLCAgNzMs
ICA4MywgIDcxLCAgNzgsIA0KICAgICAgNzYsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCANCiAg
ICAgICAwLCAgIDAsICAgOCwgICAwLCAgIDAsICAgMCwgDQogICAgICA1NiwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KQEAgLTE4OSw3ICsxODYsNyBAQCBjb25zdCBCWVRFIGdfUFNfQ2xlYXJN
dWx0aXBsZVtdID0NCiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQogICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCi0gICAgICA4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgOSwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQogICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9jbGVhcnNpbmdsZTExcHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRl
cmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJzaW5nbGUxMXBzLmgJKHJldmlzaW9uIDE1OTUzMikK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVy
cy9jb21waWxlZC9jbGVhcnNpbmdsZTExcHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSwyNiArMSwy
MyBAQAogI2lmIDANCiAvLw0KLS8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hh
ZGVyIENvbXBpbGVyIDkuMjkuOTUyLjMxMTENCi0vLw0KLS8vDQotLy8gICBmeGMgL0UgUFNfQ2xl
YXJTaW5nbGUgL1QgcHNfNF8wIC9GaCBjb21waWxlZC9jbGVhcnNpbmdsZTExcHMuaA0KLS8vICAg
IENsZWFyMTEuaGxzbA0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVy
IENvbXBpbGVyIDkuMzAuOTIwMC4xNjM4NA0KIC8vDQogLy8NCisvLy8NCiAvLw0KIC8vIElucHV0
IHNpZ25hdHVyZToNCiAvLw0KLS8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBS
ZWdpc3RlciBTeXNWYWx1ZSBGb3JtYXQgICBVc2VkDQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0g
LS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLSAtLS0tLS0NCi0vLyBTVl9Qb3Np
dGlvbiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1MgIGZsb2F0ICAgICAg
IA0KLS8vIENPTE9SICAgICAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMSAgICAgTk9O
RSAgZmxvYXQgICB4eXp3DQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJl
Z2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0g
LS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQorLy8gU1ZfUG9z
aXRpb24gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAgUE9TICAgZmxvYXQgICAg
ICAgDQorLy8gQ09MT1IgICAgICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAxICAgICBO
T05FICAgZmxvYXQgICB4eXp3DQogLy8NCiAvLw0KIC8vIE91dHB1dCBzaWduYXR1cmU6DQogLy8N
Ci0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUg
Rm9ybWF0ICAgVXNlZA0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0t
LS0tLSAtLS0tLS0tLSAtLS0tLS0gLS0tLS0tDQotLy8gU1ZfVGFyZ2V0ICAgICAgICAgICAgICAg
IDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICBmbG9hdCAgIHh5encNCisvLyBOYW1lICAgICAg
ICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQN
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0g
LS0tLS0tLSAtLS0tLS0NCisvLyBTVl9UYXJnZXQgICAgICAgICAgICAgICAgMCAgIHh5encgICAg
ICAgIDAgICBUQVJHRVQgICBmbG9hdCAgIHh5encNCiAvLw0KIHBzXzRfMA0KIGRjbF9pbnB1dF9w
cyBsaW5lYXIgdjEueHl6dw0KQEAgLTMyLDEwICsyOSwxMCBAQCByZXQgDQogDQogY29uc3QgQllU
RSBnX1BTX0NsZWFyU2luZ2xlW10gPQ0KIHsNCi0gICAgIDY4LCAgODgsICA2NiwgIDY3LCAgMTEs
ICA0OSwgDQotICAgIDIyMCwgMTU3LCAgMzUsIDEwNiwgMTc1LCAxNjEsIA0KLSAgICAxODAsIDE3
OCwgMTQ3LCAxNTAsIDEzNCwgMTYyLCANCi0gICAgMjIyLCAgNzksICAgMSwgICAwLCAgIDAsICAg
MCwgDQorICAgICA2OCwgIDg4LCAgNjYsICA2NywgIDEzLCAxNTIsIA0KKyAgICAgMzIsICA0OSwg
MjIyLCAyMzYsICA5MiwgIDIwLCANCisgICAgMTg4LCAgNzEsICA4OCwgIDQ2LCAxNjMsIDI0MSwg
DQorICAgIDE4OCwgMjM4LCAgIDEsICAgMCwgICAwLCAgIDAsIA0KICAgICAyMDgsICAgMSwgICAw
LCAgIDAsICAgNSwgICAwLCANCiAgICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgDQog
ICAgIDE0MCwgICAwLCAgIDAsICAgMCwgMjI0LCAgIDAsIA0KQEAgLTUyLDEwICs0OSwxMCBAQCBj
b25zdCBCWVRFIGdfUFNfQ2xlYXJTaW5nbGVbXSA9DQogICAgICA3MiwgIDc2LCAgODMsICA3Niwg
IDMyLCAgODMsIA0KICAgICAxMDQsICA5NywgMTAwLCAxMDEsIDExNCwgIDMyLCANCiAgICAgIDY3
LCAxMTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwgDQotICAgIDEwMSwgMTE0LCAgMzIsICA1NywgIDQ2
LCAgNTAsIA0KLSAgICAgNTcsICA0NiwgIDU3LCAgNTMsICA1MCwgIDQ2LCANCi0gICAgIDUxLCAg
NDksICA0OSwgIDQ5LCAgIDAsIDE3MSwgDQotICAgIDE3MSwgMTcxLCAgNzMsICA4MywgIDcxLCAg
NzgsIA0KKyAgICAxMDEsIDExNCwgIDMyLCAgNTcsICA0NiwgIDUxLCANCisgICAgIDQ4LCAgNDYs
ICA1NywgIDUwLCAgNDgsICA0OCwgDQorICAgICA0NiwgIDQ5LCAgNTQsICA1MSwgIDU2LCAgNTIs
IA0KKyAgICAgIDAsIDE3MSwgIDczLCAgODMsICA3MSwgIDc4LCANCiAgICAgIDc2LCAgIDAsICAg
MCwgICAwLCAgIDIsICAgMCwgDQogICAgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsIA0K
ICAgICAgNTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCkBAIC0xMDIsNyArOTksNyBAQCBj
b25zdCBCWVRFIGdfUFNfQ2xlYXJTaW5nbGVbXSA9DQogICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCiAgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAx
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCANCiAgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQogICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQv
Y29tcG9uZW50bWFza3BzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NvbXBvbmVudG1hc2twcy5o
CShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY29tcG9uZW50bWFza3BzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTAgKzEsOCBAQAogI2lmIDANCiAvLw0KLS8vIEdlbmVyYXRlZCBieSBNaWNy
b3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDkuMjkuOTUyLjMxMTENCi0vLw0KLS8vICAg
ZnhjIC9FIGNvbXBvbmVudG1hc2twcyAvVCBwc18yXzAgL0ZoIGNvbXBpbGVkL2NvbXBvbmVudG1h
c2twcy5oIEJsaXQucHMNCi0vLw0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wg
U2hhZGVyIENvbXBpbGVyIDkuMzAuOTIwMC4xNjM4NA0KIC8vDQorLy8vDQogLy8gUGFyYW1ldGVy
czoNCiAvLw0KIC8vICAgZmxvYXQ0IG1vZGU7DQpAQCAtMzMsNyArMzEsNyBAQAogY29uc3QgQllU
RSBnX3BzMjBfY29tcG9uZW50bWFza3BzW10gPQ0KIHsNCiAgICAgICAwLCAgIDIsIDI1NSwgMjU1
LCAyNTQsIDI1NSwgDQotICAgICA0MywgICAwLCAgNjcsICA4NCwgIDY1LCAgNjYsIA0KKyAgICAg
NDQsICAgMCwgIDY3LCAgODQsICA2NSwgIDY2LCANCiAgICAgIDI4LCAgIDAsICAgMCwgICAwLCAx
MTksICAgMCwgDQogICAgICAgMCwgICAwLCAgIDAsICAgMiwgMjU1LCAyNTUsIA0KICAgICAgIDIs
ICAgMCwgICAwLCAgIDAsICAyOCwgICAwLCANCkBAIC02MCwyMiArNTgsMjIgQEAgY29uc3QgQllU
RSBnX3BzMjBfY29tcG9uZW50bWFza3BzW10gPQ0KICAgICAgODMsIDEwNCwgIDk3LCAxMDAsIDEw
MSwgMTE0LCANCiAgICAgIDMyLCAgNjcsIDExMSwgMTA5LCAxMTIsIDEwNSwgDQogICAgIDEwOCwg
MTAxLCAxMTQsICAzMiwgIDU3LCAgNDYsIA0KLSAgICAgNTAsICA1NywgIDQ2LCAgNTcsICA1Mywg
IDUwLCANCi0gICAgIDQ2LCAgNTEsICA0OSwgIDQ5LCAgNDksICAgMCwgDQotICAgICAzMSwgICAw
LCAgIDAsICAgMiwgICAwLCAgIDAsIA0KLSAgICAgIDAsIDEyOCwgICAwLCAgIDAsICAgMywgMTc2
LCANCi0gICAgIDMxLCAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgDQotICAgICAgMCwgMTQ0LCAg
IDAsICAgOCwgIDE1LCAxNjAsIA0KLSAgICAgNjYsICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAN
Ci0gICAgIDE1LCAxMjgsICAgMCwgICAwLCAyMjgsIDE3NiwgDQotICAgICAgMCwgICA4LCAyMjgs
IDE2MCwgICA1LCAgIDAsIA0KLSAgICAgIDAsICAgMywgICAxLCAgIDAsICAgNywgMTI4LCANCi0g
ICAgICAwLCAgIDAsIDIyOCwgMTI4LCAgIDAsICAgMCwgDQotICAgICAgMCwgMTYwLCAgIDQsICAg
MCwgICAwLCAgIDQsIA0KLSAgICAgIDEsICAgMCwgICA4LCAxMjgsICAgMCwgICAwLCANCi0gICAg
MjU1LCAxMjgsICAgMCwgICAwLCAxNzAsIDE2MCwgDQotICAgICAgMCwgICAwLCAyNTUsIDE2MCwg
ICAxLCAgIDAsIA0KLSAgICAgIDAsICAgMiwgICAwLCAgIDgsICAxNSwgMTI4LCANCi0gICAgICAx
LCAgIDAsIDIyOCwgMTI4LCAyNTUsIDI1NSwgDQotICAgICAgMCwgICAwDQorICAgICA1MSwgIDQ4
LCAgNDYsICA1NywgIDUwLCAgNDgsIA0KKyAgICAgNDgsICA0NiwgIDQ5LCAgNTQsICA1MSwgIDU2
LCANCisgICAgIDUyLCAgIDAsIDE3MSwgMTcxLCAgMzEsICAgMCwgDQorICAgICAgMCwgICAyLCAg
IDAsICAgMCwgICAwLCAxMjgsIA0KKyAgICAgIDAsICAgMCwgICAzLCAxNzYsICAzMSwgICAwLCAN
CisgICAgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIDE0NCwgDQorICAgICAgMCwgICA4LCAgMTUs
IDE2MCwgIDY2LCAgIDAsIA0KKyAgICAgIDAsICAgMywgICAwLCAgIDAsICAxNSwgMTI4LCANCisg
ICAgICAwLCAgIDAsIDIyOCwgMTc2LCAgIDAsICAgOCwgDQorICAgIDIyOCwgMTYwLCAgIDUsICAg
MCwgICAwLCAgIDMsIA0KKyAgICAgIDEsICAgMCwgICA3LCAxMjgsICAgMCwgICAwLCANCisgICAg
MjI4LCAxMjgsICAgMCwgICAwLCAgIDAsIDE2MCwgDQorICAgICAgNCwgICAwLCAgIDAsICAgNCwg
ICAxLCAgIDAsIA0KKyAgICAgIDgsIDEyOCwgICAwLCAgIDAsIDI1NSwgMTI4LCANCisgICAgICAw
LCAgIDAsIDE3MCwgMTYwLCAgIDAsICAgMCwgDQorICAgIDI1NSwgMTYwLCAgIDEsICAgMCwgICAw
LCAgIDIsIA0KKyAgICAgIDAsICAgOCwgIDE1LCAxMjgsICAgMSwgICAwLCANCisgICAgMjI4LCAx
MjgsIDI1NSwgMjU1LCAgIDAsICAgMA0KIH07DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2ZsaXB5dnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L3NoYWRlcnMvY29tcGlsZWQvZmxpcHl2cy5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQv
ZmxpcHl2cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDggQEAKICNpZiAwDQogLy8NCi0v
LyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA5LjI5Ljk1
Mi4zMTExDQotLy8NCi0vLyAgIGZ4YyAvRSBmbGlweXZzIC9UIHZzXzJfMCAvRmggY29tcGlsZWQv
ZmxpcHl2cy5oIEJsaXQudnMNCi0vLw0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhM
U0wgU2hhZGVyIENvbXBpbGVyIDkuMzAuOTIwMC4xNjM4NA0KIC8vDQorLy8vDQogLy8gUGFyYW1l
dGVyczoNCiAvLw0KIC8vICAgZmxvYXQ0IGhhbGZQaXhlbFNpemU7DQpAQCAtMjksNyArMjcsNyBA
QAogY29uc3QgQllURSBnX3ZzMjBfZmxpcHl2c1tdID0NCiB7DQogICAgICAgMCwgICAyLCAyNTQs
IDI1NSwgMjU0LCAyNTUsIA0KLSAgICAgMzUsICAgMCwgIDY3LCAgODQsICA2NSwgIDY2LCANCisg
ICAgIDM2LCAgIDAsICA2NywgIDg0LCAgNjUsICA2NiwgDQogICAgICAyOCwgICAwLCAgIDAsICAg
MCwgIDg3LCAgIDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDIsIDI1NCwgMjU1LCANCiAgICAg
ICAxLCAgIDAsICAgMCwgICAwLCAgMjgsICAgMCwgDQpAQCAtNTAsMjAgKzQ4LDIwIEBAIGNvbnN0
IEJZVEUgZ192czIwX2ZsaXB5dnNbXSA9DQogICAgICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCAx
MDQsIA0KICAgICAgOTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgIDY3LCANCiAgICAgMTExLCAxMDks
IDExMiwgMTA1LCAxMDgsIDEwMSwgDQotICAgIDExNCwgIDMyLCAgNTcsICA0NiwgIDUwLCAgNTcs
IA0KLSAgICAgNDYsICA1NywgIDUzLCAgNTAsICA0NiwgIDUxLCANCi0gICAgIDQ5LCAgNDksICA0
OSwgICAwLCAgODEsICAgMCwgDQotICAgICAgMCwgICA1LCAgIDEsICAgMCwgIDE1LCAxNjAsIA0K
LSAgICAgIDAsICAgMCwgICAwLCAgNjMsICAgMCwgICAwLCANCi0gICAgMTI4LCAgNjMsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDMxLCAgIDAsIA0KLSAg
ICAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgMTI4LCANCi0gICAgICAwLCAgIDAsICAxNSwgMTQ0
LCAgIDIsICAgMCwgDQotICAgICAgMCwgICAzLCAgIDAsICAgMCwgIDE1LCAxOTIsIA0KLSAgICAg
IDAsICAgMCwgMjI4LCAxNDQsICAgMCwgICAwLCANCi0gICAgMjI4LCAxNjAsICAgNCwgICAwLCAg
IDAsICAgNCwgDQotICAgICAgMCwgICAwLCAgMTUsIDIyNCwgICAwLCAgIDAsIA0KLSAgICAyMjgs
IDE0NCwgICAxLCAgIDAsICA4MCwgMTYwLCANCi0gICAgICAxLCAgIDAsIDE2MCwgMTYwLCAyNTUs
IDI1NSwgDQotICAgICAgMCwgICAwDQorICAgIDExNCwgIDMyLCAgNTcsICA0NiwgIDUxLCAgNDgs
IA0KKyAgICAgNDYsICA1NywgIDUwLCAgNDgsICA0OCwgIDQ2LCANCisgICAgIDQ5LCAgNTQsICA1
MSwgIDU2LCAgNTIsICAgMCwgDQorICAgIDE3MSwgMTcxLCAgODEsICAgMCwgICAwLCAgIDUsIA0K
KyAgICAgIDEsICAgMCwgIDE1LCAxNjAsICAgMCwgICAwLCANCisgICAgICAwLCAgNjMsICAgMCwg
ICAwLCAxMjgsICA2MywgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgIDMxLCAgIDAsICAgMCwgICAyLCANCisgICAgICAwLCAgIDAsICAgMCwgMTI4
LCAgIDAsICAgMCwgDQorICAgICAxNSwgMTQ0LCAgIDIsICAgMCwgICAwLCAgIDMsIA0KKyAgICAg
IDAsICAgMCwgIDE1LCAxOTIsICAgMCwgICAwLCANCisgICAgMjI4LCAxNDQsICAgMCwgICAwLCAy
MjgsIDE2MCwgDQorICAgICAgNCwgICAwLCAgIDAsICAgNCwgICAwLCAgIDAsIA0KKyAgICAgMTUs
IDIyNCwgICAwLCAgIDAsIDIyOCwgMTQ0LCANCisgICAgICAxLCAgIDAsICA4MCwgMTYwLCAgIDEs
ICAgMCwgDQorICAgIDE2MCwgMTYwLCAyNTUsIDI1NSwgICAwLCAgIDANCiB9Ow0KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21w
aWxlZC9sdW1pbmFuY2Vwcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9sdW1pbmFuY2Vwcy5oCShy
ZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvbHVtaW5hbmNlcHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMSwxMCArMSw4IEBACiAjaWYgMA0KIC8vDQotLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAo
UikgSExTTCBTaGFkZXIgQ29tcGlsZXIgOS4yOS45NTIuMzExMQ0KLS8vDQotLy8gICBmeGMgL0Ug
bHVtaW5hbmNlcHMgL1QgcHNfMl8wIC9GaCBjb21waWxlZC9sdW1pbmFuY2Vwcy5oIEJsaXQucHMN
Ci0vLw0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVy
IDkuMzAuOTIwMC4xNjM4NA0KIC8vDQorLy8vDQogLy8gUGFyYW1ldGVyczoNCiAvLw0KIC8vICAg
ZmxvYXQ0IG1vZGU7DQpAQCAtMzMsNyArMzEsNyBAQAogY29uc3QgQllURSBnX3BzMjBfbHVtaW5h
bmNlcHNbXSA9DQogew0KICAgICAgIDAsICAgMiwgMjU1LCAyNTUsIDI1NCwgMjU1LCANCi0gICAg
IDQzLCAgIDAsICA2NywgIDg0LCAgNjUsICA2NiwgDQorICAgICA0NCwgICAwLCAgNjcsICA4NCwg
IDY1LCAgNjYsIA0KICAgICAgMjgsICAgMCwgICAwLCAgIDAsIDExOSwgICAwLCANCiAgICAgICAw
LCAgIDAsICAgMCwgICAyLCAyNTUsIDI1NSwgDQogICAgICAgMiwgICAwLCAgIDAsICAgMCwgIDI4
LCAgIDAsIA0KQEAgLTYwLDIxICs1OCwyMiBAQCBjb25zdCBCWVRFIGdfcHMyMF9sdW1pbmFuY2Vw
c1tdID0NCiAgICAgIDgzLCAxMDQsICA5NywgMTAwLCAxMDEsIDExNCwgDQogICAgICAzMiwgIDY3
LCAxMTEsIDEwOSwgMTEyLCAxMDUsIA0KICAgICAxMDgsIDEwMSwgMTE0LCAgMzIsICA1NywgIDQ2
LCANCi0gICAgIDUwLCAgNTcsICA0NiwgIDU3LCAgNTMsICA1MCwgDQotICAgICA0NiwgIDUxLCAg
NDksICA0OSwgIDQ5LCAgIDAsIA0KLSAgICAgMzEsICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAN
Ci0gICAgICAwLCAxMjgsICAgMCwgICAwLCAgIDMsIDE3NiwgDQotICAgICAzMSwgICAwLCAgIDAs
ICAgMiwgICAwLCAgIDAsIA0KLSAgICAgIDAsIDE0NCwgICAwLCAgIDgsICAxNSwgMTYwLCANCi0g
ICAgIDY2LCAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgDQotICAgICAxNSwgMTI4LCAgIDAsICAg
MCwgMjI4LCAxNzYsIA0KLSAgICAgIDAsICAgOCwgMjI4LCAxNjAsICAgNCwgICAwLCANCi0gICAg
ICAwLCAgIDQsICAgMSwgICAwLCAgIDgsIDEyOCwgDQotICAgICAgMCwgICAwLCAyNTUsIDEyOCwg
ICAwLCAgIDAsIA0KLSAgICAgIDAsIDE2MCwgICAwLCAgIDAsICA4NSwgMTYwLCANCi0gICAgICAx
LCAgIDAsICAgMCwgICAyLCAgIDEsICAgMCwgDQotICAgICAgNywgMTI4LCAgIDAsICAgMCwgICAw
LCAxMjgsIA0KLSAgICAgIDEsICAgMCwgICAwLCAgIDIsICAgMCwgICA4LCANCi0gICAgIDE1LCAx
MjgsICAgMSwgICAwLCAyMjgsIDEyOCwgDQotICAgIDI1NSwgMjU1LCAgIDAsICAgMA0KKyAgICAg
NTEsICA0OCwgIDQ2LCAgNTcsICA1MCwgIDQ4LCANCisgICAgIDQ4LCAgNDYsICA0OSwgIDU0LCAg
NTEsICA1NiwgDQorICAgICA1MiwgICAwLCAxNzEsIDE3MSwgIDMxLCAgIDAsIA0KKyAgICAgIDAs
ICAgMiwgICAwLCAgIDAsICAgMCwgMTI4LCANCisgICAgICAwLCAgIDAsICAgMywgMTc2LCAgMzEs
ICAgMCwgDQorICAgICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAxNDQsIA0KKyAgICAgIDAsICAg
OCwgIDE1LCAxNjAsICA2NiwgICAwLCANCisgICAgICAwLCAgIDMsICAgMCwgICAwLCAgMTUsIDEy
OCwgDQorICAgICAgMCwgICAwLCAyMjgsIDE3NiwgICAwLCAgIDgsIA0KKyAgICAyMjgsIDE2MCwg
ICA0LCAgIDAsICAgMCwgICA0LCANCisgICAgICAxLCAgIDAsICAgOCwgMTI4LCAgIDAsICAgMCwg
DQorICAgIDI1NSwgMTI4LCAgIDAsICAgMCwgICAwLCAxNjAsIA0KKyAgICAgIDAsICAgMCwgIDg1
LCAxNjAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDIsICAgMSwgICAwLCAgIDcsIDEyOCwgDQor
ICAgICAgMCwgICAwLCAgIDAsIDEyOCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMiwgICAwLCAg
IDgsICAxNSwgMTI4LCANCisgICAgICAxLCAgIDAsIDIyOCwgMTI4LCAyNTUsIDI1NSwgDQorICAg
ICAgMCwgICAwDQogfTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2gxMXZzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFk
ZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdoMTF2cy5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGls
ZWQvcGFzc3Rocm91Z2gxMXZzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMjcgKzEsMjQgQEAKICNp
ZiAwDQogLy8NCi0vLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21w
aWxlciA5LjI5Ljk1Mi4zMTExDQotLy8NCi0vLw0KLS8vICAgZnhjIC9FIFZTX1Bhc3N0aHJvdWdo
IC9UIHZzXzRfMCAvRmggY29tcGlsZWQvcGFzc3Rocm91Z2gxMXZzLmgNCi0vLyAgICBQYXNzdGhy
b3VnaDExLmhsc2wNCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBD
b21waWxlciA5LjMwLjkyMDAuMTYzODQNCiAvLw0KIC8vDQorLy8vDQogLy8NCiAvLyBJbnB1dCBz
aWduYXR1cmU6DQogLy8NCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVn
aXN0ZXIgU3lzVmFsdWUgRm9ybWF0ICAgVXNlZA0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0t
LS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0gLS0tLS0tDQotLy8gUE9TSVRJT04g
ICAgICAgICAgICAgICAgIDAgICB4eSAgICAgICAgICAwICAgICBOT05FICBmbG9hdCAgIHh5ICAN
Ci0vLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5ICAgICAgICAgIDEgICAgIE5PTkUg
IGZsb2F0ICAgeHkgIA0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdp
c3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0t
LS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFBPU0lUSU9O
ICAgICAgICAgICAgICAgICAwICAgeHkgICAgICAgICAgMCAgICAgTk9ORSAgIGZsb2F0ICAgeHkg
IA0KKy8vIFRFWENPT1JEICAgICAgICAgICAgICAgICAwICAgeHkgICAgICAgICAgMSAgICAgTk9O
RSAgIGZsb2F0ICAgeHkgIA0KIC8vDQogLy8NCiAvLyBPdXRwdXQgc2lnbmF0dXJlOg0KIC8vDQot
Ly8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlIEZv
cm1hdCAgIFVzZWQNCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0t
LS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0KLS8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAw
ICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgZmxvYXQgICB4eXp3DQotLy8gVEVYQ09PUkQgICAg
ICAgICAgICAgICAgIDAgICB4eSAgICAgICAgICAxICAgICBOT05FICBmbG9hdCAgIHh5ICANCisv
LyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZv
cm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0t
LS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAg
MCAgIHh5encgICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAgIHh5encNCisvLyBURVhDT09SRCAg
ICAgICAgICAgICAgICAgMCAgIHh5ICAgICAgICAgIDEgICAgIE5PTkUgICBmbG9hdCAgIHh5ICAN
CiAvLw0KIHZzXzRfMA0KIGRjbF9pbnB1dCB2MC54eQ0KQEAgLTM3LDEwICszNCwxMCBAQCByZXQg
DQogDQogY29uc3QgQllURSBnX1ZTX1Bhc3N0aHJvdWdoW10gPQ0KIHsNCi0gICAgIDY4LCAgODgs
ICA2NiwgIDY3LCAxMTcsICA3NCwgDQotICAgICAzNCwgIDc5LCAxNzQsIDIyNiwgMTcwLCAgNzQs
IA0KLSAgICAxMTAsICAxNiwgMjM3LCAgMTQsICA2NywgMTg1LCANCi0gICAgMTE5LCAxNjcsICAg
MSwgICAwLCAgIDAsICAgMCwgDQorICAgICA2OCwgIDg4LCAgNjYsICA2NywgMTk3LCAyMTQsIA0K
KyAgICAxODQsICA4NSwgMjQwLCAgOTQsICA3MSwgIDQ4LCANCisgICAgMTY1LCAgMzQsIDE0Miwg
MjMzLCAgIDAsIDEzNSwgDQorICAgIDE5MywgMTc4LCAgIDEsICAgMCwgICAwLCAgIDAsIA0KICAg
ICAgNjgsICAgMiwgICAwLCAgIDAsICAgNSwgICAwLCANCiAgICAgICAwLCAgIDAsICA1MiwgICAw
LCAgIDAsICAgMCwgDQogICAgIDE0MCwgICAwLCAgIDAsICAgMCwgMjI0LCAgIDAsIA0KQEAgLTU3
LDEwICs1NCwxMCBAQCBjb25zdCBCWVRFIGdfVlNfUGFzc3Rocm91Z2hbXSA9DQogICAgICA3Miwg
IDc2LCAgODMsICA3NiwgIDMyLCAgODMsIA0KICAgICAxMDQsICA5NywgMTAwLCAxMDEsIDExNCwg
IDMyLCANCiAgICAgIDY3LCAxMTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwgDQotICAgIDEwMSwgMTE0
LCAgMzIsICA1NywgIDQ2LCAgNTAsIA0KLSAgICAgNTcsICA0NiwgIDU3LCAgNTMsICA1MCwgIDQ2
LCANCi0gICAgIDUxLCAgNDksICA0OSwgIDQ5LCAgIDAsIDE3MSwgDQotICAgIDE3MSwgMTcxLCAg
NzMsICA4MywgIDcxLCAgNzgsIA0KKyAgICAxMDEsIDExNCwgIDMyLCAgNTcsICA0NiwgIDUxLCAN
CisgICAgIDQ4LCAgNDYsICA1NywgIDUwLCAgNDgsICA0OCwgDQorICAgICA0NiwgIDQ5LCAgNTQs
ICA1MSwgIDU2LCAgNTIsIA0KKyAgICAgIDAsIDE3MSwgIDczLCAgODMsICA3MSwgIDc4LCANCiAg
ICAgIDc2LCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgDQogICAgICAgMCwgICAwLCAgIDgsICAg
MCwgICAwLCAgIDAsIA0KICAgICAgNTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCkBAIC0x
MjcsNyArMTI0LDcgQEAgY29uc3QgQllURSBnX1ZTX1Bhc3N0aHJvdWdoW10gPQ0KICAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQogICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KLSAgICAgIDMsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICA0LCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQogICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KICAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9z
aGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdobHVtMTFwcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxl
ZC9wYXNzdGhyb3VnaGx1bTExcHMuaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0
aHJvdWdobHVtMTFwcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICsxLDkgQEAKICNpZiAwDQog
Ly8NCi0vLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA5
LjI5Ljk1Mi4zMTExDQotLy8NCi0vLw0KLS8vICAgZnhjIC9FIFBTX1Bhc3N0aHJvdWdoTHVtIC9U
IHBzXzRfMCAvRmggY29tcGlsZWQvcGFzc3Rocm91Z2hsdW0xMXBzLmgNCi0vLyAgICBQYXNzdGhy
b3VnaDExLmhsc2wNCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBD
b21waWxlciA5LjMwLjkyMDAuMTYzODQNCiAvLw0KIC8vDQorLy8vDQogLy8gUmVzb3VyY2UgQmlu
ZGluZ3M6DQogLy8NCiAvLyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlw
ZSAgRm9ybWF0ICAgICAgICAgRGltIFNsb3QgRWxlbWVudHMNCkBAIC0xOCwxNyArMTUsMTcgQEAK
IC8vDQogLy8gSW5wdXQgc2lnbmF0dXJlOg0KIC8vDQotLy8gTmFtZSAgICAgICAgICAgICAgICAg
SW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCi0vLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0t
LQ0KLS8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBP
UyAgZmxvYXQgICAgICAgDQotLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4eSAgICAg
ICAgICAxICAgICBOT05FICBmbG9hdCAgIHh5ICANCisvLyBOYW1lICAgICAgICAgICAgICAgICBJ
bmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0t
LS0NCisvLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQ
T1MgICBmbG9hdCAgICAgICANCisvLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5ICAg
ICAgICAgIDEgICAgIE5PTkUgICBmbG9hdCAgIHh5ICANCiAvLw0KIC8vDQogLy8gT3V0cHV0IHNp
Z25hdHVyZToNCiAvLw0KLS8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdp
c3RlciBTeXNWYWx1ZSBGb3JtYXQgICBVc2VkDQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0t
LS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLSAtLS0tLS0NCi0vLyBTVl9UQVJHRVQg
ICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICBUQVJHRVQgIGZsb2F0ICAgeHl6dw0K
Ky8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAg
Rm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0t
LS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAgICAg
ICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgIGZsb2F0ICAgeHl6dw0KIC8vDQogcHNfNF8w
DQogZGNsX3NhbXBsZXIgczAsIG1vZGVfZGVmYXVsdA0KQEAgLTQ1LDEwICs0MiwxMCBAQCByZXQg
DQogDQogY29uc3QgQllURSBnX1BTX1Bhc3N0aHJvdWdoTHVtW10gPQ0KIHsNCi0gICAgIDY4LCAg
ODgsICA2NiwgIDY3LCAgOTcsICA0MSwgDQotICAgICAzNywgMTU0LCAgIDAsIDE3NCwgMTM3LCAx
NTcsIA0KLSAgICAgNzYsIDIxOSwgMjMwLCAgMjYsIDIyNywgMTc0LCANCi0gICAgMTg3LCAgNjYs
ICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICA2OCwgIDg4LCAgNjYsICA2NywgMjQ0LCAgIDks
IA0KKyAgICAyMTMsIDE0NywgIDE5LCAyNDksICA3MCwgMTExLCANCisgICAgMTU3LCAgOTIsIDI0
MywgMTYwLCAgNDAsIDE0NCwgDQorICAgIDIzOCwgMjIxLCAgIDEsICAgMCwgICAwLCAgIDAsIA0K
ICAgICAxMjgsICAgMiwgICAwLCAgIDAsICAgNSwgICAwLCANCiAgICAgICAwLCAgIDAsICA1Miwg
ICAwLCAgIDAsICAgMCwgDQogICAgIDIyMCwgICAwLCAgIDAsICAgMCwgIDUyLCAgIDEsIA0KQEAg
LTc5LDkgKzc2LDkgQEAgY29uc3QgQllURSBnX1BTX1Bhc3N0aHJvdWdoTHVtW10gPQ0KICAgICAg
MzIsICA4MywgMTA0LCAgOTcsIDEwMCwgMTAxLCANCiAgICAgMTE0LCAgMzIsICA2NywgMTExLCAx
MDksIDExMiwgDQogICAgIDEwNSwgMTA4LCAxMDEsIDExNCwgIDMyLCAgNTcsIA0KLSAgICAgNDYs
ICA1MCwgIDU3LCAgNDYsICA1NywgIDUzLCANCi0gICAgIDUwLCAgNDYsICA1MSwgIDQ5LCAgNDks
ICA0OSwgDQotICAgICAgMCwgMTcxLCAxNzEsIDE3MSwgIDczLCAgODMsIA0KKyAgICAgNDYsICA1
MSwgIDQ4LCAgNDYsICA1NywgIDUwLCANCisgICAgIDQ4LCAgNDgsICA0NiwgIDQ5LCAgNTQsICA1
MSwgDQorICAgICA1NiwgIDUyLCAgIDAsIDE3MSwgIDczLCAgODMsIA0KICAgICAgNzEsICA3OCwg
IDgwLCAgIDAsICAgMCwgICAwLCANCiAgICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwg
DQogICAgICAgMCwgICAwLCAgNTYsICAgMCwgICAwLCAgIDAsIA0KQEAgLTE0NSw3ICsxNDIsNyBA
QCBjb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hMdW1bXSA9DQogICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCiAg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQotICAgICAgMiwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCiAgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQogICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29t
cGlsZWQvcGFzc3Rocm91Z2hsdW1hbHBoYTExcHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvcGFz
c3Rocm91Z2hsdW1hbHBoYTExcHMuaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0
aHJvdWdobHVtYWxwaGExMXBzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIgKzEsOSBAQAogI2lm
IDANCiAvLw0KLS8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBp
bGVyIDkuMjkuOTUyLjMxMTENCi0vLw0KLS8vDQotLy8gICBmeGMgL0UgUFNfUGFzc3Rocm91Z2hM
dW1BbHBoYSAvVCBwc180XzAgL0ZoDQotLy8gICAgY29tcGlsZWQvcGFzc3Rocm91Z2hsdW1hbHBo
YTExcHMuaCBQYXNzdGhyb3VnaDExLmhsc2wNCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChS
KSBITFNMIFNoYWRlciBDb21waWxlciA5LjMwLjkyMDAuMTYzODQNCiAvLw0KIC8vDQorLy8vDQog
Ly8gUmVzb3VyY2UgQmluZGluZ3M6DQogLy8NCiAvLyBOYW1lICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAgICAgICAgRGltIFNsb3QgRWxlbWVudHMNCkBAIC0x
OCwxNyArMTUsMTcgQEAKIC8vDQogLy8gSW5wdXQgc2lnbmF0dXJlOg0KIC8vDQotLy8gTmFtZSAg
ICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVz
ZWQNCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0t
LS0gLS0tLS0tIC0tLS0tLQ0KLS8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAg
ICAgICAgMCAgICAgIFBPUyAgZmxvYXQgICAgICAgDQotLy8gVEVYQ09PUkQgICAgICAgICAgICAg
ICAgIDAgICB4eSAgICAgICAgICAxICAgICBOT05FICBmbG9hdCAgIHh5ICANCisvLyBOYW1lICAg
ICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVz
ZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0t
LS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encg
ICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAgICAgICANCisvLyBURVhDT09SRCAgICAgICAgICAg
ICAgICAgMCAgIHh5ICAgICAgICAgIDEgICAgIE5PTkUgICBmbG9hdCAgIHh5ICANCiAvLw0KIC8v
DQogLy8gT3V0cHV0IHNpZ25hdHVyZToNCiAvLw0KLS8vIE5hbWUgICAgICAgICAgICAgICAgIElu
ZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSBGb3JtYXQgICBVc2VkDQotLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLSAtLS0tLS0N
Ci0vLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICBUQVJHRVQg
IGZsb2F0ICAgeHl6dw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdp
c3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0t
LS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1RBUkdF
VCAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgIGZsb2F0ICAgeHl6
dw0KIC8vDQogcHNfNF8wDQogZGNsX3NhbXBsZXIgczAsIG1vZGVfZGVmYXVsdA0KQEAgLTQ0LDEw
ICs0MSwxMCBAQCByZXQgDQogDQogY29uc3QgQllURSBnX1BTX1Bhc3N0aHJvdWdoTHVtQWxwaGFb
XSA9DQogew0KLSAgICAgNjgsICA4OCwgIDY2LCAgNjcsIDE5NywgIDcyLCANCi0gICAgMjUxLCAy
MzYsICA1MywgMTA3LCAxODIsIDE0NiwgDQotICAgIDE5NiwgMjE5LCAxMzAsIDE4NywgMTQwLCAx
NTksIA0KLSAgICAyMTEsIDEyMywgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDY4LCAgODgs
ICA2NiwgIDY3LCAxODUsICAxNCwgDQorICAgICA4NCwgMjIzLCAxOTIsICA0MiwgIDE2LCAxMzMs
IA0KKyAgICAgNDYsIDEwMCwgIDk1LCAyMjEsIDE4MywgIDk3LCANCisgICAgMTkyLCAgMjMsICAg
MSwgICAwLCAgIDAsICAgMCwgDQogICAgIDEwOCwgICAyLCAgIDAsICAgMCwgICA1LCAgIDAsIA0K
ICAgICAgIDAsICAgMCwgIDUyLCAgIDAsICAgMCwgICAwLCANCiAgICAgMjIwLCAgIDAsICAgMCwg
ICAwLCAgNTIsICAgMSwgDQpAQCAtNzgsOSArNzUsOSBAQCBjb25zdCBCWVRFIGdfUFNfUGFzc3Ro
cm91Z2hMdW1BbHBoYVtdID0NCiAgICAgIDMyLCAgODMsIDEwNCwgIDk3LCAxMDAsIDEwMSwgDQog
ICAgIDExNCwgIDMyLCAgNjcsIDExMSwgMTA5LCAxMTIsIA0KICAgICAxMDUsIDEwOCwgMTAxLCAx
MTQsICAzMiwgIDU3LCANCi0gICAgIDQ2LCAgNTAsICA1NywgIDQ2LCAgNTcsICA1MywgDQotICAg
ICA1MCwgIDQ2LCAgNTEsICA0OSwgIDQ5LCAgNDksIA0KLSAgICAgIDAsIDE3MSwgMTcxLCAxNzEs
ICA3MywgIDgzLCANCisgICAgIDQ2LCAgNTEsICA0OCwgIDQ2LCAgNTcsICA1MCwgDQorICAgICA0
OCwgIDQ4LCAgNDYsICA0OSwgIDU0LCAgNTEsIA0KKyAgICAgNTYsICA1MiwgICAwLCAxNzEsICA3
MywgIDgzLCANCiAgICAgIDcxLCAgNzgsICA4MCwgICAwLCAgIDAsICAgMCwgDQogICAgICAgMiwg
ICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIA0KICAgICAgIDAsICAgMCwgIDU2LCAgIDAsICAgMCwg
ICAwLCANCkBAIC0xNDAsNyArMTM3LDcgQEAgY29uc3QgQllURSBnX1BTX1Bhc3N0aHJvdWdoTHVt
QWxwaGFbXSA9DQogICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KICAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMiwgICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQogICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KICAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hwcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
c2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHBzLmgJKHJldmlzaW9uIDE1OTUzMikKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21w
aWxlZC9wYXNzdGhyb3VnaHBzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzEsOCBAQAogI2lm
IDANCiAvLw0KLS8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBp
bGVyIDkuMjkuOTUyLjMxMTENCi0vLw0KLS8vICAgZnhjIC9FIHBhc3N0aHJvdWdocHMgL1QgcHNf
Ml8wIC9GaCBjb21waWxlZC9wYXNzdGhyb3VnaHBzLmggQmxpdC5wcw0KLS8vDQorLy8gR2VuZXJh
dGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgOS4zMC45MjAwLjE2Mzg0
DQogLy8NCisvLy8NCiAvLyBQYXJhbWV0ZXJzOg0KIC8vDQogLy8gICBzYW1wbGVyMkQgdGV4Ow0K
QEAgLTI5LDcgKzI3LDcgQEAKIGNvbnN0IEJZVEUgZ19wczIwX3Bhc3N0aHJvdWdocHNbXSA9DQog
ew0KICAgICAgIDAsICAgMiwgMjU1LCAyNTUsIDI1NCwgMjU1LCANCi0gICAgIDMyLCAgIDAsICA2
NywgIDg0LCAgNjUsICA2NiwgDQorICAgICAzMywgICAwLCAgNjcsICA4NCwgIDY1LCAgNjYsIA0K
ICAgICAgMjgsICAgMCwgICAwLCAgIDAsICA3NSwgICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwg
ICAyLCAyNTUsIDI1NSwgDQogICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDI4LCAgIDAsIA0KQEAg
LTQ4LDE2ICs0NiwxNyBAQCBjb25zdCBCWVRFIGdfcHMyMF9wYXNzdGhyb3VnaHBzW10gPQ0KICAg
ICAgNzYsICA4MywgIDc2LCAgMzIsICA4MywgMTA0LCANCiAgICAgIDk3LCAxMDAsIDEwMSwgMTE0
LCAgMzIsICA2NywgDQogICAgIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCAxMDEsIA0KLSAgICAx
MTQsICAzMiwgIDU3LCAgNDYsICA1MCwgIDU3LCANCi0gICAgIDQ2LCAgNTcsICA1MywgIDUwLCAg
NDYsICA1MSwgDQotICAgICA0OSwgIDQ5LCAgNDksICAgMCwgIDMxLCAgIDAsIA0KLSAgICAgIDAs
ICAgMiwgICAwLCAgIDAsICAgMCwgMTI4LCANCi0gICAgICAwLCAgIDAsICAgMywgMTc2LCAgMzEs
ICAgMCwgDQotICAgICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAxNDQsIA0KLSAgICAgIDAsICAg
OCwgIDE1LCAxNjAsICA2NiwgICAwLCANCi0gICAgICAwLCAgIDMsICAgMCwgICAwLCAgMTUsIDEy
OCwgDQotICAgICAgMCwgICAwLCAyMjgsIDE3NiwgICAwLCAgIDgsIA0KLSAgICAyMjgsIDE2MCwg
ICAxLCAgIDAsICAgMCwgICAyLCANCi0gICAgICAwLCAgIDgsICAxNSwgMTI4LCAgIDAsICAgMCwg
DQotICAgIDIyOCwgMTI4LCAyNTUsIDI1NSwgICAwLCAgIDANCisgICAgMTE0LCAgMzIsICA1Nywg
IDQ2LCAgNTEsICA0OCwgDQorICAgICA0NiwgIDU3LCAgNTAsICA0OCwgIDQ4LCAgNDYsIA0KKyAg
ICAgNDksICA1NCwgIDUxLCAgNTYsICA1MiwgICAwLCANCisgICAgMTcxLCAxNzEsICAzMSwgICAw
LCAgIDAsICAgMiwgDQorICAgICAgMCwgICAwLCAgIDAsIDEyOCwgICAwLCAgIDAsIA0KKyAgICAg
IDMsIDE3NiwgIDMxLCAgIDAsICAgMCwgICAyLCANCisgICAgICAwLCAgIDAsICAgMCwgMTQ0LCAg
IDAsICAgOCwgDQorICAgICAxNSwgMTYwLCAgNjYsICAgMCwgICAwLCAgIDMsIA0KKyAgICAgIDAs
ICAgMCwgIDE1LCAxMjgsICAgMCwgICAwLCANCisgICAgMjI4LCAxNzYsICAgMCwgICA4LCAyMjgs
IDE2MCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMiwgICAwLCAgIDgsIA0KKyAgICAgMTUsIDEy
OCwgICAwLCAgIDAsIDIyOCwgMTI4LCANCisgICAgMjU1LCAyNTUsICAgMCwgICAwDQogfTsNCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRl
cnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2IxMXBzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bh
c3N0aHJvdWdocmdiMTFwcy5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91
Z2hyZ2IxMXBzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIgKzEsOSBAQAogI2lmIDANCiAvLw0K
LS8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDkuMjku
OTUyLjMxMTENCi0vLw0KLS8vDQotLy8gICBmeGMgL0UgUFNfUGFzc3Rocm91Z2hSR0IgL1QgcHNf
NF8wIC9GaCBjb21waWxlZC9wYXNzdGhyb3VnaHJnYjExcHMuaA0KLS8vICAgIFBhc3N0aHJvdWdo
MTEuaGxzbA0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBp
bGVyIDkuMzAuOTIwMC4xNjM4NA0KIC8vDQogLy8NCisvLy8NCiAvLyBSZXNvdXJjZSBCaW5kaW5n
czoNCiAvLw0KIC8vIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICBG
b3JtYXQgICAgICAgICBEaW0gU2xvdCBFbGVtZW50cw0KQEAgLTE4LDE3ICsxNSwxNyBAQAogLy8N
CiAvLyBJbnB1dCBzaWduYXR1cmU6DQogLy8NCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRl
eCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgRm9ybWF0ICAgVXNlZA0KLS8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0gLS0tLS0tDQot
Ly8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAgUE9TICBm
bG9hdCAgICAgICANCi0vLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5ICAgICAgICAg
IDEgICAgIE5PTkUgIGZsb2F0ICAgeHkgIA0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4
ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0K
Ky8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAg
IGZsb2F0ICAgICAgIA0KKy8vIFRFWENPT1JEICAgICAgICAgICAgICAgICAwICAgeHkgICAgICAg
ICAgMSAgICAgTk9ORSAgIGZsb2F0ICAgeHkgIA0KIC8vDQogLy8NCiAvLyBPdXRwdXQgc2lnbmF0
dXJlOg0KIC8vDQotLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVy
IFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAt
LS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0KLS8vIFNWX1RBUkdFVCAgICAg
ICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgZmxvYXQgICB4eXp3DQorLy8g
TmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3Jt
YXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0t
IC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAg
ICB4eXp3ICAgICAgICAwICAgVEFSR0VUICAgZmxvYXQgICB4eXp3DQogLy8NCiBwc180XzANCiBk
Y2xfc2FtcGxlciBzMCwgbW9kZV9kZWZhdWx0DQpAQCAtNDUsMTAgKzQyLDEwIEBAIHJldCANCiAN
CiBjb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hSR0JbXSA9DQogew0KLSAgICAgNjgsICA4OCwg
IDY2LCAgNjcsIDI1MywgIDQ1LCANCi0gICAgIDEzLCAgMzQsIDEyNSwgMTk0LCAgOTUsIDE0OSwg
DQotICAgICAgMSwgIDk1LCAxOTQsIDI1MiwgMTE4LCAyMjgsIA0KLSAgICAxNzgsIDIwMCwgICAx
LCAgIDAsICAgMCwgICAwLCANCisgICAgIDY4LCAgODgsICA2NiwgIDY3LCAxMjUsIDE4NiwgDQor
ICAgIDI1MCwgMjQyLCAxMTMsIDI1NSwgIDU5LCAyMzksIA0KKyAgICAxMTksIDE1OCwgMjM3LCAg
NzgsIDIyMCwgIDQzLCANCisgICAgMTYwLCAgNDYsICAgMSwgICAwLCAgIDAsICAgMCwgDQogICAg
IDEyOCwgICAyLCAgIDAsICAgMCwgICA1LCAgIDAsIA0KICAgICAgIDAsICAgMCwgIDUyLCAgIDAs
ICAgMCwgICAwLCANCiAgICAgMjIwLCAgIDAsICAgMCwgICAwLCAgNTIsICAgMSwgDQpAQCAtNzks
OSArNzYsOSBAQCBjb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hSR0JbXSA9DQogICAgICAzMiwg
IDgzLCAxMDQsICA5NywgMTAwLCAxMDEsIA0KICAgICAxMTQsICAzMiwgIDY3LCAxMTEsIDEwOSwg
MTEyLCANCiAgICAgMTA1LCAxMDgsIDEwMSwgMTE0LCAgMzIsICA1NywgDQotICAgICA0NiwgIDUw
LCAgNTcsICA0NiwgIDU3LCAgNTMsIA0KLSAgICAgNTAsICA0NiwgIDUxLCAgNDksICA0OSwgIDQ5
LCANCi0gICAgICAwLCAxNzEsIDE3MSwgMTcxLCAgNzMsICA4MywgDQorICAgICA0NiwgIDUxLCAg
NDgsICA0NiwgIDU3LCAgNTAsIA0KKyAgICAgNDgsICA0OCwgIDQ2LCAgNDksICA1NCwgIDUxLCAN
CisgICAgIDU2LCAgNTIsICAgMCwgMTcxLCAgNzMsICA4MywgDQogICAgICA3MSwgIDc4LCAgODAs
ICAgMCwgICAwLCAgIDAsIA0KICAgICAgIDIsICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCANCiAg
ICAgICAwLCAgIDAsICA1NiwgICAwLCAgIDAsICAgMCwgDQpAQCAtMTQ1LDcgKzE0Miw3IEBAIGNv
bnN0IEJZVEUgZ19QU19QYXNzdGhyb3VnaFJHQltdID0NCiAgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQogICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KICAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCi0gICAgICAyLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KICAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCiAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQogICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxl
ZC9wYXNzdGhyb3VnaHJnYmExMXBzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdo
cmdiYTExcHMuaAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiYTEx
cHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMSw5IEBACiAjaWYgMA0KIC8vDQotLy8gR2Vu
ZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgOS4yOS45NTIuMzEx
MQ0KLS8vDQotLy8NCi0vLyAgIGZ4YyAvRSBQU19QYXNzdGhyb3VnaFJHQkEgL1QgcHNfNF8wIC9G
aCBjb21waWxlZC9wYXNzdGhyb3VnaHJnYmExMXBzLmgNCi0vLyAgICBQYXNzdGhyb3VnaDExLmhs
c2wNCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA5
LjMwLjkyMDAuMTYzODQNCiAvLw0KIC8vDQorLy8vDQogLy8gUmVzb3VyY2UgQmluZGluZ3M6DQog
Ly8NCiAvLyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgRm9ybWF0
ICAgICAgICAgRGltIFNsb3QgRWxlbWVudHMNCkBAIC0xOCwxNyArMTUsMTcgQEAKIC8vDQogLy8g
SW5wdXQgc2lnbmF0dXJlOg0KIC8vDQotLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBN
YXNrIFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCi0vLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0KLS8vIFNW
X1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgZmxvYXQg
ICAgICAgDQotLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4eSAgICAgICAgICAxICAg
ICBOT05FICBmbG9hdCAgIHh5ICANCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1h
c2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBT
Vl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1MgICBmbG9h
dCAgICAgICANCisvLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5ICAgICAgICAgIDEg
ICAgIE5PTkUgICBmbG9hdCAgIHh5ICANCiAvLw0KIC8vDQogLy8gT3V0cHV0IHNpZ25hdHVyZToN
CiAvLw0KLS8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNW
YWx1ZSBGb3JtYXQgICBVc2VkDQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0t
IC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLSAtLS0tLS0NCi0vLyBTVl9UQVJHRVQgICAgICAgICAg
ICAgICAgMCAgIHh5encgICAgICAgIDAgICBUQVJHRVQgIGZsb2F0ICAgeHl6dw0KKy8vIE5hbWUg
ICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAg
VXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0t
LS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAwICAgeHl6
dyAgICAgICAgMCAgIFRBUkdFVCAgIGZsb2F0ICAgeHl6dw0KIC8vDQogcHNfNF8wDQogZGNsX3Nh
bXBsZXIgczAsIG1vZGVfZGVmYXVsdA0KQEAgLTQyLDEwICszOSwxMCBAQCByZXQgDQogDQogY29u
c3QgQllURSBnX1BTX1Bhc3N0aHJvdWdoUkdCQVtdID0NCiB7DQotICAgICA2OCwgIDg4LCAgNjYs
ICA2NywgMTUyLCAgODYsIA0KLSAgICAyMjUsIDEwNywgMTU1LCAgODMsIDIxNiwgIDEzLCANCi0g
ICAgMTU0LCAyMTIsIDE0NCwgICA1LCAgODIsICA3NCwgDQotICAgICA5MCwgIDk4LCAgIDEsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgNjgsICA4OCwgIDY2LCAgNjcsIDE1MSwgMTUyLCANCisgICAg
ICA4LCAxMDIsIDE3NCwgMTM1LCAgNzYsICA1NywgDQorICAgIDEwMCwgMTQ2LCAgNTksICA3NCwg
MjA1LCAgMzUsIA0KKyAgICAyMDYsICAyMSwgICAxLCAgIDAsICAgMCwgICAwLCANCiAgICAgIDgw
LCAgIDIsICAgMCwgICAwLCAgIDUsICAgMCwgDQogICAgICAgMCwgICAwLCAgNTIsICAgMCwgICAw
LCAgIDAsIA0KICAgICAyMjAsICAgMCwgICAwLCAgIDAsICA1MiwgICAxLCANCkBAIC03Niw5ICs3
Myw5IEBAIGNvbnN0IEJZVEUgZ19QU19QYXNzdGhyb3VnaFJHQkFbXSA9DQogICAgICAzMiwgIDgz
LCAxMDQsICA5NywgMTAwLCAxMDEsIA0KICAgICAxMTQsICAzMiwgIDY3LCAxMTEsIDEwOSwgMTEy
LCANCiAgICAgMTA1LCAxMDgsIDEwMSwgMTE0LCAgMzIsICA1NywgDQotICAgICA0NiwgIDUwLCAg
NTcsICA0NiwgIDU3LCAgNTMsIA0KLSAgICAgNTAsICA0NiwgIDUxLCAgNDksICA0OSwgIDQ5LCAN
Ci0gICAgICAwLCAxNzEsIDE3MSwgMTcxLCAgNzMsICA4MywgDQorICAgICA0NiwgIDUxLCAgNDgs
ICA0NiwgIDU3LCAgNTAsIA0KKyAgICAgNDgsICA0OCwgIDQ2LCAgNDksICA1NCwgIDUxLCANCisg
ICAgIDU2LCAgNTIsICAgMCwgMTcxLCAgNzMsICA4MywgDQogICAgICA3MSwgIDc4LCAgODAsICAg
MCwgICAwLCAgIDAsIA0KICAgICAgIDIsICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCANCiAgICAg
ICAwLCAgIDAsICA1NiwgICAwLCAgIDAsICAgMCwgDQpAQCAtMTM0LDcgKzEzMSw3IEBAIGNvbnN0
IEJZVEUgZ19QU19QYXNzdGhyb3VnaFJHQkFbXSA9DQogICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCiAgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCiAgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQogICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQv
c3RhbmRhcmR2cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9zdGFuZGFyZHZzLmgJKHJldmlzaW9u
IDE1OTUzMikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvc2hhZGVycy9jb21waWxlZC9zdGFuZGFyZHZzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAg
KzEsOCBAQAogI2lmIDANCiAvLw0KLS8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wg
U2hhZGVyIENvbXBpbGVyIDkuMjkuOTUyLjMxMTENCi0vLw0KLS8vICAgZnhjIC9FIHN0YW5kYXJk
dnMgL1QgdnNfMl8wIC9GaCBjb21waWxlZC9zdGFuZGFyZHZzLmggQmxpdC52cw0KLS8vDQorLy8g
R2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgOS4zMC45MjAw
LjE2Mzg0DQogLy8NCisvLy8NCiAvLyBQYXJhbWV0ZXJzOg0KIC8vDQogLy8gICBmbG9hdDQgaGFs
ZlBpeGVsU2l6ZTsNCkBAIC0yOSw3ICsyNyw3IEBACiBjb25zdCBCWVRFIGdfdnMyMF9zdGFuZGFy
ZHZzW10gPQ0KIHsNCiAgICAgICAwLCAgIDIsIDI1NCwgMjU1LCAyNTQsIDI1NSwgDQotICAgICAz
NSwgICAwLCAgNjcsICA4NCwgIDY1LCAgNjYsIA0KKyAgICAgMzYsICAgMCwgIDY3LCAgODQsICA2
NSwgIDY2LCANCiAgICAgIDI4LCAgIDAsICAgMCwgICAwLCAgODcsICAgMCwgDQogICAgICAgMCwg
ICAwLCAgIDAsICAgMiwgMjU0LCAyNTUsIA0KICAgICAgIDEsICAgMCwgICAwLCAgIDAsICAyOCwg
ICAwLCANCkBAIC01MCwyMCArNDgsMjAgQEAgY29uc3QgQllURSBnX3ZzMjBfc3RhbmRhcmR2c1td
ID0NCiAgICAgIDc2LCAgODMsICA3NiwgIDMyLCAgODMsIDEwNCwgDQogICAgICA5NywgMTAwLCAx
MDEsIDExNCwgIDMyLCAgNjcsIA0KICAgICAxMTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwgMTAxLCAN
Ci0gICAgMTE0LCAgMzIsICA1NywgIDQ2LCAgNTAsICA1NywgDQotICAgICA0NiwgIDU3LCAgNTMs
ICA1MCwgIDQ2LCAgNTEsIA0KLSAgICAgNDksICA0OSwgIDQ5LCAgIDAsICA4MSwgICAwLCANCi0g
ICAgICAwLCAgIDUsICAgMSwgICAwLCAgMTUsIDE2MCwgDQotICAgICAgMCwgICAwLCAgIDAsICA2
MywgICAwLCAgIDAsIA0KLSAgICAgIDAsIDE5MSwgICAwLCAgIDAsIDEyOCwgIDYzLCANCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgMzEsICAgMCwgDQotICAgICAgMCwgICAyLCAgIDAsICAgMCwg
ICAwLCAxMjgsIA0KLSAgICAgIDAsICAgMCwgIDE1LCAxNDQsICAgMiwgICAwLCANCi0gICAgICAw
LCAgIDMsICAgMCwgICAwLCAgMTUsIDE5MiwgDQotICAgICAgMCwgICAwLCAyMjgsIDE0NCwgICAw
LCAgIDAsIA0KLSAgICAyMjgsIDE2MCwgICA0LCAgIDAsICAgMCwgICA0LCANCi0gICAgICAwLCAg
IDAsICAxNSwgMjI0LCAgIDAsICAgMCwgDQotICAgIDIyOCwgMTQ0LCAgIDEsICAgMCwgMTY0LCAx
NjAsIA0KLSAgICAgIDEsICAgMCwgMjQwLCAxNjAsIDI1NSwgMjU1LCANCi0gICAgICAwLCAgIDAN
CisgICAgMTE0LCAgMzIsICA1NywgIDQ2LCAgNTEsICA0OCwgDQorICAgICA0NiwgIDU3LCAgNTAs
ICA0OCwgIDQ4LCAgNDYsIA0KKyAgICAgNDksICA1NCwgIDUxLCAgNTYsICA1MiwgICAwLCANCisg
ICAgMTcxLCAxNzEsICA4MSwgICAwLCAgIDAsICAgNSwgDQorICAgICAgMSwgICAwLCAgMTUsIDE2
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICA2MywgICAwLCAgIDAsICAgMCwgMTkxLCANCisgICAg
ICAwLCAgIDAsIDEyOCwgIDYzLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgMzEsICAgMCwg
ICAwLCAgIDIsIA0KKyAgICAgIDAsICAgMCwgICAwLCAxMjgsICAgMCwgICAwLCANCisgICAgIDE1
LCAxNDQsICAgMiwgICAwLCAgIDAsICAgMywgDQorICAgICAgMCwgICAwLCAgMTUsIDE5MiwgICAw
LCAgIDAsIA0KKyAgICAyMjgsIDE0NCwgICAwLCAgIDAsIDIyOCwgMTYwLCANCisgICAgICA0LCAg
IDAsICAgMCwgICA0LCAgIDAsICAgMCwgDQorICAgICAxNSwgMjI0LCAgIDAsICAgMCwgMjI4LCAx
NDQsIA0KKyAgICAgIDEsICAgMCwgMTY0LCAxNjAsICAgMSwgICAwLCANCisgICAgMjQwLCAxNjAs
IDI1NSwgMjU1LCAgIDAsICAgMA0KIH07DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3RoaXJkX3BhcnR5L211cm11cmhhc2gvTXVybXVySGFzaDMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL011cm11
ckhhc2gzLmNwcAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3RoaXJkX3BhcnR5L211cm11cmhhc2gvTXVybXVySGFzaDMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMzNCArMSwzMzQgQEAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0vLyBNdXJtdXJI
YXNoMyB3YXMgd3JpdHRlbiBieSBBdXN0aW4gQXBwbGVieSwgYW5kIGlzIHBsYWNlZCBpbiB0aGUg
cHVibGljDQotLy8gZG9tYWluLiBUaGUgYXV0aG9yIGhlcmVieSBkaXNjbGFpbXMgY29weXJpZ2h0
IHRvIHRoaXMgc291cmNlIGNvZGUuDQotDQotLy8gTm90ZSAtIFRoZSB4ODYgYW5kIHg2NCB2ZXJz
aW9ucyBkbyBfbm90XyBwcm9kdWNlIHRoZSBzYW1lIHJlc3VsdHMsIGFzIHRoZQ0KLS8vIGFsZ29y
aXRobXMgYXJlIG9wdGltaXplZCBmb3IgdGhlaXIgcmVzcGVjdGl2ZSBwbGF0Zm9ybXMuIFlvdSBj
YW4gc3RpbGwNCi0vLyBjb21waWxlIGFuZCBydW4gYW55IG9mIHRoZW0gb24gYW55IHBsYXRmb3Jt
LCBidXQgeW91ciBwZXJmb3JtYW5jZSB3aXRoIHRoZQ0KLS8vIG5vbi1uYXRpdmUgdmVyc2lvbiB3
aWxsIGJlIGxlc3MgdGhhbiBvcHRpbWFsLg0KLQ0KLSNpbmNsdWRlICJNdXJtdXJIYXNoMy5oIg0K
LQ0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0vLyBQbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlv
bnMgYW5kIG1hY3Jvcw0KLQ0KLS8vIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvDQotDQotI2lmIGRl
ZmluZWQoX01TQ19WRVIpDQotDQotI2RlZmluZSBGT1JDRV9JTkxJTkUgICAgX19mb3JjZWlubGlu
ZQ0KLQ0KLSNpbmNsdWRlIDxzdGRsaWIuaD4NCi0NCi0jZGVmaW5lIFJPVEwzMih4LHkpIF9yb3Rs
KHgseSkNCi0jZGVmaW5lIFJPVEw2NCh4LHkpIF9yb3RsNjQoeCx5KQ0KLQ0KLSNkZWZpbmUgQklH
X0NPTlNUQU5UKHgpICh4KQ0KLQ0KLS8vIE90aGVyIGNvbXBpbGVycw0KLQ0KLSNlbHNlICAgLy8g
ZGVmaW5lZChfTVNDX1ZFUikNCi0NCi0jZGVmaW5lIEZPUkNFX0lOTElORSBfX2F0dHJpYnV0ZV9f
KChhbHdheXNfaW5saW5lKSkNCi0NCi1pbmxpbmUgdWludDMyX3Qgcm90bDMyICggdWludDMyX3Qg
eCwgaW50OF90IHIgKQ0KLXsNCi0gIHJldHVybiAoeCA8PCByKSB8ICh4ID4+ICgzMiAtIHIpKTsN
Ci19DQotDQotaW5saW5lIHVpbnQ2NF90IHJvdGw2NCAoIHVpbnQ2NF90IHgsIGludDhfdCByICkN
Ci17DQotICByZXR1cm4gKHggPDwgcikgfCAoeCA+PiAoNjQgLSByKSk7DQotfQ0KLQ0KLSNkZWZp
bmUgUk9UTDMyKHgseSkgcm90bDMyKHgseSkNCi0jZGVmaW5lIFJPVEw2NCh4LHkpIHJvdGw2NCh4
LHkpDQotDQotI2RlZmluZSBCSUdfQ09OU1RBTlQoeCkgKHgjI0xMVSkNCi0NCi0jZW5kaWYgLy8g
IWRlZmluZWQoX01TQ19WRVIpDQotDQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS8vIEJsb2Nr
IHJlYWQgLSBpZiB5b3VyIHBsYXRmb3JtIG5lZWRzIHRvIGRvIGVuZGlhbi1zd2FwcGluZyBvciBj
YW4gb25seQ0KLS8vIGhhbmRsZSBhbGlnbmVkIHJlYWRzLCBkbyB0aGUgY29udmVyc2lvbiBoZXJl
DQotDQotRk9SQ0VfSU5MSU5FIHVpbnQzMl90IGdldGJsb2NrICggY29uc3QgdWludDMyX3QgKiBw
LCBpbnQgaSApDQotew0KLSAgcmV0dXJuIHBbaV07DQotfQ0KLQ0KLUZPUkNFX0lOTElORSB1aW50
NjRfdCBnZXRibG9jayAoIGNvbnN0IHVpbnQ2NF90ICogcCwgaW50IGkgKQ0KLXsNCi0gIHJldHVy
biBwW2ldOw0KLX0NCi0NCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotLy8gRmluYWxpemF0aW9u
IG1peCAtIGZvcmNlIGFsbCBiaXRzIG9mIGEgaGFzaCBibG9jayB0byBhdmFsYW5jaGUNCi0NCi1G
T1JDRV9JTkxJTkUgdWludDMyX3QgZm1peCAoIHVpbnQzMl90IGggKQ0KLXsNCi0gIGggXj0gaCA+
PiAxNjsNCi0gIGggKj0gMHg4NWViY2E2YjsNCi0gIGggXj0gaCA+PiAxMzsNCi0gIGggKj0gMHhj
MmIyYWUzNTsNCi0gIGggXj0gaCA+PiAxNjsNCi0NCi0gIHJldHVybiBoOw0KLX0NCi0NCi0vLy0t
LS0tLS0tLS0NCi0NCi1GT1JDRV9JTkxJTkUgdWludDY0X3QgZm1peCAoIHVpbnQ2NF90IGsgKQ0K
LXsNCi0gIGsgXj0gayA+PiAzMzsNCi0gIGsgKj0gQklHX0NPTlNUQU5UKDB4ZmY1MWFmZDdlZDU1
OGNjZCk7DQotICBrIF49IGsgPj4gMzM7DQotICBrICo9IEJJR19DT05TVEFOVCgweGM0Y2ViOWZl
MWE4NWVjNTMpOw0KLSAgayBePSBrID4+IDMzOw0KLQ0KLSAgcmV0dXJuIGs7DQotfQ0KLQ0KLS8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0NCi12b2lkIE11cm11ckhhc2gzX3g4Nl8zMiAoIGNvbnN0
IHZvaWQgKiBrZXksIGludCBsZW4sDQotICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf
dCBzZWVkLCB2b2lkICogb3V0ICkNCi17DQotICBjb25zdCB1aW50OF90ICogZGF0YSA9IChjb25z
dCB1aW50OF90KilrZXk7DQotICBjb25zdCBpbnQgbmJsb2NrcyA9IGxlbiAvIDQ7DQotDQotICB1
aW50MzJfdCBoMSA9IHNlZWQ7DQotDQotICBjb25zdCB1aW50MzJfdCBjMSA9IDB4Y2M5ZTJkNTE7
DQotICBjb25zdCB1aW50MzJfdCBjMiA9IDB4MWI4NzM1OTM7DQotDQotICAvLy0tLS0tLS0tLS0N
Ci0gIC8vIGJvZHkNCi0NCi0gIGNvbnN0IHVpbnQzMl90ICogYmxvY2tzID0gKGNvbnN0IHVpbnQz
Ml90ICopKGRhdGEgKyBuYmxvY2tzKjQpOw0KLQ0KLSAgZm9yKGludCBpID0gLW5ibG9ja3M7IGk7
IGkrKykNCi0gIHsNCi0gICAgdWludDMyX3QgazEgPSBnZXRibG9jayhibG9ja3MsaSk7DQotDQot
ICAgIGsxICo9IGMxOw0KLSAgICBrMSA9IFJPVEwzMihrMSwxNSk7DQotICAgIGsxICo9IGMyOw0K
LSAgICANCi0gICAgaDEgXj0gazE7DQotICAgIGgxID0gUk9UTDMyKGgxLDEzKTsgDQotICAgIGgx
ID0gaDEqNSsweGU2NTQ2YjY0Ow0KLSAgfQ0KLQ0KLSAgLy8tLS0tLS0tLS0tDQotICAvLyB0YWls
DQotDQotICBjb25zdCB1aW50OF90ICogdGFpbCA9IChjb25zdCB1aW50OF90KikoZGF0YSArIG5i
bG9ja3MqNCk7DQotDQotICB1aW50MzJfdCBrMSA9IDA7DQotDQotICBzd2l0Y2gobGVuICYgMykN
Ci0gIHsNCi0gIGNhc2UgMzogazEgXj0gdGFpbFsyXSA8PCAxNjsNCi0gIGNhc2UgMjogazEgXj0g
dGFpbFsxXSA8PCA4Ow0KLSAgY2FzZSAxOiBrMSBePSB0YWlsWzBdOw0KLSAgICAgICAgICBrMSAq
PSBjMTsgazEgPSBST1RMMzIoazEsMTUpOyBrMSAqPSBjMjsgaDEgXj0gazE7DQotICB9Ow0KLQ0K
LSAgLy8tLS0tLS0tLS0tDQotICAvLyBmaW5hbGl6YXRpb24NCi0NCi0gIGgxIF49IGxlbjsNCi0N
Ci0gIGgxID0gZm1peChoMSk7DQotDQotICAqKHVpbnQzMl90KilvdXQgPSBoMTsNCi19IA0KLQ0K
LS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0NCi12b2lkIE11cm11ckhhc2gzX3g4Nl8xMjggKCBj
b25zdCB2b2lkICoga2V5LCBjb25zdCBpbnQgbGVuLA0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQzMl90IHNlZWQsIHZvaWQgKiBvdXQgKQ0KLXsNCi0gIGNvbnN0IHVpbnQ4X3QgKiBk
YXRhID0gKGNvbnN0IHVpbnQ4X3QqKWtleTsNCi0gIGNvbnN0IGludCBuYmxvY2tzID0gbGVuIC8g
MTY7DQotDQotICB1aW50MzJfdCBoMSA9IHNlZWQ7DQotICB1aW50MzJfdCBoMiA9IHNlZWQ7DQot
ICB1aW50MzJfdCBoMyA9IHNlZWQ7DQotICB1aW50MzJfdCBoNCA9IHNlZWQ7DQotDQotICBjb25z
dCB1aW50MzJfdCBjMSA9IDB4MjM5Yjk2MWI7IA0KLSAgY29uc3QgdWludDMyX3QgYzIgPSAweGFi
MGU5Nzg5Ow0KLSAgY29uc3QgdWludDMyX3QgYzMgPSAweDM4YjM0YWU1OyANCi0gIGNvbnN0IHVp
bnQzMl90IGM0ID0gMHhhMWUzOGI5MzsNCi0NCi0gIC8vLS0tLS0tLS0tLQ0KLSAgLy8gYm9keQ0K
LQ0KLSAgY29uc3QgdWludDMyX3QgKiBibG9ja3MgPSAoY29uc3QgdWludDMyX3QgKikoZGF0YSAr
IG5ibG9ja3MqMTYpOw0KLQ0KLSAgZm9yKGludCBpID0gLW5ibG9ja3M7IGk7IGkrKykNCi0gIHsN
Ci0gICAgdWludDMyX3QgazEgPSBnZXRibG9jayhibG9ja3MsaSo0KzApOw0KLSAgICB1aW50MzJf
dCBrMiA9IGdldGJsb2NrKGJsb2NrcyxpKjQrMSk7DQotICAgIHVpbnQzMl90IGszID0gZ2V0Ymxv
Y2soYmxvY2tzLGkqNCsyKTsNCi0gICAgdWludDMyX3QgazQgPSBnZXRibG9jayhibG9ja3MsaSo0
KzMpOw0KLQ0KLSAgICBrMSAqPSBjMTsgazEgID0gUk9UTDMyKGsxLDE1KTsgazEgKj0gYzI7IGgx
IF49IGsxOw0KLQ0KLSAgICBoMSA9IFJPVEwzMihoMSwxOSk7IGgxICs9IGgyOyBoMSA9IGgxKjUr
MHg1NjFjY2QxYjsNCi0NCi0gICAgazIgKj0gYzI7IGsyICA9IFJPVEwzMihrMiwxNik7IGsyICo9
IGMzOyBoMiBePSBrMjsNCi0NCi0gICAgaDIgPSBST1RMMzIoaDIsMTcpOyBoMiArPSBoMzsgaDIg
PSBoMio1KzB4MGJjYWE3NDc7DQotDQotICAgIGszICo9IGMzOyBrMyAgPSBST1RMMzIoazMsMTcp
OyBrMyAqPSBjNDsgaDMgXj0gazM7DQotDQotICAgIGgzID0gUk9UTDMyKGgzLDE1KTsgaDMgKz0g
aDQ7IGgzID0gaDMqNSsweDk2Y2QxYzM1Ow0KLQ0KLSAgICBrNCAqPSBjNDsgazQgID0gUk9UTDMy
KGs0LDE4KTsgazQgKj0gYzE7IGg0IF49IGs0Ow0KLQ0KLSAgICBoNCA9IFJPVEwzMihoNCwxMyk7
IGg0ICs9IGgxOyBoNCA9IGg0KjUrMHgzMmFjM2IxNzsNCi0gIH0NCi0NCi0gIC8vLS0tLS0tLS0t
LQ0KLSAgLy8gdGFpbA0KLQ0KLSAgY29uc3QgdWludDhfdCAqIHRhaWwgPSAoY29uc3QgdWludDhf
dCopKGRhdGEgKyBuYmxvY2tzKjE2KTsNCi0NCi0gIHVpbnQzMl90IGsxID0gMDsNCi0gIHVpbnQz
Ml90IGsyID0gMDsNCi0gIHVpbnQzMl90IGszID0gMDsNCi0gIHVpbnQzMl90IGs0ID0gMDsNCi0N
Ci0gIHN3aXRjaChsZW4gJiAxNSkNCi0gIHsNCi0gIGNhc2UgMTU6IGs0IF49IHRhaWxbMTRdIDw8
IDE2Ow0KLSAgY2FzZSAxNDogazQgXj0gdGFpbFsxM10gPDwgODsNCi0gIGNhc2UgMTM6IGs0IF49
IHRhaWxbMTJdIDw8IDA7DQotICAgICAgICAgICBrNCAqPSBjNDsgazQgID0gUk9UTDMyKGs0LDE4
KTsgazQgKj0gYzE7IGg0IF49IGs0Ow0KLQ0KLSAgY2FzZSAxMjogazMgXj0gdGFpbFsxMV0gPDwg
MjQ7DQotICBjYXNlIDExOiBrMyBePSB0YWlsWzEwXSA8PCAxNjsNCi0gIGNhc2UgMTA6IGszIF49
IHRhaWxbIDldIDw8IDg7DQotICBjYXNlICA5OiBrMyBePSB0YWlsWyA4XSA8PCAwOw0KLSAgICAg
ICAgICAgazMgKj0gYzM7IGszICA9IFJPVEwzMihrMywxNyk7IGszICo9IGM0OyBoMyBePSBrMzsN
Ci0NCi0gIGNhc2UgIDg6IGsyIF49IHRhaWxbIDddIDw8IDI0Ow0KLSAgY2FzZSAgNzogazIgXj0g
dGFpbFsgNl0gPDwgMTY7DQotICBjYXNlICA2OiBrMiBePSB0YWlsWyA1XSA8PCA4Ow0KLSAgY2Fz
ZSAgNTogazIgXj0gdGFpbFsgNF0gPDwgMDsNCi0gICAgICAgICAgIGsyICo9IGMyOyBrMiAgPSBS
T1RMMzIoazIsMTYpOyBrMiAqPSBjMzsgaDIgXj0gazI7DQotDQotICBjYXNlICA0OiBrMSBePSB0
YWlsWyAzXSA8PCAyNDsNCi0gIGNhc2UgIDM6IGsxIF49IHRhaWxbIDJdIDw8IDE2Ow0KLSAgY2Fz
ZSAgMjogazEgXj0gdGFpbFsgMV0gPDwgODsNCi0gIGNhc2UgIDE6IGsxIF49IHRhaWxbIDBdIDw8
IDA7DQotICAgICAgICAgICBrMSAqPSBjMTsgazEgID0gUk9UTDMyKGsxLDE1KTsgazEgKj0gYzI7
IGgxIF49IGsxOw0KLSAgfTsNCi0NCi0gIC8vLS0tLS0tLS0tLQ0KLSAgLy8gZmluYWxpemF0aW9u
DQotDQotICBoMSBePSBsZW47IGgyIF49IGxlbjsgaDMgXj0gbGVuOyBoNCBePSBsZW47DQotDQot
ICBoMSArPSBoMjsgaDEgKz0gaDM7IGgxICs9IGg0Ow0KLSAgaDIgKz0gaDE7IGgzICs9IGgxOyBo
NCArPSBoMTsNCi0NCi0gIGgxID0gZm1peChoMSk7DQotICBoMiA9IGZtaXgoaDIpOw0KLSAgaDMg
PSBmbWl4KGgzKTsNCi0gIGg0ID0gZm1peChoNCk7DQotDQotICBoMSArPSBoMjsgaDEgKz0gaDM7
IGgxICs9IGg0Ow0KLSAgaDIgKz0gaDE7IGgzICs9IGgxOyBoNCArPSBoMTsNCi0NCi0gICgodWlu
dDMyX3QqKW91dClbMF0gPSBoMTsNCi0gICgodWludDMyX3QqKW91dClbMV0gPSBoMjsNCi0gICgo
dWludDMyX3QqKW91dClbMl0gPSBoMzsNCi0gICgodWludDMyX3QqKW91dClbM10gPSBoNDsNCi19
DQotDQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLQ0KLXZvaWQgTXVybXVySGFzaDNfeDY0XzEy
OCAoIGNvbnN0IHZvaWQgKiBrZXksIGNvbnN0IGludCBsZW4sDQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdWludDMyX3Qgc2VlZCwgdm9pZCAqIG91dCApDQotew0KLSAgY29uc3Qg
dWludDhfdCAqIGRhdGEgPSAoY29uc3QgdWludDhfdCopa2V5Ow0KLSAgY29uc3QgaW50IG5ibG9j
a3MgPSBsZW4gLyAxNjsNCi0NCi0gIHVpbnQ2NF90IGgxID0gc2VlZDsNCi0gIHVpbnQ2NF90IGgy
ID0gc2VlZDsNCi0NCi0gIGNvbnN0IHVpbnQ2NF90IGMxID0gQklHX0NPTlNUQU5UKDB4ODdjMzdi
OTExMTQyNTNkNSk7DQotICBjb25zdCB1aW50NjRfdCBjMiA9IEJJR19DT05TVEFOVCgweDRjZjVh
ZDQzMjc0NTkzN2YpOw0KLQ0KLSAgLy8tLS0tLS0tLS0tDQotICAvLyBib2R5DQotDQotICBjb25z
dCB1aW50NjRfdCAqIGJsb2NrcyA9IChjb25zdCB1aW50NjRfdCAqKShkYXRhKTsNCi0NCi0gIGZv
cihpbnQgaSA9IDA7IGkgPCBuYmxvY2tzOyBpKyspDQotICB7DQotICAgIHVpbnQ2NF90IGsxID0g
Z2V0YmxvY2soYmxvY2tzLGkqMiswKTsNCi0gICAgdWludDY0X3QgazIgPSBnZXRibG9jayhibG9j
a3MsaSoyKzEpOw0KLQ0KLSAgICBrMSAqPSBjMTsgazEgID0gUk9UTDY0KGsxLDMxKTsgazEgKj0g
YzI7IGgxIF49IGsxOw0KLQ0KLSAgICBoMSA9IFJPVEw2NChoMSwyNyk7IGgxICs9IGgyOyBoMSA9
IGgxKjUrMHg1MmRjZTcyOTsNCi0NCi0gICAgazIgKj0gYzI7IGsyICA9IFJPVEw2NChrMiwzMyk7
IGsyICo9IGMxOyBoMiBePSBrMjsNCi0NCi0gICAgaDIgPSBST1RMNjQoaDIsMzEpOyBoMiArPSBo
MTsgaDIgPSBoMio1KzB4Mzg0OTVhYjU7DQotICB9DQotDQotICAvLy0tLS0tLS0tLS0NCi0gIC8v
IHRhaWwNCi0NCi0gIGNvbnN0IHVpbnQ4X3QgKiB0YWlsID0gKGNvbnN0IHVpbnQ4X3QqKShkYXRh
ICsgbmJsb2NrcyoxNik7DQotDQotICB1aW50NjRfdCBrMSA9IDA7DQotICB1aW50NjRfdCBrMiA9
IDA7DQotDQotICBzd2l0Y2gobGVuICYgMTUpDQotICB7DQotICBjYXNlIDE1OiBrMiBePSB1aW50
NjRfdCh0YWlsWzE0XSkgPDwgNDg7DQotICBjYXNlIDE0OiBrMiBePSB1aW50NjRfdCh0YWlsWzEz
XSkgPDwgNDA7DQotICBjYXNlIDEzOiBrMiBePSB1aW50NjRfdCh0YWlsWzEyXSkgPDwgMzI7DQot
ICBjYXNlIDEyOiBrMiBePSB1aW50NjRfdCh0YWlsWzExXSkgPDwgMjQ7DQotICBjYXNlIDExOiBr
MiBePSB1aW50NjRfdCh0YWlsWzEwXSkgPDwgMTY7DQotICBjYXNlIDEwOiBrMiBePSB1aW50NjRf
dCh0YWlsWyA5XSkgPDwgODsNCi0gIGNhc2UgIDk6IGsyIF49IHVpbnQ2NF90KHRhaWxbIDhdKSA8
PCAwOw0KLSAgICAgICAgICAgazIgKj0gYzI7IGsyICA9IFJPVEw2NChrMiwzMyk7IGsyICo9IGMx
OyBoMiBePSBrMjsNCi0NCi0gIGNhc2UgIDg6IGsxIF49IHVpbnQ2NF90KHRhaWxbIDddKSA8PCA1
NjsNCi0gIGNhc2UgIDc6IGsxIF49IHVpbnQ2NF90KHRhaWxbIDZdKSA8PCA0ODsNCi0gIGNhc2Ug
IDY6IGsxIF49IHVpbnQ2NF90KHRhaWxbIDVdKSA8PCA0MDsNCi0gIGNhc2UgIDU6IGsxIF49IHVp
bnQ2NF90KHRhaWxbIDRdKSA8PCAzMjsNCi0gIGNhc2UgIDQ6IGsxIF49IHVpbnQ2NF90KHRhaWxb
IDNdKSA8PCAyNDsNCi0gIGNhc2UgIDM6IGsxIF49IHVpbnQ2NF90KHRhaWxbIDJdKSA8PCAxNjsN
Ci0gIGNhc2UgIDI6IGsxIF49IHVpbnQ2NF90KHRhaWxbIDFdKSA8PCA4Ow0KLSAgY2FzZSAgMTog
azEgXj0gdWludDY0X3QodGFpbFsgMF0pIDw8IDA7DQotICAgICAgICAgICBrMSAqPSBjMTsgazEg
ID0gUk9UTDY0KGsxLDMxKTsgazEgKj0gYzI7IGgxIF49IGsxOw0KLSAgfTsNCi0NCi0gIC8vLS0t
LS0tLS0tLQ0KLSAgLy8gZmluYWxpemF0aW9uDQotDQotICBoMSBePSBsZW47IGgyIF49IGxlbjsN
Ci0NCi0gIGgxICs9IGgyOw0KLSAgaDIgKz0gaDE7DQotDQotICBoMSA9IGZtaXgoaDEpOw0KLSAg
aDIgPSBmbWl4KGgyKTsNCi0NCi0gIGgxICs9IGgyOw0KLSAgaDIgKz0gaDE7DQotDQotICAoKHVp
bnQ2NF90KilvdXQpWzBdID0gaDE7DQotICAoKHVpbnQ2NF90KilvdXQpWzFdID0gaDI7DQotfQ0K
LQ0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBN
dXJtdXJIYXNoMyB3YXMgd3JpdHRlbiBieSBBdXN0aW4gQXBwbGVieSwgYW5kIGlzIHBsYWNlZCBp
biB0aGUgcHVibGljCisvLyBkb21haW4uIFRoZSBhdXRob3IgaGVyZWJ5IGRpc2NsYWltcyBjb3B5
cmlnaHQgdG8gdGhpcyBzb3VyY2UgY29kZS4KKworLy8gTm90ZSAtIFRoZSB4ODYgYW5kIHg2NCB2
ZXJzaW9ucyBkbyBfbm90XyBwcm9kdWNlIHRoZSBzYW1lIHJlc3VsdHMsIGFzIHRoZQorLy8gYWxn
b3JpdGhtcyBhcmUgb3B0aW1pemVkIGZvciB0aGVpciByZXNwZWN0aXZlIHBsYXRmb3Jtcy4gWW91
IGNhbiBzdGlsbAorLy8gY29tcGlsZSBhbmQgcnVuIGFueSBvZiB0aGVtIG9uIGFueSBwbGF0Zm9y
bSwgYnV0IHlvdXIgcGVyZm9ybWFuY2Ugd2l0aCB0aGUKKy8vIG5vbi1uYXRpdmUgdmVyc2lvbiB3
aWxsIGJlIGxlc3MgdGhhbiBvcHRpbWFsLgorCisjaW5jbHVkZSAiTXVybXVySGFzaDMuaCIKKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gUGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb25zIGFu
ZCBtYWNyb3MKKworLy8gTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8KKworI2lmIGRlZmluZWQoX01T
Q19WRVIpCisKKyNkZWZpbmUgRk9SQ0VfSU5MSU5FCV9fZm9yY2VpbmxpbmUKKworI2luY2x1ZGUg
PHN0ZGxpYi5oPgorCisjZGVmaW5lIFJPVEwzMih4LHkpCV9yb3RsKHgseSkKKyNkZWZpbmUgUk9U
TDY0KHgseSkJX3JvdGw2NCh4LHkpCisKKyNkZWZpbmUgQklHX0NPTlNUQU5UKHgpICh4KQorCisv
LyBPdGhlciBjb21waWxlcnMKKworI2Vsc2UJLy8gZGVmaW5lZChfTVNDX1ZFUikKKworI2RlZmlu
ZQlGT1JDRV9JTkxJTkUgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpCisKK2lubGluZSB1
aW50MzJfdCByb3RsMzIgKCB1aW50MzJfdCB4LCBpbnQ4X3QgciApCit7CisgIHJldHVybiAoeCA8
PCByKSB8ICh4ID4+ICgzMiAtIHIpKTsKK30KKworaW5saW5lIHVpbnQ2NF90IHJvdGw2NCAoIHVp
bnQ2NF90IHgsIGludDhfdCByICkKK3sKKyAgcmV0dXJuICh4IDw8IHIpIHwgKHggPj4gKDY0IC0g
cikpOworfQorCisjZGVmaW5lCVJPVEwzMih4LHkpCXJvdGwzMih4LHkpCisjZGVmaW5lIFJPVEw2
NCh4LHkpCXJvdGw2NCh4LHkpCisKKyNkZWZpbmUgQklHX0NPTlNUQU5UKHgpICh4IyNMTFUpCisK
KyNlbmRpZiAvLyAhZGVmaW5lZChfTVNDX1ZFUikKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8gQmxvY2sgcmVhZCAtIGlmIHlvdXIgcGxhdGZvcm0gbmVlZHMgdG8gZG8gZW5kaWFuLXN3YXBw
aW5nIG9yIGNhbiBvbmx5CisvLyBoYW5kbGUgYWxpZ25lZCByZWFkcywgZG8gdGhlIGNvbnZlcnNp
b24gaGVyZQorCitGT1JDRV9JTkxJTkUgdWludDMyX3QgZ2V0YmxvY2sgKCBjb25zdCB1aW50MzJf
dCAqIHAsIGludCBpICkKK3sKKyAgcmV0dXJuIHBbaV07Cit9CisKK0ZPUkNFX0lOTElORSB1aW50
NjRfdCBnZXRibG9jayAoIGNvbnN0IHVpbnQ2NF90ICogcCwgaW50IGkgKQoreworICByZXR1cm4g
cFtpXTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRmluYWxpemF0aW9uIG1peCAt
IGZvcmNlIGFsbCBiaXRzIG9mIGEgaGFzaCBibG9jayB0byBhdmFsYW5jaGUKKworRk9SQ0VfSU5M
SU5FIHVpbnQzMl90IGZtaXggKCB1aW50MzJfdCBoICkKK3sKKyAgaCBePSBoID4+IDE2OworICBo
ICo9IDB4ODVlYmNhNmI7CisgIGggXj0gaCA+PiAxMzsKKyAgaCAqPSAweGMyYjJhZTM1OworICBo
IF49IGggPj4gMTY7CisKKyAgcmV0dXJuIGg7Cit9CisKKy8vLS0tLS0tLS0tLQorCitGT1JDRV9J
TkxJTkUgdWludDY0X3QgZm1peCAoIHVpbnQ2NF90IGsgKQoreworICBrIF49IGsgPj4gMzM7Cisg
IGsgKj0gQklHX0NPTlNUQU5UKDB4ZmY1MWFmZDdlZDU1OGNjZCk7CisgIGsgXj0gayA+PiAzMzsK
KyAgayAqPSBCSUdfQ09OU1RBTlQoMHhjNGNlYjlmZTFhODVlYzUzKTsKKyAgayBePSBrID4+IDMz
OworCisgIHJldHVybiBrOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgTXVy
bXVySGFzaDNfeDg2XzMyICggY29uc3Qgdm9pZCAqIGtleSwgaW50IGxlbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDMyX3Qgc2VlZCwgdm9pZCAqIG91dCApCit7CisgIGNvbnN0IHVp
bnQ4X3QgKiBkYXRhID0gKGNvbnN0IHVpbnQ4X3QqKWtleTsKKyAgY29uc3QgaW50IG5ibG9ja3Mg
PSBsZW4gLyA0OworCisgIHVpbnQzMl90IGgxID0gc2VlZDsKKworICBjb25zdCB1aW50MzJfdCBj
MSA9IDB4Y2M5ZTJkNTE7CisgIGNvbnN0IHVpbnQzMl90IGMyID0gMHgxYjg3MzU5MzsKKworICAv
Ly0tLS0tLS0tLS0KKyAgLy8gYm9keQorCisgIGNvbnN0IHVpbnQzMl90ICogYmxvY2tzID0gKGNv
bnN0IHVpbnQzMl90ICopKGRhdGEgKyBuYmxvY2tzKjQpOworCisgIGZvcihpbnQgaSA9IC1uYmxv
Y2tzOyBpOyBpKyspCisgIHsKKyAgICB1aW50MzJfdCBrMSA9IGdldGJsb2NrKGJsb2NrcyxpKTsK
KworICAgIGsxICo9IGMxOworICAgIGsxID0gUk9UTDMyKGsxLDE1KTsKKyAgICBrMSAqPSBjMjsK
KyAgICAKKyAgICBoMSBePSBrMTsKKyAgICBoMSA9IFJPVEwzMihoMSwxMyk7IAorICAgIGgxID0g
aDEqNSsweGU2NTQ2YjY0OworICB9CisKKyAgLy8tLS0tLS0tLS0tCisgIC8vIHRhaWwKKworICBj
b25zdCB1aW50OF90ICogdGFpbCA9IChjb25zdCB1aW50OF90KikoZGF0YSArIG5ibG9ja3MqNCk7
CisKKyAgdWludDMyX3QgazEgPSAwOworCisgIHN3aXRjaChsZW4gJiAzKQorICB7CisgIGNhc2Ug
MzogazEgXj0gdGFpbFsyXSA8PCAxNjsKKyAgY2FzZSAyOiBrMSBePSB0YWlsWzFdIDw8IDg7Cisg
IGNhc2UgMTogazEgXj0gdGFpbFswXTsKKyAgICAgICAgICBrMSAqPSBjMTsgazEgPSBST1RMMzIo
azEsMTUpOyBrMSAqPSBjMjsgaDEgXj0gazE7CisgIH07CisKKyAgLy8tLS0tLS0tLS0tCisgIC8v
IGZpbmFsaXphdGlvbgorCisgIGgxIF49IGxlbjsKKworICBoMSA9IGZtaXgoaDEpOworCisgICoo
dWludDMyX3QqKW91dCA9IGgxOworfSAKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lk
IE11cm11ckhhc2gzX3g4Nl8xMjggKCBjb25zdCB2b2lkICoga2V5LCBjb25zdCBpbnQgbGVuLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc2VlZCwgdm9pZCAqIG91dCApCit7
CisgIGNvbnN0IHVpbnQ4X3QgKiBkYXRhID0gKGNvbnN0IHVpbnQ4X3QqKWtleTsKKyAgY29uc3Qg
aW50IG5ibG9ja3MgPSBsZW4gLyAxNjsKKworICB1aW50MzJfdCBoMSA9IHNlZWQ7CisgIHVpbnQz
Ml90IGgyID0gc2VlZDsKKyAgdWludDMyX3QgaDMgPSBzZWVkOworICB1aW50MzJfdCBoNCA9IHNl
ZWQ7CisKKyAgY29uc3QgdWludDMyX3QgYzEgPSAweDIzOWI5NjFiOyAKKyAgY29uc3QgdWludDMy
X3QgYzIgPSAweGFiMGU5Nzg5OworICBjb25zdCB1aW50MzJfdCBjMyA9IDB4MzhiMzRhZTU7IAor
ICBjb25zdCB1aW50MzJfdCBjNCA9IDB4YTFlMzhiOTM7CisKKyAgLy8tLS0tLS0tLS0tCisgIC8v
IGJvZHkKKworICBjb25zdCB1aW50MzJfdCAqIGJsb2NrcyA9IChjb25zdCB1aW50MzJfdCAqKShk
YXRhICsgbmJsb2NrcyoxNik7CisKKyAgZm9yKGludCBpID0gLW5ibG9ja3M7IGk7IGkrKykKKyAg
eworICAgIHVpbnQzMl90IGsxID0gZ2V0YmxvY2soYmxvY2tzLGkqNCswKTsKKyAgICB1aW50MzJf
dCBrMiA9IGdldGJsb2NrKGJsb2NrcyxpKjQrMSk7CisgICAgdWludDMyX3QgazMgPSBnZXRibG9j
ayhibG9ja3MsaSo0KzIpOworICAgIHVpbnQzMl90IGs0ID0gZ2V0YmxvY2soYmxvY2tzLGkqNCsz
KTsKKworICAgIGsxICo9IGMxOyBrMSAgPSBST1RMMzIoazEsMTUpOyBrMSAqPSBjMjsgaDEgXj0g
azE7CisKKyAgICBoMSA9IFJPVEwzMihoMSwxOSk7IGgxICs9IGgyOyBoMSA9IGgxKjUrMHg1NjFj
Y2QxYjsKKworICAgIGsyICo9IGMyOyBrMiAgPSBST1RMMzIoazIsMTYpOyBrMiAqPSBjMzsgaDIg
Xj0gazI7CisKKyAgICBoMiA9IFJPVEwzMihoMiwxNyk7IGgyICs9IGgzOyBoMiA9IGgyKjUrMHgw
YmNhYTc0NzsKKworICAgIGszICo9IGMzOyBrMyAgPSBST1RMMzIoazMsMTcpOyBrMyAqPSBjNDsg
aDMgXj0gazM7CisKKyAgICBoMyA9IFJPVEwzMihoMywxNSk7IGgzICs9IGg0OyBoMyA9IGgzKjUr
MHg5NmNkMWMzNTsKKworICAgIGs0ICo9IGM0OyBrNCAgPSBST1RMMzIoazQsMTgpOyBrNCAqPSBj
MTsgaDQgXj0gazQ7CisKKyAgICBoNCA9IFJPVEwzMihoNCwxMyk7IGg0ICs9IGgxOyBoNCA9IGg0
KjUrMHgzMmFjM2IxNzsKKyAgfQorCisgIC8vLS0tLS0tLS0tLQorICAvLyB0YWlsCisKKyAgY29u
c3QgdWludDhfdCAqIHRhaWwgPSAoY29uc3QgdWludDhfdCopKGRhdGEgKyBuYmxvY2tzKjE2KTsK
KworICB1aW50MzJfdCBrMSA9IDA7CisgIHVpbnQzMl90IGsyID0gMDsKKyAgdWludDMyX3QgazMg
PSAwOworICB1aW50MzJfdCBrNCA9IDA7CisKKyAgc3dpdGNoKGxlbiAmIDE1KQorICB7CisgIGNh
c2UgMTU6IGs0IF49IHRhaWxbMTRdIDw8IDE2OworICBjYXNlIDE0OiBrNCBePSB0YWlsWzEzXSA8
PCA4OworICBjYXNlIDEzOiBrNCBePSB0YWlsWzEyXSA8PCAwOworICAgICAgICAgICBrNCAqPSBj
NDsgazQgID0gUk9UTDMyKGs0LDE4KTsgazQgKj0gYzE7IGg0IF49IGs0OworCisgIGNhc2UgMTI6
IGszIF49IHRhaWxbMTFdIDw8IDI0OworICBjYXNlIDExOiBrMyBePSB0YWlsWzEwXSA8PCAxNjsK
KyAgY2FzZSAxMDogazMgXj0gdGFpbFsgOV0gPDwgODsKKyAgY2FzZSAgOTogazMgXj0gdGFpbFsg
OF0gPDwgMDsKKyAgICAgICAgICAgazMgKj0gYzM7IGszICA9IFJPVEwzMihrMywxNyk7IGszICo9
IGM0OyBoMyBePSBrMzsKKworICBjYXNlICA4OiBrMiBePSB0YWlsWyA3XSA8PCAyNDsKKyAgY2Fz
ZSAgNzogazIgXj0gdGFpbFsgNl0gPDwgMTY7CisgIGNhc2UgIDY6IGsyIF49IHRhaWxbIDVdIDw8
IDg7CisgIGNhc2UgIDU6IGsyIF49IHRhaWxbIDRdIDw8IDA7CisgICAgICAgICAgIGsyICo9IGMy
OyBrMiAgPSBST1RMMzIoazIsMTYpOyBrMiAqPSBjMzsgaDIgXj0gazI7CisKKyAgY2FzZSAgNDog
azEgXj0gdGFpbFsgM10gPDwgMjQ7CisgIGNhc2UgIDM6IGsxIF49IHRhaWxbIDJdIDw8IDE2Owor
ICBjYXNlICAyOiBrMSBePSB0YWlsWyAxXSA8PCA4OworICBjYXNlICAxOiBrMSBePSB0YWlsWyAw
XSA8PCAwOworICAgICAgICAgICBrMSAqPSBjMTsgazEgID0gUk9UTDMyKGsxLDE1KTsgazEgKj0g
YzI7IGgxIF49IGsxOworICB9OworCisgIC8vLS0tLS0tLS0tLQorICAvLyBmaW5hbGl6YXRpb24K
KworICBoMSBePSBsZW47IGgyIF49IGxlbjsgaDMgXj0gbGVuOyBoNCBePSBsZW47CisKKyAgaDEg
Kz0gaDI7IGgxICs9IGgzOyBoMSArPSBoNDsKKyAgaDIgKz0gaDE7IGgzICs9IGgxOyBoNCArPSBo
MTsKKworICBoMSA9IGZtaXgoaDEpOworICBoMiA9IGZtaXgoaDIpOworICBoMyA9IGZtaXgoaDMp
OworICBoNCA9IGZtaXgoaDQpOworCisgIGgxICs9IGgyOyBoMSArPSBoMzsgaDEgKz0gaDQ7Cisg
IGgyICs9IGgxOyBoMyArPSBoMTsgaDQgKz0gaDE7CisKKyAgKCh1aW50MzJfdCopb3V0KVswXSA9
IGgxOworICAoKHVpbnQzMl90KilvdXQpWzFdID0gaDI7CisgICgodWludDMyX3QqKW91dClbMl0g
PSBoMzsKKyAgKCh1aW50MzJfdCopb3V0KVszXSA9IGg0OworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK3ZvaWQgTXVybXVySGFzaDNfeDY0XzEyOCAoIGNvbnN0IHZvaWQgKiBrZXksIGNv
bnN0IGludCBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50MzJfdCBz
ZWVkLCB2b2lkICogb3V0ICkKK3sKKyAgY29uc3QgdWludDhfdCAqIGRhdGEgPSAoY29uc3QgdWlu
dDhfdCopa2V5OworICBjb25zdCBpbnQgbmJsb2NrcyA9IGxlbiAvIDE2OworCisgIHVpbnQ2NF90
IGgxID0gc2VlZDsKKyAgdWludDY0X3QgaDIgPSBzZWVkOworCisgIGNvbnN0IHVpbnQ2NF90IGMx
ID0gQklHX0NPTlNUQU5UKDB4ODdjMzdiOTExMTQyNTNkNSk7CisgIGNvbnN0IHVpbnQ2NF90IGMy
ID0gQklHX0NPTlNUQU5UKDB4NGNmNWFkNDMyNzQ1OTM3Zik7CisKKyAgLy8tLS0tLS0tLS0tCisg
IC8vIGJvZHkKKworICBjb25zdCB1aW50NjRfdCAqIGJsb2NrcyA9IChjb25zdCB1aW50NjRfdCAq
KShkYXRhKTsKKworICBmb3IoaW50IGkgPSAwOyBpIDwgbmJsb2NrczsgaSsrKQorICB7CisgICAg
dWludDY0X3QgazEgPSBnZXRibG9jayhibG9ja3MsaSoyKzApOworICAgIHVpbnQ2NF90IGsyID0g
Z2V0YmxvY2soYmxvY2tzLGkqMisxKTsKKworICAgIGsxICo9IGMxOyBrMSAgPSBST1RMNjQoazEs
MzEpOyBrMSAqPSBjMjsgaDEgXj0gazE7CisKKyAgICBoMSA9IFJPVEw2NChoMSwyNyk7IGgxICs9
IGgyOyBoMSA9IGgxKjUrMHg1MmRjZTcyOTsKKworICAgIGsyICo9IGMyOyBrMiAgPSBST1RMNjQo
azIsMzMpOyBrMiAqPSBjMTsgaDIgXj0gazI7CisKKyAgICBoMiA9IFJPVEw2NChoMiwzMSk7IGgy
ICs9IGgxOyBoMiA9IGgyKjUrMHgzODQ5NWFiNTsKKyAgfQorCisgIC8vLS0tLS0tLS0tLQorICAv
LyB0YWlsCisKKyAgY29uc3QgdWludDhfdCAqIHRhaWwgPSAoY29uc3QgdWludDhfdCopKGRhdGEg
KyBuYmxvY2tzKjE2KTsKKworICB1aW50NjRfdCBrMSA9IDA7CisgIHVpbnQ2NF90IGsyID0gMDsK
KworICBzd2l0Y2gobGVuICYgMTUpCisgIHsKKyAgY2FzZSAxNTogazIgXj0gdWludDY0X3QodGFp
bFsxNF0pIDw8IDQ4OworICBjYXNlIDE0OiBrMiBePSB1aW50NjRfdCh0YWlsWzEzXSkgPDwgNDA7
CisgIGNhc2UgMTM6IGsyIF49IHVpbnQ2NF90KHRhaWxbMTJdKSA8PCAzMjsKKyAgY2FzZSAxMjog
azIgXj0gdWludDY0X3QodGFpbFsxMV0pIDw8IDI0OworICBjYXNlIDExOiBrMiBePSB1aW50NjRf
dCh0YWlsWzEwXSkgPDwgMTY7CisgIGNhc2UgMTA6IGsyIF49IHVpbnQ2NF90KHRhaWxbIDldKSA8
PCA4OworICBjYXNlICA5OiBrMiBePSB1aW50NjRfdCh0YWlsWyA4XSkgPDwgMDsKKyAgICAgICAg
ICAgazIgKj0gYzI7IGsyICA9IFJPVEw2NChrMiwzMyk7IGsyICo9IGMxOyBoMiBePSBrMjsKKwor
ICBjYXNlICA4OiBrMSBePSB1aW50NjRfdCh0YWlsWyA3XSkgPDwgNTY7CisgIGNhc2UgIDc6IGsx
IF49IHVpbnQ2NF90KHRhaWxbIDZdKSA8PCA0ODsKKyAgY2FzZSAgNjogazEgXj0gdWludDY0X3Qo
dGFpbFsgNV0pIDw8IDQwOworICBjYXNlICA1OiBrMSBePSB1aW50NjRfdCh0YWlsWyA0XSkgPDwg
MzI7CisgIGNhc2UgIDQ6IGsxIF49IHVpbnQ2NF90KHRhaWxbIDNdKSA8PCAyNDsKKyAgY2FzZSAg
MzogazEgXj0gdWludDY0X3QodGFpbFsgMl0pIDw8IDE2OworICBjYXNlICAyOiBrMSBePSB1aW50
NjRfdCh0YWlsWyAxXSkgPDwgODsKKyAgY2FzZSAgMTogazEgXj0gdWludDY0X3QodGFpbFsgMF0p
IDw8IDA7CisgICAgICAgICAgIGsxICo9IGMxOyBrMSAgPSBST1RMNjQoazEsMzEpOyBrMSAqPSBj
MjsgaDEgXj0gazE7CisgIH07CisKKyAgLy8tLS0tLS0tLS0tCisgIC8vIGZpbmFsaXphdGlvbgor
CisgIGgxIF49IGxlbjsgaDIgXj0gbGVuOworCisgIGgxICs9IGgyOworICBoMiArPSBoMTsKKwor
ICBoMSA9IGZtaXgoaDEpOworICBoMiA9IGZtaXgoaDIpOworCisgIGgxICs9IGgyOworICBoMiAr
PSBoMTsKKworICAoKHVpbnQ2NF90KilvdXQpWzBdID0gaDE7CisgICgodWludDY0X3QqKW91dClb
MV0gPSBoMjsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L211cm11cmhhc2gvTXVybXVySGFzaDMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbXVybXVy
aGFzaC9NdXJtdXJIYXNoMy5oCShyZXZpc2lvbiAxNTk1MzIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbXVybXVyaGFzaC9NdXJtdXJIYXNoMy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDM3ICsxLDM3IEBACi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotLy8gTXVy
bXVySGFzaDMgd2FzIHdyaXR0ZW4gYnkgQXVzdGluIEFwcGxlYnksIGFuZCBpcyBwbGFjZWQgaW4g
dGhlIHB1YmxpYw0KLS8vIGRvbWFpbi4gVGhlIGF1dGhvciBoZXJlYnkgZGlzY2xhaW1zIGNvcHly
aWdodCB0byB0aGlzIHNvdXJjZSBjb2RlLg0KLQ0KLSNpZm5kZWYgX01VUk1VUkhBU0gzX0hfDQot
I2RlZmluZSBfTVVSTVVSSEFTSDNfSF8NCi0NCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotLy8g
UGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb25zIGFuZCBtYWNyb3MNCi0NCi0vLyBNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpbw0KLQ0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKQ0KLQ0KLXR5cGVkZWYgdW5z
aWduZWQgY2hhciB1aW50OF90Ow0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1aW50MzJfdDsNCi10
eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgdWludDY0X3Q7DQotDQotLy8gT3RoZXIgY29tcGlsZXJz
DQotDQotI2Vsc2UgICAvLyBkZWZpbmVkKF9NU0NfVkVSKQ0KLQ0KLSNpbmNsdWRlIDxzdGRpbnQu
aD4NCi0NCi0jZW5kaWYgLy8gIWRlZmluZWQoX01TQ19WRVIpDQotDQotLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KLQ0KLXZvaWQgTXVybXVySGFzaDNfeDg2XzMyICAoIGNvbnN0IHZvaWQgKiBrZXks
IGludCBsZW4sIHVpbnQzMl90IHNlZWQsIHZvaWQgKiBvdXQgKTsNCi0NCi12b2lkIE11cm11ckhh
c2gzX3g4Nl8xMjggKCBjb25zdCB2b2lkICoga2V5LCBpbnQgbGVuLCB1aW50MzJfdCBzZWVkLCB2
b2lkICogb3V0ICk7DQotDQotdm9pZCBNdXJtdXJIYXNoM194NjRfMTI4ICggY29uc3Qgdm9pZCAq
IGtleSwgaW50IGxlbiwgdWludDMyX3Qgc2VlZCwgdm9pZCAqIG91dCApOw0KLQ0KLS8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCi0NCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBNdXJtdXJIYXNo
MyB3YXMgd3JpdHRlbiBieSBBdXN0aW4gQXBwbGVieSwgYW5kIGlzIHBsYWNlZCBpbiB0aGUgcHVi
bGljCisvLyBkb21haW4uIFRoZSBhdXRob3IgaGVyZWJ5IGRpc2NsYWltcyBjb3B5cmlnaHQgdG8g
dGhpcyBzb3VyY2UgY29kZS4KKworI2lmbmRlZiBfTVVSTVVSSEFTSDNfSF8KKyNkZWZpbmUgX01V
Uk1VUkhBU0gzX0hfCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFBsYXRmb3JtLXNwZWNp
ZmljIGZ1bmN0aW9ucyBhbmQgbWFjcm9zCisKKy8vIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvCisK
KyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludDhfdDsK
K3R5cGVkZWYgdW5zaWduZWQgbG9uZyB1aW50MzJfdDsKK3R5cGVkZWYgdW5zaWduZWQgX19pbnQ2
NCB1aW50NjRfdDsKKworLy8gT3RoZXIgY29tcGlsZXJzCisKKyNlbHNlCS8vIGRlZmluZWQoX01T
Q19WRVIpCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2VuZGlmIC8vICFkZWZpbmVkKF9NU0Nf
VkVSKQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgTXVybXVySGFzaDNfeDg2XzMy
ICAoIGNvbnN0IHZvaWQgKiBrZXksIGludCBsZW4sIHVpbnQzMl90IHNlZWQsIHZvaWQgKiBvdXQg
KTsKKwordm9pZCBNdXJtdXJIYXNoM194ODZfMTI4ICggY29uc3Qgdm9pZCAqIGtleSwgaW50IGxl
biwgdWludDMyX3Qgc2VlZCwgdm9pZCAqIG91dCApOworCit2b2lkIE11cm11ckhhc2gzX3g2NF8x
MjggKCBjb25zdCB2b2lkICoga2V5LCBpbnQgbGVuLCB1aW50MzJfdCBzZWVkLCB2b2lkICogb3V0
ICk7CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwogI2VuZGlmIC8vIF9NVVJNVVJIQVNIM19I
XwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90aGlyZF9wYXJ0eS90cmFjZV9ldmVudC90cmFjZV9ldmVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS90cmFjZV9ldmVudC90
cmFjZV9ldmVudC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3RoaXJkX3BhcnR5L3RyYWNlX2V2ZW50L3RyYWNlX2V2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw4MjYgQEAKKy8vIENvcHlyaWdodCAoYykgMjAxMyBUaGUgQ2hyb21pdW0gQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisKKy8vIFRyYWNlIGV2ZW50cyBhcmUgZm9yIHRyYWNraW5nIGFwcGxp
Y2F0aW9uIHBlcmZvcm1hbmNlIGFuZCByZXNvdXJjZSB1c2FnZS4KKy8vIE1hY3JvcyBhcmUgcHJv
dmlkZWQgdG8gdHJhY2s6CisvLyAgICBCZWdpbiBhbmQgZW5kIG9mIGZ1bmN0aW9uIGNhbGxzCisv
LyAgICBDb3VudGVycworLy8KKy8vIEV2ZW50cyBhcmUgaXNzdWVkIGFnYWluc3QgY2F0ZWdvcmll
cy4gV2hlcmVhcyBMT0cncworLy8gY2F0ZWdvcmllcyBhcmUgc3RhdGljYWxseSBkZWZpbmVkLCBU
UkFDRSBjYXRlZ29yaWVzIGFyZSBjcmVhdGVkCisvLyBpbXBsaWNpdGx5IHdpdGggYSBzdHJpbmcu
IEZvciBleGFtcGxlOgorLy8gICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgiTVlfU1VCU1lTVEVNIiwg
IlNvbWVJbXBvcnRhbnRFdmVudCIpCisvLworLy8gRXZlbnRzIGNhbiBiZSBJTlNUQU5ULCBvciBj
YW4gYmUgcGFpcnMgb2YgQkVHSU4gYW5kIEVORCBpbiB0aGUgc2FtZSBzY29wZToKKy8vICAgVFJB
Q0VfRVZFTlRfQkVHSU4wKCJNWV9TVUJTWVNURU0iLCAiU29tZXRoaW5nQ29zdGx5IikKKy8vICAg
ZG9Tb21ldGhpbmdDb3N0bHkoKQorLy8gICBUUkFDRV9FVkVOVF9FTkQwKCJNWV9TVUJTWVNURU0i
LCAiU29tZXRoaW5nQ29zdGx5IikKKy8vIE5vdGU6IG91ciB0b29scyBjYW4ndCBhbHdheXMgZGV0
ZXJtaW5lIHRoZSBjb3JyZWN0IEJFR0lOL0VORCBwYWlycyB1bmxlc3MKKy8vIHRoZXNlIGFyZSB1
c2VkIGluIHRoZSBzYW1lIHNjb3BlLiBVc2UgQVNZTkNfQkVHSU4vQVNZTkNfRU5EIG1hY3JvcyBp
ZiB5b3UgbmVlZCB0aGVtCisvLyB0byBiZSBpbiBzZXBhcmF0ZSBzY29wZXMuCisvLworLy8gQSBj
b21tb24gdXNlIGNhc2UgaXMgdG8gdHJhY2UgZW50aXJlIGZ1bmN0aW9uIHNjb3Blcy4gVGhpcwor
Ly8gaXNzdWVzIGEgdHJhY2UgQkVHSU4gYW5kIEVORCBhdXRvbWF0aWNhbGx5OgorLy8gICB2b2lk
IGRvU29tZXRoaW5nQ29zdGx5KCkgeworLy8gICAgIFRSQUNFX0VWRU5UMCgiTVlfU1VCU1lTVEVN
IiwgImRvU29tZXRoaW5nQ29zdGx5Iik7CisvLyAgICAgLi4uCisvLyAgIH0KKy8vCisvLyBBZGRp
dGlvbmFsIHBhcmFtZXRlcnMgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhbiBldmVudDoKKy8vICAg
dm9pZCBkb1NvbWV0aGluZ0Nvc3RseTIoaW50IGhvd011Y2gpIHsKKy8vICAgICBUUkFDRV9FVkVO
VDEoIk1ZX1NVQlNZU1RFTSIsICJkb1NvbWV0aGluZ0Nvc3RseSIsCisvLyAgICAgICAgICJob3dN
dWNoIiwgaG93TXVjaCk7CisvLyAgICAgLi4uCisvLyAgIH0KKy8vCisvLyBUaGUgdHJhY2Ugc3lz
dGVtIHdpbGwgYXV0b21hdGljYWxseSBhZGQgdG8gdGhpcyBpbmZvcm1hdGlvbiB0aGUKKy8vIGN1
cnJlbnQgcHJvY2VzcyBpZCwgdGhyZWFkIGlkLCBhbmQgYSB0aW1lc3RhbXAgaW4gbWljcm9zZWNv
bmRzLgorLy8KKy8vIFRvIHRyYWNlIGFuIGFzeW5jaHJvbm91cyBwcm9jZWR1cmUgc3VjaCBhcyBh
biBJUEMgc2VuZC9yZWNlaXZlLCB1c2UgQVNZTkNfQkVHSU4gYW5kCisvLyBBU1lOQ19FTkQ6Cisv
LyAgIFtzaW5nbGUgdGhyZWFkZWQgc2VuZGVyIGNvZGVdCisvLyAgICAgc3RhdGljIGludCBzZW5k
X2NvdW50ID0gMDsKKy8vICAgICArK3NlbmRfY291bnQ7CisvLyAgICAgVFJBQ0VfRVZFTlRfQVNZ
TkNfQkVHSU4wKCJpcGMiLCAibWVzc2FnZSIsIHNlbmRfY291bnQpOworLy8gICAgIFNlbmQobmV3
IE15TWVzc2FnZShzZW5kX2NvdW50KSk7CisvLyAgIFtyZWNlaXZlIGNvZGVdCisvLyAgICAgdm9p
ZCBPbk15TWVzc2FnZShzZW5kX2NvdW50KSB7CisvLyAgICAgICBUUkFDRV9FVkVOVF9BU1lOQ19F
TkQwKCJpcGMiLCAibWVzc2FnZSIsIHNlbmRfY291bnQpOworLy8gICAgIH0KKy8vIFRoZSB0aGly
ZCBwYXJhbWV0ZXIgaXMgYSB1bmlxdWUgSUQgdG8gbWF0Y2ggQVNZTkNfQkVHSU4vQVNZTkNfRU5E
IHBhaXJzLgorLy8gQVNZTkNfQkVHSU4gYW5kIEFTWU5DX0VORCBjYW4gb2NjdXIgb24gYW55IHRo
cmVhZCBvZiBhbnkgdHJhY2VkIHByb2Nlc3MuIFBvaW50ZXJzIGNhbgorLy8gYmUgdXNlZCBmb3Ig
dGhlIElEIHBhcmFtZXRlciwgYW5kIHRoZXkgd2lsbCBiZSBtYW5nbGVkIGludGVybmFsbHkgc28g
dGhhdAorLy8gdGhlIHNhbWUgcG9pbnRlciBvbiB0d28gZGlmZmVyZW50IHByb2Nlc3NlcyB3aWxs
IG5vdCBtYXRjaC4gRm9yIGV4YW1wbGU6CisvLyAgIGNsYXNzIE15VHJhY2VkQ2xhc3MgeworLy8g
ICAgcHVibGljOgorLy8gICAgIE15VHJhY2VkQ2xhc3MoKSB7CisvLyAgICAgICBUUkFDRV9FVkVO
VF9BU1lOQ19CRUdJTjAoImNhdGVnb3J5IiwgIk15VHJhY2VkQ2xhc3MiLCB0aGlzKTsKKy8vICAg
ICB9CisvLyAgICAgfk15VHJhY2VkQ2xhc3MoKSB7CisvLyAgICAgICBUUkFDRV9FVkVOVF9BU1lO
Q19FTkQwKCJjYXRlZ29yeSIsICJNeVRyYWNlZENsYXNzIiwgdGhpcyk7CisvLyAgICAgfQorLy8g
ICB9CisvLworLy8gVHJhY2UgZXZlbnQgYWxzbyBzdXBwb3J0cyBjb3VudGVycywgd2hpY2ggaXMg
YSB3YXkgdG8gdHJhY2sgYSBxdWFudGl0eQorLy8gYXMgaXQgdmFyaWVzIG92ZXIgdGltZS4gQ291
bnRlcnMgYXJlIGNyZWF0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIG1hY3JvOgorLy8gICBUUkFDRV9D
T1VOVEVSMSgiTVlfU1VCU1lTVEVNIiwgIm15Q291bnRlciIsIGdfbXlDb3VudGVyVmFsdWUpOwor
Ly8KKy8vIENvdW50ZXJzIGFyZSBwcm9jZXNzLXNwZWNpZmljLiBUaGUgbWFjcm8gaXRzZWxmIGNh
biBiZSBpc3N1ZWQgZnJvbSBhbnkKKy8vIHRocmVhZCwgaG93ZXZlci4KKy8vCisvLyBTb21ldGlt
ZXMsIHlvdSB3YW50IHRvIHRyYWNrIHR3byBjb3VudGVycyBhdCBvbmNlLiBZb3UgY2FuIGRvIHRo
aXMgd2l0aCB0d28KKy8vIGNvdW50ZXIgbWFjcm9zOgorLy8gICBUUkFDRV9DT1VOVEVSMSgiTVlf
U1VCU1lTVEVNIiwgIm15Q291bnRlcjAiLCBnX215Q291bnRlclZhbHVlWzBdKTsKKy8vICAgVFJB
Q0VfQ09VTlRFUjEoIk1ZX1NVQlNZU1RFTSIsICJteUNvdW50ZXIxIiwgZ19teUNvdW50ZXJWYWx1
ZVsxXSk7CisvLyBPciB5b3UgY2FuIGRvIGl0IHdpdGggYSBjb21iaW5lZCBtYWNybzoKKy8vICAg
VFJBQ0VfQ09VTlRFUjIoIk1ZX1NVQlNZU1RFTSIsICJteUNvdW50ZXIiLAorLy8gICAgICAgImJ5
dGVzUGlubmVkIiwgZ19teUNvdW50ZXJWYWx1ZVswXSwKKy8vICAgICAgICJieXRlc0FsbG9jYXRl
ZCIsIGdfbXlDb3VudGVyVmFsdWVbMV0pOworLy8gVGhpcyBpbmRpY2F0ZXMgdG8gdGhlIHRyYWNp
bmcgVUkgdGhhdCB0aGVzZSBjb3VudGVycyBzaG91bGQgYmUgZGlzcGxheWVkCisvLyBpbiBhIHNp
bmdsZSBncmFwaCwgYXMgYSBzdW1tZWQgYXJlYSBjaGFydC4KKy8vCisvLyBTaW5jZSBjb3VudGVy
cyBhcmUgaW4gYSBnbG9iYWwgbmFtZXNwYWNlLCB5b3UgbWF5IHdhbnQgdG8gZGlzZW1iaWd1YXRl
IHdpdGggYQorLy8gdW5pcXVlIElELCBieSB1c2luZyB0aGUgVFJBQ0VfQ09VTlRFUl9JRCogdmFy
aWF0aW9ucy4KKy8vCisvLyBCeSBkZWZhdWx0LCB0cmFjZSBjb2xsZWN0aW9uIGlzIGNvbXBpbGVk
IGluLCBidXQgdHVybmVkIG9mZiBhdCBydW50aW1lLgorLy8gQ29sbGVjdGluZyB0cmFjZSBkYXRh
IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgZW1iZWRkaW5nCisvLyBhcHBsaWNhdGlvbi4g
SW4gQ2hyb21lJ3MgY2FzZSwgbmF2aWdhdGluZyB0byBhYm91dDp0cmFjaW5nIHdpbGwgdHVybiBv
bgorLy8gdHJhY2luZyBhbmQgZGlzcGxheSBkYXRhIGNvbGxlY3RlZCBhY3Jvc3MgYWxsIGFjdGl2
ZSBwcm9jZXNzZXMuCisvLworLy8KKy8vIE1lbW9yeSBzY29waW5nIG5vdGU6CisvLyBUcmFjaW5n
IGNvcGllcyB0aGUgcG9pbnRlcnMsIG5vdCB0aGUgc3RyaW5nIGNvbnRlbnQsIG9mIHRoZSBzdHJp
bmdzIHBhc3NlZAorLy8gaW4gZm9yIGNhdGVnb3J5LCBuYW1lLCBhbmQgYXJnX25hbWVzLiBUaHVz
LCB0aGUgZm9sbG93aW5nIGNvZGUgd2lsbAorLy8gY2F1c2UgcHJvYmxlbXM6CisvLyAgICAgY2hh
ciogc3RyID0gc3RyZHVwKCJpbXBwcnRhbnROYW1lIik7CisvLyAgICAgVFJBQ0VfRVZFTlRfSU5T
VEFOVDAoIlNVQlNZU1RFTSIsIHN0cik7ICAvLyBCQUQhCisvLyAgICAgZnJlZShzdHIpOyAgICAg
ICAgICAgICAgICAgICAvLyBUcmFjZSBzeXN0ZW0gbm93IGhhcyBkYW5nbGluZyBwb2ludGVyCisv
LworLy8gVG8gYXZvaWQgdGhpcyBpc3N1ZSB3aXRoIHRoZSB8bmFtZXwgYW5kIHxhcmdfbmFtZXwg
cGFyYW1ldGVycywgdXNlIHRoZQorLy8gVFJBQ0VfRVZFTlRfQ09QWV9YWFggb3ZlcmxvYWRzIG9m
IHRoZSBtYWNyb3MgYXQgYWRkaXRpb25hbCBydW50aW1lIG92ZXJoZWFkLgorLy8gTm90ZXM6IFRo
ZSBjYXRlZ29yeSBtdXN0IGFsd2F5cyBiZSBpbiBhIGxvbmctbGl2ZWQgY2hhciogKGkuZS4gc3Rh
dGljIGNvbnN0KS4KKy8vICAgICAgICBUaGUgfGFyZ192YWx1ZXN8LCB3aGVuIHVzZWQsIGFyZSBh
bHdheXMgZGVlcCBjb3BpZWQgd2l0aCB0aGUgX0NPUFkKKy8vICAgICAgICBtYWNyb3MuCisvLwor
Ly8gV2hlbiBhcmUgc3RyaW5nIGFyZ3VtZW50IHZhbHVlcyBjb3BpZWQ6CisvLyBjb25zdCBjaGFy
KiBhcmdfdmFsdWVzIGFyZSBvbmx5IHJlZmVyZW5jZWQgYnkgZGVmYXVsdDoKKy8vICAgICBUUkFD
RV9FVkVOVDEoImNhdGVnb3J5IiwgIm5hbWUiLAorLy8gICAgICAgICAgICAgICAgICAiYXJnMSIs
ICJsaXRlcmFsIHN0cmluZyBpcyBvbmx5IHJlZmVyZW5jZWQiKTsKKy8vIFVzZSBUUkFDRV9TVFJf
Q09QWSB0byBmb3JjZSBjb3B5aW5nIG9mIGEgY29uc3QgY2hhcio6CisvLyAgICAgVFJBQ0VfRVZF
TlQxKCJjYXRlZ29yeSIsICJuYW1lIiwKKy8vICAgICAgICAgICAgICAgICAgImFyZzEiLCBUUkFD
RV9TVFJfQ09QWSgic3RyaW5nIHdpbGwgYmUgY29waWVkIikpOworLy8gc3RkOjpzdHJpbmcgYXJn
X3ZhbHVlcyBhcmUgYWx3YXlzIGNvcGllZDoKKy8vICAgICBUUkFDRV9FVkVOVDEoImNhdGVnb3J5
IiwgIm5hbWUiLAorLy8gICAgICAgICAgICAgICAgICAiYXJnMSIsIHN0ZDo6c3RyaW5nKCJzdHJp
bmcgd2lsbCBiZSBjb3BpZWQiKSk7CisvLworLy8KKy8vIFRocmVhZCBTYWZldHk6CisvLyBBIHRo
cmVhZCBzYWZlIHNpbmdsZXRvbiBhbmQgbXV0ZXggYXJlIHVzZWQgZm9yIHRocmVhZCBzYWZldHku
IENhdGVnb3J5CisvLyBlbmFibGVkIGZsYWdzIGFyZSB1c2VkIHRvIGxpbWl0IHRoZSBwZXJmb3Jt
YW5jZSBpbXBhY3Qgd2hlbiB0aGUgc3lzdGVtCisvLyBpcyBub3QgZW5hYmxlZC4KKy8vCisvLyBU
UkFDRV9FVkVOVCBtYWNyb3MgZmlyc3QgY2FjaGUgYSBwb2ludGVyIHRvIGEgY2F0ZWdvcnkuIFRo
ZSBjYXRlZ29yaWVzIGFyZQorLy8gc3RhdGljYWxseSBhbGxvY2F0ZWQgYW5kIHNhZmUgYXQgYWxs
IHRpbWVzLCBldmVuIGFmdGVyIGV4aXQuIEZldGNoaW5nIGEKKy8vIGNhdGVnb3J5IGlzIHByb3Rl
Y3RlZCBieSB0aGUgVHJhY2VMb2c6OmxvY2tfLiBNdWx0aXBsZSB0aHJlYWRzIGluaXRpYWxpemlu
ZworLy8gdGhlIHN0YXRpYyB2YXJpYWJsZSBpcyBzYWZlLCBhcyB0aGV5IHdpbGwgYmUgc2VyaWFs
aXplZCBieSB0aGUgbG9jayBhbmQKKy8vIG11bHRpcGxlIGNhbGxzIHdpbGwgcmV0dXJuIHRoZSBz
YW1lIHBvaW50ZXIgdG8gdGhlIGNhdGVnb3J5LgorLy8KKy8vIFRoZW4gdGhlIGNhdGVnb3J5X2Vu
YWJsZWQgZmxhZyBpcyBjaGVja2VkLiBUaGlzIGlzIGEgdW5zaWduZWQgY2hhciwgYW5kCisvLyBu
b3QgaW50ZW5kZWQgdG8gYmUgbXVsdGl0aHJlYWQgc2FmZS4gSXQgb3B0aW1pemVzIGFjY2VzcyB0
byBhZGRUcmFjZUV2ZW50CisvLyB3aGljaCBpcyB0aHJlYWRzYWZlIGludGVybmFsbHkgdmlhIFRy
YWNlTG9nOjpsb2NrXy4gVGhlIGVuYWJsZWQgZmxhZyBtYXkKKy8vIGNhdXNlIHNvbWUgdGhyZWFk
cyB0byBpbmNvcnJlY3RseSBjYWxsIG9yIHNraXAgY2FsbGluZyBhZGRUcmFjZUV2ZW50IG5lYXIK
Ky8vIHRoZSB0aW1lIG9mIHRoZSBzeXN0ZW0gYmVpbmcgZW5hYmxlZCBvciBkaXNhYmxlZC4gVGhp
cyBpcyBhY2NlcHRhYmxlIGFzCisvLyB3ZSB0b2xlcmF0ZSBzb21lIGRhdGEgbG9zcyB3aGlsZSB0
aGUgc3lzdGVtIGlzIGJlaW5nIGVuYWJsZWQvZGlzYWJsZWQgYW5kCisvLyBiZWNhdXNlIGFkZFRy
YWNlRXZlbnQgaXMgdGhyZWFkc2FmZSBpbnRlcm5hbGx5IGFuZCBjaGVja3MgdGhlIGVuYWJsZWQg
c3RhdGUKKy8vIGFnYWluIHVuZGVyIGxvY2suCisvLworLy8gV2l0aG91dCB0aGUgdXNlIG9mIHRo
ZXNlIHN0YXRpYyBjYXRlZ29yeSBwb2ludGVycyBhbmQgZW5hYmxlZCBmbGFncyBhbGwKKy8vIHRy
YWNlIHBvaW50cyB3b3VsZCBjYXJyeSBhIHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIGNvc3Qgb2Yg
YXF1aXJpbmcgYSBsb2NrCisvLyBhbmQgcmVzb2x2aW5nIHRoZSBjYXRlZ29yeS4KKworI2lmbmRl
ZiBDT01NT05fVFJBQ0VfRVZFTlRfSF8KKyNkZWZpbmUgQ09NTU9OX1RSQUNFX0VWRU5UX0hfCisK
KyNpbmNsdWRlIDxzdHJpbmc+CisKKyNpbmNsdWRlICJjb21tb24vZXZlbnRfdHJhY2VyLmgiCisK
Ky8vIEJ5IGRlZmF1bHQsIGNvbnN0IGNoYXIqIGFyZ3VtZW50IHZhbHVlcyBhcmUgYXNzdW1lZCB0
byBoYXZlIGxvbmctbGl2ZWQgc2NvcGUKKy8vIGFuZCB3aWxsIG5vdCBiZSBjb3BpZWQuIFVzZSB0
aGlzIG1hY3JvIHRvIGZvcmNlIGEgY29uc3QgY2hhciogdG8gYmUgY29waWVkLgorI2RlZmluZSBU
UkFDRV9TVFJfQ09QWShzdHIpIFwKKyAgICBXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZVN0cmlu
Z1dpdGhDb3B5KHN0cikKKworLy8gUmVjb3JkcyBhIHBhaXIgb2YgYmVnaW4gYW5kIGVuZCBldmVu
dHMgY2FsbGVkICJuYW1lIiBmb3IgdGhlIGN1cnJlbnQKKy8vIHNjb3BlLCB3aXRoIDAsIDEgb3Ig
MiBhc3NvY2lhdGVkIGFyZ3VtZW50cy4gSWYgdGhlIGNhdGVnb3J5IGlzIG5vdAorLy8gZW5hYmxl
ZCwgdGhlbiB0aGlzIGRvZXMgbm90aGluZy4KKy8vIC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5n
cyBtdXN0IGhhdmUgYXBwbGljYXRpb24gbGlmZXRpbWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJh
bHMpLiBUaGV5IG1heSBub3QgaW5jbHVkZSAiIGNoYXJzLgorI2RlZmluZSBUUkFDRV9FVkVOVDAo
Y2F0ZWdvcnksIG5hbWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfU0NPUEVEKGNh
dGVnb3J5LCBuYW1lKQorI2RlZmluZSBUUkFDRV9FVkVOVDEoY2F0ZWdvcnksIG5hbWUsIGFyZzFf
bmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfU0NPUEVEKGNh
dGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVDIo
Y2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIGFyZzJfbmFtZSwgYXJnMl92YWwp
IFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfU0NPUEVEKGNhdGVnb3J5LCBuYW1lLCBh
cmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpCisKKy8v
IFJlY29yZHMgYSBzaW5nbGUgZXZlbnQgY2FsbGVkICJuYW1lIiBpbW1lZGlhdGVseSwgd2l0aCAw
LCAxIG9yIDIKKy8vIGFzc29jaWF0ZWQgYXJndW1lbnRzLiBJZiB0aGUgY2F0ZWdvcnkgaXMgbm90
IGVuYWJsZWQsIHRoZW4gdGhpcworLy8gZG9lcyBub3RoaW5nLgorLy8gLSBjYXRlZ29yeSBhbmQg
bmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAoc3RhdGljcyBvcgor
Ly8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMuCisjZGVmaW5lIFRS
QUNFX0VWRU5UX0lOU1RBTlQwKGNhdGVnb3J5LCBuYW1lKSBcCisgICAgSU5URVJOQUxfVFJBQ0Vf
RVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RBTlQsIFwKKyAgICAgICAgY2F0ZWdvcnks
IG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfSU5TVEFO
VDEoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9U
UkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfSU5TVEFOVCwgXAorICAgICAgICBjYXRl
Z29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCBhcmcxX25hbWUsIGFyZzFfdmFsKQor
I2RlZmluZSBUUkFDRV9FVkVOVF9JTlNUQU5UMihjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBh
cmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxf
VFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RBTlQsIFwKKyAgICAgICAgY2F0
ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwg
XAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZ
X0lOU1RBTlQwKGNhdGVnb3J5LCBuYW1lKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQURE
KFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RBTlQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRS
QUNFX0VWRU5UX0ZMQUdfQ09QWSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9JTlNUQU5UMShj
YXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNF
X0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9JTlNUQU5ULCBcCisgICAgICAgIGNhdGVnb3J5
LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVm
aW5lIFRSQUNFX0VWRU5UX0NPUFlfSU5TVEFOVDIoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwg
YXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElOVEVSTkFM
X1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9JTlNUQU5ULCBcCisgICAgICAgIGNh
dGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIGFyZzFfbmFtZSwgYXJnMV92YWws
IFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKworLy8gUmVjb3JkcyBhIHNpbmdsZSBC
RUdJTiBldmVudCBjYWxsZWQgIm5hbWUiIGltbWVkaWF0ZWx5LCB3aXRoIDAsIDEgb3IgMgorLy8g
YXNzb2NpYXRlZCBhcmd1bWVudHMuIElmIHRoZSBjYXRlZ29yeSBpcyBub3QgZW5hYmxlZCwgdGhl
biB0aGlzCisvLyBkb2VzIG5vdGhpbmcuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0cmluZ3Mg
bXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxpdGVyYWxz
KS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQkVH
SU4wKGNhdGVnb3J5LCBuYW1lKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNF
X0VWRU5UX1BIQVNFX0JFR0lOLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVO
VF9GTEFHX05PTkUpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0JFR0lOMShjYXRlZ29yeSwgbmFtZSwg
YXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFD
RV9FVkVOVF9QSEFTRV9CRUdJTiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZF
TlRfRkxBR19OT05FLCBhcmcxX25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9C
RUdJTjIoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJn
Ml9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9F
VkVOVF9QSEFTRV9CRUdJTiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRf
RkxBR19OT05FLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJn
Ml92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfQkVHSU4wKGNhdGVnb3J5LCBuYW1lKSBc
CisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0JFR0lOLCBc
CisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFkpCisjZGVmaW5l
IFRSQUNFX0VWRU5UX0NPUFlfQkVHSU4xKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFf
dmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0JF
R0lOLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIGFy
ZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfQkVHSU4yKGNhdGVn
b3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJn
Ml92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0Vf
QkVHSU4sIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwg
YXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKQorCisv
LyBSZWNvcmRzIGEgc2luZ2xlIEVORCBldmVudCBmb3IgIm5hbWUiIGltbWVkaWF0ZWx5LiBJZiB0
aGUgY2F0ZWdvcnkKKy8vIGlzIG5vdCBlbmFibGVkLCB0aGVuIHRoaXMgZG9lcyBub3RoaW5nLgor
Ly8gLSBjYXRlZ29yeSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZl
dGltZSAoc3RhdGljcyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIg
Y2hhcnMuCisjZGVmaW5lIFRSQUNFX0VWRU5UX0VORDAoY2F0ZWdvcnksIG5hbWUpIFwKKyAgICBJ
TlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfRU5ELCBcCisgICAgICAg
IGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUpCisjZGVmaW5lIFRSQUNFX0VW
RU5UX0VORDEoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRF
Uk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfRU5ELCBcCisgICAgICAgIGNh
dGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUsIGFyZzFfbmFtZSwgYXJnMV92YWwp
CisjZGVmaW5lIFRSQUNFX0VWRU5UX0VORDIoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJn
MV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RS
QUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9FTkQsIFwKKyAgICAgICAgY2F0ZWdvcnks
IG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAg
ICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0VORDAo
Y2F0ZWdvcnksIG5hbWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZF
TlRfUEhBU0VfRU5ELCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFH
X0NPUFkpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfRU5EMShjYXRlZ29yeSwgbmFtZSwgYXJn
MV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9F
VkVOVF9QSEFTRV9FTkQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZM
QUdfQ09QWSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9F
TkQyKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJf
bmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZF
TlRfUEhBU0VfRU5ELCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFH
X0NPUFksIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3Zh
bCkKKworLy8gUmVjb3JkcyB0aGUgdmFsdWUgb2YgYSBjb3VudGVyIGNhbGxlZCAibmFtZSIgaW1t
ZWRpYXRlbHkuIFZhbHVlCisvLyBtdXN0IGJlIHJlcHJlc2VudGFibGUgYXMgYSAzMiBiaXQgaW50
ZWdlci4KKy8vIC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBwbGljYXRp
b24gbGlmZXRpbWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBub3QgaW5j
bHVkZSAiIGNoYXJzLgorI2RlZmluZSBUUkFDRV9DT1VOVEVSMShjYXRlZ29yeSwgbmFtZSwgdmFs
dWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09V
TlRFUiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCBc
CisgICAgICAgICJ2YWx1ZSIsIHN0YXRpY19jYXN0PGludD4odmFsdWUpKQorI2RlZmluZSBUUkFD
RV9DT1BZX0NPVU5URVIxKGNhdGVnb3J5LCBuYW1lLCB2YWx1ZSkgXAorICAgIElOVEVSTkFMX1RS
QUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9DT1VOVEVSLCBcCisgICAgICAgIGNhdGVn
b3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIFwKKyAgICAgICAgInZhbHVlIiwgc3Rh
dGljX2Nhc3Q8aW50Pih2YWx1ZSkpCisKKy8vIFJlY29yZHMgdGhlIHZhbHVlcyBvZiBhIG11bHRp
LXBhcnRlZCBjb3VudGVyIGNhbGxlZCAibmFtZSIgaW1tZWRpYXRlbHkuCisvLyBUaGUgVUkgd2ls
bCB0cmVhdCB2YWx1ZTEgYW5kIHZhbHVlMiBhcyBwYXJ0cyBvZiBhIHdob2xlLCBkaXNwbGF5aW5n
IHRoZWlyCisvLyB2YWx1ZXMgYXMgYSBzdGFja2VkLWJhciBjaGFydC4KKy8vIC0gY2F0ZWdvcnkg
YW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBwbGljYXRpb24gbGlmZXRpbWUgKHN0YXRpY3Mg
b3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBub3QgaW5jbHVkZSAiIGNoYXJzLgorI2RlZmlu
ZSBUUkFDRV9DT1VOVEVSMihjYXRlZ29yeSwgbmFtZSwgdmFsdWUxX25hbWUsIHZhbHVlMV92YWws
IFwKKyAgICAgICAgdmFsdWUyX25hbWUsIHZhbHVlMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFD
RV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAgICBjYXRlZ29y
eSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCBcCisgICAgICAgIHZhbHVlMV9uYW1lLCBz
dGF0aWNfY2FzdDxpbnQ+KHZhbHVlMV92YWwpLCBcCisgICAgICAgIHZhbHVlMl9uYW1lLCBzdGF0
aWNfY2FzdDxpbnQ+KHZhbHVlMl92YWwpKQorI2RlZmluZSBUUkFDRV9DT1BZX0NPVU5URVIyKGNh
dGVnb3J5LCBuYW1lLCB2YWx1ZTFfbmFtZSwgdmFsdWUxX3ZhbCwgXAorICAgICAgICB2YWx1ZTJf
bmFtZSwgdmFsdWUyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9F
VkVOVF9QSEFTRV9DT1VOVEVSLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVO
VF9GTEFHX0NPUFksIFwKKyAgICAgICAgdmFsdWUxX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFs
dWUxX3ZhbCksIFwKKyAgICAgICAgdmFsdWUyX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUy
X3ZhbCkpCisKKy8vIFJlY29yZHMgdGhlIHZhbHVlIG9mIGEgY291bnRlciBjYWxsZWQgIm5hbWUi
IGltbWVkaWF0ZWx5LiBWYWx1ZQorLy8gbXVzdCBiZSByZXByZXNlbnRhYmxlIGFzIGEgMzIgYml0
IGludGVnZXIuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0cmluZ3MgbXVzdCBoYXZlIGFwcGxp
Y2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxpdGVyYWxzKS4gVGhleSBtYXkgbm90
IGluY2x1ZGUgIiBjaGFycy4KKy8vIC0gfGlkfCBpcyB1c2VkIHRvIGRpc2FtYmlndWF0ZSBjb3Vu
dGVycyB3aXRoIHRoZSBzYW1lIG5hbWUuIEl0IG11c3QgZWl0aGVyCisvLyAgIGJlIGEgcG9pbnRl
ciBvciBhbiBpbnRlZ2VyIHZhbHVlIHVwIHRvIDY0IGJpdHMuIElmIGl0J3MgYSBwb2ludGVyLCB0
aGUgYml0cworLy8gICB3aWxsIGJlIHhvcmVkIHdpdGggYSBoYXNoIG9mIHRoZSBwcm9jZXNzIElE
IHNvIHRoYXQgdGhlIHNhbWUgcG9pbnRlciBvbgorLy8gICB0d28gZGlmZmVyZW50IHByb2Nlc3Nl
cyB3aWxsIG5vdCBjb2xsaWRlLgorI2RlZmluZSBUUkFDRV9DT1VOVEVSX0lEMShjYXRlZ29yeSwg
bmFtZSwgaWQsIHZhbHVlKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQo
VFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQs
IFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgXAorICAgICAgICAidmFsdWUiLCBzdGF0aWNfY2FzdDxp
bnQ+KHZhbHVlKSkKKyNkZWZpbmUgVFJBQ0VfQ09QWV9DT1VOVEVSX0lEMShjYXRlZ29yeSwgbmFt
ZSwgaWQsIHZhbHVlKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJB
Q0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRS
QUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAorICAgICAgICAidmFsdWUiLCBzdGF0aWNfY2FzdDxpbnQ+
KHZhbHVlKSkKKworLy8gUmVjb3JkcyB0aGUgdmFsdWVzIG9mIGEgbXVsdGktcGFydGVkIGNvdW50
ZXIgY2FsbGVkICJuYW1lIiBpbW1lZGlhdGVseS4KKy8vIFRoZSBVSSB3aWxsIHRyZWF0IHZhbHVl
MSBhbmQgdmFsdWUyIGFzIHBhcnRzIG9mIGEgd2hvbGUsIGRpc3BsYXlpbmcgdGhlaXIKKy8vIHZh
bHVlcyBhcyBhIHN0YWNrZWQtYmFyIGNoYXJ0LgorLy8gLSBjYXRlZ29yeSBhbmQgbmFtZSBzdHJp
bmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAoc3RhdGljcyBvcgorLy8gICBsaXRl
cmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMuCisvLyAtIHxpZHwgaXMgdXNlZCB0
byBkaXNhbWJpZ3VhdGUgY291bnRlcnMgd2l0aCB0aGUgc2FtZSBuYW1lLiBJdCBtdXN0IGVpdGhl
cgorLy8gICBiZSBhIHBvaW50ZXIgb3IgYW4gaW50ZWdlciB2YWx1ZSB1cCB0byA2NCBiaXRzLiBJ
ZiBpdCdzIGEgcG9pbnRlciwgdGhlIGJpdHMKKy8vICAgd2lsbCBiZSB4b3JlZCB3aXRoIGEgaGFz
aCBvZiB0aGUgcHJvY2VzcyBJRCBzbyB0aGF0IHRoZSBzYW1lIHBvaW50ZXIgb24KKy8vICAgdHdv
IGRpZmZlcmVudCBwcm9jZXNzZXMgd2lsbCBub3QgY29sbGlkZS4KKyNkZWZpbmUgVFJBQ0VfQ09V
TlRFUl9JRDIoY2F0ZWdvcnksIG5hbWUsIGlkLCB2YWx1ZTFfbmFtZSwgdmFsdWUxX3ZhbCwgXAor
ICAgICAgICB2YWx1ZTJfbmFtZSwgdmFsdWUyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VW
RU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5URVIsIFwKKyAgICAgICAgY2F0
ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUsIFwKKyAgICAgICAgdmFsdWUx
X25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUxX3ZhbCksIFwKKyAgICAgICAgdmFsdWUyX25h
bWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUyX3ZhbCkpCisjZGVmaW5lIFRSQUNFX0NPUFlfQ09V
TlRFUl9JRDIoY2F0ZWdvcnksIG5hbWUsIGlkLCB2YWx1ZTFfbmFtZSwgdmFsdWUxX3ZhbCwgXAor
ICAgICAgICB2YWx1ZTJfbmFtZSwgdmFsdWUyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VW
RU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5URVIsIFwKKyAgICAgICAgY2F0
ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIFwKKyAgICAgICAgdmFsdWUx
X25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUxX3ZhbCksIFwKKyAgICAgICAgdmFsdWUyX25h
bWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUyX3ZhbCkpCisKKy8vIFJlY29yZHMgYSBzaW5nbGUg
QVNZTkNfQkVHSU4gZXZlbnQgY2FsbGVkICJuYW1lIiBpbW1lZGlhdGVseSwgd2l0aCAwLCAxIG9y
IDIKKy8vIGFzc29jaWF0ZWQgYXJndW1lbnRzLiBJZiB0aGUgY2F0ZWdvcnkgaXMgbm90IGVuYWJs
ZWQsIHRoZW4gdGhpcworLy8gZG9lcyBub3RoaW5nLgorLy8gLSBjYXRlZ29yeSBhbmQgbmFtZSBz
dHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAoc3RhdGljcyBvcgorLy8gICBs
aXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMuCisvLyAtIHxpZHwgaXMgdXNl
ZCB0byBtYXRjaCB0aGUgQVNZTkNfQkVHSU4gZXZlbnQgd2l0aCB0aGUgQVNZTkNfRU5EIGV2ZW50
LiBBU1lOQworLy8gICBldmVudHMgYXJlIGNvbnNpZGVyZWQgdG8gbWF0Y2ggaWYgdGhlaXIgY2F0
ZWdvcnksIG5hbWUgYW5kIGlkIHZhbHVlcyBhbGwKKy8vICAgbWF0Y2guIHxpZHwgbXVzdCBlaXRo
ZXIgYmUgYSBwb2ludGVyIG9yIGFuIGludGVnZXIgdmFsdWUgdXAgdG8gNjQgYml0cy4gSWYKKy8v
ICAgaXQncyBhIHBvaW50ZXIsIHRoZSBiaXRzIHdpbGwgYmUgeG9yZWQgd2l0aCBhIGhhc2ggb2Yg
dGhlIHByb2Nlc3MgSUQgc28KKy8vICAgdGhhdCB0aGUgc2FtZSBwb2ludGVyIG9uIHR3byBkaWZm
ZXJlbnQgcHJvY2Vzc2VzIHdpbGwgbm90IGNvbGxpZGUuCisvLyBBbiBhc3luY2hyb25vdXMgb3Bl
cmF0aW9uIGNhbiBjb25zaXN0IG9mIG11bHRpcGxlIHBoYXNlcy4gVGhlIGZpcnN0IHBoYXNlIGlz
CisvLyBkZWZpbmVkIGJ5IHRoZSBBU1lOQ19CRUdJTiBjYWxscy4gQWRkaXRpb25hbCBwaGFzZXMg
Y2FuIGJlIGRlZmluZWQgdXNpbmcgdGhlCisvLyBBU1lOQ19TVEVQX0JFR0lOIG1hY3Jvcy4gV2hl
biB0aGUgb3BlcmF0aW9uIGNvbXBsZXRlcywgY2FsbCBBU1lOQ19FTkQuCisvLyBBbiBhc3luYyBv
cGVyYXRpb24gY2FuIHNwYW4gdGhyZWFkcyBhbmQgcHJvY2Vzc2VzLCBidXQgYWxsIGV2ZW50cyBp
biB0aGF0CisvLyBvcGVyYXRpb24gbXVzdCB1c2UgdGhlIHNhbWUgfG5hbWV8IGFuZCB8aWR8LiBF
YWNoIGV2ZW50IGNhbiBoYXZlIGl0cyBvd24KKy8vIGFyZ3MuCisjZGVmaW5lIFRSQUNFX0VWRU5U
X0FTWU5DX0JFR0lOMChjYXRlZ29yeSwgbmFtZSwgaWQpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9F
VkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9BU1lOQ19CRUdJTiwgXAorICAgICAg
ICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSkKKyNkZWZpbmUgVFJB
Q0VfRVZFTlRfQVNZTkNfQkVHSU4xKGNhdGVnb3J5LCBuYW1lLCBpZCwgYXJnMV9uYW1lLCBhcmcx
X3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5U
X1BIQVNFX0FTWU5DX0JFR0lOLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0Vf
RVZFTlRfRkxBR19OT05FLCBhcmcxX25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVO
VF9BU1lOQ19CRUdJTjIoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBc
CisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVO
VF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9BU1lOQ19CRUdJTiwgXAorICAgICAgICBj
YXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgXAorICAgICAgICBhcmcx
X25hbWUsIGFyZzFfdmFsLCBhcmcyX25hbWUsIGFyZzJfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVO
VF9DT1BZX0FTWU5DX0JFR0lOMChjYXRlZ29yeSwgbmFtZSwgaWQpIFwKKyAgICBJTlRFUk5BTF9U
UkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9BU1lOQ19CRUdJTiwgXAor
ICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSkKKyNkZWZp
bmUgVFJBQ0VfRVZFTlRfQ09QWV9BU1lOQ19CRUdJTjEoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcx
X25hbWUsIGFyZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQo
VFJBQ0VfRVZFTlRfUEhBU0VfQVNZTkNfQkVHSU4sIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUs
IGlkLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIFwKKyAgICAgICAgYXJnMV9uYW1lLCBhcmcxX3Zh
bCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9BU1lOQ19CRUdJTjIoY2F0ZWdvcnksIG5hbWUs
IGlkLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwp
IFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFT
RV9BU1lOQ19CRUdJTiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5U
X0ZMQUdfQ09QWSwgXAorICAgICAgICBhcmcxX25hbWUsIGFyZzFfdmFsLCBhcmcyX25hbWUsIGFy
ZzJfdmFsKQorCisvLyBSZWNvcmRzIGEgc2luZ2xlIEFTWU5DX1NURVAgZXZlbnQgZm9yIHxzdGVw
fCBpbW1lZGlhdGVseS4gSWYgdGhlIGNhdGVnb3J5CisvLyBpcyBub3QgZW5hYmxlZCwgdGhlbiB0
aGlzIGRvZXMgbm90aGluZy4gVGhlIHxuYW1lfCBhbmQgfGlkfCBtdXN0IG1hdGNoIHRoZQorLy8g
QVNZTkNfQkVHSU4gZXZlbnQgYWJvdmUuIFRoZSB8c3RlcHwgcGFyYW0gaWRlbnRpZmllcyB0aGlz
IHN0ZXAgd2l0aGluIHRoZQorLy8gYXN5bmMgZXZlbnQuIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBh
dCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IHBoYXNlIG9mIGFuCisvLyBhc3luY2hyb25vdXMg
b3BlcmF0aW9uLgorI2RlZmluZSBUUkFDRV9FVkVOVF9BU1lOQ19TVEVQMChjYXRlZ29yeSwgbmFt
ZSwgaWQsIHN0ZXApIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFD
RV9FVkVOVF9QSEFTRV9BU1lOQ19TVEVQLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwg
VFJBQ0VfRVZFTlRfRkxBR19OT05FLCAic3RlcCIsIHN0ZXApCisjZGVmaW5lIFRSQUNFX0VWRU5U
X0FTWU5DX1NURVAxKGNhdGVnb3J5LCBuYW1lLCBpZCwgc3RlcCwgXAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhcmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAgSU5URVJO
QUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfQVNZTkNfU1RFUCwg
XAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgInN0
ZXAiLCBzdGVwLCBcCisgICAgICAgIGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNF
X0VWRU5UX0NPUFlfQVNZTkNfU1RFUDAoY2F0ZWdvcnksIG5hbWUsIGlkLCBzdGVwKSBcCisgICAg
SU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfQVNZTkNf
U1RFUCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfQ09Q
WSwgInN0ZXAiLCBzdGVwKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0FTWU5DX1NURVAxKGNh
dGVnb3J5LCBuYW1lLCBpZCwgc3RlcCwgXAorICAgICAgICBhcmcxX25hbWUsIGFyZzFfdmFsKSBc
CisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0Vf
QVNZTkNfU1RFUCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZM
QUdfQ09QWSwgInN0ZXAiLCBzdGVwLCBcCisgICAgICAgIGFyZzFfbmFtZSwgYXJnMV92YWwpCisK
Ky8vIFJlY29yZHMgYSBzaW5nbGUgQVNZTkNfRU5EIGV2ZW50IGZvciAibmFtZSIgaW1tZWRpYXRl
bHkuIElmIHRoZSBjYXRlZ29yeQorLy8gaXMgbm90IGVuYWJsZWQsIHRoZW4gdGhpcyBkb2VzIG5v
dGhpbmcuCisjZGVmaW5lIFRSQUNFX0VWRU5UX0FTWU5DX0VORDAoY2F0ZWdvcnksIG5hbWUsIGlk
KSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhB
U0VfQVNZTkNfRU5ELCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRf
RkxBR19OT05FKQorI2RlZmluZSBUUkFDRV9FVkVOVF9BU1lOQ19FTkQxKGNhdGVnb3J5LCBuYW1l
LCBpZCwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FE
RF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0FTWU5DX0VORCwgXAorICAgICAgICBjYXRlZ29y
eSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkK
KyNkZWZpbmUgVFJBQ0VfRVZFTlRfQVNZTkNfRU5EMihjYXRlZ29yeSwgbmFtZSwgaWQsIGFyZzFf
bmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElO
VEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0FTWU5DX0VO
RCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwg
XAorICAgICAgICBhcmcxX25hbWUsIGFyZzFfdmFsLCBhcmcyX25hbWUsIGFyZzJfdmFsKQorI2Rl
ZmluZSBUUkFDRV9FVkVOVF9DT1BZX0FTWU5DX0VORDAoY2F0ZWdvcnksIG5hbWUsIGlkKSBcCisg
ICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfQVNZ
TkNfRU5ELCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19D
T1BZKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0FTWU5DX0VORDEoY2F0ZWdvcnksIG5hbWUs
IGlkLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQURE
X1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfQVNZTkNfRU5ELCBcCisgICAgICAgIGNhdGVnb3J5
LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBcCisgICAgICAgIGFyZzFfbmFtZSwg
YXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfQVNZTkNfRU5EMihjYXRlZ29yeSwg
bmFtZSwgaWQsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcy
X3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5U
X1BIQVNFX0FTWU5DX0VORCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VW
RU5UX0ZMQUdfQ09QWSwgXAorICAgICAgICBhcmcxX25hbWUsIGFyZzFfdmFsLCBhcmcyX25hbWUs
IGFyZzJfdmFsKQorCisvLyBDcmVhdGVzIGEgc2NvcGUgb2YgYSBzYW1wbGluZyBzdGF0ZSB3aXRo
IHRoZSBnaXZlbiBjYXRlZ29yeSBhbmQgbmFtZSAoYm90aCBtdXN0CisvLyBiZSBjb25zdGFudCBz
dHJpbmdzKS4gVGhlc2Ugc3RhdGVzIGFyZSBpbnRlbmRlZCBmb3IgYSBzYW1wbGluZyBwcm9maWxl
ci4KKy8vIEltcGxlbWVudGF0aW9uIG5vdGU6IHdlIHN0b3JlIGNhdGVnb3J5IGFuZCBuYW1lIHRv
Z2V0aGVyIGJlY2F1c2Ugd2UgZG9uJ3QKKy8vIHdhbnQgdGhlIGluY29uc2lzdGVuY3kvZXhwZW5z
ZSBvZiBzdG9yaW5nIHR3byBwb2ludGVycy4KKy8vIHx0aHJlYWRfYnVja2V0fCBpcyBbMC4uMl0g
YW5kIGlzIHVzZWQgdG8gc3RhdGljYWxseSBpc29sYXRlIHNhbXBsZXMgaW4gb25lCisvLyB0aHJl
YWQgZnJvbSBvdGhlcnMuCisvLworLy8geyAgLy8gVGhlIHNhbXBsaW5nIHN0YXRlIGlzIHNldCB3
aXRoaW4gdGhpcyBzY29wZS4KKy8vICAgIFRSQUNFX0VWRU5UX1NBTVBMSU5HX1NUQVRFX1NDT1BF
X0ZPUl9CVUNLRVQoMCwgImNhdGVnb3J5IiwgIm5hbWUiKTsKKy8vICAgIC4uLjsKKy8vIH0KKyNk
ZWZpbmUgVFJBQ0VfRVZFTlRfU0NPUEVEX1NBTVBMSU5HX1NUQVRFX0ZPUl9CVUNLRVQoYnVja2V0
X251bWJlciwgY2F0ZWdvcnksIG5hbWUpIFwKKyAgICBUcmFjZUV2ZW50OjpTYW1wbGluZ1N0YXRl
U2NvcGU8YnVja2V0X251bWJlcj4gdHJhY2VFdmVudFNhbXBsaW5nU2NvcGUoY2F0ZWdvcnkgIlww
IiBuYW1lKTsKKworLy8gUmV0dXJucyBhIGN1cnJlbnQgc2FtcGxpbmcgc3RhdGUgb2YgdGhlIGdp
dmVuIGJ1Y2tldC4KKy8vIFRoZSBmb3JtYXQgb2YgdGhlIHJldHVybmVkIHN0cmluZyBpcyAiY2F0
ZWdvcnlcMG5hbWUiLgorI2RlZmluZSBUUkFDRV9FVkVOVF9HRVRfU0FNUExJTkdfU1RBVEVfRk9S
X0JVQ0tFVChidWNrZXRfbnVtYmVyKSBcCisgICAgVHJhY2VFdmVudDo6U2FtcGxpbmdTdGF0ZVNj
b3BlPGJ1Y2tldF9udW1iZXI+OjpjdXJyZW50KCkKKworLy8gU2V0cyBhIGN1cnJlbnQgc2FtcGxp
bmcgc3RhdGUgb2YgdGhlIGdpdmVuIGJ1Y2tldC4KKy8vIHxjYXRlZ29yeXwgYW5kIHxuYW1lfCBo
YXZlIHRvIGJlIGNvbnN0YW50IHN0cmluZ3MuCisjZGVmaW5lIFRSQUNFX0VWRU5UX1NFVF9TQU1Q
TElOR19TVEFURV9GT1JfQlVDS0VUKGJ1Y2tldF9udW1iZXIsIGNhdGVnb3J5LCBuYW1lKSBcCisg
ICAgVHJhY2VFdmVudDo6U2FtcGxpbmdTdGF0ZVNjb3BlPGJ1Y2tldF9udW1iZXI+OjpzZXQoY2F0
ZWdvcnkgIlwwIiBuYW1lKQorCisvLyBTZXRzIGEgY3VycmVudCBzYW1wbGluZyBzdGF0ZSBvZiB0
aGUgZ2l2ZW4gYnVja2V0LgorLy8gfGNhdGVnb3J5QW5kTmFtZXwgZG9lc24ndCBuZWVkIHRvIGJl
IGEgY29uc3RhbnQgc3RyaW5nLgorLy8gVGhlIGZvcm1hdCBvZiB0aGUgc3RyaW5nIGlzICJjYXRl
Z29yeVwwbmFtZSIuCisjZGVmaW5lIFRSQUNFX0VWRU5UX1NFVF9OT05DT05TVF9TQU1QTElOR19T
VEFURV9GT1JfQlVDS0VUKGJ1Y2tldF9udW1iZXIsIGNhdGVnb3J5QW5kTmFtZSkgXAorICAgIFRy
YWNlRXZlbnQ6OlNhbXBsaW5nU3RhdGVTY29wZTxidWNrZXRfbnVtYmVyPjo6c2V0KGNhdGVnb3J5
QW5kTmFtZSkKKworLy8gU3ludGFjdGljIHN1Z2FycyBmb3IgdGhlIHNhbXBsaW5nIHRyYWNpbmcg
aW4gdGhlIG1haW4gdGhyZWFkLgorI2RlZmluZSBUUkFDRV9FVkVOVF9TQ09QRURfU0FNUExJTkdf
U1RBVEUoY2F0ZWdvcnksIG5hbWUpIFwKKyAgICBUUkFDRV9FVkVOVF9TQ09QRURfU0FNUExJTkdf
U1RBVEVfRk9SX0JVQ0tFVCgwLCBjYXRlZ29yeSwgbmFtZSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRf
R0VUX1NBTVBMSU5HX1NUQVRFKCkgXAorICAgIFRSQUNFX0VWRU5UX0dFVF9TQU1QTElOR19TVEFU
RV9GT1JfQlVDS0VUKDApCisjZGVmaW5lIFRSQUNFX0VWRU5UX1NFVF9TQU1QTElOR19TVEFURShj
YXRlZ29yeSwgbmFtZSkgXAorICAgIFRSQUNFX0VWRU5UX1NFVF9TQU1QTElOR19TVEFURV9GT1Jf
QlVDS0VUKDAsIGNhdGVnb3J5LCBuYW1lKQorI2RlZmluZSBUUkFDRV9FVkVOVF9TRVRfTk9OQ09O
U1RfU0FNUExJTkdfU1RBVEUoY2F0ZWdvcnlBbmROYW1lKSBcCisgICAgVFJBQ0VfRVZFTlRfU0VU
X05PTkNPTlNUX1NBTVBMSU5HX1NUQVRFX0ZPUl9CVUNLRVQoMCwgY2F0ZWdvcnlBbmROYW1lKQor
CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gSW1wbGVtZW50YXRpb24gc3BlY2lmaWMgdHJh
Y2luZyBBUEkgZGVmaW5pdGlvbnMuCisKKy8vIEdldCBhIHBvaW50ZXIgdG8gdGhlIGVuYWJsZWQg
c3RhdGUgb2YgdGhlIGdpdmVuIHRyYWNlIGNhdGVnb3J5LiBPbmx5CisvLyBsb25nLWxpdmVkIGxp
dGVyYWwgc3RyaW5ncyBzaG91bGQgYmUgZ2l2ZW4gYXMgdGhlIGNhdGVnb3J5IG5hbWUuIFRoZSBy
ZXR1cm5lZAorLy8gcG9pbnRlciBjYW4gYmUgaGVsZCBwZXJtYW5lbnRseSBpbiBhIGxvY2FsIHN0
YXRpYyBmb3IgZXhhbXBsZS4gSWYgdGhlCisvLyB1bnNpZ25lZCBjaGFyIGlzIG5vbi16ZXJvLCB0
cmFjaW5nIGlzIGVuYWJsZWQuIElmIHRyYWNpbmcgaXMgZW5hYmxlZCwKKy8vIFRSQUNFX0VWRU5U
X0FQSV9BRERfVFJBQ0VfRVZFTlQgY2FuIGJlIGNhbGxlZC4gSXQncyBPSyBpZiB0cmFjaW5nIGlz
IGRpc2FibGVkCisvLyBiZXR3ZWVuIHRoZSBsb2FkIG9mIHRoZSB0cmFjaW5nIHN0YXRlIGFuZCB0
aGUgY2FsbCB0bworLy8gVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVCwgYmVjYXVzZSB0
aGlzIGZsYWcgb25seSBwcm92aWRlcyBhbiBlYXJseSBvdXQKKy8vIGZvciBiZXN0IHBlcmZvcm1h
bmNlIHdoZW4gdHJhY2luZyBpcyBkaXNhYmxlZC4KKy8vIGNvbnN0IHVuc2lnbmVkIGNoYXIqCisv
LyAgICAgVFJBQ0VfRVZFTlRfQVBJX0dFVF9DQVRFR09SWV9FTkFCTEVEKGNvbnN0IGNoYXIqIGNh
dGVnb3J5X25hbWUpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0FQSV9HRVRfQ0FURUdPUllfRU5BQkxF
RCBcCisgICAgZ2w6OlRyYWNlR2V0VHJhY2VDYXRlZ29yeUVuYWJsZWRGbGFnCisKKy8vIEFkZCBh
IHRyYWNlIGV2ZW50IHRvIHRoZSBwbGF0Zm9ybSB0cmFjaW5nIHN5c3RlbS4KKy8vIHZvaWQgVFJB
Q0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVCgKKy8vICAgICAgICAgICAgICAgICAgICBjaGFy
IHBoYXNlLAorLy8gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVn
b3J5X2VuYWJsZWQsCisvLyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSwKKy8v
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaWQsCisvLyAgICAgICAgICAg
ICAgICAgICAgaW50IG51bV9hcmdzLAorLy8gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
KiBhcmdfbmFtZXMsCisvLyAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciog
YXJnX3R5cGVzLAorLy8gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9u
ZyogYXJnX3ZhbHVlcywKKy8vICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGZsYWdz
KQorI2RlZmluZSBUUkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5UIFwKKyAgICBnbDo6VHJh
Y2VBZGRUcmFjZUV2ZW50CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKy8vIEltcGxlbWVu
dGF0aW9uIGRldGFpbDogdHJhY2UgZXZlbnQgbWFjcm9zIGNyZWF0ZSB0ZW1wb3JhcnkgdmFyaWFi
bGVzCisvLyB0byBrZWVwIGluc3RydW1lbnRhdGlvbiBvdmVyaGVhZCBsb3cuIFRoZXNlIG1hY3Jv
cyBnaXZlIGVhY2ggdGVtcG9yYXJ5CisvLyB2YXJpYWJsZSBhIHVuaXF1ZSBuYW1lIGJhc2VkIG9u
IHRoZSBsaW5lIG51bWJlciB0byBwcmV2ZW50IG5hbWUgY29sbGlzc2lvbnMuCisjZGVmaW5lIElO
VEVSTkFMX1RSQUNFX0VWRU5UX1VJRDMoYSwgYikgXAorICAgIHRyYWNlX2V2ZW50X3VuaXF1ZV8j
I2EjI2IKKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfVUlEMihhLCBiKSBcCisgICAgSU5U
RVJOQUxfVFJBQ0VfRVZFTlRfVUlEMyhhLCBiKQorI2RlZmluZSBJTlRFUk5BTFRSQUNFRVZFTlRV
SUQobmFtZV9wcmVmaXgpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9VSUQyKG5hbWVfcHJl
Zml4LCBfX0xJTkVfXykKKworLy8gSW1wbGVtZW50YXRpb24gZGV0YWlsOiBpbnRlcm5hbCBtYWNy
byB0byBjcmVhdGUgc3RhdGljIGNhdGVnb3J5LgorI2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVO
VF9HRVRfQ0FURUdPUllfSU5GTyhjYXRlZ29yeSkgXAorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBjaGFyKiBJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSA9IDA7IFwKKyAgICBpZiAo
IUlOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpKSBcCisgICAgICBJTlRFUk5BTFRSQUNF
RVZFTlRVSUQoY2F0c3RhdGljKSA9IFwKKyAgICAgICAgICBUUkFDRV9FVkVOVF9BUElfR0VUX0NB
VEVHT1JZX0VOQUJMRUQoY2F0ZWdvcnkpOworCisvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6IGlu
dGVybmFsIG1hY3JvIHRvIGNyZWF0ZSBzdGF0aWMgY2F0ZWdvcnkgYW5kIGFkZAorLy8gZXZlbnQg
aWYgdGhlIGNhdGVnb3J5IGlzIGVuYWJsZWQuCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5U
X0FERChwaGFzZSwgY2F0ZWdvcnksIG5hbWUsIGZsYWdzLCAuLi4pIFwKKyAgICBkbyB7IFwKKyAg
ICAgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfR0VUX0NBVEVHT1JZX0lORk8oY2F0ZWdvcnkpOyBc
CisgICAgICAgIGlmICgqSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYykpIHsgXAorICAg
ICAgICAgICAgZ2w6OlRyYWNlRXZlbnQ6OmFkZFRyYWNlRXZlbnQoIFwKKyAgICAgICAgICAgICAg
ICBwaGFzZSwgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYyksIG5hbWUsIFwKKyAgICAg
ICAgICAgICAgICBnbDo6VHJhY2VFdmVudDo6bm9FdmVudElkLCBmbGFncywgIyNfX1ZBX0FSR1Nf
Xyk7IFwKKyAgICAgICAgfSBcCisgICAgfSB3aGlsZSAoMCkKKworLy8gSW1wbGVtZW50YXRpb24g
ZGV0YWlsOiBpbnRlcm5hbCBtYWNybyB0byBjcmVhdGUgc3RhdGljIGNhdGVnb3J5IGFuZCBhZGQg
YmVnaW4KKy8vIGV2ZW50IGlmIHRoZSBjYXRlZ29yeSBpcyBlbmFibGVkLiBBbHNvIGFkZHMgdGhl
IGVuZCBldmVudCB3aGVuIHRoZSBzY29wZQorLy8gZW5kcy4KKyNkZWZpbmUgSU5URVJOQUxfVFJB
Q0VfRVZFTlRfQUREX1NDT1BFRChjYXRlZ29yeSwgbmFtZSwgLi4uKSBcCisgICAgSU5URVJOQUxf
VFJBQ0VfRVZFTlRfR0VUX0NBVEVHT1JZX0lORk8oY2F0ZWdvcnkpOyBcCisgICAgZ2w6OlRyYWNl
RXZlbnQ6OlRyYWNlRW5kT25TY29wZUNsb3NlIFwKKyAgICAgICAgSU5URVJOQUxUUkFDRUVWRU5U
VUlEKHByb2ZpbGVTY29wZSk7IFwKKyAgICBpZiAoKklOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRz
dGF0aWMpKSB7IFwKKyAgICAgIGdsOjpUcmFjZUV2ZW50OjphZGRUcmFjZUV2ZW50KCBcCisgICAg
ICAgICAgVFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4sIFwKKyAgICAgICAgICBJTlRFUk5BTFRSQUNF
RVZFTlRVSUQoY2F0c3RhdGljKSwgXAorICAgICAgICAgIG5hbWUsIGdsOjpUcmFjZUV2ZW50Ojpu
b0V2ZW50SWQsIFwKKyAgICAgICAgICBUUkFDRV9FVkVOVF9GTEFHX05PTkUsICMjX19WQV9BUkdT
X18pOyBcCisgICAgICBJTlRFUk5BTFRSQUNFRVZFTlRVSUQocHJvZmlsZVNjb3BlKS5pbml0aWFs
aXplKCBcCisgICAgICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYyksIG5hbWUp
OyBcCisgICAgfQorCisvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6IGludGVybmFsIG1hY3JvIHRv
IGNyZWF0ZSBzdGF0aWMgY2F0ZWdvcnkgYW5kIGFkZAorLy8gZXZlbnQgaWYgdGhlIGNhdGVnb3J5
IGlzIGVuYWJsZWQuCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKHBo
YXNlLCBjYXRlZ29yeSwgbmFtZSwgaWQsIGZsYWdzLCBcCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC4uLikgXAorICAgIGRvIHsgXAorICAgICAgICBJTlRFUk5BTF9U
UkFDRV9FVkVOVF9HRVRfQ0FURUdPUllfSU5GTyhjYXRlZ29yeSk7IFwKKyAgICAgICAgaWYgKCpJ
TlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSkgeyBcCisgICAgICAgICAgICB1bnNpZ25l
ZCBjaGFyIHRyYWNlRXZlbnRGbGFncyA9IGZsYWdzIHwgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQ7
IFwKKyAgICAgICAgICAgIGdsOjpUcmFjZUV2ZW50OjpUcmFjZUlEIHRyYWNlRXZlbnRUcmFjZUlE
KCBcCisgICAgICAgICAgICAgICAgaWQsICZ0cmFjZUV2ZW50RmxhZ3MpOyBcCisgICAgICAgICAg
ICBnbDo6VHJhY2VFdmVudDo6YWRkVHJhY2VFdmVudCggXAorICAgICAgICAgICAgICAgIHBoYXNl
LCBJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSwgXAorICAgICAgICAgICAgICAgIG5h
bWUsIHRyYWNlRXZlbnRUcmFjZUlELmRhdGEoKSwgdHJhY2VFdmVudEZsYWdzLCBcCisgICAgICAg
ICAgICAgICAgIyNfX1ZBX0FSR1NfXyk7IFwKKyAgICAgICAgfSBcCisgICAgfSB3aGlsZSAoMCkK
KworLy8gTm90ZXMgcmVnYXJkaW5nIHRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnM6CisvLyBOZXcg
dmFsdWVzIGNhbiBiZSBhZGRlZCBhbmQgcHJvcGFnYXRlZCB0byB0aGlyZCBwYXJ0eSBsaWJyYXJp
ZXMsIGJ1dCBleGlzdGluZworLy8gZGVmaW5pdGlvbnMgbXVzdCBuZXZlciBiZSBjaGFuZ2VkLCBi
ZWNhdXNlIHRoaXJkIHBhcnR5IGxpYnJhcmllcyBtYXkgdXNlIG9sZAorLy8gZGVmaW5pdGlvbnMu
CisKKy8vIFBoYXNlIGluZGljYXRlcyB0aGUgbmF0dXJlIG9mIGFuIGV2ZW50IGVudHJ5LiBFLmcu
IHBhcnQgb2YgYSBiZWdpbi9lbmQgcGFpci4KKyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0VfQkVH
SU4gICAgKCdCJykKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0VfRU5EICAgICAgKCdFJykKKyNk
ZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0VfSU5TVEFOVCAgKCdJJykKKyNkZWZpbmUgVFJBQ0VfRVZF
TlRfUEhBU0VfQVNZTkNfQkVHSU4gKCdTJykKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0VfQVNZ
TkNfU1RFUCAgKCdUJykKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0VfQVNZTkNfRU5EICAgKCdG
JykKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0VfTUVUQURBVEEgKCdNJykKKyNkZWZpbmUgVFJB
Q0VfRVZFTlRfUEhBU0VfQ09VTlRFUiAgKCdDJykKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0Vf
U0FNUExFICAoJ1AnKQorCisvLyBGbGFncyBmb3IgY2hhbmdpbmcgdGhlIGJlaGF2aW9yIG9mIFRS
QUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQuCisjZGVmaW5lIFRSQUNFX0VWRU5UX0ZMQUdf
Tk9ORSAgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDApKQorI2RlZmluZSBUUkFD
RV9FVkVOVF9GTEFHX0NPUFkgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigxIDw8
IDApKQorI2RlZmluZSBUUkFDRV9FVkVOVF9GTEFHX0hBU19JRCAgICAgIChzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyPigxIDw8IDEpKQorI2RlZmluZSBUUkFDRV9FVkVOVF9GTEFHX01BTkdMRV9J
RCAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigxIDw8IDIpKQorCisvLyBUeXBlIHZhbHVl
cyBmb3IgaWRlbnRpZnlpbmcgdHlwZXMgaW4gdGhlIFRyYWNlVmFsdWUgdW5pb24uCisjZGVmaW5l
IFRSQUNFX1ZBTFVFX1RZUEVfQk9PTCAgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
PigxKSkKKyNkZWZpbmUgVFJBQ0VfVkFMVUVfVFlQRV9VSU5UICAgICAgICAgKHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXI+KDIpKQorI2RlZmluZSBUUkFDRV9WQUxVRV9UWVBFX0lOVCAgICAgICAg
ICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMykpCisjZGVmaW5lIFRSQUNFX1ZBTFVFX1RZ
UEVfRE9VQkxFICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPig0KSkKKyNkZWZpbmUg
VFJBQ0VfVkFMVUVfVFlQRV9QT0lOVEVSICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KDUpKQorI2RlZmluZSBUUkFDRV9WQUxVRV9UWVBFX1NUUklORyAgICAgICAoc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4oNikpCisjZGVmaW5lIFRSQUNFX1ZBTFVFX1RZUEVfQ09QWV9TVFJJTkcg
IChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPig3KSkKKworCituYW1lc3BhY2UgZ2wgeworCitu
YW1lc3BhY2UgVHJhY2VFdmVudCB7CisKKy8vIFNwZWNpZnkgdGhlc2UgdmFsdWVzIHdoZW4gdGhl
IGNvcnJlc3BvbmRpbmcgYXJndW1lbnQgb2YgYWRkVHJhY2VFdmVudCBpcyBub3QKKy8vIHVzZWQu
Citjb25zdCBpbnQgemVyb051bUFyZ3MgPSAwOworY29uc3QgdW5zaWduZWQgbG9uZyBsb25nIG5v
RXZlbnRJZCA9IDA7CisKKy8vIFRyYWNlSUQgZW5jYXBzdWxhdGVzIGFuIElEIHRoYXQgY2FuIGVp
dGhlciBiZSBhbiBpbnRlZ2VyIG9yIHBvaW50ZXIuIFBvaW50ZXJzCisvLyBhcmUgbWFuZ2xlZCB3
aXRoIHRoZSBQcm9jZXNzIElEIHNvIHRoYXQgdGhleSBhcmUgdW5saWtlbHkgdG8gY29sbGlkZSB3
aGVuIHRoZQorLy8gc2FtZSBwb2ludGVyIGlzIHVzZWQgb24gZGlmZmVyZW50IHByb2Nlc3Nlcy4K
K2NsYXNzIFRyYWNlSUQgeworcHVibGljOgorICAgIGV4cGxpY2l0IFRyYWNlSUQoY29uc3Qgdm9p
ZCogaWQsIHVuc2lnbmVkIGNoYXIqIGZsYWdzKSA6CisgICAgICAgIG1fZGF0YShzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBsb25nIGxvbmc+KHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgbG9uZz4oaWQp
KSkKKyAgICB7CisgICAgICAgICpmbGFncyB8PSBUUkFDRV9FVkVOVF9GTEFHX01BTkdMRV9JRDsK
KyAgICB9CisgICAgZXhwbGljaXQgVHJhY2VJRCh1bnNpZ25lZCBsb25nIGxvbmcgaWQsIHVuc2ln
bmVkIGNoYXIqIGZsYWdzKSA6IG1fZGF0YShpZCkgeyAodm9pZClmbGFnczsgfQorICAgIGV4cGxp
Y2l0IFRyYWNlSUQodW5zaWduZWQgbG9uZyBpZCwgdW5zaWduZWQgY2hhciogZmxhZ3MpIDogbV9k
YXRhKGlkKSB7ICh2b2lkKWZsYWdzOyB9CisgICAgZXhwbGljaXQgVHJhY2VJRCh1bnNpZ25lZCBp
bnQgaWQsIHVuc2lnbmVkIGNoYXIqIGZsYWdzKSA6IG1fZGF0YShpZCkgeyAodm9pZClmbGFnczsg
fQorICAgIGV4cGxpY2l0IFRyYWNlSUQodW5zaWduZWQgc2hvcnQgaWQsIHVuc2lnbmVkIGNoYXIq
IGZsYWdzKSA6IG1fZGF0YShpZCkgeyAodm9pZClmbGFnczsgfQorICAgIGV4cGxpY2l0IFRyYWNl
SUQodW5zaWduZWQgY2hhciBpZCwgdW5zaWduZWQgY2hhciogZmxhZ3MpIDogbV9kYXRhKGlkKSB7
ICh2b2lkKWZsYWdzOyB9CisgICAgZXhwbGljaXQgVHJhY2VJRChsb25nIGxvbmcgaWQsIHVuc2ln
bmVkIGNoYXIqIGZsYWdzKSA6CisgICAgICAgIG1fZGF0YShzdGF0aWNfY2FzdDx1bnNpZ25lZCBs
b25nIGxvbmc+KGlkKSkgeyAodm9pZClmbGFnczsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQobG9u
ZyBpZCwgdW5zaWduZWQgY2hhciogZmxhZ3MpIDoKKyAgICAgICAgbV9kYXRhKHN0YXRpY19jYXN0
PHVuc2lnbmVkIGxvbmcgbG9uZz4oaWQpKSB7ICh2b2lkKWZsYWdzOyB9CisgICAgZXhwbGljaXQg
VHJhY2VJRChpbnQgaWQsIHVuc2lnbmVkIGNoYXIqIGZsYWdzKSA6CisgICAgICAgIG1fZGF0YShz
dGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGlkKSkgeyAodm9pZClmbGFnczsgfQorICAg
IGV4cGxpY2l0IFRyYWNlSUQoc2hvcnQgaWQsIHVuc2lnbmVkIGNoYXIqIGZsYWdzKSA6CisgICAg
ICAgIG1fZGF0YShzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGlkKSkgeyAodm9pZClm
bGFnczsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQoc2lnbmVkIGNoYXIgaWQsIHVuc2lnbmVkIGNo
YXIqIGZsYWdzKSA6CisgICAgICAgIG1fZGF0YShzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxv
bmc+KGlkKSkgeyAodm9pZClmbGFnczsgfQorCisgICAgdW5zaWduZWQgbG9uZyBsb25nIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBsb25n
IGxvbmcgbV9kYXRhOworfTsKKworLy8gU2ltcGxlIHVuaW9uIHRvIHN0b3JlIHZhcmlvdXMgdHlw
ZXMgYXMgdW5zaWduZWQgbG9uZyBsb25nLgordW5pb24gVHJhY2VWYWx1ZVVuaW9uIHsKKyAgICBi
b29sIG1fYm9vbDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbV91aW50OworICAgIGxvbmcgbG9u
ZyBtX2ludDsKKyAgICBkb3VibGUgbV9kb3VibGU7CisgICAgY29uc3Qgdm9pZCogbV9wb2ludGVy
OworICAgIGNvbnN0IGNoYXIqIG1fc3RyaW5nOworfTsKKworLy8gU2ltcGxlIGNvbnRhaW5lciBm
b3IgY29uc3QgY2hhciogdGhhdCBzaG91bGQgYmUgY29waWVkIGluc3RlYWQgb2YgcmV0YWluZWQu
CitjbGFzcyBUcmFjZVN0cmluZ1dpdGhDb3B5IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBUcmFj
ZVN0cmluZ1dpdGhDb3B5KGNvbnN0IGNoYXIqIHN0cikgOiBtX3N0cihzdHIpIHsgfQorICAgIG9w
ZXJhdG9yIGNvbnN0IGNoYXIqICgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyOyB9Citwcml2YXRlOgor
ICAgIGNvbnN0IGNoYXIqIG1fc3RyOworfTsKKworLy8gRGVmaW5lIHNldFRyYWNlVmFsdWUgZm9y
IGVhY2ggYWxsb3dlZCB0eXBlLiBJdCBzdG9yZXMgdGhlIHR5cGUgYW5kCisvLyB2YWx1ZSBpbiB0
aGUgcmV0dXJuIGFyZ3VtZW50cy4gVGhpcyBhbGxvd3MgdGhpcyBBUEkgdG8gYXZvaWQgZGVjbGFy
aW5nIGFueQorLy8gc3RydWN0dXJlcyBzbyB0aGF0IGl0IGlzIHBvcnRhYmxlIHRvIHRoaXJkX3Bh
cnR5IGxpYnJhcmllcy4KKyNkZWZpbmUgSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUUo
YWN0dWFsX3R5cGUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5pb25fbWVtYmVyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhbHVlX3R5cGVfaWQpIFwKKyAgICBzdGF0aWMgaW5saW5lIHZvaWQgc2V0VHJhY2VWYWx1ZShh
Y3R1YWxfdHlwZSBhcmcsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBjaGFyKiB0eXBlLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbG9uZyBsb25nKiB2YWx1ZSkgeyBcCisgICAgICAgIFRyYWNlVmFsdWVVbmlv
biB0eXBlVmFsdWU7IFwKKyAgICAgICAgdHlwZVZhbHVlLnVuaW9uX21lbWJlciA9IGFyZzsgXAor
ICAgICAgICAqdHlwZSA9IHZhbHVlX3R5cGVfaWQ7IFwKKyAgICAgICAgKnZhbHVlID0gdHlwZVZh
bHVlLm1fdWludDsgXAorICAgIH0KKy8vIFNpbXBsZXIgZm9ybSBmb3IgaW50IHR5cGVzIHRoYXQg
Y2FuIGJlIHNhZmVseSBjYXN0ZWQuCisjZGVmaW5lIElOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNF
X1ZBTFVFX0lOVChhY3R1YWxfdHlwZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFsdWVfdHlwZV9pZCkgXAorICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBz
ZXRUcmFjZVZhbHVlKGFjdHVhbF90eXBlIGFyZywgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIHR5cGUsIFwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcqIHZhbHVlKSB7IFwKKyAgICAgICAg
KnR5cGUgPSB2YWx1ZV90eXBlX2lkOyBcCisgICAgICAgICp2YWx1ZSA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkIGxvbmcgbG9uZz4oYXJnKTsgXAorICAgIH0KKworSU5URVJOQUxfREVDTEFSRV9TRVRf
VFJBQ0VfVkFMVUVfSU5UKHVuc2lnbmVkIGxvbmcgbG9uZywgVFJBQ0VfVkFMVUVfVFlQRV9VSU5U
KQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5UKHVuc2lnbmVkIGludCwgVFJB
Q0VfVkFMVUVfVFlQRV9VSU5UKQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5U
KHVuc2lnbmVkIHNob3J0LCBUUkFDRV9WQUxVRV9UWVBFX1VJTlQpCitJTlRFUk5BTF9ERUNMQVJF
X1NFVF9UUkFDRV9WQUxVRV9JTlQodW5zaWduZWQgY2hhciwgVFJBQ0VfVkFMVUVfVFlQRV9VSU5U
KQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5UKGxvbmcgbG9uZywgVFJBQ0Vf
VkFMVUVfVFlQRV9JTlQpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9JTlQoaW50
LCBUUkFDRV9WQUxVRV9UWVBFX0lOVCkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVF
X0lOVChzaG9ydCwgVFJBQ0VfVkFMVUVfVFlQRV9JTlQpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9U
UkFDRV9WQUxVRV9JTlQoc2lnbmVkIGNoYXIsIFRSQUNFX1ZBTFVFX1RZUEVfSU5UKQorSU5URVJO
QUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUUoYm9vbCwgbV9ib29sLCBUUkFDRV9WQUxVRV9UWVBF
X0JPT0wpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRShkb3VibGUsIG1fZG91Ymxl
LCBUUkFDRV9WQUxVRV9UWVBFX0RPVUJMRSkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZB
TFVFKGNvbnN0IHZvaWQqLCBtX3BvaW50ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUUkFDRV9WQUxVRV9UWVBFX1BPSU5URVIpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFD
RV9WQUxVRShjb25zdCBjaGFyKiwgbV9zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUUkFDRV9WQUxVRV9UWVBFX1NUUklORykKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RS
QUNFX1ZBTFVFKGNvbnN0IFRyYWNlU3RyaW5nV2l0aENvcHkmLCBtX3N0cmluZywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRSQUNFX1ZBTFVFX1RZUEVfQ09QWV9TVFJJTkcpCisK
KyN1bmRlZiBJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRQorI3VuZGVmIElOVEVSTkFM
X0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVAorCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0VHJh
Y2VWYWx1ZShjb25zdCBzdGQ6OnN0cmluZyYgYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgY2hhciogdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyogdmFsdWUpIHsKKyAgICBUcmFjZVZhbHVlVW5pb24g
dHlwZVZhbHVlOworICAgIHR5cGVWYWx1ZS5tX3N0cmluZyA9IGFyZy5kYXRhKCk7CisgICAgKnR5
cGUgPSBUUkFDRV9WQUxVRV9UWVBFX0NPUFlfU1RSSU5HOworICAgICp2YWx1ZSA9IHR5cGVWYWx1
ZS5tX3VpbnQ7Cit9CisKKy8vIFRoZXNlIGFkZFRyYWNlRXZlbnQgdGVtcGxhdGUgZnVuY3Rpb25z
IGFyZSBkZWZpbmVkIGhlcmUgaW5zdGVhZCBvZiBpbiB0aGUKKy8vIG1hY3JvLCBiZWNhdXNlIHRo
ZSBhcmcgdmFsdWVzIGNvdWxkIGJlIHRlbXBvcmFyeSBzdHJpbmcgb2JqZWN0cy4gSW4gb3JkZXIg
dG8KKy8vIHN0b3JlIHBvaW50ZXJzIHRvIHRoZSBpbnRlcm5hbCBjX3N0ciBhbmQgcGFzcyB0aHJv
dWdoIHRvIHRoZSB0cmFjaW5nIEFQSSwgdGhlCisvLyBhcmcgdmFsdWVzIG11c3QgbGl2ZSB0aHJv
dWdob3V0IHRoZXNlIHByb2NlZHVyZXMuCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBhZGRUcmFjZUV2
ZW50KGNoYXIgcGhhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGNhdGVnb3J5RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgbG9uZyBsb25nIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBjaGFyIGZsYWdzKSB7CisgICAgVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVO
VCgKKyAgICAgICAgcGhhc2UsIGNhdGVnb3J5RW5hYmxlZCwgbmFtZSwgaWQsCisgICAgICAgIHpl
cm9OdW1BcmdzLCAwLCAwLCAwLAorICAgICAgICBmbGFncyk7Cit9CisKK3RlbXBsYXRlPGNsYXNz
IEFSRzFfVFlQRT4KK3N0YXRpYyBpbmxpbmUgdm9pZCBhZGRUcmFjZUV2ZW50KGNoYXIgcGhhc2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNh
dGVnb3J5RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBs
b25nIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGZs
YWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhcmcxTmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQVJHMV9UWVBFJiBhcmcx
VmFsKSB7CisgICAgY29uc3QgaW50IG51bUFyZ3MgPSAxOworICAgIHVuc2lnbmVkIGNoYXIgYXJn
VHlwZXNbMV07CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGFyZ1ZhbHVlc1sxXTsKKyAgICBzZXRU
cmFjZVZhbHVlKGFyZzFWYWwsICZhcmdUeXBlc1swXSwgJmFyZ1ZhbHVlc1swXSk7CisgICAgVFJB
Q0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVCgKKyAgICAgICAgcGhhc2UsIGNhdGVnb3J5RW5h
YmxlZCwgbmFtZSwgaWQsCisgICAgICAgIG51bUFyZ3MsICZhcmcxTmFtZSwgYXJnVHlwZXMsIGFy
Z1ZhbHVlcywKKyAgICAgICAgZmxhZ3MpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBBUkcxX1RZUEUs
IGNsYXNzIEFSRzJfVFlQRT4KK3N0YXRpYyBpbmxpbmUgdm9pZCBhZGRUcmFjZUV2ZW50KGNoYXIg
cGhhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNo
YXIqIGNhdGVnb3J5RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bG9uZyBsb25nIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBj
aGFyIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBh
cmcxTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQVJHMV9UWVBF
JiBhcmcxVmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBh
cmcyTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQVJHMl9UWVBF
JiBhcmcyVmFsKSB7CisgICAgY29uc3QgaW50IG51bUFyZ3MgPSAyOworICAgIGNvbnN0IGNoYXIq
IGFyZ05hbWVzWzJdID0geyBhcmcxTmFtZSwgYXJnMk5hbWUgfTsKKyAgICB1bnNpZ25lZCBjaGFy
IGFyZ1R5cGVzWzJdOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBhcmdWYWx1ZXNbMl07CisgICAg
c2V0VHJhY2VWYWx1ZShhcmcxVmFsLCAmYXJnVHlwZXNbMF0sICZhcmdWYWx1ZXNbMF0pOworICAg
IHNldFRyYWNlVmFsdWUoYXJnMlZhbCwgJmFyZ1R5cGVzWzFdLCAmYXJnVmFsdWVzWzFdKTsKKyAg
ICByZXR1cm4gVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVCgKKyAgICAgICAgcGhhc2Us
IGNhdGVnb3J5RW5hYmxlZCwgbmFtZSwgaWQsCisgICAgICAgIG51bUFyZ3MsIGFyZ05hbWVzLCBh
cmdUeXBlcywgYXJnVmFsdWVzLAorICAgICAgICBmbGFncyk7Cit9CisKKy8vIFVzZWQgYnkgVFJB
Q0VfRVZFTlR4IG1hY3JvLiBEbyBub3QgdXNlIGRpcmVjdGx5LgorY2xhc3MgVHJhY2VFbmRPblNj
b3BlQ2xvc2UgeworcHVibGljOgorICAgIC8vIE5vdGU6IG1lbWJlcnMgb2YgbV9kYXRhIGludGVu
dGlvbmFsbHkgbGVmdCB1bmluaXRpYWxpemVkLiBTZWUgaW5pdGlhbGl6ZS4KKyAgICBUcmFjZUVu
ZE9uU2NvcGVDbG9zZSgpIDogbV9wZGF0YSgwKSB7IH0KKyAgICB+VHJhY2VFbmRPblNjb3BlQ2xv
c2UoKQorICAgIHsKKyAgICAgICAgaWYgKG1fcGRhdGEpCisgICAgICAgICAgICBhZGRFdmVudElm
RW5hYmxlZCgpOworICAgIH0KKworICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCB1bnNpZ25lZCBj
aGFyKiBjYXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5h
bWUpCisgICAgeworICAgICAgICBtX2RhdGEuY2F0ZWdvcnlFbmFibGVkID0gY2F0ZWdvcnlFbmFi
bGVkOworICAgICAgICBtX2RhdGEubmFtZSA9IG5hbWU7CisgICAgICAgIG1fcGRhdGEgPSAmbV9k
YXRhOworICAgIH0KKworcHJpdmF0ZToKKyAgICAvLyBBZGQgdGhlIGVuZCBldmVudCBpZiB0aGUg
Y2F0ZWdvcnkgaXMgc3RpbGwgZW5hYmxlZC4KKyAgICB2b2lkIGFkZEV2ZW50SWZFbmFibGVkKCkK
KyAgICB7CisgICAgICAgIC8vIE9ubHkgY2FsbGVkIHdoZW4gbV9wZGF0YSBpcyBub24tbnVsbC4K
KyAgICAgICAgaWYgKCptX3BkYXRhLT5jYXRlZ29yeUVuYWJsZWQpIHsKKyAgICAgICAgICAgIFRS
QUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQoCisgICAgICAgICAgICAgICAgVFJBQ0VfRVZF
TlRfUEhBU0VfRU5ELAorICAgICAgICAgICAgICAgIG1fcGRhdGEtPmNhdGVnb3J5RW5hYmxlZCwK
KyAgICAgICAgICAgICAgICBtX3BkYXRhLT5uYW1lLCBub0V2ZW50SWQsCisgICAgICAgICAgICAg
ICAgemVyb051bUFyZ3MsIDAsIDAsIDAsCisgICAgICAgICAgICAgICAgVFJBQ0VfRVZFTlRfRkxB
R19OT05FKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRoaXMgRGF0YSBzdHJ1Y3Qgd29y
a2Fyb3VuZCBpcyB0byBhdm9pZCBpbml0aWFsaXppbmcgYWxsIHRoZSBtZW1iZXJzCisgICAgLy8g
aW4gRGF0YSBkdXJpbmcgY29uc3RydWN0aW9uIG9mIHRoaXMgb2JqZWN0LCBzaW5jZSB0aGlzIG9i
amVjdCBpcyBhbHdheXMKKyAgICAvLyBjb25zdHJ1Y3RlZCwgZXZlbiB3aGVuIHRyYWNpbmcgaXMg
ZGlzYWJsZWQuIElmIHRoZSBtZW1iZXJzIG9mIERhdGEgd2VyZQorICAgIC8vIG1lbWJlcnMgb2Yg
dGhpcyBjbGFzcyBpbnN0ZWFkLCBjb21waWxlciB3YXJuaW5ncyBvY2N1ciBhYm91dCBwb3RlbnRp
YWwKKyAgICAvLyB1bmluaXRpYWxpemVkIGFjY2Vzc2VzLgorICAgIHN0cnVjdCBEYXRhIHsKKyAg
ICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkOworICAgICAgICBjb25z
dCBjaGFyKiBuYW1lOworICAgIH07CisgICAgRGF0YSogbV9wZGF0YTsKKyAgICBEYXRhIG1fZGF0
YTsKK307CisKKy8vIFRyYWNlRXZlbnRTYW1wbGluZ1N0YXRlU2NvcGUgcmVjb3JkcyB0aGUgY3Vy
cmVudCBzYW1wbGluZyBzdGF0ZQorLy8gYW5kIHNldHMgYSBuZXcgc2FtcGxpbmcgc3RhdGUuIFdo
ZW4gdGhlIHNjb3BlIGV4aXN0cywgaXQgcmVzdG9yZXMKKy8vIHRoZSBzYW1wbGluZyBzdGF0ZSBo
YXZpbmcgcmVjb3JkZWQuCit0ZW1wbGF0ZTxzaXplX3QgQnVja2V0TnVtYmVyPgorY2xhc3MgU2Ft
cGxpbmdTdGF0ZVNjb3BlIHsKK3B1YmxpYzoKKyAgICBTYW1wbGluZ1N0YXRlU2NvcGUoY29uc3Qg
Y2hhciogY2F0ZWdvcnlBbmROYW1lKQorICAgIHsKKyAgICAgICAgbV9wcmV2aW91c1N0YXRlID0g
U2FtcGxpbmdTdGF0ZVNjb3BlPEJ1Y2tldE51bWJlcj46OmN1cnJlbnQoKTsKKyAgICAgICAgU2Ft
cGxpbmdTdGF0ZVNjb3BlPEJ1Y2tldE51bWJlcj46OnNldChjYXRlZ29yeUFuZE5hbWUpOworICAg
IH0KKworICAgIH5TYW1wbGluZ1N0YXRlU2NvcGUoKQorICAgIHsKKyAgICAgICAgU2FtcGxpbmdT
dGF0ZVNjb3BlPEJ1Y2tldE51bWJlcj46OnNldChtX3ByZXZpb3VzU3RhdGUpOworICAgIH0KKwor
ICAgIC8vIEZJWE1FOiBNYWtlIGxvYWQvc3RvcmUgdG8gdHJhY2VTYW1wbGluZ1N0YXRlW10gdGhy
ZWFkLXNhZmUgYW5kIGF0b21pYy4KKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqIGN1cnJl
bnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KCpnbDo6dHJhY2VTYW1wbGluZ1N0YXRlW0J1Y2tldE51bWJlcl0pOworICAgIH0KKyAgICBzdGF0
aWMgaW5saW5lIHZvaWQgc2V0KGNvbnN0IGNoYXIqIGNhdGVnb3J5QW5kTmFtZSkKKyAgICB7Cisg
ICAgICAgICpnbDo6dHJhY2VTYW1wbGluZ1N0YXRlW0J1Y2tldE51bWJlcl0gPSByZWludGVycHJl
dF9jYXN0PGxvbmc+KGNvbnN0X2Nhc3Q8Y2hhcio+KGNhdGVnb3J5QW5kTmFtZSkpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBjb25zdCBjaGFyKiBtX3ByZXZpb3VzU3RhdGU7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBUcmFjZUV2ZW50CisKK30gLy8gbmFtZXNwYWNlIGdsCisKKyNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMTEtMTkgIFJvZ2VyIEZvbmcg
IDxyb2dlcl9mb25nQGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGUgQU5HTEUgc291cmNlcy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDYxNS4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyBj
b3ZlcmVkIGJ5IEtocm9ub3MgV2ViR0wgY29uZm9ybWFuY2UgdGVzdHMuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHA6IFJlc29sdmUgYSBidWlsZCBl
cnJvciB0aGF0IHJlc3VsdGVkIGZyb20gdXBkYXRpbmcgQU5HTEUuCisgICAgICAgIChXZWJDb3Jl
OjpnZXRTeW1ib2xJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFV2ViS2l0QnJpZGdlOjpj
b21waWxlU2hhZGVyU291cmNlKToKKwogMjAxMy0xMS0xOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9A
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBXYXRjaHBvaW50U2V0Ojpub3RpZnlXcml0ZSgp
IHNob3VsZCBiZSByZW5hbWVkIHRvIFdhdGNocG9pbnRTZXQ6OmZpcmVBbGwoKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJp
ZGdlLmNwcAkocmV2aXNpb24gMTU5NTMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCwxNCArODAs
MTYgQEAgc3RhdGljIGJvb2wgZ2V0U3ltYm9sSW5mbyhTaEhhbmRsZSBjb21waQogICAgIGZvciAo
QU5HTEVHZXRJbmZvVHlwZSBpID0gMDsgaSA8IG51bVN5bWJvbHM7ICsraSkgewogICAgICAgICBB
TkdMRVNoYWRlclN5bWJvbCBzeW1ib2w7CiAgICAgICAgIEFOR0xFR2V0SW5mb1R5cGUgbmFtZUxl
bmd0aCA9IDA7CisgICAgICAgIFNoUHJlY2lzaW9uVHlwZSBwcmVjaXNpb247CisgICAgICAgIGlu
dCBzdGF0aWNVc2U7CiAgICAgICAgIHN3aXRjaCAoc3ltYm9sVHlwZSkgewogICAgICAgICBjYXNl
IFNIX0FDVElWRV9BVFRSSUJVVEVTOgogICAgICAgICAgICAgc3ltYm9sLnN5bWJvbFR5cGUgPSBT
SEFERVJfU1lNQk9MX1RZUEVfQVRUUklCVVRFOwotICAgICAgICAgICAgU2hHZXRBY3RpdmVBdHRy
aWIoY29tcGlsZXIsIGksICZuYW1lTGVuZ3RoLCAmc3ltYm9sLnNpemUsICZzeW1ib2wuZGF0YVR5
cGUsIG5hbWVCdWZmZXIuZGF0YSgpLCBtYXBwZWROYW1lQnVmZmVyLmRhdGEoKSk7CisgICAgICAg
ICAgICBTaEdldFZhcmlhYmxlSW5mbyhjb21waWxlciwgc3ltYm9sVHlwZSwgaSwgJm5hbWVMZW5n
dGgsICZzeW1ib2wuc2l6ZSwgJnN5bWJvbC5kYXRhVHlwZSwgJnByZWNpc2lvbiwgJnN0YXRpY1Vz
ZSwgbmFtZUJ1ZmZlci5kYXRhKCksIG1hcHBlZE5hbWVCdWZmZXIuZGF0YSgpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNIX0FDVElWRV9VTklGT1JNUzoKICAgICAgICAgICAg
IHN5bWJvbC5zeW1ib2xUeXBlID0gU0hBREVSX1NZTUJPTF9UWVBFX1VOSUZPUk07Ci0gICAgICAg
ICAgICBTaEdldEFjdGl2ZVVuaWZvcm0oY29tcGlsZXIsIGksICZuYW1lTGVuZ3RoLCAmc3ltYm9s
LnNpemUsICZzeW1ib2wuZGF0YVR5cGUsIG5hbWVCdWZmZXIuZGF0YSgpLCBtYXBwZWROYW1lQnVm
ZmVyLmRhdGEoKSk7CisgICAgICAgICAgICBTaEdldFZhcmlhYmxlSW5mbyhjb21waWxlciwgc3lt
Ym9sVHlwZSwgaSwgJm5hbWVMZW5ndGgsICZzeW1ib2wuc2l6ZSwgJnN5bWJvbC5kYXRhVHlwZSwg
JnByZWNpc2lvbiwgJnN0YXRpY1VzZSwgbmFtZUJ1ZmZlci5kYXRhKCksIG1hcHBlZE5hbWVCdWZm
ZXIuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xOTEsNyArMTkzLDcgQEAgYm9vbCBBTkdM
RVdlYktpdEJyaWRnZTo6Y29tcGlsZVNoYWRlclNvdQogCiAgICAgY29uc3QgY2hhciogY29uc3Qg
c2hhZGVyU291cmNlU3RyaW5nc1tdID0geyBzaGFkZXJTb3VyY2UgfTsKIAotICAgIGJvb2wgdmFs
aWRhdGVTdWNjZXNzID0gU2hDb21waWxlKGNvbXBpbGVyLCBzaGFkZXJTb3VyY2VTdHJpbmdzLCAx
LCBTSF9PQkpFQ1RfQ09ERSB8IFNIX0FUVFJJQlVURVNfVU5JRk9STVMgfCBleHRyYUNvbXBpbGVP
cHRpb25zKTsKKyAgICBib29sIHZhbGlkYXRlU3VjY2VzcyA9IFNoQ29tcGlsZShjb21waWxlciwg
c2hhZGVyU291cmNlU3RyaW5ncywgMSwgU0hfT0JKRUNUX0NPREUgfCBTSF9WQVJJQUJMRVMgfCBl
eHRyYUNvbXBpbGVPcHRpb25zKTsKICAgICBpZiAoIXZhbGlkYXRlU3VjY2VzcykgewogICAgICAg
ICBpbnQgbG9nU2l6ZSA9IGdldFZhbGlkYXRpb25SZXN1bHRWYWx1ZShjb21waWxlciwgU0hfSU5G
T19MT0dfTEVOR1RIKTsKICAgICAgICAgaWYgKGxvZ1NpemUgPiAxKSB7Cg==
</data>
<flag name="review"
          id="240475"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>