<?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>109757</bug_id>
          
          <creation_ts>2013-02-13 15:38:07 -0800</creation_ts>
          <short_desc>Merge MainResourceLoader::willSendRequest into DocumentLoader</short_desc>
          <delta_ts>2013-03-18 01:43:44 -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>WebCore Misc.</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>
          <dependson>112542</dependson>
          <blocked>104969</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>832422</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-02-13 15:38:07 -0800</bug_when>
    <thetext>* Move willSendRequest() to DocumentLoader, except calling checkNavigationPolicy for redirects.
* Move isPostOrRedirectAfterPost(), which is only called from willSendRequest()
* Get rid of MainResourceLoader::m_substituteData, which doesn&apos;t appear to need to be separate from DocumentLoader::m_substituteData</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832441</commentid>
    <comment_count>1</comment_count>
      <attachid>188204</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-02-13 15:51:14 -0800</bug_when>
    <thetext>Created attachment 188204
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832598</commentid>
    <comment_count>2</comment_count>
      <attachid>188204</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-13 17:38:39 -0800</bug_when>
    <thetext>Comment on attachment 188204
patch

Attachment 188204 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16536367

New failing tests:
http/tests/security/referrer-policy-always.html
http/tests/security/contentSecurityPolicy/1.1/form-action-src-blocked.html
platform/chromium/http/tests/security/mixedContent/insecure-iframe-in-main-frame-blocked.html
http/tests/security/contentSecurityPolicy/1.1/form-action-src-get-blocked.html
http/tests/security/contentSecurityPolicy/1.1/form-action-src-redirect-blocked.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833381</commentid>
    <comment_count>3</comment_count>
      <attachid>188418</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-02-14 13:52:07 -0800</bug_when>
    <thetext>Created attachment 188418
Move checkNavigationPolicy to DocumentLoader too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834754</commentid>
    <comment_count>4</comment_count>
      <attachid>188418</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-16 10:21:09 -0800</bug_when>
    <thetext>Comment on attachment 188418
Move checkNavigationPolicy to DocumentLoader too

Attachment 188418 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16587651</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853583</commentid>
    <comment_count>5</comment_count>
      <attachid>192759</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-03-12 10:23:41 -0700</bug_when>
    <thetext>Created attachment 192759
Merged to trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854154</commentid>
    <comment_count>6</comment_count>
      <attachid>192759</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-13 02:39:18 -0700</bug_when>
    <thetext>Comment on attachment 192759
Merged to trunk

Attachment 192759 did not pass win-ews (win):
Output: http://webkit-commit-queue.appspot.com/results/17036740</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854700</commentid>
    <comment_count>7</comment_count>
      <attachid>193005</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-03-13 15:15:21 -0700</bug_when>
    <thetext>Created attachment 193005
Merged to trunk again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854769</commentid>
    <comment_count>8</comment_count>
      <attachid>193005</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-13 16:12:19 -0700</bug_when>
    <thetext>Comment on attachment 193005
Merged to trunk again

Attachment 193005 did not pass win-ews (win):
Output: http://webkit-commit-queue.appspot.com/results/17207147</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856153</commentid>
    <comment_count>9</comment_count>
      <attachid>193005</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-15 11:51:28 -0700</bug_when>
    <thetext>Comment on attachment 193005
Merged to trunk again

Is this patch still current?  Would you like me to look at it now, or should we resolve the win-ews redness first?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856155</commentid>
    <comment_count>10</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-03-15 11:52:52 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 193005 [details])
&gt; Is this patch still current?  Would you like me to look at it now, or should we resolve the win-ews redness first?

It&apos;s current, but I haven&apos;t figured out why win-ews is red because an undefined HTMLFormElement while the other platforms compile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856198</commentid>
    <comment_count>11</comment_count>
      <attachid>193355</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-03-15 12:37:28 -0700</bug_when>
    <thetext>Created attachment 193355
Try again to fix win-ews</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856266</commentid>
    <comment_count>12</comment_count>
      <attachid>193355</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-03-15 14:01:16 -0700</bug_when>
    <thetext>Comment on attachment 193355
Try again to fix win-ews

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

r=me

&gt; Source/WebCore/ChangeLog:8
&gt; +        Merge MainResourceLoader::willSendRequest into DocumentLoader 
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=109757
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        No new tests, refactor only.

A few words of motivation would be nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856273</commentid>
    <comment_count>13</comment_count>
      <attachid>193372</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-03-15 14:08:36 -0700</bug_when>
    <thetext>Created attachment 193372
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856460</commentid>
    <comment_count>14</comment_count>
      <attachid>193372</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 18:23:01 -0700</bug_when>
    <thetext>Comment on attachment 193372
Patch for landing

Clearing flags on attachment: 193372

Committed r145973: &lt;http://trac.webkit.org/changeset/145973&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856461</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 18:23:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188204</attachid>
            <date>2013-02-13 15:51:14 -0800</date>
            <delta_ts>2013-02-14 13:52:07 -0800</delta_ts>
            <desc>patch</desc>
            <filename>dl_mrl_willSendRequest.txt</filename>
            <type>text/plain</type>
            <size>19104</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MjgxMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEzLTAyLTEzICBOYXRlIENo
YXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWVyZ2UgTWFpblJlc291cmNl
TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QgaW50byBEb2N1bWVudExvYWRlciAKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTc1NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0
b3Igb25seS4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6aXNQb3N0T3JSZWRpcmVjdEFmdGVyUG9zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KTogTW92ZSBmcm9t
IE1haW5SZXNvdXJjZUxvYWRlciwgZXhjZXB0CisgICAgICAgICAgICBmb3IgY2FsbGluZyBjaGVj
a05hdmlnYXRpb25Qb2xpY3ksIHdoaWNoIHdlbnQgdG8gTWFpblJlc291cmNlTG9hZGVyOjpyZWRp
cmVjdFJlY2VpdmVkKCkuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3RhcnRM
b2FkaW5nTWFpblJlc291cmNlKTogTW92ZSBzb21lIGluaXRpYWxpemF0aW9uCisgICAgICAgICAg
ICBzdGVwcyBmcm9tIE1haW5SZXNvdXJjZUxvYWRlcjo6bG9hZCgpLgorICAgICAgICAqIGxvYWRl
ci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAqIGxvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6IHRha2VJZGVudGlmaWVyRnJvbVJlc291cmNlTG9h
ZGVyKTogVGVtcG9yYXJpbHkKKyAgICAgICAgICAgIGV4cG9zZWQgZm9yIG1vdmluZyBmcm9tIGEg
bm9ybWFsIGxvYWQgdG8gU3Vic3RpdHV0ZURhdGEgbG9hZCBvbiByZWRpcmVjdC4KKwogMjAxMy0w
Mi0xMyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3Qg
cmVzdGFydCBzaGFyZWQgdGltZXIgaWYgYm90aCB0aGUgY3VycmVudCBhbmQgdGhlIG5ldyBmaXJl
IHRpbWUgYXJlIGluIHRoZSBwYXN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJl
c291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFp
blJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTQyNzU0KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw3ICsx
NzEsNyBAQAogewogICAgIGlmICghc2hvdWxkQ29udGludWUpCiAgICAgICAgIHN0b3BMb2FkaW5n
Rm9yUG9saWN5Q2hhbmdlKCk7Ci0gICAgZWxzZSBpZiAobV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlk
KCkpIHsKKyAgICBlbHNlIGlmIChtX2RvY3VtZW50TG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpLmlz
VmFsaWQoKSkgewogICAgICAgICAvLyBBIHJlZGlyZWN0IHJlc3VsdGVkIGluIGxvYWRpbmcgc3Vi
c3RpdHV0ZSBkYXRhLgogICAgICAgICBBU1NFUlQoZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5nKCkt
PnJlZGlyZWN0Q291bnQoKSk7CiAKQEAgLTE4OSwxMDYgKzE4OSwzMyBAQAogICAgICAgICBoYW5k
bGVTdWJzdGl0dXRlRGF0YUxvYWRTb29uKHJlcXVlc3QpOwogICAgIH0KIAotICAgIGRlcmVmKCk7
IC8vIGJhbGFuY2VzIHJlZiBpbiB3aWxsU2VuZFJlcXVlc3QKKyAgICBkZXJlZigpOyAvLyBiYWxh
bmNlcyByZWYgaW4gcmVkaXJlY3RSZWNlaXZlZAogfQogCi1ib29sIE1haW5SZXNvdXJjZUxvYWRl
cjo6aXNQb3N0T3JSZWRpcmVjdEFmdGVyUG9zdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1Jl
cXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCi17Ci0gICAg
aWYgKG5ld1JlcXVlc3QuaHR0cE1ldGhvZCgpID09ICJQT1NUIikKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KLSAgICBpbnQgc3RhdHVzID0gcmVkaXJlY3RSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgp
OwotICAgIGlmICgoKHN0YXR1cyA+PSAzMDEgJiYgc3RhdHVzIDw9IDMwMykgfHwgc3RhdHVzID09
IDMwNykKLSAgICAgICAgJiYgZnJhbWVMb2FkZXIoKS0+aW5pdGlhbFJlcXVlc3QoKS5odHRwTWV0
aG9kKCkgPT0gIlBPU1QiKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAKLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KIFBhc3NSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IE1haW5SZXNvdXJjZUxvYWRl
cjo6cmVzb3VyY2VEYXRhKCkKIHsKLSAgICBBU1NFUlQoIW1fcmVzb3VyY2UgfHwgIW1fc3Vic3Rp
dHV0ZURhdGEuaXNWYWxpZCgpKTsKICAgICBpZiAobV9yZXNvdXJjZSkKICAgICAgICAgcmV0dXJu
IG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7Ci0gICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEu
aXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gUmVzb3VyY2VCdWZmZXI6OmNyZWF0ZShtX3N1YnN0
aXR1dGVEYXRhLmNvbnRlbnQoKS0+ZGF0YSgpLCBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+
c2l6ZSgpKTsKICAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OnJl
ZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAg
ICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7Ci0gICAg
d2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwotfQogCi12b2lkIE1h
aW5SZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgbmV3UmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKLXsKLSAgICAv
LyBOb3RlIHRoYXQgdGhlcmUgYXJlIG5vIGFzc2VydHMgaGVyZSBhcyB0aGVyZSBhcmUgZm9yIHRo
ZSBvdGhlciBjYWxsYmFja3MuIFRoaXMgaXMgZHVlIHRvIHRoZQotICAgIC8vIGZhY3QgdGhhdCB0
aGlzICJjYWxsYmFjayIgaXMgc2VudCB3aGVuIHN0YXJ0aW5nIGV2ZXJ5IGxvYWQsIGFuZCB0aGUg
c3RhdGUgb2YgY2FsbGJhY2sKLSAgICAvLyBkZWZlcnJhbHMgcGxheXMgbGVzcyBvZiBhIHBhcnQg
aW4gdGhpcyBmdW5jdGlvbiBpbiBwcmV2ZW50aW5nIHRoZSBiYWQgYmVoYXZpb3IgZGVmZXJyaW5n
IAotICAgIC8vIGNhbGxiYWNrcyBpcyBtZWFudCB0byBwcmV2ZW50LgotICAgIEFTU0VSVCghbmV3
UmVxdWVzdC5pc051bGwoKSk7Ci0KICAgICAvLyBUaGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNh
biBkbyBhbnl0aGluZyBpbmNsdWRpbmcgcG9zc2libHkgcmVtb3ZpbmcgdGhlIGxhc3QKICAgICAv
LyByZWZlcmVuY2UgdG8gdGhpcyBvYmplY3Q7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgMzI2NjIx
Ni4KICAgICBSZWZQdHI8TWFpblJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwogCi0gICAg
aWYgKCFmcmFtZUxvYWRlcigpLT5jaGVja0lmRm9ybUFjdGlvbkFsbG93ZWRCeUNTUChuZXdSZXF1
ZXN0LnVybCgpKSkgewotICAgICAgICBjYW5jZWwoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
KyAgICBtX2RvY3VtZW50TG9hZGVyLT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RS
ZXNwb25zZSk7CiAKLSAgICBBU1NFUlQoZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5nKCktPmZldGNo
U3RhcnQoKSk7Ci0gICAgaWYgKCFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKSB7Ci0gICAgICAg
IC8vIElmIHRoZSByZWRpcmVjdGluZyB1cmwgaXMgbm90IGFsbG93ZWQgdG8gZGlzcGxheSBjb250
ZW50IGZyb20gdGhlIHRhcmdldCBvcmlnaW4sCi0gICAgICAgIC8vIHRoZW4gYmxvY2sgdGhlIHJl
ZGlyZWN0LgotICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlZGlyZWN0aW5nT3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZWRpcmVjdFJlc3BvbnNlLnVybCgpKTsKLSAgICAg
ICAgaWYgKCFyZWRpcmVjdGluZ09yaWdpbi0+Y2FuRGlzcGxheShuZXdSZXF1ZXN0LnVybCgpKSkg
ewotICAgICAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChtX2RvY3Vt
ZW50TG9hZGVyLT5mcmFtZSgpLCBuZXdSZXF1ZXN0LnVybCgpLnN0cmluZygpKTsKLSAgICAgICAg
ICAgIGNhbmNlbCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGRv
Y3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5hZGRSZWRpcmVjdChyZWRpcmVjdFJlc3BvbnNlLnVy
bCgpLCBuZXdSZXF1ZXN0LnVybCgpKTsKLSAgICB9Ci0KLSAgICAvLyBVcGRhdGUgY29va2llIHBv
bGljeSBiYXNlIFVSTCBhcyBVUkwgY2hhbmdlcywgZXhjZXB0IGZvciBzdWJmcmFtZXMsIHdoaWNo
IHVzZSB0aGUKLSAgICAvLyBVUkwgb2YgdGhlIG1haW4gZnJhbWUgd2hpY2ggZG9lc24ndCBjaGFu
Z2Ugd2hlbiB3ZSByZWRpcmVjdC4KLSAgICBpZiAoZnJhbWVMb2FkZXIoKS0+aXNMb2FkaW5nTWFp
bkZyYW1lKCkpCi0gICAgICAgIG5ld1JlcXVlc3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMobmV3
UmVxdWVzdC51cmwoKSk7Ci0KLSAgICAvLyBJZiB3ZSdyZSBmaWVsZGluZyBhIHJlZGlyZWN0IGlu
IHJlc3BvbnNlIHRvIGEgUE9TVCwgZm9yY2UgYSBsb2FkIGZyb20gb3JpZ2luLCBzaW5jZQotICAg
IC8vIHRoaXMgaXMgYSBjb21tb24gc2l0ZSB0ZWNobmlxdWUgdG8gcmV0dXJuIHRvIGEgcGFnZSB2
aWV3aW5nIHNvbWUgZGF0YSB0aGF0IHRoZSBQT1NUCi0gICAgLy8ganVzdCBtb2RpZmllZC4KLSAg
ICAvLyBBbHNvLCBQT1NUIHJlcXVlc3RzIGFsd2F5cyBsb2FkIGZyb20gb3JpZ2luLCBidXQgdGhp
cyBkb2VzIG5vdCBhZmZlY3Qgc3VicmVzb3VyY2VzLgotICAgIGlmIChuZXdSZXF1ZXN0LmNhY2hl
UG9saWN5KCkgPT0gVXNlUHJvdG9jb2xDYWNoZVBvbGljeSAmJiBpc1Bvc3RPclJlZGlyZWN0QWZ0
ZXJQb3N0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKQotICAgICAgICBuZXdSZXF1ZXN0
LnNldENhY2hlUG9saWN5KFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhKTsKLQotICAgIEZyYW1lKiB0
b3AgPSBtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT50cmVlKCktPnRvcCgpOwotICAgIGlmICh0
b3AgIT0gbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKSkgewotICAgICAgICBpZiAoIWZyYW1lTG9h
ZGVyKCktPm1peGVkQ29udGVudENoZWNrZXIoKS0+Y2FuRGlzcGxheUluc2VjdXJlQ29udGVudCh0
b3AtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIG5ld1JlcXVlc3QudXJsKCkpKSB7Ci0g
ICAgICAgICAgICBjYW5jZWwoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIC8vIERvbid0IHNldCB0aGlzIG9uIHRoZSBmaXJzdCByZXF1ZXN0LiBJdCBpcyBz
ZXQgd2hlbiB0aGUgbWFpbiBsb2FkIHdhcyBzdGFydGVkLgotICAgIG1fZG9jdW1lbnRMb2FkZXIt
PnNldFJlcXVlc3QobmV3UmVxdWVzdCk7Ci0KLSAgICBpZiAoIXJlZGlyZWN0UmVzcG9uc2UuaXNO
dWxsKCkpIHsKLSAgICAgICAgLy8gV2UgY2hlY2tlZCBhcHBsaWNhdGlvbiBjYWNoZSBmb3IgaW5p
dGlhbCBVUkwsIG5vdyB3ZSBuZWVkIHRvIGNoZWNrIGl0IGZvciByZWRpcmVjdGVkIG9uZS4KLSAg
ICAgICAgQVNTRVJUKCFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSk7Ci0gICAgICAgIGRvY3Vt
ZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm1heWJlTG9hZE1haW5SZXNvdXJj
ZUZvclJlZGlyZWN0KG5ld1JlcXVlc3QsIG1fc3Vic3RpdHV0ZURhdGEpOwotICAgICAgICBpZiAo
bV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBtX2lkZW50aWZpZXJGb3JM
b2FkV2l0aG91dFJlc291cmNlTG9hZGVyID0gaWRlbnRpZmllcigpOwotICAgIH0KLQogICAgIC8v
IEZJWE1FOiBJZGVhbGx5IHdlJ2Qgc3RvcCB0aGUgSS9PIHVudGlsIHdlIGhlYXIgYmFjayBmcm9t
IHRoZSBuYXZpZ2F0aW9uIHBvbGljeSBkZWxlZ2F0ZQogICAgIC8vIGxpc3RlbmVyLiBCdXQgdGhl
cmUncyBubyB3YXkgdG8gZG8gdGhhdCBpbiBwcmFjdGljZS4gU28gaW5zdGVhZCB3ZSBjYW5jZWwg
bGF0ZXIgaWYgdGhlCiAgICAgLy8gbGlzdGVuZXIgdGVsbHMgdXMgdG8uIEluIHByYWN0aWNlIHRo
YXQgbWVhbnMgdGhlIG5hdmlnYXRpb24gcG9saWN5IG5lZWRzIHRvIGJlIGRlY2lkZWQKICAgICAv
LyBzeW5jaHJvbm91c2x5IGZvciB0aGVzZSByZWRpcmVjdCBjYXNlcy4KICAgICBpZiAoIXJlZGly
ZWN0UmVzcG9uc2UuaXNOdWxsKCkpIHsKICAgICAgICAgcmVmKCk7IC8vIGJhbGFuY2VkIGJ5IGRl
cmVmIGluIGNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5Ci0gICAgICAgIGZyYW1lTG9hZGVy
KCktPnBvbGljeUNoZWNrZXIoKS0+Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KG5ld1JlcXVlc3QsIGNh
bGxDb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeSwgdGhpcyk7CisgICAgICAgIGZyYW1lTG9h
ZGVyKCktPnBvbGljeUNoZWNrZXIoKS0+Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KHJlcXVlc3QsIGNh
bGxDb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeSwgdGhpcyk7CiAgICAgfQogfQogCkBAIC0z
MDUsNyArMjMyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgZXF1
YWxJZ25vcmluZ0Nhc2UoIm1lc3NhZ2UvcmZjODIyIiwgbWltZVR5cGUpCiAjZW5kaWYKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoIm11bHRp
cGFydC9yZWxhdGVkIiwgbWltZVR5cGUpKQotICAgICAgICAgICAgJiYgIW1fc3Vic3RpdHV0ZURh
dGEuaXNWYWxpZCgpICYmICFTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xv
Y2FsKHVybC5wcm90b2NvbCgpKTsKKyAgICAgICAgICAgICYmICFtX2RvY3VtZW50TG9hZGVyLT5z
dWJzdGl0dXRlRGF0YSgpLmlzVmFsaWQoKSAmJiAhU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0
VVJMU2NoZW1lQXNMb2NhbCh1cmwucHJvdG9jb2woKSk7CiAgICAgICAgIGlmICghZnJhbWVMb2Fk
ZXIoKS0+Y2xpZW50KCktPmNhblNob3dNSU1FVHlwZShtaW1lVHlwZSkgfHwgaXNSZW1vdGVXZWJB
cmNoaXZlKSB7CiAgICAgICAgICAgICBmcmFtZUxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCktPmNh
bm5vdFNob3dNSU1FVHlwZShyKTsKICAgICAgICAgICAgIC8vIENoZWNrIHJlYWNoZWRUZXJtaW5h
bFN0YXRlIHNpbmNlIHRoZSBsb2FkIG1heSBoYXZlIGFscmVhZHkgYmVlbiBjYW5jZWxlZCBpbnNp
ZGUgb2YgX2hhbmRsZVVuaW1wbGVtZW50YWJsZVBvbGljeVdpdGhFcnJvckNvZGU6Oi4KQEAgLTM2
MCw5ICsyODcsOSBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFtX2RvY3VtZW50TG9h
ZGVyLT5pc1N0b3BwaW5nKCkgJiYgbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpIHsKLSAgICAg
ICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5zaXplKCkpCi0gICAgICAgICAgICBk
YXRhUmVjZWl2ZWQoMCwgbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPmRhdGEoKSwgbV9zdWJz
dGl0dXRlRGF0YS5jb250ZW50KCktPnNpemUoKSk7CisgICAgaWYgKCFtX2RvY3VtZW50TG9hZGVy
LT5pc1N0b3BwaW5nKCkgJiYgbV9kb2N1bWVudExvYWRlci0+c3Vic3RpdHV0ZURhdGEoKS5pc1Zh
bGlkKCkpIHsKKyAgICAgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXItPnN1YnN0aXR1dGVEYXRhKCku
Y29udGVudCgpLT5zaXplKCkpCisgICAgICAgICAgICBkYXRhUmVjZWl2ZWQoMCwgbV9kb2N1bWVu
dExvYWRlci0+c3Vic3RpdHV0ZURhdGEoKS5jb250ZW50KCktPmRhdGEoKSwgbV9kb2N1bWVudExv
YWRlci0+c3Vic3RpdHV0ZURhdGEoKS5jb250ZW50KCktPnNpemUoKSk7CiAgICAgICAgIGlmICgh
bV9kb2N1bWVudExvYWRlci0+aXNTdG9wcGluZygpKQogICAgICAgICAgICAgZGlkRmluaXNoTG9h
ZGluZygwKTsKICAgICB9CkBAIC02MDcsNyArNTM0LDYgQEAKICAgICBNZW1vcnlDbGFzc0luZm8g
aW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkxvYWRlcik7
CiAgICAgaW5mby5hZGRNZW1iZXIobV9yZXNvdXJjZSwgInJlc291cmNlIik7CiAgICAgaW5mby5h
ZGRNZW1iZXIobV9pbml0aWFsUmVxdWVzdCwgImluaXRpYWxSZXF1ZXN0Iik7Ci0gICAgaW5mby5h
ZGRNZW1iZXIobV9zdWJzdGl0dXRlRGF0YSwgInN1YnN0aXR1dGVEYXRhIik7CiAgICAgaW5mby5h
ZGRNZW1iZXIobV9kYXRhTG9hZFRpbWVyLCAiZGF0YUxvYWRUaW1lciIpOwogICAgIGluZm8uYWRk
TWVtYmVyKG1fZG9jdW1lbnRMb2FkZXIsICJkb2N1bWVudExvYWRlciIpOwogfQpAQCAtNjE2LDcg
KzU0Miw3IEBACiB7CiAgICAgUmVmUHRyPE1haW5SZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlz
KTsKIAotICAgIEtVUkwgdXJsID0gbV9zdWJzdGl0dXRlRGF0YS5yZXNwb25zZVVSTCgpOworICAg
IEtVUkwgdXJsID0gbV9kb2N1bWVudExvYWRlci0+c3Vic3RpdHV0ZURhdGEoKS5yZXNwb25zZVVS
TCgpOwogICAgIGlmICh1cmwuaXNFbXB0eSgpKQogICAgICAgICB1cmwgPSBtX2luaXRpYWxSZXF1
ZXN0LnVybCgpOwogCkBAIC02MjQsNyArNTUwLDcgQEAKICAgICAvLyBsb2FkZXIgd2lsbCBub3Qg
dGhpbmsgdGhlcmUncyBzdGlsbCBhIGRlZmVycmVkIGxvYWQgbGVmdCB0byBkby4KICAgICBtX2lu
aXRpYWxSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiAgICAgICAgIAotICAgIFJlc291cmNl
UmVzcG9uc2UgcmVzcG9uc2UodXJsLCBtX3N1YnN0aXR1dGVEYXRhLm1pbWVUeXBlKCksIG1fc3Vi
c3RpdHV0ZURhdGEuY29udGVudCgpLT5zaXplKCksIG1fc3Vic3RpdHV0ZURhdGEudGV4dEVuY29k
aW5nKCksICIiKTsKKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHVybCwgbV9kb2N1bWVu
dExvYWRlci0+c3Vic3RpdHV0ZURhdGEoKS5taW1lVHlwZSgpLCBtX2RvY3VtZW50TG9hZGVyLT5z
dWJzdGl0dXRlRGF0YSgpLmNvbnRlbnQoKS0+c2l6ZSgpLCBtX2RvY3VtZW50TG9hZGVyLT5zdWJz
dGl0dXRlRGF0YSgpLnRleHRFbmNvZGluZygpLCAiIik7CiAgICAgcmVzcG9uc2VSZWNlaXZlZCgw
LCByZXNwb25zZSk7CiB9CiAKQEAgLTY0OCwzMiArNTc0LDEyIEBACiAgICAgICAgIGhhbmRsZVN1
YnN0aXR1dGVEYXRhTG9hZE5vdygwKTsKIH0KIAotdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6Omxv
YWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBpbml0aWFsUmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0
ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQordm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OmxvYWQoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiBpbml0aWFsUmVxdWVzdCkKIHsKLSAgICAvLyBJdCBhcHBlYXJz
IHRoYXQgaXQgaXMgcG9zc2libGUgZm9yIHRoaXMgbG9hZCB0byBiZSBjYW5jZWxsZWQgYW5kIGRl
cmVmZW5jZWQgYnkgdGhlIERvY3VtZW50TG9hZGVyCi0gICAgLy8gaW4gd2lsbFNlbmRSZXF1ZXN0
KCkgaWYgbG9hZE5vdygpIGlzIGNhbGxlZC4KICAgICBSZWZQdHI8TWFpblJlc291cmNlTG9hZGVy
PiBwcm90ZWN0KHRoaXMpOwotCi0gICAgbV9zdWJzdGl0dXRlRGF0YSA9IHN1YnN0aXR1dGVEYXRh
OwotCi0gICAgQVNTRVJUKGRvY3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5uYXZpZ2F0aW9uU3Rh
cnQoKSk7Ci0gICAgQVNTRVJUKCFkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+ZmV0Y2hTdGFy
dCgpKTsKLSAgICBkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+bWFya0ZldGNoU3RhcnQoKTsK
ICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChpbml0aWFsUmVxdWVzdCk7CiAKLSAgICAvLyBT
ZW5kIHRoaXMgc3ludGhldGljIGRlbGVnYXRlIGNhbGxiYWNrIHNpbmNlIGNsaWVudHMgZXhwZWN0
IGl0LCBhbmQKLSAgICAvLyB3ZSBubyBsb25nZXIgc2VuZCB0aGUgY2FsbGJhY2sgZnJvbSB3aXRo
aW4gTlNVUkxDb25uZWN0aW9uIGZvcgotICAgIC8vIGluaXRpYWwgcmVxdWVzdHMuCi0gICAgd2ls
bFNlbmRSZXF1ZXN0KHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSk7Ci0gICAgQVNTRVJUKCFk
ZWxldGlvbkhhc0JlZ3VuKCkpOwotCi0gICAgLy8gd2lsbFNlbmRSZXF1ZXN0KCkgbWF5IGxlYWQg
dG8gb3VyIERvY3VtZW50TG9hZGVyIGJlaW5nIGRldGFjaGVkIG9yIGNhbmNlbGxpbmcgdGhlIGxv
YWQgdmlhIG51bGxpbmcgdGhlIFJlc291cmNlUmVxdWVzdC4KLSAgICBpZiAoIWRvY3VtZW50TG9h
ZGVyKCktPmZyYW1lKCkgfHwgcmVxdWVzdC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+bWF5YmVMb2FkTWFp
blJlc291cmNlKHJlcXVlc3QsIG1fc3Vic3RpdHV0ZURhdGEpOwotCi0gICAgaWYgKG1fc3Vic3Rp
dHV0ZURhdGEuaXNWYWxpZCgpKSB7CisgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXItPnN1YnN0aXR1
dGVEYXRhKCkuaXNWYWxpZCgpKSB7CiAgICAgICAgIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0
UmVzb3VyY2VMb2FkZXIgPSBtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5wYWdlKCktPnByb2dy
ZXNzKCktPmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKICAgICAgICAgZnJhbWVMb2FkZXIoKS0+
bm90aWZpZXIoKS0+YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QobV9pZGVudGlmaWVy
Rm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwgZG9jdW1lbnRMb2FkZXIoKSwgcmVxdWVzdCk7
CiAgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmRpc3BhdGNoV2lsbFNlbmRSZXF1
ZXN0KGRvY3VtZW50TG9hZGVyKCksIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VM
b2FkZXIsIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDE0Mjc1NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw2
ICsxMjgsOCBAQAogewogICAgIGlmIChtX21haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVy
biBtX21haW5SZXNvdXJjZURhdGE7CisgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgp
KQorICAgICAgICByZXR1cm4gUmVzb3VyY2VCdWZmZXI6OmNyZWF0ZShtX3N1YnN0aXR1dGVEYXRh
LmNvbnRlbnQoKS0+ZGF0YSgpLCBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+c2l6ZSgpKTsK
ICAgICBpZiAobV9tYWluUmVzb3VyY2VMb2FkZXIpCiAgICAgICAgIHJldHVybiBtX21haW5SZXNv
dXJjZUxvYWRlci0+cmVzb3VyY2VEYXRhKCk7CiAgICAgcmV0dXJuIDA7CkBAIC0zMDAsNiArMzAy
LDc2IEBACiAgICAgICAgIGZyYW1lTG9hZGVyKCktPmNoZWNrTG9hZENvbXBsZXRlKCk7CiB9CiAK
K2Jvb2wgRG9jdW1lbnRMb2FkZXI6OmlzUG9zdE9yUmVkaXJlY3RBZnRlclBvc3QoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVj
dFJlc3BvbnNlKQoreworICAgIGlmIChuZXdSZXF1ZXN0Lmh0dHBNZXRob2QoKSA9PSAiUE9TVCIp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaW50IHN0YXR1cyA9IHJlZGlyZWN0UmVzcG9u
c2UuaHR0cFN0YXR1c0NvZGUoKTsKKyAgICBpZiAoKChzdGF0dXMgPj0gMzAxICYmIHN0YXR1cyA8
PSAzMDMpIHx8IHN0YXR1cyA9PSAzMDcpCisgICAgICAgICYmIG1fb3JpZ2luYWxSZXF1ZXN0Lmh0
dHBNZXRob2QoKSA9PSAiUE9TVCIpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJu
IGZhbHNlOworfQorCit2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJl
c3BvbnNlKQoreworICAgIC8vIE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gYXNzZXJ0cyBoZXJlIGFz
IHRoZXJlIGFyZSBmb3IgdGhlIG90aGVyIGNhbGxiYWNrcy4gVGhpcyBpcyBkdWUgdG8gdGhlCisg
ICAgLy8gZmFjdCB0aGF0IHRoaXMgImNhbGxiYWNrIiBpcyBzZW50IHdoZW4gc3RhcnRpbmcgZXZl
cnkgbG9hZCwgYW5kIHRoZSBzdGF0ZSBvZiBjYWxsYmFjaworICAgIC8vIGRlZmVycmFscyBwbGF5
cyBsZXNzIG9mIGEgcGFydCBpbiB0aGlzIGZ1bmN0aW9uIGluIHByZXZlbnRpbmcgdGhlIGJhZCBi
ZWhhdmlvciBkZWZlcnJpbmcgCisgICAgLy8gY2FsbGJhY2tzIGlzIG1lYW50IHRvIHByZXZlbnQu
CisgICAgQVNTRVJUKCFuZXdSZXF1ZXN0LmlzTnVsbCgpKTsKKworICAgIGlmICghZnJhbWVMb2Fk
ZXIoKS0+Y2hlY2tJZkZvcm1BY3Rpb25BbGxvd2VkQnlDU1AobmV3UmVxdWVzdC51cmwoKSkpIHsK
KyAgICAgICAgY2FuY2VsTWFpblJlc291cmNlTG9hZChmcmFtZUxvYWRlcigpLT5jYW5jZWxsZWRF
cnJvcihuZXdSZXF1ZXN0KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQo
dGltaW5nKCktPmZldGNoU3RhcnQoKSk7CisgICAgaWYgKCFyZWRpcmVjdFJlc3BvbnNlLmlzTnVs
bCgpKSB7CisgICAgICAgIC8vIElmIHRoZSByZWRpcmVjdGluZyB1cmwgaXMgbm90IGFsbG93ZWQg
dG8gZGlzcGxheSBjb250ZW50IGZyb20gdGhlIHRhcmdldCBvcmlnaW4sCisgICAgICAgIC8vIHRo
ZW4gYmxvY2sgdGhlIHJlZGlyZWN0LgorICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJl
ZGlyZWN0aW5nT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZWRpcmVjdFJlc3BvbnNl
LnVybCgpKTsKKyAgICAgICAgaWYgKCFyZWRpcmVjdGluZ09yaWdpbi0+Y2FuRGlzcGxheShuZXdS
ZXF1ZXN0LnVybCgpKSkgeworICAgICAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9h
ZEZhaWxlZChtX2ZyYW1lLCBuZXdSZXF1ZXN0LnVybCgpLnN0cmluZygpKTsKKyAgICAgICAgICAg
IGNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZnJhbWVMb2FkZXIoKS0+Y2FuY2VsbGVkRXJyb3IobmV3
UmVxdWVzdCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHRpbWlu
ZygpLT5hZGRSZWRpcmVjdChyZWRpcmVjdFJlc3BvbnNlLnVybCgpLCBuZXdSZXF1ZXN0LnVybCgp
KTsKKyAgICB9CisKKyAgICAvLyBVcGRhdGUgY29va2llIHBvbGljeSBiYXNlIFVSTCBhcyBVUkwg
Y2hhbmdlcywgZXhjZXB0IGZvciBzdWJmcmFtZXMsIHdoaWNoIHVzZSB0aGUKKyAgICAvLyBVUkwg
b2YgdGhlIG1haW4gZnJhbWUgd2hpY2ggZG9lc24ndCBjaGFuZ2Ugd2hlbiB3ZSByZWRpcmVjdC4K
KyAgICBpZiAoZnJhbWVMb2FkZXIoKS0+aXNMb2FkaW5nTWFpbkZyYW1lKCkpCisgICAgICAgIG5l
d1JlcXVlc3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMobmV3UmVxdWVzdC51cmwoKSk7CisKKyAg
ICAvLyBJZiB3ZSdyZSBmaWVsZGluZyBhIHJlZGlyZWN0IGluIHJlc3BvbnNlIHRvIGEgUE9TVCwg
Zm9yY2UgYSBsb2FkIGZyb20gb3JpZ2luLCBzaW5jZQorICAgIC8vIHRoaXMgaXMgYSBjb21tb24g
c2l0ZSB0ZWNobmlxdWUgdG8gcmV0dXJuIHRvIGEgcGFnZSB2aWV3aW5nIHNvbWUgZGF0YSB0aGF0
IHRoZSBQT1NUCisgICAgLy8ganVzdCBtb2RpZmllZC4KKyAgICAvLyBBbHNvLCBQT1NUIHJlcXVl
c3RzIGFsd2F5cyBsb2FkIGZyb20gb3JpZ2luLCBidXQgdGhpcyBkb2VzIG5vdCBhZmZlY3Qgc3Vi
cmVzb3VyY2VzLgorICAgIGlmIChuZXdSZXF1ZXN0LmNhY2hlUG9saWN5KCkgPT0gVXNlUHJvdG9j
b2xDYWNoZVBvbGljeSAmJiBpc1Bvc3RPclJlZGlyZWN0QWZ0ZXJQb3N0KG5ld1JlcXVlc3QsIHJl
ZGlyZWN0UmVzcG9uc2UpKQorICAgICAgICBuZXdSZXF1ZXN0LnNldENhY2hlUG9saWN5KFJlbG9h
ZElnbm9yaW5nQ2FjaGVEYXRhKTsKKworICAgIEZyYW1lKiB0b3AgPSBtX2ZyYW1lLT50cmVlKCkt
PnRvcCgpOworICAgIGlmICh0b3AgIT0gbV9mcmFtZSkgeworICAgICAgICBpZiAoIWZyYW1lTG9h
ZGVyKCktPm1peGVkQ29udGVudENoZWNrZXIoKS0+Y2FuRGlzcGxheUluc2VjdXJlQ29udGVudCh0
b3AtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIG5ld1JlcXVlc3QudXJsKCkpKSB7Cisg
ICAgICAgICAgICBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGZyYW1lTG9hZGVyKCktPmNhbmNlbGxl
ZEVycm9yKG5ld1JlcXVlc3QpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHNldFJlcXVlc3QobmV3UmVxdWVzdCk7CisKKyAgICBpZiAoIXJlZGlyZWN0UmVz
cG9uc2UuaXNOdWxsKCkpIHsKKyAgICAgICAgLy8gV2UgY2hlY2tlZCBhcHBsaWNhdGlvbiBjYWNo
ZSBmb3IgaW5pdGlhbCBVUkwsIG5vdyB3ZSBuZWVkIHRvIGNoZWNrIGl0IGZvciByZWRpcmVjdGVk
IG9uZS4KKyAgICAgICAgQVNTRVJUKCFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSk7CisgICAg
ICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QtPm1heWJlTG9hZE1haW5SZXNvdXJjZUZvclJlZGly
ZWN0KG5ld1JlcXVlc3QsIG1fc3Vic3RpdHV0ZURhdGEpOworICAgICAgICBpZiAobV9zdWJzdGl0
dXRlRGF0YS5pc1ZhbGlkKCkpCisgICAgICAgICAgICBtYWluUmVzb3VyY2VMb2FkZXIoKS0+IHRh
a2VJZGVudGlmaWVyRnJvbVJlc291cmNlTG9hZGVyKCk7CisgICAgfQorfQorCiB2b2lkIERvY3Vt
ZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAg
ICAgLy8gQm90aCB1bmxvYWRpbmcgdGhlIG9sZCBwYWdlIGFuZCBwYXJzaW5nIHRoZSBuZXcgcGFn
ZSBtYXkgZXhlY3V0ZSBKYXZhU2NyaXB0IHdoaWNoIGRlc3Ryb3lzIHRoZSBkYXRhc291cmNlCkBA
IC04OTYsOCArOTY4LDE2IEBACiAgICAgLy8gTm90ZSB0aGF0IGN1cnJlbnRseSwgc29tZSByZXF1
ZXN0cyBtYXkgaGF2ZSBpbmNvcnJlY3QgZXh0cmEgZmllbGRzIGV2ZW4gaWYgdGhpcyBmdW5jdGlv
biBoYXMgYmVlbiBjYWxsZWQsCiAgICAgLy8gYmVjYXVzZSB3ZSBwYXNzIGEgd3JvbmcgbG9hZFR5
cGUgKHNlZSBGSVhNRSBpbiBhZGRFeHRyYUZpZWxkc1RvTWFpblJlc291cmNlUmVxdWVzdCgpKS4K
ICAgICBmcmFtZUxvYWRlcigpLT5hZGRFeHRyYUZpZWxkc1RvTWFpblJlc291cmNlUmVxdWVzdCht
X3JlcXVlc3QpOwotICAgIG1fbWFpblJlc291cmNlTG9hZGVyLT5sb2FkKG1fcmVxdWVzdCwgbV9z
dWJzdGl0dXRlRGF0YSk7CiAKKyAgICBBU1NFUlQodGltaW5nKCktPm5hdmlnYXRpb25TdGFydCgp
KTsKKyAgICBBU1NFUlQoIXRpbWluZygpLT5mZXRjaFN0YXJ0KCkpOworICAgIHRpbWluZygpLT5t
YXJrRmV0Y2hTdGFydCgpOworICAgIHdpbGxTZW5kUmVxdWVzdChtX3JlcXVlc3QsIFJlc291cmNl
UmVzcG9uc2UoKSk7CisKKyAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0LT5tYXliZUxvYWRNYWlu
UmVzb3VyY2UobV9yZXF1ZXN0LCBtX3N1YnN0aXR1dGVEYXRhKTsKKworICAgIG1fbWFpblJlc291
cmNlTG9hZGVyLT5sb2FkKG1fcmVxdWVzdCk7CisKICAgICBpZiAobV9yZXF1ZXN0LmlzTnVsbCgp
KSB7CiAgICAgICAgIG1fbWFpblJlc291cmNlTG9hZGVyID0gMDsKICAgICAgICAgLy8gSWYgdGhl
IGxvYWQgd2FzIGFib3J0ZWQgYnkgY2xlYXJpbmcgbV9yZXF1ZXN0LCBpdCdzIHBvc3NpYmxlIHRo
ZSBBcHBsaWNhdGlvbkNhY2hlSG9zdApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmgJKHJldmlzaW9uIDE0Mjc1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDgsNiArMjQ4LDkgQEAKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0
OwogCisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBwcml2YXRlIG9uY2UgRG9jdW1l
bnRMb2FkZXIgYW5kIE1haW5SZXNvdXJjZUxvYWRlciBhcmUgbWVyZ2VkLgorICAgICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIERvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CiAKQEAgLTI2OCw2ICsyNzEsNyBA
QAogICAgICAgICBib29sIG1heWJlTG9hZEVtcHR5KCk7CiAKICAgICAgICAgYm9vbCBpc011bHRp
cGFydFJlcGxhY2luZ0xvYWQoKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc1Bvc3RPclJlZGlyZWN0
QWZ0ZXJQb3N0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKIAogICAgICAgICB2b2lkIGRlbGl2ZXJTdWJzdGl0dXRlUmVzb3VyY2VzQWZ0ZXJEZWxheSgp
OwogICAgICAgICB2b2lkIHN1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXJGaXJlZChUaW1l
cjxEb2N1bWVudExvYWRlcj4qKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVz
b3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJl
c291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDE0Mjc1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9NYWluUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQAog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1haW5SZXNvdXJjZUxvYWRlcj4gY3JlYXRlKERvY3VtZW50
TG9hZGVyKik7CiAgICAgdmlydHVhbCB+TWFpblJlc291cmNlTG9hZGVyKCk7CiAKLSAgICB2b2lk
IGxvYWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKKyAg
ICB2b2lkIGxvYWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBjYW5jZWwoKTsK
ICAgICB2b2lkIGNhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgUmVzb3VyY2VMb2Fk
ZXIqIGxvYWRlcigpIGNvbnN0OwpAQCAtNzcsNiArNzcsOCBAQAogCiAgICAgdm9pZCByZXBvcnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKKyAgICB2b2lkIHRha2VJZGVu
dGlmaWVyRnJvbVJlc291cmNlTG9hZGVyKCkgeyBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJl
c291cmNlTG9hZGVyID0gaWRlbnRpZmllcigpOyB9CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
TWFpblJlc291cmNlTG9hZGVyKERvY3VtZW50TG9hZGVyKik7CiAKQEAgLTg1LDcgKzg3LDYgQEAK
ICAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgY2hh
ciogZGF0YSwgaW50IGRhdGFMZW5ndGgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopIE9WRVJSSURFOwogCi0gICAgdm9pZCB3aWxsU2Vu
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1l
KTsKICAgICB2b2lkIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZFNvb24oY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik7CiAgICAgdm9pZCBoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3coTWFpblJlc291
cmNlTG9hZGVyVGltZXIqKTsKQEAgLTk1LDcgKzk2LDYgQEAKICAgICB2b2lkIHJlY2VpdmVkRXJy
b3IoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIFJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRG
b3JQb2xpY3lDaGFuZ2VFcnJvcigpIGNvbnN0OwogICAgIHZvaWQgc3RvcExvYWRpbmdGb3JQb2xp
Y3lDaGFuZ2UoKTsKLSAgICBib29sIGlzUG9zdE9yUmVkaXJlY3RBZnRlclBvc3QoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVj
dFJlc3BvbnNlKTsKIAogICAgIHN0YXRpYyB2b2lkIGNhbGxDb250aW51ZUFmdGVyTmF2aWdhdGlv
blBvbGljeSh2b2lkKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3Rh
dGU+LCBib29sIHNob3VsZENvbnRpbnVlKTsKICAgICB2b2lkIGNvbnRpbnVlQWZ0ZXJOYXZpZ2F0
aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGJvb2wgc2hvdWxkQ29udGludWUpOwpA
QCAtMTE5LDcgKzExOSw2IEBACiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVz
b3VyY2U+IG1fcmVzb3VyY2U7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9pbml0aWFsUmVxdWVz
dDsKLSAgICBTdWJzdGl0dXRlRGF0YSBtX3N1YnN0aXR1dGVEYXRhOwogICAgIFJlc291cmNlUmVz
cG9uc2UgbV9yZXNwb25zZTsKIAogICAgIE1haW5SZXNvdXJjZUxvYWRlclRpbWVyIG1fZGF0YUxv
YWRUaW1lcjsK
</data>
<flag name="commit-queue"
          id="208253"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188418</attachid>
            <date>2013-02-14 13:52:07 -0800</date>
            <delta_ts>2013-02-20 16:53:52 -0800</delta_ts>
            <desc>Move checkNavigationPolicy to DocumentLoader too</desc>
            <filename>dl_mrl_willSendRequest2.txt</filename>
            <type>text/plain</type>
            <size>24343</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MjkwOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDEzLTAyLTE0ICBOYXRlIENo
YXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWVyZ2UgTWFpblJlc291cmNl
TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QgaW50byBEb2N1bWVudExvYWRlciAKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTc1NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0
b3Igb25seS4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6aXNQb3N0T3JSZWRpcmVjdEFmdGVyUG9zdCk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjp3aWxsU2Vu
ZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNhbGxDb250aW51
ZUFmdGVyTmF2aWdhdGlvblBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6Y29udGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxv
YWRlcjo6cmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRl
cjo6cmVkaXJlY3RSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2Fk
ZXI6OmNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5S
ZXNvdXJjZUxvYWRlcjo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWFp
blJlc291cmNlTG9hZGVyOjpoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3cpOgorICAgICAgICAo
V2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjpsb2FkKToKKyAgICAgICAgKiBsb2FkZXIvTWFp
blJlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6
OnRha2VJZGVudGlmaWVyRnJvbVJlc291cmNlTG9hZGVyKTogVGVtcG9yYXJpbHkKKyAgICAgICAg
ICAgIGV4cG9zZWQgZm9yIG1vdmluZyBmcm9tIGEgbm9ybWFsIGxvYWQgdG8gU3Vic3RpdHV0ZURh
dGEgbG9hZCBvbiByZWRpcmVjdC4KKwogMjAxMy0wMi0xNCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQu
cmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjE0MjgyNS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2Fk
ZXIuY3BwCShyZXZpc2lvbiAxNDI4OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJl
c291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNiBAQAogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkVGltaW5nLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnRMb2FkZXIuaCIKLSNpbmNsdWRlICJGb3JtU3RhdGUuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJD
bGllbnQuaCIKQEAgLTE2MiwxMzYgKzE2MSwxOSBAQAogICAgIGNhbmNlbChlcnJvcik7CiB9CiAK
LXZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpjYWxsQ29udGludWVBZnRlck5hdmlnYXRpb25Qb2xp
Y3kodm9pZCogYXJndW1lbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1Jl
ZlB0cjxGb3JtU3RhdGU+LCBib29sIHNob3VsZENvbnRpbnVlKQotewotICAgIHN0YXRpY19jYXN0
PE1haW5SZXNvdXJjZUxvYWRlcio+KGFyZ3VtZW50KS0+Y29udGludWVBZnRlck5hdmlnYXRpb25Q
b2xpY3kocmVxdWVzdCwgc2hvdWxkQ29udGludWUpOwotfQotCi12b2lkIE1haW5SZXNvdXJjZUxv
YWRlcjo6Y29udGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBib29sIHNob3VsZENvbnRpbnVlKQotewotICAgIGlmICghc2hvdWxkQ29udGlu
dWUpCi0gICAgICAgIHN0b3BMb2FkaW5nRm9yUG9saWN5Q2hhbmdlKCk7Ci0gICAgZWxzZSBpZiAo
bV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpIHsKLSAgICAgICAgLy8gQSByZWRpcmVjdCByZXN1
bHRlZCBpbiBsb2FkaW5nIHN1YnN0aXR1dGUgZGF0YS4KLSAgICAgICAgQVNTRVJUKGRvY3VtZW50
TG9hZGVyKCktPnRpbWluZygpLT5yZWRpcmVjdENvdW50KCkpOwotCi0gICAgICAgIC8vIFdlIG5l
ZWQgdG8gcmVtb3ZlIG91ciByZWZlcmVuY2UgdG8gdGhlIENhY2hlZFJlc291cmNlIGluIGZhdm9y
IG9mIGEgU3Vic3RpdHV0ZURhdGEgbG9hZC4KLSAgICAgICAgLy8gVGhpcyB3aWxsIHByb2JhYmx5
IHRyaWdnZXIgdGhlIGNhbmNlbGxhdGlvbiBvZiB0aGUgQ2FjaGVkUmVzb3VyY2UncyB1bmRlcmx5
aW5nIFJlc291cmNlTG9hZGVyLCB0aG91Z2ggdGhlcmUgaXMgYQotICAgICAgICAvLyBzbWFsbCBj
aGFuY2UgdGhhdCB0aGUgcmVzb3VyY2UgaXMgYmVpbmcgbG9hZGVkIGJ5IGEgZGlmZmVyZW50IEZy
YW1lLCBwcmV2ZW50aW5nIHRoZSBSZXNvdXJjZUxvYWRlciBmcm9tIGJlaW5nIGNhbmNlbGxlZC4K
LSAgICAgICAgLy8gSWYgdGhlIFJlc291cmNlTG9hZGVyIGlzIGluZGVlZCBjYW5jZWxsZWQsIGl0
IHdvdWxkIG5vcm1hbGx5IHNlbmQgcmVzb3VyY2UgbG9hZCBjYWxsYmFja3MuCi0gICAgICAgIC8v
IEhvd2V2ZXIsIGZyb20gYW4gQVBJIHBlcnNwZWN0aXZlLCB0aGlzIGlzbid0IGEgY2FuY2VsbGF0
aW9uLiBUaGVyZWZvcmUsIHNldmVyIG91ciByZWxhdGlvbnNoaXAgd2l0aCB0aGUgbmV0d29yayBs
b2FkIHZpYSBjbGVhclJlc291cmNlKCksCi0gICAgICAgIC8vIGJ1dCBwcmV2ZW50IHRoZSBSZXNv
dXJjZUxvYWRlciBmcm9tIHNlbmRpbmcgUmVzb3VyY2VMb2FkTm90aWZpZXIgY2FsbGJhY2tzLgot
ICAgICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IHJlc291cmNlTG9hZGVyID0gbG9hZGVyKCk7
Ci0gICAgICAgIEFTU0VSVChyZXNvdXJjZUxvYWRlci0+c2hvdWxkU2VuZFJlc291cmNlTG9hZENh
bGxiYWNrcygpKTsKLSAgICAgICAgcmVzb3VyY2VMb2FkZXItPnNldFNlbmRDYWxsYmFja1BvbGlj
eShEb05vdFNlbmRDYWxsYmFja3MpOwotICAgICAgICBjbGVhclJlc291cmNlKCk7Ci0gICAgICAg
IHJlc291cmNlTG9hZGVyLT5zZXRTZW5kQ2FsbGJhY2tQb2xpY3koU2VuZENhbGxiYWNrcyk7Ci0g
ICAgICAgIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZFNvb24ocmVxdWVzdCk7Ci0gICAgfQotCi0g
ICAgZGVyZWYoKTsgLy8gYmFsYW5jZXMgcmVmIGluIHdpbGxTZW5kUmVxdWVzdAotfQotCi1ib29s
IE1haW5SZXNvdXJjZUxvYWRlcjo6aXNQb3N0T3JSZWRpcmVjdEFmdGVyUG9zdChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0
UmVzcG9uc2UpCi17Ci0gICAgaWYgKG5ld1JlcXVlc3QuaHR0cE1ldGhvZCgpID09ICJQT1NUIikK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpbnQgc3RhdHVzID0gcmVkaXJlY3RSZXNwb25z
ZS5odHRwU3RhdHVzQ29kZSgpOwotICAgIGlmICgoKHN0YXR1cyA+PSAzMDEgJiYgc3RhdHVzIDw9
IDMwMykgfHwgc3RhdHVzID09IDMwNykKLSAgICAgICAgJiYgZnJhbWVMb2FkZXIoKS0+aW5pdGlh
bFJlcXVlc3QoKS5odHRwTWV0aG9kKCkgPT0gIlBPU1QiKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIFBhc3NSZWZQdHI8UmVzb3VyY2VCdWZmZXI+
IE1haW5SZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkKIHsKLSAgICBBU1NFUlQoIW1fcmVz
b3VyY2UgfHwgIW1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKTsKICAgICBpZiAobV9yZXNvdXJj
ZSkKICAgICAgICAgcmV0dXJuIG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7Ci0gICAgaWYg
KG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gUmVzb3VyY2VCdWZm
ZXI6OmNyZWF0ZShtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+ZGF0YSgpLCBtX3N1YnN0aXR1
dGVEYXRhLmNvbnRlbnQoKS0+c2l6ZSgpKTsKICAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBNYWlu
UmVzb3VyY2VMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNl
LCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGly
ZWN0UmVzcG9uc2UpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0g
bV9yZXNvdXJjZSk7Ci0gICAgd2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9u
c2UpOworICAgIG1fZG9jdW1lbnRMb2FkZXItPndpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRp
cmVjdFJlc3BvbnNlKTsKIH0KIAotdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UpCi17Ci0gICAgLy8gTm90ZSB0aGF0IHRoZXJlIGFyZSBubyBhc3Nl
cnRzIGhlcmUgYXMgdGhlcmUgYXJlIGZvciB0aGUgb3RoZXIgY2FsbGJhY2tzLiBUaGlzIGlzIGR1
ZSB0byB0aGUKLSAgICAvLyBmYWN0IHRoYXQgdGhpcyAiY2FsbGJhY2siIGlzIHNlbnQgd2hlbiBz
dGFydGluZyBldmVyeSBsb2FkLCBhbmQgdGhlIHN0YXRlIG9mIGNhbGxiYWNrCi0gICAgLy8gZGVm
ZXJyYWxzIHBsYXlzIGxlc3Mgb2YgYSBwYXJ0IGluIHRoaXMgZnVuY3Rpb24gaW4gcHJldmVudGlu
ZyB0aGUgYmFkIGJlaGF2aW9yIGRlZmVycmluZyAKLSAgICAvLyBjYWxsYmFja3MgaXMgbWVhbnQg
dG8gcHJldmVudC4KLSAgICBBU1NFUlQoIW5ld1JlcXVlc3QuaXNOdWxsKCkpOwotCi0gICAgLy8g
VGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3Np
Ymx5IHJlbW92aW5nIHRoZSBsYXN0Ci0gICAgLy8gcmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0OyBv
bmUgZXhhbXBsZSBvZiB0aGlzIGlzIDMyNjYyMTYuCi0gICAgUmVmUHRyPE1haW5SZXNvdXJjZUxv
YWRlcj4gcHJvdGVjdCh0aGlzKTsKLQotICAgIGlmICghZnJhbWVMb2FkZXIoKS0+Y2hlY2tJZkZv
cm1BY3Rpb25BbGxvd2VkQnlDU1AobmV3UmVxdWVzdC51cmwoKSkpIHsKLSAgICAgICAgY2FuY2Vs
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQoZG9jdW1lbnRMb2FkZXIo
KS0+dGltaW5nKCktPmZldGNoU3RhcnQoKSk7Ci0gICAgaWYgKCFyZWRpcmVjdFJlc3BvbnNlLmlz
TnVsbCgpKSB7Ci0gICAgICAgIC8vIElmIHRoZSByZWRpcmVjdGluZyB1cmwgaXMgbm90IGFsbG93
ZWQgdG8gZGlzcGxheSBjb250ZW50IGZyb20gdGhlIHRhcmdldCBvcmlnaW4sCi0gICAgICAgIC8v
IHRoZW4gYmxvY2sgdGhlIHJlZGlyZWN0LgotICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
IHJlZGlyZWN0aW5nT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZWRpcmVjdFJlc3Bv
bnNlLnVybCgpKTsKLSAgICAgICAgaWYgKCFyZWRpcmVjdGluZ09yaWdpbi0+Y2FuRGlzcGxheShu
ZXdSZXF1ZXN0LnVybCgpKSkgewotICAgICAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2Fs
TG9hZEZhaWxlZChtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLCBuZXdSZXF1ZXN0LnVybCgpLnN0
cmluZygpKTsKLSAgICAgICAgICAgIGNhbmNlbCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgICAgIGRvY3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5hZGRSZWRpcmVjdChy
ZWRpcmVjdFJlc3BvbnNlLnVybCgpLCBuZXdSZXF1ZXN0LnVybCgpKTsKLSAgICB9Ci0KLSAgICAv
LyBVcGRhdGUgY29va2llIHBvbGljeSBiYXNlIFVSTCBhcyBVUkwgY2hhbmdlcywgZXhjZXB0IGZv
ciBzdWJmcmFtZXMsIHdoaWNoIHVzZSB0aGUKLSAgICAvLyBVUkwgb2YgdGhlIG1haW4gZnJhbWUg
d2hpY2ggZG9lc24ndCBjaGFuZ2Ugd2hlbiB3ZSByZWRpcmVjdC4KLSAgICBpZiAoZnJhbWVMb2Fk
ZXIoKS0+aXNMb2FkaW5nTWFpbkZyYW1lKCkpCi0gICAgICAgIG5ld1JlcXVlc3Quc2V0Rmlyc3RQ
YXJ0eUZvckNvb2tpZXMobmV3UmVxdWVzdC51cmwoKSk7Ci0KLSAgICAvLyBJZiB3ZSdyZSBmaWVs
ZGluZyBhIHJlZGlyZWN0IGluIHJlc3BvbnNlIHRvIGEgUE9TVCwgZm9yY2UgYSBsb2FkIGZyb20g
b3JpZ2luLCBzaW5jZQotICAgIC8vIHRoaXMgaXMgYSBjb21tb24gc2l0ZSB0ZWNobmlxdWUgdG8g
cmV0dXJuIHRvIGEgcGFnZSB2aWV3aW5nIHNvbWUgZGF0YSB0aGF0IHRoZSBQT1NUCi0gICAgLy8g
anVzdCBtb2RpZmllZC4KLSAgICAvLyBBbHNvLCBQT1NUIHJlcXVlc3RzIGFsd2F5cyBsb2FkIGZy
b20gb3JpZ2luLCBidXQgdGhpcyBkb2VzIG5vdCBhZmZlY3Qgc3VicmVzb3VyY2VzLgotICAgIGlm
IChuZXdSZXF1ZXN0LmNhY2hlUG9saWN5KCkgPT0gVXNlUHJvdG9jb2xDYWNoZVBvbGljeSAmJiBp
c1Bvc3RPclJlZGlyZWN0QWZ0ZXJQb3N0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKQot
ICAgICAgICBuZXdSZXF1ZXN0LnNldENhY2hlUG9saWN5KFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRh
KTsKLQotICAgIEZyYW1lKiB0b3AgPSBtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT50cmVlKCkt
PnRvcCgpOwotICAgIGlmICh0b3AgIT0gbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKSkgewotICAg
ICAgICBpZiAoIWZyYW1lTG9hZGVyKCktPm1peGVkQ29udGVudENoZWNrZXIoKS0+Y2FuRGlzcGxh
eUluc2VjdXJlQ29udGVudCh0b3AtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIG5ld1Jl
cXVlc3QudXJsKCkpKSB7Ci0gICAgICAgICAgICBjYW5jZWwoKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIERvbid0IHNldCB0aGlzIG9uIHRoZSBmaXJz
dCByZXF1ZXN0LiBJdCBpcyBzZXQgd2hlbiB0aGUgbWFpbiBsb2FkIHdhcyBzdGFydGVkLgotICAg
IG1fZG9jdW1lbnRMb2FkZXItPnNldFJlcXVlc3QobmV3UmVxdWVzdCk7Ci0KLSAgICBpZiAoIXJl
ZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpIHsKLSAgICAgICAgLy8gV2UgY2hlY2tlZCBhcHBsaWNh
dGlvbiBjYWNoZSBmb3IgaW5pdGlhbCBVUkwsIG5vdyB3ZSBuZWVkIHRvIGNoZWNrIGl0IGZvciBy
ZWRpcmVjdGVkIG9uZS4KLSAgICAgICAgQVNTRVJUKCFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQo
KSk7Ci0gICAgICAgIGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm1h
eWJlTG9hZE1haW5SZXNvdXJjZUZvclJlZGlyZWN0KG5ld1JlcXVlc3QsIG1fc3Vic3RpdHV0ZURh
dGEpOwotICAgICAgICBpZiAobV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCi0gICAgICAgICAg
ICBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyID0gaWRlbnRpZmllcigp
OwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBJZGVhbGx5IHdlJ2Qgc3RvcCB0aGUgSS9PIHVudGls
IHdlIGhlYXIgYmFjayBmcm9tIHRoZSBuYXZpZ2F0aW9uIHBvbGljeSBkZWxlZ2F0ZQotICAgIC8v
IGxpc3RlbmVyLiBCdXQgdGhlcmUncyBubyB3YXkgdG8gZG8gdGhhdCBpbiBwcmFjdGljZS4gU28g
aW5zdGVhZCB3ZSBjYW5jZWwgbGF0ZXIgaWYgdGhlCi0gICAgLy8gbGlzdGVuZXIgdGVsbHMgdXMg
dG8uIEluIHByYWN0aWNlIHRoYXQgbWVhbnMgdGhlIG5hdmlnYXRpb24gcG9saWN5IG5lZWRzIHRv
IGJlIGRlY2lkZWQKLSAgICAvLyBzeW5jaHJvbm91c2x5IGZvciB0aGVzZSByZWRpcmVjdCBjYXNl
cy4KLSAgICBpZiAoIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpIHsKLSAgICAgICAgcmVmKCk7
IC8vIGJhbGFuY2VkIGJ5IGRlcmVmIGluIGNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5Ci0g
ICAgICAgIGZyYW1lTG9hZGVyKCktPnBvbGljeUNoZWNrZXIoKS0+Y2hlY2tOYXZpZ2F0aW9uUG9s
aWN5KG5ld1JlcXVlc3QsIGNhbGxDb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeSwgdGhpcyk7
Ci0gICAgfQotfQotCiB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6Y29udGludWVBZnRlckNvbnRl
bnRQb2xpY3koUG9saWN5QWN0aW9uIGNvbnRlbnRQb2xpY3ksIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHIpCiB7CiAgICAgS1VSTCB1cmwgPSByZXF1ZXN0KCkudXJsKCk7CkBAIC0zMDUsNyArMTg3
LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgZXF1YWxJZ25vcmlu
Z0Nhc2UoIm1lc3NhZ2UvcmZjODIyIiwgbWltZVR5cGUpCiAjZW5kaWYKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoIm11bHRpcGFydC9yZWxh
dGVkIiwgbWltZVR5cGUpKQotICAgICAgICAgICAgJiYgIW1fc3Vic3RpdHV0ZURhdGEuaXNWYWxp
ZCgpICYmICFTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKHVybC5w
cm90b2NvbCgpKTsKKyAgICAgICAgICAgICYmICFtX2RvY3VtZW50TG9hZGVyLT5zdWJzdGl0dXRl
RGF0YSgpLmlzVmFsaWQoKSAmJiAhU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1l
QXNMb2NhbCh1cmwucHJvdG9jb2woKSk7CiAgICAgICAgIGlmICghZnJhbWVMb2FkZXIoKS0+Y2xp
ZW50KCktPmNhblNob3dNSU1FVHlwZShtaW1lVHlwZSkgfHwgaXNSZW1vdGVXZWJBcmNoaXZlKSB7
CiAgICAgICAgICAgICBmcmFtZUxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCktPmNhbm5vdFNob3dN
SU1FVHlwZShyKTsKICAgICAgICAgICAgIC8vIENoZWNrIHJlYWNoZWRUZXJtaW5hbFN0YXRlIHNp
bmNlIHRoZSBsb2FkIG1heSBoYXZlIGFscmVhZHkgYmVlbiBjYW5jZWxlZCBpbnNpZGUgb2YgX2hh
bmRsZVVuaW1wbGVtZW50YWJsZVBvbGljeVdpdGhFcnJvckNvZGU6Oi4KQEAgLTM2MCw5ICsyNDIs
OSBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFtX2RvY3VtZW50TG9hZGVyLT5pc1N0
b3BwaW5nKCkgJiYgbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpIHsKLSAgICAgICAgaWYgKG1f
c3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5zaXplKCkpCi0gICAgICAgICAgICBkYXRhUmVjZWl2
ZWQoMCwgbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPmRhdGEoKSwgbV9zdWJzdGl0dXRlRGF0
YS5jb250ZW50KCktPnNpemUoKSk7CisgICAgaWYgKCFtX2RvY3VtZW50TG9hZGVyLT5pc1N0b3Bw
aW5nKCkgJiYgbV9kb2N1bWVudExvYWRlci0+c3Vic3RpdHV0ZURhdGEoKS5pc1ZhbGlkKCkpIHsK
KyAgICAgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXItPnN1YnN0aXR1dGVEYXRhKCkuY29udGVudCgp
LT5zaXplKCkpCisgICAgICAgICAgICBkYXRhUmVjZWl2ZWQoMCwgbV9kb2N1bWVudExvYWRlci0+
c3Vic3RpdHV0ZURhdGEoKS5jb250ZW50KCktPmRhdGEoKSwgbV9kb2N1bWVudExvYWRlci0+c3Vi
c3RpdHV0ZURhdGEoKS5jb250ZW50KCktPnNpemUoKSk7CiAgICAgICAgIGlmICghbV9kb2N1bWVu
dExvYWRlci0+aXNTdG9wcGluZygpKQogICAgICAgICAgICAgZGlkRmluaXNoTG9hZGluZygwKTsK
ICAgICB9CkBAIC02MDcsNyArNDg5LDYgQEAKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1v
cnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkxvYWRlcik7CiAgICAgaW5m
by5hZGRNZW1iZXIobV9yZXNvdXJjZSwgInJlc291cmNlIik7CiAgICAgaW5mby5hZGRNZW1iZXIo
bV9pbml0aWFsUmVxdWVzdCwgImluaXRpYWxSZXF1ZXN0Iik7Ci0gICAgaW5mby5hZGRNZW1iZXIo
bV9zdWJzdGl0dXRlRGF0YSwgInN1YnN0aXR1dGVEYXRhIik7CiAgICAgaW5mby5hZGRNZW1iZXIo
bV9kYXRhTG9hZFRpbWVyLCAiZGF0YUxvYWRUaW1lciIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1f
ZG9jdW1lbnRMb2FkZXIsICJkb2N1bWVudExvYWRlciIpOwogfQpAQCAtNjE2LDcgKzQ5Nyw3IEBA
CiB7CiAgICAgUmVmUHRyPE1haW5SZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKIAotICAg
IEtVUkwgdXJsID0gbV9zdWJzdGl0dXRlRGF0YS5yZXNwb25zZVVSTCgpOworICAgIEtVUkwgdXJs
ID0gbV9kb2N1bWVudExvYWRlci0+c3Vic3RpdHV0ZURhdGEoKS5yZXNwb25zZVVSTCgpOwogICAg
IGlmICh1cmwuaXNFbXB0eSgpKQogICAgICAgICB1cmwgPSBtX2luaXRpYWxSZXF1ZXN0LnVybCgp
OwogCkBAIC02MjQsNyArNTA1LDcgQEAKICAgICAvLyBsb2FkZXIgd2lsbCBub3QgdGhpbmsgdGhl
cmUncyBzdGlsbCBhIGRlZmVycmVkIGxvYWQgbGVmdCB0byBkby4KICAgICBtX2luaXRpYWxSZXF1
ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiAgICAgICAgIAotICAgIFJlc291cmNlUmVzcG9uc2Ug
cmVzcG9uc2UodXJsLCBtX3N1YnN0aXR1dGVEYXRhLm1pbWVUeXBlKCksIG1fc3Vic3RpdHV0ZURh
dGEuY29udGVudCgpLT5zaXplKCksIG1fc3Vic3RpdHV0ZURhdGEudGV4dEVuY29kaW5nKCksICIi
KTsKKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHVybCwgbV9kb2N1bWVudExvYWRlci0+
c3Vic3RpdHV0ZURhdGEoKS5taW1lVHlwZSgpLCBtX2RvY3VtZW50TG9hZGVyLT5zdWJzdGl0dXRl
RGF0YSgpLmNvbnRlbnQoKS0+c2l6ZSgpLCBtX2RvY3VtZW50TG9hZGVyLT5zdWJzdGl0dXRlRGF0
YSgpLnRleHRFbmNvZGluZygpLCAiIik7CiAgICAgcmVzcG9uc2VSZWNlaXZlZCgwLCByZXNwb25z
ZSk7CiB9CiAKQEAgLTY0OCwzMiArNTI5LDEyIEBACiAgICAgICAgIGhhbmRsZVN1YnN0aXR1dGVE
YXRhTG9hZE5vdygwKTsKIH0KIAotdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OmxvYWQoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiBpbml0aWFsUmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1
YnN0aXR1dGVEYXRhKQordm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OmxvYWQoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiBpbml0aWFsUmVxdWVzdCkKIHsKLSAgICAvLyBJdCBhcHBlYXJzIHRoYXQgaXQg
aXMgcG9zc2libGUgZm9yIHRoaXMgbG9hZCB0byBiZSBjYW5jZWxsZWQgYW5kIGRlcmVmZW5jZWQg
YnkgdGhlIERvY3VtZW50TG9hZGVyCi0gICAgLy8gaW4gd2lsbFNlbmRSZXF1ZXN0KCkgaWYgbG9h
ZE5vdygpIGlzIGNhbGxlZC4KICAgICBSZWZQdHI8TWFpblJlc291cmNlTG9hZGVyPiBwcm90ZWN0
KHRoaXMpOwotCi0gICAgbV9zdWJzdGl0dXRlRGF0YSA9IHN1YnN0aXR1dGVEYXRhOwotCi0gICAg
QVNTRVJUKGRvY3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5uYXZpZ2F0aW9uU3RhcnQoKSk7Ci0g
ICAgQVNTRVJUKCFkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+ZmV0Y2hTdGFydCgpKTsKLSAg
ICBkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+bWFya0ZldGNoU3RhcnQoKTsKICAgICBSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdChpbml0aWFsUmVxdWVzdCk7CiAKLSAgICAvLyBTZW5kIHRoaXMg
c3ludGhldGljIGRlbGVnYXRlIGNhbGxiYWNrIHNpbmNlIGNsaWVudHMgZXhwZWN0IGl0LCBhbmQK
LSAgICAvLyB3ZSBubyBsb25nZXIgc2VuZCB0aGUgY2FsbGJhY2sgZnJvbSB3aXRoaW4gTlNVUkxD
b25uZWN0aW9uIGZvcgotICAgIC8vIGluaXRpYWwgcmVxdWVzdHMuCi0gICAgd2lsbFNlbmRSZXF1
ZXN0KHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSk7Ci0gICAgQVNTRVJUKCFkZWxldGlvbkhh
c0JlZ3VuKCkpOwotCi0gICAgLy8gd2lsbFNlbmRSZXF1ZXN0KCkgbWF5IGxlYWQgdG8gb3VyIERv
Y3VtZW50TG9hZGVyIGJlaW5nIGRldGFjaGVkIG9yIGNhbmNlbGxpbmcgdGhlIGxvYWQgdmlhIG51
bGxpbmcgdGhlIFJlc291cmNlUmVxdWVzdC4KLSAgICBpZiAoIWRvY3VtZW50TG9hZGVyKCktPmZy
YW1lKCkgfHwgcmVxdWVzdC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZG9jdW1l
bnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+bWF5YmVMb2FkTWFpblJlc291cmNl
KHJlcXVlc3QsIG1fc3Vic3RpdHV0ZURhdGEpOwotCi0gICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEu
aXNWYWxpZCgpKSB7CisgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXItPnN1YnN0aXR1dGVEYXRhKCku
aXNWYWxpZCgpKSB7CiAgICAgICAgIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VM
b2FkZXIgPSBtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5wYWdlKCktPnByb2dyZXNzKCktPmNy
ZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKICAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIo
KS0+YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QobV9pZGVudGlmaWVyRm9yTG9hZFdp
dGhvdXRSZXNvdXJjZUxvYWRlciwgZG9jdW1lbnRMb2FkZXIoKSwgcmVxdWVzdCk7CiAgICAgICAg
IGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KGRvY3Vt
ZW50TG9hZGVyKCksIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIsIHJl
cXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TWFpblJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L01haW5SZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAxNDI4OTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0
LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiAgICAgCiAjaWYgVVNFKENPTlRFTlRfRklMVEVSSU5HKQpAQCAtNTcs
NyArNTYsNyBAQAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1haW5SZXNvdXJjZUxvYWRlcj4gY3Jl
YXRlKERvY3VtZW50TG9hZGVyKik7CiAgICAgdmlydHVhbCB+TWFpblJlc291cmNlTG9hZGVyKCk7
CiAKLSAgICB2b2lkIGxvYWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Vic3RpdHV0
ZURhdGEmKTsKKyAgICB2b2lkIGxvYWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9p
ZCBjYW5jZWwoKTsKICAgICB2b2lkIGNhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAg
UmVzb3VyY2VMb2FkZXIqIGxvYWRlcigpIGNvbnN0OwpAQCAtNzcsNiArNzYsMTEgQEAKIAogICAg
IHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCisgICAg
dm9pZCB0YWtlSWRlbnRpZmllckZyb21SZXNvdXJjZUxvYWRlcigpIHsgbV9pZGVudGlmaWVyRm9y
TG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciA9IGlkZW50aWZpZXIoKTsgfQorICAgIHZvaWQgc3Rv
cExvYWRpbmdGb3JQb2xpY3lDaGFuZ2UoKTsKKyAgICB2b2lkIGhhbmRsZVN1YnN0aXR1dGVEYXRh
TG9hZFNvb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCBjbGVhclJlc291cmNl
KCk7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTWFpblJlc291cmNlTG9hZGVyKERvY3VtZW50
TG9hZGVyKik7CiAKQEAgLTg1LDIxICs4OSwxNCBAQAogICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
KikgT1ZFUlJJREU7CiAKLSAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKICAgICB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpOwotICAgIHZvaWQgaGFuZGxlU3Vic3Rp
dHV0ZURhdGFMb2FkU29vbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGhhbmRs
ZVN1YnN0aXR1dGVEYXRhTG9hZE5vdyhNYWluUmVzb3VyY2VMb2FkZXJUaW1lciopOwogCiAgICAg
dm9pZCBzdGFydERhdGFMb2FkVGltZXIoKTsKIAogICAgIHZvaWQgcmVjZWl2ZWRFcnJvcihjb25z
dCBSZXNvdXJjZUVycm9yJik7CiAgICAgUmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZvclBvbGlj
eUNoYW5nZUVycm9yKCkgY29uc3Q7Ci0gICAgdm9pZCBzdG9wTG9hZGluZ0ZvclBvbGljeUNoYW5n
ZSgpOwotICAgIGJvb2wgaXNQb3N0T3JSZWRpcmVjdEFmdGVyUG9zdChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9u
c2UpOwogCi0gICAgc3RhdGljIHZvaWQgY2FsbENvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5
KHZvaWQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGJv
b2wgc2hvdWxkQ29udGludWUpOwotICAgIHZvaWQgY29udGludWVBZnRlck5hdmlnYXRpb25Qb2xp
Y3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBzaG91bGRDb250aW51ZSk7Ci0KICAgICBz
dGF0aWMgdm9pZCBjYWxsQ29udGludWVBZnRlckNvbnRlbnRQb2xpY3kodm9pZCosIFBvbGljeUFj
dGlvbik7CiAgICAgdm9pZCBjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQb2xpY3lBY3Rpb24p
OwogICAgIHZvaWQgY29udGludWVBZnRlckNvbnRlbnRQb2xpY3koUG9saWN5QWN0aW9uLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0xMTIsMTQgKzEwOSwxMiBAQAogICAgIERvY3VtZW50
TG9hZGVyKiBkb2N1bWVudExvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRMb2FkZXIu
Z2V0KCk7IH0KIAogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0Owot
ICAgIHZvaWQgY2xlYXJSZXNvdXJjZSgpOwogCiAgICAgYm9vbCBkZWZlcnNMb2FkaW5nKCkgY29u
c3Q7CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9yZXNv
dXJjZTsKIAogICAgIFJlc291cmNlUmVxdWVzdCBtX2luaXRpYWxSZXF1ZXN0OwotICAgIFN1YnN0
aXR1dGVEYXRhIG1fc3Vic3RpdHV0ZURhdGE7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3Bv
bnNlOwogCiAgICAgTWFpblJlc291cmNlTG9hZGVyVGltZXIgbV9kYXRhTG9hZFRpbWVyOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlzaW9uIDE0Mjg5NykK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Myw2ICs1Myw3IEBACiAgICAgY2xhc3MgQXJjaGl2ZVJlc291cmNlOwogICAgIGNsYXNz
IEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiAgICAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI7CisgICAgY2xhc3MgRm9ybVN0YXRlOwogICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIEZy
YW1lTG9hZGVyOwogICAgIGNsYXNzIE1haW5SZXNvdXJjZUxvYWRlcjsKQEAgLTI0OCw2ICsyNDks
OSBAQAogCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKikgY29uc3Q7CiAKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHByaXZh
dGUgb25jZSBEb2N1bWVudExvYWRlciBhbmQgTWFpblJlc291cmNlTG9hZGVyIGFyZSBtZXJnZWQu
CisgICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgRG9jdW1lbnRMb2Fk
ZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKIApAQCAt
MjY4LDcgKzI3MiwxMSBAQAogICAgICAgICBib29sIG1heWJlTG9hZEVtcHR5KCk7CiAKICAgICAg
ICAgYm9vbCBpc011bHRpcGFydFJlcGxhY2luZ0xvYWQoKSBjb25zdDsKKyAgICAgICAgYm9vbCBp
c1Bvc3RPclJlZGlyZWN0QWZ0ZXJQb3N0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKIAorICAgICAgICBzdGF0aWMgdm9pZCBjYWxsQ29udGludWVBZnRl
ck5hdmlnYXRpb25Qb2xpY3kodm9pZCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQ
dHI8Rm9ybVN0YXRlPiwgYm9vbCBzaG91bGRDb250aW51ZSk7CisgICAgICAgIHZvaWQgY29udGlu
dWVBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBzaG91
bGRDb250aW51ZSk7CisKICAgICAgICAgdm9pZCBkZWxpdmVyU3Vic3RpdHV0ZVJlc291cmNlc0Fm
dGVyRGVsYXkoKTsKICAgICAgICAgdm9pZCBzdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVy
RmlyZWQoVGltZXI8RG9jdW1lbnRMb2FkZXI+Kik7CiAgICAgICAgICAgICAgICAgCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDE0Mjg5NykK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyOCw2ICsxMjgsOCBAQAogewogICAgIGlmIChtX21haW5SZXNvdXJjZURhdGEpCiAg
ICAgICAgIHJldHVybiBtX21haW5SZXNvdXJjZURhdGE7CisgICAgaWYgKG1fc3Vic3RpdHV0ZURh
dGEuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gUmVzb3VyY2VCdWZmZXI6OmNyZWF0ZShtX3N1
YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+ZGF0YSgpLCBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQo
KS0+c2l6ZSgpKTsKICAgICBpZiAobV9tYWluUmVzb3VyY2VMb2FkZXIpCiAgICAgICAgIHJldHVy
biBtX21haW5SZXNvdXJjZUxvYWRlci0+cmVzb3VyY2VEYXRhKCk7CiAgICAgcmV0dXJuIDA7CkBA
IC0zMDAsNiArMzAyLDExMSBAQAogICAgICAgICBmcmFtZUxvYWRlcigpLT5jaGVja0xvYWRDb21w
bGV0ZSgpOwogfQogCitib29sIERvY3VtZW50TG9hZGVyOjppc1Bvc3RPclJlZGlyZWN0QWZ0ZXJQ
b3N0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3sKKyAgICBpZiAobmV3UmVxdWVzdC5odHRwTWV0aG9k
KCkgPT0gIlBPU1QiKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGludCBzdGF0dXMgPSBy
ZWRpcmVjdFJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCk7CisgICAgaWYgKCgoc3RhdHVzID49IDMw
MSAmJiBzdGF0dXMgPD0gMzAzKSB8fCBzdGF0dXMgPT0gMzA3KQorICAgICAgICAmJiBtX29yaWdp
bmFsUmVxdWVzdC5odHRwTWV0aG9kKCkgPT0gIlBPU1QiKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRS
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVkaXJlY3RSZXNwb25zZSkKK3sKKyAgICAvLyBOb3RlIHRoYXQgdGhlcmUgYXJlIG5vIGFz
c2VydHMgaGVyZSBhcyB0aGVyZSBhcmUgZm9yIHRoZSBvdGhlciBjYWxsYmFja3MuIFRoaXMgaXMg
ZHVlIHRvIHRoZQorICAgIC8vIGZhY3QgdGhhdCB0aGlzICJjYWxsYmFjayIgaXMgc2VudCB3aGVu
IHN0YXJ0aW5nIGV2ZXJ5IGxvYWQsIGFuZCB0aGUgc3RhdGUgb2YgY2FsbGJhY2sKKyAgICAvLyBk
ZWZlcnJhbHMgcGxheXMgbGVzcyBvZiBhIHBhcnQgaW4gdGhpcyBmdW5jdGlvbiBpbiBwcmV2ZW50
aW5nIHRoZSBiYWQgYmVoYXZpb3IgZGVmZXJyaW5nIAorICAgIC8vIGNhbGxiYWNrcyBpcyBtZWFu
dCB0byBwcmV2ZW50LgorICAgIEFTU0VSVCghbmV3UmVxdWVzdC5pc051bGwoKSk7CisKKyAgICBp
ZiAoIWZyYW1lTG9hZGVyKCktPmNoZWNrSWZGb3JtQWN0aW9uQWxsb3dlZEJ5Q1NQKG5ld1JlcXVl
c3QudXJsKCkpKSB7CisgICAgICAgIGNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZnJhbWVMb2FkZXIo
KS0+Y2FuY2VsbGVkRXJyb3IobmV3UmVxdWVzdCkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgQVNTRVJUKHRpbWluZygpLT5mZXRjaFN0YXJ0KCkpOworICAgIGlmICghcmVkaXJlY3RS
ZXNwb25zZS5pc051bGwoKSkgeworICAgICAgICAvLyBJZiB0aGUgcmVkaXJlY3RpbmcgdXJsIGlz
IG5vdCBhbGxvd2VkIHRvIGRpc3BsYXkgY29udGVudCBmcm9tIHRoZSB0YXJnZXQgb3JpZ2luLAor
ICAgICAgICAvLyB0aGVuIGJsb2NrIHRoZSByZWRpcmVjdC4KKyAgICAgICAgUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiByZWRpcmVjdGluZ09yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVk
aXJlY3RSZXNwb25zZS51cmwoKSk7CisgICAgICAgIGlmICghcmVkaXJlY3RpbmdPcmlnaW4tPmNh
bkRpc3BsYXkobmV3UmVxdWVzdC51cmwoKSkpIHsKKyAgICAgICAgICAgIEZyYW1lTG9hZGVyOjpy
ZXBvcnRMb2NhbExvYWRGYWlsZWQobV9mcmFtZSwgbmV3UmVxdWVzdC51cmwoKS5zdHJpbmcoKSk7
CisgICAgICAgICAgICBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGZyYW1lTG9hZGVyKCktPmNhbmNl
bGxlZEVycm9yKG5ld1JlcXVlc3QpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICB0aW1pbmcoKS0+YWRkUmVkaXJlY3QocmVkaXJlY3RSZXNwb25zZS51cmwoKSwgbmV3
UmVxdWVzdC51cmwoKSk7CisgICAgfQorCisgICAgLy8gVXBkYXRlIGNvb2tpZSBwb2xpY3kgYmFz
ZSBVUkwgYXMgVVJMIGNoYW5nZXMsIGV4Y2VwdCBmb3Igc3ViZnJhbWVzLCB3aGljaCB1c2UgdGhl
CisgICAgLy8gVVJMIG9mIHRoZSBtYWluIGZyYW1lIHdoaWNoIGRvZXNuJ3QgY2hhbmdlIHdoZW4g
d2UgcmVkaXJlY3QuCisgICAgaWYgKGZyYW1lTG9hZGVyKCktPmlzTG9hZGluZ01haW5GcmFtZSgp
KQorICAgICAgICBuZXdSZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVzKG5ld1JlcXVlc3Qu
dXJsKCkpOworCisgICAgLy8gSWYgd2UncmUgZmllbGRpbmcgYSByZWRpcmVjdCBpbiByZXNwb25z
ZSB0byBhIFBPU1QsIGZvcmNlIGEgbG9hZCBmcm9tIG9yaWdpbiwgc2luY2UKKyAgICAvLyB0aGlz
IGlzIGEgY29tbW9uIHNpdGUgdGVjaG5pcXVlIHRvIHJldHVybiB0byBhIHBhZ2Ugdmlld2luZyBz
b21lIGRhdGEgdGhhdCB0aGUgUE9TVAorICAgIC8vIGp1c3QgbW9kaWZpZWQuCisgICAgLy8gQWxz
bywgUE9TVCByZXF1ZXN0cyBhbHdheXMgbG9hZCBmcm9tIG9yaWdpbiwgYnV0IHRoaXMgZG9lcyBu
b3QgYWZmZWN0IHN1YnJlc291cmNlcy4KKyAgICBpZiAobmV3UmVxdWVzdC5jYWNoZVBvbGljeSgp
ID09IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kgJiYgaXNQb3N0T3JSZWRpcmVjdEFmdGVyUG9zdChu
ZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSkKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRDYWNo
ZVBvbGljeShSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSk7CisKKyAgICBGcmFtZSogdG9wID0gbV9m
cmFtZS0+dHJlZSgpLT50b3AoKTsKKyAgICBpZiAodG9wICE9IG1fZnJhbWUpIHsKKyAgICAgICAg
aWYgKCFmcmFtZUxvYWRlcigpLT5taXhlZENvbnRlbnRDaGVja2VyKCktPmNhbkRpc3BsYXlJbnNl
Y3VyZUNvbnRlbnQodG9wLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBuZXdSZXF1ZXN0
LnVybCgpKSkgeworICAgICAgICAgICAgY2FuY2VsTWFpblJlc291cmNlTG9hZChmcmFtZUxvYWRl
cigpLT5jYW5jZWxsZWRFcnJvcihuZXdSZXF1ZXN0KSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBzZXRSZXF1ZXN0KG5ld1JlcXVlc3QpOworCisgICAgaWYg
KCFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKSB7CisgICAgICAgIC8vIFdlIGNoZWNrZWQgYXBw
bGljYXRpb24gY2FjaGUgZm9yIGluaXRpYWwgVVJMLCBub3cgd2UgbmVlZCB0byBjaGVjayBpdCBm
b3IgcmVkaXJlY3RlZCBvbmUuCisgICAgICAgIEFTU0VSVCghbV9zdWJzdGl0dXRlRGF0YS5pc1Zh
bGlkKCkpOworICAgICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0LT5tYXliZUxvYWRNYWluUmVz
b3VyY2VGb3JSZWRpcmVjdChuZXdSZXF1ZXN0LCBtX3N1YnN0aXR1dGVEYXRhKTsKKyAgICAgICAg
aWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQorICAgICAgICAgICAgbWFpblJlc291cmNl
TG9hZGVyKCktPiB0YWtlSWRlbnRpZmllckZyb21SZXNvdXJjZUxvYWRlcigpOworICAgIH0KKwor
ICAgIC8vIEZJWE1FOiBJZGVhbGx5IHdlJ2Qgc3RvcCB0aGUgSS9PIHVudGlsIHdlIGhlYXIgYmFj
ayBmcm9tIHRoZSBuYXZpZ2F0aW9uIHBvbGljeSBkZWxlZ2F0ZQorICAgIC8vIGxpc3RlbmVyLiBC
dXQgdGhlcmUncyBubyB3YXkgdG8gZG8gdGhhdCBpbiBwcmFjdGljZS4gU28gaW5zdGVhZCB3ZSBj
YW5jZWwgbGF0ZXIgaWYgdGhlCisgICAgLy8gbGlzdGVuZXIgdGVsbHMgdXMgdG8uIEluIHByYWN0
aWNlIHRoYXQgbWVhbnMgdGhlIG5hdmlnYXRpb24gcG9saWN5IG5lZWRzIHRvIGJlIGRlY2lkZWQK
KyAgICAvLyBzeW5jaHJvbm91c2x5IGZvciB0aGVzZSByZWRpcmVjdCBjYXNlcy4KKyAgICBpZiAo
IXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpCisgICAgICAgIGZyYW1lTG9hZGVyKCktPnBvbGlj
eUNoZWNrZXIoKS0+Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KG5ld1JlcXVlc3QsIGNhbGxDb250aW51
ZUFmdGVyTmF2aWdhdGlvblBvbGljeSwgdGhpcyk7Cit9CisKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6
OmNhbGxDb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeSh2b2lkKiBhcmd1bWVudCwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGJvb2wgc2hv
dWxkQ29udGludWUpCit7CisgICAgc3RhdGljX2Nhc3Q8RG9jdW1lbnRMb2FkZXIqPihhcmd1bWVu
dCktPmNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHJlcXVlc3QsIHNob3VsZENvbnRpbnVl
KTsKK30KKwordm9pZCBEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlck5hdmlnYXRpb25Qb2xp
Y3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIHNob3VsZENvbnRpbnVlKQor
eworICAgIGlmICghc2hvdWxkQ29udGludWUpCisgICAgICAgIG1haW5SZXNvdXJjZUxvYWRlcigp
LT5zdG9wTG9hZGluZ0ZvclBvbGljeUNoYW5nZSgpOworICAgIGVsc2UgaWYgKG1fc3Vic3RpdHV0
ZURhdGEuaXNWYWxpZCgpKSB7CisgICAgICAgIC8vIEEgcmVkaXJlY3QgcmVzdWx0ZWQgaW4gbG9h
ZGluZyBzdWJzdGl0dXRlIGRhdGEuCisgICAgICAgIEFTU0VSVCh0aW1pbmcoKS0+cmVkaXJlY3RD
b3VudCgpKTsKKworICAgICAgICAvLyBXZSBuZWVkIHRvIHJlbW92ZSBvdXIgcmVmZXJlbmNlIHRv
IHRoZSBDYWNoZWRSZXNvdXJjZSBpbiBmYXZvciBvZiBhIFN1YnN0aXR1dGVEYXRhIGxvYWQuCisg
ICAgICAgIC8vIFRoaXMgd2lsbCBwcm9iYWJseSB0cmlnZ2VyIHRoZSBjYW5jZWxsYXRpb24gb2Yg
dGhlIENhY2hlZFJlc291cmNlJ3MgdW5kZXJseWluZyBSZXNvdXJjZUxvYWRlciwgdGhvdWdoIHRo
ZXJlIGlzIGEKKyAgICAgICAgLy8gc21hbGwgY2hhbmNlIHRoYXQgdGhlIHJlc291cmNlIGlzIGJl
aW5nIGxvYWRlZCBieSBhIGRpZmZlcmVudCBGcmFtZSwgcHJldmVudGluZyB0aGUgUmVzb3VyY2VM
b2FkZXIgZnJvbSBiZWluZyBjYW5jZWxsZWQuCisgICAgICAgIC8vIElmIHRoZSBSZXNvdXJjZUxv
YWRlciBpcyBpbmRlZWQgY2FuY2VsbGVkLCBpdCB3b3VsZCBub3JtYWxseSBzZW5kIHJlc291cmNl
IGxvYWQgY2FsbGJhY2tzLgorICAgICAgICAvLyBIb3dldmVyLCBmcm9tIGFuIEFQSSBwZXJzcGVj
dGl2ZSwgdGhpcyBpc24ndCBhIGNhbmNlbGxhdGlvbi4gVGhlcmVmb3JlLCBzZXZlciBvdXIgcmVs
YXRpb25zaGlwIHdpdGggdGhlIG5ldHdvcmsgbG9hZCwKKyAgICAgICAgLy8gYnV0IHByZXZlbnQg
dGhlIFJlc291cmNlTG9hZGVyIGZyb20gc2VuZGluZyBSZXNvdXJjZUxvYWROb3RpZmllciBjYWxs
YmFja3MuCisgICAgICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gcmVzb3VyY2VMb2FkZXIgPSBt
YWluUmVzb3VyY2VMb2FkZXIoKS0+bG9hZGVyKCk7CisgICAgICAgIEFTU0VSVChyZXNvdXJjZUxv
YWRlci0+c2hvdWxkU2VuZFJlc291cmNlTG9hZENhbGxiYWNrcygpKTsKKyAgICAgICAgcmVzb3Vy
Y2VMb2FkZXItPnNldFNlbmRDYWxsYmFja1BvbGljeShEb05vdFNlbmRDYWxsYmFja3MpOworICAg
ICAgICBtYWluUmVzb3VyY2VMb2FkZXIoKS0+Y2xlYXJSZXNvdXJjZSgpOworICAgICAgICByZXNv
dXJjZUxvYWRlci0+c2V0U2VuZENhbGxiYWNrUG9saWN5KFNlbmRDYWxsYmFja3MpOworICAgICAg
ICBtYWluUmVzb3VyY2VMb2FkZXIoKS0+aGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkU29vbihyZXF1
ZXN0KTsKKyAgICB9Cit9CisKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdExvYWQoY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICAvLyBCb3RoIHVubG9hZGluZyB0aGUgb2xk
IHBhZ2UgYW5kIHBhcnNpbmcgdGhlIG5ldyBwYWdlIG1heSBleGVjdXRlIEphdmFTY3JpcHQgd2hp
Y2ggZGVzdHJveXMgdGhlIGRhdGFzb3VyY2UKQEAgLTg5Niw4ICsxMDAzLDIwIEBACiAgICAgLy8g
Tm90ZSB0aGF0IGN1cnJlbnRseSwgc29tZSByZXF1ZXN0cyBtYXkgaGF2ZSBpbmNvcnJlY3QgZXh0
cmEgZmllbGRzIGV2ZW4gaWYgdGhpcyBmdW5jdGlvbiBoYXMgYmVlbiBjYWxsZWQsCiAgICAgLy8g
YmVjYXVzZSB3ZSBwYXNzIGEgd3JvbmcgbG9hZFR5cGUgKHNlZSBGSVhNRSBpbiBhZGRFeHRyYUZp
ZWxkc1RvTWFpblJlc291cmNlUmVxdWVzdCgpKS4KICAgICBmcmFtZUxvYWRlcigpLT5hZGRFeHRy
YUZpZWxkc1RvTWFpblJlc291cmNlUmVxdWVzdChtX3JlcXVlc3QpOwotICAgIG1fbWFpblJlc291
cmNlTG9hZGVyLT5sb2FkKG1fcmVxdWVzdCwgbV9zdWJzdGl0dXRlRGF0YSk7CiAKKyAgICBBU1NF
UlQodGltaW5nKCktPm5hdmlnYXRpb25TdGFydCgpKTsKKyAgICBBU1NFUlQoIXRpbWluZygpLT5m
ZXRjaFN0YXJ0KCkpOworICAgIHRpbWluZygpLT5tYXJrRmV0Y2hTdGFydCgpOworICAgIHdpbGxT
ZW5kUmVxdWVzdChtX3JlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSk7CisKKyAgICAvLyB3aWxs
U2VuZFJlcXVlc3QoKSBtYXkgbGVhZCB0byBvdXIgRnJhbWUgYmVpbmcgZGV0YWNoZWQgb3IgY2Fu
Y2VsbGluZyB0aGUgbG9hZCB2aWEgbnVsbGluZyB0aGUgUmVzb3VyY2VSZXF1ZXN0LgorICAgIGlm
ICghbV9mcmFtZSB8fCBtX3JlcXVlc3QuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fYXBwbGljYXRpb25DYWNoZUhvc3QtPm1heWJlTG9hZE1haW5SZXNvdXJjZShtX3JlcXVlc3Qs
IG1fc3Vic3RpdHV0ZURhdGEpOworCisgICAgbV9tYWluUmVzb3VyY2VMb2FkZXItPmxvYWQobV9y
ZXF1ZXN0KTsKKwogICAgIGlmIChtX3JlcXVlc3QuaXNOdWxsKCkpIHsKICAgICAgICAgbV9tYWlu
UmVzb3VyY2VMb2FkZXIgPSAwOwogICAgICAgICAvLyBJZiB0aGUgbG9hZCB3YXMgYWJvcnRlZCBi
eSBjbGVhcmluZyBtX3JlcXVlc3QsIGl0J3MgcG9zc2libGUgdGhlIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0Cg==
</data>
<flag name="commit-queue"
          id="208524"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192759</attachid>
            <date>2013-03-12 10:23:41 -0700</date>
            <delta_ts>2013-03-13 15:15:21 -0700</delta_ts>
            <desc>Merged to trunk</desc>
            <filename>dl_mrl_willSendRequest_0312.txt</filename>
            <type>text/plain</type>
            <size>24383</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTU1NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEzLTAzLTEyICBOYXRlIENo
YXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWVyZ2UgTWFpblJlc291cmNl
TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QgaW50byBEb2N1bWVudExvYWRlciAKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTc1NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0
b3Igb25seS4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6aXNQb3N0T3JSZWRpcmVjdEFmdGVyUG9zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjYWxsQ29udGludWVBZnRlck5hdmlnYXRpb25Qb2xp
Y3kpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJOYXZp
Z2F0aW9uUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzdGFydExv
YWRpbmdNYWluUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgor
ICAgICAgICAqIGxvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWFpblJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
TWFpblJlc291cmNlTG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1haW5SZXNvdXJjZUxvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorICAgICAg
ICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXRhTG9h
ZE5vdyk6CisgICAgICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OmxvYWQpOgorICAg
ICAgICAqIGxvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1h
aW5SZXNvdXJjZUxvYWRlcjo6dGFrZUlkZW50aWZpZXJGcm9tUmVzb3VyY2VMb2FkZXIpOiBUZW1w
b3JhcmlseQorICAgICAgICAgICAgZXhwb3NlZCBmb3IgbW92aW5nIGZyb20gYSBub3JtYWwgbG9h
ZCB0byBTdWJzdGl0dXRlRGF0YSBsb2FkIG9uIHJlZGlyZWN0LgorCiAyMDEzLTAzLTEyICBNYXJq
YSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbVjhdIFN0b3JlIG1h
aW4gd29ybGQgYW5kIG5vbi1tYWluIHdvcmxkIHRlbXBsYXRlcyBzZXBhcmF0ZWx5LgpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAxNDUzNzYp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjgsNiArMTI4LDggQEAKIHsKICAgICBpZiAobV9tYWluUmVzb3VyY2VEYXRhKQog
ICAgICAgICByZXR1cm4gbV9tYWluUmVzb3VyY2VEYXRhOworICAgIGlmIChtX3N1YnN0aXR1dGVE
YXRhLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIFJlc291cmNlQnVmZmVyOjpjcmVhdGUobV9z
dWJzdGl0dXRlRGF0YS5jb250ZW50KCktPmRhdGEoKSwgbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50
KCktPnNpemUoKSk7CiAgICAgaWYgKG1fbWFpblJlc291cmNlTG9hZGVyKQogICAgICAgICByZXR1
cm4gbV9tYWluUmVzb3VyY2VMb2FkZXItPnJlc291cmNlRGF0YSgpOwogICAgIHJldHVybiAwOwpA
QCAtMzE5LDYgKzMyMSwxMTEgQEAKICAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2hlY2tMb2FkQ29t
cGxldGUoKTsKIH0KIAorYm9vbCBEb2N1bWVudExvYWRlcjo6aXNQb3N0T3JSZWRpcmVjdEFmdGVy
UG9zdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit7CisgICAgaWYgKG5ld1JlcXVlc3QuaHR0cE1ldGhv
ZCgpID09ICJQT1NUIikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpbnQgc3RhdHVzID0g
cmVkaXJlY3RSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpOworICAgIGlmICgoKHN0YXR1cyA+PSAz
MDEgJiYgc3RhdHVzIDw9IDMwMykgfHwgc3RhdHVzID09IDMwNykKKyAgICAgICAgJiYgbV9vcmln
aW5hbFJlcXVlc3QuaHR0cE1ldGhvZCgpID09ICJQT1NUIikKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5k
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlZGlyZWN0UmVzcG9uc2UpCit7CisgICAgLy8gTm90ZSB0aGF0IHRoZXJlIGFyZSBubyBh
c3NlcnRzIGhlcmUgYXMgdGhlcmUgYXJlIGZvciB0aGUgb3RoZXIgY2FsbGJhY2tzLiBUaGlzIGlz
IGR1ZSB0byB0aGUKKyAgICAvLyBmYWN0IHRoYXQgdGhpcyAiY2FsbGJhY2siIGlzIHNlbnQgd2hl
biBzdGFydGluZyBldmVyeSBsb2FkLCBhbmQgdGhlIHN0YXRlIG9mIGNhbGxiYWNrCisgICAgLy8g
ZGVmZXJyYWxzIHBsYXlzIGxlc3Mgb2YgYSBwYXJ0IGluIHRoaXMgZnVuY3Rpb24gaW4gcHJldmVu
dGluZyB0aGUgYmFkIGJlaGF2aW9yIGRlZmVycmluZyAKKyAgICAvLyBjYWxsYmFja3MgaXMgbWVh
bnQgdG8gcHJldmVudC4KKyAgICBBU1NFUlQoIW5ld1JlcXVlc3QuaXNOdWxsKCkpOworCisgICAg
aWYgKCFmcmFtZUxvYWRlcigpLT5jaGVja0lmRm9ybUFjdGlvbkFsbG93ZWRCeUNTUChuZXdSZXF1
ZXN0LnVybCgpKSkgeworICAgICAgICBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGZyYW1lTG9hZGVy
KCktPmNhbmNlbGxlZEVycm9yKG5ld1JlcXVlc3QpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIEFTU0VSVCh0aW1pbmcoKS0+ZmV0Y2hTdGFydCgpKTsKKyAgICBpZiAoIXJlZGlyZWN0
UmVzcG9uc2UuaXNOdWxsKCkpIHsKKyAgICAgICAgLy8gSWYgdGhlIHJlZGlyZWN0aW5nIHVybCBp
cyBub3QgYWxsb3dlZCB0byBkaXNwbGF5IGNvbnRlbnQgZnJvbSB0aGUgdGFyZ2V0IG9yaWdpbiwK
KyAgICAgICAgLy8gdGhlbiBibG9jayB0aGUgcmVkaXJlY3QuCisgICAgICAgIFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4gcmVkaXJlY3RpbmdPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJl
ZGlyZWN0UmVzcG9uc2UudXJsKCkpOworICAgICAgICBpZiAoIXJlZGlyZWN0aW5nT3JpZ2luLT5j
YW5EaXNwbGF5KG5ld1JlcXVlc3QudXJsKCkpKSB7CisgICAgICAgICAgICBGcmFtZUxvYWRlcjo6
cmVwb3J0TG9jYWxMb2FkRmFpbGVkKG1fZnJhbWUsIG5ld1JlcXVlc3QudXJsKCkuc3RyaW5nKCkp
OworICAgICAgICAgICAgY2FuY2VsTWFpblJlc291cmNlTG9hZChmcmFtZUxvYWRlcigpLT5jYW5j
ZWxsZWRFcnJvcihuZXdSZXF1ZXN0KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgdGltaW5nKCktPmFkZFJlZGlyZWN0KHJlZGlyZWN0UmVzcG9uc2UudXJsKCksIG5l
d1JlcXVlc3QudXJsKCkpOworICAgIH0KKworICAgIC8vIFVwZGF0ZSBjb29raWUgcG9saWN5IGJh
c2UgVVJMIGFzIFVSTCBjaGFuZ2VzLCBleGNlcHQgZm9yIHN1YmZyYW1lcywgd2hpY2ggdXNlIHRo
ZQorICAgIC8vIFVSTCBvZiB0aGUgbWFpbiBmcmFtZSB3aGljaCBkb2Vzbid0IGNoYW5nZSB3aGVu
IHdlIHJlZGlyZWN0LgorICAgIGlmIChmcmFtZUxvYWRlcigpLT5pc0xvYWRpbmdNYWluRnJhbWUo
KSkKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhuZXdSZXF1ZXN0
LnVybCgpKTsKKworICAgIC8vIElmIHdlJ3JlIGZpZWxkaW5nIGEgcmVkaXJlY3QgaW4gcmVzcG9u
c2UgdG8gYSBQT1NULCBmb3JjZSBhIGxvYWQgZnJvbSBvcmlnaW4sIHNpbmNlCisgICAgLy8gdGhp
cyBpcyBhIGNvbW1vbiBzaXRlIHRlY2huaXF1ZSB0byByZXR1cm4gdG8gYSBwYWdlIHZpZXdpbmcg
c29tZSBkYXRhIHRoYXQgdGhlIFBPU1QKKyAgICAvLyBqdXN0IG1vZGlmaWVkLgorICAgIC8vIEFs
c28sIFBPU1QgcmVxdWVzdHMgYWx3YXlzIGxvYWQgZnJvbSBvcmlnaW4sIGJ1dCB0aGlzIGRvZXMg
bm90IGFmZmVjdCBzdWJyZXNvdXJjZXMuCisgICAgaWYgKG5ld1JlcXVlc3QuY2FjaGVQb2xpY3ko
KSA9PSBVc2VQcm90b2NvbENhY2hlUG9saWN5ICYmIGlzUG9zdE9yUmVkaXJlY3RBZnRlclBvc3Qo
bmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpCisgICAgICAgIG5ld1JlcXVlc3Quc2V0Q2Fj
aGVQb2xpY3koUmVsb2FkSWdub3JpbmdDYWNoZURhdGEpOworCisgICAgRnJhbWUqIHRvcCA9IG1f
ZnJhbWUtPnRyZWUoKS0+dG9wKCk7CisgICAgaWYgKHRvcCAhPSBtX2ZyYW1lKSB7CisgICAgICAg
IGlmICghZnJhbWVMb2FkZXIoKS0+bWl4ZWRDb250ZW50Q2hlY2tlcigpLT5jYW5EaXNwbGF5SW5z
ZWN1cmVDb250ZW50KHRvcC0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgbmV3UmVxdWVz
dC51cmwoKSkpIHsKKyAgICAgICAgICAgIGNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZnJhbWVMb2Fk
ZXIoKS0+Y2FuY2VsbGVkRXJyb3IobmV3UmVxdWVzdCkpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgfQorCisgICAgc2V0UmVxdWVzdChuZXdSZXF1ZXN0KTsKKworICAgIGlm
ICghcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSkgeworICAgICAgICAvLyBXZSBjaGVja2VkIGFw
cGxpY2F0aW9uIGNhY2hlIGZvciBpbml0aWFsIFVSTCwgbm93IHdlIG5lZWQgdG8gY2hlY2sgaXQg
Zm9yIHJlZGlyZWN0ZWQgb25lLgorICAgICAgICBBU1NFUlQoIW1fc3Vic3RpdHV0ZURhdGEuaXNW
YWxpZCgpKTsKKyAgICAgICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdC0+bWF5YmVMb2FkTWFpblJl
c291cmNlRm9yUmVkaXJlY3QobmV3UmVxdWVzdCwgbV9zdWJzdGl0dXRlRGF0YSk7CisgICAgICAg
IGlmIChtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIG1haW5SZXNvdXJj
ZUxvYWRlcigpLT4gdGFrZUlkZW50aWZpZXJGcm9tUmVzb3VyY2VMb2FkZXIoKTsKKyAgICB9CisK
KyAgICAvLyBGSVhNRTogSWRlYWxseSB3ZSdkIHN0b3AgdGhlIEkvTyB1bnRpbCB3ZSBoZWFyIGJh
Y2sgZnJvbSB0aGUgbmF2aWdhdGlvbiBwb2xpY3kgZGVsZWdhdGUKKyAgICAvLyBsaXN0ZW5lci4g
QnV0IHRoZXJlJ3Mgbm8gd2F5IHRvIGRvIHRoYXQgaW4gcHJhY3RpY2UuIFNvIGluc3RlYWQgd2Ug
Y2FuY2VsIGxhdGVyIGlmIHRoZQorICAgIC8vIGxpc3RlbmVyIHRlbGxzIHVzIHRvLiBJbiBwcmFj
dGljZSB0aGF0IG1lYW5zIHRoZSBuYXZpZ2F0aW9uIHBvbGljeSBuZWVkcyB0byBiZSBkZWNpZGVk
CisgICAgLy8gc3luY2hyb25vdXNseSBmb3IgdGhlc2UgcmVkaXJlY3QgY2FzZXMuCisgICAgaWYg
KCFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKQorICAgICAgICBmcmFtZUxvYWRlcigpLT5wb2xp
Y3lDaGVja2VyKCktPmNoZWNrTmF2aWdhdGlvblBvbGljeShuZXdSZXF1ZXN0LCBjYWxsQ29udGlu
dWVBZnRlck5hdmlnYXRpb25Qb2xpY3ksIHRoaXMpOworfQorCit2b2lkIERvY3VtZW50TG9hZGVy
OjpjYWxsQ29udGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3kodm9pZCogYXJndW1lbnQsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBib29sIHNo
b3VsZENvbnRpbnVlKQoreworICAgIHN0YXRpY19jYXN0PERvY3VtZW50TG9hZGVyKj4oYXJndW1l
bnQpLT5jb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeShyZXF1ZXN0LCBzaG91bGRDb250aW51
ZSk7Cit9CisKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9s
aWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBzaG91bGRDb250aW51ZSkK
K3sKKyAgICBpZiAoIXNob3VsZENvbnRpbnVlKQorICAgICAgICBtYWluUmVzb3VyY2VMb2FkZXIo
KS0+c3RvcExvYWRpbmdGb3JQb2xpY3lDaGFuZ2UoKTsKKyAgICBlbHNlIGlmIChtX3N1YnN0aXR1
dGVEYXRhLmlzVmFsaWQoKSkgeworICAgICAgICAvLyBBIHJlZGlyZWN0IHJlc3VsdGVkIGluIGxv
YWRpbmcgc3Vic3RpdHV0ZSBkYXRhLgorICAgICAgICBBU1NFUlQodGltaW5nKCktPnJlZGlyZWN0
Q291bnQoKSk7CisKKyAgICAgICAgLy8gV2UgbmVlZCB0byByZW1vdmUgb3VyIHJlZmVyZW5jZSB0
byB0aGUgQ2FjaGVkUmVzb3VyY2UgaW4gZmF2b3Igb2YgYSBTdWJzdGl0dXRlRGF0YSBsb2FkLgor
ICAgICAgICAvLyBUaGlzIHdpbGwgcHJvYmFibHkgdHJpZ2dlciB0aGUgY2FuY2VsbGF0aW9uIG9m
IHRoZSBDYWNoZWRSZXNvdXJjZSdzIHVuZGVybHlpbmcgUmVzb3VyY2VMb2FkZXIsIHRob3VnaCB0
aGVyZSBpcyBhCisgICAgICAgIC8vIHNtYWxsIGNoYW5jZSB0aGF0IHRoZSByZXNvdXJjZSBpcyBi
ZWluZyBsb2FkZWQgYnkgYSBkaWZmZXJlbnQgRnJhbWUsIHByZXZlbnRpbmcgdGhlIFJlc291cmNl
TG9hZGVyIGZyb20gYmVpbmcgY2FuY2VsbGVkLgorICAgICAgICAvLyBJZiB0aGUgUmVzb3VyY2VM
b2FkZXIgaXMgaW5kZWVkIGNhbmNlbGxlZCwgaXQgd291bGQgbm9ybWFsbHkgc2VuZCByZXNvdXJj
ZSBsb2FkIGNhbGxiYWNrcy4KKyAgICAgICAgLy8gSG93ZXZlciwgZnJvbSBhbiBBUEkgcGVyc3Bl
Y3RpdmUsIHRoaXMgaXNuJ3QgYSBjYW5jZWxsYXRpb24uIFRoZXJlZm9yZSwgc2V2ZXIgb3VyIHJl
bGF0aW9uc2hpcCB3aXRoIHRoZSBuZXR3b3JrIGxvYWQsCisgICAgICAgIC8vIGJ1dCBwcmV2ZW50
IHRoZSBSZXNvdXJjZUxvYWRlciBmcm9tIHNlbmRpbmcgUmVzb3VyY2VMb2FkTm90aWZpZXIgY2Fs
bGJhY2tzLgorICAgICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IHJlc291cmNlTG9hZGVyID0g
bWFpblJlc291cmNlTG9hZGVyKCktPmxvYWRlcigpOworICAgICAgICBBU1NFUlQocmVzb3VyY2VM
b2FkZXItPnNob3VsZFNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSk7CisgICAgICAgIHJlc291
cmNlTG9hZGVyLT5zZXRTZW5kQ2FsbGJhY2tQb2xpY3koRG9Ob3RTZW5kQ2FsbGJhY2tzKTsKKyAg
ICAgICAgbWFpblJlc291cmNlTG9hZGVyKCktPmNsZWFyUmVzb3VyY2UoKTsKKyAgICAgICAgcmVz
b3VyY2VMb2FkZXItPnNldFNlbmRDYWxsYmFja1BvbGljeShTZW5kQ2FsbGJhY2tzKTsKKyAgICAg
ICAgbWFpblJlc291cmNlTG9hZGVyKCktPmhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZFNvb24ocmVx
dWVzdCk7CisgICAgfQorfQorCiB2b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0
IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgLy8gQm90aCB1bmxvYWRpbmcgdGhlIG9s
ZCBwYWdlIGFuZCBwYXJzaW5nIHRoZSBuZXcgcGFnZSBtYXkgZXhlY3V0ZSBKYXZhU2NyaXB0IHdo
aWNoIGRlc3Ryb3lzIHRoZSBkYXRhc291cmNlCkBAIC05MTksOCArMTAyNiwyMCBAQAogICAgIC8v
IE5vdGUgdGhhdCBjdXJyZW50bHksIHNvbWUgcmVxdWVzdHMgbWF5IGhhdmUgaW5jb3JyZWN0IGV4
dHJhIGZpZWxkcyBldmVuIGlmIHRoaXMgZnVuY3Rpb24gaGFzIGJlZW4gY2FsbGVkLAogICAgIC8v
IGJlY2F1c2Ugd2UgcGFzcyBhIHdyb25nIGxvYWRUeXBlIChzZWUgRklYTUUgaW4gYWRkRXh0cmFG
aWVsZHNUb01haW5SZXNvdXJjZVJlcXVlc3QoKSkuCiAgICAgZnJhbWVMb2FkZXIoKS0+YWRkRXh0
cmFGaWVsZHNUb01haW5SZXNvdXJjZVJlcXVlc3QobV9yZXF1ZXN0KTsKLSAgICBtX21haW5SZXNv
dXJjZUxvYWRlci0+bG9hZChtX3JlcXVlc3QsIG1fc3Vic3RpdHV0ZURhdGEpOwogCisgICAgQVNT
RVJUKHRpbWluZygpLT5uYXZpZ2F0aW9uU3RhcnQoKSk7CisgICAgQVNTRVJUKCF0aW1pbmcoKS0+
ZmV0Y2hTdGFydCgpKTsKKyAgICB0aW1pbmcoKS0+bWFya0ZldGNoU3RhcnQoKTsKKyAgICB3aWxs
U2VuZFJlcXVlc3QobV9yZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCkpOworCisgICAgLy8gd2ls
bFNlbmRSZXF1ZXN0KCkgbWF5IGxlYWQgdG8gb3VyIEZyYW1lIGJlaW5nIGRldGFjaGVkIG9yIGNh
bmNlbGxpbmcgdGhlIGxvYWQgdmlhIG51bGxpbmcgdGhlIFJlc291cmNlUmVxdWVzdC4KKyAgICBp
ZiAoIW1fZnJhbWUgfHwgbV9yZXF1ZXN0LmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0LT5tYXliZUxvYWRNYWluUmVzb3VyY2UobV9yZXF1ZXN0
LCBtX3N1YnN0aXR1dGVEYXRhKTsKKworICAgIG1fbWFpblJlc291cmNlTG9hZGVyLT5sb2FkKG1f
cmVxdWVzdCk7CisKICAgICBpZiAobV9yZXF1ZXN0LmlzTnVsbCgpKSB7CiAgICAgICAgIG1fbWFp
blJlc291cmNlTG9hZGVyID0gMDsKICAgICAgICAgLy8gSWYgdGhlIGxvYWQgd2FzIGFib3J0ZWQg
YnkgY2xlYXJpbmcgbV9yZXF1ZXN0LCBpdCdzIHBvc3NpYmxlIHRoZSBBcHBsaWNhdGlvbkNhY2hl
SG9zdApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuaAko
cmV2aXNpb24gMTQ1Mzc2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxv
YWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw2IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogICAgIAog
I2lmIFVTRShDT05URU5UX0ZJTFRFUklORykKQEAgLTU3LDcgKzU2LDcgQEAKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxNYWluUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShEb2N1bWVudExvYWRlciopOwog
ICAgIHZpcnR1YWwgfk1haW5SZXNvdXJjZUxvYWRlcigpOwogCi0gICAgdm9pZCBsb2FkKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CisgICAgdm9pZCBsb2Fk
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgY2FuY2VsKCk7CiAgICAgdm9pZCBj
YW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIFJlc291cmNlTG9hZGVyKiBsb2FkZXIo
KSBjb25zdDsKQEAgLTc3LDYgKzc2LDExIEBACiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAorICAgIHZvaWQgdGFrZUlkZW50aWZpZXJGcm9t
UmVzb3VyY2VMb2FkZXIoKSB7IG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2Fk
ZXIgPSBpZGVudGlmaWVyKCk7IH0KKyAgICB2b2lkIHN0b3BMb2FkaW5nRm9yUG9saWN5Q2hhbmdl
KCk7CisgICAgdm9pZCBoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWRTb29uKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpOworICAgIHZvaWQgY2xlYXJSZXNvdXJjZSgpOworCiBwcml2YXRlOgogICAgIGV4
cGxpY2l0IE1haW5SZXNvdXJjZUxvYWRlcihEb2N1bWVudExvYWRlciopOwogCkBAIC04NSwyMSAr
ODksMTQgQEAKICAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwg
Y29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopIE9WRVJSSURFOwogCi0gICAgdm9p
ZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBm
aW5pc2hUaW1lKTsKLSAgICB2b2lkIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZFNvb24oY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3co
TWFpblJlc291cmNlTG9hZGVyVGltZXIqKTsKIAogICAgIHZvaWQgc3RhcnREYXRhTG9hZFRpbWVy
KCk7CiAKICAgICB2b2lkIHJlY2VpdmVkRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAg
IFJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcigpIGNvbnN0Owot
ICAgIHZvaWQgc3RvcExvYWRpbmdGb3JQb2xpY3lDaGFuZ2UoKTsKLSAgICBib29sIGlzUG9zdE9y
UmVkaXJlY3RBZnRlclBvc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKIAotICAgIHN0YXRpYyB2b2lk
IGNhbGxDb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeSh2b2lkKiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBib29sIHNob3VsZENvbnRpbnVlKTsKLSAg
ICB2b2lkIGNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIGJvb2wgc2hvdWxkQ29udGludWUpOwotCiAgICAgc3RhdGljIHZvaWQgY2FsbENvbnRpbnVl
QWZ0ZXJDb250ZW50UG9saWN5KHZvaWQqLCBQb2xpY3lBY3Rpb24pOwogICAgIHZvaWQgY29udGlu
dWVBZnRlckNvbnRlbnRQb2xpY3koUG9saWN5QWN0aW9uKTsKICAgICB2b2lkIGNvbnRpbnVlQWZ0
ZXJDb250ZW50UG9saWN5KFBvbGljeUFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpA
QCAtMTEyLDE0ICsxMDksMTIgQEAKICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIo
KSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50TG9hZGVyLmdldCgpOyB9CiAKICAgICBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25zdDsKLSAgICB2b2lkIGNsZWFyUmVzb3VyY2Uo
KTsKIAogICAgIGJvb2wgZGVmZXJzTG9hZGluZygpIGNvbnN0OwogCiAgICAgQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7CiAKICAgICBSZXNvdXJjZVJl
cXVlc3QgbV9pbml0aWFsUmVxdWVzdDsKLSAgICBTdWJzdGl0dXRlRGF0YSBtX3N1YnN0aXR1dGVE
YXRhOwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAogICAgIE1haW5SZXNvdXJj
ZUxvYWRlclRpbWVyIG1fZGF0YUxvYWRUaW1lcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5oCShyZXZpc2lvbiAxNDUzNzYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQAogICAg
IGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKICAgICBjbGFzcyBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uOwogICAgIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOworICAgIGNsYXNzIEZvcm1TdGF0
ZTsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBGcmFtZUxvYWRlcjsKICAgICBjbGFzcyBN
YWluUmVzb3VyY2VMb2FkZXI7CkBAIC0yNTAsNiArMjUxLDkgQEAKICAgICAgICAgdmlydHVhbCB2
b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKICAgICAgICAg
dm9pZCBjaGVja0xvYWRDb21wbGV0ZSgpOwogCisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBiZSBwcml2YXRlIG9uY2UgRG9jdW1lbnRMb2FkZXIgYW5kIE1haW5SZXNvdXJjZUxvYWRlciBh
cmUgbWVyZ2VkLgorICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIERv
Y3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRh
Jik7CiAKQEAgLTI2OSw3ICsyNzMsMTEgQEAKICAgICAgICAgYm9vbCBtYXliZUxvYWRFbXB0eSgp
OwogCiAgICAgICAgIGJvb2wgaXNNdWx0aXBhcnRSZXBsYWNpbmdMb2FkKCkgY29uc3Q7CisgICAg
ICAgIGJvb2wgaXNQb3N0T3JSZWRpcmVjdEFmdGVyUG9zdChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKKyAgICAgICAgc3RhdGljIHZvaWQgY2FsbENv
bnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHZvaWQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGJvb2wgc2hvdWxkQ29udGludWUpOworICAgICAgICB2
b2lkIGNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IGJvb2wgc2hvdWxkQ29udGludWUpOworCiAgICAgICAgIHZvaWQgZGVsaXZlclN1YnN0aXR1dGVS
ZXNvdXJjZXNBZnRlckRlbGF5KCk7CiAgICAgICAgIHZvaWQgc3Vic3RpdHV0ZVJlc291cmNlRGVs
aXZlcnlUaW1lckZpcmVkKFRpbWVyPERvY3VtZW50TG9hZGVyPiopOwogICAgICAgICAgICAgICAg
IApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAJ
KHJldmlzaW9uIDE0NTM3NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VM
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSAiRG9j
dW1lbnRMb2FkVGltaW5nLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRl
ICJGZWF0dXJlT2JzZXJ2ZXIuaCIKLSNpbmNsdWRlICJGb3JtU3RhdGUuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJD
bGllbnQuaCIKQEAgLTE2NCwxMzYgKzE2MywxOSBAQAogICAgIGNhbmNlbChlcnJvcik7CiB9CiAK
LXZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpjYWxsQ29udGludWVBZnRlck5hdmlnYXRpb25Qb2xp
Y3kodm9pZCogYXJndW1lbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1Jl
ZlB0cjxGb3JtU3RhdGU+LCBib29sIHNob3VsZENvbnRpbnVlKQotewotICAgIHN0YXRpY19jYXN0
PE1haW5SZXNvdXJjZUxvYWRlcio+KGFyZ3VtZW50KS0+Y29udGludWVBZnRlck5hdmlnYXRpb25Q
b2xpY3kocmVxdWVzdCwgc2hvdWxkQ29udGludWUpOwotfQotCi12b2lkIE1haW5SZXNvdXJjZUxv
YWRlcjo6Y29udGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBib29sIHNob3VsZENvbnRpbnVlKQotewotICAgIGlmICghc2hvdWxkQ29udGlu
dWUpCi0gICAgICAgIHN0b3BMb2FkaW5nRm9yUG9saWN5Q2hhbmdlKCk7Ci0gICAgZWxzZSBpZiAo
bV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpIHsKLSAgICAgICAgLy8gQSByZWRpcmVjdCByZXN1
bHRlZCBpbiBsb2FkaW5nIHN1YnN0aXR1dGUgZGF0YS4KLSAgICAgICAgQVNTRVJUKGRvY3VtZW50
TG9hZGVyKCktPnRpbWluZygpLT5yZWRpcmVjdENvdW50KCkpOwotCi0gICAgICAgIC8vIFdlIG5l
ZWQgdG8gcmVtb3ZlIG91ciByZWZlcmVuY2UgdG8gdGhlIENhY2hlZFJlc291cmNlIGluIGZhdm9y
IG9mIGEgU3Vic3RpdHV0ZURhdGEgbG9hZC4KLSAgICAgICAgLy8gVGhpcyB3aWxsIHByb2JhYmx5
IHRyaWdnZXIgdGhlIGNhbmNlbGxhdGlvbiBvZiB0aGUgQ2FjaGVkUmVzb3VyY2UncyB1bmRlcmx5
aW5nIFJlc291cmNlTG9hZGVyLCB0aG91Z2ggdGhlcmUgaXMgYQotICAgICAgICAvLyBzbWFsbCBj
aGFuY2UgdGhhdCB0aGUgcmVzb3VyY2UgaXMgYmVpbmcgbG9hZGVkIGJ5IGEgZGlmZmVyZW50IEZy
YW1lLCBwcmV2ZW50aW5nIHRoZSBSZXNvdXJjZUxvYWRlciBmcm9tIGJlaW5nIGNhbmNlbGxlZC4K
LSAgICAgICAgLy8gSWYgdGhlIFJlc291cmNlTG9hZGVyIGlzIGluZGVlZCBjYW5jZWxsZWQsIGl0
IHdvdWxkIG5vcm1hbGx5IHNlbmQgcmVzb3VyY2UgbG9hZCBjYWxsYmFja3MuCi0gICAgICAgIC8v
IEhvd2V2ZXIsIGZyb20gYW4gQVBJIHBlcnNwZWN0aXZlLCB0aGlzIGlzbid0IGEgY2FuY2VsbGF0
aW9uLiBUaGVyZWZvcmUsIHNldmVyIG91ciByZWxhdGlvbnNoaXAgd2l0aCB0aGUgbmV0d29yayBs
b2FkIHZpYSBjbGVhclJlc291cmNlKCksCi0gICAgICAgIC8vIGJ1dCBwcmV2ZW50IHRoZSBSZXNv
dXJjZUxvYWRlciBmcm9tIHNlbmRpbmcgUmVzb3VyY2VMb2FkTm90aWZpZXIgY2FsbGJhY2tzLgot
ICAgICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IHJlc291cmNlTG9hZGVyID0gbG9hZGVyKCk7
Ci0gICAgICAgIEFTU0VSVChyZXNvdXJjZUxvYWRlci0+c2hvdWxkU2VuZFJlc291cmNlTG9hZENh
bGxiYWNrcygpKTsKLSAgICAgICAgcmVzb3VyY2VMb2FkZXItPnNldFNlbmRDYWxsYmFja1BvbGlj
eShEb05vdFNlbmRDYWxsYmFja3MpOwotICAgICAgICBjbGVhclJlc291cmNlKCk7Ci0gICAgICAg
IHJlc291cmNlTG9hZGVyLT5zZXRTZW5kQ2FsbGJhY2tQb2xpY3koU2VuZENhbGxiYWNrcyk7Ci0g
ICAgICAgIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZFNvb24ocmVxdWVzdCk7Ci0gICAgfQotCi0g
ICAgZGVyZWYoKTsgLy8gYmFsYW5jZXMgcmVmIGluIHdpbGxTZW5kUmVxdWVzdAotfQotCi1ib29s
IE1haW5SZXNvdXJjZUxvYWRlcjo6aXNQb3N0T3JSZWRpcmVjdEFmdGVyUG9zdChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0
UmVzcG9uc2UpCi17Ci0gICAgaWYgKG5ld1JlcXVlc3QuaHR0cE1ldGhvZCgpID09ICJQT1NUIikK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpbnQgc3RhdHVzID0gcmVkaXJlY3RSZXNwb25z
ZS5odHRwU3RhdHVzQ29kZSgpOwotICAgIGlmICgoKHN0YXR1cyA+PSAzMDEgJiYgc3RhdHVzIDw9
IDMwMykgfHwgc3RhdHVzID09IDMwNykKLSAgICAgICAgJiYgZnJhbWVMb2FkZXIoKS0+aW5pdGlh
bFJlcXVlc3QoKS5odHRwTWV0aG9kKCkgPT0gIlBPU1QiKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIFBhc3NSZWZQdHI8UmVzb3VyY2VCdWZmZXI+
IE1haW5SZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkKIHsKLSAgICBBU1NFUlQoIW1fcmVz
b3VyY2UgfHwgIW1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKTsKICAgICBpZiAobV9yZXNvdXJj
ZSkKICAgICAgICAgcmV0dXJuIG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7Ci0gICAgaWYg
KG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gUmVzb3VyY2VCdWZm
ZXI6OmNyZWF0ZShtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+ZGF0YSgpLCBtX3N1YnN0aXR1
dGVEYXRhLmNvbnRlbnQoKS0+c2l6ZSgpKTsKICAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBNYWlu
UmVzb3VyY2VMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNl
LCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGly
ZWN0UmVzcG9uc2UpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0g
bV9yZXNvdXJjZSk7Ci0gICAgd2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9u
c2UpOworICAgIG1fZG9jdW1lbnRMb2FkZXItPndpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRp
cmVjdFJlc3BvbnNlKTsKIH0KIAotdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UpCi17Ci0gICAgLy8gTm90ZSB0aGF0IHRoZXJlIGFyZSBubyBhc3Nl
cnRzIGhlcmUgYXMgdGhlcmUgYXJlIGZvciB0aGUgb3RoZXIgY2FsbGJhY2tzLiBUaGlzIGlzIGR1
ZSB0byB0aGUKLSAgICAvLyBmYWN0IHRoYXQgdGhpcyAiY2FsbGJhY2siIGlzIHNlbnQgd2hlbiBz
dGFydGluZyBldmVyeSBsb2FkLCBhbmQgdGhlIHN0YXRlIG9mIGNhbGxiYWNrCi0gICAgLy8gZGVm
ZXJyYWxzIHBsYXlzIGxlc3Mgb2YgYSBwYXJ0IGluIHRoaXMgZnVuY3Rpb24gaW4gcHJldmVudGlu
ZyB0aGUgYmFkIGJlaGF2aW9yIGRlZmVycmluZyAKLSAgICAvLyBjYWxsYmFja3MgaXMgbWVhbnQg
dG8gcHJldmVudC4KLSAgICBBU1NFUlQoIW5ld1JlcXVlc3QuaXNOdWxsKCkpOwotCi0gICAgLy8g
VGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3Np
Ymx5IHJlbW92aW5nIHRoZSBsYXN0Ci0gICAgLy8gcmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0OyBv
bmUgZXhhbXBsZSBvZiB0aGlzIGlzIDMyNjYyMTYuCi0gICAgUmVmUHRyPE1haW5SZXNvdXJjZUxv
YWRlcj4gcHJvdGVjdCh0aGlzKTsKLQotICAgIGlmICghZnJhbWVMb2FkZXIoKS0+Y2hlY2tJZkZv
cm1BY3Rpb25BbGxvd2VkQnlDU1AobmV3UmVxdWVzdC51cmwoKSkpIHsKLSAgICAgICAgY2FuY2Vs
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQoZG9jdW1lbnRMb2FkZXIo
KS0+dGltaW5nKCktPmZldGNoU3RhcnQoKSk7Ci0gICAgaWYgKCFyZWRpcmVjdFJlc3BvbnNlLmlz
TnVsbCgpKSB7Ci0gICAgICAgIC8vIElmIHRoZSByZWRpcmVjdGluZyB1cmwgaXMgbm90IGFsbG93
ZWQgdG8gZGlzcGxheSBjb250ZW50IGZyb20gdGhlIHRhcmdldCBvcmlnaW4sCi0gICAgICAgIC8v
IHRoZW4gYmxvY2sgdGhlIHJlZGlyZWN0LgotICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
IHJlZGlyZWN0aW5nT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZWRpcmVjdFJlc3Bv
bnNlLnVybCgpKTsKLSAgICAgICAgaWYgKCFyZWRpcmVjdGluZ09yaWdpbi0+Y2FuRGlzcGxheShu
ZXdSZXF1ZXN0LnVybCgpKSkgewotICAgICAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2Fs
TG9hZEZhaWxlZChtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLCBuZXdSZXF1ZXN0LnVybCgpLmVs
aWRlZFN0cmluZygpKTsKLSAgICAgICAgICAgIGNhbmNlbCgpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIGRvY3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5hZGRSZWRp
cmVjdChyZWRpcmVjdFJlc3BvbnNlLnVybCgpLCBuZXdSZXF1ZXN0LnVybCgpKTsKLSAgICB9Ci0K
LSAgICAvLyBVcGRhdGUgY29va2llIHBvbGljeSBiYXNlIFVSTCBhcyBVUkwgY2hhbmdlcywgZXhj
ZXB0IGZvciBzdWJmcmFtZXMsIHdoaWNoIHVzZSB0aGUKLSAgICAvLyBVUkwgb2YgdGhlIG1haW4g
ZnJhbWUgd2hpY2ggZG9lc24ndCBjaGFuZ2Ugd2hlbiB3ZSByZWRpcmVjdC4KLSAgICBpZiAoZnJh
bWVMb2FkZXIoKS0+aXNMb2FkaW5nTWFpbkZyYW1lKCkpCi0gICAgICAgIG5ld1JlcXVlc3Quc2V0
Rmlyc3RQYXJ0eUZvckNvb2tpZXMobmV3UmVxdWVzdC51cmwoKSk7Ci0KLSAgICAvLyBJZiB3ZSdy
ZSBmaWVsZGluZyBhIHJlZGlyZWN0IGluIHJlc3BvbnNlIHRvIGEgUE9TVCwgZm9yY2UgYSBsb2Fk
IGZyb20gb3JpZ2luLCBzaW5jZQotICAgIC8vIHRoaXMgaXMgYSBjb21tb24gc2l0ZSB0ZWNobmlx
dWUgdG8gcmV0dXJuIHRvIGEgcGFnZSB2aWV3aW5nIHNvbWUgZGF0YSB0aGF0IHRoZSBQT1NUCi0g
ICAgLy8ganVzdCBtb2RpZmllZC4KLSAgICAvLyBBbHNvLCBQT1NUIHJlcXVlc3RzIGFsd2F5cyBs
b2FkIGZyb20gb3JpZ2luLCBidXQgdGhpcyBkb2VzIG5vdCBhZmZlY3Qgc3VicmVzb3VyY2VzLgot
ICAgIGlmIChuZXdSZXF1ZXN0LmNhY2hlUG9saWN5KCkgPT0gVXNlUHJvdG9jb2xDYWNoZVBvbGlj
eSAmJiBpc1Bvc3RPclJlZGlyZWN0QWZ0ZXJQb3N0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9u
c2UpKQotICAgICAgICBuZXdSZXF1ZXN0LnNldENhY2hlUG9saWN5KFJlbG9hZElnbm9yaW5nQ2Fj
aGVEYXRhKTsKLQotICAgIEZyYW1lKiB0b3AgPSBtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT50
cmVlKCktPnRvcCgpOwotICAgIGlmICh0b3AgIT0gbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKSkg
ewotICAgICAgICBpZiAoIWZyYW1lTG9hZGVyKCktPm1peGVkQ29udGVudENoZWNrZXIoKS0+Y2Fu
RGlzcGxheUluc2VjdXJlQ29udGVudCh0b3AtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCks
IG5ld1JlcXVlc3QudXJsKCkpKSB7Ci0gICAgICAgICAgICBjYW5jZWwoKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIERvbid0IHNldCB0aGlzIG9uIHRo
ZSBmaXJzdCByZXF1ZXN0LiBJdCBpcyBzZXQgd2hlbiB0aGUgbWFpbiBsb2FkIHdhcyBzdGFydGVk
LgotICAgIG1fZG9jdW1lbnRMb2FkZXItPnNldFJlcXVlc3QobmV3UmVxdWVzdCk7Ci0KLSAgICBp
ZiAoIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpIHsKLSAgICAgICAgLy8gV2UgY2hlY2tlZCBh
cHBsaWNhdGlvbiBjYWNoZSBmb3IgaW5pdGlhbCBVUkwsIG5vdyB3ZSBuZWVkIHRvIGNoZWNrIGl0
IGZvciByZWRpcmVjdGVkIG9uZS4KLSAgICAgICAgQVNTRVJUKCFtX3N1YnN0aXR1dGVEYXRhLmlz
VmFsaWQoKSk7Ci0gICAgICAgIGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0
KCktPm1heWJlTG9hZE1haW5SZXNvdXJjZUZvclJlZGlyZWN0KG5ld1JlcXVlc3QsIG1fc3Vic3Rp
dHV0ZURhdGEpOwotICAgICAgICBpZiAobV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCi0gICAg
ICAgICAgICBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyID0gaWRlbnRp
ZmllcigpOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBJZGVhbGx5IHdlJ2Qgc3RvcCB0aGUgSS9P
IHVudGlsIHdlIGhlYXIgYmFjayBmcm9tIHRoZSBuYXZpZ2F0aW9uIHBvbGljeSBkZWxlZ2F0ZQot
ICAgIC8vIGxpc3RlbmVyLiBCdXQgdGhlcmUncyBubyB3YXkgdG8gZG8gdGhhdCBpbiBwcmFjdGlj
ZS4gU28gaW5zdGVhZCB3ZSBjYW5jZWwgbGF0ZXIgaWYgdGhlCi0gICAgLy8gbGlzdGVuZXIgdGVs
bHMgdXMgdG8uIEluIHByYWN0aWNlIHRoYXQgbWVhbnMgdGhlIG5hdmlnYXRpb24gcG9saWN5IG5l
ZWRzIHRvIGJlIGRlY2lkZWQKLSAgICAvLyBzeW5jaHJvbm91c2x5IGZvciB0aGVzZSByZWRpcmVj
dCBjYXNlcy4KLSAgICBpZiAoIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpIHsKLSAgICAgICAg
cmVmKCk7IC8vIGJhbGFuY2VkIGJ5IGRlcmVmIGluIGNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9s
aWN5Ci0gICAgICAgIGZyYW1lTG9hZGVyKCktPnBvbGljeUNoZWNrZXIoKS0+Y2hlY2tOYXZpZ2F0
aW9uUG9saWN5KG5ld1JlcXVlc3QsIGNhbGxDb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeSwg
dGhpcyk7Ci0gICAgfQotfQotCiB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6Y29udGludWVBZnRl
ckNvbnRlbnRQb2xpY3koUG9saWN5QWN0aW9uIGNvbnRlbnRQb2xpY3ksIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHIpCiB7CiAgICAgS1VSTCB1cmwgPSByZXF1ZXN0KCkudXJsKCk7CkBAIC0zMDcs
NyArMTg5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgZXF1YWxJ
Z25vcmluZ0Nhc2UoIm1lc3NhZ2UvcmZjODIyIiwgbWltZVR5cGUpCiAjZW5kaWYKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoIm11bHRpcGFy
dC9yZWxhdGVkIiwgbWltZVR5cGUpKQotICAgICAgICAgICAgJiYgIW1fc3Vic3RpdHV0ZURhdGEu
aXNWYWxpZCgpICYmICFTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2Fs
KHVybC5wcm90b2NvbCgpKTsKKyAgICAgICAgICAgICYmICFtX2RvY3VtZW50TG9hZGVyLT5zdWJz
dGl0dXRlRGF0YSgpLmlzVmFsaWQoKSAmJiAhU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJM
U2NoZW1lQXNMb2NhbCh1cmwucHJvdG9jb2woKSk7CiAgICAgICAgIGlmICghZnJhbWVMb2FkZXIo
KS0+Y2xpZW50KCktPmNhblNob3dNSU1FVHlwZShtaW1lVHlwZSkgfHwgaXNSZW1vdGVXZWJBcmNo
aXZlKSB7CiAgICAgICAgICAgICBmcmFtZUxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCktPmNhbm5v
dFNob3dNSU1FVHlwZShyKTsKICAgICAgICAgICAgIC8vIENoZWNrIHJlYWNoZWRUZXJtaW5hbFN0
YXRlIHNpbmNlIHRoZSBsb2FkIG1heSBoYXZlIGFscmVhZHkgYmVlbiBjYW5jZWxlZCBpbnNpZGUg
b2YgX2hhbmRsZVVuaW1wbGVtZW50YWJsZVBvbGljeVdpdGhFcnJvckNvZGU6Oi4KQEAgLTM2Miw5
ICsyNDQsOSBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFtX2RvY3VtZW50TG9hZGVy
LT5pc1N0b3BwaW5nKCkgJiYgbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpIHsKLSAgICAgICAg
aWYgKG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5zaXplKCkpCi0gICAgICAgICAgICBkYXRh
UmVjZWl2ZWQoMCwgbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPmRhdGEoKSwgbV9zdWJzdGl0
dXRlRGF0YS5jb250ZW50KCktPnNpemUoKSk7CisgICAgaWYgKCFtX2RvY3VtZW50TG9hZGVyLT5p
c1N0b3BwaW5nKCkgJiYgbV9kb2N1bWVudExvYWRlci0+c3Vic3RpdHV0ZURhdGEoKS5pc1ZhbGlk
KCkpIHsKKyAgICAgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXItPnN1YnN0aXR1dGVEYXRhKCkuY29u
dGVudCgpLT5zaXplKCkpCisgICAgICAgICAgICBkYXRhUmVjZWl2ZWQoMCwgbV9kb2N1bWVudExv
YWRlci0+c3Vic3RpdHV0ZURhdGEoKS5jb250ZW50KCktPmRhdGEoKSwgbV9kb2N1bWVudExvYWRl
ci0+c3Vic3RpdHV0ZURhdGEoKS5jb250ZW50KCktPnNpemUoKSk7CiAgICAgICAgIGlmIChtX2Rv
Y3VtZW50TG9hZGVyLT5pc0xvYWRpbmdNYWluUmVzb3VyY2UoKSkKICAgICAgICAgICAgIGRpZEZp
bmlzaExvYWRpbmcoMCk7CiAgICAgfQpAQCAtNjExLDcgKzQ5Myw2IEBACiAgICAgTWVtb3J5Q2xh
c3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpM
b2FkZXIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fcmVzb3VyY2UsICJyZXNvdXJjZSIpOwogICAg
IGluZm8uYWRkTWVtYmVyKG1faW5pdGlhbFJlcXVlc3QsICJpbml0aWFsUmVxdWVzdCIpOwotICAg
IGluZm8uYWRkTWVtYmVyKG1fc3Vic3RpdHV0ZURhdGEsICJzdWJzdGl0dXRlRGF0YSIpOwogICAg
IGluZm8uYWRkTWVtYmVyKG1fZGF0YUxvYWRUaW1lciwgImRhdGFMb2FkVGltZXIiKTsKICAgICBp
bmZvLmFkZE1lbWJlcihtX2RvY3VtZW50TG9hZGVyLCAiZG9jdW1lbnRMb2FkZXIiKTsKIH0KQEAg
LTYyMCw3ICs1MDEsNyBAQAogewogICAgIFJlZlB0cjxNYWluUmVzb3VyY2VMb2FkZXI+IHByb3Rl
Y3QodGhpcyk7CiAKLSAgICBLVVJMIHVybCA9IG1fc3Vic3RpdHV0ZURhdGEucmVzcG9uc2VVUkwo
KTsKKyAgICBLVVJMIHVybCA9IG1fZG9jdW1lbnRMb2FkZXItPnN1YnN0aXR1dGVEYXRhKCkucmVz
cG9uc2VVUkwoKTsKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgdXJsID0gbV9pbml0
aWFsUmVxdWVzdC51cmwoKTsKIApAQCAtNjI4LDcgKzUwOSw3IEBACiAgICAgLy8gbG9hZGVyIHdp
bGwgbm90IHRoaW5rIHRoZXJlJ3Mgc3RpbGwgYSBkZWZlcnJlZCBsb2FkIGxlZnQgdG8gZG8uCiAg
ICAgbV9pbml0aWFsUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwogICAgICAgICAKLSAgICBS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHVybCwgbV9zdWJzdGl0dXRlRGF0YS5taW1lVHlwZSgp
LCBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+c2l6ZSgpLCBtX3N1YnN0aXR1dGVEYXRhLnRl
eHRFbmNvZGluZygpLCAiIik7CisgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSh1cmwsIG1f
ZG9jdW1lbnRMb2FkZXItPnN1YnN0aXR1dGVEYXRhKCkubWltZVR5cGUoKSwgbV9kb2N1bWVudExv
YWRlci0+c3Vic3RpdHV0ZURhdGEoKS5jb250ZW50KCktPnNpemUoKSwgbV9kb2N1bWVudExvYWRl
ci0+c3Vic3RpdHV0ZURhdGEoKS50ZXh0RW5jb2RpbmcoKSwgIiIpOwogICAgIHJlc3BvbnNlUmVj
ZWl2ZWQoMCwgcmVzcG9uc2UpOwogfQogCkBAIC02NTIsMzIgKzUzMywxMiBAQAogICAgICAgICBo
YW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3coMCk7CiB9CiAKLXZvaWQgTWFpblJlc291cmNlTG9h
ZGVyOjpsb2FkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgaW5pdGlhbFJlcXVlc3QsIGNvbnN0IFN1
YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKK3ZvaWQgTWFpblJlc291cmNlTG9hZGVyOjps
b2FkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgaW5pdGlhbFJlcXVlc3QpCiB7Ci0gICAgLy8gSXQg
YXBwZWFycyB0aGF0IGl0IGlzIHBvc3NpYmxlIGZvciB0aGlzIGxvYWQgdG8gYmUgY2FuY2VsbGVk
IGFuZCBkZXJlZmVuY2VkIGJ5IHRoZSBEb2N1bWVudExvYWRlcgotICAgIC8vIGluIHdpbGxTZW5k
UmVxdWVzdCgpIGlmIGxvYWROb3coKSBpcyBjYWxsZWQuCiAgICAgUmVmUHRyPE1haW5SZXNvdXJj
ZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKLQotICAgIG1fc3Vic3RpdHV0ZURhdGEgPSBzdWJzdGl0
dXRlRGF0YTsKLQotICAgIEFTU0VSVChkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+bmF2aWdh
dGlvblN0YXJ0KCkpOwotICAgIEFTU0VSVCghZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5nKCktPmZl
dGNoU3RhcnQoKSk7Ci0gICAgZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5nKCktPm1hcmtGZXRjaFN0
YXJ0KCk7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoaW5pdGlhbFJlcXVlc3QpOwogCi0g
ICAgLy8gU2VuZCB0aGlzIHN5bnRoZXRpYyBkZWxlZ2F0ZSBjYWxsYmFjayBzaW5jZSBjbGllbnRz
IGV4cGVjdCBpdCwgYW5kCi0gICAgLy8gd2Ugbm8gbG9uZ2VyIHNlbmQgdGhlIGNhbGxiYWNrIGZy
b20gd2l0aGluIE5TVVJMQ29ubmVjdGlvbiBmb3IKLSAgICAvLyBpbml0aWFsIHJlcXVlc3RzLgot
ICAgIHdpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCkpOwotICAgIEFT
U0VSVCghZGVsZXRpb25IYXNCZWd1bigpKTsKLQotICAgIC8vIHdpbGxTZW5kUmVxdWVzdCgpIG1h
eSBsZWFkIHRvIG91ciBEb2N1bWVudExvYWRlciBiZWluZyBkZXRhY2hlZCBvciBjYW5jZWxsaW5n
IHRoZSBsb2FkIHZpYSBudWxsaW5nIHRoZSBSZXNvdXJjZVJlcXVlc3QuCi0gICAgaWYgKCFkb2N1
bWVudExvYWRlcigpLT5mcmFtZSgpIHx8IHJlcXVlc3QuaXNOdWxsKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm1heWJl
TG9hZE1haW5SZXNvdXJjZShyZXF1ZXN0LCBtX3N1YnN0aXR1dGVEYXRhKTsKLQotICAgIGlmICht
X3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkgeworICAgIGlmIChtX2RvY3VtZW50TG9hZGVyLT5z
dWJzdGl0dXRlRGF0YSgpLmlzVmFsaWQoKSkgewogICAgICAgICBtX2lkZW50aWZpZXJGb3JMb2Fk
V2l0aG91dFJlc291cmNlTG9hZGVyID0gbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+cGFnZSgp
LT5wcm9ncmVzcygpLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CiAgICAgICAgIGZyYW1lTG9h
ZGVyKCktPm5vdGlmaWVyKCktPmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KG1faWRl
bnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIsIGRvY3VtZW50TG9hZGVyKCksIHJl
cXVlc3QpOwogICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLT5kaXNwYXRjaFdpbGxT
ZW5kUmVxdWVzdChkb2N1bWVudExvYWRlcigpLCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJl
c291cmNlTG9hZGVyLCByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCkpOwo=
</data>
<flag name="commit-queue"
          id="214092"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193005</attachid>
            <date>2013-03-13 15:15:21 -0700</date>
            <delta_ts>2013-03-15 12:37:28 -0700</delta_ts>
            <desc>Merged to trunk again</desc>
            <filename>dl_mrl_willSendRequest_0313.txt</filename>
            <type>text/plain</type>
            <size>24584</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEzLTAzLTEyICBOYXRlIENo
YXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWVyZ2UgTWFpblJlc291cmNl
TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QgaW50byBEb2N1bWVudExvYWRlciAKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTc1NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0
b3Igb25seS4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6aXNQb3N0T3JSZWRpcmVjdEFmdGVyUG9zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjYWxsQ29udGludWVBZnRlck5hdmlnYXRpb25Qb2xp
Y3kpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJOYXZp
Z2F0aW9uUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzdGFydExv
YWRpbmdNYWluUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgor
ICAgICAgICAqIGxvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWFpblJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
TWFpblJlc291cmNlTG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1haW5SZXNvdXJjZUxvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorICAgICAg
ICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXRhTG9h
ZE5vdyk6CisgICAgICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OmxvYWQpOgorICAg
ICAgICAqIGxvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1h
aW5SZXNvdXJjZUxvYWRlcjo6dGFrZUlkZW50aWZpZXJGcm9tUmVzb3VyY2VMb2FkZXIpOiBUZW1w
b3JhcmlseQorICAgICAgICAgICAgZXhwb3NlZCBmb3IgbW92aW5nIGZyb20gYSBub3JtYWwgbG9h
ZCB0byBTdWJzdGl0dXRlRGF0YSBsb2FkIG9uIHJlZGlyZWN0LgorCiAyMDEzLTAzLTEzICBUYW8g
QmFpICA8bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIHRoZSBkZWZhdWx0
IHZpZGVvIHBvc3RlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGluIHZpZGVvIHRhZwpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlzaW9uIDE0NTc1MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01
Nyw2ICs1Nyw3IEBACiAgICAgY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKICAgICBj
bGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKICAgICBjbGFzcyBDb250ZW50RmlsdGVyOworICAg
IGNsYXNzIEZvcm1TdGF0ZTsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBGcmFtZUxvYWRl
cjsKICAgICBjbGFzcyBNYWluUmVzb3VyY2VMb2FkZXI7CkBAIC0yNTUsNiArMjU2LDkgQEAKICAg
ICAgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBj
b25zdDsKICAgICAgICAgdm9pZCBjaGVja0xvYWRDb21wbGV0ZSgpOwogCisgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBiZSBwcml2YXRlIG9uY2UgRG9jdW1lbnRMb2FkZXIgYW5kIE1haW5S
ZXNvdXJjZUxvYWRlciBhcmUgbWVyZ2VkLgorICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisKICAgICBwcm90ZWN0
ZWQ6CiAgICAgICAgIERvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFN1YnN0aXR1dGVEYXRhJik7CiAKQEAgLTI3NCw3ICsyNzgsMTEgQEAKICAgICAgICAgYm9vbCBt
YXliZUxvYWRFbXB0eSgpOwogCiAgICAgICAgIGJvb2wgaXNNdWx0aXBhcnRSZXBsYWNpbmdMb2Fk
KCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNQb3N0T3JSZWRpcmVjdEFmdGVyUG9zdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKKyAgICAgICAgc3Rh
dGljIHZvaWQgY2FsbENvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHZvaWQqLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGJvb2wgc2hvdWxkQ29udGlu
dWUpOworICAgICAgICB2b2lkIGNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIGJvb2wgc2hvdWxkQ29udGludWUpOworCiAgICAgICAgIHZvaWQgZGVs
aXZlclN1YnN0aXR1dGVSZXNvdXJjZXNBZnRlckRlbGF5KCk7CiAgICAgICAgIHZvaWQgc3Vic3Rp
dHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lckZpcmVkKFRpbWVyPERvY3VtZW50TG9hZGVyPiopOwog
ICAgICAgICAgICAgICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJj
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNv
dXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDE0NTc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw2IEBA
CiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkVGltaW5nLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2Fk
ZXIuaCIKICNpbmNsdWRlICJGZWF0dXJlT2JzZXJ2ZXIuaCIKLSNpbmNsdWRlICJGb3JtU3RhdGUu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKQEAgLTE1OSwxMzYgKzE1OCwxOSBAQAogICAgIGNhbmNl
bChlcnJvcik7CiB9CiAKLXZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpjYWxsQ29udGludWVBZnRl
ck5hdmlnYXRpb25Qb2xpY3kodm9pZCogYXJndW1lbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBib29sIHNob3VsZENvbnRpbnVlKQotewot
ICAgIHN0YXRpY19jYXN0PE1haW5SZXNvdXJjZUxvYWRlcio+KGFyZ3VtZW50KS0+Y29udGludWVB
ZnRlck5hdmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgc2hvdWxkQ29udGludWUpOwotfQotCi12b2lk
IE1haW5SZXNvdXJjZUxvYWRlcjo6Y29udGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIHNob3VsZENvbnRpbnVlKQotewotICAgIGlm
ICghc2hvdWxkQ29udGludWUpCi0gICAgICAgIHN0b3BMb2FkaW5nRm9yUG9saWN5Q2hhbmdlKCk7
Ci0gICAgZWxzZSBpZiAobV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpIHsKLSAgICAgICAgLy8g
QSByZWRpcmVjdCByZXN1bHRlZCBpbiBsb2FkaW5nIHN1YnN0aXR1dGUgZGF0YS4KLSAgICAgICAg
QVNTRVJUKGRvY3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5yZWRpcmVjdENvdW50KCkpOwotCi0g
ICAgICAgIC8vIFdlIG5lZWQgdG8gcmVtb3ZlIG91ciByZWZlcmVuY2UgdG8gdGhlIENhY2hlZFJl
c291cmNlIGluIGZhdm9yIG9mIGEgU3Vic3RpdHV0ZURhdGEgbG9hZC4KLSAgICAgICAgLy8gVGhp
cyB3aWxsIHByb2JhYmx5IHRyaWdnZXIgdGhlIGNhbmNlbGxhdGlvbiBvZiB0aGUgQ2FjaGVkUmVz
b3VyY2UncyB1bmRlcmx5aW5nIFJlc291cmNlTG9hZGVyLCB0aG91Z2ggdGhlcmUgaXMgYQotICAg
ICAgICAvLyBzbWFsbCBjaGFuY2UgdGhhdCB0aGUgcmVzb3VyY2UgaXMgYmVpbmcgbG9hZGVkIGJ5
IGEgZGlmZmVyZW50IEZyYW1lLCBwcmV2ZW50aW5nIHRoZSBSZXNvdXJjZUxvYWRlciBmcm9tIGJl
aW5nIGNhbmNlbGxlZC4KLSAgICAgICAgLy8gSWYgdGhlIFJlc291cmNlTG9hZGVyIGlzIGluZGVl
ZCBjYW5jZWxsZWQsIGl0IHdvdWxkIG5vcm1hbGx5IHNlbmQgcmVzb3VyY2UgbG9hZCBjYWxsYmFj
a3MuCi0gICAgICAgIC8vIEhvd2V2ZXIsIGZyb20gYW4gQVBJIHBlcnNwZWN0aXZlLCB0aGlzIGlz
bid0IGEgY2FuY2VsbGF0aW9uLiBUaGVyZWZvcmUsIHNldmVyIG91ciByZWxhdGlvbnNoaXAgd2l0
aCB0aGUgbmV0d29yayBsb2FkIHZpYSBjbGVhclJlc291cmNlKCksCi0gICAgICAgIC8vIGJ1dCBw
cmV2ZW50IHRoZSBSZXNvdXJjZUxvYWRlciBmcm9tIHNlbmRpbmcgUmVzb3VyY2VMb2FkTm90aWZp
ZXIgY2FsbGJhY2tzLgotICAgICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IHJlc291cmNlTG9h
ZGVyID0gbG9hZGVyKCk7Ci0gICAgICAgIEFTU0VSVChyZXNvdXJjZUxvYWRlci0+c2hvdWxkU2Vu
ZFJlc291cmNlTG9hZENhbGxiYWNrcygpKTsKLSAgICAgICAgcmVzb3VyY2VMb2FkZXItPnNldFNl
bmRDYWxsYmFja1BvbGljeShEb05vdFNlbmRDYWxsYmFja3MpOwotICAgICAgICBjbGVhclJlc291
cmNlKCk7Ci0gICAgICAgIHJlc291cmNlTG9hZGVyLT5zZXRTZW5kQ2FsbGJhY2tQb2xpY3koU2Vu
ZENhbGxiYWNrcyk7Ci0gICAgICAgIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZFNvb24ocmVxdWVz
dCk7Ci0gICAgfQotCi0gICAgZGVyZWYoKTsgLy8gYmFsYW5jZXMgcmVmIGluIHdpbGxTZW5kUmVx
dWVzdAotfQotCi1ib29sIE1haW5SZXNvdXJjZUxvYWRlcjo6aXNQb3N0T3JSZWRpcmVjdEFmdGVy
UG9zdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCi17Ci0gICAgaWYgKG5ld1JlcXVlc3QuaHR0cE1ldGhv
ZCgpID09ICJQT1NUIikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpbnQgc3RhdHVzID0g
cmVkaXJlY3RSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpOwotICAgIGlmICgoKHN0YXR1cyA+PSAz
MDEgJiYgc3RhdHVzIDw9IDMwMykgfHwgc3RhdHVzID09IDMwNykKLSAgICAgICAgJiYgZnJhbWVM
b2FkZXIoKS0+aW5pdGlhbFJlcXVlc3QoKS5odHRwTWV0aG9kKCkgPT0gIlBPU1QiKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIFBhc3NSZWZQdHI8
UmVzb3VyY2VCdWZmZXI+IE1haW5SZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkKIHsKLSAg
ICBBU1NFUlQoIW1fcmVzb3VyY2UgfHwgIW1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKTsKICAg
ICBpZiAobV9yZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG1fcmVzb3VyY2UtPnJlc291cmNlQnVm
ZmVyKCk7Ci0gICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQotICAgICAgICByZXR1
cm4gUmVzb3VyY2VCdWZmZXI6OmNyZWF0ZShtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+ZGF0
YSgpLCBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+c2l6ZSgpKTsKICAgICByZXR1cm4gMDsK
IH0KIAogdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UqIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJj
ZSwgcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7Ci0gICAgd2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3Qs
IHJlZGlyZWN0UmVzcG9uc2UpOworICAgIG1fZG9jdW1lbnRMb2FkZXItPndpbGxTZW5kUmVxdWVz
dChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKIH0KIAotdm9pZCBNYWluUmVzb3VyY2VMb2Fk
ZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCi17Ci0gICAgLy8gTm90ZSB0aGF0IHRo
ZXJlIGFyZSBubyBhc3NlcnRzIGhlcmUgYXMgdGhlcmUgYXJlIGZvciB0aGUgb3RoZXIgY2FsbGJh
Y2tzLiBUaGlzIGlzIGR1ZSB0byB0aGUKLSAgICAvLyBmYWN0IHRoYXQgdGhpcyAiY2FsbGJhY2si
IGlzIHNlbnQgd2hlbiBzdGFydGluZyBldmVyeSBsb2FkLCBhbmQgdGhlIHN0YXRlIG9mIGNhbGxi
YWNrCi0gICAgLy8gZGVmZXJyYWxzIHBsYXlzIGxlc3Mgb2YgYSBwYXJ0IGluIHRoaXMgZnVuY3Rp
b24gaW4gcHJldmVudGluZyB0aGUgYmFkIGJlaGF2aW9yIGRlZmVycmluZyAKLSAgICAvLyBjYWxs
YmFja3MgaXMgbWVhbnQgdG8gcHJldmVudC4KLSAgICBBU1NFUlQoIW5ld1JlcXVlc3QuaXNOdWxs
KCkpOwotCi0gICAgLy8gVGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8gYW55dGhpbmcg
aW5jbHVkaW5nIHBvc3NpYmx5IHJlbW92aW5nIHRoZSBsYXN0Ci0gICAgLy8gcmVmZXJlbmNlIHRv
IHRoaXMgb2JqZWN0OyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIDMyNjYyMTYuCi0gICAgUmVmUHRy
PE1haW5SZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKLQotICAgIGlmICghZnJhbWVMb2Fk
ZXIoKS0+Y2hlY2tJZkZvcm1BY3Rpb25BbGxvd2VkQnlDU1AobmV3UmVxdWVzdC51cmwoKSkpIHsK
LSAgICAgICAgY2FuY2VsKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQo
ZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5nKCktPmZldGNoU3RhcnQoKSk7Ci0gICAgaWYgKCFyZWRp
cmVjdFJlc3BvbnNlLmlzTnVsbCgpKSB7Ci0gICAgICAgIC8vIElmIHRoZSByZWRpcmVjdGluZyB1
cmwgaXMgbm90IGFsbG93ZWQgdG8gZGlzcGxheSBjb250ZW50IGZyb20gdGhlIHRhcmdldCBvcmln
aW4sCi0gICAgICAgIC8vIHRoZW4gYmxvY2sgdGhlIHJlZGlyZWN0LgotICAgICAgICBSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IHJlZGlyZWN0aW5nT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShyZWRpcmVjdFJlc3BvbnNlLnVybCgpKTsKLSAgICAgICAgaWYgKCFyZWRpcmVjdGluZ09yaWdp
bi0+Y2FuRGlzcGxheShuZXdSZXF1ZXN0LnVybCgpKSkgewotICAgICAgICAgICAgRnJhbWVMb2Fk
ZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLCBuZXdS
ZXF1ZXN0LnVybCgpLmVsaWRlZFN0cmluZygpKTsKLSAgICAgICAgICAgIGNhbmNlbCgpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGRvY3VtZW50TG9hZGVyKCktPnRp
bWluZygpLT5hZGRSZWRpcmVjdChyZWRpcmVjdFJlc3BvbnNlLnVybCgpLCBuZXdSZXF1ZXN0LnVy
bCgpKTsKLSAgICB9Ci0KLSAgICAvLyBVcGRhdGUgY29va2llIHBvbGljeSBiYXNlIFVSTCBhcyBV
UkwgY2hhbmdlcywgZXhjZXB0IGZvciBzdWJmcmFtZXMsIHdoaWNoIHVzZSB0aGUKLSAgICAvLyBV
Ukwgb2YgdGhlIG1haW4gZnJhbWUgd2hpY2ggZG9lc24ndCBjaGFuZ2Ugd2hlbiB3ZSByZWRpcmVj
dC4KLSAgICBpZiAoZnJhbWVMb2FkZXIoKS0+aXNMb2FkaW5nTWFpbkZyYW1lKCkpCi0gICAgICAg
IG5ld1JlcXVlc3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMobmV3UmVxdWVzdC51cmwoKSk7Ci0K
LSAgICAvLyBJZiB3ZSdyZSBmaWVsZGluZyBhIHJlZGlyZWN0IGluIHJlc3BvbnNlIHRvIGEgUE9T
VCwgZm9yY2UgYSBsb2FkIGZyb20gb3JpZ2luLCBzaW5jZQotICAgIC8vIHRoaXMgaXMgYSBjb21t
b24gc2l0ZSB0ZWNobmlxdWUgdG8gcmV0dXJuIHRvIGEgcGFnZSB2aWV3aW5nIHNvbWUgZGF0YSB0
aGF0IHRoZSBQT1NUCi0gICAgLy8ganVzdCBtb2RpZmllZC4KLSAgICAvLyBBbHNvLCBQT1NUIHJl
cXVlc3RzIGFsd2F5cyBsb2FkIGZyb20gb3JpZ2luLCBidXQgdGhpcyBkb2VzIG5vdCBhZmZlY3Qg
c3VicmVzb3VyY2VzLgotICAgIGlmIChuZXdSZXF1ZXN0LmNhY2hlUG9saWN5KCkgPT0gVXNlUHJv
dG9jb2xDYWNoZVBvbGljeSAmJiBpc1Bvc3RPclJlZGlyZWN0QWZ0ZXJQb3N0KG5ld1JlcXVlc3Qs
IHJlZGlyZWN0UmVzcG9uc2UpKQotICAgICAgICBuZXdSZXF1ZXN0LnNldENhY2hlUG9saWN5KFJl
bG9hZElnbm9yaW5nQ2FjaGVEYXRhKTsKLQotICAgIEZyYW1lKiB0b3AgPSBtX2RvY3VtZW50TG9h
ZGVyLT5mcmFtZSgpLT50cmVlKCktPnRvcCgpOwotICAgIGlmICh0b3AgIT0gbV9kb2N1bWVudExv
YWRlci0+ZnJhbWUoKSkgewotICAgICAgICBpZiAoIWZyYW1lTG9hZGVyKCktPm1peGVkQ29udGVu
dENoZWNrZXIoKS0+Y2FuRGlzcGxheUluc2VjdXJlQ29udGVudCh0b3AtPmRvY3VtZW50KCktPnNl
Y3VyaXR5T3JpZ2luKCksIG5ld1JlcXVlc3QudXJsKCkpKSB7Ci0gICAgICAgICAgICBjYW5jZWwo
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIERvbid0
IHNldCB0aGlzIG9uIHRoZSBmaXJzdCByZXF1ZXN0LiBJdCBpcyBzZXQgd2hlbiB0aGUgbWFpbiBs
b2FkIHdhcyBzdGFydGVkLgotICAgIG1fZG9jdW1lbnRMb2FkZXItPnNldFJlcXVlc3QobmV3UmVx
dWVzdCk7Ci0KLSAgICBpZiAoIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpIHsKLSAgICAgICAg
Ly8gV2UgY2hlY2tlZCBhcHBsaWNhdGlvbiBjYWNoZSBmb3IgaW5pdGlhbCBVUkwsIG5vdyB3ZSBu
ZWVkIHRvIGNoZWNrIGl0IGZvciByZWRpcmVjdGVkIG9uZS4KLSAgICAgICAgQVNTRVJUKCFtX3N1
YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSk7Ci0gICAgICAgIGRvY3VtZW50TG9hZGVyKCktPmFwcGxp
Y2F0aW9uQ2FjaGVIb3N0KCktPm1heWJlTG9hZE1haW5SZXNvdXJjZUZvclJlZGlyZWN0KG5ld1Jl
cXVlc3QsIG1fc3Vic3RpdHV0ZURhdGEpOwotICAgICAgICBpZiAobV9zdWJzdGl0dXRlRGF0YS5p
c1ZhbGlkKCkpCi0gICAgICAgICAgICBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNl
TG9hZGVyID0gaWRlbnRpZmllcigpOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBJZGVhbGx5IHdl
J2Qgc3RvcCB0aGUgSS9PIHVudGlsIHdlIGhlYXIgYmFjayBmcm9tIHRoZSBuYXZpZ2F0aW9uIHBv
bGljeSBkZWxlZ2F0ZQotICAgIC8vIGxpc3RlbmVyLiBCdXQgdGhlcmUncyBubyB3YXkgdG8gZG8g
dGhhdCBpbiBwcmFjdGljZS4gU28gaW5zdGVhZCB3ZSBjYW5jZWwgbGF0ZXIgaWYgdGhlCi0gICAg
Ly8gbGlzdGVuZXIgdGVsbHMgdXMgdG8uIEluIHByYWN0aWNlIHRoYXQgbWVhbnMgdGhlIG5hdmln
YXRpb24gcG9saWN5IG5lZWRzIHRvIGJlIGRlY2lkZWQKLSAgICAvLyBzeW5jaHJvbm91c2x5IGZv
ciB0aGVzZSByZWRpcmVjdCBjYXNlcy4KLSAgICBpZiAoIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxs
KCkpIHsKLSAgICAgICAgcmVmKCk7IC8vIGJhbGFuY2VkIGJ5IGRlcmVmIGluIGNvbnRpbnVlQWZ0
ZXJOYXZpZ2F0aW9uUG9saWN5Ci0gICAgICAgIGZyYW1lTG9hZGVyKCktPnBvbGljeUNoZWNrZXIo
KS0+Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KG5ld1JlcXVlc3QsIGNhbGxDb250aW51ZUFmdGVyTmF2
aWdhdGlvblBvbGljeSwgdGhpcyk7Ci0gICAgfQotfQotCiB2b2lkIE1haW5SZXNvdXJjZUxvYWRl
cjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3koUG9saWN5QWN0aW9uIGNvbnRlbnRQb2xpY3ks
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHIpCiB7CiAgICAgS1VSTCB1cmwgPSByZXF1ZXN0KCku
dXJsKCk7CkBAIC0zMDIsNyArMTg0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoIm1lc3NhZ2UvcmZjODIyIiwgbWltZVR5cGUpCiAj
ZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgZXF1YWxJZ25vcmlu
Z0Nhc2UoIm11bHRpcGFydC9yZWxhdGVkIiwgbWltZVR5cGUpKQotICAgICAgICAgICAgJiYgIW1f
c3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpICYmICFTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRV
UkxTY2hlbWVBc0xvY2FsKHVybC5wcm90b2NvbCgpKTsKKyAgICAgICAgICAgICYmICFtX2RvY3Vt
ZW50TG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpLmlzVmFsaWQoKSAmJiAhU2NoZW1lUmVnaXN0cnk6
OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbCh1cmwucHJvdG9jb2woKSk7CiAgICAgICAgIGlm
ICghZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCktPmNhblNob3dNSU1FVHlwZShtaW1lVHlwZSkgfHwg
aXNSZW1vdGVXZWJBcmNoaXZlKSB7CiAgICAgICAgICAgICBmcmFtZUxvYWRlcigpLT5wb2xpY3lD
aGVja2VyKCktPmNhbm5vdFNob3dNSU1FVHlwZShyKTsKICAgICAgICAgICAgIC8vIENoZWNrIHJl
YWNoZWRUZXJtaW5hbFN0YXRlIHNpbmNlIHRoZSBsb2FkIG1heSBoYXZlIGFscmVhZHkgYmVlbiBj
YW5jZWxlZCBpbnNpZGUgb2YgX2hhbmRsZVVuaW1wbGVtZW50YWJsZVBvbGljeVdpdGhFcnJvckNv
ZGU6Oi4KQEAgLTM1Nyw5ICsyMzksOSBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFt
X2RvY3VtZW50TG9hZGVyLT5pc1N0b3BwaW5nKCkgJiYgbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlk
KCkpIHsKLSAgICAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5zaXplKCkpCi0g
ICAgICAgICAgICBkYXRhUmVjZWl2ZWQoMCwgbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPmRh
dGEoKSwgbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPnNpemUoKSk7CisgICAgaWYgKCFtX2Rv
Y3VtZW50TG9hZGVyLT5pc1N0b3BwaW5nKCkgJiYgbV9kb2N1bWVudExvYWRlci0+c3Vic3RpdHV0
ZURhdGEoKS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXItPnN1YnN0
aXR1dGVEYXRhKCkuY29udGVudCgpLT5zaXplKCkpCisgICAgICAgICAgICBkYXRhUmVjZWl2ZWQo
MCwgbV9kb2N1bWVudExvYWRlci0+c3Vic3RpdHV0ZURhdGEoKS5jb250ZW50KCktPmRhdGEoKSwg
bV9kb2N1bWVudExvYWRlci0+c3Vic3RpdHV0ZURhdGEoKS5jb250ZW50KCktPnNpemUoKSk7CiAg
ICAgICAgIGlmIChtX2RvY3VtZW50TG9hZGVyLT5pc0xvYWRpbmdNYWluUmVzb3VyY2UoKSkKICAg
ICAgICAgICAgIGRpZEZpbmlzaExvYWRpbmcoMCk7CiAgICAgfQpAQCAtNTExLDcgKzM5Myw2IEBA
CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29y
ZU1lbW9yeVR5cGVzOjpMb2FkZXIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fcmVzb3VyY2UsICJy
ZXNvdXJjZSIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1faW5pdGlhbFJlcXVlc3QsICJpbml0aWFs
UmVxdWVzdCIpOwotICAgIGluZm8uYWRkTWVtYmVyKG1fc3Vic3RpdHV0ZURhdGEsICJzdWJzdGl0
dXRlRGF0YSIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fZGF0YUxvYWRUaW1lciwgImRhdGFMb2Fk
VGltZXIiKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2RvY3VtZW50TG9hZGVyLCAiZG9jdW1lbnRM
b2FkZXIiKTsKIH0KQEAgLTUyMCw3ICs0MDEsNyBAQAogewogICAgIFJlZlB0cjxNYWluUmVzb3Vy
Y2VMb2FkZXI+IHByb3RlY3QodGhpcyk7CiAKLSAgICBLVVJMIHVybCA9IG1fc3Vic3RpdHV0ZURh
dGEucmVzcG9uc2VVUkwoKTsKKyAgICBLVVJMIHVybCA9IG1fZG9jdW1lbnRMb2FkZXItPnN1YnN0
aXR1dGVEYXRhKCkucmVzcG9uc2VVUkwoKTsKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAg
ICAgdXJsID0gbV9pbml0aWFsUmVxdWVzdC51cmwoKTsKIApAQCAtNTI4LDcgKzQwOSw3IEBACiAg
ICAgLy8gbG9hZGVyIHdpbGwgbm90IHRoaW5rIHRoZXJlJ3Mgc3RpbGwgYSBkZWZlcnJlZCBsb2Fk
IGxlZnQgdG8gZG8uCiAgICAgbV9pbml0aWFsUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwog
ICAgICAgICAKLSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHVybCwgbV9zdWJzdGl0dXRl
RGF0YS5taW1lVHlwZSgpLCBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+c2l6ZSgpLCBtX3N1
YnN0aXR1dGVEYXRhLnRleHRFbmNvZGluZygpLCAiIik7CisgICAgUmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZSh1cmwsIG1fZG9jdW1lbnRMb2FkZXItPnN1YnN0aXR1dGVEYXRhKCkubWltZVR5cGUo
KSwgbV9kb2N1bWVudExvYWRlci0+c3Vic3RpdHV0ZURhdGEoKS5jb250ZW50KCktPnNpemUoKSwg
bV9kb2N1bWVudExvYWRlci0+c3Vic3RpdHV0ZURhdGEoKS50ZXh0RW5jb2RpbmcoKSwgIiIpOwog
ICAgIHJlc3BvbnNlUmVjZWl2ZWQoMCwgcmVzcG9uc2UpOwogfQogCkBAIC01NTIsMzIgKzQzMywx
MiBAQAogICAgICAgICBoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3coMCk7CiB9CiAKLXZvaWQg
TWFpblJlc291cmNlTG9hZGVyOjpsb2FkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgaW5pdGlhbFJl
cXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKK3ZvaWQgTWFpblJl
c291cmNlTG9hZGVyOjpsb2FkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgaW5pdGlhbFJlcXVlc3Qp
CiB7Ci0gICAgLy8gSXQgYXBwZWFycyB0aGF0IGl0IGlzIHBvc3NpYmxlIGZvciB0aGlzIGxvYWQg
dG8gYmUgY2FuY2VsbGVkIGFuZCBkZXJlZmVuY2VkIGJ5IHRoZSBEb2N1bWVudExvYWRlcgotICAg
IC8vIGluIHdpbGxTZW5kUmVxdWVzdCgpIGlmIGxvYWROb3coKSBpcyBjYWxsZWQuCiAgICAgUmVm
UHRyPE1haW5SZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKLQotICAgIG1fc3Vic3RpdHV0
ZURhdGEgPSBzdWJzdGl0dXRlRGF0YTsKLQotICAgIEFTU0VSVChkb2N1bWVudExvYWRlcigpLT50
aW1pbmcoKS0+bmF2aWdhdGlvblN0YXJ0KCkpOwotICAgIEFTU0VSVCghZG9jdW1lbnRMb2FkZXIo
KS0+dGltaW5nKCktPmZldGNoU3RhcnQoKSk7Ci0gICAgZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5n
KCktPm1hcmtGZXRjaFN0YXJ0KCk7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoaW5pdGlh
bFJlcXVlc3QpOwogCi0gICAgLy8gU2VuZCB0aGlzIHN5bnRoZXRpYyBkZWxlZ2F0ZSBjYWxsYmFj
ayBzaW5jZSBjbGllbnRzIGV4cGVjdCBpdCwgYW5kCi0gICAgLy8gd2Ugbm8gbG9uZ2VyIHNlbmQg
dGhlIGNhbGxiYWNrIGZyb20gd2l0aGluIE5TVVJMQ29ubmVjdGlvbiBmb3IKLSAgICAvLyBpbml0
aWFsIHJlcXVlc3RzLgotICAgIHdpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCBSZXNvdXJjZVJlc3Bv
bnNlKCkpOwotICAgIEFTU0VSVCghZGVsZXRpb25IYXNCZWd1bigpKTsKLQotICAgIC8vIHdpbGxT
ZW5kUmVxdWVzdCgpIG1heSBsZWFkIHRvIG91ciBEb2N1bWVudExvYWRlciBiZWluZyBkZXRhY2hl
ZCBvciBjYW5jZWxsaW5nIHRoZSBsb2FkIHZpYSBudWxsaW5nIHRoZSBSZXNvdXJjZVJlcXVlc3Qu
Ci0gICAgaWYgKCFkb2N1bWVudExvYWRlcigpLT5mcmFtZSgpIHx8IHJlcXVlc3QuaXNOdWxsKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2Fj
aGVIb3N0KCktPm1heWJlTG9hZE1haW5SZXNvdXJjZShyZXF1ZXN0LCBtX3N1YnN0aXR1dGVEYXRh
KTsKLQotICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkgeworICAgIGlmIChtX2Rv
Y3VtZW50TG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpLmlzVmFsaWQoKSkgewogICAgICAgICBtX2lk
ZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyID0gbV9kb2N1bWVudExvYWRlci0+
ZnJhbWUoKS0+cGFnZSgpLT5wcm9ncmVzcygpLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CiAg
ICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmFzc2lnbklkZW50aWZpZXJUb0luaXRp
YWxSZXF1ZXN0KG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIsIGRvY3Vt
ZW50TG9hZGVyKCksIHJlcXVlc3QpOwogICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigp
LT5kaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChkb2N1bWVudExvYWRlcigpLCBtX2lkZW50aWZpZXJG
b3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCkp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lv
biAxNDU3NTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRQYXJzZXIu
aCIKICNpbmNsdWRlICJEb2N1bWVudFdyaXRlci5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5j
bHVkZSAiRm9ybVN0YXRlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxv
YWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCkBAIC0xMzQsNiArMTM1LDgg
QEAKIHsKICAgICBpZiAobV9tYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gbV9tYWlu
UmVzb3VyY2VEYXRhOworICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKKyAgICAg
ICAgcmV0dXJuIFJlc291cmNlQnVmZmVyOjpjcmVhdGUobV9zdWJzdGl0dXRlRGF0YS5jb250ZW50
KCktPmRhdGEoKSwgbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPnNpemUoKSk7CiAgICAgaWYg
KG1fbWFpblJlc291cmNlTG9hZGVyKQogICAgICAgICByZXR1cm4gbV9tYWluUmVzb3VyY2VMb2Fk
ZXItPnJlc291cmNlRGF0YSgpOwogICAgIHJldHVybiAwOwpAQCAtMzYzLDYgKzM2NiwxMTEgQEAK
ICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0LT5maW5pc2hlZExvYWRpbmdNYWluUmVzb3VyY2Uo
KTsKIH0KIAorYm9vbCBEb2N1bWVudExvYWRlcjo6aXNQb3N0T3JSZWRpcmVjdEFmdGVyUG9zdChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UpCit7CisgICAgaWYgKG5ld1JlcXVlc3QuaHR0cE1ldGhvZCgpID09
ICJQT1NUIikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpbnQgc3RhdHVzID0gcmVkaXJl
Y3RSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpOworICAgIGlmICgoKHN0YXR1cyA+PSAzMDEgJiYg
c3RhdHVzIDw9IDMwMykgfHwgc3RhdHVzID09IDMwNykKKyAgICAgICAgJiYgbV9vcmlnaW5hbFJl
cXVlc3QuaHR0cE1ldGhvZCgpID09ICJQT1NUIikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
ZGlyZWN0UmVzcG9uc2UpCit7CisgICAgLy8gTm90ZSB0aGF0IHRoZXJlIGFyZSBubyBhc3NlcnRz
IGhlcmUgYXMgdGhlcmUgYXJlIGZvciB0aGUgb3RoZXIgY2FsbGJhY2tzLiBUaGlzIGlzIGR1ZSB0
byB0aGUKKyAgICAvLyBmYWN0IHRoYXQgdGhpcyAiY2FsbGJhY2siIGlzIHNlbnQgd2hlbiBzdGFy
dGluZyBldmVyeSBsb2FkLCBhbmQgdGhlIHN0YXRlIG9mIGNhbGxiYWNrCisgICAgLy8gZGVmZXJy
YWxzIHBsYXlzIGxlc3Mgb2YgYSBwYXJ0IGluIHRoaXMgZnVuY3Rpb24gaW4gcHJldmVudGluZyB0
aGUgYmFkIGJlaGF2aW9yIGRlZmVycmluZyAKKyAgICAvLyBjYWxsYmFja3MgaXMgbWVhbnQgdG8g
cHJldmVudC4KKyAgICBBU1NFUlQoIW5ld1JlcXVlc3QuaXNOdWxsKCkpOworCisgICAgaWYgKCFm
cmFtZUxvYWRlcigpLT5jaGVja0lmRm9ybUFjdGlvbkFsbG93ZWRCeUNTUChuZXdSZXF1ZXN0LnVy
bCgpKSkgeworICAgICAgICBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGZyYW1lTG9hZGVyKCktPmNh
bmNlbGxlZEVycm9yKG5ld1JlcXVlc3QpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IEFTU0VSVCh0aW1pbmcoKS0+ZmV0Y2hTdGFydCgpKTsKKyAgICBpZiAoIXJlZGlyZWN0UmVzcG9u
c2UuaXNOdWxsKCkpIHsKKyAgICAgICAgLy8gSWYgdGhlIHJlZGlyZWN0aW5nIHVybCBpcyBub3Qg
YWxsb3dlZCB0byBkaXNwbGF5IGNvbnRlbnQgZnJvbSB0aGUgdGFyZ2V0IG9yaWdpbiwKKyAgICAg
ICAgLy8gdGhlbiBibG9jayB0aGUgcmVkaXJlY3QuCisgICAgICAgIFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4gcmVkaXJlY3RpbmdPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlZGlyZWN0
UmVzcG9uc2UudXJsKCkpOworICAgICAgICBpZiAoIXJlZGlyZWN0aW5nT3JpZ2luLT5jYW5EaXNw
bGF5KG5ld1JlcXVlc3QudXJsKCkpKSB7CisgICAgICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0
TG9jYWxMb2FkRmFpbGVkKG1fZnJhbWUsIG5ld1JlcXVlc3QudXJsKCkuc3RyaW5nKCkpOworICAg
ICAgICAgICAgY2FuY2VsTWFpblJlc291cmNlTG9hZChmcmFtZUxvYWRlcigpLT5jYW5jZWxsZWRF
cnJvcihuZXdSZXF1ZXN0KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgdGltaW5nKCktPmFkZFJlZGlyZWN0KHJlZGlyZWN0UmVzcG9uc2UudXJsKCksIG5ld1JlcXVl
c3QudXJsKCkpOworICAgIH0KKworICAgIC8vIFVwZGF0ZSBjb29raWUgcG9saWN5IGJhc2UgVVJM
IGFzIFVSTCBjaGFuZ2VzLCBleGNlcHQgZm9yIHN1YmZyYW1lcywgd2hpY2ggdXNlIHRoZQorICAg
IC8vIFVSTCBvZiB0aGUgbWFpbiBmcmFtZSB3aGljaCBkb2Vzbid0IGNoYW5nZSB3aGVuIHdlIHJl
ZGlyZWN0LgorICAgIGlmIChmcmFtZUxvYWRlcigpLT5pc0xvYWRpbmdNYWluRnJhbWUoKSkKKyAg
ICAgICAgbmV3UmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhuZXdSZXF1ZXN0LnVybCgp
KTsKKworICAgIC8vIElmIHdlJ3JlIGZpZWxkaW5nIGEgcmVkaXJlY3QgaW4gcmVzcG9uc2UgdG8g
YSBQT1NULCBmb3JjZSBhIGxvYWQgZnJvbSBvcmlnaW4sIHNpbmNlCisgICAgLy8gdGhpcyBpcyBh
IGNvbW1vbiBzaXRlIHRlY2huaXF1ZSB0byByZXR1cm4gdG8gYSBwYWdlIHZpZXdpbmcgc29tZSBk
YXRhIHRoYXQgdGhlIFBPU1QKKyAgICAvLyBqdXN0IG1vZGlmaWVkLgorICAgIC8vIEFsc28sIFBP
U1QgcmVxdWVzdHMgYWx3YXlzIGxvYWQgZnJvbSBvcmlnaW4sIGJ1dCB0aGlzIGRvZXMgbm90IGFm
ZmVjdCBzdWJyZXNvdXJjZXMuCisgICAgaWYgKG5ld1JlcXVlc3QuY2FjaGVQb2xpY3koKSA9PSBV
c2VQcm90b2NvbENhY2hlUG9saWN5ICYmIGlzUG9zdE9yUmVkaXJlY3RBZnRlclBvc3QobmV3UmVx
dWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpCisgICAgICAgIG5ld1JlcXVlc3Quc2V0Q2FjaGVQb2xp
Y3koUmVsb2FkSWdub3JpbmdDYWNoZURhdGEpOworCisgICAgRnJhbWUqIHRvcCA9IG1fZnJhbWUt
PnRyZWUoKS0+dG9wKCk7CisgICAgaWYgKHRvcCAhPSBtX2ZyYW1lKSB7CisgICAgICAgIGlmICgh
ZnJhbWVMb2FkZXIoKS0+bWl4ZWRDb250ZW50Q2hlY2tlcigpLT5jYW5EaXNwbGF5SW5zZWN1cmVD
b250ZW50KHRvcC0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgbmV3UmVxdWVzdC51cmwo
KSkpIHsKKyAgICAgICAgICAgIGNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZnJhbWVMb2FkZXIoKS0+
Y2FuY2VsbGVkRXJyb3IobmV3UmVxdWVzdCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgfQorCisgICAgc2V0UmVxdWVzdChuZXdSZXF1ZXN0KTsKKworICAgIGlmICghcmVk
aXJlY3RSZXNwb25zZS5pc051bGwoKSkgeworICAgICAgICAvLyBXZSBjaGVja2VkIGFwcGxpY2F0
aW9uIGNhY2hlIGZvciBpbml0aWFsIFVSTCwgbm93IHdlIG5lZWQgdG8gY2hlY2sgaXQgZm9yIHJl
ZGlyZWN0ZWQgb25lLgorICAgICAgICBBU1NFUlQoIW1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgp
KTsKKyAgICAgICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdC0+bWF5YmVMb2FkTWFpblJlc291cmNl
Rm9yUmVkaXJlY3QobmV3UmVxdWVzdCwgbV9zdWJzdGl0dXRlRGF0YSk7CisgICAgICAgIGlmICht
X3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIG1haW5SZXNvdXJjZUxvYWRl
cigpLT4gdGFrZUlkZW50aWZpZXJGcm9tUmVzb3VyY2VMb2FkZXIoKTsKKyAgICB9CisKKyAgICAv
LyBGSVhNRTogSWRlYWxseSB3ZSdkIHN0b3AgdGhlIEkvTyB1bnRpbCB3ZSBoZWFyIGJhY2sgZnJv
bSB0aGUgbmF2aWdhdGlvbiBwb2xpY3kgZGVsZWdhdGUKKyAgICAvLyBsaXN0ZW5lci4gQnV0IHRo
ZXJlJ3Mgbm8gd2F5IHRvIGRvIHRoYXQgaW4gcHJhY3RpY2UuIFNvIGluc3RlYWQgd2UgY2FuY2Vs
IGxhdGVyIGlmIHRoZQorICAgIC8vIGxpc3RlbmVyIHRlbGxzIHVzIHRvLiBJbiBwcmFjdGljZSB0
aGF0IG1lYW5zIHRoZSBuYXZpZ2F0aW9uIHBvbGljeSBuZWVkcyB0byBiZSBkZWNpZGVkCisgICAg
Ly8gc3luY2hyb25vdXNseSBmb3IgdGhlc2UgcmVkaXJlY3QgY2FzZXMuCisgICAgaWYgKCFyZWRp
cmVjdFJlc3BvbnNlLmlzTnVsbCgpKQorICAgICAgICBmcmFtZUxvYWRlcigpLT5wb2xpY3lDaGVj
a2VyKCktPmNoZWNrTmF2aWdhdGlvblBvbGljeShuZXdSZXF1ZXN0LCBjYWxsQ29udGludWVBZnRl
ck5hdmlnYXRpb25Qb2xpY3ksIHRoaXMpOworfQorCit2b2lkIERvY3VtZW50TG9hZGVyOjpjYWxs
Q29udGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3kodm9pZCogYXJndW1lbnQsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBib29sIHNob3VsZENv
bnRpbnVlKQoreworICAgIHN0YXRpY19jYXN0PERvY3VtZW50TG9hZGVyKj4oYXJndW1lbnQpLT5j
b250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeShyZXF1ZXN0LCBzaG91bGRDb250aW51ZSk7Cit9
CisKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBzaG91bGRDb250aW51ZSkKK3sKKyAg
ICBpZiAoIXNob3VsZENvbnRpbnVlKQorICAgICAgICBtYWluUmVzb3VyY2VMb2FkZXIoKS0+c3Rv
cExvYWRpbmdGb3JQb2xpY3lDaGFuZ2UoKTsKKyAgICBlbHNlIGlmIChtX3N1YnN0aXR1dGVEYXRh
LmlzVmFsaWQoKSkgeworICAgICAgICAvLyBBIHJlZGlyZWN0IHJlc3VsdGVkIGluIGxvYWRpbmcg
c3Vic3RpdHV0ZSBkYXRhLgorICAgICAgICBBU1NFUlQodGltaW5nKCktPnJlZGlyZWN0Q291bnQo
KSk7CisKKyAgICAgICAgLy8gV2UgbmVlZCB0byByZW1vdmUgb3VyIHJlZmVyZW5jZSB0byB0aGUg
Q2FjaGVkUmVzb3VyY2UgaW4gZmF2b3Igb2YgYSBTdWJzdGl0dXRlRGF0YSBsb2FkLgorICAgICAg
ICAvLyBUaGlzIHdpbGwgcHJvYmFibHkgdHJpZ2dlciB0aGUgY2FuY2VsbGF0aW9uIG9mIHRoZSBD
YWNoZWRSZXNvdXJjZSdzIHVuZGVybHlpbmcgUmVzb3VyY2VMb2FkZXIsIHRob3VnaCB0aGVyZSBp
cyBhCisgICAgICAgIC8vIHNtYWxsIGNoYW5jZSB0aGF0IHRoZSByZXNvdXJjZSBpcyBiZWluZyBs
b2FkZWQgYnkgYSBkaWZmZXJlbnQgRnJhbWUsIHByZXZlbnRpbmcgdGhlIFJlc291cmNlTG9hZGVy
IGZyb20gYmVpbmcgY2FuY2VsbGVkLgorICAgICAgICAvLyBJZiB0aGUgUmVzb3VyY2VMb2FkZXIg
aXMgaW5kZWVkIGNhbmNlbGxlZCwgaXQgd291bGQgbm9ybWFsbHkgc2VuZCByZXNvdXJjZSBsb2Fk
IGNhbGxiYWNrcy4KKyAgICAgICAgLy8gSG93ZXZlciwgZnJvbSBhbiBBUEkgcGVyc3BlY3RpdmUs
IHRoaXMgaXNuJ3QgYSBjYW5jZWxsYXRpb24uIFRoZXJlZm9yZSwgc2V2ZXIgb3VyIHJlbGF0aW9u
c2hpcCB3aXRoIHRoZSBuZXR3b3JrIGxvYWQsCisgICAgICAgIC8vIGJ1dCBwcmV2ZW50IHRoZSBS
ZXNvdXJjZUxvYWRlciBmcm9tIHNlbmRpbmcgUmVzb3VyY2VMb2FkTm90aWZpZXIgY2FsbGJhY2tz
LgorICAgICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IHJlc291cmNlTG9hZGVyID0gbWFpblJl
c291cmNlTG9hZGVyKCktPmxvYWRlcigpOworICAgICAgICBBU1NFUlQocmVzb3VyY2VMb2FkZXIt
PnNob3VsZFNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSk7CisgICAgICAgIHJlc291cmNlTG9h
ZGVyLT5zZXRTZW5kQ2FsbGJhY2tQb2xpY3koRG9Ob3RTZW5kQ2FsbGJhY2tzKTsKKyAgICAgICAg
bWFpblJlc291cmNlTG9hZGVyKCktPmNsZWFyUmVzb3VyY2UoKTsKKyAgICAgICAgcmVzb3VyY2VM
b2FkZXItPnNldFNlbmRDYWxsYmFja1BvbGljeShTZW5kQ2FsbGJhY2tzKTsKKyAgICAgICAgbWFp
blJlc291cmNlTG9hZGVyKCktPmhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZFNvb24ocmVxdWVzdCk7
CisgICAgfQorfQorCiB2b2lkIERvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIHNldFJlc3BvbnNlKHJlc3BvbnNl
KTsKQEAgLTEwMTksOCArMTEyNywyMCBAQAogICAgIC8vIE5vdGUgdGhhdCBjdXJyZW50bHksIHNv
bWUgcmVxdWVzdHMgbWF5IGhhdmUgaW5jb3JyZWN0IGV4dHJhIGZpZWxkcyBldmVuIGlmIHRoaXMg
ZnVuY3Rpb24gaGFzIGJlZW4gY2FsbGVkLAogICAgIC8vIGJlY2F1c2Ugd2UgcGFzcyBhIHdyb25n
IGxvYWRUeXBlIChzZWUgRklYTUUgaW4gYWRkRXh0cmFGaWVsZHNUb01haW5SZXNvdXJjZVJlcXVl
c3QoKSkuCiAgICAgZnJhbWVMb2FkZXIoKS0+YWRkRXh0cmFGaWVsZHNUb01haW5SZXNvdXJjZVJl
cXVlc3QobV9yZXF1ZXN0KTsKLSAgICBtX21haW5SZXNvdXJjZUxvYWRlci0+bG9hZChtX3JlcXVl
c3QsIG1fc3Vic3RpdHV0ZURhdGEpOwogCisgICAgQVNTRVJUKHRpbWluZygpLT5uYXZpZ2F0aW9u
U3RhcnQoKSk7CisgICAgQVNTRVJUKCF0aW1pbmcoKS0+ZmV0Y2hTdGFydCgpKTsKKyAgICB0aW1p
bmcoKS0+bWFya0ZldGNoU3RhcnQoKTsKKyAgICB3aWxsU2VuZFJlcXVlc3QobV9yZXF1ZXN0LCBS
ZXNvdXJjZVJlc3BvbnNlKCkpOworCisgICAgLy8gd2lsbFNlbmRSZXF1ZXN0KCkgbWF5IGxlYWQg
dG8gb3VyIEZyYW1lIGJlaW5nIGRldGFjaGVkIG9yIGNhbmNlbGxpbmcgdGhlIGxvYWQgdmlhIG51
bGxpbmcgdGhlIFJlc291cmNlUmVxdWVzdC4KKyAgICBpZiAoIW1fZnJhbWUgfHwgbV9yZXF1ZXN0
LmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0
LT5tYXliZUxvYWRNYWluUmVzb3VyY2UobV9yZXF1ZXN0LCBtX3N1YnN0aXR1dGVEYXRhKTsKKwor
ICAgIG1fbWFpblJlc291cmNlTG9hZGVyLT5sb2FkKG1fcmVxdWVzdCk7CisKICAgICBpZiAobV9y
ZXF1ZXN0LmlzTnVsbCgpKSB7CiAgICAgICAgIG1fbWFpblJlc291cmNlTG9hZGVyID0gMDsKICAg
ICAgICAgLy8gSWYgdGhlIGxvYWQgd2FzIGFib3J0ZWQgYnkgY2xlYXJpbmcgbV9yZXF1ZXN0LCBp
dCdzIHBvc3NpYmxlIHRoZSBBcHBsaWNhdGlvbkNhY2hlSG9zdApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMTQ1NzUwKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NCw3ICs0NCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRm9ybVN0YXRl
OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogCiBjbGFzcyBNYWluUmVzb3VyY2VMb2FkZXIgOiBw
dWJsaWMgUmVmQ291bnRlZDxNYWluUmVzb3VyY2VMb2FkZXI+LCBwdWJsaWMgQ2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQgewpAQCAtNTMsNyArNTIsNyBAQAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1h
aW5SZXNvdXJjZUxvYWRlcj4gY3JlYXRlKERvY3VtZW50TG9hZGVyKik7CiAgICAgdmlydHVhbCB+
TWFpblJlc291cmNlTG9hZGVyKCk7CiAKLSAgICB2b2lkIGxvYWQoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKKyAgICB2b2lkIGxvYWQoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBjYW5jZWwoKTsKICAgICB2b2lkIGNhbmNlbChjb25zdCBS
ZXNvdXJjZUVycm9yJik7CiAgICAgUmVzb3VyY2VMb2FkZXIqIGxvYWRlcigpIGNvbnN0OwpAQCAt
NzcsNiArNzYsMTEgQEAKIAogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyopIGNvbnN0OwogCisgICAgdm9pZCB0YWtlSWRlbnRpZmllckZyb21SZXNvdXJjZUxvYWRl
cigpIHsgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciA9IGlkZW50aWZp
ZXIoKTsgfQorICAgIHZvaWQgc3RvcExvYWRpbmdGb3JQb2xpY3lDaGFuZ2UoKTsKKyAgICB2b2lk
IGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZFNvb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Cisg
ICAgdm9pZCBjbGVhclJlc291cmNlKCk7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTWFpblJl
c291cmNlTG9hZGVyKERvY3VtZW50TG9hZGVyKik7CiAKQEAgLTg1LDIxICs4OSwxNCBAQAogICAg
IHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBjaGFyKiBk
YXRhLCBpbnQgZGF0YUxlbmd0aCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlKikgT1ZFUlJJREU7CiAKLSAgICB2b2lkIHdpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJl
c3BvbnNlKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpOwot
ICAgIHZvaWQgaGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkU29vbihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKTsKICAgICB2b2lkIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5vdyhNYWluUmVzb3VyY2VM
b2FkZXJUaW1lciopOwogCiAgICAgdm9pZCBzdGFydERhdGFMb2FkVGltZXIoKTsKIAogICAgIHZv
aWQgcmVjZWl2ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgUmVzb3VyY2VFcnJv
ciBpbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKCkgY29uc3Q7Ci0gICAgdm9pZCBzdG9w
TG9hZGluZ0ZvclBvbGljeUNoYW5nZSgpOwotICAgIGJvb2wgaXNQb3N0T3JSZWRpcmVjdEFmdGVy
UG9zdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogCi0gICAgc3RhdGljIHZvaWQgY2FsbENvbnRpbnVl
QWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHZvaWQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNz
UmVmUHRyPEZvcm1TdGF0ZT4sIGJvb2wgc2hvdWxkQ29udGludWUpOwotICAgIHZvaWQgY29udGlu
dWVBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBzaG91
bGRDb250aW51ZSk7Ci0KICAgICBzdGF0aWMgdm9pZCBjYWxsQ29udGludWVBZnRlckNvbnRlbnRQ
b2xpY3kodm9pZCosIFBvbGljeUFjdGlvbik7CiAgICAgdm9pZCBjb250aW51ZUFmdGVyQ29udGVu
dFBvbGljeShQb2xpY3lBY3Rpb24pOwogICAgIHZvaWQgY29udGludWVBZnRlckNvbnRlbnRQb2xp
Y3koUG9saWN5QWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0xMTIsMTQgKzEw
OSwxMiBAQAogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcigpIGNvbnN0IHsgcmV0
dXJuIG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCk7IH0KIAogICAgIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCgpIGNvbnN0OwotICAgIHZvaWQgY2xlYXJSZXNvdXJjZSgpOwogCiAgICAgYm9v
bCBkZWZlcnNMb2FkaW5nKCkgY29uc3Q7CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSYXdSZXNvdXJjZT4gbV9yZXNvdXJjZTsKIAogICAgIFJlc291cmNlUmVxdWVzdCBtX2luaXRp
YWxSZXF1ZXN0OwotICAgIFN1YnN0aXR1dGVEYXRhIG1fc3Vic3RpdHV0ZURhdGE7CiAgICAgUmVz
b3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCiAgICAgTWFpblJlc291cmNlTG9hZGVyVGltZXIg
bV9kYXRhTG9hZFRpbWVyOwo=
</data>
<flag name="commit-queue"
          id="214410"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193355</attachid>
            <date>2013-03-15 12:37:28 -0700</date>
            <delta_ts>2013-03-15 14:08:31 -0700</delta_ts>
            <desc>Try again to fix win-ews</desc>
            <filename>dl_mrl_willSendRequest_0315.txt</filename>
            <type>text/plain</type>
            <size>24737</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCShy
ZXZpc2lvbiAxNDU5MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQAogI2luY2x1ZGUgIkRvY3Vt
ZW50TG9hZFRpbWluZy5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAi
RmVhdHVyZU9ic2VydmVyLmgiCi0jaW5jbHVkZSAiRm9ybVN0YXRlLmgiCiAjaW5jbHVkZSAiRnJh
bWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xp
ZW50LmgiCkBAIC0xNTksMTM2ICsxNTgsMTkgQEAKICAgICBjYW5jZWwoZXJyb3IpOwogfQogCi12
b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6Y2FsbENvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5
KHZvaWQqIGFyZ3VtZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBhc3NSZWZQ
dHI8Rm9ybVN0YXRlPiwgYm9vbCBzaG91bGRDb250aW51ZSkKLXsKLSAgICBzdGF0aWNfY2FzdDxN
YWluUmVzb3VyY2VMb2FkZXIqPihhcmd1bWVudCktPmNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9s
aWN5KHJlcXVlc3QsIHNob3VsZENvbnRpbnVlKTsKLX0KLQotdm9pZCBNYWluUmVzb3VyY2VMb2Fk
ZXI6OmNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgYm9vbCBzaG91bGRDb250aW51ZSkKLXsKLSAgICBpZiAoIXNob3VsZENvbnRpbnVl
KQotICAgICAgICBzdG9wTG9hZGluZ0ZvclBvbGljeUNoYW5nZSgpOwotICAgIGVsc2UgaWYgKG1f
c3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKSB7Ci0gICAgICAgIC8vIEEgcmVkaXJlY3QgcmVzdWx0
ZWQgaW4gbG9hZGluZyBzdWJzdGl0dXRlIGRhdGEuCi0gICAgICAgIEFTU0VSVChkb2N1bWVudExv
YWRlcigpLT50aW1pbmcoKS0+cmVkaXJlY3RDb3VudCgpKTsKLQotICAgICAgICAvLyBXZSBuZWVk
IHRvIHJlbW92ZSBvdXIgcmVmZXJlbmNlIHRvIHRoZSBDYWNoZWRSZXNvdXJjZSBpbiBmYXZvciBv
ZiBhIFN1YnN0aXR1dGVEYXRhIGxvYWQuCi0gICAgICAgIC8vIFRoaXMgd2lsbCBwcm9iYWJseSB0
cmlnZ2VyIHRoZSBjYW5jZWxsYXRpb24gb2YgdGhlIENhY2hlZFJlc291cmNlJ3MgdW5kZXJseWlu
ZyBSZXNvdXJjZUxvYWRlciwgdGhvdWdoIHRoZXJlIGlzIGEKLSAgICAgICAgLy8gc21hbGwgY2hh
bmNlIHRoYXQgdGhlIHJlc291cmNlIGlzIGJlaW5nIGxvYWRlZCBieSBhIGRpZmZlcmVudCBGcmFt
ZSwgcHJldmVudGluZyB0aGUgUmVzb3VyY2VMb2FkZXIgZnJvbSBiZWluZyBjYW5jZWxsZWQuCi0g
ICAgICAgIC8vIElmIHRoZSBSZXNvdXJjZUxvYWRlciBpcyBpbmRlZWQgY2FuY2VsbGVkLCBpdCB3
b3VsZCBub3JtYWxseSBzZW5kIHJlc291cmNlIGxvYWQgY2FsbGJhY2tzLgotICAgICAgICAvLyBI
b3dldmVyLCBmcm9tIGFuIEFQSSBwZXJzcGVjdGl2ZSwgdGhpcyBpc24ndCBhIGNhbmNlbGxhdGlv
bi4gVGhlcmVmb3JlLCBzZXZlciBvdXIgcmVsYXRpb25zaGlwIHdpdGggdGhlIG5ldHdvcmsgbG9h
ZCB2aWEgY2xlYXJSZXNvdXJjZSgpLAotICAgICAgICAvLyBidXQgcHJldmVudCB0aGUgUmVzb3Vy
Y2VMb2FkZXIgZnJvbSBzZW5kaW5nIFJlc291cmNlTG9hZE5vdGlmaWVyIGNhbGxiYWNrcy4KLSAg
ICAgICAgUmVmUHRyPFJlc291cmNlTG9hZGVyPiByZXNvdXJjZUxvYWRlciA9IGxvYWRlcigpOwot
ICAgICAgICBBU1NFUlQocmVzb3VyY2VMb2FkZXItPnNob3VsZFNlbmRSZXNvdXJjZUxvYWRDYWxs
YmFja3MoKSk7Ci0gICAgICAgIHJlc291cmNlTG9hZGVyLT5zZXRTZW5kQ2FsbGJhY2tQb2xpY3ko
RG9Ob3RTZW5kQ2FsbGJhY2tzKTsKLSAgICAgICAgY2xlYXJSZXNvdXJjZSgpOwotICAgICAgICBy
ZXNvdXJjZUxvYWRlci0+c2V0U2VuZENhbGxiYWNrUG9saWN5KFNlbmRDYWxsYmFja3MpOwotICAg
ICAgICBoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWRTb29uKHJlcXVlc3QpOwotICAgIH0KLQotICAg
IGRlcmVmKCk7IC8vIGJhbGFuY2VzIHJlZiBpbiB3aWxsU2VuZFJlcXVlc3QKLX0KLQotYm9vbCBN
YWluUmVzb3VyY2VMb2FkZXI6OmlzUG9zdE9yUmVkaXJlY3RBZnRlclBvc3QoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJl
c3BvbnNlKQotewotICAgIGlmIChuZXdSZXF1ZXN0Lmh0dHBNZXRob2QoKSA9PSAiUE9TVCIpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaW50IHN0YXR1cyA9IHJlZGlyZWN0UmVzcG9uc2Uu
aHR0cFN0YXR1c0NvZGUoKTsKLSAgICBpZiAoKChzdGF0dXMgPj0gMzAxICYmIHN0YXR1cyA8PSAz
MDMpIHx8IHN0YXR1cyA9PSAzMDcpCi0gICAgICAgICYmIGZyYW1lTG9hZGVyKCktPmluaXRpYWxS
ZXF1ZXN0KCkuaHR0cE1ldGhvZCgpID09ICJQT1NUIikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBQYXNzUmVmUHRyPFJlc291cmNlQnVmZmVyPiBN
YWluUmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSgpCiB7Ci0gICAgQVNTRVJUKCFtX3Jlc291
cmNlIHx8ICFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSk7CiAgICAgaWYgKG1fcmVzb3VyY2Up
CiAgICAgICAgIHJldHVybiBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpOwotICAgIGlmICht
X3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIFJlc291cmNlQnVmZmVy
OjpjcmVhdGUobV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPmRhdGEoKSwgbV9zdWJzdGl0dXRl
RGF0YS5jb250ZW50KCktPnNpemUoKSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKIHZvaWQgTWFpblJl
c291cmNlTG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVj
dFJlc3BvbnNlKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09IG1f
cmVzb3VyY2UpOwotICAgIHdpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNl
KTsKKyAgICBtX2RvY3VtZW50TG9hZGVyLT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJl
Y3RSZXNwb25zZSk7CiB9CiAKLXZvaWQgTWFpblJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZWRpcmVjdFJlc3BvbnNlKQotewotICAgIC8vIE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gYXNzZXJ0
cyBoZXJlIGFzIHRoZXJlIGFyZSBmb3IgdGhlIG90aGVyIGNhbGxiYWNrcy4gVGhpcyBpcyBkdWUg
dG8gdGhlCi0gICAgLy8gZmFjdCB0aGF0IHRoaXMgImNhbGxiYWNrIiBpcyBzZW50IHdoZW4gc3Rh
cnRpbmcgZXZlcnkgbG9hZCwgYW5kIHRoZSBzdGF0ZSBvZiBjYWxsYmFjawotICAgIC8vIGRlZmVy
cmFscyBwbGF5cyBsZXNzIG9mIGEgcGFydCBpbiB0aGlzIGZ1bmN0aW9uIGluIHByZXZlbnRpbmcg
dGhlIGJhZCBiZWhhdmlvciBkZWZlcnJpbmcgCi0gICAgLy8gY2FsbGJhY2tzIGlzIG1lYW50IHRv
IHByZXZlbnQuCi0gICAgQVNTRVJUKCFuZXdSZXF1ZXN0LmlzTnVsbCgpKTsKLQotICAgIC8vIFRo
ZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRvIGFueXRoaW5nIGluY2x1ZGluZyBwb3NzaWJs
eSByZW1vdmluZyB0aGUgbGFzdAotICAgIC8vIHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdDsgb25l
IGV4YW1wbGUgb2YgdGhpcyBpcyAzMjY2MjE2LgotICAgIFJlZlB0cjxNYWluUmVzb3VyY2VMb2Fk
ZXI+IHByb3RlY3QodGhpcyk7Ci0KLSAgICBpZiAoIWZyYW1lTG9hZGVyKCktPmNoZWNrSWZGb3Jt
QWN0aW9uQWxsb3dlZEJ5Q1NQKG5ld1JlcXVlc3QudXJsKCkpKSB7Ci0gICAgICAgIGNhbmNlbCgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKGRvY3VtZW50TG9hZGVyKCkt
PnRpbWluZygpLT5mZXRjaFN0YXJ0KCkpOwotICAgIGlmICghcmVkaXJlY3RSZXNwb25zZS5pc051
bGwoKSkgewotICAgICAgICAvLyBJZiB0aGUgcmVkaXJlY3RpbmcgdXJsIGlzIG5vdCBhbGxvd2Vk
IHRvIGRpc3BsYXkgY29udGVudCBmcm9tIHRoZSB0YXJnZXQgb3JpZ2luLAotICAgICAgICAvLyB0
aGVuIGJsb2NrIHRoZSByZWRpcmVjdC4KLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBy
ZWRpcmVjdGluZ09yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVkaXJlY3RSZXNwb25z
ZS51cmwoKSk7Ci0gICAgICAgIGlmICghcmVkaXJlY3RpbmdPcmlnaW4tPmNhbkRpc3BsYXkobmV3
UmVxdWVzdC51cmwoKSkpIHsKLSAgICAgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExv
YWRGYWlsZWQobV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKSwgbmV3UmVxdWVzdC51cmwoKS5lbGlk
ZWRTdHJpbmcoKSk7Ci0gICAgICAgICAgICBjYW5jZWwoKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICBkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+YWRkUmVkaXJl
Y3QocmVkaXJlY3RSZXNwb25zZS51cmwoKSwgbmV3UmVxdWVzdC51cmwoKSk7Ci0gICAgfQotCi0g
ICAgLy8gVXBkYXRlIGNvb2tpZSBwb2xpY3kgYmFzZSBVUkwgYXMgVVJMIGNoYW5nZXMsIGV4Y2Vw
dCBmb3Igc3ViZnJhbWVzLCB3aGljaCB1c2UgdGhlCi0gICAgLy8gVVJMIG9mIHRoZSBtYWluIGZy
YW1lIHdoaWNoIGRvZXNuJ3QgY2hhbmdlIHdoZW4gd2UgcmVkaXJlY3QuCi0gICAgaWYgKGZyYW1l
TG9hZGVyKCktPmlzTG9hZGluZ01haW5GcmFtZSgpKQotICAgICAgICBuZXdSZXF1ZXN0LnNldEZp
cnN0UGFydHlGb3JDb29raWVzKG5ld1JlcXVlc3QudXJsKCkpOwotCi0gICAgLy8gSWYgd2UncmUg
ZmllbGRpbmcgYSByZWRpcmVjdCBpbiByZXNwb25zZSB0byBhIFBPU1QsIGZvcmNlIGEgbG9hZCBm
cm9tIG9yaWdpbiwgc2luY2UKLSAgICAvLyB0aGlzIGlzIGEgY29tbW9uIHNpdGUgdGVjaG5pcXVl
IHRvIHJldHVybiB0byBhIHBhZ2Ugdmlld2luZyBzb21lIGRhdGEgdGhhdCB0aGUgUE9TVAotICAg
IC8vIGp1c3QgbW9kaWZpZWQuCi0gICAgLy8gQWxzbywgUE9TVCByZXF1ZXN0cyBhbHdheXMgbG9h
ZCBmcm9tIG9yaWdpbiwgYnV0IHRoaXMgZG9lcyBub3QgYWZmZWN0IHN1YnJlc291cmNlcy4KLSAg
ICBpZiAobmV3UmVxdWVzdC5jYWNoZVBvbGljeSgpID09IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kg
JiYgaXNQb3N0T3JSZWRpcmVjdEFmdGVyUG9zdChuZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNl
KSkKLSAgICAgICAgbmV3UmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZWxvYWRJZ25vcmluZ0NhY2hl
RGF0YSk7Ci0KLSAgICBGcmFtZSogdG9wID0gbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+dHJl
ZSgpLT50b3AoKTsKLSAgICBpZiAodG9wICE9IG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkpIHsK
LSAgICAgICAgaWYgKCFmcmFtZUxvYWRlcigpLT5taXhlZENvbnRlbnRDaGVja2VyKCktPmNhbkRp
c3BsYXlJbnNlY3VyZUNvbnRlbnQodG9wLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBu
ZXdSZXF1ZXN0LnVybCgpKSkgewotICAgICAgICAgICAgY2FuY2VsKCk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBEb24ndCBzZXQgdGhpcyBvbiB0aGUg
Zmlyc3QgcmVxdWVzdC4gSXQgaXMgc2V0IHdoZW4gdGhlIG1haW4gbG9hZCB3YXMgc3RhcnRlZC4K
LSAgICBtX2RvY3VtZW50TG9hZGVyLT5zZXRSZXF1ZXN0KG5ld1JlcXVlc3QpOwotCi0gICAgaWYg
KCFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKSB7Ci0gICAgICAgIC8vIFdlIGNoZWNrZWQgYXBw
bGljYXRpb24gY2FjaGUgZm9yIGluaXRpYWwgVVJMLCBub3cgd2UgbmVlZCB0byBjaGVjayBpdCBm
b3IgcmVkaXJlY3RlZCBvbmUuCi0gICAgICAgIEFTU0VSVCghbV9zdWJzdGl0dXRlRGF0YS5pc1Zh
bGlkKCkpOwotICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgp
LT5tYXliZUxvYWRNYWluUmVzb3VyY2VGb3JSZWRpcmVjdChuZXdSZXF1ZXN0LCBtX3N1YnN0aXR1
dGVEYXRhKTsKLSAgICAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQotICAgICAg
ICAgICAgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciA9IGlkZW50aWZp
ZXIoKTsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogSWRlYWxseSB3ZSdkIHN0b3AgdGhlIEkvTyB1
bnRpbCB3ZSBoZWFyIGJhY2sgZnJvbSB0aGUgbmF2aWdhdGlvbiBwb2xpY3kgZGVsZWdhdGUKLSAg
ICAvLyBsaXN0ZW5lci4gQnV0IHRoZXJlJ3Mgbm8gd2F5IHRvIGRvIHRoYXQgaW4gcHJhY3RpY2Uu
IFNvIGluc3RlYWQgd2UgY2FuY2VsIGxhdGVyIGlmIHRoZQotICAgIC8vIGxpc3RlbmVyIHRlbGxz
IHVzIHRvLiBJbiBwcmFjdGljZSB0aGF0IG1lYW5zIHRoZSBuYXZpZ2F0aW9uIHBvbGljeSBuZWVk
cyB0byBiZSBkZWNpZGVkCi0gICAgLy8gc3luY2hyb25vdXNseSBmb3IgdGhlc2UgcmVkaXJlY3Qg
Y2FzZXMuCi0gICAgaWYgKCFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKSB7Ci0gICAgICAgIHJl
ZigpOyAvLyBiYWxhbmNlZCBieSBkZXJlZiBpbiBjb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGlj
eQotICAgICAgICBmcmFtZUxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCktPmNoZWNrTmF2aWdhdGlv
blBvbGljeShuZXdSZXF1ZXN0LCBjYWxsQ29udGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3ksIHRo
aXMpOwotICAgIH0KLX0KLQogdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJD
b250ZW50UG9saWN5KFBvbGljeUFjdGlvbiBjb250ZW50UG9saWN5LCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByKQogewogICAgIEtVUkwgdXJsID0gcmVxdWVzdCgpLnVybCgpOwpAQCAtMzAyLDcg
KzE4NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGVxdWFsSWdu
b3JpbmdDYXNlKCJtZXNzYWdlL3JmYzgyMiIsIG1pbWVUeXBlKQogI2VuZGlmCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGVxdWFsSWdub3JpbmdDYXNlKCJtdWx0aXBhcnQv
cmVsYXRlZCIsIG1pbWVUeXBlKSkKLSAgICAgICAgICAgICYmICFtX3N1YnN0aXR1dGVEYXRhLmlz
VmFsaWQoKSAmJiAhU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbCh1
cmwucHJvdG9jb2woKSk7CisgICAgICAgICAgICAmJiAhbV9kb2N1bWVudExvYWRlci0+c3Vic3Rp
dHV0ZURhdGEoKS5pc1ZhbGlkKCkgJiYgIVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNj
aGVtZUFzTG9jYWwodXJsLnByb3RvY29sKCkpOwogICAgICAgICBpZiAoIWZyYW1lTG9hZGVyKCkt
PmNsaWVudCgpLT5jYW5TaG93TUlNRVR5cGUobWltZVR5cGUpIHx8IGlzUmVtb3RlV2ViQXJjaGl2
ZSkgewogICAgICAgICAgICAgZnJhbWVMb2FkZXIoKS0+cG9saWN5Q2hlY2tlcigpLT5jYW5ub3RT
aG93TUlNRVR5cGUocik7CiAgICAgICAgICAgICAvLyBDaGVjayByZWFjaGVkVGVybWluYWxTdGF0
ZSBzaW5jZSB0aGUgbG9hZCBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gY2FuY2VsZWQgaW5zaWRlIG9m
IF9oYW5kbGVVbmltcGxlbWVudGFibGVQb2xpY3lXaXRoRXJyb3JDb2RlOjouCkBAIC0zNTcsOSAr
MjM5LDkgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghbV9kb2N1bWVudExvYWRlci0+
aXNTdG9wcGluZygpICYmIG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGlm
IChtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+c2l6ZSgpKQotICAgICAgICAgICAgZGF0YVJl
Y2VpdmVkKDAsIG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5kYXRhKCksIG1fc3Vic3RpdHV0
ZURhdGEuY29udGVudCgpLT5zaXplKCkpOworICAgIGlmICghbV9kb2N1bWVudExvYWRlci0+aXNT
dG9wcGluZygpICYmIG1fZG9jdW1lbnRMb2FkZXItPnN1YnN0aXR1dGVEYXRhKCkuaXNWYWxpZCgp
KSB7CisgICAgICAgIGlmIChtX2RvY3VtZW50TG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpLmNvbnRl
bnQoKS0+c2l6ZSgpKQorICAgICAgICAgICAgZGF0YVJlY2VpdmVkKDAsIG1fZG9jdW1lbnRMb2Fk
ZXItPnN1YnN0aXR1dGVEYXRhKCkuY29udGVudCgpLT5kYXRhKCksIG1fZG9jdW1lbnRMb2FkZXIt
PnN1YnN0aXR1dGVEYXRhKCkuY29udGVudCgpLT5zaXplKCkpOwogICAgICAgICBpZiAobV9kb2N1
bWVudExvYWRlci0+aXNMb2FkaW5nTWFpblJlc291cmNlKCkpCiAgICAgICAgICAgICBkaWRGaW5p
c2hMb2FkaW5nKDApOwogICAgIH0KQEAgLTUxMSw3ICszOTMsNiBAQAogICAgIE1lbW9yeUNsYXNz
SW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6TG9h
ZGVyKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3Jlc291cmNlLCAicmVzb3VyY2UiKTsKICAgICBp
bmZvLmFkZE1lbWJlcihtX2luaXRpYWxSZXF1ZXN0LCAiaW5pdGlhbFJlcXVlc3QiKTsKLSAgICBp
bmZvLmFkZE1lbWJlcihtX3N1YnN0aXR1dGVEYXRhLCAic3Vic3RpdHV0ZURhdGEiKTsKICAgICBp
bmZvLmFkZE1lbWJlcihtX2RhdGFMb2FkVGltZXIsICJkYXRhTG9hZFRpbWVyIik7CiAgICAgaW5m
by5hZGRNZW1iZXIobV9kb2N1bWVudExvYWRlciwgImRvY3VtZW50TG9hZGVyIik7CiB9CkBAIC01
MjAsNyArNDAxLDcgQEAKIHsKICAgICBSZWZQdHI8TWFpblJlc291cmNlTG9hZGVyPiBwcm90ZWN0
KHRoaXMpOwogCi0gICAgS1VSTCB1cmwgPSBtX3N1YnN0aXR1dGVEYXRhLnJlc3BvbnNlVVJMKCk7
CisgICAgS1VSTCB1cmwgPSBtX2RvY3VtZW50TG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpLnJlc3Bv
bnNlVVJMKCk7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHVybCA9IG1faW5pdGlh
bFJlcXVlc3QudXJsKCk7CiAKQEAgLTUyOCw3ICs0MDksNyBAQAogICAgIC8vIGxvYWRlciB3aWxs
IG5vdCB0aGluayB0aGVyZSdzIHN0aWxsIGEgZGVmZXJyZWQgbG9hZCBsZWZ0IHRvIGRvLgogICAg
IG1faW5pdGlhbFJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKICAgICAgICAgCi0gICAgUmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZSh1cmwsIG1fc3Vic3RpdHV0ZURhdGEubWltZVR5cGUoKSwg
bV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPnNpemUoKSwgbV9zdWJzdGl0dXRlRGF0YS50ZXh0
RW5jb2RpbmcoKSwgIiIpOworICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UodXJsLCBtX2Rv
Y3VtZW50TG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpLm1pbWVUeXBlKCksIG1fZG9jdW1lbnRMb2Fk
ZXItPnN1YnN0aXR1dGVEYXRhKCkuY29udGVudCgpLT5zaXplKCksIG1fZG9jdW1lbnRMb2FkZXIt
PnN1YnN0aXR1dGVEYXRhKCkudGV4dEVuY29kaW5nKCksICIiKTsKICAgICByZXNwb25zZVJlY2Vp
dmVkKDAsIHJlc3BvbnNlKTsKIH0KIApAQCAtNTUyLDMyICs0MzMsMTIgQEAKICAgICAgICAgaGFu
ZGxlU3Vic3RpdHV0ZURhdGFMb2FkTm93KDApOwogfQogCi12b2lkIE1haW5SZXNvdXJjZUxvYWRl
cjo6bG9hZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGluaXRpYWxSZXF1ZXN0LCBjb25zdCBTdWJz
dGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCit2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6bG9h
ZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGluaXRpYWxSZXF1ZXN0KQogewotICAgIC8vIEl0IGFw
cGVhcnMgdGhhdCBpdCBpcyBwb3NzaWJsZSBmb3IgdGhpcyBsb2FkIHRvIGJlIGNhbmNlbGxlZCBh
bmQgZGVyZWZlbmNlZCBieSB0aGUgRG9jdW1lbnRMb2FkZXIKLSAgICAvLyBpbiB3aWxsU2VuZFJl
cXVlc3QoKSBpZiBsb2FkTm93KCkgaXMgY2FsbGVkLgogICAgIFJlZlB0cjxNYWluUmVzb3VyY2VM
b2FkZXI+IHByb3RlY3QodGhpcyk7Ci0KLSAgICBtX3N1YnN0aXR1dGVEYXRhID0gc3Vic3RpdHV0
ZURhdGE7Ci0KLSAgICBBU1NFUlQoZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5nKCktPm5hdmlnYXRp
b25TdGFydCgpKTsKLSAgICBBU1NFUlQoIWRvY3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5mZXRj
aFN0YXJ0KCkpOwotICAgIGRvY3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5tYXJrRmV0Y2hTdGFy
dCgpOwogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGluaXRpYWxSZXF1ZXN0KTsKIAotICAg
IC8vIFNlbmQgdGhpcyBzeW50aGV0aWMgZGVsZWdhdGUgY2FsbGJhY2sgc2luY2UgY2xpZW50cyBl
eHBlY3QgaXQsIGFuZAotICAgIC8vIHdlIG5vIGxvbmdlciBzZW5kIHRoZSBjYWxsYmFjayBmcm9t
IHdpdGhpbiBOU1VSTENvbm5lY3Rpb24gZm9yCi0gICAgLy8gaW5pdGlhbCByZXF1ZXN0cy4KLSAg
ICB3aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSgpKTsKLSAgICBBU1NF
UlQoIWRlbGV0aW9uSGFzQmVndW4oKSk7Ci0KLSAgICAvLyB3aWxsU2VuZFJlcXVlc3QoKSBtYXkg
bGVhZCB0byBvdXIgRG9jdW1lbnRMb2FkZXIgYmVpbmcgZGV0YWNoZWQgb3IgY2FuY2VsbGluZyB0
aGUgbG9hZCB2aWEgbnVsbGluZyB0aGUgUmVzb3VyY2VSZXF1ZXN0LgotICAgIGlmICghZG9jdW1l
bnRMb2FkZXIoKS0+ZnJhbWUoKSB8fCByZXF1ZXN0LmlzTnVsbCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXliZUxv
YWRNYWluUmVzb3VyY2UocmVxdWVzdCwgbV9zdWJzdGl0dXRlRGF0YSk7Ci0KLSAgICBpZiAobV9z
dWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpIHsKKyAgICBpZiAobV9kb2N1bWVudExvYWRlci0+c3Vi
c3RpdHV0ZURhdGEoKS5pc1ZhbGlkKCkpIHsKICAgICAgICAgbV9pZGVudGlmaWVyRm9yTG9hZFdp
dGhvdXRSZXNvdXJjZUxvYWRlciA9IG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnBhZ2UoKS0+
cHJvZ3Jlc3MoKS0+Y3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOwogICAgICAgICBmcmFtZUxvYWRl
cigpLT5ub3RpZmllcigpLT5hc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdChtX2lkZW50
aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCBkb2N1bWVudExvYWRlcigpLCByZXF1
ZXN0KTsKICAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+ZGlzcGF0Y2hXaWxsU2Vu
ZFJlcXVlc3QoZG9jdW1lbnRMb2FkZXIoKSwgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNv
dXJjZUxvYWRlciwgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSgpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDE0NTkyMykKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNDQsNyArNDQsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZvcm1T
dGF0ZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIAogY2xhc3MgTWFpblJlc291cmNlTG9hZGVy
IDogcHVibGljIFJlZkNvdW50ZWQ8TWFpblJlc291cmNlTG9hZGVyPiwgcHVibGljIENhY2hlZFJh
d1Jlc291cmNlQ2xpZW50IHsKQEAgLTUzLDcgKzUyLDcgQEAKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxNYWluUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShEb2N1bWVudExvYWRlciopOwogICAgIHZpcnR1
YWwgfk1haW5SZXNvdXJjZUxvYWRlcigpOwogCi0gICAgdm9pZCBsb2FkKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CisgICAgdm9pZCBsb2FkKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgY2FuY2VsKCk7CiAgICAgdm9pZCBjYW5jZWwoY29u
c3QgUmVzb3VyY2VFcnJvciYpOwogICAgIFJlc291cmNlTG9hZGVyKiBsb2FkZXIoKSBjb25zdDsK
QEAgLTc3LDYgKzc2LDExIEBACiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qKSBjb25zdDsKIAorICAgIHZvaWQgdGFrZUlkZW50aWZpZXJGcm9tUmVzb3VyY2VM
b2FkZXIoKSB7IG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIgPSBpZGVu
dGlmaWVyKCk7IH0KKyAgICB2b2lkIHN0b3BMb2FkaW5nRm9yUG9saWN5Q2hhbmdlKCk7CisgICAg
dm9pZCBoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWRTb29uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
OworICAgIHZvaWQgY2xlYXJSZXNvdXJjZSgpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1h
aW5SZXNvdXJjZUxvYWRlcihEb2N1bWVudExvYWRlciopOwogCkBAIC04NSwyMSArODksMTQgQEAK
ICAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgY2hh
ciogZGF0YSwgaW50IGRhdGFMZW5ndGgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopIE9WRVJSSURFOwogCi0gICAgdm9pZCB3aWxsU2Vu
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1l
KTsKLSAgICB2b2lkIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZFNvb24oY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik7CiAgICAgdm9pZCBoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3coTWFpblJlc291
cmNlTG9hZGVyVGltZXIqKTsKIAogICAgIHZvaWQgc3RhcnREYXRhTG9hZFRpbWVyKCk7CiAKICAg
ICB2b2lkIHJlY2VpdmVkRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIFJlc291cmNl
RXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcigpIGNvbnN0OwotICAgIHZvaWQg
c3RvcExvYWRpbmdGb3JQb2xpY3lDaGFuZ2UoKTsKLSAgICBib29sIGlzUG9zdE9yUmVkaXJlY3RB
ZnRlclBvc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKIAotICAgIHN0YXRpYyB2b2lkIGNhbGxDb250
aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeSh2b2lkKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
UGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBib29sIHNob3VsZENvbnRpbnVlKTsKLSAgICB2b2lkIGNv
bnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGJvb2wg
c2hvdWxkQ29udGludWUpOwotCiAgICAgc3RhdGljIHZvaWQgY2FsbENvbnRpbnVlQWZ0ZXJDb250
ZW50UG9saWN5KHZvaWQqLCBQb2xpY3lBY3Rpb24pOwogICAgIHZvaWQgY29udGludWVBZnRlckNv
bnRlbnRQb2xpY3koUG9saWN5QWN0aW9uKTsKICAgICB2b2lkIGNvbnRpbnVlQWZ0ZXJDb250ZW50
UG9saWN5KFBvbGljeUFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpAQCAtMTEyLDE0
ICsxMDksMTIgQEAKICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIoKSBjb25zdCB7
IHJldHVybiBtX2RvY3VtZW50TG9hZGVyLmdldCgpOyB9CiAKICAgICBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QoKSBjb25zdDsKLSAgICB2b2lkIGNsZWFyUmVzb3VyY2UoKTsKIAogICAg
IGJvb2wgZGVmZXJzTG9hZGluZygpIGNvbnN0OwogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9p
bml0aWFsUmVxdWVzdDsKLSAgICBTdWJzdGl0dXRlRGF0YSBtX3N1YnN0aXR1dGVEYXRhOwogICAg
IFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAogICAgIE1haW5SZXNvdXJjZUxvYWRlclRp
bWVyIG1fZGF0YUxvYWRUaW1lcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oCShyZXZpc2lvbiAxNDU5MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsNyBAQAogICAgIGNsYXNzIEFy
Y2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiAgICAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7
CiAgICAgY2xhc3MgQ29udGVudEZpbHRlcjsKKyAgICBjbGFzcyBGb3JtU3RhdGU7CiAgICAgY2xh
c3MgRnJhbWU7CiAgICAgY2xhc3MgRnJhbWVMb2FkZXI7CiAgICAgY2xhc3MgTWFpblJlc291cmNl
TG9hZGVyOwpAQCAtMjU3LDYgKzI1OCw5IEBACiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAgICAgICAgIHZvaWQgY2hlY2tM
b2FkQ29tcGxldGUoKTsKIAorICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcHJpdmF0
ZSBvbmNlIERvY3VtZW50TG9hZGVyIGFuZCBNYWluUmVzb3VyY2VMb2FkZXIgYXJlIG1lcmdlZC4K
KyAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBEb2N1bWVudExvYWRl
cihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpOwogCkBAIC0y
NzYsNyArMjgwLDExIEBACiAgICAgICAgIGJvb2wgbWF5YmVMb2FkRW1wdHkoKTsKIAogICAgICAg
ICBib29sIGlzTXVsdGlwYXJ0UmVwbGFjaW5nTG9hZCgpIGNvbnN0OworICAgICAgICBib29sIGlz
UG9zdE9yUmVkaXJlY3RBZnRlclBvc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOwogCisgICAgICAgIHN0YXRpYyB2b2lkIGNhbGxDb250aW51ZUFmdGVy
TmF2aWdhdGlvblBvbGljeSh2b2lkKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0
cjxGb3JtU3RhdGU+LCBib29sIHNob3VsZENvbnRpbnVlKTsKKyAgICAgICAgdm9pZCBjb250aW51
ZUFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBib29sIHNob3Vs
ZENvbnRpbnVlKTsKKwogICAgICAgICB2b2lkIGRlbGl2ZXJTdWJzdGl0dXRlUmVzb3VyY2VzQWZ0
ZXJEZWxheSgpOwogICAgICAgICB2b2lkIHN1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXJG
aXJlZChUaW1lcjxEb2N1bWVudExvYWRlcj4qKTsKICAgICAgICAgICAgICAgICAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNpb24gMTQ1OTIzKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzksMTAgKzM5LDEyIEBACiAjaW5jbHVkZSAiRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNs
dWRlICJEb2N1bWVudFdyaXRlci5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRm9y
bVN0YXRlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgog
I2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCisj
aW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CkBAIC0xMzksNiArMTQxLDggQEAKIHsKICAgICBpZiAobV9tYWluUmVzb3VyY2VEYXRhKQogICAg
ICAgICByZXR1cm4gbV9tYWluUmVzb3VyY2VEYXRhOworICAgIGlmIChtX3N1YnN0aXR1dGVEYXRh
LmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIFJlc291cmNlQnVmZmVyOjpjcmVhdGUobV9zdWJz
dGl0dXRlRGF0YS5jb250ZW50KCktPmRhdGEoKSwgbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCkt
PnNpemUoKSk7CiAgICAgaWYgKG1fbWFpblJlc291cmNlTG9hZGVyKQogICAgICAgICByZXR1cm4g
bV9tYWluUmVzb3VyY2VMb2FkZXItPnJlc291cmNlRGF0YSgpOwogICAgIHJldHVybiAwOwpAQCAt
MzY4LDYgKzM3MiwxMTEgQEAKICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0LT5maW5pc2hlZExv
YWRpbmdNYWluUmVzb3VyY2UoKTsKIH0KIAorYm9vbCBEb2N1bWVudExvYWRlcjo6aXNQb3N0T3JS
ZWRpcmVjdEFmdGVyUG9zdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit7CisgICAgaWYgKG5ld1JlcXVl
c3QuaHR0cE1ldGhvZCgpID09ICJQT1NUIikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBp
bnQgc3RhdHVzID0gcmVkaXJlY3RSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpOworICAgIGlmICgo
KHN0YXR1cyA+PSAzMDEgJiYgc3RhdHVzIDw9IDMwMykgfHwgc3RhdHVzID09IDMwNykKKyAgICAg
ICAgJiYgbV9vcmlnaW5hbFJlcXVlc3QuaHR0cE1ldGhvZCgpID09ICJQT1NUIikKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit7CisgICAgLy8gTm90ZSB0aGF0IHRo
ZXJlIGFyZSBubyBhc3NlcnRzIGhlcmUgYXMgdGhlcmUgYXJlIGZvciB0aGUgb3RoZXIgY2FsbGJh
Y2tzLiBUaGlzIGlzIGR1ZSB0byB0aGUKKyAgICAvLyBmYWN0IHRoYXQgdGhpcyAiY2FsbGJhY2si
IGlzIHNlbnQgd2hlbiBzdGFydGluZyBldmVyeSBsb2FkLCBhbmQgdGhlIHN0YXRlIG9mIGNhbGxi
YWNrCisgICAgLy8gZGVmZXJyYWxzIHBsYXlzIGxlc3Mgb2YgYSBwYXJ0IGluIHRoaXMgZnVuY3Rp
b24gaW4gcHJldmVudGluZyB0aGUgYmFkIGJlaGF2aW9yIGRlZmVycmluZyAKKyAgICAvLyBjYWxs
YmFja3MgaXMgbWVhbnQgdG8gcHJldmVudC4KKyAgICBBU1NFUlQoIW5ld1JlcXVlc3QuaXNOdWxs
KCkpOworCisgICAgaWYgKCFmcmFtZUxvYWRlcigpLT5jaGVja0lmRm9ybUFjdGlvbkFsbG93ZWRC
eUNTUChuZXdSZXF1ZXN0LnVybCgpKSkgeworICAgICAgICBjYW5jZWxNYWluUmVzb3VyY2VMb2Fk
KGZyYW1lTG9hZGVyKCktPmNhbmNlbGxlZEVycm9yKG5ld1JlcXVlc3QpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIEFTU0VSVCh0aW1pbmcoKS0+ZmV0Y2hTdGFydCgpKTsKKyAgICBp
ZiAoIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpIHsKKyAgICAgICAgLy8gSWYgdGhlIHJlZGly
ZWN0aW5nIHVybCBpcyBub3QgYWxsb3dlZCB0byBkaXNwbGF5IGNvbnRlbnQgZnJvbSB0aGUgdGFy
Z2V0IG9yaWdpbiwKKyAgICAgICAgLy8gdGhlbiBibG9jayB0aGUgcmVkaXJlY3QuCisgICAgICAg
IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVkaXJlY3RpbmdPcmlnaW4gPSBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKHJlZGlyZWN0UmVzcG9uc2UudXJsKCkpOworICAgICAgICBpZiAoIXJlZGlyZWN0
aW5nT3JpZ2luLT5jYW5EaXNwbGF5KG5ld1JlcXVlc3QudXJsKCkpKSB7CisgICAgICAgICAgICBG
cmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKG1fZnJhbWUsIG5ld1JlcXVlc3QudXJs
KCkuc3RyaW5nKCkpOworICAgICAgICAgICAgY2FuY2VsTWFpblJlc291cmNlTG9hZChmcmFtZUxv
YWRlcigpLT5jYW5jZWxsZWRFcnJvcihuZXdSZXF1ZXN0KSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgdGltaW5nKCktPmFkZFJlZGlyZWN0KHJlZGlyZWN0UmVzcG9u
c2UudXJsKCksIG5ld1JlcXVlc3QudXJsKCkpOworICAgIH0KKworICAgIC8vIFVwZGF0ZSBjb29r
aWUgcG9saWN5IGJhc2UgVVJMIGFzIFVSTCBjaGFuZ2VzLCBleGNlcHQgZm9yIHN1YmZyYW1lcywg
d2hpY2ggdXNlIHRoZQorICAgIC8vIFVSTCBvZiB0aGUgbWFpbiBmcmFtZSB3aGljaCBkb2Vzbid0
IGNoYW5nZSB3aGVuIHdlIHJlZGlyZWN0LgorICAgIGlmIChmcmFtZUxvYWRlcigpLT5pc0xvYWRp
bmdNYWluRnJhbWUoKSkKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2ll
cyhuZXdSZXF1ZXN0LnVybCgpKTsKKworICAgIC8vIElmIHdlJ3JlIGZpZWxkaW5nIGEgcmVkaXJl
Y3QgaW4gcmVzcG9uc2UgdG8gYSBQT1NULCBmb3JjZSBhIGxvYWQgZnJvbSBvcmlnaW4sIHNpbmNl
CisgICAgLy8gdGhpcyBpcyBhIGNvbW1vbiBzaXRlIHRlY2huaXF1ZSB0byByZXR1cm4gdG8gYSBw
YWdlIHZpZXdpbmcgc29tZSBkYXRhIHRoYXQgdGhlIFBPU1QKKyAgICAvLyBqdXN0IG1vZGlmaWVk
LgorICAgIC8vIEFsc28sIFBPU1QgcmVxdWVzdHMgYWx3YXlzIGxvYWQgZnJvbSBvcmlnaW4sIGJ1
dCB0aGlzIGRvZXMgbm90IGFmZmVjdCBzdWJyZXNvdXJjZXMuCisgICAgaWYgKG5ld1JlcXVlc3Qu
Y2FjaGVQb2xpY3koKSA9PSBVc2VQcm90b2NvbENhY2hlUG9saWN5ICYmIGlzUG9zdE9yUmVkaXJl
Y3RBZnRlclBvc3QobmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpCisgICAgICAgIG5ld1Jl
cXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVsb2FkSWdub3JpbmdDYWNoZURhdGEpOworCisgICAgRnJh
bWUqIHRvcCA9IG1fZnJhbWUtPnRyZWUoKS0+dG9wKCk7CisgICAgaWYgKHRvcCAhPSBtX2ZyYW1l
KSB7CisgICAgICAgIGlmICghZnJhbWVMb2FkZXIoKS0+bWl4ZWRDb250ZW50Q2hlY2tlcigpLT5j
YW5EaXNwbGF5SW5zZWN1cmVDb250ZW50KHRvcC0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KSwgbmV3UmVxdWVzdC51cmwoKSkpIHsKKyAgICAgICAgICAgIGNhbmNlbE1haW5SZXNvdXJjZUxv
YWQoZnJhbWVMb2FkZXIoKS0+Y2FuY2VsbGVkRXJyb3IobmV3UmVxdWVzdCkpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgc2V0UmVxdWVzdChuZXdSZXF1ZXN0
KTsKKworICAgIGlmICghcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSkgeworICAgICAgICAvLyBX
ZSBjaGVja2VkIGFwcGxpY2F0aW9uIGNhY2hlIGZvciBpbml0aWFsIFVSTCwgbm93IHdlIG5lZWQg
dG8gY2hlY2sgaXQgZm9yIHJlZGlyZWN0ZWQgb25lLgorICAgICAgICBBU1NFUlQoIW1fc3Vic3Rp
dHV0ZURhdGEuaXNWYWxpZCgpKTsKKyAgICAgICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdC0+bWF5
YmVMb2FkTWFpblJlc291cmNlRm9yUmVkaXJlY3QobmV3UmVxdWVzdCwgbV9zdWJzdGl0dXRlRGF0
YSk7CisgICAgICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKKyAgICAgICAgICAg
IG1fbWFpblJlc291cmNlTG9hZGVyLT50YWtlSWRlbnRpZmllckZyb21SZXNvdXJjZUxvYWRlcigp
OworICAgIH0KKworICAgIC8vIEZJWE1FOiBJZGVhbGx5IHdlJ2Qgc3RvcCB0aGUgSS9PIHVudGls
IHdlIGhlYXIgYmFjayBmcm9tIHRoZSBuYXZpZ2F0aW9uIHBvbGljeSBkZWxlZ2F0ZQorICAgIC8v
IGxpc3RlbmVyLiBCdXQgdGhlcmUncyBubyB3YXkgdG8gZG8gdGhhdCBpbiBwcmFjdGljZS4gU28g
aW5zdGVhZCB3ZSBjYW5jZWwgbGF0ZXIgaWYgdGhlCisgICAgLy8gbGlzdGVuZXIgdGVsbHMgdXMg
dG8uIEluIHByYWN0aWNlIHRoYXQgbWVhbnMgdGhlIG5hdmlnYXRpb24gcG9saWN5IG5lZWRzIHRv
IGJlIGRlY2lkZWQKKyAgICAvLyBzeW5jaHJvbm91c2x5IGZvciB0aGVzZSByZWRpcmVjdCBjYXNl
cy4KKyAgICBpZiAoIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpCisgICAgICAgIGZyYW1lTG9h
ZGVyKCktPnBvbGljeUNoZWNrZXIoKS0+Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KG5ld1JlcXVlc3Qs
IGNhbGxDb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeSwgdGhpcyk7Cit9CisKK3ZvaWQgRG9j
dW1lbnRMb2FkZXI6OmNhbGxDb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeSh2b2lkKiBhcmd1
bWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0
ZT4sIGJvb2wgc2hvdWxkQ29udGludWUpCit7CisgICAgc3RhdGljX2Nhc3Q8RG9jdW1lbnRMb2Fk
ZXIqPihhcmd1bWVudCktPmNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHJlcXVlc3QsIHNo
b3VsZENvbnRpbnVlKTsKK30KKwordm9pZCBEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlck5h
dmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIHNob3Vs
ZENvbnRpbnVlKQoreworICAgIGlmICghc2hvdWxkQ29udGludWUpCisgICAgICAgIG1fbWFpblJl
c291cmNlTG9hZGVyLT5zdG9wTG9hZGluZ0ZvclBvbGljeUNoYW5nZSgpOworICAgIGVsc2UgaWYg
KG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKSB7CisgICAgICAgIC8vIEEgcmVkaXJlY3QgcmVz
dWx0ZWQgaW4gbG9hZGluZyBzdWJzdGl0dXRlIGRhdGEuCisgICAgICAgIEFTU0VSVCh0aW1pbmco
KS0+cmVkaXJlY3RDb3VudCgpKTsKKworICAgICAgICAvLyBXZSBuZWVkIHRvIHJlbW92ZSBvdXIg
cmVmZXJlbmNlIHRvIHRoZSBDYWNoZWRSZXNvdXJjZSBpbiBmYXZvciBvZiBhIFN1YnN0aXR1dGVE
YXRhIGxvYWQuCisgICAgICAgIC8vIFRoaXMgd2lsbCBwcm9iYWJseSB0cmlnZ2VyIHRoZSBjYW5j
ZWxsYXRpb24gb2YgdGhlIENhY2hlZFJlc291cmNlJ3MgdW5kZXJseWluZyBSZXNvdXJjZUxvYWRl
ciwgdGhvdWdoIHRoZXJlIGlzIGEKKyAgICAgICAgLy8gc21hbGwgY2hhbmNlIHRoYXQgdGhlIHJl
c291cmNlIGlzIGJlaW5nIGxvYWRlZCBieSBhIGRpZmZlcmVudCBGcmFtZSwgcHJldmVudGluZyB0
aGUgUmVzb3VyY2VMb2FkZXIgZnJvbSBiZWluZyBjYW5jZWxsZWQuCisgICAgICAgIC8vIElmIHRo
ZSBSZXNvdXJjZUxvYWRlciBpcyBpbmRlZWQgY2FuY2VsbGVkLCBpdCB3b3VsZCBub3JtYWxseSBz
ZW5kIHJlc291cmNlIGxvYWQgY2FsbGJhY2tzLgorICAgICAgICAvLyBIb3dldmVyLCBmcm9tIGFu
IEFQSSBwZXJzcGVjdGl2ZSwgdGhpcyBpc24ndCBhIGNhbmNlbGxhdGlvbi4gVGhlcmVmb3JlLCBz
ZXZlciBvdXIgcmVsYXRpb25zaGlwIHdpdGggdGhlIG5ldHdvcmsgbG9hZCwKKyAgICAgICAgLy8g
YnV0IHByZXZlbnQgdGhlIFJlc291cmNlTG9hZGVyIGZyb20gc2VuZGluZyBSZXNvdXJjZUxvYWRO
b3RpZmllciBjYWxsYmFja3MuCisgICAgICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gcmVzb3Vy
Y2VMb2FkZXIgPSBtX21haW5SZXNvdXJjZUxvYWRlci0+bG9hZGVyKCk7CisgICAgICAgIEFTU0VS
VChyZXNvdXJjZUxvYWRlci0+c2hvdWxkU2VuZFJlc291cmNlTG9hZENhbGxiYWNrcygpKTsKKyAg
ICAgICAgcmVzb3VyY2VMb2FkZXItPnNldFNlbmRDYWxsYmFja1BvbGljeShEb05vdFNlbmRDYWxs
YmFja3MpOworICAgICAgICBtX21haW5SZXNvdXJjZUxvYWRlci0+Y2xlYXJSZXNvdXJjZSgpOwor
ICAgICAgICByZXNvdXJjZUxvYWRlci0+c2V0U2VuZENhbGxiYWNrUG9saWN5KFNlbmRDYWxsYmFj
a3MpOworICAgICAgICBtX21haW5SZXNvdXJjZUxvYWRlci0+aGFuZGxlU3Vic3RpdHV0ZURhdGFM
b2FkU29vbihyZXF1ZXN0KTsKKyAgICB9Cit9CisKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlc3Bv
bnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgc2V0
UmVzcG9uc2UocmVzcG9uc2UpOwpAQCAtMTAzMCw4ICsxMTM5LDIwIEBACiAgICAgLy8gTm90ZSB0
aGF0IGN1cnJlbnRseSwgc29tZSByZXF1ZXN0cyBtYXkgaGF2ZSBpbmNvcnJlY3QgZXh0cmEgZmll
bGRzIGV2ZW4gaWYgdGhpcyBmdW5jdGlvbiBoYXMgYmVlbiBjYWxsZWQsCiAgICAgLy8gYmVjYXVz
ZSB3ZSBwYXNzIGEgd3JvbmcgbG9hZFR5cGUgKHNlZSBGSVhNRSBpbiBhZGRFeHRyYUZpZWxkc1Rv
TWFpblJlc291cmNlUmVxdWVzdCgpKS4KICAgICBmcmFtZUxvYWRlcigpLT5hZGRFeHRyYUZpZWxk
c1RvTWFpblJlc291cmNlUmVxdWVzdChtX3JlcXVlc3QpOwotICAgIG1fbWFpblJlc291cmNlTG9h
ZGVyLT5sb2FkKG1fcmVxdWVzdCwgbV9zdWJzdGl0dXRlRGF0YSk7CiAKKyAgICBBU1NFUlQodGlt
aW5nKCktPm5hdmlnYXRpb25TdGFydCgpKTsKKyAgICBBU1NFUlQoIXRpbWluZygpLT5mZXRjaFN0
YXJ0KCkpOworICAgIHRpbWluZygpLT5tYXJrRmV0Y2hTdGFydCgpOworICAgIHdpbGxTZW5kUmVx
dWVzdChtX3JlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSk7CisKKyAgICAvLyB3aWxsU2VuZFJl
cXVlc3QoKSBtYXkgbGVhZCB0byBvdXIgRnJhbWUgYmVpbmcgZGV0YWNoZWQgb3IgY2FuY2VsbGlu
ZyB0aGUgbG9hZCB2aWEgbnVsbGluZyB0aGUgUmVzb3VyY2VSZXF1ZXN0LgorICAgIGlmICghbV9m
cmFtZSB8fCBtX3JlcXVlc3QuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYXBw
bGljYXRpb25DYWNoZUhvc3QtPm1heWJlTG9hZE1haW5SZXNvdXJjZShtX3JlcXVlc3QsIG1fc3Vi
c3RpdHV0ZURhdGEpOworCisgICAgbV9tYWluUmVzb3VyY2VMb2FkZXItPmxvYWQobV9yZXF1ZXN0
KTsKKwogICAgIGlmIChtX3JlcXVlc3QuaXNOdWxsKCkpIHsKICAgICAgICAgbV9tYWluUmVzb3Vy
Y2VMb2FkZXIgPSAwOwogICAgICAgICAvLyBJZiB0aGUgbG9hZCB3YXMgYWJvcnRlZCBieSBjbGVh
cmluZyBtX3JlcXVlc3QsIGl0J3MgcG9zc2libGUgdGhlIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDU5MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMSBAQAorMjAxMy0wMy0xMiAgTmF0ZSBDaGFw
aW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1lcmdlIE1haW5SZXNvdXJjZUxv
YWRlcjo6d2lsbFNlbmRSZXF1ZXN0IGludG8gRG9jdW1lbnRMb2FkZXIgCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3NTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHJlZmFjdG9y
IG9ubHkuCisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OmlzUG9zdE9yUmVkaXJlY3RBZnRlclBvc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y2FsbENvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyTmF2aWdh
dGlvblBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3RhcnRMb2Fk
aW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAg
ICAgICAgKiBsb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1haW5SZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1h
aW5SZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpN
YWluUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjpoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWRO
b3cpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjpsb2FkKToKKyAgICAg
ICAgKiBsb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNYWlu
UmVzb3VyY2VMb2FkZXI6OnRha2VJZGVudGlmaWVyRnJvbVJlc291cmNlTG9hZGVyKTogVGVtcG9y
YXJpbHkKKyAgICAgICAgICAgIGV4cG9zZWQgZm9yIG1vdmluZyBmcm9tIGEgbm9ybWFsIGxvYWQg
dG8gU3Vic3RpdHV0ZURhdGEgbG9hZCBvbiByZWRpcmVjdC4KKwogMjAxMy0wMy0xNSAgQW5kcmVh
cyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gUmVtb3ZlIGN1c3Rv
bSBXZWJBdWRpbyBtYXJrIGZ1bmN0aW9ucyB0aGF0IHdlIGNhbiBnZW5lcmF0ZSBpbnN0ZWFkLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193372</attachid>
            <date>2013-03-15 14:08:36 -0700</date>
            <delta_ts>2013-03-15 18:23:01 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-109757-20130315140431.patch</filename>
            <type>text/plain</type>
            <size>25194</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTkyMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDEzLTAzLTEyICBOYXRlIENo
YXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWVyZ2UgTWFpblJlc291cmNl
TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QgaW50byBEb2N1bWVudExvYWRlciAKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTc1NworCisgICAgICAgIFRo
aXMgaXMgb25lIG9mIHRoZSBzdGVwcyB0byBtZXJnaW5nIE1haW5SZXNvdXJjZUxvYWRlciBlbnRp
cmVseSBpbnRvCisgICAgICAgIERvY3VtZW50TG9hZGVyLCBnaXZlbiB0aGUgbGFjayBvZiBjbGVh
ciBkaXZpc2lvbiBvZiByZXNwb25zaWJpbGl0eQorICAgICAgICBiZXR3ZWVuIHRoZSB0d28uCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLCByZWZhY3RvciBvbmx5LgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2VEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjppc1Bvc3RPclJlZGlyZWN0QWZ0ZXJQ
b3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNhbGxDb250aW51ZUFmdGVyTmF2
aWdhdGlvblBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGlu
dWVBZnRlck5hdmlnYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBvbGlj
eSk6CisgICAgICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OnJlcG9ydE1lbW9yeVVz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6aGFuZGxlU3Vic3Rp
dHV0ZURhdGFMb2FkTm93KToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6
bG9hZCk6CisgICAgICAgICogbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjp0YWtlSWRlbnRpZmllckZyb21SZXNvdXJjZUxv
YWRlcik6IFRlbXBvcmFyaWx5CisgICAgICAgICAgICBleHBvc2VkIGZvciBtb3ZpbmcgZnJvbSBh
IG5vcm1hbCBsb2FkIHRvIFN1YnN0aXR1dGVEYXRhIGxvYWQgb24gcmVkaXJlY3QuCisKIDIwMTMt
MDMtMTUgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0Nd
IFJlbW92ZSBjdXN0b20gV2ViQXVkaW8gbWFyayBmdW5jdGlvbnMgdGhhdCB3ZSBjYW4gZ2VuZXJh
dGUgaW5zdGVhZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cAkocmV2aXNpb24gMTQ1OTIzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTAgKzM5LDEyIEBACiAjaW5jbHVkZSAiRG9j
dW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudFdyaXRlci5oIgogI2luY2x1ZGUgIkV2
ZW50LmgiCisjaW5jbHVkZSAiRm9ybVN0YXRlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5j
bHVkZSAiRnJhbWVUcmVlLmgiCisjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC0xMzksNiArMTQxLDggQEAgUGFzc1JlZlB0cjxSZXNv
dXJjZUJ1ZmZlcj4gRG9jdW1lbnRMb2FkZQogewogICAgIGlmIChtX21haW5SZXNvdXJjZURhdGEp
CiAgICAgICAgIHJldHVybiBtX21haW5SZXNvdXJjZURhdGE7CisgICAgaWYgKG1fc3Vic3RpdHV0
ZURhdGEuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gUmVzb3VyY2VCdWZmZXI6OmNyZWF0ZSht
X3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+ZGF0YSgpLCBtX3N1YnN0aXR1dGVEYXRhLmNvbnRl
bnQoKS0+c2l6ZSgpKTsKICAgICBpZiAobV9tYWluUmVzb3VyY2VMb2FkZXIpCiAgICAgICAgIHJl
dHVybiBtX21haW5SZXNvdXJjZUxvYWRlci0+cmVzb3VyY2VEYXRhKCk7CiAgICAgcmV0dXJuIDA7
CkBAIC0zNjgsNiArMzcyLDExMSBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRp
bmcoZG91CiAgICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdC0+ZmluaXNoZWRMb2FkaW5nTWFpblJl
c291cmNlKCk7CiB9CiAKK2Jvb2wgRG9jdW1lbnRMb2FkZXI6OmlzUG9zdE9yUmVkaXJlY3RBZnRl
clBvc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQoreworICAgIGlmIChuZXdSZXF1ZXN0Lmh0dHBNZXRo
b2QoKSA9PSAiUE9TVCIpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaW50IHN0YXR1cyA9
IHJlZGlyZWN0UmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKTsKKyAgICBpZiAoKChzdGF0dXMgPj0g
MzAxICYmIHN0YXR1cyA8PSAzMDMpIHx8IHN0YXR1cyA9PSAzMDcpCisgICAgICAgICYmIG1fb3Jp
Z2luYWxSZXF1ZXN0Lmh0dHBNZXRob2QoKSA9PSAiUE9TVCIpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2Vu
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlKQoreworICAgIC8vIE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8g
YXNzZXJ0cyBoZXJlIGFzIHRoZXJlIGFyZSBmb3IgdGhlIG90aGVyIGNhbGxiYWNrcy4gVGhpcyBp
cyBkdWUgdG8gdGhlCisgICAgLy8gZmFjdCB0aGF0IHRoaXMgImNhbGxiYWNrIiBpcyBzZW50IHdo
ZW4gc3RhcnRpbmcgZXZlcnkgbG9hZCwgYW5kIHRoZSBzdGF0ZSBvZiBjYWxsYmFjaworICAgIC8v
IGRlZmVycmFscyBwbGF5cyBsZXNzIG9mIGEgcGFydCBpbiB0aGlzIGZ1bmN0aW9uIGluIHByZXZl
bnRpbmcgdGhlIGJhZCBiZWhhdmlvciBkZWZlcnJpbmcgCisgICAgLy8gY2FsbGJhY2tzIGlzIG1l
YW50IHRvIHByZXZlbnQuCisgICAgQVNTRVJUKCFuZXdSZXF1ZXN0LmlzTnVsbCgpKTsKKworICAg
IGlmICghZnJhbWVMb2FkZXIoKS0+Y2hlY2tJZkZvcm1BY3Rpb25BbGxvd2VkQnlDU1AobmV3UmVx
dWVzdC51cmwoKSkpIHsKKyAgICAgICAgY2FuY2VsTWFpblJlc291cmNlTG9hZChmcmFtZUxvYWRl
cigpLT5jYW5jZWxsZWRFcnJvcihuZXdSZXF1ZXN0KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBBU1NFUlQodGltaW5nKCktPmZldGNoU3RhcnQoKSk7CisgICAgaWYgKCFyZWRpcmVj
dFJlc3BvbnNlLmlzTnVsbCgpKSB7CisgICAgICAgIC8vIElmIHRoZSByZWRpcmVjdGluZyB1cmwg
aXMgbm90IGFsbG93ZWQgdG8gZGlzcGxheSBjb250ZW50IGZyb20gdGhlIHRhcmdldCBvcmlnaW4s
CisgICAgICAgIC8vIHRoZW4gYmxvY2sgdGhlIHJlZGlyZWN0LgorICAgICAgICBSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IHJlZGlyZWN0aW5nT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShy
ZWRpcmVjdFJlc3BvbnNlLnVybCgpKTsKKyAgICAgICAgaWYgKCFyZWRpcmVjdGluZ09yaWdpbi0+
Y2FuRGlzcGxheShuZXdSZXF1ZXN0LnVybCgpKSkgeworICAgICAgICAgICAgRnJhbWVMb2FkZXI6
OnJlcG9ydExvY2FsTG9hZEZhaWxlZChtX2ZyYW1lLCBuZXdSZXF1ZXN0LnVybCgpLnN0cmluZygp
KTsKKyAgICAgICAgICAgIGNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZnJhbWVMb2FkZXIoKS0+Y2Fu
Y2VsbGVkRXJyb3IobmV3UmVxdWVzdCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIHRpbWluZygpLT5hZGRSZWRpcmVjdChyZWRpcmVjdFJlc3BvbnNlLnVybCgpLCBu
ZXdSZXF1ZXN0LnVybCgpKTsKKyAgICB9CisKKyAgICAvLyBVcGRhdGUgY29va2llIHBvbGljeSBi
YXNlIFVSTCBhcyBVUkwgY2hhbmdlcywgZXhjZXB0IGZvciBzdWJmcmFtZXMsIHdoaWNoIHVzZSB0
aGUKKyAgICAvLyBVUkwgb2YgdGhlIG1haW4gZnJhbWUgd2hpY2ggZG9lc24ndCBjaGFuZ2Ugd2hl
biB3ZSByZWRpcmVjdC4KKyAgICBpZiAoZnJhbWVMb2FkZXIoKS0+aXNMb2FkaW5nTWFpbkZyYW1l
KCkpCisgICAgICAgIG5ld1JlcXVlc3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMobmV3UmVxdWVz
dC51cmwoKSk7CisKKyAgICAvLyBJZiB3ZSdyZSBmaWVsZGluZyBhIHJlZGlyZWN0IGluIHJlc3Bv
bnNlIHRvIGEgUE9TVCwgZm9yY2UgYSBsb2FkIGZyb20gb3JpZ2luLCBzaW5jZQorICAgIC8vIHRo
aXMgaXMgYSBjb21tb24gc2l0ZSB0ZWNobmlxdWUgdG8gcmV0dXJuIHRvIGEgcGFnZSB2aWV3aW5n
IHNvbWUgZGF0YSB0aGF0IHRoZSBQT1NUCisgICAgLy8ganVzdCBtb2RpZmllZC4KKyAgICAvLyBB
bHNvLCBQT1NUIHJlcXVlc3RzIGFsd2F5cyBsb2FkIGZyb20gb3JpZ2luLCBidXQgdGhpcyBkb2Vz
IG5vdCBhZmZlY3Qgc3VicmVzb3VyY2VzLgorICAgIGlmIChuZXdSZXF1ZXN0LmNhY2hlUG9saWN5
KCkgPT0gVXNlUHJvdG9jb2xDYWNoZVBvbGljeSAmJiBpc1Bvc3RPclJlZGlyZWN0QWZ0ZXJQb3N0
KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKQorICAgICAgICBuZXdSZXF1ZXN0LnNldENh
Y2hlUG9saWN5KFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhKTsKKworICAgIEZyYW1lKiB0b3AgPSBt
X2ZyYW1lLT50cmVlKCktPnRvcCgpOworICAgIGlmICh0b3AgIT0gbV9mcmFtZSkgeworICAgICAg
ICBpZiAoIWZyYW1lTG9hZGVyKCktPm1peGVkQ29udGVudENoZWNrZXIoKS0+Y2FuRGlzcGxheUlu
c2VjdXJlQ29udGVudCh0b3AtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIG5ld1JlcXVl
c3QudXJsKCkpKSB7CisgICAgICAgICAgICBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGZyYW1lTG9h
ZGVyKCktPmNhbmNlbGxlZEVycm9yKG5ld1JlcXVlc3QpKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHNldFJlcXVlc3QobmV3UmVxdWVzdCk7CisKKyAgICBp
ZiAoIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpIHsKKyAgICAgICAgLy8gV2UgY2hlY2tlZCBh
cHBsaWNhdGlvbiBjYWNoZSBmb3IgaW5pdGlhbCBVUkwsIG5vdyB3ZSBuZWVkIHRvIGNoZWNrIGl0
IGZvciByZWRpcmVjdGVkIG9uZS4KKyAgICAgICAgQVNTRVJUKCFtX3N1YnN0aXR1dGVEYXRhLmlz
VmFsaWQoKSk7CisgICAgICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QtPm1heWJlTG9hZE1haW5S
ZXNvdXJjZUZvclJlZGlyZWN0KG5ld1JlcXVlc3QsIG1fc3Vic3RpdHV0ZURhdGEpOworICAgICAg
ICBpZiAobV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCisgICAgICAgICAgICBtX21haW5SZXNv
dXJjZUxvYWRlci0+dGFrZUlkZW50aWZpZXJGcm9tUmVzb3VyY2VMb2FkZXIoKTsKKyAgICB9CisK
KyAgICAvLyBGSVhNRTogSWRlYWxseSB3ZSdkIHN0b3AgdGhlIEkvTyB1bnRpbCB3ZSBoZWFyIGJh
Y2sgZnJvbSB0aGUgbmF2aWdhdGlvbiBwb2xpY3kgZGVsZWdhdGUKKyAgICAvLyBsaXN0ZW5lci4g
QnV0IHRoZXJlJ3Mgbm8gd2F5IHRvIGRvIHRoYXQgaW4gcHJhY3RpY2UuIFNvIGluc3RlYWQgd2Ug
Y2FuY2VsIGxhdGVyIGlmIHRoZQorICAgIC8vIGxpc3RlbmVyIHRlbGxzIHVzIHRvLiBJbiBwcmFj
dGljZSB0aGF0IG1lYW5zIHRoZSBuYXZpZ2F0aW9uIHBvbGljeSBuZWVkcyB0byBiZSBkZWNpZGVk
CisgICAgLy8gc3luY2hyb25vdXNseSBmb3IgdGhlc2UgcmVkaXJlY3QgY2FzZXMuCisgICAgaWYg
KCFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKQorICAgICAgICBmcmFtZUxvYWRlcigpLT5wb2xp
Y3lDaGVja2VyKCktPmNoZWNrTmF2aWdhdGlvblBvbGljeShuZXdSZXF1ZXN0LCBjYWxsQ29udGlu
dWVBZnRlck5hdmlnYXRpb25Qb2xpY3ksIHRoaXMpOworfQorCit2b2lkIERvY3VtZW50TG9hZGVy
OjpjYWxsQ29udGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3kodm9pZCogYXJndW1lbnQsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBib29sIHNo
b3VsZENvbnRpbnVlKQoreworICAgIHN0YXRpY19jYXN0PERvY3VtZW50TG9hZGVyKj4oYXJndW1l
bnQpLT5jb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeShyZXF1ZXN0LCBzaG91bGRDb250aW51
ZSk7Cit9CisKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9s
aWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBzaG91bGRDb250aW51ZSkK
K3sKKyAgICBpZiAoIXNob3VsZENvbnRpbnVlKQorICAgICAgICBtX21haW5SZXNvdXJjZUxvYWRl
ci0+c3RvcExvYWRpbmdGb3JQb2xpY3lDaGFuZ2UoKTsKKyAgICBlbHNlIGlmIChtX3N1YnN0aXR1
dGVEYXRhLmlzVmFsaWQoKSkgeworICAgICAgICAvLyBBIHJlZGlyZWN0IHJlc3VsdGVkIGluIGxv
YWRpbmcgc3Vic3RpdHV0ZSBkYXRhLgorICAgICAgICBBU1NFUlQodGltaW5nKCktPnJlZGlyZWN0
Q291bnQoKSk7CisKKyAgICAgICAgLy8gV2UgbmVlZCB0byByZW1vdmUgb3VyIHJlZmVyZW5jZSB0
byB0aGUgQ2FjaGVkUmVzb3VyY2UgaW4gZmF2b3Igb2YgYSBTdWJzdGl0dXRlRGF0YSBsb2FkLgor
ICAgICAgICAvLyBUaGlzIHdpbGwgcHJvYmFibHkgdHJpZ2dlciB0aGUgY2FuY2VsbGF0aW9uIG9m
IHRoZSBDYWNoZWRSZXNvdXJjZSdzIHVuZGVybHlpbmcgUmVzb3VyY2VMb2FkZXIsIHRob3VnaCB0
aGVyZSBpcyBhCisgICAgICAgIC8vIHNtYWxsIGNoYW5jZSB0aGF0IHRoZSByZXNvdXJjZSBpcyBi
ZWluZyBsb2FkZWQgYnkgYSBkaWZmZXJlbnQgRnJhbWUsIHByZXZlbnRpbmcgdGhlIFJlc291cmNl
TG9hZGVyIGZyb20gYmVpbmcgY2FuY2VsbGVkLgorICAgICAgICAvLyBJZiB0aGUgUmVzb3VyY2VM
b2FkZXIgaXMgaW5kZWVkIGNhbmNlbGxlZCwgaXQgd291bGQgbm9ybWFsbHkgc2VuZCByZXNvdXJj
ZSBsb2FkIGNhbGxiYWNrcy4KKyAgICAgICAgLy8gSG93ZXZlciwgZnJvbSBhbiBBUEkgcGVyc3Bl
Y3RpdmUsIHRoaXMgaXNuJ3QgYSBjYW5jZWxsYXRpb24uIFRoZXJlZm9yZSwgc2V2ZXIgb3VyIHJl
bGF0aW9uc2hpcCB3aXRoIHRoZSBuZXR3b3JrIGxvYWQsCisgICAgICAgIC8vIGJ1dCBwcmV2ZW50
IHRoZSBSZXNvdXJjZUxvYWRlciBmcm9tIHNlbmRpbmcgUmVzb3VyY2VMb2FkTm90aWZpZXIgY2Fs
bGJhY2tzLgorICAgICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IHJlc291cmNlTG9hZGVyID0g
bV9tYWluUmVzb3VyY2VMb2FkZXItPmxvYWRlcigpOworICAgICAgICBBU1NFUlQocmVzb3VyY2VM
b2FkZXItPnNob3VsZFNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSk7CisgICAgICAgIHJlc291
cmNlTG9hZGVyLT5zZXRTZW5kQ2FsbGJhY2tQb2xpY3koRG9Ob3RTZW5kQ2FsbGJhY2tzKTsKKyAg
ICAgICAgbV9tYWluUmVzb3VyY2VMb2FkZXItPmNsZWFyUmVzb3VyY2UoKTsKKyAgICAgICAgcmVz
b3VyY2VMb2FkZXItPnNldFNlbmRDYWxsYmFja1BvbGljeShTZW5kQ2FsbGJhY2tzKTsKKyAgICAg
ICAgbV9tYWluUmVzb3VyY2VMb2FkZXItPmhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZFNvb24ocmVx
dWVzdCk7CisgICAgfQorfQorCiB2b2lkIERvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVk
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIHNldFJlc3BvbnNlKHJl
c3BvbnNlKTsKQEAgLTEwMzAsNyArMTEzOSwxOSBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFy
dExvYWRpbmdNYWluUmVzCiAgICAgLy8gTm90ZSB0aGF0IGN1cnJlbnRseSwgc29tZSByZXF1ZXN0
cyBtYXkgaGF2ZSBpbmNvcnJlY3QgZXh0cmEgZmllbGRzIGV2ZW4gaWYgdGhpcyBmdW5jdGlvbiBo
YXMgYmVlbiBjYWxsZWQsCiAgICAgLy8gYmVjYXVzZSB3ZSBwYXNzIGEgd3JvbmcgbG9hZFR5cGUg
KHNlZSBGSVhNRSBpbiBhZGRFeHRyYUZpZWxkc1RvTWFpblJlc291cmNlUmVxdWVzdCgpKS4KICAg
ICBmcmFtZUxvYWRlcigpLT5hZGRFeHRyYUZpZWxkc1RvTWFpblJlc291cmNlUmVxdWVzdChtX3Jl
cXVlc3QpOwotICAgIG1fbWFpblJlc291cmNlTG9hZGVyLT5sb2FkKG1fcmVxdWVzdCwgbV9zdWJz
dGl0dXRlRGF0YSk7CisKKyAgICBBU1NFUlQodGltaW5nKCktPm5hdmlnYXRpb25TdGFydCgpKTsK
KyAgICBBU1NFUlQoIXRpbWluZygpLT5mZXRjaFN0YXJ0KCkpOworICAgIHRpbWluZygpLT5tYXJr
RmV0Y2hTdGFydCgpOworICAgIHdpbGxTZW5kUmVxdWVzdChtX3JlcXVlc3QsIFJlc291cmNlUmVz
cG9uc2UoKSk7CisKKyAgICAvLyB3aWxsU2VuZFJlcXVlc3QoKSBtYXkgbGVhZCB0byBvdXIgRnJh
bWUgYmVpbmcgZGV0YWNoZWQgb3IgY2FuY2VsbGluZyB0aGUgbG9hZCB2aWEgbnVsbGluZyB0aGUg
UmVzb3VyY2VSZXF1ZXN0LgorICAgIGlmICghbV9mcmFtZSB8fCBtX3JlcXVlc3QuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QtPm1heWJlTG9h
ZE1haW5SZXNvdXJjZShtX3JlcXVlc3QsIG1fc3Vic3RpdHV0ZURhdGEpOworCisgICAgbV9tYWlu
UmVzb3VyY2VMb2FkZXItPmxvYWQobV9yZXF1ZXN0KTsKIAogICAgIGlmIChtX3JlcXVlc3QuaXNO
dWxsKCkpIHsKICAgICAgICAgbV9tYWluUmVzb3VyY2VMb2FkZXIgPSAwOwpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlzaW9uIDE0NTkyMykKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2
ICs1OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBBcmNoaXZlUmVzb3VyY2VD
b2xsZWN0aW9uOwogICAgIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogICAgIGNsYXNzIENv
bnRlbnRGaWx0ZXI7CisgICAgY2xhc3MgRm9ybVN0YXRlOwogICAgIGNsYXNzIEZyYW1lOwogICAg
IGNsYXNzIEZyYW1lTG9hZGVyOwogICAgIGNsYXNzIE1haW5SZXNvdXJjZUxvYWRlcjsKQEAgLTI1
Nyw2ICsyNTgsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBy
ZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAgICAgICAgIHZvaWQg
Y2hlY2tMb2FkQ29tcGxldGUoKTsKIAorICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUg
cHJpdmF0ZSBvbmNlIERvY3VtZW50TG9hZGVyIGFuZCBNYWluUmVzb3VyY2VMb2FkZXIgYXJlIG1l
cmdlZC4KKyAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpOworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBEb2N1bWVu
dExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpOwog
CkBAIC0yNzYsNiArMjgwLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBt
YXliZUxvYWRFbXB0eSgpOwogCiAgICAgICAgIGJvb2wgaXNNdWx0aXBhcnRSZXBsYWNpbmdMb2Fk
KCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNQb3N0T3JSZWRpcmVjdEFmdGVyUG9zdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisKKyAgICAgICAgc3Rh
dGljIHZvaWQgY2FsbENvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHZvaWQqLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGJvb2wgc2hvdWxkQ29udGlu
dWUpOworICAgICAgICB2b2lkIGNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIGJvb2wgc2hvdWxkQ29udGludWUpOwogCiAgICAgICAgIHZvaWQgZGVs
aXZlclN1YnN0aXR1dGVSZXNvdXJjZXNBZnRlckRlbGF5KCk7CiAgICAgICAgIHZvaWQgc3Vic3Rp
dHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lckZpcmVkKFRpbWVyPERvY3VtZW50TG9hZGVyPiopOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDE0NTkyMykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2Fk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSAiRG9jdW1l
bnRMb2FkVGltaW5nLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJG
ZWF0dXJlT2JzZXJ2ZXIuaCIKLSNpbmNsdWRlICJGb3JtU3RhdGUuaCIKICNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGll
bnQuaCIKQEAgLTE1OSwxMzQgKzE1OCwxNyBAQCB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6c3Rv
cExvYWRpbmdGb3JQCiAgICAgY2FuY2VsKGVycm9yKTsKIH0KIAotdm9pZCBNYWluUmVzb3VyY2VM
b2FkZXI6OmNhbGxDb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeSh2b2lkKiBhcmd1bWVudCwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGJv
b2wgc2hvdWxkQ29udGludWUpCi17Ci0gICAgc3RhdGljX2Nhc3Q8TWFpblJlc291cmNlTG9hZGVy
Kj4oYXJndW1lbnQpLT5jb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeShyZXF1ZXN0LCBzaG91
bGRDb250aW51ZSk7Ci19Ci0KLXZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpjb250aW51ZUFmdGVy
TmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgc2hv
dWxkQ29udGludWUpCi17Ci0gICAgaWYgKCFzaG91bGRDb250aW51ZSkKLSAgICAgICAgc3RvcExv
YWRpbmdGb3JQb2xpY3lDaGFuZ2UoKTsKLSAgICBlbHNlIGlmIChtX3N1YnN0aXR1dGVEYXRhLmlz
VmFsaWQoKSkgewotICAgICAgICAvLyBBIHJlZGlyZWN0IHJlc3VsdGVkIGluIGxvYWRpbmcgc3Vi
c3RpdHV0ZSBkYXRhLgotICAgICAgICBBU1NFUlQoZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5nKCkt
PnJlZGlyZWN0Q291bnQoKSk7Ci0KLSAgICAgICAgLy8gV2UgbmVlZCB0byByZW1vdmUgb3VyIHJl
ZmVyZW5jZSB0byB0aGUgQ2FjaGVkUmVzb3VyY2UgaW4gZmF2b3Igb2YgYSBTdWJzdGl0dXRlRGF0
YSBsb2FkLgotICAgICAgICAvLyBUaGlzIHdpbGwgcHJvYmFibHkgdHJpZ2dlciB0aGUgY2FuY2Vs
bGF0aW9uIG9mIHRoZSBDYWNoZWRSZXNvdXJjZSdzIHVuZGVybHlpbmcgUmVzb3VyY2VMb2FkZXIs
IHRob3VnaCB0aGVyZSBpcyBhCi0gICAgICAgIC8vIHNtYWxsIGNoYW5jZSB0aGF0IHRoZSByZXNv
dXJjZSBpcyBiZWluZyBsb2FkZWQgYnkgYSBkaWZmZXJlbnQgRnJhbWUsIHByZXZlbnRpbmcgdGhl
IFJlc291cmNlTG9hZGVyIGZyb20gYmVpbmcgY2FuY2VsbGVkLgotICAgICAgICAvLyBJZiB0aGUg
UmVzb3VyY2VMb2FkZXIgaXMgaW5kZWVkIGNhbmNlbGxlZCwgaXQgd291bGQgbm9ybWFsbHkgc2Vu
ZCByZXNvdXJjZSBsb2FkIGNhbGxiYWNrcy4KLSAgICAgICAgLy8gSG93ZXZlciwgZnJvbSBhbiBB
UEkgcGVyc3BlY3RpdmUsIHRoaXMgaXNuJ3QgYSBjYW5jZWxsYXRpb24uIFRoZXJlZm9yZSwgc2V2
ZXIgb3VyIHJlbGF0aW9uc2hpcCB3aXRoIHRoZSBuZXR3b3JrIGxvYWQgdmlhIGNsZWFyUmVzb3Vy
Y2UoKSwKLSAgICAgICAgLy8gYnV0IHByZXZlbnQgdGhlIFJlc291cmNlTG9hZGVyIGZyb20gc2Vu
ZGluZyBSZXNvdXJjZUxvYWROb3RpZmllciBjYWxsYmFja3MuCi0gICAgICAgIFJlZlB0cjxSZXNv
dXJjZUxvYWRlcj4gcmVzb3VyY2VMb2FkZXIgPSBsb2FkZXIoKTsKLSAgICAgICAgQVNTRVJUKHJl
c291cmNlTG9hZGVyLT5zaG91bGRTZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkpOwotICAgICAg
ICByZXNvdXJjZUxvYWRlci0+c2V0U2VuZENhbGxiYWNrUG9saWN5KERvTm90U2VuZENhbGxiYWNr
cyk7Ci0gICAgICAgIGNsZWFyUmVzb3VyY2UoKTsKLSAgICAgICAgcmVzb3VyY2VMb2FkZXItPnNl
dFNlbmRDYWxsYmFja1BvbGljeShTZW5kQ2FsbGJhY2tzKTsKLSAgICAgICAgaGFuZGxlU3Vic3Rp
dHV0ZURhdGFMb2FkU29vbihyZXF1ZXN0KTsKLSAgICB9Ci0KLSAgICBkZXJlZigpOyAvLyBiYWxh
bmNlcyByZWYgaW4gd2lsbFNlbmRSZXF1ZXN0Ci19Ci0KLWJvb2wgTWFpblJlc291cmNlTG9hZGVy
Ojppc1Bvc3RPclJlZGlyZWN0QWZ0ZXJQb3N0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgbmV3UmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKLXsKLSAgICBp
ZiAobmV3UmVxdWVzdC5odHRwTWV0aG9kKCkgPT0gIlBPU1QiKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgIGludCBzdGF0dXMgPSByZWRpcmVjdFJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCk7
Ci0gICAgaWYgKCgoc3RhdHVzID49IDMwMSAmJiBzdGF0dXMgPD0gMzAzKSB8fCBzdGF0dXMgPT0g
MzA3KQotICAgICAgICAmJiBmcmFtZUxvYWRlcigpLT5pbml0aWFsUmVxdWVzdCgpLmh0dHBNZXRo
b2QoKSA9PSAiUE9TVCIpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIAotICAgIHJldHVybiBm
YWxzZTsKLX0KLQogUGFzc1JlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gTWFpblJlc291cmNlTG9hZGVy
OjpyZXNvdXJjZURhdGEoKQogewotICAgIEFTU0VSVCghbV9yZXNvdXJjZSB8fCAhbV9zdWJzdGl0
dXRlRGF0YS5pc1ZhbGlkKCkpOwogICAgIGlmIChtX3Jlc291cmNlKQogICAgICAgICByZXR1cm4g
bV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKTsKLSAgICBpZiAobV9zdWJzdGl0dXRlRGF0YS5p
c1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBSZXNvdXJjZUJ1ZmZlcjo6Y3JlYXRlKG1fc3Vic3Rp
dHV0ZURhdGEuY29udGVudCgpLT5kYXRhKCksIG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5z
aXplKCkpOwogICAgIHJldHVybiAwOwogfQogCiB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6cmVk
aXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKIHsKICAg
ICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCByZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICB3
aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7Ci19Ci0KLXZvaWQgTWFp
blJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQotewotICAgIC8v
IE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gYXNzZXJ0cyBoZXJlIGFzIHRoZXJlIGFyZSBmb3IgdGhl
IG90aGVyIGNhbGxiYWNrcy4gVGhpcyBpcyBkdWUgdG8gdGhlCi0gICAgLy8gZmFjdCB0aGF0IHRo
aXMgImNhbGxiYWNrIiBpcyBzZW50IHdoZW4gc3RhcnRpbmcgZXZlcnkgbG9hZCwgYW5kIHRoZSBz
dGF0ZSBvZiBjYWxsYmFjawotICAgIC8vIGRlZmVycmFscyBwbGF5cyBsZXNzIG9mIGEgcGFydCBp
biB0aGlzIGZ1bmN0aW9uIGluIHByZXZlbnRpbmcgdGhlIGJhZCBiZWhhdmlvciBkZWZlcnJpbmcg
Ci0gICAgLy8gY2FsbGJhY2tzIGlzIG1lYW50IHRvIHByZXZlbnQuCi0gICAgQVNTRVJUKCFuZXdS
ZXF1ZXN0LmlzTnVsbCgpKTsKLQotICAgIC8vIFRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2Fu
IGRvIGFueXRoaW5nIGluY2x1ZGluZyBwb3NzaWJseSByZW1vdmluZyB0aGUgbGFzdAotICAgIC8v
IHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdDsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyAzMjY2MjE2
LgotICAgIFJlZlB0cjxNYWluUmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7Ci0KLSAgICBp
ZiAoIWZyYW1lTG9hZGVyKCktPmNoZWNrSWZGb3JtQWN0aW9uQWxsb3dlZEJ5Q1NQKG5ld1JlcXVl
c3QudXJsKCkpKSB7Ci0gICAgICAgIGNhbmNlbCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgQVNTRVJUKGRvY3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5mZXRjaFN0YXJ0KCkpOwot
ICAgIGlmICghcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSkgewotICAgICAgICAvLyBJZiB0aGUg
cmVkaXJlY3RpbmcgdXJsIGlzIG5vdCBhbGxvd2VkIHRvIGRpc3BsYXkgY29udGVudCBmcm9tIHRo
ZSB0YXJnZXQgb3JpZ2luLAotICAgICAgICAvLyB0aGVuIGJsb2NrIHRoZSByZWRpcmVjdC4KLSAg
ICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiByZWRpcmVjdGluZ09yaWdpbiA9IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUocmVkaXJlY3RSZXNwb25zZS51cmwoKSk7Ci0gICAgICAgIGlmICghcmVk
aXJlY3RpbmdPcmlnaW4tPmNhbkRpc3BsYXkobmV3UmVxdWVzdC51cmwoKSkpIHsKLSAgICAgICAg
ICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQobV9kb2N1bWVudExvYWRlci0+
ZnJhbWUoKSwgbmV3UmVxdWVzdC51cmwoKS5lbGlkZWRTdHJpbmcoKSk7Ci0gICAgICAgICAgICBj
YW5jZWwoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBkb2N1bWVu
dExvYWRlcigpLT50aW1pbmcoKS0+YWRkUmVkaXJlY3QocmVkaXJlY3RSZXNwb25zZS51cmwoKSwg
bmV3UmVxdWVzdC51cmwoKSk7Ci0gICAgfQotCi0gICAgLy8gVXBkYXRlIGNvb2tpZSBwb2xpY3kg
YmFzZSBVUkwgYXMgVVJMIGNoYW5nZXMsIGV4Y2VwdCBmb3Igc3ViZnJhbWVzLCB3aGljaCB1c2Ug
dGhlCi0gICAgLy8gVVJMIG9mIHRoZSBtYWluIGZyYW1lIHdoaWNoIGRvZXNuJ3QgY2hhbmdlIHdo
ZW4gd2UgcmVkaXJlY3QuCi0gICAgaWYgKGZyYW1lTG9hZGVyKCktPmlzTG9hZGluZ01haW5GcmFt
ZSgpKQotICAgICAgICBuZXdSZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVzKG5ld1JlcXVl
c3QudXJsKCkpOwotCi0gICAgLy8gSWYgd2UncmUgZmllbGRpbmcgYSByZWRpcmVjdCBpbiByZXNw
b25zZSB0byBhIFBPU1QsIGZvcmNlIGEgbG9hZCBmcm9tIG9yaWdpbiwgc2luY2UKLSAgICAvLyB0
aGlzIGlzIGEgY29tbW9uIHNpdGUgdGVjaG5pcXVlIHRvIHJldHVybiB0byBhIHBhZ2Ugdmlld2lu
ZyBzb21lIGRhdGEgdGhhdCB0aGUgUE9TVAotICAgIC8vIGp1c3QgbW9kaWZpZWQuCi0gICAgLy8g
QWxzbywgUE9TVCByZXF1ZXN0cyBhbHdheXMgbG9hZCBmcm9tIG9yaWdpbiwgYnV0IHRoaXMgZG9l
cyBub3QgYWZmZWN0IHN1YnJlc291cmNlcy4KLSAgICBpZiAobmV3UmVxdWVzdC5jYWNoZVBvbGlj
eSgpID09IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kgJiYgaXNQb3N0T3JSZWRpcmVjdEFmdGVyUG9z
dChuZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSkKLSAgICAgICAgbmV3UmVxdWVzdC5zZXRD
YWNoZVBvbGljeShSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSk7Ci0KLSAgICBGcmFtZSogdG9wID0g
bV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+dHJlZSgpLT50b3AoKTsKLSAgICBpZiAodG9wICE9
IG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkpIHsKLSAgICAgICAgaWYgKCFmcmFtZUxvYWRlcigp
LT5taXhlZENvbnRlbnRDaGVja2VyKCktPmNhbkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQodG9wLT5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBuZXdSZXF1ZXN0LnVybCgpKSkgewotICAgICAg
ICAgICAgY2FuY2VsKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICAvLyBEb24ndCBzZXQgdGhpcyBvbiB0aGUgZmlyc3QgcmVxdWVzdC4gSXQgaXMgc2V0IHdo
ZW4gdGhlIG1haW4gbG9hZCB3YXMgc3RhcnRlZC4KLSAgICBtX2RvY3VtZW50TG9hZGVyLT5zZXRS
ZXF1ZXN0KG5ld1JlcXVlc3QpOwotCi0gICAgaWYgKCFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgp
KSB7Ci0gICAgICAgIC8vIFdlIGNoZWNrZWQgYXBwbGljYXRpb24gY2FjaGUgZm9yIGluaXRpYWwg
VVJMLCBub3cgd2UgbmVlZCB0byBjaGVjayBpdCBmb3IgcmVkaXJlY3RlZCBvbmUuCi0gICAgICAg
IEFTU0VSVCghbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpOwotICAgICAgICBkb2N1bWVudExv
YWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRNYWluUmVzb3VyY2VGb3JS
ZWRpcmVjdChuZXdSZXF1ZXN0LCBtX3N1YnN0aXR1dGVEYXRhKTsKLSAgICAgICAgaWYgKG1fc3Vi
c3RpdHV0ZURhdGEuaXNWYWxpZCgpKQotICAgICAgICAgICAgbV9pZGVudGlmaWVyRm9yTG9hZFdp
dGhvdXRSZXNvdXJjZUxvYWRlciA9IGlkZW50aWZpZXIoKTsKLSAgICB9Ci0KLSAgICAvLyBGSVhN
RTogSWRlYWxseSB3ZSdkIHN0b3AgdGhlIEkvTyB1bnRpbCB3ZSBoZWFyIGJhY2sgZnJvbSB0aGUg
bmF2aWdhdGlvbiBwb2xpY3kgZGVsZWdhdGUKLSAgICAvLyBsaXN0ZW5lci4gQnV0IHRoZXJlJ3Mg
bm8gd2F5IHRvIGRvIHRoYXQgaW4gcHJhY3RpY2UuIFNvIGluc3RlYWQgd2UgY2FuY2VsIGxhdGVy
IGlmIHRoZQotICAgIC8vIGxpc3RlbmVyIHRlbGxzIHVzIHRvLiBJbiBwcmFjdGljZSB0aGF0IG1l
YW5zIHRoZSBuYXZpZ2F0aW9uIHBvbGljeSBuZWVkcyB0byBiZSBkZWNpZGVkCi0gICAgLy8gc3lu
Y2hyb25vdXNseSBmb3IgdGhlc2UgcmVkaXJlY3QgY2FzZXMuCi0gICAgaWYgKCFyZWRpcmVjdFJl
c3BvbnNlLmlzTnVsbCgpKSB7Ci0gICAgICAgIHJlZigpOyAvLyBiYWxhbmNlZCBieSBkZXJlZiBp
biBjb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeQotICAgICAgICBmcmFtZUxvYWRlcigpLT5w
b2xpY3lDaGVja2VyKCktPmNoZWNrTmF2aWdhdGlvblBvbGljeShuZXdSZXF1ZXN0LCBjYWxsQ29u
dGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3ksIHRoaXMpOwotICAgIH0KKyAgICBtX2RvY3VtZW50
TG9hZGVyLT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiB9CiAK
IHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQb2xp
Y3lBY3Rpb24gY29udGVudFBvbGljeSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcikKQEAgLTMw
Miw3ICsxODQsNyBAQCB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6Y29udGludWVBZnRlckNvCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGVxdWFsSWdub3JpbmdDYXNlKCJt
ZXNzYWdlL3JmYzgyMiIsIG1pbWVUeXBlKQogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHx8IGVxdWFsSWdub3JpbmdDYXNlKCJtdWx0aXBhcnQvcmVsYXRlZCIsIG1p
bWVUeXBlKSkKLSAgICAgICAgICAgICYmICFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSAmJiAh
U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbCh1cmwucHJvdG9jb2wo
KSk7CisgICAgICAgICAgICAmJiAhbV9kb2N1bWVudExvYWRlci0+c3Vic3RpdHV0ZURhdGEoKS5p
c1ZhbGlkKCkgJiYgIVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwo
dXJsLnByb3RvY29sKCkpOwogICAgICAgICBpZiAoIWZyYW1lTG9hZGVyKCktPmNsaWVudCgpLT5j
YW5TaG93TUlNRVR5cGUobWltZVR5cGUpIHx8IGlzUmVtb3RlV2ViQXJjaGl2ZSkgewogICAgICAg
ICAgICAgZnJhbWVMb2FkZXIoKS0+cG9saWN5Q2hlY2tlcigpLT5jYW5ub3RTaG93TUlNRVR5cGUo
cik7CiAgICAgICAgICAgICAvLyBDaGVjayByZWFjaGVkVGVybWluYWxTdGF0ZSBzaW5jZSB0aGUg
bG9hZCBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gY2FuY2VsZWQgaW5zaWRlIG9mIF9oYW5kbGVVbmlt
cGxlbWVudGFibGVQb2xpY3lXaXRoRXJyb3JDb2RlOjouCkBAIC0zNTcsOSArMjM5LDkgQEAgdm9p
ZCBNYWluUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJDbwogICAgICAgICB9CiAgICAgfQog
Ci0gICAgaWYgKCFtX2RvY3VtZW50TG9hZGVyLT5pc1N0b3BwaW5nKCkgJiYgbV9zdWJzdGl0dXRl
RGF0YS5pc1ZhbGlkKCkpIHsKLSAgICAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgp
LT5zaXplKCkpCi0gICAgICAgICAgICBkYXRhUmVjZWl2ZWQoMCwgbV9zdWJzdGl0dXRlRGF0YS5j
b250ZW50KCktPmRhdGEoKSwgbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPnNpemUoKSk7Cisg
ICAgaWYgKCFtX2RvY3VtZW50TG9hZGVyLT5pc1N0b3BwaW5nKCkgJiYgbV9kb2N1bWVudExvYWRl
ci0+c3Vic3RpdHV0ZURhdGEoKS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgaWYgKG1fZG9jdW1lbnRM
b2FkZXItPnN1YnN0aXR1dGVEYXRhKCkuY29udGVudCgpLT5zaXplKCkpCisgICAgICAgICAgICBk
YXRhUmVjZWl2ZWQoMCwgbV9kb2N1bWVudExvYWRlci0+c3Vic3RpdHV0ZURhdGEoKS5jb250ZW50
KCktPmRhdGEoKSwgbV9kb2N1bWVudExvYWRlci0+c3Vic3RpdHV0ZURhdGEoKS5jb250ZW50KCkt
PnNpemUoKSk7CiAgICAgICAgIGlmIChtX2RvY3VtZW50TG9hZGVyLT5pc0xvYWRpbmdNYWluUmVz
b3VyY2UoKSkKICAgICAgICAgICAgIGRpZEZpbmlzaExvYWRpbmcoMCk7CiAgICAgfQpAQCAtNTEx
LDcgKzM5Myw2IEBAIHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpyZXBvcnRNZW1vcnlVc2EKICAg
ICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVt
b3J5VHlwZXM6OkxvYWRlcik7CiAgICAgaW5mby5hZGRNZW1iZXIobV9yZXNvdXJjZSwgInJlc291
cmNlIik7CiAgICAgaW5mby5hZGRNZW1iZXIobV9pbml0aWFsUmVxdWVzdCwgImluaXRpYWxSZXF1
ZXN0Iik7Ci0gICAgaW5mby5hZGRNZW1iZXIobV9zdWJzdGl0dXRlRGF0YSwgInN1YnN0aXR1dGVE
YXRhIik7CiAgICAgaW5mby5hZGRNZW1iZXIobV9kYXRhTG9hZFRpbWVyLCAiZGF0YUxvYWRUaW1l
ciIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fZG9jdW1lbnRMb2FkZXIsICJkb2N1bWVudExvYWRl
ciIpOwogfQpAQCAtNTIwLDcgKzQwMSw3IEBAIHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpoYW5k
bGVTdWJzdGl0dXQKIHsKICAgICBSZWZQdHI8TWFpblJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRo
aXMpOwogCi0gICAgS1VSTCB1cmwgPSBtX3N1YnN0aXR1dGVEYXRhLnJlc3BvbnNlVVJMKCk7Cisg
ICAgS1VSTCB1cmwgPSBtX2RvY3VtZW50TG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpLnJlc3BvbnNl
VVJMKCk7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHVybCA9IG1faW5pdGlhbFJl
cXVlc3QudXJsKCk7CiAKQEAgLTUyOCw3ICs0MDksNyBAQCB2b2lkIE1haW5SZXNvdXJjZUxvYWRl
cjo6aGFuZGxlU3Vic3RpdHV0CiAgICAgLy8gbG9hZGVyIHdpbGwgbm90IHRoaW5rIHRoZXJlJ3Mg
c3RpbGwgYSBkZWZlcnJlZCBsb2FkIGxlZnQgdG8gZG8uCiAgICAgbV9pbml0aWFsUmVxdWVzdCA9
IFJlc291cmNlUmVxdWVzdCgpOwogICAgICAgICAKLSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3Bv
bnNlKHVybCwgbV9zdWJzdGl0dXRlRGF0YS5taW1lVHlwZSgpLCBtX3N1YnN0aXR1dGVEYXRhLmNv
bnRlbnQoKS0+c2l6ZSgpLCBtX3N1YnN0aXR1dGVEYXRhLnRleHRFbmNvZGluZygpLCAiIik7Cisg
ICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSh1cmwsIG1fZG9jdW1lbnRMb2FkZXItPnN1YnN0
aXR1dGVEYXRhKCkubWltZVR5cGUoKSwgbV9kb2N1bWVudExvYWRlci0+c3Vic3RpdHV0ZURhdGEo
KS5jb250ZW50KCktPnNpemUoKSwgbV9kb2N1bWVudExvYWRlci0+c3Vic3RpdHV0ZURhdGEoKS50
ZXh0RW5jb2RpbmcoKSwgIiIpOwogICAgIHJlc3BvbnNlUmVjZWl2ZWQoMCwgcmVzcG9uc2UpOwog
fQogCkBAIC01NTIsMzIgKzQzMywxMiBAQCB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6aGFuZGxl
U3Vic3RpdHV0CiAgICAgICAgIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5vdygwKTsKIH0KIAot
dm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OmxvYWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBpbml0
aWFsUmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQordm9pZCBN
YWluUmVzb3VyY2VMb2FkZXI6OmxvYWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBpbml0aWFsUmVx
dWVzdCkKIHsKLSAgICAvLyBJdCBhcHBlYXJzIHRoYXQgaXQgaXMgcG9zc2libGUgZm9yIHRoaXMg
bG9hZCB0byBiZSBjYW5jZWxsZWQgYW5kIGRlcmVmZW5jZWQgYnkgdGhlIERvY3VtZW50TG9hZGVy
Ci0gICAgLy8gaW4gd2lsbFNlbmRSZXF1ZXN0KCkgaWYgbG9hZE5vdygpIGlzIGNhbGxlZC4KICAg
ICBSZWZQdHI8TWFpblJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwotCi0gICAgbV9zdWJz
dGl0dXRlRGF0YSA9IHN1YnN0aXR1dGVEYXRhOwotCi0gICAgQVNTRVJUKGRvY3VtZW50TG9hZGVy
KCktPnRpbWluZygpLT5uYXZpZ2F0aW9uU3RhcnQoKSk7Ci0gICAgQVNTRVJUKCFkb2N1bWVudExv
YWRlcigpLT50aW1pbmcoKS0+ZmV0Y2hTdGFydCgpKTsKLSAgICBkb2N1bWVudExvYWRlcigpLT50
aW1pbmcoKS0+bWFya0ZldGNoU3RhcnQoKTsKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChp
bml0aWFsUmVxdWVzdCk7CiAKLSAgICAvLyBTZW5kIHRoaXMgc3ludGhldGljIGRlbGVnYXRlIGNh
bGxiYWNrIHNpbmNlIGNsaWVudHMgZXhwZWN0IGl0LCBhbmQKLSAgICAvLyB3ZSBubyBsb25nZXIg
c2VuZCB0aGUgY2FsbGJhY2sgZnJvbSB3aXRoaW4gTlNVUkxDb25uZWN0aW9uIGZvcgotICAgIC8v
IGluaXRpYWwgcmVxdWVzdHMuCi0gICAgd2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIFJlc291cmNl
UmVzcG9uc2UoKSk7Ci0gICAgQVNTRVJUKCFkZWxldGlvbkhhc0JlZ3VuKCkpOwotCi0gICAgLy8g
d2lsbFNlbmRSZXF1ZXN0KCkgbWF5IGxlYWQgdG8gb3VyIERvY3VtZW50TG9hZGVyIGJlaW5nIGRl
dGFjaGVkIG9yIGNhbmNlbGxpbmcgdGhlIGxvYWQgdmlhIG51bGxpbmcgdGhlIFJlc291cmNlUmVx
dWVzdC4KLSAgICBpZiAoIWRvY3VtZW50TG9hZGVyKCktPmZyYW1lKCkgfHwgcmVxdWVzdC5pc051
bGwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRp
b25DYWNoZUhvc3QoKS0+bWF5YmVMb2FkTWFpblJlc291cmNlKHJlcXVlc3QsIG1fc3Vic3RpdHV0
ZURhdGEpOwotCi0gICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKSB7CisgICAgaWYg
KG1fZG9jdW1lbnRMb2FkZXItPnN1YnN0aXR1dGVEYXRhKCkuaXNWYWxpZCgpKSB7CiAgICAgICAg
IG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIgPSBtX2RvY3VtZW50TG9h
ZGVyLT5mcmFtZSgpLT5wYWdlKCktPnByb2dyZXNzKCktPmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIo
KTsKICAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+YXNzaWduSWRlbnRpZmllclRv
SW5pdGlhbFJlcXVlc3QobV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwg
ZG9jdW1lbnRMb2FkZXIoKSwgcmVxdWVzdCk7CiAgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlm
aWVyKCktPmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KGRvY3VtZW50TG9hZGVyKCksIG1faWRlbnRp
ZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIsIHJlcXVlc3QsIFJlc291cmNlUmVzcG9u
c2UoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5o
CShyZXZpc2lvbiAxNDU5MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNl
TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAKIGNs
YXNzIE1haW5SZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPE1haW5SZXNvdXJjZUxv
YWRlcj4sIHB1YmxpYyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB7CkBAIC01Myw3ICs1Miw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNYWluUmVzb3VyY2VMb2FkZXI+IGNyZWF0
ZShEb2N1bWVudExvYWRlciopOwogICAgIHZpcnR1YWwgfk1haW5SZXNvdXJjZUxvYWRlcigpOwog
Ci0gICAgdm9pZCBsb2FkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVE
YXRhJik7CisgICAgdm9pZCBsb2FkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQg
Y2FuY2VsKCk7CiAgICAgdm9pZCBjYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIFJl
c291cmNlTG9hZGVyKiBsb2FkZXIoKSBjb25zdDsKQEAgLTc3LDYgKzc2LDExIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0Owog
CisgICAgdm9pZCB0YWtlSWRlbnRpZmllckZyb21SZXNvdXJjZUxvYWRlcigpIHsgbV9pZGVudGlm
aWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciA9IGlkZW50aWZpZXIoKTsgfQorICAgIHZv
aWQgc3RvcExvYWRpbmdGb3JQb2xpY3lDaGFuZ2UoKTsKKyAgICB2b2lkIGhhbmRsZVN1YnN0aXR1
dGVEYXRhTG9hZFNvb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCBjbGVhclJl
c291cmNlKCk7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTWFpblJlc291cmNlTG9hZGVyKERv
Y3VtZW50TG9hZGVyKik7CiAKQEAgLTg1LDIwICs4OSwxMyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBjaGFyKiBkYXRhLCBp
bnQgZGF0YUxlbmd0aCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlKikgT1ZFUlJJREU7CiAKLSAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNl
KTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpOwotICAgIHZv
aWQgaGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkU29vbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsK
ICAgICB2b2lkIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5vdyhNYWluUmVzb3VyY2VMb2FkZXJU
aW1lciopOwogCiAgICAgdm9pZCBzdGFydERhdGFMb2FkVGltZXIoKTsKIAogICAgIHZvaWQgcmVj
ZWl2ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgUmVzb3VyY2VFcnJvciBpbnRl
cnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKCkgY29uc3Q7Ci0gICAgdm9pZCBzdG9wTG9hZGlu
Z0ZvclBvbGljeUNoYW5nZSgpOwotICAgIGJvb2wgaXNQb3N0T3JSZWRpcmVjdEFmdGVyUG9zdChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UpOwotCi0gICAgc3RhdGljIHZvaWQgY2FsbENvbnRpbnVlQWZ0ZXJO
YXZpZ2F0aW9uUG9saWN5KHZvaWQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRy
PEZvcm1TdGF0ZT4sIGJvb2wgc2hvdWxkQ29udGludWUpOwotICAgIHZvaWQgY29udGludWVBZnRl
ck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBzaG91bGRDb250
aW51ZSk7CiAKICAgICBzdGF0aWMgdm9pZCBjYWxsQ29udGludWVBZnRlckNvbnRlbnRQb2xpY3ko
dm9pZCosIFBvbGljeUFjdGlvbik7CiAgICAgdm9pZCBjb250aW51ZUFmdGVyQ29udGVudFBvbGlj
eShQb2xpY3lBY3Rpb24pOwpAQCAtMTEyLDE0ICsxMDksMTIgQEAgcHJpdmF0ZToKICAgICBEb2N1
bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50TG9h
ZGVyLmdldCgpOyB9CiAKICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25z
dDsKLSAgICB2b2lkIGNsZWFyUmVzb3VyY2UoKTsKIAogICAgIGJvb2wgZGVmZXJzTG9hZGluZygp
IGNvbnN0OwogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1f
cmVzb3VyY2U7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9pbml0aWFsUmVxdWVzdDsKLSAgICBT
dWJzdGl0dXRlRGF0YSBtX3N1YnN0aXR1dGVEYXRhOwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9y
ZXNwb25zZTsKIAogICAgIE1haW5SZXNvdXJjZUxvYWRlclRpbWVyIG1fZGF0YUxvYWRUaW1lcjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>