<?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>87602</bug_id>
          
          <creation_ts>2012-05-27 15:05:14 -0700</creation_ts>
          <short_desc>[BlackBerry] Make it possible to manipulate layers on the compositing thread</short_desc>
          <delta_ts>2012-05-28 15:23:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit BlackBerry</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>87601</dependson>
          <blocked>87603</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Arvid Nilsson">anilsson</reporter>
          <assigned_to name="Arvid Nilsson">anilsson</assigned_to>
          <cc>kpiascik</cc>
    
    <cc>manyoso</cc>
    
    <cc>mifenton</cc>
    
    <cc>mlattanzio</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>staikos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>634791</commentid>
    <comment_count>0</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-05-27 15:05:14 -0700</bug_when>
    <thetext>Normally, layers are manipulated on the WebKit thread, and the changes are
    synced to the compositing thread during the next accelerated compositing commit
    operation.
    
    However, for overlay layers the ability to manipulate layers on the compositing
    thread is necessary for adequate user interface responsiveness.
    
    Two mechanisms are added:
    1. For a layer with a WebKit-thread counterpart, you can temporarily override
    attributes or add animations whose output override attributes.
    2. For a layer with no WebKit-thread counterpart, you can now directly set the
    compositing thread values for attributes. If you attempt to do this for layers
    that do have a WebKit-thread counterpart, the compositing thread values will
    be overwritten at the time of the next commit, which makes the override
    mechanism more useful there.
    
    PR #156812


Please note that this has not been internally reviewed yet, so it needs actual review. And also, it has a dependency that needs to be landed first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634804</commentid>
    <comment_count>1</comment_count>
      <attachid>144244</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-05-27 15:42:11 -0700</bug_when>
    <thetext>Created attachment 144244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634808</commentid>
    <comment_count>2</comment_count>
      <attachid>144247</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-05-27 16:01:33 -0700</bug_when>
    <thetext>Created attachment 144247
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634809</commentid>
    <comment_count>3</comment_count>
      <attachid>144244</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-05-27 16:08:41 -0700</bug_when>
    <thetext>Comment on attachment 144244
Patch

Hmm, sorry about that, webkit-upload got the bug wrong</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635295</commentid>
    <comment_count>4</comment_count>
      <attachid>144244</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-05-28 09:48:08 -0700</bug_when>
    <thetext>Comment on attachment 144244
Patch

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

&gt; Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.h:77
&gt; +    FloatPoint position;
&gt; +    FloatPoint anchorPoint;
&gt; +    IntSize bounds;
&gt; +    TransformationMatrix transform;
&gt; +    float opacity;
&gt; +    Vector&lt;RefPtr&lt;LayerAnimation&gt; &gt; m_animations;

All members don&apos;t have &quot;m_&quot; prefix but m_animations. Should be in same style?

More thought: how to avoid people from setting those members directly and forgetting to set the flags?

I would rather make them private, and provide read-only get() methods for them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635324</commentid>
    <comment_count>5</comment_count>
      <attachid>144244</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-05-28 10:59:04 -0700</bug_when>
    <thetext>Comment on attachment 144244
Patch

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

Ok, can be cleaned up a bit more I think.

&gt; Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.cpp:394
&gt; +    layer-&gt;setSuperlayer(this);

Would it make sense for setSuperlayer to call removeFromSuperlayer internally?

&gt; Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.cpp:498
&gt; +    if (m_override) {

Should probably use early return style here, code will be more readable.

&gt;&gt; Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.h:77
&gt;&gt; +    Vector&lt;RefPtr&lt;LayerAnimation&gt; &gt; m_animations;
&gt; 
&gt; All members don&apos;t have &quot;m_&quot; prefix but m_animations. Should be in same style?
&gt; 
&gt; More thought: how to avoid people from setting those members directly and forgetting to set the flags?
&gt; 
&gt; I would rather make them private, and provide read-only get() methods for them.

Agree with Yong, m_ is a good prefix to use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635403</commentid>
    <comment_count>6</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-05-28 14:12:06 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 144244 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=144244&amp;action=review
&gt; 
&gt; Ok, can be cleaned up a bit more I think.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.cpp:394
&gt; &gt; +    layer-&gt;setSuperlayer(this);
&gt; 
&gt; Would it make sense for setSuperlayer to call removeFromSuperlayer internally?

That&apos;s a great suggestion! However, normally the layer hierarchy on the compositing thread is updated in void LayerWebKitThread::updateLayerHierarchy(), by forcing the compositing thread hierarchy to be equal to the webkit thread hieararchy. That&apos;s why there&apos;s no sanity checks in the set methods (setsuperlayer, setsublayers). Cleaning that up should be a separate patch I think.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.cpp:498
&gt; &gt; +    if (m_override) {
&gt; 
&gt; Should probably use early return style here, code will be more readable.
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.h:77
&gt; &gt;&gt; +    Vector&lt;RefPtr&lt;LayerAnimation&gt; &gt; m_animations;
&gt; &gt; 
&gt; &gt; All members don&apos;t have &quot;m_&quot; prefix but m_animations. Should be in same style?
&gt; &gt; 
&gt; &gt; More thought: how to avoid people from setting those members directly and forgetting to set the flags?
&gt; &gt; 
&gt; &gt; I would rather make them private, and provide read-only get() methods for them.
&gt; 
&gt; Agree with Yong, m_ is a good prefix to use.

New patch forthcoming</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635413</commentid>
    <comment_count>7</comment_count>
      <attachid>144397</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-05-28 14:26:52 -0700</bug_when>
    <thetext>Created attachment 144397
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635416</commentid>
    <comment_count>8</comment_count>
      <attachid>144397</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-05-28 14:30:31 -0700</bug_when>
    <thetext>Comment on attachment 144397
Patch

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635423</commentid>
    <comment_count>9</comment_count>
      <attachid>144397</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-28 14:53:25 -0700</bug_when>
    <thetext>Comment on attachment 144397
Patch

Rejecting attachment 144397 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

Last 500 characters of output:
  return self.open(self.click(*args, **kwds))
  File &quot;/mnt/git/webkit-commit-queue/Tools/Scripts/webkitpy/thirdparty/autoinstalled/mechanize/_mechanize.py&quot;, line 203, in open
    return self._mech_open(url, data, timeout=timeout)
  File &quot;/mnt/git/webkit-commit-queue/Tools/Scripts/webkitpy/thirdparty/autoinstalled/mechanize/_mechanize.py&quot;, line 255, in _mech_open
    raise response
webkitpy.thirdparty.autoinstalled.mechanize._response.httperror_seek_wrapper: HTTP Error 500: Internal Server Error

Full output: http://queues.webkit.org/results/12846288</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635433</commentid>
    <comment_count>10</comment_count>
      <attachid>144397</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-28 15:22:55 -0700</bug_when>
    <thetext>Comment on attachment 144397
Patch

Clearing flags on attachment: 144397

Committed r118709: &lt;http://trac.webkit.org/changeset/118709&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635434</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-28 15:23:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144244</attachid>
            <date>2012-05-27 15:42:11 -0700</date>
            <delta_ts>2012-05-28 14:26:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87602-20120528004210.patch</filename>
            <type>text/plain</type>
            <size>12869</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTZmNTdhNzUxNDUxMmYz
NjEyNTE2ZTdiODU0ZWU3NTMzOTcwYjI4NS4uNmQ0YzEwZDIxNTBlYjE1MGY1NDk1Y2QxZWVjOGRh
ZWY0ZWMyZjE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYzIEBACiAyMDEyLTA1LTI3ICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KIAorICAgICAgICBbQmxhY2tCZXJyeV0gTWFr
ZSBpdCBwb3NzaWJsZSB0byBtYW5pcHVsYXRlIGxheWVycyBvbiB0aGUgY29tcG9zaXRpbmcgdGhy
ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzYw
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vcm1h
bGx5LCBsYXllcnMgYXJlIG1hbmlwdWxhdGVkIG9uIHRoZSBXZWJLaXQgdGhyZWFkLCBhbmQgdGhl
IGNoYW5nZXMgYXJlCisgICAgICAgIHN5bmNlZCB0byB0aGUgY29tcG9zaXRpbmcgdGhyZWFkIGR1
cmluZyB0aGUgbmV4dCBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBjb21taXQKKyAgICAgICAgb3Bl
cmF0aW9uLgorCisgICAgICAgIEhvd2V2ZXIsIGZvciBvdmVybGF5IGxheWVycyB0aGUgYWJpbGl0
eSB0byBtYW5pcHVsYXRlIGxheWVycyBvbiB0aGUgY29tcG9zaXRpbmcKKyAgICAgICAgdGhyZWFk
IGlzIG5lY2Vzc2FyeSBmb3IgYWRlcXVhdGUgdXNlciBpbnRlcmZhY2UgcmVzcG9uc2l2ZW5lc3Mu
CisKKyAgICAgICAgVHdvIG1lY2hhbmlzbXMgYXJlIGFkZGVkOgorICAgICAgICAxLiBGb3IgYSBs
YXllciB3aXRoIGEgV2ViS2l0LXRocmVhZCBjb3VudGVycGFydCwgeW91IGNhbiB0ZW1wb3Jhcmls
eSBvdmVycmlkZQorICAgICAgICBhdHRyaWJ1dGVzIG9yIGFkZCBhbmltYXRpb25zIHdob3NlIG91
dHB1dCBvdmVycmlkZSBhdHRyaWJ1dGVzLgorICAgICAgICAyLiBGb3IgYSBsYXllciB3aXRoIG5v
IFdlYktpdC10aHJlYWQgY291bnRlcnBhcnQsIHlvdSBjYW4gbm93IGRpcmVjdGx5IHNldCB0aGUK
KyAgICAgICAgY29tcG9zaXRpbmcgdGhyZWFkIHZhbHVlcyBmb3IgYXR0cmlidXRlcy4gSWYgeW91
IGF0dGVtcHQgdG8gZG8gdGhpcyBmb3IgbGF5ZXJzCisgICAgICAgIHRoYXQgZG8gaGF2ZSBhIFdl
YktpdC10aHJlYWQgY291bnRlcnBhcnQsIHRoZSBjb21wb3NpdGluZyB0aHJlYWQgdmFsdWVzIHdp
bGwKKyAgICAgICAgYmUgb3ZlcndyaXR0ZW4gYXQgdGhlIHRpbWUgb2YgdGhlIG5leHQgY29tbWl0
LCB3aGljaCBtYWtlcyB0aGUgb3ZlcnJpZGUKKyAgICAgICAgbWVjaGFuaXNtIG1vcmUgdXNlZnVs
IHRoZXJlLgorCisgICAgICAgIFBSICMxNTY4MTIKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkOjphZGRTdWJsYXllcik6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnVwZGF0ZUFu
aW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6cmVt
b3ZlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQ6
Om92ZXJyaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OmNs
ZWFyT3ZlcnJpZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5
ZXJDb21wb3NpdGluZ1RocmVhZC5oOgorICAgICAgICAoTGF5ZXJPdmVycmlkZSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllck92ZXJyaWRlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJPdmVycmlkZTo6c2V0UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJPdmVycmlk
ZTo6c2V0QW5jaG9yUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJPdmVycmlkZTo6c2V0
Qm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyT3ZlcnJpZGU6OnNldFRyYW5zZm9ybSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllck92ZXJyaWRlOjpzZXRPcGFjaXR5KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyT3ZlcnJpZGU6OmFkZEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllck92ZXJyaWRlOjpMYXllck92ZXJyaWRlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNv
bXBvc2l0aW5nVGhyZWFkOjpzZXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNv
bXBvc2l0aW5nVGhyZWFkOjpzZXRBbmNob3JQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
ckNvbXBvc2l0aW5nVGhyZWFkOjpzZXRCb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJD
b21wb3NpdGluZ1RocmVhZDo6c2V0U2l6ZUlzU2NhbGVJbnZhcmlhbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnNldE9wYWNpdHkpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6c2V0TmVlZHNUZXh0dXJlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyV2ViS2l0VGhyZWFkLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyV2ViS2l0VGhyZWFkOjpMYXllcldlYktpdFRocmVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllcldlYktpdFRocmVhZDo6Y29tbWl0T25Db21wb3NpdGluZ1Ro
cmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktp
dFRocmVhZC5oOgorICAgICAgICAoTGF5ZXJXZWJLaXRUaHJlYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJXZWJLaXRUaHJlYWQ6OmNsZWFyT3ZlcnJpZGUpOgorCisyMDEyLTA1LTI3ICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKwogICAgICAgICBbQmxhY2tCZXJyeV0gQWRk
IHN1cHBvcnQgZm9yIGxheWVycyB3aXRoIHNjYWxlIGludmFyaWFudCBzaXplCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzYwMQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9z
aXRpbmdUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmNwcAppbmRleCBlOGJmNjcxYzgzZTFiODM0OTZm
MzM4NjEzMDZjMTI1MWIwNTdjMzMyLi5jZjljN2Y0YzcwY2IxNzQ2M2Y3Y2Y1YmIxYmNlMzNkODE5
ZDc3M2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5jcHAKQEAg
LTM4OCw2ICszODgsMTMgQEAgY29uc3QgTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogTGF5ZXJDb21w
b3NpdGluZ1RocmVhZDo6cm9vdExheWVyKCkgY29uc3QKICAgICByZXR1cm4gbGF5ZXI7CiB9CiAK
K3ZvaWQgTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6YWRkU3VibGF5ZXIoTGF5ZXJDb21wb3NpdGlu
Z1RocmVhZCogbGF5ZXIpCit7CisgICAgbGF5ZXItPnJlbW92ZUZyb21TdXBlcmxheWVyKCk7Cisg
ICAgbGF5ZXItPnNldFN1cGVybGF5ZXIodGhpcyk7CisgICAgbV9zdWJsYXllcnMuYXBwZW5kKGxh
eWVyKTsKK30KKwogdm9pZCBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpyZW1vdmVGcm9tU3VwZXJs
YXllcigpCiB7CiAgICAgaWYgKG1fc3VwZXJsYXllcikKQEAgLTQ4NSw3ICs0OTIsMzAgQEAgYm9v
bCBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjp1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBjdXJyZW50
VGltZSkKICAgICAgICAgYW5pbWF0aW9uLT5hcHBseSh0aGlzLCBlbGFwc2VkVGltZSk7CiAgICAg
fQogCi0gICAgcmV0dXJuICFtX3J1bm5pbmdBbmltYXRpb25zLmlzRW1wdHkoKTsKKyAgICBib29s
IGhhc1J1bm5pbmdBbmltYXRpb25zID0gIW1fcnVubmluZ0FuaW1hdGlvbnMuaXNFbXB0eSgpOwor
CisgICAgLy8gSWYgdGhlcmUgYXJlIGFueSBvdmVycmlkZXMsIGFwcGx5IHRoZW0KKyAgICBpZiAo
bV9vdmVycmlkZSkgeworICAgICAgICBpZiAobV9vdmVycmlkZS0+cG9zaXRpb25TZXQpCisgICAg
ICAgICAgICBtX3Bvc2l0aW9uID0gbV9vdmVycmlkZS0+cG9zaXRpb247CisgICAgICAgIGlmICht
X292ZXJyaWRlLT5hbmNob3JQb2ludFNldCkKKyAgICAgICAgICAgIG1fYW5jaG9yUG9pbnQgPSBt
X292ZXJyaWRlLT5hbmNob3JQb2ludDsKKyAgICAgICAgaWYgKG1fb3ZlcnJpZGUtPmJvdW5kc1Nl
dCkKKyAgICAgICAgICAgIG1fYm91bmRzID0gbV9vdmVycmlkZS0+Ym91bmRzOworICAgICAgICBp
ZiAobV9vdmVycmlkZS0+dHJhbnNmb3JtU2V0KQorICAgICAgICAgICAgbV90cmFuc2Zvcm0gPSBt
X292ZXJyaWRlLT50cmFuc2Zvcm07CisgICAgICAgIGlmIChtX292ZXJyaWRlLT5vcGFjaXR5U2V0
KQorICAgICAgICAgICAgbV9vcGFjaXR5ID0gbV9vdmVycmlkZS0+b3BhY2l0eTsKKworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fb3ZlcnJpZGUtPm1fYW5pbWF0aW9ucy5zaXplKCk7
ICsraSkgeworICAgICAgICAgICAgTGF5ZXJBbmltYXRpb24qIGFuaW1hdGlvbiA9IG1fcnVubmlu
Z0FuaW1hdGlvbnNbaV0uZ2V0KCk7CisgICAgICAgICAgICBkb3VibGUgZWxhcHNlZFRpbWUgPSAo
bV9zdXNwZW5kVGltZSA/IG1fc3VzcGVuZFRpbWUgOiBjdXJyZW50VGltZSkgLSBhbmltYXRpb24t
PnN0YXJ0VGltZSgpICsgYW5pbWF0aW9uLT50aW1lT2Zmc2V0KCk7CisgICAgICAgICAgICBhbmlt
YXRpb24tPmFwcGx5KHRoaXMsIGVsYXBzZWRUaW1lKTsKKyAgICAgICAgICAgIGhhc1J1bm5pbmdB
bmltYXRpb25zIHw9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gaGFzUnVu
bmluZ0FuaW1hdGlvbnM7CiB9CiAKIGJvb2wgTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6aGFzVmlz
aWJsZUhvbGVQdW5jaFJlY3QoKSBjb25zdApAQCAtNTA3LDYgKzUzNywyOCBAQCB2b2lkIExheWVy
Q29tcG9zaXRpbmdUaHJlYWQ6OmNyZWF0ZUxheWVyUmVuZGVyZXJTdXJmYWNlKCkKICAgICBtX2xh
eWVyUmVuZGVyZXJTdXJmYWNlID0gYWRvcHRQdHIobmV3IExheWVyUmVuZGVyZXJTdXJmYWNlKG1f
bGF5ZXJSZW5kZXJlciwgdGhpcykpOwogfQogCit2b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6
OnJlbW92ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX3J1bm5pbmdBbmltYXRpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlm
IChtX3J1bm5pbmdBbmltYXRpb25zW2ldLT5uYW1lKCkgPT0gbmFtZSkgeworICAgICAgICAgICAg
bV9ydW5uaW5nQW5pbWF0aW9ucy5yZW1vdmUoaSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK0xheWVyT3ZlcnJpZGUqIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6
Om92ZXJyaWRlKCkKK3sKKyAgICBpZiAoIW1fb3ZlcnJpZGUpCisgICAgICAgIG1fb3ZlcnJpZGUg
PSBMYXllck92ZXJyaWRlOjpjcmVhdGUoKTsKKyAgICByZXR1cm4gbV9vdmVycmlkZS5nZXQoKTsK
K30KKwordm9pZCBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpjbGVhck92ZXJyaWRlKCkKK3sKKyAg
ICBtX292ZXJyaWRlLmNsZWFyKCk7Cit9CisKIH0KIAogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmgKaW5k
ZXggOWU3NzA0MDgyNGY5YjliYTJmMTVkZDgwMjY0NGJmNjBmOWY4YjcwNy4uYjg2YjI1OGU4NTY5
ZWI0ZmU5YzBjNjZhYTJjOWJlNDc1NzA2ODUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBv
c2l0aW5nVGhyZWFkLmgKQEAgLTU3LDYgKzU3LDQzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIExheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQ7CiBjbGFzcyBMYXllclJlbmRlcmVyOwog
CitjbGFzcyBMYXllck92ZXJyaWRlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxM
YXllck92ZXJyaWRlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFB0cihuZXcgTGF5ZXJPdmVycmlk
ZSgpKTsgfQorCisgICAgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlv
bikgeyB0aGlzLT5wb3NpdGlvbiA9IHBvc2l0aW9uOyBwb3NpdGlvblNldCA9IHRydWU7IH0KKyAg
ICB2b2lkIHNldEFuY2hvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50KSB7IHRo
aXMtPmFuY2hvclBvaW50ID0gYW5jaG9yUG9pbnQ7IGFuY2hvclBvaW50U2V0ID0gdHJ1ZTsgfQor
ICAgIHZvaWQgc2V0Qm91bmRzKGNvbnN0IEludFNpemUmKSB7IHRoaXMtPmJvdW5kcyA9IGJvdW5k
czsgYm91bmRzU2V0ID0gdHJ1ZTsgfQorICAgIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pIHsgdGhpcy0+dHJhbnNmb3JtID0gdHJhbnNmb3Jt
OyB0cmFuc2Zvcm1TZXQgPSB0cnVlOyB9CisgICAgdm9pZCBzZXRPcGFjaXR5KGZsb2F0KSB7IHRo
aXMtPm9wYWNpdHkgPSBvcGFjaXR5OyBvcGFjaXR5U2V0ID0gdHJ1ZTsgfQorICAgIHZvaWQgYWRk
QW5pbWF0aW9uKFBhc3NSZWZQdHI8TGF5ZXJBbmltYXRpb24+IGFuaW1hdGlvbikgeyBtX2FuaW1h
dGlvbnMuYXBwZW5kKGFuaW1hdGlvbik7IH0KKyAgICB2b2lkIHJlbW92ZUFuaW1hdGlvbihjb25z
dCBTdHJpbmcmIG5hbWUpOworCisgICAgRmxvYXRQb2ludCBwb3NpdGlvbjsKKyAgICBGbG9hdFBv
aW50IGFuY2hvclBvaW50OworICAgIEludFNpemUgYm91bmRzOworICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IHRyYW5zZm9ybTsKKyAgICBmbG9hdCBvcGFjaXR5OworICAgIFZlY3RvcjxSZWZQdHI8
TGF5ZXJBbmltYXRpb24+ID4gbV9hbmltYXRpb25zOworCisgICAgdW5zaWduZWQgcG9zaXRpb25T
ZXQgOiAxOworICAgIHVuc2lnbmVkIGFuY2hvclBvaW50U2V0IDogMTsKKyAgICB1bnNpZ25lZCBi
b3VuZHNTZXQgOiAxOworICAgIHVuc2lnbmVkIHRyYW5zZm9ybVNldCA6IDE7CisgICAgdW5zaWdu
ZWQgb3BhY2l0eVNldCA6IDE7CisKK3ByaXZhdGU6CisgICAgTGF5ZXJPdmVycmlkZSgpCisgICAg
ICAgIDogb3BhY2l0eSgxLjApCisgICAgICAgICwgcG9zaXRpb25TZXQoZmFsc2UpCisgICAgICAg
ICwgYW5jaG9yUG9pbnRTZXQoZmFsc2UpCisgICAgICAgICwgYm91bmRzU2V0KGZhbHNlKQorICAg
ICAgICAsIHRyYW5zZm9ybVNldChmYWxzZSkKKyAgICAgICAgLCBvcGFjaXR5U2V0KGZhbHNlKQor
ICAgIHsKKyAgICB9Cit9OworCiBjbGFzcyBMYXllckNvbXBvc2l0aW5nVGhyZWFkIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPExheWVyQ29tcG9zaXRpbmdUaHJlYWQ+LCBwdWJsaWMgTGF5
ZXJEYXRhLCBwdWJsaWMgQmxhY2tCZXJyeTo6UGxhdGZvcm06Okd1YXJkZWRQb2ludGVyQmFzZSB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TGF5ZXJDb21wb3NpdGluZ1RocmVhZD4g
Y3JlYXRlKExheWVyVHlwZSwgTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudCopOwpAQCAtNzAs
NiArMTA3LDE5IEBAIHB1YmxpYzoKIAogICAgIC8vIE5vdCB0aHJlYWQgc2FmZQogCisgICAgLy8g
VGhlc2Ugd2lsbCBiZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCBjb21taXQgaWYgdGhpcyBsYXll
ciBoYXMgYSBMYXllcldlYktpdFRocmVhZCBjb3VudGVycGFydC4KKyAgICAvLyBVc2VmdWwgZm9y
IHN0YW5kLWFsb25lIGxheWVycyB0aGF0IGFyZSBjcmVhdGVkIGFuZCBtYW5hZ2VkIG9uIHRoZSBj
b21wb3NpdGluZyB0aHJlYWQuCisgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGNhbiBhbHNvIGJlIHVz
ZWQgdG8gdXBkYXRlIGFuaW1hdGVkIHByb3BlcnRpZXMgaW4gTGF5ZXJBbmltYXRpb24uCisgICAg
dm9pZCBzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikgeyBtX3Bvc2l0aW9u
ID0gcG9zaXRpb247IH0KKyAgICB2b2lkIHNldEFuY2hvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQm
IGFuY2hvclBvaW50KSB7IG1fYW5jaG9yUG9pbnQgPSBhbmNob3JQb2ludDsgfQorICAgIHZvaWQg
c2V0Qm91bmRzKGNvbnN0IEludFNpemUmIGJvdW5kcykgeyBtX2JvdW5kcyA9IGJvdW5kczsgfQor
ICAgIHZvaWQgc2V0U2l6ZUlzU2NhbGVJbnZhcmlhbnQoYm9vbCBpbnZhcmlhbnQpIHsgbV9zaXpl
SXNTY2FsZUludmFyaWFudCA9IGludmFyaWFudDsgfQorICAgIHZvaWQgc2V0VHJhbnNmb3JtKGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpIHsgbV90cmFuc2Zvcm0gPSBtYXRyaXg7
IH0KKyAgICB2b2lkIHNldE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkgeyBtX29wYWNpdHkgPSBvcGFj
aXR5OyB9CisgICAgdm9pZCBhZGRTdWJsYXllcihMYXllckNvbXBvc2l0aW5nVGhyZWFkKik7Cisg
ICAgdm9pZCByZW1vdmVGcm9tU3VwZXJsYXllcigpOworICAgIHZvaWQgc2V0TmVlZHNUZXh0dXJl
KGJvb2wgbmVlZHNUZXh0dXJlKSB7IG1fbmVlZHNUZXh0dXJlID0gbmVlZHNUZXh0dXJlOyB9CisK
ICAgICAvLyBSZXR1cm5zIHRydWUgaWYgd2UgaGF2ZSBhbiBhbmltYXRpb24KICAgICBib29sIHVw
ZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGN1cnJlbnRUaW1lKTsKICAgICB2b2lkIHVwZGF0ZVRleHR1
cmVDb250ZW50c0lmTmVlZGVkKCk7CkBAIC0xMjgsMTggKzE3OCwxOSBAQCBwdWJsaWM6CiAgICAg
Ly8gdGhpcyBhbGxvd3MgeW91IHRvIGRvIGl0IGZyb20gdGhlIGNvbXBvc2l0aW5nIHRocmVhZC4K
ICAgICB2b2lkIHNjaGVkdWxlQ29tbWl0KCk7CiAKLSAgICAvLyBUaGVzZSB0d28gZnVuY3Rpb25z
IGFyZSB1c2VkIHRvIHVwZGF0ZSBhbmltYXRlZCBwcm9wZXJ0aWVzIGluIExheWVyQW5pbWF0aW9u
LgotICAgIHZvaWQgc2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5KSB7IG1fb3BhY2l0eSA9IG9wYWNp
dHk7IH0KLSAgICB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
bWF0cml4KSB7IG1fdHJhbnNmb3JtID0gbWF0cml4OyB9Ci0KICAgICBib29sIGhhc1J1bm5pbmdB
bmltYXRpb25zKCkgY29uc3QgeyByZXR1cm4gIW1fcnVubmluZ0FuaW1hdGlvbnMuaXNFbXB0eSgp
OyB9CiAKICAgICBib29sIGhhc1Zpc2libGVIb2xlUHVuY2hSZWN0KCkgY29uc3Q7CiAKICAgICB2
b2lkIGFkZEFuaW1hdGlvbihMYXllckFuaW1hdGlvbiogYW5pbWF0aW9uKSB7IG1fcnVubmluZ0Fu
aW1hdGlvbnMuYXBwZW5kKGFuaW1hdGlvbik7IH0KKyAgICB2b2lkIHJlbW92ZUFuaW1hdGlvbihj
b25zdCBTdHJpbmcmIG5hbWUpOworCiAgICAgdm9pZCBzZXRSdW5uaW5nQW5pbWF0aW9ucyhjb25z
dCBWZWN0b3I8UmVmUHRyPExheWVyQW5pbWF0aW9uPiA+JiBhbmltYXRpb25zKSB7IG1fcnVubmlu
Z0FuaW1hdGlvbnMgPSBhbmltYXRpb25zOyB9CiAgICAgdm9pZCBzZXRTdXNwZW5kZWRBbmltYXRp
b25zKGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJBbmltYXRpb24+ID4mIGFuaW1hdGlvbnMpIHsg
bV9zdXNwZW5kZWRBbmltYXRpb25zID0gYW5pbWF0aW9uczsgfQogCisgICAgTGF5ZXJPdmVycmlk
ZSogb3ZlcnJpZGUoKTsKKyAgICB2b2lkIGNsZWFyT3ZlcnJpZGUoKTsKKwogcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgfkxheWVyQ29tcG9zaXRpbmdUaHJlYWQoKTsKIApAQCAtMTQ4LDEwICsxOTks
NiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVUaWxlQ29udGVudHMoY29uc3QgSW50UmVj
dCYgdGlsZSk7CiAKLSAgICB2b2lkIHJlbW92ZUZyb21TdXBlcmxheWVyKCk7Ci0KLSAgICBzaXpl
X3QgbnVtU3VibGF5ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9zdWJsYXllcnMuc2l6ZSgpOyB9Ci0K
ICAgICAvLyBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgc3VibGF5ZXIgb3IgLTEgaWYgbm90IGZv
dW5kLgogICAgIGludCBpbmRleE9mU3VibGF5ZXIoY29uc3QgTGF5ZXJDb21wb3NpdGluZ1RocmVh
ZCopOwogCkBAIC0xODYsNiArMjMzLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVmUHRyPExh
eWVyQW5pbWF0aW9uPiA+IG1fcnVubmluZ0FuaW1hdGlvbnM7CiAgICAgVmVjdG9yPFJlZlB0cjxM
YXllckFuaW1hdGlvbj4gPiBtX3N1c3BlbmRlZEFuaW1hdGlvbnM7CiAKKyAgICBPd25QdHI8TGF5
ZXJPdmVycmlkZT4gbV9vdmVycmlkZTsKICAgICBMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50
KiBtX2NsaWVudDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5jcHAKaW5kZXgg
ZmE1MWY4ZjRmMzJkNjA4N2E4Mzg5NGM0NmE0YjNkZTNhNzgzZTI1Yy4uMTViYmUwYThmMTM4OGEx
NmU0MDE5NGFmZWMyMGE4ZjhiMDJmODQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVh
ZC5jcHAKQEAgLTY0LDYgKzY0LDcgQEAgTGF5ZXJXZWJLaXRUaHJlYWQ6OkxheWVyV2ViS2l0VGhy
ZWFkKExheWVyVHlwZSB0eXBlLCBHcmFwaGljc0xheWVyQmxhY2tCZXJyeSogb3cKICAgICAsIG1f
aXNEcmF3YWJsZShmYWxzZSkKICAgICAsIG1faXNNYXNrKGZhbHNlKQogICAgICwgbV9hbmltYXRp
b25zQ2hhbmdlZChmYWxzZSkKKyAgICAsIG1fY2xlYXJPdmVycmlkZU9uQ29tbWl0KGZhbHNlKQog
ewogICAgIGlmICh0eXBlID09IExheWVyKQogICAgICAgICBtX3RpbGVyID0gTGF5ZXJUaWxlcjo6
Y3JlYXRlKHRoaXMpOwpAQCAtMjg4LDYgKzI4OSwxMCBAQCB2b2lkIExheWVyV2ViS2l0VGhyZWFk
Ojpjb21taXRPbkNvbXBvc2l0aW5nVGhyZWFkKCkKICAgICAgICAgbV9sYXllckNvbXBvc2l0aW5n
VGhyZWFkLT5zZXRTdXNwZW5kZWRBbmltYXRpb25zKG1fc3VzcGVuZGVkQW5pbWF0aW9ucyk7CiAg
ICAgICAgIG1fYW5pbWF0aW9uc0NoYW5nZWQgPSBmYWxzZTsKICAgICB9CisgICAgaWYgKG1fY2xl
YXJPdmVycmlkZU9uQ29tbWl0KSB7CisgICAgICAgIG1fbGF5ZXJDb21wb3NpdGluZ1RocmVhZC0+
Y2xlYXJPdmVycmlkZSgpOworICAgICAgICBtX2NsZWFyT3ZlcnJpZGVPbkNvbW1pdCA9IGZhbHNl
OworICAgIH0KICAgICBtX3Bvc2l0aW9uID0gb2xkUG9zaXRpb247CiAgICAgdXBkYXRlTGF5ZXJI
aWVyYXJjaHkoKTsKICAgICBpZiAobV90aWxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQu
aAppbmRleCBiMWNkM2E4MTRiNWNkNTNlZjg2YWZjMjE4M2M0OWIwZWQyYmIxZGQyLi40OWE0OWJl
NWYxM2M5MDA5MDdlNjJlZTgxNTkzOTNjYjMxMTY4ZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyV2ViS2l0VGhyZWFkLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktp
dFRocmVhZC5oCkBAIC0xNDgsNiArMTQ4LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UnVubmlu
Z0FuaW1hdGlvbnMoY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllckFuaW1hdGlvbj4gPiYpOwogICAg
IHZvaWQgc2V0U3VzcGVuZGVkQW5pbWF0aW9ucyhjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyQW5p
bWF0aW9uPiA+Jik7CiAKKyAgICAvLyBBbGxvd3MgeW91IHRvIGNsZWFyIHRoZSBMYXllckNvbXBv
c2l0aW5nVGhyZWFkOjpvdmVycmlkZXMgZnJvbSB0aGUgV0sgdGhyZWFkCisgICAgdm9pZCBjbGVh
ck92ZXJyaWRlKCkgeyBtX2NsZWFyT3ZlcnJpZGVPbkNvbW1pdCA9IHRydWU7IHNldE5lZWRzQ29t
bWl0KCk7IH0KKwogcHJvdGVjdGVkOgogICAgIExheWVyV2ViS2l0VGhyZWFkKExheWVyVHlwZSwg
R3JhcGhpY3NMYXllckJsYWNrQmVycnkqIG93bmVyKTsKIApAQCAtMTk4LDYgKzIwMSw3IEBAIHBy
aXZhdGU6CiAgICAgdW5zaWduZWQgbV9pc0RyYXdhYmxlIDogMTsKICAgICB1bnNpZ25lZCBtX2lz
TWFzayA6IDE7CiAgICAgdW5zaWduZWQgbV9hbmltYXRpb25zQ2hhbmdlZCA6IDE7CisgICAgdW5z
aWduZWQgbV9jbGVhck92ZXJyaWRlT25Db21taXQgOiAxOwogfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144247</attachid>
            <date>2012-05-27 16:01:33 -0700</date>
            <delta_ts>2012-05-27 16:08:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87602-20120528010131.patch</filename>
            <type>text/plain</type>
            <size>18842</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWNlNzM5ZGQ2NWEzNGI0
NWQ0YTJjNGZlMzcxYzZkNmNjNTY0YjI0MS4uZTZmNTdhNzUxNDUxMmYzNjEyNTE2ZTdiODU0ZWU3
NTMzOTcwYjI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUzIEBACiAyMDEyLTA1LTI3ICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KIAorICAgICAgICBbQmxhY2tCZXJyeV0gQWRk
IHN1cHBvcnQgZm9yIGxheWVycyB3aXRoIHNjYWxlIGludmFyaWFudCBzaXplCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzYwMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvIHN1cHBvcnQgbGF5ZXJzIHRo
YXQgaGF2ZSBhICJmbG9hdGluZyIgYXBwZWFyYW5jZSwgaS5lLiBkb24ndCBjaGFuZ2Ugc2l6ZQor
ICAgICAgICB3aGVuIHRoZSB3ZWIgcGFnZSBpcyBkcmF3biBhdCBhIGRpZmZlcmVudCBzY2FsZSwg
d2UgYWRkIGEgbmV3IGxheWVyIHByb3BlcnR5CisgICAgICAgIG5hbWVkICJzaXplSXNTY2FsZUlu
dmFyaWFudCIuCisKKyAgICAgICAgVGhlIGFuY2hvciBwb3NpdGlvbiB3aWxsIHN0aWxsIGJlIGdp
dmVuIGluIGRvY3VtZW50IGNvb3JkaW5hdGVzIGZvciB0aGVzZQorICAgICAgICAiZmxvYXRpbmci
IGxheWVycywgc28gdGhpcyBpcyB3ZWxsIHN1aXRlZCBmb3IgaW50ZXJmYWNlIGVsZW1lbnRzIGxp
a2Ugc2VsZWN0aW9uCisgICAgICAgIGhhbmRsZXMgd2hvc2Ugc2l6ZSBpcyBhbHdheXMgdGhlIHNh
bWUgYnV0IG1vdmUgd2l0aCB0aGUgd2ViIHBhZ2UgY29udGVudHMuCisKKyAgICAgICAgUFIgIzE1
NjgxMgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBv
c2l0aW5nVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJl
YWQ6OnNldERyYXdUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21wb3NpdGlu
Z1RocmVhZDo6ZHJhd1RleHR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRp
bmdUaHJlYWQ6OmRyYXdNaXNzaW5nVGV4dHVyZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oOgorICAgICAgICAoTGF5ZXJD
b21wb3NpdGluZ1RocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9MYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50Lmg6CisgICAgICAgIChMYXllckNvbXBvc2l0
aW5nVGhyZWFkQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJl
YWRDbGllbnQ6OmRyYXdNaXNzaW5nVGV4dHVyZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvTGF5ZXJEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllckRhdGE6
OkxheWVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckRhdGE6OnNpemVJc1NjYWxlSW52
YXJpYW50KToKKyAgICAgICAgKExheWVyRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
UmVuZGVyZXI6OkxheWVyUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
cjo6Y29tcG9zaXRlTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXI6OnVw
ZGF0ZUxheWVyc1JlY3Vyc2l2ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyOjpj
b21wb3NpdGVMYXllcnNSZWN1cnNpdmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTGF5ZXJSZW5kZXJlci5oOgorICAgICAgICAoTGF5ZXJSZW5kZXJlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyVGlsZXI6OnVwZGF0ZVRleHR1cmVDb250ZW50c0lmTmVlZGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXI6OmRyYXdUZXh0dXJlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclRpbGVyOjpkcmF3TWlzc2luZ1RleHR1cmVzKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyVGlsZXI6OmRyYXdUZXh0dXJlc0ludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuaDoKKyAgICAgICAgKExheWVyVGlsZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJl
YWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyV2ViS2l0VGhyZWFkOjpzZXRTaXplSXNTY2Fs
ZUludmFyaWFudCk6CisgICAgICAgIChMYXllcldlYktpdFRocmVhZCk6CisKKzIwMTItMDUtMjcg
IEFydmlkIE5pbHNzb24gIDxhbmlsc3NvbkByaW0uY29tPgorCiAgICAgICAgIFtCbGFja0JlcnJ5
XSBNYWtlIGN1c3RvbSBjb21wb3NpdGluZyB0aHJlYWQgbGF5ZXJzIG1vcmUgZmxleGlibGUKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3NjAwCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5
ZXJDb21wb3NpdGluZ1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuY3BwCmluZGV4IGI1NDRhOTI3OWU1
OGRkZDFmOTIyNmEzZTFjMTU5MTY2YTRiZjA1NjUuLmU4YmY2NzFjODNlMWI4MzQ5NmYzMzg2MTMw
NmMxMjUxYjA1N2MzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFk
LmNwcApAQCAtMTEyLDEyICsxMTIsMTggQEAgdm9pZCBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpk
ZWxldGVUZXh0dXJlcygpCiAgICAgICAgIG1fY2xpZW50LT5kZWxldGVUZXh0dXJlcyh0aGlzKTsK
IH0KIAotdm9pZCBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpzZXREcmF3VHJhbnNmb3JtKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCit2b2lkIExheWVyQ29tcG9zaXRpbmdUaHJl
YWQ6OnNldERyYXdUcmFuc2Zvcm0oZG91YmxlIHNjYWxlLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgbWF0cml4KQogewogICAgIG1fZHJhd1RyYW5zZm9ybSA9IG1hdHJpeDsKIAogICAgIGZs
b2F0IGJ4ID0gbV9ib3VuZHMud2lkdGgoKSAvIDIuMDsKICAgICBmbG9hdCBieSA9IG1fYm91bmRz
LmhlaWdodCgpIC8gMi4wOworCisgICAgaWYgKHNpemVJc1NjYWxlSW52YXJpYW50KCkpIHsKKyAg
ICAgICAgYnggLz0gc2NhbGU7CisgICAgICAgIGJ5IC89IHNjYWxlOworICAgIH0KKwogICAgIG1f
dHJhbnNmb3JtZWRCb3VuZHMuc2V0UDEobWF0cml4Lm1hcFBvaW50KEZsb2F0UG9pbnQoLWJ4LCAt
YnkpKSk7CiAgICAgbV90cmFuc2Zvcm1lZEJvdW5kcy5zZXRQMihtYXRyaXgubWFwUG9pbnQoRmxv
YXRQb2ludCgtYngsIGJ5KSkpOwogICAgIG1fdHJhbnNmb3JtZWRCb3VuZHMuc2V0UDMobWF0cml4
Lm1hcFBvaW50KEZsb2F0UG9pbnQoYngsIGJ5KSkpOwpAQCAtMTg4LDcgKzE5NCw3IEBAIEZsb2F0
UXVhZCBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpnZXRUcmFuc2Zvcm1lZEhvbGVQdW5jaFJlY3Qo
KSBjb25zdAogICAgIHJldHVybiBnZXRUcmFuc2Zvcm1lZFJlY3QobV9ib3VuZHMsIGRyYXdSZWN0
LCBtX2RyYXdUcmFuc2Zvcm0pOwogfQogCi12b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OmRy
YXdUZXh0dXJlcyhpbnQgcG9zaXRpb25Mb2NhdGlvbiwgaW50IHRleENvb3JkTG9jYXRpb24sIGNv
bnN0IEZsb2F0UmVjdCYgdmlzaWJsZVJlY3QpCit2b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6
OmRyYXdUZXh0dXJlcyhkb3VibGUgc2NhbGUsIGludCBwb3NpdGlvbkxvY2F0aW9uLCBpbnQgdGV4
Q29vcmRMb2NhdGlvbiwgY29uc3QgRmxvYXRSZWN0JiB2aXNpYmxlUmVjdCkKIHsKICAgICBzdGF0
aWMgZmxvYXQgdGV4Y29vcmRzWzQgKiAyXSA9IHsgMCwgMCwgIDAsIDEsICAxLCAxLCAgMSwgMCB9
OwogCkBAIC0yNjAsNyArMjY2LDcgQEAgdm9pZCBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpkcmF3
VGV4dHVyZXMoaW50IHBvc2l0aW9uTG9jYXRpb24sIGludCB0ZXhDb29yZExvY2EKICAgICB9CiAK
ICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kcmF3VGV4dHVyZXModGhpcywg
cG9zaXRpb25Mb2NhdGlvbiwgdGV4Q29vcmRMb2NhdGlvbik7CisgICAgICAgIG1fY2xpZW50LT5k
cmF3VGV4dHVyZXModGhpcywgc2NhbGUsIHBvc2l0aW9uTG9jYXRpb24sIHRleENvb3JkTG9jYXRp
b24pOwogfQogCiB2b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OmRyYXdTdXJmYWNlKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtLCBMYXllckNvbXBvc2l0aW5nVGhy
ZWFkKiBtYXNrLCBpbnQgcG9zaXRpb25Mb2NhdGlvbiwgaW50IHRleENvb3JkTG9jYXRpb24pCkBA
IC0yOTQsMTAgKzMwMCwxMCBAQCBib29sIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6Omhhc01pc3Np
bmdUZXh0dXJlcygpIGNvbnN0CiAgICAgcmV0dXJuIG1fY2xpZW50ID8gbV9jbGllbnQtPmhhc01p
c3NpbmdUZXh0dXJlcyh0aGlzKSA6IGZhbHNlOwogfQogCi12b2lkIExheWVyQ29tcG9zaXRpbmdU
aHJlYWQ6OmRyYXdNaXNzaW5nVGV4dHVyZXMoaW50IHBvc2l0aW9uTG9jYXRpb24sIGludCB0ZXhD
b29yZExvY2F0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHZpc2libGVSZWN0KQordm9pZCBMYXllckNv
bXBvc2l0aW5nVGhyZWFkOjpkcmF3TWlzc2luZ1RleHR1cmVzKGRvdWJsZSBzY2FsZSwgaW50IHBv
c2l0aW9uTG9jYXRpb24sIGludCB0ZXhDb29yZExvY2F0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHZp
c2libGVSZWN0KQogewogICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRyYXdN
aXNzaW5nVGV4dHVyZXModGhpcywgcG9zaXRpb25Mb2NhdGlvbiwgdGV4Q29vcmRMb2NhdGlvbik7
CisgICAgICAgIG1fY2xpZW50LT5kcmF3TWlzc2luZ1RleHR1cmVzKHRoaXMsIHNjYWxlLCBwb3Np
dGlvbkxvY2F0aW9uLCB0ZXhDb29yZExvY2F0aW9uKTsKIH0KIAogdm9pZCBMYXllckNvbXBvc2l0
aW5nVGhyZWFkOjpyZWxlYXNlVGV4dHVyZVJlc291cmNlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJl
YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJD
b21wb3NpdGluZ1RocmVhZC5oCmluZGV4IDA4ODliZTJjZWExNjY1MjU4MTAyZGMxMTRiODc3YmI3
Njk4MzM3MDEuLjllNzcwNDA4MjRmOWI5YmEyZjE1ZGQ4MDI2NDRiZjYwZjlmOGI3MDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJD
b21wb3NpdGluZ1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oCkBAIC04NCw3ICs4NCw3IEBAIHB1
YmxpYzoKICAgICAvLyBUaGUgbGF5ZXIgcmVuZGVyZXIgbXVzdCBiZSBzZXQgaWYgdGhlIGxheWVy
IGhhcyBiZWVuIHJlbmRlcmVkCiAgICAgdm9pZCBzZXRMYXllclJlbmRlcmVyKExheWVyUmVuZGVy
ZXIqKTsKIAotICAgIHZvaWQgc2V0RHJhd1RyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYpOworICAgIHZvaWQgc2V0RHJhd1RyYW5zZm9ybShkb3VibGUgc2NhbGUsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4Jik7CiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRy
YXdUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2RyYXdUcmFuc2Zvcm07IH0KIAogICAgIHZv
aWQgc2V0RHJhd09wYWNpdHkoZmxvYXQgb3BhY2l0eSkgeyBtX2RyYXdPcGFjaXR5ID0gb3BhY2l0
eTsgfQpAQCAtMTA2LDkgKzEwNiw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGVsZXRlVGV4dHVy
ZXMoKTsKIAotICAgIHZvaWQgZHJhd1RleHR1cmVzKGludCBwb3NpdGlvbkxvY2F0aW9uLCBpbnQg
dGV4Q29vcmRMb2NhdGlvbiwgY29uc3QgRmxvYXRSZWN0JiB2aXNpYmxlUmVjdCk7CisgICAgdm9p
ZCBkcmF3VGV4dHVyZXMoZG91YmxlIHNjYWxlLCBpbnQgcG9zaXRpb25Mb2NhdGlvbiwgaW50IHRl
eENvb3JkTG9jYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgdmlzaWJsZVJlY3QpOwogICAgIGJvb2wg
aGFzTWlzc2luZ1RleHR1cmVzKCkgY29uc3Q7Ci0gICAgdm9pZCBkcmF3TWlzc2luZ1RleHR1cmVz
KGludCBwb3NpdGlvbkxvY2F0aW9uLCBpbnQgdGV4Q29vcmRMb2NhdGlvbiwgY29uc3QgRmxvYXRS
ZWN0JiB2aXNpYmxlUmVjdCk7CisgICAgdm9pZCBkcmF3TWlzc2luZ1RleHR1cmVzKGRvdWJsZSBz
Y2FsZSwgaW50IHBvc2l0aW9uTG9jYXRpb24sIGludCB0ZXhDb29yZExvY2F0aW9uLCBjb25zdCBG
bG9hdFJlY3QmIHZpc2libGVSZWN0KTsKICAgICB2b2lkIGRyYXdTdXJmYWNlKGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiwgTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogbWFzaywgaW50IHBvc2l0
aW9uTG9jYXRpb24sIGludCB0ZXhDb29yZExvY2F0aW9uKTsKIAogICAgIHZvaWQgcmVsZWFzZVRl
eHR1cmVSZXNvdXJjZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhy
ZWFkQ2xpZW50LmgKaW5kZXggNTRlYmY5ZWMxOTgzNzZiYWM4NzQyNGVkZjg1NmJlOWMxODlkMDgw
MC4uNzQ2YWRlYTQ5N2EwNWIzODIxNjJjZWY1MTk3ZDk1YTc5ZGJlZTBlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0
aW5nVGhyZWFkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50LmgKQEAgLTM0LDcgKzM0LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsYXllclZpc2liaWxpdHlDaGFuZ2VkKExheWVy
Q29tcG9zaXRpbmdUaHJlYWQqLCBib29sIHZpc2libGUpID0gMDsKIAogICAgIHZpcnR1YWwgdm9p
ZCB1cGxvYWRUZXh0dXJlc0lmTmVlZGVkKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlcyhMYXllckNvbXBvc2l0aW5nVGhyZWFkKiwgaW50
IHBvc2l0aW9uTG9jYXRpb24sIGludCB0ZXhDb29yZExvY2F0aW9uLCBkb3VibGUgc2NhbGUpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmVzKExheWVyQ29tcG9zaXRpbmdUaHJlYWQq
LCBkb3VibGUgc2NhbGUsIGludCBwb3NpdGlvbkxvY2F0aW9uLCBpbnQgdGV4Q29vcmRMb2NhdGlv
bikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVUZXh0dXJlcyhMYXllckNvbXBvc2l0aW5n
VGhyZWFkKikgPSAwOwogCiAgICAgLy8gT3B0aW9uYWwuIEFsbG93cyBsYXllcnMgdG8gc2VydmUg
YXMgYSBtYXNrIGZvciBvdGhlciBsYXllcnMKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogCiAg
ICAgLy8gT3B0aW9uYWwuIEFsbG93cyBsYXllcnMgdG8gaGF2ZSB1bmNhY2hlZCByZWdpb25zLCB0
eXBpY2FsbHkgZHJhd24gYXMgY2hlY2tlcmJvYXJkCiAgICAgdmlydHVhbCBib29sIGhhc01pc3Np
bmdUZXh0dXJlcyhjb25zdCBMYXllckNvbXBvc2l0aW5nVGhyZWFkKikgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZHJhd01pc3NpbmdUZXh0dXJlcyhMYXllckNvbXBv
c2l0aW5nVGhyZWFkKiwgaW50IHBvc2l0aW9uTG9jYXRpb24sIGludCB0ZXhDb29yZExvY2F0aW9u
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZHJhd01pc3NpbmdUZXh0dXJlcyhMYXllckNvbXBvc2l0
aW5nVGhyZWFkKiwgZG91YmxlIHNjYWxlLCBpbnQgcG9zaXRpb25Mb2NhdGlvbiwgaW50IHRleENv
b3JkTG9jYXRpb24pIHsgfQogCiAgICAgLy8gVW5saWtlIHRoZSBvdGhlciBtZXRob2RzIGhlcmUs
IHRoaXMgb25lIHdpbGwgYmUgY2FsbGVkIG9uIHRoZSBXZWJLaXQgdGhyZWFkCiAgICAgdmlydHVh
bCB2b2lkIHNjaGVkdWxlQ29tbWl0KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckRhdGEuaAppbmRleCA4ZWI0YzVmYjI2
NDZkNTEzYzcxZDM3NmM4MWQ2YWJhMDdiMjRhN2MzLi5kOTkxMjE1NTExMTE5MGM1ZjRjNmJjMTIx
MjE1NzQxMWExMTFlODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0xheWVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJEYXRhLmgKQEAgLTg1LDYgKzg1LDcgQEAgcHVibGlj
OgogICAgICAgICAsIG1faGFzRml4ZWRDb250YWluZXIoZmFsc2UpCiAgICAgICAgICwgbV9oYXNG
aXhlZEFuY2VzdG9ySW5ET01UcmVlKGZhbHNlKQogICAgICAgICAsIG1faXNWaXNpYmxlKHRydWUp
CisgICAgICAgICwgbV9zaXplSXNTY2FsZUludmFyaWFudChmYWxzZSkKICAgICB7CiAgICAgfQog
CkBAIC0xMDQsNiArMTA1LDggQEAgcHVibGljOgogCiAgICAgSW50U2l6ZSBib3VuZHMoKSBjb25z
dCB7IHJldHVybiBtX2JvdW5kczsgfQogCisgICAgYm9vbCBzaXplSXNTY2FsZUludmFyaWFudCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2l6ZUlzU2NhbGVJbnZhcmlhbnQ7IH0KKwogICAgIGJvb2wgZG91
YmxlU2lkZWQoKSBjb25zdCB7IHJldHVybiBtX2RvdWJsZVNpZGVkOyB9CiAKICAgICBGbG9hdFJl
Y3QgZnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9CkBAIC0yMDUsNiArMjA4LDcgQEAg
cHJvdGVjdGVkOgogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBpcyBvbmx5IGF2YWlsYWJsZSBmb3Ig
bWVkaWEgKHZpZGVvKSBhbmQgcGx1Z2luIGxheWVycy4KICAgICB1bnNpZ25lZCBtX2lzVmlzaWJs
ZSA6IDE7CisgICAgdW5zaWduZWQgbV9zaXplSXNTY2FsZUludmFyaWFudCA6IDE7CiAKICAgICAv
LyBDQVVUSU9OOiBhbGwgdGhlIGRhdGEgbWVtYmVycyBhcmUgY29waWVkIGZyb20gb25lIGluc3Rh
bmNlIHRvIGFub3RoZXIKICAgICAvLyBpLmUuIGZyb20gb25lIHRocmVhZCB0byBhbm90aGVyIGlu
IHRoZSByZXBsaWNhdGUgbWV0aG9kLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5jcHAKaW5kZXggM2Nl
M2Q4MDIwNDUwODVlNDExYTc2NWM1ODkyMmVlOWZjNDRjYTljNy4uZjQyMTQ0ZWMwZDljY2JiOTU1
MDNiNGQwYWIzODMwNTE2M2VkMDMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIuY3BwCkBAIC0x
NTIsNiArMTUyLDcgQEAgTGF5ZXJSZW5kZXJlcjo6TGF5ZXJSZW5kZXJlcihHTEVTMkNvbnRleHQq
IGNvbnRleHQpCiAgICAgLCBtX2NoZWNrZXJQcm9ncmFtT2JqZWN0KDApCiAgICAgLCBtX3Bvc2l0
aW9uTG9jYXRpb24oMCkKICAgICAsIG1fdGV4Q29vcmRMb2NhdGlvbigxKQorICAgICwgbV9zY2Fs
ZSgxLjApCiAgICAgLCBtX2FuaW1hdGlvblRpbWUoLW51bWVyaWNfbGltaXRzPGRvdWJsZT46Omlu
ZmluaXR5KCkpCiAgICAgLCBtX2ZibygwKQogICAgICwgbV9jdXJyZW50TGF5ZXJSZW5kZXJlclN1
cmZhY2UoMCkKQEAgLTMxOSw2ICszMjAsMTIgQEAgdm9pZCBMYXllclJlbmRlcmVyOjpjb21wb3Np
dGVMYXllcnMoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgTGF5ZXJDb20KICAg
ICBpZiAoIXJvb3RMYXllcikKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gVXNlZCB0byBkcmF3
IHNjYWxlIGludmFyaWFudCBsYXllcnMuIFdlIGFzc3VtZSB1bmlmb3JtIHNjYWxlLgorICAgIC8v
IFRoZSBtYXRyaXggbWFwcyB0byBub3JtYWxpemVkIGRldmljZSBjb29yZGluYXRlcywgYSBzeXN0
ZW0gdGhhdCBtYXBzIHRoZQorICAgIC8vIHZpZXdwb3J0IHRvIHRoZSBpbnRlcnZhbCAtMSB0byAx
LgorICAgIC8vIFNvIGl0IGhhcyB0byBzY2FsZSBkb3duIGJ5IGEgZmFjdG9yIGVxdWFsIHRvIG9u
ZSBoYWxmIHRoZSB2aWV3cG9ydC4KKyAgICBtX3NjYWxlID0gbWF0cml4Lm0xMSgpICogbV92aWV3
cG9ydC53aWR0aCgpIC8gMjsKKwogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDb21wb3NpdGluZ1Ro
cmVhZD4gPiBzdXJmYWNlTGF5ZXJzOwogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJDb21w
b3NpdGluZ1RocmVhZD4gPiYgc3VibGF5ZXJzID0gcm9vdExheWVyLT5nZXRTdWJsYXllcnMoKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN1YmxheWVycy5zaXplKCk7IGkrKykgewpAQCAt
NjU4LDcgKzY2NSw5IEBAIHZvaWQgTGF5ZXJSZW5kZXJlcjo6dXBkYXRlTGF5ZXJzUmVjdXJzaXZl
KExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVyLCBjb25zdCBUCiAgICAgLy8gV2hlcmU6IFAg
aXMgdGhlIHByb2plY3Rpb24gbWF0cml4CiAgICAgLy8gICAgICAgIE0gaXMgdGhlIGxheWVyJ3Mg
bWF0cml4IGNvbXB1dGVkIGFib3ZlCiAgICAgLy8gICAgICAgIFMgaXMgdGhlIHNjYWxlIGFkanVz
dG1lbnQgKHRvIHNjYWxlIHVwIHRvIHRoZSBsYXllciBzaXplKQotICAgIEludFNpemUgYm91bmRz
ID0gbGF5ZXItPmJvdW5kcygpOworICAgIEZsb2F0U2l6ZSBib3VuZHMgPSBsYXllci0+Ym91bmRz
KCk7CisgICAgaWYgKGxheWVyLT5zaXplSXNTY2FsZUludmFyaWFudCgpKQorICAgICAgICBib3Vu
ZHMuc2NhbGUoMS4wIC8gbV9zY2FsZSk7CiAgICAgRmxvYXRQb2ludCBhbmNob3JQb2ludCA9IGxh
eWVyLT5hbmNob3JQb2ludCgpOwogICAgIEZsb2F0UG9pbnQgcG9zaXRpb24gPSBsYXllci0+cG9z
aXRpb24oKTsKIApAQCAtNzI1LDcgKzczNCw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlcjo6dXBkYXRl
TGF5ZXJzUmVjdXJzaXZlKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVyLCBjb25zdCBUCiAg
ICAgICAgICAgICBzdXJmYWNlLT5zZXRSZXBsaWNhRHJhd1RyYW5zZm9ybShyZXBsaWNhTWF0cml4
KTsKICAgICAgICAgfQogCi0gICAgICAgIEludFJlY3QgZHJhd1JlY3QgPSBJbnRSZWN0KEludFBv
aW50KCksIGJvdW5kcyk7CisgICAgICAgIEludFJlY3QgZHJhd1JlY3QgPSBlbmNsb3NpbmdJbnRS
ZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGJvdW5kcykpOwogICAgICAgICBzdXJmYWNlLT5z
ZXRDb250ZW50UmVjdChkcmF3UmVjdCk7CiAKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
cHJvamVjdGlvbk1hdHJpeCA9IG9ydGhvTWF0cml4KGRyYXdSZWN0LngoKSwgZHJhd1JlY3QubWF4
WCgpLCBkcmF3UmVjdC55KCksIGRyYXdSZWN0Lm1heFkoKSwgLTEwMDAsIDEwMDApOwpAQCAtNzM4
LDcgKzc0Nyw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlcjo6dXBkYXRlTGF5ZXJzUmVjdXJzaXZlKExh
eWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVyLCBjb25zdCBUCiAgICAgICAgIHN1cmZhY2VMYXll
cnMuYXBwZW5kKGxheWVyKTsKICAgICB9CiAKLSAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShs
b2NhbE1hdHJpeCk7CisgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0obV9zY2FsZSwgbG9jYWxN
YXRyaXgpOwogCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGJvb2wgbGF5ZXJWaXNpYmxlID0gY2xp
cFJlY3QuaW50ZXJzZWN0cyhsYXllci0+Z2V0RHJhd1JlY3QoKSkgfHwgbGF5ZXItPm1lZGlhUGxh
eWVyKCk7CkBAIC04NDYsNyArODU1LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyOjpjb21wb3NpdGVM
YXllcnNSZWN1cnNpdmUoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogbGF5ZXIsIGludAogICAgICAg
ICBpZiAoIWRyYXdTdXJmYWNlKSB7CiAgICAgICAgICAgICBnbFVzZVByb2dyYW0obV9sYXllclBy
b2dyYW1PYmplY3Rbc2hhZGVyXSk7CiAgICAgICAgICAgICBnbFVuaWZvcm0xZihtX2FscGhhTG9j
YXRpb25bc2hhZGVyXSwgbGF5ZXItPmRyYXdPcGFjaXR5KCkpOwotICAgICAgICAgICAgbGF5ZXIt
PmRyYXdUZXh0dXJlcyhtX3Bvc2l0aW9uTG9jYXRpb24sIG1fdGV4Q29vcmRMb2NhdGlvbiwgbV92
aXNpYmxlUmVjdCk7CisgICAgICAgICAgICBsYXllci0+ZHJhd1RleHR1cmVzKG1fc2NhbGUsIG1f
cG9zaXRpb25Mb2NhdGlvbiwgbV90ZXhDb29yZExvY2F0aW9uLCBtX3Zpc2libGVSZWN0KTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIERyYXcgdGhlIHJlZmxlY3Rpb24gaWYgaXQg
ZXhpc3RzLgogICAgICAgICAgICAgaWYgKGxheWVyLT5yZXBsaWNhTGF5ZXIoKSkgewpAQCAtODcw
LDcgKzg3OSw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlcjo6Y29tcG9zaXRlTGF5ZXJzUmVjdXJzaXZl
KExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVyLCBpbnQKICAgICAgICAgaWYgKGxheWVyLT5o
YXNNaXNzaW5nVGV4dHVyZXMoKSkgewogICAgICAgICAgICAgZ2xEaXNhYmxlKEdMX0JMRU5EKTsK
ICAgICAgICAgICAgIGdsVXNlUHJvZ3JhbShtX2NoZWNrZXJQcm9ncmFtT2JqZWN0KTsKLSAgICAg
ICAgICAgIGxheWVyLT5kcmF3TWlzc2luZ1RleHR1cmVzKG1fcG9zaXRpb25Mb2NhdGlvbiwgbV90
ZXhDb29yZExvY2F0aW9uLCBtX3Zpc2libGVSZWN0KTsKKyAgICAgICAgICAgIGxheWVyLT5kcmF3
TWlzc2luZ1RleHR1cmVzKG1fc2NhbGUsIG1fcG9zaXRpb25Mb2NhdGlvbiwgbV90ZXhDb29yZExv
Y2F0aW9uLCBtX3Zpc2libGVSZWN0KTsKICAgICAgICAgICAgIGdsRW5hYmxlKEdMX0JMRU5EKTsK
ICAgICAgICAgICAgIGdsQmxlbmRGdW5jKEdMX09ORSwgR0xfT05FX01JTlVTX1NSQ19BTFBIQSk7
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmgKaW5kZXggYTAzYTc5OTYxODQzMzllMTQw
NjBlNGVhYWViNDNjYWY5MDgyYzc4MS4uNWQyMWVjYmJjYzQwNThkMTllODQxYjAyOWJkMWJiZmMw
ZTc5OTUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9MYXllclJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmgKQEAgLTE3Niw2ICsxNzYsNyBAQCBwcml2
YXRlOgogICAgIGludCBtX2NoZWNrZXJTdXJmYWNlSGVpZ2h0TG9jYXRpb247CiAKICAgICAvLyBD
dXJyZW50IGRyYXcgY29uZmlndXJhdGlvbi4KKyAgICBkb3VibGUgbV9zY2FsZTsKICAgICBkb3Vi
bGUgbV9hbmltYXRpb25UaW1lOwogICAgIEZsb2F0UmVjdCBtX3Zpc2libGVSZWN0OwogICAgIElu
dFJlY3QgbV9sYXlvdXRSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5jcHAKaW5kZXggMDQxMjdlZTQ1NTVj
OTcyYjViNTJiZjNjOTI1ZDEwN2E2NjUzOWZjOS4uZGI2ZTc1YzJmZmEzMjM0NTk1ZDFiNGYzNWQ3
ZWUzOTIwYzkyMzRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuY3BwCkBAIC0xMjIsNiArMTIyLDExIEBA
IHZvaWQgTGF5ZXJUaWxlcjo6dXBkYXRlVGV4dHVyZUNvbnRlbnRzSWZOZWVkZWQoZG91YmxlIHNj
YWxlKQogICAgICAgICByZW5kZXJKb2JzID0gbV9yZW5kZXJKb2JzOwogICAgIH0KIAorICAgIC8v
IFRoZXJlJ3Mgbm8gcG9pbnQgaW4gZHJhd2luZyBjb250ZW50cyBhdCBhIGhpZ2hlciByZXNvbHV0
aW9uIGZvciBzY2FsZQorICAgIC8vIGludmFyaWFudCBsYXllcnMuCisgICAgaWYgKG1fbGF5ZXIt
PnNpemVJc1NjYWxlSW52YXJpYW50KCkpCisgICAgICAgIHNjYWxlID0gMS4wOworCiAgICAgYm9v
bCBpc1pvb21Kb2IgPSBmYWxzZTsKICAgICBpZiAoc2NhbGUgIT0gbV9jb250ZW50c1NjYWxlKSB7
CiAgICAgICAgIC8vIFRoZSBmaXJzdCB0aW1lIGFyb3VuZCwgaXQgZG9lcyBub3QgY291bnQgYXMg
YSB6b29tIGpvYi4KQEAgLTQ3MCwyMCArNDc1LDI1IEBAIHZvaWQgTGF5ZXJUaWxlcjo6cGVyZm9y
bVRpbGVKb2IoTGF5ZXJUaWxlKiB0aWxlLCBjb25zdCBUZXh0dXJlSm9iJiBqb2IsIGNvbnN0IElu
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgTGF5ZXJUaWxlcjo6ZHJhd1Rl
eHR1cmVzKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVyLCBpbnQgcG9zLCBpbnQgdGV4Q29v
cmQpCit2b2lkIExheWVyVGlsZXI6OmRyYXdUZXh0dXJlcyhMYXllckNvbXBvc2l0aW5nVGhyZWFk
KiBsYXllciwgZG91YmxlIHNjYWxlLCBpbnQgcG9zLCBpbnQgdGV4Q29vcmQpCiB7Ci0gICAgZHJh
d1RleHR1cmVzSW50ZXJuYWwobGF5ZXIsIHBvcywgdGV4Q29vcmQsIGZhbHNlIC8qIGRyYXdNaXNz
aW5nICovKTsKKyAgICBkcmF3VGV4dHVyZXNJbnRlcm5hbChsYXllciwgc2NhbGUsIHBvcywgdGV4
Q29vcmQsIGZhbHNlIC8qIGRyYXdNaXNzaW5nICovKTsKIH0KIAotdm9pZCBMYXllclRpbGVyOjpk
cmF3TWlzc2luZ1RleHR1cmVzKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVyLCBpbnQgcG9z
LCBpbnQgdGV4Q29vcmQpCit2b2lkIExheWVyVGlsZXI6OmRyYXdNaXNzaW5nVGV4dHVyZXMoTGF5
ZXJDb21wb3NpdGluZ1RocmVhZCogbGF5ZXIsIGRvdWJsZSBzY2FsZSwgaW50IHBvcywgaW50IHRl
eENvb3JkKQogewotICAgIGRyYXdUZXh0dXJlc0ludGVybmFsKGxheWVyLCBwb3MsIHRleENvb3Jk
LCB0cnVlIC8qIGRyYXdNaXNzaW5nICovKTsKKyAgICBkcmF3VGV4dHVyZXNJbnRlcm5hbChsYXll
ciwgc2NhbGUsIHBvcywgdGV4Q29vcmQsIHRydWUgLyogZHJhd01pc3NpbmcgKi8pOwogfQogCi12
b2lkIExheWVyVGlsZXI6OmRyYXdUZXh0dXJlc0ludGVybmFsKExheWVyQ29tcG9zaXRpbmdUaHJl
YWQqIGxheWVyLCBpbnQgcG9zaXRpb25Mb2NhdGlvbiwgaW50IHRleENvb3JkTG9jYXRpb24sIGJv
b2wgZHJhd01pc3NpbmcpCit2b2lkIExheWVyVGlsZXI6OmRyYXdUZXh0dXJlc0ludGVybmFsKExh
eWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVyLCBkb3VibGUgc2NhbGUsIGludCBwb3NpdGlvbkxv
Y2F0aW9uLCBpbnQgdGV4Q29vcmRMb2NhdGlvbiwgYm9vbCBkcmF3TWlzc2luZykKIHsKICAgICBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSA9IGxheWVyLT5kcmF3VHJh
bnNmb3JtKCk7Ci0gICAgSW50U2l6ZSBib3VuZHMgPSBsYXllci0+Ym91bmRzKCk7CisgICAgRmxv
YXRTaXplIGJvdW5kcyA9IGxheWVyLT5ib3VuZHMoKTsKKworICAgIGlmIChsYXllci0+c2l6ZUlz
U2NhbGVJbnZhcmlhbnQoKSkgeworICAgICAgICBib3VuZHMuc2V0V2lkdGgoYm91bmRzLndpZHRo
KCkgLyBzY2FsZSk7CisgICAgICAgIGJvdW5kcy5zZXRIZWlnaHQoYm91bmRzLndpZHRoKCkgLyBz
Y2FsZSk7CisgICAgfQogCiAgICAgZmxvYXQgdGV4Y29vcmRzWzQgKiAyXSA9IHsgMCwgMCwgIDAs
IDEsICAxLCAxLCAgMSwgMCB9OwogICAgIGZsb2F0IHZlcnRpY2VzWzQgKiA0XTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRp
bGVyLmgKaW5kZXggYWM4NjA5ODNhOGVjZjAxMzgxZTk3YjM2NzhmNWNhMDFkMmU1MzA2YS4uNzY5
NGRlYzcwYTUyNDNjZGU2ZWQ1MmQ5NGI5MmUwOTdjY2Y2YjNmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmgK
QEAgLTY2LDkgKzY2LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsYXllclZpc2liaWxp
dHlDaGFuZ2VkKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqLCBib29sIHZpc2libGUpOwogICAgIHZp
cnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlc0lmTmVlZGVkKExheWVyQ29tcG9zaXRpbmdUaHJlYWQq
KTsKICAgICB2aXJ0dWFsIHZvaWQgYmluZENvbnRlbnRzVGV4dHVyZShMYXllckNvbXBvc2l0aW5n
VGhyZWFkKik7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlcyhMYXllckNvbXBvc2l0aW5n
VGhyZWFkKiwgaW50IHBvc2l0aW9uTG9jYXRpb24sIGludCB0ZXhDb29yZExvY2F0aW9uKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmVzKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqLCBkb3Vi
bGUgc2NhbGUsIGludCBwb3NpdGlvbkxvY2F0aW9uLCBpbnQgdGV4Q29vcmRMb2NhdGlvbik7CiAg
ICAgdmlydHVhbCBib29sIGhhc01pc3NpbmdUZXh0dXJlcyhjb25zdCBMYXllckNvbXBvc2l0aW5n
VGhyZWFkKikgY29uc3QgeyByZXR1cm4gbV9oYXNNaXNzaW5nVGV4dHVyZXM7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZHJhd01pc3NpbmdUZXh0dXJlcyhMYXllckNvbXBvc2l0aW5nVGhyZWFkKiwgaW50
IHBvc2l0aW9uTG9jYXRpb24sIGludCB0ZXhDb29yZExvY2F0aW9uKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZHJhd01pc3NpbmdUZXh0dXJlcyhMYXllckNvbXBvc2l0aW5nVGhyZWFkKiwgZG91YmxlIHNj
YWxlLCBpbnQgcG9zaXRpb25Mb2NhdGlvbiwgaW50IHRleENvb3JkTG9jYXRpb24pOwogICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVUZXh0dXJlcyhMYXllckNvbXBvc2l0aW5nVGhyZWFkKik7CiAgICAg
dm9pZCBjb21taXRQZW5kaW5nVGV4dHVyZVVwbG9hZHMoKTsKIApAQCAtMTU3LDcgKzE1Nyw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBhZGRUaWxlSm9iKGNvbnN0IFRpbGVJbmRleCYsIGNvbnN0IFRl
eHR1cmVKb2ImLCBUaWxlSm9ic01hcCYpOwogICAgIHZvaWQgcGVyZm9ybVRpbGVKb2IoTGF5ZXJU
aWxlKiwgY29uc3QgVGV4dHVyZUpvYiYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lkIHByb2Nl
c3NUZXh0dXJlSm9iKGNvbnN0IFRleHR1cmVKb2ImLCBUaWxlSm9ic01hcCYpOwotICAgIHZvaWQg
ZHJhd1RleHR1cmVzSW50ZXJuYWwoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCosIGludCBwb3NpdGlv
bkxvY2F0aW9uLCBpbnQgdGV4Q29vcmRMb2NhdGlvbiwgYm9vbCBtaXNzaW5nKTsKKyAgICB2b2lk
IGRyYXdUZXh0dXJlc0ludGVybmFsKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqLCBkb3VibGUgc2Nh
bGUsIGludCBwb3NpdGlvbkxvY2F0aW9uLCBpbnQgdGV4Q29vcmRMb2NhdGlvbiwgYm9vbCBtaXNz
aW5nKTsKICAgICB2b2lkIHBydW5lVGV4dHVyZXMoKTsKICAgICB2b2lkIHZpc2liaWxpdHlDaGFu
Z2VkKGJvb2wgbmVlZHNEaXNwbGF5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5oCmlu
ZGV4IDY4ODliYmZhMzk5MTAxM2U3NmU3NGQ0ZTI4MGM1NDFjZmM2YTcwN2MuLmIxY2QzYTgxNGI1
Y2Q1M2VmODZhZmMyMTgzYzQ5YjBlZDJiYjFkZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyV2ViS2l0VGhy
ZWFkLmgKQEAgLTc0LDYgKzc0LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRCb3VuZHMoY29u
c3QgSW50U2l6ZSYpOwogCisgICAgdm9pZCBzZXRTaXplSXNTY2FsZUludmFyaWFudChib29sIGlu
dmFyaWFudCkgeyBtX3NpemVJc1NjYWxlSW52YXJpYW50ID0gaW52YXJpYW50OyBzZXROZWVkc0Nv
bW1pdCgpOyB9CisKICAgICB2b2lkIHNldERvdWJsZVNpZGVkKGJvb2wgZG91YmxlU2lkZWQpIHsg
bV9kb3VibGVTaWRlZCA9IGRvdWJsZVNpZGVkOyBzZXROZWVkc0NvbW1pdCgpOyB9CiAKICAgICB2
b2lkIHNldEZyYW1lKGNvbnN0IEZsb2F0UmVjdCYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144397</attachid>
            <date>2012-05-28 14:26:52 -0700</date>
            <delta_ts>2012-05-28 15:22:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87602-20120528232650.patch</filename>
            <type>text/plain</type>
            <size>14084</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTZlOWVjZTg0NTMzYWJi
MDUxZjFiYjQxZDE2YzA4ODk3NTE5MWY0My4uZWI2NDdjMzNhOWZlMGZhYmM1YzcwZjIwZTQzYjQz
YmNjNzRmYWJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYzIEBACiAyMDEyLTA1LTI3ICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KIAorICAgICAgICBbQmxhY2tCZXJyeV0gTWFr
ZSBpdCBwb3NzaWJsZSB0byBtYW5pcHVsYXRlIGxheWVycyBvbiB0aGUgY29tcG9zaXRpbmcgdGhy
ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzYw
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vcm1h
bGx5LCBsYXllcnMgYXJlIG1hbmlwdWxhdGVkIG9uIHRoZSBXZWJLaXQgdGhyZWFkLCBhbmQgdGhl
IGNoYW5nZXMgYXJlCisgICAgICAgIHN5bmNlZCB0byB0aGUgY29tcG9zaXRpbmcgdGhyZWFkIGR1
cmluZyB0aGUgbmV4dCBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBjb21taXQKKyAgICAgICAgb3Bl
cmF0aW9uLgorCisgICAgICAgIEhvd2V2ZXIsIGZvciBvdmVybGF5IGxheWVycyB0aGUgYWJpbGl0
eSB0byBtYW5pcHVsYXRlIGxheWVycyBvbiB0aGUgY29tcG9zaXRpbmcKKyAgICAgICAgdGhyZWFk
IGlzIG5lY2Vzc2FyeSBmb3IgYWRlcXVhdGUgdXNlciBpbnRlcmZhY2UgcmVzcG9uc2l2ZW5lc3Mu
CisKKyAgICAgICAgVHdvIG1lY2hhbmlzbXMgYXJlIGFkZGVkOgorICAgICAgICAxLiBGb3IgYSBs
YXllciB3aXRoIGEgV2ViS2l0LXRocmVhZCBjb3VudGVycGFydCwgeW91IGNhbiB0ZW1wb3Jhcmls
eSBvdmVycmlkZQorICAgICAgICBhdHRyaWJ1dGVzIG9yIGFkZCBhbmltYXRpb25zIHdob3NlIG91
dHB1dCBvdmVycmlkZSBhdHRyaWJ1dGVzLgorICAgICAgICAyLiBGb3IgYSBsYXllciB3aXRoIG5v
IFdlYktpdC10aHJlYWQgY291bnRlcnBhcnQsIHlvdSBjYW4gbm93IGRpcmVjdGx5IHNldCB0aGUK
KyAgICAgICAgY29tcG9zaXRpbmcgdGhyZWFkIHZhbHVlcyBmb3IgYXR0cmlidXRlcy4gSWYgeW91
IGF0dGVtcHQgdG8gZG8gdGhpcyBmb3IgbGF5ZXJzCisgICAgICAgIHRoYXQgZG8gaGF2ZSBhIFdl
YktpdC10aHJlYWQgY291bnRlcnBhcnQsIHRoZSBjb21wb3NpdGluZyB0aHJlYWQgdmFsdWVzIHdp
bGwKKyAgICAgICAgYmUgb3ZlcndyaXR0ZW4gYXQgdGhlIHRpbWUgb2YgdGhlIG5leHQgY29tbWl0
LCB3aGljaCBtYWtlcyB0aGUgb3ZlcnJpZGUKKyAgICAgICAgbWVjaGFuaXNtIG1vcmUgdXNlZnVs
IHRoZXJlLgorCisgICAgICAgIFBSICMxNTY4MTIKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkOjphZGRTdWJsYXllcik6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnVwZGF0ZUFu
aW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6cmVt
b3ZlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQ6
Om92ZXJyaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OmNs
ZWFyT3ZlcnJpZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5
ZXJDb21wb3NpdGluZ1RocmVhZC5oOgorICAgICAgICAoTGF5ZXJPdmVycmlkZSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllck92ZXJyaWRlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJPdmVycmlkZTo6c2V0UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJPdmVycmlk
ZTo6c2V0QW5jaG9yUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJPdmVycmlkZTo6c2V0
Qm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyT3ZlcnJpZGU6OnNldFRyYW5zZm9ybSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllck92ZXJyaWRlOjpzZXRPcGFjaXR5KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyT3ZlcnJpZGU6OmFkZEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllck92ZXJyaWRlOjpMYXllck92ZXJyaWRlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNv
bXBvc2l0aW5nVGhyZWFkOjpzZXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNv
bXBvc2l0aW5nVGhyZWFkOjpzZXRBbmNob3JQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
ckNvbXBvc2l0aW5nVGhyZWFkOjpzZXRCb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJD
b21wb3NpdGluZ1RocmVhZDo6c2V0U2l6ZUlzU2NhbGVJbnZhcmlhbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnNldE9wYWNpdHkpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6c2V0TmVlZHNUZXh0dXJlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyV2ViS2l0VGhyZWFkLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyV2ViS2l0VGhyZWFkOjpMYXllcldlYktpdFRocmVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllcldlYktpdFRocmVhZDo6Y29tbWl0T25Db21wb3NpdGluZ1Ro
cmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktp
dFRocmVhZC5oOgorICAgICAgICAoTGF5ZXJXZWJLaXRUaHJlYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJXZWJLaXRUaHJlYWQ6OmNsZWFyT3ZlcnJpZGUpOgorCisyMDEyLTA1LTI3ICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKwogICAgICAgICBbQmxhY2tCZXJyeV0gQWRk
IHN1cHBvcnQgZm9yIGxheWVycyB3aXRoIHNjYWxlIGludmFyaWFudCBzaXplCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzYwMQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9z
aXRpbmdUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmNwcAppbmRleCBiMzdiNjMwNWZmYWViYmIwMTEx
MTkwYWI1N2ZiYmI1MDZjMTQyNjM1Li40ZDRhMmNhMjBjOTkyMzI0ZWEyYmE0ZDJhZWM1N2Y5NTk5
YjM4MzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5jcHAKQEAg
LTU1LDYgKzU1LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordm9pZCBMYXllck92ZXJy
aWRlOjpyZW1vdmVBbmltYXRpb24oY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9hbmltYXRpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICht
X2FuaW1hdGlvbnNbaV0tPm5hbWUoKSA9PSBuYW1lKSB7CisgICAgICAgICAgICBtX2FuaW1hdGlv
bnMucmVtb3ZlKGkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQor
CiBQYXNzUmVmUHRyPExheWVyQ29tcG9zaXRpbmdUaHJlYWQ+IExheWVyQ29tcG9zaXRpbmdUaHJl
YWQ6OmNyZWF0ZShMYXllclR5cGUgdHlwZSwgTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudCog
Y2xpZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgTGF5ZXJDb21wb3NpdGluZ1RocmVh
ZCh0eXBlLCBjbGllbnQpKTsKQEAgLTM4OCw2ICszOTgsMTMgQEAgY29uc3QgTGF5ZXJDb21wb3Np
dGluZ1RocmVhZCogTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6cm9vdExheWVyKCkgY29uc3QKICAg
ICByZXR1cm4gbGF5ZXI7CiB9CiAKK3ZvaWQgTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6YWRkU3Vi
bGF5ZXIoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogbGF5ZXIpCit7CisgICAgbGF5ZXItPnJlbW92
ZUZyb21TdXBlcmxheWVyKCk7CisgICAgbGF5ZXItPnNldFN1cGVybGF5ZXIodGhpcyk7CisgICAg
bV9zdWJsYXllcnMuYXBwZW5kKGxheWVyKTsKK30KKwogdm9pZCBMYXllckNvbXBvc2l0aW5nVGhy
ZWFkOjpyZW1vdmVGcm9tU3VwZXJsYXllcigpCiB7CiAgICAgaWYgKG1fc3VwZXJsYXllcikKQEAg
LTQ4NSw3ICs1MDIsMzAgQEAgYm9vbCBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjp1cGRhdGVBbmlt
YXRpb25zKGRvdWJsZSBjdXJyZW50VGltZSkKICAgICAgICAgYW5pbWF0aW9uLT5hcHBseSh0aGlz
LCBlbGFwc2VkVGltZSk7CiAgICAgfQogCi0gICAgcmV0dXJuICFtX3J1bm5pbmdBbmltYXRpb25z
LmlzRW1wdHkoKTsKKyAgICBib29sIGhhc1J1bm5pbmdBbmltYXRpb25zID0gIW1fcnVubmluZ0Fu
aW1hdGlvbnMuaXNFbXB0eSgpOworCisgICAgLy8gSWYgdGhlcmUgYXJlIGFueSBvdmVycmlkZXMs
IGFwcGx5IHRoZW0KKyAgICBpZiAobV9vdmVycmlkZSkgeworICAgICAgICBpZiAobV9vdmVycmlk
ZS0+aXNQb3NpdGlvblNldCgpKQorICAgICAgICAgICAgbV9wb3NpdGlvbiA9IG1fb3ZlcnJpZGUt
PnBvc2l0aW9uKCk7CisgICAgICAgIGlmIChtX292ZXJyaWRlLT5pc0FuY2hvclBvaW50U2V0KCkp
CisgICAgICAgICAgICBtX2FuY2hvclBvaW50ID0gbV9vdmVycmlkZS0+YW5jaG9yUG9pbnQoKTsK
KyAgICAgICAgaWYgKG1fb3ZlcnJpZGUtPmlzQm91bmRzU2V0KCkpCisgICAgICAgICAgICBtX2Jv
dW5kcyA9IG1fb3ZlcnJpZGUtPmJvdW5kcygpOworICAgICAgICBpZiAobV9vdmVycmlkZS0+aXNU
cmFuc2Zvcm1TZXQoKSkKKyAgICAgICAgICAgIG1fdHJhbnNmb3JtID0gbV9vdmVycmlkZS0+dHJh
bnNmb3JtKCk7CisgICAgICAgIGlmIChtX292ZXJyaWRlLT5pc09wYWNpdHlTZXQoKSkKKyAgICAg
ICAgICAgIG1fb3BhY2l0eSA9IG1fb3ZlcnJpZGUtPm9wYWNpdHkoKTsKKworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fb3ZlcnJpZGUtPmFuaW1hdGlvbnMoKS5zaXplKCk7ICsraSkg
eworICAgICAgICAgICAgTGF5ZXJBbmltYXRpb24qIGFuaW1hdGlvbiA9IG1fb3ZlcnJpZGUtPmFu
aW1hdGlvbnMoKVtpXS5nZXQoKTsKKyAgICAgICAgICAgIGRvdWJsZSBlbGFwc2VkVGltZSA9ICht
X3N1c3BlbmRUaW1lID8gbV9zdXNwZW5kVGltZSA6IGN1cnJlbnRUaW1lKSAtIGFuaW1hdGlvbi0+
c3RhcnRUaW1lKCkgKyBhbmltYXRpb24tPnRpbWVPZmZzZXQoKTsKKyAgICAgICAgICAgIGFuaW1h
dGlvbi0+YXBwbHkodGhpcywgZWxhcHNlZFRpbWUpOworICAgICAgICAgICAgaGFzUnVubmluZ0Fu
aW1hdGlvbnMgfD0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBoYXNSdW5u
aW5nQW5pbWF0aW9uczsKIH0KIAogYm9vbCBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpoYXNWaXNp
YmxlSG9sZVB1bmNoUmVjdCgpIGNvbnN0CkBAIC01MDcsNiArNTQ3LDI4IEBAIHZvaWQgTGF5ZXJD
b21wb3NpdGluZ1RocmVhZDo6Y3JlYXRlTGF5ZXJSZW5kZXJlclN1cmZhY2UoKQogICAgIG1fbGF5
ZXJSZW5kZXJlclN1cmZhY2UgPSBhZG9wdFB0cihuZXcgTGF5ZXJSZW5kZXJlclN1cmZhY2UobV9s
YXllclJlbmRlcmVyLCB0aGlzKSk7CiB9CiAKK3ZvaWQgTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6
cmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fcnVubmluZ0FuaW1hdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYg
KG1fcnVubmluZ0FuaW1hdGlvbnNbaV0tPm5hbWUoKSA9PSBuYW1lKSB7CisgICAgICAgICAgICBt
X3J1bm5pbmdBbmltYXRpb25zLnJlbW92ZShpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgIH0KK30KKworTGF5ZXJPdmVycmlkZSogTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6
b3ZlcnJpZGUoKQoreworICAgIGlmICghbV9vdmVycmlkZSkKKyAgICAgICAgbV9vdmVycmlkZSA9
IExheWVyT3ZlcnJpZGU6OmNyZWF0ZSgpOworICAgIHJldHVybiBtX292ZXJyaWRlLmdldCgpOwor
fQorCit2b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OmNsZWFyT3ZlcnJpZGUoKQoreworICAg
IG1fb3ZlcnJpZGUuY2xlYXIoKTsKK30KKwogfQogCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuaAppbmRl
eCA5ZTc3MDQwODI0ZjliOWJhMmYxNWRkODAyNjQ0YmY2MGY5ZjhiNzA3Li5iMzM1NjA2NjljNTE0
MGRjNWQ1ZjkyMDEyYTMwMzUxOWJlMDExOWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9z
aXRpbmdUaHJlYWQuaApAQCAtNTcsNiArNTcsNTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudDsKIGNsYXNzIExheWVyUmVuZGVyZXI7CiAK
K2NsYXNzIExheWVyT3ZlcnJpZGUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPExh
eWVyT3ZlcnJpZGU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBMYXllck92ZXJyaWRl
KCkpOyB9CisKKyAgICBib29sIGlzUG9zaXRpb25TZXQoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0
aW9uU2V0OyB9CisgICAgRmxvYXRQb2ludCBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9z
aXRpb247IH0KKyAgICB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9u
KSB7IG1fcG9zaXRpb24gPSBwb3NpdGlvbjsgbV9wb3NpdGlvblNldCA9IHRydWU7IH0KKworICAg
IGJvb2wgaXNBbmNob3JQb2ludFNldCgpIGNvbnN0IHsgcmV0dXJuIG1fYW5jaG9yUG9pbnRTZXQ7
IH0KKyAgICBGbG9hdFBvaW50IGFuY2hvclBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9hbmNob3JQ
b2ludDsgfQorICAgIHZvaWQgc2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludCYgYW5jaG9y
UG9pbnQpIHsgbV9hbmNob3JQb2ludCA9IGFuY2hvclBvaW50OyBtX2FuY2hvclBvaW50U2V0ID0g
dHJ1ZTsgfQorCisgICAgYm9vbCBpc0JvdW5kc1NldCgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRz
U2V0OyB9CisgICAgSW50U2l6ZSBib3VuZHMoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kczsgfQor
ICAgIHZvaWQgc2V0Qm91bmRzKGNvbnN0IEludFNpemUmKSB7IG1fYm91bmRzID0gYm91bmRzOyBt
X2JvdW5kc1NldCA9IHRydWU7IH0KKworICAgIGJvb2wgaXNUcmFuc2Zvcm1TZXQoKSBjb25zdCB7
IHJldHVybiBtX3RyYW5zZm9ybVNldDsgfQorICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiB0cmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3RyYW5zZm9ybTsgfQorICAgIHZvaWQgc2V0
VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pIHsgbV90cmFu
c2Zvcm0gPSB0cmFuc2Zvcm07IG1fdHJhbnNmb3JtU2V0ID0gdHJ1ZTsgfQorCisgICAgYm9vbCBp
c09wYWNpdHlTZXQoKSBjb25zdCB7IHJldHVybiBtX29wYWNpdHlTZXQ7IH0KKyAgICBmbG9hdCBv
cGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9vcGFjaXR5OyB9CisgICAgdm9pZCBzZXRPcGFjaXR5
KGZsb2F0KSB7IG1fb3BhY2l0eSA9IG9wYWNpdHk7IG1fb3BhY2l0eVNldCA9IHRydWU7IH0KKwor
ICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJBbmltYXRpb24+ID4mIGFuaW1hdGlvbnMoKSBj
b25zdCB7IHJldHVybiBtX2FuaW1hdGlvbnM7IH0KKyAgICB2b2lkIGFkZEFuaW1hdGlvbihQYXNz
UmVmUHRyPExheWVyQW5pbWF0aW9uPiBhbmltYXRpb24pIHsgbV9hbmltYXRpb25zLmFwcGVuZChh
bmltYXRpb24pOyB9CisgICAgdm9pZCByZW1vdmVBbmltYXRpb24oY29uc3QgU3RyaW5nJiBuYW1l
KTsKKworcHJpdmF0ZToKKyAgICBMYXllck92ZXJyaWRlKCkKKyAgICAgICAgOiBtX29wYWNpdHko
MS4wKQorICAgICAgICAsIG1fcG9zaXRpb25TZXQoZmFsc2UpCisgICAgICAgICwgbV9hbmNob3JQ
b2ludFNldChmYWxzZSkKKyAgICAgICAgLCBtX2JvdW5kc1NldChmYWxzZSkKKyAgICAgICAgLCBt
X3RyYW5zZm9ybVNldChmYWxzZSkKKyAgICAgICAgLCBtX29wYWNpdHlTZXQoZmFsc2UpCisgICAg
eworICAgIH0KKworICAgIEZsb2F0UG9pbnQgbV9wb3NpdGlvbjsKKyAgICBGbG9hdFBvaW50IG1f
YW5jaG9yUG9pbnQ7CisgICAgSW50U2l6ZSBtX2JvdW5kczsKKyAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBtX3RyYW5zZm9ybTsKKyAgICBmbG9hdCBtX29wYWNpdHk7CisgICAgVmVjdG9yPFJlZlB0
cjxMYXllckFuaW1hdGlvbj4gPiBtX2FuaW1hdGlvbnM7CisKKyAgICB1bnNpZ25lZCBtX3Bvc2l0
aW9uU2V0IDogMTsKKyAgICB1bnNpZ25lZCBtX2FuY2hvclBvaW50U2V0IDogMTsKKyAgICB1bnNp
Z25lZCBtX2JvdW5kc1NldCA6IDE7CisgICAgdW5zaWduZWQgbV90cmFuc2Zvcm1TZXQgOiAxOwor
ICAgIHVuc2lnbmVkIG1fb3BhY2l0eVNldCA6IDE7Cit9OworCiBjbGFzcyBMYXllckNvbXBvc2l0
aW5nVGhyZWFkIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPExheWVyQ29tcG9zaXRpbmdU
aHJlYWQ+LCBwdWJsaWMgTGF5ZXJEYXRhLCBwdWJsaWMgQmxhY2tCZXJyeTo6UGxhdGZvcm06Okd1
YXJkZWRQb2ludGVyQmFzZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TGF5ZXJD
b21wb3NpdGluZ1RocmVhZD4gY3JlYXRlKExheWVyVHlwZSwgTGF5ZXJDb21wb3NpdGluZ1RocmVh
ZENsaWVudCopOwpAQCAtNzAsNiArMTIzLDE5IEBAIHB1YmxpYzoKIAogICAgIC8vIE5vdCB0aHJl
YWQgc2FmZQogCisgICAgLy8gVGhlc2Ugd2lsbCBiZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCBj
b21taXQgaWYgdGhpcyBsYXllciBoYXMgYSBMYXllcldlYktpdFRocmVhZCBjb3VudGVycGFydC4K
KyAgICAvLyBVc2VmdWwgZm9yIHN0YW5kLWFsb25lIGxheWVycyB0aGF0IGFyZSBjcmVhdGVkIGFu
ZCBtYW5hZ2VkIG9uIHRoZSBjb21wb3NpdGluZyB0aHJlYWQuCisgICAgLy8gVGhlc2UgZnVuY3Rp
b25zIGNhbiBhbHNvIGJlIHVzZWQgdG8gdXBkYXRlIGFuaW1hdGVkIHByb3BlcnRpZXMgaW4gTGF5
ZXJBbmltYXRpb24uCisgICAgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3Np
dGlvbikgeyBtX3Bvc2l0aW9uID0gcG9zaXRpb247IH0KKyAgICB2b2lkIHNldEFuY2hvclBvaW50
KGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50KSB7IG1fYW5jaG9yUG9pbnQgPSBhbmNob3JQ
b2ludDsgfQorICAgIHZvaWQgc2V0Qm91bmRzKGNvbnN0IEludFNpemUmIGJvdW5kcykgeyBtX2Jv
dW5kcyA9IGJvdW5kczsgfQorICAgIHZvaWQgc2V0U2l6ZUlzU2NhbGVJbnZhcmlhbnQoYm9vbCBp
bnZhcmlhbnQpIHsgbV9zaXplSXNTY2FsZUludmFyaWFudCA9IGludmFyaWFudDsgfQorICAgIHZv
aWQgc2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpIHsgbV90
cmFuc2Zvcm0gPSBtYXRyaXg7IH0KKyAgICB2b2lkIHNldE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkg
eyBtX29wYWNpdHkgPSBvcGFjaXR5OyB9CisgICAgdm9pZCBhZGRTdWJsYXllcihMYXllckNvbXBv
c2l0aW5nVGhyZWFkKik7CisgICAgdm9pZCByZW1vdmVGcm9tU3VwZXJsYXllcigpOworICAgIHZv
aWQgc2V0TmVlZHNUZXh0dXJlKGJvb2wgbmVlZHNUZXh0dXJlKSB7IG1fbmVlZHNUZXh0dXJlID0g
bmVlZHNUZXh0dXJlOyB9CisKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgd2UgaGF2ZSBhbiBhbmlt
YXRpb24KICAgICBib29sIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGN1cnJlbnRUaW1lKTsKICAg
ICB2b2lkIHVwZGF0ZVRleHR1cmVDb250ZW50c0lmTmVlZGVkKCk7CkBAIC0xMjgsMTggKzE5NCwx
OSBAQCBwdWJsaWM6CiAgICAgLy8gdGhpcyBhbGxvd3MgeW91IHRvIGRvIGl0IGZyb20gdGhlIGNv
bXBvc2l0aW5nIHRocmVhZC4KICAgICB2b2lkIHNjaGVkdWxlQ29tbWl0KCk7CiAKLSAgICAvLyBU
aGVzZSB0d28gZnVuY3Rpb25zIGFyZSB1c2VkIHRvIHVwZGF0ZSBhbmltYXRlZCBwcm9wZXJ0aWVz
IGluIExheWVyQW5pbWF0aW9uLgotICAgIHZvaWQgc2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5KSB7
IG1fb3BhY2l0eSA9IG9wYWNpdHk7IH0KLSAgICB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KSB7IG1fdHJhbnNmb3JtID0gbWF0cml4OyB9Ci0KICAg
ICBib29sIGhhc1J1bm5pbmdBbmltYXRpb25zKCkgY29uc3QgeyByZXR1cm4gIW1fcnVubmluZ0Fu
aW1hdGlvbnMuaXNFbXB0eSgpOyB9CiAKICAgICBib29sIGhhc1Zpc2libGVIb2xlUHVuY2hSZWN0
KCkgY29uc3Q7CiAKICAgICB2b2lkIGFkZEFuaW1hdGlvbihMYXllckFuaW1hdGlvbiogYW5pbWF0
aW9uKSB7IG1fcnVubmluZ0FuaW1hdGlvbnMuYXBwZW5kKGFuaW1hdGlvbik7IH0KKyAgICB2b2lk
IHJlbW92ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIG5hbWUpOworCiAgICAgdm9pZCBzZXRSdW5u
aW5nQW5pbWF0aW9ucyhjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyQW5pbWF0aW9uPiA+JiBhbmlt
YXRpb25zKSB7IG1fcnVubmluZ0FuaW1hdGlvbnMgPSBhbmltYXRpb25zOyB9CiAgICAgdm9pZCBz
ZXRTdXNwZW5kZWRBbmltYXRpb25zKGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJBbmltYXRpb24+
ID4mIGFuaW1hdGlvbnMpIHsgbV9zdXNwZW5kZWRBbmltYXRpb25zID0gYW5pbWF0aW9uczsgfQog
CisgICAgTGF5ZXJPdmVycmlkZSogb3ZlcnJpZGUoKTsKKyAgICB2b2lkIGNsZWFyT3ZlcnJpZGUo
KTsKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkxheWVyQ29tcG9zaXRpbmdUaHJlYWQoKTsK
IApAQCAtMTQ4LDEwICsyMTUsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVUaWxlQ29u
dGVudHMoY29uc3QgSW50UmVjdCYgdGlsZSk7CiAKLSAgICB2b2lkIHJlbW92ZUZyb21TdXBlcmxh
eWVyKCk7Ci0KLSAgICBzaXplX3QgbnVtU3VibGF5ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9zdWJs
YXllcnMuc2l6ZSgpOyB9Ci0KICAgICAvLyBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgc3VibGF5
ZXIgb3IgLTEgaWYgbm90IGZvdW5kLgogICAgIGludCBpbmRleE9mU3VibGF5ZXIoY29uc3QgTGF5
ZXJDb21wb3NpdGluZ1RocmVhZCopOwogCkBAIC0xODYsNiArMjQ5LDcgQEAgcHJpdmF0ZToKICAg
ICBWZWN0b3I8UmVmUHRyPExheWVyQW5pbWF0aW9uPiA+IG1fcnVubmluZ0FuaW1hdGlvbnM7CiAg
ICAgVmVjdG9yPFJlZlB0cjxMYXllckFuaW1hdGlvbj4gPiBtX3N1c3BlbmRlZEFuaW1hdGlvbnM7
CiAKKyAgICBPd25QdHI8TGF5ZXJPdmVycmlkZT4gbV9vdmVycmlkZTsKICAgICBMYXllckNvbXBv
c2l0aW5nVGhyZWFkQ2xpZW50KiBtX2NsaWVudDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktp
dFRocmVhZC5jcHAKaW5kZXggZmE1MWY4ZjRmMzJkNjA4N2E4Mzg5NGM0NmE0YjNkZTNhNzgzZTI1
Yy4uMTViYmUwYThmMTM4OGExNmU0MDE5NGFmZWMyMGE4ZjhiMDJmODQzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRo
cmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9MYXllcldlYktpdFRocmVhZC5jcHAKQEAgLTY0LDYgKzY0LDcgQEAgTGF5ZXJXZWJLaXRUaHJl
YWQ6OkxheWVyV2ViS2l0VGhyZWFkKExheWVyVHlwZSB0eXBlLCBHcmFwaGljc0xheWVyQmxhY2tC
ZXJyeSogb3cKICAgICAsIG1faXNEcmF3YWJsZShmYWxzZSkKICAgICAsIG1faXNNYXNrKGZhbHNl
KQogICAgICwgbV9hbmltYXRpb25zQ2hhbmdlZChmYWxzZSkKKyAgICAsIG1fY2xlYXJPdmVycmlk
ZU9uQ29tbWl0KGZhbHNlKQogewogICAgIGlmICh0eXBlID09IExheWVyKQogICAgICAgICBtX3Rp
bGVyID0gTGF5ZXJUaWxlcjo6Y3JlYXRlKHRoaXMpOwpAQCAtMjg4LDYgKzI4OSwxMCBAQCB2b2lk
IExheWVyV2ViS2l0VGhyZWFkOjpjb21taXRPbkNvbXBvc2l0aW5nVGhyZWFkKCkKICAgICAgICAg
bV9sYXllckNvbXBvc2l0aW5nVGhyZWFkLT5zZXRTdXNwZW5kZWRBbmltYXRpb25zKG1fc3VzcGVu
ZGVkQW5pbWF0aW9ucyk7CiAgICAgICAgIG1fYW5pbWF0aW9uc0NoYW5nZWQgPSBmYWxzZTsKICAg
ICB9CisgICAgaWYgKG1fY2xlYXJPdmVycmlkZU9uQ29tbWl0KSB7CisgICAgICAgIG1fbGF5ZXJD
b21wb3NpdGluZ1RocmVhZC0+Y2xlYXJPdmVycmlkZSgpOworICAgICAgICBtX2NsZWFyT3ZlcnJp
ZGVPbkNvbW1pdCA9IGZhbHNlOworICAgIH0KICAgICBtX3Bvc2l0aW9uID0gb2xkUG9zaXRpb247
CiAgICAgdXBkYXRlTGF5ZXJIaWVyYXJjaHkoKTsKICAgICBpZiAobV90aWxlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJL
aXRUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
TGF5ZXJXZWJLaXRUaHJlYWQuaAppbmRleCBiMWNkM2E4MTRiNWNkNTNlZjg2YWZjMjE4M2M0OWIw
ZWQyYmIxZGQyLi40OWE0OWJlNWYxM2M5MDA5MDdlNjJlZTgxNTkzOTNjYjMxMTY4ZDNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVy
V2ViS2l0VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5oCkBAIC0xNDgsNiArMTQ4LDkgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0UnVubmluZ0FuaW1hdGlvbnMoY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllckFu
aW1hdGlvbj4gPiYpOwogICAgIHZvaWQgc2V0U3VzcGVuZGVkQW5pbWF0aW9ucyhjb25zdCBWZWN0
b3I8UmVmUHRyPExheWVyQW5pbWF0aW9uPiA+Jik7CiAKKyAgICAvLyBBbGxvd3MgeW91IHRvIGNs
ZWFyIHRoZSBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpvdmVycmlkZXMgZnJvbSB0aGUgV0sgdGhy
ZWFkCisgICAgdm9pZCBjbGVhck92ZXJyaWRlKCkgeyBtX2NsZWFyT3ZlcnJpZGVPbkNvbW1pdCA9
IHRydWU7IHNldE5lZWRzQ29tbWl0KCk7IH0KKwogcHJvdGVjdGVkOgogICAgIExheWVyV2ViS2l0
VGhyZWFkKExheWVyVHlwZSwgR3JhcGhpY3NMYXllckJsYWNrQmVycnkqIG93bmVyKTsKIApAQCAt
MTk4LDYgKzIwMSw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9pc0RyYXdhYmxlIDogMTsK
ICAgICB1bnNpZ25lZCBtX2lzTWFzayA6IDE7CiAgICAgdW5zaWduZWQgbV9hbmltYXRpb25zQ2hh
bmdlZCA6IDE7CisgICAgdW5zaWduZWQgbV9jbGVhck92ZXJyaWRlT25Db21taXQgOiAxOwogfTsK
IAogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>