<?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>147342</bug_id>
          
          <creation_ts>2015-07-27 16:45:26 -0700</creation_ts>
          <short_desc>Clean up usesAsyncCallbacks handling in ResourceHandle</short_desc>
          <delta_ts>2015-07-28 18:28:20 -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>Page Loading</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></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>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>japhet</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1112590</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-07-27 16:45:26 -0700</bug_when>
    <thetext>ResourceHandle always asks the client whether it uses async callbacks, and it has special cases for when there is no client. But we start with a non-null client and zero it out, after which it&apos;s not possible to guess what the behavior was.

The client behavior determines how we set up an NSURLConnection.

In particular, this means that we could respond to NSURLConnection delegates incorrectly at the time when a load is being shut down. At the worst (theoretical) case, we&apos;d even leak delegate threads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112710</commentid>
    <comment_count>1</comment_count>
      <attachid>257648</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-07-28 08:52:36 -0700</bug_when>
    <thetext>Created attachment 257648
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112750</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-28 10:28:41 -0700</bug_when>
    <thetext>Attachment 257648 did not pass style-queue:


ERROR: Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp:422:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/WebCore/platform/network/mac/ResourceHandleMac.mm:633:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 2 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112785</commentid>
    <comment_count>3</comment_count>
      <attachid>257648</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-07-28 11:45:15 -0700</bug_when>
    <thetext>Comment on attachment 257648
proposed patch

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

&gt; Source/WebCore/platform/network/ResourceHandle.h:255
&gt; +#if PLATFORM(COCOA)
&gt; +    bool usesAsyncCallbacks() const;
&gt; +#endif

Since the BlobResourceHandle code is not inside PLATFORM(COCOA), this needs to be available cross-platform. I think that means that we need to put considerably more of this code outside conditionals.

&gt; Source/WebCore/platform/network/ResourceHandleInternal.h:101
&gt; +            , m_usesAsyncCallbacks(client &amp;&amp; client-&gt;usesAsyncCallbacks())

It’s a little peculiar to use a client callback to supply a flag that is read one time when initializing. We might want to change the way this works to use an argument passed when constructing a resource handle instead of a callback to the client, if we can do that in a clean enough style.

&gt; Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp:429
&gt; +        return false; // Ignored by caller.
&gt; +    } else
&gt; +        return client &amp;&amp; client-&gt;canAuthenticateAgainstProtectionSpace(this, protectionSpace);

Normally we don’t use an else after return.

&gt; Source/WebCore/platform/network/mac/ResourceHandleMac.mm:640
&gt;      } else
&gt; -        return client() &amp;&amp; client()-&gt;canAuthenticateAgainstProtectionSpace(this, protectionSpace);
&gt; +        return client &amp;&amp; client-&gt;canAuthenticateAgainstProtectionSpace(this, protectionSpace);

Normally we don’t do an else after return.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112792</commentid>
    <comment_count>4</comment_count>
      <attachid>257666</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-07-28 11:55:31 -0700</bug_when>
    <thetext>Created attachment 257666
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112987</commentid>
    <comment_count>5</comment_count>
      <attachid>257666</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-28 18:28:16 -0700</bug_when>
    <thetext>Comment on attachment 257666
patch for landing

Clearing flags on attachment: 257666

Committed r187533: &lt;http://trac.webkit.org/changeset/187533&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112988</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-28 18:28:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257648</attachid>
            <date>2015-07-28 08:52:36 -0700</date>
            <delta_ts>2015-07-28 11:55:31 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>UsesAsyncCallbacks.txt</filename>
            <type>text/plain</type>
            <size>16233</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NzQ4NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE1LTA3LTI4ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIHVzZXNBc3lu
Y0NhbGxiYWNrcyBoYW5kbGluZyBpbiBSZXNvdXJjZUhhbmRsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3MzQyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcmUgInVzZXNBc3luY0NhbGxiYWNrcyIg
Yml0IGluIFJlc291cmNlSGFuZGxlLCBiZWNhdXNlIGl0J3Mgbm90IGFjY2Vzc2libGUKKyAgICAg
ICAgdmlhIGNsaWVudCBvbmNlIHRoZSBjbGllbnQgaXMgemVyb2VkIG91dC4KKworICAgICAgICBD
aGFuZ2VkIFJlc291cmNlSGFuZGxlOjpzZXRDbGllbnQgaW50byBSZXNvdXJjZUhhbmRsZTo6Y2xl
YXJDbGllbnQsIGJlY2F1c2UgaXQncworICAgICAgICBvbmx5IGV2ZXIgdXNlZCB0byB6ZXJvIG91
dCB0aGUgY2xpZW50IHBvaW50ZXIsIGFuZCBpdCBkb2Vzbid0IHN1cHBvcnQgY2hhbmdpbmcgaXQu
CisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMpOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZUdyb3VwOjpzdG9wTG9hZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291
cmNlSGFuZGxlOjpub3RpZnlSZXNwb25zZU9uU3VjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpC
bG9iUmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJlc3BvbnNlT25FcnJvcik6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZTo6Y2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpj
bGVhckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0RGVmZXJz
TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6dXNlc0FzeW5jQ2Fs
bGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRDbGllbnQpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlSW50ZXJuYWw6OlJlc291cmNlSGFuZGxlSW50ZXJu
YWwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjYW5BdXRoZW50aWNh
dGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
OjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2hvdWxkVXNlQ3Jl
ZGVudGlhbFN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmNhbkF1
dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGU6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsQ2FjaGVS
ZXNwb25zZSk6CisKIDIwMTUtMDctMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFVzZSBmYXN0TWFsbG9jIGluc3RlYWQgb2YgZ19z
bGljZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZp
c2lvbiAxODc0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6
cmVsZWFzZVJlc291cmNlcygpCiAgICAgICAgIC8vIENsZWFyIG91dCB0aGUgUmVzb3VyY2VIYW5k
bGUncyBjbGllbnQgc28gdGhhdCBpdCBkb2Vzbid0IHRyeSB0byBjYWxsCiAgICAgICAgIC8vIHVz
IGJhY2sgYWZ0ZXIgd2UgcmVsZWFzZSBpdCwgdW5sZXNzIGl0IGhhcyBiZWVuIHJlcGxhY2VkIGJ5
IHNvbWVvbmUgZWxzZS4KICAgICAgICAgaWYgKG1faGFuZGxlLT5jbGllbnQoKSA9PSB0aGlzKQot
ICAgICAgICAgICAgbV9oYW5kbGUtPnNldENsaWVudChudWxscHRyKTsKKyAgICAgICAgICAgIG1f
aGFuZGxlLT5jbGVhckNsaWVudCgpOwogICAgICAgICBtX2hhbmRsZSA9IG51bGxwdHI7CiAgICAg
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAkocmV2aXNpb24gMTg3NDYyKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyNCw3ICszMjQsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c3Rv
cExvYWRpbmcoCiAgICAgICAgIEFTU0VSVCghbV9jdXJyZW50SGFuZGxlKTsKIAogICAgICAgICBB
U1NFUlQobV9tYW5pZmVzdEhhbmRsZS0+Y2xpZW50KCkgPT0gdGhpcyk7Ci0gICAgICAgIG1fbWFu
aWZlc3RIYW5kbGUtPnNldENsaWVudCgwKTsKKyAgICAgICAgbV9tYW5pZmVzdEhhbmRsZS0+Y2xl
YXJDbGllbnQoKTsKIAogICAgICAgICBtX21hbmlmZXN0SGFuZGxlLT5jYW5jZWwoKTsKICAgICAg
ICAgbV9tYW5pZmVzdEhhbmRsZSA9IG51bGxwdHI7CkBAIC0zMzUsNyArMzM1LDcgQEAgdm9pZCBB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OnN0b3BMb2FkaW5nKAogICAgICAgICBBU1NFUlQobV9jYWNo
ZUJlaW5nVXBkYXRlZCk7CiAKICAgICAgICAgQVNTRVJUKG1fY3VycmVudEhhbmRsZS0+Y2xpZW50
KCkgPT0gdGhpcyk7Ci0gICAgICAgIG1fY3VycmVudEhhbmRsZS0+c2V0Q2xpZW50KDApOworICAg
ICAgICBtX2N1cnJlbnRIYW5kbGUtPmNsZWFyQ2xpZW50KCk7CiAKICAgICAgICAgbV9jdXJyZW50
SGFuZGxlLT5jYW5jZWwoKTsKICAgICAgICAgbV9jdXJyZW50SGFuZGxlID0gbnVsbHB0cjsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNv
dXJjZUhhbmRsZS5jcHAJKHJldmlzaW9uIDE4NzQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk0
LDcgKzU5NCw3IEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpub3RpZnlSZXNwb25zZU8KICAg
ICAvLyBCbG9iUmVzb3VyY2VIYW5kbGUgY2Fubm90IGJlIHVzZWQgd2l0aCBkb3dubG9hZGluZywg
YW5kIGRvZXNuJ3QgZXZlbiB3YWl0IGZvciBjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZS4KICAg
ICAvLyBJdCdzIGN1cnJlbnRseSBjbGllbnQncyByZXNwb25zaWJpbGl0eSB0byBrbm93IHRoYXQg
ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMgY2Fubm90IGJlIHVzZWQgdG8gY29udmVydCBhCiAgICAg
Ly8gbG9hZCBpbnRvIGEgZG93bmxvYWQgb3IgYmxvYnMuCi0gICAgaWYgKGNsaWVudCgpLT51c2Vz
QXN5bmNDYWxsYmFja3MoKSkKKyAgICBpZiAodXNlc0FzeW5jQ2FsbGJhY2tzKCkpCiAgICAgICAg
IGNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2VBc3luYyh0aGlzLCByZXNwb25zZSk7CiAgICAg
ZWxzZQogICAgICAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHRoaXMsIHJlc3BvbnNl
KTsKQEAgLTYyNiw3ICs2MjYsNyBAQCB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6bm90aWZ5UmVz
cG9uc2VPCiAKICAgICAvLyBOb3RlIHRoYXQgd2UgZG9uJ3Qgd2FpdCBmb3IgY29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2Ugd2hlbiB1c2luZyBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYy4KICAgICAv
LyBUaGlzIGlzIG5vdCBmb3JtYWxseSBjb3JyZWN0LCBidXQgdGhlIGNsaWVudCBoYXMgdG8gYmUg
YSBuby1vcCBhbnl3YXksIGJlY2F1c2UgYmxvYnMgY2FuJ3QgYmUgZG93bmxvYWRlZC4KLSAgICBp
ZiAoY2xpZW50KCktPnVzZXNBc3luY0NhbGxiYWNrcygpKQorICAgIGlmICh1c2VzQXN5bmNDYWxs
YmFja3MoKSkKICAgICAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKHRoaXMs
IHJlc3BvbnNlKTsKICAgICBlbHNlCiAgICAgICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9u
c2UodGhpcywgcmVzcG9uc2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAJKHJldmlzaW9uIDE4NzQ2MikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDcsOSArMTQ3LDkgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQqIFJlc291cmNlSGFu
ZGxlOjpjbAogICAgIHJldHVybiBkLT5tX2NsaWVudDsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRs
ZTo6c2V0Q2xpZW50KFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQpCit2b2lkIFJlc291cmNl
SGFuZGxlOjpjbGVhckNsaWVudCgpCiB7Ci0gICAgZC0+bV9jbGllbnQgPSBjbGllbnQ7CisgICAg
ZC0+bV9jbGllbnQgPSBudWxscHRyOwogfQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhVVNF
KENGTkVUV09SSykgJiYgIVVTRShTT1VQKQpAQCAtMjM5LDQgKzIzOSwxMSBAQCB2b2lkIFJlc291
cmNlSGFuZGxlOjpzZXREZWZlcnNMb2FkaW5nKGJvCiAgICAgcGxhdGZvcm1TZXREZWZlcnNMb2Fk
aW5nKGRlZmVycyk7CiB9CiAKKyNpZiBQTEFURk9STShDT0NPQSkKK2Jvb2wgUmVzb3VyY2VIYW5k
bGU6OnVzZXNBc3luY0NhbGxiYWNrcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPm1fdXNlc0Fz
eW5jQ2FsbGJhY2tzOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgJ
KHJldmlzaW9uIDE4NzQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjAwLDcgKzIwMCw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIFRoZSBjbGllbnQgbWF5IGJlIDAsIGluIHdoaWNoIGNhc2Ugbm8gY2FsbGJhY2tz
IHdpbGwgYmUgbWFkZS4KICAgICBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50KCkgY29uc3Q7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDbGllbnQoUmVzb3VyY2VIYW5kbGVDbGllbnQq
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyQ2xpZW50KCk7CiAKICAgICAvLyBDYWxs
ZWQgaW4gcmVzcG9uc2UgdG8gUmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdEFz
eW5jKCkuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKQEAgLTI1MCw2ICsyNTAsMTAgQEAgcHVibGljOgogcHJv
dGVjdGVkOgogICAgIFJlc291cmNlSGFuZGxlKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VIYW5kbGVDbGllbnQqLCBib29sIGRlZmVyc0xvYWRpbmcs
IGJvb2wgc2hvdWxkQ29udGVudFNuaWZmKTsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGJv
b2wgdXNlc0FzeW5jQ2FsbGJhY2tzKCkgY29uc3Q7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBl
bnVtIEZhaWx1cmVUeXBlIHsKICAgICAgICAgTm9GYWlsdXJlLApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFs
LmgJKHJldmlzaW9uIDE4NzQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFu
ZGxlLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2lu
Y2x1ZGUgIlRpbWVyLmgiCkBAIC03MCw4ICs3MSw2IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9f
Q0ZVUkxTdG9yYWdlU2Vzc2kKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgUmVz
b3VyY2VIYW5kbGVDbGllbnQ7Ci0KICAgICBjbGFzcyBSZXNvdXJjZUhhbmRsZUludGVybmFsIHsK
ICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCk7IFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKQEAgLTk5LDYgKzk4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgICAg
ICAsIG1fc3RhcnRXaGVuU2NoZWR1bGVkKGZhbHNlKQorICAgICAgICAgICAgLCBtX3VzZXNBc3lu
Y0NhbGxiYWNrcyhjbGllbnQgJiYgY2xpZW50LT51c2VzQXN5bmNDYWxsYmFja3MoKSkKICAgICAg
ICAgICAgICwgbV9jdXJyZW50TWFjQ2hhbGxlbmdlKG5pbCkKICNlbmRpZgogICAgICAgICAgICAg
LCBtX3NjaGVkdWxlZEZhaWx1cmVUeXBlKFJlc291cmNlSGFuZGxlOjpOb0ZhaWx1cmUpCkBAIC0x
NDAsNiArMTQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgICAgIGJvb2wgbV9zdGFydFdoZW5TY2hlZHVsZWQ7CisgICAgICAgIGJvb2wg
bV91c2VzQXN5bmNDYWxsYmFja3M7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNF
KENGTkVUV09SSykKICAgICAgICAgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IG1f
c3RvcmFnZVNlc3Npb247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAJKHJldmlzaW9uIDE4NzQ2
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVD
Rk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIFJlc291cmNl
SGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3RpCiAgICAgQ0ZSZWxlYXNlKHN0cmVhbVByb3BlcnRp
ZXMpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgaWYgKGNsaWVudCgpICYmIGNsaWVudCgp
LT51c2VzQXN5bmNDYWxsYmFja3MoKSkKKyAgICBpZiAoZC0+bV91c2VzQXN5bmNDYWxsYmFja3Mp
CiAgICAgICAgIGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlID0gYWRvcHRSZWYobmV3IFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUodGhpcykpOwog
ICAgIGVsc2UKICAgICAgICAgZC0+bV9jb25uZWN0aW9uRGVsZWdhdGUgPSBhZG9wdFJlZihuZXcg
U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKHRoaXMpKTsK
QEAgLTMwNCw3ICszMDQsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3Qo
UmVzCiAgICAgfQogCiAgICAgUmVmPFJlc291cmNlSGFuZGxlPiBwcm90ZWN0KCp0aGlzKTsKLSAg
ICBpZiAoY2xpZW50KCktPnVzZXNBc3luY0NhbGxiYWNrcygpKQorICAgIGlmIChkLT5tX3VzZXNB
c3luY0NhbGxiYWNrcykKICAgICAgICAgY2xpZW50KCktPndpbGxTZW5kUmVxdWVzdEFzeW5jKHRo
aXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIGVsc2UgewogICAgICAgICBjbGll
bnQoKS0+d2lsbFNlbmRSZXF1ZXN0KHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwpA
QCAtMzIyLDcgKzMyMiw3IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnNob3VsZFVzZUNyZWRlbnRp
YWwKIHsKICAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3Jh
Z2UoKSIpOwogICAgIGlmIChSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50ID0gdGhpcy0+Y2xp
ZW50KCkpIHsKLSAgICAgICAgQVNTRVJUKCFjbGllbnQtPnVzZXNBc3luY0NhbGxiYWNrcygpKTsK
KyAgICAgICAgQVNTRVJUKCFkLT5tX3VzZXNBc3luY0NhbGxiYWNrcyk7CiAgICAgICAgIHJldHVy
biBjbGllbnQtPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKHRoaXMpOwogICAgIH0KICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC00MTgsMTMgKzQxOCwxNSBAQCBib29sIFJlc291cmNlSGFuZGxlOjp0
cnlIYW5kbGVQYXNzd29yZEJhCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFD
SykKIGJvb2wgUmVzb3VyY2VIYW5kbGU6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCiB7Ci0gICAgaWYg
KFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkgewotICAgICAg
ICBpZiAoY2xpZW50LT51c2VzQXN5bmNDYWxsYmFja3MoKSkKKyAgICBSZXNvdXJjZUhhbmRsZUNs
aWVudCogY2xpZW50ID0gdGhpcy0+Y2xpZW50KCk7CisgICAgaWYgKGQtPm1fdXNlc0FzeW5jQ2Fs
bGJhY2tzKSB7CisgICAgICAgIGlmIChjbGllbnQpCiAgICAgICAgICAgICBjbGllbnQtPmNhbkF1
dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyh0aGlzLCBwcm90ZWN0aW9uU3Bh
Y2UpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gY2xpZW50LT5jYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHRoaXMsIHByb3RlY3Rpb25TcGFjZSk7Ci0gICAg
fQotICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGNvbnRpbnVlQ2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZShmYWxzZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsgLy8g
SWdub3JlZCBieSBjYWxsZXIuCisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBjbGllbnQgJiYg
Y2xpZW50LT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHRoaXMsIHByb3Rl
Y3Rpb25TcGFjZSk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0JKHJldmlzaW9u
IDE4NzQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNl
SGFuZGxlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNzQsNyArMjc0LDcgQEAgYm9vbCBSZXNv
dXJjZUhhbmRsZTo6c3RhcnQoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGNsaWVudCgp
ICYmIGNsaWVudCgpLT51c2VzQXN5bmNDYWxsYmFja3MoKSkgeworICAgIGlmIChkLT5tX3VzZXNB
c3luY0NhbGxiYWNrcykgewogICAgICAgICBBU1NFUlQoIXNjaGVkdWxlZCk7CiAgICAgICAgIFtj
b25uZWN0aW9uKCkgc2V0RGVsZWdhdGVRdWV1ZTpvcGVyYXRpb25RdWV1ZUZvckFzeW5jQ2xpZW50
cygpXTsKICAgICAgICAgc2NoZWR1bGVkID0gdHJ1ZTsKQEAgLTM1MSw3ICszNTEsNyBAQCBpZCBS
ZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRlKGJvb2wgc2hvCiAgICAgQVNTRVJUKCFkLT5tX2Rl
bGVnYXRlKTsKIAogICAgIGlkIDxOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZT4gZGVsZWdhdGU7Ci0g
ICAgaWYgKGNsaWVudCgpICYmIGNsaWVudCgpLT51c2VzQXN5bmNDYWxsYmFja3MoKSkgeworICAg
IGlmIChkLT5tX3VzZXNBc3luY0NhbGxiYWNrcykgewogICAgICAgICBpZiAoc2hvdWxkVXNlQ3Jl
ZGVudGlhbFN0b3JhZ2UpCiAgICAgICAgICAgICBkZWxlZ2F0ZSA9IFtbV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEhhbmRsZTp0aGlz
XTsKICAgICAgICAgZWxzZQpAQCAtNDg4LDcgKzQ4OCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6
OndpbGxTZW5kUmVxdWVzdChSZXMKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChjbGllbnQo
KS0+dXNlc0FzeW5jQ2FsbGJhY2tzKCkpIHsKKyAgICBpZiAoZC0+bV91c2VzQXN5bmNDYWxsYmFj
a3MpIHsKICAgICAgICAgY2xpZW50KCktPndpbGxTZW5kUmVxdWVzdEFzeW5jKHRoaXMsIHJlcXVl
c3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFJlZjxSZXNvdXJj
ZUhhbmRsZT4gcHJvdGVjdCgqdGhpcyk7CkBAIC01MDIsOCArNTAyLDcgQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlcwogCiB2b2lkIFJlc291cmNlSGFuZGxlOjpjb250
aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0g
ICAgQVNTRVJUKGNsaWVudCgpKTsKLSAgICBBU1NFUlQoY2xpZW50KCktPnVzZXNBc3luY0NhbGxi
YWNrcygpKTsKKyAgICBBU1NFUlQoZC0+bV91c2VzQXN5bmNDYWxsYmFja3MpOwogCiAgICAgLy8g
Q2xpZW50IGNhbGwgbWF5IG5vdCBwcmVzZXJ2ZSB0aGUgc2Vzc2lvbiwgZXNwZWNpYWxseSBpZiB0
aGUgcmVxdWVzdCBpcyBzZW50IG92ZXIgSVBDLgogICAgIFJlc291cmNlUmVxdWVzdCBuZXdSZXF1
ZXN0ID0gcmVxdWVzdDsKQEAgLTUxNCwxNSArNTEzLDE0IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6
OmNvbnRpbnVlV2lsbFNlbmRSZXEKIAogdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2UoKQogewotICAgIEFTU0VSVChjbGllbnQoKSk7Ci0gICAgQVNTRVJUKGNs
aWVudCgpLT51c2VzQXN5bmNDYWxsYmFja3MoKSk7CisgICAgQVNTRVJUKGQtPm1fdXNlc0FzeW5j
Q2FsbGJhY2tzKTsKIAogICAgIFtkZWxlZ2F0ZSgpIGNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
XTsKIH0KIAogYm9vbCBSZXNvdXJjZUhhbmRsZTo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Uo
KQogewotICAgIEFTU0VSVCghY2xpZW50KCktPnVzZXNBc3luY0NhbGxiYWNrcygpKTsKKyAgICBB
U1NFUlQoIWQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tzKTsKICAgICByZXR1cm4gY2xpZW50KCkgJiYg
Y2xpZW50KCktPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKHRoaXMpOwogfQogCkBAIC02MzEs
MTcgKzYyOSwyMCBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpkaWRDYW5jZWxBdXRoZW50aWNhCiAj
aWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKIGJvb2wgUmVzb3VyY2VIYW5k
bGU6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29uc3QgUHJvdGVjdGlv
blNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCiB7Ci0gICAgaWYgKGNsaWVudCgpLT51c2VzQXN5bmND
YWxsYmFja3MoKSkgewotICAgICAgICBjbGllbnQoKS0+Y2FuQXV0aGVudGljYXRlQWdhaW5zdFBy
b3RlY3Rpb25TcGFjZUFzeW5jKHRoaXMsIHByb3RlY3Rpb25TcGFjZSk7CisgICAgUmVzb3VyY2VI
YW5kbGVDbGllbnQqIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpOworICAgIGlmIChkLT5tX3VzZXNB
c3luY0NhbGxiYWNrcykgeworICAgICAgICBpZiAoY2xpZW50KQorICAgICAgICAgICAgY2xpZW50
LT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmModGhpcywgcHJvdGVj
dGlvblNwYWNlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29udGludWVDYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGZhbHNlKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OyAvLyBJZ25vcmVkIGJ5IGNhbGxlci4KICAgICB9IGVsc2UKLSAgICAgICAgcmV0dXJuIGNsaWVu
dCgpICYmIGNsaWVudCgpLT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHRo
aXMsIHByb3RlY3Rpb25TcGFjZSk7CisgICAgICAgIHJldHVybiBjbGllbnQgJiYgY2xpZW50LT5j
YW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHRoaXMsIHByb3RlY3Rpb25TcGFj
ZSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdh
aW5zdFByb3RlY3Rpb25TcGFjZShib29sIHJlc3VsdCkKIHsKLSAgICBBU1NFUlQoY2xpZW50KCkp
OwotICAgIEFTU0VSVChjbGllbnQoKS0+dXNlc0FzeW5jQ2FsbGJhY2tzKCkpOworICAgIEFTU0VS
VChkLT5tX3VzZXNBc3luY0NhbGxiYWNrcyk7CiAKICAgICBbKGlkKWRlbGVnYXRlKCkgY29udGlu
dWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlOnJlc3VsdF07CiB9CkBAIC03
MjgsOCArNzI5LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDaGFsbGVuZ2VSZQog
CiB2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKE5TQ2FjaGVk
VVJMUmVzcG9uc2UgKnJlc3BvbnNlKQogewotICAgIEFTU0VSVChjbGllbnQoKSk7Ci0gICAgQVNT
RVJUKGNsaWVudCgpLT51c2VzQXN5bmNDYWxsYmFja3MoKSk7CisgICAgQVNTRVJUKGQtPm1fdXNl
c0FzeW5jQ2FsbGJhY2tzKTsKIAogICAgIFsoaWQpZGVsZWdhdGUoKSBjb250aW51ZVdpbGxDYWNo
ZVJlc3BvbnNlOnJlc3BvbnNlXTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NzQ4NSkK
KysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3
IEBACisyMDE1LTA3LTI4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisg
ICAgICAgIENsZWFuIHVwIHVzZXNBc3luY0NhbGxiYWNrcyBoYW5kbGluZyBpbiBSZXNvdXJjZUhh
bmRsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3
MzQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlIGZvciBhIHJlbmFtaW5nIGluIFdlYkNvcmUuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmNsZWFudXApOgorICAgICAgICAqIFNoYXJlZC9Eb3dubG9hZHMvc291cC9E
b3dubG9hZFNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6cGxhdGZvcm1JbnZh
bGlkYXRlKToKKwogMjAxNS0wNy0yOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gVXNlIGZhc3RNYWxsb2MgaW5zdGVhZCBvZiBnX3Ns
aWNlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDE4NzQ2MikKKysrIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2xlYW51
cCgpCiAgICAgaW52YWxpZGF0ZVNhbmRib3hFeHRlbnNpb25zKCk7CiAKICAgICBpZiAobV9oYW5k
bGUpIHsKLSAgICAgICAgbV9oYW5kbGUtPnNldENsaWVudChudWxscHRyKTsKKyAgICAgICAgbV9o
YW5kbGUtPmNsZWFyQ2xpZW50KCk7CiAgICAgICAgIG1faGFuZGxlID0gbnVsbHB0cjsKICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNv
dXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvc291
cC9Eb3dubG9hZFNvdXAuY3BwCShyZXZpc2lvbiAxODc0NjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjU1LDcgKzI1NSw3IEBAIHZvaWQgRG93bmxvYWQ6OmNhbmNlbCgpCiB2b2lkIERvd25sb2FkOjpw
bGF0Zm9ybUludmFsaWRhdGUoKQogewogICAgIGlmIChtX3Jlc291cmNlSGFuZGxlKSB7Ci0gICAg
ICAgIG1fcmVzb3VyY2VIYW5kbGUtPnNldENsaWVudCgwKTsKKyAgICAgICAgbV9yZXNvdXJjZUhh
bmRsZS0+Y2xlYXJDbGllbnQoKTsKICAgICAgICAgbV9yZXNvdXJjZUhhbmRsZS0+Y2FuY2VsKCk7
CiAgICAgICAgIG1fcmVzb3VyY2VIYW5kbGUgPSBudWxscHRyOwogICAgIH0K
</data>
<flag name="review"
          id="282820"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="282821"
          type_id="3"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257666</attachid>
            <date>2015-07-28 11:55:31 -0700</date>
            <delta_ts>2015-07-28 18:28:16 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>UsesAsyncCallbacks.txt</filename>
            <type>text/plain</type>
            <size>16208</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NzQ4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE1LTA3LTI4ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIHVzZXNBc3lu
Y0NhbGxiYWNrcyBoYW5kbGluZyBpbiBSZXNvdXJjZUhhbmRsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3MzQyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgU3RvcmUgInVzZXNBc3luY0NhbGxiYWNrcyIgYml0
IGluIFJlc291cmNlSGFuZGxlLCBiZWNhdXNlIGl0J3Mgbm90IGFjY2Vzc2libGUKKyAgICAgICAg
dmlhIGNsaWVudCBvbmNlIHRoZSBjbGllbnQgaXMgemVyb2VkIG91dC4KKworICAgICAgICBDaGFu
Z2VkIFJlc291cmNlSGFuZGxlOjpzZXRDbGllbnQgaW50byBSZXNvdXJjZUhhbmRsZTo6Y2xlYXJD
bGllbnQsIGJlY2F1c2UgaXQncworICAgICAgICBvbmx5IGV2ZXIgdXNlZCB0byB6ZXJvIG91dCB0
aGUgY2xpZW50IHBvaW50ZXIsIGFuZCBpdCBkb2Vzbid0IHN1cHBvcnQgY2hhbmdpbmcgaXQuCisK
KyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMpOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpzdG9wTG9hZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291cmNl
SGFuZGxlOjpub3RpZnlSZXNwb25zZU9uU3VjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpCbG9i
UmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJlc3BvbnNlT25FcnJvcik6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZTo6Y2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjbGVh
ckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0RGVmZXJzTG9h
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6dXNlc0FzeW5jQ2FsbGJh
Y2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRDbGllbnQpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlSW50ZXJuYWw6OlJlc291cmNlSGFuZGxlSW50ZXJuYWwp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9y
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjYW5BdXRoZW50aWNhdGVB
Z2FpbnN0UHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9S
ZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpz
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmNhbkF1dGhl
bnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsQ2FjaGVSZXNw
b25zZSk6CisKIDIwMTUtMDctMjggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+
CiAKICAgICAgICAgUm9sbGluZyBvdXQgcjE4NzQ2MywgYmVjYXVzZSBpdCBjYXVzZWQgbWVtb3J5
IGNvcnJ1cHRpb24gb24gbXVsdGlwbGUgdGVzdHMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDE4NzQ4NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQs
NyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKICAgICAgICAgLy8g
Q2xlYXIgb3V0IHRoZSBSZXNvdXJjZUhhbmRsZSdzIGNsaWVudCBzbyB0aGF0IGl0IGRvZXNuJ3Qg
dHJ5IHRvIGNhbGwKICAgICAgICAgLy8gdXMgYmFjayBhZnRlciB3ZSByZWxlYXNlIGl0LCB1bmxl
c3MgaXQgaGFzIGJlZW4gcmVwbGFjZWQgYnkgc29tZW9uZSBlbHNlLgogICAgICAgICBpZiAobV9o
YW5kbGUtPmNsaWVudCgpID09IHRoaXMpCi0gICAgICAgICAgICBtX2hhbmRsZS0+c2V0Q2xpZW50
KG51bGxwdHIpOworICAgICAgICAgICAgbV9oYW5kbGUtPmNsZWFyQ2xpZW50KCk7CiAgICAgICAg
IG1faGFuZGxlID0gbnVsbHB0cjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCShyZXZp
c2lvbiAxODc0ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI0LDcgKzMyNCw3IEBAIHZvaWQg
QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzdG9wTG9hZGluZygKICAgICAgICAgQVNTRVJUKCFtX2N1
cnJlbnRIYW5kbGUpOwogCiAgICAgICAgIEFTU0VSVChtX21hbmlmZXN0SGFuZGxlLT5jbGllbnQo
KSA9PSB0aGlzKTsKLSAgICAgICAgbV9tYW5pZmVzdEhhbmRsZS0+c2V0Q2xpZW50KDApOworICAg
ICAgICBtX21hbmlmZXN0SGFuZGxlLT5jbGVhckNsaWVudCgpOwogCiAgICAgICAgIG1fbWFuaWZl
c3RIYW5kbGUtPmNhbmNlbCgpOwogICAgICAgICBtX21hbmlmZXN0SGFuZGxlID0gbnVsbHB0cjsK
QEAgLTMzNSw3ICszMzUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c3RvcExvYWRp
bmcoCiAgICAgICAgIEFTU0VSVChtX2NhY2hlQmVpbmdVcGRhdGVkKTsKIAogICAgICAgICBBU1NF
UlQobV9jdXJyZW50SGFuZGxlLT5jbGllbnQoKSA9PSB0aGlzKTsKLSAgICAgICAgbV9jdXJyZW50
SGFuZGxlLT5zZXRDbGllbnQoMCk7CisgICAgICAgIG1fY3VycmVudEhhbmRsZS0+Y2xlYXJDbGll
bnQoKTsKIAogICAgICAgICBtX2N1cnJlbnRIYW5kbGUtPmNhbmNlbCgpOwogICAgICAgICBtX2N1
cnJlbnRIYW5kbGUgPSBudWxscHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAkocmV2aXNpb24gMTg3NDg1
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTQsNyArNTk0LDcgQEAgdm9pZCBCbG9iUmVzb3VyY2VI
YW5kbGU6Om5vdGlmeVJlc3BvbnNlTwogICAgIC8vIEJsb2JSZXNvdXJjZUhhbmRsZSBjYW5ub3Qg
YmUgdXNlZCB3aXRoIGRvd25sb2FkaW5nLCBhbmQgZG9lc24ndCBldmVuIHdhaXQgZm9yIGNvbnRp
bnVlRGlkUmVjZWl2ZVJlc3BvbnNlLgogICAgIC8vIEl0J3MgY3VycmVudGx5IGNsaWVudCdzIHJl
c3BvbnNpYmlsaXR5IHRvIGtub3cgdGhhdCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyBjYW5ub3Qg
YmUgdXNlZCB0byBjb252ZXJ0IGEKICAgICAvLyBsb2FkIGludG8gYSBkb3dubG9hZCBvciBibG9i
cy4KLSAgICBpZiAoY2xpZW50KCktPnVzZXNBc3luY0NhbGxiYWNrcygpKQorICAgIGlmICh1c2Vz
QXN5bmNDYWxsYmFja3MoKSkKICAgICAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZUFz
eW5jKHRoaXMsIHJlc3BvbnNlKTsKICAgICBlbHNlCiAgICAgICAgIGNsaWVudCgpLT5kaWRSZWNl
aXZlUmVzcG9uc2UodGhpcywgcmVzcG9uc2UpOwpAQCAtNjI2LDcgKzYyNiw3IEBAIHZvaWQgQmxv
YlJlc291cmNlSGFuZGxlOjpub3RpZnlSZXNwb25zZU8KIAogICAgIC8vIE5vdGUgdGhhdCB3ZSBk
b24ndCB3YWl0IGZvciBjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSB3aGVuIHVzaW5nIGRpZFJl
Y2VpdmVSZXNwb25zZUFzeW5jLgogICAgIC8vIFRoaXMgaXMgbm90IGZvcm1hbGx5IGNvcnJlY3Qs
IGJ1dCB0aGUgY2xpZW50IGhhcyB0byBiZSBhIG5vLW9wIGFueXdheSwgYmVjYXVzZSBibG9icyBj
YW4ndCBiZSBkb3dubG9hZGVkLgotICAgIGlmIChjbGllbnQoKS0+dXNlc0FzeW5jQ2FsbGJhY2tz
KCkpCisgICAgaWYgKHVzZXNBc3luY0NhbGxiYWNrcygpKQogICAgICAgICBjbGllbnQoKS0+ZGlk
UmVjZWl2ZVJlc3BvbnNlQXN5bmModGhpcywgcmVzcG9uc2UpOwogICAgIGVsc2UKICAgICAgICAg
Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZSh0aGlzLCByZXNwb25zZSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAko
cmV2aXNpb24gMTg3NDg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw5ICsxNDcsOSBAQCBSZXNvdXJj
ZUhhbmRsZUNsaWVudCogUmVzb3VyY2VIYW5kbGU6OmNsCiAgICAgcmV0dXJuIGQtPm1fY2xpZW50
OwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpzZXRDbGllbnQoUmVzb3VyY2VIYW5kbGVDbGll
bnQqIGNsaWVudCkKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OmNsZWFyQ2xpZW50KCkKIHsKLSAgICBk
LT5tX2NsaWVudCA9IGNsaWVudDsKKyAgICBkLT5tX2NsaWVudCA9IG51bGxwdHI7CiB9CiAKICNp
ZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKSAmJiAhVVNFKFNPVVApCkBAIC0y
MzksNCArMjM5LDkgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2V0RGVmZXJzTG9hZGluZyhibwog
ICAgIHBsYXRmb3JtU2V0RGVmZXJzTG9hZGluZyhkZWZlcnMpOwogfQogCitib29sIFJlc291cmNl
SGFuZGxlOjp1c2VzQXN5bmNDYWxsYmFja3MoKSBjb25zdAoreworICAgIHJldHVybiBkLT5tX3Vz
ZXNBc3luY0NhbGxiYWNrczsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAkocmV2
aXNpb24gMTg3NDg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsNyArMjAwLDcgQEAgcHVibGljOgogCiAg
ICAgLy8gVGhlIGNsaWVudCBtYXkgYmUgMCwgaW4gd2hpY2ggY2FzZSBubyBjYWxsYmFja3Mgd2ls
bCBiZSBtYWRlLgogICAgIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQoKSBjb25zdDsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENsaWVudChSZXNvdXJjZUhhbmRsZUNsaWVudCopOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJDbGllbnQoKTsKIAogICAgIC8vIENhbGxlZCBp
biByZXNwb25zZSB0byBSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0QXN5bmMo
KS4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpOwpAQCAtMjUwLDYgKzI1MCw4IEBAIHB1YmxpYzoKIHByb3RlY3Rl
ZDoKICAgICBSZXNvdXJjZUhhbmRsZShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIFJlc291cmNlSGFuZGxlQ2xpZW50KiwgYm9vbCBkZWZlcnNMb2FkaW5nLCBib29s
IHNob3VsZENvbnRlbnRTbmlmZik7CiAKKyAgICBib29sIHVzZXNBc3luY0NhbGxiYWNrcygpIGNv
bnN0OworCiBwcml2YXRlOgogICAgIGVudW0gRmFpbHVyZVR5cGUgewogICAgICAgICBOb0ZhaWx1
cmUsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
SW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAkocmV2aXNpb24gMTg3NDg1KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNs
aWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKQEAgLTcwLDggKzcxLDYgQEAg
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTFN0b3JhZ2VTZXNzaQogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLSAgICBjbGFzcyBSZXNvdXJjZUhhbmRsZUNsaWVudDsKLQogICAgIGNsYXNzIFJl
c291cmNlSGFuZGxlSW50ZXJuYWwgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZXNv
dXJjZUhhbmRsZUludGVybmFsKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGlj
OgpAQCAtODMsNiArODIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIHN0
YXR1cygwKQogICAgICAgICAgICAgLCBtX2RlZmVyc0xvYWRpbmcoZGVmZXJzTG9hZGluZykKICAg
ICAgICAgICAgICwgbV9zaG91bGRDb250ZW50U25pZmYoc2hvdWxkQ29udGVudFNuaWZmKQorICAg
ICAgICAgICAgLCBtX3VzZXNBc3luY0NhbGxiYWNrcyhjbGllbnQgJiYgY2xpZW50LT51c2VzQXN5
bmNDYWxsYmFja3MoKSkKICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgICAgICAgICAgLCBtX2N1cnJl
bnRSZXF1ZXN0KHJlcXVlc3QpCiAjZW5kaWYKQEAgLTEyOSw2ICsxMjksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBtX2RlZmVyc0xvYWRpbmc7CiAgICAgICAgIGJvb2wg
bV9zaG91bGRDb250ZW50U25pZmY7CisgICAgICAgIGJvb2wgbV91c2VzQXN5bmNDYWxsYmFja3M7
CiAjaWYgVVNFKENGTkVUV09SSykKICAgICAgICAgUmV0YWluUHRyPENGVVJMQ29ubmVjdGlvblJl
Zj4gbV9jb25uZWN0aW9uOwogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgbV9jdXJyZW50UmVxdWVz
dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5k
bGVDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAkocmV2aXNpb24gMTg3NDg1KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0
ZUNGVVJMQ29ubmVjdGkKICAgICBDRlJlbGVhc2Uoc3RyZWFtUHJvcGVydGllcyk7CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBpZiAoY2xpZW50KCkgJiYgY2xpZW50KCktPnVzZXNBc3luY0Nh
bGxiYWNrcygpKQorICAgIGlmIChkLT5tX3VzZXNBc3luY0NhbGxiYWNrcykKICAgICAgICAgZC0+
bV9jb25uZWN0aW9uRGVsZWdhdGUgPSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZSh0aGlzKSk7CiAgICAgZWxzZQogICAg
ICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5ldyBTeW5jaHJvbm91c1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUodGhpcykpOwpAQCAtMzA0LDcgKzMw
NCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXMKICAgICB9CiAK
ICAgICBSZWY8UmVzb3VyY2VIYW5kbGU+IHByb3RlY3QoKnRoaXMpOwotICAgIGlmIChjbGllbnQo
KS0+dXNlc0FzeW5jQ2FsbGJhY2tzKCkpCisgICAgaWYgKGQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tz
KQogICAgICAgICBjbGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0QXN5bmModGhpcywgcmVxdWVzdCwg
cmVkaXJlY3RSZXNwb25zZSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGNsaWVudCgpLT53aWxsU2Vu
ZFJlcXVlc3QodGhpcywgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CkBAIC0zMjIsNyArMzIy
LDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c2hvdWxkVXNlQ3JlZGVudGlhbAogewogICAgIExP
RyhOZXR3b3JrLCAiQ0ZOZXQgLSBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpIik7CiAgICAg
aWYgKFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkgewotICAg
ICAgICBBU1NFUlQoIWNsaWVudC0+dXNlc0FzeW5jQ2FsbGJhY2tzKCkpOworICAgICAgICBBU1NF
UlQoIWQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tzKTsKICAgICAgICAgcmV0dXJuIGNsaWVudC0+c2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UodGhpcyk7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsK
QEAgLTQxOCwxMyArNDE4LDE2IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3
b3JkQmEKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogYm9vbCBSZXNv
dXJjZUhhbmRsZTo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb25zdCBQ
cm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKIHsKLSAgICBpZiAoUmVzb3VyY2VIYW5k
bGVDbGllbnQqIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKSB7Ci0gICAgICAgIGlmIChjbGllbnQt
PnVzZXNBc3luY0NhbGxiYWNrcygpKQorICAgIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQg
PSB0aGlzLT5jbGllbnQoKTsKKyAgICBpZiAoZC0+bV91c2VzQXN5bmNDYWxsYmFja3MpIHsKKyAg
ICAgICAgaWYgKGNsaWVudCkKICAgICAgICAgICAgIGNsaWVudC0+Y2FuQXV0aGVudGljYXRlQWdh
aW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKHRoaXMsIHByb3RlY3Rpb25TcGFjZSk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHJldHVybiBjbGllbnQtPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQ
cm90ZWN0aW9uU3BhY2UodGhpcywgcHJvdGVjdGlvblNwYWNlKTsKKyAgICAgICAgICAgIGNvbnRp
bnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShmYWxzZSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsgLy8gSWdub3JlZCBieSBjYWxsZXIuCiAgICAgfQotICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiBjbGllbnQgJiYgY2xpZW50LT5jYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlKHRoaXMsIHByb3RlY3Rpb25TcGFjZSk7CiB9CiAjZW5kaWYKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VIYW5kbGVNYWMubW0JKHJldmlzaW9uIDE4NzQ4NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNzQsNyArMjc0LDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQogICAgICAg
ICB9CiAgICAgfQogCi0gICAgaWYgKGNsaWVudCgpICYmIGNsaWVudCgpLT51c2VzQXN5bmNDYWxs
YmFja3MoKSkgeworICAgIGlmIChkLT5tX3VzZXNBc3luY0NhbGxiYWNrcykgewogICAgICAgICBB
U1NFUlQoIXNjaGVkdWxlZCk7CiAgICAgICAgIFtjb25uZWN0aW9uKCkgc2V0RGVsZWdhdGVRdWV1
ZTpvcGVyYXRpb25RdWV1ZUZvckFzeW5jQ2xpZW50cygpXTsKICAgICAgICAgc2NoZWR1bGVkID0g
dHJ1ZTsKQEAgLTM1MSw3ICszNTEsNyBAQCBpZCBSZXNvdXJjZUhhbmRsZTo6bWFrZURlbGVnYXRl
KGJvb2wgc2hvCiAgICAgQVNTRVJUKCFkLT5tX2RlbGVnYXRlKTsKIAogICAgIGlkIDxOU1VSTENv
bm5lY3Rpb25EZWxlZ2F0ZT4gZGVsZWdhdGU7Ci0gICAgaWYgKGNsaWVudCgpICYmIGNsaWVudCgp
LT51c2VzQXN5bmNDYWxsYmFja3MoKSkgeworICAgIGlmIChkLT5tX3VzZXNBc3luY0NhbGxiYWNr
cykgewogICAgICAgICBpZiAoc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpCiAgICAgICAgICAg
ICBkZWxlZ2F0ZSA9IFtbV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVn
YXRlIGFsbG9jXSBpbml0V2l0aEhhbmRsZTp0aGlzXTsKICAgICAgICAgZWxzZQpAQCAtNDg4LDcg
KzQ4OCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXMKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGlmIChjbGllbnQoKS0+dXNlc0FzeW5jQ2FsbGJhY2tzKCkpIHsK
KyAgICBpZiAoZC0+bV91c2VzQXN5bmNDYWxsYmFja3MpIHsKICAgICAgICAgY2xpZW50KCktPndp
bGxTZW5kUmVxdWVzdEFzeW5jKHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIFJlZjxSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdCgqdGhpcyk7CkBA
IC01MDIsOCArNTAyLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJl
cwogCiB2b2lkIFJlc291cmNlSGFuZGxlOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgQVNTRVJUKGNsaWVudCgpKTsKLSAgICBB
U1NFUlQoY2xpZW50KCktPnVzZXNBc3luY0NhbGxiYWNrcygpKTsKKyAgICBBU1NFUlQoZC0+bV91
c2VzQXN5bmNDYWxsYmFja3MpOwogCiAgICAgLy8gQ2xpZW50IGNhbGwgbWF5IG5vdCBwcmVzZXJ2
ZSB0aGUgc2Vzc2lvbiwgZXNwZWNpYWxseSBpZiB0aGUgcmVxdWVzdCBpcyBzZW50IG92ZXIgSVBD
LgogICAgIFJlc291cmNlUmVxdWVzdCBuZXdSZXF1ZXN0ID0gcmVxdWVzdDsKQEAgLTUxNCwxNSAr
NTEzLDE0IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXEKIAogdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogewotICAgIEFT
U0VSVChjbGllbnQoKSk7Ci0gICAgQVNTRVJUKGNsaWVudCgpLT51c2VzQXN5bmNDYWxsYmFja3Mo
KSk7CisgICAgQVNTRVJUKGQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tzKTsKIAogICAgIFtkZWxlZ2F0
ZSgpIGNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlXTsKIH0KIAogYm9vbCBSZXNvdXJjZUhhbmRs
ZTo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKQogewotICAgIEFTU0VSVCghY2xpZW50KCkt
PnVzZXNBc3luY0NhbGxiYWNrcygpKTsKKyAgICBBU1NFUlQoIWQtPm1fdXNlc0FzeW5jQ2FsbGJh
Y2tzKTsKICAgICByZXR1cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPnNob3VsZFVzZUNyZWRlbnRp
YWxTdG9yYWdlKHRoaXMpOwogfQogCkBAIC02MzEsMTcgKzYyOSwyMSBAQCB2b2lkIFJlc291cmNl
SGFuZGxlOjpkaWRDYW5jZWxBdXRoZW50aWNhCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVU
SF9DQUxMQkFDSykKIGJvb2wgUmVzb3VyY2VIYW5kbGU6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQ
cm90ZWN0aW9uU3BhY2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCiB7
Ci0gICAgaWYgKGNsaWVudCgpLT51c2VzQXN5bmNDYWxsYmFja3MoKSkgewotICAgICAgICBjbGll
bnQoKS0+Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKHRoaXMsIHBy
b3RlY3Rpb25TcGFjZSk7CisgICAgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCA9IHRoaXMt
PmNsaWVudCgpOworICAgIGlmIChkLT5tX3VzZXNBc3luY0NhbGxiYWNrcykgeworICAgICAgICBp
ZiAoY2xpZW50KQorICAgICAgICAgICAgY2xpZW50LT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlQXN5bmModGhpcywgcHJvdGVjdGlvblNwYWNlKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
KGZhbHNlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBJZ25vcmVkIGJ5IGNhbGxlci4KLSAg
ICB9IGVsc2UKLSAgICAgICAgcmV0dXJuIGNsaWVudCgpICYmIGNsaWVudCgpLT5jYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHRoaXMsIHByb3RlY3Rpb25TcGFjZSk7CisgICAg
fQorCisgICAgcmV0dXJuIGNsaWVudCAmJiBjbGllbnQtPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQ
cm90ZWN0aW9uU3BhY2UodGhpcywgcHJvdGVjdGlvblNwYWNlKTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGJv
b2wgcmVzdWx0KQogewotICAgIEFTU0VSVChjbGllbnQoKSk7Ci0gICAgQVNTRVJUKGNsaWVudCgp
LT51c2VzQXN5bmNDYWxsYmFja3MoKSk7CisgICAgQVNTRVJUKGQtPm1fdXNlc0FzeW5jQ2FsbGJh
Y2tzKTsKIAogICAgIFsoaWQpZGVsZWdhdGUoKSBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWlu
c3RQcm90ZWN0aW9uU3BhY2U6cmVzdWx0XTsKIH0KQEAgLTcyOCw4ICs3MzAsNyBAQCB2b2lkIFJl
c291cmNlSGFuZGxlOjpyZWNlaXZlZENoYWxsZW5nZVJlCiAKIHZvaWQgUmVzb3VyY2VIYW5kbGU6
OmNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UoTlNDYWNoZWRVUkxSZXNwb25zZSAqcmVzcG9uc2Up
CiB7Ci0gICAgQVNTRVJUKGNsaWVudCgpKTsKLSAgICBBU1NFUlQoY2xpZW50KCktPnVzZXNBc3lu
Y0NhbGxiYWNrcygpKTsKKyAgICBBU1NFUlQoZC0+bV91c2VzQXN5bmNDYWxsYmFja3MpOwogCiAg
ICAgWyhpZClkZWxlZ2F0ZSgpIGNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2U6cmVzcG9uc2VdOwog
fQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTg3NDg1KQorKysgU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDctMjggIEFsZXhl
eSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgdXNlc0Fz
eW5jQ2FsbGJhY2tzIGhhbmRsaW5nIGluIFJlc291cmNlSGFuZGxlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDczNDIKKworICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBVcGRhdGUgZm9yIGEgcmVuYW1pbmcgaW4gV2Vi
Q29yZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2xlYW51cCk6Cisg
ICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkRvd25sb2FkOjpwbGF0Zm9ybUludmFsaWRhdGUpOgorCiAyMDE1LTA3LTI4ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RL
XSBVc2UgZmFzdE1hbGxvYyBpbnN0ZWFkIG9mIGdfc2xpY2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAko
cmV2aXNpb24gMTg3NDg1KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA1LDcgKzIwNSw3IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjbGVhbnVwKCkKICAgICBpbnZhbGlkYXRlU2FuZGJv
eEV4dGVuc2lvbnMoKTsKIAogICAgIGlmIChtX2hhbmRsZSkgewotICAgICAgICBtX2hhbmRsZS0+
c2V0Q2xpZW50KG51bGxwdHIpOworICAgICAgICBtX2hhbmRsZS0+Y2xlYXJDbGllbnQoKTsKICAg
ICAgICAgbV9oYW5kbGUgPSBudWxscHRyOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdDIv
U2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAJKHJldmlz
aW9uIDE4NzQ4NSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvc291cC9Eb3du
bG9hZFNvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNyArMjU1LDcgQEAgdm9pZCBEb3du
bG9hZDo6Y2FuY2VsKCkKIHZvaWQgRG93bmxvYWQ6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiB7CiAg
ICAgaWYgKG1fcmVzb3VyY2VIYW5kbGUpIHsKLSAgICAgICAgbV9yZXNvdXJjZUhhbmRsZS0+c2V0
Q2xpZW50KDApOworICAgICAgICBtX3Jlc291cmNlSGFuZGxlLT5jbGVhckNsaWVudCgpOwogICAg
ICAgICBtX3Jlc291cmNlSGFuZGxlLT5jYW5jZWwoKTsKICAgICAgICAgbV9yZXNvdXJjZUhhbmRs
ZSA9IG51bGxwdHI7CiAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>