<?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>106713</bug_id>
          
          <creation_ts>2013-01-11 15:41:15 -0800</creation_ts>
          <short_desc>[WK2] Network process unblocks all waiting threads when any sync reply arrives</short_desc>
          <delta_ts>2013-01-11 16:10:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>andersca</cc>
    
    <cc>beidson</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>805696</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-11 15:41:15 -0800</bug_when>
    <thetext>BlockingResourceMap has a single ThreadCondition, and wakes up all waiting loader threads.

This does not have to be so inefficient.

&lt;rdar://problem/12886430&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805701</commentid>
    <comment_count>1</comment_count>
      <attachid>182437</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-11 15:47:31 -0800</bug_when>
    <thetext>Created attachment 182437
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805707</commentid>
    <comment_count>2</comment_count>
      <attachid>182437</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-01-11 15:55:09 -0800</bug_when>
    <thetext>Comment on attachment 182437
proposed patch

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

&gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:190
&gt; -    if (!send(Messages::WebResourceLoader::WillSendRequest(requestID, request, redirectResponse))) {
&gt; +    if (!sendSync(Messages::WebResourceLoader::WillSendRequest(request, redirectResponse), Messages::WebResourceLoader::WillSendRequest::Reply(request)))

If the premise is that it&apos;s okay to make this a sync message because it&apos;s *always* on a background thread, please ASSERT to that effect.

&gt; Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp:288
&gt; -    if (!send(Messages::WebResourceLoader::CanAuthenticateAgainstProtectionSpace(requestID, protectionSpace)))
&gt; +    bool result;
&gt; +    if (!sendSync(Messages::WebResourceLoader::CanAuthenticateAgainstProtectionSpace(protectionSpace), Messages::WebResourceLoader::CanAuthenticateAgainstProtectionSpace::Reply(result)))

If the premise is that it&apos;s okay to make this a sync message because it&apos;s *always* on a background thread, please ASSERT to that effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805722</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-11 16:10:05 -0800</bug_when>
    <thetext>Good point.

Committed &lt;http://trac.webkit.org/r139516&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182437</attachid>
            <date>2013-01-11 15:47:31 -0800</date>
            <delta_ts>2013-01-11 15:55:09 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>SyncMessagesInNetworkProcess.txt</filename>
            <type>text/plain</type>
            <size>18901</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzOTUxMSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEzLTAxLTExICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIE5ldHdvcmsgcHJv
Y2VzcyB1bmJsb2NrcyBhbGwgd2FpdGluZyB0aHJlYWRzIHdoZW4gYW55IHN5bmMgcmVwbHkgYXJy
aXZlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2
NzEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3dp
dGNoIHRvIHNlbmRpbmcgc3luYyBDb3JlSVBDIG1lc3NhZ2VzLCB3aGljaCBpcyBub3cgcG9zc2li
bGUuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcDogKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENs
b3NlKToKKyAgICAgICAgV2Ugbm8gbG9uZ2VyIGhhdmUgcmVzcG9uc2UgbWFwcy4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KTogSnVzdCBzZW5k
IGEgc3luYyBtZXNzYWdlLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOiBEaXR0by4KKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YUFycmF5KTogQWRk
ZWQgYW4gdW5yZWxhdGVkIGFzc2VydGlvbi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgUmVtb3ZlZCBubyBsb25nZXIgdXNl
ZCByZXBseSBtZXNzYWdlcyBhbmQgdGhlaXIgaGFuZGxlcnMuCisKKyAgICAgICAgKiBTaGFyZWQv
QmxvY2tpbmdSZXNwb25zZU1hcC5oOiBSZW1vdmVkIGEgYm9vbCB2ZXJzaW9uLCB3aGljaCB3YXMg
bm90IHBlcmZlY3RseQorICAgICAgICBzYWZlLCBhbmQgb25seSB1c2VkIGluIE5ldHdvcmtQcm9j
ZXNzLgorICAgICAgICAoQmxvY2tpbmdSZXNwb25zZU1hcDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKTog
VXBkYXRlZCBhIHN0aWxsIHZhbGlkIEZJWE1FIHRvIG5vdCByZWZlcgorICAgICAgICB0byBuZXR3
b3JrIHByb2Nlc3MuCisgICAgICAgIChCbG9ja2luZ1Jlc3BvbnNlTWFwOjpjYW5jZWwpOiBEaXR0
by4KKworICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRS
ZWNlaXZlU3luY01lc3NhZ2UpOgorICAgICAgICBQbHVtYmluZyB0byBoYW5kbGUgc3luYyBtZXNz
YWdlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6Y2FuQXV0aGVudGljYXRlQWdh
aW5zdFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICBVcGRhdGVkIChzaW1wbGlmaWVkKSBzeW5jIG1l
c3NhZ2VzIGFuZCB0aGVpciBoYW5kbGVycy4KKwogMjAxMy0wMS0xMSAgRGFuIEJlcm5zdGVpbiAg
PG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIEV4Y2x1ZGUgdW51c2VkIHJlc291cmNlcy4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDEzOTA4MikKKysrIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDEwICsxMDMsNiBAQCB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDCiAgICAgCiAgICAgTmV0d29ya1Byb2Nlc3M6OnNoYXJl
ZCgpLnJlbW92ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKHRoaXMpOwogCi0gICAgLy8g
VW5ibG9jayB3YWl0aW5nIHRocmVhZHMuCi0gICAgbV93aWxsU2VuZFJlcXVlc3RSZXNwb25zZU1h
cC5jYW5jZWwoKTsKLSAgICBtX2NhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VS
ZXNwb25zZU1hcC5jYW5jZWwoKTsKLQogICAgIFZlY3RvcjxOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzc09ic2VydmVyKj4gb2JzZXJ2ZXJzOwogICAgIGNvcHlUb1ZlY3RvcihtX29ic2VydmVy
cywgb2JzZXJ2ZXJzKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9ic2VydmVycy5zaXpl
KCk7ICsraSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMTM5MDgy
KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsOSArNjIsNiBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGlzU2VyaWFsTG9hZGluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3NlcmlhbExv
YWRpbmdFbmFibGVkOyB9CiAKLSAgICBCbG9ja2luZ1Jlc3BvbnNlTWFwPFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCo+JiB3aWxsU2VuZFJlcXVlc3RSZXNwb25zZU1hcCgpIHsgcmV0dXJuIG1fd2ls
bFNlbmRSZXF1ZXN0UmVzcG9uc2VNYXA7IH0KLSAgICBCbG9ja2luZ0Jvb2xSZXNwb25zZU1hcCYg
Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZVJlc3BvbnNlTWFwKCkgeyByZXR1
cm4gbV9jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlUmVzcG9uc2VNYXA7IH0K
LQogcHJpdmF0ZToKICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhDb3JlSVBDOjpD
b25uZWN0aW9uOjpJZGVudGlmaWVyKTsKIApAQCAtOTYsOSArOTMsNiBAQCBwcml2YXRlOgogICAg
IAogICAgIEhhc2hTZXQ8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NPYnNlcnZlcio+IG1f
b2JzZXJ2ZXJzOwogCi0gICAgQmxvY2tpbmdSZXNwb25zZU1hcDxXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QqPiBtX3dpbGxTZW5kUmVxdWVzdFJlc3BvbnNlTWFwOwotICAgIEJsb2NraW5nQm9vbFJl
c3BvbnNlTWFwIG1fY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZVJlc3BvbnNl
TWFwOwotCiAgICAgYm9vbCBtX3NlcmlhbExvYWRpbmdFbmFibGVkOwogfTsKIApJbmRleDogU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCShyZXZpc2lvbiAxMzkwODIpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsMzMg
KzE4MiwxMyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbChSZXNvCiAgICAg
c2NoZWR1bGVTdG9wT25NYWluVGhyZWFkKCk7CiB9CiAKLXN0YXRpYyB1aW50NjRfdCBnZW5lcmF0
ZVdpbGxTZW5kUmVxdWVzdElEKCkKLXsKLSAgICBzdGF0aWMgaW50NjRfdCB1bmlxdWVXaWxsU2Vu
ZFJlcXVlc3RJRDsKLSAgICByZXR1cm4gYXRvbWljSW5jcmVtZW50KCZ1bmlxdWVXaWxsU2VuZFJl
cXVlc3RJRCk7Ci19Ci0KIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgLy8gV2Ugb25seSBleHBlY3Qg
dG8gZ2V0IHRoZSB3aWxsU2VuZFJlcXVlc3QgY2FsbGJhY2sgZnJvbSBSZXNvdXJjZUhhbmRsZSBh
cyB0aGUgcmVzdWx0IG9mIGEgcmVkaXJlY3QuCiAgICAgQVNTRVJUKCFyZWRpcmVjdFJlc3BvbnNl
LmlzTnVsbCgpKTsKIAotICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IGdlbmVyYXRlV2lsbFNlbmRS
ZXF1ZXN0SUQoKTsKLQotICAgIGlmICghc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6
OldpbGxTZW5kUmVxdWVzdChyZXF1ZXN0SUQsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKSkg
eworICAgIGlmICghc2VuZFN5bmMoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpXaWxsU2Vu
ZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSksIE1lc3NhZ2VzOjpXZWJSZXNvdXJj
ZUxvYWRlcjo6V2lsbFNlbmRSZXF1ZXN0OjpSZXBseShyZXF1ZXN0KSkpCiAgICAgICAgIHJlcXVl
c3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIE93
blB0cjxSZXNvdXJjZVJlcXVlc3Q+IG5ld1JlcXVlc3QgPSBtX2Nvbm5lY3Rpb24tPndpbGxTZW5k
UmVxdWVzdFJlc3BvbnNlTWFwKCkud2FpdEZvclJlc3BvbnNlKHJlcXVlc3RJRCk7Ci0gICAgcmVx
dWVzdCA9IG5ld1JlcXVlc3QgPyAqbmV3UmVxdWVzdCA6IFJlc291cmNlUmVxdWVzdCgpOwotCi0g
ICAgUnVuTG9vcDo6bWFpbigpLT5kaXNwYXRjaChXVEY6OmJpbmQoJk5ldHdvcmtSZXNvdXJjZUxv
YWRTY2hlZHVsZXI6OnJlY2VpdmVkUmVkaXJlY3QsICZOZXR3b3JrUHJvY2Vzczo6c2hhcmVkKCku
bmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcigpLCBtX2lkZW50aWZpZXIsIHJlcXVlc3QudXJs
KCkpKTsKLX0KLQotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEhh
bmRsZWQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IG5ld1JlcXVlc3QpCi17Ci0gICAgbV9jb25uZWN0aW9uLT53aWxsU2VuZFJlcXVlc3RSZXNwb25z
ZU1hcCgpLmRpZFJlY2VpdmVSZXNwb25zZShyZXF1ZXN0SUQsIGFkb3B0UHRyKG5ldyBSZXNvdXJj
ZVJlcXVlc3QobmV3UmVxdWVzdCkpKTsKIH0KIAogLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTog
TWFueSBvZiB0aGUgZm9sbG93aW5nIFJlc291cmNlSGFuZGxlQ2xpZW50IG1ldGhvZHMgZGVmaW5p
dGVseSBuZWVkIGltcGxlbWVudGF0aW9ucy4gQSBmZXcgd2lsbCBub3QuCkBAIC0zMDIsMjUgKzI4
MiwxMyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmVjZWl2ZWRBdXRoCiB9CiAKICNp
ZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQotc3RhdGljIHVpbnQ2NF90IGdl
bmVyYXRlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUlEKCkKLXsKLSAgICBz
dGF0aWMgaW50NjRfdCB1bmlxdWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
SUQ7Ci0gICAgcmV0dXJuIGF0b21pY0luY3JlbWVudCgmdW5pcXVlQ2FuQXV0aGVudGljYXRlQWdh
aW5zdFByb3RlY3Rpb25TcGFjZUlEKTsKLX0KLQogYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoUmVzb3VyY2VIYW5kbGUqLCBj
b25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKIHsKLSAgICB1aW50NjRfdCBy
ZXF1ZXN0SUQgPSBnZW5lcmF0ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJ
RCgpOwotCi0gICAgaWYgKCFzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6Q2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShyZXF1ZXN0SUQsIHByb3RlY3Rpb25TcGFj
ZSkpKQorICAgIGJvb2wgcmVzdWx0OworICAgIGlmICghc2VuZFN5bmMoTWVzc2FnZXM6OldlYlJl
c291cmNlTG9hZGVyOjpDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHByb3Rl
Y3Rpb25TcGFjZSksIE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6Q2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZTo6UmVwbHkocmVzdWx0KSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQ
cm90ZWN0aW9uU3BhY2VSZXNwb25zZU1hcCgpLndhaXRGb3JSZXNwb25zZShyZXF1ZXN0SUQpOwot
fQotCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFBy
b3RlY3Rpb25TcGFjZUhhbmRsZWQodWludDY0X3QgcmVxdWVzdElELCBib29sIGNhbkF1dGhlbnRp
Y2F0ZSkKLXsKLSAgICBtX2Nvbm5lY3Rpb24tPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0
aW9uU3BhY2VSZXNwb25zZU1hcCgpLmRpZFJlY2VpdmVSZXNwb25zZShyZXF1ZXN0SUQsIGNhbkF1
dGhlbnRpY2F0ZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KICNlbmRpZgogCkBAIC0zMzMsNiAr
MzAxLDcgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN1cHBvcnRzRGF0YQogCiB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFBcnJheShXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZSosIENGQXJyYXlSZWYpCiB7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9u
IDEzOTA4MikKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsOCArMTEwLDYgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXIoY29uc3QgTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMmLCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyopOwogCi0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RIYW5kbGVkKHVpbnQ2NF90
IHJlcXVlc3RJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgdm9pZCBj
YW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSGFuZGxlZCh1aW50NjRfdCByZXF1
ZXN0SUQsIGJvb2wgY2FuQXV0aGVudGljYXRlKTsKICAgICB2b2lkIHJlY2VpdmVkQXV0aGVudGlj
YXRpb25DcmVkZW50aWFsKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwg
Y29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYpOwogICAgIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0VG9D
b250aW51ZVdpdGhvdXRBdXRoZW50aWNhdGlvbkNyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKICAgICB2b2lkIHJlY2VpdmVkQXV0aGVudGljYXRpb25D
YW5jZWxsYXRpb24oY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5t
ZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4JKHJldmlzaW9uIDEzOTA4MikKKysrIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5tZXNzYWdl
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjMsOSArMjMsNiBAQAogI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+IE5ldHdvcmtSZXNvdXJjZUxvYWRlciB7Ci0gICAgV2ls
bFNlbmRSZXF1ZXN0SGFuZGxlZCh1aW50NjRfdCByZXF1ZXN0SUQsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCBuZXdSZXF1ZXN0KQotICAgIENhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2VIYW5kbGVkKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBjYW5BdXRoZW50aWNhdGUpCi0g
ICAgCiAgICAgUmVjZWl2ZWRBdXRoZW50aWNhdGlvbkNyZWRlbnRpYWwoV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlLCBXZWJDb3JlOjpDcmVkZW50aWFsIGNyZWRlbnRp
YWwpCiAgICAgUmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRBdXRoZW50aWNhdGlvbkNy
ZWRlbnRpYWwoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlKQogICAg
IFJlY2VpdmVkQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24oV2ViQ29yZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgY2hhbGxlbmdlKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0Jsb2Nr
aW5nUmVzcG9uc2VNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQmxv
Y2tpbmdSZXNwb25zZU1hcC5oCShyZXZpc2lvbiAxMzkwODIpCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQmxvY2tpbmdSZXNwb25zZU1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3
IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKCFtX3Jlc3BvbnNlcy5jb250YWlucyhyZXF1ZXN0
SUQpKTsKIAogICAgICAgICBtX3Jlc3BvbnNlcy5zZXQocmVxdWVzdElELCByZXNwb25zZSk7Ci0g
ICAgICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IDxyZGFyOi8vcHJvYmxlbS8xMjg4NjQz
MD46IFdha2luZyB1cCBhbGwgdGhyZWFkcyBpcyBxdWl0ZSBpbmVmZmljaWVudC4KKyAgICAgICAg
Ly8gRklYTUU6IFdha2luZyB1cCBhbGwgdGhyZWFkcyBpcyBxdWl0ZSBpbmVmZmljaWVudC4KICAg
ICAgICAgbV9jb25kaXRpb24uYnJvYWRjYXN0KCk7CiAgICAgfQogCkBAIC02OSw3ICs2OSw3IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fY2FuY2VsZWQgPSB0cnVlOwogCi0gICAgICAgIC8v
IEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IDxyZGFyOi8vcHJvYmxlbS8xMjg4NjQzMD46IFdha2lu
ZyB1cCBhbGwgdGhyZWFkcyBpcyBxdWl0ZSBpbmVmZmljaWVudC4KKyAgICAgICAgLy8gRklYTUU6
IFdha2luZyB1cCBhbGwgdGhyZWFkcyBpcyBxdWl0ZSBpbmVmZmljaWVudC4KICAgICAgICAgbV9j
b25kaXRpb24uYnJvYWRjYXN0KCk7CiAgICAgfQogCkBAIC04MSw1OCArODEsNCBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9jYW5jZWxlZDsKIH07CiAKLWNsYXNzIEJsb2NraW5nQm9vbFJlc3BvbnNl
TWFwIHsKLVdURl9NQUtFX05PTkNPUFlBQkxFKEJsb2NraW5nQm9vbFJlc3BvbnNlTWFwKTsKLXB1
YmxpYzoKLSAgICBCbG9ja2luZ0Jvb2xSZXNwb25zZU1hcCgpIDogbV9jYW5jZWxlZChmYWxzZSkg
eyB9Ci0gICAgfkJsb2NraW5nQm9vbFJlc3BvbnNlTWFwKCkgeyBBU1NFUlQobV9yZXNwb25zZXMu
aXNFbXB0eSgpKTsgfQotCi0gICAgYm9vbCB3YWl0Rm9yUmVzcG9uc2UodWludDY0X3QgcmVxdWVz
dElEKQotICAgIHsKLSAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX211dGV4KTsKLQotICAgICAgICAgICAgLy8gRklYTUU6IERpZmZlcmVudGlh
dGUgYmV0d2VlbiBjYW5jZWxlZCB3YWl0IGFuZCBhIG5lZ2F0aXZlIHJlc3BvbnNlLgotICAgICAg
ICAgICAgaWYgKG1fY2FuY2VsZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgICAgICAgICBIYXNoTWFwPHVpbnQ2NF90LCBib29sPjo6aXRlcmF0b3IgaXRlciA9IG1fcmVz
cG9uc2VzLmZpbmQocmVxdWVzdElEKTsKLSAgICAgICAgICAgIGlmIChpdGVyICE9IG1fcmVzcG9u
c2VzLmVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBpdGVyLT52YWx1ZTsK
LSAgICAgICAgICAgICAgICBtX3Jlc3BvbnNlcy5yZW1vdmUoaXRlcik7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbV9jb25kaXRp
b24ud2FpdChtX211dGV4KTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0KLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCByZXF1ZXN0SUQsIGJv
b2wgcmVzcG9uc2UpCi0gICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7
Ci0gICAgICAgIEFTU0VSVCghbV9yZXNwb25zZXMuY29udGFpbnMocmVxdWVzdElEKSk7Ci0KLSAg
ICAgICAgbV9yZXNwb25zZXMuc2V0KHJlcXVlc3RJRCwgcmVzcG9uc2UpOwotICAgICAgICAvLyBG
SVhNRSAoTmV0d29ya1Byb2Nlc3MpOiA8cmRhcjovL3Byb2JsZW0vMTI4ODY0MzA+OiBXYWtpbmcg
dXAgYWxsIHRocmVhZHMgaXMgcXVpdGUgaW5lZmZpY2llbnQuCi0gICAgICAgIG1fY29uZGl0aW9u
LmJyb2FkY2FzdCgpOwotICAgIH0KLQotICAgIHZvaWQgY2FuY2VsKCkKLSAgICB7Ci0gICAgICAg
IG1fY2FuY2VsZWQgPSB0cnVlOwotCi0gICAgICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6
IDxyZGFyOi8vcHJvYmxlbS8xMjg4NjQzMD46IFdha2luZyB1cCBhbGwgdGhyZWFkcyBpcyBxdWl0
ZSBpbmVmZmljaWVudC4KLSAgICAgICAgbV9jb25kaXRpb24uYnJvYWRjYXN0KCk7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIE11dGV4IG1fbXV0ZXg7Ci0gICAgVGhyZWFkQ29uZGl0aW9uIG1fY29u
ZGl0aW9uOwotCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgYm9vbD4gbV9yZXNwb25zZXM7Ci0gICAg
Ym9vbCBtX2NhbmNlbGVkOwotfTsKLQogI2VuZGlmIC8vIEJsb2NraW5nUmVzcG9uc2VNYXBfaApJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDEzOTA4MikKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2MiwxOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6ZGlkUmVjZWl2CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3Zv
aWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoQ29yZUlQ
Qzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwg
Q29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIsIE93blB0cjxDb3JlSVBDOjpNZXNzYWdl
RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK3sKKyAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6
Ok1lc3NhZ2VDbGFzc1dlYlJlc291cmNlTG9hZGVyPigpKSB7CisgICAgICAgIGlmIChXZWJSZXNv
dXJjZUxvYWRlciogd2ViUmVzb3VyY2VMb2FkZXIgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS53ZWJSZXNvdXJjZUxvYWRlckZvcklkZW50aWZpZXIoZGVj
b2Rlci5kZXN0aW5hdGlvbklEKCkpKQorICAgICAgICAgICAgd2ViUmVzb3VyY2VMb2FkZXItPmRp
ZFJlY2VpdmVTeW5jV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJ
RCwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZENsb3NlKENvcmVJUEM6OkNvbm5lY3Rpb24qKQogewogICAgIC8vIFRo
ZSBOZXR3b3JrUHJvY2VzcyBwcm9iYWJseSBjcmFzaGVkLgpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uaAkocmV2aXNpb24gMTM5MDgyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2
ICs2MSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbios
IENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3Jl
SVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwgT3duUHRyPENvcmVJUEM6
Ok1lc3NhZ2VFbmNvZGVyPiYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShDb3JlSVBDOjpD
b25uZWN0aW9uKik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShD
b3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgT1ZFUlJJREU7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTM5MDgyKQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjgsMTQgKzY4LDEyIEBAIHVpbnQ2NF90IFdlYlJlc291cmNlTG9hZGVyOjpkZXN0aW5h
dGlvbkkKICAgICByZXR1cm4gbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCk7CiB9CiAKLXZvaWQg
V2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcHJvcG9zZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlKQordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcHJvcG9zZWRSZXF1ZXN0LCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVl
c3QpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6
OndpbGxTZW5kUmVxdWVzdCB0byAnJXMnIiwgcHJvcG9zZWRSZXF1ZXN0LnVybCgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogICAgIAotICAgIFJlc291cmNlUmVxdWVzdCBuZXdSZXF1ZXN0ID0g
cHJvcG9zZWRSZXF1ZXN0OworICAgIG5ld1JlcXVlc3QgPSBwcm9wb3NlZFJlcXVlc3Q7CiAgICAg
bV9jb3JlTG9hZGVyLT53aWxsU2VuZFJlcXVlc3QobmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25z
ZSk7Ci0KLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OldpbGxTZW5k
UmVxdWVzdEhhbmRsZWQocmVxdWVzdElELCBuZXdSZXF1ZXN0KSk7CiB9CiAKIHZvaWQgV2ViUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZVdpdGhDZXJ0aWZpY2F0ZUluZm8oY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZv
JiBjZXJ0aWZpY2F0ZUluZm8pCkBAIC0xMjIsOSArMTIwLDkgQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZVJlc291cgogICAgIG1fY29yZUxvYWRlci0+ZGlkRmluaXNoTG9hZGlu
ZyhmaW5pc2hUaW1lKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y2FuQXV0aGVudGlj
YXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFByb3Rl
Y3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y2Fu
QXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb25zdCBQcm90ZWN0aW9uU3BhY2Um
IHByb3RlY3Rpb25TcGFjZSwgYm9vbCYgcmVzdWx0KQogewotICAgIHNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6Q2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFj
ZUhhbmRsZWQocmVxdWVzdElELCBtX2NvcmVMb2FkZXItPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQ
cm90ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlKSkpOworICAgIHJlc3VsdCA9IG1fY29yZUxv
YWRlci0+Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3Bh
Y2UpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5oCShyZXZpc2lvbiAxMzkwODIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiAr
NjYsNyBAQCBwdWJsaWM6CiAgICAgdWludDY0X3QgZGVzdGluYXRpb25JRCgpIGNvbnN0OwogCiAg
ICAgdm9pZCBkaWRSZWNlaXZlV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlKENvcmVJUEM6OkNvbm5l
Y3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlU3luY1dlYlJlc291cmNlTG9hZGVyTWVzc2FnZShDb3JlSVBDOjpD
b25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYs
IE93blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4mKTsKIAogICAgIHVzaW5nIFJlZkNvdW50
ZWQ8V2ViUmVzb3VyY2VMb2FkZXI+OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDxXZWJSZXNv
dXJjZUxvYWRlcj46OmRlcmVmOwpAQCAtNzksMTQgKzgwLDE0IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgV2ViUmVzb3VyY2VMb2FkZXIoUGFzc1JlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cj4pOwogCi0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QodWludDY0X3QgcmVxdWVzdElELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZWRpcmVjdFJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3Qp
OwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlV2l0aENlcnRpZmljYXRlSW5mbyhjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8m
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2Um
LCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoLCBib29sIGFsbEF0T25jZSk7CiAgICAgdm9pZCBk
aWRGaW5pc2hSZXNvdXJjZUxvYWQoZG91YmxlIGZpbmlzaFRpbWUpOwogICAgIHZvaWQgZGlkRmFp
bFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYsIGRvdWJs
ZSBmaW5pc2hUaW1lKTsKIAotICAgIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rp
b25TcGFjZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFj
ZSYpOworICAgIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb25z
dCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmLCBib29sJiByZXN1bHQpOwogICAgIHZvaWQgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJik7CiAgICAgdm9pZCBkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxMzkwODIpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTIzLDEzICsyMywxMyBAQAogbWVzc2FnZXMgLT4gV2ViUmVzb3VyY2VM
b2FkZXIgewogCiAgICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogV2UnbGwgbmVlZCBtdWNo
IG1vcmUgZ3JhbnVsYXJpdHkgZm9yIHJlc3BvbnNlIG1lc3NhZ2VzLgotICAgIFdpbGxTZW5kUmVx
dWVzdCh1aW50NjRfdCByZXF1ZXN0SUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UpCisgICAgV2lsbFNl
bmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UpIC0+IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgbmV3UmVxdWVzdCkKICAgICBEaWRSZWNlaXZlUmVzcG9uc2VXaXRoQ2VydGlmaWNhdGVJbmZv
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYktpdDo6UGxhdGZvcm1DZXJ0
aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvKQogICAgIERpZFJlY2VpdmVEYXRhKENvcmVJUEM6
OkRhdGFSZWZlcmVuY2UgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBhbGxB
dE9uY2UpCiAgICAgRGlkRmluaXNoUmVzb3VyY2VMb2FkKGRvdWJsZSBmaW5pc2hUaW1lKQogICAg
IERpZEZhaWxSZXNvdXJjZUxvYWQoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKICAgICAK
LSAgICBDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHVpbnQ2NF90IHJlcXVl
c3RJRCwgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlIHByb3RlY3Rpb25TcGFjZSkKKyAgICBDYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKFdlYkNvcmU6OlByb3RlY3Rpb25TcGFj
ZSBwcm90ZWN0aW9uU3BhY2UpIC0+IChib29sIHJlc3BvbnNlKQogICAgIERpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFs
bGVuZ2UpCiAgICAgRGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlKQogCg==
</data>
<flag name="review"
          id="200433"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>