<?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>212180</bug_id>
          
          <creation_ts>2020-05-20 17:18:23 -0700</creation_ts>
          <short_desc>[macOS] TestWebKitAPI.WebKit.HTTPReferer is a flaky failure</short_desc>
          <delta_ts>2020-05-21 11:52: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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=211603</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="Ryan Haddad">ryanhaddad</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1654743</commentid>
    <comment_count>0</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-05-20 17:18:23 -0700</bug_when>
    <thetext>TestWebKitAPI.WebKit.HTTPReferer is a flaky failure on macOS bots

    TestWebKitAPI.WebKit.HTTPReferer
        
        /Volumes/Data/slave/catalina-release/build/Tools/TestWebKitAPI/Tests/WebKitCocoa/NetworkProcess.mm:63
        Value of: strstr(request.data(), expectedHeaderField.utf8().data())
          Actual: false
        Expected: true
        

https://results.webkit.org/?suite=api-tests&amp;test=TestWebKitAPI.WebKit.HTTPReferer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654744</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-20 17:18:44 -0700</bug_when>
    <thetext>&lt;rdar://problem/63470619&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654745</commentid>
    <comment_count>2</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-05-20 17:19:20 -0700</bug_when>
    <thetext>This test was added with https://trac.webkit.org/changeset/261402/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654746</commentid>
    <comment_count>3</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-05-20 17:19:29 -0700</bug_when>
    <thetext>It looks like it has been flaky since the beginning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654985</commentid>
    <comment_count>4</comment_count>
      <attachid>399966</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-21 10:38:48 -0700</bug_when>
    <thetext>Created attachment 399966
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654989</commentid>
    <comment_count>5</comment_count>
      <attachid>399966</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-21 10:42:09 -0700</bug_when>
    <thetext>Comment on attachment 399966
Patch

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

&gt; Tools/TestWebKitAPI/cocoa/HTTPServer.h:53
&gt; +    NSURLRequest *request(const String&amp; path = &quot;/&quot;) const;

&quot;/&quot;_str

&gt; Tools/TestWebKitAPI/cocoa/HTTPServer.mm:184
&gt; +        responseBuilder.append(&quot;HTTP/1.1 &quot;);

These things could use appendLiteral()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654992</commentid>
    <comment_count>6</comment_count>
      <attachid>399966</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-21 10:45:15 -0700</bug_when>
    <thetext>Comment on attachment 399966
Patch

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

&gt; Tools/TestWebKitAPI/cocoa/HTTPServer.h:70
&gt; +    Connection(const Connection&amp;) = default;
&gt; +    Connection(Connection&amp;&amp;) = default;
&gt; +    Connection&amp; operator=(const Connection&amp;) = default;
&gt; +    Connection&amp; operator=(Connection&amp;&amp;) = default;

I think you can just leave all of this out and it should still work the same. The compiler should generate all of this unless we tell it not to.

&gt; Tools/TestWebKitAPI/cocoa/HTTPServer.mm:190
&gt; +        responseBuilder.append(&quot;HTTP/1.1 &quot;);
&gt; +        responseBuilder.appendNumber(response.statusCode);
&gt; +        responseBuilder.append(&apos; &apos;);
&gt; +        responseBuilder.append(statusText(response.statusCode));
&gt; +        responseBuilder.append(&quot;\r\nContent-Length: &quot;);
&gt; +        responseBuilder.appendNumber(response.body.length());
&gt; +        responseBuilder.append(&quot;\r\n&quot;);

Possible drive-by improvement. Variadic append is possibly easier to read, and happens to be more efficient as well:

    responseBuilder.append(&quot;HTTP/1.1 &quot;, response.statusCode, &apos; &apos;, statusText(response.statusCode), &quot;\r\n&quot;
        &quot;Content-Length: &quot;, response.body.length(), &quot;\r\n&quot;);

&gt; Tools/TestWebKitAPI/cocoa/HTTPServer.mm:195
&gt; +            responseBuilder.append(pair.key);
&gt; +            responseBuilder.append(&quot;: &quot;);
&gt; +            responseBuilder.append(pair.value);
&gt;              responseBuilder.append(&quot;\r\n&quot;);

responseBuilder.append(pair.key, &quot;: &quot;, pair.value, &quot;\r\n&quot;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655005</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-21 11:11:16 -0700</bug_when>
    <thetext>I like the variadic append.  I&apos;m going to separate the lines of the HTTP header like this:

StringBuilder responseBuilder;
responseBuilder.append(&quot;HTTP/1.1 &quot;, response.statusCode, &apos; &apos;, statusText(response.statusCode), &quot;\r\n&quot;);
responseBuilder.append(&quot;Content-Length: &quot;, response.body.length(), &quot;\r\n&quot;);
for (auto&amp; pair : response.headerFields)
    responseBuilder.append(pair.key, &quot;: &quot;, pair.value, &quot;\r\n&quot;);
responseBuilder.append(&quot;\r\n&quot;);
responseBuilder.append(response.body);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655022</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-21 11:52:18 -0700</bug_when>
    <thetext>http://trac.webkit.org/r262018</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399966</attachid>
            <date>2020-05-21 10:38:48 -0700</date>
            <delta_ts>2020-05-21 10:42:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212180-20200521103847.patch</filename>
            <type>text/plain</type>
            <size>22179</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2MjAxMykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM2IEBACisyMDIwLTA1LTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgW21hY09TXSBUZXN0V2ViS2l0QVBJLldlYktpdC5IVFRQUmVm
ZXJlciBpcyBhIGZsYWt5IGZhaWx1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMjE4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFNvbWV0aW1lcyBhbiBIVFRQIHJlcXVlc3QgdGFrZXMgbW9yZSB0aGFu
IG9uZSBjYWxsIHRvIG53X2Nvbm5lY3Rpb25fcmVjZWl2ZSB0byByZWNlaXZlIGVudGlyZWx5Lgor
ICAgICAgICBBZGQgYSBuZXcgYWJzdHJhY3Rpb24gQ29ubmVjdGlvbiB0aGF0IHdyYXBzIGFuIG53
X2Nvbm5lY3Rpb25fdCBhbmQga25vd3MgaG93IHRvIHJlYWQgYW4gZW50aXJlIHJlcXVlc3QuCisg
ICAgICAgIFVzZSBzdHJuc3RyIGluc3RlYWQgb2YgbnVsbCB0ZXJtaW5hdGluZyBhbmQgdXNpbmcg
c3Ryc3RyLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3du
bG9hZC5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvTmV0d29ya1Byb2Nlc3MubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb3h5Lm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyVENQU2VydmVyLmg6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmg6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDb25u
ZWN0aW9uOjpyZWNlaXZlSFRUUFJlcXVlc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Q29u
bmVjdGlvbjo6Q29ubmVjdGlvbik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQ
U2VydmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6SFRUUFNlcnZl
cik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkYXRhRnJvbVN0cmluZyk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjp2ZWN0b3JGcm9tRGF0YSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyOjpyZXNwb25kVG9SZXF1ZXN0cyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyOjpyZXF1ZXN0IGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkNvbm5l
Y3Rpb246OnJlY2VpdmVIVFRQUmVxdWVzdCBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpDb25uZWN0aW9uOjpzZW5kIGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkNvbm5l
Y3Rpb246OnRlcm1pbmF0ZSBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpudWxsVGVy
bWluYXRlZFJlcXVlc3QpOiBEZWxldGVkLgorCiAyMDIwLTA1LTIxICBFbnJpcXVlIE9jYcOxYSBH
b256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl1bR1RL
XVtXUEVdIEV4cG9zZSBhbmQgaG9ub3IgdGhlIG1lZGlhIGNvbnRlbnQgdHlwZXMgcmVxdWlyaW5n
IGhhcmR3YXJlIHN1cHBvcnQgc2V0dGluZwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCShyZXZpc2lvbiAyNjE5NjYpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTcyLDQxICsxMTcyLDMwIEBAIFN0cmluZyBsb25nU3RyaW5nKExDaGFyIGMp
CiBURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEk7Ci0gICAgSFRUUFNlcnZlciBzZXJ2ZXIoW2Nvbm5lY3Rpb25Db3VudCA9IDBdKG53
X2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICBIVFRQU2VydmVyIHNlcnZl
cihbY29ubmVjdGlvbkNvdW50ID0gMF0oQ29ubmVjdGlvbiBjb25uZWN0aW9uKSBtdXRhYmxlIHsK
ICAgICAgICAgc3dpdGNoICgrK2Nvbm5lY3Rpb25Db3VudCkgewogICAgICAgICBjYXNlIDE6Ci0g
ICAgICAgICAgICBud19jb25uZWN0aW9uX3JlY2VpdmUoY29ubmVjdGlvbiwgMSwgc3RkOjpudW1l
cmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpLCBtYWtlQmxvY2tQdHIoW2Nvbm5lY3Rpb24gPSBy
ZXRhaW5QdHIoY29ubmVjdGlvbildKGRpc3BhdGNoX2RhdGFfdCBjb250ZW50LCBud19jb250ZW50
X2NvbnRleHRfdCBjb250ZXh0LCBib29sLCBud19lcnJvcl90IGVycm9yKSB7Ci0gICAgICAgICAg
ICAgICAgRVhQRUNUX1RSVUUoY29udGVudCk7Ci0gICAgICAgICAgICAgICAgRVhQRUNUX0ZBTFNF
KGVycm9yKTsKLSAgICAgICAgICAgICAgICBhdXRvIGRhdGEgPSBkYXRhRnJvbVN0cmluZyhtYWtl
U3RyaW5nKAorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoW2Nvbm5l
Y3Rpb25dKFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5k
KG1ha2VTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgog
ICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCiAgICAgICAgICAgICAgICAgICAg
ICJDb250ZW50LUxlbmd0aDogMTAwMDBcclxuIgogICAgICAgICAgICAgICAgICAgICAiQ29udGVu
dC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwiXHJcbiIK
LSAgICAgICAgICAgICAgICAgICAgIlxyXG4iLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpKTsKLSAg
ICAgICAgICAgICAgICBud19jb25uZWN0aW9uX3NlbmQoY29ubmVjdGlvbi5nZXQoKSwgZGF0YS5n
ZXQoKSwgY29udGV4dCwgZmFsc2UsIF4obndfZXJyb3JfdCBlcnJvcikgewotICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoIWVycm9yKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
IH0pLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4iLCBsb25nU3RyaW5nPDUwMDA+
KCdhJykKKyAgICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgIG53X2Nvbm5lY3Rpb25fcmVjZWl2
ZShjb25uZWN0aW9uLCAxLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksIG1h
a2VCbG9ja1B0cihbY29ubmVjdGlvbiA9IHJldGFpblB0cihjb25uZWN0aW9uKV0oZGlzcGF0Y2hf
ZGF0YV90IGNvbnRlbnQsIG53X2NvbnRlbnRfY29udGV4dF90IGNvbnRleHQsIGJvb2wsIG53X2Vy
cm9yX3QgZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShjb250ZW50KTsKLSAg
ICAgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoZXJyb3IpOwotCi0gICAgICAgICAgICAgICAgYXV0
byByZXF1ZXN0ID0gbnVsbFRlcm1pbmF0ZWRSZXF1ZXN0KGNvbnRlbnQpOwotICAgICAgICAgICAg
ICAgIEVYUEVDVF9UUlVFKHN0cnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdlOiBieXRlcz01MDAw
LVxyXG4iKSk7Ci0KLSAgICAgICAgICAgICAgICBhdXRvIGRhdGEgPSBkYXRhRnJvbVN0cmluZyht
YWtlU3RyaW5nKAorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoW2Nv
bm5lY3Rpb25dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKKyAgICAgICAgICAgICAgICBFWFBF
Q1RfVFJVRShzdHJuc3RyKHJlcXVlc3QuZGF0YSgpLCAiUmFuZ2U6IGJ5dGVzPTUwMDAtXHJcbiIs
IHJlcXVlc3Quc2l6ZSgpKSk7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VT
dHJpbmcoCiAgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDYgUGFydGlhbCBDb250ZW50
XHJcbiIKICAgICAgICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgogICAgICAgICAgICAg
ICAgICAgICAiQ29udGVudC1MZW5ndGg6IDUwMDBcclxuIgogICAgICAgICAgICAgICAgICAgICAi
Q29udGVudC1SYW5nZTogYnl0ZXMgNTAwMC05OTk5LzEwMDAwXHJcbiIKLSAgICAgICAgICAgICAg
ICAgICAgIlxyXG4iLCBsb25nU3RyaW5nPDUwMDA+KCdiJykpKTsKLSAgICAgICAgICAgICAgICBu
d19jb25uZWN0aW9uX3NlbmQoY29ubmVjdGlvbi5nZXQoKSwgZGF0YS5nZXQoKSwgY29udGV4dCwg
dHJ1ZSwgXihud19lcnJvcl90IGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCgh
ZXJyb3IpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSkuZ2V0KCkpOworICAg
ICAgICAgICAgICAgICAgICAiXHJcbiIsIGxvbmdTdHJpbmc8NTAwMD4oJ2InKQorICAgICAgICAg
ICAgICAgICkpOworICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OZXR3b3JrUHJvY2Vzcy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05ldHdvcmtQcm9j
ZXNzLm1tCShyZXZpc2lvbiAyNjE5NjYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL05ldHdvcmtQcm9jZXNzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NCwxNyArNTQs
MTUgQEAgVEVTVChXZWJLaXQsIEhUVFBSZWZlcmVyKQogICAgIGF1dG8gY2hlY2tSZWZlcmVyID0g
W10gKE5TVVJMICpiYXNlVVJMLCBjb25zdCBjaGFyKiBleHBlY3RlZFJlZmVyZXIpIHsKICAgICAg
ICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAgICAgICAgIGJvb2wgZG9uZSA9IGZh
bHNlOwotICAgICAgICBIVFRQU2VydmVyIHNlcnZlcihbZG9uZSA9ICZkb25lLCBleHBlY3RlZFJl
ZmVyZXJdIChud19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikgewotICAgICAgICAgICAgbndfY29u
bmVjdGlvbl9yZWNlaXZlKGNvbm5lY3Rpb24sIDEsIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMy
X3Q+OjptYXgoKSwgbWFrZUJsb2NrUHRyKFtjb25uZWN0aW9uID0gcmV0YWluUHRyKGNvbm5lY3Rp
b24pLCBkb25lLCBleHBlY3RlZFJlZmVyZXJdKGRpc3BhdGNoX2RhdGFfdCBjb250ZW50LCBud19j
b250ZW50X2NvbnRleHRfdCwgYm9vbCwgbndfZXJyb3JfdCkgewotICAgICAgICAgICAgICAgIEVY
UEVDVF9UUlVFKGNvbnRlbnQpOwotICAgICAgICAgICAgICAgIGF1dG8gcmVxdWVzdCA9IG51bGxU
ZXJtaW5hdGVkUmVxdWVzdChjb250ZW50KTsKKyAgICAgICAgSFRUUFNlcnZlciBzZXJ2ZXIoWyZd
IChDb25uZWN0aW9uIGNvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2
ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uLCBleHBlY3RlZFJlZmVyZXIsICZkb25lXSAoVmVjdG9y
PGNoYXI+JiYgcmVxdWVzdCkgewogICAgICAgICAgICAgICAgIGlmIChleHBlY3RlZFJlZmVyZXIp
IHsKICAgICAgICAgICAgICAgICAgICAgYXV0byBleHBlY3RlZEhlYWRlckZpZWxkID0gbWFrZVN0
cmluZygiUmVmZXJlcjogIiwgZXhwZWN0ZWRSZWZlcmVyLCAiXHJcbiIpOwotICAgICAgICAgICAg
ICAgICAgICBFWFBFQ1RfVFJVRShzdHJzdHIocmVxdWVzdC5kYXRhKCksIGV4cGVjdGVkSGVhZGVy
RmllbGQudXRmOCgpLmRhdGEoKSkpOworICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShz
dHJuc3RyKHJlcXVlc3QuZGF0YSgpLCBleHBlY3RlZEhlYWRlckZpZWxkLnV0ZjgoKS5kYXRhKCks
IHJlcXVlc3Quc2l6ZSgpKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIEVYUEVDVF9GQUxTRShzdHJzdHIocmVxdWVzdC5kYXRhKCksICJSZWZlcmVyOiIpKTsK
LSAgICAgICAgICAgICAgICAqZG9uZSA9IHRydWU7Ci0gICAgICAgICAgICB9KS5nZXQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShzdHJuc3RyKHJlcXVlc3QuZGF0YSgpLCAi
UmVmZXJlcjoiLCByZXF1ZXN0LnNpemUoKSkpOworICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVl
OworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgICAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5n
OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPGJvZHkgb25sb2FkPSdkb2N1bWVudC5nZXRF
bGVtZW50QnlJZChcImZvcm1JRFwiKS5zdWJtaXQoKSc+PGZvcm0gaWQ9J2Zvcm1JRCcgbWV0aG9k
PSdwb3N0JyBhY3Rpb249J2h0dHA6Ly8xMjcuMC4wLjE6JWQvJz48L2Zvcm0+PC9ib2R5PiIsIHNl
cnZlci5wb3J0KCldIGJhc2VVUkw6YmFzZVVSTF07CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1Byb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJveHkubW0JKHJldmlzaW9uIDI2MTk2NikKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJveHkubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDEzICsyNywxOCBAQAogCiAjaWYgSEFWRShTU0wpCiAKKyNpbXBvcnQgIkhUVFBT
ZXJ2ZXIuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUQ1BTZXJ2
ZXIuaCIKKyNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgIlRlc3RV
SURlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJVdGlsaXRp
ZXMuaCIKICNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0
Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogCiBAaW50ZXJmYWNlIFByb3h5RGVs
ZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGUsIFdLVUlEZWxlZ2F0ZT4KIC0g
KE5TU3RyaW5nICopd2FpdEZvckFsZXJ0OwpAQCAtOTEsNyArOTYsNyBAQCBURVNUKFdlYktpdCwg
SFRUUFByb3h5QXV0aGVudGljYXRpb24pCiB7CiAgICAgVENQU2VydmVyIHNlcnZlcihbXSAoaW50
IHNvY2tldCkgewogICAgICAgICBhdXRvIHJlcXVlc3RTaG91bGRDb250YWluID0gW10gKGNvbnN0
IGF1dG8mIHJlcXVlc3QsIGNvbnN0IGNoYXIqIHN0cikgewotICAgICAgICAgICAgRVhQRUNUX1RS
VUUoc3Ryc3RyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHJlcXVlc3QuZGF0YSgpKSwg
c3RyKSk7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KHJlcXVlc3QuZGF0YSgpKSwgc3RyLCByZXF1ZXN0LnNpemUoKSkpOwogICAg
ICAgICB9OwogCiAgICAgICAgIGF1dG8gY29ubmVjdFJlcXVlc3QgPSBUQ1BTZXJ2ZXI6OnJlYWQo
c29ja2V0KTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2Vy
dmljZVdvcmtlckJhc2ljLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCShyZXZpc2lvbiAyNjE5NjYpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNp
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjA3MCw3ICsyMDcwLDcgQEAgVEVTVChTZXJ2aWNlV29y
a2VycywgQ29udGVudFJ1bGVMaXN0KQogICAgICAgICBUQ1BTZXJ2ZXI6OnJlYWQoc29ja2V0KTsK
ICAgICAgICAgcmVzcG9uZChjb250ZW50UnVsZUxpc3RXb3JrZXJTY3JpcHQsICJhcHBsaWNhdGlv
bi9qYXZhc2NyaXB0Iik7CiAgICAgICAgIGF1dG8gbGFzdFJlcXVlc3QgPSBUQ1BTZXJ2ZXI6OnJl
YWQoc29ja2V0KTsKLSAgICAgICAgRVhQRUNUX1RSVUUoc3Ryc3RyKChjb25zdCBjaGFyKilsYXN0
UmVxdWVzdC5kYXRhKCksICJhbGxvd2Vkc3VicmVzb3VyY2UiKSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKHN0cm5zdHIoKGNvbnN0IGNoYXIqKWxhc3RSZXF1ZXN0LmRhdGEoKSwgImFsbG93ZWRzdWJy
ZXNvdXJjZSIsIGxhc3RSZXF1ZXN0LnNpemUoKSkpOwogICAgICAgICByZXNwb25kKCJzdWNjZXNz
ZnVsIGZldGNoIiwgImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpOwogICAgIH0pOwogCkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJUQ1BT
ZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1NlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIuaAkocmV2aXNpb24gMjYxOTY2KQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyVENQU2VydmVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
IGZvciAoYXV0byYgaW5mbyA6IHZlY3RvcikgewogICAgICAgICAgICAgICAgICAgICBhdXRvIHJl
cXVlc3QgPSBUQ1BTZXJ2ZXI6OnJlYWQoc29ja2V0KTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KCFleHBlY3RlZFVzZXJBZ2VudC5pc051bGwoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
RVhQRUNUX1RSVUUoc3Ryc3RyKChjb25zdCBjaGFyKilyZXF1ZXN0LmRhdGEoKSwgbWFrZVN0cmlu
ZygiVXNlci1BZ2VudDogIiwgZXhwZWN0ZWRVc2VyQWdlbnQpLnV0ZjgoKS5kYXRhKCkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKHN0cm5zdHIoKGNvbnN0IGNoYXIqKXJl
cXVlc3QuZGF0YSgpLCBtYWtlU3RyaW5nKCJVc2VyLUFnZW50OiAiLCBleHBlY3RlZFVzZXJBZ2Vu
dCkudXRmOCgpLmRhdGEoKSwgcmVxdWVzdC5zaXplKCkpKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fdXNlckFnZW50c0NoZWNrZWQrKzsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICBOU1N0cmluZyAqZm9ybWF0ID0gQCJIVFRQLzEuMSAyMDAgT0tcclxuIgpJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgJKHJldmlzaW9uIDI2MTk2
NikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCwxMiArMzAsMTUgQEAKICNpZiBIQVZFKE5FVFdPUktfRlJBTUVXT1JLKQogCiAj
aW1wb3J0IDxOZXR3b3JrL05ldHdvcmsuaD4KKyNpbXBvcnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgogI2ltcG9ydCA8d3RmL0ZvcndhcmQuaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CiAj
aW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKIAorY2xhc3MgQ29ubmVjdGlvbjsKKwogY2xhc3MgSFRUUFNlcnZlciB7CiBwdWJsaWM6CiAg
ICAgc3RydWN0IEhUVFBSZXNwb25zZTsKQEAgLTQ0LDIzICs0NywzOSBAQCBwdWJsaWM6CiAgICAg
dXNpbmcgQ2VydGlmaWNhdGVWZXJpZmllciA9IEZ1bmN0aW9uPHZvaWQoc2VjX3Byb3RvY29sX21l
dGFkYXRhX3QsIHNlY190cnVzdF90LCBzZWNfcHJvdG9jb2xfdmVyaWZ5X2NvbXBsZXRlX3QpPjsK
IAogICAgIEhUVFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcs
IEhUVFBSZXNwb25zZT4+LCBQcm90b2NvbCA9IFByb3RvY29sOjpIdHRwLCBDZXJ0aWZpY2F0ZVZl
cmlmaWVyJiYgPSBudWxscHRyKTsKLSAgICBIVFRQU2VydmVyKEZ1bmN0aW9uPHZvaWQobndfY29u
bmVjdGlvbl90KT4mJiwgUHJvdG9jb2wgPSBQcm90b2NvbDo6SHR0cCk7CisgICAgSFRUUFNlcnZl
cihGdW5jdGlvbjx2b2lkKENvbm5lY3Rpb24pPiYmLCBQcm90b2NvbCA9IFByb3RvY29sOjpIdHRw
KTsKICAgICB+SFRUUFNlcnZlcigpOwogICAgIHVpbnQxNl90IHBvcnQoKSBjb25zdDsKLSAgICBO
U1VSTFJlcXVlc3QgKnJlcXVlc3QoKSBjb25zdDsKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3Qo
Y29uc3QgU3RyaW5nJiBwYXRoID0gIi8iKSBjb25zdDsKICAgICBzaXplX3QgdG90YWxSZXF1ZXN0
cygpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHN0YXRpYyBSZXRhaW5QdHI8bndfcGFyYW1ldGVy
c190PiBsaXN0ZW5lclBhcmFtZXRlcnMoUHJvdG9jb2wsIENlcnRpZmljYXRlVmVyaWZpZXImJik7
Ci0gICAgc3RhdGljIHZvaWQgcmVzcG9uZFRvUmVxdWVzdHMobndfY29ubmVjdGlvbl90LCBSZWZQ
dHI8UmVxdWVzdERhdGE+KTsKKyAgICBzdGF0aWMgdm9pZCByZXNwb25kVG9SZXF1ZXN0cyhDb25u
ZWN0aW9uLCBSZWZQdHI8UmVxdWVzdERhdGE+KTsKIAogICAgIFJlZlB0cjxSZXF1ZXN0RGF0YT4g
bV9yZXF1ZXN0RGF0YTsKICAgICBSZXRhaW5QdHI8bndfbGlzdGVuZXJfdD4gbV9saXN0ZW5lcjsK
ICAgICBQcm90b2NvbCBtX3Byb3RvY29sIHsgUHJvdG9jb2w6Okh0dHAgfTsKIH07CiAKLVJldGFp
blB0cjxkaXNwYXRjaF9kYXRhX3Q+IGRhdGFGcm9tU3RyaW5nKFN0cmluZyYmKTsKLVZlY3Rvcjxj
aGFyPiBudWxsVGVybWluYXRlZFJlcXVlc3QoZGlzcGF0Y2hfZGF0YV90KTsKK2NsYXNzIENvbm5l
Y3Rpb24geworcHVibGljOgorICAgIENvbm5lY3Rpb24oY29uc3QgQ29ubmVjdGlvbiYpID0gZGVm
YXVsdDsKKyAgICBDb25uZWN0aW9uKENvbm5lY3Rpb24mJikgPSBkZWZhdWx0OworICAgIENvbm5l
Y3Rpb24mIG9wZXJhdG9yPShjb25zdCBDb25uZWN0aW9uJikgPSBkZWZhdWx0OworICAgIENvbm5l
Y3Rpb24mIG9wZXJhdG9yPShDb25uZWN0aW9uJiYpID0gZGVmYXVsdDsKKworICAgIHZvaWQgc2Vu
ZChTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmID0gbnVsbHB0cikgY29uc3Q7
CisgICAgdm9pZCByZWNlaXZlSFRUUFJlcXVlc3QoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8Y2hhcj4mJik+JiYsIFZlY3RvcjxjaGFyPiYmIGJ1ZmZlciA9IHsgfSkgY29uc3Q7CisgICAg
dm9pZCB0ZXJtaW5hdGUoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgSFRU
UFNlcnZlcjsKKyAgICBDb25uZWN0aW9uKG53X2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKQorICAg
ICAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKSB7IH0KKworICAgIFJldGFpblB0cjxud19j
b25uZWN0aW9uX3Q+IG1fY29ubmVjdGlvbjsKK307CiAKIHN0cnVjdCBIVFRQU2VydmVyOjpIVFRQ
UmVzcG9uc2UgewogICAgIGVudW0gY2xhc3MgVGVybWluYXRlQ29ubmVjdGlvbiB7IE5vLCBZZXMg
fTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0JKHJldmlzaW9u
IDI2MTk2NikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQkod29y
a2luZyBjb3B5KQpAQCAtOTUsMTIgKzk1LDEyIEBAICAgICAsIG1fcHJvdG9jb2wocHJvdG9jb2wp
CiAgICAgbndfbGlzdGVuZXJfc2V0X25ld19jb25uZWN0aW9uX2hhbmRsZXIobV9saXN0ZW5lci5n
ZXQoKSwgbWFrZUJsb2NrUHRyKFtyZXF1ZXN0RGF0YSA9IG1fcmVxdWVzdERhdGFdKG53X2Nvbm5l
Y3Rpb25fdCBjb25uZWN0aW9uKSB7CiAgICAgICAgIG53X2Nvbm5lY3Rpb25fc2V0X3F1ZXVlKGNv
bm5lY3Rpb24sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwogICAgICAgICBud19jb25uZWN0
aW9uX3N0YXJ0KGNvbm5lY3Rpb24pOwotICAgICAgICByZXNwb25kVG9SZXF1ZXN0cyhjb25uZWN0
aW9uLCByZXF1ZXN0RGF0YSk7CisgICAgICAgIHJlc3BvbmRUb1JlcXVlc3RzKENvbm5lY3Rpb24o
Y29ubmVjdGlvbiksIHJlcXVlc3REYXRhKTsKICAgICB9KS5nZXQoKSk7CiAgICAgc3RhcnRMaXN0
ZW5pbmcobV9saXN0ZW5lci5nZXQoKSk7CiB9CiAKLUhUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIoRnVu
Y3Rpb248dm9pZChud19jb25uZWN0aW9uX3QpPiYmIGNvbm5lY3Rpb25IYW5kbGVyLCBQcm90b2Nv
bCBwcm90b2NvbCkKK0hUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIoRnVuY3Rpb248dm9pZChDb25uZWN0
aW9uKT4mJiBjb25uZWN0aW9uSGFuZGxlciwgUHJvdG9jb2wgcHJvdG9jb2wpCiAgICAgOiBtX2xp
c3RlbmVyKGFkb3B0TlMobndfbGlzdGVuZXJfY3JlYXRlKGxpc3RlbmVyUGFyYW1ldGVycyhwcm90
b2NvbCwgbnVsbHB0cikuZ2V0KCkpKSkKICAgICAsIG1fcHJvdG9jb2wocHJvdG9jb2wpCiB7CkBA
IC0xMDgsNyArMTA4LDcgQEAgICAgICwgbV9wcm90b2NvbChwcm90b2NvbCkKICAgICBud19saXN0
ZW5lcl9zZXRfbmV3X2Nvbm5lY3Rpb25faGFuZGxlcihtX2xpc3RlbmVyLmdldCgpLCBtYWtlQmxv
Y2tQdHIoW2Nvbm5lY3Rpb25IYW5kbGVyID0gV1RGTW92ZShjb25uZWN0aW9uSGFuZGxlcildIChu
d19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikgewogICAgICAgICBud19jb25uZWN0aW9uX3NldF9x
dWV1ZShjb25uZWN0aW9uLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKICAgICAgICAgbndf
Y29ubmVjdGlvbl9zdGFydChjb25uZWN0aW9uKTsKLSAgICAgICAgY29ubmVjdGlvbkhhbmRsZXIo
Y29ubmVjdGlvbik7CisgICAgICAgIGNvbm5lY3Rpb25IYW5kbGVyKENvbm5lY3Rpb24oY29ubmVj
dGlvbikpOwogICAgIH0pLmdldCgpKTsKICAgICBzdGFydExpc3RlbmluZyhtX2xpc3RlbmVyLmdl
dCgpKTsKIH0KQEAgLTEzNiw3ICsxMzYsNyBAQCBzdGF0aWMgU3RyaW5nIHN0YXR1c1RleHQodW5z
aWduZWQgc3RhdHVzCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmV0YWluUHRyPGRpc3BhdGNoX2Rh
dGFfdD4gZGF0YUZyb21TdHJpbmcoU3RyaW5nJiYgcykKK3N0YXRpYyBSZXRhaW5QdHI8ZGlzcGF0
Y2hfZGF0YV90PiBkYXRhRnJvbVN0cmluZyhTdHJpbmcmJiBzKQogewogICAgIGF1dG8gaW1wbCA9
IHMucmVsZWFzZUltcGwoKTsKICAgICBBU1NFUlQoaW1wbC0+aXM4Qml0KCkpOwpAQCAtMTQ1LDMz
ICsxNDUsMjggQEAgUmV0YWluUHRyPGRpc3BhdGNoX2RhdGFfdD4gZGF0YUZyb21TdHJpbgogICAg
IH0pKTsKIH0KIAotVmVjdG9yPGNoYXI+IG51bGxUZXJtaW5hdGVkUmVxdWVzdChkaXNwYXRjaF9k
YXRhX3QgY29udGVudCkKK3N0YXRpYyBWZWN0b3I8Y2hhcj4gdmVjdG9yRnJvbURhdGEoZGlzcGF0
Y2hfZGF0YV90IGNvbnRlbnQpCiB7CiAgICAgX19ibG9jayBWZWN0b3I8Y2hhcj4gcmVxdWVzdDsK
ICAgICBkaXNwYXRjaF9kYXRhX2FwcGx5KGNvbnRlbnQsIF5ib29sKGRpc3BhdGNoX2RhdGFfdCwg
c2l6ZV90LCBjb25zdCB2b2lkKiBidWZmZXIsIHNpemVfdCBzaXplKSB7CiAgICAgICAgIHJlcXVl
c3QuYXBwZW5kKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihidWZmZXIpLCBzaXplKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfSk7Ci0gICAgcmVxdWVzdC5hcHBlbmQoJ1wwJyk7CiAgICAg
cmV0dXJuIHJlcXVlc3Q7CiB9CiAKLXZvaWQgSFRUUFNlcnZlcjo6cmVzcG9uZFRvUmVxdWVzdHMo
bndfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24sIFJlZlB0cjxSZXF1ZXN0RGF0YT4gcmVxdWVzdERh
dGEpCit2b2lkIEhUVFBTZXJ2ZXI6OnJlc3BvbmRUb1JlcXVlc3RzKENvbm5lY3Rpb24gY29ubmVj
dGlvbiwgUmVmUHRyPFJlcXVlc3REYXRhPiByZXF1ZXN0RGF0YSkKIHsKLSAgICBud19jb25uZWN0
aW9uX3JlY2VpdmUoY29ubmVjdGlvbiwgMSwgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46
Om1heCgpLCBtYWtlQmxvY2tQdHIoW2Nvbm5lY3Rpb24gPSByZXRhaW5QdHIoY29ubmVjdGlvbiks
IHJlcXVlc3REYXRhXShkaXNwYXRjaF9kYXRhX3QgY29udGVudCwgbndfY29udGVudF9jb250ZXh0
X3QgY29udGV4dCwgYm9vbCBjb21wbGV0ZSwgbndfZXJyb3JfdCBlcnJvcikgewotICAgICAgICBp
ZiAoZXJyb3IgfHwgIWNvbnRlbnQpCisgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3Qo
W2Nvbm5lY3Rpb24sIHJlcXVlc3REYXRhXSAoVmVjdG9yPGNoYXI+JiYgcmVxdWVzdCkgeworICAg
ICAgICBpZiAoIXJlcXVlc3Quc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwotCiAgICAgICAg
IHJlcXVlc3REYXRhLT5yZXF1ZXN0Q291bnQrKzsKLSAgICAgICAgYXV0byByZXF1ZXN0ID0gbnVs
bFRlcm1pbmF0ZWRSZXF1ZXN0KGNvbnRlbnQpOwogCiAgICAgICAgIGNvbnN0IGNoYXIqIGdldFBh
dGhQcmVmaXggPSAiR0VUICI7CiAgICAgICAgIGNvbnN0IGNoYXIqIHBvc3RQYXRoUHJlZml4ID0g
IlBPU1QgIjsKICAgICAgICAgY29uc3QgY2hhciogcGF0aFN1ZmZpeCA9ICIgSFRUUC8xLjFcclxu
IjsKLSAgICAgICAgY29uc3QgY2hhciogcGF0aEVuZCA9IHN0cnN0cihyZXF1ZXN0LmRhdGEoKSwg
cGF0aFN1ZmZpeCk7CisgICAgICAgIGNvbnN0IGNoYXIqIHBhdGhFbmQgPSBzdHJuc3RyKHJlcXVl
c3QuZGF0YSgpLCBwYXRoU3VmZml4LCByZXF1ZXN0LnNpemUoKSk7CiAgICAgICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UocGF0aEVuZCwgIkhUVFBTZXJ2ZXIgYXNzdW1lcyByZXF1ZXN0IGlzIEhUVFAg
MS4xIik7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGRvdWJsZU5ld2xpbmUgPSBzdHJzdHIocmVxdWVz
dC5kYXRhKCksICJcclxuXHJcbiIpOwotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGRvdWJs
ZU5ld2xpbmUsICJIVFRQU2VydmVyIGFzc3VtZXMgZW50aXJlIEhUVFAgcmVxdWVzdCBpcyByZWNl
aXZlZCBhdCBvbmNlIik7CiAgICAgICAgIHNpemVfdCBwYXRoUHJlZml4TGVuZ3RoID0gMDsKICAg
ICAgICAgaWYgKCFtZW1jbXAocmVxdWVzdC5kYXRhKCksIGdldFBhdGhQcmVmaXgsIHN0cmxlbihn
ZXRQYXRoUHJlZml4KSkpCiAgICAgICAgICAgICBwYXRoUHJlZml4TGVuZ3RoID0gc3RybGVuKGdl
dFBhdGhQcmVmaXgpOwpAQCAtMTgyLDQ5ICsxNzcsMjkgQEAgdm9pZCBIVFRQU2VydmVyOjpyZXNw
b25kVG9SZXF1ZXN0cyhud19jbwogICAgICAgICBTdHJpbmcgcGF0aChyZXF1ZXN0LmRhdGEoKSAr
IHBhdGhQcmVmaXhMZW5ndGgsIHBhdGhMZW5ndGgpOwogICAgICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKHJlcXVlc3REYXRhLT5yZXF1ZXN0TWFwLmNvbnRhaW5zKHBhdGgpLCAiVGhpcyBIVFRQU2Vy
dmVyIGRvZXMgbm90IGtub3cgaG93IHRvIHJlc3BvbmQgdG8gYSByZXF1ZXN0IGZvciAlcyIsIHBh
dGgudXRmOCgpLmRhdGEoKSk7CiAKLSAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiBz
ZW5kUmVzcG9uc2UgPSBbY29ubmVjdGlvbiwgY29udGV4dCA9IHJldGFpblB0cihjb250ZXh0KSwg
cGF0aCA9IFdURk1vdmUocGF0aCksIHJlcXVlc3REYXRhXSB7Ci0gICAgICAgICAgICBhdXRvIHJl
c3BvbnNlID0gcmVxdWVzdERhdGEtPnJlcXVlc3RNYXAuZ2V0KHBhdGgpOwotICAgICAgICAgICAg
aWYgKHJlc3BvbnNlLnRlcm1pbmF0ZUNvbm5lY3Rpb24gPT0gSFRUUFJlc3BvbnNlOjpUZXJtaW5h
dGVDb25uZWN0aW9uOjpZZXMpIHsKLSAgICAgICAgICAgICAgICBud19jb25uZWN0aW9uX2NhbmNl
bChjb25uZWN0aW9uLmdldCgpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHJlc3BvbnNlQnVpbGRlcjsKLSAgICAgICAg
ICAgIHJlc3BvbnNlQnVpbGRlci5hcHBlbmQoIkhUVFAvMS4xICIpOwotICAgICAgICAgICAgcmVz
cG9uc2VCdWlsZGVyLmFwcGVuZE51bWJlcihyZXNwb25zZS5zdGF0dXNDb2RlKTsKLSAgICAgICAg
ICAgIHJlc3BvbnNlQnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgIHJlc3BvbnNlQnVp
bGRlci5hcHBlbmQoc3RhdHVzVGV4dChyZXNwb25zZS5zdGF0dXNDb2RlKSk7Ci0gICAgICAgICAg
ICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKCJcclxuQ29udGVudC1MZW5ndGg6ICIpOwotICAgICAg
ICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZE51bWJlcihyZXNwb25zZS5ib2R5Lmxlbmd0aCgp
KTsKKyAgICAgICAgYXV0byByZXNwb25zZSA9IHJlcXVlc3REYXRhLT5yZXF1ZXN0TWFwLmdldChw
YXRoKTsKKyAgICAgICAgaWYgKHJlc3BvbnNlLnRlcm1pbmF0ZUNvbm5lY3Rpb24gPT0gSFRUUFJl
c3BvbnNlOjpUZXJtaW5hdGVDb25uZWN0aW9uOjpZZXMpCisgICAgICAgICAgICByZXR1cm4gY29u
bmVjdGlvbi50ZXJtaW5hdGUoKTsKKyAgICAgICAgU3RyaW5nQnVpbGRlciByZXNwb25zZUJ1aWxk
ZXI7CisgICAgICAgIHJlc3BvbnNlQnVpbGRlci5hcHBlbmQoIkhUVFAvMS4xICIpOworICAgICAg
ICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kTnVtYmVyKHJlc3BvbnNlLnN0YXR1c0NvZGUpOworICAg
ICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAgIHJlc3BvbnNlQnVpbGRl
ci5hcHBlbmQoc3RhdHVzVGV4dChyZXNwb25zZS5zdGF0dXNDb2RlKSk7CisgICAgICAgIHJlc3Bv
bnNlQnVpbGRlci5hcHBlbmQoIlxyXG5Db250ZW50LUxlbmd0aDogIik7CisgICAgICAgIHJlc3Bv
bnNlQnVpbGRlci5hcHBlbmROdW1iZXIocmVzcG9uc2UuYm9keS5sZW5ndGgoKSk7CisgICAgICAg
IHJlc3BvbnNlQnVpbGRlci5hcHBlbmQoIlxyXG4iKTsKKyAgICAgICAgZm9yIChhdXRvJiBwYWly
IDogcmVzcG9uc2UuaGVhZGVyRmllbGRzKSB7CisgICAgICAgICAgICByZXNwb25zZUJ1aWxkZXIu
YXBwZW5kKHBhaXIua2V5KTsKKyAgICAgICAgICAgIHJlc3BvbnNlQnVpbGRlci5hcHBlbmQoIjog
Iik7CisgICAgICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKHBhaXIudmFsdWUpOwogICAg
ICAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZCgiXHJcbiIpOwotICAgICAgICAgICAgZm9y
IChhdXRvJiBwYWlyIDogcmVzcG9uc2UuaGVhZGVyRmllbGRzKSB7Ci0gICAgICAgICAgICAgICAg
cmVzcG9uc2VCdWlsZGVyLmFwcGVuZChwYWlyLmtleSk7Ci0gICAgICAgICAgICAgICAgcmVzcG9u
c2VCdWlsZGVyLmFwcGVuZCgiOiAiKTsKLSAgICAgICAgICAgICAgICByZXNwb25zZUJ1aWxkZXIu
YXBwZW5kKHBhaXIudmFsdWUpOwotICAgICAgICAgICAgICAgIHJlc3BvbnNlQnVpbGRlci5hcHBl
bmQoIlxyXG4iKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJlc3BvbnNlQnVpbGRlci5h
cHBlbmQoIlxyXG4iKTsKLSAgICAgICAgICAgIHJlc3BvbnNlQnVpbGRlci5hcHBlbmQocmVzcG9u
c2UuYm9keSk7Ci0gICAgICAgICAgICBud19jb25uZWN0aW9uX3NlbmQoY29ubmVjdGlvbi5nZXQo
KSwgZGF0YUZyb21TdHJpbmcocmVzcG9uc2VCdWlsZGVyLnRvU3RyaW5nKCkpLmdldCgpLCBjb250
ZXh0LmdldCgpLCB0cnVlLCBeKG53X2Vycm9yX3QgZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBB
U1NFUlQoIWVycm9yKTsKLSAgICAgICAgICAgICAgICByZXNwb25kVG9SZXF1ZXN0cyhjb25uZWN0
aW9uLmdldCgpLCByZXF1ZXN0RGF0YSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfTsKLQot
ICAgICAgICBpZiAoYXV0byogY29udGVudExlbmd0aEJlZ2luID0gc3Ryc3RyKHJlcXVlc3QuZGF0
YSgpLCAiQ29udGVudC1MZW5ndGgiKSkgewotICAgICAgICAgICAgc2l6ZV90IGNvbnRlbnRMZW5n
dGggPSBhdG9pKGNvbnRlbnRMZW5ndGhCZWdpbiArIHN0cmxlbigiQ29udGVudC1MZW5ndGg6ICIp
KTsKLSAgICAgICAgICAgIHNpemVfdCBoZWFkZXJMZW5ndGggPSBkb3VibGVOZXdsaW5lIC0gcmVx
dWVzdC5kYXRhKCkgKyBzdHJsZW4oIlxyXG5cclxuIik7Ci0gICAgICAgICAgICBjb25zdGV4cHIg
c2l6ZV90IG51bGxUZXJtaW5hdGlvbkxlbmd0aCA9IDE7Ci0gICAgICAgICAgICBpZiAocmVxdWVz
dC5zaXplKCkgLSBudWxsVGVybWluYXRpb25MZW5ndGggLSBoZWFkZXJMZW5ndGggPCBjb250ZW50
TGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgbndfY29ubmVjdGlvbl9yZWNlaXZlKGNvbm5lY3Rp
b24uZ2V0KCksIDEsIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSwgbWFrZUJs
b2NrUHRyKFtzZW5kUmVzcG9uc2UgPSBXVEZNb3ZlKHNlbmRSZXNwb25zZSldIChkaXNwYXRjaF9k
YXRhX3QgY29udGVudCwgbndfY29udGVudF9jb250ZXh0X3QgY29udGV4dCwgYm9vbCBjb21wbGV0
ZSwgbndfZXJyb3JfdCBlcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChl
cnJvciB8fCAhY29udGVudCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgICAgICAgICAgc2VuZFJlc3BvbnNlKCk7Ci0gICAgICAgICAgICAgICAgfSkuZ2V0KCkp
OwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQotICAg
ICAgICBzZW5kUmVzcG9uc2UoKTsKLSAgICB9KS5nZXQoKSk7CisgICAgICAgIHJlc3BvbnNlQnVp
bGRlci5hcHBlbmQoIlxyXG4iKTsKKyAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZChyZXNw
b25zZS5ib2R5KTsKKyAgICAgICAgY29ubmVjdGlvbi5zZW5kKHJlc3BvbnNlQnVpbGRlci50b1N0
cmluZygpLCBbY29ubmVjdGlvbiwgcmVxdWVzdERhdGFdIHsKKyAgICAgICAgICAgIHJlc3BvbmRU
b1JlcXVlc3RzKGNvbm5lY3Rpb24sIHJlcXVlc3REYXRhKTsKKyAgICAgICAgfSk7CisgICAgfSk7
CiB9CiAKIHVpbnQxNl90IEhUVFBTZXJ2ZXI6OnBvcnQoKSBjb25zdApAQCAtMjMyLDE5ICsyMDcs
NTIgQEAgdWludDE2X3QgSFRUUFNlcnZlcjo6cG9ydCgpIGNvbnN0CiAgICAgcmV0dXJuIG53X2xp
c3RlbmVyX2dldF9wb3J0KG1fbGlzdGVuZXIuZ2V0KCkpOwogfQogCi1OU1VSTFJlcXVlc3QgKkhU
VFBTZXJ2ZXI6OnJlcXVlc3QoKSBjb25zdAorTlNVUkxSZXF1ZXN0ICpIVFRQU2VydmVyOjpyZXF1
ZXN0KGNvbnN0IFN0cmluZyYgcGF0aCkgY29uc3QKIHsKICAgICBOU1N0cmluZyAqZm9ybWF0Owog
ICAgIHN3aXRjaCAobV9wcm90b2NvbCkgewogICAgIGNhc2UgUHJvdG9jb2w6Okh0dHA6Ci0gICAg
ICAgIGZvcm1hdCA9IEAiaHR0cDovLzEyNy4wLjAuMTolZC8iOworICAgICAgICBmb3JtYXQgPSBA
Imh0dHA6Ly8xMjcuMC4wLjE6JWQlcyI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHJvdG9j
b2w6Okh0dHBzOgogICAgIGNhc2UgUHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUzoKLSAgICAg
ICAgZm9ybWF0ID0gQCJodHRwczovLzEyNy4wLjAuMTolZC8iOworICAgICAgICBmb3JtYXQgPSBA
Imh0dHBzOi8vMTI3LjAuMC4xOiVkJXMiOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0
dXJuIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6Zm9ybWF0LCBwb3J0KCldXV07CisgICAgcmV0dXJuIFtO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6Zm9ybWF0LCBwb3J0KCksIHBhdGgudXRmOCgpLmRhdGEoKV1dXTsK
K30KKwordm9pZCBDb25uZWN0aW9uOjpyZWNlaXZlSFRUUFJlcXVlc3QoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8Y2hhcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIsIFZlY3RvcjxjaGFy
PiYmIGJ1ZmZlcikgY29uc3QKK3sKKyAgICBud19jb25uZWN0aW9uX3JlY2VpdmUobV9jb25uZWN0
aW9uLmdldCgpLCAxLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksIG1ha2VC
bG9ja1B0cihbY29ubmVjdGlvbiA9ICp0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildKGRpc3BhdGNoX2Rh
dGFfdCBjb250ZW50LCBud19jb250ZW50X2NvbnRleHRfdCwgYm9vbCwgbndfZXJyb3JfdCBlcnJv
cikgbXV0YWJsZSB7CisgICAgICAgIGlmIChlcnJvciB8fCAhY29udGVudCkKKyAgICAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICBidWZmZXIuYXBwZW5kVmVj
dG9yKHZlY3RvckZyb21EYXRhKGNvbnRlbnQpKTsKKyAgICAgICAgaWYgKGF1dG8qIGRvdWJsZU5l
d2xpbmUgPSBzdHJuc3RyKGJ1ZmZlci5kYXRhKCksICJcclxuXHJcbiIsIGJ1ZmZlci5zaXplKCkp
KSB7CisgICAgICAgICAgICBpZiAoYXV0byogY29udGVudExlbmd0aEJlZ2luID0gc3RybnN0cihi
dWZmZXIuZGF0YSgpLCAiQ29udGVudC1MZW5ndGgiLCBidWZmZXIuc2l6ZSgpKSkgeworICAgICAg
ICAgICAgICAgIHNpemVfdCBjb250ZW50TGVuZ3RoID0gYXRvaShjb250ZW50TGVuZ3RoQmVnaW4g
KyBzdHJsZW4oIkNvbnRlbnQtTGVuZ3RoOiAiKSk7CisgICAgICAgICAgICAgICAgc2l6ZV90IGhl
YWRlckxlbmd0aCA9IGRvdWJsZU5ld2xpbmUgLSBidWZmZXIuZGF0YSgpICsgc3RybGVuKCJcclxu
XHJcbiIpOworICAgICAgICAgICAgICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gaGVhZGVyTGVuZ3Ro
IDwgY29udGVudExlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb24u
cmVjZWl2ZUhUVFBSZXF1ZXN0KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKGJ1
ZmZlcikpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShidWZmZXIpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBjb25uZWN0aW9uLnJl
Y2VpdmVIVFRQUmVxdWVzdChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgV1RGTW92ZShidWZm
ZXIpKTsKKyAgICB9KS5nZXQoKSk7Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6c2VuZChTdHJpbmcm
JiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
IGNvbnN0Cit7CisgICAgbndfY29ubmVjdGlvbl9zZW5kKG1fY29ubmVjdGlvbi5nZXQoKSwgZGF0
YUZyb21TdHJpbmcoV1RGTW92ZShtZXNzYWdlKSkuZ2V0KCksIE5XX0NPTk5FQ1RJT05fREVGQVVM
VF9NRVNTQUdFX0NPTlRFWFQsIHRydWUsIG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0obndfZXJyb3JfdCBlcnJvcikgbXV0YWJsZSB7
CisgICAgICAgIEFTU0VSVCghZXJyb3IpOworICAgICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIp
CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pLmdldCgpKTsKK30KKwor
dm9pZCBDb25uZWN0aW9uOjp0ZXJtaW5hdGUoKSBjb25zdAoreworICAgIG53X2Nvbm5lY3Rpb25f
Y2FuY2VsKG1fY29ubmVjdGlvbi5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkK
</data>
<flag name="review"
          id="415381"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>