<?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>210852</bug_id>
          
          <creation_ts>2020-04-22 00:02:32 -0700</creation_ts>
          <short_desc>Add unit test for resuming downloads</short_desc>
          <delta_ts>2020-05-12 11:49:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=211786</see_also>
          <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>beidson</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1644233</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-22 00:02:32 -0700</bug_when>
    <thetext>Add unit test for resuming downloads</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1644235</commentid>
    <comment_count>1</comment_count>
      <attachid>397175</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-22 00:05:10 -0700</bug_when>
    <thetext>Created attachment 397175
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1644361</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-22 09:56:17 -0700</bug_when>
    <thetext>http://trac.webkit.org/r260518</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1644362</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-22 09:57:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/62191722&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397175</attachid>
            <date>2020-04-22 00:05:10 -0700</date>
            <delta_ts>2020-04-22 09:49:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210852-20200422000509.patch</filename>
            <type>text/plain</type>
            <size>34939</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2MDUwMikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQ2IEBACisyMDIwLTA0LTIyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHVuaXQgdGVzdCBmb3IgcmVzdW1pbmcgZG93bmxvYWRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA4NTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlz
IGEgdGVzdCB0aGF0IHdlIHNob3VsZCd2ZSB3cml0dGVuIHllYXJzIGFnby4KKyAgICAgICAgSSBt
YWRlIEhUVFBTZXJ2ZXIgYWJsZSB0byB0YWtlIGEgRnVuY3Rpb24gdGhhdCB0YWtlcyBhIG53X2Nv
bm5lY3Rpb25fdCB0byBnaXZlIGl0IG1vcmUgcG93ZXIgdGhhbiBkZWNsYXJhdGl2ZSByZXF1ZXN0
L3Jlc3BvbnNlIHBhaXJzLgorICAgICAgICBJIG1hZGUgVGVzdERvd25sb2FkRGVsZWdhdGUgdG8g
YmUgcmV1c2VkIGJ5IGZ1dHVyZSB0ZXN0cywgbGlrZSB0aG9zZSBJJ20gZ29pbmcgdG8gYWRkIGZv
ciAgYnVnIDIxMDMxMy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4
dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rv
d25sb2FkLm1tOgorICAgICAgICAobG9uZ1N0cmluZyk6CisgICAgICAgIChURVNUKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OkhUVFBTZXJ2ZXI6OnRvdGFsUmVxdWVzdHMgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OkhUVFBTZXJ2ZXI6OlJlcXVlc3REYXRhOjpSZXF1ZXN0RGF0YSk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpsaXN0ZW5lclBhcmFtZXRlcnMpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6c3RhcnRMaXN0ZW5pbmcpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
SFRUUFNlcnZlcjo6SFRUUFNlcnZlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQU2Vy
dmVyOjp0b3RhbFJlcXVlc3RzIGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRhdGFG
cm9tU3RyaW5nKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om51bGxUZXJtaW5hdGVkUmVxdWVz
dCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpyZXNwb25kVG9SZXF1ZXN0
cyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVn
YXRlLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2Fk
RGlkU3RhcnQ6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpk
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2Fk
RGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJlY2VpdmVSZXNwb25zZTpdKToKKyAgICAgICAgKC1bVGVz
dERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJlY2VpdmVEYXRhOl0pOgorICAgICAgICAo
LVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3REb3du
bG9hZERlbGVnYXRlIF9kb3dubG9hZERpZEZpbmlzaDpdKToKKyAgICAgICAgKC1bVGVzdERvd25s
b2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZEZhaWxXaXRoRXJyb3I6XSk6CisgICAgICAgICgtW1Rl
c3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZERpZENhbmNlbDpdKToKKyAgICAgICAgKC1bVGVz
dERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdh
dGUgX2Rvd25sb2FkOmRpZENyZWF0ZURlc3RpbmF0aW9uOl0pOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bVGVzdE5h
dmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25z
ZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisKIDIwMjAtMDQtMjEgIFJ5YW4gSGFkZGFkICA8cnlhbmhh
ZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjA0MTAu
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0CShyZXZpc2lvbiAyNjA0ODMp
CisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5tbQogCiBjb2Nv
YS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCiBjb2NvYS9UZXN0Q29jb2EubW0KK2NvY29hL1Rl
c3REb3dubG9hZERlbGVnYXRlLm1tCiBjb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tCiBj
b2NvYS9UZXN0UHJvdG9jb2wubW0KIGNvY29hL1Rlc3RVSURlbGVnYXRlLm1tCkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjYwNDgzKQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTIwNjQsNiArMjA2NCw4IEBACiAJCTVDNjlCREQ0MUY4MkE3RUIwMDBGNEY0QiAvKiBKYXZh
U2NyaXB0RHVyaW5nTmF2aWdhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEphdmFTY3JpcHREdXJpbmdOYXZpZ2F0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1QzZFMjdBNjIyNEVFQkVBMDAxMjg3MzYgLyogVVJMQ2Fub25pY2FsaXph
dGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVSTENhbm9u
aWNhbGl6YXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNzE0ODk0MjEy
M0E0MDcwMEZERTNDNSAvKiBXS1dlYnNpdGVEYXRhc3RvcmUubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYnNpdGVEYXRhc3RvcmUubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTVDNzJFOENEMjQ0RkZDRTMwMDM4MUVCNyAvKiBUZXN0RG93bmxv
YWREZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXN0RG93bmxv
YWREZWxlZ2F0ZS5oOyBwYXRoID0gY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM3MkU4Q0UyNDRGRkNFNDAwMzgxRUI3IC8qIFRlc3RE
b3dubG9hZERlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gVGVzdERvd25sb2FkRGVsZWdhdGUubW07IHBhdGggPSBjb2NvYS9UZXN0RG93bmxvYWREZWxl
Z2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3M0E4MUEyMzIzMDU5ODAw
REVBODVBIC8qIFRMU0RlcHJlY2F0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gVExTRGVwcmVjYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVDNzU3MTVGMjIxMjQ5QkQwMEI5RTVBQyAvKiBCdW5kbGVSZXRhaW5QYWdlUGx1Z0luLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQnVuZGxlUmV0YWluUGFn
ZVBsdWdJbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3OTY0MEYxRUIwMjY5
QjAwNzVENzRDIC8qIEV2ZW50TW9kaWZpZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEV2ZW50TW9kaWZpZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI5MTksNiArMjkyMSw4IEBACiAJCQkJQ0U2NDBDQTYyMzcwQTRGMzAwQzVDQUE0IC8q
IFRlc3RDb2NvYS5tbSAqLywKIAkJCQk1Q0U3NTk0ODIyQTg4M0E1MDBDMTI0MDkgLyogVGVzdENv
bnRleHRNZW51RHJpdmVyLmggKi8sCiAJCQkJNUNFNzU5NDcyMkE4ODNBNTAwQzEyNDA5IC8qIFRl
c3RDb250ZXh0TWVudURyaXZlci5tbSAqLywKKwkJCQk1QzcyRThDRDI0NEZGQ0UzMDAzODFFQjcg
LyogVGVzdERvd25sb2FkRGVsZWdhdGUuaCAqLywKKwkJCQk1QzcyRThDRTI0NEZGQ0U0MDAzODFF
QjcgLyogVGVzdERvd25sb2FkRGVsZWdhdGUubW0gKi8sCiAJCQkJMkQxQzA0QTUxRDc2Mjk4QjAw
MEE2ODE2IC8qIFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCAqLywKIAkJCQkyRDFDMDRBNjFENzYy
OThCMDAwQTY4MTYgLyogVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbSAqLywKIAkJCQk1MTYyODEy
MzIzMjVDMTdBMDBCQjdFNDIgLyogVGVzdFBERkRvY3VtZW50LmggKi8sCkBAIC00ODgxLDYgKzQ4
ODUsNyBAQAogCQkJCTdDQ0U3RUMwMUE0MTFBN0UwMDQ0N0M0QyAvKiBGcmFnbWVudE5hdmlnYXRp
b24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VGNjFBNDExQUU2MDA0NDdDNEMgLyogRnJh
bWVNSU1FVHlwZUhUTUwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRjcxQTQxMUFFNjAw
NDQ3QzRDIC8qIEZyYW1lTUlNRVR5cGVQTkcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RDRjc4
QTgyNDRBMzJGNzAwNDgwMzExIC8qIEZ1bGxzY3JlZW5BbGVydC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUNENzhFMTFEMURCN0VBNjYwMDE0QTJERSAvKiBGdWxsc2NyZWVuRGVsZWdhdGUubW0gaW4g
U291cmNlcyAqLywKIAkJCQlDREJGQ0M0NTFBOUZGNDUzMDBBN0I2OTEgLyogRnVsbHNjcmVlblpv
b21Jbml0aWFsRnJhbWUubW0gaW4gU291cmNlcyAqLywKIAkJCQk4M0RCNzk2OTFFRjYzQjNDMDBC
RkE1RTUgLyogRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01MDQ1LDcgKzUwNTAsNiBA
QAogCQkJCTdDODNFMEMxMUQwQTY1MkYwMEZFQkNGMyAvKiBQcm92aXNpb25hbFVSTE5vdENoYW5n
ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDRkFDRjY1MjI2RkQyREMwMDU2QzdEMCAvKiBQcm94
eS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA0MUExRTM0MjE2RkZEQkMwMDc4OUUwQSAvKiBQdWJs
aWNTdWZmaXguY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQ0RDRjc4QTgyNDRBMzJGNzAwNDgwMzEx
IC8qIEZ1bGxzY3JlZW5BbGVydC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMEMyMUQwQTY1
MzUwMEZFQkNGMyAvKiBRdWlja0xvb2subW0gaW4gU291cmNlcyAqLywKIAkJCQk2QjRFODYxQzIy
MjBBNTUyMDAyMkYzODkgLyogUmVnaXN0cmFibGVEb21haW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0NDRTdGMEQxQTQxMUFFNjAwNDQ3QzRDIC8qIFJlbG9hZFBhZ2VBZnRlckNyYXNoLmNwcCBp
biBTb3VyY2VzICovLApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Eb3dubG9hZC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0Rvd25sb2FkLm1tCShyZXZpc2lvbiAyNjA0ODMpCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw2ICszMiw4IEBACiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVENQ
U2VydmVyLmgiCiAjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0RG93bmxvYWREZWxlZ2F0
ZS5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFBy
b3RvY29sLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tF
cnJvclByaXZhdGUuaD4KQEAgLTQ2LDYgKzQ4LDcgQEAKICNpbXBvcnQgPFdlYktpdC9fV0tEb3du
bG9hZERlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
aD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTW9ub3RvbmljVGltZS5o
PgpAQCAtMTE1Nyw2ICsxMTYwLDEzNSBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWVkRG93bmxv
YWRDYW5IYW5kCiAgICAgVXRpbDo6cnVuKCZpc0RvbmUpOwogfQogCisjaWYgSEFWRShORVRXT1JL
X0ZSQU1FV09SSykKKwordGVtcGxhdGU8c2l6ZV90IGxlbmd0aD4KK1N0cmluZyBsb25nU3RyaW5n
KExDaGFyIGMpCit7CisgICAgVmVjdG9yPExDaGFyPiB2ZWN0b3IobGVuZ3RoLCBjKTsKKyAgICBy
ZXR1cm4gU3RyaW5nKHZlY3Rvci5kYXRhKCksIGxlbmd0aCk7Cit9CisKK1RFU1QoX1dLRG93bmxv
YWQsIFJlc3VtZSkKK3sKKyAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKKyAgICBI
VFRQU2VydmVyIHNlcnZlcihbY29ubmVjdGlvbkNvdW50ID0gMF0obndfY29ubmVjdGlvbl90IGNv
bm5lY3Rpb24pIG11dGFibGUgeworICAgICAgICBzd2l0Y2ggKCsrY29ubmVjdGlvbkNvdW50KSB7
CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIG53X2Nvbm5lY3Rpb25fcmVjZWl2ZShjb25u
ZWN0aW9uLCAxLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksIG1ha2VCbG9j
a1B0cihbY29ubmVjdGlvbiA9IHJldGFpblB0cihjb25uZWN0aW9uKV0oZGlzcGF0Y2hfZGF0YV90
IGNvbnRlbnQsIG53X2NvbnRlbnRfY29udGV4dF90IGNvbnRleHQsIGJvb2wsIG53X2Vycm9yX3Qg
ZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShjb250ZW50KTsKKyAgICAgICAg
ICAgICAgICBFWFBFQ1RfRkFMU0UoZXJyb3IpOworICAgICAgICAgICAgICAgIGF1dG8gZGF0YSA9
IGRhdGFGcm9tU3RyaW5nKG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICJIVFRQLzEu
MSAyMDAgT0tcclxuIgorICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAg
ICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogMTAwMDBcclxuIgorICAgICAgICAgICAg
ICAgICAgICAiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCJleGFt
cGxlLnR4dFwiXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4iLCBsb25nU3RyaW5nPDUw
MDA+KCdhJykpKTsKKyAgICAgICAgICAgICAgICBud19jb25uZWN0aW9uX3NlbmQoY29ubmVjdGlv
bi5nZXQoKSwgZGF0YS5nZXQoKSwgY29udGV4dCwgZmFsc2UsIF4obndfZXJyb3JfdCBlcnJvcikg
eworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWVycm9yKTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIH0pLmdldCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIDI6CisgICAgICAgICAgICBud19jb25uZWN0aW9uX3JlY2VpdmUoY29ubmVjdGlvbiwgMSwg
c3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpLCBtYWtlQmxvY2tQdHIoW2Nvbm5l
Y3Rpb24gPSByZXRhaW5QdHIoY29ubmVjdGlvbildKGRpc3BhdGNoX2RhdGFfdCBjb250ZW50LCBu
d19jb250ZW50X2NvbnRleHRfdCBjb250ZXh0LCBib29sLCBud19lcnJvcl90IGVycm9yKSB7Cisg
ICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoY29udGVudCk7CisgICAgICAgICAgICAgICAgRVhQ
RUNUX0ZBTFNFKGVycm9yKTsKKworICAgICAgICAgICAgICAgIGF1dG8gcmVxdWVzdCA9IG51bGxU
ZXJtaW5hdGVkUmVxdWVzdChjb250ZW50KTsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShz
dHJzdHIocmVxdWVzdC5kYXRhKCksICJSYW5nZTogYnl0ZXM9NTAwMC1cclxuIikpOworCisgICAg
ICAgICAgICAgICAgYXV0byBkYXRhID0gZGF0YUZyb21TdHJpbmcobWFrZVN0cmluZygKKyAgICAg
ICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwNiBQYXJ0aWFsIENvbnRlbnRcclxuIgorICAgICAg
ICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250
ZW50LUxlbmd0aDogNTAwMFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LVJhbmdl
OiBieXRlcyA1MDAwLTk5OTkvMTAwMDBcclxuIgorICAgICAgICAgICAgICAgICAgICAiXHJcbiIs
IGxvbmdTdHJpbmc8NTAwMD4oJ2InKSkpOworICAgICAgICAgICAgICAgIG53X2Nvbm5lY3Rpb25f
c2VuZChjb25uZWN0aW9uLmdldCgpLCBkYXRhLmdldCgpLCBjb250ZXh0LCB0cnVlLCBeKG53X2Vy
cm9yX3QgZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFlcnJvcik7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KS5nZXQoKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICB9CisgICAgfSk7CisKKyAgICBOU1VSTCAqdGVtcERpciA9IFtOU1VSTCBmaWxlVVJM
V2l0aFBhdGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OkAiRG93bmxvYWRSZXN1bWVUZXN0Il0gaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnRlbXBEaXIg
d2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxd
OworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IFt0ZW1wRGlyIFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAImV4YW1wbGUudHh0Il07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6ZXhwZWN0ZWREb3dubG9hZEZpbGUgZXJyb3I6
bmlsXTsKKworICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmln
YXRpb25EZWxlZ2F0ZSBuZXddKTsKKyAgICBuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkuZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlID0gXihXS05hdmlnYXRpb25SZXNwb25zZSAqLCB2
b2lkICheY29tcGxldGlvbkhhbmRsZXIpKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSkgewor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNv
bWVEb3dubG9hZCk7CisgICAgfTsKKworICAgIGVudW0gY2xhc3MgQ2FsbGJhY2sgOiB1aW50OF90
IHsgU3RhcnQsIFJlY2VpdmVEYXRhLCBEZWNpZGVEZXN0aW5hdGlvbiwgQ3JlYXRlRGVzdGluYXRp
b24sIENhbmNlbCwgRmluaXNoIH07CisgICAgX19ibG9jayBWZWN0b3I8Q2FsbGJhY2s+IGNhbGxi
YWNrczsKKyAgICBfX2Jsb2NrIGJvb2wgZGlkQ2FuY2VsID0gZmFsc2U7CisgICAgX19ibG9jayBi
b29sIGRpZEZpbmlzaCA9IGZhbHNlOworICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZERhdGEgPSBm
YWxzZTsKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxfV0tEb3dubG9hZD4gZG93bmxvYWQ7CisgICAg
X19ibG9jayBSZXRhaW5QdHI8TlNEYXRhPiByZXN1bWVEYXRhOworCisgICAgYXV0byBkb3dubG9h
ZERlbGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7CisgICAgZG93
bmxvYWREZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZSA9IF4oX1dLRG93bmxvYWQgKiwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkIChe
Y29tcGxldGlvbkhhbmRsZXIpKEJPT0wsIE5TU3RyaW5nICopKSB7CisgICAgICAgIGNhbGxiYWNr
cy5hcHBlbmQoQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoWUVTLCBbdGVtcERpciBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6c3VnZ2Vz
dGVkRmlsZW5hbWVdLnBhdGgpOworICAgIH07CisgICAgZG93bmxvYWREZWxlZ2F0ZS5nZXQoKS5k
aWRSZWNlaXZlRGF0YSA9IF4oX1dLRG93bmxvYWQgKmRvd25sb2FkLCB1aW50NjRfdCBsZW5ndGgp
IHsKKyAgICAgICAgY2FsbGJhY2tzLmFwcGVuZChDYWxsYmFjazo6UmVjZWl2ZURhdGEpOworICAg
ICAgICBFWFBFQ1RfRVEobGVuZ3RoLCA1MDAwdSk7CisgICAgICAgIHJlY2VpdmVkRGF0YSA9IHRy
dWU7CisgICAgfTsKKyAgICBkb3dubG9hZERlbGVnYXRlLmdldCgpLmRvd25sb2FkRGlkU3RhcnQg
PSBeKF9XS0Rvd25sb2FkICpkb3dubG9hZEZyb21EZWxlZ2F0ZSkgeworICAgICAgICBjYWxsYmFj
a3MuYXBwZW5kKENhbGxiYWNrOjpTdGFydCk7CisgICAgICAgIGRvd25sb2FkID0gZG93bmxvYWRG
cm9tRGVsZWdhdGU7CisgICAgfTsKKyAgICBkb3dubG9hZERlbGVnYXRlLmdldCgpLmRpZENyZWF0
ZURlc3RpbmF0aW9uID0gXihfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqZGVzdGluYXRpb24pIHsK
KyAgICAgICAgY2FsbGJhY2tzLmFwcGVuZChDYWxsYmFjazo6Q3JlYXRlRGVzdGluYXRpb24pOwor
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZGVzdGluYXRpb24sIFt0ZW1wRGlyIFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAImV4YW1wbGUudHh0Il0ucGF0aCk7CisgICAgfTsKKyAgICBkb3du
bG9hZERlbGVnYXRlLmdldCgpLmRvd25sb2FkRGlkQ2FuY2VsID0gXihfV0tEb3dubG9hZCAqZG93
bmxvYWQpIHsKKyAgICAgICAgY2FsbGJhY2tzLmFwcGVuZChDYWxsYmFjazo6Q2FuY2VsKTsKKyAg
ICAgICAgcmVzdW1lRGF0YSA9IGRvd25sb2FkLnJlc3VtZURhdGE7CisgICAgICAgIGRpZENhbmNl
bCA9IHRydWU7CisgICAgfTsKKyAgICBkb3dubG9hZERlbGVnYXRlLmdldCgpLmRvd25sb2FkRGlk
RmluaXNoID0gXihfV0tEb3dubG9hZCAqKSB7CisgICAgICAgIGNhbGxiYWNrcy5hcHBlbmQoQ2Fs
bGJhY2s6OkZpbmlzaCk7CisgICAgICAgIGRpZEZpbmlzaCA9IHRydWU7CisgICAgfTsKKworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmlldyBz
ZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKKyAgICBbd2Vi
VmlldyBjb25maWd1cmF0aW9uXS5wcm9jZXNzUG9vbC5fZG93bmxvYWREZWxlZ2F0ZSA9IGRvd25s
b2FkRGVsZWdhdGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVl
c3QoKV07CisgICAgVXRpbDo6cnVuKCZyZWNlaXZlZERhdGEpOworICAgIFtkb3dubG9hZCBjYW5j
ZWxdOworICAgIFV0aWw6OnJ1bigmZGlkQ2FuY2VsKTsKKworICAgIFtbd2ViVmlldyBjb25maWd1
cmF0aW9uXS5wcm9jZXNzUG9vbCBfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTpyZXN1bWVEYXRhLmdl
dCgpIHdlYnNpdGVEYXRhU3RvcmU6W1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3Jl
XSBwYXRoOmV4cGVjdGVkRG93bmxvYWRGaWxlLnBhdGggb3JpZ2luYXRpbmdXZWJWaWV3OndlYlZp
ZXcuZ2V0KCldOworICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoKTsKKyAgICAKKyAgICBFWFBFQ1Rf
RVEoY2FsbGJhY2tzLnNpemUoKSwgN3UpOworICAgIEVYUEVDVF9FUShjYWxsYmFja3NbMF0sIENh
bGxiYWNrOjpTdGFydCk7CisgICAgRVhQRUNUX0VRKGNhbGxiYWNrc1sxXSwgQ2FsbGJhY2s6OkRl
Y2lkZURlc3RpbmF0aW9uKTsKKyAgICBFWFBFQ1RfRVEoY2FsbGJhY2tzWzJdLCBDYWxsYmFjazo6
Q3JlYXRlRGVzdGluYXRpb24pOworICAgIEVYUEVDVF9FUShjYWxsYmFja3NbM10sIENhbGxiYWNr
OjpSZWNlaXZlRGF0YSk7CisgICAgRVhQRUNUX0VRKGNhbGxiYWNrc1s0XSwgQ2FsbGJhY2s6OkNh
bmNlbCk7CisgICAgRVhQRUNUX0VRKGNhbGxiYWNrc1s1XSwgQ2FsbGJhY2s6OlJlY2VpdmVEYXRh
KTsKKyAgICBFWFBFQ1RfRVEoY2FsbGJhY2tzWzZdLCBDYWxsYmFjazo6RmluaXNoKTsKKworICAg
IE5TRGF0YSAqZmlsZUNvbnRlbnRzID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6ZXhw
ZWN0ZWREb3dubG9hZEZpbGVdOworICAgIEVYUEVDVF9FUShmaWxlQ29udGVudHMubGVuZ3RoLCAx
MDAwMHUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNTAwMDsgaSsrKQorICAgICAgICBF
WFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGZpbGVDb250ZW50cy5ieXRlcylbaV0s
ICdhJyk7CisgICAgZm9yIChzaXplX3QgaSA9IDUwMDA7IGkgPCAxMDAwMDsgaSsrKQorICAgICAg
ICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGZpbGVDb250ZW50cy5ieXRlcylb
aV0sICdiJyk7Cit9CisKKyNlbmRpZiAvLyBIQVZFKE5FVFdPUktfRlJBTUVXT1JLKQorCiBAaW50
ZXJmYWNlIERvd25sb2FkVGVzdFNjaGVtZURlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlv
bkRlbGVnYXRlPgogQGVuZAogCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBT
ZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2
ZXIuaAkocmV2aXNpb24gMjYwNDgzKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQ
U2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDIyICszOSwyOSBAQCBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSSB7CiBjbGFzcyBIVFRQU2VydmVyIHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgSFRU
UFJlc3BvbnNlOworICAgIHN0cnVjdCBSZXF1ZXN0RGF0YTsKICAgICBlbnVtIGNsYXNzIFByb3Rv
Y29sIDogdWludDhfdCB7IEh0dHAsIEh0dHBzLCBIdHRwc1dpdGhMZWdhY3lUTFMgfTsKLSAgICBI
VFRQU2VydmVyKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBIVFRQUmVz
cG9uc2U+PiwgUHJvdG9jb2wgPSBQcm90b2NvbDo6SHR0cCwgRnVuY3Rpb248dm9pZChzZWNfcHJv
dG9jb2xfbWV0YWRhdGFfdCwgc2VjX3RydXN0X3QsIHNlY19wcm90b2NvbF92ZXJpZnlfY29tcGxl
dGVfdCk+JiYgPSBudWxscHRyKTsKKyAgICB1c2luZyBDZXJ0aWZpY2F0ZVZlcmlmaWVyID0gRnVu
Y3Rpb248dm9pZChzZWNfcHJvdG9jb2xfbWV0YWRhdGFfdCwgc2VjX3RydXN0X3QsIHNlY19wcm90
b2NvbF92ZXJpZnlfY29tcGxldGVfdCk+OworCisgICAgSFRUUFNlcnZlcihzdGQ6OmluaXRpYWxp
emVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFJlc3BvbnNlPj4sIFByb3RvY29sID0gUHJv
dG9jb2w6Okh0dHAsIENlcnRpZmljYXRlVmVyaWZpZXImJiA9IG51bGxwdHIpOworICAgIEhUVFBT
ZXJ2ZXIoRnVuY3Rpb248dm9pZChud19jb25uZWN0aW9uX3QpPiYmLCBQcm90b2NvbCA9IFByb3Rv
Y29sOjpIdHRwKTsKKyAgICB+SFRUUFNlcnZlcigpOwogICAgIHVpbnQxNl90IHBvcnQoKSBjb25z
dDsKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QoKSBjb25zdDsKLSAgICBzaXplX3QgdG90YWxS
ZXF1ZXN0cygpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxSZXF1ZXN0czsgfQotICAgIAorICAgIHNp
emVfdCB0b3RhbFJlcXVlc3RzKCkgY29uc3Q7CisKIHByaXZhdGU6Ci0gICAgdm9pZCByZXNwb25k
VG9SZXF1ZXN0cyhud19jb25uZWN0aW9uX3QpOwotICAgIAorICAgIHN0YXRpYyBSZXRhaW5QdHI8
bndfcGFyYW1ldGVyc190PiBsaXN0ZW5lclBhcmFtZXRlcnMoUHJvdG9jb2wsIENlcnRpZmljYXRl
VmVyaWZpZXImJik7CisgICAgc3RhdGljIHZvaWQgcmVzcG9uZFRvUmVxdWVzdHMobndfY29ubmVj
dGlvbl90LCBSZWZQdHI8UmVxdWVzdERhdGE+KTsKKworICAgIFJlZlB0cjxSZXF1ZXN0RGF0YT4g
bV9yZXF1ZXN0RGF0YTsKICAgICBSZXRhaW5QdHI8bndfbGlzdGVuZXJfdD4gbV9saXN0ZW5lcjsK
LSAgICBjb25zdCBQcm90b2NvbCBtX3Byb3RvY29sOwotICAgIGNvbnN0IEZ1bmN0aW9uPHZvaWQo
c2VjX3Byb3RvY29sX21ldGFkYXRhX3QsIHNlY190cnVzdF90LCBzZWNfcHJvdG9jb2xfdmVyaWZ5
X2NvbXBsZXRlX3QpPiBtX2NlcnRWZXJpZmllcjsKLSAgICBjb25zdCBIYXNoTWFwPFN0cmluZywg
SFRUUFJlc3BvbnNlPiBtX3JlcXVlc3RSZXNwb25zZU1hcDsKLSAgICBzaXplX3QgbV90b3RhbFJl
cXVlc3RzIHsgMCB9OworICAgIFByb3RvY29sIG1fcHJvdG9jb2wgeyBQcm90b2NvbDo6SHR0cCB9
OwogfTsKIAorUmV0YWluUHRyPGRpc3BhdGNoX2RhdGFfdD4gZGF0YUZyb21TdHJpbmcoU3RyaW5n
JiYpOworVmVjdG9yPGNoYXI+IG51bGxUZXJtaW5hdGVkUmVxdWVzdChkaXNwYXRjaF9kYXRhX3Qp
OworCiBzdHJ1Y3QgSFRUUFNlcnZlcjo6SFRUUFJlc3BvbnNlIHsKICAgICBlbnVtIGNsYXNzIFRl
cm1pbmF0ZUNvbm5lY3Rpb24geyBObywgWWVzIH07CiAgICAgCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCShyZXZpc2lvbiAyNjA0ODMpCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3LDUyICsz
Nyw5MCBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLUhUVFBTZXJ2ZXI6OkhUVFBT
ZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25z
ZT4+IHJlc3BvbnNlcywgUHJvdG9jb2wgcHJvdG9jb2wsIEZ1bmN0aW9uPHZvaWQoc2VjX3Byb3Rv
Y29sX21ldGFkYXRhX3QsIHNlY190cnVzdF90LCBzZWNfcHJvdG9jb2xfdmVyaWZ5X2NvbXBsZXRl
X3QpPiYmIHZlcmlmeSkKLSAgICA6IG1fcHJvdG9jb2wocHJvdG9jb2wpCi0gICAgLCBtX2NlcnRW
ZXJpZmllcihXVEZNb3ZlKHZlcmlmeSkpCi0gICAgLCBtX3JlcXVlc3RSZXNwb25zZU1hcChbXShz
dGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFNlcnZlcjo6SFRUUFJl
c3BvbnNlPj4gbGlzdCkgeworc3RydWN0IEhUVFBTZXJ2ZXI6OlJlcXVlc3REYXRhIDogcHVibGlj
IFJlZkNvdW50ZWQ8UmVxdWVzdERhdGE+IHsKKyAgICBSZXF1ZXN0RGF0YShzdGQ6OmluaXRpYWxp
emVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFJlc3BvbnNlPj4gcmVzcG9uc2VzKQorICAg
IDogcmVxdWVzdE1hcChbXShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywg
SFRUUFNlcnZlcjo6SFRUUFJlc3BvbnNlPj4gbGlzdCkgewogICAgICAgICBIYXNoTWFwPFN0cmlu
ZywgSFRUUFNlcnZlcjo6SFRUUFJlc3BvbnNlPiBtYXA7CiAgICAgICAgIGZvciAoYXV0byYgcGFp
ciA6IGxpc3QpCiAgICAgICAgICAgICBtYXAuYWRkKHBhaXIuZmlyc3QsIHBhaXIuc2Vjb25kKTsK
ICAgICAgICAgcmV0dXJuIG1hcDsKLSAgICB9KHJlc3BvbnNlcykpCisgICAgfShyZXNwb25zZXMp
KSB7IH0KKyAgICAKKyAgICBzaXplX3QgcmVxdWVzdENvdW50IHsgMCB9OworICAgIGNvbnN0IEhh
c2hNYXA8U3RyaW5nLCBIVFRQUmVzcG9uc2U+IHJlcXVlc3RNYXA7Cit9OworCitSZXRhaW5QdHI8
bndfcGFyYW1ldGVyc190PiBIVFRQU2VydmVyOjpsaXN0ZW5lclBhcmFtZXRlcnMoUHJvdG9jb2wg
cHJvdG9jb2wsIENlcnRpZmljYXRlVmVyaWZpZXImJiB2ZXJpZmllcikKIHsKLSAgICBhdXRvIGNv
bmZpZ3VyZVRMUyA9IHByb3RvY29sID09IFByb3RvY29sOjpIdHRwID8gTldfUEFSQU1FVEVSU19E
SVNBQkxFX1BST1RPQ09MIDogXihud19wcm90b2NvbF9vcHRpb25zX3QgcHJvdG9jb2xPcHRpb25z
KSB7CisgICAgYXV0byBjb25maWd1cmVUTFMgPSBwcm90b2NvbCA9PSBQcm90b2NvbDo6SHR0cCA/
IG1ha2VCbG9ja1B0cihOV19QQVJBTUVURVJTX0RJU0FCTEVfUFJPVE9DT0wpIDogbWFrZUJsb2Nr
UHRyKFtwcm90b2NvbCwgdmVyaWZpZXIgPSBXVEZNb3ZlKHZlcmlmaWVyKV0gKG53X3Byb3RvY29s
X29wdGlvbnNfdCBwcm90b2NvbE9wdGlvbnMpIG11dGFibGUgewogI2lmIEhBVkUoVExTX1BST1RP
Q09MX1ZFUlNJT05fVCkKICAgICAgICAgYXV0byBvcHRpb25zID0gYWRvcHROUyhud190bHNfY29w
eV9zZWNfcHJvdG9jb2xfb3B0aW9ucyhwcm90b2NvbE9wdGlvbnMpKTsKICAgICAgICAgYXV0byBp
ZGVudGl0eSA9IGFkb3B0TlMoc2VjX2lkZW50aXR5X2NyZWF0ZSh0ZXN0SWRlbnRpdHkoKS5nZXQo
KSkpOwogICAgICAgICBzZWNfcHJvdG9jb2xfb3B0aW9uc19zZXRfbG9jYWxfaWRlbnRpdHkob3B0
aW9ucy5nZXQoKSwgaWRlbnRpdHkuZ2V0KCkpOwogICAgICAgICBpZiAocHJvdG9jb2wgPT0gUHJv
dG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUykKICAgICAgICAgICAgIHNlY19wcm90b2NvbF9vcHRp
b25zX3NldF9tYXhfdGxzX3Byb3RvY29sX3ZlcnNpb24ob3B0aW9ucy5nZXQoKSwgdGxzX3Byb3Rv
Y29sX3ZlcnNpb25fVExTdjEwKTsKLSAgICAgICAgaWYgKG1fY2VydFZlcmlmaWVyKSB7CisgICAg
ICAgIGlmICh2ZXJpZmllcikgewogICAgICAgICAgICAgc2VjX3Byb3RvY29sX29wdGlvbnNfc2V0
X3BlZXJfYXV0aGVudGljYXRpb25fcmVxdWlyZWQob3B0aW9ucy5nZXQoKSwgdHJ1ZSk7Ci0gICAg
ICAgICAgICBzZWNfcHJvdG9jb2xfb3B0aW9uc19zZXRfdmVyaWZ5X2Jsb2NrKG9wdGlvbnMuZ2V0
KCksIF4oc2VjX3Byb3RvY29sX21ldGFkYXRhX3QgbWV0YWRhdGEsIHNlY190cnVzdF90IHRydXN0
LCBzZWNfcHJvdG9jb2xfdmVyaWZ5X2NvbXBsZXRlX3QgY29tcGxldGlvbikgewotICAgICAgICAg
ICAgICAgIG1fY2VydFZlcmlmaWVyKG1ldGFkYXRhLCB0cnVzdCwgY29tcGxldGlvbik7Ci0gICAg
ICAgICAgICB9LCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKKyAgICAgICAgICAgIHNlY19w
cm90b2NvbF9vcHRpb25zX3NldF92ZXJpZnlfYmxvY2sob3B0aW9ucy5nZXQoKSwgbWFrZUJsb2Nr
UHRyKFt2ZXJpZmllciA9IFdURk1vdmUodmVyaWZpZXIpXShzZWNfcHJvdG9jb2xfbWV0YWRhdGFf
dCBtZXRhZGF0YSwgc2VjX3RydXN0X3QgdHJ1c3QsIHNlY19wcm90b2NvbF92ZXJpZnlfY29tcGxl
dGVfdCBjb21wbGV0aW9uKSB7CisgICAgICAgICAgICAgICAgdmVyaWZpZXIobWV0YWRhdGEsIHRy
dXN0LCBjb21wbGV0aW9uKTsKKyAgICAgICAgICAgIH0pLmdldCgpLCBkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpKTsKICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHByb3Rv
Y29sT3B0aW9ucyk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocHJvdG9jb2wsIHByb3RvY29sICE9
IFByb3RvY29sOjpIdHRwc1dpdGhMZWdhY3lUTFMpOwogI2VuZGlmCi0gICAgfTsKLSAgICBhdXRv
IHBhcmFtZXRlcnMgPSBhZG9wdE5TKG53X3BhcmFtZXRlcnNfY3JlYXRlX3NlY3VyZV90Y3AoY29u
ZmlndXJlVExTLCBOV19QQVJBTUVURVJTX0RFRkFVTFRfQ09ORklHVVJBVElPTikpOwotICAgIG1f
bGlzdGVuZXIgPSBhZG9wdE5TKG53X2xpc3RlbmVyX2NyZWF0ZShwYXJhbWV0ZXJzLmdldCgpKSk7
Ci0gICAgbndfbGlzdGVuZXJfc2V0X3F1ZXVlKG1fbGlzdGVuZXIuZ2V0KCksIGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCkpOwotICAgIG53X2xpc3RlbmVyX3NldF9uZXdfY29ubmVjdGlvbl9oYW5k
bGVyKG1fbGlzdGVuZXIuZ2V0KCksIF4obndfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24pIHsKLSAg
ICAgICAgbndfY29ubmVjdGlvbl9zZXRfcXVldWUoY29ubmVjdGlvbiwgZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSk7Ci0gICAgICAgIG53X2Nvbm5lY3Rpb25fc3RhcnQoY29ubmVjdGlvbik7Ci0g
ICAgICAgIHJlc3BvbmRUb1JlcXVlc3RzKGNvbm5lY3Rpb24pOwogICAgIH0pOworICAgIHJldHVy
biBhZG9wdE5TKG53X3BhcmFtZXRlcnNfY3JlYXRlX3NlY3VyZV90Y3AoY29uZmlndXJlVExTLmdl
dCgpLCBOV19QQVJBTUVURVJTX0RFRkFVTFRfQ09ORklHVVJBVElPTikpOworfQorCitzdGF0aWMg
dm9pZCBzdGFydExpc3RlbmluZyhud19saXN0ZW5lcl90IGxpc3RlbmVyKQorewogICAgIF9fYmxv
Y2sgYm9vbCByZWFkeSA9IGZhbHNlOwotICAgIG53X2xpc3RlbmVyX3NldF9zdGF0ZV9jaGFuZ2Vk
X2hhbmRsZXIobV9saXN0ZW5lci5nZXQoKSwgXihud19saXN0ZW5lcl9zdGF0ZV90IHN0YXRlLCBu
d19lcnJvcl90IGVycm9yKSB7CisgICAgbndfbGlzdGVuZXJfc2V0X3N0YXRlX2NoYW5nZWRfaGFu
ZGxlcihsaXN0ZW5lciwgXihud19saXN0ZW5lcl9zdGF0ZV90IHN0YXRlLCBud19lcnJvcl90IGVy
cm9yKSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoZXJyb3IsICFlcnJvcik7CiAgICAgICAgIGlm
IChzdGF0ZSA9PSBud19saXN0ZW5lcl9zdGF0ZV9yZWFkeSkKICAgICAgICAgICAgIHJlYWR5ID0g
dHJ1ZTsKICAgICB9KTsKLSAgICBud19saXN0ZW5lcl9zdGFydChtX2xpc3RlbmVyLmdldCgpKTsK
KyAgICBud19saXN0ZW5lcl9zdGFydChsaXN0ZW5lcik7CiAgICAgVXRpbDo6cnVuKCZyZWFkeSk7
CiB9CiAKK0hUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6
cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+IHJlc3BvbnNlcywgUHJvdG9jb2wgcHJvdG9jb2ws
IENlcnRpZmljYXRlVmVyaWZpZXImJiB2ZXJpZmllcikKKyAgICA6IG1fcmVxdWVzdERhdGEoYWRv
cHRSZWYobmV3IFJlcXVlc3REYXRhKHJlc3BvbnNlcykpKQorICAgICwgbV9saXN0ZW5lcihhZG9w
dE5TKG53X2xpc3RlbmVyX2NyZWF0ZShsaXN0ZW5lclBhcmFtZXRlcnMocHJvdG9jb2wsIFdURk1v
dmUodmVyaWZpZXIpKS5nZXQoKSkpKQorICAgICwgbV9wcm90b2NvbChwcm90b2NvbCkKK3sKKyAg
ICBud19saXN0ZW5lcl9zZXRfcXVldWUobV9saXN0ZW5lci5nZXQoKSwgZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSk7CisgICAgbndfbGlzdGVuZXJfc2V0X25ld19jb25uZWN0aW9uX2hhbmRsZXIo
bV9saXN0ZW5lci5nZXQoKSwgbWFrZUJsb2NrUHRyKFtyZXF1ZXN0RGF0YSA9IG1fcmVxdWVzdERh
dGFdKG53X2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKSB7CisgICAgICAgIG53X2Nvbm5lY3Rpb25f
c2V0X3F1ZXVlKGNvbm5lY3Rpb24sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOworICAgICAg
ICBud19jb25uZWN0aW9uX3N0YXJ0KGNvbm5lY3Rpb24pOworICAgICAgICByZXNwb25kVG9SZXF1
ZXN0cyhjb25uZWN0aW9uLCByZXF1ZXN0RGF0YSk7CisgICAgfSkuZ2V0KCkpOworICAgIHN0YXJ0
TGlzdGVuaW5nKG1fbGlzdGVuZXIuZ2V0KCkpOworfQorCitIVFRQU2VydmVyOjpIVFRQU2VydmVy
KEZ1bmN0aW9uPHZvaWQobndfY29ubmVjdGlvbl90KT4mJiBjb25uZWN0aW9uSGFuZGxlciwgUHJv
dG9jb2wgcHJvdG9jb2wpCisgICAgOiBtX2xpc3RlbmVyKGFkb3B0TlMobndfbGlzdGVuZXJfY3Jl
YXRlKGxpc3RlbmVyUGFyYW1ldGVycyhwcm90b2NvbCwgbnVsbHB0cikuZ2V0KCkpKSkKKyAgICAs
IG1fcHJvdG9jb2wocHJvdG9jb2wpCit7CisgICAgbndfbGlzdGVuZXJfc2V0X3F1ZXVlKG1fbGlz
dGVuZXIuZ2V0KCksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOworICAgIG53X2xpc3RlbmVy
X3NldF9uZXdfY29ubmVjdGlvbl9oYW5kbGVyKG1fbGlzdGVuZXIuZ2V0KCksIG1ha2VCbG9ja1B0
cihbY29ubmVjdGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbm5lY3Rpb25IYW5kbGVyKV0gKG53X2Nv
bm5lY3Rpb25fdCBjb25uZWN0aW9uKSB7CisgICAgICAgIG53X2Nvbm5lY3Rpb25fc2V0X3F1ZXVl
KGNvbm5lY3Rpb24sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOworICAgICAgICBud19jb25u
ZWN0aW9uX3N0YXJ0KGNvbm5lY3Rpb24pOworICAgICAgICBjb25uZWN0aW9uSGFuZGxlcihjb25u
ZWN0aW9uKTsKKyAgICB9KS5nZXQoKSk7CisgICAgc3RhcnRMaXN0ZW5pbmcobV9saXN0ZW5lci5n
ZXQoKSk7Cit9CisKK0hUVFBTZXJ2ZXI6On5IVFRQU2VydmVyKCkgPSBkZWZhdWx0OworCitzaXpl
X3QgSFRUUFNlcnZlcjo6dG90YWxSZXF1ZXN0cygpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlcXVl
c3REYXRhKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9yZXF1ZXN0RGF0YS0+cmVx
dWVzdENvdW50OworfQorCiBzdGF0aWMgU3RyaW5nIHN0YXR1c1RleHQodW5zaWduZWQgc3RhdHVz
Q29kZSkKIHsKICAgICBzd2l0Y2ggKHN0YXR1c0NvZGUpIHsKQEAgLTk3LDE5ICsxMzUsMzQgQEAg
c3RhdGljIFN0cmluZyBzdGF0dXNUZXh0KHVuc2lnbmVkIHN0YXR1cwogICAgIHJldHVybiB7IH07
CiB9CiAKLXZvaWQgSFRUUFNlcnZlcjo6cmVzcG9uZFRvUmVxdWVzdHMobndfY29ubmVjdGlvbl90
IGNvbm5lY3Rpb24pCitSZXRhaW5QdHI8ZGlzcGF0Y2hfZGF0YV90PiBkYXRhRnJvbVN0cmluZyhT
dHJpbmcmJiBzKQogewotICAgIG53X2Nvbm5lY3Rpb25fcmVjZWl2ZShjb25uZWN0aW9uLCAxLCBz
dGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksIF4oZGlzcGF0Y2hfZGF0YV90IGNv
bnRlbnQsIG53X2NvbnRlbnRfY29udGV4dF90IGNvbnRleHQsIGJvb2wgY29tcGxldGUsIG53X2Vy
cm9yX3QgZXJyb3IpIHsKKyAgICBhdXRvIGltcGwgPSBzLnJlbGVhc2VJbXBsKCk7CisgICAgQVNT
RVJUKGltcGwtPmlzOEJpdCgpKTsKKyAgICByZXR1cm4gYWRvcHROUyhkaXNwYXRjaF9kYXRhX2Ny
ZWF0ZShpbXBsLT5jaGFyYWN0ZXJzOCgpLCBpbXBsLT5sZW5ndGgoKSwgZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgXnsKKyAgICAgICAgKHZvaWQpaW1wbDsKKyAgICB9KSk7Cit9CisKK1ZlY3Rv
cjxjaGFyPiBudWxsVGVybWluYXRlZFJlcXVlc3QoZGlzcGF0Y2hfZGF0YV90IGNvbnRlbnQpCit7
CisgICAgX19ibG9jayBWZWN0b3I8Y2hhcj4gcmVxdWVzdDsKKyAgICBkaXNwYXRjaF9kYXRhX2Fw
cGx5KGNvbnRlbnQsIF5ib29sKGRpc3BhdGNoX2RhdGFfdCwgc2l6ZV90LCBjb25zdCB2b2lkKiBi
dWZmZXIsIHNpemVfdCBzaXplKSB7CisgICAgICAgIHJlcXVlc3QuYXBwZW5kKHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIqPihidWZmZXIpLCBzaXplKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fSk7CisgICAgcmVxdWVzdC5hcHBlbmQoJ1wwJyk7CisgICAgcmV0dXJuIHJlcXVlc3Q7Cit9CisK
K3ZvaWQgSFRUUFNlcnZlcjo6cmVzcG9uZFRvUmVxdWVzdHMobndfY29ubmVjdGlvbl90IGNvbm5l
Y3Rpb24sIFJlZlB0cjxSZXF1ZXN0RGF0YT4gcmVxdWVzdERhdGEpCit7CisgICAgbndfY29ubmVj
dGlvbl9yZWNlaXZlKGNvbm5lY3Rpb24sIDEsIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+
OjptYXgoKSwgbWFrZUJsb2NrUHRyKFtjb25uZWN0aW9uID0gcmV0YWluUHRyKGNvbm5lY3Rpb24p
LCByZXF1ZXN0RGF0YV0oZGlzcGF0Y2hfZGF0YV90IGNvbnRlbnQsIG53X2NvbnRlbnRfY29udGV4
dF90IGNvbnRleHQsIGJvb2wgY29tcGxldGUsIG53X2Vycm9yX3QgZXJyb3IpIHsKICAgICAgICAg
aWYgKGVycm9yIHx8ICFjb250ZW50KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBfX2Js
b2NrIFZlY3RvcjxjaGFyPiByZXF1ZXN0OwotICAgICAgICBkaXNwYXRjaF9kYXRhX2FwcGx5KGNv
bnRlbnQsIF5ib29sKGRpc3BhdGNoX2RhdGFfdCwgc2l6ZV90LCBjb25zdCB2b2lkKiBidWZmZXIs
IHNpemVfdCBzaXplKSB7Ci0gICAgICAgICAgICByZXF1ZXN0LmFwcGVuZChzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4oYnVmZmVyKSwgc2l6ZSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgfSk7Ci0gICAgICAgIHJlcXVlc3QuYXBwZW5kKCdcMCcpOwogCi0gICAgICAgIG1fdG90
YWxSZXF1ZXN0cysrOworICAgICAgICByZXF1ZXN0RGF0YS0+cmVxdWVzdENvdW50Kys7CisgICAg
ICAgIGF1dG8gcmVxdWVzdCA9IG51bGxUZXJtaW5hdGVkUmVxdWVzdChjb250ZW50KTsKIAogICAg
ICAgICBjb25zdCBjaGFyKiBnZXRQYXRoUHJlZml4ID0gIkdFVCAiOwogICAgICAgICBjb25zdCBj
aGFyKiBwb3N0UGF0aFByZWZpeCA9ICJQT1NUICI7CkBAIC0xMjYsMTAgKzE3OSwxMCBAQCB2b2lk
IEhUVFBTZXJ2ZXI6OnJlc3BvbmRUb1JlcXVlc3RzKG53X2NvCiAgICAgICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UocGF0aFByZWZpeExlbmd0aCwgIkhUVFBTZXJ2ZXIgYXNzdW1lcyByZXF1ZXN0IGlz
IEdFVCBvciBQT1NUIik7CiAgICAgICAgIHNpemVfdCBwYXRoTGVuZ3RoID0gcGF0aEVuZCAtIHJl
cXVlc3QuZGF0YSgpIC0gcGF0aFByZWZpeExlbmd0aDsKICAgICAgICAgU3RyaW5nIHBhdGgocmVx
dWVzdC5kYXRhKCkgKyBwYXRoUHJlZml4TGVuZ3RoLCBwYXRoTGVuZ3RoKTsKLSAgICAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShtX3JlcXVlc3RSZXNwb25zZU1hcC5jb250YWlucyhwYXRoKSwgIlRo
aXMgSFRUUFNlcnZlciBkb2VzIG5vdCBrbm93IGhvdyB0byByZXNwb25kIHRvIGEgcmVxdWVzdCBm
b3IgJXMiLCBwYXRoLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KHJlcXVlc3REYXRhLT5yZXF1ZXN0TWFwLmNvbnRhaW5zKHBhdGgpLCAiVGhpcyBIVFRQU2VydmVy
IGRvZXMgbm90IGtub3cgaG93IHRvIHJlc3BvbmQgdG8gYSByZXF1ZXN0IGZvciAlcyIsIHBhdGgu
dXRmOCgpLmRhdGEoKSk7CiAKLSAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiBzZW5k
UmVzcG9uc2UgPSBbdGhpcywgY29ubmVjdGlvbiA9IHJldGFpblB0cihjb25uZWN0aW9uKSwgY29u
dGV4dCA9IHJldGFpblB0cihjb250ZXh0KSwgcGF0aCA9IFdURk1vdmUocGF0aCldIHsKLSAgICAg
ICAgICAgIGF1dG8gcmVzcG9uc2UgPSBtX3JlcXVlc3RSZXNwb25zZU1hcC5nZXQocGF0aCk7Cisg
ICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4gc2VuZFJlc3BvbnNlID0gW2Nvbm5lY3Rp
b24sIGNvbnRleHQgPSByZXRhaW5QdHIoY29udGV4dCksIHBhdGggPSBXVEZNb3ZlKHBhdGgpLCBy
ZXF1ZXN0RGF0YV0geworICAgICAgICAgICAgYXV0byByZXNwb25zZSA9IHJlcXVlc3REYXRhLT5y
ZXF1ZXN0TWFwLmdldChwYXRoKTsKICAgICAgICAgICAgIGlmIChyZXNwb25zZS50ZXJtaW5hdGVD
b25uZWN0aW9uID09IEhUVFBSZXNwb25zZTo6VGVybWluYXRlQ29ubmVjdGlvbjo6WWVzKSB7CiAg
ICAgICAgICAgICAgICAgbndfY29ubmVjdGlvbl9jYW5jZWwoY29ubmVjdGlvbi5nZXQoKSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTUwLDEzICsyMDMsOSBAQCB2b2lkIEhUVFBTZXJ2
ZXI6OnJlc3BvbmRUb1JlcXVlc3RzKG53X2NvCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBy
ZXNwb25zZUJ1aWxkZXIuYXBwZW5kKCJcclxuIik7CiAgICAgICAgICAgICByZXNwb25zZUJ1aWxk
ZXIuYXBwZW5kKHJlc3BvbnNlLmJvZHkpOwotICAgICAgICAgICAgYXV0byByZXNwb25zZUJvZHlB
bmRIZWFkZXIgPSByZXNwb25zZUJ1aWxkZXIudG9TdHJpbmcoKS5yZWxlYXNlSW1wbCgpOwotICAg
ICAgICAgICAgYXV0byByZXNwb25zZURhdGEgPSBhZG9wdE5TKGRpc3BhdGNoX2RhdGFfY3JlYXRl
KHJlc3BvbnNlQm9keUFuZEhlYWRlci0+Y2hhcmFjdGVyczgoKSwgcmVzcG9uc2VCb2R5QW5kSGVh
ZGVyLT5sZW5ndGgoKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgICAg
ICAgICAodm9pZClyZXNwb25zZUJvZHlBbmRIZWFkZXI7Ci0gICAgICAgICAgICB9KSk7Ci0gICAg
ICAgICAgICBud19jb25uZWN0aW9uX3NlbmQoY29ubmVjdGlvbi5nZXQoKSwgcmVzcG9uc2VEYXRh
LmdldCgpLCBjb250ZXh0LmdldCgpLCB0cnVlLCBeKG53X2Vycm9yX3QgZXJyb3IpIHsKKyAgICAg
ICAgICAgIG53X2Nvbm5lY3Rpb25fc2VuZChjb25uZWN0aW9uLmdldCgpLCBkYXRhRnJvbVN0cmlu
ZyhyZXNwb25zZUJ1aWxkZXIudG9TdHJpbmcoKSkuZ2V0KCksIGNvbnRleHQuZ2V0KCksIHRydWUs
IF4obndfZXJyb3JfdCBlcnJvcikgewogICAgICAgICAgICAgICAgIEFTU0VSVCghZXJyb3IpOwot
ICAgICAgICAgICAgICAgIHJlc3BvbmRUb1JlcXVlc3RzKGNvbm5lY3Rpb24uZ2V0KCkpOworICAg
ICAgICAgICAgICAgIHJlc3BvbmRUb1JlcXVlc3RzKGNvbm5lY3Rpb24uZ2V0KCksIHJlcXVlc3RE
YXRhKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9OwogCkBAIC0xNjUsNyArMjE0LDcgQEAg
dm9pZCBIVFRQU2VydmVyOjpyZXNwb25kVG9SZXF1ZXN0cyhud19jbwogICAgICAgICAgICAgc2l6
ZV90IGhlYWRlckxlbmd0aCA9IGRvdWJsZU5ld2xpbmUgLSByZXF1ZXN0LmRhdGEoKSArIHN0cmxl
bigiXHJcblxyXG4iKTsKICAgICAgICAgICAgIGNvbnN0ZXhwciBzaXplX3QgbnVsbFRlcm1pbmF0
aW9uTGVuZ3RoID0gMTsKICAgICAgICAgICAgIGlmIChyZXF1ZXN0LnNpemUoKSAtIG51bGxUZXJt
aW5hdGlvbkxlbmd0aCAtIGhlYWRlckxlbmd0aCA8IGNvbnRlbnRMZW5ndGgpIHsKLSAgICAgICAg
ICAgICAgICBud19jb25uZWN0aW9uX3JlY2VpdmUoY29ubmVjdGlvbiwgMSwgc3RkOjpudW1lcmlj
X2xpbWl0czx1aW50MzJfdD46Om1heCgpLCBtYWtlQmxvY2tQdHIoW3NlbmRSZXNwb25zZSA9IFdU
Rk1vdmUoc2VuZFJlc3BvbnNlKV0gKGRpc3BhdGNoX2RhdGFfdCBjb250ZW50LCBud19jb250ZW50
X2NvbnRleHRfdCBjb250ZXh0LCBib29sIGNvbXBsZXRlLCBud19lcnJvcl90IGVycm9yKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgICAgICBud19jb25uZWN0aW9uX3JlY2VpdmUoY29ubmVjdGlvbi5n
ZXQoKSwgMSwgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpLCBtYWtlQmxvY2tQ
dHIoW3NlbmRSZXNwb25zZSA9IFdURk1vdmUoc2VuZFJlc3BvbnNlKV0gKGRpc3BhdGNoX2RhdGFf
dCBjb250ZW50LCBud19jb250ZW50X2NvbnRleHRfdCBjb250ZXh0LCBib29sIGNvbXBsZXRlLCBu
d19lcnJvcl90IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9y
IHx8ICFjb250ZW50KQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgICAgICBzZW5kUmVzcG9uc2UoKTsKQEAgLTE3NCw3ICsyMjMsNyBAQCB2b2lkIEhUVFBT
ZXJ2ZXI6OnJlc3BvbmRUb1JlcXVlc3RzKG53X2NvCiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICAgICAgc2VuZFJlc3BvbnNlKCk7Ci0gICAgfSk7CisgICAgfSkuZ2V0KCkpOwogfQogCiB1
aW50MTZfdCBIVFRQU2VydmVyOjpwb3J0KCkgY29uc3QKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmgJKG5vbmV4aXN0ZW50KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQvV2Vi
S2l0Lmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLRG93bmxvYWREZWxlZ2F0ZS5oPgorCitAaW50ZXJm
YWNlIFRlc3REb3dubG9hZERlbGVnYXRlIDogTlNPYmplY3Q8X1dLRG93bmxvYWREZWxlZ2F0ZT4K
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxvYWREaWRTdGFydCkoX1dL
RG93bmxvYWQgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKShfV0tEb3dubG9hZCAqLCBOU1VSTCAqKTsKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZVJlc3BvbnNlKShfV0tEb3dubG9h
ZCAqLCBOU1VSTFJlc3BvbnNlICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQg
KF5kaWRSZWNlaXZlRGF0YSkoX1dLRG93bmxvYWQgKiwgdWludDY0X3QpOworQHByb3BlcnR5IChu
b25hdG9taWMsIGNvcHkpIHZvaWQgKF5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZSkoX1dLRG93bmxvYWQgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXikoQk9PTCwgTlNTdHJpbmcg
KikpOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kb3dubG9hZERpZEZpbmlz
aCkoX1dLRG93bmxvYWQgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRp
ZEZhaWxXaXRoRXJyb3IpKF9XS0Rvd25sb2FkICosIE5TRXJyb3IgKik7CitAcHJvcGVydHkgKG5v
bmF0b21pYywgY29weSkgdm9pZCAoXmRvd25sb2FkRGlkQ2FuY2VsKShfV0tEb3dubG9hZCAqKTsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKShfV0tEb3dubG9hZCAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ICosIHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxD
cmVkZW50aWFsKikpOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRDcmVh
dGVEZXN0aW5hdGlvbikoX1dLRG93bmxvYWQgKiwgTlNTdHJpbmcgKik7CitAZW5kCkluZGV4OiBU
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW0J
KG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWRE
ZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJUZXN0RG93bmxvYWREZWxlZ2F0ZS5oIgorCitA
aW1wbGVtZW50YXRpb24gVGVzdERvd25sb2FkRGVsZWdhdGUKKworLSAodm9pZClfZG93bmxvYWRE
aWRTdGFydDooX1dLRG93bmxvYWQgKilkb3dubG9hZAoreworICAgIGlmIChfZG93bmxvYWREaWRT
dGFydCkKKyAgICAgICAgX2Rvd25sb2FkRGlkU3RhcnQoZG93bmxvYWQpOworfQorCistICh2b2lk
KV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RUb1VSTDooTlNVUkwgKil1cmwKK3sKKyAgICBpZiAoX2RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dFRvVVJMKQorICAgICAgICBfZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoZG93bmxvYWQs
IHVybCk7Cit9CisKKy0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRp
ZFJlY2VpdmVSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlCit7CisgICAgaWYgKF9k
aWRSZWNlaXZlUmVzcG9uc2UpCisgICAgICAgIF9kaWRSZWNlaXZlUmVzcG9uc2UoZG93bmxvYWQs
IHJlc3BvbnNlKTsKK30KKworLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxv
YWQgZGlkUmVjZWl2ZURhdGE6KHVpbnQ2NF90KWxlbmd0aAoreworICAgIGlmIChfZGlkUmVjZWl2
ZURhdGEpCisgICAgICAgIF9kaWRSZWNlaXZlRGF0YShkb3dubG9hZCwgbGVuZ3RoKTsKK30KKwor
LSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKEJPT0wgYWxsb3dPdmVyd3JpdGUsIE5TU3RyaW5nICpkZXN0aW5hdGlv
bikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBBU1NFUlQoX2RlY2lkZURlc3RpbmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lKTsKKyAgICBfZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUoZG93bmxvYWQsIGZpbGVuYW1lLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy0g
KHZvaWQpX2Rvd25sb2FkRGlkRmluaXNoOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCit7CisgICAg
aWYgKF9kb3dubG9hZERpZEZpbmlzaCkKKyAgICAgICAgX2Rvd25sb2FkRGlkRmluaXNoKGRvd25s
b2FkKTsKK30KKworLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlk
RmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCit7CisgICAgaWYgKF9kaWRGYWlsV2l0aEVy
cm9yKQorICAgICAgICBfZGlkRmFpbFdpdGhFcnJvcihkb3dubG9hZCwgZXJyb3IpOworfQorCist
ICh2b2lkKV9kb3dubG9hZERpZENhbmNlbDooX1dLRG93bmxvYWQgKilkb3dubG9hZAoreworICAg
IGlmIChfZG93bmxvYWREaWRDYW5jZWwpCisgICAgICAgIF9kb3dubG9hZERpZENhbmNlbChkb3du
bG9hZCk7Cit9CisKKy0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwqKSljb21wbGV0aW9uSGFu
ZGxlcgoreworICAgIGlmIChfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQorICAg
ICAgICBfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGRvd25sb2FkLCBjaGFsbGVu
Z2UsIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCBuaWwp
OworfQorCistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRDcmVh
dGVEZXN0aW5hdGlvbjooTlNTdHJpbmcgKilkZXN0aW5hdGlvbgoreworICAgIGlmIChfZGlkQ3Jl
YXRlRGVzdGluYXRpb24pCisgICAgICAgIF9kaWRDcmVhdGVEZXN0aW5hdGlvbihkb3dubG9hZCwg
ZGVzdGluYXRpb24pOworfQorCitAZW5kCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaAkocmV2aXNpb24gMjYwNDgzKQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIAogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkp
IHZvaWQgKF5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKShXS05hdmlnYXRpb25BY3Rp
b24gKiwgdm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSk7CiBAcHJvcGVydHkgKG5v
bmF0b21pYywgY29weSkgdm9pZCAoXmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25XaXRo
UHJlZmVyZW5jZXMpKFdLTmF2aWdhdGlvbkFjdGlvbiAqLCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAq
LCB2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2Vz
ICopKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvblJlc3BvbnNlKShXS05hdmlnYXRpb25SZXNwb25zZSAqLCB2b2lkICheKShXS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZv
aWQgKF5kaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKShXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0
aW9uICosIE5TRXJyb3IgKik7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRp
ZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKShXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uICop
OwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRDb21taXROYXZpZ2F0aW9u
KShXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uICopOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjYw
NDgzKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRl
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCwxNCBAQCAtICh2b2lkKXdlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgZGVjCiAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRp
b25BY3Rpb25Qb2xpY3lBbGxvdywgcHJlZmVyZW5jZXMpOwogfQogCistICh2b2lkKXdlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOihX
S05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6
KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKK3sK
KyAgICBpZiAoX2RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSkKKyAgICAgICAgX2Rl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZShuYXZpZ2F0aW9uUmVzcG9uc2UsIGRlY2lz
aW9uSGFuZGxlcik7CisgICAgZWxzZQorICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0
aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyk7Cit9CisKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICop
bmF2aWdhdGlvbgogewogICAgIGlmIChfZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24pCg==
</data>
<flag name="review"
          id="412594"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>