<?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>161785</bug_id>
          
          <creation_ts>2016-09-08 20:19:41 -0700</creation_ts>
          <short_desc>Add WebKit support for an option in Safari&apos;s debug menu similar to &quot;Get Bytecode Profile&quot; but for the Sampling Profiler&apos;s data</short_desc>
          <delta_ts>2016-09-12 14:15:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>sukolsak</cc>
    
    <cc>thorton</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1228020</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-08 20:19:41 -0700</bug_when>
    <thetext>This would be really helpful. Get Bytecode Profile lets you save out a file. We should do the same for the sampling profiler output.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228279</commentid>
    <comment_count>1</comment_count>
      <attachid>288423</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-09 12:00:43 -0700</bug_when>
    <thetext>Created attachment 288423
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228282</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-09 12:02:03 -0700</bug_when>
    <thetext>Attachment 288423 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2880:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:762:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228296</commentid>
    <comment_count>3</comment_count>
      <attachid>288423</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-09-09 12:34:57 -0700</bug_when>
    <thetext>Comment on attachment 288423
patch

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

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:5387
&gt; +        send(Messages::WebPageProxy::StringCallback(String(&quot;Sampling profiler is not enabled.&quot;), callbackID));

Nit: I think you could use ASCIILiteral() instead of String().

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:5396
&gt; +    send(Messages::WebPageProxy::StringCallback(String(&quot;Sampling Profiler is not enabled on this platform.&quot;), callbackID));

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228300</commentid>
    <comment_count>4</comment_count>
      <attachid>288423</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-09-09 12:51:53 -0700</bug_when>
    <thetext>Comment on attachment 288423
patch

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

This needs API tests.

&gt; Source/WebCore/ChangeLog:3
&gt; +        Add webkit support for an option in Safari&apos;s debug menu similar to &quot;Get Bytecode Profile&quot; but for the sampling profiler&apos;s data

WebKit

&gt;&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:5387
&gt;&gt; +        send(Messages::WebPageProxy::StringCallback(String(&quot;Sampling profiler is not enabled.&quot;), callbackID));
&gt; 
&gt; Nit: I think you could use ASCIILiteral() instead of String().

Additionally, this sends back a seemingly valid string back for an error case.

The callback passed in to the SPI allows for error cases, so we should invoke that.

&gt;&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:5396
&gt;&gt; +    send(Messages::WebPageProxy::StringCallback(String(&quot;Sampling Profiler is not enabled on this platform.&quot;), callbackID));
&gt; 
&gt; Ditto.

And ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228444</commentid>
    <comment_count>5</comment_count>
      <attachid>288476</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-09 19:25:49 -0700</bug_when>
    <thetext>Created attachment 288476
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228446</commentid>
    <comment_count>6</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-09 19:28:07 -0700</bug_when>
    <thetext>I&apos;m going to add API tests in a follow up:
https://bugs.webkit.org/show_bug.cgi?id=161832</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228447</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-09 19:28:14 -0700</bug_when>
    <thetext>Attachment 288476 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2880:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:762:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 3 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228452</commentid>
    <comment_count>8</comment_count>
      <attachid>288476</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-09-09 19:34:21 -0700</bug_when>
    <thetext>Comment on attachment 288476
patch

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

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:5001
&gt; +    auto callback = m_callbacks.take&lt;StringCallback&gt;(callbackID);

I think that this should be &lt;CallbackBase&gt;, right? Unless you make this specifically invalidateStringCallback.

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:5008
&gt; +    m_loadDependentStringCallbackIDs.remove(callbackID);

Not 100% sure about this in the generic case, too. Anders is probably the best person to advise, you should check with him (or see if he has a better way to do this, since, as discussed, it&apos;s super bizarre that this hasn&apos;t existed before).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228454</commentid>
    <comment_count>9</comment_count>
      <attachid>288476</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-09 19:46:48 -0700</bug_when>
    <thetext>Comment on attachment 288476
patch

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

&gt;&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:5001
&gt;&gt; +    auto callback = m_callbacks.take&lt;StringCallback&gt;(callbackID);
&gt; 
&gt; I think that this should be &lt;CallbackBase&gt;, right? Unless you make this specifically invalidateStringCallback.

Yeah, this is totally a copy-paste bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228455</commentid>
    <comment_count>10</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-09 19:47:10 -0700</bug_when>
    <thetext>Anders, any comments/suggestions on Tim&apos;s inquiry?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228786</commentid>
    <comment_count>11</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-12 10:33:49 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 288476 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=288476&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:5001
&gt; &gt; +    auto callback = m_callbacks.take&lt;StringCallback&gt;(callbackID);
&gt; 
&gt; I think that this should be &lt;CallbackBase&gt;, right? Unless you make this
&gt; specifically invalidateStringCallback.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:5008
&gt; &gt; +    m_loadDependentStringCallbackIDs.remove(callbackID);
&gt; 
&gt; Not 100% sure about this in the generic case, too. Anders is probably the
&gt; best person to advise, you should check with him (or see if he has a better
&gt; way to do this, since, as discussed, it&apos;s super bizarre that this hasn&apos;t
&gt; existed before).

Actually, it appears that things that expect a StringCallback will add to
the m_loadDependentStringCallbackIDs Set. Therefore, I think it&apos;s safest
to change invalidateCallback into invalidateStringCallback as you suggested
and then invalidateStringCallback can remove the callback from the set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228790</commentid>
    <comment_count>12</comment_count>
      <attachid>288581</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-12 10:41:16 -0700</bug_when>
    <thetext>Created attachment 288581
patch for landing

I&apos;ll give some time before landing to allow Anders (or anybody else) comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228791</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-12 10:43:15 -0700</bug_when>
    <thetext>Attachment 288581 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2880:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:762:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228890</commentid>
    <comment_count>14</comment_count>
      <attachid>288581</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-12 14:15:14 -0700</bug_when>
    <thetext>Comment on attachment 288581
patch for landing

Clearing flags on attachment: 288581

Committed r205822: &lt;http://trac.webkit.org/changeset/205822&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228891</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-12 14:15:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288423</attachid>
            <date>2016-09-09 12:00:43 -0700</date>
            <delta_ts>2016-09-09 19:25:49 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>8590</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTc0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE2LTA5LTA5ICBTYWFtIEJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB3ZWJraXQgc3VwcG9ydCBm
b3IgYW4gb3B0aW9uIGluIFNhZmFyaSdzIGRlYnVnIG1lbnUgc2ltaWxhciB0byAiR2V0IEJ5dGVj
b2RlIFByb2ZpbGUiIGJ1dCBmb3IgdGhlIHNhbXBsaW5nIHByb2ZpbGVyJ3MgZGF0YQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNzg1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVh
ZGVycy9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuaDogQWRkZWQuCisKIDIwMTYtMDktMDkgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVUkxQ
YXJzZXIgc2hvdWxkIHBhcnNlIFVSTHMgd2l0aCBub24tc3BlY2lhbCBzY2hlbWVzCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1l
L1NhbXBsaW5nUHJvZmlsZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Gb3J3
YXJkaW5nSGVhZGVycy9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfU2FtcGxpbmdQcm9maWxlcl9oCisj
ZGVmaW5lIFdlYkNvcmVfRldEX1NhbXBsaW5nUHJvZmlsZXJfaAorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1NhbXBsaW5nUHJvZmlsZXIuaD4KKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNp
b24gMjA1NzU1KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTYtMDktMDkgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIHdlYmtpdCBzdXBwb3J0IGZvciBhbiBvcHRpb24gaW4gU2FmYXJp
J3MgZGVidWcgbWVudSBzaW1pbGFyIHRvICJHZXQgQnl0ZWNvZGUgUHJvZmlsZSIgYnV0IGZvciB0
aGUgc2FtcGxpbmcgcHJvZmlsZXIncyBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE3ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGZvbGxvd3MgZXhhY3RseSBob3cgd2UgZHVt
cCBvdXRwdXQgZm9yIHRoZQorICAgICAgICBieXRlY29kZSBwcm9maWxlciwgYnV0IG5vdyBhbHNv
IGZvciB0aGUgc2FtcGxpbmcgcHJvZmlsZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZUdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxNi0wOS0wOCAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4IEdU
SysgYnVpbGQgYWZ0ZXIgcjIwNTY4OS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMDU3NDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg3Nyw2ICsyODc3LDE4
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUoc3QKICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEJ5dGVjb2RlUHJvZmlsZShjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxl
ck91dHB1dChzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQoreworICAgIGlmICghaXNWYWxpZCgpKSB7CisgICAg
ICAgIGNhbGxiYWNrRnVuY3Rpb24oU3RyaW5nKCksIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25v
d24pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIHVpbnQ2NF90IGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBtX2xvYWREZXBl
bmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KGNhbGxiYWNr
SUQpLCBtX3BhZ2VJRCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5Ojppc1dlYlByb2Nlc3NSZXNw
b25zaXZlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCBpc1dlYlByb2Nlc3NSZXNwb25zaXZlKT4g
Y2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjA1NzQ5KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC03
NTksNiArNzU5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXRDb250ZW50c0FzU3RyaW5nKHN0
ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsK
ICAgICB2b2lkIGdldEJ5dGVjb2RlUHJvZmlsZShzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0
cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CisgICAgdm9pZCBnZXRTYW1wbGluZ1Byb2Zp
bGVyT3V0cHV0KHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+KTsKICAgICB2b2lkIGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUoc3RkOjpmdW5jdGlv
bjx2b2lkIChib29sIGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpPik7CiAKICNpZiBFTkFCTEUoTUhU
TUwpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2
aXNpb24gMjA1NzQ5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MzgsNiArMjQzOCwxMSBAQCB2b2lkIFdLUGFnZUdldEJ5
dGVjb2RlUHJvZmlsZShXS1BhZ2VSZWYgCiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRCeXRlY29k
ZVByb2ZpbGUodG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlvbihjb250ZXh0LCBjYWxsYmFjaykpOwog
fQogCit2b2lkIFdLUGFnZUdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoV0tQYWdlUmVmIHBhZ2VS
ZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXRGdW5jdGlv
biBjYWxsYmFjaykKK3sKKyAgICB0b0ltcGwocGFnZVJlZiktPmdldFNhbXBsaW5nUHJvZmlsZXJP
dXRwdXQodG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlvbihjb250ZXh0LCBjYWxsYmFjaykpOworfQor
CiB2b2lkIFdLUGFnZUlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUoV0tQYWdlUmVmIHBhZ2VSZWYsIHZv
aWQqIGNvbnRleHQsIFdLUGFnZUlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmVGdW5jdGlvbiBjYWxsYmFj
aykKIHsKICAgICB0b0ltcGwocGFnZVJlZiktPmlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUoW2NvbnRl
eHQsIGNhbGxiYWNrXShib29sIGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpIHsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaAkocmV2aXNpb24g
MjA1NzQ5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUu
aAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsOSBAQCBXS19FWFBPUlQgdm9pZCBXS1BhZ2VT
ZXRNYXlTdGFydE1lZGlhV2hlCiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VHZXRCeXRlY29kZVByb2Zp
bGVGdW5jdGlvbikoV0tTdHJpbmdSZWYsIFdLRXJyb3JSZWYsIHZvaWQqKTsKIFdLX0VYUE9SVCB2
b2lkIFdLUGFnZUdldEJ5dGVjb2RlUHJvZmlsZShXS1BhZ2VSZWYgcGFnZSwgdm9pZCogY29udGV4
dCwgV0tQYWdlR2V0Qnl0ZWNvZGVQcm9maWxlRnVuY3Rpb24gZnVuY3Rpb24pOwogCit0eXBlZGVm
IHZvaWQgKCpXS1BhZ2VHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0RnVuY3Rpb24pKFdLU3RyaW5n
UmVmLCBXS0Vycm9yUmVmLCB2b2lkKik7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VHZXRTYW1wbGlu
Z1Byb2ZpbGVyT3V0cHV0KFdLUGFnZVJlZiBwYWdlLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VHZXRT
YW1wbGluZ1Byb2ZpbGVyT3V0cHV0RnVuY3Rpb24gZnVuY3Rpb24pOworCiB0eXBlZGVmIHZvaWQg
KCpXS1BhZ2VJc1dlYlByb2Nlc3NSZXNwb25zaXZlRnVuY3Rpb24pKGJvb2wgaXNXZWJQcm9jZXNz
UmVzcG9uc2l2ZSwgdm9pZCogY29udGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VJc1dlYlBy
b2Nlc3NSZXNwb25zaXZlKFdLUGFnZVJlZiBwYWdlLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VJc1dl
YlByb2Nlc3NSZXNwb25zaXZlRnVuY3Rpb24gZnVuY3Rpb24pOwogICAgIApJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjA1
NzQ5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xODMsNiArMTgzLDcgQEAKICNpbmNsdWRlIDxydW50aW1lL0pTQ0lu
bGluZXMuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDxydW50
aW1lL0pTTG9jay5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1RlbXBvcmFyeUNoYW5nZS5oPgog
CkBAIC01Mzc4LDYgKzUzNzksMjQgQEAgdm9pZCBXZWJQYWdlOjpnZXRCeXRlY29kZVByb2ZpbGUo
dWludDY0XwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RyaW5nQ2FsbGJhY2so
cmVzdWx0LCBjYWxsYmFja0lEKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6Z2V0U2FtcGxpbmdQcm9m
aWxlck91dHB1dCh1aW50NjRfdCBjYWxsYmFja0lEKQoreworI2lmIEVOQUJMRShTQU1QTElOR19Q
Uk9GSUxFUikKKyAgICBTYW1wbGluZ1Byb2ZpbGVyKiBzYW1wbGluZ1Byb2ZpbGVyID0gSlNET01X
aW5kb3c6OmNvbW1vblZNKCkuc2FtcGxpbmdQcm9maWxlcigpOworICAgIGlmICghc2FtcGxpbmdQ
cm9maWxlcikgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0Nh
bGxiYWNrKFN0cmluZygiU2FtcGxpbmcgcHJvZmlsZXIgaXMgbm90IGVuYWJsZWQuIiksIGNhbGxi
YWNrSUQpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFN0cmluZ1ByaW50U3RyZWFt
IHJlc3VsdDsKKyAgICBzYW1wbGluZ1Byb2ZpbGVyLT5yZXBvcnRUb3BGdW5jdGlvbnMocmVzdWx0
KTsKKyAgICBzYW1wbGluZ1Byb2ZpbGVyLT5yZXBvcnRUb3BCeXRlY29kZXMocmVzdWx0KTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxiYWNrKHJlc3VsdC50b1N0
cmluZygpLCBjYWxsYmFja0lEKSk7CisjZWxzZQorICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6U3RyaW5nQ2FsbGJhY2soU3RyaW5nKCJTYW1wbGluZyBQcm9maWxlciBpcyBub3QgZW5h
YmxlZCBvbiB0aGlzIHBsYXRmb3JtLiIpLCBjYWxsYmFja0lEKSk7CisjZW5kaWYKK30KKwogUGFz
c1JlZlB0cjxXZWJDb3JlOjpSYW5nZT4gV2ViUGFnZTo6cmFuZ2VGcm9tRWRpdGluZ1JhbmdlKFdl
YkNvcmU6OkZyYW1lJiBmcmFtZSwgY29uc3QgRWRpdGluZ1JhbmdlJiByYW5nZSwgRWRpdGluZ1Jh
bmdlSXNSZWxhdGl2ZVRvIGVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbykKIHsKICAgICBBU1NFUlQo
cmFuZ2UubG9jYXRpb24gIT0gbm90Rm91bmQpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyMDU3NDkpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MDks
NiArOTA5LDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIo
V2ViRG9jdW1lbnRMb2FkZXImLCBXZWJDb3JlOjpGcmFtZSYpOwogCiAgICAgdm9pZCBnZXRCeXRl
Y29kZVByb2ZpbGUodWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRTYW1wbGluZ1By
b2ZpbGVyT3V0cHV0KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIAogI2lmIEVOQUJMRShTRVJW
SUNFX0NPTlRST0xTKSB8fCBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pCiAgICAg
dm9pZCBoYW5kbGVUZWxlcGhvbmVOdW1iZXJDbGljayhjb25zdCBTdHJpbmcmIG51bWJlciwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMDU3NDkp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgkod29ya2luZyBjb3B5KQpAQCAtNDAyLDYgKzQwMiw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2Ug
TGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShPcHRpb25hbDx1
aW50MzJfdD4gc2Nyb2xsYmFyU3R5bGUpCiAKICAgICBHZXRCeXRlY29kZVByb2ZpbGUodWludDY0
X3QgY2FsbGJhY2tJRCkKKworICAgIEdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQodWludDY0X3Qg
Y2FsbGJhY2tJRCkKICAgICAKICAgICBUYWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVjdCBzbmFw
c2hvdFJlY3QsIFdlYkNvcmU6OkludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9ucywg
dWludDY0X3QgY2FsbGJhY2tJRCkKICNpZiBQTEFURk9STShNQUMpCg==
</data>
<flag name="review"
          id="311777"
          type_id="1"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288476</attachid>
            <date>2016-09-09 19:25:49 -0700</date>
            <delta_ts>2016-09-12 10:41:16 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>10907</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTc0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE2LTA5LTA5ICBTYWFtIEJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXZWJLaXQgc3VwcG9ydCBm
b3IgYW4gb3B0aW9uIGluIFNhZmFyaSdzIGRlYnVnIG1lbnUgc2ltaWxhciB0byAiR2V0IEJ5dGVj
b2RlIFByb2ZpbGUiIGJ1dCBmb3IgdGhlIFNhbXBsaW5nIFByb2ZpbGVyJ3MgZGF0YQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNzg1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChP
T1BTISkuCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1NhbXBsaW5nUHJv
ZmlsZXIuaDogQWRkZWQuCisKIDIwMTYtMDktMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVUkxQYXJzZXIgc2hvdWxkIHBhcnNlIFVSTHMg
d2l0aCBub24tc3BlY2lhbCBzY2hlbWVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1Nh
bXBsaW5nUHJvZmlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYg
V2ViQ29yZV9GV0RfU2FtcGxpbmdQcm9maWxlcl9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1NhbXBs
aW5nUHJvZmlsZXJfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NhbXBsaW5nUHJvZmlsZXIu
aD4KKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjA1NzgzKQorKysgU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTYtMDkt
MDkgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFdlYktp
dCBzdXBwb3J0IGZvciBhbiBvcHRpb24gaW4gU2FmYXJpJ3MgZGVidWcgbWVudSBzaW1pbGFyIHRv
ICJHZXQgQnl0ZWNvZGUgUHJvZmlsZSIgYnV0IGZvciB0aGUgU2FtcGxpbmcgUHJvZmlsZXIncyBk
YXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE3
ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGZvbGxvd3MgZXhhY3RseSBob3cgd2UgZHVtcCBvdXRwdXQgZm9yIHRoZQorICAgICAg
ICBieXRlY29kZSBwcm9maWxlciwgYnV0IG5vdyBhbHNvIGZvciB0aGUgc2FtcGxpbmcgcHJvZmls
ZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdL
UGFnZUdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2VQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW52YWxpZGF0ZUNhbGxiYWNrKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFNhbXBsaW5nUHJvZmls
ZXJPdXRwdXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTYtMDkt
MDkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgV0tU
aHVtYm5haWxWaWV3IHNob3VsZCBleHBvc2UgYSBtb2RlIHdoZXJlIGl0IGNhbiBiZSByZXBhcmVu
dGVkIHdpdGhvdXQgcmVzbmFwc2hvdHRpbmcKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMDU3NDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg3Nyw2ICsyODc3
LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUoc3QKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEJ5dGVjb2RlUHJvZmlsZShjYWxsYmFj
a0lEKSwgbV9wYWdlSUQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9m
aWxlck91dHB1dChzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQoreworICAgIGlmICghaXNWYWxpZCgpKSB7Cisg
ICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oU3RyaW5nKCksIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVu
a25vd24pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIHVpbnQ2NF90IGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBtX2xvYWRE
ZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7CisgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5Ojppc1dlYlByb2Nlc3NS
ZXNwb25zaXZlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCBpc1dlYlByb2Nlc3NSZXNwb25zaXZl
KT4gY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewpAQCAtNDk4NCw2
ICs0OTk2LDIwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdHJpbmdDYWxsYmFjayhjb25zdCAKICAg
ICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHJlc3VsdFN0cmluZy5p
bXBsKCkpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6aW52YWxpZGF0ZUNhbGxiYWNrKHVpbnQ2
NF90IGNhbGxiYWNrSUQpCit7CisgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8
U3RyaW5nQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOworICAgIGlmICghY2FsbGJhY2spIHsKKyAgICAg
ICAgLy8gRklYTUU6IExvZyBlcnJvciBvciBhc3NlcnQuCisgICAgICAgIC8vIHRoaXMgY2FuIHZh
bGlkbHkgaGFwcGVuIGlmIGEgbG9hZCBpbnZhbGlkYXRlZCB0aGUgY2FsbGJhY2ssIHRob3VnaAor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJh
Y2tJRHMucmVtb3ZlKGNhbGxiYWNrSUQpOworCisgICAgY2FsbGJhY2stPmludmFsaWRhdGUoKTsK
K30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnNjcmlwdFZhbHVlQ2FsbGJhY2soY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBib29sIGhhZEV4Y2VwdGlvbiwgY29uc3QgRXhj
ZXB0aW9uRGV0YWlscyYgZGV0YWlscywgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRv
IGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxTY3JpcHRWYWx1ZUNhbGxiYWNrPihjYWxsYmFj
a0lEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlz
aW9uIDIwNTc0OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAko
d29ya2luZyBjb3B5KQpAQCAtNzU5LDYgKzc1OSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0
Q29udGVudHNBc1N0cmluZyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxi
YWNrQmFzZTo6RXJyb3IpPik7CiAgICAgdm9pZCBnZXRCeXRlY29kZVByb2ZpbGUoc3RkOjpmdW5j
dGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOworICAgIHZv
aWQgZ2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0
cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CiAgICAgdm9pZCBpc1dlYlByb2Nlc3NSZXNw
b25zaXZlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCBpc1dlYlByb2Nlc3NSZXNwb25zaXZlKT4p
OwogCiAjaWYgRU5BQkxFKE1IVE1MKQpAQCAtMTM3NCw2ICsxMzc1LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRhdGFDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCB1aW50NjRfdCk7
CiAgICAgdm9pZCBpbWFnZUNhbGxiYWNrKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwg
dWludDY0X3QpOwogICAgIHZvaWQgc3RyaW5nQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgdWludDY0
X3QpOworICAgIHZvaWQgaW52YWxpZGF0ZUNhbGxiYWNrKHVpbnQ2NF90KTsKICAgICB2b2lkIHNj
cmlwdFZhbHVlQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgYm9vbCBoYWRFeGNl
cHRpb24sIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmLCB1aW50NjRfdCk7CiAgICAg
dm9pZCBjb21wdXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+
JiwgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgdWludDY0X3QpOwogICAgIHZv
aWQgdmFsaWRhdGVDb21tYW5kQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCB1aW50
NjRfdCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIwNTc0OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE2MSw2ICsx
NjEsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERhdGFDYWxsYmFjayhJUEM6
OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBJbWFn
ZUNhbGxiYWNrKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgYml0bWFwSGFuZGxlLCB1
aW50NjRfdCBjYWxsYmFja0lEKQogICAgIFN0cmluZ0NhbGxiYWNrKFN0cmluZyByZXN1bHRTdHJp
bmcsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgSW52YWxpZGF0ZUNhbGxiYWNrKHVpbnQ2NF90
IGNhbGxiYWNrSUQpCiAgICAgU2NyaXB0VmFsdWVDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2Ug
cmVzdWx0RGF0YSwgYm9vbCBoYWRFeGNlcHRpb24sIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25E
ZXRhaWxzIGRldGFpbHMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgQ29tcHV0ZWRQYWdlc0Nh
bGxiYWNrKFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiBwYWdlUmVjdHMsIGRvdWJsZSB0b3RhbFNj
YWxlRmFjdG9yRm9yUHJpbnRpbmcsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgVmFsaWRhdGVD
b21tYW5kQ2FsbGJhY2soU3RyaW5nIGNvbW1hbmQsIGJvb2wgaXNFbmFibGVkLCBpbnQzMl90IHN0
YXRlLCB1aW50NjRfdCBjYWxsYmFja0lEKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDIwNTc0OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDM4LDYgKzI0Mzgs
MTEgQEAgdm9pZCBXS1BhZ2VHZXRCeXRlY29kZVByb2ZpbGUoV0tQYWdlUmVmIAogICAgIHRvSW1w
bChwYWdlUmVmKS0+Z2V0Qnl0ZWNvZGVQcm9maWxlKHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb24o
Y29udGV4dCwgY2FsbGJhY2spKTsKIH0KIAordm9pZCBXS1BhZ2VHZXRTYW1wbGluZ1Byb2ZpbGVy
T3V0cHV0KFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VHZXRTYW1wbGlu
Z1Byb2ZpbGVyT3V0cHV0RnVuY3Rpb24gY2FsbGJhY2spCit7CisgICAgdG9JbXBsKHBhZ2VSZWYp
LT5nZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb24oY29u
dGV4dCwgY2FsbGJhY2spKTsKK30KKwogdm9pZCBXS1BhZ2VJc1dlYlByb2Nlc3NSZXNwb25zaXZl
KFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VJc1dlYlByb2Nlc3NSZXNw
b25zaXZlRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5pc1dlYlBy
b2Nlc3NSZXNwb25zaXZlKFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1dlYlByb2Nlc3NSZXNw
b25zaXZlKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJp
dmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2VQcml2YXRlLmgJKHJldmlzaW9uIDIwNTc0OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2VQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDkgQEAg
V0tfRVhQT1JUIHZvaWQgV0tQYWdlU2V0TWF5U3RhcnRNZWRpYVdoZQogdHlwZWRlZiB2b2lkICgq
V0tQYWdlR2V0Qnl0ZWNvZGVQcm9maWxlRnVuY3Rpb24pKFdLU3RyaW5nUmVmLCBXS0Vycm9yUmVm
LCB2b2lkKik7CiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VHZXRCeXRlY29kZVByb2ZpbGUoV0tQYWdl
UmVmIHBhZ2UsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUdldEJ5dGVjb2RlUHJvZmlsZUZ1bmN0aW9u
IGZ1bmN0aW9uKTsKIAordHlwZWRlZiB2b2lkICgqV0tQYWdlR2V0U2FtcGxpbmdQcm9maWxlck91
dHB1dEZ1bmN0aW9uKShXS1N0cmluZ1JlZiwgV0tFcnJvclJlZiwgdm9pZCopOworV0tfRVhQT1JU
IHZvaWQgV0tQYWdlR2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChXS1BhZ2VSZWYgcGFnZSwgdm9p
ZCogY29udGV4dCwgV0tQYWdlR2V0U2FtcGxpbmdQcm9maWxlck91dHB1dEZ1bmN0aW9uIGZ1bmN0
aW9uKTsKKwogdHlwZWRlZiB2b2lkICgqV0tQYWdlSXNXZWJQcm9jZXNzUmVzcG9uc2l2ZUZ1bmN0
aW9uKShib29sIGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUsIHZvaWQqIGNvbnRleHQpOwogV0tfRVhQ
T1JUIHZvaWQgV0tQYWdlSXNXZWJQcm9jZXNzUmVzcG9uc2l2ZShXS1BhZ2VSZWYgcGFnZSwgdm9p
ZCogY29udGV4dCwgV0tQYWdlSXNXZWJQcm9jZXNzUmVzcG9uc2l2ZUZ1bmN0aW9uIGZ1bmN0aW9u
KTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAJKHJldmlzaW9uIDIwNTc0OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgzLDYgKzE4Myw3IEBACiAj
aW5jbHVkZSA8cnVudGltZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1Zh
bHVlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KKyNpbmNsdWRlIDxydW50aW1lL1Nh
bXBsaW5nUHJvZmlsZXIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0
Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KIApAQCAtNTM3OCw2ICs1Mzc5LDI0IEBAIHZvaWQgV2ViUGFn
ZTo6Z2V0Qnl0ZWNvZGVQcm9maWxlKHVpbnQ2NF8KICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlN0cmluZ0NhbGxiYWNrKHJlc3VsdCwgY2FsbGJhY2tJRCkpOwogfQogCit2b2lkIFdl
YlBhZ2U6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQodWludDY0X3QgY2FsbGJhY2tJRCkKK3sK
KyNpZiBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCisgICAgU2FtcGxpbmdQcm9maWxlciogc2Ft
cGxpbmdQcm9maWxlciA9IEpTRE9NV2luZG93Ojpjb21tb25WTSgpLnNhbXBsaW5nUHJvZmlsZXIo
KTsKKyAgICBpZiAoIXNhbXBsaW5nUHJvZmlsZXIpIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpJbnZhbGlkYXRlQ2FsbGJhY2soY2FsbGJhY2tJRCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgU3RyaW5nUHJpbnRTdHJlYW0gcmVzdWx0OworICAgIHNhbXBs
aW5nUHJvZmlsZXItPnJlcG9ydFRvcEZ1bmN0aW9ucyhyZXN1bHQpOworICAgIHNhbXBsaW5nUHJv
ZmlsZXItPnJlcG9ydFRvcEJ5dGVjb2RlcyhyZXN1bHQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6U3RyaW5nQ2FsbGJhY2socmVzdWx0LnRvU3RyaW5nKCksIGNhbGxiYWNrSUQp
KTsKKyNlbHNlCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJbnZhbGlkYXRlQ2Fs
bGJhY2soY2FsbGJhY2tJRCkpOworI2VuZGlmCit9CisKIFBhc3NSZWZQdHI8V2ViQ29yZTo6UmFu
Z2U+IFdlYlBhZ2U6OnJhbmdlRnJvbUVkaXRpbmdSYW5nZShXZWJDb3JlOjpGcmFtZSYgZnJhbWUs
IGNvbnN0IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIEVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyBlZGl0
aW5nUmFuZ2VJc1JlbGF0aXZlVG8pCiB7CiAgICAgQVNTRVJUKHJhbmdlLmxvY2F0aW9uICE9IG5v
dEZvdW5kKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAkocmV2aXNpb24gMjA1NzQ5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTA5LDYgKzkwOSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKFdlYkRvY3VtZW50TG9hZGVyJiwg
V2ViQ29yZTo6RnJhbWUmKTsKIAogICAgIHZvaWQgZ2V0Qnl0ZWNvZGVQcm9maWxlKHVpbnQ2NF90
IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCh1aW50NjRf
dCBjYWxsYmFja0lEKTsKICAgICAKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykgfHwgRU5B
QkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKQogICAgIHZvaWQgaGFuZGxlVGVsZXBob25l
TnVtYmVyQ2xpY2soY29uc3QgU3RyaW5nJiBudW1iZXIsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjA1NzQ5KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAg
LTQwMiw2ICs0MDIsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAg
ICBTZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoT3B0aW9uYWw8dWludDMyX3Q+IHNjcm9sbGJhclN0
eWxlKQogCiAgICAgR2V0Qnl0ZWNvZGVQcm9maWxlKHVpbnQ2NF90IGNhbGxiYWNrSUQpCisKKyAg
ICBHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgCiAg
ICAgVGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25hcHNob3RSZWN0LCBXZWJDb3JlOjpJ
bnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
CiAjaWYgUExBVEZPUk0oTUFDKQo=
</data>
<flag name="review"
          id="311804"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288581</attachid>
            <date>2016-09-12 10:41:16 -0700</date>
            <delta_ts>2016-09-12 14:15:14 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>11097</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTgxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE2LTA5LTEyICBTYWFtIEJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXZWJLaXQgc3VwcG9ydCBm
b3IgYW4gb3B0aW9uIGluIFNhZmFyaSdzIGRlYnVnIG1lbnUgc2ltaWxhciB0byAiR2V0IEJ5dGVj
b2RlIFByb2ZpbGUiIGJ1dCBmb3IgdGhlIFNhbXBsaW5nIFByb2ZpbGVyJ3MgZGF0YQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNzg1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJz
L3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5oOiBBZGRlZC4KKwogMjAxNi0wOS0xMiAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIC13ZWJraXQt
dHJhbnNpdGlvbi0qIGFuZCAtd2Via2l0LWFuaW1hdGlvbi0qIHByb3BlcnRpZXMgYmUgcHVyZSBh
bGlhc2VzIG9mIHRoZSB1bnByZWZpeGVkIG9uZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Zvcndh
cmRpbmdIZWFkZXJzL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGlt
ZS9TYW1wbGluZ1Byb2ZpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBACisjaWZu
ZGVmIFdlYkNvcmVfRldEX1NhbXBsaW5nUHJvZmlsZXJfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9T
YW1wbGluZ1Byb2ZpbGVyX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TYW1wbGluZ1Byb2Zp
bGVyLmg+CisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTgxMSkKKysrIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE2
LTA5LTEyICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBX
ZWJLaXQgc3VwcG9ydCBmb3IgYW4gb3B0aW9uIGluIFNhZmFyaSdzIGRlYnVnIG1lbnUgc2ltaWxh
ciB0byAiR2V0IEJ5dGVjb2RlIFByb2ZpbGUiIGJ1dCBmb3IgdGhlIFNhbXBsaW5nIFByb2ZpbGVy
J3MgZGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYxNzg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBUaGlz
IHBhdGNoIGZvbGxvd3MgaW4gdGhlIHN0ZXBzIG9mIGhvdyB3ZSBkdW1wIG91dHB1dCBmb3IgdGhl
CisgICAgICAgIGludGVybmFsIEpTQyBieXRlY29kZSBwcm9maWxlciB0b29sLCBidXQgbm93IGFs
c28gZm9yIHRoZSBpbnRlcm5hbAorICAgICAgICBKU0Mgc2FtcGxpbmcgcHJvZmlsZXIgdG9vbC4g
VGhpcyBjYW4gYmUgdXNlZCB3aGVuIGRvaW5nIHBlcmZvcm1hbmNlCisgICAgICAgIGFuYWx5c2lz
IHdvcmsgYW5hbHl6aW5nIHRoZSBKUyBleGVjdXRpb24gb2YgYSBwYWdlLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VHZXRTYW1wbGluZ1By
b2ZpbGVyT3V0cHV0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmludmFsaWRhdGVTdHJpbmdDYWxsYmFjayk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE2LTA5LTA5ICBUaW0gSG9y
dG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFdLVGh1bWJuYWlsVmll
dyBzaG91bGQgZXhwb3NlIGEgbW9kZSB3aGVyZSBpdCBjYW4gYmUgcmVwYXJlbnRlZCB3aXRob3V0
IHJlc25hcHNob3R0aW5nCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAkocmV2aXNpb24gMjA1ODExKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NzcsNiArMjg3NywxOCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0Qnl0ZWNvZGVQcm9maWxlKHN0CiAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRCeXRlY29kZVByb2ZpbGUoY2FsbGJhY2tJRCksIG1fcGFn
ZUlEKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQo
c3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4g
Y2FsbGJhY2tGdW5jdGlvbikKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkgeworICAgICAgICBjYWxs
YmFja0Z1bmN0aW9uKFN0cmluZygpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgbV9sb2FkRGVwZW5kZW50U3Ry
aW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6R2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChjYWxsYmFja0lEKSwgbV9w
YWdlSUQpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6aXNXZWJQcm9jZXNzUmVzcG9uc2l2ZShz
dGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wgaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZSk+IGNhbGxiYWNr
RnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKQEAgLTQ5ODQsNiArNDk5NiwyMCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RyaW5nQ2FsbGJhY2soY29uc3QgCiAgICAgY2FsbGJhY2st
PnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShyZXN1bHRTdHJpbmcuaW1wbCgpKTsKIH0K
IAordm9pZCBXZWJQYWdlUHJveHk6OmludmFsaWRhdGVTdHJpbmdDYWxsYmFjayh1aW50NjRfdCBj
YWxsYmFja0lEKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFN0cmlu
Z0NhbGxiYWNrPihjYWxsYmFja0lEKTsKKyAgICBpZiAoIWNhbGxiYWNrKSB7CisgICAgICAgIC8v
IEZJWE1FOiBMb2cgZXJyb3Igb3IgYXNzZXJ0LgorICAgICAgICAvLyB0aGlzIGNhbiB2YWxpZGx5
IGhhcHBlbiBpZiBhIGxvYWQgaW52YWxpZGF0ZWQgdGhlIGNhbGxiYWNrLCB0aG91Z2gKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURz
LnJlbW92ZShjYWxsYmFja0lEKTsKKworICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7Cit9CisK
IHZvaWQgV2ViUGFnZVByb3h5OjpzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IEV4Y2VwdGlv
bkRldGFpbHMmIGRldGFpbHMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxs
YmFjayA9IG1fY2FsbGJhY2tzLnRha2U8U2NyaXB0VmFsdWVDYWxsYmFjaz4oY2FsbGJhY2tJRCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAy
MDU4MTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTc1OSw2ICs3NTksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldENvbnRl
bnRzQXNTdHJpbmcoc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4pOwogICAgIHZvaWQgZ2V0Qnl0ZWNvZGVQcm9maWxlKHN0ZDo6ZnVuY3Rpb248
dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKKyAgICB2b2lkIGdl
dFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcm
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwogICAgIHZvaWQgaXNXZWJQcm9jZXNzUmVzcG9uc2l2
ZShzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wgaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZSk+KTsKIAog
I2lmIEVOQUJMRShNSFRNTCkKQEAgLTEzNzQsNiArMTM3NSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgdWludDY0X3QpOwogICAg
IHZvaWQgaW1hZ2VDYWxsYmFjayhjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIHVpbnQ2
NF90KTsKICAgICB2b2lkIHN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90KTsK
KyAgICB2b2lkIGludmFsaWRhdGVTdHJpbmdDYWxsYmFjayh1aW50NjRfdCk7CiAgICAgdm9pZCBz
Y3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGJvb2wgaGFkRXhj
ZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiwgdWludDY0X3QpOwogICAg
IHZvaWQgY29tcHV0ZWRQYWdlc0NhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0
PiYsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIHVpbnQ2NF90KTsKICAgICB2
b2lkIHZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwgdWlu
dDY0X3QpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMDU4MTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNiAr
MTYxLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEYXRhQ2FsbGJhY2soSVBD
OjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgSW1h
Z2VDYWxsYmFjayhXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGJpdG1hcEhhbmRsZSwg
dWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBTdHJpbmdDYWxsYmFjayhTdHJpbmcgcmVzdWx0U3Ry
aW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIEludmFsaWRhdGVTdHJpbmdDYWxsYmFjayh1
aW50NjRfdCBjYWxsYmFja0lEKQogICAgIFNjcmlwdFZhbHVlQ2FsbGJhY2soSVBDOjpEYXRhUmVm
ZXJlbmNlIHJlc3VsdERhdGEsIGJvb2wgaGFkRXhjZXB0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6RXhj
ZXB0aW9uRGV0YWlscyBkZXRhaWxzLCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIENvbXB1dGVk
UGFnZXNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gcGFnZVJlY3RzLCBkb3VibGUg
dG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIFZh
bGlkYXRlQ29tbWFuZENhbGxiYWNrKFN0cmluZyBjb21tYW5kLCBib29sIGlzRW5hYmxlZCwgaW50
MzJfdCBzdGF0ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAyMDU4MTEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQzOCw2
ICsyNDM4LDExIEBAIHZvaWQgV0tQYWdlR2V0Qnl0ZWNvZGVQcm9maWxlKFdLUGFnZVJlZiAKICAg
ICB0b0ltcGwocGFnZVJlZiktPmdldEJ5dGVjb2RlUHJvZmlsZSh0b0dlbmVyaWNDYWxsYmFja0Z1
bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKK3ZvaWQgV0tQYWdlR2V0U2FtcGxpbmdQ
cm9maWxlck91dHB1dChXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlR2V0
U2FtcGxpbmdQcm9maWxlck91dHB1dEZ1bmN0aW9uIGNhbGxiYWNrKQoreworICAgIHRvSW1wbChw
YWdlUmVmKS0+Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCh0b0dlbmVyaWNDYWxsYmFja0Z1bmN0
aW9uKGNvbnRleHQsIGNhbGxiYWNrKSk7Cit9CisKIHZvaWQgV0tQYWdlSXNXZWJQcm9jZXNzUmVz
cG9uc2l2ZShXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlSXNXZWJQcm9j
ZXNzUmVzcG9uc2l2ZUZ1bmN0aW9uIGNhbGxiYWNrKQogewogICAgIHRvSW1wbChwYWdlUmVmKS0+
aXNXZWJQcm9jZXNzUmVzcG9uc2l2ZShbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNXZWJQcm9j
ZXNzUmVzcG9uc2l2ZSkgewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlUHJpdmF0ZS5oCShyZXZpc2lvbiAyMDU4MTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5
Niw5IEBAIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVNldE1heVN0YXJ0TWVkaWFXaGUKIHR5cGVkZWYg
dm9pZCAoKldLUGFnZUdldEJ5dGVjb2RlUHJvZmlsZUZ1bmN0aW9uKShXS1N0cmluZ1JlZiwgV0tF
cnJvclJlZiwgdm9pZCopOwogV0tfRVhQT1JUIHZvaWQgV0tQYWdlR2V0Qnl0ZWNvZGVQcm9maWxl
KFdLUGFnZVJlZiBwYWdlLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VHZXRCeXRlY29kZVByb2ZpbGVG
dW5jdGlvbiBmdW5jdGlvbik7CiAKK3R5cGVkZWYgdm9pZCAoKldLUGFnZUdldFNhbXBsaW5nUHJv
ZmlsZXJPdXRwdXRGdW5jdGlvbikoV0tTdHJpbmdSZWYsIFdLRXJyb3JSZWYsIHZvaWQqKTsKK1dL
X0VYUE9SVCB2b2lkIFdLUGFnZUdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoV0tQYWdlUmVmIHBh
Z2UsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXRGdW5jdGlv
biBmdW5jdGlvbik7CisKIHR5cGVkZWYgdm9pZCAoKldLUGFnZUlzV2ViUHJvY2Vzc1Jlc3BvbnNp
dmVGdW5jdGlvbikoYm9vbCBpc1dlYlByb2Nlc3NSZXNwb25zaXZlLCB2b2lkKiBjb250ZXh0KTsK
IFdLX0VYUE9SVCB2b2lkIFdLUGFnZUlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUoV0tQYWdlUmVmIHBh
Z2UsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmVGdW5jdGlvbiBm
dW5jdGlvbik7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyMDU4MTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Myw2ICsxODMs
NyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUv
SlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CisjaW5jbHVkZSA8cnVu
dGltZS9TYW1wbGluZ1Byb2ZpbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNs
dWRlIDx3dGYvVGVtcG9yYXJ5Q2hhbmdlLmg+CiAKQEAgLTUzNzgsNiArNTM3OSwyNCBAQCB2b2lk
IFdlYlBhZ2U6OmdldEJ5dGVjb2RlUHJvZmlsZSh1aW50NjRfCiAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpTdHJpbmdDYWxsYmFjayhyZXN1bHQsIGNhbGxiYWNrSUQpKTsKIH0KIAor
dm9pZCBXZWJQYWdlOjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KHVpbnQ2NF90IGNhbGxiYWNr
SUQpCit7CisjaWYgRU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVSKQorICAgIFNhbXBsaW5nUHJvZmls
ZXIqIHNhbXBsaW5nUHJvZmlsZXIgPSBKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKS5zYW1wbGluZ1By
b2ZpbGVyKCk7CisgICAgaWYgKCFzYW1wbGluZ1Byb2ZpbGVyKSB7CisgICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6SW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKGNhbGxiYWNrSUQp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFN0cmluZ1ByaW50U3RyZWFtIHJlc3Vs
dDsKKyAgICBzYW1wbGluZ1Byb2ZpbGVyLT5yZXBvcnRUb3BGdW5jdGlvbnMocmVzdWx0KTsKKyAg
ICBzYW1wbGluZ1Byb2ZpbGVyLT5yZXBvcnRUb3BCeXRlY29kZXMocmVzdWx0KTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxiYWNrKHJlc3VsdC50b1N0cmluZygp
LCBjYWxsYmFja0lEKSk7CisjZWxzZQorICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
SW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKGNhbGxiYWNrSUQpKTsKKyNlbmRpZgorfQorCiBQYXNz
UmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBXZWJQYWdlOjpyYW5nZUZyb21FZGl0aW5nUmFuZ2UoV2Vi
Q29yZTo6RnJhbWUmIGZyYW1lLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBFZGl0aW5nUmFu
Z2VJc1JlbGF0aXZlVG8gZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvKQogewogICAgIEFTU0VSVChy
YW5nZS5sb2NhdGlvbiAhPSBub3RGb3VuZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDIwNTgxMSkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTkwOSw2
ICs5MDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVDYWNoZWREb2N1bWVudExvYWRlcihX
ZWJEb2N1bWVudExvYWRlciYsIFdlYkNvcmU6OkZyYW1lJik7CiAKICAgICB2b2lkIGdldEJ5dGVj
b2RlUHJvZmlsZSh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFNhbXBsaW5nUHJv
ZmlsZXJPdXRwdXQodWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfQ09OVFJPTFMpIHx8IEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikKICAgICB2
b2lkIGhhbmRsZVRlbGVwaG9uZU51bWJlckNsaWNrKGNvbnN0IFN0cmluZyYgbnVtYmVyLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIwNTgxMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC00MDIsNiArNDAyLDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKE9wdGlvbmFsPHVp
bnQzMl90PiBzY3JvbGxiYXJTdHlsZSkKIAogICAgIEdldEJ5dGVjb2RlUHJvZmlsZSh1aW50NjRf
dCBjYWxsYmFja0lEKQorCisgICAgR2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCh1aW50NjRfdCBj
YWxsYmFja0lEKQogICAgIAogICAgIFRha2VTbmFwc2hvdChXZWJDb3JlOjpJbnRSZWN0IHNuYXBz
aG90UmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBTaXplLCB1aW50MzJfdCBvcHRpb25zLCB1
aW50NjRfdCBjYWxsYmFja0lEKQogI2lmIFBMQVRGT1JNKE1BQykK
</data>

          </attachment>
      

    </bug>

</bugzilla>