<?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>77976</bug_id>
          
          <creation_ts>2012-02-07 05:41:15 -0800</creation_ts>
          <short_desc>[Qt] Register individual WebGraphicsLayer to LayerTreeHost instead of handling the tree as a whole.</short_desc>
          <delta_ts>2012-02-09 06:33:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="Jocelyn Turcotte">jturcotte</reporter>
          <assigned_to name="Jocelyn Turcotte">jturcotte</assigned_to>
          <cc>kenneth</cc>
    
    <cc>menard</cc>
    
    <cc>noam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>550900</commentid>
    <comment_count>0</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-02-07 05:41:15 -0800</bug_when>
    <thetext>[Qt] Register individual WebGraphicsLayer to LayerTreeHost instead of handling the tree as a whole.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550960</commentid>
    <comment_count>1</comment_count>
      <attachid>125842</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-02-07 07:13:01 -0800</bug_when>
    <thetext>Created attachment 125842
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550975</commentid>
    <comment_count>2</comment_count>
      <attachid>125842</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-02-07 07:46:47 -0800</bug_when>
    <thetext>Comment on attachment 125842
Patch

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

General direction is good, have some nitpicks.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.h:48
&gt; +class WebGraphicsLayerRemoteClient {

Not sure about the name... Maybe just WebGraphicsLayerClient?
The implementation is remote, but the interface doesn&apos;t have any trace of remote-ness.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.h:60
&gt; +    virtual void didDeleteLayer(WebCore::WebGraphicsLayer*) = 0;

Maybe we should rename this to unregister, since we call it outside of deletion.

&gt; Source/WebKit2/WebProcess/WebPage/qt/LayerTreeHostQt.cpp:245
&gt; +    m_registeredLayers.remove(m_registeredLayers.find(layer));

Expensive.
Maybe this should be a HashSet instead of a vector?

&gt; Source/WebKit2/WebProcess/WebPage/qt/LayerTreeHostQt.cpp:428
&gt; +    for (int i = 0; i &lt; m_registeredLayers.size(); ++i)
&gt; +        m_registeredLayers[i]-&gt;setVisibleContentRectTrajectoryVector(trajectoryVector);

This is a change in behavior that belongs in a different patch. We shouldn&apos;t calculate trajectory for all layers, because the trajectory has to be transformed.

&gt; Source/WebKit2/WebProcess/WebPage/qt/LayerTreeHostQt.h:119
&gt; +    float m_contentsScale;

Shouldn&apos;t this new member be initialized?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551109</commentid>
    <comment_count>3</comment_count>
      <attachid>125873</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-02-07 10:35:42 -0800</bug_when>
    <thetext>Created attachment 125873
Patch

Addressed comments, renamed didDeleteLayer to releaseLayer since it doesn&apos;t just unregister it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551158</commentid>
    <comment_count>4</comment_count>
      <attachid>125881</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-02-07 11:25:34 -0800</bug_when>
    <thetext>Created attachment 125881
Patch

Removed the delegation to child layers of setVisibleContentsRectAndScale.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551282</commentid>
    <comment_count>5</comment_count>
      <attachid>125881</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-02-07 13:11:24 -0800</bug_when>
    <thetext>Comment on attachment 125881
Patch

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

&gt; Source/WebKit2/ChangeLog:8
&gt; +        The LayerTreeHost association had to be maintained between re-paranted layers and it would be

parented*

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:165
&gt; -    toWebGraphicsLayer(newChild)-&gt;setVisibleContentRectAndScale(m_pageVisibleRect, m_contentsScale);
&gt; +    toWebGraphicsLayer(newChild)-&gt;setWebGraphicsLayerClient(m_webGraphicsLayerClient);

Maybe it should just be called setGraphicsLayerClient?

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.h:60
&gt; +    virtual void registerLayer(WebCore::WebGraphicsLayer*) = 0;
&gt; +    virtual void releaseLayer(WebCore::WebGraphicsLayer*) = 0;

This is a bit confusing, register vs release. Add a comment ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551482</commentid>
    <comment_count>6</comment_count>
      <attachid>125881</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-02-07 15:42:30 -0800</bug_when>
    <thetext>Comment on attachment 125881
Patch

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

Let&apos;s fix the naming nitpicks and Kenneth&apos;s other comments; otherwise we&apos;re good to go.

&gt;&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:165
&gt;&gt; +    toWebGraphicsLayer(newChild)-&gt;setWebGraphicsLayerClient(m_webGraphicsLayerClient);
&gt; 
&gt; Maybe it should just be called setGraphicsLayerClient?

I don&apos;t think so... there&apos;s already a GraphicsLayerClient class.
Maybe there&apos;s a better name for this? I just didn&apos;t like &quot;remote&quot; in there because it made the code confusing to read.

&gt;&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.h:60
&gt;&gt; +    virtual void releaseLayer(WebCore::WebGraphicsLayer*) = 0;
&gt; 
&gt; This is a bit confusing, register vs release. Add a comment ?

Maybe attachLayer / detachLayer?

&gt; Source/WebKit2/WebProcess/WebPage/qt/LayerTreeHostQt.cpp:61
&gt; +    for (HashSet&lt;WebCore::WebGraphicsLayer*&gt;::iterator iter = registeredLayers.begin(); iter != end; ++iter)
&gt; +        (*iter)-&gt;setWebGraphicsLayerClient(0);

iter -&gt; it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551919</commentid>
    <comment_count>7</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-02-08 02:18:34 -0800</bug_when>
    <thetext>
&gt; &gt;&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:165
&gt; &gt;&gt; +    toWebGraphicsLayer(newChild)-&gt;setWebGraphicsLayerClient(m_webGraphicsLayerClient);
&gt; &gt; 
&gt; &gt; Maybe it should just be called setGraphicsLayerClient?
&gt; 
&gt; I don&apos;t think so... there&apos;s already a GraphicsLayerClient class.
&gt; Maybe there&apos;s a better name for this? I just didn&apos;t like &quot;remote&quot; in there because it made the code confusing to read.

Yeah and proxy would just make it confusing as well. It is probably ok, and we can fix the names later.. maybe discuss it at the code camp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552033</commentid>
    <comment_count>8</comment_count>
      <attachid>126059</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-02-08 04:50:41 -0800</bug_when>
    <thetext>Created attachment 126059
Patch

- register/release -&gt; attach/detach
- iter -&gt; it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553112</commentid>
    <comment_count>9</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-02-09 06:33:57 -0800</bug_when>
    <thetext>Committed r107233: &lt;http://trac.webkit.org/changeset/107233&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125842</attachid>
            <date>2012-02-07 07:13:01 -0800</date>
            <delta_ts>2012-02-07 10:35:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77976-20120207160823.patch</filename>
            <type>text/plain</type>
            <size>21437</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2ODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTk3YTBjNzMwOTI1YzZm
YTZiZWUwODkxNGUwMjRhYzQwNWUzN2UyMi4uNTkyN2M3MGYwYjc1OTJjMjIzZmEyZjYxZmMzOTI5
NjkyYTIwODY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTAyLTA3ICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgW1F0
XSBSZWdpc3RlciBpbmRpdmlkdWFsIFdlYkdyYXBoaWNzTGF5ZXJzIHRvIExheWVyVHJlZUhvc3Qg
aW5zdGVhZCBvZiBoYW5kbGluZyB0aGUgdHJlZSBhcyBhIHdob2xlLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc5NzYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgTGF5ZXJUcmVlSG9zdCBhc3NvY2lh
dGlvbiBoYWQgdG8gYmUgbWFpbnRhaW5lZCBiZXR3ZWVuIHJlLXBhcmFudGVkIGxheWVycyBhbmQg
aXQgd291bGQgYmUKKyAgICAgICAgaW1wb3NzaWJsZSB0byBrbm93IGlmIHRoZSBsYXllciB3b3Vs
ZCBiZSBkaXNjb25uZWN0ZWQgZnJvbSB0aGUgTGF5ZXJUcmVlSG9zdCBvbmx5IGZvciByZXBhcmVu
dGluZworICAgICAgICBvciBkaXNjb25uZWN0ZWQgZm9yIGdvb2QgKGluIG90aGVyIHdvcmRzLCB0
aGF0IHRoZSBMYXllclRyZWVIb3N0IGNvdWxkIGJlIGRlbGV0ZWQgbWVhbndoaWxlKS4KKworICAg
ICAgICBJbnN0ZWFkLCB0aGlzIHBhdGNoIGFzc3VtZXMgdGhhdCBncmFwaGljcyBsYXllcnMgd2ls
bCBvbmx5IGJlIGluIGNvbnRhY3Qgd2l0aCBvbmUgaW5zdGFuY2Ugb2YKKyAgICAgICAgTGF5ZXJU
cmVlSG9zdCwgYW5kIHRoYXQgdGhpcyBhc3NvY2lhdGlvbiBjYW4gYmUga2VwdCB1bnRpbCBlaXRo
ZXIgdGhlIGdyYXBoaWNzIGxheWVyIG9yIHRoZSBsYXllcgorICAgICAgICB0cmVlIGhvc3QgZ2V0
cyBkZWxldGVkLgorCisgICAgICAgIFRoZSByZWdpc3RlcmVkIGxheWVycyBhcmUga2VwdCBpbiBh
IHZlY3RvciBhbmQgdGhlIHZpc2libGUgcmVjdCBhbmQgc2NhbGVzIGFyZSBwYXNzZWQgZGlyZWN0
bHkKKyAgICAgICAgdG8gbGF5ZXJzIGluc3RlYWQgb2YgZG93biB0aGUgdHJlZSwgdGhyb3VnaCB0
aGUgcm9vdCBsYXllci4KKworICAgICAgICBUaGlzIGFsc28gZml4ZXMgdGhlICFtX2xheWVySW5m
by5pbWFnZUJhY2tpbmdTdG9yZUlEIEFTU0VSVCB0aGF0IHdhcyBwb3BwaW5nIGluIHVuaXQgdGVz
dHMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6V2ViR3JhcGhpY3NM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjp+V2ViR3JhcGhpY3NM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpzZXRDaGlsZHJlbik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjphZGRDaGlsZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjphZGRDaGlsZEF0SW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBYm92ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHcmFwaGljc0xheWVyOjphZGRDaGlsZEJlbG93KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdyYXBoaWNzTGF5ZXI6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
cmFwaGljc0xheWVyOjpyZW1vdmVGcm9tUGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdy
YXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
cmFwaGljc0xheWVyOjpzZXRNYXNrTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhp
Y3NMYXllcjo6c2V0UmVwbGljYXRlZEJ5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3Jh
cGhpY3NMYXllcjo6c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlVXBkYXRlc0Fs
bG93ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6Y3JlYXRlVGlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjp1cGRhdGVUaWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnJlbW92ZVRpbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6cHVyZ2VCYWNraW5nU3RvcmVzKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnNldFJlbW90ZUNsaWVudCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkdyYXBoaWNzTGF5ZXJSZW1vdGVDbGllbnQpOgorICAgICAg
ICAoV2ViR3JhcGhpY3NMYXllcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xh
eWVyVHJlZUhvc3RRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RRdDo6fkxh
eWVyVHJlZUhvc3RRdCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RRdDo6TGF5ZXJU
cmVlSG9zdFF0KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdFF0OjpyZWdpc3Rlckxh
eWVyKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RR
dDo6ZGlkRGVsZXRlTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UXQ6OnNl
dFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVl
SG9zdFF0OjpzZXRWaXNpYmxlQ29udGVudFJlY3RUcmFqZWN0b3J5VmVjdG9yKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0Lmg6CisgICAgICAgIChMYXll
clRyZWVIb3N0UXQpOgorCiAyMDEyLTAyLTAzICBaYWxhbiBCdWp0YXMgIDx6YnVqdGFzQGdtYWls
LmNvbT4gIGFuZCAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAbm9raWEuY29t
PgogCiAgICAgICAgIFtRdF1bV0syXSBSZW1vdmUgVGlsZWREcmF3aW5nQXJlYSBhbmQgZGVwZW5k
ZW5jaWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5jcHAKaW5kZXggMTRiODZhZWE0ODZhZDgwMDhm
YWI2NmVkNjFlYjhlYWU5OWY1ZDZjYS4uNWZlZThlYzllNTNjMGVkNTE5Y2Q3NWI5MGZjMDg2YTgx
MWZhNWYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIFdl
YkdyYXBoaWNzTGF5ZXI6OldlYkdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCogY2xp
ZW50KQogICAgICwgbV9oYXNQZW5kaW5nQW5pbWF0aW9ucyhmYWxzZSkKICAgICAsIG1faW5VcGRh
dGVNb2RlKGZhbHNlKQogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgICwgbV9sYXll
clRyZWVUaWxlQ2xpZW50KDApCisgICAgLCBtX3JlbW90ZUNsaWVudCgwKQogICAgICwgbV9tYWlu
QmFja2luZ1N0b3JlKGFkb3B0UHRyKG5ldyBUaWxlZEJhY2tpbmdTdG9yZSh0aGlzLCBUaWxlZEJh
Y2tpbmdTdG9yZVJlbW90ZVRpbGVCYWNrZW5kOjpjcmVhdGUodGhpcykpKSkKICAgICAsIG1fY29u
dGVudHNTY2FsZSgxLmYpCiAjZW5kaWYKQEAgLTEwNSw4ICsxMDUsOCBAQCBXZWJHcmFwaGljc0xh
eWVyOjp+V2ViR3JhcGhpY3NMYXllcigpCiAgICAgLy8gVGhpcyB3b3VsZCB0ZWxsIHRoZSBVSSBw
cm9jZXNzIHRvIHJlbGVhc2UgdGhlIGJhY2tpbmcgc3RvcmUuCiAgICAgc2V0Q29udGVudHNUb0lt
YWdlKDApOwogCi0gICAgaWYgKG1fbGF5ZXJUcmVlVGlsZUNsaWVudCkKLSAgICAgICAgbV9sYXll
clRyZWVUaWxlQ2xpZW50LT5kaWREZWxldGVMYXllcihpZCgpKTsKKyAgICBpZiAobV9yZW1vdGVD
bGllbnQpCisgICAgICAgIG1fcmVtb3RlQ2xpZW50LT5kaWREZWxldGVMYXllcih0aGlzKTsKIH0K
IAogYm9vbCBXZWJHcmFwaGljc0xheWVyOjpzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhp
Y3NMYXllcio+JiBjaGlsZHJlbikKQEAgLTExNiw3ICsxMTYsNyBAQCBib29sIFdlYkdyYXBoaWNz
TGF5ZXI6OnNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGNoaWxkcmVu
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaGlsZHJl
bi5zaXplKCk7ICsraSkgewogICAgICAgICBXZWJHcmFwaGljc0xheWVyKiBjaGlsZCA9IHRvV2Vi
R3JhcGhpY3NMYXllcihjaGlsZHJlbltpXSk7Ci0gICAgICAgIGNoaWxkLT5zZXRWaXNpYmxlQ29u
dGVudFJlY3RBbmRTY2FsZShtX3BhZ2VWaXNpYmxlUmVjdCwgbV9jb250ZW50c1NjYWxlKTsKKyAg
ICAgICAgY2hpbGQtPnNldFJlbW90ZUNsaWVudChtX3JlbW90ZUNsaWVudCk7CiAgICAgICAgIGNo
aWxkLT5ub3RpZnlDaGFuZ2UoKTsKICAgICB9CiAgICAgbm90aWZ5Q2hhbmdlKCk7CkBAIC0xMjYs
NyArMTI2LDcgQEAgYm9vbCBXZWJHcmFwaGljc0xheWVyOjpzZXRDaGlsZHJlbihjb25zdCBWZWN0
b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZHJlbikKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6YWRk
Q2hpbGQoR3JhcGhpY3NMYXllciogbGF5ZXIpCiB7CiAgICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hp
bGQobGF5ZXIpOwotICAgIHRvV2ViR3JhcGhpY3NMYXllcihsYXllciktPnNldFZpc2libGVDb250
ZW50UmVjdEFuZFNjYWxlKG1fcGFnZVZpc2libGVSZWN0LCBtX2NvbnRlbnRzU2NhbGUpOworICAg
IHRvV2ViR3JhcGhpY3NMYXllcihsYXllciktPnNldFJlbW90ZUNsaWVudChtX3JlbW90ZUNsaWVu
dCk7CiAgICAgdG9XZWJHcmFwaGljc0xheWVyKGxheWVyKS0+bm90aWZ5Q2hhbmdlKCk7CiAgICAg
bm90aWZ5Q2hhbmdlKCk7CiB9CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBXZWJHcmFwaGljc0xh
eWVyOjphZGRDaGlsZChHcmFwaGljc0xheWVyKiBsYXllcikKIHZvaWQgV2ViR3JhcGhpY3NMYXll
cjo6YWRkQ2hpbGRBdEluZGV4KEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBpbnQgaW5kZXgpCiB7CiAg
ICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBdEluZGV4KGxheWVyLCBpbmRleCk7Ci0gICAgdG9X
ZWJHcmFwaGljc0xheWVyKGxheWVyKS0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUobV9w
YWdlVmlzaWJsZVJlY3QsIG1fY29udGVudHNTY2FsZSk7CisgICAgdG9XZWJHcmFwaGljc0xheWVy
KGxheWVyKS0+c2V0UmVtb3RlQ2xpZW50KG1fcmVtb3RlQ2xpZW50KTsKICAgICB0b1dlYkdyYXBo
aWNzTGF5ZXIobGF5ZXIpLT5ub3RpZnlDaGFuZ2UoKTsKICAgICBub3RpZnlDaGFuZ2UoKTsKIH0K
QEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQXRJbmRl
eChHcmFwaGljc0xheWVyKiBsYXllciwgaW50IGluZGV4KQogdm9pZCBXZWJHcmFwaGljc0xheWVy
OjphZGRDaGlsZEFib3ZlKEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBHcmFwaGljc0xheWVyKiBzaWJs
aW5nKQogewogICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQWJvdmUobGF5ZXIsIHNpYmxpbmcp
OwotICAgIHRvV2ViR3JhcGhpY3NMYXllcihsYXllciktPnNldFZpc2libGVDb250ZW50UmVjdEFu
ZFNjYWxlKG1fcGFnZVZpc2libGVSZWN0LCBtX2NvbnRlbnRzU2NhbGUpOworICAgIHRvV2ViR3Jh
cGhpY3NMYXllcihsYXllciktPnNldFJlbW90ZUNsaWVudChtX3JlbW90ZUNsaWVudCk7CiAgICAg
dG9XZWJHcmFwaGljc0xheWVyKGxheWVyKS0+bm90aWZ5Q2hhbmdlKCk7CiAgICAgbm90aWZ5Q2hh
bmdlKCk7CiB9CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjphZGRD
aGlsZEFib3ZlKEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBHcmFwaGljc0xheWVyKiBzaWJsaW4KIHZv
aWQgV2ViR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRCZWxvdyhHcmFwaGljc0xheWVyKiBsYXllciwg
R3JhcGhpY3NMYXllciogc2libGluZykKIHsKICAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEJl
bG93KGxheWVyLCBzaWJsaW5nKTsKLSAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5zZXRW
aXNpYmxlQ29udGVudFJlY3RBbmRTY2FsZShtX3BhZ2VWaXNpYmxlUmVjdCwgbV9jb250ZW50c1Nj
YWxlKTsKKyAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5zZXRSZW1vdGVDbGllbnQobV9y
ZW1vdGVDbGllbnQpOwogICAgIHRvV2ViR3JhcGhpY3NMYXllcihsYXllciktPm5vdGlmeUNoYW5n
ZSgpOwogICAgIG5vdGlmeUNoYW5nZSgpOwogfQpAQCAtMTYyLDggKzE2Miw3IEBAIGJvb2wgV2Vi
R3JhcGhpY3NMYXllcjo6cmVwbGFjZUNoaWxkKEdyYXBoaWNzTGF5ZXIqIG9sZENoaWxkLCBHcmFw
aGljc0xheWVyKiBuZXdDCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBub3RpZnlDaGFuZ2Uo
KTsKICAgICB0b1dlYkdyYXBoaWNzTGF5ZXIob2xkQ2hpbGQpLT5ub3RpZnlDaGFuZ2UoKTsKLSAg
ICB0b1dlYkdyYXBoaWNzTGF5ZXIob2xkQ2hpbGQpLT5zZXRMYXllclRyZWVUaWxlQ2xpZW50KDAp
OwotICAgIHRvV2ViR3JhcGhpY3NMYXllcihuZXdDaGlsZCktPnNldFZpc2libGVDb250ZW50UmVj
dEFuZFNjYWxlKG1fcGFnZVZpc2libGVSZWN0LCBtX2NvbnRlbnRzU2NhbGUpOworICAgIHRvV2Vi
R3JhcGhpY3NMYXllcihuZXdDaGlsZCktPnNldFJlbW90ZUNsaWVudChtX3JlbW90ZUNsaWVudCk7
CiAgICAgdG9XZWJHcmFwaGljc0xheWVyKG5ld0NoaWxkKS0+bm90aWZ5Q2hhbmdlKCk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CkBAIC0xNzUsNyArMTc0LDYgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVy
OjpyZW1vdmVGcm9tUGFyZW50KCkKICAgICBHcmFwaGljc0xheWVyOjpyZW1vdmVGcm9tUGFyZW50
KCk7CiAKICAgICBub3RpZnlDaGFuZ2UoKTsKLSAgICBzZXRMYXllclRyZWVUaWxlQ2xpZW50KDAp
OwogfQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9p
bnQmIHApCkBAIC0zNDcsMTcgKzM0NSwxNiBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldENv
bnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7CiAgICAgaWYgKGltYWdlID09IG1faW1hZ2Up
CiAgICAgICAgIHJldHVybjsKLSAgICBXZWJMYXllclRyZWVUaWxlQ2xpZW50KiBjbGllbnQgPSBs
YXllclRyZWVUaWxlQ2xpZW50KCk7CiAgICAgaW50NjRfdCBuZXdJRCA9IDA7Ci0gICAgaWYgKGNs
aWVudCkgeworICAgIGlmIChtX3JlbW90ZUNsaWVudCkgewogICAgICAgICAvLyBXZSBhZG9wdCBm
aXJzdCwgaW4gY2FzZSB0aGlzIGlzIHRoZSBzYW1lIGZyYW1lIC0gdGhhdCB3YXkgd2UgYXZvaWQg
ZGVzdHJveWluZyBhbmQgcmVjcmVhdGluZyB0aGUgaW1hZ2UuCi0gICAgICAgIG5ld0lEID0gY2xp
ZW50LT5hZG9wdEltYWdlQmFja2luZ1N0b3JlKGltYWdlKTsKLSAgICAgICAgY2xpZW50LT5yZWxl
YXNlSW1hZ2VCYWNraW5nU3RvcmUobV9sYXllckluZm8uaW1hZ2VCYWNraW5nU3RvcmVJRCk7Cisg
ICAgICAgIG5ld0lEID0gbV9yZW1vdGVDbGllbnQtPmFkb3B0SW1hZ2VCYWNraW5nU3RvcmUoaW1h
Z2UpOworICAgICAgICBtX3JlbW90ZUNsaWVudC0+cmVsZWFzZUltYWdlQmFja2luZ1N0b3JlKG1f
bGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0b3JlSUQpOwogICAgICAgICBub3RpZnlDaGFuZ2UoKTsK
ICAgICAgICAgaWYgKG1fbGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0b3JlSUQgJiYgbmV3SUQgPT0g
bV9sYXllckluZm8uaW1hZ2VCYWNraW5nU3RvcmVJRCkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICB9IGVsc2UgewotICAgICAgICAvLyBJZiBjbGllbnQgbm90IHNldCB5ZXQgdGhlcmUgc2hvdWxk
IGJlIG5vIGJhY2tpbmcgc3RvcmUgSUQuCisgICAgICAgIC8vIElmIG1fcmVtb3RlQ2xpZW50IGlz
IG5vdCBzZXQgeWV0IHRoZXJlIHNob3VsZCBiZSBubyBiYWNraW5nIHN0b3JlIElELgogICAgICAg
ICBBU1NFUlQoIW1fbGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0b3JlSUQpOwogICAgICAgICBub3Rp
ZnlDaGFuZ2UoKTsKICAgICB9CkBAIC0zODAsOSArMzc3LDggQEAgdm9pZCBXZWJHcmFwaGljc0xh
eWVyOjpzZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCiAKICAgICBsYXllci0+c2V0
U2l6ZShzaXplKCkpOwogICAgIFdlYkdyYXBoaWNzTGF5ZXIqIHdlYkdyYXBoaWNzTGF5ZXIgPSB0
b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpOwotICAgIHdlYkdyYXBoaWNzTGF5ZXItPnNldExheWVy
VHJlZVRpbGVDbGllbnQobGF5ZXJUcmVlVGlsZUNsaWVudCgpKTsKKyAgICB3ZWJHcmFwaGljc0xh
eWVyLT5zZXRSZW1vdGVDbGllbnQobV9yZW1vdGVDbGllbnQpOwogICAgIHdlYkdyYXBoaWNzTGF5
ZXItPnNldE1hc2tUYXJnZXQodGhpcyk7Ci0gICAgd2ViR3JhcGhpY3NMYXllci0+c2V0VmlzaWJs
ZUNvbnRlbnRSZWN0QW5kU2NhbGUobV9wYWdlVmlzaWJsZVJlY3QsIG1fY29udGVudHNTY2FsZSk7
CiAgICAgd2ViR3JhcGhpY3NMYXllci0+bm90aWZ5Q2hhbmdlKCk7CiAgICAgbm90aWZ5Q2hhbmdl
KCk7CiAKQEAgLTM5NCw3ICszOTAsNyBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldFJlcGxp
Y2F0ZWRCeUxheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAobGF5ZXIpCi0gICAgICAgIHRvV2ViR3JhcGhpY3NMYXllcihsYXllciktPnNldExheWVy
VHJlZVRpbGVDbGllbnQobGF5ZXJUcmVlVGlsZUNsaWVudCgpKTsKKyAgICAgICAgdG9XZWJHcmFw
aGljc0xheWVyKGxheWVyKS0+c2V0UmVtb3RlQ2xpZW50KG1fcmVtb3RlQ2xpZW50KTsKIAogICAg
IEdyYXBoaWNzTGF5ZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKGxheWVyKTsKICAgICBub3RpZnlD
aGFuZ2UoKTsKQEAgLTQzOCw5ICs0MzQsNiBAQCBXZWJHcmFwaGljc0xheWVyKiB0b1dlYkdyYXBo
aWNzTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCiAKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6
c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKIHsKLSAgICBpZiAoIW1fbGF5
ZXJUcmVlVGlsZUNsaWVudCkKLSAgICAgICAgbV9sYXllclRyZWVUaWxlQ2xpZW50ID0gbGF5ZXJU
cmVlVGlsZUNsaWVudCgpOwotCiAgICAgdXBkYXRlQ29udGVudEJ1ZmZlcnMoKTsKIAogICAgIGlm
ICghbV9tb2RpZmllZCkKQEAgLTQ2OSwxMSArNDYyLDExIEBAIHZvaWQgV2ViR3JhcGhpY3NMYXll
cjo6c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGNoaWxkcmVuKCkuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fbGF5ZXJJbmZv
LmNoaWxkcmVuLmFwcGVuZCh0b1dlYkxheWVySUQoY2hpbGRyZW4oKVtpXSkpOwogCi0gICAgQVNT
RVJUKG1fbGF5ZXJUcmVlVGlsZUNsaWVudCk7CisgICAgQVNTRVJUKG1fcmVtb3RlQ2xpZW50KTsK
ICAgICBpZiAobV9sYXllckluZm8uaW1hZ2VJc1VwZGF0ZWQgJiYgbV9pbWFnZSAmJiAhbV9sYXll
ckluZm8uaW1hZ2VCYWNraW5nU3RvcmVJRCkKLSAgICAgICAgbV9sYXllckluZm8uaW1hZ2VCYWNr
aW5nU3RvcmVJRCA9IG1fbGF5ZXJUcmVlVGlsZUNsaWVudC0+YWRvcHRJbWFnZUJhY2tpbmdTdG9y
ZShtX2ltYWdlLmdldCgpKTsKKyAgICAgICAgbV9sYXllckluZm8uaW1hZ2VCYWNraW5nU3RvcmVJ
RCA9IG1fcmVtb3RlQ2xpZW50LT5hZG9wdEltYWdlQmFja2luZ1N0b3JlKG1faW1hZ2UuZ2V0KCkp
OwogCi0gICAgbV9sYXllclRyZWVUaWxlQ2xpZW50LT5kaWRTeW5jQ29tcG9zaXRpbmdTdGF0ZUZv
ckxheWVyKG1fbGF5ZXJJbmZvKTsKKyAgICBtX3JlbW90ZUNsaWVudC0+ZGlkU3luY0NvbXBvc2l0
aW5nU3RhdGVGb3JMYXllcihtX2xheWVySW5mbyk7CiAgICAgbV9tb2RpZmllZCA9IGZhbHNlOwog
ICAgIG1fbGF5ZXJJbmZvLmltYWdlSXNVcGRhdGVkID0gZmFsc2U7CiAgICAgaWYgKG1faGFzUGVu
ZGluZ0FuaW1hdGlvbnMpCkBAIC01MzUsOSArNTI4LDcgQEAgYm9vbCBXZWJHcmFwaGljc0xheWVy
Ojp0aWxlZEJhY2tpbmdTdG9yZVVwZGF0ZXNBbGxvd2VkKCkgY29uc3QKIHsKICAgICBpZiAoIW1f
aW5VcGRhdGVNb2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKFdlYkxheWVyVHJl
ZVRpbGVDbGllbnQqIGNsaWVudCA9IGxheWVyVHJlZVRpbGVDbGllbnQoKSkKLSAgICAgICAgcmV0
dXJuIGNsaWVudC0+bGF5ZXJUcmVlVGlsZVVwZGF0ZXNBbGxvd2VkKCk7Ci0gICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiBtX3JlbW90ZUNsaWVudC0+bGF5ZXJUcmVlVGlsZVVwZGF0ZXNBbGxv
d2VkKCk7CiB9CiAKIEludFJlY3QgV2ViR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVD
b250ZW50c1JlY3QoKQpAQCAtNTcyLDIyICs1NjMsMTkgQEAgQ29sb3IgV2ViR3JhcGhpY3NMYXll
cjo6dGlsZWRCYWNraW5nU3RvcmVCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogdm9pZCBXZWJHcmFw
aGljc0xheWVyOjpjcmVhdGVUaWxlKGludCB0aWxlSUQsIGNvbnN0IFVwZGF0ZUluZm8mIHVwZGF0
ZUluZm8pCiB7CiAgICAgbV9tb2RpZmllZCA9IHRydWU7Ci0gICAgaWYgKFdlYkxheWVyVHJlZVRp
bGVDbGllbnQqIGNsaWVudCA9IGxheWVyVHJlZVRpbGVDbGllbnQoKSkKLSAgICAgICAgY2xpZW50
LT5jcmVhdGVUaWxlKGlkKCksIHRpbGVJRCwgdXBkYXRlSW5mbyk7CisgICAgbV9yZW1vdGVDbGll
bnQtPmNyZWF0ZVRpbGUoaWQoKSwgdGlsZUlELCB1cGRhdGVJbmZvKTsKIH0KIAogdm9pZCBXZWJH
cmFwaGljc0xheWVyOjp1cGRhdGVUaWxlKGludCB0aWxlSUQsIGNvbnN0IFVwZGF0ZUluZm8mIHVw
ZGF0ZUluZm8pCiB7CiAgICAgbV9tb2RpZmllZCA9IHRydWU7Ci0gICAgaWYgKFdlYkxheWVyVHJl
ZVRpbGVDbGllbnQqIGNsaWVudCA9IGxheWVyVHJlZVRpbGVDbGllbnQoKSkKLSAgICAgICAgY2xp
ZW50LT51cGRhdGVUaWxlKGlkKCksIHRpbGVJRCwgdXBkYXRlSW5mbyk7CisgICAgbV9yZW1vdGVD
bGllbnQtPnVwZGF0ZVRpbGUoaWQoKSwgdGlsZUlELCB1cGRhdGVJbmZvKTsKIH0KIAogdm9pZCBX
ZWJHcmFwaGljc0xheWVyOjpyZW1vdmVUaWxlKGludCB0aWxlSUQpCiB7CiAgICAgbV9tb2RpZmll
ZCA9IHRydWU7Ci0gICAgaWYgKFdlYkxheWVyVHJlZVRpbGVDbGllbnQqIGNsaWVudCA9IGxheWVy
VHJlZVRpbGVDbGllbnQoKSkKLSAgICAgICAgY2xpZW50LT5yZW1vdmVUaWxlKGlkKCksIHRpbGVJ
RCk7CisgICAgbV9yZW1vdGVDbGllbnQtPnJlbW92ZVRpbGUoaWQoKSwgdGlsZUlEKTsKIH0KIAog
dm9pZCBXZWJHcmFwaGljc0xheWVyOjp1cGRhdGVUaWxlQnVmZmVyc1JlY3Vyc2l2ZWx5KCkKQEAg
LTYwMiwyMyArNTkwLDYgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjp1cGRhdGVUaWxlQnVmZmVy
c1JlY3Vyc2l2ZWx5KCkKICAgICAgICAgbWFzay0+dXBkYXRlVGlsZUJ1ZmZlcnNSZWN1cnNpdmVs
eSgpOwogfQogCi1XZWJMYXllclRyZWVUaWxlQ2xpZW50KiBXZWJHcmFwaGljc0xheWVyOjpsYXll
clRyZWVUaWxlQ2xpZW50KCkgY29uc3QKLXsKLSAgICBpZiAobV9sYXllclRyZWVUaWxlQ2xpZW50
KQotICAgICAgICByZXR1cm4gbV9sYXllclRyZWVUaWxlQ2xpZW50OwotICAgIFdlYkdyYXBoaWNz
TGF5ZXIqIHBhcmVudDsKLSAgICBpZiAodGhpcy0+cmVwbGljYXRlZExheWVyKCkpCi0gICAgICAg
IHBhcmVudCA9IHRvV2ViR3JhcGhpY3NMYXllcih0aGlzLT5yZXBsaWNhdGVkTGF5ZXIoKSk7Ci0g
ICAgZWxzZSBpZiAodGhpcy0+bWFza1RhcmdldCgpKQotICAgICAgICBwYXJlbnQgPSB0b1dlYkdy
YXBoaWNzTGF5ZXIodGhpcy0+bWFza1RhcmdldCgpKTsKLSAgICBlbHNlCi0gICAgICAgIHBhcmVu
dCA9IHRvV2ViR3JhcGhpY3NMYXllcih0aGlzLT5wYXJlbnQoKSk7Ci0KLSAgICBpZiAoIXBhcmVu
dCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHBhcmVudC0+bGF5ZXJUcmVlVGlsZUNs
aWVudCgpOwotfQotCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJz
KCkKIHsKICAgICAvLyBCYWNraW5nLXN0b3JlcyBmb3IgZGlyZWN0bHkgY29tcG9zaXRlZCBpbWFn
ZXMgaXMgaGFuZGxlZCBpbiBMYXllclRyZWVIb3N0LgpAQCAtNjI3LDkgKzU5OCw3IEBAIHZvaWQg
V2ViR3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMoKQogCiAgICAgaWYgKCFkcmF3
c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFdlYkxheWVyVHJlZVRpbGVDbGllbnQq
IGNsaWVudCA9IGxheWVyVHJlZVRpbGVDbGllbnQoKTsKLSAgICBpZiAoIWNsaWVudCkKLSAgICAg
ICAgcmV0dXJuOworCiAgICAgbV9pblVwZGF0ZU1vZGUgPSB0cnVlOwogICAgIG1fbWFpbkJhY2tp
bmdTdG9yZS0+dXBkYXRlVGlsZUJ1ZmZlcnMoKTsKICAgICBtX2luVXBkYXRlTW9kZSA9IGZhbHNl
OwpAQCAtNjUxLDcgKzYyMCw3IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6cHVyZ2VCYWNraW5n
U3RvcmVzKCkKICAgICBpZiAoIW1fbGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0b3JlSUQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGxheWVyVHJlZVRpbGVDbGllbnQoKS0+cmVsZWFzZUltYWdlQmFj
a2luZ1N0b3JlKG1fbGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0b3JlSUQpOworICAgIG1fcmVtb3Rl
Q2xpZW50LT5yZWxlYXNlSW1hZ2VCYWNraW5nU3RvcmUobV9sYXllckluZm8uaW1hZ2VCYWNraW5n
U3RvcmVJRCk7CiAgICAgbV9sYXllckluZm8uaW1hZ2VCYWNraW5nU3RvcmVJRCA9IDA7CiB9CiAK
QEAgLTY3MywyNCArNjQyLDI2IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6cmVjcmVhdGVCYWNr
aW5nU3RvcmVJZk5lZWRlZCgpCiAgICAgICAgIHNldENvbnRlbnRzTmVlZHNEaXNwbGF5KCk7CiB9
CiAKLXZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0TGF5ZXJUcmVlVGlsZUNsaWVudChXZWJLaXQ6
OldlYkxheWVyVHJlZVRpbGVDbGllbnQqIGNsaWVudCkKK3ZvaWQgV2ViR3JhcGhpY3NMYXllcjo6
c2V0UmVtb3RlQ2xpZW50KFdlYktpdDo6V2ViR3JhcGhpY3NMYXllclJlbW90ZUNsaWVudCogY2xp
ZW50KQogewotICAgIGlmIChtX2xheWVyVHJlZVRpbGVDbGllbnQgPT0gY2xpZW50KQorICAgIGlm
IChtX3JlbW90ZUNsaWVudCA9PSBjbGllbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChX
ZWJHcmFwaGljc0xheWVyKiByZXBsaWNhID0gdG9XZWJHcmFwaGljc0xheWVyKHJlcGxpY2FMYXll
cigpKSkKLSAgICAgICAgcmVwbGljYS0+c2V0TGF5ZXJUcmVlVGlsZUNsaWVudChjbGllbnQpOwor
ICAgICAgICByZXBsaWNhLT5zZXRSZW1vdGVDbGllbnQoY2xpZW50KTsKICAgICBpZiAoV2ViR3Jh
cGhpY3NMYXllciogbWFzayA9IHRvV2ViR3JhcGhpY3NMYXllcihtYXNrTGF5ZXIoKSkpCi0gICAg
ICAgIG1hc2stPnNldExheWVyVHJlZVRpbGVDbGllbnQoY2xpZW50KTsKKyAgICAgICAgbWFzay0+
c2V0UmVtb3RlQ2xpZW50KGNsaWVudCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGls
ZHJlbigpLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFdlYkdyYXBoaWNzTGF5ZXIqIGxheWVyID0g
dG9XZWJHcmFwaGljc0xheWVyKHRoaXMtPmNoaWxkcmVuKClbaV0pOwotICAgICAgICBsYXllci0+
c2V0TGF5ZXJUcmVlVGlsZUNsaWVudChjbGllbnQpOworICAgICAgICBsYXllci0+c2V0UmVtb3Rl
Q2xpZW50KGNsaWVudCk7CiAgICAgfQogCiAgICAgLy8gSGF2ZSB0byBmb3JjZSBkZXRhY2ggZnJv
bSByZW1vdGUgbGF5ZXIgaGVyZSBpZiBsYXllciB0aWxlIGNsaWVudCBjaGFuZ2VzLgotICAgIGlm
IChtX2xheWVyVHJlZVRpbGVDbGllbnQpCi0gICAgICAgIG1fbGF5ZXJUcmVlVGlsZUNsaWVudC0+
ZGlkRGVsZXRlTGF5ZXIoaWQoKSk7Ci0gICAgbV9sYXllclRyZWVUaWxlQ2xpZW50ID0gY2xpZW50
OworICAgIGlmIChtX3JlbW90ZUNsaWVudCkKKyAgICAgICAgbV9yZW1vdGVDbGllbnQtPmRpZERl
bGV0ZUxheWVyKHRoaXMpOworICAgIG1fcmVtb3RlQ2xpZW50ID0gY2xpZW50OworICAgIGlmIChj
bGllbnQpCisgICAgICAgIGNsaWVudC0+cmVnaXN0ZXJMYXllcih0aGlzKTsKIH0KIAogdm9pZCBX
ZWJHcmFwaGljc0xheWVyOjpjb21wdXRlVHJhbnNmb3JtZWRWaXNpYmxlUmVjdCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNz
TGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3Jh
cGhpY3NMYXllci5oCmluZGV4IDBiNTA3NjNiN2Q1ZTc4ZWY4N2E0NWNkOTgzOWFiZTZjYjgzNTY1
MTIuLjAxZmU5NTk4OTNkZmE5NzIyZTc5ODQzZDA0YzllNTRlY2Q0MTlkYzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXll
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3Jh
cGhpY3NMYXllci5oCkBAIC0zOSwxOSArMzksMjUgQEAKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgV2ViR3JhcGhpY3NMYXll
cjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYkxheWVyVHJlZVRpbGVDbGll
bnQgeworY2xhc3MgV2ViR3JhcGhpY3NMYXllclJlbW90ZUNsaWVudCB7CiBwdWJsaWM6CiAgICAg
Ly8gVGlsZWRCYWNraW5nU3RvcmVSZW1vdGVUaWxlQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZVRpbGUoV2ViTGF5ZXJJRCwgaW50IHRpbGVJRCwgY29uc3QgVXBkYXRlSW5mbyYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGlsZShXZWJMYXllcklELCBpbnQgdGlsZUlELCBjb25z
dCBVcGRhdGVJbmZvJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVUaWxlKFdlYkxheWVy
SUQsIGludCB0aWxlSUQpID0gMDsKKwogICAgIHZpcnR1YWwgYm9vbCBsYXllclRyZWVUaWxlVXBk
YXRlc0FsbG93ZWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90IGFkb3B0SW1hZ2VC
YWNraW5nU3RvcmUoV2ViQ29yZTo6SW1hZ2UqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbGVh
c2VJbWFnZUJhY2tpbmdTdG9yZShpbnQ2NF90KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFN5
bmNDb21wb3NpdGluZ1N0YXRlRm9yTGF5ZXIoY29uc3QgV2ViTGF5ZXJJbmZvJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBkaWREZWxldGVMYXllcihXZWJMYXllcklEKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHJlZ2lzdGVyTGF5ZXIoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllciopID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkRGVsZXRlTGF5ZXIoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllciop
ID0gMDsKIH07CiB9CiAKQEAgLTEyOSw4ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVRpbGUoaW50IHRpbGVJRCwgY29uc3QgV2ViS2l0OjpVcGRhdGVJbmZvJik7CiAg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZVRpbGUoaW50IHRpbGVJRCk7CiAKLSAgICB2b2lkIHNldExh
eWVyVHJlZVRpbGVDbGllbnQoV2ViS2l0OjpXZWJMYXllclRyZWVUaWxlQ2xpZW50Kik7Ci0gICAg
V2ViS2l0OjpXZWJMYXllclRyZWVUaWxlQ2xpZW50KiBsYXllclRyZWVUaWxlQ2xpZW50KCkgY29u
c3Q7CisgICAgdm9pZCBzZXRSZW1vdGVDbGllbnQoV2ViS2l0OjpXZWJHcmFwaGljc0xheWVyUmVt
b3RlQ2xpZW50Kik7CiAKICAgICBib29sIGlzUmVhZHlGb3JUaWxlQnVmZmVyU3dhcCgpIGNvbnN0
OwogICAgIHZvaWQgdXBkYXRlVGlsZUJ1ZmZlcnNSZWN1cnNpdmVseSgpOwpAQCAtMTYxLDcgKzE2
Niw3IEBAIHByaXZhdGU6CiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgdm9pZCBj
b21wdXRlVHJhbnNmb3JtZWRWaXNpYmxlUmVjdCgpOwogCi0gICAgV2ViS2l0OjpXZWJMYXllclRy
ZWVUaWxlQ2xpZW50KiBtX2xheWVyVHJlZVRpbGVDbGllbnQ7CisgICAgV2ViS2l0OjpXZWJHcmFw
aGljc0xheWVyUmVtb3RlQ2xpZW50KiBtX3JlbW90ZUNsaWVudDsKICAgICBPd25QdHI8V2ViQ29y
ZTo6VGlsZWRCYWNraW5nU3RvcmU+IG1fbWFpbkJhY2tpbmdTdG9yZTsKICAgICBPd25QdHI8V2Vi
Q29yZTo6VGlsZWRCYWNraW5nU3RvcmU+IG1fcHJldmlvdXNCYWNraW5nU3RvcmU7CiAgICAgZmxv
YXQgbV9jb250ZW50c1NjYWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0LmNwcAppbmRleCBmYzFlODViMjFiZmNjM2Q0
MmFlZjc0MDU2ODQwYjA2MzIzNWRjZWZlLi42ZjBjMWZhNTdiMDFhM2Y2MmMwZmI3NzBhNDZlMTI5
MTZkMzI2N2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
cXQvTGF5ZXJUcmVlSG9zdFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0LmNwcApAQCAtNTIsOCArNTIsOCBAQCBQYXNzUmVmUHRy
PExheWVyVHJlZUhvc3RRdD4gTGF5ZXJUcmVlSG9zdFF0OjpjcmVhdGUoV2ViUGFnZSogd2ViUGFn
ZSkKIAogTGF5ZXJUcmVlSG9zdFF0Ojp+TGF5ZXJUcmVlSG9zdFF0KCkKIHsKLSAgICBpZiAobV9y
b290TGF5ZXIpCi0gICAgICAgIHRvV2ViR3JhcGhpY3NMYXllcihtX3Jvb3RMYXllci5nZXQoKSkt
PnNldExheWVyVHJlZVRpbGVDbGllbnQoMCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3Jl
Z2lzdGVyZWRMYXllcnMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fcmVnaXN0ZXJlZExheWVyc1tp
XS0+c2V0UmVtb3RlQ2xpZW50KDApOwogfQogCiBMYXllclRyZWVIb3N0UXQ6OkxheWVyVHJlZUhv
c3RRdChXZWJQYWdlKiB3ZWJQYWdlKQpAQCAtODMsNyArODMsNyBAQCBMYXllclRyZWVIb3N0UXQ6
OkxheWVyVHJlZUhvc3RRdChXZWJQYWdlKiB3ZWJQYWdlKQogCiAgICAgbV9ub25Db21wb3NpdGVk
Q29udGVudExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKHRoaXMpOwogI2lmIFVTRShUSUxF
RF9CQUNLSU5HX1NUT1JFKQotICAgIHRvV2ViR3JhcGhpY3NMYXllcihtX3Jvb3RMYXllci5nZXQo
KSktPnNldExheWVyVHJlZVRpbGVDbGllbnQodGhpcyk7CisgICAgdG9XZWJHcmFwaGljc0xheWVy
KG1fcm9vdExheWVyLmdldCgpKS0+c2V0UmVtb3RlQ2xpZW50KHRoaXMpOwogI2VuZGlmCiAjaWZu
ZGVmIE5ERUJVRwogICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmFtZSgiTGF5
ZXJUcmVlSG9zdFF0IG5vbi1jb21wb3NpdGVkIGNvbnRlbnQiKTsKQEAgLTIzMiwxMCArMjMyLDE5
IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdFF0OjpkaWRTeW5jQ29tcG9zaXRpbmdTdGF0ZUZvckxheWVy
KGNvbnN0IFdlYkxheWVySW5mbyYgaW5mbykKICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6
OkxheWVyVHJlZUhvc3RQcm94eTo6U3luY0NvbXBvc2l0aW5nTGF5ZXJTdGF0ZShpbmZvKSk7CiB9
CiAKLXZvaWQgTGF5ZXJUcmVlSG9zdFF0OjpkaWREZWxldGVMYXllcihXZWJMYXllcklEIGlkKQor
dm9pZCBMYXllclRyZWVIb3N0UXQ6OnJlZ2lzdGVyTGF5ZXIoV2ViR3JhcGhpY3NMYXllciogbGF5
ZXIpCiB7CisgICAgQVNTRVJUKCFtX3JlZ2lzdGVyZWRMYXllcnMuY29udGFpbnMobGF5ZXIpKTsK
KyAgICBtX3JlZ2lzdGVyZWRMYXllcnMuYXBwZW5kKGxheWVyKTsKKworICAgIGxheWVyLT5zZXRW
aXNpYmxlQ29udGVudFJlY3RBbmRTY2FsZShtX3Zpc2libGVDb250ZW50c1JlY3QsIG1fY29udGVu
dHNTY2FsZSk7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdFF0OjpkaWREZWxldGVMYXllcihXZWJH
cmFwaGljc0xheWVyKiBsYXllcikKK3sKKyAgICBtX3JlZ2lzdGVyZWRMYXllcnMucmVtb3ZlKG1f
cmVnaXN0ZXJlZExheWVycy5maW5kKGxheWVyKSk7CiAgICAgbV9zaG91bGRTeW5jRnJhbWUgPSB0
cnVlOwotICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlSG9zdFByb3h5OjpE
ZWxldGVDb21wb3NpdGluZ0xheWVyKGlkKSk7CisgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpMYXllclRyZWVIb3N0UHJveHk6OkRlbGV0ZUNvbXBvc2l0aW5nTGF5ZXIobGF5ZXItPmlkKCkp
KTsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0UXQ6OnBlcmZvcm1TY2hlZHVsZWRMYXllckZsdXNo
KCkKQEAgLTQwMywxNSArNDEyLDIwIEBAIHZvaWQgTGF5ZXJUcmVlSG9zdFF0OjpyZW1vdmVUaWxl
KFdlYkxheWVySUQgbGF5ZXJJRCwgaW50IHRpbGVJRCkKIAogdm9pZCBMYXllclRyZWVIb3N0UXQ6
OnNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlKGNvbnN0IEludFJlY3QmIHJlY3QsIGZsb2F0
IHNjYWxlKQogewotICAgIGlmIChtX3Jvb3RMYXllcikgewotICAgICAgICB0b1dlYkdyYXBoaWNz
TGF5ZXIobV9yb290TGF5ZXIuZ2V0KCkpLT5zZXRWaXNpYmxlQ29udGVudFJlY3RBbmRTY2FsZShy
ZWN0LCBzY2FsZSk7Ci0gICAgICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwotICAgIH0KKyAgICBp
ZiAocmVjdCA9PSBtX3Zpc2libGVDb250ZW50c1JlY3QgJiYgc2NhbGUgPT0gbV9jb250ZW50c1Nj
YWxlKQorICAgICAgICByZXR1cm47CisgICAgbV92aXNpYmxlQ29udGVudHNSZWN0ID0gcmVjdDsK
KyAgICBtX2NvbnRlbnRzU2NhbGUgPSBzY2FsZTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bV9yZWdpc3RlcmVkTGF5ZXJzLnNpemUoKTsgKytpKQorICAgICAgICBtX3JlZ2lzdGVyZWRMYXll
cnNbaV0tPnNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlKHJlY3QsIHNjYWxlKTsKKyAgICBz
Y2hlZHVsZUxheWVyRmx1c2goKTsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0UXQ6OnNldFZpc2li
bGVDb250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3IoY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9y
eVZlY3RvcikKIHsKLSAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobV9ub25Db21wb3NpdGVkQ29udGVu
dExheWVyLmdldCgpKS0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0VHJhamVjdG9yeVZlY3Rvcih0cmFq
ZWN0b3J5VmVjdG9yKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fcmVnaXN0ZXJlZExheWVy
cy5zaXplKCk7ICsraSkKKyAgICAgICAgbV9yZWdpc3RlcmVkTGF5ZXJzW2ldLT5zZXRWaXNpYmxl
Q29udGVudFJlY3RUcmFqZWN0b3J5VmVjdG9yKHRyYWplY3RvcnlWZWN0b3IpOwogfQogCiB2b2lk
IExheWVyVHJlZUhvc3RRdDo6cmVuZGVyTmV4dEZyYW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuaAppbmRleCAwN2Yw
NGU4OGExYTQyMjJmYzkxNDFhZDdjODk0MGU0NDcyZjE1NGVhLi4yMzhkNjk3MWY3ZWIxZjVkNzcw
MmFhNjU3MTFiM2MzOTY0MjNkMDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5oCkBAIC0zNCw3ICszNCw3IEBAIGNs
YXNzIFdlYlBhZ2U7CiAKIGNsYXNzIExheWVyVHJlZUhvc3RRdCA6IHB1YmxpYyBMYXllclRyZWVI
b3N0LCBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xpZW50CiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdf
U1RPUkUpCi0gICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgV2ViTGF5ZXJUcmVlVGlsZUNs
aWVudAorICAgICAgICAgICAgICAgICAgICAgICwgcHVibGljIFdlYkdyYXBoaWNzTGF5ZXJSZW1v
dGVDbGllbnQKICNlbmRpZgogewogcHVibGljOgpAQCAtNzUsNyArNzUsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlKGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmLCBmbG9hdCBzY2FsZSk7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVD
b250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3IoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRTeW5jQ29tcG9zaXRpbmdTdGF0ZUZvckxheWVyKGNvbnN0IFdl
YkxheWVySW5mbyYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWREZWxldGVMYXllcihXZWJMYXllcklE
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJMYXllcihXZWJDb3JlOjpXZWJHcmFwaGljc0xh
eWVyKik7CisgICAgdmlydHVhbCB2b2lkIGRpZERlbGV0ZUxheWVyKFdlYkNvcmU6OldlYkdyYXBo
aWNzTGF5ZXIqKTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CkBAIC0xMDYsNiArMTA3LDcgQEAgcHJp
dmF0ZToKICAgICAvLyBUaGUgcGFnZSBvdmVybGF5IGxheWVyLiBXaWxsIGJlIG51bGwgaWYgdGhl
cmUncyBubyBwYWdlIG92ZXJsYXkuCiAgICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+
IG1fcGFnZU92ZXJsYXlMYXllcjsKIAorICAgIFZlY3RvcjxXZWJDb3JlOjpXZWJHcmFwaGljc0xh
eWVyKj4gbV9yZWdpc3RlcmVkTGF5ZXJzOwogICAgIEhhc2hNYXA8aW50NjRfdCwgaW50PiBtX2Rp
cmVjdGx5Q29tcG9zaXRlZEltYWdlUmVmQ291bnRzOwogCiAgICAgYm9vbCBtX25vdGlmeUFmdGVy
U2NoZWR1bGVkTGF5ZXJGbHVzaDsKQEAgLTExMyw2ICsxMTUsOCBAQCBwcml2YXRlOgogI2lmIFVT
RShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIGJvb2wgbV93YWl0aW5nRm9yVUlQcm9jZXNzOwog
ICAgIGJvb2wgbV9pc1N1c3BlbmRlZDsKKyAgICBXZWJDb3JlOjpJbnRSZWN0IG1fdmlzaWJsZUNv
bnRlbnRzUmVjdDsKKyAgICBmbG9hdCBtX2NvbnRlbnRzU2NhbGU7CiAjZW5kaWYKICAgICBMYXll
clRyZWVDb250ZXh0IG1fbGF5ZXJUcmVlQ29udGV4dDsKICAgICBib29sIG1fc2hvdWxkU3luY0Zy
YW1lOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125873</attachid>
            <date>2012-02-07 10:35:42 -0800</date>
            <delta_ts>2012-02-07 11:25:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77976-20120207193104.patch</filename>
            <type>text/plain</type>
            <size>22137</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2ODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTk3YTBjNzMwOTI1YzZm
YTZiZWUwODkxNGUwMjRhYzQwNWUzN2UyMi4uMTc3MzVkMjY1YWM0Y2I4M2M0YzcxMzFhZjNmOGY0
YzQ2NzAxZmY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEyLTAyLTA3ICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgW1F0
XSBSZWdpc3RlciBpbmRpdmlkdWFsIFdlYkdyYXBoaWNzTGF5ZXJzIHRvIExheWVyVHJlZUhvc3Qg
aW5zdGVhZCBvZiBoYW5kbGluZyB0aGUgdHJlZSBhcyBhIHdob2xlLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc5NzYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgTGF5ZXJUcmVlSG9zdCBhc3NvY2lh
dGlvbiBoYWQgdG8gYmUgbWFpbnRhaW5lZCBiZXR3ZWVuIHJlLXBhcmFudGVkIGxheWVycyBhbmQg
aXQgd291bGQgYmUKKyAgICAgICAgaW1wb3NzaWJsZSB0byBrbm93IGlmIHRoZSBsYXllciB3b3Vs
ZCBiZSBkaXNjb25uZWN0ZWQgZnJvbSB0aGUgTGF5ZXJUcmVlSG9zdCBvbmx5IGZvciByZXBhcmVu
dGluZworICAgICAgICBvciBkaXNjb25uZWN0ZWQgZm9yIGdvb2QgKGluIG90aGVyIHdvcmRzLCB0
aGF0IHRoZSBMYXllclRyZWVIb3N0IGNvdWxkIGJlIGRlbGV0ZWQgbWVhbndoaWxlKS4KKworICAg
ICAgICBJbnN0ZWFkLCB0aGlzIHBhdGNoIGFzc3VtZXMgdGhhdCBncmFwaGljcyBsYXllcnMgd2ls
bCBvbmx5IGJlIGluIGNvbnRhY3Qgd2l0aCBvbmUgaW5zdGFuY2Ugb2YKKyAgICAgICAgTGF5ZXJU
cmVlSG9zdCwgYW5kIHRoYXQgdGhpcyBhc3NvY2lhdGlvbiBjYW4gYmUga2VwdCB1bnRpbCBlaXRo
ZXIgdGhlIGdyYXBoaWNzIGxheWVyIG9yIHRoZSBsYXllcgorICAgICAgICB0cmVlIGhvc3QgZ2V0
cyBkZWxldGVkLgorCisgICAgICAgIFRoZSByZWdpc3RlcmVkIGxheWVycyBhcmUga2VwdCBpbiBh
IHNldCBhbmQgdGhlIHZpc2libGUgcmVjdCBhbmQgc2NhbGVzIGFyZSBwYXNzZWQgZGlyZWN0bHkK
KyAgICAgICAgdG8gbGF5ZXJzIGluc3RlYWQgb2YgZG93biB0aGUgdHJlZSwgdGhyb3VnaCB0aGUg
cm9vdCBsYXllci4KKworICAgICAgICBUaGlzIGFsc28gZml4ZXMgdGhlICFtX2xheWVySW5mby5p
bWFnZUJhY2tpbmdTdG9yZUlEIEFTU0VSVCB0aGF0IHdhcyBwb3BwaW5nIGluIHVuaXQgdGVzdHMu
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6V2ViR3JhcGhpY3NMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjp+V2ViR3JhcGhpY3NMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpzZXRDaGlsZHJlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjphZGRDaGlsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjphZGRDaGlsZEF0SW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBYm92ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHcmFwaGljc0xheWVyOjphZGRDaGlsZEJlbG93KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdyYXBoaWNzTGF5ZXI6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFw
aGljc0xheWVyOjpyZW1vdmVGcm9tUGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBo
aWNzTGF5ZXI6OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFw
aGljc0xheWVyOjpzZXRNYXNrTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NM
YXllcjo6c2V0UmVwbGljYXRlZEJ5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhp
Y3NMYXllcjo6c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlVXBkYXRlc0FsbG93
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6Y3JlYXRlVGlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjp1cGRhdGVUaWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnJlbW92ZVRpbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR3JhcGhpY3NMYXllcjo6cHVyZ2VCYWNraW5nU3RvcmVzKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnNldFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJHcmFwaGljc0xheWVyQ2xpZW50KToKKyAgICAg
ICAgKFdlYkdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9xdC9M
YXllclRyZWVIb3N0UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UXQ6On5M
YXllclRyZWVIb3N0UXQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UXQ6OkxheWVy
VHJlZUhvc3RRdCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RRdDo6cmVnaXN0ZXJM
YXllcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0
UXQ6OnJlbGVhc2VMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RRdDo6c2V0
VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9xdC9MYXllclRyZWVIb3N0UXQuaDoKKyAgICAgICAgKExheWVyVHJlZUhvc3RRdCk6CisKIDIw
MTItMDItMDMgIFphbGFuIEJ1anRhcyAgPHpidWp0YXNAZ21haWwuY29tPiAgYW5kICBKb2NlbHlu
IFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XVtX
SzJdIFJlbW92ZSBUaWxlZERyYXdpbmdBcmVhIGFuZCBkZXBlbmRlbmNpZXMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFw
aGljc0xheWVyLmNwcAppbmRleCAxNGI4NmFlYTQ4NmFkODAwOGZhYjY2ZWQ2MWViOGVhZTk5ZjVk
NmNhLi40OTc5Y2E1ZWRiOWIxZTQwNDM5Y2NlZjdhOTU4YzkzZDRjZTdlMmRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
R3JhcGhpY3NMYXllci5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgV2ViR3JhcGhpY3NMYXllcjo6V2Vi
R3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2hhc1Bl
bmRpbmdBbmltYXRpb25zKGZhbHNlKQogICAgICwgbV9pblVwZGF0ZU1vZGUoZmFsc2UpCiAjaWYg
VVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgLCBtX2xheWVyVHJlZVRpbGVDbGllbnQoMCkK
KyAgICAsIG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCgwKQogICAgICwgbV9tYWluQmFja2luZ1N0
b3JlKGFkb3B0UHRyKG5ldyBUaWxlZEJhY2tpbmdTdG9yZSh0aGlzLCBUaWxlZEJhY2tpbmdTdG9y
ZVJlbW90ZVRpbGVCYWNrZW5kOjpjcmVhdGUodGhpcykpKSkKICAgICAsIG1fY29udGVudHNTY2Fs
ZSgxLmYpCiAjZW5kaWYKQEAgLTEwNSw4ICsxMDUsOCBAQCBXZWJHcmFwaGljc0xheWVyOjp+V2Vi
R3JhcGhpY3NMYXllcigpCiAgICAgLy8gVGhpcyB3b3VsZCB0ZWxsIHRoZSBVSSBwcm9jZXNzIHRv
IHJlbGVhc2UgdGhlIGJhY2tpbmcgc3RvcmUuCiAgICAgc2V0Q29udGVudHNUb0ltYWdlKDApOwog
Ci0gICAgaWYgKG1fbGF5ZXJUcmVlVGlsZUNsaWVudCkKLSAgICAgICAgbV9sYXllclRyZWVUaWxl
Q2xpZW50LT5kaWREZWxldGVMYXllcihpZCgpKTsKKyAgICBpZiAobV93ZWJHcmFwaGljc0xheWVy
Q2xpZW50KQorICAgICAgICBtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQtPnJlbGVhc2VMYXllcih0
aGlzKTsKIH0KIAogYm9vbCBXZWJHcmFwaGljc0xheWVyOjpzZXRDaGlsZHJlbihjb25zdCBWZWN0
b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZHJlbikKQEAgLTExNiw3ICsxMTYsNyBAQCBib29sIFdl
YkdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4m
IGNoaWxkcmVuKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBjaGlsZHJlbi5zaXplKCk7ICsraSkgewogICAgICAgICBXZWJHcmFwaGljc0xheWVyKiBjaGls
ZCA9IHRvV2ViR3JhcGhpY3NMYXllcihjaGlsZHJlbltpXSk7Ci0gICAgICAgIGNoaWxkLT5zZXRW
aXNpYmxlQ29udGVudFJlY3RBbmRTY2FsZShtX3BhZ2VWaXNpYmxlUmVjdCwgbV9jb250ZW50c1Nj
YWxlKTsKKyAgICAgICAgY2hpbGQtPnNldFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQobV93ZWJHcmFw
aGljc0xheWVyQ2xpZW50KTsKICAgICAgICAgY2hpbGQtPm5vdGlmeUNoYW5nZSgpOwogICAgIH0K
ICAgICBub3RpZnlDaGFuZ2UoKTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBib29sIFdlYkdyYXBoaWNz
TGF5ZXI6OnNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGNoaWxkcmVu
KQogdm9pZCBXZWJHcmFwaGljc0xheWVyOjphZGRDaGlsZChHcmFwaGljc0xheWVyKiBsYXllcikK
IHsKICAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZChsYXllcik7Ci0gICAgdG9XZWJHcmFwaGlj
c0xheWVyKGxheWVyKS0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUobV9wYWdlVmlzaWJs
ZVJlY3QsIG1fY29udGVudHNTY2FsZSk7CisgICAgdG9XZWJHcmFwaGljc0xheWVyKGxheWVyKS0+
c2V0V2ViR3JhcGhpY3NMYXllckNsaWVudChtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQpOwogICAg
IHRvV2ViR3JhcGhpY3NMYXllcihsYXllciktPm5vdGlmeUNoYW5nZSgpOwogICAgIG5vdGlmeUNo
YW5nZSgpOwogfQpAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6YWRk
Q2hpbGQoR3JhcGhpY3NMYXllciogbGF5ZXIpCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OmFkZENo
aWxkQXRJbmRleChHcmFwaGljc0xheWVyKiBsYXllciwgaW50IGluZGV4KQogewogICAgIEdyYXBo
aWNzTGF5ZXI6OmFkZENoaWxkQXRJbmRleChsYXllciwgaW5kZXgpOwotICAgIHRvV2ViR3JhcGhp
Y3NMYXllcihsYXllciktPnNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlKG1fcGFnZVZpc2li
bGVSZWN0LCBtX2NvbnRlbnRzU2NhbGUpOworICAgIHRvV2ViR3JhcGhpY3NMYXllcihsYXllcikt
PnNldFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQobV93ZWJHcmFwaGljc0xheWVyQ2xpZW50KTsKICAg
ICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5ub3RpZnlDaGFuZ2UoKTsKICAgICBub3RpZnlD
aGFuZ2UoKTsKIH0KQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OmFk
ZENoaWxkQXRJbmRleChHcmFwaGljc0xheWVyKiBsYXllciwgaW50IGluZGV4KQogdm9pZCBXZWJH
cmFwaGljc0xheWVyOjphZGRDaGlsZEFib3ZlKEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBHcmFwaGlj
c0xheWVyKiBzaWJsaW5nKQogewogICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQWJvdmUobGF5
ZXIsIHNpYmxpbmcpOwotICAgIHRvV2ViR3JhcGhpY3NMYXllcihsYXllciktPnNldFZpc2libGVD
b250ZW50UmVjdEFuZFNjYWxlKG1fcGFnZVZpc2libGVSZWN0LCBtX2NvbnRlbnRzU2NhbGUpOwor
ICAgIHRvV2ViR3JhcGhpY3NMYXllcihsYXllciktPnNldFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQo
bV93ZWJHcmFwaGljc0xheWVyQ2xpZW50KTsKICAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIp
LT5ub3RpZnlDaGFuZ2UoKTsKICAgICBub3RpZnlDaGFuZ2UoKTsKIH0KQEAgLTE1MCw3ICsxNTAs
NyBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQWJvdmUoR3JhcGhpY3NMYXllciog
bGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNpYmxpbgogdm9pZCBXZWJHcmFwaGljc0xheWVyOjphZGRD
aGlsZEJlbG93KEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBHcmFwaGljc0xheWVyKiBzaWJsaW5nKQog
ewogICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQmVsb3cobGF5ZXIsIHNpYmxpbmcpOwotICAg
IHRvV2ViR3JhcGhpY3NMYXllcihsYXllciktPnNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxl
KG1fcGFnZVZpc2libGVSZWN0LCBtX2NvbnRlbnRzU2NhbGUpOworICAgIHRvV2ViR3JhcGhpY3NM
YXllcihsYXllciktPnNldFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQobV93ZWJHcmFwaGljc0xheWVy
Q2xpZW50KTsKICAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5ub3RpZnlDaGFuZ2UoKTsK
ICAgICBub3RpZnlDaGFuZ2UoKTsKIH0KQEAgLTE2Miw4ICsxNjIsNyBAQCBib29sIFdlYkdyYXBo
aWNzTGF5ZXI6OnJlcGxhY2VDaGlsZChHcmFwaGljc0xheWVyKiBvbGRDaGlsZCwgR3JhcGhpY3NM
YXllciogbmV3QwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbm90aWZ5Q2hhbmdlKCk7CiAg
ICAgdG9XZWJHcmFwaGljc0xheWVyKG9sZENoaWxkKS0+bm90aWZ5Q2hhbmdlKCk7Ci0gICAgdG9X
ZWJHcmFwaGljc0xheWVyKG9sZENoaWxkKS0+c2V0TGF5ZXJUcmVlVGlsZUNsaWVudCgwKTsKLSAg
ICB0b1dlYkdyYXBoaWNzTGF5ZXIobmV3Q2hpbGQpLT5zZXRWaXNpYmxlQ29udGVudFJlY3RBbmRT
Y2FsZShtX3BhZ2VWaXNpYmxlUmVjdCwgbV9jb250ZW50c1NjYWxlKTsKKyAgICB0b1dlYkdyYXBo
aWNzTGF5ZXIobmV3Q2hpbGQpLT5zZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50KG1fd2ViR3JhcGhp
Y3NMYXllckNsaWVudCk7CiAgICAgdG9XZWJHcmFwaGljc0xheWVyKG5ld0NoaWxkKS0+bm90aWZ5
Q2hhbmdlKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xNzUsNyArMTc0LDYgQEAgdm9pZCBX
ZWJHcmFwaGljc0xheWVyOjpyZW1vdmVGcm9tUGFyZW50KCkKICAgICBHcmFwaGljc0xheWVyOjpy
ZW1vdmVGcm9tUGFyZW50KCk7CiAKICAgICBub3RpZnlDaGFuZ2UoKTsKLSAgICBzZXRMYXllclRy
ZWVUaWxlQ2xpZW50KDApOwogfQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldFBvc2l0aW9u
KGNvbnN0IEZsb2F0UG9pbnQmIHApCkBAIC0zNDcsMTcgKzM0NSwxNiBAQCB2b2lkIFdlYkdyYXBo
aWNzTGF5ZXI6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7CiAgICAgaWYgKGlt
YWdlID09IG1faW1hZ2UpCiAgICAgICAgIHJldHVybjsKLSAgICBXZWJMYXllclRyZWVUaWxlQ2xp
ZW50KiBjbGllbnQgPSBsYXllclRyZWVUaWxlQ2xpZW50KCk7CiAgICAgaW50NjRfdCBuZXdJRCA9
IDA7Ci0gICAgaWYgKGNsaWVudCkgeworICAgIGlmIChtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQp
IHsKICAgICAgICAgLy8gV2UgYWRvcHQgZmlyc3QsIGluIGNhc2UgdGhpcyBpcyB0aGUgc2FtZSBm
cmFtZSAtIHRoYXQgd2F5IHdlIGF2b2lkIGRlc3Ryb3lpbmcgYW5kIHJlY3JlYXRpbmcgdGhlIGlt
YWdlLgotICAgICAgICBuZXdJRCA9IGNsaWVudC0+YWRvcHRJbWFnZUJhY2tpbmdTdG9yZShpbWFn
ZSk7Ci0gICAgICAgIGNsaWVudC0+cmVsZWFzZUltYWdlQmFja2luZ1N0b3JlKG1fbGF5ZXJJbmZv
LmltYWdlQmFja2luZ1N0b3JlSUQpOworICAgICAgICBuZXdJRCA9IG1fd2ViR3JhcGhpY3NMYXll
ckNsaWVudC0+YWRvcHRJbWFnZUJhY2tpbmdTdG9yZShpbWFnZSk7CisgICAgICAgIG1fd2ViR3Jh
cGhpY3NMYXllckNsaWVudC0+cmVsZWFzZUltYWdlQmFja2luZ1N0b3JlKG1fbGF5ZXJJbmZvLmlt
YWdlQmFja2luZ1N0b3JlSUQpOwogICAgICAgICBub3RpZnlDaGFuZ2UoKTsKICAgICAgICAgaWYg
KG1fbGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0b3JlSUQgJiYgbmV3SUQgPT0gbV9sYXllckluZm8u
aW1hZ2VCYWNraW5nU3RvcmVJRCkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9IGVsc2Ugewot
ICAgICAgICAvLyBJZiBjbGllbnQgbm90IHNldCB5ZXQgdGhlcmUgc2hvdWxkIGJlIG5vIGJhY2tp
bmcgc3RvcmUgSUQuCisgICAgICAgIC8vIElmIG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCBpcyBu
b3Qgc2V0IHlldCB0aGVyZSBzaG91bGQgYmUgbm8gYmFja2luZyBzdG9yZSBJRC4KICAgICAgICAg
QVNTRVJUKCFtX2xheWVySW5mby5pbWFnZUJhY2tpbmdTdG9yZUlEKTsKICAgICAgICAgbm90aWZ5
Q2hhbmdlKCk7CiAgICAgfQpAQCAtMzgwLDkgKzM3Nyw4IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXll
cjo6c2V0TWFza0xheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogCiAgICAgbGF5ZXItPnNldFNp
emUoc2l6ZSgpKTsKICAgICBXZWJHcmFwaGljc0xheWVyKiB3ZWJHcmFwaGljc0xheWVyID0gdG9X
ZWJHcmFwaGljc0xheWVyKGxheWVyKTsKLSAgICB3ZWJHcmFwaGljc0xheWVyLT5zZXRMYXllclRy
ZWVUaWxlQ2xpZW50KGxheWVyVHJlZVRpbGVDbGllbnQoKSk7CisgICAgd2ViR3JhcGhpY3NMYXll
ci0+c2V0V2ViR3JhcGhpY3NMYXllckNsaWVudChtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQpOwog
ICAgIHdlYkdyYXBoaWNzTGF5ZXItPnNldE1hc2tUYXJnZXQodGhpcyk7Ci0gICAgd2ViR3JhcGhp
Y3NMYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUobV9wYWdlVmlzaWJsZVJlY3Qs
IG1fY29udGVudHNTY2FsZSk7CiAgICAgd2ViR3JhcGhpY3NMYXllci0+bm90aWZ5Q2hhbmdlKCk7
CiAgICAgbm90aWZ5Q2hhbmdlKCk7CiAKQEAgLTM5NCw3ICszOTAsNyBAQCB2b2lkIFdlYkdyYXBo
aWNzTGF5ZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAobGF5ZXIpCi0gICAgICAgIHRvV2ViR3JhcGhpY3NMYXll
cihsYXllciktPnNldExheWVyVHJlZVRpbGVDbGllbnQobGF5ZXJUcmVlVGlsZUNsaWVudCgpKTsK
KyAgICAgICAgdG9XZWJHcmFwaGljc0xheWVyKGxheWVyKS0+c2V0V2ViR3JhcGhpY3NMYXllckNs
aWVudChtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQpOwogCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0
UmVwbGljYXRlZEJ5TGF5ZXIobGF5ZXIpOwogICAgIG5vdGlmeUNoYW5nZSgpOwpAQCAtNDM4LDkg
KzQzNCw2IEBAIFdlYkdyYXBoaWNzTGF5ZXIqIHRvV2ViR3JhcGhpY3NMYXllcihHcmFwaGljc0xh
eWVyKiBsYXllcikKIAogdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzeW5jQ29tcG9zaXRpbmdTdGF0
ZUZvclRoaXNMYXllck9ubHkoKQogewotICAgIGlmICghbV9sYXllclRyZWVUaWxlQ2xpZW50KQot
ICAgICAgICBtX2xheWVyVHJlZVRpbGVDbGllbnQgPSBsYXllclRyZWVUaWxlQ2xpZW50KCk7Ci0K
ICAgICB1cGRhdGVDb250ZW50QnVmZmVycygpOwogCiAgICAgaWYgKCFtX21vZGlmaWVkKQpAQCAt
NDY5LDExICs0NjIsMTEgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzeW5jQ29tcG9zaXRpbmdT
dGF0ZUZvclRoaXNMYXllck9ubHkoKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRy
ZW4oKS5zaXplKCk7ICsraSkKICAgICAgICAgbV9sYXllckluZm8uY2hpbGRyZW4uYXBwZW5kKHRv
V2ViTGF5ZXJJRChjaGlsZHJlbigpW2ldKSk7CiAKLSAgICBBU1NFUlQobV9sYXllclRyZWVUaWxl
Q2xpZW50KTsKKyAgICBBU1NFUlQobV93ZWJHcmFwaGljc0xheWVyQ2xpZW50KTsKICAgICBpZiAo
bV9sYXllckluZm8uaW1hZ2VJc1VwZGF0ZWQgJiYgbV9pbWFnZSAmJiAhbV9sYXllckluZm8uaW1h
Z2VCYWNraW5nU3RvcmVJRCkKLSAgICAgICAgbV9sYXllckluZm8uaW1hZ2VCYWNraW5nU3RvcmVJ
RCA9IG1fbGF5ZXJUcmVlVGlsZUNsaWVudC0+YWRvcHRJbWFnZUJhY2tpbmdTdG9yZShtX2ltYWdl
LmdldCgpKTsKKyAgICAgICAgbV9sYXllckluZm8uaW1hZ2VCYWNraW5nU3RvcmVJRCA9IG1fd2Vi
R3JhcGhpY3NMYXllckNsaWVudC0+YWRvcHRJbWFnZUJhY2tpbmdTdG9yZShtX2ltYWdlLmdldCgp
KTsKIAotICAgIG1fbGF5ZXJUcmVlVGlsZUNsaWVudC0+ZGlkU3luY0NvbXBvc2l0aW5nU3RhdGVG
b3JMYXllcihtX2xheWVySW5mbyk7CisgICAgbV93ZWJHcmFwaGljc0xheWVyQ2xpZW50LT5kaWRT
eW5jQ29tcG9zaXRpbmdTdGF0ZUZvckxheWVyKG1fbGF5ZXJJbmZvKTsKICAgICBtX21vZGlmaWVk
ID0gZmFsc2U7CiAgICAgbV9sYXllckluZm8uaW1hZ2VJc1VwZGF0ZWQgPSBmYWxzZTsKICAgICBp
ZiAobV9oYXNQZW5kaW5nQW5pbWF0aW9ucykKQEAgLTUzNSw5ICs1MjgsNyBAQCBib29sIFdlYkdy
YXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlVXBkYXRlc0FsbG93ZWQoKSBjb25zdAogewog
ICAgIGlmICghbV9pblVwZGF0ZU1vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAo
V2ViTGF5ZXJUcmVlVGlsZUNsaWVudCogY2xpZW50ID0gbGF5ZXJUcmVlVGlsZUNsaWVudCgpKQot
ICAgICAgICByZXR1cm4gY2xpZW50LT5sYXllclRyZWVUaWxlVXBkYXRlc0FsbG93ZWQoKTsKLSAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fd2ViR3JhcGhpY3NMYXllckNsaWVudC0+bGF5
ZXJUcmVlVGlsZVVwZGF0ZXNBbGxvd2VkKCk7CiB9CiAKIEludFJlY3QgV2ViR3JhcGhpY3NMYXll
cjo6dGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKQpAQCAtNTcyLDIyICs1NjMsMTkgQEAg
Q29sb3IgV2ViR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVCYWNrZ3JvdW5kQ29sb3Io
KSBjb25zdAogdm9pZCBXZWJHcmFwaGljc0xheWVyOjpjcmVhdGVUaWxlKGludCB0aWxlSUQsIGNv
bnN0IFVwZGF0ZUluZm8mIHVwZGF0ZUluZm8pCiB7CiAgICAgbV9tb2RpZmllZCA9IHRydWU7Ci0g
ICAgaWYgKFdlYkxheWVyVHJlZVRpbGVDbGllbnQqIGNsaWVudCA9IGxheWVyVHJlZVRpbGVDbGll
bnQoKSkKLSAgICAgICAgY2xpZW50LT5jcmVhdGVUaWxlKGlkKCksIHRpbGVJRCwgdXBkYXRlSW5m
byk7CisgICAgbV93ZWJHcmFwaGljc0xheWVyQ2xpZW50LT5jcmVhdGVUaWxlKGlkKCksIHRpbGVJ
RCwgdXBkYXRlSW5mbyk7CiB9CiAKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6dXBkYXRlVGlsZShp
bnQgdGlsZUlELCBjb25zdCBVcGRhdGVJbmZvJiB1cGRhdGVJbmZvKQogewogICAgIG1fbW9kaWZp
ZWQgPSB0cnVlOwotICAgIGlmIChXZWJMYXllclRyZWVUaWxlQ2xpZW50KiBjbGllbnQgPSBsYXll
clRyZWVUaWxlQ2xpZW50KCkpCi0gICAgICAgIGNsaWVudC0+dXBkYXRlVGlsZShpZCgpLCB0aWxl
SUQsIHVwZGF0ZUluZm8pOworICAgIG1fd2ViR3JhcGhpY3NMYXllckNsaWVudC0+dXBkYXRlVGls
ZShpZCgpLCB0aWxlSUQsIHVwZGF0ZUluZm8pOwogfQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6
OnJlbW92ZVRpbGUoaW50IHRpbGVJRCkKIHsKICAgICBtX21vZGlmaWVkID0gdHJ1ZTsKLSAgICBp
ZiAoV2ViTGF5ZXJUcmVlVGlsZUNsaWVudCogY2xpZW50ID0gbGF5ZXJUcmVlVGlsZUNsaWVudCgp
KQotICAgICAgICBjbGllbnQtPnJlbW92ZVRpbGUoaWQoKSwgdGlsZUlEKTsKKyAgICBtX3dlYkdy
YXBoaWNzTGF5ZXJDbGllbnQtPnJlbW92ZVRpbGUoaWQoKSwgdGlsZUlEKTsKIH0KIAogdm9pZCBX
ZWJHcmFwaGljc0xheWVyOjp1cGRhdGVUaWxlQnVmZmVyc1JlY3Vyc2l2ZWx5KCkKQEAgLTYwMiwy
MyArNTkwLDYgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjp1cGRhdGVUaWxlQnVmZmVyc1JlY3Vy
c2l2ZWx5KCkKICAgICAgICAgbWFzay0+dXBkYXRlVGlsZUJ1ZmZlcnNSZWN1cnNpdmVseSgpOwog
fQogCi1XZWJMYXllclRyZWVUaWxlQ2xpZW50KiBXZWJHcmFwaGljc0xheWVyOjpsYXllclRyZWVU
aWxlQ2xpZW50KCkgY29uc3QKLXsKLSAgICBpZiAobV9sYXllclRyZWVUaWxlQ2xpZW50KQotICAg
ICAgICByZXR1cm4gbV9sYXllclRyZWVUaWxlQ2xpZW50OwotICAgIFdlYkdyYXBoaWNzTGF5ZXIq
IHBhcmVudDsKLSAgICBpZiAodGhpcy0+cmVwbGljYXRlZExheWVyKCkpCi0gICAgICAgIHBhcmVu
dCA9IHRvV2ViR3JhcGhpY3NMYXllcih0aGlzLT5yZXBsaWNhdGVkTGF5ZXIoKSk7Ci0gICAgZWxz
ZSBpZiAodGhpcy0+bWFza1RhcmdldCgpKQotICAgICAgICBwYXJlbnQgPSB0b1dlYkdyYXBoaWNz
TGF5ZXIodGhpcy0+bWFza1RhcmdldCgpKTsKLSAgICBlbHNlCi0gICAgICAgIHBhcmVudCA9IHRv
V2ViR3JhcGhpY3NMYXllcih0aGlzLT5wYXJlbnQoKSk7Ci0KLSAgICBpZiAoIXBhcmVudCkKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHBhcmVudC0+bGF5ZXJUcmVlVGlsZUNsaWVudCgp
OwotfQotCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKCkKIHsK
ICAgICAvLyBCYWNraW5nLXN0b3JlcyBmb3IgZGlyZWN0bHkgY29tcG9zaXRlZCBpbWFnZXMgaXMg
aGFuZGxlZCBpbiBMYXllclRyZWVIb3N0LgpAQCAtNjI3LDkgKzU5OCw3IEBAIHZvaWQgV2ViR3Jh
cGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMoKQogCiAgICAgaWYgKCFkcmF3c0NvbnRl
bnQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFdlYkxheWVyVHJlZVRpbGVDbGllbnQqIGNsaWVu
dCA9IGxheWVyVHJlZVRpbGVDbGllbnQoKTsKLSAgICBpZiAoIWNsaWVudCkKLSAgICAgICAgcmV0
dXJuOworCiAgICAgbV9pblVwZGF0ZU1vZGUgPSB0cnVlOwogICAgIG1fbWFpbkJhY2tpbmdTdG9y
ZS0+dXBkYXRlVGlsZUJ1ZmZlcnMoKTsKICAgICBtX2luVXBkYXRlTW9kZSA9IGZhbHNlOwpAQCAt
NjUxLDcgKzYyMCw3IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6cHVyZ2VCYWNraW5nU3RvcmVz
KCkKICAgICBpZiAoIW1fbGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0b3JlSUQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGxheWVyVHJlZVRpbGVDbGllbnQoKS0+cmVsZWFzZUltYWdlQmFja2luZ1N0
b3JlKG1fbGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0b3JlSUQpOworICAgIG1fd2ViR3JhcGhpY3NM
YXllckNsaWVudC0+cmVsZWFzZUltYWdlQmFja2luZ1N0b3JlKG1fbGF5ZXJJbmZvLmltYWdlQmFj
a2luZ1N0b3JlSUQpOwogICAgIG1fbGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0b3JlSUQgPSAwOwog
fQogCkBAIC02NzMsMjQgKzY0MiwyNiBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnJlY3JlYXRl
QmFja2luZ1N0b3JlSWZOZWVkZWQoKQogICAgICAgICBzZXRDb250ZW50c05lZWRzRGlzcGxheSgp
OwogfQogCi12b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldExheWVyVHJlZVRpbGVDbGllbnQoV2Vi
S2l0OjpXZWJMYXllclRyZWVUaWxlQ2xpZW50KiBjbGllbnQpCit2b2lkIFdlYkdyYXBoaWNzTGF5
ZXI6OnNldFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQoV2ViS2l0OjpXZWJHcmFwaGljc0xheWVyQ2xp
ZW50KiBjbGllbnQpCiB7Ci0gICAgaWYgKG1fbGF5ZXJUcmVlVGlsZUNsaWVudCA9PSBjbGllbnQp
CisgICAgaWYgKG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCA9PSBjbGllbnQpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChXZWJHcmFwaGljc0xheWVyKiByZXBsaWNhID0gdG9XZWJHcmFwaGlj
c0xheWVyKHJlcGxpY2FMYXllcigpKSkKLSAgICAgICAgcmVwbGljYS0+c2V0TGF5ZXJUcmVlVGls
ZUNsaWVudChjbGllbnQpOworICAgICAgICByZXBsaWNhLT5zZXRXZWJHcmFwaGljc0xheWVyQ2xp
ZW50KGNsaWVudCk7CiAgICAgaWYgKFdlYkdyYXBoaWNzTGF5ZXIqIG1hc2sgPSB0b1dlYkdyYXBo
aWNzTGF5ZXIobWFza0xheWVyKCkpKQotICAgICAgICBtYXNrLT5zZXRMYXllclRyZWVUaWxlQ2xp
ZW50KGNsaWVudCk7CisgICAgICAgIG1hc2stPnNldFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQoY2xp
ZW50KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoaWxkcmVuKCkuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgV2ViR3JhcGhpY3NMYXllciogbGF5ZXIgPSB0b1dlYkdyYXBoaWNzTGF5ZXIo
dGhpcy0+Y2hpbGRyZW4oKVtpXSk7Ci0gICAgICAgIGxheWVyLT5zZXRMYXllclRyZWVUaWxlQ2xp
ZW50KGNsaWVudCk7CisgICAgICAgIGxheWVyLT5zZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50KGNs
aWVudCk7CiAgICAgfQogCiAgICAgLy8gSGF2ZSB0byBmb3JjZSBkZXRhY2ggZnJvbSByZW1vdGUg
bGF5ZXIgaGVyZSBpZiBsYXllciB0aWxlIGNsaWVudCBjaGFuZ2VzLgotICAgIGlmIChtX2xheWVy
VHJlZVRpbGVDbGllbnQpCi0gICAgICAgIG1fbGF5ZXJUcmVlVGlsZUNsaWVudC0+ZGlkRGVsZXRl
TGF5ZXIoaWQoKSk7Ci0gICAgbV9sYXllclRyZWVUaWxlQ2xpZW50ID0gY2xpZW50OworICAgIGlm
IChtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQpCisgICAgICAgIG1fd2ViR3JhcGhpY3NMYXllckNs
aWVudC0+cmVsZWFzZUxheWVyKHRoaXMpOworICAgIG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCA9
IGNsaWVudDsKKyAgICBpZiAoY2xpZW50KQorICAgICAgICBjbGllbnQtPnJlZ2lzdGVyTGF5ZXIo
dGhpcyk7CiB9CiAKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6Y29tcHV0ZVRyYW5zZm9ybWVkVmlz
aWJsZVJlY3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuaAppbmRleCAwYjUwNzYzYjdkNWU3OGVmODdh
NDVjZDk4MzlhYmU2Y2I4MzU2NTEyLi5iN2JjODM3YjZlZTJiNDY4NTgzN2JiNTk2MzA5MjhiOTA4
NjY3Y2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuaApAQCAtMzksMTkgKzM5LDI1IEBACiAKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIFdlYkdyYXBoaWNzTGF5ZXI7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBX
ZWJMYXllclRyZWVUaWxlQ2xpZW50IHsKK2NsYXNzIFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQgewog
cHVibGljOgogICAgIC8vIFRpbGVkQmFja2luZ1N0b3JlUmVtb3RlVGlsZUNsaWVudAogICAgIHZp
cnR1YWwgdm9pZCBjcmVhdGVUaWxlKFdlYkxheWVySUQsIGludCB0aWxlSUQsIGNvbnN0IFVwZGF0
ZUluZm8mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRpbGUoV2ViTGF5ZXJJRCwgaW50
IHRpbGVJRCwgY29uc3QgVXBkYXRlSW5mbyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
VGlsZShXZWJMYXllcklELCBpbnQgdGlsZUlEKSA9IDA7CisKICAgICB2aXJ0dWFsIGJvb2wgbGF5
ZXJUcmVlVGlsZVVwZGF0ZXNBbGxvd2VkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgaW50NjRf
dCBhZG9wdEltYWdlQmFja2luZ1N0b3JlKFdlYkNvcmU6OkltYWdlKikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCByZWxlYXNlSW1hZ2VCYWNraW5nU3RvcmUoaW50NjRfdCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRTeW5jQ29tcG9zaXRpbmdTdGF0ZUZvckxheWVyKGNvbnN0IFdlYkxheWVySW5m
byYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGVsZXRlTGF5ZXIoV2ViTGF5ZXJJRCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckxheWVyKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5
ZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VMYXllcihXZWJDb3JlOjpXZWJHcmFw
aGljc0xheWVyKikgPSAwOwogfTsKIH0KIApAQCAtMTI5LDggKzEzNSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGlsZShpbnQgdGlsZUlELCBjb25zdCBXZWJLaXQ6OlVwZGF0
ZUluZm8mKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlVGlsZShpbnQgdGlsZUlEKTsKIAotICAg
IHZvaWQgc2V0TGF5ZXJUcmVlVGlsZUNsaWVudChXZWJLaXQ6OldlYkxheWVyVHJlZVRpbGVDbGll
bnQqKTsKLSAgICBXZWJLaXQ6OldlYkxheWVyVHJlZVRpbGVDbGllbnQqIGxheWVyVHJlZVRpbGVD
bGllbnQoKSBjb25zdDsKKyAgICB2b2lkIHNldFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQoV2ViS2l0
OjpXZWJHcmFwaGljc0xheWVyQ2xpZW50Kik7CiAKICAgICBib29sIGlzUmVhZHlGb3JUaWxlQnVm
ZmVyU3dhcCgpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlVGlsZUJ1ZmZlcnNSZWN1cnNpdmVseSgp
OwpAQCAtMTYxLDcgKzE2Niw3IEBAIHByaXZhdGU6CiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RP
UkUpCiAgICAgdm9pZCBjb21wdXRlVHJhbnNmb3JtZWRWaXNpYmxlUmVjdCgpOwogCi0gICAgV2Vi
S2l0OjpXZWJMYXllclRyZWVUaWxlQ2xpZW50KiBtX2xheWVyVHJlZVRpbGVDbGllbnQ7CisgICAg
V2ViS2l0OjpXZWJHcmFwaGljc0xheWVyQ2xpZW50KiBtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQ7
CiAgICAgT3duUHRyPFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlPiBtX21haW5CYWNraW5nU3Rv
cmU7CiAgICAgT3duUHRyPFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlPiBtX3ByZXZpb3VzQmFj
a2luZ1N0b3JlOwogICAgIGZsb2F0IG1fY29udGVudHNTY2FsZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5jcHAKaW5k
ZXggZmMxZTg1YjIxYmZjYzNkNDJhZWY3NDA1Njg0MGIwNjMyMzVkY2VmZS4uMTczYWM1OTg0ZWQ5
MDdiZmE4ZGRkZWZkYjYyMjliY2E5YjllNDgwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5jcHAKQEAgLTUyLDgg
KzUyLDEzIEBAIFBhc3NSZWZQdHI8TGF5ZXJUcmVlSG9zdFF0PiBMYXllclRyZWVIb3N0UXQ6OmNy
ZWF0ZShXZWJQYWdlKiB3ZWJQYWdlKQogCiBMYXllclRyZWVIb3N0UXQ6On5MYXllclRyZWVIb3N0
UXQoKQogewotICAgIGlmIChtX3Jvb3RMYXllcikKLSAgICAgICAgdG9XZWJHcmFwaGljc0xheWVy
KG1fcm9vdExheWVyLmdldCgpKS0+c2V0TGF5ZXJUcmVlVGlsZUNsaWVudCgwKTsKKyAgICAvLyBQ
cmV2ZW50IHNldFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQoMCkgLT4gcmVsZWFzZUxheWVyKCkgZnJv
bSBtb2RpZnlpbmcgdGhlIHNldCB3aGlsZSB3ZSBpdGVyYXRlIGl0LgorICAgIEhhc2hTZXQ8V2Vi
Q29yZTo6V2ViR3JhcGhpY3NMYXllcio+IHJlZ2lzdGVyZWRMYXllcnM7CisgICAgcmVnaXN0ZXJl
ZExheWVycy5zd2FwKG1fcmVnaXN0ZXJlZExheWVycyk7CisKKyAgICBIYXNoU2V0PFdlYkNvcmU6
OldlYkdyYXBoaWNzTGF5ZXIqPjo6aXRlcmF0b3IgZW5kID0gcmVnaXN0ZXJlZExheWVycy5lbmQo
KTsKKyAgICBmb3IgKEhhc2hTZXQ8V2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcio+OjppdGVyYXRv
ciBpdGVyID0gcmVnaXN0ZXJlZExheWVycy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKQor
ICAgICAgICAoKml0ZXIpLT5zZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50KDApOwogfQogCiBMYXll
clRyZWVIb3N0UXQ6OkxheWVyVHJlZUhvc3RRdChXZWJQYWdlKiB3ZWJQYWdlKQpAQCAtNjMsNiAr
NjgsNyBAQCBMYXllclRyZWVIb3N0UXQ6OkxheWVyVHJlZUhvc3RRdChXZWJQYWdlKiB3ZWJQYWdl
KQogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgICwgbV93YWl0aW5nRm9yVUlQcm9j
ZXNzKGZhbHNlKQogICAgICwgbV9pc1N1c3BlbmRlZChmYWxzZSkKKyAgICAsIG1fY29udGVudHNT
Y2FsZSgxKQogI2VuZGlmCiAgICAgLCBtX3Nob3VsZFN5bmNGcmFtZShmYWxzZSkKICAgICAsIG1f
c2hvdWxkU3luY1Jvb3RMYXllcih0cnVlKQpAQCAtODMsNyArODksNyBAQCBMYXllclRyZWVIb3N0
UXQ6OkxheWVyVHJlZUhvc3RRdChXZWJQYWdlKiB3ZWJQYWdlKQogCiAgICAgbV9ub25Db21wb3Np
dGVkQ29udGVudExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKHRoaXMpOwogI2lmIFVTRShU
SUxFRF9CQUNLSU5HX1NUT1JFKQotICAgIHRvV2ViR3JhcGhpY3NMYXllcihtX3Jvb3RMYXllci5n
ZXQoKSktPnNldExheWVyVHJlZVRpbGVDbGllbnQodGhpcyk7CisgICAgdG9XZWJHcmFwaGljc0xh
eWVyKG1fcm9vdExheWVyLmdldCgpKS0+c2V0V2ViR3JhcGhpY3NMYXllckNsaWVudCh0aGlzKTsK
ICNlbmRpZgogI2lmbmRlZiBOREVCVUcKICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIt
PnNldE5hbWUoIkxheWVyVHJlZUhvc3RRdCBub24tY29tcG9zaXRlZCBjb250ZW50Iik7CkBAIC0y
MzIsMTAgKzIzOCwxOSBAQCB2b2lkIExheWVyVHJlZUhvc3RRdDo6ZGlkU3luY0NvbXBvc2l0aW5n
U3RhdGVGb3JMYXllcihjb25zdCBXZWJMYXllckluZm8mIGluZm8pCiAgICAgbV93ZWJQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVIb3N0UHJveHk6OlN5bmNDb21wb3NpdGluZ0xheWVyU3Rh
dGUoaW5mbykpOwogfQogCi12b2lkIExheWVyVHJlZUhvc3RRdDo6ZGlkRGVsZXRlTGF5ZXIoV2Vi
TGF5ZXJJRCBpZCkKK3ZvaWQgTGF5ZXJUcmVlSG9zdFF0OjpyZWdpc3RlckxheWVyKFdlYkdyYXBo
aWNzTGF5ZXIqIGxheWVyKQoreworICAgIEFTU0VSVCghbV9yZWdpc3RlcmVkTGF5ZXJzLmNvbnRh
aW5zKGxheWVyKSk7CisgICAgbV9yZWdpc3RlcmVkTGF5ZXJzLmFkZChsYXllcik7CisKKyAgICBs
YXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUobV92aXNpYmxlQ29udGVudHNSZWN0
LCBtX2NvbnRlbnRzU2NhbGUpOworfQorCit2b2lkIExheWVyVHJlZUhvc3RRdDo6cmVsZWFzZUxh
eWVyKFdlYkdyYXBoaWNzTGF5ZXIqIGxheWVyKQogeworICAgIG1fcmVnaXN0ZXJlZExheWVycy5y
ZW1vdmUobGF5ZXIpOwogICAgIG1fc2hvdWxkU3luY0ZyYW1lID0gdHJ1ZTsKLSAgICBtX3dlYlBh
Z2UtPnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUhvc3RQcm94eTo6RGVsZXRlQ29tcG9zaXRpbmdM
YXllcihpZCkpOworICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlSG9zdFBy
b3h5OjpEZWxldGVDb21wb3NpdGluZ0xheWVyKGxheWVyLT5pZCgpKSk7CiB9CiAKIHZvaWQgTGF5
ZXJUcmVlSG9zdFF0OjpwZXJmb3JtU2NoZWR1bGVkTGF5ZXJGbHVzaCgpCkBAIC00MDMsMTAgKzQx
OCwxNSBAQCB2b2lkIExheWVyVHJlZUhvc3RRdDo6cmVtb3ZlVGlsZShXZWJMYXllcklEIGxheWVy
SUQsIGludCB0aWxlSUQpCiAKIHZvaWQgTGF5ZXJUcmVlSG9zdFF0OjpzZXRWaXNpYmxlQ29udGVu
dFJlY3RBbmRTY2FsZShjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9hdCBzY2FsZSkKIHsKLSAgICBp
ZiAobV9yb290TGF5ZXIpIHsKLSAgICAgICAgdG9XZWJHcmFwaGljc0xheWVyKG1fcm9vdExheWVy
LmdldCgpKS0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUocmVjdCwgc2NhbGUpOwotICAg
ICAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKLSAgICB9CisgICAgaWYgKHJlY3QgPT0gbV92aXNp
YmxlQ29udGVudHNSZWN0ICYmIHNjYWxlID09IG1fY29udGVudHNTY2FsZSkKKyAgICAgICAgcmV0
dXJuOworICAgIG1fdmlzaWJsZUNvbnRlbnRzUmVjdCA9IHJlY3Q7CisgICAgbV9jb250ZW50c1Nj
YWxlID0gc2NhbGU7CisKKyAgICBIYXNoU2V0PFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXIqPjo6
aXRlcmF0b3IgZW5kID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgpOworICAgIGZvciAoSGFzaFNl
dDxXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyKj46Oml0ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lzdGVy
ZWRMYXllcnMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKKyAgICAgICAgKCppdGVyKS0+
c2V0VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUocmVjdCwgc2NhbGUpOworICAgIHNjaGVkdWxl
TGF5ZXJGbHVzaCgpOwogfQogCiB2b2lkIExheWVyVHJlZUhvc3RRdDo6c2V0VmlzaWJsZUNvbnRl
bnRSZWN0VHJhamVjdG9yeVZlY3Rvcihjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9y
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVy
VHJlZUhvc3RRdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVy
VHJlZUhvc3RRdC5oCmluZGV4IDA3ZjA0ZTg4YTFhNDIyMmZjOTE0MWFkN2M4OTQwZTQ0NzJmMTU0
ZWEuLjZmNDNjMGY1YWM2MjE3NGYyZjc1MzliYzBkNjJmNzM4NTI5MDNhNGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0
LmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgTGF5ZXJUcmVlSG9z
dFF0IDogcHVibGljIExheWVyVHJlZUhvc3QsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDbGllbnQK
ICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICAgICAgICAgICAgICAgICAgICAsIHB1
YmxpYyBXZWJMYXllclRyZWVUaWxlQ2xpZW50CisgICAgICAgICAgICAgICAgICAgICAgLCBwdWJs
aWMgV2ViR3JhcGhpY3NMYXllckNsaWVudAogI2VuZGlmCiB7CiBwdWJsaWM6CkBAIC03NSw3ICs3
NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRSZWN0QW5k
U2NhbGUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGZsb2F0IHNjYWxlKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRSZWN0VHJhamVjdG9yeVZlY3Rvcihjb25zdCBXZWJDb3Jl
OjpGbG9hdFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFN5bmNDb21wb3NpdGluZ1N0YXRl
Rm9yTGF5ZXIoY29uc3QgV2ViTGF5ZXJJbmZvJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZERlbGV0
ZUxheWVyKFdlYkxheWVySUQpOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckxheWVyKFdlYkNv
cmU6OldlYkdyYXBoaWNzTGF5ZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZUxheWVyKFdl
YkNvcmU6OldlYkdyYXBoaWNzTGF5ZXIqKTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CkBAIC0xMDYs
NiArMTA3LDcgQEAgcHJpdmF0ZToKICAgICAvLyBUaGUgcGFnZSBvdmVybGF5IGxheWVyLiBXaWxs
IGJlIG51bGwgaWYgdGhlcmUncyBubyBwYWdlIG92ZXJsYXkuCiAgICAgT3duUHRyPFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXI+IG1fcGFnZU92ZXJsYXlMYXllcjsKIAorICAgIEhhc2hTZXQ8V2ViQ29y
ZTo6V2ViR3JhcGhpY3NMYXllcio+IG1fcmVnaXN0ZXJlZExheWVyczsKICAgICBIYXNoTWFwPGlu
dDY0X3QsIGludD4gbV9kaXJlY3RseUNvbXBvc2l0ZWRJbWFnZVJlZkNvdW50czsKIAogICAgIGJv
b2wgbV9ub3RpZnlBZnRlclNjaGVkdWxlZExheWVyRmx1c2g7CkBAIC0xMTMsNiArMTE1LDggQEAg
cHJpdmF0ZToKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICBib29sIG1fd2FpdGlu
Z0ZvclVJUHJvY2VzczsKICAgICBib29sIG1faXNTdXNwZW5kZWQ7CisgICAgV2ViQ29yZTo6SW50
UmVjdCBtX3Zpc2libGVDb250ZW50c1JlY3Q7CisgICAgZmxvYXQgbV9jb250ZW50c1NjYWxlOwog
I2VuZGlmCiAgICAgTGF5ZXJUcmVlQ29udGV4dCBtX2xheWVyVHJlZUNvbnRleHQ7CiAgICAgYm9v
bCBtX3Nob3VsZFN5bmNGcmFtZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125881</attachid>
            <date>2012-02-07 11:25:34 -0800</date>
            <delta_ts>2012-02-08 04:50:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77976-20120207202056.patch</filename>
            <type>text/plain</type>
            <size>22795</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2ODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTk3YTBjNzMwOTI1YzZm
YTZiZWUwODkxNGUwMjRhYzQwNWUzN2UyMi4uZDE0NzMxNGY4ZWIyYTQ1MGNiZmI4OGNlN2FhNmFk
ZTRmMDJmMDVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTAyLTA3ICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgW1F0
XSBSZWdpc3RlciBpbmRpdmlkdWFsIFdlYkdyYXBoaWNzTGF5ZXJzIHRvIExheWVyVHJlZUhvc3Qg
aW5zdGVhZCBvZiBoYW5kbGluZyB0aGUgdHJlZSBhcyBhIHdob2xlLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc5NzYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgTGF5ZXJUcmVlSG9zdCBhc3NvY2lh
dGlvbiBoYWQgdG8gYmUgbWFpbnRhaW5lZCBiZXR3ZWVuIHJlLXBhcmFudGVkIGxheWVycyBhbmQg
aXQgd291bGQgYmUKKyAgICAgICAgaW1wb3NzaWJsZSB0byBrbm93IGlmIHRoZSBsYXllciB3b3Vs
ZCBiZSBkaXNjb25uZWN0ZWQgZnJvbSB0aGUgTGF5ZXJUcmVlSG9zdCBvbmx5IGZvciByZXBhcmVu
dGluZworICAgICAgICBvciBkaXNjb25uZWN0ZWQgZm9yIGdvb2QgKGluIG90aGVyIHdvcmRzLCB0
aGF0IHRoZSBMYXllclRyZWVIb3N0IGNvdWxkIGJlIGRlbGV0ZWQgbWVhbndoaWxlKS4KKworICAg
ICAgICBJbnN0ZWFkLCB0aGlzIHBhdGNoIGFzc3VtZXMgdGhhdCBncmFwaGljcyBsYXllcnMgd2ls
bCBvbmx5IGJlIGluIGNvbnRhY3Qgd2l0aCBvbmUgaW5zdGFuY2Ugb2YKKyAgICAgICAgTGF5ZXJU
cmVlSG9zdCwgYW5kIHRoYXQgdGhpcyBhc3NvY2lhdGlvbiBjYW4gYmUga2VwdCB1bnRpbCBlaXRo
ZXIgdGhlIGdyYXBoaWNzIGxheWVyIG9yIHRoZSBsYXllcgorICAgICAgICB0cmVlIGhvc3QgZ2V0
cyBkZWxldGVkLgorCisgICAgICAgIFRoZSByZWdpc3RlcmVkIGxheWVycyBhcmUga2VwdCBpbiBh
IHNldCBhbmQgdGhlIHZpc2libGUgcmVjdCBhbmQgc2NhbGVzIGFyZSBwYXNzZWQgZGlyZWN0bHkK
KyAgICAgICAgdG8gbGF5ZXJzIGluc3RlYWQgb2YgZG93biB0aGUgdHJlZSwgdGhyb3VnaCB0aGUg
cm9vdCBsYXllci4KKworICAgICAgICBUaGlzIGFsc28gZml4ZXMgdGhlICFtX2xheWVySW5mby5p
bWFnZUJhY2tpbmdTdG9yZUlEIEFTU0VSVCB0aGF0IHdhcyBwb3BwaW5nIGluIHVuaXQgdGVzdHMu
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6V2ViR3JhcGhpY3NMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjp+V2ViR3JhcGhpY3NMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpzZXRDaGlsZHJlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjphZGRDaGlsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjphZGRDaGlsZEF0SW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBYm92ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHcmFwaGljc0xheWVyOjphZGRDaGlsZEJlbG93KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdyYXBoaWNzTGF5ZXI6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFw
aGljc0xheWVyOjpyZW1vdmVGcm9tUGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBo
aWNzTGF5ZXI6OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFw
aGljc0xheWVyOjpzZXRNYXNrTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NM
YXllcjo6c2V0UmVwbGljYXRlZEJ5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhp
Y3NMYXllcjo6c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3Jl
VXBkYXRlc0FsbG93ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6Y3Jl
YXRlVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjp1cGRhdGVUaWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnJlbW92ZVRpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6cHVyZ2VCYWNraW5nU3RvcmVzKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnNldFdlYkdyYXBoaWNzTGF5ZXJD
bGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NM
YXllci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJHcmFwaGljc0xheWVyQ2xp
ZW50KToKKyAgICAgICAgKFdlYkdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRy
ZWVIb3N0UXQ6On5MYXllclRyZWVIb3N0UXQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVI
b3N0UXQ6OkxheWVyVHJlZUhvc3RRdCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RR
dDo6cmVnaXN0ZXJMYXllcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpM
YXllclRyZWVIb3N0UXQ6OnJlbGVhc2VMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJl
ZUhvc3RRdDo6c2V0VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuaDoKKyAgICAgICAgKExheWVyVHJlZUhv
c3RRdCk6CisKIDIwMTItMDItMDMgIFphbGFuIEJ1anRhcyAgPHpidWp0YXNAZ21haWwuY29tPiAg
YW5kICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CiAKICAg
ICAgICAgW1F0XVtXSzJdIFJlbW92ZSBUaWxlZERyYXdpbmdBcmVhIGFuZCBkZXBlbmRlbmNpZXMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcAppbmRleCAxNGI4NmFlYTQ4NmFkODAwOGZhYjY2ZWQ2
MWViOGVhZTk5ZjVkNmNhLi5jNzgyOWQ5OWRlNTFjYjBiZDU5ZmMxZTIxOTliNjAxNzUzM2FjMzYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgV2ViR3JhcGhp
Y3NMYXllcjo6V2ViR3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAg
ICAgLCBtX2hhc1BlbmRpbmdBbmltYXRpb25zKGZhbHNlKQogICAgICwgbV9pblVwZGF0ZU1vZGUo
ZmFsc2UpCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgLCBtX2xheWVyVHJlZVRp
bGVDbGllbnQoMCkKKyAgICAsIG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCgwKQogICAgICwgbV9t
YWluQmFja2luZ1N0b3JlKGFkb3B0UHRyKG5ldyBUaWxlZEJhY2tpbmdTdG9yZSh0aGlzLCBUaWxl
ZEJhY2tpbmdTdG9yZVJlbW90ZVRpbGVCYWNrZW5kOjpjcmVhdGUodGhpcykpKSkKICAgICAsIG1f
Y29udGVudHNTY2FsZSgxLmYpCiAjZW5kaWYKQEAgLTEwNSw4ICsxMDUsOCBAQCBXZWJHcmFwaGlj
c0xheWVyOjp+V2ViR3JhcGhpY3NMYXllcigpCiAgICAgLy8gVGhpcyB3b3VsZCB0ZWxsIHRoZSBV
SSBwcm9jZXNzIHRvIHJlbGVhc2UgdGhlIGJhY2tpbmcgc3RvcmUuCiAgICAgc2V0Q29udGVudHNU
b0ltYWdlKDApOwogCi0gICAgaWYgKG1fbGF5ZXJUcmVlVGlsZUNsaWVudCkKLSAgICAgICAgbV9s
YXllclRyZWVUaWxlQ2xpZW50LT5kaWREZWxldGVMYXllcihpZCgpKTsKKyAgICBpZiAobV93ZWJH
cmFwaGljc0xheWVyQ2xpZW50KQorICAgICAgICBtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQtPnJl
bGVhc2VMYXllcih0aGlzKTsKIH0KIAogYm9vbCBXZWJHcmFwaGljc0xheWVyOjpzZXRDaGlsZHJl
bihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZHJlbikKQEAgLTExNiw3ICsxMTYs
NyBAQCBib29sIFdlYkdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFw
aGljc0xheWVyKj4mIGNoaWxkcmVuKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBjaGlsZHJlbi5zaXplKCk7ICsraSkgewogICAgICAgICBXZWJHcmFwaGlj
c0xheWVyKiBjaGlsZCA9IHRvV2ViR3JhcGhpY3NMYXllcihjaGlsZHJlbltpXSk7Ci0gICAgICAg
IGNoaWxkLT5zZXRWaXNpYmxlQ29udGVudFJlY3RBbmRTY2FsZShtX3BhZ2VWaXNpYmxlUmVjdCwg
bV9jb250ZW50c1NjYWxlKTsKKyAgICAgICAgY2hpbGQtPnNldFdlYkdyYXBoaWNzTGF5ZXJDbGll
bnQobV93ZWJHcmFwaGljc0xheWVyQ2xpZW50KTsKICAgICAgICAgY2hpbGQtPm5vdGlmeUNoYW5n
ZSgpOwogICAgIH0KICAgICBub3RpZnlDaGFuZ2UoKTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBib29s
IFdlYkdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVy
Kj4mIGNoaWxkcmVuKQogdm9pZCBXZWJHcmFwaGljc0xheWVyOjphZGRDaGlsZChHcmFwaGljc0xh
eWVyKiBsYXllcikKIHsKICAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZChsYXllcik7Ci0gICAg
dG9XZWJHcmFwaGljc0xheWVyKGxheWVyKS0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUo
bV9wYWdlVmlzaWJsZVJlY3QsIG1fY29udGVudHNTY2FsZSk7CisgICAgdG9XZWJHcmFwaGljc0xh
eWVyKGxheWVyKS0+c2V0V2ViR3JhcGhpY3NMYXllckNsaWVudChtX3dlYkdyYXBoaWNzTGF5ZXJD
bGllbnQpOwogICAgIHRvV2ViR3JhcGhpY3NMYXllcihsYXllciktPm5vdGlmeUNoYW5nZSgpOwog
ICAgIG5vdGlmeUNoYW5nZSgpOwogfQpAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgV2ViR3JhcGhp
Y3NMYXllcjo6YWRkQ2hpbGQoR3JhcGhpY3NMYXllciogbGF5ZXIpCiB2b2lkIFdlYkdyYXBoaWNz
TGF5ZXI6OmFkZENoaWxkQXRJbmRleChHcmFwaGljc0xheWVyKiBsYXllciwgaW50IGluZGV4KQog
ewogICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQXRJbmRleChsYXllciwgaW5kZXgpOwotICAg
IHRvV2ViR3JhcGhpY3NMYXllcihsYXllciktPnNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxl
KG1fcGFnZVZpc2libGVSZWN0LCBtX2NvbnRlbnRzU2NhbGUpOworICAgIHRvV2ViR3JhcGhpY3NM
YXllcihsYXllciktPnNldFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQobV93ZWJHcmFwaGljc0xheWVy
Q2xpZW50KTsKICAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5ub3RpZnlDaGFuZ2UoKTsK
ICAgICBub3RpZnlDaGFuZ2UoKTsKIH0KQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFdlYkdyYXBo
aWNzTGF5ZXI6OmFkZENoaWxkQXRJbmRleChHcmFwaGljc0xheWVyKiBsYXllciwgaW50IGluZGV4
KQogdm9pZCBXZWJHcmFwaGljc0xheWVyOjphZGRDaGlsZEFib3ZlKEdyYXBoaWNzTGF5ZXIqIGxh
eWVyLCBHcmFwaGljc0xheWVyKiBzaWJsaW5nKQogewogICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENo
aWxkQWJvdmUobGF5ZXIsIHNpYmxpbmcpOwotICAgIHRvV2ViR3JhcGhpY3NMYXllcihsYXllcikt
PnNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlKG1fcGFnZVZpc2libGVSZWN0LCBtX2NvbnRl
bnRzU2NhbGUpOworICAgIHRvV2ViR3JhcGhpY3NMYXllcihsYXllciktPnNldFdlYkdyYXBoaWNz
TGF5ZXJDbGllbnQobV93ZWJHcmFwaGljc0xheWVyQ2xpZW50KTsKICAgICB0b1dlYkdyYXBoaWNz
TGF5ZXIobGF5ZXIpLT5ub3RpZnlDaGFuZ2UoKTsKICAgICBub3RpZnlDaGFuZ2UoKTsKIH0KQEAg
LTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQWJvdmUoR3Jh
cGhpY3NMYXllciogbGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNpYmxpbgogdm9pZCBXZWJHcmFwaGlj
c0xheWVyOjphZGRDaGlsZEJlbG93KEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBHcmFwaGljc0xheWVy
KiBzaWJsaW5nKQogewogICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQmVsb3cobGF5ZXIsIHNp
YmxpbmcpOwotICAgIHRvV2ViR3JhcGhpY3NMYXllcihsYXllciktPnNldFZpc2libGVDb250ZW50
UmVjdEFuZFNjYWxlKG1fcGFnZVZpc2libGVSZWN0LCBtX2NvbnRlbnRzU2NhbGUpOworICAgIHRv
V2ViR3JhcGhpY3NMYXllcihsYXllciktPnNldFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQobV93ZWJH
cmFwaGljc0xheWVyQ2xpZW50KTsKICAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5ub3Rp
ZnlDaGFuZ2UoKTsKICAgICBub3RpZnlDaGFuZ2UoKTsKIH0KQEAgLTE2Miw4ICsxNjIsNyBAQCBi
b29sIFdlYkdyYXBoaWNzTGF5ZXI6OnJlcGxhY2VDaGlsZChHcmFwaGljc0xheWVyKiBvbGRDaGls
ZCwgR3JhcGhpY3NMYXllciogbmV3QwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbm90aWZ5
Q2hhbmdlKCk7CiAgICAgdG9XZWJHcmFwaGljc0xheWVyKG9sZENoaWxkKS0+bm90aWZ5Q2hhbmdl
KCk7Ci0gICAgdG9XZWJHcmFwaGljc0xheWVyKG9sZENoaWxkKS0+c2V0TGF5ZXJUcmVlVGlsZUNs
aWVudCgwKTsKLSAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobmV3Q2hpbGQpLT5zZXRWaXNpYmxlQ29u
dGVudFJlY3RBbmRTY2FsZShtX3BhZ2VWaXNpYmxlUmVjdCwgbV9jb250ZW50c1NjYWxlKTsKKyAg
ICB0b1dlYkdyYXBoaWNzTGF5ZXIobmV3Q2hpbGQpLT5zZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50
KG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCk7CiAgICAgdG9XZWJHcmFwaGljc0xheWVyKG5ld0No
aWxkKS0+bm90aWZ5Q2hhbmdlKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xNzUsNyArMTc0
LDYgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjpyZW1vdmVGcm9tUGFyZW50KCkKICAgICBHcmFw
aGljc0xheWVyOjpyZW1vdmVGcm9tUGFyZW50KCk7CiAKICAgICBub3RpZnlDaGFuZ2UoKTsKLSAg
ICBzZXRMYXllclRyZWVUaWxlQ2xpZW50KDApOwogfQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6
OnNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHApCkBAIC0zNDcsMTcgKzM0NSwxNiBAQCB2
b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7
CiAgICAgaWYgKGltYWdlID09IG1faW1hZ2UpCiAgICAgICAgIHJldHVybjsKLSAgICBXZWJMYXll
clRyZWVUaWxlQ2xpZW50KiBjbGllbnQgPSBsYXllclRyZWVUaWxlQ2xpZW50KCk7CiAgICAgaW50
NjRfdCBuZXdJRCA9IDA7Ci0gICAgaWYgKGNsaWVudCkgeworICAgIGlmIChtX3dlYkdyYXBoaWNz
TGF5ZXJDbGllbnQpIHsKICAgICAgICAgLy8gV2UgYWRvcHQgZmlyc3QsIGluIGNhc2UgdGhpcyBp
cyB0aGUgc2FtZSBmcmFtZSAtIHRoYXQgd2F5IHdlIGF2b2lkIGRlc3Ryb3lpbmcgYW5kIHJlY3Jl
YXRpbmcgdGhlIGltYWdlLgotICAgICAgICBuZXdJRCA9IGNsaWVudC0+YWRvcHRJbWFnZUJhY2tp
bmdTdG9yZShpbWFnZSk7Ci0gICAgICAgIGNsaWVudC0+cmVsZWFzZUltYWdlQmFja2luZ1N0b3Jl
KG1fbGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0b3JlSUQpOworICAgICAgICBuZXdJRCA9IG1fd2Vi
R3JhcGhpY3NMYXllckNsaWVudC0+YWRvcHRJbWFnZUJhY2tpbmdTdG9yZShpbWFnZSk7CisgICAg
ICAgIG1fd2ViR3JhcGhpY3NMYXllckNsaWVudC0+cmVsZWFzZUltYWdlQmFja2luZ1N0b3JlKG1f
bGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0b3JlSUQpOwogICAgICAgICBub3RpZnlDaGFuZ2UoKTsK
ICAgICAgICAgaWYgKG1fbGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0b3JlSUQgJiYgbmV3SUQgPT0g
bV9sYXllckluZm8uaW1hZ2VCYWNraW5nU3RvcmVJRCkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICB9IGVsc2UgewotICAgICAgICAvLyBJZiBjbGllbnQgbm90IHNldCB5ZXQgdGhlcmUgc2hvdWxk
IGJlIG5vIGJhY2tpbmcgc3RvcmUgSUQuCisgICAgICAgIC8vIElmIG1fd2ViR3JhcGhpY3NMYXll
ckNsaWVudCBpcyBub3Qgc2V0IHlldCB0aGVyZSBzaG91bGQgYmUgbm8gYmFja2luZyBzdG9yZSBJ
RC4KICAgICAgICAgQVNTRVJUKCFtX2xheWVySW5mby5pbWFnZUJhY2tpbmdTdG9yZUlEKTsKICAg
ICAgICAgbm90aWZ5Q2hhbmdlKCk7CiAgICAgfQpAQCAtMzgwLDkgKzM3Nyw4IEBAIHZvaWQgV2Vi
R3JhcGhpY3NMYXllcjo6c2V0TWFza0xheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogCiAgICAg
bGF5ZXItPnNldFNpemUoc2l6ZSgpKTsKICAgICBXZWJHcmFwaGljc0xheWVyKiB3ZWJHcmFwaGlj
c0xheWVyID0gdG9XZWJHcmFwaGljc0xheWVyKGxheWVyKTsKLSAgICB3ZWJHcmFwaGljc0xheWVy
LT5zZXRMYXllclRyZWVUaWxlQ2xpZW50KGxheWVyVHJlZVRpbGVDbGllbnQoKSk7CisgICAgd2Vi
R3JhcGhpY3NMYXllci0+c2V0V2ViR3JhcGhpY3NMYXllckNsaWVudChtX3dlYkdyYXBoaWNzTGF5
ZXJDbGllbnQpOwogICAgIHdlYkdyYXBoaWNzTGF5ZXItPnNldE1hc2tUYXJnZXQodGhpcyk7Ci0g
ICAgd2ViR3JhcGhpY3NMYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUobV9wYWdl
VmlzaWJsZVJlY3QsIG1fY29udGVudHNTY2FsZSk7CiAgICAgd2ViR3JhcGhpY3NMYXllci0+bm90
aWZ5Q2hhbmdlKCk7CiAgICAgbm90aWZ5Q2hhbmdlKCk7CiAKQEAgLTM5NCw3ICszOTAsNyBAQCB2
b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKEdyYXBoaWNzTGF5ZXIq
IGxheWVyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobGF5ZXIpCi0gICAgICAgIHRvV2Vi
R3JhcGhpY3NMYXllcihsYXllciktPnNldExheWVyVHJlZVRpbGVDbGllbnQobGF5ZXJUcmVlVGls
ZUNsaWVudCgpKTsKKyAgICAgICAgdG9XZWJHcmFwaGljc0xheWVyKGxheWVyKS0+c2V0V2ViR3Jh
cGhpY3NMYXllckNsaWVudChtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQpOwogCiAgICAgR3JhcGhp
Y3NMYXllcjo6c2V0UmVwbGljYXRlZEJ5TGF5ZXIobGF5ZXIpOwogICAgIG5vdGlmeUNoYW5nZSgp
OwpAQCAtNDM4LDkgKzQzNCw2IEBAIFdlYkdyYXBoaWNzTGF5ZXIqIHRvV2ViR3JhcGhpY3NMYXll
cihHcmFwaGljc0xheWVyKiBsYXllcikKIAogdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzeW5jQ29t
cG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogewotICAgIGlmICghbV9sYXllclRyZWVU
aWxlQ2xpZW50KQotICAgICAgICBtX2xheWVyVHJlZVRpbGVDbGllbnQgPSBsYXllclRyZWVUaWxl
Q2xpZW50KCk7Ci0KICAgICB1cGRhdGVDb250ZW50QnVmZmVycygpOwogCiAgICAgaWYgKCFtX21v
ZGlmaWVkKQpAQCAtNDY5LDExICs0NjIsMTEgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzeW5j
Q29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY2hpbGRyZW4oKS5zaXplKCk7ICsraSkKICAgICAgICAgbV9sYXllckluZm8uY2hpbGRy
ZW4uYXBwZW5kKHRvV2ViTGF5ZXJJRChjaGlsZHJlbigpW2ldKSk7CiAKLSAgICBBU1NFUlQobV9s
YXllclRyZWVUaWxlQ2xpZW50KTsKKyAgICBBU1NFUlQobV93ZWJHcmFwaGljc0xheWVyQ2xpZW50
KTsKICAgICBpZiAobV9sYXllckluZm8uaW1hZ2VJc1VwZGF0ZWQgJiYgbV9pbWFnZSAmJiAhbV9s
YXllckluZm8uaW1hZ2VCYWNraW5nU3RvcmVJRCkKLSAgICAgICAgbV9sYXllckluZm8uaW1hZ2VC
YWNraW5nU3RvcmVJRCA9IG1fbGF5ZXJUcmVlVGlsZUNsaWVudC0+YWRvcHRJbWFnZUJhY2tpbmdT
dG9yZShtX2ltYWdlLmdldCgpKTsKKyAgICAgICAgbV9sYXllckluZm8uaW1hZ2VCYWNraW5nU3Rv
cmVJRCA9IG1fd2ViR3JhcGhpY3NMYXllckNsaWVudC0+YWRvcHRJbWFnZUJhY2tpbmdTdG9yZSht
X2ltYWdlLmdldCgpKTsKIAotICAgIG1fbGF5ZXJUcmVlVGlsZUNsaWVudC0+ZGlkU3luY0NvbXBv
c2l0aW5nU3RhdGVGb3JMYXllcihtX2xheWVySW5mbyk7CisgICAgbV93ZWJHcmFwaGljc0xheWVy
Q2xpZW50LT5kaWRTeW5jQ29tcG9zaXRpbmdTdGF0ZUZvckxheWVyKG1fbGF5ZXJJbmZvKTsKICAg
ICBtX21vZGlmaWVkID0gZmFsc2U7CiAgICAgbV9sYXllckluZm8uaW1hZ2VJc1VwZGF0ZWQgPSBm
YWxzZTsKICAgICBpZiAobV9oYXNQZW5kaW5nQW5pbWF0aW9ucykKQEAgLTUxMiwxMSArNTA1LDYg
QEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzZXRWaXNpYmxlQ29udGVudFJlY3RBbmRTY2FsZShj
b25zdCBJbnRSZWN0JiBwYWdlVmlzaWJsZVIKICAgICAgICAgbV9tYWluQmFja2luZ1N0b3JlLT5z
ZXRDb250ZW50c1NjYWxlKHNjYWxlKTsKICAgICB9IGVsc2UKICAgICAgICAgbV9tYWluQmFja2lu
Z1N0b3JlLT5hZGp1c3RWaXNpYmxlUmVjdCgpOwotCi0gICAgaWYgKG1hc2tMYXllcigpKQotICAg
ICAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobWFza0xheWVyKCkpLT5zZXRWaXNpYmxlQ29udGVudFJl
Y3RBbmRTY2FsZShwYWdlVmlzaWJsZVJlY3QsIHNjYWxlKTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGNoaWxkcmVuKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIHRvV2ViR3JhcGhpY3NMYXll
cihjaGlsZHJlbigpW2ldKS0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUocGFnZVZpc2li
bGVSZWN0LCBzY2FsZSk7CiB9CiAKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5n
U3RvcmVQYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3Qp
CkBAIC01MzUsOSArNTIzLDcgQEAgYm9vbCBXZWJHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdT
dG9yZVVwZGF0ZXNBbGxvd2VkKCkgY29uc3QKIHsKICAgICBpZiAoIW1faW5VcGRhdGVNb2RlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKFdlYkxheWVyVHJlZVRpbGVDbGllbnQqIGNs
aWVudCA9IGxheWVyVHJlZVRpbGVDbGllbnQoKSkKLSAgICAgICAgcmV0dXJuIGNsaWVudC0+bGF5
ZXJUcmVlVGlsZVVwZGF0ZXNBbGxvd2VkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biBtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQtPmxheWVyVHJlZVRpbGVVcGRhdGVzQWxsb3dlZCgp
OwogfQogCiBJbnRSZWN0IFdlYkdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlQ29udGVu
dHNSZWN0KCkKQEAgLTU3MiwyMiArNTU4LDE5IEBAIENvbG9yIFdlYkdyYXBoaWNzTGF5ZXI6OnRp
bGVkQmFja2luZ1N0b3JlQmFja2dyb3VuZENvbG9yKCkgY29uc3QKIHZvaWQgV2ViR3JhcGhpY3NM
YXllcjo6Y3JlYXRlVGlsZShpbnQgdGlsZUlELCBjb25zdCBVcGRhdGVJbmZvJiB1cGRhdGVJbmZv
KQogewogICAgIG1fbW9kaWZpZWQgPSB0cnVlOwotICAgIGlmIChXZWJMYXllclRyZWVUaWxlQ2xp
ZW50KiBjbGllbnQgPSBsYXllclRyZWVUaWxlQ2xpZW50KCkpCi0gICAgICAgIGNsaWVudC0+Y3Jl
YXRlVGlsZShpZCgpLCB0aWxlSUQsIHVwZGF0ZUluZm8pOworICAgIG1fd2ViR3JhcGhpY3NMYXll
ckNsaWVudC0+Y3JlYXRlVGlsZShpZCgpLCB0aWxlSUQsIHVwZGF0ZUluZm8pOwogfQogCiB2b2lk
IFdlYkdyYXBoaWNzTGF5ZXI6OnVwZGF0ZVRpbGUoaW50IHRpbGVJRCwgY29uc3QgVXBkYXRlSW5m
byYgdXBkYXRlSW5mbykKIHsKICAgICBtX21vZGlmaWVkID0gdHJ1ZTsKLSAgICBpZiAoV2ViTGF5
ZXJUcmVlVGlsZUNsaWVudCogY2xpZW50ID0gbGF5ZXJUcmVlVGlsZUNsaWVudCgpKQotICAgICAg
ICBjbGllbnQtPnVwZGF0ZVRpbGUoaWQoKSwgdGlsZUlELCB1cGRhdGVJbmZvKTsKKyAgICBtX3dl
YkdyYXBoaWNzTGF5ZXJDbGllbnQtPnVwZGF0ZVRpbGUoaWQoKSwgdGlsZUlELCB1cGRhdGVJbmZv
KTsKIH0KIAogdm9pZCBXZWJHcmFwaGljc0xheWVyOjpyZW1vdmVUaWxlKGludCB0aWxlSUQpCiB7
CiAgICAgbV9tb2RpZmllZCA9IHRydWU7Ci0gICAgaWYgKFdlYkxheWVyVHJlZVRpbGVDbGllbnQq
IGNsaWVudCA9IGxheWVyVHJlZVRpbGVDbGllbnQoKSkKLSAgICAgICAgY2xpZW50LT5yZW1vdmVU
aWxlKGlkKCksIHRpbGVJRCk7CisgICAgbV93ZWJHcmFwaGljc0xheWVyQ2xpZW50LT5yZW1vdmVU
aWxlKGlkKCksIHRpbGVJRCk7CiB9CiAKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6dXBkYXRlVGls
ZUJ1ZmZlcnNSZWN1cnNpdmVseSgpCkBAIC02MDIsMjMgKzU4NSw2IEBAIHZvaWQgV2ViR3JhcGhp
Y3NMYXllcjo6dXBkYXRlVGlsZUJ1ZmZlcnNSZWN1cnNpdmVseSgpCiAgICAgICAgIG1hc2stPnVw
ZGF0ZVRpbGVCdWZmZXJzUmVjdXJzaXZlbHkoKTsKIH0KIAotV2ViTGF5ZXJUcmVlVGlsZUNsaWVu
dCogV2ViR3JhcGhpY3NMYXllcjo6bGF5ZXJUcmVlVGlsZUNsaWVudCgpIGNvbnN0Ci17Ci0gICAg
aWYgKG1fbGF5ZXJUcmVlVGlsZUNsaWVudCkKLSAgICAgICAgcmV0dXJuIG1fbGF5ZXJUcmVlVGls
ZUNsaWVudDsKLSAgICBXZWJHcmFwaGljc0xheWVyKiBwYXJlbnQ7Ci0gICAgaWYgKHRoaXMtPnJl
cGxpY2F0ZWRMYXllcigpKQotICAgICAgICBwYXJlbnQgPSB0b1dlYkdyYXBoaWNzTGF5ZXIodGhp
cy0+cmVwbGljYXRlZExheWVyKCkpOwotICAgIGVsc2UgaWYgKHRoaXMtPm1hc2tUYXJnZXQoKSkK
LSAgICAgICAgcGFyZW50ID0gdG9XZWJHcmFwaGljc0xheWVyKHRoaXMtPm1hc2tUYXJnZXQoKSk7
Ci0gICAgZWxzZQotICAgICAgICBwYXJlbnQgPSB0b1dlYkdyYXBoaWNzTGF5ZXIodGhpcy0+cGFy
ZW50KCkpOwotCi0gICAgaWYgKCFwYXJlbnQpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVy
biBwYXJlbnQtPmxheWVyVHJlZVRpbGVDbGllbnQoKTsKLX0KLQogdm9pZCBXZWJHcmFwaGljc0xh
eWVyOjp1cGRhdGVDb250ZW50QnVmZmVycygpCiB7CiAgICAgLy8gQmFja2luZy1zdG9yZXMgZm9y
IGRpcmVjdGx5IGNvbXBvc2l0ZWQgaW1hZ2VzIGlzIGhhbmRsZWQgaW4gTGF5ZXJUcmVlSG9zdC4K
QEAgLTYyNyw5ICs1OTMsNyBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRC
dWZmZXJzKCkKIAogICAgIGlmICghZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBXZWJMYXllclRyZWVUaWxlQ2xpZW50KiBjbGllbnQgPSBsYXllclRyZWVUaWxlQ2xpZW50KCk7
Ci0gICAgaWYgKCFjbGllbnQpCi0gICAgICAgIHJldHVybjsKKwogICAgIG1faW5VcGRhdGVNb2Rl
ID0gdHJ1ZTsKICAgICBtX21haW5CYWNraW5nU3RvcmUtPnVwZGF0ZVRpbGVCdWZmZXJzKCk7CiAg
ICAgbV9pblVwZGF0ZU1vZGUgPSBmYWxzZTsKQEAgLTY1MSw3ICs2MTUsNyBAQCB2b2lkIFdlYkdy
YXBoaWNzTGF5ZXI6OnB1cmdlQmFja2luZ1N0b3JlcygpCiAgICAgaWYgKCFtX2xheWVySW5mby5p
bWFnZUJhY2tpbmdTdG9yZUlEKQogICAgICAgICByZXR1cm47CiAKLSAgICBsYXllclRyZWVUaWxl
Q2xpZW50KCktPnJlbGVhc2VJbWFnZUJhY2tpbmdTdG9yZShtX2xheWVySW5mby5pbWFnZUJhY2tp
bmdTdG9yZUlEKTsKKyAgICBtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQtPnJlbGVhc2VJbWFnZUJh
Y2tpbmdTdG9yZShtX2xheWVySW5mby5pbWFnZUJhY2tpbmdTdG9yZUlEKTsKICAgICBtX2xheWVy
SW5mby5pbWFnZUJhY2tpbmdTdG9yZUlEID0gMDsKIH0KIApAQCAtNjczLDI0ICs2MzcsMjYgQEAg
dm9pZCBXZWJHcmFwaGljc0xheWVyOjpyZWNyZWF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCkKICAg
ICAgICAgc2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKTsKIH0KIAotdm9pZCBXZWJHcmFwaGljc0xh
eWVyOjpzZXRMYXllclRyZWVUaWxlQ2xpZW50KFdlYktpdDo6V2ViTGF5ZXJUcmVlVGlsZUNsaWVu
dCogY2xpZW50KQordm9pZCBXZWJHcmFwaGljc0xheWVyOjpzZXRXZWJHcmFwaGljc0xheWVyQ2xp
ZW50KFdlYktpdDo6V2ViR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQogewotICAgIGlmICht
X2xheWVyVHJlZVRpbGVDbGllbnQgPT0gY2xpZW50KQorICAgIGlmIChtX3dlYkdyYXBoaWNzTGF5
ZXJDbGllbnQgPT0gY2xpZW50KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoV2ViR3JhcGhp
Y3NMYXllciogcmVwbGljYSA9IHRvV2ViR3JhcGhpY3NMYXllcihyZXBsaWNhTGF5ZXIoKSkpCi0g
ICAgICAgIHJlcGxpY2EtPnNldExheWVyVHJlZVRpbGVDbGllbnQoY2xpZW50KTsKKyAgICAgICAg
cmVwbGljYS0+c2V0V2ViR3JhcGhpY3NMYXllckNsaWVudChjbGllbnQpOwogICAgIGlmIChXZWJH
cmFwaGljc0xheWVyKiBtYXNrID0gdG9XZWJHcmFwaGljc0xheWVyKG1hc2tMYXllcigpKSkKLSAg
ICAgICAgbWFzay0+c2V0TGF5ZXJUcmVlVGlsZUNsaWVudChjbGllbnQpOworICAgICAgICBtYXNr
LT5zZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50KGNsaWVudCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjaGlsZHJlbigpLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFdlYkdyYXBoaWNzTGF5
ZXIqIGxheWVyID0gdG9XZWJHcmFwaGljc0xheWVyKHRoaXMtPmNoaWxkcmVuKClbaV0pOwotICAg
ICAgICBsYXllci0+c2V0TGF5ZXJUcmVlVGlsZUNsaWVudChjbGllbnQpOworICAgICAgICBsYXll
ci0+c2V0V2ViR3JhcGhpY3NMYXllckNsaWVudChjbGllbnQpOwogICAgIH0KIAogICAgIC8vIEhh
dmUgdG8gZm9yY2UgZGV0YWNoIGZyb20gcmVtb3RlIGxheWVyIGhlcmUgaWYgbGF5ZXIgdGlsZSBj
bGllbnQgY2hhbmdlcy4KLSAgICBpZiAobV9sYXllclRyZWVUaWxlQ2xpZW50KQotICAgICAgICBt
X2xheWVyVHJlZVRpbGVDbGllbnQtPmRpZERlbGV0ZUxheWVyKGlkKCkpOwotICAgIG1fbGF5ZXJU
cmVlVGlsZUNsaWVudCA9IGNsaWVudDsKKyAgICBpZiAobV93ZWJHcmFwaGljc0xheWVyQ2xpZW50
KQorICAgICAgICBtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQtPnJlbGVhc2VMYXllcih0aGlzKTsK
KyAgICBtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQgPSBjbGllbnQ7CisgICAgaWYgKGNsaWVudCkK
KyAgICAgICAgY2xpZW50LT5yZWdpc3RlckxheWVyKHRoaXMpOwogfQogCiB2b2lkIFdlYkdyYXBo
aWNzTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1lZFZpc2libGVSZWN0KCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xh
eWVyLmgKaW5kZXggMGI1MDc2M2I3ZDVlNzhlZjg3YTQ1Y2Q5ODM5YWJlNmNiODM1NjUxMi4uYjdi
YzgzN2I2ZWUyYjQ2ODU4MzdiYjU5NjMwOTI4YjkwODY2N2NjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xh
eWVyLmgKQEAgLTM5LDE5ICszOSwyNSBAQAogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBXZWJHcmFwaGljc0xheWVyOworfQor
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViTGF5ZXJUcmVlVGlsZUNsaWVudCB7Citj
bGFzcyBXZWJHcmFwaGljc0xheWVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICAvLyBUaWxlZEJhY2tp
bmdTdG9yZVJlbW90ZVRpbGVDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGlsZShXZWJM
YXllcklELCBpbnQgdGlsZUlELCBjb25zdCBVcGRhdGVJbmZvJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVUaWxlKFdlYkxheWVySUQsIGludCB0aWxlSUQsIGNvbnN0IFVwZGF0ZUluZm8m
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVRpbGUoV2ViTGF5ZXJJRCwgaW50IHRpbGVJ
RCkgPSAwOworCiAgICAgdmlydHVhbCBib29sIGxheWVyVHJlZVRpbGVVcGRhdGVzQWxsb3dlZCgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3QgYWRvcHRJbWFnZUJhY2tpbmdTdG9yZShX
ZWJDb3JlOjpJbWFnZSopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZUltYWdlQmFja2lu
Z1N0b3JlKGludDY0X3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3luY0NvbXBvc2l0aW5n
U3RhdGVGb3JMYXllcihjb25zdCBXZWJMYXllckluZm8mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZERlbGV0ZUxheWVyKFdlYkxheWVySUQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0
ZXJMYXllcihXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyKikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCByZWxlYXNlTGF5ZXIoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllciopID0gMDsKIH07CiB9CiAK
QEAgLTEyOSw4ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRpbGUo
aW50IHRpbGVJRCwgY29uc3QgV2ViS2l0OjpVcGRhdGVJbmZvJik7CiAgICAgdmlydHVhbCB2b2lk
IHJlbW92ZVRpbGUoaW50IHRpbGVJRCk7CiAKLSAgICB2b2lkIHNldExheWVyVHJlZVRpbGVDbGll
bnQoV2ViS2l0OjpXZWJMYXllclRyZWVUaWxlQ2xpZW50Kik7Ci0gICAgV2ViS2l0OjpXZWJMYXll
clRyZWVUaWxlQ2xpZW50KiBsYXllclRyZWVUaWxlQ2xpZW50KCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50KFdlYktpdDo6V2ViR3JhcGhpY3NMYXllckNsaWVudCop
OwogCiAgICAgYm9vbCBpc1JlYWR5Rm9yVGlsZUJ1ZmZlclN3YXAoKSBjb25zdDsKICAgICB2b2lk
IHVwZGF0ZVRpbGVCdWZmZXJzUmVjdXJzaXZlbHkoKTsKQEAgLTE2MSw3ICsxNjYsNyBAQCBwcml2
YXRlOgogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIHZvaWQgY29tcHV0ZVRyYW5z
Zm9ybWVkVmlzaWJsZVJlY3QoKTsKIAotICAgIFdlYktpdDo6V2ViTGF5ZXJUcmVlVGlsZUNsaWVu
dCogbV9sYXllclRyZWVUaWxlQ2xpZW50OworICAgIFdlYktpdDo6V2ViR3JhcGhpY3NMYXllckNs
aWVudCogbV93ZWJHcmFwaGljc0xheWVyQ2xpZW50OwogICAgIE93blB0cjxXZWJDb3JlOjpUaWxl
ZEJhY2tpbmdTdG9yZT4gbV9tYWluQmFja2luZ1N0b3JlOwogICAgIE93blB0cjxXZWJDb3JlOjpU
aWxlZEJhY2tpbmdTdG9yZT4gbV9wcmV2aW91c0JhY2tpbmdTdG9yZTsKICAgICBmbG9hdCBtX2Nv
bnRlbnRzU2NhbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvcXQvTGF5ZXJUcmVlSG9zdFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9xdC9MYXllclRyZWVIb3N0UXQuY3BwCmluZGV4IGZjMWU4NWIyMWJmY2MzZDQyYWVmNzQw
NTY4NDBiMDYzMjM1ZGNlZmUuLjE3M2FjNTk4NGVkOTA3YmZhOGRkZGVmZGI2MjI5YmNhOWI5ZTQ4
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXll
clRyZWVIb3N0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9x
dC9MYXllclRyZWVIb3N0UXQuY3BwCkBAIC01Miw4ICs1MiwxMyBAQCBQYXNzUmVmUHRyPExheWVy
VHJlZUhvc3RRdD4gTGF5ZXJUcmVlSG9zdFF0OjpjcmVhdGUoV2ViUGFnZSogd2ViUGFnZSkKIAog
TGF5ZXJUcmVlSG9zdFF0Ojp+TGF5ZXJUcmVlSG9zdFF0KCkKIHsKLSAgICBpZiAobV9yb290TGF5
ZXIpCi0gICAgICAgIHRvV2ViR3JhcGhpY3NMYXllcihtX3Jvb3RMYXllci5nZXQoKSktPnNldExh
eWVyVHJlZVRpbGVDbGllbnQoMCk7CisgICAgLy8gUHJldmVudCBzZXRXZWJHcmFwaGljc0xheWVy
Q2xpZW50KDApIC0+IHJlbGVhc2VMYXllcigpIGZyb20gbW9kaWZ5aW5nIHRoZSBzZXQgd2hpbGUg
d2UgaXRlcmF0ZSBpdC4KKyAgICBIYXNoU2V0PFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXIqPiBy
ZWdpc3RlcmVkTGF5ZXJzOworICAgIHJlZ2lzdGVyZWRMYXllcnMuc3dhcChtX3JlZ2lzdGVyZWRM
YXllcnMpOworCisgICAgSGFzaFNldDxXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyKj46Oml0ZXJh
dG9yIGVuZCA9IHJlZ2lzdGVyZWRMYXllcnMuZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PFdlYkNv
cmU6OldlYkdyYXBoaWNzTGF5ZXIqPjo6aXRlcmF0b3IgaXRlciA9IHJlZ2lzdGVyZWRMYXllcnMu
YmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKKyAgICAgICAgKCppdGVyKS0+c2V0V2ViR3Jh
cGhpY3NMYXllckNsaWVudCgwKTsKIH0KIAogTGF5ZXJUcmVlSG9zdFF0OjpMYXllclRyZWVIb3N0
UXQoV2ViUGFnZSogd2ViUGFnZSkKQEAgLTYzLDYgKzY4LDcgQEAgTGF5ZXJUcmVlSG9zdFF0OjpM
YXllclRyZWVIb3N0UXQoV2ViUGFnZSogd2ViUGFnZSkKICNpZiBVU0UoVElMRURfQkFDS0lOR19T
VE9SRSkKICAgICAsIG1fd2FpdGluZ0ZvclVJUHJvY2VzcyhmYWxzZSkKICAgICAsIG1faXNTdXNw
ZW5kZWQoZmFsc2UpCisgICAgLCBtX2NvbnRlbnRzU2NhbGUoMSkKICNlbmRpZgogICAgICwgbV9z
aG91bGRTeW5jRnJhbWUoZmFsc2UpCiAgICAgLCBtX3Nob3VsZFN5bmNSb290TGF5ZXIodHJ1ZSkK
QEAgLTgzLDcgKzg5LDcgQEAgTGF5ZXJUcmVlSG9zdFF0OjpMYXllclRyZWVIb3N0UXQoV2ViUGFn
ZSogd2ViUGFnZSkKIAogICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllciA9IEdyYXBoaWNz
TGF5ZXI6OmNyZWF0ZSh0aGlzKTsKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICB0
b1dlYkdyYXBoaWNzTGF5ZXIobV9yb290TGF5ZXIuZ2V0KCkpLT5zZXRMYXllclRyZWVUaWxlQ2xp
ZW50KHRoaXMpOworICAgIHRvV2ViR3JhcGhpY3NMYXllcihtX3Jvb3RMYXllci5nZXQoKSktPnNl
dFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQodGhpcyk7CiAjZW5kaWYKICNpZm5kZWYgTkRFQlVHCiAg
ICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXROYW1lKCJMYXllclRyZWVIb3N0UXQg
bm9uLWNvbXBvc2l0ZWQgY29udGVudCIpOwpAQCAtMjMyLDEwICsyMzgsMTkgQEAgdm9pZCBMYXll
clRyZWVIb3N0UXQ6OmRpZFN5bmNDb21wb3NpdGluZ1N0YXRlRm9yTGF5ZXIoY29uc3QgV2ViTGF5
ZXJJbmZvJiBpbmZvKQogICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlSG9z
dFByb3h5OjpTeW5jQ29tcG9zaXRpbmdMYXllclN0YXRlKGluZm8pKTsKIH0KIAotdm9pZCBMYXll
clRyZWVIb3N0UXQ6OmRpZERlbGV0ZUxheWVyKFdlYkxheWVySUQgaWQpCit2b2lkIExheWVyVHJl
ZUhvc3RRdDo6cmVnaXN0ZXJMYXllcihXZWJHcmFwaGljc0xheWVyKiBsYXllcikKK3sKKyAgICBB
U1NFUlQoIW1fcmVnaXN0ZXJlZExheWVycy5jb250YWlucyhsYXllcikpOworICAgIG1fcmVnaXN0
ZXJlZExheWVycy5hZGQobGF5ZXIpOworCisgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVj
dEFuZFNjYWxlKG1fdmlzaWJsZUNvbnRlbnRzUmVjdCwgbV9jb250ZW50c1NjYWxlKTsKK30KKwor
dm9pZCBMYXllclRyZWVIb3N0UXQ6OnJlbGVhc2VMYXllcihXZWJHcmFwaGljc0xheWVyKiBsYXll
cikKIHsKKyAgICBtX3JlZ2lzdGVyZWRMYXllcnMucmVtb3ZlKGxheWVyKTsKICAgICBtX3Nob3Vs
ZFN5bmNGcmFtZSA9IHRydWU7Ci0gICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRy
ZWVIb3N0UHJveHk6OkRlbGV0ZUNvbXBvc2l0aW5nTGF5ZXIoaWQpKTsKKyAgICBtX3dlYlBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUhvc3RQcm94eTo6RGVsZXRlQ29tcG9zaXRpbmdMYXll
cihsYXllci0+aWQoKSkpOwogfQogCiB2b2lkIExheWVyVHJlZUhvc3RRdDo6cGVyZm9ybVNjaGVk
dWxlZExheWVyRmx1c2goKQpAQCAtNDAzLDEwICs0MTgsMTUgQEAgdm9pZCBMYXllclRyZWVIb3N0
UXQ6OnJlbW92ZVRpbGUoV2ViTGF5ZXJJRCBsYXllcklELCBpbnQgdGlsZUlEKQogCiB2b2lkIExh
eWVyVHJlZUhvc3RRdDo6c2V0VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUoY29uc3QgSW50UmVj
dCYgcmVjdCwgZmxvYXQgc2NhbGUpCiB7Ci0gICAgaWYgKG1fcm9vdExheWVyKSB7Ci0gICAgICAg
IHRvV2ViR3JhcGhpY3NMYXllcihtX3Jvb3RMYXllci5nZXQoKSktPnNldFZpc2libGVDb250ZW50
UmVjdEFuZFNjYWxlKHJlY3QsIHNjYWxlKTsKLSAgICAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7
Ci0gICAgfQorICAgIGlmIChyZWN0ID09IG1fdmlzaWJsZUNvbnRlbnRzUmVjdCAmJiBzY2FsZSA9
PSBtX2NvbnRlbnRzU2NhbGUpCisgICAgICAgIHJldHVybjsKKyAgICBtX3Zpc2libGVDb250ZW50
c1JlY3QgPSByZWN0OworICAgIG1fY29udGVudHNTY2FsZSA9IHNjYWxlOworCisgICAgSGFzaFNl
dDxXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyKj46Oml0ZXJhdG9yIGVuZCA9IG1fcmVnaXN0ZXJl
ZExheWVycy5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8V2ViQ29yZTo6V2ViR3JhcGhpY3NMYXll
cio+OjppdGVyYXRvciBpdGVyID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmJlZ2luKCk7IGl0ZXIgIT0g
ZW5kOyArK2l0ZXIpCisgICAgICAgICgqaXRlciktPnNldFZpc2libGVDb250ZW50UmVjdEFuZFNj
YWxlKHJlY3QsIHNjYWxlKTsKKyAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKIH0KIAogdm9pZCBM
YXllclRyZWVIb3N0UXQ6OnNldFZpc2libGVDb250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3IoY29u
c3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuaAppbmRleCAwN2YwNGU4
OGExYTQyMjJmYzkxNDFhZDdjODk0MGU0NDcyZjE1NGVhLi42ZjQzYzBmNWFjNjIxNzRmMmY3NTM5
YmMwZDYyZjczODUyOTAzYTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNz
IFdlYlBhZ2U7CiAKIGNsYXNzIExheWVyVHJlZUhvc3RRdCA6IHB1YmxpYyBMYXllclRyZWVIb3N0
LCBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xpZW50CiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RP
UkUpCi0gICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgV2ViTGF5ZXJUcmVlVGlsZUNsaWVu
dAorICAgICAgICAgICAgICAgICAgICAgICwgcHVibGljIFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQK
ICNlbmRpZgogewogcHVibGljOgpAQCAtNzUsNyArNzUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlKGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmLCBmbG9hdCBzY2FsZSk7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVDb250ZW50UmVj
dFRyYWplY3RvcnlWZWN0b3IoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRTeW5jQ29tcG9zaXRpbmdTdGF0ZUZvckxheWVyKGNvbnN0IFdlYkxheWVySW5m
byYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWREZWxldGVMYXllcihXZWJMYXllcklEKTsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVnaXN0ZXJMYXllcihXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyKik7Cisg
ICAgdmlydHVhbCB2b2lkIHJlbGVhc2VMYXllcihXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyKik7
CiAjZW5kaWYKIAogcHJvdGVjdGVkOgpAQCAtMTA2LDYgKzEwNyw3IEBAIHByaXZhdGU6CiAgICAg
Ly8gVGhlIHBhZ2Ugb3ZlcmxheSBsYXllci4gV2lsbCBiZSBudWxsIGlmIHRoZXJlJ3Mgbm8gcGFn
ZSBvdmVybGF5LgogICAgIE93blB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX3BhZ2VPdmVy
bGF5TGF5ZXI7CiAKKyAgICBIYXNoU2V0PFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXIqPiBtX3Jl
Z2lzdGVyZWRMYXllcnM7CiAgICAgSGFzaE1hcDxpbnQ2NF90LCBpbnQ+IG1fZGlyZWN0bHlDb21w
b3NpdGVkSW1hZ2VSZWZDb3VudHM7CiAKICAgICBib29sIG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRM
YXllckZsdXNoOwpAQCAtMTEzLDYgKzExNSw4IEBAIHByaXZhdGU6CiAjaWYgVVNFKFRJTEVEX0JB
Q0tJTkdfU1RPUkUpCiAgICAgYm9vbCBtX3dhaXRpbmdGb3JVSVByb2Nlc3M7CiAgICAgYm9vbCBt
X2lzU3VzcGVuZGVkOworICAgIFdlYkNvcmU6OkludFJlY3QgbV92aXNpYmxlQ29udGVudHNSZWN0
OworICAgIGZsb2F0IG1fY29udGVudHNTY2FsZTsKICNlbmRpZgogICAgIExheWVyVHJlZUNvbnRl
eHQgbV9sYXllclRyZWVDb250ZXh0OwogICAgIGJvb2wgbV9zaG91bGRTeW5jRnJhbWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126059</attachid>
            <date>2012-02-08 04:50:41 -0800</date>
            <delta_ts>2012-02-08 04:55:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77976-20120208134600.patch</filename>
            <type>text/plain</type>
            <size>22762</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2ODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTk3YTBjNzMwOTI1YzZm
YTZiZWUwODkxNGUwMjRhYzQwNWUzN2UyMi4uNzk0Yjk5MmY1MDM5ODBiNWU3MTAzODMxZTg4ZDMy
NjNhZWU3MGNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTAyLTA4ICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgW1F0
XSBSZWdpc3RlciBpbmRpdmlkdWFsIFdlYkdyYXBoaWNzTGF5ZXJzIHRvIExheWVyVHJlZUhvc3Qg
aW5zdGVhZCBvZiBoYW5kbGluZyB0aGUgdHJlZSBhcyBhIHdob2xlLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc5NzYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgTGF5ZXJUcmVlSG9zdCBhc3NvY2lh
dGlvbiBoYWQgdG8gYmUgbWFpbnRhaW5lZCBiZXR3ZWVuIHJlLXBhcmVudGVkIGxheWVycyBhbmQg
aXQgd291bGQgYmUKKyAgICAgICAgaW1wb3NzaWJsZSB0byBrbm93IGlmIHRoZSBsYXllciB3b3Vs
ZCBiZSBkaXNjb25uZWN0ZWQgZnJvbSB0aGUgTGF5ZXJUcmVlSG9zdCBvbmx5IGZvciByZXBhcmVu
dGluZworICAgICAgICBvciBkaXNjb25uZWN0ZWQgZm9yIGdvb2QgKGluIG90aGVyIHdvcmRzLCB0
aGF0IHRoZSBMYXllclRyZWVIb3N0IGNvdWxkIGJlIGRlbGV0ZWQgbWVhbndoaWxlKS4KKworICAg
ICAgICBJbnN0ZWFkLCB0aGlzIHBhdGNoIGFzc3VtZXMgdGhhdCBncmFwaGljcyBsYXllcnMgd2ls
bCBvbmx5IGJlIGluIGNvbnRhY3Qgd2l0aCBvbmUgaW5zdGFuY2Ugb2YKKyAgICAgICAgTGF5ZXJU
cmVlSG9zdCwgYW5kIHRoYXQgdGhpcyBhc3NvY2lhdGlvbiBjYW4gYmUga2VwdCB1bnRpbCBlaXRo
ZXIgdGhlIGdyYXBoaWNzIGxheWVyIG9yIHRoZSBsYXllcgorICAgICAgICB0cmVlIGhvc3QgZ2V0
cyBkZWxldGVkLgorCisgICAgICAgIFRoZSByZWdpc3RlcmVkIGxheWVycyBhcmUga2VwdCBpbiBh
IHNldCBhbmQgdGhlIHZpc2libGUgcmVjdCBhbmQgc2NhbGVzIGFyZSBwYXNzZWQgZGlyZWN0bHkK
KyAgICAgICAgdG8gbGF5ZXJzIGluc3RlYWQgb2YgZG93biB0aGUgdHJlZSwgdGhyb3VnaCB0aGUg
cm9vdCBsYXllci4KKworICAgICAgICBUaGlzIGFsc28gZml4ZXMgdGhlICFtX2xheWVySW5mby5p
bWFnZUJhY2tpbmdTdG9yZUlEIEFTU0VSVCB0aGF0IHdhcyBwb3BwaW5nIGluIHVuaXQgdGVzdHMu
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6V2ViR3JhcGhpY3NMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjp+V2ViR3JhcGhpY3NMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpzZXRDaGlsZHJlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjphZGRDaGlsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjphZGRDaGlsZEF0SW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBYm92ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHcmFwaGljc0xheWVyOjphZGRDaGlsZEJlbG93KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdyYXBoaWNzTGF5ZXI6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFw
aGljc0xheWVyOjpyZW1vdmVGcm9tUGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBo
aWNzTGF5ZXI6OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFw
aGljc0xheWVyOjpzZXRNYXNrTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NM
YXllcjo6c2V0UmVwbGljYXRlZEJ5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhp
Y3NMYXllcjo6c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3Jl
VXBkYXRlc0FsbG93ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6Y3Jl
YXRlVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjp1cGRhdGVUaWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnJlbW92ZVRpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6cHVyZ2VCYWNraW5nU3RvcmVzKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnNldFdlYkdyYXBoaWNzTGF5ZXJD
bGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NM
YXllci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJHcmFwaGljc0xheWVyQ2xp
ZW50KToKKyAgICAgICAgKFdlYkdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRy
ZWVIb3N0UXQ6On5MYXllclRyZWVIb3N0UXQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVI
b3N0UXQ6OkxheWVyVHJlZUhvc3RRdCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RR
dDo6YXR0YWNoTGF5ZXIpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6TGF5
ZXJUcmVlSG9zdFF0OjpkZXRhY2hMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhv
c3RRdDo6c2V0VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuaDoKKyAgICAgICAgKExheWVyVHJlZUhvc3RR
dCk6CisKIDIwMTItMDItMDMgIFphbGFuIEJ1anRhcyAgPHpidWp0YXNAZ21haWwuY29tPiAgYW5k
ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CiAKICAgICAg
ICAgW1F0XVtXSzJdIFJlbW92ZSBUaWxlZERyYXdpbmdBcmVhIGFuZCBkZXBlbmRlbmNpZXMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdy
YXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJHcmFwaGljc0xheWVyLmNwcAppbmRleCAxNGI4NmFlYTQ4NmFkODAwOGZhYjY2ZWQ2MWVi
OGVhZTk5ZjVkNmNhLi5jZTgzMjE0NDJkNTM3ZjhmZTUzNjAyMjM1MjlkODRlODBiZmY1YzBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdy
YXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViR3JhcGhpY3NMYXllci5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgV2ViR3JhcGhpY3NM
YXllcjo6V2ViR3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAgICAg
LCBtX2hhc1BlbmRpbmdBbmltYXRpb25zKGZhbHNlKQogICAgICwgbV9pblVwZGF0ZU1vZGUoZmFs
c2UpCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgLCBtX2xheWVyVHJlZVRpbGVD
bGllbnQoMCkKKyAgICAsIG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCgwKQogICAgICwgbV9tYWlu
QmFja2luZ1N0b3JlKGFkb3B0UHRyKG5ldyBUaWxlZEJhY2tpbmdTdG9yZSh0aGlzLCBUaWxlZEJh
Y2tpbmdTdG9yZVJlbW90ZVRpbGVCYWNrZW5kOjpjcmVhdGUodGhpcykpKSkKICAgICAsIG1fY29u
dGVudHNTY2FsZSgxLmYpCiAjZW5kaWYKQEAgLTEwNSw4ICsxMDUsOCBAQCBXZWJHcmFwaGljc0xh
eWVyOjp+V2ViR3JhcGhpY3NMYXllcigpCiAgICAgLy8gVGhpcyB3b3VsZCB0ZWxsIHRoZSBVSSBw
cm9jZXNzIHRvIHJlbGVhc2UgdGhlIGJhY2tpbmcgc3RvcmUuCiAgICAgc2V0Q29udGVudHNUb0lt
YWdlKDApOwogCi0gICAgaWYgKG1fbGF5ZXJUcmVlVGlsZUNsaWVudCkKLSAgICAgICAgbV9sYXll
clRyZWVUaWxlQ2xpZW50LT5kaWREZWxldGVMYXllcihpZCgpKTsKKyAgICBpZiAobV93ZWJHcmFw
aGljc0xheWVyQ2xpZW50KQorICAgICAgICBtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQtPmRldGFj
aExheWVyKHRoaXMpOwogfQogCiBib29sIFdlYkdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuKGNv
bnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGNoaWxkcmVuKQpAQCAtMTE2LDcgKzExNiw3IEBA
IGJvb2wgV2ViR3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNz
TGF5ZXIqPiYgY2hpbGRyZW4pCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFdlYkdyYXBoaWNzTGF5
ZXIqIGNoaWxkID0gdG9XZWJHcmFwaGljc0xheWVyKGNoaWxkcmVuW2ldKTsKLSAgICAgICAgY2hp
bGQtPnNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlKG1fcGFnZVZpc2libGVSZWN0LCBtX2Nv
bnRlbnRzU2NhbGUpOworICAgICAgICBjaGlsZC0+c2V0V2ViR3JhcGhpY3NMYXllckNsaWVudCht
X3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQpOwogICAgICAgICBjaGlsZC0+bm90aWZ5Q2hhbmdlKCk7
CiAgICAgfQogICAgIG5vdGlmeUNoYW5nZSgpOwpAQCAtMTI2LDcgKzEyNiw3IEBAIGJvb2wgV2Vi
R3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYg
Y2hpbGRyZW4pCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkKEdyYXBoaWNzTGF5ZXIq
IGxheWVyKQogewogICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkKGxheWVyKTsKLSAgICB0b1dl
YkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5zZXRWaXNpYmxlQ29udGVudFJlY3RBbmRTY2FsZShtX3Bh
Z2VWaXNpYmxlUmVjdCwgbV9jb250ZW50c1NjYWxlKTsKKyAgICB0b1dlYkdyYXBoaWNzTGF5ZXIo
bGF5ZXIpLT5zZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50KG1fd2ViR3JhcGhpY3NMYXllckNsaWVu
dCk7CiAgICAgdG9XZWJHcmFwaGljc0xheWVyKGxheWVyKS0+bm90aWZ5Q2hhbmdlKCk7CiAgICAg
bm90aWZ5Q2hhbmdlKCk7CiB9CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBXZWJHcmFwaGljc0xh
eWVyOjphZGRDaGlsZChHcmFwaGljc0xheWVyKiBsYXllcikKIHZvaWQgV2ViR3JhcGhpY3NMYXll
cjo6YWRkQ2hpbGRBdEluZGV4KEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBpbnQgaW5kZXgpCiB7CiAg
ICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBdEluZGV4KGxheWVyLCBpbmRleCk7Ci0gICAgdG9X
ZWJHcmFwaGljc0xheWVyKGxheWVyKS0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUobV9w
YWdlVmlzaWJsZVJlY3QsIG1fY29udGVudHNTY2FsZSk7CisgICAgdG9XZWJHcmFwaGljc0xheWVy
KGxheWVyKS0+c2V0V2ViR3JhcGhpY3NMYXllckNsaWVudChtX3dlYkdyYXBoaWNzTGF5ZXJDbGll
bnQpOwogICAgIHRvV2ViR3JhcGhpY3NMYXllcihsYXllciktPm5vdGlmeUNoYW5nZSgpOwogICAg
IG5vdGlmeUNoYW5nZSgpOwogfQpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgV2ViR3JhcGhpY3NM
YXllcjo6YWRkQ2hpbGRBdEluZGV4KEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBpbnQgaW5kZXgpCiB2
b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQWJvdmUoR3JhcGhpY3NMYXllciogbGF5ZXIs
IEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcpCiB7CiAgICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRB
Ym92ZShsYXllciwgc2libGluZyk7Ci0gICAgdG9XZWJHcmFwaGljc0xheWVyKGxheWVyKS0+c2V0
VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUobV9wYWdlVmlzaWJsZVJlY3QsIG1fY29udGVudHNT
Y2FsZSk7CisgICAgdG9XZWJHcmFwaGljc0xheWVyKGxheWVyKS0+c2V0V2ViR3JhcGhpY3NMYXll
ckNsaWVudChtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQpOwogICAgIHRvV2ViR3JhcGhpY3NMYXll
cihsYXllciktPm5vdGlmeUNoYW5nZSgpOwogICAgIG5vdGlmeUNoYW5nZSgpOwogfQpAQCAtMTUw
LDcgKzE1MCw3IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBYm92ZShHcmFwaGlj
c0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXllciogc2libGluCiB2b2lkIFdlYkdyYXBoaWNzTGF5
ZXI6OmFkZENoaWxkQmVsb3coR3JhcGhpY3NMYXllciogbGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNp
YmxpbmcpCiB7CiAgICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRCZWxvdyhsYXllciwgc2libGlu
Zyk7Ci0gICAgdG9XZWJHcmFwaGljc0xheWVyKGxheWVyKS0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0
QW5kU2NhbGUobV9wYWdlVmlzaWJsZVJlY3QsIG1fY29udGVudHNTY2FsZSk7CisgICAgdG9XZWJH
cmFwaGljc0xheWVyKGxheWVyKS0+c2V0V2ViR3JhcGhpY3NMYXllckNsaWVudChtX3dlYkdyYXBo
aWNzTGF5ZXJDbGllbnQpOwogICAgIHRvV2ViR3JhcGhpY3NMYXllcihsYXllciktPm5vdGlmeUNo
YW5nZSgpOwogICAgIG5vdGlmeUNoYW5nZSgpOwogfQpAQCAtMTYyLDggKzE2Miw3IEBAIGJvb2wg
V2ViR3JhcGhpY3NMYXllcjo6cmVwbGFjZUNoaWxkKEdyYXBoaWNzTGF5ZXIqIG9sZENoaWxkLCBH
cmFwaGljc0xheWVyKiBuZXdDCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBub3RpZnlDaGFu
Z2UoKTsKICAgICB0b1dlYkdyYXBoaWNzTGF5ZXIob2xkQ2hpbGQpLT5ub3RpZnlDaGFuZ2UoKTsK
LSAgICB0b1dlYkdyYXBoaWNzTGF5ZXIob2xkQ2hpbGQpLT5zZXRMYXllclRyZWVUaWxlQ2xpZW50
KDApOwotICAgIHRvV2ViR3JhcGhpY3NMYXllcihuZXdDaGlsZCktPnNldFZpc2libGVDb250ZW50
UmVjdEFuZFNjYWxlKG1fcGFnZVZpc2libGVSZWN0LCBtX2NvbnRlbnRzU2NhbGUpOworICAgIHRv
V2ViR3JhcGhpY3NMYXllcihuZXdDaGlsZCktPnNldFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQobV93
ZWJHcmFwaGljc0xheWVyQ2xpZW50KTsKICAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobmV3Q2hpbGQp
LT5ub3RpZnlDaGFuZ2UoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTE3NSw3ICsxNzQsNiBA
QCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnJlbW92ZUZyb21QYXJlbnQoKQogICAgIEdyYXBoaWNz
TGF5ZXI6OnJlbW92ZUZyb21QYXJlbnQoKTsKIAogICAgIG5vdGlmeUNoYW5nZSgpOwotICAgIHNl
dExheWVyVHJlZVRpbGVDbGllbnQoMCk7CiB9CiAKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0
UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcCkKQEAgLTM0NywxNyArMzQ1LDE2IEBAIHZvaWQg
V2ViR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKIHsKICAg
ICBpZiAoaW1hZ2UgPT0gbV9pbWFnZSkKICAgICAgICAgcmV0dXJuOwotICAgIFdlYkxheWVyVHJl
ZVRpbGVDbGllbnQqIGNsaWVudCA9IGxheWVyVHJlZVRpbGVDbGllbnQoKTsKICAgICBpbnQ2NF90
IG5ld0lEID0gMDsKLSAgICBpZiAoY2xpZW50KSB7CisgICAgaWYgKG1fd2ViR3JhcGhpY3NMYXll
ckNsaWVudCkgewogICAgICAgICAvLyBXZSBhZG9wdCBmaXJzdCwgaW4gY2FzZSB0aGlzIGlzIHRo
ZSBzYW1lIGZyYW1lIC0gdGhhdCB3YXkgd2UgYXZvaWQgZGVzdHJveWluZyBhbmQgcmVjcmVhdGlu
ZyB0aGUgaW1hZ2UuCi0gICAgICAgIG5ld0lEID0gY2xpZW50LT5hZG9wdEltYWdlQmFja2luZ1N0
b3JlKGltYWdlKTsKLSAgICAgICAgY2xpZW50LT5yZWxlYXNlSW1hZ2VCYWNraW5nU3RvcmUobV9s
YXllckluZm8uaW1hZ2VCYWNraW5nU3RvcmVJRCk7CisgICAgICAgIG5ld0lEID0gbV93ZWJHcmFw
aGljc0xheWVyQ2xpZW50LT5hZG9wdEltYWdlQmFja2luZ1N0b3JlKGltYWdlKTsKKyAgICAgICAg
bV93ZWJHcmFwaGljc0xheWVyQ2xpZW50LT5yZWxlYXNlSW1hZ2VCYWNraW5nU3RvcmUobV9sYXll
ckluZm8uaW1hZ2VCYWNraW5nU3RvcmVJRCk7CiAgICAgICAgIG5vdGlmeUNoYW5nZSgpOwogICAg
ICAgICBpZiAobV9sYXllckluZm8uaW1hZ2VCYWNraW5nU3RvcmVJRCAmJiBuZXdJRCA9PSBtX2xh
eWVySW5mby5pbWFnZUJhY2tpbmdTdG9yZUlEKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIC8vIElmIGNsaWVudCBub3Qgc2V0IHlldCB0aGVyZSBzaG91bGQgYmUg
bm8gYmFja2luZyBzdG9yZSBJRC4KKyAgICAgICAgLy8gSWYgbV93ZWJHcmFwaGljc0xheWVyQ2xp
ZW50IGlzIG5vdCBzZXQgeWV0IHRoZXJlIHNob3VsZCBiZSBubyBiYWNraW5nIHN0b3JlIElELgog
ICAgICAgICBBU1NFUlQoIW1fbGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0b3JlSUQpOwogICAgICAg
ICBub3RpZnlDaGFuZ2UoKTsKICAgICB9CkBAIC0zODAsOSArMzc3LDggQEAgdm9pZCBXZWJHcmFw
aGljc0xheWVyOjpzZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCiAKICAgICBsYXll
ci0+c2V0U2l6ZShzaXplKCkpOwogICAgIFdlYkdyYXBoaWNzTGF5ZXIqIHdlYkdyYXBoaWNzTGF5
ZXIgPSB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpOwotICAgIHdlYkdyYXBoaWNzTGF5ZXItPnNl
dExheWVyVHJlZVRpbGVDbGllbnQobGF5ZXJUcmVlVGlsZUNsaWVudCgpKTsKKyAgICB3ZWJHcmFw
aGljc0xheWVyLT5zZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50KG1fd2ViR3JhcGhpY3NMYXllckNs
aWVudCk7CiAgICAgd2ViR3JhcGhpY3NMYXllci0+c2V0TWFza1RhcmdldCh0aGlzKTsKLSAgICB3
ZWJHcmFwaGljc0xheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3RBbmRTY2FsZShtX3BhZ2VWaXNp
YmxlUmVjdCwgbV9jb250ZW50c1NjYWxlKTsKICAgICB3ZWJHcmFwaGljc0xheWVyLT5ub3RpZnlD
aGFuZ2UoKTsKICAgICBub3RpZnlDaGFuZ2UoKTsKIApAQCAtMzk0LDcgKzM5MCw3IEBAIHZvaWQg
V2ViR3JhcGhpY3NMYXllcjo6c2V0UmVwbGljYXRlZEJ5TGF5ZXIoR3JhcGhpY3NMYXllciogbGF5
ZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChsYXllcikKLSAgICAgICAgdG9XZWJHcmFw
aGljc0xheWVyKGxheWVyKS0+c2V0TGF5ZXJUcmVlVGlsZUNsaWVudChsYXllclRyZWVUaWxlQ2xp
ZW50KCkpOworICAgICAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5zZXRXZWJHcmFwaGlj
c0xheWVyQ2xpZW50KG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCk7CiAKICAgICBHcmFwaGljc0xh
eWVyOjpzZXRSZXBsaWNhdGVkQnlMYXllcihsYXllcik7CiAgICAgbm90aWZ5Q2hhbmdlKCk7CkBA
IC00MzgsOSArNDM0LDYgQEAgV2ViR3JhcGhpY3NMYXllciogdG9XZWJHcmFwaGljc0xheWVyKEdy
YXBoaWNzTGF5ZXIqIGxheWVyKQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnN5bmNDb21wb3Np
dGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpCiB7Ci0gICAgaWYgKCFtX2xheWVyVHJlZVRpbGVD
bGllbnQpCi0gICAgICAgIG1fbGF5ZXJUcmVlVGlsZUNsaWVudCA9IGxheWVyVHJlZVRpbGVDbGll
bnQoKTsKLQogICAgIHVwZGF0ZUNvbnRlbnRCdWZmZXJzKCk7CiAKICAgICBpZiAoIW1fbW9kaWZp
ZWQpCkBAIC00NjksMTEgKzQ2MiwxMSBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnN5bmNDb21w
b3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBjaGlsZHJlbigpLnNpemUoKTsgKytpKQogICAgICAgICBtX2xheWVySW5mby5jaGlsZHJlbi5h
cHBlbmQodG9XZWJMYXllcklEKGNoaWxkcmVuKClbaV0pKTsKIAotICAgIEFTU0VSVChtX2xheWVy
VHJlZVRpbGVDbGllbnQpOworICAgIEFTU0VSVChtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQpOwog
ICAgIGlmIChtX2xheWVySW5mby5pbWFnZUlzVXBkYXRlZCAmJiBtX2ltYWdlICYmICFtX2xheWVy
SW5mby5pbWFnZUJhY2tpbmdTdG9yZUlEKQotICAgICAgICBtX2xheWVySW5mby5pbWFnZUJhY2tp
bmdTdG9yZUlEID0gbV9sYXllclRyZWVUaWxlQ2xpZW50LT5hZG9wdEltYWdlQmFja2luZ1N0b3Jl
KG1faW1hZ2UuZ2V0KCkpOworICAgICAgICBtX2xheWVySW5mby5pbWFnZUJhY2tpbmdTdG9yZUlE
ID0gbV93ZWJHcmFwaGljc0xheWVyQ2xpZW50LT5hZG9wdEltYWdlQmFja2luZ1N0b3JlKG1faW1h
Z2UuZ2V0KCkpOwogCi0gICAgbV9sYXllclRyZWVUaWxlQ2xpZW50LT5kaWRTeW5jQ29tcG9zaXRp
bmdTdGF0ZUZvckxheWVyKG1fbGF5ZXJJbmZvKTsKKyAgICBtX3dlYkdyYXBoaWNzTGF5ZXJDbGll
bnQtPmRpZFN5bmNDb21wb3NpdGluZ1N0YXRlRm9yTGF5ZXIobV9sYXllckluZm8pOwogICAgIG1f
bW9kaWZpZWQgPSBmYWxzZTsKICAgICBtX2xheWVySW5mby5pbWFnZUlzVXBkYXRlZCA9IGZhbHNl
OwogICAgIGlmIChtX2hhc1BlbmRpbmdBbmltYXRpb25zKQpAQCAtNTEyLDExICs1MDUsNiBAQCB2
b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlKGNvbnN0
IEludFJlY3QmIHBhZ2VWaXNpYmxlUgogICAgICAgICBtX21haW5CYWNraW5nU3RvcmUtPnNldENv
bnRlbnRzU2NhbGUoc2NhbGUpOwogICAgIH0gZWxzZQogICAgICAgICBtX21haW5CYWNraW5nU3Rv
cmUtPmFkanVzdFZpc2libGVSZWN0KCk7Ci0KLSAgICBpZiAobWFza0xheWVyKCkpCi0gICAgICAg
IHRvV2ViR3JhcGhpY3NMYXllcihtYXNrTGF5ZXIoKSktPnNldFZpc2libGVDb250ZW50UmVjdEFu
ZFNjYWxlKHBhZ2VWaXNpYmxlUmVjdCwgc2NhbGUpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgY2hpbGRyZW4oKS5zaXplKCk7ICsraSkKLSAgICAgICAgdG9XZWJHcmFwaGljc0xheWVyKGNo
aWxkcmVuKClbaV0pLT5zZXRWaXNpYmxlQ29udGVudFJlY3RBbmRTY2FsZShwYWdlVmlzaWJsZVJl
Y3QsIHNjYWxlKTsKIH0KIAogdm9pZCBXZWJHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9y
ZVBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKQEAg
LTUzNSw5ICs1MjMsNyBAQCBib29sIFdlYkdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3Jl
VXBkYXRlc0FsbG93ZWQoKSBjb25zdAogewogICAgIGlmICghbV9pblVwZGF0ZU1vZGUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoV2ViTGF5ZXJUcmVlVGlsZUNsaWVudCogY2xpZW50
ID0gbGF5ZXJUcmVlVGlsZUNsaWVudCgpKQotICAgICAgICByZXR1cm4gY2xpZW50LT5sYXllclRy
ZWVUaWxlVXBkYXRlc0FsbG93ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1f
d2ViR3JhcGhpY3NMYXllckNsaWVudC0+bGF5ZXJUcmVlVGlsZVVwZGF0ZXNBbGxvd2VkKCk7CiB9
CiAKIEludFJlY3QgV2ViR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1Jl
Y3QoKQpAQCAtNTcyLDIyICs1NTgsMTkgQEAgQ29sb3IgV2ViR3JhcGhpY3NMYXllcjo6dGlsZWRC
YWNraW5nU3RvcmVCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogdm9pZCBXZWJHcmFwaGljc0xheWVy
OjpjcmVhdGVUaWxlKGludCB0aWxlSUQsIGNvbnN0IFVwZGF0ZUluZm8mIHVwZGF0ZUluZm8pCiB7
CiAgICAgbV9tb2RpZmllZCA9IHRydWU7Ci0gICAgaWYgKFdlYkxheWVyVHJlZVRpbGVDbGllbnQq
IGNsaWVudCA9IGxheWVyVHJlZVRpbGVDbGllbnQoKSkKLSAgICAgICAgY2xpZW50LT5jcmVhdGVU
aWxlKGlkKCksIHRpbGVJRCwgdXBkYXRlSW5mbyk7CisgICAgbV93ZWJHcmFwaGljc0xheWVyQ2xp
ZW50LT5jcmVhdGVUaWxlKGlkKCksIHRpbGVJRCwgdXBkYXRlSW5mbyk7CiB9CiAKIHZvaWQgV2Vi
R3JhcGhpY3NMYXllcjo6dXBkYXRlVGlsZShpbnQgdGlsZUlELCBjb25zdCBVcGRhdGVJbmZvJiB1
cGRhdGVJbmZvKQogewogICAgIG1fbW9kaWZpZWQgPSB0cnVlOwotICAgIGlmIChXZWJMYXllclRy
ZWVUaWxlQ2xpZW50KiBjbGllbnQgPSBsYXllclRyZWVUaWxlQ2xpZW50KCkpCi0gICAgICAgIGNs
aWVudC0+dXBkYXRlVGlsZShpZCgpLCB0aWxlSUQsIHVwZGF0ZUluZm8pOworICAgIG1fd2ViR3Jh
cGhpY3NMYXllckNsaWVudC0+dXBkYXRlVGlsZShpZCgpLCB0aWxlSUQsIHVwZGF0ZUluZm8pOwog
fQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnJlbW92ZVRpbGUoaW50IHRpbGVJRCkKIHsKICAg
ICBtX21vZGlmaWVkID0gdHJ1ZTsKLSAgICBpZiAoV2ViTGF5ZXJUcmVlVGlsZUNsaWVudCogY2xp
ZW50ID0gbGF5ZXJUcmVlVGlsZUNsaWVudCgpKQotICAgICAgICBjbGllbnQtPnJlbW92ZVRpbGUo
aWQoKSwgdGlsZUlEKTsKKyAgICBtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQtPnJlbW92ZVRpbGUo
aWQoKSwgdGlsZUlEKTsKIH0KIAogdm9pZCBXZWJHcmFwaGljc0xheWVyOjp1cGRhdGVUaWxlQnVm
ZmVyc1JlY3Vyc2l2ZWx5KCkKQEAgLTYwMiwyMyArNTg1LDYgQEAgdm9pZCBXZWJHcmFwaGljc0xh
eWVyOjp1cGRhdGVUaWxlQnVmZmVyc1JlY3Vyc2l2ZWx5KCkKICAgICAgICAgbWFzay0+dXBkYXRl
VGlsZUJ1ZmZlcnNSZWN1cnNpdmVseSgpOwogfQogCi1XZWJMYXllclRyZWVUaWxlQ2xpZW50KiBX
ZWJHcmFwaGljc0xheWVyOjpsYXllclRyZWVUaWxlQ2xpZW50KCkgY29uc3QKLXsKLSAgICBpZiAo
bV9sYXllclRyZWVUaWxlQ2xpZW50KQotICAgICAgICByZXR1cm4gbV9sYXllclRyZWVUaWxlQ2xp
ZW50OwotICAgIFdlYkdyYXBoaWNzTGF5ZXIqIHBhcmVudDsKLSAgICBpZiAodGhpcy0+cmVwbGlj
YXRlZExheWVyKCkpCi0gICAgICAgIHBhcmVudCA9IHRvV2ViR3JhcGhpY3NMYXllcih0aGlzLT5y
ZXBsaWNhdGVkTGF5ZXIoKSk7Ci0gICAgZWxzZSBpZiAodGhpcy0+bWFza1RhcmdldCgpKQotICAg
ICAgICBwYXJlbnQgPSB0b1dlYkdyYXBoaWNzTGF5ZXIodGhpcy0+bWFza1RhcmdldCgpKTsKLSAg
ICBlbHNlCi0gICAgICAgIHBhcmVudCA9IHRvV2ViR3JhcGhpY3NMYXllcih0aGlzLT5wYXJlbnQo
KSk7Ci0KLSAgICBpZiAoIXBhcmVudCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHBh
cmVudC0+bGF5ZXJUcmVlVGlsZUNsaWVudCgpOwotfQotCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6
OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKCkKIHsKICAgICAvLyBCYWNraW5nLXN0b3JlcyBmb3IgZGly
ZWN0bHkgY29tcG9zaXRlZCBpbWFnZXMgaXMgaGFuZGxlZCBpbiBMYXllclRyZWVIb3N0LgpAQCAt
NjI3LDkgKzU5Myw3IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZl
cnMoKQogCiAgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFdl
YkxheWVyVHJlZVRpbGVDbGllbnQqIGNsaWVudCA9IGxheWVyVHJlZVRpbGVDbGllbnQoKTsKLSAg
ICBpZiAoIWNsaWVudCkKLSAgICAgICAgcmV0dXJuOworCiAgICAgbV9pblVwZGF0ZU1vZGUgPSB0
cnVlOwogICAgIG1fbWFpbkJhY2tpbmdTdG9yZS0+dXBkYXRlVGlsZUJ1ZmZlcnMoKTsKICAgICBt
X2luVXBkYXRlTW9kZSA9IGZhbHNlOwpAQCAtNjUxLDcgKzYxNSw3IEBAIHZvaWQgV2ViR3JhcGhp
Y3NMYXllcjo6cHVyZ2VCYWNraW5nU3RvcmVzKCkKICAgICBpZiAoIW1fbGF5ZXJJbmZvLmltYWdl
QmFja2luZ1N0b3JlSUQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGxheWVyVHJlZVRpbGVDbGll
bnQoKS0+cmVsZWFzZUltYWdlQmFja2luZ1N0b3JlKG1fbGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0
b3JlSUQpOworICAgIG1fd2ViR3JhcGhpY3NMYXllckNsaWVudC0+cmVsZWFzZUltYWdlQmFja2lu
Z1N0b3JlKG1fbGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0b3JlSUQpOwogICAgIG1fbGF5ZXJJbmZv
LmltYWdlQmFja2luZ1N0b3JlSUQgPSAwOwogfQogCkBAIC02NzMsMjQgKzYzNywyNiBAQCB2b2lk
IFdlYkdyYXBoaWNzTGF5ZXI6OnJlY3JlYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoKQogICAgICAg
ICBzZXRDb250ZW50c05lZWRzRGlzcGxheSgpOwogfQogCi12b2lkIFdlYkdyYXBoaWNzTGF5ZXI6
OnNldExheWVyVHJlZVRpbGVDbGllbnQoV2ViS2l0OjpXZWJMYXllclRyZWVUaWxlQ2xpZW50KiBj
bGllbnQpCit2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQo
V2ViS2l0OjpXZWJHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgaWYgKG1fbGF5
ZXJUcmVlVGlsZUNsaWVudCA9PSBjbGllbnQpCisgICAgaWYgKG1fd2ViR3JhcGhpY3NMYXllckNs
aWVudCA9PSBjbGllbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChXZWJHcmFwaGljc0xh
eWVyKiByZXBsaWNhID0gdG9XZWJHcmFwaGljc0xheWVyKHJlcGxpY2FMYXllcigpKSkKLSAgICAg
ICAgcmVwbGljYS0+c2V0TGF5ZXJUcmVlVGlsZUNsaWVudChjbGllbnQpOworICAgICAgICByZXBs
aWNhLT5zZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50KGNsaWVudCk7CiAgICAgaWYgKFdlYkdyYXBo
aWNzTGF5ZXIqIG1hc2sgPSB0b1dlYkdyYXBoaWNzTGF5ZXIobWFza0xheWVyKCkpKQotICAgICAg
ICBtYXNrLT5zZXRMYXllclRyZWVUaWxlQ2xpZW50KGNsaWVudCk7CisgICAgICAgIG1hc2stPnNl
dFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQoY2xpZW50KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGNoaWxkcmVuKCkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgV2ViR3JhcGhpY3NMYXllciog
bGF5ZXIgPSB0b1dlYkdyYXBoaWNzTGF5ZXIodGhpcy0+Y2hpbGRyZW4oKVtpXSk7Ci0gICAgICAg
IGxheWVyLT5zZXRMYXllclRyZWVUaWxlQ2xpZW50KGNsaWVudCk7CisgICAgICAgIGxheWVyLT5z
ZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50KGNsaWVudCk7CiAgICAgfQogCiAgICAgLy8gSGF2ZSB0
byBmb3JjZSBkZXRhY2ggZnJvbSByZW1vdGUgbGF5ZXIgaGVyZSBpZiBsYXllciB0aWxlIGNsaWVu
dCBjaGFuZ2VzLgotICAgIGlmIChtX2xheWVyVHJlZVRpbGVDbGllbnQpCi0gICAgICAgIG1fbGF5
ZXJUcmVlVGlsZUNsaWVudC0+ZGlkRGVsZXRlTGF5ZXIoaWQoKSk7Ci0gICAgbV9sYXllclRyZWVU
aWxlQ2xpZW50ID0gY2xpZW50OworICAgIGlmIChtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQpCisg
ICAgICAgIG1fd2ViR3JhcGhpY3NMYXllckNsaWVudC0+ZGV0YWNoTGF5ZXIodGhpcyk7CisgICAg
bV93ZWJHcmFwaGljc0xheWVyQ2xpZW50ID0gY2xpZW50OworICAgIGlmIChjbGllbnQpCisgICAg
ICAgIGNsaWVudC0+YXR0YWNoTGF5ZXIodGhpcyk7CiB9CiAKIHZvaWQgV2ViR3JhcGhpY3NMYXll
cjo6Y29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuaApp
bmRleCAwYjUwNzYzYjdkNWU3OGVmODdhNDVjZDk4MzlhYmU2Y2I4MzU2NTEyLi4xZGYwYWQ3MDUy
Y2IxMjEzMjVhM2M2OTFiOTQyMjQ0ZTQ4Y2FmNzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuaApA
QCAtMzksMTkgKzM5LDI1IEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFdlYkdyYXBoaWNzTGF5ZXI7Cit9CisKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJMYXllclRyZWVUaWxlQ2xpZW50IHsKK2NsYXNzIFdl
YkdyYXBoaWNzTGF5ZXJDbGllbnQgewogcHVibGljOgogICAgIC8vIFRpbGVkQmFja2luZ1N0b3Jl
UmVtb3RlVGlsZUNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUaWxlKFdlYkxheWVySUQs
IGludCB0aWxlSUQsIGNvbnN0IFVwZGF0ZUluZm8mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVRpbGUoV2ViTGF5ZXJJRCwgaW50IHRpbGVJRCwgY29uc3QgVXBkYXRlSW5mbyYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlVGlsZShXZWJMYXllcklELCBpbnQgdGlsZUlEKSA9IDA7
CisKICAgICB2aXJ0dWFsIGJvb2wgbGF5ZXJUcmVlVGlsZVVwZGF0ZXNBbGxvd2VkKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBhZG9wdEltYWdlQmFja2luZ1N0b3JlKFdlYkNvcmU6
OkltYWdlKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlSW1hZ2VCYWNraW5nU3RvcmUo
aW50NjRfdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTeW5jQ29tcG9zaXRpbmdTdGF0ZUZv
ckxheWVyKGNvbnN0IFdlYkxheWVySW5mbyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGVs
ZXRlTGF5ZXIoV2ViTGF5ZXJJRCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hMYXllcihX
ZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hM
YXllcihXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyKikgPSAwOwogfTsKIH0KIApAQCAtMTI5LDgg
KzEzNSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGlsZShpbnQgdGlsZUlE
LCBjb25zdCBXZWJLaXQ6OlVwZGF0ZUluZm8mKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlVGls
ZShpbnQgdGlsZUlEKTsKIAotICAgIHZvaWQgc2V0TGF5ZXJUcmVlVGlsZUNsaWVudChXZWJLaXQ6
OldlYkxheWVyVHJlZVRpbGVDbGllbnQqKTsKLSAgICBXZWJLaXQ6OldlYkxheWVyVHJlZVRpbGVD
bGllbnQqIGxheWVyVHJlZVRpbGVDbGllbnQoKSBjb25zdDsKKyAgICB2b2lkIHNldFdlYkdyYXBo
aWNzTGF5ZXJDbGllbnQoV2ViS2l0OjpXZWJHcmFwaGljc0xheWVyQ2xpZW50Kik7CiAKICAgICBi
b29sIGlzUmVhZHlGb3JUaWxlQnVmZmVyU3dhcCgpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlVGls
ZUJ1ZmZlcnNSZWN1cnNpdmVseSgpOwpAQCAtMTYxLDcgKzE2Niw3IEBAIHByaXZhdGU6CiAjaWYg
VVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgdm9pZCBjb21wdXRlVHJhbnNmb3JtZWRWaXNp
YmxlUmVjdCgpOwogCi0gICAgV2ViS2l0OjpXZWJMYXllclRyZWVUaWxlQ2xpZW50KiBtX2xheWVy
VHJlZVRpbGVDbGllbnQ7CisgICAgV2ViS2l0OjpXZWJHcmFwaGljc0xheWVyQ2xpZW50KiBtX3dl
YkdyYXBoaWNzTGF5ZXJDbGllbnQ7CiAgICAgT3duUHRyPFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0
b3JlPiBtX21haW5CYWNraW5nU3RvcmU7CiAgICAgT3duUHRyPFdlYkNvcmU6OlRpbGVkQmFja2lu
Z1N0b3JlPiBtX3ByZXZpb3VzQmFja2luZ1N0b3JlOwogICAgIGZsb2F0IG1fY29udGVudHNTY2Fs
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXll
clRyZWVIb3N0UXQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xh
eWVyVHJlZUhvc3RRdC5jcHAKaW5kZXggZmMxZTg1YjIxYmZjYzNkNDJhZWY3NDA1Njg0MGIwNjMy
MzVkY2VmZS4uMDk4YWQ3MDQwNzdlNzdkN2Q0Yzk0MDI0ODNmMmE1ODlhOGNlYzI4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RR
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJl
ZUhvc3RRdC5jcHAKQEAgLTUyLDggKzUyLDEzIEBAIFBhc3NSZWZQdHI8TGF5ZXJUcmVlSG9zdFF0
PiBMYXllclRyZWVIb3N0UXQ6OmNyZWF0ZShXZWJQYWdlKiB3ZWJQYWdlKQogCiBMYXllclRyZWVI
b3N0UXQ6On5MYXllclRyZWVIb3N0UXQoKQogewotICAgIGlmIChtX3Jvb3RMYXllcikKLSAgICAg
ICAgdG9XZWJHcmFwaGljc0xheWVyKG1fcm9vdExheWVyLmdldCgpKS0+c2V0TGF5ZXJUcmVlVGls
ZUNsaWVudCgwKTsKKyAgICAvLyBQcmV2ZW50IHNldFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQoMCkg
LT4gZGV0YWNoTGF5ZXIoKSBmcm9tIG1vZGlmeWluZyB0aGUgc2V0IHdoaWxlIHdlIGl0ZXJhdGUg
aXQuCisgICAgSGFzaFNldDxXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyKj4gcmVnaXN0ZXJlZExh
eWVyczsKKyAgICByZWdpc3RlcmVkTGF5ZXJzLnN3YXAobV9yZWdpc3RlcmVkTGF5ZXJzKTsKKwor
ICAgIEhhc2hTZXQ8V2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcio+OjppdGVyYXRvciBlbmQgPSBy
ZWdpc3RlcmVkTGF5ZXJzLmVuZCgpOworICAgIGZvciAoSGFzaFNldDxXZWJDb3JlOjpXZWJHcmFw
aGljc0xheWVyKj46Oml0ZXJhdG9yIGl0ID0gcmVnaXN0ZXJlZExheWVycy5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpCisgICAgICAgICgqaXQpLT5zZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50KDAp
OwogfQogCiBMYXllclRyZWVIb3N0UXQ6OkxheWVyVHJlZUhvc3RRdChXZWJQYWdlKiB3ZWJQYWdl
KQpAQCAtNjMsNiArNjgsNyBAQCBMYXllclRyZWVIb3N0UXQ6OkxheWVyVHJlZUhvc3RRdChXZWJQ
YWdlKiB3ZWJQYWdlKQogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgICwgbV93YWl0
aW5nRm9yVUlQcm9jZXNzKGZhbHNlKQogICAgICwgbV9pc1N1c3BlbmRlZChmYWxzZSkKKyAgICAs
IG1fY29udGVudHNTY2FsZSgxKQogI2VuZGlmCiAgICAgLCBtX3Nob3VsZFN5bmNGcmFtZShmYWxz
ZSkKICAgICAsIG1fc2hvdWxkU3luY1Jvb3RMYXllcih0cnVlKQpAQCAtODMsNyArODksNyBAQCBM
YXllclRyZWVIb3N0UXQ6OkxheWVyVHJlZUhvc3RRdChXZWJQYWdlKiB3ZWJQYWdlKQogCiAgICAg
bV9ub25Db21wb3NpdGVkQ29udGVudExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKHRoaXMp
OwogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgIHRvV2ViR3JhcGhpY3NMYXllciht
X3Jvb3RMYXllci5nZXQoKSktPnNldExheWVyVHJlZVRpbGVDbGllbnQodGhpcyk7CisgICAgdG9X
ZWJHcmFwaGljc0xheWVyKG1fcm9vdExheWVyLmdldCgpKS0+c2V0V2ViR3JhcGhpY3NMYXllckNs
aWVudCh0aGlzKTsKICNlbmRpZgogI2lmbmRlZiBOREVCVUcKICAgICBtX25vbkNvbXBvc2l0ZWRD
b250ZW50TGF5ZXItPnNldE5hbWUoIkxheWVyVHJlZUhvc3RRdCBub24tY29tcG9zaXRlZCBjb250
ZW50Iik7CkBAIC0yMzIsMTAgKzIzOCwxOSBAQCB2b2lkIExheWVyVHJlZUhvc3RRdDo6ZGlkU3lu
Y0NvbXBvc2l0aW5nU3RhdGVGb3JMYXllcihjb25zdCBXZWJMYXllckluZm8mIGluZm8pCiAgICAg
bV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVIb3N0UHJveHk6OlN5bmNDb21wb3Np
dGluZ0xheWVyU3RhdGUoaW5mbykpOwogfQogCi12b2lkIExheWVyVHJlZUhvc3RRdDo6ZGlkRGVs
ZXRlTGF5ZXIoV2ViTGF5ZXJJRCBpZCkKK3ZvaWQgTGF5ZXJUcmVlSG9zdFF0OjphdHRhY2hMYXll
cihXZWJHcmFwaGljc0xheWVyKiBsYXllcikKK3sKKyAgICBBU1NFUlQoIW1fcmVnaXN0ZXJlZExh
eWVycy5jb250YWlucyhsYXllcikpOworICAgIG1fcmVnaXN0ZXJlZExheWVycy5hZGQobGF5ZXIp
OworCisgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlKG1fdmlzaWJsZUNv
bnRlbnRzUmVjdCwgbV9jb250ZW50c1NjYWxlKTsKK30KKwordm9pZCBMYXllclRyZWVIb3N0UXQ6
OmRldGFjaExheWVyKFdlYkdyYXBoaWNzTGF5ZXIqIGxheWVyKQogeworICAgIG1fcmVnaXN0ZXJl
ZExheWVycy5yZW1vdmUobGF5ZXIpOwogICAgIG1fc2hvdWxkU3luY0ZyYW1lID0gdHJ1ZTsKLSAg
ICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUhvc3RQcm94eTo6RGVsZXRlQ29t
cG9zaXRpbmdMYXllcihpZCkpOworICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJU
cmVlSG9zdFByb3h5OjpEZWxldGVDb21wb3NpdGluZ0xheWVyKGxheWVyLT5pZCgpKSk7CiB9CiAK
IHZvaWQgTGF5ZXJUcmVlSG9zdFF0OjpwZXJmb3JtU2NoZWR1bGVkTGF5ZXJGbHVzaCgpCkBAIC00
MDMsMTAgKzQxOCwxNSBAQCB2b2lkIExheWVyVHJlZUhvc3RRdDo6cmVtb3ZlVGlsZShXZWJMYXll
cklEIGxheWVySUQsIGludCB0aWxlSUQpCiAKIHZvaWQgTGF5ZXJUcmVlSG9zdFF0OjpzZXRWaXNp
YmxlQ29udGVudFJlY3RBbmRTY2FsZShjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9hdCBzY2FsZSkK
IHsKLSAgICBpZiAobV9yb290TGF5ZXIpIHsKLSAgICAgICAgdG9XZWJHcmFwaGljc0xheWVyKG1f
cm9vdExheWVyLmdldCgpKS0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUocmVjdCwgc2Nh
bGUpOwotICAgICAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKLSAgICB9CisgICAgaWYgKHJlY3Qg
PT0gbV92aXNpYmxlQ29udGVudHNSZWN0ICYmIHNjYWxlID09IG1fY29udGVudHNTY2FsZSkKKyAg
ICAgICAgcmV0dXJuOworICAgIG1fdmlzaWJsZUNvbnRlbnRzUmVjdCA9IHJlY3Q7CisgICAgbV9j
b250ZW50c1NjYWxlID0gc2NhbGU7CisKKyAgICBIYXNoU2V0PFdlYkNvcmU6OldlYkdyYXBoaWNz
TGF5ZXIqPjo6aXRlcmF0b3IgZW5kID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgpOworICAgIGZv
ciAoSGFzaFNldDxXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyKj46Oml0ZXJhdG9yIGl0ID0gbV9y
ZWdpc3RlcmVkTGF5ZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgKCppdCkt
PnNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlKHJlY3QsIHNjYWxlKTsKKyAgICBzY2hlZHVs
ZUxheWVyRmx1c2goKTsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0UXQ6OnNldFZpc2libGVDb250
ZW50UmVjdFRyYWplY3RvcnlWZWN0b3IoY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3Rv
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXll
clRyZWVIb3N0UXQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXll
clRyZWVIb3N0UXQuaAppbmRleCAwN2YwNGU4OGExYTQyMjJmYzkxNDFhZDdjODk0MGU0NDcyZjE1
NGVhLi5lMTgxMWNjMjUyZjNlZDc5MzI0MjA5MGVlYjUwODk1NzEyNDczYTI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0LmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RR
dC5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIExheWVyVHJlZUhv
c3RRdCA6IHB1YmxpYyBMYXllclRyZWVIb3N0LCBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xpZW50
CiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgICAgICAgICAgICAgICAgICAgLCBw
dWJsaWMgV2ViTGF5ZXJUcmVlVGlsZUNsaWVudAorICAgICAgICAgICAgICAgICAgICAgICwgcHVi
bGljIFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQKICNlbmRpZgogewogcHVibGljOgpAQCAtNzUsNyAr
NzUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVDb250ZW50UmVjdEFu
ZFNjYWxlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBmbG9hdCBzY2FsZSk7CiAgICAgdmlydHVh
bCB2b2lkIHNldFZpc2libGVDb250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3IoY29uc3QgV2ViQ29y
ZTo6RmxvYXRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTeW5jQ29tcG9zaXRpbmdTdGF0
ZUZvckxheWVyKGNvbnN0IFdlYkxheWVySW5mbyYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWREZWxl
dGVMYXllcihXZWJMYXllcklEKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoTGF5ZXIoV2ViQ29y
ZTo6V2ViR3JhcGhpY3NMYXllciopOworICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hMYXllcihXZWJD
b3JlOjpXZWJHcmFwaGljc0xheWVyKik7CiAjZW5kaWYKIAogcHJvdGVjdGVkOgpAQCAtMTA2LDYg
KzEwNyw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhlIHBhZ2Ugb3ZlcmxheSBsYXllci4gV2lsbCBi
ZSBudWxsIGlmIHRoZXJlJ3Mgbm8gcGFnZSBvdmVybGF5LgogICAgIE93blB0cjxXZWJDb3JlOjpH
cmFwaGljc0xheWVyPiBtX3BhZ2VPdmVybGF5TGF5ZXI7CiAKKyAgICBIYXNoU2V0PFdlYkNvcmU6
OldlYkdyYXBoaWNzTGF5ZXIqPiBtX3JlZ2lzdGVyZWRMYXllcnM7CiAgICAgSGFzaE1hcDxpbnQ2
NF90LCBpbnQ+IG1fZGlyZWN0bHlDb21wb3NpdGVkSW1hZ2VSZWZDb3VudHM7CiAKICAgICBib29s
IG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoOwpAQCAtMTEzLDYgKzExNSw4IEBAIHBy
aXZhdGU6CiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgYm9vbCBtX3dhaXRpbmdG
b3JVSVByb2Nlc3M7CiAgICAgYm9vbCBtX2lzU3VzcGVuZGVkOworICAgIFdlYkNvcmU6OkludFJl
Y3QgbV92aXNpYmxlQ29udGVudHNSZWN0OworICAgIGZsb2F0IG1fY29udGVudHNTY2FsZTsKICNl
bmRpZgogICAgIExheWVyVHJlZUNvbnRleHQgbV9sYXllclRyZWVDb250ZXh0OwogICAgIGJvb2wg
bV9zaG91bGRTeW5jRnJhbWU7Cg==
</data>
<flag name="review"
          id="127761"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
      

    </bug>

</bugzilla>