<?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>95179</bug_id>
          
          <creation_ts>2012-08-28 01:56:36 -0700</creation_ts>
          <short_desc>[BlackBerry] One shot drawing synchronization broken</short_desc>
          <delta_ts>2012-08-28 08:12:39 -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>WebKit BlackBerry</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrew Lo">anlo</reporter>
          <assigned_to name="Andrew Lo">anlo</assigned_to>
          <cc>anilsson</cc>
    
    <cc>manyoso</cc>
    
    <cc>mifenton</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>staikos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>706177</commentid>
    <comment_count>0</comment_count>
    <who name="Andrew Lo">anlo</who>
    <bug_when>2012-08-28 01:56:36 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/126598 broke one shot drawing synchronization, which is a render + commit that happens without a blit in between.
This can cause something that moves from the backing store to an AC layer to be drawn twice or not drawn for a frame, resulting in flashing.

Reproducible on m.bgr.com, when you click the arrows to expand a story, the top bar flashes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706191</commentid>
    <comment_count>1</comment_count>
      <attachid>160938</attachid>
    <who name="Andrew Lo">anlo</who>
    <bug_when>2012-08-28 02:30:19 -0700</bug_when>
    <thetext>Created attachment 160938
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706271</commentid>
    <comment_count>2</comment_count>
      <attachid>160957</attachid>
    <who name="Andrew Lo">anlo</who>
    <bug_when>2012-08-28 06:08:49 -0700</bug_when>
    <thetext>Created attachment 160957
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706284</commentid>
    <comment_count>3</comment_count>
      <attachid>160957</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-08-28 06:32:34 -0700</bug_when>
    <thetext>Comment on attachment 160957
Patch

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

&gt; Source/WebKit/blackberry/Api/BackingStore.cpp:2625
&gt; +    if (!shouldDirectRenderingToWindow()) {
&gt; +        if (!m_webPage-&gt;d-&gt;needsOneShotDrawingSynchronization())
&gt; +            blitVisibleContents();
&gt; +    } else
&gt; +        invalidateWindow();

I was not expecting we do anything other than &quot;notifying&quot; from a notify-like method.

So this method should be renamed to ::doSomethingAndNotifyBlah</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706285</commentid>
    <comment_count>4</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-08-28 06:36:11 -0700</bug_when>
    <thetext>Some background:

One shot drawing sync (OSDS) happens when content transitions from being drawn to the BS, to being drawn to an AC layer instead, or vice versa.

The optimal order of performing these operations are:

render to BS
commit (render to AC layers, start animations)
blit

This is because commit internally does more rendering, starts animations, but you won&apos;t actually see the animations until the blit. This order guarantees minimum latency between starting animations and actually rendering the effects of the animations.

To make sure animations appear, we recently made a change so the commit operation contains a blit:

render to BS
commit (render to AC layers, start animations, blit)

The commit operation was placed in renderContents, before the rendering. And a BackingStorePrivate::renderJob() run could consist of several renderContents calls.

So you&apos;d get this:

commit (render to AC layers, start animations, blit)
render to BS
render some more to BS
blit

This guaranteed that one shot drawing sync would flicker, because it blits immediately after a commit (when we&apos;ve removed the layer from the scene graph) but before we&apos;ve rendered the layer&apos;s contents to the BS. So the layer would be drawn exactly zero times if the OSDS was due to a layer being removed.

Similarly, it would draw a layer twice if the OSDS was due to a layer being added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706289</commentid>
    <comment_count>5</comment_count>
      <attachid>160957</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-08-28 06:40:53 -0700</bug_when>
    <thetext>Comment on attachment 160957
Patch

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

&gt;&gt; Source/WebKit/blackberry/Api/BackingStore.cpp:2625
&gt;&gt; +        invalidateWindow();
&gt; 
&gt; I was not expecting we do anything other than &quot;notifying&quot; from a notify-like method.
&gt; 
&gt; So this method should be renamed to ::doSomethingAndNotifyBlah

So the idea is that the RenderQueue is notifying it&apos;s listener, the BackingStore, and that it&apos;s a callback, so the BackingStore should take appropriate action. Then, the BackingStore&apos;s appropriate action happens to be to blit and to in turn notify it&apos;s listener, which is the WebPageClient.

The naming and content of the method&apos;s implementation would make more sense if we introduced an interface &quot;RenderQueueClient&quot; and had teh BackingStore implement that interface, but that would just introduce a virtual method for no good reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706292</commentid>
    <comment_count>6</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-08-28 06:45:41 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 160957 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=160957&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/blackberry/Api/BackingStore.cpp:2625
&gt; &gt;&gt; +        invalidateWindow();
&gt; &gt; 
&gt; &gt; I was not expecting we do anything other than &quot;notifying&quot; from a notify-like method.
&gt; &gt; 
&gt; &gt; So this method should be renamed to ::doSomethingAndNotifyBlah
&gt; 
&gt; So the idea is that the RenderQueue is notifying it&apos;s listener, the BackingStore, and that it&apos;s a callback, so the BackingStore should take appropriate action. Then, the BackingStore&apos;s appropriate action happens to be to blit and to in turn notify it&apos;s listener, which is the WebPageClient.
&gt; 
&gt; The naming and content of the method&apos;s implementation would make more sense if we introduced an interface &quot;RenderQueueClient&quot; and had teh BackingStore implement that interface, but that would just introduce a virtual method for no good reason.

so it should be called didBleh?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706294</commentid>
    <comment_count>7</comment_count>
      <attachid>160957</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-08-28 06:46:09 -0700</bug_when>
    <thetext>Comment on attachment 160957
Patch

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

&gt;&gt;&gt; Source/WebKit/blackberry/Api/BackingStore.cpp:2625
&gt;&gt;&gt; +        invalidateWindow();
&gt;&gt; 
&gt;&gt; I was not expecting we do anything other than &quot;notifying&quot; from a notify-like method.
&gt;&gt; 
&gt;&gt; So this method should be renamed to ::doSomethingAndNotifyBlah
&gt; 
&gt; So the idea is that the RenderQueue is notifying it&apos;s listener, the BackingStore, and that it&apos;s a callback, so the BackingStore should take appropriate action. Then, the BackingStore&apos;s appropriate action happens to be to blit and to in turn notify it&apos;s listener, which is the WebPageClient.
&gt; 
&gt; The naming and content of the method&apos;s implementation would make more sense if we introduced an interface &quot;RenderQueueClient&quot; and had teh BackingStore implement that interface, but that would just introduce a virtual method for no good reason.

Antonio has a point that &quot;notifyBlah&quot; is not the regular naming convention for WebKit codestyle when naming callbacks. Callbacks are typically named &quot;will/didBlah&quot; and delegate methods are named &quot;bool shouldBlah&quot;.
So, we established that conceptually, BackingStore is implementing &quot;RenderQueueClient&quot; interface, which has &quot;virtual void RenderQueueClient::notifyContentRendered(const IntRect&amp;)&quot;, but we devirtualized the whole thing and got rid of the interface before it even existed
But if RenderQueueClient really existed, the method should follow WebKit callback interface naming conventions and actually be called &quot;didRenderContent(IntRect)&quot; or &quot;renderQueueDidRenderContent(RenderQueue*, IntRect)&quot;. Which one would you prefer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706295</commentid>
    <comment_count>8</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-08-28 06:46:56 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (From update of attachment 160957 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=160957&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebKit/blackberry/Api/BackingStore.cpp:2625
&gt; &gt; &gt;&gt; +        invalidateWindow();
&gt; &gt; &gt; 
&gt; &gt; &gt; I was not expecting we do anything other than &quot;notifying&quot; from a notify-like method.
&gt; &gt; &gt; 
&gt; &gt; &gt; So this method should be renamed to ::doSomethingAndNotifyBlah
&gt; &gt; 
&gt; &gt; So the idea is that the RenderQueue is notifying it&apos;s listener, the BackingStore, and that it&apos;s a callback, so the BackingStore should take appropriate action. Then, the BackingStore&apos;s appropriate action happens to be to blit and to in turn notify it&apos;s listener, which is the WebPageClient.
&gt; &gt; 
&gt; &gt; The naming and content of the method&apos;s implementation would make more sense if we introduced an interface &quot;RenderQueueClient&quot; and had teh BackingStore implement that interface, but that would just introduce a virtual method for no good reason.
&gt; 
&gt; so it should be called didBleh?

Exactly, hehee</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706336</commentid>
    <comment_count>9</comment_count>
      <attachid>160978</attachid>
    <who name="Andrew Lo">anlo</who>
    <bug_when>2012-08-28 07:46:26 -0700</bug_when>
    <thetext>Created attachment 160978
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706357</commentid>
    <comment_count>10</comment_count>
      <attachid>160978</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-28 08:12:36 -0700</bug_when>
    <thetext>Comment on attachment 160978
Patch

Clearing flags on attachment: 160978

Committed r126878: &lt;http://trac.webkit.org/changeset/126878&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706358</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-28 08:12:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160938</attachid>
            <date>2012-08-28 02:30:19 -0700</date>
            <delta_ts>2012-08-28 06:08:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95179-20120828113346.patch</filename>
            <type>text/plain</type>
            <size>13630</size>
            <attacher name="Andrew Lo">anlo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCA4NDQ2YTRhNzQ0NzM1YzBiYWNlM2Y1YjFhZThjMThiNDYwZThkYjdmLi4xMzEwMjhlZjJi
OWVmYTcwOThmZTQ1OTgzYjliM2ZhM2Q1NmQ3OGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMi0wOC0yOCAgQW5kcmV3IExvICA8YW5sb0ByaW0u
Y29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBPbmUgc2hvdCBkcmF3aW5nIHN5bmNocm9uaXph
dGlvbiBicm9rZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk1MTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTWFrZSBzdXJlIG5vIGJhY2tpbmcgc3RvcmUgYmxpdHMgaGFwcGVuIGR1cmluZyBvbmUgc2hv
dCBkcmF3aW5nCisgICAgICAgIHN5bmNocm9uaXphdGlvbi4KKyAgICAgICAgU2luY2Ugd2UgYWx3
YXlzIGJsaXQgZHVyaW5nIGNvbW1pdCBub3csIG1ha2Ugc3VyZSB3ZSBkb24ndCBibGl0IGlmCisg
ICAgICAgIHdlIGNvbW1pdCBhZnRlciBhIHJlbmRlci4KKyAgICAgICAgV2Ugbm8gbG9uZ2VyIG5l
ZWQgYSBkZWZlcnJlZCBibGl0IHNpbmNlIHdlIGRvbid0IGNvbW1pdCBkdXJpbmcgcmVuZGVyQ29u
dGVudHMKKyAgICAgICAgbm93LiBJbnN0ZWFkLCB3ZSBvbmx5IGNvbW1pdCAmIGJsaXQgb25jZSBh
ZnRlciBhIGZ1bGwgcmVuZGVyIGpvYi4KKworICAgICAgICAqIEFwaS9CYWNraW5nU3RvcmUuY3Bw
OgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpCYWNr
aW5nU3RvcmVQcml2YXRlKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0
b3JlUHJpdmF0ZTo6cmVwYWludCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tp
bmdTdG9yZVByaXZhdGU6OnNsb3dTY3JvbGwpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpCYWNraW5nU3RvcmVQcml2YXRlOjpyZW5kZXJKb2IpOgorICAgICAgICAoQmxhY2tCZXJyeTo6
V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0VmlzaWJsZUNvbnRlbnRzKToKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdENvbnRlbnRz
KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVu
ZGVyQ29udGVudHMpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEJsYWNrQmVycnk6Oldl
YktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6ZHJhd0FuZEJsZW5kTGF5ZXJzRm9yRGlyZWN0UmVu
ZGVyaW5nKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0
ZTo6bm90aWZ5Q29udGVudFJlbmRlcmVkKToKKyAgICAgICAgKiBBcGkvQmFja2luZ1N0b3JlX3Au
aDoKKyAgICAgICAgKEJhY2tpbmdTdG9yZVByaXZhdGUpOgorICAgICAgICAqIEFwaS9XZWJQYWdl
LmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6Oldl
YlBhZ2VQcml2YXRlOjpyb290TGF5ZXJDb21taXRUaW1lckZpcmVkKToKKyAgICAgICAgKiBBcGkv
V2ViUGFnZV9wLmg6CisgICAgICAgIChXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgICogV2ViS2l0
U3VwcG9ydC9SZW5kZXJRdWV1ZS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlJl
bmRlclF1ZXVlOjpyZW5kZXJBbGxDdXJyZW50UmVndWxhclJlbmRlckpvYnMpOgorICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpSZW5kZXJRdWV1ZTo6cmVuZGVyUmVndWxhclJlbmRlckpvYik6
CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlJlbmRlclF1ZXVlOjp2aXNpYmxlU2Nyb2xs
Sm9ic0NvbXBsZXRlZCk6CisKIDIwMTItMDgtMjQgIExpYW0gUXVpbm4gIDxscXVpbm5AcmltLmNv
bT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gRGVidWcgYXNzZXJ0aW9uIGZpcmVzIGluIEJhY2tp
bmdTdG9yZVByaXZhdGU6OnJlbmRlckpvYigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL0JhY2tpbmdTdG9yZS5jcHAKaW5kZXggZDNjMmNlOTNhNjI1YjZkY2MxZmIxMzE0NTk4ZGU4
ODAxMDY0MWZjYS4uMGJiOTcyYzE5MDhlYTI0ZjljNTUyYmY2M2UwZjIxMjA4ZGIxYzhjZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlLmNwcApAQCAtMjA5
LDcgKzIwOSw2IEBAIEJhY2tpbmdTdG9yZVByaXZhdGU6OkJhY2tpbmdTdG9yZVByaXZhdGUoKQog
ICAgICwgbV9jdXJyZW50V2luZG93QmFja0J1ZmZlcigwKQogICAgICwgbV9wcmVmZXJyZWRUaWxl
TWF0cml4RGltZW5zaW9uKFZlcnRpY2FsKQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKLSAgICAsIG1fbmVlZHNEcmF3TGF5ZXJzT25Db21taXQoZmFsc2UpCiAgICAgLCBtX2lzRGly
ZWN0UmVuZGVyaW5nQW5pbWF0aW9uTWVzc2FnZVNjaGVkdWxlZChmYWxzZSkKICNlbmRpZgogewpA
QCAtMzkxLDcgKzM5MCw3IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVwYWludChjb25z
dCBQbGF0Zm9ybTo6SW50UmVjdCYgd2luZG93UmVjdCwKIAogICAgICAgICBpZiAoaW1tZWRpYXRl
KSB7CiAgICAgICAgICAgICBpZiAocmVuZGVyKHJlY3QpKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KCFzaG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRvdygpKQorICAgICAgICAgICAgICAgIGlmICgh
c2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSAmJiAhbV93ZWJQYWdlLT5kLT5jb21taXRS
b290TGF5ZXJJZk5lZWRlZCgpKQogICAgICAgICAgICAgICAgICAgICBibGl0VmlzaWJsZUNvbnRl
bnRzKCk7CiAgICAgICAgICAgICAgICAgbV93ZWJQYWdlLT5kLT5tX2NsaWVudC0+bm90aWZ5Q29u
dGVudFJlbmRlcmVkKHJlY3QpOwogICAgICAgICAgICAgfQpAQCAtNDE0LDcgKzQxMyw3IEBAIHZv
aWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6c2xvd1Njcm9sbChjb25zdCBQbGF0Zm9ybTo6SW50U2l6
ZSYgZGVsdGEsIGNvbnN0IFBsYXRmCiAgICAgUGxhdGZvcm06OkludFJlY3QgcmVjdCA9IG1fd2Vi
UGFnZS0+ZC0+bWFwVG9UcmFuc2Zvcm1lZChtX2NsaWVudC0+bWFwRnJvbVZpZXdwb3J0VG9Db250
ZW50cyh3aW5kb3dSZWN0KSk7CiAKICAgICBpZiAoaW1tZWRpYXRlKSB7Ci0gICAgICAgIGlmIChy
ZW5kZXIocmVjdCkgJiYgIWlzU3VzcGVuZGVkKCkgJiYgIXNob3VsZERpcmVjdFJlbmRlcmluZ1Rv
V2luZG93KCkpCisgICAgICAgIGlmIChyZW5kZXIocmVjdCkgJiYgIWlzU3VzcGVuZGVkKCkgJiYg
IXNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KCkgJiYgIW1fd2ViUGFnZS0+ZC0+Y29tbWl0
Um9vdExheWVySWZOZWVkZWQoKSkKICAgICAgICAgICAgIGJsaXRWaXNpYmxlQ29udGVudHMoKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBtX3JlbmRlclF1ZXVlLT5hZGRUb1F1ZXVlKFJlbmRlclF1
ZXVlOjpWaXNpYmxlU2Nyb2xsLCByZWN0KTsKQEAgLTUyNCw3ICs1MjMsNyBAQCB2b2lkIEJhY2tp
bmdTdG9yZVByaXZhdGU6OnJlbmRlckpvYigpCiAgICAgbV9yZW5kZXJRdWV1ZS0+cmVuZGVyKCFt
X3N1c3BlbmRSZWd1bGFyUmVuZGVySm9icyk7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCi0gICAgZHJhd0xheWVyc09uQ29tbWl0SWZOZWVkZWQoKTsKKyAgICBtX3dlYlBhZ2Ut
PmQtPmNvbW1pdFJvb3RMYXllcklmTmVlZGVkKCk7CiAjZW5kaWYKIAogICAgIGlmIChzaG91bGRQ
ZXJmb3JtUmVuZGVySm9icygpKQpAQCAtMTE0OCwxMSArMTE0Nyw2IEBAIHZvaWQgQmFja2luZ1N0
b3JlUHJpdmF0ZTo6YmxpdFZpc2libGVDb250ZW50cyhib29sIGZvcmNlKQogICAgIH0KIAogICAg
IGlmICghQmxhY2tCZXJyeTo6UGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xp
ZW50KCktPmlzQ3VycmVudFRocmVhZCgpKSB7Ci0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQotICAgICAgICAvLyBUaGUgYmxpdCB3aWxsIGRyYXcgYWNjZWxlcmF0ZWQgY29tcG9zaXRp
bmcgbGF5ZXJzIGlmIG5lY2Vzc2FyeQotICAgICAgICBtX25lZWRzRHJhd0xheWVyc09uQ29tbWl0
ID0gZmFsc2U7Ci0jZW5kaWYKLQogICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6dXNlcklu
dGVyZmFjZVRocmVhZE1lc3NhZ2VDbGllbnQoKS0+ZGlzcGF0Y2hNZXNzYWdlKAogICAgICAgICAg
ICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OmNyZWF0ZU1ldGhvZENhbGxNZXNzYWdlKAogICAgICAg
ICAgICAgICAgICZCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0VmlzaWJsZUNvbnRlbnRzLCB0aGlz
LCBmb3JjZSkpOwpAQCAtMTI0OCwxMSArMTI0Miw2IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0
ZTo6YmxpdENvbnRlbnRzKGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBkc3RSZWN0LAogICAgIH0K
IAogICAgIGlmICghQmxhY2tCZXJyeTo6UGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNz
YWdlQ2xpZW50KCktPmlzQ3VycmVudFRocmVhZCgpKSB7Ci0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQotICAgICAgICAvLyBUaGUgYmxpdCB3aWxsIGRyYXcgYWNjZWxlcmF0ZWQgY29t
cG9zaXRpbmcgbGF5ZXJzIGlmIG5lY2Vzc2FyeQotICAgICAgICBtX25lZWRzRHJhd0xheWVyc09u
Q29tbWl0ID0gZmFsc2U7Ci0jZW5kaWYKLQogICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
dXNlckludGVyZmFjZVRocmVhZE1lc3NhZ2VDbGllbnQoKS0+ZGlzcGF0Y2hNZXNzYWdlKAogICAg
ICAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OmNyZWF0ZU1ldGhvZENhbGxNZXNzYWdlKAog
ICAgICAgICAgICAgICAgICZCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0Q29udGVudHMsIHRoaXMs
IGRzdFJlY3QsIHNyY1JlY3QsIGZvcmNlKSk7CkBAIC0yMjg5LDE4ICsyMjc4LDYgQEAgdm9pZCBC
YWNraW5nU3RvcmVQcml2YXRlOjpyZW5kZXJDb250ZW50cyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
R3JhcGhpY3M6OkJ1ZmZlcioKICAgICBpZiAoY29udGVudHNTaXplLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIC8vIFdo
ZW4gY29tbWl0dGluZyB0aGUgcGVuZGluZyBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBsYXllciBj
aGFuZ2VzLCBpdCdzCi0gICAgLy8gbmVjZXNzYXJ5IHRvIGRyYXcgdGhlIG5ldyBsYXllciBhcHBl
YXJhbmNlLiBUaGlzIGlzIG5vcm1hbGx5IGRvbmUgYXMKLSAgICAvLyBwYXJ0IG9mIGEgYmxpdCwg
YnV0IGlmIG5vIGJsaXQgaGFwcGVucyBiZWNhdXNlIG9mIHRoaXMgcmVuZGVyaW5nLCBmb3IKLSAg
ICAvLyBleGFtcGxlIGJlY2F1c2Ugd2UncmUgcmVuZGVyaW5nIGFuIG9mZnNjcmVlbiByZWN0YW5n
bGUsIHNvbWVvbmUgbmVlZHMgdG8KLSAgICAvLyBjYXRjaCB0aGlzIGZsYWcgYW5kIG1ha2Ugc3Vy
ZSB0aG9zZSBsYXllcnMgZ2V0IGRyYXduLgotICAgIC8vIFRoaXMgaXMganVzdCBhIGNvbXBsaWNh
dGVkIHdheSB0byBkbwotICAgIC8vICJpZiAoY29tbWl0Um9vdExheWVySWZOZWVkZWQoKSkgZHJh
d0xheWVyc09uQ29tbWl0KCk7IgotICAgIGlmIChtX3dlYlBhZ2UtPmQtPmNvbW1pdFJvb3RMYXll
cklmTmVlZGVkKCkpCi0gICAgICAgIG1fbmVlZHNEcmF3TGF5ZXJzT25Db21taXQgPSB0cnVlOwot
I2VuZGlmCi0KICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkRyYXdhYmxlKiBi
dWZmZXJEcmF3YWJsZSA9CiAgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6
bG9ja0J1ZmZlckRyYXdhYmxlKHRhcmdldEJ1ZmZlcik7CiAKQEAgLTI2MDIsMTggKzI1NzksNiBA
QCBCYWNraW5nU3RvcmVXaW5kb3dCdWZmZXJTdGF0ZSogQmFja2luZ1N0b3JlUHJpdmF0ZTo6d2lu
ZG93QmFja0J1ZmZlclN0YXRlKCkgY29ucwogfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQotYm9vbCBCYWNraW5nU3RvcmVQcml2YXRlOjpkcmF3TGF5ZXJzT25Db21taXRJZk5l
ZWRlZCgpCi17Ci0gICAgLy8gQ2hlY2sgaWYgcmVuZGVyaW5nIGNhdXNlZCBhIGNvbW1pdCBhbmQg
d2UgbmVlZCB0byByZWRyYXcgdGhlIGxheWVycwotICAgIGlmICghbV9uZWVkc0RyYXdMYXllcnNP
bkNvbW1pdCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbV9uZWVkc0RyYXdMYXllcnNP
bkNvbW1pdCA9IGZhbHNlOwotICAgIG1fd2ViUGFnZS0+ZC0+ZHJhd0xheWVyc09uQ29tbWl0KCk7
Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpkcmF3
QW5kQmxlbmRMYXllcnNGb3JEaXJlY3RSZW5kZXJpbmcoY29uc3QgUGxhdGZvcm06OkludFJlY3Qm
IGRpcnR5UmVjdCkKIHsKICAgICBBU1NFUlQoQmxhY2tCZXJyeTo6UGxhdGZvcm06OnVzZXJJbnRl
cmZhY2VUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmlzQ3VycmVudFRocmVhZCgpKTsKQEAgLTI2Mjks
NyArMjU5NCw2IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6ZHJhd0FuZEJsZW5kTGF5ZXJz
Rm9yRGlyZWN0UmVuZGVyaW5nKGNvbnN0IFBsYXRmb3JtOjpJCiAgICAgICAgIFdlYkNvcmU6Oklu
dFJlY3QoV2ViQ29yZTo6SW50UG9pbnQoMCwgMCksIG1fd2ViUGFnZS0+ZC0+dHJhbnNmb3JtZWRW
aWV3cG9ydFNpemUoKSkpOwogCiAgICAgLy8gQ2hlY2sgaWYgcmVuZGVyaW5nIGNhdXNlZCBhIGNv
bW1pdCBhbmQgd2UgbmVlZCB0byByZWRyYXcgdGhlIGxheWVycy4KLSAgICBtX25lZWRzRHJhd0xh
eWVyc09uQ29tbWl0ID0gZmFsc2U7CiAgICAgaWYgKFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZSog
Y29tcG9zaXRvciA9IG1fd2ViUGFnZS0+ZC0+Y29tcG9zaXRvcigpKQogICAgICAgICBjb21wb3Np
dG9yLT5kcmF3TGF5ZXJzKGRzdFJlY3QsIHVudHJhbnNmb3JtZWRDb250ZW50c1JlY3QpOwogCkBA
IC0yNjQ5LDYgKzI2MTMsMjAgQEAgYm9vbCBCYWNraW5nU3RvcmVQcml2YXRlOjppc0FjdGl2ZSgp
IGNvbnN0CiAgICAgcmV0dXJuIEJhY2tpbmdTdG9yZVByaXZhdGU6OnNfY3VycmVudEJhY2tpbmdT
dG9yZU93bmVyID09IG1fd2ViUGFnZSAmJiBTdXJmYWNlUG9vbDo6Z2xvYmFsU3VyZmFjZVBvb2wo
KS0+aXNBY3RpdmUoKTsKIH0KIAordm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpub3RpZnlDb250
ZW50UmVuZGVyZWQoY29uc3QgUGxhdGZvcm06OkludFJlY3QmIHJlbmRlcmVkUmVjdCkKK3sKKyAg
ICBpZiAoaXNTY3JvbGxpbmdPclpvb21pbmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KCFzaG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRvdygpKSB7CisgICAgICAgIGlmICghbV93ZWJQ
YWdlLT5kLT5uZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uKCkpCisgICAgICAgICAg
ICBibGl0VmlzaWJsZUNvbnRlbnRzKCk7CisgICAgfSBlbHNlCisgICAgICAgIGludmFsaWRhdGVX
aW5kb3coKTsKKworICAgIG1fd2ViUGFnZS0+Y2xpZW50KCktPm5vdGlmeUNvbnRlbnRSZW5kZXJl
ZChyZW5kZXJlZFJlY3QpOworfQorCiBCYWNraW5nU3RvcmU6OkJhY2tpbmdTdG9yZShXZWJQYWdl
KiB3ZWJQYWdlLCBCYWNraW5nU3RvcmVDbGllbnQqIGNsaWVudCkKICAgICA6IGQobmV3IEJhY2tp
bmdTdG9yZVByaXZhdGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL0JhY2tpbmdTdG9yZV9wLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tp
bmdTdG9yZV9wLmgKaW5kZXggMTAyM2YwY2ZlMGI4MmZmMTAyZTg5YTU0YmNkOTY2YjAzYmE0OTEx
ZS4uNGI1NGNhNGUzNjA2NDFiYWE3ODJlZThhOTU3ZGU0ZjliZmI4YThhNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmVfcC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlX3AuaApAQCAtMzMzLDYgKzMzMyw4
IEBAIHB1YmxpYzoKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50U2l6ZSBzdXJmYWNlU2l6
ZSgpIGNvbnN0OwogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiBi
dWZmZXIoKSBjb25zdDsKIAorICAgIHZvaWQgbm90aWZ5Q29udGVudFJlbmRlcmVkKGNvbnN0IFBs
YXRmb3JtOjpJbnRSZWN0JiByZW5kZXJlZFJlY3QpOworCiAgICAgc3RhdGljIFdlYlBhZ2UqIHNf
Y3VycmVudEJhY2tpbmdTdG9yZU93bmVyOwogCiAgICAgdW5zaWduZWQgbV9zdXNwZW5kU2NyZWVu
VXBkYXRlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCmluZGV4IDdi
YTY1MWQ0NDk5ZWVjMzkzNWZjNjBiNDIwNTY2YzU5ZDZkMjI0MGIuLjhkN2NiMTllZDI4YTI1Njcz
ZmY3ZjUyZThiNDExNzYxNmVhOGRkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9BcGkvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9X
ZWJQYWdlLmNwcApAQCAtNTU0NCwzMSArNTU0NCw2IEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6OnNl
dENvbXBvc2l0b3JEcmF3c1Jvb3RMYXllcihib29sIGNvbXBvc2l0b3JEcmF3c1Jvb3RMYXllcikK
IH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLXZvaWQgV2ViUGFnZVByaXZh
dGU6OmRyYXdMYXllcnNPbkNvbW1pdCgpCi17Ci0gICAgaWYgKCFQbGF0Zm9ybTo6dXNlckludGVy
ZmFjZVRocmVhZE1lc3NhZ2VDbGllbnQoKS0+aXNDdXJyZW50VGhyZWFkKCkpIHsKLSAgICAgICAg
Ly8gVGhpcyBtZXRob2Qgd2lsbCBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBsYXllciBhcHBlYXJh
bmNlIGNoYW5nZWQgZHVlIHRvCi0gICAgICAgIC8vIGFuaW1hdGlvbnMuIEFuZCBvbmx5IGlmIHdl
IGRvbid0IG5lZWQgYSBvbmUgc2hvdCBkcmF3aW5nIHN5bmMuCi0gICAgICAgIEFTU0VSVCghbmVl
ZHNPbmVTaG90RHJhd2luZ1N5bmNocm9uaXphdGlvbigpKTsKLQotICAgICAgICBpZiAoIW1fd2Vi
UGFnZS0+aXNWaXNpYmxlKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9iYWNr
aW5nU3RvcmUtPmQtPndpbGxEcmF3TGF5ZXJzT25Db21taXQoKTsKLQotICAgICAgICBQbGF0Zm9y
bTo6dXNlckludGVyZmFjZVRocmVhZE1lc3NhZ2VDbGllbnQoKS0+ZGlzcGF0Y2hNZXNzYWdlKAot
ICAgICAgICAgICAgUGxhdGZvcm06OmNyZWF0ZU1ldGhvZENhbGxNZXNzYWdlKCZXZWJQYWdlUHJp
dmF0ZTo6ZHJhd0xheWVyc09uQ29tbWl0LCB0aGlzKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSNpZiBERUJVR19BQ19DT01NSVQKLSAgICBQbGF0Zm9ybTo6bG9nKFBsYXRmb3JtOjpMb2dM
ZXZlbENyaXRpY2FsLCAiJXMiLCBXVEZfUFJFVFRZX0ZVTkNUSU9OKTsKLSNlbmRpZgotCi0gICAg
aWYgKCFtX2JhY2tpbmdTdG9yZS0+ZC0+c2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSkK
LSAgICAgICAgbV9iYWNraW5nU3RvcmUtPmQtPmJsaXRWaXNpYmxlQ29udGVudHMoKTsKLX0KLQog
dm9pZCBXZWJQYWdlUHJpdmF0ZTo6c2NoZWR1bGVSb290TGF5ZXJDb21taXQoKQogewogICAgIGlm
ICghKG1fZnJhbWVMYXllcnMgJiYgbV9mcmFtZUxheWVycy0+aGFzTGF5ZXIoKSkgJiYgIW1fb3Zl
cmxheUxheWVyKQpAQCAtNTgxNywxMCArNTc5Miw3IEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6OnJv
b3RMYXllckNvbW1pdFRpbWVyRmlyZWQoVGltZXI8V2ViUGFnZVByaXZhdGU+KikKICAgICAgICAg
fQogICAgIH0KIAotICAgIC8vIElmIHRoZSB3ZWIgcGFnZSBuZWVkcyBsYXlvdXQsIHRoZSBjb21t
aXQgd2lsbCBmYWlsLgotICAgIC8vIE5vIG5lZWQgdG8gZHJhdyB0aGUgbGF5ZXJzIGlmIG5vdGhp
bmcgY2hhbmdlZC4KLSAgICBpZiAoY29tbWl0Um9vdExheWVySWZOZWVkZWQoKSkKLSAgICAgICAg
ZHJhd0xheWVyc09uQ29tbWl0KCk7CisgICAgY29tbWl0Um9vdExheWVySWZOZWVkZWQoKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJpdmF0ZTo6cmVzZXRDb21wb3NpdGluZ1N1cmZhY2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaCBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKaW5kZXggMDc0ZmQ1ODE3MzA0MTU3ZWYx
ZjNiYjVhNTRjNDE0NDVhMzQyYzFiNC4uZDkxNjk1NzIwYmExNTI0YjNkOTk5OGI0NTBhMmIyYjBj
NzA0NTM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdl
X3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oCkBAIC00
MDksNyArNDA5LDYgQEAgcHVibGljOgogCiAgICAgLy8gVGhyZWFkIHNhZmUuCiAgICAgdm9pZCBy
ZXNldENvbXBvc2l0aW5nU3VyZmFjZSgpOwotICAgIHZvaWQgZHJhd0xheWVyc09uQ29tbWl0KCk7
IC8vIEluY2x1ZGluZyBiYWNraW5nIHN0b3JlIGJsaXQuCiAKICAgICAvLyBDb21wb3NpdGluZyB0
aHJlYWQuCiAgICAgdm9pZCBzZXRSb290TGF5ZXJDb21wb3NpdGluZ1RocmVhZChXZWJDb3JlOjpM
YXllckNvbXBvc2l0aW5nVGhyZWFkKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViS2l0U3VwcG9ydC9SZW5kZXJRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViS2l0U3VwcG9ydC9SZW5kZXJRdWV1ZS5jcHAKaW5kZXggMzQ2MGJkOGYwNDM2MTA5
NWVjMzU1NjM1NzI2MzU1MjM2ZjhjYTA0Yi4uMGMzMzkyYzM3YWQzNGEwMGViMGI5NDMxM2MyNDdj
MjY0YjgyNDc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1
cHBvcnQvUmVuZGVyUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJL
aXRTdXBwb3J0L1JlbmRlclF1ZXVlLmNwcApAQCAtNjU1LDE0ICs2NTUsOCBAQCB2b2lkIFJlbmRl
clF1ZXVlOjpyZW5kZXJBbGxDdXJyZW50UmVndWxhclJlbmRlckpvYnMoKQogICAgIG1fY3VycmVu
dFJlZ3VsYXJSZW5kZXJKb2JzQmF0Y2hSZWdpb24gPSBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbigp
OwogICAgIG1fY3VycmVudFJlZ3VsYXJSZW5kZXJKb2JzQmF0Y2hVbmRlclByZXNzdXJlID0gZmFs
c2U7CiAKLSAgICAvLyBVcGRhdGUgdGhlIHNjcmVlbiBvbmx5IGlmIHdlJ3JlIG5vdCBzY3JvbGxp
bmcgb3Igem9vbWluZy4KLSAgICBpZiAocmVuZGVyZWQgJiYgIW1fcGFyZW50LT5pc1Njcm9sbGlu
Z09yWm9vbWluZygpKSB7Ci0gICAgICAgIGlmICghbV9wYXJlbnQtPnNob3VsZERpcmVjdFJlbmRl
cmluZ1RvV2luZG93KCkpCi0gICAgICAgICAgICBtX3BhcmVudC0+YmxpdFZpc2libGVDb250ZW50
cygpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BhcmVudC0+aW52YWxpZGF0ZVdpbmRv
dygpOwotICAgICAgICBtX3BhcmVudC0+bV93ZWJQYWdlLT5jbGllbnQoKS0+bm90aWZ5Q29udGVu
dFJlbmRlcmVkKHJlbmRlcmVkUmVjdCk7Ci0gICAgfQorICAgIGlmIChyZW5kZXJlZCkKKyAgICAg
ICAgbV9wYXJlbnQtPm5vdGlmeUNvbnRlbnRSZW5kZXJlZChyZW5kZXJlZFJlY3QpOwogCiAgICAg
aWYgKG1fcGFyZW50LT5zaG91bGRTdXBwcmVzc05vblZpc2libGVSZWd1bGFyUmVuZGVySm9icygp
ICYmICFyZWdpb25Ob3RSZW5kZXJlZC5pc0VtcHR5KCkpCiAgICAgICAgIG1fcGFyZW50LT51cGRh
dGVUaWxlc0ZvclNjcm9sbE9yTm90UmVuZGVyZWRSZWdpb24oZmFsc2UgLypjaGVja0xvYWRpbmcq
Lyk7CkBAIC04MTAsMTQgKzgwNCw3IEBAIHZvaWQgUmVuZGVyUXVldWU6OnJlbmRlclJlZ3VsYXJS
ZW5kZXJKb2IoKQogICAgICAgICAvLyBDbGVhciB0aGUgcmVnaW9uIGFuZCB0aGUgYW5kIGJsaXQg
c2luY2UgdGhpcyBiYXRjaCBpcyBub3cgY29tcGxldGUuCiAgICAgICAgIG1fY3VycmVudFJlZ3Vs
YXJSZW5kZXJKb2JzQmF0Y2hSZWdpb24gPSBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbigpOwogICAg
ICAgICBtX2N1cnJlbnRSZWd1bGFyUmVuZGVySm9ic0JhdGNoVW5kZXJQcmVzc3VyZSA9IGZhbHNl
OwotICAgICAgICAvLyBVcGRhdGUgdGhlIHNjcmVlbiBvbmx5IGlmIHdlJ3JlIG5vdCBzY3JvbGxp
bmcgb3Igem9vbWluZy4KLSAgICAgICAgaWYgKCFtX3BhcmVudC0+aXNTY3JvbGxpbmdPclpvb21p
bmcoKSkgewotICAgICAgICAgICAgaWYgKCFtX3BhcmVudC0+c2hvdWxkRGlyZWN0UmVuZGVyaW5n
VG9XaW5kb3coKSkKLSAgICAgICAgICAgICAgICBtX3BhcmVudC0+YmxpdFZpc2libGVDb250ZW50
cygpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fcGFyZW50LT5pbnZhbGlk
YXRlV2luZG93KCk7Ci0gICAgICAgICAgICBtX3BhcmVudC0+bV93ZWJQYWdlLT5jbGllbnQoKS0+
bm90aWZ5Q29udGVudFJlbmRlcmVkKHJlbmRlcmVkUmVjdCk7Ci0gICAgICAgIH0KKyAgICAgICAg
bV9wYXJlbnQtPm5vdGlmeUNvbnRlbnRSZW5kZXJlZChyZW5kZXJlZFJlY3QpOwogICAgIH0KIAog
ICAgIC8vIE1ha2Ugc3VyZSB3ZSBkaWRuJ3QgYWx0ZXIgc3RhdGUgb2YgdGhlIHF1ZXVlcyB0aGF0
IHNob3VsZCBoYXZlIGJlZW4gZW1wdHkKQEAgLTg4MCwxMyArODY3LDggQEAgdm9pZCBSZW5kZXJR
dWV1ZTo6dmlzaWJsZVNjcm9sbEpvYnNDb21wbGV0ZWQoYm9vbCBzaG91bGRCbGl0KQogICAgIC8v
IE5vdyBibGl0IHRvIHRoZSBzY3JlZW4gaWYgd2UgYXJlIGRvbmUgYW5kIGdldCByaWQgb2YgdGhl
IGNvbXBsZXRlZCBsaXN0IQogICAgIEFTU0VSVChtX3Zpc2libGVTY3JvbGxKb2JzLmVtcHR5KCkp
OwogICAgIG1fdmlzaWJsZVNjcm9sbEpvYnNDb21wbGV0ZWQuY2xlYXIoKTsKLSAgICBpZiAoc2hv
dWxkQmxpdCAmJiAhbV9wYXJlbnQtPmlzU2Nyb2xsaW5nT3Jab29taW5nKCkpIHsKLSAgICAgICAg
aWYgKCFtX3BhcmVudC0+c2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSkKLSAgICAgICAg
ICAgIG1fcGFyZW50LT5ibGl0VmlzaWJsZUNvbnRlbnRzKCk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG1fcGFyZW50LT5pbnZhbGlkYXRlV2luZG93KCk7Ci0gICAgICAgIG1fcGFyZW50LT5t
X3dlYlBhZ2UtPmNsaWVudCgpLT5ub3RpZnlDb250ZW50UmVuZGVyZWQobV9wYXJlbnQtPnZpc2li
bGVDb250ZW50c1JlY3QoKSk7Ci0gICAgfQorICAgIGlmIChzaG91bGRCbGl0KQorICAgICAgICBt
X3BhcmVudC0+bm90aWZ5Q29udGVudFJlbmRlcmVkKG1fcGFyZW50LT52aXNpYmxlQ29udGVudHNS
ZWN0KCkpOwogfQogCiB2b2lkIFJlbmRlclF1ZXVlOjpub25WaXNpYmxlU2Nyb2xsSm9ic0NvbXBs
ZXRlZCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160957</attachid>
            <date>2012-08-28 06:08:49 -0700</date>
            <delta_ts>2012-08-28 07:46:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95179-20120828151216.patch</filename>
            <type>text/plain</type>
            <size>13677</size>
            <attacher name="Andrew Lo">anlo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCA4NDQ2YTRhNzQ0NzM1YzBiYWNlM2Y1YjFhZThjMThiNDYwZThkYjdmLi4yZTc4MmJjMGFh
Y2M3YTJmMmE1ZDk2ZDMxMzgyODQyYzg4NWUzNmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMi0wOC0yOCAgQW5kcmV3IExvICA8YW5sb0ByaW0u
Y29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBPbmUgc2hvdCBkcmF3aW5nIHN5bmNocm9uaXph
dGlvbiBicm9rZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk1MTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAg
IEludGVybmFsbHkgcmV2aWV3ZWQgYnkgQXJ2aWQgTmlsc3Nvbi4KKworICAgICAgICBNYWtlIHN1
cmUgbm8gYmFja2luZyBzdG9yZSBibGl0cyBoYXBwZW4gZHVyaW5nIG9uZSBzaG90IGRyYXdpbmcK
KyAgICAgICAgc3luY2hyb25pemF0aW9uLgorICAgICAgICBTaW5jZSB3ZSBhbHdheXMgYmxpdCBk
dXJpbmcgY29tbWl0IG5vdywgbWFrZSBzdXJlIHdlIGRvbid0IGJsaXQgaWYKKyAgICAgICAgd2Ug
Y29tbWl0IGFmdGVyIGEgcmVuZGVyLgorICAgICAgICBXZSBubyBsb25nZXIgbmVlZCBhIGRlZmVy
cmVkIGJsaXQgc2luY2Ugd2UgZG9uJ3QgY29tbWl0IGR1cmluZyByZW5kZXJDb250ZW50cworICAg
ICAgICBub3cuIEluc3RlYWQsIHdlIG9ubHkgY29tbWl0ICYgYmxpdCBvbmNlIGFmdGVyIGEgZnVs
bCByZW5kZXIgam9iLgorCisgICAgICAgICogQXBpL0JhY2tpbmdTdG9yZS5jcHA6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OkJhY2tpbmdTdG9yZVBy
aXZhdGUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRl
OjpyZXBhaW50KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJp
dmF0ZTo6c2xvd1Njcm9sbCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdT
dG9yZVByaXZhdGU6OnJlbmRlckpvYik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJh
Y2tpbmdTdG9yZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29udGVudHMpOgorICAgICAgICAoQmxhY2tC
ZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0Q29udGVudHMpOgorICAgICAg
ICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpyZW5kZXJDb250ZW50
cyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNr
aW5nU3RvcmVQcml2YXRlOjpkcmF3QW5kQmxlbmRMYXllcnNGb3JEaXJlY3RSZW5kZXJpbmcpOgor
ICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpub3RpZnlD
b250ZW50UmVuZGVyZWQpOgorICAgICAgICAqIEFwaS9CYWNraW5nU3RvcmVfcC5oOgorICAgICAg
ICAoQmFja2luZ1N0b3JlUHJpdmF0ZSk6CisgICAgICAgICogQXBpL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZh
dGU6OnJvb3RMYXllckNvbW1pdFRpbWVyRmlyZWQpOgorICAgICAgICAqIEFwaS9XZWJQYWdlX3Au
aDoKKyAgICAgICAgKFdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L1Jl
bmRlclF1ZXVlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6UmVuZGVyUXVldWU6
OnJlbmRlckFsbEN1cnJlbnRSZWd1bGFyUmVuZGVySm9icyk6CisgICAgICAgIChCbGFja0JlcnJ5
OjpXZWJLaXQ6OlJlbmRlclF1ZXVlOjpyZW5kZXJSZWd1bGFyUmVuZGVySm9iKToKKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6UmVuZGVyUXVldWU6OnZpc2libGVTY3JvbGxKb2JzQ29tcGxl
dGVkKToKKwogMjAxMi0wOC0yNCAgTGlhbSBRdWlubiAgPGxxdWlubkByaW0uY29tPgogCiAgICAg
ICAgIFtCbGFja0JlcnJ5XSBEZWJ1ZyBhc3NlcnRpb24gZmlyZXMgaW4gQmFja2luZ1N0b3JlUHJp
dmF0ZTo6cmVuZGVySm9iKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9B
cGkvQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2lu
Z1N0b3JlLmNwcAppbmRleCBkM2MyY2U5M2E2MjViNmRjYzFmYjEzMTQ1OThkZTg4MDEwNjQxZmNh
Li4wYmI5NzJjMTkwOGVhMjRmOWM1NTJiZjYzZTBmMjEyMDhkYjFjOGNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuY3BwCkBAIC0yMDksNyArMjA5LDYg
QEAgQmFja2luZ1N0b3JlUHJpdmF0ZTo6QmFja2luZ1N0b3JlUHJpdmF0ZSgpCiAgICAgLCBtX2N1
cnJlbnRXaW5kb3dCYWNrQnVmZmVyKDApCiAgICAgLCBtX3ByZWZlcnJlZFRpbGVNYXRyaXhEaW1l
bnNpb24oVmVydGljYWwpCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgICwg
bV9uZWVkc0RyYXdMYXllcnNPbkNvbW1pdChmYWxzZSkKICAgICAsIG1faXNEaXJlY3RSZW5kZXJp
bmdBbmltYXRpb25NZXNzYWdlU2NoZWR1bGVkKGZhbHNlKQogI2VuZGlmCiB7CkBAIC0zOTEsNyAr
MzkwLDcgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpyZXBhaW50KGNvbnN0IFBsYXRmb3Jt
OjpJbnRSZWN0JiB3aW5kb3dSZWN0LAogCiAgICAgICAgIGlmIChpbW1lZGlhdGUpIHsKICAgICAg
ICAgICAgIGlmIChyZW5kZXIocmVjdCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXNob3VsZERp
cmVjdFJlbmRlcmluZ1RvV2luZG93KCkpCisgICAgICAgICAgICAgICAgaWYgKCFzaG91bGREaXJl
Y3RSZW5kZXJpbmdUb1dpbmRvdygpICYmICFtX3dlYlBhZ2UtPmQtPmNvbW1pdFJvb3RMYXllcklm
TmVlZGVkKCkpCiAgICAgICAgICAgICAgICAgICAgIGJsaXRWaXNpYmxlQ29udGVudHMoKTsKICAg
ICAgICAgICAgICAgICBtX3dlYlBhZ2UtPmQtPm1fY2xpZW50LT5ub3RpZnlDb250ZW50UmVuZGVy
ZWQocmVjdCk7CiAgICAgICAgICAgICB9CkBAIC00MTQsNyArNDEzLDcgQEAgdm9pZCBCYWNraW5n
U3RvcmVQcml2YXRlOjpzbG93U2Nyb2xsKGNvbnN0IFBsYXRmb3JtOjpJbnRTaXplJiBkZWx0YSwg
Y29uc3QgUGxhdGYKICAgICBQbGF0Zm9ybTo6SW50UmVjdCByZWN0ID0gbV93ZWJQYWdlLT5kLT5t
YXBUb1RyYW5zZm9ybWVkKG1fY2xpZW50LT5tYXBGcm9tVmlld3BvcnRUb0NvbnRlbnRzKHdpbmRv
d1JlY3QpKTsKIAogICAgIGlmIChpbW1lZGlhdGUpIHsKLSAgICAgICAgaWYgKHJlbmRlcihyZWN0
KSAmJiAhaXNTdXNwZW5kZWQoKSAmJiAhc2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSkK
KyAgICAgICAgaWYgKHJlbmRlcihyZWN0KSAmJiAhaXNTdXNwZW5kZWQoKSAmJiAhc2hvdWxkRGly
ZWN0UmVuZGVyaW5nVG9XaW5kb3coKSAmJiAhbV93ZWJQYWdlLT5kLT5jb21taXRSb290TGF5ZXJJ
Zk5lZWRlZCgpKQogICAgICAgICAgICAgYmxpdFZpc2libGVDb250ZW50cygpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIG1fcmVuZGVyUXVldWUtPmFkZFRvUXVldWUoUmVuZGVyUXVldWU6OlZpc2li
bGVTY3JvbGwsIHJlY3QpOwpAQCAtNTI0LDcgKzUyMyw3IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJp
dmF0ZTo6cmVuZGVySm9iKCkKICAgICBtX3JlbmRlclF1ZXVlLT5yZW5kZXIoIW1fc3VzcGVuZFJl
Z3VsYXJSZW5kZXJKb2JzKTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAg
ICBkcmF3TGF5ZXJzT25Db21taXRJZk5lZWRlZCgpOworICAgIG1fd2ViUGFnZS0+ZC0+Y29tbWl0
Um9vdExheWVySWZOZWVkZWQoKTsKICNlbmRpZgogCiAgICAgaWYgKHNob3VsZFBlcmZvcm1SZW5k
ZXJKb2JzKCkpCkBAIC0xMTQ4LDExICsxMTQ3LDYgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRl
OjpibGl0VmlzaWJsZUNvbnRlbnRzKGJvb2wgZm9yY2UpCiAgICAgfQogCiAgICAgaWYgKCFCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6dXNlckludGVyZmFjZVRocmVhZE1lc3NhZ2VDbGllbnQoKS0+aXND
dXJyZW50VGhyZWFkKCkpIHsKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAg
ICAgIC8vIFRoZSBibGl0IHdpbGwgZHJhdyBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBsYXllcnMg
aWYgbmVjZXNzYXJ5Ci0gICAgICAgIG1fbmVlZHNEcmF3TGF5ZXJzT25Db21taXQgPSBmYWxzZTsK
LSNlbmRpZgotCiAgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjp1c2VySW50ZXJmYWNlVGhy
ZWFkTWVzc2FnZUNsaWVudCgpLT5kaXNwYXRjaE1lc3NhZ2UoCiAgICAgICAgICAgICBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6Y3JlYXRlTWV0aG9kQ2FsbE1lc3NhZ2UoCiAgICAgICAgICAgICAgICAg
JkJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29udGVudHMsIHRoaXMsIGZvcmNlKSk7
CkBAIC0xMjQ4LDExICsxMjQyLDYgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0Q29u
dGVudHMoY29uc3QgUGxhdGZvcm06OkludFJlY3QmIGRzdFJlY3QsCiAgICAgfQogCiAgICAgaWYg
KCFCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6dXNlckludGVyZmFjZVRocmVhZE1lc3NhZ2VDbGllbnQo
KS0+aXNDdXJyZW50VGhyZWFkKCkpIHsKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
Ci0gICAgICAgIC8vIFRoZSBibGl0IHdpbGwgZHJhdyBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBs
YXllcnMgaWYgbmVjZXNzYXJ5Ci0gICAgICAgIG1fbmVlZHNEcmF3TGF5ZXJzT25Db21taXQgPSBm
YWxzZTsKLSNlbmRpZgotCiAgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjp1c2VySW50ZXJm
YWNlVGhyZWFkTWVzc2FnZUNsaWVudCgpLT5kaXNwYXRjaE1lc3NhZ2UoCiAgICAgICAgICAgICBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6Y3JlYXRlTWV0aG9kQ2FsbE1lc3NhZ2UoCiAgICAgICAgICAg
ICAgICAgJkJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRDb250ZW50cywgdGhpcywgZHN0UmVjdCwg
c3JjUmVjdCwgZm9yY2UpKTsKQEAgLTIyODksMTggKzIyNzgsNiBAQCB2b2lkIEJhY2tpbmdTdG9y
ZVByaXZhdGU6OnJlbmRlckNvbnRlbnRzKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6
QnVmZmVyKgogICAgIGlmIChjb250ZW50c1NpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgLy8gV2hlbiBjb21taXR0
aW5nIHRoZSBwZW5kaW5nIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGxheWVyIGNoYW5nZXMsIGl0
J3MKLSAgICAvLyBuZWNlc3NhcnkgdG8gZHJhdyB0aGUgbmV3IGxheWVyIGFwcGVhcmFuY2UuIFRo
aXMgaXMgbm9ybWFsbHkgZG9uZSBhcwotICAgIC8vIHBhcnQgb2YgYSBibGl0LCBidXQgaWYgbm8g
YmxpdCBoYXBwZW5zIGJlY2F1c2Ugb2YgdGhpcyByZW5kZXJpbmcsIGZvcgotICAgIC8vIGV4YW1w
bGUgYmVjYXVzZSB3ZSdyZSByZW5kZXJpbmcgYW4gb2Zmc2NyZWVuIHJlY3RhbmdsZSwgc29tZW9u
ZSBuZWVkcyB0bwotICAgIC8vIGNhdGNoIHRoaXMgZmxhZyBhbmQgbWFrZSBzdXJlIHRob3NlIGxh
eWVycyBnZXQgZHJhd24uCi0gICAgLy8gVGhpcyBpcyBqdXN0IGEgY29tcGxpY2F0ZWQgd2F5IHRv
IGRvCi0gICAgLy8gImlmIChjb21taXRSb290TGF5ZXJJZk5lZWRlZCgpKSBkcmF3TGF5ZXJzT25D
b21taXQoKTsiCi0gICAgaWYgKG1fd2ViUGFnZS0+ZC0+Y29tbWl0Um9vdExheWVySWZOZWVkZWQo
KSkKLSAgICAgICAgbV9uZWVkc0RyYXdMYXllcnNPbkNvbW1pdCA9IHRydWU7Ci0jZW5kaWYKLQog
ICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6RHJhd2FibGUqIGJ1ZmZlckRyYXdh
YmxlID0KICAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpsb2NrQnVmZmVy
RHJhd2FibGUodGFyZ2V0QnVmZmVyKTsKIApAQCAtMjYwMiwxOCArMjU3OSw2IEBAIEJhY2tpbmdT
dG9yZVdpbmRvd0J1ZmZlclN0YXRlKiBCYWNraW5nU3RvcmVQcml2YXRlOjp3aW5kb3dCYWNrQnVm
ZmVyU3RhdGUoKSBjb25zCiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi1i
b29sIEJhY2tpbmdTdG9yZVByaXZhdGU6OmRyYXdMYXllcnNPbkNvbW1pdElmTmVlZGVkKCkKLXsK
LSAgICAvLyBDaGVjayBpZiByZW5kZXJpbmcgY2F1c2VkIGEgY29tbWl0IGFuZCB3ZSBuZWVkIHRv
IHJlZHJhdyB0aGUgbGF5ZXJzCi0gICAgaWYgKCFtX25lZWRzRHJhd0xheWVyc09uQ29tbWl0KQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtX25lZWRzRHJhd0xheWVyc09uQ29tbWl0ID0g
ZmFsc2U7Ci0gICAgbV93ZWJQYWdlLT5kLT5kcmF3TGF5ZXJzT25Db21taXQoKTsKLQotICAgIHJl
dHVybiB0cnVlOwotfQotCiB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmRyYXdBbmRCbGVuZExh
eWVyc0ZvckRpcmVjdFJlbmRlcmluZyhjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgZGlydHlSZWN0
KQogewogICAgIEFTU0VSVChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6dXNlckludGVyZmFjZVRocmVh
ZE1lc3NhZ2VDbGllbnQoKS0+aXNDdXJyZW50VGhyZWFkKCkpOwpAQCAtMjYyOSw3ICsyNTk0LDYg
QEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpkcmF3QW5kQmxlbmRMYXllcnNGb3JEaXJlY3RS
ZW5kZXJpbmcoY29uc3QgUGxhdGZvcm06OkkKICAgICAgICAgV2ViQ29yZTo6SW50UmVjdChXZWJD
b3JlOjpJbnRQb2ludCgwLCAwKSwgbV93ZWJQYWdlLT5kLT50cmFuc2Zvcm1lZFZpZXdwb3J0U2l6
ZSgpKSk7CiAKICAgICAvLyBDaGVjayBpZiByZW5kZXJpbmcgY2F1c2VkIGEgY29tbWl0IGFuZCB3
ZSBuZWVkIHRvIHJlZHJhdyB0aGUgbGF5ZXJzLgotICAgIG1fbmVlZHNEcmF3TGF5ZXJzT25Db21t
aXQgPSBmYWxzZTsKICAgICBpZiAoV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlKiBjb21wb3NpdG9y
ID0gbV93ZWJQYWdlLT5kLT5jb21wb3NpdG9yKCkpCiAgICAgICAgIGNvbXBvc2l0b3ItPmRyYXdM
YXllcnMoZHN0UmVjdCwgdW50cmFuc2Zvcm1lZENvbnRlbnRzUmVjdCk7CiAKQEAgLTI2NDksNiAr
MjYxMywyMCBAQCBib29sIEJhY2tpbmdTdG9yZVByaXZhdGU6OmlzQWN0aXZlKCkgY29uc3QKICAg
ICByZXR1cm4gQmFja2luZ1N0b3JlUHJpdmF0ZTo6c19jdXJyZW50QmFja2luZ1N0b3JlT3duZXIg
PT0gbV93ZWJQYWdlICYmIFN1cmZhY2VQb29sOjpnbG9iYWxTdXJmYWNlUG9vbCgpLT5pc0FjdGl2
ZSgpOwogfQogCit2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6Om5vdGlmeUNvbnRlbnRSZW5kZXJl
ZChjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgcmVuZGVyZWRSZWN0KQoreworICAgIGlmIChpc1Nj
cm9sbGluZ09yWm9vbWluZygpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXNob3VsZERp
cmVjdFJlbmRlcmluZ1RvV2luZG93KCkpIHsKKyAgICAgICAgaWYgKCFtX3dlYlBhZ2UtPmQtPm5l
ZWRzT25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRpb24oKSkKKyAgICAgICAgICAgIGJsaXRWaXNp
YmxlQ29udGVudHMoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgaW52YWxpZGF0ZVdpbmRvdygpOwor
CisgICAgbV93ZWJQYWdlLT5jbGllbnQoKS0+bm90aWZ5Q29udGVudFJlbmRlcmVkKHJlbmRlcmVk
UmVjdCk7Cit9CisKIEJhY2tpbmdTdG9yZTo6QmFja2luZ1N0b3JlKFdlYlBhZ2UqIHdlYlBhZ2Us
IEJhY2tpbmdTdG9yZUNsaWVudCogY2xpZW50KQogICAgIDogZChuZXcgQmFja2luZ1N0b3JlUHJp
dmF0ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2lu
Z1N0b3JlX3AuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlX3Au
aAppbmRleCAxMDIzZjBjZmUwYjgyZmYxMDJlODlhNTRiY2Q5NjZiMDNiYTQ5MTFlLi40YjU0Y2E0
ZTM2MDY0MWJhYTc4MmVlOGE5NTdkZTRmOWJmYjhhOGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZV9wLmgKKysrIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmVfcC5oCkBAIC0zMzMsNiArMzMzLDggQEAgcHVibGlj
OgogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpJbnRTaXplIHN1cmZhY2VTaXplKCkgY29uc3Q7
CiAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXIqIGJ1ZmZlcigpIGNv
bnN0OwogCisgICAgdm9pZCBub3RpZnlDb250ZW50UmVuZGVyZWQoY29uc3QgUGxhdGZvcm06Oklu
dFJlY3QmIHJlbmRlcmVkUmVjdCk7CisKICAgICBzdGF0aWMgV2ViUGFnZSogc19jdXJyZW50QmFj
a2luZ1N0b3JlT3duZXI7CiAKICAgICB1bnNpZ25lZCBtX3N1c3BlbmRTY3JlZW5VcGRhdGVzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKaW5kZXggN2JhNjUxZDQ0OTll
ZWMzOTM1ZmM2MGI0MjA1NjZjNTlkNmQyMjQwYi4uOGQ3Y2IxOWVkMjhhMjU2NzNmZjdmNTJlOGI0
MTE3NjE2ZWE4ZGQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3Bw
CkBAIC01NTQ0LDMxICs1NTQ0LDYgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6c2V0Q29tcG9zaXRv
ckRyYXdzUm9vdExheWVyKGJvb2wgY29tcG9zaXRvckRyYXdzUm9vdExheWVyKQogfQogCiAjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotdm9pZCBXZWJQYWdlUHJpdmF0ZTo6ZHJhd0xh
eWVyc09uQ29tbWl0KCkKLXsKLSAgICBpZiAoIVBsYXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFk
TWVzc2FnZUNsaWVudCgpLT5pc0N1cnJlbnRUaHJlYWQoKSkgewotICAgICAgICAvLyBUaGlzIG1l
dGhvZCB3aWxsIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlIGxheWVyIGFwcGVhcmFuY2UgY2hhbmdl
ZCBkdWUgdG8KLSAgICAgICAgLy8gYW5pbWF0aW9ucy4gQW5kIG9ubHkgaWYgd2UgZG9uJ3QgbmVl
ZCBhIG9uZSBzaG90IGRyYXdpbmcgc3luYy4KLSAgICAgICAgQVNTRVJUKCFuZWVkc09uZVNob3RE
cmF3aW5nU3luY2hyb25pemF0aW9uKCkpOwotCi0gICAgICAgIGlmICghbV93ZWJQYWdlLT5pc1Zp
c2libGUoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBtX2JhY2tpbmdTdG9yZS0+
ZC0+d2lsbERyYXdMYXllcnNPbkNvbW1pdCgpOwotCi0gICAgICAgIFBsYXRmb3JtOjp1c2VySW50
ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVudCgpLT5kaXNwYXRjaE1lc3NhZ2UoCi0gICAgICAgICAg
ICBQbGF0Zm9ybTo6Y3JlYXRlTWV0aG9kQ2FsbE1lc3NhZ2UoJldlYlBhZ2VQcml2YXRlOjpkcmF3
TGF5ZXJzT25Db21taXQsIHRoaXMpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotI2lmIERF
QlVHX0FDX0NPTU1JVAotICAgIFBsYXRmb3JtOjpsb2coUGxhdGZvcm06OkxvZ0xldmVsQ3JpdGlj
YWwsICIlcyIsIFdURl9QUkVUVFlfRlVOQ1RJT04pOwotI2VuZGlmCi0KLSAgICBpZiAoIW1fYmFj
a2luZ1N0b3JlLT5kLT5zaG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRvdygpKQotICAgICAgICBt
X2JhY2tpbmdTdG9yZS0+ZC0+YmxpdFZpc2libGVDb250ZW50cygpOwotfQotCiB2b2lkIFdlYlBh
Z2VQcml2YXRlOjpzY2hlZHVsZVJvb3RMYXllckNvbW1pdCgpCiB7CiAgICAgaWYgKCEobV9mcmFt
ZUxheWVycyAmJiBtX2ZyYW1lTGF5ZXJzLT5oYXNMYXllcigpKSAmJiAhbV9vdmVybGF5TGF5ZXIp
CkBAIC01ODE3LDEwICs1NzkyLDcgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6cm9vdExheWVyQ29t
bWl0VGltZXJGaXJlZChUaW1lcjxXZWJQYWdlUHJpdmF0ZT4qKQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgLy8gSWYgdGhlIHdlYiBwYWdlIG5lZWRzIGxheW91dCwgdGhlIGNvbW1pdCB3aWxsIGZh
aWwuCi0gICAgLy8gTm8gbmVlZCB0byBkcmF3IHRoZSBsYXllcnMgaWYgbm90aGluZyBjaGFuZ2Vk
LgotICAgIGlmIChjb21taXRSb290TGF5ZXJJZk5lZWRlZCgpKQotICAgICAgICBkcmF3TGF5ZXJz
T25Db21taXQoKTsKKyAgICBjb21taXRSb290TGF5ZXJJZk5lZWRlZCgpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcml2YXRlOjpyZXNldENvbXBvc2l0aW5nU3VyZmFjZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0FwaS9XZWJQYWdlX3AuaAppbmRleCAwNzRmZDU4MTczMDQxNTdlZjFmM2JiNWE1NGM0
MTQ0NWEzNDJjMWI0Li5kOTE2OTU3MjBiYTE1MjRiM2Q5OTk4YjQ1MGEyYjJiMGM3MDQ1MzhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKQEAgLTQwOSw3ICs0MDks
NiBAQCBwdWJsaWM6CiAKICAgICAvLyBUaHJlYWQgc2FmZS4KICAgICB2b2lkIHJlc2V0Q29tcG9z
aXRpbmdTdXJmYWNlKCk7Ci0gICAgdm9pZCBkcmF3TGF5ZXJzT25Db21taXQoKTsgLy8gSW5jbHVk
aW5nIGJhY2tpbmcgc3RvcmUgYmxpdC4KIAogICAgIC8vIENvbXBvc2l0aW5nIHRocmVhZC4KICAg
ICB2b2lkIHNldFJvb3RMYXllckNvbXBvc2l0aW5nVGhyZWFkKFdlYkNvcmU6OkxheWVyQ29tcG9z
aXRpbmdUaHJlYWQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJL
aXRTdXBwb3J0L1JlbmRlclF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJL
aXRTdXBwb3J0L1JlbmRlclF1ZXVlLmNwcAppbmRleCAzNDYwYmQ4ZjA0MzYxMDk1ZWMzNTU2MzU3
MjYzNTUyMzZmOGNhMDRiLi4wYzMzOTJjMzdhZDM0YTAwZWIwYjk0MzEzYzI0N2MyNjRiODI0Nzcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9SZW5k
ZXJRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
UmVuZGVyUXVldWUuY3BwCkBAIC02NTUsMTQgKzY1NSw4IEBAIHZvaWQgUmVuZGVyUXVldWU6OnJl
bmRlckFsbEN1cnJlbnRSZWd1bGFyUmVuZGVySm9icygpCiAgICAgbV9jdXJyZW50UmVndWxhclJl
bmRlckpvYnNCYXRjaFJlZ2lvbiA9IFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uKCk7CiAgICAgbV9j
dXJyZW50UmVndWxhclJlbmRlckpvYnNCYXRjaFVuZGVyUHJlc3N1cmUgPSBmYWxzZTsKIAotICAg
IC8vIFVwZGF0ZSB0aGUgc2NyZWVuIG9ubHkgaWYgd2UncmUgbm90IHNjcm9sbGluZyBvciB6b29t
aW5nLgotICAgIGlmIChyZW5kZXJlZCAmJiAhbV9wYXJlbnQtPmlzU2Nyb2xsaW5nT3Jab29taW5n
KCkpIHsKLSAgICAgICAgaWYgKCFtX3BhcmVudC0+c2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5k
b3coKSkKLSAgICAgICAgICAgIG1fcGFyZW50LT5ibGl0VmlzaWJsZUNvbnRlbnRzKCk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIG1fcGFyZW50LT5pbnZhbGlkYXRlV2luZG93KCk7Ci0gICAg
ICAgIG1fcGFyZW50LT5tX3dlYlBhZ2UtPmNsaWVudCgpLT5ub3RpZnlDb250ZW50UmVuZGVyZWQo
cmVuZGVyZWRSZWN0KTsKLSAgICB9CisgICAgaWYgKHJlbmRlcmVkKQorICAgICAgICBtX3BhcmVu
dC0+bm90aWZ5Q29udGVudFJlbmRlcmVkKHJlbmRlcmVkUmVjdCk7CiAKICAgICBpZiAobV9wYXJl
bnQtPnNob3VsZFN1cHByZXNzTm9uVmlzaWJsZVJlZ3VsYXJSZW5kZXJKb2JzKCkgJiYgIXJlZ2lv
bk5vdFJlbmRlcmVkLmlzRW1wdHkoKSkKICAgICAgICAgbV9wYXJlbnQtPnVwZGF0ZVRpbGVzRm9y
U2Nyb2xsT3JOb3RSZW5kZXJlZFJlZ2lvbihmYWxzZSAvKmNoZWNrTG9hZGluZyovKTsKQEAgLTgx
MCwxNCArODA0LDcgQEAgdm9pZCBSZW5kZXJRdWV1ZTo6cmVuZGVyUmVndWxhclJlbmRlckpvYigp
CiAgICAgICAgIC8vIENsZWFyIHRoZSByZWdpb24gYW5kIHRoZSBhbmQgYmxpdCBzaW5jZSB0aGlz
IGJhdGNoIGlzIG5vdyBjb21wbGV0ZS4KICAgICAgICAgbV9jdXJyZW50UmVndWxhclJlbmRlckpv
YnNCYXRjaFJlZ2lvbiA9IFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uKCk7CiAgICAgICAgIG1fY3Vy
cmVudFJlZ3VsYXJSZW5kZXJKb2JzQmF0Y2hVbmRlclByZXNzdXJlID0gZmFsc2U7Ci0gICAgICAg
IC8vIFVwZGF0ZSB0aGUgc2NyZWVuIG9ubHkgaWYgd2UncmUgbm90IHNjcm9sbGluZyBvciB6b29t
aW5nLgotICAgICAgICBpZiAoIW1fcGFyZW50LT5pc1Njcm9sbGluZ09yWm9vbWluZygpKSB7Ci0g
ICAgICAgICAgICBpZiAoIW1fcGFyZW50LT5zaG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRvdygp
KQotICAgICAgICAgICAgICAgIG1fcGFyZW50LT5ibGl0VmlzaWJsZUNvbnRlbnRzKCk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9wYXJlbnQtPmludmFsaWRhdGVXaW5kb3co
KTsKLSAgICAgICAgICAgIG1fcGFyZW50LT5tX3dlYlBhZ2UtPmNsaWVudCgpLT5ub3RpZnlDb250
ZW50UmVuZGVyZWQocmVuZGVyZWRSZWN0KTsKLSAgICAgICAgfQorICAgICAgICBtX3BhcmVudC0+
bm90aWZ5Q29udGVudFJlbmRlcmVkKHJlbmRlcmVkUmVjdCk7CiAgICAgfQogCiAgICAgLy8gTWFr
ZSBzdXJlIHdlIGRpZG4ndCBhbHRlciBzdGF0ZSBvZiB0aGUgcXVldWVzIHRoYXQgc2hvdWxkIGhh
dmUgYmVlbiBlbXB0eQpAQCAtODgwLDEzICs4NjcsOCBAQCB2b2lkIFJlbmRlclF1ZXVlOjp2aXNp
YmxlU2Nyb2xsSm9ic0NvbXBsZXRlZChib29sIHNob3VsZEJsaXQpCiAgICAgLy8gTm93IGJsaXQg
dG8gdGhlIHNjcmVlbiBpZiB3ZSBhcmUgZG9uZSBhbmQgZ2V0IHJpZCBvZiB0aGUgY29tcGxldGVk
IGxpc3QhCiAgICAgQVNTRVJUKG1fdmlzaWJsZVNjcm9sbEpvYnMuZW1wdHkoKSk7CiAgICAgbV92
aXNpYmxlU2Nyb2xsSm9ic0NvbXBsZXRlZC5jbGVhcigpOwotICAgIGlmIChzaG91bGRCbGl0ICYm
ICFtX3BhcmVudC0+aXNTY3JvbGxpbmdPclpvb21pbmcoKSkgewotICAgICAgICBpZiAoIW1fcGFy
ZW50LT5zaG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRvdygpKQotICAgICAgICAgICAgbV9wYXJl
bnQtPmJsaXRWaXNpYmxlQ29udGVudHMoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9w
YXJlbnQtPmludmFsaWRhdGVXaW5kb3coKTsKLSAgICAgICAgbV9wYXJlbnQtPm1fd2ViUGFnZS0+
Y2xpZW50KCktPm5vdGlmeUNvbnRlbnRSZW5kZXJlZChtX3BhcmVudC0+dmlzaWJsZUNvbnRlbnRz
UmVjdCgpKTsKLSAgICB9CisgICAgaWYgKHNob3VsZEJsaXQpCisgICAgICAgIG1fcGFyZW50LT5u
b3RpZnlDb250ZW50UmVuZGVyZWQobV9wYXJlbnQtPnZpc2libGVDb250ZW50c1JlY3QoKSk7CiB9
CiAKIHZvaWQgUmVuZGVyUXVldWU6Om5vblZpc2libGVTY3JvbGxKb2JzQ29tcGxldGVkKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160978</attachid>
            <date>2012-08-28 07:46:26 -0700</date>
            <delta_ts>2012-08-28 08:12:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95179-20120828164953.patch</filename>
            <type>text/plain</type>
            <size>13647</size>
            <attacher name="Andrew Lo">anlo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCA4NDQ2YTRhNzQ0NzM1YzBiYWNlM2Y1YjFhZThjMThiNDYwZThkYjdmLi5kN2EyZDcyMjE4
NjYwNDhkOWE4ZTM2YWE3NzZhNzc1OTYzNmM4ZjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMi0wOC0yOCAgQW5kcmV3IExvICA8YW5sb0ByaW0u
Y29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBPbmUgc2hvdCBkcmF3aW5nIHN5bmNocm9uaXph
dGlvbiBicm9rZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk1MTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAg
IEludGVybmFsbHkgcmV2aWV3ZWQgYnkgQXJ2aWQgTmlsc3Nvbi4KKworICAgICAgICBNYWtlIHN1
cmUgbm8gYmFja2luZyBzdG9yZSBibGl0cyBoYXBwZW4gZHVyaW5nIG9uZSBzaG90IGRyYXdpbmcK
KyAgICAgICAgc3luY2hyb25pemF0aW9uLgorICAgICAgICBTaW5jZSB3ZSBhbHdheXMgYmxpdCBk
dXJpbmcgY29tbWl0IG5vdywgbWFrZSBzdXJlIHdlIGRvbid0IGJsaXQgaWYKKyAgICAgICAgd2Ug
Y29tbWl0IGFmdGVyIGEgcmVuZGVyLgorICAgICAgICBXZSBubyBsb25nZXIgbmVlZCBhIGRlZmVy
cmVkIGJsaXQgc2luY2Ugd2UgZG9uJ3QgY29tbWl0IGR1cmluZyByZW5kZXJDb250ZW50cworICAg
ICAgICBub3cuIEluc3RlYWQsIHdlIG9ubHkgY29tbWl0ICYgYmxpdCBvbmNlIGFmdGVyIGEgZnVs
bCByZW5kZXIgam9iLgorCisgICAgICAgICogQXBpL0JhY2tpbmdTdG9yZS5jcHA6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OkJhY2tpbmdTdG9yZVBy
aXZhdGUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRl
OjpyZXBhaW50KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJp
dmF0ZTo6c2xvd1Njcm9sbCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdT
dG9yZVByaXZhdGU6OnJlbmRlckpvYik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJh
Y2tpbmdTdG9yZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29udGVudHMpOgorICAgICAgICAoQmxhY2tC
ZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0Q29udGVudHMpOgorICAgICAg
ICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpyZW5kZXJDb250ZW50
cyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNr
aW5nU3RvcmVQcml2YXRlOjpkcmF3QW5kQmxlbmRMYXllcnNGb3JEaXJlY3RSZW5kZXJpbmcpOgor
ICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpkaWRSZW5k
ZXJDb250ZW50KToKKyAgICAgICAgKiBBcGkvQmFja2luZ1N0b3JlX3AuaDoKKyAgICAgICAgKEJh
Y2tpbmdTdG9yZVByaXZhdGUpOgorICAgICAgICAqIEFwaS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpy
b290TGF5ZXJDb21taXRUaW1lckZpcmVkKToKKyAgICAgICAgKiBBcGkvV2ViUGFnZV9wLmg6Cisg
ICAgICAgIChXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9SZW5kZXJR
dWV1ZS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlJlbmRlclF1ZXVlOjpyZW5k
ZXJBbGxDdXJyZW50UmVndWxhclJlbmRlckpvYnMpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2Vi
S2l0OjpSZW5kZXJRdWV1ZTo6cmVuZGVyUmVndWxhclJlbmRlckpvYik6CisgICAgICAgIChCbGFj
a0JlcnJ5OjpXZWJLaXQ6OlJlbmRlclF1ZXVlOjp2aXNpYmxlU2Nyb2xsSm9ic0NvbXBsZXRlZCk6
CisKIDIwMTItMDgtMjQgIExpYW0gUXVpbm4gIDxscXVpbm5AcmltLmNvbT4KIAogICAgICAgICBb
QmxhY2tCZXJyeV0gRGVidWcgYXNzZXJ0aW9uIGZpcmVzIGluIEJhY2tpbmdTdG9yZVByaXZhdGU6
OnJlbmRlckpvYigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0Jh
Y2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9y
ZS5jcHAKaW5kZXggZDNjMmNlOTNhNjI1YjZkY2MxZmIxMzE0NTk4ZGU4ODAxMDY0MWZjYS4uMjQy
MWQxOTIzNGU5NGU4ZDBlMmY4YWNlNzA1NTE4NDA3ZTI1NDE4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlLmNwcApAQCAtMjA5LDcgKzIwOSw2IEBAIEJh
Y2tpbmdTdG9yZVByaXZhdGU6OkJhY2tpbmdTdG9yZVByaXZhdGUoKQogICAgICwgbV9jdXJyZW50
V2luZG93QmFja0J1ZmZlcigwKQogICAgICwgbV9wcmVmZXJyZWRUaWxlTWF0cml4RGltZW5zaW9u
KFZlcnRpY2FsKQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICAsIG1fbmVl
ZHNEcmF3TGF5ZXJzT25Db21taXQoZmFsc2UpCiAgICAgLCBtX2lzRGlyZWN0UmVuZGVyaW5nQW5p
bWF0aW9uTWVzc2FnZVNjaGVkdWxlZChmYWxzZSkKICNlbmRpZgogewpAQCAtMzkxLDcgKzM5MCw3
IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVwYWludChjb25zdCBQbGF0Zm9ybTo6SW50
UmVjdCYgd2luZG93UmVjdCwKIAogICAgICAgICBpZiAoaW1tZWRpYXRlKSB7CiAgICAgICAgICAg
ICBpZiAocmVuZGVyKHJlY3QpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFzaG91bGREaXJlY3RS
ZW5kZXJpbmdUb1dpbmRvdygpKQorICAgICAgICAgICAgICAgIGlmICghc2hvdWxkRGlyZWN0UmVu
ZGVyaW5nVG9XaW5kb3coKSAmJiAhbV93ZWJQYWdlLT5kLT5jb21taXRSb290TGF5ZXJJZk5lZWRl
ZCgpKQogICAgICAgICAgICAgICAgICAgICBibGl0VmlzaWJsZUNvbnRlbnRzKCk7CiAgICAgICAg
ICAgICAgICAgbV93ZWJQYWdlLT5kLT5tX2NsaWVudC0+bm90aWZ5Q29udGVudFJlbmRlcmVkKHJl
Y3QpOwogICAgICAgICAgICAgfQpAQCAtNDE0LDcgKzQxMyw3IEBAIHZvaWQgQmFja2luZ1N0b3Jl
UHJpdmF0ZTo6c2xvd1Njcm9sbChjb25zdCBQbGF0Zm9ybTo6SW50U2l6ZSYgZGVsdGEsIGNvbnN0
IFBsYXRmCiAgICAgUGxhdGZvcm06OkludFJlY3QgcmVjdCA9IG1fd2ViUGFnZS0+ZC0+bWFwVG9U
cmFuc2Zvcm1lZChtX2NsaWVudC0+bWFwRnJvbVZpZXdwb3J0VG9Db250ZW50cyh3aW5kb3dSZWN0
KSk7CiAKICAgICBpZiAoaW1tZWRpYXRlKSB7Ci0gICAgICAgIGlmIChyZW5kZXIocmVjdCkgJiYg
IWlzU3VzcGVuZGVkKCkgJiYgIXNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KCkpCisgICAg
ICAgIGlmIChyZW5kZXIocmVjdCkgJiYgIWlzU3VzcGVuZGVkKCkgJiYgIXNob3VsZERpcmVjdFJl
bmRlcmluZ1RvV2luZG93KCkgJiYgIW1fd2ViUGFnZS0+ZC0+Y29tbWl0Um9vdExheWVySWZOZWVk
ZWQoKSkKICAgICAgICAgICAgIGJsaXRWaXNpYmxlQ29udGVudHMoKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBtX3JlbmRlclF1ZXVlLT5hZGRUb1F1ZXVlKFJlbmRlclF1ZXVlOjpWaXNpYmxlU2Ny
b2xsLCByZWN0KTsKQEAgLTUyNCw3ICs1MjMsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6
OnJlbmRlckpvYigpCiAgICAgbV9yZW5kZXJRdWV1ZS0+cmVuZGVyKCFtX3N1c3BlbmRSZWd1bGFy
UmVuZGVySm9icyk7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgZHJh
d0xheWVyc09uQ29tbWl0SWZOZWVkZWQoKTsKKyAgICBtX3dlYlBhZ2UtPmQtPmNvbW1pdFJvb3RM
YXllcklmTmVlZGVkKCk7CiAjZW5kaWYKIAogICAgIGlmIChzaG91bGRQZXJmb3JtUmVuZGVySm9i
cygpKQpAQCAtMTE0OCwxMSArMTE0Nyw2IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6Ymxp
dFZpc2libGVDb250ZW50cyhib29sIGZvcmNlKQogICAgIH0KIAogICAgIGlmICghQmxhY2tCZXJy
eTo6UGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmlzQ3VycmVu
dFRocmVhZCgpKSB7Ci0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgICAgICAv
LyBUaGUgYmxpdCB3aWxsIGRyYXcgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgbGF5ZXJzIGlmIG5l
Y2Vzc2FyeQotICAgICAgICBtX25lZWRzRHJhd0xheWVyc09uQ29tbWl0ID0gZmFsc2U7Ci0jZW5k
aWYKLQogICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6dXNlckludGVyZmFjZVRocmVhZE1l
c3NhZ2VDbGllbnQoKS0+ZGlzcGF0Y2hNZXNzYWdlKAogICAgICAgICAgICAgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OmNyZWF0ZU1ldGhvZENhbGxNZXNzYWdlKAogICAgICAgICAgICAgICAgICZCYWNr
aW5nU3RvcmVQcml2YXRlOjpibGl0VmlzaWJsZUNvbnRlbnRzLCB0aGlzLCBmb3JjZSkpOwpAQCAt
MTI0OCwxMSArMTI0Miw2IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdENvbnRlbnRz
KGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBkc3RSZWN0LAogICAgIH0KIAogICAgIGlmICghQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmlz
Q3VycmVudFRocmVhZCgpKSB7Ci0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAg
ICAgICAvLyBUaGUgYmxpdCB3aWxsIGRyYXcgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgbGF5ZXJz
IGlmIG5lY2Vzc2FyeQotICAgICAgICBtX25lZWRzRHJhd0xheWVyc09uQ29tbWl0ID0gZmFsc2U7
Ci0jZW5kaWYKLQogICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6dXNlckludGVyZmFjZVRo
cmVhZE1lc3NhZ2VDbGllbnQoKS0+ZGlzcGF0Y2hNZXNzYWdlKAogICAgICAgICAgICAgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OmNyZWF0ZU1ldGhvZENhbGxNZXNzYWdlKAogICAgICAgICAgICAgICAg
ICZCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0Q29udGVudHMsIHRoaXMsIGRzdFJlY3QsIHNyY1Jl
Y3QsIGZvcmNlKSk7CkBAIC0yMjg5LDE4ICsyMjc4LDYgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2
YXRlOjpyZW5kZXJDb250ZW50cyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZl
cioKICAgICBpZiAoY29udGVudHNTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0j
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIC8vIFdoZW4gY29tbWl0dGluZyB0
aGUgcGVuZGluZyBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBsYXllciBjaGFuZ2VzLCBpdCdzCi0g
ICAgLy8gbmVjZXNzYXJ5IHRvIGRyYXcgdGhlIG5ldyBsYXllciBhcHBlYXJhbmNlLiBUaGlzIGlz
IG5vcm1hbGx5IGRvbmUgYXMKLSAgICAvLyBwYXJ0IG9mIGEgYmxpdCwgYnV0IGlmIG5vIGJsaXQg
aGFwcGVucyBiZWNhdXNlIG9mIHRoaXMgcmVuZGVyaW5nLCBmb3IKLSAgICAvLyBleGFtcGxlIGJl
Y2F1c2Ugd2UncmUgcmVuZGVyaW5nIGFuIG9mZnNjcmVlbiByZWN0YW5nbGUsIHNvbWVvbmUgbmVl
ZHMgdG8KLSAgICAvLyBjYXRjaCB0aGlzIGZsYWcgYW5kIG1ha2Ugc3VyZSB0aG9zZSBsYXllcnMg
Z2V0IGRyYXduLgotICAgIC8vIFRoaXMgaXMganVzdCBhIGNvbXBsaWNhdGVkIHdheSB0byBkbwot
ICAgIC8vICJpZiAoY29tbWl0Um9vdExheWVySWZOZWVkZWQoKSkgZHJhd0xheWVyc09uQ29tbWl0
KCk7IgotICAgIGlmIChtX3dlYlBhZ2UtPmQtPmNvbW1pdFJvb3RMYXllcklmTmVlZGVkKCkpCi0g
ICAgICAgIG1fbmVlZHNEcmF3TGF5ZXJzT25Db21taXQgPSB0cnVlOwotI2VuZGlmCi0KICAgICBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkRyYXdhYmxlKiBidWZmZXJEcmF3YWJsZSA9
CiAgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6bG9ja0J1ZmZlckRyYXdh
YmxlKHRhcmdldEJ1ZmZlcik7CiAKQEAgLTI2MDIsMTggKzI1NzksNiBAQCBCYWNraW5nU3RvcmVX
aW5kb3dCdWZmZXJTdGF0ZSogQmFja2luZ1N0b3JlUHJpdmF0ZTo6d2luZG93QmFja0J1ZmZlclN0
YXRlKCkgY29ucwogfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotYm9vbCBC
YWNraW5nU3RvcmVQcml2YXRlOjpkcmF3TGF5ZXJzT25Db21taXRJZk5lZWRlZCgpCi17Ci0gICAg
Ly8gQ2hlY2sgaWYgcmVuZGVyaW5nIGNhdXNlZCBhIGNvbW1pdCBhbmQgd2UgbmVlZCB0byByZWRy
YXcgdGhlIGxheWVycwotICAgIGlmICghbV9uZWVkc0RyYXdMYXllcnNPbkNvbW1pdCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbV9uZWVkc0RyYXdMYXllcnNPbkNvbW1pdCA9IGZhbHNl
OwotICAgIG1fd2ViUGFnZS0+ZC0+ZHJhd0xheWVyc09uQ29tbWl0KCk7Ci0KLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQogdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpkcmF3QW5kQmxlbmRMYXllcnNG
b3JEaXJlY3RSZW5kZXJpbmcoY29uc3QgUGxhdGZvcm06OkludFJlY3QmIGRpcnR5UmVjdCkKIHsK
ICAgICBBU1NFUlQoQmxhY2tCZXJyeTo6UGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNz
YWdlQ2xpZW50KCktPmlzQ3VycmVudFRocmVhZCgpKTsKQEAgLTI2MjksNyArMjU5NCw2IEBAIHZv
aWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6ZHJhd0FuZEJsZW5kTGF5ZXJzRm9yRGlyZWN0UmVuZGVy
aW5nKGNvbnN0IFBsYXRmb3JtOjpJCiAgICAgICAgIFdlYkNvcmU6OkludFJlY3QoV2ViQ29yZTo6
SW50UG9pbnQoMCwgMCksIG1fd2ViUGFnZS0+ZC0+dHJhbnNmb3JtZWRWaWV3cG9ydFNpemUoKSkp
OwogCiAgICAgLy8gQ2hlY2sgaWYgcmVuZGVyaW5nIGNhdXNlZCBhIGNvbW1pdCBhbmQgd2UgbmVl
ZCB0byByZWRyYXcgdGhlIGxheWVycy4KLSAgICBtX25lZWRzRHJhd0xheWVyc09uQ29tbWl0ID0g
ZmFsc2U7CiAgICAgaWYgKFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZSogY29tcG9zaXRvciA9IG1f
d2ViUGFnZS0+ZC0+Y29tcG9zaXRvcigpKQogICAgICAgICBjb21wb3NpdG9yLT5kcmF3TGF5ZXJz
KGRzdFJlY3QsIHVudHJhbnNmb3JtZWRDb250ZW50c1JlY3QpOwogCkBAIC0yNjQ5LDYgKzI2MTMs
MjAgQEAgYm9vbCBCYWNraW5nU3RvcmVQcml2YXRlOjppc0FjdGl2ZSgpIGNvbnN0CiAgICAgcmV0
dXJuIEJhY2tpbmdTdG9yZVByaXZhdGU6OnNfY3VycmVudEJhY2tpbmdTdG9yZU93bmVyID09IG1f
d2ViUGFnZSAmJiBTdXJmYWNlUG9vbDo6Z2xvYmFsU3VyZmFjZVBvb2woKS0+aXNBY3RpdmUoKTsK
IH0KIAordm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpkaWRSZW5kZXJDb250ZW50KGNvbnN0IFBs
YXRmb3JtOjpJbnRSZWN0JiByZW5kZXJlZFJlY3QpCit7CisgICAgaWYgKGlzU2Nyb2xsaW5nT3Ja
b29taW5nKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghc2hvdWxkRGlyZWN0UmVuZGVy
aW5nVG9XaW5kb3coKSkgeworICAgICAgICBpZiAoIW1fd2ViUGFnZS0+ZC0+bmVlZHNPbmVTaG90
RHJhd2luZ1N5bmNocm9uaXphdGlvbigpKQorICAgICAgICAgICAgYmxpdFZpc2libGVDb250ZW50
cygpOworICAgIH0gZWxzZQorICAgICAgICBpbnZhbGlkYXRlV2luZG93KCk7CisKKyAgICBtX3dl
YlBhZ2UtPmNsaWVudCgpLT5ub3RpZnlDb250ZW50UmVuZGVyZWQocmVuZGVyZWRSZWN0KTsKK30K
KwogQmFja2luZ1N0b3JlOjpCYWNraW5nU3RvcmUoV2ViUGFnZSogd2ViUGFnZSwgQmFja2luZ1N0
b3JlQ2xpZW50KiBjbGllbnQpCiAgICAgOiBkKG5ldyBCYWNraW5nU3RvcmVQcml2YXRlKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmVfcC5o
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmVfcC5oCmluZGV4IDEw
MjNmMGNmZTBiODJmZjEwMmU4OWE1NGJjZDk2NmIwM2JhNDkxMWUuLmIyNGJiODUwNGRkMzZlMDY3
OTYwOWNmMWE5Mjg2MzIwNGIyOTMzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9BcGkvQmFja2luZ1N0b3JlX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL0JhY2tpbmdTdG9yZV9wLmgKQEAgLTMzMyw2ICszMzMsOCBAQCBwdWJsaWM6CiAgICAgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OkludFNpemUgc3VyZmFjZVNpemUoKSBjb25zdDsKICAgICBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogYnVmZmVyKCkgY29uc3Q7CiAKKyAg
ICB2b2lkIGRpZFJlbmRlckNvbnRlbnQoY29uc3QgUGxhdGZvcm06OkludFJlY3QmIHJlbmRlcmVk
UmVjdCk7CisKICAgICBzdGF0aWMgV2ViUGFnZSogc19jdXJyZW50QmFja2luZ1N0b3JlT3duZXI7
CiAKICAgICB1bnNpZ25lZCBtX3N1c3BlbmRTY3JlZW5VcGRhdGVzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKaW5kZXggN2JhNjUxZDQ0OTllZWMzOTM1ZmM2MGI0MjA1
NjZjNTlkNmQyMjQwYi4uOGQ3Y2IxOWVkMjhhMjU2NzNmZjdmNTJlOGI0MTE3NjE2ZWE4ZGQyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCkBAIC01NTQ0LDMxICs1
NTQ0LDYgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6c2V0Q29tcG9zaXRvckRyYXdzUm9vdExheWVy
KGJvb2wgY29tcG9zaXRvckRyYXdzUm9vdExheWVyKQogfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQotdm9pZCBXZWJQYWdlUHJpdmF0ZTo6ZHJhd0xheWVyc09uQ29tbWl0KCkK
LXsKLSAgICBpZiAoIVBsYXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVudCgp
LT5pc0N1cnJlbnRUaHJlYWQoKSkgewotICAgICAgICAvLyBUaGlzIG1ldGhvZCB3aWxsIG9ubHkg
YmUgY2FsbGVkIHdoZW4gdGhlIGxheWVyIGFwcGVhcmFuY2UgY2hhbmdlZCBkdWUgdG8KLSAgICAg
ICAgLy8gYW5pbWF0aW9ucy4gQW5kIG9ubHkgaWYgd2UgZG9uJ3QgbmVlZCBhIG9uZSBzaG90IGRy
YXdpbmcgc3luYy4KLSAgICAgICAgQVNTRVJUKCFuZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25p
emF0aW9uKCkpOwotCi0gICAgICAgIGlmICghbV93ZWJQYWdlLT5pc1Zpc2libGUoKSkKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBtX2JhY2tpbmdTdG9yZS0+ZC0+d2lsbERyYXdMYXll
cnNPbkNvbW1pdCgpOwotCi0gICAgICAgIFBsYXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFkTWVz
c2FnZUNsaWVudCgpLT5kaXNwYXRjaE1lc3NhZ2UoCi0gICAgICAgICAgICBQbGF0Zm9ybTo6Y3Jl
YXRlTWV0aG9kQ2FsbE1lc3NhZ2UoJldlYlBhZ2VQcml2YXRlOjpkcmF3TGF5ZXJzT25Db21taXQs
IHRoaXMpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotI2lmIERFQlVHX0FDX0NPTU1JVAot
ICAgIFBsYXRmb3JtOjpsb2coUGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsICIlcyIsIFdURl9Q
UkVUVFlfRlVOQ1RJT04pOwotI2VuZGlmCi0KLSAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5kLT5z
aG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRvdygpKQotICAgICAgICBtX2JhY2tpbmdTdG9yZS0+
ZC0+YmxpdFZpc2libGVDb250ZW50cygpOwotfQotCiB2b2lkIFdlYlBhZ2VQcml2YXRlOjpzY2hl
ZHVsZVJvb3RMYXllckNvbW1pdCgpCiB7CiAgICAgaWYgKCEobV9mcmFtZUxheWVycyAmJiBtX2Zy
YW1lTGF5ZXJzLT5oYXNMYXllcigpKSAmJiAhbV9vdmVybGF5TGF5ZXIpCkBAIC01ODE3LDEwICs1
NzkyLDcgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6cm9vdExheWVyQ29tbWl0VGltZXJGaXJlZChU
aW1lcjxXZWJQYWdlUHJpdmF0ZT4qKQogICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gSWYgdGhl
IHdlYiBwYWdlIG5lZWRzIGxheW91dCwgdGhlIGNvbW1pdCB3aWxsIGZhaWwuCi0gICAgLy8gTm8g
bmVlZCB0byBkcmF3IHRoZSBsYXllcnMgaWYgbm90aGluZyBjaGFuZ2VkLgotICAgIGlmIChjb21t
aXRSb290TGF5ZXJJZk5lZWRlZCgpKQotICAgICAgICBkcmF3TGF5ZXJzT25Db21taXQoKTsKKyAg
ICBjb21taXRSb290TGF5ZXJJZk5lZWRlZCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcml2YXRlOjpy
ZXNldENvbXBvc2l0aW5nU3VyZmFjZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQXBpL1dlYlBhZ2VfcC5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQ
YWdlX3AuaAppbmRleCAwNzRmZDU4MTczMDQxNTdlZjFmM2JiNWE1NGM0MTQ0NWEzNDJjMWI0Li5k
OTE2OTU3MjBiYTE1MjRiM2Q5OTk4YjQ1MGEyYjJiMGM3MDQ1MzhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKQEAgLTQwOSw3ICs0MDksNiBAQCBwdWJsaWM6CiAK
ICAgICAvLyBUaHJlYWQgc2FmZS4KICAgICB2b2lkIHJlc2V0Q29tcG9zaXRpbmdTdXJmYWNlKCk7
Ci0gICAgdm9pZCBkcmF3TGF5ZXJzT25Db21taXQoKTsgLy8gSW5jbHVkaW5nIGJhY2tpbmcgc3Rv
cmUgYmxpdC4KIAogICAgIC8vIENvbXBvc2l0aW5nIHRocmVhZC4KICAgICB2b2lkIHNldFJvb3RM
YXllckNvbXBvc2l0aW5nVGhyZWFkKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1JlbmRl
clF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1JlbmRl
clF1ZXVlLmNwcAppbmRleCAzNDYwYmQ4ZjA0MzYxMDk1ZWMzNTU2MzU3MjYzNTUyMzZmOGNhMDRi
Li4xOTIzYzE3MWQyOTMxOTExMWJlMjJhNmNjZGUxNzgxYmQwYTdkODdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9SZW5kZXJRdWV1ZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvUmVuZGVyUXVldWUuY3Bw
CkBAIC02NTUsMTQgKzY1NSw4IEBAIHZvaWQgUmVuZGVyUXVldWU6OnJlbmRlckFsbEN1cnJlbnRS
ZWd1bGFyUmVuZGVySm9icygpCiAgICAgbV9jdXJyZW50UmVndWxhclJlbmRlckpvYnNCYXRjaFJl
Z2lvbiA9IFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uKCk7CiAgICAgbV9jdXJyZW50UmVndWxhclJl
bmRlckpvYnNCYXRjaFVuZGVyUHJlc3N1cmUgPSBmYWxzZTsKIAotICAgIC8vIFVwZGF0ZSB0aGUg
c2NyZWVuIG9ubHkgaWYgd2UncmUgbm90IHNjcm9sbGluZyBvciB6b29taW5nLgotICAgIGlmIChy
ZW5kZXJlZCAmJiAhbV9wYXJlbnQtPmlzU2Nyb2xsaW5nT3Jab29taW5nKCkpIHsKLSAgICAgICAg
aWYgKCFtX3BhcmVudC0+c2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSkKLSAgICAgICAg
ICAgIG1fcGFyZW50LT5ibGl0VmlzaWJsZUNvbnRlbnRzKCk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG1fcGFyZW50LT5pbnZhbGlkYXRlV2luZG93KCk7Ci0gICAgICAgIG1fcGFyZW50LT5t
X3dlYlBhZ2UtPmNsaWVudCgpLT5ub3RpZnlDb250ZW50UmVuZGVyZWQocmVuZGVyZWRSZWN0KTsK
LSAgICB9CisgICAgaWYgKHJlbmRlcmVkKQorICAgICAgICBtX3BhcmVudC0+ZGlkUmVuZGVyQ29u
dGVudChyZW5kZXJlZFJlY3QpOwogCiAgICAgaWYgKG1fcGFyZW50LT5zaG91bGRTdXBwcmVzc05v
blZpc2libGVSZWd1bGFyUmVuZGVySm9icygpICYmICFyZWdpb25Ob3RSZW5kZXJlZC5pc0VtcHR5
KCkpCiAgICAgICAgIG1fcGFyZW50LT51cGRhdGVUaWxlc0ZvclNjcm9sbE9yTm90UmVuZGVyZWRS
ZWdpb24oZmFsc2UgLypjaGVja0xvYWRpbmcqLyk7CkBAIC04MTAsMTQgKzgwNCw3IEBAIHZvaWQg
UmVuZGVyUXVldWU6OnJlbmRlclJlZ3VsYXJSZW5kZXJKb2IoKQogICAgICAgICAvLyBDbGVhciB0
aGUgcmVnaW9uIGFuZCB0aGUgYW5kIGJsaXQgc2luY2UgdGhpcyBiYXRjaCBpcyBub3cgY29tcGxl
dGUuCiAgICAgICAgIG1fY3VycmVudFJlZ3VsYXJSZW5kZXJKb2JzQmF0Y2hSZWdpb24gPSBQbGF0
Zm9ybTo6SW50UmVjdFJlZ2lvbigpOwogICAgICAgICBtX2N1cnJlbnRSZWd1bGFyUmVuZGVySm9i
c0JhdGNoVW5kZXJQcmVzc3VyZSA9IGZhbHNlOwotICAgICAgICAvLyBVcGRhdGUgdGhlIHNjcmVl
biBvbmx5IGlmIHdlJ3JlIG5vdCBzY3JvbGxpbmcgb3Igem9vbWluZy4KLSAgICAgICAgaWYgKCFt
X3BhcmVudC0+aXNTY3JvbGxpbmdPclpvb21pbmcoKSkgewotICAgICAgICAgICAgaWYgKCFtX3Bh
cmVudC0+c2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSkKLSAgICAgICAgICAgICAgICBt
X3BhcmVudC0+YmxpdFZpc2libGVDb250ZW50cygpOwotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIG1fcGFyZW50LT5pbnZhbGlkYXRlV2luZG93KCk7Ci0gICAgICAgICAgICBtX3Bh
cmVudC0+bV93ZWJQYWdlLT5jbGllbnQoKS0+bm90aWZ5Q29udGVudFJlbmRlcmVkKHJlbmRlcmVk
UmVjdCk7Ci0gICAgICAgIH0KKyAgICAgICAgbV9wYXJlbnQtPmRpZFJlbmRlckNvbnRlbnQocmVu
ZGVyZWRSZWN0KTsKICAgICB9CiAKICAgICAvLyBNYWtlIHN1cmUgd2UgZGlkbid0IGFsdGVyIHN0
YXRlIG9mIHRoZSBxdWV1ZXMgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIGVtcHR5CkBAIC04ODAsMTMg
Kzg2Nyw4IEBAIHZvaWQgUmVuZGVyUXVldWU6OnZpc2libGVTY3JvbGxKb2JzQ29tcGxldGVkKGJv
b2wgc2hvdWxkQmxpdCkKICAgICAvLyBOb3cgYmxpdCB0byB0aGUgc2NyZWVuIGlmIHdlIGFyZSBk
b25lIGFuZCBnZXQgcmlkIG9mIHRoZSBjb21wbGV0ZWQgbGlzdCEKICAgICBBU1NFUlQobV92aXNp
YmxlU2Nyb2xsSm9icy5lbXB0eSgpKTsKICAgICBtX3Zpc2libGVTY3JvbGxKb2JzQ29tcGxldGVk
LmNsZWFyKCk7Ci0gICAgaWYgKHNob3VsZEJsaXQgJiYgIW1fcGFyZW50LT5pc1Njcm9sbGluZ09y
Wm9vbWluZygpKSB7Ci0gICAgICAgIGlmICghbV9wYXJlbnQtPnNob3VsZERpcmVjdFJlbmRlcmlu
Z1RvV2luZG93KCkpCi0gICAgICAgICAgICBtX3BhcmVudC0+YmxpdFZpc2libGVDb250ZW50cygp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BhcmVudC0+aW52YWxpZGF0ZVdpbmRvdygp
OwotICAgICAgICBtX3BhcmVudC0+bV93ZWJQYWdlLT5jbGllbnQoKS0+bm90aWZ5Q29udGVudFJl
bmRlcmVkKG1fcGFyZW50LT52aXNpYmxlQ29udGVudHNSZWN0KCkpOwotICAgIH0KKyAgICBpZiAo
c2hvdWxkQmxpdCkKKyAgICAgICAgbV9wYXJlbnQtPmRpZFJlbmRlckNvbnRlbnQobV9wYXJlbnQt
PnZpc2libGVDb250ZW50c1JlY3QoKSk7CiB9CiAKIHZvaWQgUmVuZGVyUXVldWU6Om5vblZpc2li
bGVTY3JvbGxKb2JzQ29tcGxldGVkKCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>