<?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>213913</bug_id>
          
          <creation_ts>2020-07-02 18:02:19 -0700</creation_ts>
          <short_desc>Add testing infrastructure and SPI declaration for HTTP/2 ping</short_desc>
          <delta_ts>2020-07-02 19:02:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jer.noble</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1668439</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-02 18:02:19 -0700</bug_when>
    <thetext>Add testing infrastructure and SPI declaration for HTTP/2 ping</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668442</commentid>
    <comment_count>1</comment_count>
      <attachid>403426</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-02 18:04:37 -0700</bug_when>
    <thetext>Created attachment 403426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668447</commentid>
    <comment_count>2</comment_count>
      <attachid>403426</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-07-02 18:14:22 -0700</bug_when>
    <thetext>Comment on attachment 403426
Patch

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

r=me with single nit.

&gt; Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h:77
&gt; +- (void) getUnderlyingHTTPConnectionInfoWithCompletionHandler:(void (^)(_NSHTTPConnectionInfo *connectionInfo))completionHandler;

Nit: Whitespace between &quot;)&quot; and &quot;get...&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668449</commentid>
    <comment_count>3</comment_count>
      <attachid>403429</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-02 18:17:56 -0700</bug_when>
    <thetext>Created attachment 403429
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668452</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-02 19:01:25 -0700</bug_when>
    <thetext>Committed r263879: &lt;https://trac.webkit.org/changeset/263879&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 403429.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668453</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-02 19:02:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/65060003&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403426</attachid>
            <date>2020-07-02 18:04:37 -0700</date>
            <delta_ts>2020-07-02 18:17:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213913-20200702190436.patch</filename>
            <type>text/plain</type>
            <size>20284</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjM3MDgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA3LTAyICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHRlc3RpbmcgaW5mcmFzdHJ1
Y3R1cmUgYW5kIFNQSSBkZWNsYXJhdGlvbiBmb3IgSFRUUC8yIHBpbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzkxMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgd29yayB0b3dhcmRzIHJk
YXI6Ly9wcm9ibGVtLzY0NDk1ODI3CisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisK
IDIwMjAtMDYtMjkgIFRldHN1aGFydSBPaHpla2kgIDx0ZXRzdWhhcnUub2h6ZWtpQGdtYWlsLmNv
bT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX1NUUkVBTVNfQVBJIGNvbXBpbGF0aW9uIGZsYWcK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCShyZXZpc2lvbiAyNjM3MDUpCisrKyBTb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUhhdmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgwLDYgKzM4MCwxNCBAQAog
I2RlZmluZSBIQVZFX0FDQ0VTU0lCSUxJVFlfQlVORExFU19QQVRIIDEKICNlbmRpZgogCisjaWYg
KFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE2
MDApIFwKKyAgICB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxNDAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oV0FUQ0hPUykgJiYgX19XQVRD
SF9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSA3MDAwMCkgXAorICAgIHx8IChQTEFURk9STShB
UFBMRVRWKSAmJiBfX1RWX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDE0MDAwMCkgXAorICAg
IHx8IChQTEFURk9STShNQUNDQVRBTFlTVCkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTQwMDAwKQorI2RlZmluZSBIQVZFX1BSRUNPTk5FQ1RfUElORyAxCisjZW5kaWYK
KwogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhKFBMQVRGT1JNKE1BQykgJiYgIShfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFY
X0FMTE9XRUQgPj0gMTAxNDA0KSkKICNkZWZpbmUgSEFWRV9DRk5FVFdPUktfT1ZFUlJJREVfU0VT
U0lPTl9DT09LSUVfQUNDRVBUX1BPTElDWSAxCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZwkocmV2aXNpb24gMjYzNzA1KQorKysgU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA3LTAyICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHRlc3RpbmcgaW5mcmFz
dHJ1Y3R1cmUgYW5kIFNQSSBkZWNsYXJhdGlvbiBmb3IgSFRUUC8yIHBpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzkxMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFsL3NwaS9jZi9DRk5ldHdv
cmtTUEkuaDoKKwogMjAyMC0wNi0yOSAgVGV0c3VoYXJ1IE9oemVraSAgPHRldHN1aGFydS5vaHpl
a2lAZ21haWwuY29tPgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEVfU1RSRUFNU19BUEkgY29tcGls
YXRpb24gZmxhZwpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3Jr
U1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3
b3JrU1BJLmgJKHJldmlzaW9uIDI2MzcwNSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2NmL0NGTmV0d29ya1NQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2NywxNyBAQCBXVEZf
RVhURVJOX0NfRU5ECiAKICNlbHNlIC8vICFQTEFURk9STShXSU4pICYmICFVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQogCisjaWYgSEFWRShQUkVDT05ORUNUX1BJTkcpCitAaW50ZXJmYWNlIF9OU0hU
VFBDb25uZWN0aW9uSW5mbyA6IE5TT2JqZWN0CistICh2b2lkKXNlbmRQaW5nV2l0aFJlY2VpdmVI
YW5kbGVyOih2b2lkICheKShOU0Vycm9yICogX051bGxhYmxlIGVycm9yLCBOU1RpbWVJbnRlcnZh
bCBpbnRlcnZhbCkpcG9uZ0hhbmRsZXI7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGlzVmFs
aWQ7CitAZW5kCisKK0BpbnRlcmZhY2UgTlNVUkxTZXNzaW9uVGFzayAoSFRUUENvbm5lY3Rpb25J
bmZvKQorLSAodm9pZCkgZ2V0VW5kZXJseWluZ0hUVFBDb25uZWN0aW9uSW5mb1dpdGhDb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoX05TSFRUUENvbm5lY3Rpb25JbmZvICpjb25uZWN0aW9uSW5m
bykpY29tcGxldGlvbkhhbmRsZXI7CitAZW5kCisjZW5kaWYgLy8gSEFWRShQUkVDT05ORUNUX1BJ
TkcpCisKICNpZiBIQVZFKExPR0dJTkdfUFJJVkFDWV9MRVZFTCkKIHR5cGVkZWYgZW51bSB7CiAg
ICAgbndfY29udGV4dF9wcml2YWN5X2xldmVsX3B1YmxpYyA9IDEsCkluZGV4OiBUb29scy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjM4NzcpCisr
KyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMyBAQAorMjAyMC0w
Ny0wMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAg
ICAgIEFkZCB0ZXN0aW5nIGluZnJhc3RydWN0dXJlIGFuZCBTUEkgZGVjbGFyYXRpb24gZm9yIEhU
VFAvMiBwaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTM5MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJlY29ubmVjdC5tbToKKyAgICAg
ICAgKC1bU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246dGFzazpkaWRSZWNlaXZlQ2hhbGxlbmdl
OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cGluZ1Bvbmcp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9jb2NvYS9IVFRQU2VydmVyLmg6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIMjo6RnJhbWU6
OkZyYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkgyOjpGcmFtZTo6dHlwZSBjb25zdCk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIMjo6RnJhbWU6OmZsYWdzIGNvbnN0KToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OkgyOjpGcmFtZTo6c3RyZWFtSUQgY29uc3QpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6SDI6OkZyYW1lOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OkgyOjpDb25uZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6SDI6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb24pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Y29jb2EvSFRUUFNlcnZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6
Omxpc3RlbmVyUGFyYW1ldGVycyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkYXRhRnJvbVZl
Y3Rvcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp2ZWN0b3JGcm9tRGF0YSk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpyZXF1ZXN0IGNvbnN0KToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OkNvbm5lY3Rpb246OnJlY2VpdmVCeXRlcyBjb25zdCk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uOjpyZWNlaXZlSFRUUFJlcXVlc3QgY29uc3QpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbjo6c2VuZCBjb25zdCk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpIMjo6Q29ubmVjdGlvbjo6c2VuZCBjb25zdCk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpIMjo6Q29ubmVjdGlvbjo6cmVjZWl2ZSBjb25zdCk6CisKIDIwMjAtMDctMDIg
IEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Vz
dG9tIFVSTCBzY2hlbWVzIHNob3VsZCBiZSB0cmVhdGVkIGFzIGFwcC1ib3VuZApJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QcmVjb25uZWN0Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJlY29ubmVjdC5t
bQkocmV2aXNpb24gMjYzNzA1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9QcmVjb25uZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiwxOSBAQAogI2lt
cG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVXRpbGl0aWVzLmgiCiAj
aW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8cGFsL3NwaS9jZi9D
Rk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAorQGludGVyZmFjZSBT
ZXNzaW9uRGVsZWdhdGUgOiBOU09iamVjdCA8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPgorQGVu
ZAorCitAaW1wbGVtZW50YXRpb24gU2Vzc2lvbkRlbGVnYXRlCistICh2b2lkKVVSTFNlc3Npb246
KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gdGFzazooTlNVUkxTZXNzaW9uVGFzayAqKXRhc2sgZGlk
UmVjZWl2ZUNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5n
ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURp
c3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwpKWNvbXBs
ZXRpb25IYW5kbGVyCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENo
YWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0
OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKK30KK0BlbmQKKwogbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUKFByZWNvbm5lY3QsIEhUVFApCkBAIC05MCw2
ICsxMDEsNzYgQEAgVEVTVChQcmVjb25uZWN0LCBIVFRQUykKIAogI2VuZGlmCiAKKyNpZiBIQVZF
KFBSRUNPTk5FQ1RfUElORykKK3N0YXRpYyB2b2lkIHBpbmdQb25nKFJlZjxIMjo6Q29ubmVjdGlv
bj4mJiBjb25uZWN0aW9uLCBzaXplX3QqIGhlYWRlcnNDb3VudCkKK3sKKyAgICBjb25uZWN0aW9u
LT5yZWNlaXZlKFtjb25uZWN0aW9uLCBoZWFkZXJzQ291bnRdIChIMjo6RnJhbWUmJiBmcmFtZSkg
bXV0YWJsZSB7CisgICAgICAgIHN3aXRjaCAoZnJhbWUudHlwZSgpKSB7CisgICAgICAgIGNhc2Ug
SDI6OkZyYW1lOjpUeXBlOjpIZWFkZXJzOgorICAgICAgICAgICAgKysqaGVhZGVyc0NvdW50Owor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSDI6OkZyYW1lOjpUeXBlOjpTZXR0aW5n
czoKKyAgICAgICAgY2FzZSBIMjo6RnJhbWU6OlR5cGU6OldpbmRvd1VwZGF0ZToKKyAgICAgICAg
ICAgIC8vIFRoZXNlIGZyYW1lIHR5cGVzIGFyZSBvayBmb3IgYSBwcmVjb25uZWN0IHRhc2suCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBIMjo6RnJhbWU6OlR5cGU6OlBpbmc6Cisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9odHRwMi5naXRodWIuaW8v
aHR0cDItc3BlYy8jcmZjLnNlY3Rpb24uNi43CisgICAgICAgICAgICAgICAgY29uc3RleHByIHVp
bnQ4X3QgYWNrID0gMHgxOworICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoSDI6OkZy
YW1lKEgyOjpGcmFtZTo6VHlwZTo6UGluZywgYWNrLCBmcmFtZS5zdHJlYW1JRCgpLCBmcmFtZS5w
YXlsb2FkKCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgLy8gSWYgYW55dGhpbmcgZWxzZSBpcyBzZW50IGJ5IHRoZSBj
bGllbnQsIHByZWNvbm5lY3QgaXMgZG9pbmcgdG9vIG11Y2guCisgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHBp
bmdQb25nKFdURk1vdmUoY29ubmVjdGlvbiksIGhlYWRlcnNDb3VudCk7CisgICAgfSk7Cit9CisK
Ky8vIFRoaXMgc2hvdWxkIHJlbWFpbiBkaXNhYmxlZCB1bnRpbCByZGFyOi8vcHJvYmxlbS82NTA1
NTkzMCBpcyBpbnRlZ3JhdGVkIGFuZCBib3RzIGFyZSB1cGRhdGVkCitURVNUKFByZWNvbm5lY3Qs
IERJU0FCTEVEX0gyUGluZykKK3sKKyAgICBzaXplX3QgaGVhZGVyc0NvdW50ID0gMDsKKyAgICBI
VFRQU2VydmVyIHNlcnZlcihbaGVhZGVyc0NvdW50ID0gJmhlYWRlcnNDb3VudF0gKENvbm5lY3Rp
b24gdGxzQ29ubmVjdGlvbikgeworICAgICAgICBwaW5nUG9uZyhIMjo6Q29ubmVjdGlvbjo6Y3Jl
YXRlKHRsc0Nvbm5lY3Rpb24pLCBoZWFkZXJzQ291bnQpOworICAgIH0sIEhUVFBTZXJ2ZXI6OlBy
b3RvY29sOjpIdHRwMik7CisgICAgCisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Nlc3Np
b25EZWxlZ2F0ZSBuZXddKTsKKyAgICBOU1VSTFNlc3Npb24gKnNlc3Npb24gPSBbTlNVUkxTZXNz
aW9uIHNlc3Npb25XaXRoQ29uZmlndXJhdGlvbjpbTlNVUkxTZXNzaW9uQ29uZmlndXJhdGlvbiBl
cGhlbWVyYWxTZXNzaW9uQ29uZmlndXJhdGlvbl0gZGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCkgZGVs
ZWdhdGVRdWV1ZTpbTlNPcGVyYXRpb25RdWV1ZSBtYWluUXVldWVdXTsKKyAgICBOU1VSTFNlc3Np
b25EYXRhVGFzayAqdGFzayA9IFtzZXNzaW9uIGRhdGFUYXNrV2l0aFJlcXVlc3Q6c2VydmVyLnJl
cXVlc3QoKV07CisgICAgdGFzay5fcHJlY29ubmVjdCA9IFlFUzsKKyAgICBfX2Jsb2NrIGJvb2wg
ZG9uZSA9IGZhbHNlOworCisgICAgW3Rhc2sgZ2V0VW5kZXJseWluZ0hUVFBDb25uZWN0aW9uSW5m
b1dpdGhDb21wbGV0aW9uSGFuZGxlcjpeKF9OU0hUVFBDb25uZWN0aW9uSW5mbyAqY29ubmVjdGlv
bkluZm8pIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoY29ubmVjdGlvbkluZm8uaXNWYWxpZCk7Cisg
ICAgICAgIFtjb25uZWN0aW9uSW5mbyBzZW5kUGluZ1dpdGhSZWNlaXZlSGFuZGxlcjpeKE5TRXJy
b3IgKmVycm9yLCBOU1RpbWVJbnRlcnZhbCBpbnRlcnZhbCkgeworICAgICAgICAgICAgRVhQRUNU
X0ZBTFNFKGVycm9yKTsKKyAgICAgICAgICAgIEVYUEVDVF9HVChpbnRlcnZhbCwgMC4wKTsKKyAg
ICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9XTsKKyAgICB9XTsKKyAgICBbdGFzayBy
ZXN1bWVdOworICAgIFV0aWw6OnJ1bigmZG9uZSk7CisgICAgCisgICAgLy8gTWFrZSBzdXJlIHRo
ZSBjbGllbnQgZG9lc24ndCBzZW5kIGFueXRoaW5nIGV4Y2VwdCBTZXR0aW5ncywgV2luZG93VXBk
YXRlLCBhbmQgUGluZy4KKyAgICAvLyBJZiBIZWFkZXJzIG9yIERhdGEgd2VyZSBzZW50LCB0aGVu
IHRoZSBwcmVjb25uZWN0IHdvdWxkbid0IGJlIHByZWNvbm5lY3QuCisgICAgdXNsZWVwKDEwMDAw
MCk7CisgICAgVXRpbDo6c3BpblJ1bkxvb3AoMTAwKTsKKyAgICBFWFBFQ1RfRVEoaGVhZGVyc0Nv
dW50LCAwdSk7CisKKyAgICBOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzazIgPSBbc2Vzc2lvbiBk
YXRhVGFza1dpdGhSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFt0YXNrMiByZXN1bWVd
OworICAgIHdoaWxlICghaGVhZGVyc0NvdW50KQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgp
OworICAgIEVYUEVDVF9FUShoZWFkZXJzQ291bnQsIDF1KTsKKyAgICB1c2xlZXAoMTAwMDAwKTsK
KyAgICBVdGlsOjpzcGluUnVuTG9vcCgxMDApOworICAgIEVYUEVDVF9FUShoZWFkZXJzQ291bnQs
IDF1KTsKK30KKyNlbmRpZiAvLyBIQVZFKFBSRUNPTk5FQ1RfUElORykKKwogfQogCiAjZW5kaWYK
SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oCShyZXZpc2lvbiAyNjM3
MDUpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBIVFRQU2VydmVyIHsKIHB1YmxpYzoKICAgICBz
dHJ1Y3QgSFRUUFJlc3BvbnNlOwogICAgIHN0cnVjdCBSZXF1ZXN0RGF0YTsKLSAgICBlbnVtIGNs
YXNzIFByb3RvY29sIDogdWludDhfdCB7IEh0dHAsIEh0dHBzLCBIdHRwc1dpdGhMZWdhY3lUTFMg
fTsKKyAgICBlbnVtIGNsYXNzIFByb3RvY29sIDogdWludDhfdCB7IEh0dHAsIEh0dHBzLCBIdHRw
c1dpdGhMZWdhY3lUTFMsIEh0dHAyIH07CiAgICAgdXNpbmcgQ2VydGlmaWNhdGVWZXJpZmllciA9
IEZ1bmN0aW9uPHZvaWQoc2VjX3Byb3RvY29sX21ldGFkYXRhX3QsIHNlY190cnVzdF90LCBzZWNf
cHJvdG9jb2xfdmVyaWZ5X2NvbXBsZXRlX3QpPjsKIAogICAgIEhUVFBTZXJ2ZXIoc3RkOjppbml0
aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+LCBQcm90b2NvbCA9
IFByb3RvY29sOjpIdHRwLCBDZXJ0aWZpY2F0ZVZlcmlmaWVyJiYgPSBudWxscHRyKTsKQEAgLTY3
LDYgKzY3LDkgQEAgcHJpdmF0ZToKIGNsYXNzIENvbm5lY3Rpb24gewogcHVibGljOgogICAgIHZv
aWQgc2VuZChTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmID0gbnVsbHB0cikg
Y29uc3Q7CisgICAgdm9pZCBzZW5kKFZlY3Rvcjx1aW50OF90PiYmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgPSBudWxscHRyKSBjb25zdDsKKyAgICB2b2lkIHNlbmQoUmV0YWluUHRyPGRp
c3BhdGNoX2RhdGFfdD4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmID0gbnVsbHB0cikg
Y29uc3Q7CisgICAgdm9pZCByZWNlaXZlQnl0ZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8dWludDhfdD4mJik+JiYpIGNvbnN0OwogICAgIHZvaWQgcmVjZWl2ZUhUVFBSZXF1ZXN0KENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPGNoYXI+JiYpPiYmLCBWZWN0b3I8Y2hhcj4mJiBi
dWZmZXIgPSB7IH0pIGNvbnN0OwogICAgIHZvaWQgdGVybWluYXRlKCkgY29uc3Q7CiAKQEAgLTEw
NSw2ICsxMDgsNjEgQEAgc3RydWN0IEhUVFBTZXJ2ZXI6OkhUVFBSZXNwb25zZSB7CiAgICAgVGVy
bWluYXRlQ29ubmVjdGlvbiB0ZXJtaW5hdGVDb25uZWN0aW9uIHsgVGVybWluYXRlQ29ubmVjdGlv
bjo6Tm8gfTsKIH07CiAKK25hbWVzcGFjZSBIMiB7CisKKy8vIGh0dHBzOi8vaHR0cDIuZ2l0aHVi
LmlvL2h0dHAyLXNwZWMvI3JmYy5zZWN0aW9uLjQuMQorY2xhc3MgRnJhbWUgeworcHVibGljOgor
CisgICAgLy8gaHR0cHM6Ly9odHRwMi5naXRodWIuaW8vaHR0cDItc3BlYy8jcmZjLnNlY3Rpb24u
NgorICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeworICAgICAgICBEYXRhID0gMHgwLAor
ICAgICAgICBIZWFkZXJzID0gMHgxLAorICAgICAgICBQcmlvcml0eSA9IDB4MiwKKyAgICAgICAg
UlNUU3RyZWFtID0gMHgzLAorICAgICAgICBTZXR0aW5ncyA9IDB4NCwKKyAgICAgICAgUHVzaFBy
b21pc2UgPSAweDUsCisgICAgICAgIFBpbmcgPSAweDYsCisgICAgICAgIEdvQXdheSA9IDB4NywK
KyAgICAgICAgV2luZG93VXBkYXRlID0gMHg4LAorICAgICAgICBDb250aW51YXRpb24gPSAweDks
CisgICAgfTsKKworICAgIEZyYW1lKFR5cGUgdHlwZSwgdWludDhfdCBmbGFncywgdWludDMyX3Qg
c3RyZWFtSUQsIFZlY3Rvcjx1aW50OF90PiBwYXlsb2FkKQorICAgICAgICA6IG1fdHlwZSh0eXBl
KQorICAgICAgICAsIG1fZmxhZ3MoZmxhZ3MpCisgICAgICAgICwgbV9zdHJlYW1JRChzdHJlYW1J
RCkKKyAgICAgICAgLCBtX3BheWxvYWQoV1RGTW92ZShwYXlsb2FkKSkgeyB9CisKKyAgICBUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICB1aW50OF90IGZsYWdzKCkgY29u
c3QgeyByZXR1cm4gbV9mbGFnczsgfQorICAgIHVpbnQzMl90IHN0cmVhbUlEKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJlYW1JRDsgfQorICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGF5bG9hZCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZDsgfQorCitwcml2YXRlOgorICAgIFR5cGUgbV90eXBl
OworICAgIHVpbnQ4X3QgbV9mbGFnczsKKyAgICB1aW50MzJfdCBtX3N0cmVhbUlEOworICAgIFZl
Y3Rvcjx1aW50OF90PiBtX3BheWxvYWQ7Cit9OworCitjbGFzcyBDb25uZWN0aW9uIDogcHVibGlj
IFJlZkNvdW50ZWQ8Q29ubmVjdGlvbj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8Q29ubmVj
dGlvbj4gY3JlYXRlKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gdGxzQ29ubmVjdGlvbikgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDb25uZWN0aW9uKHRsc0Nvbm5lY3Rpb24pKTsgfQorICAgIHZv
aWQgc2VuZChGcmFtZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgPSBudWxscHRyKSBj
b25zdDsKKyAgICB2b2lkIHJlY2VpdmUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFtZSYmKT4m
JikgY29uc3Q7Citwcml2YXRlOgorICAgIENvbm5lY3Rpb24oVGVzdFdlYktpdEFQSTo6Q29ubmVj
dGlvbiB0bHNDb25uZWN0aW9uKQorICAgICAgICA6IG1fdGxzQ29ubmVjdGlvbih0bHNDb25uZWN0
aW9uKSB7IH0KKworICAgIFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gbV90bHNDb25uZWN0aW9u
OworICAgIG11dGFibGUgYm9vbCBtX2V4cGVjdENsaWVudENvbm5lY3Rpb25QcmVmYWNlIHsgdHJ1
ZSB9OworICAgIG11dGFibGUgYm9vbCBtX3NlbmRTZXJ2ZXJDb25uZWN0aW9uUHJlZmFjZSB7IHRy
dWUgfTsKKyAgICBtdXRhYmxlIFZlY3Rvcjx1aW50OF90PiBtX3JlY2VpdmVCdWZmZXI7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBIMgorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKICNl
bmRpZiAvLyBIQVZFKE5FVFdPUktfRlJBTUVXT1JLKQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9IVFRQU2VydmVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvSFRUUFNlcnZlci5tbQkocmV2aXNpb24gMjYzNzA1KQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02Niw2ICs2Niw4IEBA
IFJldGFpblB0cjxud19wYXJhbWV0ZXJzX3Q+IEhUVFBTZXJ2ZXI6OmwKICAgICAgICAgICAgICAg
ICB2ZXJpZmllcihtZXRhZGF0YSwgdHJ1c3QsIGNvbXBsZXRpb24pOwogICAgICAgICAgICAgfSku
Z2V0KCksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwogICAgICAgICB9CisgICAgICAgIGlm
IChwcm90b2NvbCA9PSBQcm90b2NvbDo6SHR0cDIpCisgICAgICAgICAgICBzZWNfcHJvdG9jb2xf
b3B0aW9uc19hZGRfdGxzX2FwcGxpY2F0aW9uX3Byb3RvY29sKG9wdGlvbnMuZ2V0KCksICJoMiIp
OwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHByb3RvY29sT3B0aW9ucyk7CiAgICAgICAg
IEFTU0VSVF9VTlVTRUQocHJvdG9jb2wsIHByb3RvY29sICE9IFByb3RvY29sOjpIdHRwc1dpdGhM
ZWdhY3lUTFMpOwpAQCAtMTY1LDkgKzE2NywxOSBAQCBzdGF0aWMgUmV0YWluUHRyPGRpc3BhdGNo
X2RhdGFfdD4gZGF0YUZyCiAgICAgfSkpOwogfQogCi1zdGF0aWMgVmVjdG9yPGNoYXI+IHZlY3Rv
ckZyb21EYXRhKGRpc3BhdGNoX2RhdGFfdCBjb250ZW50KQorc3RhdGljIFJldGFpblB0cjxkaXNw
YXRjaF9kYXRhX3Q+IGRhdGFGcm9tVmVjdG9yKFZlY3Rvcjx1aW50OF90PiYmIHYpCiB7Ci0gICAg
X19ibG9jayBWZWN0b3I8Y2hhcj4gcmVxdWVzdDsKKyAgICBhdXRvIGJ1ZmZlclNpemUgPSB2LnNp
emUoKTsKKyAgICBhdXRvIHJhd1BvaW50ZXIgPSB2LnJlbGVhc2VCdWZmZXIoKS5sZWFrUHRyKCk7
CisgICAgcmV0dXJuIGFkb3B0TlMoZGlzcGF0Y2hfZGF0YV9jcmVhdGUocmF3UG9pbnRlciwgYnVm
ZmVyU2l6ZSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgZmFzdEZyZWUo
cmF3UG9pbnRlcik7CisgICAgfSkpOworfQorCitzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IHZlY3Rv
ckZyb21EYXRhKGRpc3BhdGNoX2RhdGFfdCBjb250ZW50KQoreworICAgIEFTU0VSVChjb250ZW50
KTsKKyAgICBfX2Jsb2NrIFZlY3Rvcjx1aW50OF90PiByZXF1ZXN0OwogICAgIGRpc3BhdGNoX2Rh
dGFfYXBwbHkoY29udGVudCwgXmJvb2woZGlzcGF0Y2hfZGF0YV90LCBzaXplX3QsIGNvbnN0IHZv
aWQqIGJ1ZmZlciwgc2l6ZV90IHNpemUpIHsKICAgICAgICAgcmVxdWVzdC5hcHBlbmQoc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlciksIHNpemUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTIyNywxOCArMjM5LDI2IEBAICAgICBzd2l0Y2ggKG1fcHJvdG9jb2wpIHsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBQcm90b2NvbDo6SHR0cHM6CiAgICAgY2FzZSBQcm90b2NvbDo6SHR0
cHNXaXRoTGVnYWN5VExTOgorICAgIGNhc2UgUHJvdG9jb2w6Okh0dHAyOgogICAgICAgICBmb3Jt
YXQgPSBAImh0dHBzOi8vMTI3LjAuMC4xOiVkJXMiOwogICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgcmV0dXJuIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6Zm9ybWF0LCBwb3J0KCksIHBhdGgudXRmOCgp
LmRhdGEoKV1dXTsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjpyZWNlaXZlSFRUUFJlcXVlc3QoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8Y2hhcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIs
IFZlY3RvcjxjaGFyPiYmIGJ1ZmZlcikgY29uc3QKK3ZvaWQgQ29ubmVjdGlvbjo6cmVjZWl2ZUJ5
dGVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBjb25zdAogewotICAgIG53X2Nvbm5lY3Rpb25fcmVjZWl2ZShtX2Nvbm5lY3Rp
b24uZ2V0KCksIDEsIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwgbWFrZUJs
b2NrUHRyKFtjb25uZWN0aW9uID0gKnRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oZGlzcGF0Y2hfZGF0
YV90IGNvbnRlbnQsIG53X2NvbnRlbnRfY29udGV4dF90LCBib29sLCBud19lcnJvcl90IGVycm9y
KSBtdXRhYmxlIHsKKyAgICBud19jb25uZWN0aW9uX3JlY2VpdmUobV9jb25uZWN0aW9uLmdldCgp
LCAxLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksIG1ha2VCbG9ja1B0cihb
Y29ubmVjdGlvbiA9ICp0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShkaXNwYXRjaF9kYXRhX3QgY29udGVudCwgbndfY29udGVudF9jb250ZXh0X3Qs
IGJvb2wsIG53X2Vycm9yX3QgZXJyb3IpIG11dGFibGUgewogICAgICAgICBpZiAoZXJyb3IgfHwg
IWNvbnRlbnQpCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKLSAg
ICAgICAgYnVmZmVyLmFwcGVuZFZlY3Rvcih2ZWN0b3JGcm9tRGF0YShjb250ZW50KSk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHZlY3RvckZyb21EYXRhKGNvbnRlbnQpKTsKKyAgICB9KS5n
ZXQoKSk7Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6cmVjZWl2ZUhUVFBSZXF1ZXN0KENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPGNoYXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBWZWN0
b3I8Y2hhcj4mJiBidWZmZXIpIGNvbnN0Cit7CisgICAgcmVjZWl2ZUJ5dGVzKFtjb25uZWN0aW9u
ID0gKnRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oVmVjdG9yPHVpbnQ4X3Q+JiYgYnl0ZXMpIG11dGFi
bGUgeworICAgICAgICBidWZmZXIuYXBwZW5kVmVjdG9yKFdURk1vdmUoYnl0ZXMpKTsKICAgICAg
ICAgaWYgKGF1dG8qIGRvdWJsZU5ld2xpbmUgPSBzdHJuc3RyKGJ1ZmZlci5kYXRhKCksICJcclxu
XHJcbiIsIGJ1ZmZlci5zaXplKCkpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogY29udGVudExl
bmd0aEJlZ2luID0gc3RybnN0cihidWZmZXIuZGF0YSgpLCAiQ29udGVudC1MZW5ndGgiLCBidWZm
ZXIuc2l6ZSgpKSkgewogICAgICAgICAgICAgICAgIHNpemVfdCBjb250ZW50TGVuZ3RoID0gYXRv
aShjb250ZW50TGVuZ3RoQmVnaW4gKyBzdHJsZW4oIkNvbnRlbnQtTGVuZ3RoOiAiKSk7CkBAIC0y
NDksMTIgKzI2OSwyMiBAQCB2b2lkIENvbm5lY3Rpb246OnJlY2VpdmVIVFRQUmVxdWVzdChDb21w
CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKGJ1ZmZlcikpOwotICAgIH0pLmdldCgpKTsK
KyAgICB9KTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpzZW5kKFN0cmluZyYmIG1lc3NhZ2UsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsKLSAg
ICBud19jb25uZWN0aW9uX3NlbmQobV9jb25uZWN0aW9uLmdldCgpLCBkYXRhRnJvbVN0cmluZyhX
VEZNb3ZlKG1lc3NhZ2UpKS5nZXQoKSwgTldfQ09OTkVDVElPTl9ERUZBVUxUX01FU1NBR0VfQ09O
VEVYVCwgdHJ1ZSwgbWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShud19lcnJvcl90IGVycm9yKSBtdXRhYmxlIHsKKyAgICBzZW5kKGRh
dGFGcm9tU3RyaW5nKFdURk1vdmUobWVzc2FnZSkpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6c2VuZChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Cit7
CisgICAgc2VuZChkYXRhRnJvbVZlY3RvcihXVEZNb3ZlKG1lc3NhZ2UpKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIENvbm5lY3Rpb246OnNlbmQoUmV0YWluUHRyPGRp
c3BhdGNoX2RhdGFfdD4mJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpIGNvbnN0Cit7CisgICAgbndfY29ubmVjdGlvbl9zZW5kKG1fY29ubmVj
dGlvbi5nZXQoKSwgbWVzc2FnZS5nZXQoKSwgTldfQ09OTkVDVElPTl9ERUZBVUxUX01FU1NBR0Vf
Q09OVEVYVCwgdHJ1ZSwgbWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShud19lcnJvcl90IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAg
QVNTRVJUKCFlcnJvcik7CiAgICAgICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0yNjYsNiArMjk2LDc5IEBAIHZvaWQgQ29ubmVj
dGlvbjo6dGVybWluYXRlKCkgY29uc3QKICAgICBud19jb25uZWN0aW9uX2NhbmNlbChtX2Nvbm5l
Y3Rpb24uZ2V0KCkpOwogfQogCit2b2lkIEgyOjpDb25uZWN0aW9uOjpzZW5kKEZyYW1lJiYgZnJh
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QK
K3sKKyAgICBhdXRvIGZyYW1lVHlwZSA9IGZyYW1lLnR5cGUoKTsKKyAgICBhdXRvIHNlbmRGcmFt
ZSA9IFt0bHNDb25uZWN0aW9uID0gbV90bHNDb25uZWN0aW9uLCBmcmFtZSA9IFdURk1vdmUoZnJh
bWUpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBt
dXRhYmxlIHsKKyAgICAgICAgLy8gaHR0cHM6Ly9odHRwMi5naXRodWIuaW8vaHR0cDItc3BlYy8j
cmZjLnNlY3Rpb24uNC4xCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBieXRlczsKKyAgICAgICAg
Y29uc3RleHByIHNpemVfdCBmcmFtZUhlYWRlckxlbmd0aCA9IDk7CisgICAgICAgIGJ5dGVzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoZnJhbWVIZWFkZXJMZW5ndGggKyBmcmFtZS5wYXlsb2FkKCku
c2l6ZSgpKTsKKyAgICAgICAgYnl0ZXMudW5jaGVja2VkQXBwZW5kKGZyYW1lLnBheWxvYWQoKS5z
aXplKCkgPj4gMTYpOworICAgICAgICBieXRlcy51bmNoZWNrZWRBcHBlbmQoZnJhbWUucGF5bG9h
ZCgpLnNpemUoKSA+PiA4KTsKKyAgICAgICAgYnl0ZXMudW5jaGVja2VkQXBwZW5kKGZyYW1lLnBh
eWxvYWQoKS5zaXplKCkgPj4gMCk7CisgICAgICAgIGJ5dGVzLnVuY2hlY2tlZEFwcGVuZChzdGF0
aWNfY2FzdDx1aW50OF90PihmcmFtZS50eXBlKCkpKTsKKyAgICAgICAgYnl0ZXMudW5jaGVja2Vk
QXBwZW5kKGZyYW1lLmZsYWdzKCkpOworICAgICAgICBieXRlcy51bmNoZWNrZWRBcHBlbmQoZnJh
bWUuc3RyZWFtSUQoKSA+PiAyNCk7CisgICAgICAgIGJ5dGVzLnVuY2hlY2tlZEFwcGVuZChmcmFt
ZS5zdHJlYW1JRCgpID4+IDE2KTsKKyAgICAgICAgYnl0ZXMudW5jaGVja2VkQXBwZW5kKGZyYW1l
LnN0cmVhbUlEKCkgPj4gOCk7CisgICAgICAgIGJ5dGVzLnVuY2hlY2tlZEFwcGVuZChmcmFtZS5z
dHJlYW1JRCgpID4+IDApOworICAgICAgICBieXRlcy5hcHBlbmRWZWN0b3IoZnJhbWUucGF5bG9h
ZCgpKTsKKyAgICAgICAgdGxzQ29ubmVjdGlvbi5zZW5kKFdURk1vdmUoYnl0ZXMpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfTsKKworICAgIGlmIChtX3NlbmRTZXJ2ZXJDb25u
ZWN0aW9uUHJlZmFjZSAmJiBmcmFtZVR5cGUgIT0gRnJhbWU6OlR5cGU6OlNldHRpbmdzKSB7Cisg
ICAgICAgIC8vIGh0dHBzOi8vaHR0cDIuZ2l0aHViLmlvL2h0dHAyLXNwZWMvI3JmYy5zZWN0aW9u
LjMuNQorICAgICAgICBtX3NlbmRTZXJ2ZXJDb25uZWN0aW9uUHJlZmFjZSA9IGZhbHNlOworICAg
ICAgICBzZW5kKEZyYW1lKEZyYW1lOjpUeXBlOjpTZXR0aW5ncywgMCwgMCwgeyB9KSwgV1RGTW92
ZShzZW5kRnJhbWUpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgc2VuZEZyYW1lKCk7Cit9CisKK3Zv
aWQgSDI6OkNvbm5lY3Rpb246OnJlY2VpdmUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFtZSYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3sKKyAgICBpZiAobV9leHBlY3RDbGllbnRD
b25uZWN0aW9uUHJlZmFjZSkgeworICAgICAgICAvLyBodHRwczovL2h0dHAyLmdpdGh1Yi5pby9o
dHRwMi1zcGVjLyNyZmMuc2VjdGlvbi4zLjUKKyAgICAgICAgY29uc3RleHByIHNpemVfdCBjbGll
bnRDb25uZWN0aW9uUHJlZmFjZUxlbmd0aCA9IDI0OworICAgICAgICBpZiAobV9yZWNlaXZlQnVm
ZmVyLnNpemUoKSA8IGNsaWVudENvbm5lY3Rpb25QcmVmYWNlTGVuZ3RoKSB7CisgICAgICAgICAg
ICBtX3Rsc0Nvbm5lY3Rpb24ucmVjZWl2ZUJ5dGVzKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildIChWZWN0b3I8dWludDhfdD4mJiBieXRlcykgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAg
bV9yZWNlaXZlQnVmZmVyLmFwcGVuZFZlY3RvcihieXRlcyk7CisgICAgICAgICAgICAgICAgcmVj
ZWl2ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoIW1lbWNtcChtX3JlY2Vp
dmVCdWZmZXIuZGF0YSgpLCAiUFJJICogSFRUUC8yLjBcclxuXHJcblNNXHJcblxyXG4iLCBjbGll
bnRDb25uZWN0aW9uUHJlZmFjZUxlbmd0aCkpOworICAgICAgICBtX3JlY2VpdmVCdWZmZXIucmVt
b3ZlKDAsIGNsaWVudENvbm5lY3Rpb25QcmVmYWNlTGVuZ3RoKTsKKyAgICAgICAgbV9leHBlY3RD
bGllbnRDb25uZWN0aW9uUHJlZmFjZSA9IGZhbHNlOworICAgICAgICByZXR1cm4gcmVjZWl2ZShX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfQorCisgICAgLy8gaHR0cHM6Ly9odHRw
Mi5naXRodWIuaW8vaHR0cDItc3BlYy8jcmZjLnNlY3Rpb24uNC4xCisgICAgY29uc3RleHByIHNp
emVfdCBmcmFtZUhlYWRlckxlbmd0aCA9IDk7CisgICAgaWYgKG1fcmVjZWl2ZUJ1ZmZlci5zaXpl
KCkgPj0gZnJhbWVIZWFkZXJMZW5ndGgpIHsKKyAgICAgICAgdWludDMyX3QgcGF5bG9hZExlbmd0
aCA9IChzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9yZWNlaXZlQnVmZmVyWzBdKSA8PCAxNikKKyAg
ICAgICAgICAgICsgKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3JlY2VpdmVCdWZmZXJbMV0pIDw8
IDgpCisgICAgICAgICAgICArIChzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9yZWNlaXZlQnVmZmVy
WzJdKSA8PCAwKTsKKyAgICAgICAgaWYgKG1fcmVjZWl2ZUJ1ZmZlci5zaXplKCkgPj0gZnJhbWVI
ZWFkZXJMZW5ndGggKyBwYXlsb2FkTGVuZ3RoKSB7CisgICAgICAgICAgICBhdXRvIHR5cGUgPSBz
dGF0aWNfY2FzdDxGcmFtZTo6VHlwZT4obV9yZWNlaXZlQnVmZmVyWzNdKTsKKyAgICAgICAgICAg
IGF1dG8gZmxhZ3MgPSBtX3JlY2VpdmVCdWZmZXJbNF07CisgICAgICAgICAgICBhdXRvIHN0cmVh
bUlEID0gKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3JlY2VpdmVCdWZmZXJbNV0pIDw8IDI0KQor
ICAgICAgICAgICAgICAgICsgKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3JlY2VpdmVCdWZmZXJb
Nl0pIDw8IDE2KQorICAgICAgICAgICAgICAgICsgKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3Jl
Y2VpdmVCdWZmZXJbN10pIDw8IDgpCisgICAgICAgICAgICAgICAgKyAoc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KG1fcmVjZWl2ZUJ1ZmZlcls4XSkgPDwgMCk7CisgICAgICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gcGF5bG9hZDsKKyAgICAgICAgICAgIHBheWxvYWQuYXBwZW5kKG1fcmVjZWl2ZUJ1ZmZl
ci5kYXRhKCkgKyBmcmFtZUhlYWRlckxlbmd0aCwgcGF5bG9hZExlbmd0aCk7CisgICAgICAgICAg
ICBtX3JlY2VpdmVCdWZmZXIucmVtb3ZlKDAsIGZyYW1lSGVhZGVyTGVuZ3RoICsgcGF5bG9hZExl
bmd0aCk7CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoRnJhbWUodHlwZSwg
ZmxhZ3MsIHN0cmVhbUlELCBXVEZNb3ZlKHBheWxvYWQpKSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgCisgICAgbV90bHNDb25uZWN0aW9uLnJlY2VpdmVCeXRlcyhbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoVmVjdG9yPHVpbnQ4X3Q+JiYgYnl0ZXMpIG11dGFibGUgeworICAgICAgICBt
X3JlY2VpdmVCdWZmZXIuYXBwZW5kVmVjdG9yKGJ5dGVzKTsKKyAgICAgICAgcmVjZWl2ZShXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkKIAogI2VuZGlmIC8vIEhBVkUoTkVUV09SS19GUkFNRVdPUkspCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403429</attachid>
            <date>2020-07-02 18:17:56 -0700</date>
            <delta_ts>2020-07-02 19:01:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213913-20200702191755.patch</filename>
            <type>text/plain</type>
            <size>20303</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjM3MDgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA3LTAyICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHRlc3RpbmcgaW5mcmFzdHJ1
Y3R1cmUgYW5kIFNQSSBkZWNsYXJhdGlvbiBmb3IgSFRUUC8yIHBpbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzkxMworCisgICAgICAgIFJldmll
d2VkIGJ5IEplciBOb2JsZS4KKworICAgICAgICBUaGlzIGlzIHdvcmsgdG93YXJkcyByZGFyOi8v
cHJvYmxlbS82NDQ5NTgyNworCisgICAgICAgICogd3RmL1BsYXRmb3JtSGF2ZS5oOgorCiAyMDIw
LTA2LTI5ICBUZXRzdWhhcnUgT2h6ZWtpICA8dGV0c3VoYXJ1Lm9oemVraUBnbWFpbC5jb20+CiAK
ICAgICAgICAgUmVtb3ZlIEVOQUJMRV9TVFJFQU1TX0FQSSBjb21waWxhdGlvbiBmbGFnCkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUhhdmUuaAkocmV2aXNpb24gMjYzNzA1KQorKysgU291cmNlL1dURi93dGYv
UGxhdGZvcm1IYXZlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4MCw2ICszODAsMTQgQEAKICNkZWZp
bmUgSEFWRV9BQ0NFU1NJQklMSVRZX0JVTkRMRVNfUEFUSCAxCiAjZW5kaWYKIAorI2lmIChQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNjAwKSBc
CisgICAgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTQwMDAwKSBcCisgICAgfHwgKFBMQVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gNzAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oQVBQTEVU
VikgJiYgX19UVl9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApIFwKKyAgICB8fCAo
UExBVEZPUk0oTUFDQ0FUQUxZU1QpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDE0MDAwMCkKKyNkZWZpbmUgSEFWRV9QUkVDT05ORUNUX1BJTkcgMQorI2VuZGlmCisKICNp
ZiBQTEFURk9STShDT0NPQSkgJiYgIShQTEFURk9STShNQUMpICYmICEoX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDAgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExP
V0VEID49IDEwMTQwNCkpCiAjZGVmaW5lIEhBVkVfQ0ZORVRXT1JLX09WRVJSSURFX1NFU1NJT05f
Q09PS0lFX0FDQ0VQVF9QT0xJQ1kgMQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2MzcwNSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0wNy0wMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCB0ZXN0aW5nIGluZnJhc3RydWN0
dXJlIGFuZCBTUEkgZGVjbGFyYXRpb24gZm9yIEhUVFAvMiBwaW5nCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM5MTMKKworICAgICAgICBSZXZpZXdl
ZCBieSBKZXIgTm9ibGUuCisKKyAgICAgICAgKiBwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oOgor
CiAyMDIwLTA2LTI5ICBUZXRzdWhhcnUgT2h6ZWtpICA8dGV0c3VoYXJ1Lm9oemVraUBnbWFpbC5j
b20+CiAKICAgICAgICAgUmVtb3ZlIEVOQUJMRV9TVFJFQU1TX0FQSSBjb21waWxhdGlvbiBmbGFn
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAko
cmV2aXNpb24gMjYzNzA1KQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3
b3JrU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDE3IEBAIFdURl9FWFRFUk5fQ19F
TkQKIAogI2Vsc2UgLy8gIVBMQVRGT1JNKFdJTikgJiYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREsp
CiAKKyNpZiBIQVZFKFBSRUNPTk5FQ1RfUElORykKK0BpbnRlcmZhY2UgX05TSFRUUENvbm5lY3Rp
b25JbmZvIDogTlNPYmplY3QKKy0gKHZvaWQpc2VuZFBpbmdXaXRoUmVjZWl2ZUhhbmRsZXI6KHZv
aWQgKF4pKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IsIE5TVGltZUludGVydmFsIGludGVydmFs
KSlwb25nSGFuZGxlcjsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaXNWYWxpZDsKK0BlbmQK
KworQGludGVyZmFjZSBOU1VSTFNlc3Npb25UYXNrIChIVFRQQ29ubmVjdGlvbkluZm8pCistICh2
b2lkKWdldFVuZGVybHlpbmdIVFRQQ29ubmVjdGlvbkluZm9XaXRoQ29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKF9OU0hUVFBDb25uZWN0aW9uSW5mbyAqY29ubmVjdGlvbkluZm8pKWNvbXBsZXRp
b25IYW5kbGVyOworQGVuZAorI2VuZGlmIC8vIEhBVkUoUFJFQ09OTkVDVF9QSU5HKQorCiAjaWYg
SEFWRShMT0dHSU5HX1BSSVZBQ1lfTEVWRUwpCiB0eXBlZGVmIGVudW0gewogICAgIG53X2NvbnRl
eHRfcHJpdmFjeV9sZXZlbF9wdWJsaWMgPSAxLApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjYzODc3KQorKysgVG9vbHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMjAtMDctMDIgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgdGVz
dGluZyBpbmZyYXN0cnVjdHVyZSBhbmQgU1BJIGRlY2xhcmF0aW9uIGZvciBIVFRQLzIgcGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzOTEzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgSmVyIE5vYmxlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9QcmVjb25uZWN0Lm1tOgorICAgICAgICAoLVtTZXNzaW9uRGVs
ZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZFJlY2VpdmVDaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRs
ZXI6XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpwaW5nUG9uZyk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2
ZXIuaDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkgyOjpGcmFtZTo6RnJhbWUpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6SDI6OkZyYW1lOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OkgyOjpGcmFtZTo6ZmxhZ3MgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6SDI6OkZyYW1lOjpzdHJlYW1JRCBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpI
Mjo6RnJhbWU6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SDI6OkNv
bm5lY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIMjo6Q29ubmVjdGlv
bjo6Q29ubmVjdGlvbik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVy
Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6bGlzdGVuZXJQYXJhbWV0
ZXJzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRhdGFGcm9tVmVjdG9yKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OnZlY3RvckZyb21EYXRhKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXI6OnJlcXVlc3QgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Q29u
bmVjdGlvbjo6cmVjZWl2ZUJ5dGVzIGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkNv
bm5lY3Rpb246OnJlY2VpdmVIVFRQUmVxdWVzdCBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpDb25uZWN0aW9uOjpzZW5kIGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Okgy
OjpDb25uZWN0aW9uOjpzZW5kIGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkgyOjpD
b25uZWN0aW9uOjpyZWNlaXZlIGNvbnN0KToKKwogMjAyMC0wNy0wMiAgS2F0ZSBDaGVuZXkgIDxr
YXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBDdXN0b20gVVJMIHNjaGVtZXMg
c2hvdWxkIGJlIHRyZWF0ZWQgYXMgYXBwLWJvdW5kCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1ByZWNvbm5lY3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QcmVjb25uZWN0Lm1tCShyZXZpc2lvbiAyNjM3
MDUpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1ByZWNvbm5lY3Qu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDIxIEBACiAjaW1wb3J0ICJUZXN0TmF2aWdh
dGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJVdGlsaXRpZXMuaCIKICNpbXBvcnQgPFdlYktpdC9X
S1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgog
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCisjaWYgSEFWRShQUkVDT05ORUNUX1BJTkcpCitA
aW50ZXJmYWNlIFNlc3Npb25EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTFNlc3Npb25EYXRhRGVs
ZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBTZXNzaW9uRGVsZWdhdGUKKy0gKHZvaWQp
VVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiB0YXNrOihOU1VSTFNlc3Npb25UYXNr
ICopdGFzayBkaWRSZWNlaXZlQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25BdXRo
Q2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVu
dGlhbCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNl
c3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50
aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOworfQor
QGVuZAorI2VuZGlmCisKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVChQcmVjb25u
ZWN0LCBIVFRQKQpAQCAtOTAsNiArMTAzLDc2IEBAIFRFU1QoUHJlY29ubmVjdCwgSFRUUFMpCiAK
ICNlbmRpZgogCisjaWYgSEFWRShQUkVDT05ORUNUX1BJTkcpCitzdGF0aWMgdm9pZCBwaW5nUG9u
ZyhSZWY8SDI6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgc2l6ZV90KiBoZWFkZXJzQ291bnQp
Cit7CisgICAgY29ubmVjdGlvbi0+cmVjZWl2ZShbY29ubmVjdGlvbiwgaGVhZGVyc0NvdW50XSAo
SDI6OkZyYW1lJiYgZnJhbWUpIG11dGFibGUgeworICAgICAgICBzd2l0Y2ggKGZyYW1lLnR5cGUo
KSkgeworICAgICAgICBjYXNlIEgyOjpGcmFtZTo6VHlwZTo6SGVhZGVyczoKKyAgICAgICAgICAg
ICsrKmhlYWRlcnNDb3VudDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEgyOjpG
cmFtZTo6VHlwZTo6U2V0dGluZ3M6CisgICAgICAgIGNhc2UgSDI6OkZyYW1lOjpUeXBlOjpXaW5k
b3dVcGRhdGU6CisgICAgICAgICAgICAvLyBUaGVzZSBmcmFtZSB0eXBlcyBhcmUgb2sgZm9yIGEg
cHJlY29ubmVjdCB0YXNrLgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSDI6OkZy
YW1lOjpUeXBlOjpQaW5nOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIGh0dHBz
Oi8vaHR0cDIuZ2l0aHViLmlvL2h0dHAyLXNwZWMvI3JmYy5zZWN0aW9uLjYuNworICAgICAgICAg
ICAgICAgIGNvbnN0ZXhwciB1aW50OF90IGFjayA9IDB4MTsKKyAgICAgICAgICAgICAgICBjb25u
ZWN0aW9uLT5zZW5kKEgyOjpGcmFtZShIMjo6RnJhbWU6OlR5cGU6OlBpbmcsIGFjaywgZnJhbWUu
c3RyZWFtSUQoKSwgZnJhbWUucGF5bG9hZCgpKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8vIElmIGFueXRoaW5nIGVs
c2UgaXMgc2VudCBieSB0aGUgY2xpZW50LCBwcmVjb25uZWN0IGlzIGRvaW5nIHRvbyBtdWNoLgor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBwaW5nUG9uZyhXVEZNb3ZlKGNvbm5lY3Rpb24pLCBoZWFkZXJzQ291
bnQpOworICAgIH0pOworfQorCisvLyBUaGlzIHNob3VsZCByZW1haW4gZGlzYWJsZWQgdW50aWwg
cmRhcjovL3Byb2JsZW0vNjUwNTU5MzAgaXMgaW50ZWdyYXRlZCBhbmQgYm90cyBhcmUgdXBkYXRl
ZAorVEVTVChQcmVjb25uZWN0LCBESVNBQkxFRF9IMlBpbmcpCit7CisgICAgc2l6ZV90IGhlYWRl
cnNDb3VudCA9IDA7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoW2hlYWRlcnNDb3VudCA9ICZoZWFk
ZXJzQ291bnRdIChDb25uZWN0aW9uIHRsc0Nvbm5lY3Rpb24pIHsKKyAgICAgICAgcGluZ1Bvbmco
SDI6OkNvbm5lY3Rpb246OmNyZWF0ZSh0bHNDb25uZWN0aW9uKSwgaGVhZGVyc0NvdW50KTsKKyAg
ICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cDIpOworICAgIAorICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtTZXNzaW9uRGVsZWdhdGUgbmV3XSk7CisgICAgTlNVUkxTZXNzaW9uICpz
ZXNzaW9uID0gW05TVVJMU2Vzc2lvbiBzZXNzaW9uV2l0aENvbmZpZ3VyYXRpb246W05TVVJMU2Vz
c2lvbkNvbmZpZ3VyYXRpb24gZXBoZW1lcmFsU2Vzc2lvbkNvbmZpZ3VyYXRpb25dIGRlbGVnYXRl
OmRlbGVnYXRlLmdldCgpIGRlbGVnYXRlUXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVl
XV07CisgICAgTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2sgPSBbc2Vzc2lvbiBkYXRhVGFza1dp
dGhSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIHRhc2suX3ByZWNvbm5lY3QgPSBZRVM7
CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKworICAgIFt0YXNrIGdldFVuZGVybHlp
bmdIVFRQQ29ubmVjdGlvbkluZm9XaXRoQ29tcGxldGlvbkhhbmRsZXI6XihfTlNIVFRQQ29ubmVj
dGlvbkluZm8gKmNvbm5lY3Rpb25JbmZvKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGNvbm5lY3Rp
b25JbmZvLmlzVmFsaWQpOworICAgICAgICBbY29ubmVjdGlvbkluZm8gc2VuZFBpbmdXaXRoUmVj
ZWl2ZUhhbmRsZXI6XihOU0Vycm9yICplcnJvciwgTlNUaW1lSW50ZXJ2YWwgaW50ZXJ2YWwpIHsK
KyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShlcnJvcik7CisgICAgICAgICAgICBFWFBFQ1RfR1Qo
aW50ZXJ2YWwsIDAuMCk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfV07Cisg
ICAgfV07CisgICAgW3Rhc2sgcmVzdW1lXTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworICAgIAor
ICAgIC8vIE1ha2Ugc3VyZSB0aGUgY2xpZW50IGRvZXNuJ3Qgc2VuZCBhbnl0aGluZyBleGNlcHQg
U2V0dGluZ3MsIFdpbmRvd1VwZGF0ZSwgYW5kIFBpbmcuCisgICAgLy8gSWYgSGVhZGVycyBvciBE
YXRhIHdlcmUgc2VudCwgdGhlbiB0aGUgcHJlY29ubmVjdCB3b3VsZG4ndCBiZSBwcmVjb25uZWN0
LgorICAgIHVzbGVlcCgxMDAwMDApOworICAgIFV0aWw6OnNwaW5SdW5Mb29wKDEwMCk7CisgICAg
RVhQRUNUX0VRKGhlYWRlcnNDb3VudCwgMHUpOworCisgICAgTlNVUkxTZXNzaW9uRGF0YVRhc2sg
KnRhc2syID0gW3Nlc3Npb24gZGF0YVRhc2tXaXRoUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsK
KyAgICBbdGFzazIgcmVzdW1lXTsKKyAgICB3aGlsZSAoIWhlYWRlcnNDb3VudCkKKyAgICAgICAg
VXRpbDo6c3BpblJ1bkxvb3AoKTsKKyAgICBFWFBFQ1RfRVEoaGVhZGVyc0NvdW50LCAxdSk7Cisg
ICAgdXNsZWVwKDEwMDAwMCk7CisgICAgVXRpbDo6c3BpblJ1bkxvb3AoMTAwKTsKKyAgICBFWFBF
Q1RfRVEoaGVhZGVyc0NvdW50LCAxdSk7Cit9CisjZW5kaWYgLy8gSEFWRShQUkVDT05ORUNUX1BJ
TkcpCisKIH0KIAogI2VuZGlmCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBT
ZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2
ZXIuaAkocmV2aXNpb24gMjYzNzA1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQ
U2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgSFRUUFNlcnZl
ciB7CiBwdWJsaWM6CiAgICAgc3RydWN0IEhUVFBSZXNwb25zZTsKICAgICBzdHJ1Y3QgUmVxdWVz
dERhdGE7Ci0gICAgZW51bSBjbGFzcyBQcm90b2NvbCA6IHVpbnQ4X3QgeyBIdHRwLCBIdHRwcywg
SHR0cHNXaXRoTGVnYWN5VExTIH07CisgICAgZW51bSBjbGFzcyBQcm90b2NvbCA6IHVpbnQ4X3Qg
eyBIdHRwLCBIdHRwcywgSHR0cHNXaXRoTGVnYWN5VExTLCBIdHRwMiB9OwogICAgIHVzaW5nIENl
cnRpZmljYXRlVmVyaWZpZXIgPSBGdW5jdGlvbjx2b2lkKHNlY19wcm90b2NvbF9tZXRhZGF0YV90
LCBzZWNfdHJ1c3RfdCwgc2VjX3Byb3RvY29sX3ZlcmlmeV9jb21wbGV0ZV90KT47CiAKICAgICBI
VFRQU2VydmVyKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBIVFRQUmVz
cG9uc2U+PiwgUHJvdG9jb2wgPSBQcm90b2NvbDo6SHR0cCwgQ2VydGlmaWNhdGVWZXJpZmllciYm
ID0gbnVsbHB0cik7CkBAIC02Nyw2ICs2Nyw5IEBAIHByaXZhdGU6CiBjbGFzcyBDb25uZWN0aW9u
IHsKIHB1YmxpYzoKICAgICB2b2lkIHNlbmQoU3RyaW5nJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiA9IG51bGxwdHIpIGNvbnN0OworICAgIHZvaWQgc2VuZChWZWN0b3I8dWludDhfdD4m
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmID0gbnVsbHB0cikgY29uc3Q7CisgICAgdm9p
ZCBzZW5kKFJldGFpblB0cjxkaXNwYXRjaF9kYXRhX3Q+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiA9IG51bGxwdHIpIGNvbnN0OworICAgIHZvaWQgcmVjZWl2ZUJ5dGVzKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYmKSBjb25zdDsKICAgICB2b2lkIHJl
Y2VpdmVIVFRQUmVxdWVzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxjaGFyPiYmKT4m
JiwgVmVjdG9yPGNoYXI+JiYgYnVmZmVyID0geyB9KSBjb25zdDsKICAgICB2b2lkIHRlcm1pbmF0
ZSgpIGNvbnN0OwogCkBAIC0xMDUsNiArMTA4LDYxIEBAIHN0cnVjdCBIVFRQU2VydmVyOjpIVFRQ
UmVzcG9uc2UgewogICAgIFRlcm1pbmF0ZUNvbm5lY3Rpb24gdGVybWluYXRlQ29ubmVjdGlvbiB7
IFRlcm1pbmF0ZUNvbm5lY3Rpb246Ok5vIH07CiB9OwogCituYW1lc3BhY2UgSDIgeworCisvLyBo
dHRwczovL2h0dHAyLmdpdGh1Yi5pby9odHRwMi1zcGVjLyNyZmMuc2VjdGlvbi40LjEKK2NsYXNz
IEZyYW1lIHsKK3B1YmxpYzoKKworICAgIC8vIGh0dHBzOi8vaHR0cDIuZ2l0aHViLmlvL2h0dHAy
LXNwZWMvI3JmYy5zZWN0aW9uLjYKKyAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsKKyAg
ICAgICAgRGF0YSA9IDB4MCwKKyAgICAgICAgSGVhZGVycyA9IDB4MSwKKyAgICAgICAgUHJpb3Jp
dHkgPSAweDIsCisgICAgICAgIFJTVFN0cmVhbSA9IDB4MywKKyAgICAgICAgU2V0dGluZ3MgPSAw
eDQsCisgICAgICAgIFB1c2hQcm9taXNlID0gMHg1LAorICAgICAgICBQaW5nID0gMHg2LAorICAg
ICAgICBHb0F3YXkgPSAweDcsCisgICAgICAgIFdpbmRvd1VwZGF0ZSA9IDB4OCwKKyAgICAgICAg
Q29udGludWF0aW9uID0gMHg5LAorICAgIH07CisKKyAgICBGcmFtZShUeXBlIHR5cGUsIHVpbnQ4
X3QgZmxhZ3MsIHVpbnQzMl90IHN0cmVhbUlELCBWZWN0b3I8dWludDhfdD4gcGF5bG9hZCkKKyAg
ICAgICAgOiBtX3R5cGUodHlwZSkKKyAgICAgICAgLCBtX2ZsYWdzKGZsYWdzKQorICAgICAgICAs
IG1fc3RyZWFtSUQoc3RyZWFtSUQpCisgICAgICAgICwgbV9wYXlsb2FkKFdURk1vdmUocGF5bG9h
ZCkpIHsgfQorCisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAg
dWludDhfdCBmbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0KKyAgICB1aW50MzJfdCBz
dHJlYW1JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyZWFtSUQ7IH0KKyAgICBjb25zdCBWZWN0b3I8
dWludDhfdD4mIHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQ7IH0KKworcHJpdmF0
ZToKKyAgICBUeXBlIG1fdHlwZTsKKyAgICB1aW50OF90IG1fZmxhZ3M7CisgICAgdWludDMyX3Qg
bV9zdHJlYW1JRDsKKyAgICBWZWN0b3I8dWludDhfdD4gbV9wYXlsb2FkOworfTsKKworY2xhc3Mg
Q29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPENvbm5lY3Rpb24+IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmPENvbm5lY3Rpb24+IGNyZWF0ZShUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9u
IHRsc0Nvbm5lY3Rpb24pIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29ubmVjdGlvbih0bHNDb25u
ZWN0aW9uKSk7IH0KKyAgICB2b2lkIHNlbmQoRnJhbWUmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmID0gbnVsbHB0cikgY29uc3Q7CisgICAgdm9pZCByZWNlaXZlKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRnJhbWUmJik+JiYpIGNvbnN0OworcHJpdmF0ZToKKyAgICBDb25uZWN0aW9uKFRl
c3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gdGxzQ29ubmVjdGlvbikKKyAgICAgICAgOiBtX3Rsc0Nv
bm5lY3Rpb24odGxzQ29ubmVjdGlvbikgeyB9CisKKyAgICBUZXN0V2ViS2l0QVBJOjpDb25uZWN0
aW9uIG1fdGxzQ29ubmVjdGlvbjsKKyAgICBtdXRhYmxlIGJvb2wgbV9leHBlY3RDbGllbnRDb25u
ZWN0aW9uUHJlZmFjZSB7IHRydWUgfTsKKyAgICBtdXRhYmxlIGJvb2wgbV9zZW5kU2VydmVyQ29u
bmVjdGlvblByZWZhY2UgeyB0cnVlIH07CisgICAgbXV0YWJsZSBWZWN0b3I8dWludDhfdD4gbV9y
ZWNlaXZlQnVmZmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgSDIKKwogfSAvLyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSQogCiAjZW5kaWYgLy8gSEFWRShORVRXT1JLX0ZSQU1FV09SSykKSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0JKHJldmlzaW9uIDI2MzcwNSkK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQkod29ya2luZyBjb3B5
KQpAQCAtNjYsNiArNjYsOCBAQCBSZXRhaW5QdHI8bndfcGFyYW1ldGVyc190PiBIVFRQU2VydmVy
OjpsCiAgICAgICAgICAgICAgICAgdmVyaWZpZXIobWV0YWRhdGEsIHRydXN0LCBjb21wbGV0aW9u
KTsKICAgICAgICAgICAgIH0pLmdldCgpLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKICAg
ICAgICAgfQorICAgICAgICBpZiAocHJvdG9jb2wgPT0gUHJvdG9jb2w6Okh0dHAyKQorICAgICAg
ICAgICAgc2VjX3Byb3RvY29sX29wdGlvbnNfYWRkX3Rsc19hcHBsaWNhdGlvbl9wcm90b2NvbChv
cHRpb25zLmdldCgpLCAiaDIiKTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTShwcm90b2Nv
bE9wdGlvbnMpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHByb3RvY29sLCBwcm90b2NvbCAhPSBQ
cm90b2NvbDo6SHR0cHNXaXRoTGVnYWN5VExTKTsKQEAgLTE2NSw5ICsxNjcsMTkgQEAgc3RhdGlj
IFJldGFpblB0cjxkaXNwYXRjaF9kYXRhX3Q+IGRhdGFGcgogICAgIH0pKTsKIH0KIAotc3RhdGlj
IFZlY3RvcjxjaGFyPiB2ZWN0b3JGcm9tRGF0YShkaXNwYXRjaF9kYXRhX3QgY29udGVudCkKK3N0
YXRpYyBSZXRhaW5QdHI8ZGlzcGF0Y2hfZGF0YV90PiBkYXRhRnJvbVZlY3RvcihWZWN0b3I8dWlu
dDhfdD4mJiB2KQogewotICAgIF9fYmxvY2sgVmVjdG9yPGNoYXI+IHJlcXVlc3Q7CisgICAgYXV0
byBidWZmZXJTaXplID0gdi5zaXplKCk7CisgICAgYXV0byByYXdQb2ludGVyID0gdi5yZWxlYXNl
QnVmZmVyKCkubGVha1B0cigpOworICAgIHJldHVybiBhZG9wdE5TKGRpc3BhdGNoX2RhdGFfY3Jl
YXRlKHJhd1BvaW50ZXIsIGJ1ZmZlclNpemUsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57
CisgICAgICAgIGZhc3RGcmVlKHJhd1BvaW50ZXIpOworICAgIH0pKTsKK30KKworc3RhdGljIFZl
Y3Rvcjx1aW50OF90PiB2ZWN0b3JGcm9tRGF0YShkaXNwYXRjaF9kYXRhX3QgY29udGVudCkKK3sK
KyAgICBBU1NFUlQoY29udGVudCk7CisgICAgX19ibG9jayBWZWN0b3I8dWludDhfdD4gcmVxdWVz
dDsKICAgICBkaXNwYXRjaF9kYXRhX2FwcGx5KGNvbnRlbnQsIF5ib29sKGRpc3BhdGNoX2RhdGFf
dCwgc2l6ZV90LCBjb25zdCB2b2lkKiBidWZmZXIsIHNpemVfdCBzaXplKSB7CiAgICAgICAgIHJl
cXVlc3QuYXBwZW5kKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihidWZmZXIpLCBzaXplKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMjcsMTggKzIzOSwyNiBAQCAgICAgc3dpdGNoIChtX3By
b3RvY29sKSB7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHJvdG9jb2w6Okh0dHBzOgogICAg
IGNhc2UgUHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUzoKKyAgICBjYXNlIFByb3RvY29sOjpI
dHRwMjoKICAgICAgICAgZm9ybWF0ID0gQCJodHRwczovLzEyNy4wLjAuMTolZCVzIjsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OmZvcm1hdCwg
cG9ydCgpLCBwYXRoLnV0ZjgoKS5kYXRhKCldXV07CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6cmVj
ZWl2ZUhUVFBSZXF1ZXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPGNoYXI+JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyLCBWZWN0b3I8Y2hhcj4mJiBidWZmZXIpIGNvbnN0Cit2b2lkIENv
bm5lY3Rpb246OnJlY2VpdmVCeXRlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50
OF90PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsKLSAgICBud19jb25uZWN0aW9u
X3JlY2VpdmUobV9jb25uZWN0aW9uLmdldCgpLCAxLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQz
Ml90Pjo6bWF4KCksIG1ha2VCbG9ja1B0cihbY29ubmVjdGlvbiA9ICp0aGlzLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBidWZmZXIgPSBXVEZNb3ZlKGJ1
ZmZlcildKGRpc3BhdGNoX2RhdGFfdCBjb250ZW50LCBud19jb250ZW50X2NvbnRleHRfdCwgYm9v
bCwgbndfZXJyb3JfdCBlcnJvcikgbXV0YWJsZSB7CisgICAgbndfY29ubmVjdGlvbl9yZWNlaXZl
KG1fY29ubmVjdGlvbi5nZXQoKSwgMSwgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1h
eCgpLCBtYWtlQmxvY2tQdHIoW2Nvbm5lY3Rpb24gPSAqdGhpcywgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oZGlzcGF0Y2hfZGF0YV90IGNvbnRlbnQsIG53
X2NvbnRlbnRfY29udGV4dF90LCBib29sLCBud19lcnJvcl90IGVycm9yKSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKGVycm9yIHx8ICFjb250ZW50KQogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKHsgfSk7Ci0gICAgICAgIGJ1ZmZlci5hcHBlbmRWZWN0b3IodmVjdG9yRnJvbURh
dGEoY29udGVudCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih2ZWN0b3JGcm9tRGF0YShj
b250ZW50KSk7CisgICAgfSkuZ2V0KCkpOworfQorCit2b2lkIENvbm5lY3Rpb246OnJlY2VpdmVI
VFRQUmVxdWVzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxjaGFyPiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlciwgVmVjdG9yPGNoYXI+JiYgYnVmZmVyKSBjb25zdAoreworICAgIHJlY2Vp
dmVCeXRlcyhbY29ubmVjdGlvbiA9ICp0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildKFZlY3Rvcjx1aW50
OF90PiYmIGJ5dGVzKSBtdXRhYmxlIHsKKyAgICAgICAgYnVmZmVyLmFwcGVuZFZlY3RvcihXVEZN
b3ZlKGJ5dGVzKSk7CiAgICAgICAgIGlmIChhdXRvKiBkb3VibGVOZXdsaW5lID0gc3RybnN0cihi
dWZmZXIuZGF0YSgpLCAiXHJcblxyXG4iLCBidWZmZXIuc2l6ZSgpKSkgewogICAgICAgICAgICAg
aWYgKGF1dG8qIGNvbnRlbnRMZW5ndGhCZWdpbiA9IHN0cm5zdHIoYnVmZmVyLmRhdGEoKSwgIkNv
bnRlbnQtTGVuZ3RoIiwgYnVmZmVyLnNpemUoKSkpIHsKICAgICAgICAgICAgICAgICBzaXplX3Qg
Y29udGVudExlbmd0aCA9IGF0b2koY29udGVudExlbmd0aEJlZ2luICsgc3RybGVuKCJDb250ZW50
LUxlbmd0aDogIikpOwpAQCAtMjQ5LDEyICsyNjksMjIgQEAgdm9pZCBDb25uZWN0aW9uOjpyZWNl
aXZlSFRUUFJlcXVlc3QoQ29tcAogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShidWZmZXIpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2Vp
dmVIVFRQUmVxdWVzdChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgV1RGTW92ZShidWZmZXIp
KTsKLSAgICB9KS5nZXQoKSk7CisgICAgfSk7CiB9CiAKIHZvaWQgQ29ubmVjdGlvbjo6c2VuZChT
dHJpbmcmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpIGNvbnN0CiB7Ci0gICAgbndfY29ubmVjdGlvbl9zZW5kKG1fY29ubmVjdGlvbi5nZXQo
KSwgZGF0YUZyb21TdHJpbmcoV1RGTW92ZShtZXNzYWdlKSkuZ2V0KCksIE5XX0NPTk5FQ1RJT05f
REVGQVVMVF9NRVNTQUdFX0NPTlRFWFQsIHRydWUsIG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0obndfZXJyb3JfdCBlcnJvcikgbXV0
YWJsZSB7CisgICAgc2VuZChkYXRhRnJvbVN0cmluZyhXVEZNb3ZlKG1lc3NhZ2UpKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIENvbm5lY3Rpb246OnNlbmQoVmVjdG9y
PHVpbnQ4X3Q+JiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBjb25zdAoreworICAgIHNlbmQoZGF0YUZyb21WZWN0b3IoV1RGTW92ZShtZXNz
YWdlKSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBDb25uZWN0aW9u
OjpzZW5kKFJldGFpblB0cjxkaXNwYXRjaF9kYXRhX3Q+JiYgbWVzc2FnZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAoreworICAgIG53X2Nvbm5l
Y3Rpb25fc2VuZChtX2Nvbm5lY3Rpb24uZ2V0KCksIG1lc3NhZ2UuZ2V0KCksIE5XX0NPTk5FQ1RJ
T05fREVGQVVMVF9NRVNTQUdFX0NPTlRFWFQsIHRydWUsIG1ha2VCbG9ja1B0cihbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0obndfZXJyb3JfdCBlcnJvcikg
bXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCghZXJyb3IpOwogICAgICAgICBpZiAoY29tcGxldGlv
bkhhbmRsZXIpCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMjY2LDYgKzI5
Niw3OSBAQCB2b2lkIENvbm5lY3Rpb246OnRlcm1pbmF0ZSgpIGNvbnN0CiAgICAgbndfY29ubmVj
dGlvbl9jYW5jZWwobV9jb25uZWN0aW9uLmdldCgpKTsKIH0KIAordm9pZCBIMjo6Q29ubmVjdGlv
bjo6c2VuZChGcmFtZSYmIGZyYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGNvbnN0Cit7CisgICAgYXV0byBmcmFtZVR5cGUgPSBmcmFtZS50eXBlKCk7
CisgICAgYXV0byBzZW5kRnJhbWUgPSBbdGxzQ29ubmVjdGlvbiA9IG1fdGxzQ29ubmVjdGlvbiwg
ZnJhbWUgPSBXVEZNb3ZlKGZyYW1lKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIC8vIGh0dHBzOi8vaHR0cDIuZ2l0
aHViLmlvL2h0dHAyLXNwZWMvI3JmYy5zZWN0aW9uLjQuMQorICAgICAgICBWZWN0b3I8dWludDhf
dD4gYnl0ZXM7CisgICAgICAgIGNvbnN0ZXhwciBzaXplX3QgZnJhbWVIZWFkZXJMZW5ndGggPSA5
OworICAgICAgICBieXRlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZyYW1lSGVhZGVyTGVuZ3Ro
ICsgZnJhbWUucGF5bG9hZCgpLnNpemUoKSk7CisgICAgICAgIGJ5dGVzLnVuY2hlY2tlZEFwcGVu
ZChmcmFtZS5wYXlsb2FkKCkuc2l6ZSgpID4+IDE2KTsKKyAgICAgICAgYnl0ZXMudW5jaGVja2Vk
QXBwZW5kKGZyYW1lLnBheWxvYWQoKS5zaXplKCkgPj4gOCk7CisgICAgICAgIGJ5dGVzLnVuY2hl
Y2tlZEFwcGVuZChmcmFtZS5wYXlsb2FkKCkuc2l6ZSgpID4+IDApOworICAgICAgICBieXRlcy51
bmNoZWNrZWRBcHBlbmQoc3RhdGljX2Nhc3Q8dWludDhfdD4oZnJhbWUudHlwZSgpKSk7CisgICAg
ICAgIGJ5dGVzLnVuY2hlY2tlZEFwcGVuZChmcmFtZS5mbGFncygpKTsKKyAgICAgICAgYnl0ZXMu
dW5jaGVja2VkQXBwZW5kKGZyYW1lLnN0cmVhbUlEKCkgPj4gMjQpOworICAgICAgICBieXRlcy51
bmNoZWNrZWRBcHBlbmQoZnJhbWUuc3RyZWFtSUQoKSA+PiAxNik7CisgICAgICAgIGJ5dGVzLnVu
Y2hlY2tlZEFwcGVuZChmcmFtZS5zdHJlYW1JRCgpID4+IDgpOworICAgICAgICBieXRlcy51bmNo
ZWNrZWRBcHBlbmQoZnJhbWUuc3RyZWFtSUQoKSA+PiAwKTsKKyAgICAgICAgYnl0ZXMuYXBwZW5k
VmVjdG9yKGZyYW1lLnBheWxvYWQoKSk7CisgICAgICAgIHRsc0Nvbm5lY3Rpb24uc2VuZChXVEZN
b3ZlKGJ5dGVzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH07CisKKyAgICBp
ZiAobV9zZW5kU2VydmVyQ29ubmVjdGlvblByZWZhY2UgJiYgZnJhbWVUeXBlICE9IEZyYW1lOjpU
eXBlOjpTZXR0aW5ncykgeworICAgICAgICAvLyBodHRwczovL2h0dHAyLmdpdGh1Yi5pby9odHRw
Mi1zcGVjLyNyZmMuc2VjdGlvbi4zLjUKKyAgICAgICAgbV9zZW5kU2VydmVyQ29ubmVjdGlvblBy
ZWZhY2UgPSBmYWxzZTsKKyAgICAgICAgc2VuZChGcmFtZShGcmFtZTo6VHlwZTo6U2V0dGluZ3Ms
IDAsIDAsIHsgfSksIFdURk1vdmUoc2VuZEZyYW1lKSk7CisgICAgfSBlbHNlCisgICAgICAgIHNl
bmRGcmFtZSgpOworfQorCit2b2lkIEgyOjpDb25uZWN0aW9uOjpyZWNlaXZlKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRnJhbWUmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Cit7CisgICAg
aWYgKG1fZXhwZWN0Q2xpZW50Q29ubmVjdGlvblByZWZhY2UpIHsKKyAgICAgICAgLy8gaHR0cHM6
Ly9odHRwMi5naXRodWIuaW8vaHR0cDItc3BlYy8jcmZjLnNlY3Rpb24uMy41CisgICAgICAgIGNv
bnN0ZXhwciBzaXplX3QgY2xpZW50Q29ubmVjdGlvblByZWZhY2VMZW5ndGggPSAyNDsKKyAgICAg
ICAgaWYgKG1fcmVjZWl2ZUJ1ZmZlci5zaXplKCkgPCBjbGllbnRDb25uZWN0aW9uUHJlZmFjZUxl
bmd0aCkgeworICAgICAgICAgICAgbV90bHNDb25uZWN0aW9uLnJlY2VpdmVCeXRlcyhbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoVmVjdG9yPHVpbnQ4X3Q+JiYgYnl0ZXMpIG11dGFibGUg
eworICAgICAgICAgICAgICAgIG1fcmVjZWl2ZUJ1ZmZlci5hcHBlbmRWZWN0b3IoYnl0ZXMpOwor
ICAgICAgICAgICAgICAgIHJlY2VpdmUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgQVNT
RVJUKCFtZW1jbXAobV9yZWNlaXZlQnVmZmVyLmRhdGEoKSwgIlBSSSAqIEhUVFAvMi4wXHJcblxy
XG5TTVxyXG5cclxuIiwgY2xpZW50Q29ubmVjdGlvblByZWZhY2VMZW5ndGgpKTsKKyAgICAgICAg
bV9yZWNlaXZlQnVmZmVyLnJlbW92ZSgwLCBjbGllbnRDb25uZWN0aW9uUHJlZmFjZUxlbmd0aCk7
CisgICAgICAgIG1fZXhwZWN0Q2xpZW50Q29ubmVjdGlvblByZWZhY2UgPSBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuIHJlY2VpdmUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0KKwor
ICAgIC8vIGh0dHBzOi8vaHR0cDIuZ2l0aHViLmlvL2h0dHAyLXNwZWMvI3JmYy5zZWN0aW9uLjQu
MQorICAgIGNvbnN0ZXhwciBzaXplX3QgZnJhbWVIZWFkZXJMZW5ndGggPSA5OworICAgIGlmICht
X3JlY2VpdmVCdWZmZXIuc2l6ZSgpID49IGZyYW1lSGVhZGVyTGVuZ3RoKSB7CisgICAgICAgIHVp
bnQzMl90IHBheWxvYWRMZW5ndGggPSAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fcmVjZWl2ZUJ1
ZmZlclswXSkgPDwgMTYpCisgICAgICAgICAgICArIChzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9y
ZWNlaXZlQnVmZmVyWzFdKSA8PCA4KQorICAgICAgICAgICAgKyAoc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KG1fcmVjZWl2ZUJ1ZmZlclsyXSkgPDwgMCk7CisgICAgICAgIGlmIChtX3JlY2VpdmVCdWZm
ZXIuc2l6ZSgpID49IGZyYW1lSGVhZGVyTGVuZ3RoICsgcGF5bG9hZExlbmd0aCkgeworICAgICAg
ICAgICAgYXV0byB0eXBlID0gc3RhdGljX2Nhc3Q8RnJhbWU6OlR5cGU+KG1fcmVjZWl2ZUJ1ZmZl
clszXSk7CisgICAgICAgICAgICBhdXRvIGZsYWdzID0gbV9yZWNlaXZlQnVmZmVyWzRdOworICAg
ICAgICAgICAgYXV0byBzdHJlYW1JRCA9IChzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9yZWNlaXZl
QnVmZmVyWzVdKSA8PCAyNCkKKyAgICAgICAgICAgICAgICArIChzdGF0aWNfY2FzdDx1aW50MzJf
dD4obV9yZWNlaXZlQnVmZmVyWzZdKSA8PCAxNikKKyAgICAgICAgICAgICAgICArIChzdGF0aWNf
Y2FzdDx1aW50MzJfdD4obV9yZWNlaXZlQnVmZmVyWzddKSA8PCA4KQorICAgICAgICAgICAgICAg
ICsgKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3JlY2VpdmVCdWZmZXJbOF0pIDw8IDApOworICAg
ICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHBheWxvYWQ7CisgICAgICAgICAgICBwYXlsb2FkLmFw
cGVuZChtX3JlY2VpdmVCdWZmZXIuZGF0YSgpICsgZnJhbWVIZWFkZXJMZW5ndGgsIHBheWxvYWRM
ZW5ndGgpOworICAgICAgICAgICAgbV9yZWNlaXZlQnVmZmVyLnJlbW92ZSgwLCBmcmFtZUhlYWRl
ckxlbmd0aCArIHBheWxvYWRMZW5ndGgpOworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKEZyYW1lKHR5cGUsIGZsYWdzLCBzdHJlYW1JRCwgV1RGTW92ZShwYXlsb2FkKSkpOwor
ICAgICAgICB9CisgICAgfQorICAgIAorICAgIG1fdGxzQ29ubmVjdGlvbi5yZWNlaXZlQnl0ZXMo
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFZlY3Rvcjx1aW50OF90PiYmIGJ5dGVzKSBt
dXRhYmxlIHsKKyAgICAgICAgbV9yZWNlaXZlQnVmZmVyLmFwcGVuZFZlY3RvcihieXRlcyk7Cisg
ICAgICAgIHJlY2VpdmUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQor
CiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRpZiAvLyBIQVZFKE5FVFdPUktf
RlJBTUVXT1JLKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>