<?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>219452</bug_id>
          
          <creation_ts>2020-12-02 13:17:22 -0800</creation_ts>
          <short_desc>Serialize NFA to disk before converting it to a DFA when compiling a WKContentRuleList</short_desc>
          <delta_ts>2020-12-03 16:02:19 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>annulen</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1711440</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-12-02 13:17:22 -0800</bug_when>
    <thetext>Serialize NFA to disk before converting it to a DFA when compiling a WKContentRuleList</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711445</commentid>
    <comment_count>1</comment_count>
      <attachid>415249</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-12-02 13:22:19 -0800</bug_when>
    <thetext>Created attachment 415249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711446</commentid>
    <comment_count>2</comment_count>
      <attachid>415249</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-12-02 13:27:46 -0800</bug_when>
    <thetext>Comment on attachment 415249
Patch

EWS looks angry</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711452</commentid>
    <comment_count>3</comment_count>
      <attachid>415251</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-12-02 13:49:11 -0800</bug_when>
    <thetext>Created attachment 415251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711845</commentid>
    <comment_count>4</comment_count>
      <attachid>415251</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-12-03 14:56:48 -0800</bug_when>
    <thetext>Comment on attachment 415251
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711879</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-03 16:01:51 -0800</bug_when>
    <thetext>Committed r270414: &lt;https://trac.webkit.org/changeset/270414&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 415251.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711880</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-03 16:02:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/71956516&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415249</attachid>
            <date>2020-12-02 13:22:19 -0800</date>
            <delta_ts>2020-12-02 13:49:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219452-20201202132218.patch</filename>
            <type>text/plain</type>
            <size>56660</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTg2NmY3ODkzZWY2Njhh
Y2ZhOWQ1M2Q1YmEzMGE2ZjMxOGFlMDM3Ny4uZTgyODQ3MzBiODIzOWIxNTgwOGQ3N2E1ODQ0OTky
OTBiN2Y5NjQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDIwLTEyLTAyICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2VyaWFs
aXplIE5GQSB0byBkaXNrIGJlZm9yZSBjb252ZXJ0aW5nIGl0IHRvIGEgREZBIHdoZW4gY29tcGls
aW5nIGEgV0tDb250ZW50UnVsZUxpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxOTQ1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgZGVjcmVhc2VzIG1heGltdW0gbWVtb3J5IHVzZSBieSBhYm91
dCA1MCUgYmVjYXVzZSB0aGUgTkZBIGFuZCBERkEgbmV2ZXIgbmVlZCB0byBiZSBpbiBtZW1vcnkg
YXQgdGhlIHNhbWUgdGltZS4KKyAgICAgICAgSSdsbCBoYXZlIHRvIGRvIHNvbWUgdHVuaW5nIGFu
ZCBvbi1kZXZpY2UgbWVhc3VyZW1lbnQsIGJ1dCB0aGlzIG1heSBhbGxvdyB1cyB0byBpbmNyZWFz
ZSBtYXhSdWxlQ291bnQuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbWJpbmVkVVJMRmlsdGVyczo6cHJv
Y2Vzc05GQXMpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVy
cy5oOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Y29tcGlsZVRvQnl0
ZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmNvbXBpbGVSdWxl
TGlzdCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpjb250ZW50RXh0ZW5z
aW9uRXJyb3JDYXRlZ29yeSk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvbkVycm9yLmg6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVu
c2lvbnNEZWJ1Z2dpbmcuaDoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQTo6c2hyaW5rVG9GaXQpOiBE
ZWxldGVkLgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQS5oOgorICAgICAgICAqIGNv
bnRlbnRleHRlbnNpb25zL0ltbXV0YWJsZU5GQS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OkltbXV0YWJsZU5GQTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OkltbXV0YWJsZU5GQTo6Q29uc3RUYXJnZXRJdGVyYXRvcjo6b3BlcmF0
b3IqIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpJbW11dGFibGVORkE6OkNvbnN0VGFyZ2V0SXRlcmF0b3I6Om9wZXJhdG9yLT4gY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkltbXV0YWJsZU5G
QTo6Q29uc3RUYXJnZXRJdGVyYXRvcjo6b3BlcmF0b3I9PSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6SW1tdXRhYmxlTkZBOjpDb25zdFRhcmdl
dEl0ZXJhdG9yOjpvcGVyYXRvciE9IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpJbW11dGFibGVORkE6OkNvbnN0VGFyZ2V0SXRlcmF0b3I6Om9w
ZXJhdG9yKyspOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OkltbXV0YWJsZU5GQTo6SXRlcmFibGVDb25zdFRhcmdldHM6OmJlZ2luIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpJbW11dGFibGVORkE6Okl0
ZXJhYmxlQ29uc3RUYXJnZXRzOjplbmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEV4dGVuc2lvbnM6OkltbXV0YWJsZU5GQTo6Q29uc3RSYW5nZUl0ZXJhdG9yOjpv
cGVyYXRvcj09IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpJbW11dGFibGVORkE6OkNvbnN0UmFuZ2VJdGVyYXRvcjo6b3BlcmF0b3IhPSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6SW1tdXRh
YmxlTkZBOjpDb25zdFJhbmdlSXRlcmF0b3I6Om9wZXJhdG9yKyspOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkltbXV0YWJsZU5GQTo6Q29uc3RSYW5nZUl0
ZXJhdG9yOjpmaXJzdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RXh0ZW5zaW9uczo6SW1tdXRhYmxlTkZBOjpDb25zdFJhbmdlSXRlcmF0b3I6Omxhc3QgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkltbXV0YWJs
ZU5GQTo6Q29uc3RSYW5nZUl0ZXJhdG9yOjpkYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpJbW11dGFibGVORkE6OkNvbnN0UmFuZ2VJdGVy
YXRvcjo6cmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OkltbXV0YWJsZU5GQTo6SXRlcmFibGVDb25zdFJhbmdlOjpiZWdpbiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6SW1tdXRhYmxl
TkZBOjpJdGVyYWJsZUNvbnN0UmFuZ2U6OmVuZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6SW1tdXRhYmxlTkZBOjpJdGVyYWJsZUNvbnN0UmFu
Z2U6OmRlYnVnUHJpbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OkltbXV0YWJsZU5GQTo6dHJhbnNpdGlvbnNGb3JOb2RlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpJbW11dGFibGVORkE6
OnJvb3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OkltbXV0YWJsZU5GQTo6ZmluYWxpemUpOiBEZWxldGVkLgorICAgICAgICAqIGNvbnRlbnRl
eHRlbnNpb25zL0ltbXV0YWJsZU5GQU5vZGVCdWlsZGVyLmg6CisgICAgICAgICogY29udGVudGV4
dGVuc2lvbnMvTkZBVG9ERkEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OmVwc2lsb25DbG9zdXJlRXhjbHVkaW5nU2VsZik6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6cmVzb2x2ZUVwc2lsb25DbG9zdXJlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6Tm9kZUlkU2V0VG9VbmlxdWVOb2RlSWRTZXRTb3VyY2U6Ok5v
ZGVJZFNldFRvVW5pcXVlTm9kZUlkU2V0U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRFeHRlbnNpb25zOjpOb2RlSWRTZXRUb1VuaXF1ZU5vZGVJZFNldFRyYW5zbGF0b3I6OnRyYW5z
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Y3JlYXRlQ29tYmlu
ZWRUcmFuc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpnZXRP
ckNyZWF0ZURGQU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Ok5G
QVRvREZBOjpjb252ZXJ0KToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5o
OgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjp3cml0ZUFsbFRvRmlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6U2VyaWFsaXplZE5GQTo6c2VyaWFs
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpTZXJpYWxpemVkTkZB
OjpTZXJpYWxpemVkTkZBKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpT
ZXJpYWxpemVkTkZBOjpwb2ludGVyQXRPZmZzZXRJbkZpbGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRORkE6Om5vZGVzIGNvbnN0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpTZXJpYWxpemVkTkZBOjp0
cmFuc2l0aW9ucyBjb25zdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5z
aW9uczo6U2VyaWFsaXplZE5GQTo6dGFyZ2V0cyBjb25zdCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6U2VyaWFsaXplZE5GQTo6ZXBzaWxvblRyYW5zaXRpb25z
VGFyZ2V0cyBjb25zdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6U2VyaWFsaXplZE5GQTo6YWN0aW9ucyBjb25zdCBjb25zdCk6CisgICAgICAgICogY29udGVu
dGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9JbW11dGFibGVORkEuaC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRFeHRlbnNpb25zOjpTZXJpYWxpemVkTkZBOjpSYW5nZTo6UmFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRORkE6OlJhbmdlOjpiZWdpbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6U2VyaWFsaXplZE5GQTo6
UmFuZ2U6OmVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
U2VyaWFsaXplZE5GQTo6UmFuZ2U6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRORkE6OlJhbmdlOjpvcGVyYXRvcltdIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpTZXJpYWxpemVkTkZBOjpyb290
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpTZXJpYWxpemVk
TkZBOjpDb25zdFRhcmdldEl0ZXJhdG9yOjpvcGVyYXRvciogY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRORkE6OkNvbnN0VGFyZ2V0SXRlcmF0
b3I6Om9wZXJhdG9yLT4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OlNlcmlhbGl6ZWRORkE6OkNvbnN0VGFyZ2V0SXRlcmF0b3I6Om9wZXJhdG9yPT0gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRORkE6OkNv
bnN0VGFyZ2V0SXRlcmF0b3I6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRORkE6OkNvbnN0VGFyZ2V0SXRlcmF0b3I6Om9w
ZXJhdG9yKyspOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6
ZWRORkE6Okl0ZXJhYmxlQ29uc3RUYXJnZXRzOjpiZWdpbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6U2VyaWFsaXplZE5GQTo6SXRlcmFibGVDb25zdFRhcmdl
dHM6OmVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6U2Vy
aWFsaXplZE5GQTo6Q29uc3RSYW5nZUl0ZXJhdG9yOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpTZXJpYWxpemVkTkZBOjpDb25zdFJhbmdl
SXRlcmF0b3I6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OlNlcmlhbGl6ZWRORkE6OkNvbnN0UmFuZ2VJdGVyYXRvcjo6b3BlcmF0b3IrKyk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6U2VyaWFsaXplZE5GQTo6Q29u
c3RSYW5nZUl0ZXJhdG9yOjpmaXJzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RXh0ZW5zaW9uczo6U2VyaWFsaXplZE5GQTo6Q29uc3RSYW5nZUl0ZXJhdG9yOjpsYXN0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpTZXJpYWxpemVkTkZBOjpD
b25zdFJhbmdlSXRlcmF0b3I6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRORkE6OkNvbnN0UmFuZ2VJdGVyYXRvcjo6cmFuZ2UgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRORkE6
Okl0ZXJhYmxlQ29uc3RSYW5nZTo6YmVnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRORkE6Okl0ZXJhYmxlQ29uc3RSYW5nZTo6ZW5kIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpTZXJpYWxpemVkTkZB
OjpJdGVyYWJsZUNvbnN0UmFuZ2U6OmRlYnVnUHJpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRORkE6OnRyYW5zaXRpb25zRm9yTm9kZSBj
b25zdCk6CisKIDIwMjAtMTEtMzAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgog
CiAgICAgICAgIE1pc3NpbmcgV2ViUlRDIE1ldHJpY3MgaW4gaU9TIDE0IEJldGEgNQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBmMjA3NDcwNTMwOWVlNmU0MjRkMWNlMTEzODVhZjg2NTFmMWI3ZDViLi5jZDBlOWIyZjg4
Yzk1NjJiMDJhYWZiYmE4ZDQ2MjVlZGJmOGY1MzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDIwLTEyLTAyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgU2VyaWFsaXplIE5GQSB0byBkaXNrIGJlZm9yZSBjb252ZXJ0aW5nIGl0IHRv
IGEgREZBIHdoZW4gY29tcGlsaW5nIGEgV0tDb250ZW50UnVsZUxpc3QKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQ1MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRSdWxlTGlzdFN0
b3JlIF9jb21waWxlQ29udGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjplbmNvZGVkQ29udGVudFJ1
bGVMaXN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZVByaXZhdGUuaDoKKyAgICAgICAgUmVtb3ZlIE5TX1JF
TEVBU0VTX0FSR1VNRU5UIGJlY2F1c2UgaXQgd2FzIGluY29ycmVjdCBhbmQgdW5uZWNlc3Nhcnkg
YmVjYXVzZSB0aGUgV1RGOjpTdHJpbmcgaXMgY29waWVkIHRvIGEgYmFja2dyb3VuZCB0aHJlYWQu
CisKIDIwMjAtMTEtMzAgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbW92ZSB0aHJvdHRsaW5nIGNvZGUgZnJvbSBOZXR3b3JrTG9hZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKaW5kZXggMzc4OWFhMzgzOTQwZDI1NzQxMjRiYzJmZjQzZTdlZWM0YWU5NTBkNS4uN2ViYTAz
MTQxYzE3ODIzMDcyMjFkMjY5NDg2Y2M0YTQwMWVkZWQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC0zMjAsNiArMzIwLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIGNvbnRlbnRleHRlbnNpb25zL05GQS5oCiAgICAgY29udGVudGV4dGVuc2lvbnMvTkZBTm9k
ZS5oCiAgICAgY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuaAorICAgIGNvbnRlbnRleHRlbnNp
b25zL1NlcmlhbGl6ZWRORkEuaAogICAgIGNvbnRlbnRleHRlbnNpb25zL1Rlcm0uaAogICAgIGNv
bnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5oCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNDIw
MjYyMGViMWYwZTE0MTdjY2NlOTllNTgyMDAxYTg5YTczYTc2ZS4uNjUzYjhlMzdhNDY1ZjM1YjYw
MjJjYTUwZTk1MTBmOTMyZTJiYjg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTY2NCw2ICs2NjQsNyBA
QCBjb250ZW50ZXh0ZW5zaW9ucy9ERkFNaW5pbWl6ZXIuY3BwCiBjb250ZW50ZXh0ZW5zaW9ucy9E
RkFOb2RlLmNwcAogY29udGVudGV4dGVuc2lvbnMvTkZBLmNwcAogY29udGVudGV4dGVuc2lvbnMv
TkZBVG9ERkEuY3BwCitjb250ZW50ZXh0ZW5zaW9ucy9TZXJpYWxpemVkTkZBLmNwcAogY29udGVu
dGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcAogY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5j
cHAKIGNyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzODQ1MzljNGQ0ODEz
ZTVlNjg4NzI0MTgxMWJiNTQ5NzAwNDFiODE1Li5iOTVjOGJkMzVlZTFmNDdjODJiMDIyMDA1MmIx
M2UxZmRiN2NmNjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC05NDAwLDYgKzk0MDAsOCBAQAogCQk1QjMwNjk1QzE4QjNEMzQ1
MDA5OUQ1RTggLyogV2ViR0xEcmF3QnVmZmVycy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
V2ViR0xEcmF3QnVmZmVycy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMDAx
NTIxMjUwMDExMDAwMDk0QUE5MyAvKiBUZXh0Q29kZWNTaW5nbGVCeXRlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRDb2RlY1NpbmdsZUJ5dGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzAwMTUyMzI1MDAxMTAxMDA5NEFBOTMgLyogVGV4
dENvZGVjU2luZ2xlQnl0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0
Q29kZWNTaW5nbGVCeXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMkVCRTAx
MjU3NzE5ODkwMEQ1NUIwNSAvKiBTZXJpYWxpemVkTkZBLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNlcmlhbGl6ZWRORkEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNUMyRUJFMDMyNTc3MUE0QzAwRDU1QjA1IC8qIFNlcmlhbGl6ZWRORkEuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VyaWFsaXplZE5GQS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMzkzMDVEMUFBMEY2QTkwMDI5QzgxNiAvKiBERkFCeXRl
Y29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBERkFCeXRlY29kZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzM5MzA1RTFBQTBGNkE5MDAyOUM4MTYgLyog
REZBQnl0ZWNvZGVDb21waWxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBERkFCeXRlY29kZUNvbXBpbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUMzOTMwNUYxQUEwRjZBOTAwMjlDODE2IC8qIERGQUJ5dGVjb2RlQ29tcGlsZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gREZBQnl0ZWNvZGVDb21waWxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg4ODgsNiArMTg4OTAsOCBAQAogCQkJCTI2OTM5
NzIwMUE0QTQxMkYwMEU4MzQ5RCAvKiBORkFOb2RlLmggKi8sCiAJCQkJMjY3NzI1RkExQTVCM0FE
OTAwM0MyNEREIC8qIE5GQVRvREZBLmNwcCAqLywKIAkJCQkyNjc3MjVGQjFBNUIzQUQ5MDAzQzI0
REQgLyogTkZBVG9ERkEuaCAqLywKKwkJCQk1QzJFQkUwMzI1NzcxQTRDMDBENTVCMDUgLyogU2Vy
aWFsaXplZE5GQS5jcHAgKi8sCisJCQkJNUMyRUJFMDEyNTc3MTk4OTAwRDU1QjA1IC8qIFNlcmlh
bGl6ZWRORkEuaCAqLywKIAkJCQkyNkU5NDREQzFBQzRCNEVBMDA3Qjg1QjUgLyogVGVybS5oICov
LAogCQkJCTI2NzcyNjAyMUE1REY2RjIwMDNDMjRERCAvKiBVUkxGaWx0ZXJQYXJzZXIuY3BwICov
LAogCQkJCTI2NzcyNjAzMUE1REY2RjIwMDNDMjRERCAvKiBVUkxGaWx0ZXJQYXJzZXIuaCAqLywK
QEAgLTMxMjI0LDYgKzMxMjI4LDcgQEAKIAkJCQkwNzlEMDg2QjE2MkYyMUY5MDBEQjg2NTggLyog
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3Qjcx
MTZEMUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwN0I3MTE2RjFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUU0RjBCRTMxMjU3MTJGNkUwMDlFNzQzMSAvKiBDYXJldFJlY3RDb21w
dXRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDNzM0MTUxOTc3ODk2RDAwNDZCRkM1IC8q
IENBUmluZ0J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBQkFCRjUyMzY4QzZFRjAwRkE0
MzQ1IC8qIENhc2NhZGVMZXZlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTczMDNCQkIyMDA2QzZF
RTAwMzU1OTY1IC8qIENCT1JCaW5hcnkuaCBpbiBIZWFkZXJzICovLApAQCAtMzUxMjEsNyArMzUx
MjYsNiBAQAogCQkJCUEwRUUwREY4MTQ0RjgyNTUwMEY4MEIwRCAvKiBXZWJHTERlYnVnU2hhZGVy
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkUzRkFFOEYxNDczM0ZEQjAwRTQyMzA3IC8qIFdlYkdM
RGVwdGhUZXh0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QjMwNjk1RTE4QjNEMzQ1MDA5OUQ1
RTggLyogV2ViR0xEcmF3QnVmZmVycy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTRGMEJFMzEyNTcx
MkY2RTAwOUU3NDMxIC8qIENhcmV0UmVjdENvbXB1dGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk2RUJGMEU1NTEyQTg5Mjk4MDBEQjE3MDkgLyogV2ViR0xFeHRlbnNpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ5QzdCOUNGMTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTEZyYW1lYnVmZmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0OUZGQkYzRjExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXll
ci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcAppbmRleCBlODdhODU0NGRkNjcwNTk3MTVh
OWEyZjA1ZmY3NWYwMGQzMzk1NGUyLi4xMDE3Yzc4ZmFiNjViMmVmYzdlMmJjMzE4NjU5ZGU1MjE0
MWM5MDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21i
aW5lZFVSTEZpbHRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbWJpbmVkVVJMRmlsdGVycy5jcHAKQEAgLTQ0NCw3ICs0NDQsNyBAQCBzdGF0aWMgdm9pZCBn
ZW5lcmF0ZU5GQUZvclN1YnRyZWUoTkZBJiBuZmEsIEltbXV0YWJsZUNoYXJORkFOb2RlQnVpbGRl
ciYmIHN1YnRyZQogICAgIGNsZWFyUmV2ZXJzZVN1ZmZpeFRyZWUocmV2ZXJzZVN1ZmZpeFRyZWVS
b290cyk7CiB9CiAKLXZvaWQgQ29tYmluZWRVUkxGaWx0ZXJzOjpwcm9jZXNzTkZBcyhzaXplX3Qg
bWF4TkZBU2l6ZSwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKE5GQSYmKT4mIGhhbmRsZXIpCiti
b29sIENvbWJpbmVkVVJMRmlsdGVyczo6cHJvY2Vzc05GQXMoc2l6ZV90IG1heE5GQVNpemUsIEZ1
bmN0aW9uPGJvb2woTkZBJiYpPiYmIGhhbmRsZXIpCiB7CiAjaWYgQ09OVEVOVF9FWFRFTlNJT05T
X1NUQVRFX01BQ0hJTkVfREVCVUdHSU5HCiAgICAgcHJpbnQoKTsKQEAgLTQ4Nyw5ICs0ODcsOSBA
QCB2b2lkIENvbWJpbmVkVVJMRmlsdGVyczo6cHJvY2Vzc05GQXMoc2l6ZV90IG1heE5GQVNpemUs
IGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZAogICAgICAgICAgICAgQVNTRVJUKHN0YWNrLmxhc3Qo
KSk7CiAgICAgICAgICAgICBnZW5lcmF0ZU5GQUZvclN1YnRyZWUobmZhLCBXVEZNb3ZlKGxhc3RO
b2RlKSwgKnN0YWNrLmxhc3QoKSwgbV9hY3Rpb25zLCBtYXhORkFTaXplKTsKICAgICAgICAgfQot
ICAgICAgICBuZmEuZmluYWxpemUoKTsKIAotICAgICAgICBoYW5kbGVyKFdURk1vdmUobmZhKSk7
CisgICAgICAgIGlmICghaGFuZGxlcihXVEZNb3ZlKG5mYSkpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgICAgIC8vIENsZWFuIHVwIGFueSBwcm9jZXNzZWQgbGVhZiBub2Rlcy4K
ICAgICAgICAgd2hpbGUgKHRydWUpIHsKQEAgLTUwMyw2ICs1MDMsNyBAQCB2b2lkIENvbWJpbmVk
VVJMRmlsdGVyczo6cHJvY2Vzc05GQXMoc2l6ZV90IG1heE5GQVNpemUsIGNvbnN0IFdURjo6RnVu
Y3Rpb248dm9pZAogICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBMZWF2ZSB0aGUgZW1wdHkgcm9v
dC4KICAgICAgICAgfQogICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgQ29udGVudEV4dGVuc2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmgKaW5kZXggOGNhYzkwNWFhOTJiNzU5NDk1NzQy
MDc4NDJkY2I0ZWM0M2Q1NzFiMS4uNWNhNTIwNGNiZjM3MGU1NDFhYjRmNDk4Yjc0ODU1MWVmMjJm
N2IyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tYmlu
ZWRVUkxGaWx0ZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29t
YmluZWRVUkxGaWx0ZXJzLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRk
UGF0dGVybih1aW50NjRfdCBhY3Rpb25JZCwgY29uc3QgVmVjdG9yPFRlcm0+JiBwYXR0ZXJuKTsK
ICAgICB2b2lkIGFkZERvbWFpbih1aW50NjRfdCBhY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBkb21h
aW4pOwogCi0gICAgdm9pZCBwcm9jZXNzTkZBcyhzaXplX3QgbWF4TkZBU2l6ZSwgY29uc3QgV1RG
OjpGdW5jdGlvbjx2b2lkKE5GQSYmKT4mIGhhbmRsZXIpOworICAgIGJvb2wgcHJvY2Vzc05GQXMo
c2l6ZV90IG1heE5GQVNpemUsIEZ1bmN0aW9uPGJvb2woTkZBJiYpPiYmKTsKICAgICBib29sIGlz
RW1wdHkoKSBjb25zdDsKIAogI2lmIENPTlRFTlRfRVhURU5TSU9OU19QRVJGT1JNQU5DRV9SRVBP
UlRJTkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25Db21waWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCmluZGV4IDI4YTcyNThmYjg3OWNiZmMxMGFj
YjhmOGMyMGQzNzI1M2Y5NWE0NGYuLjM0MGU4M2IwMzYyOGRlMmE5ZWY5NTg4MzEzNjRlM2M4MTdi
N2FjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25Db21waWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIHN0
YXRpYyB2b2lkIGFkZFVuaXZlcnNhbEFjdGlvbnNUb0RGQShERkEmIGRmYSwgVW5pdmVyc2FsQWN0
aW9uU2V0JiYgdW5pdmVyc2FsQWN0CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci1z
dGF0aWMgdm9pZCBjb21waWxlVG9CeXRlY29kZShDb21iaW5lZFVSTEZpbHRlcnMmJiBmaWx0ZXJz
LCBVbml2ZXJzYWxBY3Rpb25TZXQmJiB1bml2ZXJzYWxBY3Rpb25zLCBGdW5jdG9yIHdyaXRlQnl0
ZWNvZGVUb0NsaWVudCkKK3N0YXRpYyBib29sIGNvbXBpbGVUb0J5dGVjb2RlKENvbWJpbmVkVVJM
RmlsdGVycyYmIGZpbHRlcnMsIFVuaXZlcnNhbEFjdGlvblNldCYmIHVuaXZlcnNhbEFjdGlvbnMs
IEZ1bmN0b3Igd3JpdGVCeXRlY29kZVRvQ2xpZW50KQogewogICAgIC8vIFNtYWxsZXIgbWF4TkZB
U2l6ZXMgcmlzayBoaWdoIGNvbXBpbGluZyBhbmQgaW50ZXJwcmV0aW5nIHRpbWVzIGZyb20gaGF2
aW5nIHRvbyBtYW55IERGQXMsCiAgICAgLy8gbGFyZ2VyIG1heE5GQVNpemVzIHVzZSB0b28gbXVj
aCBtZW1vcnkgd2hlbiBjb21waWxpbmcuCkBAIC0yNDMsMjIgKzI0MywyNyBAQCBzdGF0aWMgdm9p
ZCBjb21waWxlVG9CeXRlY29kZShDb21iaW5lZFVSTEZpbHRlcnMmJiBmaWx0ZXJzLCBVbml2ZXJz
YWxBY3Rpb25TZXQmJgogCiAgICAgY29uc3QgdW5zaWduZWQgc21hbGxERkFTaXplID0gMTAwOwog
ICAgIERGQUNvbWJpbmVyIHNtYWxsREZBQ29tYmluZXI7Ci0gICAgZmlsdGVycy5wcm9jZXNzTkZB
cyhtYXhORkFTaXplLCBbJl0oTkZBJiYgbmZhKSB7CisgICAgYm9vbCBwcm9jZXNzZWRTdWNjZXNz
ZnVsbHkgPSBmaWx0ZXJzLnByb2Nlc3NORkFzKG1heE5GQVNpemUsIFsmXShORkEmJiBuZmEpIHsK
ICNpZiBDT05URU5UX0VYVEVOU0lPTlNfU1RBVEVfTUFDSElORV9ERUJVR0dJTkcKICAgICAgICAg
ZGF0YUxvZ0YoIk5GQVxuIik7CiAgICAgICAgIG5mYS5kZWJ1Z1ByaW50RG90KCk7CiAjZW5kaWYK
ICAgICAgICAgTE9HX0xBUkdFX1NUUlVDVFVSRVMobmZhLCBuZmEubWVtb3J5VXNlZCgpKTsKLSAg
ICAgICAgREZBIGRmYSA9IE5GQVRvREZBOjpjb252ZXJ0KG5mYSk7Ci0gICAgICAgIExPR19MQVJH
RV9TVFJVQ1RVUkVTKGRmYSwgZGZhLm1lbW9yeVVzZWQoKSk7CisgICAgICAgIGF1dG8gZGZhID0g
TkZBVG9ERkE6OmNvbnZlcnQoV1RGTW92ZShuZmEpKTsKKyAgICAgICAgaWYgKCFkZmEpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIExPR19MQVJHRV9TVFJVQ1RVUkVTKCpkZmEs
IGRmYS0+bWVtb3J5VXNlZCgpKTsKIAotICAgICAgICBpZiAoZGZhLmdyYXBoU2l6ZSgpIDwgc21h
bGxERkFTaXplKQotICAgICAgICAgICAgc21hbGxERkFDb21iaW5lci5hZGRERkEoV1RGTW92ZShk
ZmEpKTsKKyAgICAgICAgaWYgKGRmYS0+Z3JhcGhTaXplKCkgPCBzbWFsbERGQVNpemUpCisgICAg
ICAgICAgICBzbWFsbERGQUNvbWJpbmVyLmFkZERGQShXVEZNb3ZlKCpkZmEpKTsKICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBkZmEubWluaW1pemUoKTsKLSAgICAgICAgICAgIGxvd2VyREZB
VG9CeXRlY29kZShXVEZNb3ZlKGRmYSkpOworICAgICAgICAgICAgZGZhLT5taW5pbWl6ZSgpOwor
ICAgICAgICAgICAgbG93ZXJERkFUb0J5dGVjb2RlKFdURk1vdmUoKmRmYSkpOwogICAgICAgICB9
CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0pOworICAgIGlmICghcHJvY2Vzc2VkU3VjY2Vz
c2Z1bGx5KQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBzbWFsbERGQUNvbWJpbmVyLmNv
bWJpbmVERkFzKHNtYWxsREZBU2l6ZSwgWyZdKERGQSYmIGRmYSkgewogICAgICAgICBMT0dfTEFS
R0VfU1RSVUNUVVJFUyhkZmEsIGRmYS5tZW1vcnlVc2VkKCkpOwpAQCAtMjgxLDYgKzI4Niw3IEBA
IHN0YXRpYyB2b2lkIGNvbXBpbGVUb0J5dGVjb2RlKENvbWJpbmVkVVJMRmlsdGVycyYmIGZpbHRl
cnMsIFVuaXZlcnNhbEFjdGlvblNldCYmCiAgICAgICAgIHdyaXRlQnl0ZWNvZGVUb0NsaWVudChX
VEZNb3ZlKGJ5dGVjb2RlKSk7CiAgICAgfQogICAgIExPR19MQVJHRV9TVFJVQ1RVUkVTKHVuaXZl
cnNhbEFjdGlvbnMsIHVuaXZlcnNhbEFjdGlvbnMuY2FwYWNpdHkoKSAqIHNpemVvZih1bnNpZ25l
ZCkpOworICAgIHJldHVybiB0cnVlOwogfQogCiBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVM
aXN0KENvbnRlbnRFeHRlbnNpb25Db21waWxhdGlvbkNsaWVudCYgY2xpZW50LCBTdHJpbmcmJiBy
dWxlSlNPTiwgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiYmIHBhcnNlZFJ1bGVMaXN0KQpA
QCAtNDE0LDE2ICs0MjAsMjIgQEAgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVSdWxlTGlzdChDb250
ZW50RXh0ZW5zaW9uQ29tcGlsYXRpb25DbGllbnQmIGNsaWVudCwgU3RyaW4KICAgICBNb25vdG9u
aWNUaW1lIHRvdGFsTkZBVG9CeXRlQ29kZUJ1aWxkVGltZVN0YXJ0ID0gTW9ub3RvbmljVGltZTo6
bm93KCk7CiAjZW5kaWYKIAotICAgIGNvbXBpbGVUb0J5dGVjb2RlKFdURk1vdmUoZmlsdGVyc1dp
dGhvdXRDb25kaXRpb25zKSwgV1RGTW92ZSh1bml2ZXJzYWxBY3Rpb25zV2l0aG91dENvbmRpdGlv
bnMpLCBbJl0oVmVjdG9yPERGQUJ5dGVjb2RlPiYmIGJ5dGVjb2RlKSB7CisgICAgYm9vbCBzdWNj
ZXNzID0gY29tcGlsZVRvQnl0ZWNvZGUoV1RGTW92ZShmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnMp
LCBXVEZNb3ZlKHVuaXZlcnNhbEFjdGlvbnNXaXRob3V0Q29uZGl0aW9ucyksIFsmXShWZWN0b3I8
REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUpIHsKICAgICAgICAgY2xpZW50LndyaXRlRmlsdGVyc1dp
dGhvdXRDb25kaXRpb25zQnl0ZWNvZGUoV1RGTW92ZShieXRlY29kZSkpOwogICAgIH0pOwotICAg
IGNvbXBpbGVUb0J5dGVjb2RlKFdURk1vdmUoZmlsdGVyc1dpdGhDb25kaXRpb25zKSwgV1RGTW92
ZSh1bml2ZXJzYWxBY3Rpb25zV2l0aENvbmRpdGlvbnMpLCBbJl0oVmVjdG9yPERGQUJ5dGVjb2Rl
PiYmIGJ5dGVjb2RlKSB7CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4gQ29udGVu
dEV4dGVuc2lvbkVycm9yOjpFcnJvcldyaXRpbmdTZXJpYWxpemVkTkZBOworICAgIHN1Y2Nlc3Mg
PSBjb21waWxlVG9CeXRlY29kZShXVEZNb3ZlKGZpbHRlcnNXaXRoQ29uZGl0aW9ucyksIFdURk1v
dmUodW5pdmVyc2FsQWN0aW9uc1dpdGhDb25kaXRpb25zKSwgWyZdKFZlY3RvcjxERkFCeXRlY29k
ZT4mJiBieXRlY29kZSkgewogICAgICAgICBjbGllbnQud3JpdGVGaWx0ZXJzV2l0aENvbmRpdGlv
bnNCeXRlY29kZShXVEZNb3ZlKGJ5dGVjb2RlKSk7CiAgICAgfSk7Ci0gICAgY29tcGlsZVRvQnl0
ZWNvZGUoV1RGTW92ZSh0b3BVUkxGaWx0ZXJzKSwgV1RGTW92ZSh1bml2ZXJzYWxUb3BVUkxBY3Rp
b25zKSwgWyZdKFZlY3RvcjxERkFCeXRlY29kZT4mJiBieXRlY29kZSkgeworICAgIGlmICghc3Vj
Y2VzcykKKyAgICAgICAgcmV0dXJuIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6RXJyb3JXcml0aW5n
U2VyaWFsaXplZE5GQTsKKyAgICBzdWNjZXNzID0gY29tcGlsZVRvQnl0ZWNvZGUoV1RGTW92ZSh0
b3BVUkxGaWx0ZXJzKSwgV1RGTW92ZSh1bml2ZXJzYWxUb3BVUkxBY3Rpb25zKSwgWyZdKFZlY3Rv
cjxERkFCeXRlY29kZT4mJiBieXRlY29kZSkgewogICAgICAgICBjbGllbnQud3JpdGVUb3BVUkxG
aWx0ZXJzQnl0ZWNvZGUoV1RGTW92ZShieXRlY29kZSkpOwogICAgIH0pOwotICAgIAorICAgIGlm
ICghc3VjY2VzcykKKyAgICAgICAgcmV0dXJuIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6RXJyb3JX
cml0aW5nU2VyaWFsaXplZE5GQTsKKwogI2lmIENPTlRFTlRfRVhURU5TSU9OU19QRVJGT1JNQU5D
RV9SRVBPUlRJTkcKICAgICBNb25vdG9uaWNUaW1lIHRvdGFsTkZBVG9CeXRlQ29kZUJ1aWxkVGlt
ZUVuZCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogICAgIGRhdGFMb2dGKCIgICAgVGltZSBzcGVu
dCBidWlsZGluZyBhbmQgY29tcGlsaW5nIHRoZSBERkFzOiAlZlxuIiwgKHRvdGFsTkZBVG9CeXRl
Q29kZUJ1aWxkVGltZUVuZCAtIHRvdGFsTkZBVG9CeXRlQ29kZUJ1aWxkVGltZVN0YXJ0KS5zZWNv
bmRzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbkVycm9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25FcnJvci5jcHAKaW5kZXggZDg4ZDg1MTEyODZlY2NiYzY1MDIyNTAz
OTI3YTFkY2VjZjQ2ZjkzZC4uNzc5MTUyODRlNGQ3ODRlYTVlZTUxNTU5NDg1NmM2MjA4ZTlkN2M4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvbkVycm9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uRXJyb3IuY3BwCkBAIC04OSw2ICs4OSw4IEBAIGNvbnN0IHN0ZDo6ZXJy
b3JfY2F0ZWdvcnkmIGNvbnRlbnRFeHRlbnNpb25FcnJvckNhdGVnb3J5KCkKICAgICAgICAgICAg
ICAgICByZXR1cm4gIkEgbGlzdCBjYW5ub3QgaGF2ZSBpZi1kb21haW4gYW5kIHVubGVzcy1kb21h
aW4gbWl4ZWQgd2l0aCBpZi10b3AtdXJsIGFuZCB1bmxlc3MtdG9wLXVybCI7CiAgICAgICAgICAg
ICBjYXNlIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWROb3RpZmljYXRpb246CiAg
ICAgICAgICAgICAgICAgcmV0dXJuICJBIG5vdGlmeSBhY3Rpb24gbXVzdCBoYXZlIGEgc3RyaW5n
IG5vdGlmaWNhdGlvbiI7CisgICAgICAgICAgICBjYXNlIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6
RXJyb3JXcml0aW5nU2VyaWFsaXplZE5GQToKKyAgICAgICAgICAgICAgICByZXR1cm4gIkludGVy
bmFsIEkvTyBlcnJvciI7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHJldHVybiBzdGQ6
OnN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvbkVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uRXJyb3IuaAppbmRleCA3NmVkNjhmODNhMzYwMTZhN2Q1YmM0MWNl
MmI3YjQ0YjBiOGI0ZGI4Li4xMDljZDVjOTc3ODg2YWViODFhYTQ3MzRjMTEyNWE4MGM2ZDMxZGI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uRXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uRXJyb3IuaApAQCAtNTksNiArNTksOCBAQCBlbnVtIGNsYXNzIENvbnRlbnRF
eHRlbnNpb25FcnJvciB7CiAgICAgSlNPTkludmFsaWRDU1NEaXNwbGF5Tm9uZUFjdGlvblR5cGUs
CiAgICAgSlNPTkludmFsaWROb3RpZmljYXRpb24sCiAgICAgSlNPTkludmFsaWRSZWdleCwKKwor
ICAgIEVycm9yV3JpdGluZ1NlcmlhbGl6ZWRORkEsCiB9OwogCiBleHRlcm4gY29uc3QgY2hhciog
V2ViS2l0Q29udGVudEJsb2NrZXJEb21haW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0RlYnVnZ2luZy5oIGIvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNEZWJ1Z2dpbmcuaAppbmRl
eCAyMTAwYzI2YTE1M2M5MWIzNTQxNTQ2ZGI4ZTdiYmU2ZDEzMzExMjU3Li42YmIxOTI4Y2FlMTlj
ODdhZjU2ZjY0OGVmZGNmMDk5M2ZjMjc0ZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0RlYnVnZ2luZy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zRGVidWdnaW5nLmgK
QEAgLTMzLDkgKzMzLDYgQEAKIAogI2RlZmluZSBDT05URU5UX0VYVEVOU0lPTlNfUEVSRk9STUFO
Q0VfUkVQT1JUSU5HIDAKIAotI2RlZmluZSBDT05URU5UX0VYVEVOU0lPTlNfTUVNT1JZX1JFUE9S
VElORyAwCi0jZGVmaW5lIENPTlRFTlRfRVhURU5TSU9OU19QQUdFX1NJWkUgMTYzODQKLQogI2lm
IENPTlRFTlRfRVhURU5TSU9OU19TVEFURV9NQUNISU5FX0RFQlVHR0lORwogdHlwZWRlZiBXVEY6
OkNyYXNoT25PdmVyZmxvdyBDb250ZW50RXh0ZW5zaW9uc092ZXJmbG93SGFuZGxlcjsKICNlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkEuY3BwIGIv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBLmNwcAppbmRleCA0NWU1YWYwNWY1
NjBiMjQ0OGE5NTJmYmVjNWE1OTBmMDExMDlhMTg4Li43MjBiODMyMDRlNjQyZTgzMWQyZWM5ZDE5
YmNjYjE5ZWUyYWE0OTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9ERkEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQS5j
cHAKQEAgLTUxLDE0ICs1MSw2IEBAIHNpemVfdCBERkE6Om1lbW9yeVVzZWQoKSBjb25zdAogICAg
ICAgICArIG5vZGVzLmNhcGFjaXR5KCkgKiBzaXplb2YoREZBTm9kZSk7CiB9CiAKLXZvaWQgREZB
OjpzaHJpbmtUb0ZpdCgpCi17Ci0gICAgbm9kZXMuc2hyaW5rVG9GaXQoKTsKLSAgICBhY3Rpb25z
LnNocmlua1RvRml0KCk7Ci0gICAgdHJhbnNpdGlvblJhbmdlcy5zaHJpbmtUb0ZpdCgpOwotICAg
IHRyYW5zaXRpb25EZXN0aW5hdGlvbnMuc2hyaW5rVG9GaXQoKTsKLX0KLQogdm9pZCBERkE6Om1p
bmltaXplKCkKIHsKICAgICBERkFNaW5pbWl6ZXI6Om1pbmltaXplKCp0aGlzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQS5oIGIvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvREZBLmgKaW5kZXggMzUyMDYxZWU3ODEzZTIyZWJhZmRmNGQ0
YTE4MWI2NWY1ZmM0MThmNS4uODY1ZDNjNjQ0OThkMjVmN2VhOGRkZDQ1MTc0ZGEwYjQ0Yzg0NWI1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBLmgKQEAgLTM5LDcgKzM5LDYg
QEAgbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKIHN0cnVjdCBXRUJDT1JFX0VYUE9SVCBE
RkEgewogICAgIHN0YXRpYyBERkEgZW1wdHkoKTsKIAotICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsK
ICAgICB2b2lkIG1pbmltaXplKCk7CiAgICAgdW5zaWduZWQgZ3JhcGhTaXplKCkgY29uc3Q7CiAg
ICAgc2l6ZV90IG1lbW9yeVVzZWQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0ltbXV0YWJsZU5GQS5oIGIvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvSW1tdXRhYmxlTkZBLmgKaW5kZXggZjVkMjFhZWJhZTA0MWNjNDViODI0MTcw
OWE1MGI4NDQ0ZGFlZWQ5ZS4uY2M5OTM3ODBiOWIzZTQ2NTg3MDY4NDRhY2Y1ZTg1Y2UwYWQyMjBh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvSW1tdXRhYmxl
TkZBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvSW1tdXRhYmxlTkZB
LmgKQEAgLTU4LDExMiArNTgsMTMgQEAgc3RydWN0IEltbXV0YWJsZU5GQSB7CiAgICAgVmVjdG9y
PHVpbnQzMl90LCAwLCBDb250ZW50RXh0ZW5zaW9uc092ZXJmbG93SGFuZGxlcj4gZXBzaWxvblRy
YW5zaXRpb25zVGFyZ2V0czsKICAgICBWZWN0b3I8QWN0aW9uVHlwZSwgMCwgQ29udGVudEV4dGVu
c2lvbnNPdmVyZmxvd0hhbmRsZXI+IGFjdGlvbnM7CiAKLSAgICBzdHJ1Y3QgQ29uc3RUYXJnZXRJ
dGVyYXRvciB7Ci0gICAgICAgIGNvbnN0IEltbXV0YWJsZU5GQSYgaW1tdXRhYmxlTkZBOwotICAg
ICAgICB1aW50MzJfdCBwb3NpdGlvbjsKLQotICAgICAgICBjb25zdCB1aW50MzJfdCYgb3BlcmF0
b3IqKCkgY29uc3QgeyByZXR1cm4gaW1tdXRhYmxlTkZBLnRhcmdldHNbcG9zaXRpb25dOyB9Ci0g
ICAgICAgIGNvbnN0IHVpbnQzMl90KiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJmltbXV0
YWJsZU5GQS50YXJnZXRzW3Bvc2l0aW9uXTsgfQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBDb25zdFRhcmdldEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAg
ICAgICAgQVNTRVJUKCZpbW11dGFibGVORkEgPT0gJm90aGVyLmltbXV0YWJsZU5GQSk7Ci0gICAg
ICAgICAgICByZXR1cm4gcG9zaXRpb24gPT0gb3RoZXIucG9zaXRpb247Ci0gICAgICAgIH0KLSAg
ICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvbnN0VGFyZ2V0SXRlcmF0b3ImIG90aGVyKSBj
b25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQotCi0gICAgICAgIENvbnN0VGFyZ2V0
SXRlcmF0b3ImIG9wZXJhdG9yKysoKQotICAgICAgICB7Ci0gICAgICAgICAgICArK3Bvc2l0aW9u
OwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHN0
cnVjdCBJdGVyYWJsZUNvbnN0VGFyZ2V0cyB7Ci0gICAgICAgIGNvbnN0IEltbXV0YWJsZU5GQSYg
aW1tdXRhYmxlTkZBOwotICAgICAgICB1aW50MzJfdCB0YXJnZXRTdGFydDsKLSAgICAgICAgdWlu
dDMyX3QgdGFyZ2V0RW5kOwotCi0gICAgICAgIENvbnN0VGFyZ2V0SXRlcmF0b3IgYmVnaW4oKSBj
b25zdCB7IHJldHVybiB7IGltbXV0YWJsZU5GQSwgdGFyZ2V0U3RhcnQgfTsgfQotICAgICAgICBD
b25zdFRhcmdldEl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIHsgaW1tdXRhYmxlTkZBLCB0
YXJnZXRFbmQgfTsgfQotICAgIH07Ci0KLSAgICBzdHJ1Y3QgQ29uc3RSYW5nZUl0ZXJhdG9yIHsK
LSAgICAgICAgY29uc3QgSW1tdXRhYmxlTkZBJiBpbW11dGFibGVORkE7Ci0gICAgICAgIHVpbnQz
Ml90IHBvc2l0aW9uOwotCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb25zdFJhbmdl
SXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoJmlt
bXV0YWJsZU5GQSA9PSAmb3RoZXIuaW1tdXRhYmxlTkZBKTsKLSAgICAgICAgICAgIHJldHVybiBw
b3NpdGlvbiA9PSBvdGhlci5wb3NpdGlvbjsKLSAgICAgICAgfQotICAgICAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgQ29uc3RSYW5nZUl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7IH0KLQotICAgICAgICBDb25zdFJhbmdlSXRlcmF0b3ImIG9wZXJhdG9y
KysoKQotICAgICAgICB7Ci0gICAgICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICAgICAgcmV0
dXJuICp0aGlzOwotICAgICAgICB9Ci0KLSAgICAgICAgQ2hhcmFjdGVyVHlwZSBmaXJzdCgpIGNv
bnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByYW5nZSgpLmZpcnN0OwotICAgICAg
ICB9Ci0KLSAgICAgICAgQ2hhcmFjdGVyVHlwZSBsYXN0KCkgY29uc3QKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIHJhbmdlKCkubGFzdDsKLSAgICAgICAgfQotCi0gICAgICAgIEl0ZXJh
YmxlQ29uc3RUYXJnZXRzIGRhdGEoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBjb25z
dCBJbW11dGFibGVSYW5nZTxDaGFyYWN0ZXJUeXBlPiYgcmFuZ2UgPSB0aGlzLT5yYW5nZSgpOwot
ICAgICAgICAgICAgcmV0dXJuIHsgaW1tdXRhYmxlTkZBLCByYW5nZS50YXJnZXRTdGFydCwgcmFu
Z2UudGFyZ2V0RW5kIH07Ci0gICAgICAgIH07Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBjb25z
dCBJbW11dGFibGVSYW5nZTxDaGFyYWN0ZXJUeXBlPiYgcmFuZ2UoKSBjb25zdAotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gaW1tdXRhYmxlTkZBLnRyYW5zaXRpb25zW3Bvc2l0aW9uXTsK
LSAgICAgICAgfQotICAgIH07Ci0KLSAgICBzdHJ1Y3QgSXRlcmFibGVDb25zdFJhbmdlIHsKLSAg
ICAgICAgY29uc3QgSW1tdXRhYmxlTkZBJiBpbW11dGFibGVORkE7Ci0gICAgICAgIHVpbnQzMl90
IHJhbmdlc1N0YXJ0OwotICAgICAgICB1aW50MzJfdCByYW5nZXNFbmQ7Ci0KLSAgICAgICAgQ29u
c3RSYW5nZUl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4geyBpbW11dGFibGVORkEsIHJh
bmdlc1N0YXJ0IH07IH0KLSAgICAgICAgQ29uc3RSYW5nZUl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsg
cmV0dXJuIHsgaW1tdXRhYmxlTkZBLCByYW5nZXNFbmQgfTsgfQotCi0jaWYgQ09OVEVOVF9FWFRF
TlNJT05TX1NUQVRFX01BQ0hJTkVfREVCVUdHSU5HCi0gICAgICAgIHZvaWQgZGVidWdQcmludCgp
IGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcmFuZ2UgOiAq
dGhpcykKLSAgICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIiAgICAlZC0lZCIsIHJhbmdlLmZp
cnN0LCByYW5nZS5sYXN0KTsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgfTsKLQotICAgIEl0ZXJh
YmxlQ29uc3RSYW5nZSB0cmFuc2l0aW9uc0Zvck5vZGUodWludDMyX3Qgbm9kZUlkKSBjb25zdAot
ICAgIHsKLSAgICAgICAgY29uc3QgSW1tdXRhYmxlTkZBTm9kZSYgbm9kZSA9IG5vZGVzW25vZGVJ
ZF07Ci0gICAgICAgIHJldHVybiB7ICp0aGlzLCBub2RlLnJhbmdlc1N0YXJ0LCBub2RlLnJhbmdl
c0VuZCB9OwotICAgIH07Ci0KLSAgICB1aW50MzJfdCByb290KCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUKCFub2Rlcy5pc0VtcHR5KCkpOwotICAgICAgICByZXR1cm4gMDsK
LSAgICB9Ci0KLSAgICB2b2lkIGZpbmFsaXplKCkKKyAgICB2b2lkIGNsZWFyKCkKICAgICB7Ci0g
ICAgICAgIG5vZGVzLnNocmlua1RvRml0KCk7Ci0gICAgICAgIHRyYW5zaXRpb25zLnNocmlua1Rv
Rml0KCk7Ci0gICAgICAgIHRhcmdldHMuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgZXBzaWxvblRy
YW5zaXRpb25zVGFyZ2V0cy5zaHJpbmtUb0ZpdCgpOwotICAgICAgICBhY3Rpb25zLnNocmlua1Rv
Rml0KCk7CisgICAgICAgIG5vZGVzLmNsZWFyKCk7CisgICAgICAgIHRyYW5zaXRpb25zLmNsZWFy
KCk7CisgICAgICAgIHRhcmdldHMuY2xlYXIoKTsKKyAgICAgICAgZXBzaWxvblRyYW5zaXRpb25z
VGFyZ2V0cy5jbGVhcigpOworICAgICAgICBhY3Rpb25zLmNsZWFyKCk7CiAgICAgfQogCiAgICAg
c2l6ZV90IG1lbW9yeVVzZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvSW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0ltbXV0YWJsZU5GQU5vZGVCdWlsZGVyLmgKaW5kZXggZTI3ZTI0
YzYwYjFlNTZhOGU0ZTA5NmZkNjYyNWQ3MWVkMDYwMTQxZS4uOTI0OGFjMDgyNzRlODMyNjEyYzk2
YmNmMGM0YzU1MTlmYWNjOTY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvSW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9JbW11dGFibGVORkFOb2RlQnVpbGRlci5oCkBAIC0zNSw5ICszNSw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsK
IAotLy8gQSBJbW11dGFibGVORkFOb2RlQnVpbGRlciBsZXQgeW91IGJ1aWxkIGEgTkZBIG5vZGUg
YnkgYWRkaW5nIHN0YXRlcyBhbmQgbGlua2luZyB3aXRoIG90aGVyIG5vZGVzLgotLy8gV2hlIGEg
YnVpbGRlciBpcyBkZXN0cnVjdGVkLCBhbGwgaXRzIHByb3BlcnRpZXMgYXJlIGZpbmFsaXplZCBp
bnRvIHRoZSBORkEuIFVzaW5nIHRoZSBOQSB3aXRoIGEgbGl2ZQotLy8gYnVpbGRlciByZXN1bHRz
IGluIHVuZGVmaW5lZCBiZWhhdmlvcnMuCisvLyBBIEltbXV0YWJsZU5GQU5vZGVCdWlsZGVyIGxl
dCB5b3UgYnVpbGQgYW4gTkZBIG5vZGUgYnkgYWRkaW5nIHN0YXRlcyBhbmQgbGlua2luZyB3aXRo
IG90aGVyIG5vZGVzLgorLy8gV2hlbiBhIGJ1aWxkZXIgaXMgZGVzdHJ1Y3RlZCwgYWxsIGl0cyBw
cm9wZXJ0aWVzIGFyZSBmaW5hbGl6ZWQgaW50byB0aGUgTkZBLiBVc2luZyB0aGUgTkZBIHdpdGgg
YSBsaXZlCisvLyBidWlsZGVyIHJlc3VsdHMgaW4gdW5kZWZpbmVkIGJlaGF2aW9yLgogdGVtcGxh
dGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIEFjdGlvblR5cGU+CiBjbGFzcyBJ
bW11dGFibGVORkFOb2RlQnVpbGRlciB7CiAgICAgdHlwZWRlZiBJbW11dGFibGVORkE8Q2hhcmFj
dGVyVHlwZSwgQWN0aW9uVHlwZT4gVHlwZWRJbW11dGFibGVORkE7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5jcHAKaW5kZXggZDMzZmUyNGJmYmM3OGE5ZDRm
MjE3NDc2YzRhZTdlMTI1ZjBmNWVmMy4uNGRhOTNkNzdmNzY4NWViMDJiNjBhYzM1MjZlMDI2OTdj
ZGYyZjE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZB
VG9ERkEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQVRvREZB
LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkltbXV0YWJsZU5GQS5oIgogI2luY2x1
ZGUgIk11dGFibGVSYW5nZUxpc3QuaCIKICNpbmNsdWRlICJORkEuaCIKKyNpbmNsdWRlICJTZXJp
YWxpemVkTkZBLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC01MSwxNyArNTIsMTcgQEAgdHlw
ZWRlZiBWZWN0b3I8VW5pcXVlTm9kZUxpc3QsIDAsIENvbnRlbnRFeHRlbnNpb25zT3ZlcmZsb3dI
YW5kbGVyPiBORkFOb2RlQ2xvc3UKIC8vIEZJWE1FOiBpbmNsdWRlIHRoZSBoYXNoIGluc2lkZSBO
b2RlSWRTZXQuCiB0eXBlZGVmIE5GQU5vZGVJbmRleFNldCBOb2RlSWRTZXQ7CiAKLXN0YXRpYyBp
bmxpbmUgdm9pZCBlcHNpbG9uQ2xvc3VyZUV4Y2x1ZGluZ1NlbGYoTkZBJiBuZmEsIHVuc2lnbmVk
IG5vZGVJZCwgVW5pcXVlTm9kZUxpc3QmIG91dHB1dCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBlcHNp
bG9uQ2xvc3VyZUV4Y2x1ZGluZ1NlbGYoY29uc3QgU2VyaWFsaXplZE5GQSYgbmZhLCB1bnNpZ25l
ZCBub2RlSWQsIFVuaXF1ZU5vZGVMaXN0JiBvdXRwdXQpCiB7CiAgICAgTm9kZUlkU2V0IGNsb3N1
cmUoeyBub2RlSWQgfSk7CiAgICAgVmVjdG9yPHVuc2lnbmVkLCA2NCwgQ29udGVudEV4dGVuc2lv
bnNPdmVyZmxvd0hhbmRsZXI+IHVucHJvY2Vzc2VkTm9kZXMoeyBub2RlSWQgfSk7CiAKICAgICBk
byB7CiAgICAgICAgIHVuc2lnbmVkIHVucHJvY2Vzc2VkTm9kZUlkID0gdW5wcm9jZXNzZWROb2Rl
cy50YWtlTGFzdCgpOwotICAgICAgICBjb25zdCBhdXRvJiBub2RlID0gbmZhLm5vZGVzW3VucHJv
Y2Vzc2VkTm9kZUlkXTsKKyAgICAgICAgY29uc3QgYXV0byYgbm9kZSA9IG5mYS5ub2RlcygpW3Vu
cHJvY2Vzc2VkTm9kZUlkXTsKIAogICAgICAgICBmb3IgKHVpbnQzMl90IGVwc2lsb25UYXJnZXRJ
bmRleCA9IG5vZGUuZXBzaWxvblRyYW5zaXRpb25UYXJnZXRzU3RhcnQ7IGVwc2lsb25UYXJnZXRJ
bmRleCA8IG5vZGUuZXBzaWxvblRyYW5zaXRpb25UYXJnZXRzRW5kOyArK2Vwc2lsb25UYXJnZXRJ
bmRleCkgewotICAgICAgICAgICAgdWludDMyX3QgdGFyZ2V0Tm9kZUlkID0gbmZhLmVwc2lsb25U
cmFuc2l0aW9uc1RhcmdldHNbZXBzaWxvblRhcmdldEluZGV4XTsKKyAgICAgICAgICAgIHVpbnQz
Ml90IHRhcmdldE5vZGVJZCA9IG5mYS5lcHNpbG9uVHJhbnNpdGlvbnNUYXJnZXRzKClbZXBzaWxv
blRhcmdldEluZGV4XTsKICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gY2xvc3VyZS5hZGQo
dGFyZ2V0Tm9kZUlkKTsKICAgICAgICAgICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewog
ICAgICAgICAgICAgICAgIHVucHJvY2Vzc2VkTm9kZXMuYXBwZW5kKHRhcmdldE5vZGVJZCk7CkBA
IC03MywxOCArNzQsMTYgQEAgc3RhdGljIGlubGluZSB2b2lkIGVwc2lsb25DbG9zdXJlRXhjbHVk
aW5nU2VsZihORkEmIG5mYSwgdW5zaWduZWQgbm9kZUlkLCBVbmlxdWUKICAgICBvdXRwdXQuc2hy
aW5rVG9GaXQoKTsKIH0KIAotc3RhdGljIHZvaWQgcmVzb2x2ZUVwc2lsb25DbG9zdXJlcyhORkEm
IG5mYSwgTkZBTm9kZUNsb3N1cmVzJiBuZmFOb2RlQ2xvc3VyZXMpCitzdGF0aWMgTkZBTm9kZUNs
b3N1cmVzIHJlc29sdmVFcHNpbG9uQ2xvc3VyZXMoY29uc3QgU2VyaWFsaXplZE5GQSYgbmZhKQog
ewotICAgIHVuc2lnbmVkIG5mYUdyYXBoU2l6ZSA9IG5mYS5ub2Rlcy5zaXplKCk7CisgICAgTkZB
Tm9kZUNsb3N1cmVzIG5mYU5vZGVDbG9zdXJlczsKKyAgICB1bnNpZ25lZCBuZmFHcmFwaFNpemUg
PSBuZmEubm9kZXMoKS5zaXplKCk7CiAgICAgbmZhTm9kZUNsb3N1cmVzLnJlc2l6ZShuZmFHcmFw
aFNpemUpOwogCiAgICAgZm9yICh1bnNpZ25lZCBub2RlSWQgPSAwOyBub2RlSWQgPCBuZmFHcmFw
aFNpemU7ICsrbm9kZUlkKQogICAgICAgICBlcHNpbG9uQ2xvc3VyZUV4Y2x1ZGluZ1NlbGYobmZh
LCBub2RlSWQsIG5mYU5vZGVDbG9zdXJlc1tub2RlSWRdKTsKIAotICAgIC8vIEV2ZXJ5IG5vZGVz
IHN0aWxsIHBvaW50IHRvIHRoYXQgdGFibGUsIGJ1dCB3ZSB3b24ndCB1c2UgaXQgZXZlciBhZ2Fp
bi4KLSAgICAvLyBDbGVhciBpdCB0byBnZXQgYmFjayB0aGUgbWVtb3J5LiBUaGF0J3Mgbm90IHBy
ZXR0eSBidXQgbWVtb3J5IGlzIGltcG9ydGFudCBoZXJlLCB3ZSBoYXZlIGJvdGgKLSAgICAvLyBn
cmFwaHMgZXhpc3RpbmcgYXQgdGhlIHNhbWUgdGltZS4KLSAgICBuZmEuZXBzaWxvblRyYW5zaXRp
b25zVGFyZ2V0cy5jbGVhcigpOworICAgIHJldHVybiBuZmFOb2RlQ2xvc3VyZXM7CiB9CiAKIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgZXh0ZW5kU2V0V2l0aENsb3N1cmUoY29uc3QgTkZBTm9k
ZUNsb3N1cmVzJiBuZmFOb2RlQ2xvc3VyZXMsIHVuc2lnbmVkIG5vZGVJZCwgTm9kZUlkU2V0JiBz
ZXQpCkBAIC0yMTUsNyArMjE0LDcgQEAgc3RydWN0IFVuaXF1ZU5vZGVJZFNldEhhc2hIYXNoVHJh
aXRzIDogcHVibGljIFdURjo6Q3VzdG9tSGFzaFRyYWl0czxVbmlxdWVOb2RlSWQKIHR5cGVkZWYg
SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8VW5pcXVlTm9kZUlkU2V0PiwgVW5pcXVlTm9kZUlkU2V0
SGFzaCwgVW5pcXVlTm9kZUlkU2V0SGFzaEhhc2hUcmFpdHM+IFVuaXF1ZU5vZGVJZFNldFRhYmxl
OwogCiBzdHJ1Y3QgTm9kZUlkU2V0VG9VbmlxdWVOb2RlSWRTZXRTb3VyY2UgewotICAgIE5vZGVJ
ZFNldFRvVW5pcXVlTm9kZUlkU2V0U291cmNlKERGQSYgZGZhLCBjb25zdCBORkEmIG5mYSwgY29u
c3QgTm9kZUlkU2V0JiBub2RlSWRTZXQpCisgICAgTm9kZUlkU2V0VG9VbmlxdWVOb2RlSWRTZXRT
b3VyY2UoREZBJiBkZmEsIGNvbnN0IFNlcmlhbGl6ZWRORkEmIG5mYSwgY29uc3QgTm9kZUlkU2V0
JiBub2RlSWRTZXQpCiAgICAgICAgIDogZGZhKGRmYSkKICAgICAgICAgLCBuZmEobmZhKQogICAg
ICAgICAsIG5vZGVJZFNldChub2RlSWRTZXQpCkBAIC0yMjcsNyArMjI2LDcgQEAgc3RydWN0IE5v
ZGVJZFNldFRvVW5pcXVlTm9kZUlkU2V0U291cmNlIHsKICAgICAgICAgdGhpcy0+aGFzaCA9IERl
ZmF1bHRIYXNoPHVuc2lnbmVkPjo6aGFzaChoYXNoKTsKICAgICB9CiAgICAgREZBJiBkZmE7Ci0g
ICAgY29uc3QgTkZBJiBuZmE7CisgICAgY29uc3QgU2VyaWFsaXplZE5GQSYgbmZhOwogICAgIGNv
bnN0IE5vZGVJZFNldCYgbm9kZUlkU2V0OwogICAgIHVuc2lnbmVkIGhhc2g7CiB9OwpAQCAtMjUw
LDkgKzI0OSw5IEBAIHN0cnVjdCBOb2RlSWRTZXRUb1VuaXF1ZU5vZGVJZFNldFRyYW5zbGF0b3Ig
ewogICAgICAgICBIYXNoU2V0PHVpbnQ2NF90LCBEZWZhdWx0SGFzaDx1aW50NjRfdD4sIFdURjo6
VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBhY3Rpb25zOwogCiAgICAg
ICAgIGZvciAodW5zaWduZWQgbmZhTm9kZUlkIDogc291cmNlLm5vZGVJZFNldCkgewotICAgICAg
ICAgICAgY29uc3QgYXV0byYgbmZhTm9kZSA9IHNvdXJjZS5uZmEubm9kZXNbbmZhTm9kZUlkXTsK
KyAgICAgICAgICAgIGNvbnN0IGF1dG8mIG5mYU5vZGUgPSBzb3VyY2UubmZhLm5vZGVzKClbbmZh
Tm9kZUlkXTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYWN0aW9uSW5kZXggPSBuZmFOb2Rl
LmFjdGlvblN0YXJ0OyBhY3Rpb25JbmRleCA8IG5mYU5vZGUuYWN0aW9uRW5kOyArK2FjdGlvbklu
ZGV4KQotICAgICAgICAgICAgICAgIGFjdGlvbnMuYWRkKHNvdXJjZS5uZmEuYWN0aW9uc1thY3Rp
b25JbmRleF0pOworICAgICAgICAgICAgICAgIGFjdGlvbnMuYWRkKHNvdXJjZS5uZmEuYWN0aW9u
cygpW2FjdGlvbkluZGV4XSk7CiAgICAgICAgIH0KIAogICAgICAgICB1bnNpZ25lZCBhY3Rpb25z
U3RhcnQgPSBzb3VyY2UuZGZhLmFjdGlvbnMuc2l6ZSgpOwpAQCAtMjk5LDcgKzI5OCw3IEBAIHN0
cnVjdCBEYXRhQ29udmVydGVyV2l0aEVwc2lsb25DbG9zdXJlIHsKICAgICB9CiB9OwogCi1zdGF0
aWMgaW5saW5lIHZvaWQgY3JlYXRlQ29tYmluZWRUcmFuc2l0aW9uKFByZWFsbG9jYXRlZE5GQU5v
ZGVSYW5nZUxpc3QmIGNvbWJpbmVkUmFuZ2VMaXN0LCBjb25zdCBVbmlxdWVOb2RlSWRTZXRJbXBs
JiBzb3VyY2VOb2RlU2V0LCBjb25zdCBORkEmIGltbXV0YWJsZU5GQSwgY29uc3QgTkZBTm9kZUNs
b3N1cmVzJiBuZmFOb2RlY2xvc3VyZXMpCitzdGF0aWMgaW5saW5lIHZvaWQgY3JlYXRlQ29tYmlu
ZWRUcmFuc2l0aW9uKFByZWFsbG9jYXRlZE5GQU5vZGVSYW5nZUxpc3QmIGNvbWJpbmVkUmFuZ2VM
aXN0LCBjb25zdCBVbmlxdWVOb2RlSWRTZXRJbXBsJiBzb3VyY2VOb2RlU2V0LCBjb25zdCBTZXJp
YWxpemVkTkZBJiBzZXJpYWxpemVkTkZBLCBjb25zdCBORkFOb2RlQ2xvc3VyZXMmIG5mYU5vZGVj
bG9zdXJlcykKIHsKICAgICBjb21iaW5lZFJhbmdlTGlzdC5jbGVhcigpOwogCkBAIC0zMDgsMTQg
KzMwNywxNCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY3JlYXRlQ29tYmluZWRUcmFuc2l0aW9uKFBy
ZWFsbG9jYXRlZE5GQU5vZGVSYW5nZUxpc3QmIGNvbWJpbgogICAgIERhdGFDb252ZXJ0ZXJXaXRo
RXBzaWxvbkNsb3N1cmUgY29udmVydGVyIHsgbmZhTm9kZWNsb3N1cmVzIH07CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHNvdXJjZU5vZGVTZXQubV9zaXplOyArK2kpIHsKICAgICAgICAg
dW5zaWduZWQgbm9kZUlkID0gYnVmZmVyW2ldOwotICAgICAgICBhdXRvIHRyYW5zaXRpb25zID0g
aW1tdXRhYmxlTkZBLnRyYW5zaXRpb25zRm9yTm9kZShub2RlSWQpOworICAgICAgICBhdXRvIHRy
YW5zaXRpb25zID0gc2VyaWFsaXplZE5GQS50cmFuc2l0aW9uc0Zvck5vZGUobm9kZUlkKTsKICAg
ICAgICAgY29tYmluZWRSYW5nZUxpc3QuZXh0ZW5kKHRyYW5zaXRpb25zLmJlZ2luKCksIHRyYW5z
aXRpb25zLmVuZCgpLCBjb252ZXJ0ZXIpOwogICAgIH0KIH0KIAotc3RhdGljIEFMV0FZU19JTkxJ
TkUgdW5zaWduZWQgZ2V0T3JDcmVhdGVERkFOb2RlKGNvbnN0IE5vZGVJZFNldCYgbmZhTm9kZVNl
dCwgY29uc3QgTkZBJiBuZmEsIERGQSYgZGZhLCBVbmlxdWVOb2RlSWRTZXRUYWJsZSYgdW5pcXVl
Tm9kZUlkU2V0VGFibGUsIFVuaXF1ZU5vZGVRdWV1ZSYgdW5wcm9jZXNzZWROb2RlcykKK3N0YXRp
YyBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIGdldE9yQ3JlYXRlREZBTm9kZShjb25zdCBOb2RlSWRT
ZXQmIG5mYU5vZGVTZXQsIGNvbnN0IFNlcmlhbGl6ZWRORkEmIHNlcmlhbGl6ZWRORkEsIERGQSYg
ZGZhLCBVbmlxdWVOb2RlSWRTZXRUYWJsZSYgdW5pcXVlTm9kZUlkU2V0VGFibGUsIFVuaXF1ZU5v
ZGVRdWV1ZSYgdW5wcm9jZXNzZWROb2RlcykKIHsKLSAgICBOb2RlSWRTZXRUb1VuaXF1ZU5vZGVJ
ZFNldFNvdXJjZSBub2RlSWRTZXRUb1VuaXF1ZU5vZGVJZFNldFNvdXJjZShkZmEsIG5mYSwgbmZh
Tm9kZVNldCk7CisgICAgTm9kZUlkU2V0VG9VbmlxdWVOb2RlSWRTZXRTb3VyY2Ugbm9kZUlkU2V0
VG9VbmlxdWVOb2RlSWRTZXRTb3VyY2UoZGZhLCBzZXJpYWxpemVkTkZBLCBuZmFOb2RlU2V0KTsK
ICAgICBhdXRvIHVuaXF1ZU5vZGVJZEFkZFJlc3VsdCA9IHVuaXF1ZU5vZGVJZFNldFRhYmxlLmFk
ZDxOb2RlSWRTZXRUb1VuaXF1ZU5vZGVJZFNldFRyYW5zbGF0b3I+KG5vZGVJZFNldFRvVW5pcXVl
Tm9kZUlkU2V0U291cmNlKTsKICAgICBpZiAodW5pcXVlTm9kZUlkQWRkUmVzdWx0LmlzTmV3RW50
cnkpCiAgICAgICAgIHVucHJvY2Vzc2VkTm9kZXMuYXBwZW5kKHVuaXF1ZU5vZGVJZEFkZFJlc3Vs
dC5pdGVyYXRvci0+aW1wbCgpKTsKQEAgLTMyMywxOSArMzIyLDIxIEBAIHN0YXRpYyBBTFdBWVNf
SU5MSU5FIHVuc2lnbmVkIGdldE9yQ3JlYXRlREZBTm9kZShjb25zdCBOb2RlSWRTZXQmIG5mYU5v
ZGVTZXQsIGNvCiAgICAgcmV0dXJuIHVuaXF1ZU5vZGVJZEFkZFJlc3VsdC5pdGVyYXRvci0+aW1w
bCgpLT5tX2RmYU5vZGVJZDsKIH0KIAotREZBIE5GQVRvREZBOjpjb252ZXJ0KE5GQSYgbmZhKQor
T3B0aW9uYWw8REZBPiBORkFUb0RGQTo6Y29udmVydChORkEmJiBuZmEpCiB7Ci0gICAgTkZBTm9k
ZUNsb3N1cmVzIG5mYU5vZGVDbG9zdXJlczsKLSAgICByZXNvbHZlRXBzaWxvbkNsb3N1cmVzKG5m
YSwgbmZhTm9kZUNsb3N1cmVzKTsKKyAgICBhdXRvIHNlcmlhbGl6ZWRORkEgPSBTZXJpYWxpemVk
TkZBOjpzZXJpYWxpemUoV1RGTW92ZShuZmEpKTsKKyAgICBpZiAoIXNlcmlhbGl6ZWRORkEpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKKyAgICBORkFOb2RlQ2xvc3VyZXMgbmZhTm9k
ZUNsb3N1cmVzID0gcmVzb2x2ZUVwc2lsb25DbG9zdXJlcygqc2VyaWFsaXplZE5GQSk7CiAgICAg
REZBIGRmYTsKIAotICAgIE5vZGVJZFNldCBpbml0aWFsU2V0KHsgbmZhLnJvb3QoKSB9KTsKLSAg
ICBleHRlbmRTZXRXaXRoQ2xvc3VyZShuZmFOb2RlQ2xvc3VyZXMsIG5mYS5yb290KCksIGluaXRp
YWxTZXQpOworICAgIE5vZGVJZFNldCBpbml0aWFsU2V0KHsgc2VyaWFsaXplZE5GQS0+cm9vdCgp
IH0pOworICAgIGV4dGVuZFNldFdpdGhDbG9zdXJlKG5mYU5vZGVDbG9zdXJlcywgc2VyaWFsaXpl
ZE5GQS0+cm9vdCgpLCBpbml0aWFsU2V0KTsKIAogICAgIFVuaXF1ZU5vZGVJZFNldFRhYmxlIHVu
aXF1ZU5vZGVJZFNldFRhYmxlOwogCi0gICAgTm9kZUlkU2V0VG9VbmlxdWVOb2RlSWRTZXRTb3Vy
Y2UgaW5pdGlhbE5vZGVJZFNldFRvVW5pcXVlTm9kZUlkU2V0U291cmNlKGRmYSwgbmZhLCBpbml0
aWFsU2V0KTsKKyAgICBOb2RlSWRTZXRUb1VuaXF1ZU5vZGVJZFNldFNvdXJjZSBpbml0aWFsTm9k
ZUlkU2V0VG9VbmlxdWVOb2RlSWRTZXRTb3VyY2UoZGZhLCAqc2VyaWFsaXplZE5GQSwgaW5pdGlh
bFNldCk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSB1bmlxdWVOb2RlSWRTZXRUYWJsZS5hZGQ8Tm9k
ZUlkU2V0VG9VbmlxdWVOb2RlSWRTZXRUcmFuc2xhdG9yPihpbml0aWFsTm9kZUlkU2V0VG9Vbmlx
dWVOb2RlSWRTZXRTb3VyY2UpOwogCiAgICAgVW5pcXVlTm9kZVF1ZXVlIHVucHJvY2Vzc2VkTm9k
ZXM7CkBAIC0zNDQsMTEgKzM0NSwxMSBAQCBERkEgTkZBVG9ERkE6OmNvbnZlcnQoTkZBJiBuZmEp
CiAgICAgUHJlYWxsb2NhdGVkTkZBTm9kZVJhbmdlTGlzdCBjb21iaW5lZFJhbmdlTGlzdDsKICAg
ICBkbyB7CiAgICAgICAgIFVuaXF1ZU5vZGVJZFNldEltcGwqIHVuaXF1ZU5vZGVJZFNldEltcGwg
PSB1bnByb2Nlc3NlZE5vZGVzLnRha2VMYXN0KCk7Ci0gICAgICAgIGNyZWF0ZUNvbWJpbmVkVHJh
bnNpdGlvbihjb21iaW5lZFJhbmdlTGlzdCwgKnVuaXF1ZU5vZGVJZFNldEltcGwsIG5mYSwgbmZh
Tm9kZUNsb3N1cmVzKTsKKyAgICAgICAgY3JlYXRlQ29tYmluZWRUcmFuc2l0aW9uKGNvbWJpbmVk
UmFuZ2VMaXN0LCAqdW5pcXVlTm9kZUlkU2V0SW1wbCwgKnNlcmlhbGl6ZWRORkEsIG5mYU5vZGVD
bG9zdXJlcyk7CiAKICAgICAgICAgdW5zaWduZWQgdHJhbnNpdGlvbnNTdGFydCA9IGRmYS50cmFu
c2l0aW9uUmFuZ2VzLnNpemUoKTsKICAgICAgICAgZm9yIChjb25zdCBORkFOb2RlUmFuZ2UmIHJh
bmdlIDogY29tYmluZWRSYW5nZUxpc3QpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIHRhcmdldE5v
ZGVJZCA9IGdldE9yQ3JlYXRlREZBTm9kZShyYW5nZS5kYXRhLCBuZmEsIGRmYSwgdW5pcXVlTm9k
ZUlkU2V0VGFibGUsIHVucHJvY2Vzc2VkTm9kZXMpOworICAgICAgICAgICAgdW5zaWduZWQgdGFy
Z2V0Tm9kZUlkID0gZ2V0T3JDcmVhdGVERkFOb2RlKHJhbmdlLmRhdGEsICpzZXJpYWxpemVkTkZB
LCBkZmEsIHVuaXF1ZU5vZGVJZFNldFRhYmxlLCB1bnByb2Nlc3NlZE5vZGVzKTsKICAgICAgICAg
ICAgIGRmYS50cmFuc2l0aW9uUmFuZ2VzLmFwcGVuZCh7IHJhbmdlLmZpcnN0LCByYW5nZS5sYXN0
IH0pOwogICAgICAgICAgICAgZGZhLnRyYW5zaXRpb25EZXN0aW5hdGlvbnMuYXBwZW5kKHRhcmdl
dE5vZGVJZCk7CiAgICAgICAgIH0KQEAgLTM2MCw4ICszNjEsNyBAQCBERkEgTkZBVG9ERkE6OmNv
bnZlcnQoTkZBJiBuZmEpCiAgICAgICAgIGRmYVNvdXJjZU5vZGUuc2V0VHJhbnNpdGlvbnModHJh
bnNpdGlvbnNTdGFydCwgc3RhdGljX2Nhc3Q8dWludDhfdD4odHJhbnNpdGlvbnNMZW5ndGgpKTsK
ICAgICB9IHdoaWxlICghdW5wcm9jZXNzZWROb2Rlcy5pc0VtcHR5KCkpOwogCi0gICAgZGZhLnNo
cmlua1RvRml0KCk7Ci0gICAgcmV0dXJuIGRmYTsKKyAgICByZXR1cm4gV1RGTW92ZShkZmEpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuaCBiL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL05GQVRvREZBLmgKaW5kZXggOGJlZTQ4ODIzNmJhMzJlY2Y4YzhkNjg2
MTlkYTI1NjZiOTI3YTg4Ny4uOWZkM2ExZDNkOTk2NzUwMjk0NmRiN2E3MTJjYzNiMDQzMzBlNmQ0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5oCkBAIC0z
OCw3ICszOCw3IEBAIHN0cnVjdCBORkE7CiAvLyBORkFUb0RGQSBwcm92aWRlcyBhIHdheSB0byBi
dWlsZCBhIERGQSBjb3JyZXNwb25kaW5nIHRvIGEgTkZBLgogY2xhc3MgTkZBVG9ERkEgewogcHVi
bGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBERkEgY29udmVydChORkEmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8REZBPiBjb252ZXJ0KE5GQSYmKTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9TZXJpYWxpemVkTkZBLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyZDRjYmUw
NWRhZTBkZGNkYTI3OTlkMDVkMjQwNDhiNGQ3YmY1OWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9TZXJpYWxpemVkTkZBLmNwcApAQCAtMCwwICsx
LDEzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTZXJp
YWxpemVkTkZBLmgiCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CituYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMgeworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgorYm9vbCB3cml0ZUFsbFRvRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgZmlsZSwgY29uc3QgVCYgY29udGFpbmVyKQoreworICAgIGNvbnN0IGNoYXIqIGJ5dGVz
ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29udGFpbmVyLmRhdGEoKSk7CisgICAg
c2l6ZV90IGJ5dGVzTGVuZ3RoID0gY29udGFpbmVyLnNpemUoKSAqIHNpemVvZihjb250YWluZXJb
MF0pOworICAgIGNvbnN0IGNoYXIqIGVuZCA9IGJ5dGVzICsgYnl0ZXNMZW5ndGg7CisgICAgd2hp
bGUgKGJ5dGVzIDwgZW5kKSB7CisgICAgICAgIGF1dG8gd3JpdHRlbiA9IEZpbGVTeXN0ZW06Ondy
aXRlVG9GaWxlKGZpbGUsIGJ5dGVzLCBieXRlc0xlbmd0aCk7CisgICAgICAgIGlmICh3cml0dGVu
ID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBieXRlcyArPSB3cml0
dGVuOworICAgICAgICBieXRlc0xlbmd0aCAtPSB3cml0dGVuOworICAgIH0KKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworT3B0aW9uYWw8U2VyaWFsaXplZE5GQT4gU2VyaWFsaXplZE5GQTo6c2VyaWFs
aXplKE5GQSYmIG5mYSkKK3sKKyAgICBhdXRvIGZpbGUgPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlOworICAgIGF1dG8gZmlsZW5hbWUgPSBGaWxlU3lzdGVtOjpvcGVuVGVt
cG9yYXJ5RmlsZSgiU2VyaWFsaXplZE5GQSIsIGZpbGUpOworICAgIGlmICghRmlsZVN5c3RlbTo6
aXNIYW5kbGVWYWxpZChmaWxlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IGJvb2wgd3JvdGVTdWNjZXNzZnVsbHkgPSB3cml0ZUFsbFRvRmlsZShmaWxlLCBuZmEubm9kZXMp
CisgICAgICAgICYmIHdyaXRlQWxsVG9GaWxlKGZpbGUsIG5mYS50cmFuc2l0aW9ucykKKyAgICAg
ICAgJiYgd3JpdGVBbGxUb0ZpbGUoZmlsZSwgbmZhLnRhcmdldHMpCisgICAgICAgICYmIHdyaXRl
QWxsVG9GaWxlKGZpbGUsIG5mYS5lcHNpbG9uVHJhbnNpdGlvbnNUYXJnZXRzKQorICAgICAgICAm
JiB3cml0ZUFsbFRvRmlsZShmaWxlLCBuZmEuYWN0aW9ucyk7CisgICAgaWYgKCF3cm90ZVN1Y2Nl
c3NmdWxseSkgeworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CisgICAgICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZW5hbWUpOworICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIH0KKworICAgIGJvb2wgbWFwcGVkU3VjY2Vzc2Z1bGx5ID0gZmFsc2U7Cisg
ICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZShmaWxlLCBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgbWFwcGVkU3VjY2Vzc2Z1bGx5KTsKKyAgICBGaWxl
U3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxl
bmFtZSk7CisgICAgaWYgKCFtYXBwZWRTdWNjZXNzZnVsbHkpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBNZXRhZGF0YSBtZXRhZGF0YSB7CisgICAgICAgIG5mYS5ub2Rlcy5z
aXplKCksCisgICAgICAgIG5mYS50cmFuc2l0aW9ucy5zaXplKCksCisgICAgICAgIG5mYS50YXJn
ZXRzLnNpemUoKSwKKyAgICAgICAgbmZhLmVwc2lsb25UcmFuc2l0aW9uc1RhcmdldHMuc2l6ZSgp
LAorICAgICAgICBuZmEuYWN0aW9ucy5zaXplKCksCisgICAgICAgIDAsCisgICAgICAgIG5mYS5u
b2Rlcy5zaXplKCkgKiBzaXplb2YobmZhLm5vZGVzWzBdKSwKKyAgICAgICAgbmZhLm5vZGVzLnNp
emUoKSAqIHNpemVvZihuZmEubm9kZXNbMF0pCisgICAgICAgICAgICArIG5mYS50cmFuc2l0aW9u
cy5zaXplKCkgKiBzaXplb2YobmZhLnRyYW5zaXRpb25zWzBdKSwKKyAgICAgICAgbmZhLm5vZGVz
LnNpemUoKSAqIHNpemVvZihuZmEubm9kZXNbMF0pCisgICAgICAgICAgICArIG5mYS50cmFuc2l0
aW9ucy5zaXplKCkgKiBzaXplb2YobmZhLnRyYW5zaXRpb25zWzBdKQorICAgICAgICAgICAgKyBu
ZmEudGFyZ2V0cy5zaXplKCkgKiBzaXplb2YobmZhLnRhcmdldHNbMF0pLAorICAgICAgICBuZmEu
bm9kZXMuc2l6ZSgpICogc2l6ZW9mKG5mYS5ub2Rlc1swXSkKKyAgICAgICAgICAgICsgbmZhLnRy
YW5zaXRpb25zLnNpemUoKSAqIHNpemVvZihuZmEudHJhbnNpdGlvbnNbMF0pCisgICAgICAgICAg
ICArIG5mYS50YXJnZXRzLnNpemUoKSAqIHNpemVvZihuZmEudGFyZ2V0c1swXSkKKyAgICAgICAg
ICAgICsgbmZhLmVwc2lsb25UcmFuc2l0aW9uc1RhcmdldHMuc2l6ZSgpICogc2l6ZW9mKG5mYS5l
cHNpbG9uVHJhbnNpdGlvbnNUYXJnZXRzWzBdKQorICAgIH07CisKKyAgICBuZmEuY2xlYXIoKTsK
KworICAgIHJldHVybiB7eyBXVEZNb3ZlKG1hcHBlZEZpbGUpLCBXVEZNb3ZlKG1ldGFkYXRhKSB9
fTsKK30KKworU2VyaWFsaXplZE5GQTo6U2VyaWFsaXplZE5GQShGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIGZpbGUsIE1ldGFkYXRhJiYgbWV0YWRhdGEpCisgICAgOiBtX2ZpbGUoV1RGTW92
ZShmaWxlKSkKKyAgICAsIG1fbWV0YWRhdGEoV1RGTW92ZShtZXRhZGF0YSkpCit7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+Citjb25zdCBUKiBTZXJpYWxpemVkTkZBOjpwb2ludGVyQXRPZmZz
ZXRJbkZpbGUoc2l6ZV90IG9mZnNldCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBUKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obV9maWxlLmRh
dGEoKSkgKyBvZmZzZXQpOworfQorCithdXRvIFNlcmlhbGl6ZWRORkE6Om5vZGVzKCkgY29uc3Qg
LT4gY29uc3QgUmFuZ2U8SW1tdXRhYmxlTkZBTm9kZT4KK3sKKyAgICByZXR1cm4geyBwb2ludGVy
QXRPZmZzZXRJbkZpbGU8SW1tdXRhYmxlTkZBTm9kZT4obV9tZXRhZGF0YS5ub2Rlc09mZnNldCks
IG1fbWV0YWRhdGEubm9kZXNTaXplIH07Cit9CisKK2F1dG8gU2VyaWFsaXplZE5GQTo6dHJhbnNp
dGlvbnMoKSBjb25zdCAtPiBjb25zdCBSYW5nZTxJbW11dGFibGVSYW5nZTxjaGFyPj4KK3sKKyAg
ICByZXR1cm4geyBwb2ludGVyQXRPZmZzZXRJbkZpbGU8SW1tdXRhYmxlUmFuZ2U8Y2hhcj4+KG1f
bWV0YWRhdGEudHJhbnNpdGlvbnNPZmZzZXQpLCBtX21ldGFkYXRhLnRyYW5zaXRpb25zU2l6ZSB9
OworfQorCithdXRvIFNlcmlhbGl6ZWRORkE6OnRhcmdldHMoKSBjb25zdCAtPiBjb25zdCBSYW5n
ZTx1aW50MzJfdD4KK3sKKyAgICByZXR1cm4geyBwb2ludGVyQXRPZmZzZXRJbkZpbGU8dWludDMy
X3Q+KG1fbWV0YWRhdGEudGFyZ2V0c09mZnNldCksIG1fbWV0YWRhdGEudGFyZ2V0c1NpemUgfTsK
K30KKworYXV0byBTZXJpYWxpemVkTkZBOjplcHNpbG9uVHJhbnNpdGlvbnNUYXJnZXRzKCkgY29u
c3QgLT4gY29uc3QgUmFuZ2U8dWludDMyX3Q+Cit7CisgICAgcmV0dXJuIHsgcG9pbnRlckF0T2Zm
c2V0SW5GaWxlPHVpbnQzMl90PihtX21ldGFkYXRhLmVwc2lsb25UcmFuc2l0aW9uc1RhcmdldHNP
ZmZzZXQpLCBtX21ldGFkYXRhLmVwc2lsb25UcmFuc2l0aW9uc1RhcmdldHNTaXplIH07Cit9CisK
K2F1dG8gU2VyaWFsaXplZE5GQTo6YWN0aW9ucygpIGNvbnN0IC0+IGNvbnN0IFJhbmdlPHVpbnQ2
NF90PgoreworICAgIHJldHVybiB7IHBvaW50ZXJBdE9mZnNldEluRmlsZTx1aW50NjRfdD4obV9t
ZXRhZGF0YS5hY3Rpb25zT2Zmc2V0KSwgbV9tZXRhZGF0YS5hY3Rpb25zU2l6ZSB9OworfQorCit9
IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuaCBiL1NvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTBjYmRi
NjE2YjlkODEyZDk2NzRhNzgzYzQ0MTViM2Y3YzM2MTMwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5oCkBAIC0wLDAgKzEs
MTkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9F
WFRFTlNJT05TKQorCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKKworc3RydWN0IE5GQTsKKwor
Y2xhc3MgU2VyaWFsaXplZE5GQSB7CitwdWJsaWM6CisgICAgc3RhdGljIE9wdGlvbmFsPFNlcmlh
bGl6ZWRORkE+IHNlcmlhbGl6ZShORkEmJik7CisgICAgU2VyaWFsaXplZE5GQShTZXJpYWxpemVk
TkZBJiYpID0gZGVmYXVsdDsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgY2xhc3Mg
UmFuZ2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgUmFuZ2UoY29uc3QgVCogYmVnaW4sIHNpemVf
dCBzaXplKQorICAgICAgICAgICAgOiBtX2JlZ2luKGJlZ2luKQorICAgICAgICAgICAgLCBtX3Np
emUoc2l6ZSkgeyB9CisgICAgICAgIGNvbnN0IFQqIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9i
ZWdpbjsgfQorICAgICAgICBjb25zdCBUKiBlbmQoKSBjb25zdCB7IHJldHVybiBtX2JlZ2luICsg
bV9zaXplOyB9CisgICAgICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9
CisgICAgICAgIGNvbnN0IFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0CisgICAgICAgIHsK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGkgPCBtX3NpemUpOworICAgICAgICAgICAgcmV0
dXJuIGJlZ2luKClbaV07CisgICAgICAgIH0KKyAgICBwcml2YXRlOgorICAgICAgICBjb25zdCBU
KiBtX2JlZ2luIHsgbnVsbHB0ciB9OworICAgICAgICBzaXplX3QgbV9zaXplIHsgMCB9OworICAg
IH07CisKKyAgICBjb25zdCBSYW5nZTxJbW11dGFibGVORkFOb2RlPiBub2RlcygpIGNvbnN0Owor
ICAgIGNvbnN0IFJhbmdlPEltbXV0YWJsZVJhbmdlPGNoYXI+PiB0cmFuc2l0aW9ucygpIGNvbnN0
OworICAgIGNvbnN0IFJhbmdlPHVpbnQzMl90PiB0YXJnZXRzKCkgY29uc3Q7CisgICAgY29uc3Qg
UmFuZ2U8dWludDMyX3Q+IGVwc2lsb25UcmFuc2l0aW9uc1RhcmdldHMoKSBjb25zdDsKKyAgICBj
b25zdCBSYW5nZTx1aW50NjRfdD4gYWN0aW9ucygpIGNvbnN0OworCisgICAgdWludDMyX3Qgcm9v
dCgpIGNvbnN0CisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChub2RlcygpLnNpemUoKSk7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHN0cnVjdCBDb25zdFRhcmdldEl0ZXJh
dG9yIHsKKyAgICAgICAgY29uc3QgU2VyaWFsaXplZE5GQSYgc2VyaWFsaXplZE5GQTsKKyAgICAg
ICAgdWludDMyX3QgcG9zaXRpb247CisKKyAgICAgICAgY29uc3QgdWludDMyX3QmIG9wZXJhdG9y
KigpIGNvbnN0IHsgcmV0dXJuIHNlcmlhbGl6ZWRORkEudGFyZ2V0cygpW3Bvc2l0aW9uXTsgfQor
ICAgICAgICBjb25zdCB1aW50MzJfdCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICZzZXJp
YWxpemVkTkZBLnRhcmdldHMoKVtwb3NpdGlvbl07IH0KKworICAgICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQ29uc3RUYXJnZXRJdGVyYXRvciYgb3RoZXIpIGNvbnN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIEFTU0VSVCgmc2VyaWFsaXplZE5GQSA9PSAmb3RoZXIuc2VyaWFsaXplZE5GQSk7
CisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb24gPT0gb3RoZXIucG9zaXRpb247CisgICAgICAg
IH0KKyAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvbnN0VGFyZ2V0SXRlcmF0b3ImIG90
aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorCisgICAgICAgIENvbnN0
VGFyZ2V0SXRlcmF0b3ImIG9wZXJhdG9yKysoKQorICAgICAgICB7CisgICAgICAgICAgICArK3Bv
c2l0aW9uOworICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9CisgICAgfTsKKwor
ICAgIHN0cnVjdCBJdGVyYWJsZUNvbnN0VGFyZ2V0cyB7CisgICAgICAgIGNvbnN0IFNlcmlhbGl6
ZWRORkEmIHNlcmlhbGl6ZWRORkE7CisgICAgICAgIHVpbnQzMl90IHRhcmdldFN0YXJ0OworICAg
ICAgICB1aW50MzJfdCB0YXJnZXRFbmQ7CisKKyAgICAgICAgQ29uc3RUYXJnZXRJdGVyYXRvciBi
ZWdpbigpIGNvbnN0IHsgcmV0dXJuIHsgc2VyaWFsaXplZE5GQSwgdGFyZ2V0U3RhcnQgfTsgfQor
ICAgICAgICBDb25zdFRhcmdldEl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIHsgc2VyaWFs
aXplZE5GQSwgdGFyZ2V0RW5kIH07IH0KKyAgICB9OworCisgICAgc3RydWN0IENvbnN0UmFuZ2VJ
dGVyYXRvciB7CisgICAgICAgIGNvbnN0IFNlcmlhbGl6ZWRORkEmIHNlcmlhbGl6ZWRORkE7Cisg
ICAgICAgIHVpbnQzMl90IHBvc2l0aW9uOworCisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBDb25zdFJhbmdlSXRlcmF0b3ImIG90aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAg
ICBBU1NFUlQoJnNlcmlhbGl6ZWRORkEgPT0gJm90aGVyLnNlcmlhbGl6ZWRORkEpOworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uID09IG90aGVyLnBvc2l0aW9uOworICAgICAgICB9CisgICAg
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb25zdFJhbmdlSXRlcmF0b3ImIG90aGVyKSBjb25z
dCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorCisgICAgICAgIENvbnN0UmFuZ2VJdGVy
YXRvciYgb3BlcmF0b3IrKygpCisgICAgICAgIHsKKyAgICAgICAgICAgICsrcG9zaXRpb247Cisg
ICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIH0KKworICAgICAgICBjaGFyIGZpcnN0
KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHJhbmdlKCkuZmlyc3Q7Cisg
ICAgICAgIH0KKworICAgICAgICBjaGFyIGxhc3QoKSBjb25zdAorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gcmFuZ2UoKS5sYXN0OworICAgICAgICB9CisKKyAgICAgICAgSXRlcmFibGVD
b25zdFRhcmdldHMgZGF0YSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IElt
bXV0YWJsZVJhbmdlPGNoYXI+JiByYW5nZSA9IHRoaXMtPnJhbmdlKCk7CisgICAgICAgICAgICBy
ZXR1cm4geyBzZXJpYWxpemVkTkZBLCByYW5nZS50YXJnZXRTdGFydCwgcmFuZ2UudGFyZ2V0RW5k
IH07CisgICAgICAgIH07CisKKyAgICBwcml2YXRlOgorICAgICAgICBjb25zdCBJbW11dGFibGVS
YW5nZTxjaGFyPiYgcmFuZ2UoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
c2VyaWFsaXplZE5GQS50cmFuc2l0aW9ucygpW3Bvc2l0aW9uXTsKKyAgICAgICAgfQorICAgIH07
CisKKyAgICBzdHJ1Y3QgSXRlcmFibGVDb25zdFJhbmdlIHsKKyAgICAgICAgY29uc3QgU2VyaWFs
aXplZE5GQSYgc2VyaWFsaXplZE5GQTsKKyAgICAgICAgdWludDMyX3QgcmFuZ2VzU3RhcnQ7Cisg
ICAgICAgIHVpbnQzMl90IHJhbmdlc0VuZDsKKworICAgICAgICBDb25zdFJhbmdlSXRlcmF0b3Ig
YmVnaW4oKSBjb25zdCB7IHJldHVybiB7IHNlcmlhbGl6ZWRORkEsIHJhbmdlc1N0YXJ0IH07IH0K
KyAgICAgICAgQ29uc3RSYW5nZUl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIHsgc2VyaWFs
aXplZE5GQSwgcmFuZ2VzRW5kIH07IH0KKworI2lmIENPTlRFTlRfRVhURU5TSU9OU19TVEFURV9N
QUNISU5FX0RFQlVHR0lORworICAgICAgICB2b2lkIGRlYnVnUHJpbnQoKSBjb25zdAorICAgICAg
ICB7CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHJhbmdlIDogKnRoaXMpCisgICAgICAg
ICAgICAgICAgV1RGTG9nQWx3YXlzKCIgICAgJWQtJWQiLCByYW5nZS5maXJzdCwgcmFuZ2UubGFz
dCk7CisgICAgICAgIH0KKyNlbmRpZgorICAgIH07CisKKyAgICBJdGVyYWJsZUNvbnN0UmFuZ2Ug
dHJhbnNpdGlvbnNGb3JOb2RlKHVpbnQzMl90IG5vZGVJZCkgY29uc3QKKyAgICB7CisgICAgICAg
IGNvbnN0IGF1dG8mIG5vZGUgPSBub2RlcygpW25vZGVJZF07CisgICAgICAgIHJldHVybiB7ICp0
aGlzLCBub2RlLnJhbmdlc1N0YXJ0LCBub2RlLnJhbmdlc0VuZCB9OworICAgIH0KKworcHJpdmF0
ZToKKyAgICBzdHJ1Y3QgTWV0YWRhdGEgeworICAgICAgICBzaXplX3Qgbm9kZXNTaXplIHsgMCB9
OworICAgICAgICBzaXplX3QgdHJhbnNpdGlvbnNTaXplIHsgMCB9OworICAgICAgICBzaXplX3Qg
dGFyZ2V0c1NpemUgeyAwIH07CisgICAgICAgIHNpemVfdCBlcHNpbG9uVHJhbnNpdGlvbnNUYXJn
ZXRzU2l6ZSB7IDAgfTsKKyAgICAgICAgc2l6ZV90IGFjdGlvbnNTaXplIHsgMCB9OworCisgICAg
ICAgIHNpemVfdCBub2Rlc09mZnNldCB7IDAgfTsKKyAgICAgICAgc2l6ZV90IHRyYW5zaXRpb25z
T2Zmc2V0IHsgMCB9OworICAgICAgICBzaXplX3QgdGFyZ2V0c09mZnNldCB7IDAgfTsKKyAgICAg
ICAgc2l6ZV90IGVwc2lsb25UcmFuc2l0aW9uc1RhcmdldHNPZmZzZXQgeyAwIH07CisgICAgICAg
IHNpemVfdCBhY3Rpb25zT2Zmc2V0IHsgMCB9OworICAgIH07CisgICAgU2VyaWFsaXplZE5GQShG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmLCBNZXRhZGF0YSYmKTsKKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CisgICAgY29uc3QgVCogcG9pbnRlckF0T2Zmc2V0SW5GaWxlKHNpemVfdCkg
Y29uc3Q7CisgICAgCisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbV9maWxlOworICAg
IE1ldGFkYXRhIG1fbWV0YWRhdGE7Cit9OworCit9IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5z
aW9ucworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRf
RVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW0KaW5kZXggMTY0ZjYwZWNjY2M1ZDY3NjNm
NWE5M2QwNzNjMjhhMjc1MjBkYmI2YS4uNWZmYjM5MjUyMzY1NzVlNTZhZjI2ZjYwNDhkMjEzMDgw
MGQ1NGU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
Q29udGVudFJ1bGVMaXN0U3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW0KQEAgLTE0Niw4ICsxNDYsNyBAQCBzdGF0
aWMgV0tFcnJvckNvZGUgdG9XS0Vycm9yQ29kZShjb25zdCBzdGQ6OmVycm9yX2NvZGUmIGVycm9y
KQogICAgIH0pOwogfQogCi0vLyBOU19SRUxFQVNFU19BUkdVTUVOVCB0byBrZWVwIHBlYWsgbWVt
b3J5IHVzYWdlIGxvdy4KLS0gKHZvaWQpX2NvbXBpbGVDb250ZW50UnVsZUxpc3RGb3JJZGVudGlm
aWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIgZW5jb2RlZENvbnRlbnRSdWxlTGlzdDooTlNTdHJp
bmcgKikgTlNfUkVMRUFTRVNfQVJHVU1FTlQgZW5jb2RlZENvbnRlbnRSdWxlTGlzdCBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoV0tDb250ZW50UnVsZUxpc3QgKiwgTlNFcnJvciAqKSljb21w
bGV0aW9uSGFuZGxlcgorLSAodm9pZClfY29tcGlsZUNvbnRlbnRSdWxlTGlzdEZvcklkZW50aWZp
ZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBlbmNvZGVkQ29udGVudFJ1bGVMaXN0OihOU1N0cmlu
ZyAqKSBlbmNvZGVkQ29udGVudFJ1bGVMaXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShX
S0NvbnRlbnRSdWxlTGlzdCAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAg
U3RyaW5nIGpzb24oZW5jb2RlZENvbnRlbnRSdWxlTGlzdCk7CiAgICAgW2VuY29kZWRDb250ZW50
UnVsZUxpc3QgcmVsZWFzZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlUHJpdmF0ZS5oCmluZGV4
IDkxOGE1YmNjNmFkZjQ4NmYwOTBmN2M4NTliY2JkMjg3N2Y3YjQ2MGQuLjJiYTdhMTk2NzAwYzk4
Y2VmNTE3MjQ2Yzk3YWRjZDdmMGMzMTg1YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlUHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlUHJp
dmF0ZS5oCkBAIC0zMiw4ICszMiw3IEBACiAtICh2b2lkKV9pbnZhbGlkYXRlQ29udGVudFJ1bGVM
aXN0VmVyc2lvbkZvcklkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllcjsKIC0gKHZvaWQp
X2dldENvbnRlbnRSdWxlTGlzdFNvdXJjZUZvcklkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRp
ZmllciBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcqKSljb21wbGV0aW9uSGFu
ZGxlcjsKIAotLy8gTlNfUkVMRUFTRVNfQVJHVU1FTlQgdG8ga2VlcCBwZWFrIG1lbW9yeSB1c2Fn
ZSBsb3cuCi0tICh2b2lkKV9jb21waWxlQ29udGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjooTlNT
dHJpbmcgKilpZGVudGlmaWVyIGVuY29kZWRDb250ZW50UnVsZUxpc3Q6KE5TU3RyaW5nICopIE5T
X1JFTEVBU0VTX0FSR1VNRU5UIGVuY29kZWRDb250ZW50UnVsZUxpc3QgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKFdLQ29udGVudFJ1bGVMaXN0ICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhh
bmRsZXI7CistICh2b2lkKV9jb21waWxlQ29udGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjooTlNT
dHJpbmcgKilpZGVudGlmaWVyIGVuY29kZWRDb250ZW50UnVsZUxpc3Q6KE5TU3RyaW5nICopIGVu
Y29kZWRDb250ZW50UnVsZUxpc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdLQ29udGVu
dFJ1bGVMaXN0ICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXI7CiAKIC8vIFRvIG1haW50
YWluIGNvbXBhdGliaWxpdHkgd2l0aCBfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlCiAvLyBG
SVhNRTogQWRkIHNvbWV0aGluZyB0byBleGlzdGluZyBjbGllbnRzIG9mIF9XS1VzZXJDb250ZW50
RXh0ZW5zaW9uU3RvcmUgdG8gbWlncmF0ZSBmaWxlcyBmcm9tIGxlZ2FjeSBmaWxlbmFtZXMsCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2RjMmVh
MzMwZjZjYzI3ZDJhNTY2YjQwNjBhNjVmNTRhNDRkYjE2ZS4uN2FlNGQxYmE2MmNmZDExY2U5ZDkw
NDQxZGM1YTk5M2Q0MjViODM1YyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTEyLTAyICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2VyaWFsaXplIE5GQSB0
byBkaXNrIGJlZm9yZSBjb252ZXJ0aW5nIGl0IHRvIGEgREZBIHdoZW4gY29tcGlsaW5nIGEgV0tD
b250ZW50UnVsZUxpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxOTQ1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0ZSBzeW50YXggb2YgZXhpc3RpbmcgdGVzdHMsIHdoaWNoIGNvdmVyIGJlaGF2
aW9yIHF1aXRlIHdlbGwuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Q29udGVudEV4dGVuc2lvbnMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlTkZB
cyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9ERkFIZWxwZXJzLmg6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpjcmVhdGVORkFzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmJ1aWxkREZBRnJvbVBhdHRl
cm5zKToKKwogMjAyMC0xMS0zMCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+
CiAKICAgICAgICAgW3dlYmtpdHNjbXB5XSBTdXBwb3J0IHJlbW90ZSByZXBvc2l0b3JpZXMgaW4g
Z2l0LXdlYmtpdApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0NvbnRlbnRFeHRlbnNpb25zLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKaW5kZXggODZjNmRiY2M2MzE4ODA5YmQzYzFlNjQ2OWJj
NzRiMTE3MThlODhiNC4uNzZkZTA1NDEwOTM5YWNkZGQ3NjgxNmE4MDY3OTk3NTIzM2Y4MmY0NyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRl
bnNpb25zLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVu
dEV4dGVuc2lvbnMuY3BwCkBAIC0yMjcsMTEgKzIyNywxMCBAQCBDb250ZW50RXh0ZW5zaW9uczo6
Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kIG1ha2VCYWNrZW5kKGNvbnN0IGNoYXIqIGpzb24pCiBz
dGF0aWMgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpORkE+IGNyZWF0ZU5GQXMoQ29udGVudEV4
dGVuc2lvbnM6OkNvbWJpbmVkVVJMRmlsdGVycyYgY29tYmluZWRVUkxGaWx0ZXJzKQogewogICAg
IFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uczo6TkZBPiBuZmFzOwotCiAgICAgY29tYmluZWRVUkxG
aWx0ZXJzLnByb2Nlc3NORkFzKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCksIFsm
XShDb250ZW50RXh0ZW5zaW9uczo6TkZBJiYgbmZhKSB7CiAgICAgICAgIG5mYXMuYXBwZW5kKFdU
Rk1vdmUobmZhKSk7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0pOwotCiAgICAgcmV0dXJu
IG5mYXM7CiB9CiAKQEAgLTU3Niw3ICs1NzUsNyBAQCBURVNUX0YoQ29udGVudEV4dGVuc2lvblRl
c3QsIFNlYXJjaFN1ZmZpeGVzV2l0aElkZW50aWNhbEFjdGlvbkFyZU1lcmdlZCkKICAgICBFWFBF
Q1RfRVEoMXVsLCBuZmFzLnNpemUoKSk7CiAgICAgRVhQRUNUX0VRKDEydWwsIG5mYXMuZmlyc3Qo
KS5ub2Rlcy5zaXplKCkpOwogCi0gICAgQ29udGVudEV4dGVuc2lvbnM6OkRGQSBkZmEgPSBDb250
ZW50RXh0ZW5zaW9uczo6TkZBVG9ERkE6OmNvbnZlcnQobmZhcy5maXJzdCgpKTsKKyAgICBDb250
ZW50RXh0ZW5zaW9uczo6REZBIGRmYSA9ICpDb250ZW50RXh0ZW5zaW9uczo6TkZBVG9ERkE6OmNv
bnZlcnQoV1RGTW92ZShuZmFzLmZpcnN0KCkpKTsKICAgICBWZWN0b3I8Q29udGVudEV4dGVuc2lv
bnM6OkRGQUJ5dGVjb2RlPiBieXRlY29kZTsKICAgICBDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0
ZWNvZGVDb21waWxlciBjb21waWxlcihkZmEsIGJ5dGVjb2RlKTsKICAgICBjb21waWxlci5jb21w
aWxlKCk7CkBAIC02MDIsNyArNjAxLDcgQEAgVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBT
ZWFyY2hTdWZmaXhlc1dpdGhEaXN0aW5ndWlzaGFibGVBY3Rpb25BcmVOb3RNZXJnZWQKICAgICBF
WFBFQ1RfRVEoMXVsLCBuZmFzLnNpemUoKSk7CiAgICAgRVhQRUNUX0VRKDE3dWwsIG5mYXMuZmly
c3QoKS5ub2Rlcy5zaXplKCkpOwogCi0gICAgQ29udGVudEV4dGVuc2lvbnM6OkRGQSBkZmEgPSBD
b250ZW50RXh0ZW5zaW9uczo6TkZBVG9ERkE6OmNvbnZlcnQobmZhcy5maXJzdCgpKTsKKyAgICBD
b250ZW50RXh0ZW5zaW9uczo6REZBIGRmYSA9ICpDb250ZW50RXh0ZW5zaW9uczo6TkZBVG9ERkE6
OmNvbnZlcnQoV1RGTW92ZShuZmFzLmZpcnN0KCkpKTsKICAgICBWZWN0b3I8Q29udGVudEV4dGVu
c2lvbnM6OkRGQUJ5dGVjb2RlPiBieXRlY29kZTsKICAgICBDb250ZW50RXh0ZW5zaW9uczo6REZB
Qnl0ZWNvZGVDb21waWxlciBjb21waWxlcihkZmEsIGJ5dGVjb2RlKTsKICAgICBjb21waWxlci5j
b21waWxlKCk7CkBAIC0xMTI1LDcgKzExMjQsNyBAQCBURVNUX0YoQ29udGVudEV4dGVuc2lvblRl
c3QsIFVzZWxlc3NUZXJtc01hdGNoaW5nRXZlcnl0aGluZ0FyZUVsaW1pbmF0ZWQpCiAgICAgRVhQ
RUNUX0VRKDF1bCwgbmZhcy5zaXplKCkpOwogICAgIEVYUEVDVF9FUSg3dWwsIG5mYXMuZmlyc3Qo
KS5ub2Rlcy5zaXplKCkpOwogCi0gICAgQ29udGVudEV4dGVuc2lvbnM6OkRGQSBkZmEgPSBDb250
ZW50RXh0ZW5zaW9uczo6TkZBVG9ERkE6OmNvbnZlcnQobmZhcy5maXJzdCgpKTsKKyAgICBDb250
ZW50RXh0ZW5zaW9uczo6REZBIGRmYSA9ICpDb250ZW50RXh0ZW5zaW9uczo6TkZBVG9ERkE6OmNv
bnZlcnQoV1RGTW92ZShuZmFzLmZpcnN0KCkpKTsKICAgICBWZWN0b3I8Q29udGVudEV4dGVuc2lv
bnM6OkRGQUJ5dGVjb2RlPiBieXRlY29kZTsKICAgICBDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0
ZWNvZGVDb21waWxlciBjb21waWxlcihkZmEsIGJ5dGVjb2RlKTsKICAgICBjb21waWxlci5jb21w
aWxlKCk7CkBAIC0xMjcxLDEyICsxMjcwLDEzIEBAIFRFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVz
dCwgTGFyZ2VKdW1wcykKICAgICBWZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6Ok5GQT4gbmZhczsK
ICAgICBjb21iaW5lZFVSTEZpbHRlcnMucHJvY2Vzc05GQXMoc3RkOjpudW1lcmljX2xpbWl0czxz
aXplX3Q+OjptYXgoKSwgWyZdKENvbnRlbnRFeHRlbnNpb25zOjpORkEmJiBuZmEpIHsKICAgICAg
ICAgbmZhcy5hcHBlbmQoV1RGTW92ZShuZmEpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fSk7CiAgICAgRVhQRUNUX0VRKG5mYXMuc2l6ZSgpLCAxdWxsKTsKICAgICAKICAgICBWZWN0b3I8
Q29udGVudEV4dGVuc2lvbnM6OkRGQT4gZGZhczsKLSAgICBmb3IgKGF1dG8mIG5mYSA6IG5mYXMp
Ci0gICAgICAgIGRmYXMuYXBwZW5kKENvbnRlbnRFeHRlbnNpb25zOjpORkFUb0RGQTo6Y29udmVy
dChuZmEpKTsKKyAgICBmb3IgKGF1dG8mJiBuZmEgOiBXVEZNb3ZlKG5mYXMpKQorICAgICAgICBk
ZmFzLmFwcGVuZCgqQ29udGVudEV4dGVuc2lvbnM6Ok5GQVRvREZBOjpjb252ZXJ0KFdURk1vdmUo
bmZhKSkpOwogICAgIEVYUEVDVF9FUShkZmFzLnNpemUoKSwgMXVsbCk7CiAgICAgCiAgICAgVmVj
dG9yPENvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZT4gY29tYmluZWRCeXRlY29kZTsKQEAg
LTE2ODUsMTIgKzE2ODUsMTMgQEAgVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBTcGxpdHRp
bmdMYXJnZU5GQXMpCiAgICAgICAgIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uczo6TkZBPiBuZmFz
OwogICAgICAgICBjb21iaW5lZFVSTEZpbHRlcnMucHJvY2Vzc05GQXMoaSwgWyZdKENvbnRlbnRF
eHRlbnNpb25zOjpORkEmJiBuZmEpIHsKICAgICAgICAgICAgIG5mYXMuYXBwZW5kKFdURk1vdmUo
bmZhKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSk7CiAgICAgICAgIEVY
UEVDVF9FUShuZmFzLnNpemUoKSwgZXhwZWN0ZWRORkFDb3VudHNbaV0pOwogICAgICAgICAKICAg
ICAgICAgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpERkE+IGRmYXM7Ci0gICAgICAgIGZvciAo
YXV0byYgbmZhIDogbmZhcykKLSAgICAgICAgICAgIGRmYXMuYXBwZW5kKENvbnRlbnRFeHRlbnNp
b25zOjpORkFUb0RGQTo6Y29udmVydChuZmEpKTsKKyAgICAgICAgZm9yIChhdXRvJiBuZmEgOiBX
VEZNb3ZlKG5mYXMpKQorICAgICAgICAgICAgZGZhcy5hcHBlbmQoKkNvbnRlbnRFeHRlbnNpb25z
OjpORkFUb0RGQTo6Y29udmVydChXVEZNb3ZlKG5mYSkpKTsKICAgICAgICAgCiAgICAgICAgIFZl
Y3RvcjxDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGU+IGNvbWJpbmVkQnl0ZWNvZGU7CiAg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgZGZhIDogZGZhcykgewpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0RGQUhlbHBlcnMuaCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9ERkFIZWxwZXJzLmgKaW5kZXggZGExZmFiZGYzY2EwODkyYTI3
YWQxZjhlYzA3M2VhMTNhNjk0OGZiMC4uMWQ1OTkwOTEwMDY5NDA1NTZmMzJiOThkOTQ2ZTM0OGYx
ZjdjZGU3ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0RG
QUhlbHBlcnMuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvREZBSGVs
cGVycy5oCkBAIC00NywxMSArNDcsMTAgQEAgc3RhdGljIHVuc2lnbmVkIGNvdW50TGl2ZU5vZGVz
KGNvbnN0IENvbnRlbnRFeHRlbnNpb25zOjpERkEmIGRmYSkKIHN0YXRpYyBWZWN0b3I8Q29udGVu
dEV4dGVuc2lvbnM6Ok5GQT4gY3JlYXRlTkZBcyhDb250ZW50RXh0ZW5zaW9uczo6Q29tYmluZWRV
UkxGaWx0ZXJzJiBjb21iaW5lZFVSTEZpbHRlcnMpCiB7CiAgICAgVmVjdG9yPENvbnRlbnRFeHRl
bnNpb25zOjpORkE+IG5mYXM7Ci0KICAgICBjb21iaW5lZFVSTEZpbHRlcnMucHJvY2Vzc05GQXMo
c3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSwgWyZdKENvbnRlbnRFeHRlbnNpb25z
OjpORkEmJiBuZmEpIHsKICAgICAgICAgbmZhcy5hcHBlbmQoV1RGTW92ZShuZmEpKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfSk7Ci0KICAgICByZXR1cm4gbmZhczsKIH0KIApAQCAtNjMs
NyArNjIsOCBAQCBzdGF0aWMgQ29udGVudEV4dGVuc2lvbnM6OkRGQSBidWlsZERGQUZyb21QYXR0
ZXJucyhWZWN0b3I8Y29uc3QgY2hhcio+IHBhdHRlcm5zKQogICAgIGZvciAoY29uc3QgY2hhciog
cGF0dGVybiA6IHBhdHRlcm5zKQogICAgICAgICBwYXJzZXIuYWRkUGF0dGVybihwYXR0ZXJuLCBm
YWxzZSwgMCk7CiAgICAgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpORkE+IG5mYXMgPSBjcmVh
dGVORkFzKGNvbWJpbmVkVVJMRmlsdGVycyk7Ci0gICAgcmV0dXJuIENvbnRlbnRFeHRlbnNpb25z
OjpORkFUb0RGQTo6Y29udmVydChuZmFzWzBdKTsKKyAgICBFWFBFQ1RfRVEoMXVsLCBuZmFzLnNp
emUoKSk7CisgICAgcmV0dXJuICpDb250ZW50RXh0ZW5zaW9uczo6TkZBVG9ERkE6OmNvbnZlcnQo
V1RGTW92ZShuZmFzLmZpcnN0KCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415251</attachid>
            <date>2020-12-02 13:49:11 -0800</date>
            <delta_ts>2020-12-03 16:01:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219452-20201202134910.patch</filename>
            <type>text/plain</type>
            <size>55682</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk1ZDMzOTQxM2I3NWZj
MGY3OWMyY2NlNTE3MTk2MzRlZDM2ZTRmMi4uYWQ0MzRiNjJkYjIzMTdiMDg2ZTliYzJlNzc0MDhk
MmVjOTA0NjUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDIwLTEyLTAyICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2VyaWFs
aXplIE5GQSB0byBkaXNrIGJlZm9yZSBjb252ZXJ0aW5nIGl0IHRvIGEgREZBIHdoZW4gY29tcGls
aW5nIGEgV0tDb250ZW50UnVsZUxpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxOTQ1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgZGVjcmVhc2VzIG1heGltdW0gbWVtb3J5IHVzZSBieSBhYm91
dCA1MCUgYmVjYXVzZSB0aGUgTkZBIGFuZCBERkEgbmV2ZXIgbmVlZCB0byBiZSBpbiBtZW1vcnkg
YXQgdGhlIHNhbWUgdGltZS4KKyAgICAgICAgSSdsbCBoYXZlIHRvIGRvIHNvbWUgdHVuaW5nIGFu
ZCBvbi1kZXZpY2UgbWVhc3VyZW1lbnQsIGJ1dCB0aGlzIG1heSBhbGxvdyB1cyB0byBpbmNyZWFz
ZSBtYXhSdWxlQ291bnQuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbWJpbmVkVVJMRmlsdGVyczo6cHJv
Y2Vzc05GQXMpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVy
cy5oOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Y29tcGlsZVRvQnl0
ZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmNvbXBpbGVSdWxl
TGlzdCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpjb250ZW50RXh0ZW5z
aW9uRXJyb3JDYXRlZ29yeSk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvbkVycm9yLmg6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVu
c2lvbnNEZWJ1Z2dpbmcuaDoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQTo6c2hyaW5rVG9GaXQpOiBE
ZWxldGVkLgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQS5oOgorICAgICAgICAqIGNv
bnRlbnRleHRlbnNpb25zL0ltbXV0YWJsZU5GQS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OkltbXV0YWJsZU5GQTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OkltbXV0YWJsZU5GQTo6Q29uc3RUYXJnZXRJdGVyYXRvcjo6b3BlcmF0
b3IqIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpJbW11dGFibGVORkE6OkNvbnN0VGFyZ2V0SXRlcmF0b3I6Om9wZXJhdG9yLT4gY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkltbXV0YWJsZU5G
QTo6Q29uc3RUYXJnZXRJdGVyYXRvcjo6b3BlcmF0b3I9PSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6SW1tdXRhYmxlTkZBOjpDb25zdFRhcmdl
dEl0ZXJhdG9yOjpvcGVyYXRvciE9IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpJbW11dGFibGVORkE6OkNvbnN0VGFyZ2V0SXRlcmF0b3I6Om9w
ZXJhdG9yKyspOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OkltbXV0YWJsZU5GQTo6SXRlcmFibGVDb25zdFRhcmdldHM6OmJlZ2luIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpJbW11dGFibGVORkE6Okl0
ZXJhYmxlQ29uc3RUYXJnZXRzOjplbmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEV4dGVuc2lvbnM6OkltbXV0YWJsZU5GQTo6Q29uc3RSYW5nZUl0ZXJhdG9yOjpv
cGVyYXRvcj09IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpJbW11dGFibGVORkE6OkNvbnN0UmFuZ2VJdGVyYXRvcjo6b3BlcmF0b3IhPSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6SW1tdXRh
YmxlTkZBOjpDb25zdFJhbmdlSXRlcmF0b3I6Om9wZXJhdG9yKyspOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkltbXV0YWJsZU5GQTo6Q29uc3RSYW5nZUl0
ZXJhdG9yOjpmaXJzdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RXh0ZW5zaW9uczo6SW1tdXRhYmxlTkZBOjpDb25zdFJhbmdlSXRlcmF0b3I6Omxhc3QgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkltbXV0YWJs
ZU5GQTo6Q29uc3RSYW5nZUl0ZXJhdG9yOjpkYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpJbW11dGFibGVORkE6OkNvbnN0UmFuZ2VJdGVy
YXRvcjo6cmFuZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OkltbXV0YWJsZU5GQTo6SXRlcmFibGVDb25zdFJhbmdlOjpiZWdpbiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6SW1tdXRhYmxl
TkZBOjpJdGVyYWJsZUNvbnN0UmFuZ2U6OmVuZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6SW1tdXRhYmxlTkZBOjpJdGVyYWJsZUNvbnN0UmFu
Z2U6OmRlYnVnUHJpbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OkltbXV0YWJsZU5GQTo6dHJhbnNpdGlvbnNGb3JOb2RlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpJbW11dGFibGVORkE6
OnJvb3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OkltbXV0YWJsZU5GQTo6ZmluYWxpemUpOiBEZWxldGVkLgorICAgICAgICAqIGNvbnRlbnRl
eHRlbnNpb25zL0ltbXV0YWJsZU5GQU5vZGVCdWlsZGVyLmg6CisgICAgICAgICogY29udGVudGV4
dGVuc2lvbnMvTkZBVG9ERkEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OmVwc2lsb25DbG9zdXJlRXhjbHVkaW5nU2VsZik6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6cmVzb2x2ZUVwc2lsb25DbG9zdXJlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6Tm9kZUlkU2V0VG9VbmlxdWVOb2RlSWRTZXRTb3VyY2U6Ok5v
ZGVJZFNldFRvVW5pcXVlTm9kZUlkU2V0U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRFeHRlbnNpb25zOjpOb2RlSWRTZXRUb1VuaXF1ZU5vZGVJZFNldFRyYW5zbGF0b3I6OnRyYW5z
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Y3JlYXRlQ29tYmlu
ZWRUcmFuc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpnZXRP
ckNyZWF0ZURGQU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Ok5G
QVRvREZBOjpjb252ZXJ0KToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5o
OgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjp3cml0ZUFsbFRvRmlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6U2VyaWFsaXplZE5GQTo6c2VyaWFs
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpTZXJpYWxpemVkTkZB
OjpTZXJpYWxpemVkTkZBKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpT
ZXJpYWxpemVkTkZBOjpwb2ludGVyQXRPZmZzZXRJbkZpbGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRORkE6Om5vZGVzIGNvbnN0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpTZXJpYWxpemVkTkZBOjp0
cmFuc2l0aW9ucyBjb25zdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5z
aW9uczo6U2VyaWFsaXplZE5GQTo6dGFyZ2V0cyBjb25zdCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6U2VyaWFsaXplZE5GQTo6ZXBzaWxvblRyYW5zaXRpb25z
VGFyZ2V0cyBjb25zdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6U2VyaWFsaXplZE5GQTo6YWN0aW9ucyBjb25zdCBjb25zdCk6CisgICAgICAgICogY29udGVu
dGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9JbW11dGFibGVORkEuaC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRFeHRlbnNpb25zOjpTZXJpYWxpemVkTkZBOjpSYW5nZTo6UmFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRORkE6OlJhbmdlOjpiZWdpbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6U2VyaWFsaXplZE5GQTo6
UmFuZ2U6OmVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
U2VyaWFsaXplZE5GQTo6UmFuZ2U6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRORkE6OlJhbmdlOjpvcGVyYXRvcltdIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpTZXJpYWxpemVkTkZBOjpyb290
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpTZXJpYWxpemVk
TkZBOjpDb25zdFRhcmdldEl0ZXJhdG9yOjpvcGVyYXRvciogY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRORkE6OkNvbnN0VGFyZ2V0SXRlcmF0
b3I6Om9wZXJhdG9yLT4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OlNlcmlhbGl6ZWRORkE6OkNvbnN0VGFyZ2V0SXRlcmF0b3I6Om9wZXJhdG9yPT0gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRORkE6OkNv
bnN0VGFyZ2V0SXRlcmF0b3I6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRORkE6OkNvbnN0VGFyZ2V0SXRlcmF0b3I6Om9w
ZXJhdG9yKyspOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6
ZWRORkE6Okl0ZXJhYmxlQ29uc3RUYXJnZXRzOjpiZWdpbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6U2VyaWFsaXplZE5GQTo6SXRlcmFibGVDb25zdFRhcmdl
dHM6OmVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6U2Vy
aWFsaXplZE5GQTo6Q29uc3RSYW5nZUl0ZXJhdG9yOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpTZXJpYWxpemVkTkZBOjpDb25zdFJhbmdl
SXRlcmF0b3I6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OlNlcmlhbGl6ZWRORkE6OkNvbnN0UmFuZ2VJdGVyYXRvcjo6b3BlcmF0b3IrKyk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6U2VyaWFsaXplZE5GQTo6Q29u
c3RSYW5nZUl0ZXJhdG9yOjpmaXJzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RXh0ZW5zaW9uczo6U2VyaWFsaXplZE5GQTo6Q29uc3RSYW5nZUl0ZXJhdG9yOjpsYXN0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpTZXJpYWxpemVkTkZBOjpD
b25zdFJhbmdlSXRlcmF0b3I6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRORkE6OkNvbnN0UmFuZ2VJdGVyYXRvcjo6cmFuZ2UgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRORkE6
Okl0ZXJhYmxlQ29uc3RSYW5nZTo6YmVnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRORkE6Okl0ZXJhYmxlQ29uc3RSYW5nZTo6ZW5kIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpTZXJpYWxpemVkTkZB
OjpJdGVyYWJsZUNvbnN0UmFuZ2U6OmRlYnVnUHJpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRORkE6OnRyYW5zaXRpb25zRm9yTm9kZSBj
b25zdCk6CisKIDIwMjAtMTItMDIgIFRydWl0dCBTYXZlbGwgIDx0c2F2ZWxsQGFwcGxlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3MDMzOS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzg2
MTE4ODU3ZTZlMjYzZmNhM2JlYTEwNzk2NTU5OThlNjE0NmY2Ny4uMjJhN2MzODBiYjJlZDUwYjdh
MDhjMWQ1MDNiOGU5MDZhOWQ4MTFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0x
Mi0wMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAg
ICAgIFNlcmlhbGl6ZSBORkEgdG8gZGlzayBiZWZvcmUgY29udmVydGluZyBpdCB0byBhIERGQSB3
aGVuIGNvbXBpbGluZyBhIFdLQ29udGVudFJ1bGVMaXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk0NTIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50
UnVsZUxpc3RTdG9yZS5tbToKKyAgICAgICAgKC1bV0tDb250ZW50UnVsZUxpc3RTdG9yZSBfY29t
cGlsZUNvbnRlbnRSdWxlTGlzdEZvcklkZW50aWZpZXI6ZW5jb2RlZENvbnRlbnRSdWxlTGlzdDpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29u
dGVudFJ1bGVMaXN0U3RvcmVQcml2YXRlLmg6CisgICAgICAgIFJlbW92ZSBOU19SRUxFQVNFU19B
UkdVTUVOVCBiZWNhdXNlIGl0IHdhcyBpbmNvcnJlY3QgYW5kIHVubmVjZXNzYXJ5IGJlY2F1c2Ug
dGhlIFdURjo6U3RyaW5nIGlzIGNvcGllZCB0byBhIGJhY2tncm91bmQgdGhyZWFkLgorCiAyMDIw
LTEyLTAyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIGZpeCB0aGUgaU9TIGJ1aWxkIGFmdGVyIHIyNzAzNjIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCmluZGV4IDRhMDQyMjc0ODU0YmFmNDY2NzFhYTMwOWM3Mzg3OWEzNTgxM2QxOWQuLmQ1MmIz
OTI1ZmViMmM2OTlhZjc4OGZiZGY5OTdhNTk5NjQ5YjIwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpA
QCAtMzIzLDYgKzMyMyw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMK
ICAgICBjb250ZW50ZXh0ZW5zaW9ucy9ORkEuaAogICAgIGNvbnRlbnRleHRlbnNpb25zL05GQU5v
ZGUuaAogICAgIGNvbnRlbnRleHRlbnNpb25zL05GQVRvREZBLmgKKyAgICBjb250ZW50ZXh0ZW5z
aW9ucy9TZXJpYWxpemVkTkZBLmgKICAgICBjb250ZW50ZXh0ZW5zaW9ucy9UZXJtLmgKICAgICBj
b250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuaAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDgy
ZGY4ODdiMWIwYzRkNGI4MTJjYmZlNWEwNmRlYWU0MTgxMjBlMmIuLjA2OTZmYTc0YWFjMjc1YjJl
NzIxMDliZjA3ZDUxY2U2MDFkMmQ2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC02NjUsNiArNjY1LDcg
QEAgY29udGVudGV4dGVuc2lvbnMvREZBTWluaW1pemVyLmNwcAogY29udGVudGV4dGVuc2lvbnMv
REZBTm9kZS5jcHAKIGNvbnRlbnRleHRlbnNpb25zL05GQS5jcHAKIGNvbnRlbnRleHRlbnNpb25z
L05GQVRvREZBLmNwcAorY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAKIGNvbnRl
bnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5jcHAKIGNyeXB0by9DcnlwdG9BbGdvcml0aG0u
Y3BwCiBjcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmY4M2FlNTZmMjNm
ODFiZjkxY2Y2MjU1ZDVlZTk3OTBlMmM5YjJjNy4uMGJlNjQyMTQ3ODMxMzM5ZWQ0Yjc1ZThkMzky
ZDIzZTNjNzFjNTdlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtOTQwOSw2ICs5NDA5LDggQEAKIAkJNUIzMDY5NUMxOEIzRDM0
NTAwOTlENUU4IC8qIFdlYkdMRHJhd0J1ZmZlcnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFdlYkdMRHJhd0J1ZmZlcnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzAw
MTUyMTI1MDAxMTAwMDA5NEFBOTMgLyogVGV4dENvZGVjU2luZ2xlQnl0ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0Q29kZWNTaW5nbGVCeXRlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMwMDE1MjMyNTAwMTEwMTAwOTRBQTkzIC8qIFRl
eHRDb2RlY1NpbmdsZUJ5dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4
dENvZGVjU2luZ2xlQnl0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzJFQkUw
MTI1NzcxOTg5MDBENTVCMDUgLyogU2VyaWFsaXplZE5GQS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTZXJpYWxpemVkTkZBLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTVDMkVCRTAzMjU3NzFBNEMwMEQ1NUIwNSAvKiBTZXJpYWxpemVkTkZBLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcmlhbGl6ZWRORkEuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1QzM5MzA1RDFBQTBGNkE5MDAyOUM4MTYgLyogREZBQnl0
ZWNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gREZBQnl0ZWNvZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMzOTMwNUUxQUEwRjZBOTAwMjlDODE2IC8q
IERGQUJ5dGVjb2RlQ29tcGlsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gREZBQnl0ZWNvZGVDb21waWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVDMzkzMDVGMUFBMEY2QTkwMDI5QzgxNiAvKiBERkFCeXRlY29kZUNvbXBpbGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERGQUJ5dGVjb2RlQ29tcGlsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4OTAyLDYgKzE4OTA0LDggQEAKIAkJCQkyNjkz
OTcyMDFBNEE0MTJGMDBFODM0OUQgLyogTkZBTm9kZS5oICovLAogCQkJCTI2NzcyNUZBMUE1QjNB
RDkwMDNDMjRERCAvKiBORkFUb0RGQS5jcHAgKi8sCiAJCQkJMjY3NzI1RkIxQTVCM0FEOTAwM0My
NEREIC8qIE5GQVRvREZBLmggKi8sCisJCQkJNUMyRUJFMDMyNTc3MUE0QzAwRDU1QjA1IC8qIFNl
cmlhbGl6ZWRORkEuY3BwICovLAorCQkJCTVDMkVCRTAxMjU3NzE5ODkwMEQ1NUIwNSAvKiBTZXJp
YWxpemVkTkZBLmggKi8sCiAJCQkJMjZFOTQ0REMxQUM0QjRFQTAwN0I4NUI1IC8qIFRlcm0uaCAq
LywKIAkJCQkyNjc3MjYwMjFBNURGNkYyMDAzQzI0REQgLyogVVJMRmlsdGVyUGFyc2VyLmNwcCAq
LywKIAkJCQkyNjc3MjYwMzFBNURGNkYyMDAzQzI0REQgLyogVVJMRmlsdGVyUGFyc2VyLmggKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVS
TEZpbHRlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRV
UkxGaWx0ZXJzLmNwcAppbmRleCBlODdhODU0NGRkNjcwNTk3MTVhOWEyZjA1ZmY3NWYwMGQzMzk1
NGUyLi4xMDE3Yzc4ZmFiNjViMmVmYzdlMmJjMzE4NjU5ZGU1MjE0MWM5MDAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVy
cy5jcHAKQEAgLTQ0NCw3ICs0NDQsNyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZU5GQUZvclN1YnRy
ZWUoTkZBJiBuZmEsIEltbXV0YWJsZUNoYXJORkFOb2RlQnVpbGRlciYmIHN1YnRyZQogICAgIGNs
ZWFyUmV2ZXJzZVN1ZmZpeFRyZWUocmV2ZXJzZVN1ZmZpeFRyZWVSb290cyk7CiB9CiAKLXZvaWQg
Q29tYmluZWRVUkxGaWx0ZXJzOjpwcm9jZXNzTkZBcyhzaXplX3QgbWF4TkZBU2l6ZSwgY29uc3Qg
V1RGOjpGdW5jdGlvbjx2b2lkKE5GQSYmKT4mIGhhbmRsZXIpCitib29sIENvbWJpbmVkVVJMRmls
dGVyczo6cHJvY2Vzc05GQXMoc2l6ZV90IG1heE5GQVNpemUsIEZ1bmN0aW9uPGJvb2woTkZBJiYp
PiYmIGhhbmRsZXIpCiB7CiAjaWYgQ09OVEVOVF9FWFRFTlNJT05TX1NUQVRFX01BQ0hJTkVfREVC
VUdHSU5HCiAgICAgcHJpbnQoKTsKQEAgLTQ4Nyw5ICs0ODcsOSBAQCB2b2lkIENvbWJpbmVkVVJM
RmlsdGVyczo6cHJvY2Vzc05GQXMoc2l6ZV90IG1heE5GQVNpemUsIGNvbnN0IFdURjo6RnVuY3Rp
b248dm9pZAogICAgICAgICAgICAgQVNTRVJUKHN0YWNrLmxhc3QoKSk7CiAgICAgICAgICAgICBn
ZW5lcmF0ZU5GQUZvclN1YnRyZWUobmZhLCBXVEZNb3ZlKGxhc3ROb2RlKSwgKnN0YWNrLmxhc3Qo
KSwgbV9hY3Rpb25zLCBtYXhORkFTaXplKTsKICAgICAgICAgfQotICAgICAgICBuZmEuZmluYWxp
emUoKTsKIAotICAgICAgICBoYW5kbGVyKFdURk1vdmUobmZhKSk7CisgICAgICAgIGlmICghaGFu
ZGxlcihXVEZNb3ZlKG5mYSkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAg
IC8vIENsZWFuIHVwIGFueSBwcm9jZXNzZWQgbGVhZiBub2Rlcy4KICAgICAgICAgd2hpbGUgKHRy
dWUpIHsKQEAgLTUwMyw2ICs1MDMsNyBAQCB2b2lkIENvbWJpbmVkVVJMRmlsdGVyczo6cHJvY2Vz
c05GQXMoc2l6ZV90IG1heE5GQVNpemUsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZAogICAgICAg
ICAgICAgICAgIGJyZWFrOyAvLyBMZWF2ZSB0aGUgZW1wdHkgcm9vdC4KICAgICAgICAgfQogICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVk
VVJMRmlsdGVycy5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRV
UkxGaWx0ZXJzLmgKaW5kZXggOGNhYzkwNWFhOTJiNzU5NDk1NzQyMDc4NDJkY2I0ZWM0M2Q1NzFi
MS4uNWNhNTIwNGNiZjM3MGU1NDFhYjRmNDk4Yjc0ODU1MWVmMjJmN2IyMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmgK
QEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkUGF0dGVybih1aW50NjRfdCBh
Y3Rpb25JZCwgY29uc3QgVmVjdG9yPFRlcm0+JiBwYXR0ZXJuKTsKICAgICB2b2lkIGFkZERvbWFp
bih1aW50NjRfdCBhY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBkb21haW4pOwogCi0gICAgdm9pZCBw
cm9jZXNzTkZBcyhzaXplX3QgbWF4TkZBU2l6ZSwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKE5G
QSYmKT4mIGhhbmRsZXIpOworICAgIGJvb2wgcHJvY2Vzc05GQXMoc2l6ZV90IG1heE5GQVNpemUs
IEZ1bmN0aW9uPGJvb2woTkZBJiYpPiYmKTsKICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKIAog
I2lmIENPTlRFTlRfRVhURU5TSU9OU19QRVJGT1JNQU5DRV9SRVBPUlRJTkcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
Q29tcGlsZXIuY3BwCmluZGV4IDI4YTcyNThmYjg3OWNiZmMxMGFjYjhmOGMyMGQzNzI1M2Y5NWE0
NGYuLjM0MGU4M2IwMzYyOGRlMmE5ZWY5NTg4MzEzNjRlM2M4MTdiN2FjMDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVu
c2lvbkNvbXBpbGVyLmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIHN0YXRpYyB2b2lkIGFkZFVuaXZl
cnNhbEFjdGlvbnNUb0RGQShERkEmIGRmYSwgVW5pdmVyc2FsQWN0aW9uU2V0JiYgdW5pdmVyc2Fs
QWN0CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci1zdGF0aWMgdm9pZCBjb21waWxl
VG9CeXRlY29kZShDb21iaW5lZFVSTEZpbHRlcnMmJiBmaWx0ZXJzLCBVbml2ZXJzYWxBY3Rpb25T
ZXQmJiB1bml2ZXJzYWxBY3Rpb25zLCBGdW5jdG9yIHdyaXRlQnl0ZWNvZGVUb0NsaWVudCkKK3N0
YXRpYyBib29sIGNvbXBpbGVUb0J5dGVjb2RlKENvbWJpbmVkVVJMRmlsdGVycyYmIGZpbHRlcnMs
IFVuaXZlcnNhbEFjdGlvblNldCYmIHVuaXZlcnNhbEFjdGlvbnMsIEZ1bmN0b3Igd3JpdGVCeXRl
Y29kZVRvQ2xpZW50KQogewogICAgIC8vIFNtYWxsZXIgbWF4TkZBU2l6ZXMgcmlzayBoaWdoIGNv
bXBpbGluZyBhbmQgaW50ZXJwcmV0aW5nIHRpbWVzIGZyb20gaGF2aW5nIHRvbyBtYW55IERGQXMs
CiAgICAgLy8gbGFyZ2VyIG1heE5GQVNpemVzIHVzZSB0b28gbXVjaCBtZW1vcnkgd2hlbiBjb21w
aWxpbmcuCkBAIC0yNDMsMjIgKzI0MywyNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlVG9CeXRlY29k
ZShDb21iaW5lZFVSTEZpbHRlcnMmJiBmaWx0ZXJzLCBVbml2ZXJzYWxBY3Rpb25TZXQmJgogCiAg
ICAgY29uc3QgdW5zaWduZWQgc21hbGxERkFTaXplID0gMTAwOwogICAgIERGQUNvbWJpbmVyIHNt
YWxsREZBQ29tYmluZXI7Ci0gICAgZmlsdGVycy5wcm9jZXNzTkZBcyhtYXhORkFTaXplLCBbJl0o
TkZBJiYgbmZhKSB7CisgICAgYm9vbCBwcm9jZXNzZWRTdWNjZXNzZnVsbHkgPSBmaWx0ZXJzLnBy
b2Nlc3NORkFzKG1heE5GQVNpemUsIFsmXShORkEmJiBuZmEpIHsKICNpZiBDT05URU5UX0VYVEVO
U0lPTlNfU1RBVEVfTUFDSElORV9ERUJVR0dJTkcKICAgICAgICAgZGF0YUxvZ0YoIk5GQVxuIik7
CiAgICAgICAgIG5mYS5kZWJ1Z1ByaW50RG90KCk7CiAjZW5kaWYKICAgICAgICAgTE9HX0xBUkdF
X1NUUlVDVFVSRVMobmZhLCBuZmEubWVtb3J5VXNlZCgpKTsKLSAgICAgICAgREZBIGRmYSA9IE5G
QVRvREZBOjpjb252ZXJ0KG5mYSk7Ci0gICAgICAgIExPR19MQVJHRV9TVFJVQ1RVUkVTKGRmYSwg
ZGZhLm1lbW9yeVVzZWQoKSk7CisgICAgICAgIGF1dG8gZGZhID0gTkZBVG9ERkE6OmNvbnZlcnQo
V1RGTW92ZShuZmEpKTsKKyAgICAgICAgaWYgKCFkZmEpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIExPR19MQVJHRV9TVFJVQ1RVUkVTKCpkZmEsIGRmYS0+bWVtb3J5VXNlZCgp
KTsKIAotICAgICAgICBpZiAoZGZhLmdyYXBoU2l6ZSgpIDwgc21hbGxERkFTaXplKQotICAgICAg
ICAgICAgc21hbGxERkFDb21iaW5lci5hZGRERkEoV1RGTW92ZShkZmEpKTsKKyAgICAgICAgaWYg
KGRmYS0+Z3JhcGhTaXplKCkgPCBzbWFsbERGQVNpemUpCisgICAgICAgICAgICBzbWFsbERGQUNv
bWJpbmVyLmFkZERGQShXVEZNb3ZlKCpkZmEpKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBkZmEubWluaW1pemUoKTsKLSAgICAgICAgICAgIGxvd2VyREZBVG9CeXRlY29kZShXVEZNb3Zl
KGRmYSkpOworICAgICAgICAgICAgZGZhLT5taW5pbWl6ZSgpOworICAgICAgICAgICAgbG93ZXJE
RkFUb0J5dGVjb2RlKFdURk1vdmUoKmRmYSkpOwogICAgICAgICB9CisgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0pOworICAgIGlmICghcHJvY2Vzc2VkU3VjY2Vzc2Z1bGx5KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBzbWFsbERGQUNvbWJpbmVyLmNvbWJpbmVERkFzKHNtYWxsREZB
U2l6ZSwgWyZdKERGQSYmIGRmYSkgewogICAgICAgICBMT0dfTEFSR0VfU1RSVUNUVVJFUyhkZmEs
IGRmYS5tZW1vcnlVc2VkKCkpOwpAQCAtMjgxLDYgKzI4Niw3IEBAIHN0YXRpYyB2b2lkIGNvbXBp
bGVUb0J5dGVjb2RlKENvbWJpbmVkVVJMRmlsdGVycyYmIGZpbHRlcnMsIFVuaXZlcnNhbEFjdGlv
blNldCYmCiAgICAgICAgIHdyaXRlQnl0ZWNvZGVUb0NsaWVudChXVEZNb3ZlKGJ5dGVjb2RlKSk7
CiAgICAgfQogICAgIExPR19MQVJHRV9TVFJVQ1RVUkVTKHVuaXZlcnNhbEFjdGlvbnMsIHVuaXZl
cnNhbEFjdGlvbnMuY2FwYWNpdHkoKSAqIHNpemVvZih1bnNpZ25lZCkpOworICAgIHJldHVybiB0
cnVlOwogfQogCiBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRlbnRFeHRlbnNp
b25Db21waWxhdGlvbkNsaWVudCYgY2xpZW50LCBTdHJpbmcmJiBydWxlSlNPTiwgVmVjdG9yPENv
bnRlbnRFeHRlbnNpb25SdWxlPiYmIHBhcnNlZFJ1bGVMaXN0KQpAQCAtNDE0LDE2ICs0MjAsMjIg
QEAgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVSdWxlTGlzdChDb250ZW50RXh0ZW5zaW9uQ29tcGls
YXRpb25DbGllbnQmIGNsaWVudCwgU3RyaW4KICAgICBNb25vdG9uaWNUaW1lIHRvdGFsTkZBVG9C
eXRlQ29kZUJ1aWxkVGltZVN0YXJ0ID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAjZW5kaWYKIAot
ICAgIGNvbXBpbGVUb0J5dGVjb2RlKFdURk1vdmUoZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zKSwg
V1RGTW92ZSh1bml2ZXJzYWxBY3Rpb25zV2l0aG91dENvbmRpdGlvbnMpLCBbJl0oVmVjdG9yPERG
QUJ5dGVjb2RlPiYmIGJ5dGVjb2RlKSB7CisgICAgYm9vbCBzdWNjZXNzID0gY29tcGlsZVRvQnl0
ZWNvZGUoV1RGTW92ZShmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnMpLCBXVEZNb3ZlKHVuaXZlcnNh
bEFjdGlvbnNXaXRob3V0Q29uZGl0aW9ucyksIFsmXShWZWN0b3I8REZBQnl0ZWNvZGU+JiYgYnl0
ZWNvZGUpIHsKICAgICAgICAgY2xpZW50LndyaXRlRmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0
ZWNvZGUoV1RGTW92ZShieXRlY29kZSkpOwogICAgIH0pOwotICAgIGNvbXBpbGVUb0J5dGVjb2Rl
KFdURk1vdmUoZmlsdGVyc1dpdGhDb25kaXRpb25zKSwgV1RGTW92ZSh1bml2ZXJzYWxBY3Rpb25z
V2l0aENvbmRpdGlvbnMpLCBbJl0oVmVjdG9yPERGQUJ5dGVjb2RlPiYmIGJ5dGVjb2RlKSB7Cisg
ICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4gQ29udGVudEV4dGVuc2lvbkVycm9yOjpF
cnJvcldyaXRpbmdTZXJpYWxpemVkTkZBOworICAgIHN1Y2Nlc3MgPSBjb21waWxlVG9CeXRlY29k
ZShXVEZNb3ZlKGZpbHRlcnNXaXRoQ29uZGl0aW9ucyksIFdURk1vdmUodW5pdmVyc2FsQWN0aW9u
c1dpdGhDb25kaXRpb25zKSwgWyZdKFZlY3RvcjxERkFCeXRlY29kZT4mJiBieXRlY29kZSkgewog
ICAgICAgICBjbGllbnQud3JpdGVGaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZShXVEZNb3Zl
KGJ5dGVjb2RlKSk7CiAgICAgfSk7Ci0gICAgY29tcGlsZVRvQnl0ZWNvZGUoV1RGTW92ZSh0b3BV
UkxGaWx0ZXJzKSwgV1RGTW92ZSh1bml2ZXJzYWxUb3BVUkxBY3Rpb25zKSwgWyZdKFZlY3RvcjxE
RkFCeXRlY29kZT4mJiBieXRlY29kZSkgeworICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgcmV0
dXJuIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6RXJyb3JXcml0aW5nU2VyaWFsaXplZE5GQTsKKyAg
ICBzdWNjZXNzID0gY29tcGlsZVRvQnl0ZWNvZGUoV1RGTW92ZSh0b3BVUkxGaWx0ZXJzKSwgV1RG
TW92ZSh1bml2ZXJzYWxUb3BVUkxBY3Rpb25zKSwgWyZdKFZlY3RvcjxERkFCeXRlY29kZT4mJiBi
eXRlY29kZSkgewogICAgICAgICBjbGllbnQud3JpdGVUb3BVUkxGaWx0ZXJzQnl0ZWNvZGUoV1RG
TW92ZShieXRlY29kZSkpOwogICAgIH0pOwotICAgIAorICAgIGlmICghc3VjY2VzcykKKyAgICAg
ICAgcmV0dXJuIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6RXJyb3JXcml0aW5nU2VyaWFsaXplZE5G
QTsKKwogI2lmIENPTlRFTlRfRVhURU5TSU9OU19QRVJGT1JNQU5DRV9SRVBPUlRJTkcKICAgICBN
b25vdG9uaWNUaW1lIHRvdGFsTkZBVG9CeXRlQ29kZUJ1aWxkVGltZUVuZCA9IE1vbm90b25pY1Rp
bWU6Om5vdygpOwogICAgIGRhdGFMb2dGKCIgICAgVGltZSBzcGVudCBidWlsZGluZyBhbmQgY29t
cGlsaW5nIHRoZSBERkFzOiAlZlxuIiwgKHRvdGFsTkZBVG9CeXRlQ29kZUJ1aWxkVGltZUVuZCAt
IHRvdGFsTkZBVG9CeXRlQ29kZUJ1aWxkVGltZVN0YXJ0KS5zZWNvbmRzKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25F
cnJvci5jcHAKaW5kZXggZDg4ZDg1MTEyODZlY2NiYzY1MDIyNTAzOTI3YTFkY2VjZjQ2ZjkzZC4u
Nzc5MTUyODRlNGQ3ODRlYTVlZTUxNTU5NDg1NmM2MjA4ZTlkN2M4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJy
b3IuY3BwCkBAIC04OSw2ICs4OSw4IEBAIGNvbnN0IHN0ZDo6ZXJyb3JfY2F0ZWdvcnkmIGNvbnRl
bnRFeHRlbnNpb25FcnJvckNhdGVnb3J5KCkKICAgICAgICAgICAgICAgICByZXR1cm4gIkEgbGlz
dCBjYW5ub3QgaGF2ZSBpZi1kb21haW4gYW5kIHVubGVzcy1kb21haW4gbWl4ZWQgd2l0aCBpZi10
b3AtdXJsIGFuZCB1bmxlc3MtdG9wLXVybCI7CiAgICAgICAgICAgICBjYXNlIENvbnRlbnRFeHRl
bnNpb25FcnJvcjo6SlNPTkludmFsaWROb3RpZmljYXRpb246CiAgICAgICAgICAgICAgICAgcmV0
dXJuICJBIG5vdGlmeSBhY3Rpb24gbXVzdCBoYXZlIGEgc3RyaW5nIG5vdGlmaWNhdGlvbiI7Cisg
ICAgICAgICAgICBjYXNlIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6RXJyb3JXcml0aW5nU2VyaWFs
aXplZE5GQToKKyAgICAgICAgICAgICAgICByZXR1cm4gIkludGVybmFsIEkvTyBlcnJvciI7CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHJldHVybiBzdGQ6OnN0cmluZygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVy
cm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
RXJyb3IuaAppbmRleCA3NmVkNjhmODNhMzYwMTZhN2Q1YmM0MWNlMmI3YjQ0YjBiOGI0ZGI4Li4x
MDljZDVjOTc3ODg2YWViODFhYTQ3MzRjMTEyNWE4MGM2ZDMxZGI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJyb3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJyb3Iu
aApAQCAtNTksNiArNTksOCBAQCBlbnVtIGNsYXNzIENvbnRlbnRFeHRlbnNpb25FcnJvciB7CiAg
ICAgSlNPTkludmFsaWRDU1NEaXNwbGF5Tm9uZUFjdGlvblR5cGUsCiAgICAgSlNPTkludmFsaWRO
b3RpZmljYXRpb24sCiAgICAgSlNPTkludmFsaWRSZWdleCwKKworICAgIEVycm9yV3JpdGluZ1Nl
cmlhbGl6ZWRORkEsCiB9OwogCiBleHRlcm4gY29uc3QgY2hhciogV2ViS2l0Q29udGVudEJsb2Nr
ZXJEb21haW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uc0RlYnVnZ2luZy5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbnNEZWJ1Z2dpbmcuaAppbmRleCAyMTAwYzI2YTE1M2M5MWIz
NTQxNTQ2ZGI4ZTdiYmU2ZDEzMzExMjU3Li42YmIxOTI4Y2FlMTljODdhZjU2ZjY0OGVmZGNmMDk5
M2ZjMjc0ZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uc0RlYnVnZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zRGVidWdnaW5nLmgKQEAgLTMzLDkgKzMzLDYgQEAK
IAogI2RlZmluZSBDT05URU5UX0VYVEVOU0lPTlNfUEVSRk9STUFOQ0VfUkVQT1JUSU5HIDAKIAot
I2RlZmluZSBDT05URU5UX0VYVEVOU0lPTlNfTUVNT1JZX1JFUE9SVElORyAwCi0jZGVmaW5lIENP
TlRFTlRfRVhURU5TSU9OU19QQUdFX1NJWkUgMTYzODQKLQogI2lmIENPTlRFTlRfRVhURU5TSU9O
U19TVEFURV9NQUNISU5FX0RFQlVHR0lORwogdHlwZWRlZiBXVEY6OkNyYXNoT25PdmVyZmxvdyBD
b250ZW50RXh0ZW5zaW9uc092ZXJmbG93SGFuZGxlcjsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkEuY3BwIGIvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvREZBLmNwcAppbmRleCA0NWU1YWYwNWY1NjBiMjQ0OGE5NTJmYmVjNWE1
OTBmMDExMDlhMTg4Li43MjBiODMyMDRlNjQyZTgzMWQyZWM5ZDE5YmNjYjE5ZWUyYWE0OTkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQS5jcHAKQEAgLTUxLDE0ICs1MSw2
IEBAIHNpemVfdCBERkE6Om1lbW9yeVVzZWQoKSBjb25zdAogICAgICAgICArIG5vZGVzLmNhcGFj
aXR5KCkgKiBzaXplb2YoREZBTm9kZSk7CiB9CiAKLXZvaWQgREZBOjpzaHJpbmtUb0ZpdCgpCi17
Ci0gICAgbm9kZXMuc2hyaW5rVG9GaXQoKTsKLSAgICBhY3Rpb25zLnNocmlua1RvRml0KCk7Ci0g
ICAgdHJhbnNpdGlvblJhbmdlcy5zaHJpbmtUb0ZpdCgpOwotICAgIHRyYW5zaXRpb25EZXN0aW5h
dGlvbnMuc2hyaW5rVG9GaXQoKTsKLX0KLQogdm9pZCBERkE6Om1pbmltaXplKCkKIHsKICAgICBE
RkFNaW5pbWl6ZXI6Om1pbmltaXplKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0RGQS5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvREZBLmgKaW5kZXggMzUyMDYxZWU3ODEzZTIyZWJhZmRmNGQ0YTE4MWI2NWY1ZmM0MThmNS4u
ODY1ZDNjNjQ0OThkMjVmN2VhOGRkZDQ1MTc0ZGEwYjQ0Yzg0NWI1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvREZBLmgKQEAgLTM5LDcgKzM5LDYgQEAgbmFtZXNwYWNlIENvbnRl
bnRFeHRlbnNpb25zIHsKIHN0cnVjdCBXRUJDT1JFX0VYUE9SVCBERkEgewogICAgIHN0YXRpYyBE
RkEgZW1wdHkoKTsKIAotICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKICAgICB2b2lkIG1pbmltaXpl
KCk7CiAgICAgdW5zaWduZWQgZ3JhcGhTaXplKCkgY29uc3Q7CiAgICAgc2l6ZV90IG1lbW9yeVVz
ZWQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0ltbXV0YWJsZU5GQS5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvSW1tdXRh
YmxlTkZBLmgKaW5kZXggZjVkMjFhZWJhZTA0MWNjNDViODI0MTcwOWE1MGI4NDQ0ZGFlZWQ5ZS4u
Y2M5OTM3ODBiOWIzZTQ2NTg3MDY4NDRhY2Y1ZTg1Y2UwYWQyMjBhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvSW1tdXRhYmxlTkZBLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvSW1tdXRhYmxlTkZBLmgKQEAgLTU4LDExMiArNTgs
MTMgQEAgc3RydWN0IEltbXV0YWJsZU5GQSB7CiAgICAgVmVjdG9yPHVpbnQzMl90LCAwLCBDb250
ZW50RXh0ZW5zaW9uc092ZXJmbG93SGFuZGxlcj4gZXBzaWxvblRyYW5zaXRpb25zVGFyZ2V0czsK
ICAgICBWZWN0b3I8QWN0aW9uVHlwZSwgMCwgQ29udGVudEV4dGVuc2lvbnNPdmVyZmxvd0hhbmRs
ZXI+IGFjdGlvbnM7CiAKLSAgICBzdHJ1Y3QgQ29uc3RUYXJnZXRJdGVyYXRvciB7Ci0gICAgICAg
IGNvbnN0IEltbXV0YWJsZU5GQSYgaW1tdXRhYmxlTkZBOwotICAgICAgICB1aW50MzJfdCBwb3Np
dGlvbjsKLQotICAgICAgICBjb25zdCB1aW50MzJfdCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1
cm4gaW1tdXRhYmxlTkZBLnRhcmdldHNbcG9zaXRpb25dOyB9Ci0gICAgICAgIGNvbnN0IHVpbnQz
Ml90KiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJmltbXV0YWJsZU5GQS50YXJnZXRzW3Bv
c2l0aW9uXTsgfQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb25zdFRhcmdldEl0
ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCZpbW11
dGFibGVORkEgPT0gJm90aGVyLmltbXV0YWJsZU5GQSk7Ci0gICAgICAgICAgICByZXR1cm4gcG9z
aXRpb24gPT0gb3RoZXIucG9zaXRpb247Ci0gICAgICAgIH0KLSAgICAgICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IENvbnN0VGFyZ2V0SXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0
aGlzID09IG90aGVyKTsgfQotCi0gICAgICAgIENvbnN0VGFyZ2V0SXRlcmF0b3ImIG9wZXJhdG9y
KysoKQotICAgICAgICB7Ci0gICAgICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICAgICAgcmV0
dXJuICp0aGlzOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHN0cnVjdCBJdGVyYWJsZUNvbnN0
VGFyZ2V0cyB7Ci0gICAgICAgIGNvbnN0IEltbXV0YWJsZU5GQSYgaW1tdXRhYmxlTkZBOwotICAg
ICAgICB1aW50MzJfdCB0YXJnZXRTdGFydDsKLSAgICAgICAgdWludDMyX3QgdGFyZ2V0RW5kOwot
Ci0gICAgICAgIENvbnN0VGFyZ2V0SXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiB7IGlt
bXV0YWJsZU5GQSwgdGFyZ2V0U3RhcnQgfTsgfQotICAgICAgICBDb25zdFRhcmdldEl0ZXJhdG9y
IGVuZCgpIGNvbnN0IHsgcmV0dXJuIHsgaW1tdXRhYmxlTkZBLCB0YXJnZXRFbmQgfTsgfQotICAg
IH07Ci0KLSAgICBzdHJ1Y3QgQ29uc3RSYW5nZUl0ZXJhdG9yIHsKLSAgICAgICAgY29uc3QgSW1t
dXRhYmxlTkZBJiBpbW11dGFibGVORkE7Ci0gICAgICAgIHVpbnQzMl90IHBvc2l0aW9uOwotCi0g
ICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb25zdFJhbmdlSXRlcmF0b3ImIG90aGVyKSBj
b25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoJmltbXV0YWJsZU5GQSA9PSAmb3Ro
ZXIuaW1tdXRhYmxlTkZBKTsKLSAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbiA9PSBvdGhlci5w
b3NpdGlvbjsKLSAgICAgICAgfQotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29uc3RS
YW5nZUl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0K
LQotICAgICAgICBDb25zdFJhbmdlSXRlcmF0b3ImIG9wZXJhdG9yKysoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAg
ICB9Ci0KLSAgICAgICAgQ2hhcmFjdGVyVHlwZSBmaXJzdCgpIGNvbnN0Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiByYW5nZSgpLmZpcnN0OwotICAgICAgICB9Ci0KLSAgICAgICAgQ2hh
cmFjdGVyVHlwZSBsYXN0KCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJh
bmdlKCkubGFzdDsKLSAgICAgICAgfQotCi0gICAgICAgIEl0ZXJhYmxlQ29uc3RUYXJnZXRzIGRh
dGEoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBJbW11dGFibGVSYW5nZTxD
aGFyYWN0ZXJUeXBlPiYgcmFuZ2UgPSB0aGlzLT5yYW5nZSgpOwotICAgICAgICAgICAgcmV0dXJu
IHsgaW1tdXRhYmxlTkZBLCByYW5nZS50YXJnZXRTdGFydCwgcmFuZ2UudGFyZ2V0RW5kIH07Ci0g
ICAgICAgIH07Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBjb25zdCBJbW11dGFibGVSYW5nZTxD
aGFyYWN0ZXJUeXBlPiYgcmFuZ2UoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gaW1tdXRhYmxlTkZBLnRyYW5zaXRpb25zW3Bvc2l0aW9uXTsKLSAgICAgICAgfQotICAgIH07
Ci0KLSAgICBzdHJ1Y3QgSXRlcmFibGVDb25zdFJhbmdlIHsKLSAgICAgICAgY29uc3QgSW1tdXRh
YmxlTkZBJiBpbW11dGFibGVORkE7Ci0gICAgICAgIHVpbnQzMl90IHJhbmdlc1N0YXJ0OwotICAg
ICAgICB1aW50MzJfdCByYW5nZXNFbmQ7Ci0KLSAgICAgICAgQ29uc3RSYW5nZUl0ZXJhdG9yIGJl
Z2luKCkgY29uc3QgeyByZXR1cm4geyBpbW11dGFibGVORkEsIHJhbmdlc1N0YXJ0IH07IH0KLSAg
ICAgICAgQ29uc3RSYW5nZUl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIHsgaW1tdXRhYmxl
TkZBLCByYW5nZXNFbmQgfTsgfQotCi0jaWYgQ09OVEVOVF9FWFRFTlNJT05TX1NUQVRFX01BQ0hJ
TkVfREVCVUdHSU5HCi0gICAgICAgIHZvaWQgZGVidWdQcmludCgpIGNvbnN0Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcmFuZ2UgOiAqdGhpcykKLSAgICAgICAgICAg
ICAgICBXVEZMb2dBbHdheXMoIiAgICAlZC0lZCIsIHJhbmdlLmZpcnN0LCByYW5nZS5sYXN0KTsK
LSAgICAgICAgfQotI2VuZGlmCi0gICAgfTsKLQotICAgIEl0ZXJhYmxlQ29uc3RSYW5nZSB0cmFu
c2l0aW9uc0Zvck5vZGUodWludDMyX3Qgbm9kZUlkKSBjb25zdAotICAgIHsKLSAgICAgICAgY29u
c3QgSW1tdXRhYmxlTkZBTm9kZSYgbm9kZSA9IG5vZGVzW25vZGVJZF07Ci0gICAgICAgIHJldHVy
biB7ICp0aGlzLCBub2RlLnJhbmdlc1N0YXJ0LCBub2RlLnJhbmdlc0VuZCB9OwotICAgIH07Ci0K
LSAgICB1aW50MzJfdCByb290KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KCFub2Rlcy5pc0VtcHR5KCkpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICB2b2lk
IGZpbmFsaXplKCkKKyAgICB2b2lkIGNsZWFyKCkKICAgICB7Ci0gICAgICAgIG5vZGVzLnNocmlu
a1RvRml0KCk7Ci0gICAgICAgIHRyYW5zaXRpb25zLnNocmlua1RvRml0KCk7Ci0gICAgICAgIHRh
cmdldHMuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgZXBzaWxvblRyYW5zaXRpb25zVGFyZ2V0cy5z
aHJpbmtUb0ZpdCgpOwotICAgICAgICBhY3Rpb25zLnNocmlua1RvRml0KCk7CisgICAgICAgIG5v
ZGVzLmNsZWFyKCk7CisgICAgICAgIHRyYW5zaXRpb25zLmNsZWFyKCk7CisgICAgICAgIHRhcmdl
dHMuY2xlYXIoKTsKKyAgICAgICAgZXBzaWxvblRyYW5zaXRpb25zVGFyZ2V0cy5jbGVhcigpOwor
ICAgICAgICBhY3Rpb25zLmNsZWFyKCk7CiAgICAgfQogCiAgICAgc2l6ZV90IG1lbW9yeVVzZWQo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvSW1t
dXRhYmxlTkZBTm9kZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0ltbXV0YWJsZU5GQU5vZGVCdWlsZGVyLmgKaW5kZXggZTI3ZTI0YzYwYjFlNTZhOGU0ZTA5NmZk
NjYyNWQ3MWVkMDYwMTQxZS4uOTI0OGFjMDgyNzRlODMyNjEyYzk2YmNmMGM0YzU1MTlmYWNjOTY4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvSW1tdXRhYmxl
TkZBTm9kZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9J
bW11dGFibGVORkFOb2RlQnVpbGRlci5oCkBAIC0zNSw5ICszNSw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKIAotLy8gQSBJbW11dGFibGVO
RkFOb2RlQnVpbGRlciBsZXQgeW91IGJ1aWxkIGEgTkZBIG5vZGUgYnkgYWRkaW5nIHN0YXRlcyBh
bmQgbGlua2luZyB3aXRoIG90aGVyIG5vZGVzLgotLy8gV2hlIGEgYnVpbGRlciBpcyBkZXN0cnVj
dGVkLCBhbGwgaXRzIHByb3BlcnRpZXMgYXJlIGZpbmFsaXplZCBpbnRvIHRoZSBORkEuIFVzaW5n
IHRoZSBOQSB3aXRoIGEgbGl2ZQotLy8gYnVpbGRlciByZXN1bHRzIGluIHVuZGVmaW5lZCBiZWhh
dmlvcnMuCisvLyBBIEltbXV0YWJsZU5GQU5vZGVCdWlsZGVyIGxldCB5b3UgYnVpbGQgYW4gTkZB
IG5vZGUgYnkgYWRkaW5nIHN0YXRlcyBhbmQgbGlua2luZyB3aXRoIG90aGVyIG5vZGVzLgorLy8g
V2hlbiBhIGJ1aWxkZXIgaXMgZGVzdHJ1Y3RlZCwgYWxsIGl0cyBwcm9wZXJ0aWVzIGFyZSBmaW5h
bGl6ZWQgaW50byB0aGUgTkZBLiBVc2luZyB0aGUgTkZBIHdpdGggYSBsaXZlCisvLyBidWlsZGVy
IHJlc3VsdHMgaW4gdW5kZWZpbmVkIGJlaGF2aW9yLgogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGUsIHR5cGVuYW1lIEFjdGlvblR5cGU+CiBjbGFzcyBJbW11dGFibGVORkFOb2RlQnVp
bGRlciB7CiAgICAgdHlwZWRlZiBJbW11dGFibGVORkE8Q2hhcmFjdGVyVHlwZSwgQWN0aW9uVHlw
ZT4gVHlwZWRJbW11dGFibGVORkE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9ORkFUb0RGQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9ORkFUb0RGQS5jcHAKaW5kZXggZDMzZmUyNGJmYmM3OGE5ZDRmMjE3NDc2YzRhZTdlMTI1ZjBm
NWVmMy4uNGRhOTNkNzdmNzY4NWViMDJiNjBhYzM1MjZlMDI2OTdjZGYyZjE5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQVRvREZBLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIkltbXV0YWJsZU5GQS5oIgogI2luY2x1ZGUgIk11dGFibGVSYW5nZUxp
c3QuaCIKICNpbmNsdWRlICJORkEuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkTkZBLmgiCiAjaW5j
bHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CkBAIC01MSwxNyArNTIsMTcgQEAgdHlwZWRlZiBWZWN0b3I8VW5pcXVl
Tm9kZUxpc3QsIDAsIENvbnRlbnRFeHRlbnNpb25zT3ZlcmZsb3dIYW5kbGVyPiBORkFOb2RlQ2xv
c3UKIC8vIEZJWE1FOiBpbmNsdWRlIHRoZSBoYXNoIGluc2lkZSBOb2RlSWRTZXQuCiB0eXBlZGVm
IE5GQU5vZGVJbmRleFNldCBOb2RlSWRTZXQ7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBlcHNpbG9u
Q2xvc3VyZUV4Y2x1ZGluZ1NlbGYoTkZBJiBuZmEsIHVuc2lnbmVkIG5vZGVJZCwgVW5pcXVlTm9k
ZUxpc3QmIG91dHB1dCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBlcHNpbG9uQ2xvc3VyZUV4Y2x1ZGlu
Z1NlbGYoY29uc3QgU2VyaWFsaXplZE5GQSYgbmZhLCB1bnNpZ25lZCBub2RlSWQsIFVuaXF1ZU5v
ZGVMaXN0JiBvdXRwdXQpCiB7CiAgICAgTm9kZUlkU2V0IGNsb3N1cmUoeyBub2RlSWQgfSk7CiAg
ICAgVmVjdG9yPHVuc2lnbmVkLCA2NCwgQ29udGVudEV4dGVuc2lvbnNPdmVyZmxvd0hhbmRsZXI+
IHVucHJvY2Vzc2VkTm9kZXMoeyBub2RlSWQgfSk7CiAKICAgICBkbyB7CiAgICAgICAgIHVuc2ln
bmVkIHVucHJvY2Vzc2VkTm9kZUlkID0gdW5wcm9jZXNzZWROb2Rlcy50YWtlTGFzdCgpOwotICAg
ICAgICBjb25zdCBhdXRvJiBub2RlID0gbmZhLm5vZGVzW3VucHJvY2Vzc2VkTm9kZUlkXTsKKyAg
ICAgICAgY29uc3QgYXV0byYgbm9kZSA9IG5mYS5ub2RlcygpW3VucHJvY2Vzc2VkTm9kZUlkXTsK
IAogICAgICAgICBmb3IgKHVpbnQzMl90IGVwc2lsb25UYXJnZXRJbmRleCA9IG5vZGUuZXBzaWxv
blRyYW5zaXRpb25UYXJnZXRzU3RhcnQ7IGVwc2lsb25UYXJnZXRJbmRleCA8IG5vZGUuZXBzaWxv
blRyYW5zaXRpb25UYXJnZXRzRW5kOyArK2Vwc2lsb25UYXJnZXRJbmRleCkgewotICAgICAgICAg
ICAgdWludDMyX3QgdGFyZ2V0Tm9kZUlkID0gbmZhLmVwc2lsb25UcmFuc2l0aW9uc1RhcmdldHNb
ZXBzaWxvblRhcmdldEluZGV4XTsKKyAgICAgICAgICAgIHVpbnQzMl90IHRhcmdldE5vZGVJZCA9
IG5mYS5lcHNpbG9uVHJhbnNpdGlvbnNUYXJnZXRzKClbZXBzaWxvblRhcmdldEluZGV4XTsKICAg
ICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gY2xvc3VyZS5hZGQodGFyZ2V0Tm9kZUlkKTsKICAg
ICAgICAgICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAgICAgIHVu
cHJvY2Vzc2VkTm9kZXMuYXBwZW5kKHRhcmdldE5vZGVJZCk7CkBAIC03MywxOCArNzQsMTYgQEAg
c3RhdGljIGlubGluZSB2b2lkIGVwc2lsb25DbG9zdXJlRXhjbHVkaW5nU2VsZihORkEmIG5mYSwg
dW5zaWduZWQgbm9kZUlkLCBVbmlxdWUKICAgICBvdXRwdXQuc2hyaW5rVG9GaXQoKTsKIH0KIAot
c3RhdGljIHZvaWQgcmVzb2x2ZUVwc2lsb25DbG9zdXJlcyhORkEmIG5mYSwgTkZBTm9kZUNsb3N1
cmVzJiBuZmFOb2RlQ2xvc3VyZXMpCitzdGF0aWMgTkZBTm9kZUNsb3N1cmVzIHJlc29sdmVFcHNp
bG9uQ2xvc3VyZXMoY29uc3QgU2VyaWFsaXplZE5GQSYgbmZhKQogewotICAgIHVuc2lnbmVkIG5m
YUdyYXBoU2l6ZSA9IG5mYS5ub2Rlcy5zaXplKCk7CisgICAgTkZBTm9kZUNsb3N1cmVzIG5mYU5v
ZGVDbG9zdXJlczsKKyAgICB1bnNpZ25lZCBuZmFHcmFwaFNpemUgPSBuZmEubm9kZXMoKS5zaXpl
KCk7CiAgICAgbmZhTm9kZUNsb3N1cmVzLnJlc2l6ZShuZmFHcmFwaFNpemUpOwogCiAgICAgZm9y
ICh1bnNpZ25lZCBub2RlSWQgPSAwOyBub2RlSWQgPCBuZmFHcmFwaFNpemU7ICsrbm9kZUlkKQog
ICAgICAgICBlcHNpbG9uQ2xvc3VyZUV4Y2x1ZGluZ1NlbGYobmZhLCBub2RlSWQsIG5mYU5vZGVD
bG9zdXJlc1tub2RlSWRdKTsKIAotICAgIC8vIEV2ZXJ5IG5vZGVzIHN0aWxsIHBvaW50IHRvIHRo
YXQgdGFibGUsIGJ1dCB3ZSB3b24ndCB1c2UgaXQgZXZlciBhZ2Fpbi4KLSAgICAvLyBDbGVhciBp
dCB0byBnZXQgYmFjayB0aGUgbWVtb3J5LiBUaGF0J3Mgbm90IHByZXR0eSBidXQgbWVtb3J5IGlz
IGltcG9ydGFudCBoZXJlLCB3ZSBoYXZlIGJvdGgKLSAgICAvLyBncmFwaHMgZXhpc3RpbmcgYXQg
dGhlIHNhbWUgdGltZS4KLSAgICBuZmEuZXBzaWxvblRyYW5zaXRpb25zVGFyZ2V0cy5jbGVhcigp
OworICAgIHJldHVybiBuZmFOb2RlQ2xvc3VyZXM7CiB9CiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IHZvaWQgZXh0ZW5kU2V0V2l0aENsb3N1cmUoY29uc3QgTkZBTm9kZUNsb3N1cmVzJiBuZmFOb2Rl
Q2xvc3VyZXMsIHVuc2lnbmVkIG5vZGVJZCwgTm9kZUlkU2V0JiBzZXQpCkBAIC0yMTUsNyArMjE0
LDcgQEAgc3RydWN0IFVuaXF1ZU5vZGVJZFNldEhhc2hIYXNoVHJhaXRzIDogcHVibGljIFdURjo6
Q3VzdG9tSGFzaFRyYWl0czxVbmlxdWVOb2RlSWQKIHR5cGVkZWYgSGFzaFNldDxzdGQ6OnVuaXF1
ZV9wdHI8VW5pcXVlTm9kZUlkU2V0PiwgVW5pcXVlTm9kZUlkU2V0SGFzaCwgVW5pcXVlTm9kZUlk
U2V0SGFzaEhhc2hUcmFpdHM+IFVuaXF1ZU5vZGVJZFNldFRhYmxlOwogCiBzdHJ1Y3QgTm9kZUlk
U2V0VG9VbmlxdWVOb2RlSWRTZXRTb3VyY2UgewotICAgIE5vZGVJZFNldFRvVW5pcXVlTm9kZUlk
U2V0U291cmNlKERGQSYgZGZhLCBjb25zdCBORkEmIG5mYSwgY29uc3QgTm9kZUlkU2V0JiBub2Rl
SWRTZXQpCisgICAgTm9kZUlkU2V0VG9VbmlxdWVOb2RlSWRTZXRTb3VyY2UoREZBJiBkZmEsIGNv
bnN0IFNlcmlhbGl6ZWRORkEmIG5mYSwgY29uc3QgTm9kZUlkU2V0JiBub2RlSWRTZXQpCiAgICAg
ICAgIDogZGZhKGRmYSkKICAgICAgICAgLCBuZmEobmZhKQogICAgICAgICAsIG5vZGVJZFNldChu
b2RlSWRTZXQpCkBAIC0yMjcsNyArMjI2LDcgQEAgc3RydWN0IE5vZGVJZFNldFRvVW5pcXVlTm9k
ZUlkU2V0U291cmNlIHsKICAgICAgICAgdGhpcy0+aGFzaCA9IERlZmF1bHRIYXNoPHVuc2lnbmVk
Pjo6aGFzaChoYXNoKTsKICAgICB9CiAgICAgREZBJiBkZmE7Ci0gICAgY29uc3QgTkZBJiBuZmE7
CisgICAgY29uc3QgU2VyaWFsaXplZE5GQSYgbmZhOwogICAgIGNvbnN0IE5vZGVJZFNldCYgbm9k
ZUlkU2V0OwogICAgIHVuc2lnbmVkIGhhc2g7CiB9OwpAQCAtMjUwLDkgKzI0OSw5IEBAIHN0cnVj
dCBOb2RlSWRTZXRUb1VuaXF1ZU5vZGVJZFNldFRyYW5zbGF0b3IgewogICAgICAgICBIYXNoU2V0
PHVpbnQ2NF90LCBEZWZhdWx0SGFzaDx1aW50NjRfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tl
eUhhc2hUcmFpdHM8dWludDY0X3Q+PiBhY3Rpb25zOwogCiAgICAgICAgIGZvciAodW5zaWduZWQg
bmZhTm9kZUlkIDogc291cmNlLm5vZGVJZFNldCkgewotICAgICAgICAgICAgY29uc3QgYXV0byYg
bmZhTm9kZSA9IHNvdXJjZS5uZmEubm9kZXNbbmZhTm9kZUlkXTsKKyAgICAgICAgICAgIGNvbnN0
IGF1dG8mIG5mYU5vZGUgPSBzb3VyY2UubmZhLm5vZGVzKClbbmZhTm9kZUlkXTsKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgYWN0aW9uSW5kZXggPSBuZmFOb2RlLmFjdGlvblN0YXJ0OyBhY3Rp
b25JbmRleCA8IG5mYU5vZGUuYWN0aW9uRW5kOyArK2FjdGlvbkluZGV4KQotICAgICAgICAgICAg
ICAgIGFjdGlvbnMuYWRkKHNvdXJjZS5uZmEuYWN0aW9uc1thY3Rpb25JbmRleF0pOworICAgICAg
ICAgICAgICAgIGFjdGlvbnMuYWRkKHNvdXJjZS5uZmEuYWN0aW9ucygpW2FjdGlvbkluZGV4XSk7
CiAgICAgICAgIH0KIAogICAgICAgICB1bnNpZ25lZCBhY3Rpb25zU3RhcnQgPSBzb3VyY2UuZGZh
LmFjdGlvbnMuc2l6ZSgpOwpAQCAtMjk5LDcgKzI5OCw3IEBAIHN0cnVjdCBEYXRhQ29udmVydGVy
V2l0aEVwc2lsb25DbG9zdXJlIHsKICAgICB9CiB9OwogCi1zdGF0aWMgaW5saW5lIHZvaWQgY3Jl
YXRlQ29tYmluZWRUcmFuc2l0aW9uKFByZWFsbG9jYXRlZE5GQU5vZGVSYW5nZUxpc3QmIGNvbWJp
bmVkUmFuZ2VMaXN0LCBjb25zdCBVbmlxdWVOb2RlSWRTZXRJbXBsJiBzb3VyY2VOb2RlU2V0LCBj
b25zdCBORkEmIGltbXV0YWJsZU5GQSwgY29uc3QgTkZBTm9kZUNsb3N1cmVzJiBuZmFOb2RlY2xv
c3VyZXMpCitzdGF0aWMgaW5saW5lIHZvaWQgY3JlYXRlQ29tYmluZWRUcmFuc2l0aW9uKFByZWFs
bG9jYXRlZE5GQU5vZGVSYW5nZUxpc3QmIGNvbWJpbmVkUmFuZ2VMaXN0LCBjb25zdCBVbmlxdWVO
b2RlSWRTZXRJbXBsJiBzb3VyY2VOb2RlU2V0LCBjb25zdCBTZXJpYWxpemVkTkZBJiBzZXJpYWxp
emVkTkZBLCBjb25zdCBORkFOb2RlQ2xvc3VyZXMmIG5mYU5vZGVjbG9zdXJlcykKIHsKICAgICBj
b21iaW5lZFJhbmdlTGlzdC5jbGVhcigpOwogCkBAIC0zMDgsMTQgKzMwNywxNCBAQCBzdGF0aWMg
aW5saW5lIHZvaWQgY3JlYXRlQ29tYmluZWRUcmFuc2l0aW9uKFByZWFsbG9jYXRlZE5GQU5vZGVS
YW5nZUxpc3QmIGNvbWJpbgogICAgIERhdGFDb252ZXJ0ZXJXaXRoRXBzaWxvbkNsb3N1cmUgY29u
dmVydGVyIHsgbmZhTm9kZWNsb3N1cmVzIH07CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHNvdXJjZU5vZGVTZXQubV9zaXplOyArK2kpIHsKICAgICAgICAgdW5zaWduZWQgbm9kZUlkID0g
YnVmZmVyW2ldOwotICAgICAgICBhdXRvIHRyYW5zaXRpb25zID0gaW1tdXRhYmxlTkZBLnRyYW5z
aXRpb25zRm9yTm9kZShub2RlSWQpOworICAgICAgICBhdXRvIHRyYW5zaXRpb25zID0gc2VyaWFs
aXplZE5GQS50cmFuc2l0aW9uc0Zvck5vZGUobm9kZUlkKTsKICAgICAgICAgY29tYmluZWRSYW5n
ZUxpc3QuZXh0ZW5kKHRyYW5zaXRpb25zLmJlZ2luKCksIHRyYW5zaXRpb25zLmVuZCgpLCBjb252
ZXJ0ZXIpOwogICAgIH0KIH0KIAotc3RhdGljIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgZ2V0T3JD
cmVhdGVERkFOb2RlKGNvbnN0IE5vZGVJZFNldCYgbmZhTm9kZVNldCwgY29uc3QgTkZBJiBuZmEs
IERGQSYgZGZhLCBVbmlxdWVOb2RlSWRTZXRUYWJsZSYgdW5pcXVlTm9kZUlkU2V0VGFibGUsIFVu
aXF1ZU5vZGVRdWV1ZSYgdW5wcm9jZXNzZWROb2RlcykKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIHVu
c2lnbmVkIGdldE9yQ3JlYXRlREZBTm9kZShjb25zdCBOb2RlSWRTZXQmIG5mYU5vZGVTZXQsIGNv
bnN0IFNlcmlhbGl6ZWRORkEmIHNlcmlhbGl6ZWRORkEsIERGQSYgZGZhLCBVbmlxdWVOb2RlSWRT
ZXRUYWJsZSYgdW5pcXVlTm9kZUlkU2V0VGFibGUsIFVuaXF1ZU5vZGVRdWV1ZSYgdW5wcm9jZXNz
ZWROb2RlcykKIHsKLSAgICBOb2RlSWRTZXRUb1VuaXF1ZU5vZGVJZFNldFNvdXJjZSBub2RlSWRT
ZXRUb1VuaXF1ZU5vZGVJZFNldFNvdXJjZShkZmEsIG5mYSwgbmZhTm9kZVNldCk7CisgICAgTm9k
ZUlkU2V0VG9VbmlxdWVOb2RlSWRTZXRTb3VyY2Ugbm9kZUlkU2V0VG9VbmlxdWVOb2RlSWRTZXRT
b3VyY2UoZGZhLCBzZXJpYWxpemVkTkZBLCBuZmFOb2RlU2V0KTsKICAgICBhdXRvIHVuaXF1ZU5v
ZGVJZEFkZFJlc3VsdCA9IHVuaXF1ZU5vZGVJZFNldFRhYmxlLmFkZDxOb2RlSWRTZXRUb1VuaXF1
ZU5vZGVJZFNldFRyYW5zbGF0b3I+KG5vZGVJZFNldFRvVW5pcXVlTm9kZUlkU2V0U291cmNlKTsK
ICAgICBpZiAodW5pcXVlTm9kZUlkQWRkUmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHVucHJv
Y2Vzc2VkTm9kZXMuYXBwZW5kKHVuaXF1ZU5vZGVJZEFkZFJlc3VsdC5pdGVyYXRvci0+aW1wbCgp
KTsKQEAgLTMyMywxOSArMzIyLDIxIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIGdl
dE9yQ3JlYXRlREZBTm9kZShjb25zdCBOb2RlSWRTZXQmIG5mYU5vZGVTZXQsIGNvCiAgICAgcmV0
dXJuIHVuaXF1ZU5vZGVJZEFkZFJlc3VsdC5pdGVyYXRvci0+aW1wbCgpLT5tX2RmYU5vZGVJZDsK
IH0KIAotREZBIE5GQVRvREZBOjpjb252ZXJ0KE5GQSYgbmZhKQorT3B0aW9uYWw8REZBPiBORkFU
b0RGQTo6Y29udmVydChORkEmJiBuZmEpCiB7Ci0gICAgTkZBTm9kZUNsb3N1cmVzIG5mYU5vZGVD
bG9zdXJlczsKLSAgICByZXNvbHZlRXBzaWxvbkNsb3N1cmVzKG5mYSwgbmZhTm9kZUNsb3N1cmVz
KTsKKyAgICBhdXRvIHNlcmlhbGl6ZWRORkEgPSBTZXJpYWxpemVkTkZBOjpzZXJpYWxpemUoV1RG
TW92ZShuZmEpKTsKKyAgICBpZiAoIXNlcmlhbGl6ZWRORkEpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAKKyAgICBORkFOb2RlQ2xvc3VyZXMgbmZhTm9kZUNsb3N1cmVzID0gcmVzb2x2
ZUVwc2lsb25DbG9zdXJlcygqc2VyaWFsaXplZE5GQSk7CiAgICAgREZBIGRmYTsKIAotICAgIE5v
ZGVJZFNldCBpbml0aWFsU2V0KHsgbmZhLnJvb3QoKSB9KTsKLSAgICBleHRlbmRTZXRXaXRoQ2xv
c3VyZShuZmFOb2RlQ2xvc3VyZXMsIG5mYS5yb290KCksIGluaXRpYWxTZXQpOworICAgIE5vZGVJ
ZFNldCBpbml0aWFsU2V0KHsgc2VyaWFsaXplZE5GQS0+cm9vdCgpIH0pOworICAgIGV4dGVuZFNl
dFdpdGhDbG9zdXJlKG5mYU5vZGVDbG9zdXJlcywgc2VyaWFsaXplZE5GQS0+cm9vdCgpLCBpbml0
aWFsU2V0KTsKIAogICAgIFVuaXF1ZU5vZGVJZFNldFRhYmxlIHVuaXF1ZU5vZGVJZFNldFRhYmxl
OwogCi0gICAgTm9kZUlkU2V0VG9VbmlxdWVOb2RlSWRTZXRTb3VyY2UgaW5pdGlhbE5vZGVJZFNl
dFRvVW5pcXVlTm9kZUlkU2V0U291cmNlKGRmYSwgbmZhLCBpbml0aWFsU2V0KTsKKyAgICBOb2Rl
SWRTZXRUb1VuaXF1ZU5vZGVJZFNldFNvdXJjZSBpbml0aWFsTm9kZUlkU2V0VG9VbmlxdWVOb2Rl
SWRTZXRTb3VyY2UoZGZhLCAqc2VyaWFsaXplZE5GQSwgaW5pdGlhbFNldCk7CiAgICAgYXV0byBh
ZGRSZXN1bHQgPSB1bmlxdWVOb2RlSWRTZXRUYWJsZS5hZGQ8Tm9kZUlkU2V0VG9VbmlxdWVOb2Rl
SWRTZXRUcmFuc2xhdG9yPihpbml0aWFsTm9kZUlkU2V0VG9VbmlxdWVOb2RlSWRTZXRTb3VyY2Up
OwogCiAgICAgVW5pcXVlTm9kZVF1ZXVlIHVucHJvY2Vzc2VkTm9kZXM7CkBAIC0zNDQsMTEgKzM0
NSwxMSBAQCBERkEgTkZBVG9ERkE6OmNvbnZlcnQoTkZBJiBuZmEpCiAgICAgUHJlYWxsb2NhdGVk
TkZBTm9kZVJhbmdlTGlzdCBjb21iaW5lZFJhbmdlTGlzdDsKICAgICBkbyB7CiAgICAgICAgIFVu
aXF1ZU5vZGVJZFNldEltcGwqIHVuaXF1ZU5vZGVJZFNldEltcGwgPSB1bnByb2Nlc3NlZE5vZGVz
LnRha2VMYXN0KCk7Ci0gICAgICAgIGNyZWF0ZUNvbWJpbmVkVHJhbnNpdGlvbihjb21iaW5lZFJh
bmdlTGlzdCwgKnVuaXF1ZU5vZGVJZFNldEltcGwsIG5mYSwgbmZhTm9kZUNsb3N1cmVzKTsKKyAg
ICAgICAgY3JlYXRlQ29tYmluZWRUcmFuc2l0aW9uKGNvbWJpbmVkUmFuZ2VMaXN0LCAqdW5pcXVl
Tm9kZUlkU2V0SW1wbCwgKnNlcmlhbGl6ZWRORkEsIG5mYU5vZGVDbG9zdXJlcyk7CiAKICAgICAg
ICAgdW5zaWduZWQgdHJhbnNpdGlvbnNTdGFydCA9IGRmYS50cmFuc2l0aW9uUmFuZ2VzLnNpemUo
KTsKICAgICAgICAgZm9yIChjb25zdCBORkFOb2RlUmFuZ2UmIHJhbmdlIDogY29tYmluZWRSYW5n
ZUxpc3QpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIHRhcmdldE5vZGVJZCA9IGdldE9yQ3JlYXRl
REZBTm9kZShyYW5nZS5kYXRhLCBuZmEsIGRmYSwgdW5pcXVlTm9kZUlkU2V0VGFibGUsIHVucHJv
Y2Vzc2VkTm9kZXMpOworICAgICAgICAgICAgdW5zaWduZWQgdGFyZ2V0Tm9kZUlkID0gZ2V0T3JD
cmVhdGVERkFOb2RlKHJhbmdlLmRhdGEsICpzZXJpYWxpemVkTkZBLCBkZmEsIHVuaXF1ZU5vZGVJ
ZFNldFRhYmxlLCB1bnByb2Nlc3NlZE5vZGVzKTsKICAgICAgICAgICAgIGRmYS50cmFuc2l0aW9u
UmFuZ2VzLmFwcGVuZCh7IHJhbmdlLmZpcnN0LCByYW5nZS5sYXN0IH0pOwogICAgICAgICAgICAg
ZGZhLnRyYW5zaXRpb25EZXN0aW5hdGlvbnMuYXBwZW5kKHRhcmdldE5vZGVJZCk7CiAgICAgICAg
IH0KQEAgLTM2MCw4ICszNjEsNyBAQCBERkEgTkZBVG9ERkE6OmNvbnZlcnQoTkZBJiBuZmEpCiAg
ICAgICAgIGRmYVNvdXJjZU5vZGUuc2V0VHJhbnNpdGlvbnModHJhbnNpdGlvbnNTdGFydCwgc3Rh
dGljX2Nhc3Q8dWludDhfdD4odHJhbnNpdGlvbnNMZW5ndGgpKTsKICAgICB9IHdoaWxlICghdW5w
cm9jZXNzZWROb2Rlcy5pc0VtcHR5KCkpOwogCi0gICAgZGZhLnNocmlua1RvRml0KCk7Ci0gICAg
cmV0dXJuIGRmYTsKKyAgICByZXR1cm4gV1RGTW92ZShkZmEpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBDb250ZW50RXh0ZW5zaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvTkZBVG9ERkEuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05G
QVRvREZBLmgKaW5kZXggOGJlZTQ4ODIzNmJhMzJlY2Y4YzhkNjg2MTlkYTI1NjZiOTI3YTg4Ny4u
OWZkM2ExZDNkOTk2NzUwMjk0NmRiN2E3MTJjYzNiMDQzMzBlNmQ0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5oCkBAIC0zOCw3ICszOCw3IEBAIHN0cnVj
dCBORkE7CiAvLyBORkFUb0RGQSBwcm92aWRlcyBhIHdheSB0byBidWlsZCBhIERGQSBjb3JyZXNw
b25kaW5nIHRvIGEgTkZBLgogY2xhc3MgTkZBVG9ERkEgewogcHVibGljOgotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBERkEgY29udmVydChORkEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgT3B0aW9uYWw8REZBPiBjb252ZXJ0KE5GQSYmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIENv
bnRlbnRFeHRlbnNpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9TZXJpYWxpemVkTkZBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L1NlcmlhbGl6ZWRORkEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyZDRjYmUwNWRhZTBkZGNkYTI3OTlkMDVk
MjQwNDhiNGQ3YmY1OWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9TZXJpYWxpemVkTkZBLmNwcApAQCAtMCwwICsxLDEzOSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkTkZBLmgiCisKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1l
c3BhY2UgQ29udGVudEV4dGVuc2lvbnMgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorYm9vbCB3
cml0ZUFsbFRvRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwgY29uc3Qg
VCYgY29udGFpbmVyKQoreworICAgIGNvbnN0IGNoYXIqIGJ5dGVzID0gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oY29udGFpbmVyLmRhdGEoKSk7CisgICAgc2l6ZV90IGJ5dGVzTGVuZ3Ro
ID0gY29udGFpbmVyLnNpemUoKSAqIHNpemVvZihjb250YWluZXJbMF0pOworICAgIGNvbnN0IGNo
YXIqIGVuZCA9IGJ5dGVzICsgYnl0ZXNMZW5ndGg7CisgICAgd2hpbGUgKGJ5dGVzIDwgZW5kKSB7
CisgICAgICAgIGF1dG8gd3JpdHRlbiA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIGJ5
dGVzLCBieXRlc0xlbmd0aCk7CisgICAgICAgIGlmICh3cml0dGVuID09IC0xKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBieXRlcyArPSB3cml0dGVuOworICAgICAgICBieXRl
c0xlbmd0aCAtPSB3cml0dGVuOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworT3B0aW9u
YWw8U2VyaWFsaXplZE5GQT4gU2VyaWFsaXplZE5GQTo6c2VyaWFsaXplKE5GQSYmIG5mYSkKK3sK
KyAgICBhdXRvIGZpbGUgPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwor
ICAgIGF1dG8gZmlsZW5hbWUgPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiU2VyaWFs
aXplZE5GQSIsIGZpbGUpOworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxl
KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGJvb2wgd3JvdGVTdWNjZXNz
ZnVsbHkgPSB3cml0ZUFsbFRvRmlsZShmaWxlLCBuZmEubm9kZXMpCisgICAgICAgICYmIHdyaXRl
QWxsVG9GaWxlKGZpbGUsIG5mYS50cmFuc2l0aW9ucykKKyAgICAgICAgJiYgd3JpdGVBbGxUb0Zp
bGUoZmlsZSwgbmZhLnRhcmdldHMpCisgICAgICAgICYmIHdyaXRlQWxsVG9GaWxlKGZpbGUsIG5m
YS5lcHNpbG9uVHJhbnNpdGlvbnNUYXJnZXRzKQorICAgICAgICAmJiB3cml0ZUFsbFRvRmlsZShm
aWxlLCBuZmEuYWN0aW9ucyk7CisgICAgaWYgKCF3cm90ZVN1Y2Nlc3NmdWxseSkgeworICAgICAg
ICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUoZmlsZW5hbWUpOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KKwor
ICAgIGJvb2wgbWFwcGVkU3VjY2Vzc2Z1bGx5ID0gZmFsc2U7CisgICAgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEgbWFwcGVkRmlsZShmaWxlLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6
UHJpdmF0ZSwgbWFwcGVkU3VjY2Vzc2Z1bGx5KTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
ZmlsZSk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7CisgICAgaWYgKCFt
YXBwZWRTdWNjZXNzZnVsbHkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBN
ZXRhZGF0YSBtZXRhZGF0YSB7CisgICAgICAgIG5mYS5ub2Rlcy5zaXplKCksCisgICAgICAgIG5m
YS50cmFuc2l0aW9ucy5zaXplKCksCisgICAgICAgIG5mYS50YXJnZXRzLnNpemUoKSwKKyAgICAg
ICAgbmZhLmVwc2lsb25UcmFuc2l0aW9uc1RhcmdldHMuc2l6ZSgpLAorICAgICAgICBuZmEuYWN0
aW9ucy5zaXplKCksCisgICAgICAgIDAsCisgICAgICAgIG5mYS5ub2Rlcy5zaXplKCkgKiBzaXpl
b2YobmZhLm5vZGVzWzBdKSwKKyAgICAgICAgbmZhLm5vZGVzLnNpemUoKSAqIHNpemVvZihuZmEu
bm9kZXNbMF0pCisgICAgICAgICAgICArIG5mYS50cmFuc2l0aW9ucy5zaXplKCkgKiBzaXplb2Yo
bmZhLnRyYW5zaXRpb25zWzBdKSwKKyAgICAgICAgbmZhLm5vZGVzLnNpemUoKSAqIHNpemVvZihu
ZmEubm9kZXNbMF0pCisgICAgICAgICAgICArIG5mYS50cmFuc2l0aW9ucy5zaXplKCkgKiBzaXpl
b2YobmZhLnRyYW5zaXRpb25zWzBdKQorICAgICAgICAgICAgKyBuZmEudGFyZ2V0cy5zaXplKCkg
KiBzaXplb2YobmZhLnRhcmdldHNbMF0pLAorICAgICAgICBuZmEubm9kZXMuc2l6ZSgpICogc2l6
ZW9mKG5mYS5ub2Rlc1swXSkKKyAgICAgICAgICAgICsgbmZhLnRyYW5zaXRpb25zLnNpemUoKSAq
IHNpemVvZihuZmEudHJhbnNpdGlvbnNbMF0pCisgICAgICAgICAgICArIG5mYS50YXJnZXRzLnNp
emUoKSAqIHNpemVvZihuZmEudGFyZ2V0c1swXSkKKyAgICAgICAgICAgICsgbmZhLmVwc2lsb25U
cmFuc2l0aW9uc1RhcmdldHMuc2l6ZSgpICogc2l6ZW9mKG5mYS5lcHNpbG9uVHJhbnNpdGlvbnNU
YXJnZXRzWzBdKQorICAgIH07CisKKyAgICBuZmEuY2xlYXIoKTsKKworICAgIHJldHVybiB7eyBX
VEZNb3ZlKG1hcHBlZEZpbGUpLCBXVEZNb3ZlKG1ldGFkYXRhKSB9fTsKK30KKworU2VyaWFsaXpl
ZE5GQTo6U2VyaWFsaXplZE5GQShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGZpbGUsIE1l
dGFkYXRhJiYgbWV0YWRhdGEpCisgICAgOiBtX2ZpbGUoV1RGTW92ZShmaWxlKSkKKyAgICAsIG1f
bWV0YWRhdGEoV1RGTW92ZShtZXRhZGF0YSkpCit7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
Citjb25zdCBUKiBTZXJpYWxpemVkTkZBOjpwb2ludGVyQXRPZmZzZXRJbkZpbGUoc2l6ZV90IG9m
ZnNldCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obV9maWxlLmRhdGEoKSkgKyBvZmZzZXQpOwor
fQorCithdXRvIFNlcmlhbGl6ZWRORkE6Om5vZGVzKCkgY29uc3QgLT4gY29uc3QgUmFuZ2U8SW1t
dXRhYmxlTkZBTm9kZT4KK3sKKyAgICByZXR1cm4geyBwb2ludGVyQXRPZmZzZXRJbkZpbGU8SW1t
dXRhYmxlTkZBTm9kZT4obV9tZXRhZGF0YS5ub2Rlc09mZnNldCksIG1fbWV0YWRhdGEubm9kZXNT
aXplIH07Cit9CisKK2F1dG8gU2VyaWFsaXplZE5GQTo6dHJhbnNpdGlvbnMoKSBjb25zdCAtPiBj
b25zdCBSYW5nZTxJbW11dGFibGVSYW5nZTxjaGFyPj4KK3sKKyAgICByZXR1cm4geyBwb2ludGVy
QXRPZmZzZXRJbkZpbGU8SW1tdXRhYmxlUmFuZ2U8Y2hhcj4+KG1fbWV0YWRhdGEudHJhbnNpdGlv
bnNPZmZzZXQpLCBtX21ldGFkYXRhLnRyYW5zaXRpb25zU2l6ZSB9OworfQorCithdXRvIFNlcmlh
bGl6ZWRORkE6OnRhcmdldHMoKSBjb25zdCAtPiBjb25zdCBSYW5nZTx1aW50MzJfdD4KK3sKKyAg
ICByZXR1cm4geyBwb2ludGVyQXRPZmZzZXRJbkZpbGU8dWludDMyX3Q+KG1fbWV0YWRhdGEudGFy
Z2V0c09mZnNldCksIG1fbWV0YWRhdGEudGFyZ2V0c1NpemUgfTsKK30KKworYXV0byBTZXJpYWxp
emVkTkZBOjplcHNpbG9uVHJhbnNpdGlvbnNUYXJnZXRzKCkgY29uc3QgLT4gY29uc3QgUmFuZ2U8
dWludDMyX3Q+Cit7CisgICAgcmV0dXJuIHsgcG9pbnRlckF0T2Zmc2V0SW5GaWxlPHVpbnQzMl90
PihtX21ldGFkYXRhLmVwc2lsb25UcmFuc2l0aW9uc1RhcmdldHNPZmZzZXQpLCBtX21ldGFkYXRh
LmVwc2lsb25UcmFuc2l0aW9uc1RhcmdldHNTaXplIH07Cit9CisKK2F1dG8gU2VyaWFsaXplZE5G
QTo6YWN0aW9ucygpIGNvbnN0IC0+IGNvbnN0IFJhbmdlPHVpbnQ2NF90PgoreworICAgIHJldHVy
biB7IHBvaW50ZXJBdE9mZnNldEluRmlsZTx1aW50NjRfdD4obV9tZXRhZGF0YS5hY3Rpb25zT2Zm
c2V0KSwgbV9tZXRhZGF0YS5hY3Rpb25zU2l6ZSB9OworfQorCit9IC8vIG5hbWVzcGFjZSBDb250
ZW50RXh0ZW5zaW9ucworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL1NlcmlhbGl6ZWRORkEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTBjYmRiNjE2YjlkODEyZDk2NzRhNzgz
YzQ0MTViM2Y3YzM2MTMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5oCkBAIC0wLDAgKzEsMTkyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorCisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNl
IENvbnRlbnRFeHRlbnNpb25zIHsKKworc3RydWN0IE5GQTsKKworY2xhc3MgU2VyaWFsaXplZE5G
QSB7CitwdWJsaWM6CisgICAgc3RhdGljIE9wdGlvbmFsPFNlcmlhbGl6ZWRORkE+IHNlcmlhbGl6
ZShORkEmJik7CisgICAgU2VyaWFsaXplZE5GQShTZXJpYWxpemVkTkZBJiYpID0gZGVmYXVsdDsK
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgY2xhc3MgUmFuZ2UgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgUmFuZ2UoY29uc3QgVCogYmVnaW4sIHNpemVfdCBzaXplKQorICAgICAgICAg
ICAgOiBtX2JlZ2luKGJlZ2luKQorICAgICAgICAgICAgLCBtX3NpemUoc2l6ZSkgeyB9CisgICAg
ICAgIGNvbnN0IFQqIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9iZWdpbjsgfQorICAgICAgICBj
b25zdCBUKiBlbmQoKSBjb25zdCB7IHJldHVybiBtX2JlZ2luICsgbV9zaXplOyB9CisgICAgICAg
IHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAgICAgIGNvbnN0IFQm
IG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGkgPCBtX3NpemUpOworICAgICAgICAgICAgcmV0dXJuIGJlZ2luKClbaV07Cisg
ICAgICAgIH0KKyAgICBwcml2YXRlOgorICAgICAgICBjb25zdCBUKiBtX2JlZ2luIHsgbnVsbHB0
ciB9OworICAgICAgICBzaXplX3QgbV9zaXplIHsgMCB9OworICAgIH07CisKKyAgICBjb25zdCBS
YW5nZTxJbW11dGFibGVORkFOb2RlPiBub2RlcygpIGNvbnN0OworICAgIGNvbnN0IFJhbmdlPElt
bXV0YWJsZVJhbmdlPGNoYXI+PiB0cmFuc2l0aW9ucygpIGNvbnN0OworICAgIGNvbnN0IFJhbmdl
PHVpbnQzMl90PiB0YXJnZXRzKCkgY29uc3Q7CisgICAgY29uc3QgUmFuZ2U8dWludDMyX3Q+IGVw
c2lsb25UcmFuc2l0aW9uc1RhcmdldHMoKSBjb25zdDsKKyAgICBjb25zdCBSYW5nZTx1aW50NjRf
dD4gYWN0aW9ucygpIGNvbnN0OworCisgICAgdWludDMyX3Qgcm9vdCgpIGNvbnN0CisgICAgewor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChub2RlcygpLnNpemUoKSk7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKworICAgIHN0cnVjdCBDb25zdFRhcmdldEl0ZXJhdG9yIHsKKyAgICAgICAgY29u
c3QgU2VyaWFsaXplZE5GQSYgc2VyaWFsaXplZE5GQTsKKyAgICAgICAgdWludDMyX3QgcG9zaXRp
b247CisKKyAgICAgICAgY29uc3QgdWludDMyX3QmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJu
IHNlcmlhbGl6ZWRORkEudGFyZ2V0cygpW3Bvc2l0aW9uXTsgfQorICAgICAgICBjb25zdCB1aW50
MzJfdCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICZzZXJpYWxpemVkTkZBLnRhcmdldHMo
KVtwb3NpdGlvbl07IH0KKworICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29uc3RUYXJn
ZXRJdGVyYXRvciYgb3RoZXIpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCgm
c2VyaWFsaXplZE5GQSA9PSAmb3RoZXIuc2VyaWFsaXplZE5GQSk7CisgICAgICAgICAgICByZXR1
cm4gcG9zaXRpb24gPT0gb3RoZXIucG9zaXRpb247CisgICAgICAgIH0KKyAgICAgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IENvbnN0VGFyZ2V0SXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsgfQorCisgICAgICAgIENvbnN0VGFyZ2V0SXRlcmF0b3ImIG9w
ZXJhdG9yKysoKQorICAgICAgICB7CisgICAgICAgICAgICArK3Bvc2l0aW9uOworICAgICAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgICAgICB9CisgICAgfTsKKworICAgIHN0cnVjdCBJdGVyYWJs
ZUNvbnN0VGFyZ2V0cyB7CisgICAgICAgIGNvbnN0IFNlcmlhbGl6ZWRORkEmIHNlcmlhbGl6ZWRO
RkE7CisgICAgICAgIHVpbnQzMl90IHRhcmdldFN0YXJ0OworICAgICAgICB1aW50MzJfdCB0YXJn
ZXRFbmQ7CisKKyAgICAgICAgQ29uc3RUYXJnZXRJdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0
dXJuIHsgc2VyaWFsaXplZE5GQSwgdGFyZ2V0U3RhcnQgfTsgfQorICAgICAgICBDb25zdFRhcmdl
dEl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIHsgc2VyaWFsaXplZE5GQSwgdGFyZ2V0RW5k
IH07IH0KKyAgICB9OworCisgICAgc3RydWN0IENvbnN0UmFuZ2VJdGVyYXRvciB7CisgICAgICAg
IGNvbnN0IFNlcmlhbGl6ZWRORkEmIHNlcmlhbGl6ZWRORkE7CisgICAgICAgIHVpbnQzMl90IHBv
c2l0aW9uOworCisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb25zdFJhbmdlSXRlcmF0
b3ImIG90aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoJnNlcmlhbGl6
ZWRORkEgPT0gJm90aGVyLnNlcmlhbGl6ZWRORkEpOworICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uID09IG90aGVyLnBvc2l0aW9uOworICAgICAgICB9CisgICAgICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBDb25zdFJhbmdlSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsgfQorCisgICAgICAgIENvbnN0UmFuZ2VJdGVyYXRvciYgb3BlcmF0b3IrKygp
CisgICAgICAgIHsKKyAgICAgICAgICAgICsrcG9zaXRpb247CisgICAgICAgICAgICByZXR1cm4g
KnRoaXM7CisgICAgICAgIH0KKworICAgICAgICBjaGFyIGZpcnN0KCkgY29uc3QKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIHJhbmdlKCkuZmlyc3Q7CisgICAgICAgIH0KKworICAgICAg
ICBjaGFyIGxhc3QoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gcmFuZ2Uo
KS5sYXN0OworICAgICAgICB9CisKKyAgICAgICAgSXRlcmFibGVDb25zdFRhcmdldHMgZGF0YSgp
IGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IEltbXV0YWJsZVJhbmdlPGNoYXI+
JiByYW5nZSA9IHRoaXMtPnJhbmdlKCk7CisgICAgICAgICAgICByZXR1cm4geyBzZXJpYWxpemVk
TkZBLCByYW5nZS50YXJnZXRTdGFydCwgcmFuZ2UudGFyZ2V0RW5kIH07CisgICAgICAgIH07CisK
KyAgICBwcml2YXRlOgorICAgICAgICBjb25zdCBJbW11dGFibGVSYW5nZTxjaGFyPiYgcmFuZ2Uo
KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplZE5GQS50cmFu
c2l0aW9ucygpW3Bvc2l0aW9uXTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBzdHJ1Y3QgSXRl
cmFibGVDb25zdFJhbmdlIHsKKyAgICAgICAgY29uc3QgU2VyaWFsaXplZE5GQSYgc2VyaWFsaXpl
ZE5GQTsKKyAgICAgICAgdWludDMyX3QgcmFuZ2VzU3RhcnQ7CisgICAgICAgIHVpbnQzMl90IHJh
bmdlc0VuZDsKKworICAgICAgICBDb25zdFJhbmdlSXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJl
dHVybiB7IHNlcmlhbGl6ZWRORkEsIHJhbmdlc1N0YXJ0IH07IH0KKyAgICAgICAgQ29uc3RSYW5n
ZUl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIHsgc2VyaWFsaXplZE5GQSwgcmFuZ2VzRW5k
IH07IH0KKworI2lmIENPTlRFTlRfRVhURU5TSU9OU19TVEFURV9NQUNISU5FX0RFQlVHR0lORwor
ICAgICAgICB2b2lkIGRlYnVnUHJpbnQoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIHJhbmdlIDogKnRoaXMpCisgICAgICAgICAgICAgICAgV1RGTG9nQWx3
YXlzKCIgICAgJWQtJWQiLCByYW5nZS5maXJzdCwgcmFuZ2UubGFzdCk7CisgICAgICAgIH0KKyNl
bmRpZgorICAgIH07CisKKyAgICBJdGVyYWJsZUNvbnN0UmFuZ2UgdHJhbnNpdGlvbnNGb3JOb2Rl
KHVpbnQzMl90IG5vZGVJZCkgY29uc3QKKyAgICB7CisgICAgICAgIGNvbnN0IGF1dG8mIG5vZGUg
PSBub2RlcygpW25vZGVJZF07CisgICAgICAgIHJldHVybiB7ICp0aGlzLCBub2RlLnJhbmdlc1N0
YXJ0LCBub2RlLnJhbmdlc0VuZCB9OworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgTWV0
YWRhdGEgeworICAgICAgICBzaXplX3Qgbm9kZXNTaXplIHsgMCB9OworICAgICAgICBzaXplX3Qg
dHJhbnNpdGlvbnNTaXplIHsgMCB9OworICAgICAgICBzaXplX3QgdGFyZ2V0c1NpemUgeyAwIH07
CisgICAgICAgIHNpemVfdCBlcHNpbG9uVHJhbnNpdGlvbnNUYXJnZXRzU2l6ZSB7IDAgfTsKKyAg
ICAgICAgc2l6ZV90IGFjdGlvbnNTaXplIHsgMCB9OworCisgICAgICAgIHNpemVfdCBub2Rlc09m
ZnNldCB7IDAgfTsKKyAgICAgICAgc2l6ZV90IHRyYW5zaXRpb25zT2Zmc2V0IHsgMCB9OworICAg
ICAgICBzaXplX3QgdGFyZ2V0c09mZnNldCB7IDAgfTsKKyAgICAgICAgc2l6ZV90IGVwc2lsb25U
cmFuc2l0aW9uc1RhcmdldHNPZmZzZXQgeyAwIH07CisgICAgICAgIHNpemVfdCBhY3Rpb25zT2Zm
c2V0IHsgMCB9OworICAgIH07CisgICAgU2VyaWFsaXplZE5GQShGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmLCBNZXRhZGF0YSYmKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAg
Y29uc3QgVCogcG9pbnRlckF0T2Zmc2V0SW5GaWxlKHNpemVfdCkgY29uc3Q7CisgICAgCisgICAg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbV9maWxlOworICAgIE1ldGFkYXRhIG1fbWV0YWRh
dGE7Cit9OworCit9IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlz
dFN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1
bGVMaXN0U3RvcmUubW0KaW5kZXggMTY0ZjYwZWNjY2M1ZDY3NjNmNWE5M2QwNzNjMjhhMjc1MjBk
YmI2YS4uNWZmYjM5MjUyMzY1NzVlNTZhZjI2ZjYwNDhkMjEzMDgwMGQ1NGU5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3Rv
cmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1
bGVMaXN0U3RvcmUubW0KQEAgLTE0Niw4ICsxNDYsNyBAQCBzdGF0aWMgV0tFcnJvckNvZGUgdG9X
S0Vycm9yQ29kZShjb25zdCBzdGQ6OmVycm9yX2NvZGUmIGVycm9yKQogICAgIH0pOwogfQogCi0v
LyBOU19SRUxFQVNFU19BUkdVTUVOVCB0byBrZWVwIHBlYWsgbWVtb3J5IHVzYWdlIGxvdy4KLS0g
KHZvaWQpX2NvbXBpbGVDb250ZW50UnVsZUxpc3RGb3JJZGVudGlmaWVyOihOU1N0cmluZyAqKWlk
ZW50aWZpZXIgZW5jb2RlZENvbnRlbnRSdWxlTGlzdDooTlNTdHJpbmcgKikgTlNfUkVMRUFTRVNf
QVJHVU1FTlQgZW5jb2RlZENvbnRlbnRSdWxlTGlzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoV0tDb250ZW50UnVsZUxpc3QgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgorLSAo
dm9pZClfY29tcGlsZUNvbnRlbnRSdWxlTGlzdEZvcklkZW50aWZpZXI6KE5TU3RyaW5nICopaWRl
bnRpZmllciBlbmNvZGVkQ29udGVudFJ1bGVMaXN0OihOU1N0cmluZyAqKSBlbmNvZGVkQ29udGVu
dFJ1bGVMaXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS0NvbnRlbnRSdWxlTGlzdCAq
LCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgU3RyaW5nIGpzb24oZW5jb2Rl
ZENvbnRlbnRSdWxlTGlzdCk7CiAgICAgW2VuY29kZWRDb250ZW50UnVsZUxpc3QgcmVsZWFzZV07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50
UnVsZUxpc3RTdG9yZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlUHJpdmF0ZS5oCmluZGV4IDkxOGE1YmNjNmFkZjQ4NmYw
OTBmN2M4NTliY2JkMjg3N2Y3YjQ2MGQuLjJiYTdhMTk2NzAwYzk4Y2VmNTE3MjQ2Yzk3YWRjZDdm
MGMzMTg1YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0NvbnRlbnRSdWxlTGlzdFN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlUHJpdmF0ZS5oCkBAIC0zMiw4ICsz
Miw3IEBACiAtICh2b2lkKV9pbnZhbGlkYXRlQ29udGVudFJ1bGVMaXN0VmVyc2lvbkZvcklkZW50
aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllcjsKIC0gKHZvaWQpX2dldENvbnRlbnRSdWxlTGlz
dFNvdXJjZUZvcklkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTlNTdHJpbmcqKSljb21wbGV0aW9uSGFuZGxlcjsKIAotLy8gTlNfUkVM
RUFTRVNfQVJHVU1FTlQgdG8ga2VlcCBwZWFrIG1lbW9yeSB1c2FnZSBsb3cuCi0tICh2b2lkKV9j
b21waWxlQ29udGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVy
IGVuY29kZWRDb250ZW50UnVsZUxpc3Q6KE5TU3RyaW5nICopIE5TX1JFTEVBU0VTX0FSR1VNRU5U
IGVuY29kZWRDb250ZW50UnVsZUxpc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdLQ29u
dGVudFJ1bGVMaXN0ICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9j
b21waWxlQ29udGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVy
IGVuY29kZWRDb250ZW50UnVsZUxpc3Q6KE5TU3RyaW5nICopIGVuY29kZWRDb250ZW50UnVsZUxp
c3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdLQ29udGVudFJ1bGVMaXN0ICosIE5TRXJy
b3IgKikpY29tcGxldGlvbkhhbmRsZXI7CiAKIC8vIFRvIG1haW50YWluIGNvbXBhdGliaWxpdHkg
d2l0aCBfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlCiAvLyBGSVhNRTogQWRkIHNvbWV0aGlu
ZyB0byBleGlzdGluZyBjbGllbnRzIG9mIF9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUgdG8g
bWlncmF0ZSBmaWxlcyBmcm9tIGxlZ2FjeSBmaWxlbmFtZXMsCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTZjMDJiOTMyNDBlNDEzMWIwMWQzZjU0
YWNhZjlmNTgzN2FkYWIwOS4uODI1YjAyMzBmYWNlNmU1MjdhZjEyZDIyNDMyODZiN2VhY2Q4Njlh
NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5IEBACisyMDIwLTEyLTAyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2VyaWFsaXplIE5GQSB0byBkaXNrIGJlZm9yZSBjb252
ZXJ0aW5nIGl0IHRvIGEgREZBIHdoZW4gY29tcGlsaW5nIGEgV0tDb250ZW50UnVsZUxpc3QKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQ1MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBzeW50
YXggb2YgZXhpc3RpbmcgdGVzdHMsIHdoaWNoIGNvdmVyIGJlaGF2aW9yIHF1aXRlIHdlbGwuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlTkZBcyk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9ERkFIZWxwZXJzLmg6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVORkFzKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OmJ1aWxkREZBRnJvbVBhdHRlcm5zKToKKwogMjAyMC0xMi0w
MiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFi
bGUgVUktc2lkZSBjb21wb3NpdGluZyBvbiB0aGUgR1BVIFByb2Nlc3MgbGF5b3V0IHRlc3RzIGJv
dApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRF
eHRlbnNpb25zLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50
RXh0ZW5zaW9ucy5jcHAKaW5kZXggODZjNmRiY2M2MzE4ODA5YmQzYzFlNjQ2OWJjNzRiMTE3MThl
ODhiNC4uNzZkZTA1NDEwOTM5YWNkZGQ3NjgxNmE4MDY3OTk3NTIzM2Y4MmY0NyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lv
bnMuY3BwCkBAIC0yMjcsMTEgKzIyNywxMCBAQCBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4
dGVuc2lvbnNCYWNrZW5kIG1ha2VCYWNrZW5kKGNvbnN0IGNoYXIqIGpzb24pCiBzdGF0aWMgVmVj
dG9yPENvbnRlbnRFeHRlbnNpb25zOjpORkE+IGNyZWF0ZU5GQXMoQ29udGVudEV4dGVuc2lvbnM6
OkNvbWJpbmVkVVJMRmlsdGVycyYgY29tYmluZWRVUkxGaWx0ZXJzKQogewogICAgIFZlY3RvcjxD
b250ZW50RXh0ZW5zaW9uczo6TkZBPiBuZmFzOwotCiAgICAgY29tYmluZWRVUkxGaWx0ZXJzLnBy
b2Nlc3NORkFzKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCksIFsmXShDb250ZW50
RXh0ZW5zaW9uczo6TkZBJiYgbmZhKSB7CiAgICAgICAgIG5mYXMuYXBwZW5kKFdURk1vdmUobmZh
KSk7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0pOwotCiAgICAgcmV0dXJuIG5mYXM7CiB9
CiAKQEAgLTU3Niw3ICs1NzUsNyBAQCBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIFNlYXJj
aFN1ZmZpeGVzV2l0aElkZW50aWNhbEFjdGlvbkFyZU1lcmdlZCkKICAgICBFWFBFQ1RfRVEoMXVs
LCBuZmFzLnNpemUoKSk7CiAgICAgRVhQRUNUX0VRKDEydWwsIG5mYXMuZmlyc3QoKS5ub2Rlcy5z
aXplKCkpOwogCi0gICAgQ29udGVudEV4dGVuc2lvbnM6OkRGQSBkZmEgPSBDb250ZW50RXh0ZW5z
aW9uczo6TkZBVG9ERkE6OmNvbnZlcnQobmZhcy5maXJzdCgpKTsKKyAgICBDb250ZW50RXh0ZW5z
aW9uczo6REZBIGRmYSA9ICpDb250ZW50RXh0ZW5zaW9uczo6TkZBVG9ERkE6OmNvbnZlcnQoV1RG
TW92ZShuZmFzLmZpcnN0KCkpKTsKICAgICBWZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5
dGVjb2RlPiBieXRlY29kZTsKICAgICBDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGVDb21w
aWxlciBjb21waWxlcihkZmEsIGJ5dGVjb2RlKTsKICAgICBjb21waWxlci5jb21waWxlKCk7CkBA
IC02MDIsNyArNjAxLDcgQEAgVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBTZWFyY2hTdWZm
aXhlc1dpdGhEaXN0aW5ndWlzaGFibGVBY3Rpb25BcmVOb3RNZXJnZWQKICAgICBFWFBFQ1RfRVEo
MXVsLCBuZmFzLnNpemUoKSk7CiAgICAgRVhQRUNUX0VRKDE3dWwsIG5mYXMuZmlyc3QoKS5ub2Rl
cy5zaXplKCkpOwogCi0gICAgQ29udGVudEV4dGVuc2lvbnM6OkRGQSBkZmEgPSBDb250ZW50RXh0
ZW5zaW9uczo6TkZBVG9ERkE6OmNvbnZlcnQobmZhcy5maXJzdCgpKTsKKyAgICBDb250ZW50RXh0
ZW5zaW9uczo6REZBIGRmYSA9ICpDb250ZW50RXh0ZW5zaW9uczo6TkZBVG9ERkE6OmNvbnZlcnQo
V1RGTW92ZShuZmFzLmZpcnN0KCkpKTsKICAgICBWZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6OkRG
QUJ5dGVjb2RlPiBieXRlY29kZTsKICAgICBDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGVD
b21waWxlciBjb21waWxlcihkZmEsIGJ5dGVjb2RlKTsKICAgICBjb21waWxlci5jb21waWxlKCk7
CkBAIC0xMTI1LDcgKzExMjQsNyBAQCBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIFVzZWxl
c3NUZXJtc01hdGNoaW5nRXZlcnl0aGluZ0FyZUVsaW1pbmF0ZWQpCiAgICAgRVhQRUNUX0VRKDF1
bCwgbmZhcy5zaXplKCkpOwogICAgIEVYUEVDVF9FUSg3dWwsIG5mYXMuZmlyc3QoKS5ub2Rlcy5z
aXplKCkpOwogCi0gICAgQ29udGVudEV4dGVuc2lvbnM6OkRGQSBkZmEgPSBDb250ZW50RXh0ZW5z
aW9uczo6TkZBVG9ERkE6OmNvbnZlcnQobmZhcy5maXJzdCgpKTsKKyAgICBDb250ZW50RXh0ZW5z
aW9uczo6REZBIGRmYSA9ICpDb250ZW50RXh0ZW5zaW9uczo6TkZBVG9ERkE6OmNvbnZlcnQoV1RG
TW92ZShuZmFzLmZpcnN0KCkpKTsKICAgICBWZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5
dGVjb2RlPiBieXRlY29kZTsKICAgICBDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGVDb21w
aWxlciBjb21waWxlcihkZmEsIGJ5dGVjb2RlKTsKICAgICBjb21waWxlci5jb21waWxlKCk7CkBA
IC0xMjcxLDEyICsxMjcwLDEzIEBAIFRFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgTGFyZ2VK
dW1wcykKICAgICBWZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6Ok5GQT4gbmZhczsKICAgICBjb21i
aW5lZFVSTEZpbHRlcnMucHJvY2Vzc05GQXMoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+Ojpt
YXgoKSwgWyZdKENvbnRlbnRFeHRlbnNpb25zOjpORkEmJiBuZmEpIHsKICAgICAgICAgbmZhcy5h
cHBlbmQoV1RGTW92ZShuZmEpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSk7CiAgICAg
RVhQRUNUX0VRKG5mYXMuc2l6ZSgpLCAxdWxsKTsKICAgICAKICAgICBWZWN0b3I8Q29udGVudEV4
dGVuc2lvbnM6OkRGQT4gZGZhczsKLSAgICBmb3IgKGF1dG8mIG5mYSA6IG5mYXMpCi0gICAgICAg
IGRmYXMuYXBwZW5kKENvbnRlbnRFeHRlbnNpb25zOjpORkFUb0RGQTo6Y29udmVydChuZmEpKTsK
KyAgICBmb3IgKGF1dG8mJiBuZmEgOiBXVEZNb3ZlKG5mYXMpKQorICAgICAgICBkZmFzLmFwcGVu
ZCgqQ29udGVudEV4dGVuc2lvbnM6Ok5GQVRvREZBOjpjb252ZXJ0KFdURk1vdmUobmZhKSkpOwog
ICAgIEVYUEVDVF9FUShkZmFzLnNpemUoKSwgMXVsbCk7CiAgICAgCiAgICAgVmVjdG9yPENvbnRl
bnRFeHRlbnNpb25zOjpERkFCeXRlY29kZT4gY29tYmluZWRCeXRlY29kZTsKQEAgLTE2ODUsMTIg
KzE2ODUsMTMgQEAgVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBTcGxpdHRpbmdMYXJnZU5G
QXMpCiAgICAgICAgIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uczo6TkZBPiBuZmFzOwogICAgICAg
ICBjb21iaW5lZFVSTEZpbHRlcnMucHJvY2Vzc05GQXMoaSwgWyZdKENvbnRlbnRFeHRlbnNpb25z
OjpORkEmJiBuZmEpIHsKICAgICAgICAgICAgIG5mYXMuYXBwZW5kKFdURk1vdmUobmZhKSk7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSk7CiAgICAgICAgIEVYUEVDVF9FUShu
ZmFzLnNpemUoKSwgZXhwZWN0ZWRORkFDb3VudHNbaV0pOwogICAgICAgICAKICAgICAgICAgVmVj
dG9yPENvbnRlbnRFeHRlbnNpb25zOjpERkE+IGRmYXM7Ci0gICAgICAgIGZvciAoYXV0byYgbmZh
IDogbmZhcykKLSAgICAgICAgICAgIGRmYXMuYXBwZW5kKENvbnRlbnRFeHRlbnNpb25zOjpORkFU
b0RGQTo6Y29udmVydChuZmEpKTsKKyAgICAgICAgZm9yIChhdXRvJiBuZmEgOiBXVEZNb3ZlKG5m
YXMpKQorICAgICAgICAgICAgZGZhcy5hcHBlbmQoKkNvbnRlbnRFeHRlbnNpb25zOjpORkFUb0RG
QTo6Y29udmVydChXVEZNb3ZlKG5mYSkpKTsKICAgICAgICAgCiAgICAgICAgIFZlY3RvcjxDb250
ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGU+IGNvbWJpbmVkQnl0ZWNvZGU7CiAgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgZGZhIDogZGZhcykgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0RGQUhlbHBlcnMuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9ERkFIZWxwZXJzLmgKaW5kZXggZGExZmFiZGYzY2EwODkyYTI3YWQxZjhlYzA3
M2VhMTNhNjk0OGZiMC4uMWQ1OTkwOTEwMDY5NDA1NTZmMzJiOThkOTQ2ZTM0OGYxZjdjZGU3ZiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0RGQUhlbHBlcnMu
aAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvREZBSGVscGVycy5oCkBA
IC00NywxMSArNDcsMTAgQEAgc3RhdGljIHVuc2lnbmVkIGNvdW50TGl2ZU5vZGVzKGNvbnN0IENv
bnRlbnRFeHRlbnNpb25zOjpERkEmIGRmYSkKIHN0YXRpYyBWZWN0b3I8Q29udGVudEV4dGVuc2lv
bnM6Ok5GQT4gY3JlYXRlTkZBcyhDb250ZW50RXh0ZW5zaW9uczo6Q29tYmluZWRVUkxGaWx0ZXJz
JiBjb21iaW5lZFVSTEZpbHRlcnMpCiB7CiAgICAgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpO
RkE+IG5mYXM7Ci0KICAgICBjb21iaW5lZFVSTEZpbHRlcnMucHJvY2Vzc05GQXMoc3RkOjpudW1l
cmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSwgWyZdKENvbnRlbnRFeHRlbnNpb25zOjpORkEmJiBu
ZmEpIHsKICAgICAgICAgbmZhcy5hcHBlbmQoV1RGTW92ZShuZmEpKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfSk7Ci0KICAgICByZXR1cm4gbmZhczsKIH0KIApAQCAtNjMsNyArNjIsOCBA
QCBzdGF0aWMgQ29udGVudEV4dGVuc2lvbnM6OkRGQSBidWlsZERGQUZyb21QYXR0ZXJucyhWZWN0
b3I8Y29uc3QgY2hhcio+IHBhdHRlcm5zKQogICAgIGZvciAoY29uc3QgY2hhciogcGF0dGVybiA6
IHBhdHRlcm5zKQogICAgICAgICBwYXJzZXIuYWRkUGF0dGVybihwYXR0ZXJuLCBmYWxzZSwgMCk7
CiAgICAgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpORkE+IG5mYXMgPSBjcmVhdGVORkFzKGNv
bWJpbmVkVVJMRmlsdGVycyk7Ci0gICAgcmV0dXJuIENvbnRlbnRFeHRlbnNpb25zOjpORkFUb0RG
QTo6Y29udmVydChuZmFzWzBdKTsKKyAgICBFWFBFQ1RfRVEoMXVsLCBuZmFzLnNpemUoKSk7Cisg
ICAgcmV0dXJuICpDb250ZW50RXh0ZW5zaW9uczo6TkZBVG9ERkE6OmNvbnZlcnQoV1RGTW92ZShu
ZmFzLmZpcnN0KCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>