<?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>76635</bug_id>
          
          <creation_ts>2012-01-19 07:28:57 -0800</creation_ts>
          <short_desc>Refactor canvas drawing to be more data driven</short_desc>
          <delta_ts>2012-01-20 11:23:39 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>0</everconfirmed>
          <reporter name="Tim Dresser">tdresser</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>538693</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Dresser">tdresser</who>
    <bug_when>2012-01-19 07:28:57 -0800</bug_when>
    <thetext>From bug 73059:

CCLayerImpl-derived classes all currently handle drawing themselves internally, making direct GL calls.  This is problematic for several reasons.  Testing these layers is tricky because testing must be done at a mock GL interface level rather than at a higher abstract level.  It makes culling closely dependent on how each layer draws.  It also makes some optimizations like layer squashing impossible.

To fix this, CCLayerImpl-derived classes should produce a set of quads to render with some basic information in them about how they are to be drawn.  This list can then be processed and drawn in a more data-driven and abstract manner.


CCCanvasLayerImpl still handles drawing internally, and should be transitioned to the data-driven approach.
This builds on the initial refactor from bug 76274.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538701</commentid>
    <comment_count>1</comment_count>
      <attachid>123126</attachid>
    <who name="Tim Dresser">tdresser</who>
    <bug_when>2012-01-19 07:47:13 -0800</bug_when>
    <thetext>Created attachment 123126
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538820</commentid>
    <comment_count>2</comment_count>
      <attachid>123126</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-01-19 11:06:59 -0800</bug_when>
    <thetext>Comment on attachment 123126
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:687
&gt; +    if (!quad-&gt;hasAlpha()) {
&gt; +        // Even though the WebGL layer&apos;s texture was likely allocated
&gt; +        // as GL_RGB, disable blending anyway for better robustness.
&gt; +        context()-&gt;disable(GraphicsContext3D::BLEND);
&gt; +    } else {
&gt; +        GC3Denum sfactor = quad-&gt;premultipliedAlpha() ? GraphicsContext3D::ONE : GraphicsContext3D::SRC_ALPHA;
&gt; +        GLC(context(), context()-&gt;blendFunc(sfactor, GraphicsContext3D::ONE_MINUS_SRC_ALPHA));
&gt; +    }

Enabling/disabling alpha is already done by the drawQuad routine above because all quads need that commonly, so no need to do that here.  Can you also make sure blendFunc gets reset properly, since it only is currently set at the beginning of the frame?

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:695
&gt; +    if (!quad-&gt;hasAlpha())
&gt; +        context()-&gt;enable(GraphicsContext3D::BLEND);

Not needed either for the above reason.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCDrawQuad.h:53
&gt; +    const IntSize&amp; bounds() const { return m_sharedQuadState-&gt;bounds(); }

I don&apos;t think this function needs to be added to either CCDrawQuad or the shared quad state.  Isn&apos;t bounds() just quad-&gt;quadRect().size()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539017</commentid>
    <comment_count>3</comment_count>
      <attachid>123191</attachid>
    <who name="Tim Dresser">tdresser</who>
    <bug_when>2012-01-19 14:06:01 -0800</bug_when>
    <thetext>Created attachment 123191
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539020</commentid>
    <comment_count>4</comment_count>
      <attachid>123191</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-01-19 14:09:28 -0800</bug_when>
    <thetext>Comment on attachment 123191
Patch

Thanks! This looks good to me.  jamesr?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539025</commentid>
    <comment_count>5</comment_count>
      <attachid>123191</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-19 14:15:13 -0800</bug_when>
    <thetext>Comment on attachment 123191
Patch

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

R=me, one nit

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:685
&gt; +    drawTexturedQuad(quad-&gt;layerTransform(), quad-&gt;quadRect().size().width(), quad-&gt;quadRect().size().height(), quad-&gt;opacity(), sharedGeometryQuad(),

can I get a temporary const reference to size in this piece? this line&apos;s pretty long, even by webkit standards</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539504</commentid>
    <comment_count>6</comment_count>
      <attachid>123316</attachid>
    <who name="Tim Dresser">tdresser</who>
    <bug_when>2012-01-20 07:52:18 -0800</bug_when>
    <thetext>Created attachment 123316
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539509</commentid>
    <comment_count>7</comment_count>
      <attachid>123316</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-20 07:54:06 -0800</bug_when>
    <thetext>Comment on attachment 123316
Patch for landing

Rejecting attachment 123316 from commit-queue.

tdresser@chromium.org does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539589</commentid>
    <comment_count>8</comment_count>
      <attachid>123316</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-01-20 09:45:02 -0800</bug_when>
    <thetext>Comment on attachment 123316
Patch for landing

Submitting to commit queue on behalf of Tim Dresser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539645</commentid>
    <comment_count>9</comment_count>
      <attachid>123316</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-20 11:23:31 -0800</bug_when>
    <thetext>Comment on attachment 123316
Patch for landing

Clearing flags on attachment: 123316

Committed r105529: &lt;http://trac.webkit.org/changeset/105529&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539646</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-20 11:23:39 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123126</attachid>
            <date>2012-01-19 07:47:13 -0800</date>
            <delta_ts>2012-01-19 14:05:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76635-20120119104712.patch</filename>
            <type>text/plain</type>
            <size>24894</size>
            <attacher name="Tim Dresser">tdresser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDc1YTY1ZTQ3NmE2MGYx
NWQzNDY1ZjVlM2ExNjBkNWI1MGU0ZjA2Ni4uMzk2NzZjZGJiNjllNTZjNDhkZjQ2ZjRmYzQ0M2U3
MjMxOTE3YzM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTAxLTE5ICBUaW0g
RHJlc3NlciAgPHRkcmVzc2VyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZWZhY3RvciBjYW52
YXMgZHJhd2luZyB0byBiZSBtb3JlIGRhdGEgZHJpdmVuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjYzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENDQ2FudmFzTGF5ZXJJbXBsIG5vIGxvbmdlciBoYW5k
bGVzIGRyYXdpbmcgaXRzZWxmLCBidXQgcHJvZHVjZXMgYSBsaXN0IG9mIENDQ2FudmFzRHJhd1F1
YWRzLgorICAgICAgICBUaGVzZSBxdWFkcyBhcmUgdGhlbiBkcmF3biBieSBMYXllclJlbmRlcmVy
Q2hyb21pdW0uCisKKyAgICAgICAgQ0NTaGFyZWRRdWFkU3RhdGUgbm93IHN0b3JlcyBsYXllciBi
b3VuZHMuCisKKyAgICAgICAgVGhpcyBpcyBhIHJlZmFjdG9yLCBzbyBubyBuZXcgdGVzdHMgd2Vy
ZSBhZGRlZC4gQ0NRdWFkQ3VsbGVyVGVzdC5jcHAgd2FzIG1vZGlmaWVkCisgICAgICAgIHRvIG1h
dGNoIHRoZSBjaGFuZ2VzIHRvIENDU2hhcmVkUXVhZFN0YXRlLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0NhbnZhc1F1YWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzRHJhd1F1YWQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NDYW52YXNEcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDQ2FudmFzRHJhd1F1YWQ6OkNDQ2FudmFzRHJhd1F1YWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzRHJhd1F1YWQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDQ2FudmFzRHJhd1F1YWQ6OnRleHR1cmVJZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0NhbnZhc0RyYXdRdWFkOjpoYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0NhbnZh
c0RyYXdRdWFkOjpwcmVtdWx0aXBsaWVkQWxwaGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDQ2FudmFzTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpD
Q0RyYXdRdWFkOjpib3VuZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpjcmVh
dGVTaGFyZWRRdWFkU3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyUGFzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OmFw
cGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2hhcmVk
UXVhZFN0YXRlOjpDQ1NoYXJlZFF1YWRTdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkND
U2hhcmVkUXVhZFN0YXRlOjpib3VuZHMpOgorCiAyMDEyLTAxLTE5ICBWc2V2b2xvZCBWbGFzb3Yg
IDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBpc1Nl
bGZPckFuc2VjdG9yIGFuZCBpc1NlbGZPckRlc2NlbmRhbnQgbWV0aG9kcyB0byB1dGlsaXRpZXMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGYxMzJkMTdlY2QyMmJlNzA0YmViMjgwZjNm
YzI2ZGJlMmNmMGQ1NzIuLjUyZDVhYzkwNTFjMjNhMDU4OGY2NGE5NmE1MzZlNDk0OTAxMWQ2MDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDEtMTkg
IFRpbSBEcmVzc2VyICA8dGRyZXNzZXJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlZmFjdG9y
IGNhbnZhcyBkcmF3aW5nIHRvIGJlIG1vcmUgZGF0YSBkcml2ZW4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2NjM1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW9kaWZpZWQgQ0NRdWFkQ3VsbGVyVGVzdCB0
byBwYXNzIGxheWVyIGJvdW5kcyB0byBDQ1NoYXJlZFF1YWRTdGF0ZS4KKworICAgICAgICAqIHRl
c3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIw
MTItMDEtMTggIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IENsZWFudXA6IE1vdmUgY2hyb21lLXNwZWNpZmljIGZpbGVzeXN0ZW0gdHlwZSBoYW5kbGluZyBj
b2RlIChmb3IgRmlsZVN5c3RlbSBBUEkpIHVuZGVyIGNocm9taXVtIGRpcmVjdG9yeQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggZWVjMTc5YjE4NmQzMWUwMzRkYzdh
MmZlM2QwOWUzNmZmNTJkMmQ5NC4uOGNhOGYyNGNhYjhlYzk3NjJkNGM4NjQxMTJhMWMxMDIyMjk5
OGY5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC02NjksOCAr
NjY5LDMwIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGlsZVF1YWQoY29uc3Qg
Q0NUaWxlRHJhd1F1YWQqIHF1YWQpCiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
Q2FudmFzUXVhZChjb25zdCBDQ0NhbnZhc0RyYXdRdWFkKiBxdWFkKQogewotICAgIENDTGF5ZXJJ
bXBsKiBsYXllciA9IHF1YWQtPmxheWVyKCk7Ci0gICAgbGF5ZXItPmRyYXcodGhpcyk7CisgICAg
QVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKKyAgICBjb25zdCBDQ0NhbnZhc0xheWVy
SW1wbDo6UHJvZ3JhbSogcHJvZ3JhbSA9IGNhbnZhc0xheWVyUHJvZ3JhbSgpOworICAgIEFTU0VS
VChwcm9ncmFtICYmIHByb2dyYW0tPmluaXRpYWxpemVkKCkpOworICAgIEdMQyhjb250ZXh0KCks
IGNvbnRleHQoKS0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsK
KyAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBxdWFkLT50ZXh0dXJlSWQoKSkpOworICAgIEdMQyhjb250ZXh0KCks
IGNvbnRleHQoKS0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6
OkxJTkVBUikpOworICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dGV4UGFyYW1ldGVyaShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
TUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOworCisgICAgaWYgKCFxdWFk
LT5oYXNBbHBoYSgpKSB7CisgICAgICAgIC8vIEV2ZW4gdGhvdWdoIHRoZSBXZWJHTCBsYXllcidz
IHRleHR1cmUgd2FzIGxpa2VseSBhbGxvY2F0ZWQKKyAgICAgICAgLy8gYXMgR0xfUkdCLCBkaXNh
YmxlIGJsZW5kaW5nIGFueXdheSBmb3IgYmV0dGVyIHJvYnVzdG5lc3MuCisgICAgICAgIGNvbnRl
eHQoKS0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIEdDM0RlbnVtIHNmYWN0b3IgPSBxdWFkLT5wcmVtdWx0aXBsaWVkQWxwaGEoKSA/IEdy
YXBoaWNzQ29udGV4dDNEOjpPTkUgOiBHcmFwaGljc0NvbnRleHQzRDo6U1JDX0FMUEhBOworICAg
ICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJsZW5kRnVuYyhzZmFjdG9yLCBHcmFwaGlj
c0NvbnRleHQzRDo6T05FX01JTlVTX1NSQ19BTFBIQSkpOworICAgIH0KKyAgICBHTEMoY29udGV4
dCgpLCBjb250ZXh0KCktPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CisgICAgR0xD
KGNvbnRleHQoKSwgY29udGV4dCgpLT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIo
KS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOworICAgIGRyYXdUZXh0dXJlZFF1YWQocXVhZC0+bGF5
ZXJUcmFuc2Zvcm0oKSwgcXVhZC0+Ym91bmRzKCkud2lkdGgoKSwgcXVhZC0+Ym91bmRzKCkuaGVp
Z2h0KCksIHF1YWQtPm9wYWNpdHkoKSwgc2hhcmVkR2VvbWV0cnlRdWFkKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhM
b2NhdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+
ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAtMSk7CisgICAgaWYgKCFxdWFkLT5oYXNBbHBoYSgpKQorICAgICAgICBj
b250ZXh0KCktPmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpOwogfQogCiB2b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1ZpZGVvUXVhZChjb25zdCBDQ1ZpZGVvRHJhd1F1YWQq
IHF1YWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0NhbnZhc0RyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzRHJhd1F1YWQuY3BwCmluZGV4IGE1Yzc2OGYyOTli
M2FmNjhkMmE2OWM3ZTc4MTM2NjIwNWFkNTI3MjguLjU2ZjUwODNhNTVmYzNhNDFhNjFiM2UwNDAy
YzVmZmFiNmJkZjdhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzRHJhd1F1YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzRHJhd1F1YWQuY3BwCkBAIC0y
OSwxNiArMjksMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPENDQ2Fu
dmFzRHJhd1F1YWQ+IENDQ2FudmFzRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgQ0NMYXllcklt
cGwqIGxheWVyKQorUGFzc093blB0cjxDQ0NhbnZhc0RyYXdRdWFkPiBDQ0NhbnZhc0RyYXdRdWFk
OjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3Qg
SW50UmVjdCYgcXVhZFJlY3QsIHVuc2lnbmVkIHRleHR1cmVJZCwgYm9vbCBoYXNBbHBoYSwgYm9v
bCBwcmVtdWx0aXBsaWVkQWxwaGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ0NhbnZh
c0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIGxheWVyKSk7CisgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBDQ0NhbnZhc0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3Qs
IHRleHR1cmVJZCwgaGFzQWxwaGEsIHByZW11bHRpcGxpZWRBbHBoYSkpOwogfQogCi1DQ0NhbnZh
c0RyYXdRdWFkOjpDQ0NhbnZhc0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFy
ZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBDQ0xheWVySW1wbCogbGF5ZXIp
CitDQ0NhbnZhc0RyYXdRdWFkOjpDQ0NhbnZhc0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0
YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCB1bnNpZ25lZCB0
ZXh0dXJlSWQsIGJvb2wgaGFzQWxwaGEsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhKQogICAgIDog
Q0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OkNhbnZhc0NvbnRlbnQsIHF1
YWRSZWN0KQotICAgICwgbV9sYXllcihsYXllcikKKyAgICAsIG1fdGV4dHVyZUlkKHRleHR1cmVJ
ZCkKKyAgICAsIG1faGFzQWxwaGEoaGFzQWxwaGEpCisgICAgLCBtX3ByZW11bHRpcGxpZWRBbHBo
YShwcmVtdWx0aXBsaWVkQWxwaGEpCiB7Ci0gICAgQVNTRVJUKG1fbGF5ZXIpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0NhbnZhc0RyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0NhbnZhc0RyYXdRdWFkLmgKaW5kZXggNjViNGM4YTFjMmUwMjk4MTFhOWMyNGVj
NDhmYTBkOTIzOTY2OGU0OS4uYWE4NWRiZDEzNGRlODA0MTM2YmE2MzkwMjllNjkxY2NiNTlhYjJm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NDYW52YXNEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzRHJhd1F1YWQuaApAQCAtMzUsMTQgKzM1LDE4IEBAIGNs
YXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgQ0NDYW52YXNEcmF3UXVhZCA6IHB1YmxpYyBDQ0RyYXdR
dWFkIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ0NhbnZhc0RyYXdRdWFkKTsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ0NhbnZhc0RyYXdRdWFkPiBjcmVhdGUoY29uc3Qg
Q0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgQ0NMYXllckltcGwqKTsKKyAgICBz
dGF0aWMgUGFzc093blB0cjxDQ0NhbnZhc0RyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRR
dWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgdW5zaWduZWQgdGV4dHVyZV9pZCwgYm9vbCBoYXNB
bHBoYSwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEpOwogCi0gICAgQ0NMYXllckltcGwqIGxheWVy
KCkgY29uc3QgeyByZXR1cm4gbV9sYXllcjsgfQorICAgIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNv
bnN0IHsgcmV0dXJuICBtX3RleHR1cmVJZDsgfQorICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdCB7
IHJldHVybiAgbV9oYXNBbHBoYTsgfQorICAgIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhKCkgY29u
c3QgeyByZXR1cm4gIG1fcHJlbXVsdGlwbGllZEFscGhhOyB9CiAKIHByaXZhdGU6Ci0gICAgQ0ND
YW52YXNEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBD
Q0xheWVySW1wbCopOwotCi0gICAgQ0NMYXllckltcGwqIG1fbGF5ZXI7CisgICAgQ0NDYW52YXNE
cmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCB1bnNpZ25l
ZCB0ZXh0dXJlX2lkLCBib29sIGhhc0FscGhhLCBib29sIHByZW11bHRpcGxpZWRBbHBoYSk7Cisg
ICAgCisgICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7CisgICAgYm9vbCBtX2hhc0FscGhhOworICAg
IGJvb2wgbV9wcmVtdWx0aXBsaWVkQWxwaGE7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZh
c0xheWVySW1wbC5jcHAKaW5kZXggYWMxODM2NjMzYmM1OGQ3NDM0ZWNlYjU2MDBiMmY3MDcwMWIx
MGRkOC4uMmJiM2VmZjIyNzg5NTMxNTFjYmE3YWMxZGZjYzE0MTdkNDVlY2Y5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNM
YXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmNwcApAQCAtNDksMzkgKzQ5LDEwIEBAIENDQ2FudmFz
TGF5ZXJJbXBsOjp+Q0NDYW52YXNMYXllckltcGwoKQogewogfQogCi12b2lkIENDQ2FudmFzTGF5
ZXJJbXBsOjpkcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKLXsKLSAg
ICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwotICAgIGNvbnN0IENDQ2FudmFzTGF5
ZXJJbXBsOjpQcm9ncmFtKiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJlci0+Y2FudmFzTGF5ZXJQcm9n
cmFtKCk7Ci0gICAgQVNTRVJUKHByb2dyYW0gJiYgcHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSk7Ci0g
ICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVyLT5jb250ZXh0KCk7
Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkUwKSk7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVJZCkpOwotICAgIEdMQyhjb250
ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQz
RDo6TElORUFSKSk7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01B
R19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKLQotICAgIGlmICghbV9oYXNB
bHBoYSkgewotICAgICAgICAvLyBFdmVuIHRob3VnaCB0aGUgV2ViR0wgbGF5ZXIncyB0ZXh0dXJl
IHdhcyBsaWtlbHkgYWxsb2NhdGVkCi0gICAgICAgIC8vIGFzIEdMX1JHQiwgZGlzYWJsZSBibGVu
ZGluZyBhbnl3YXkgZm9yIGJldHRlciByb2J1c3RuZXNzLgotICAgICAgICBjb250ZXh0LT5kaXNh
YmxlKEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgR0Mz
RGVudW0gc2ZhY3RvciA9IG1fcHJlbXVsdGlwbGllZEFscGhhID8gR3JhcGhpY3NDb250ZXh0M0Q6
Ok9ORSA6IEdyYXBoaWNzQ29udGV4dDNEOjpTUkNfQUxQSEE7Ci0gICAgICAgIEdMQyhjb250ZXh0
LCBjb250ZXh0LT5ibGVuZEZ1bmMoc2ZhY3RvciwgR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORV9NSU5V
U19TUkNfQUxQSEEpKTsKLSAgICB9Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVzZVByb2dy
YW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZv
cm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnNhbXBsZXJMb2NhdGlvbigpLCAwKSk7Ci0g
ICAgbGF5ZXJSZW5kZXJlci0+ZHJhd1RleHR1cmVkUXVhZChkcmF3VHJhbnNmb3JtKCksIGJvdW5k
cygpLndpZHRoKCksIGJvdW5kcygpLmhlaWdodCgpLCBkcmF3T3BhY2l0eSgpLCBsYXllclJlbmRl
cmVyLT5zaGFyZWRHZW9tZXRyeVF1YWQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFs
cGhhTG9jYXRpb24oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xKTsK
LSAgICBpZiAoIW1faGFzQWxwaGEpCi0gICAgICAgIGNvbnRleHQtPmVuYWJsZShHcmFwaGljc0Nv
bnRleHQzRDo6QkxFTkQpOwotfQotCiB2b2lkIENDQ2FudmFzTGF5ZXJJbXBsOjphcHBlbmRRdWFk
cyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1
YWRTdGF0ZSkKIHsKICAgICBJbnRSZWN0IHF1YWRSZWN0KEludFBvaW50KCksIGJvdW5kcygpKTsK
LSAgICBxdWFkTGlzdC5hcHBlbmQoQ0NDYW52YXNEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRT
dGF0ZSwgcXVhZFJlY3QsIHRoaXMpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoQ0NDYW52YXNEcmF3
UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG1fdGV4dHVyZUlkLCBtX2hh
c0FscGhhLCBtX3ByZW11bHRpcGxpZWRBbHBoYSkpOwogfQogCiB2b2lkIENDQ2FudmFzTGF5ZXJJ
bXBsOjpkdW1wTGF5ZXJQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NDYW52YXNMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmgKaW5kZXggMzViODllNjc1NTAxMzVhMDZk
ODUxOWVlNzMyZTQwNmYxYjRkMGMwOC4uOTEyNmE3ZDQ0NTAxZTYzMjViNWVmZDRiNTdjYmE5ZTQ2
YmM4YTc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5oCkBAIC00NCw4ICs0NCw2
IEBAIHB1YmxpYzoKIAogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9z
VGV4LCBGcmFnbWVudFNoYWRlclJHQkFUZXhGbGlwQWxwaGE+IFByb2dyYW07CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsKLQogICAgIHZpcnR1YWwgdm9p
ZCBkdW1wTGF5ZXJQcm9wZXJ0aWVzKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50KSBjb25zdDsKIAog
ICAgIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0RyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0RyYXdRdWFkLmgKaW5kZXggYWNjN2MwMjg2NmNjODk1OTMxNTE5NmIzYjgzOGQwODg2YjUx
YzZkZS4uMmEwZGVlZGJhOGI0ZTU5MWY4MjVjZGNiYzNiOWY0MzZkZTliNjFhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVh
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
RHJhd1F1YWQuaApAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIGxheWVyVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFk
U3RhdGUtPmxheWVyVHJhbnNmb3JtKCk7IH0KICAgICBjb25zdCBJbnRSZWN0JiBsYXllclJlY3Qo
KSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+bGF5ZXJSZWN0KCk7IH0KICAgICBj
b25zdCBJbnRSZWN0JiBjbGlwUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRl
LT5jbGlwUmVjdCgpOyB9CisgICAgY29uc3QgSW50U2l6ZSYgYm91bmRzKCkgY29uc3QgeyByZXR1
cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmJvdW5kcygpOyB9CiAgICAgZmxvYXQgb3BhY2l0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5vcGFjaXR5KCk7IH0KICAgICAvLyBGb3Ig
dGhlIHB1cnBvc2VzIG9mIGN1bGxpbmcsIGFyZSB0aGUgY29udGVudHMgb2YgdGhpcyBxdWFkIG9w
YXF1ZT8KICAgICBib29sIGRyYXdzT3BhcXVlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFk
U3RhdGUtPmlzT3BhcXVlKCkgJiYgbV9xdWFkT3BhcXVlICYmIG9wYWNpdHkoKSA9PSAxOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXggZGUzOGEwYWFmNGEyN2Q4NTJhMmY0ODcxZjRiYTBl
OTc2MGI1N2I0Mi4uZTBkYTE0ZGE3M2RlZmZiY2U1MjA0MGFhOWRlYjBkN2Y2ZWYzM2IwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIFBhc3NPd25QdHI8Q0NT
aGFyZWRRdWFkU3RhdGU+IENDTGF5ZXJJbXBsOjpjcmVhdGVTaGFyZWRRdWFkU3RhdGUoKSBjb25z
dAogICAgIEludFJlY3QgbGF5ZXJDbGlwUmVjdDsKICAgICBpZiAodXNlc0xheWVyQ2xpcHBpbmco
KSkKICAgICAgICAgbGF5ZXJDbGlwUmVjdCA9IGNsaXBSZWN0KCk7Ci0gICAgcmV0dXJuIENDU2hh
cmVkUXVhZFN0YXRlOjpjcmVhdGUocXVhZFRyYW5zZm9ybSgpLCBkcmF3VHJhbnNmb3JtKCksIHZp
c2libGVMYXllclJlY3QoKSwgbGF5ZXJDbGlwUmVjdCwgZHJhd09wYWNpdHkoKSwgb3BhcXVlKCkp
OworICAgIHJldHVybiBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKHF1YWRUcmFuc2Zvcm0oKSwg
ZHJhd1RyYW5zZm9ybSgpLCB2aXNpYmxlTGF5ZXJSZWN0KCksIGxheWVyQ2xpcFJlY3QsIGJvdW5k
cygpLCBkcmF3T3BhY2l0eSgpLCBvcGFxdWUoKSk7CiB9CiAKIHZvaWQgQ0NMYXllckltcGw6OmFw
cGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSog
c2hhcmVkUXVhZFN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKaW5kZXggNmY1MWZiY2Rl
MDVhYzk2MTI4NzQ0MDQ1MTA1NGY0ZWMzZjUxMjhkZi4uYzY3MjA0MDc0N2ZlNzk0N2IzMmE3Yjc4
MjE1N2QwM2ZlMzBhYTYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCkBAIC01OSw3ICs1
OSw3IEBAIHZvaWQgQ0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VMYXll
cihDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgLy8gbm90IGJlIGhhbmRsZWQgc3BlY2lhbGx5IGhl
cmUuCiAgICAgQ0NSZW5kZXJTdXJmYWNlKiBzdXJmYWNlID0gbGF5ZXItPnJlbmRlclN1cmZhY2Uo
KTsKICAgICBib29sIGlzT3BhcXVlID0gZmFsc2U7Ci0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0
YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKHN1cmZhY2Ut
PmRyYXdUcmFuc2Zvcm0oKSwgc3VyZmFjZS0+ZHJhd1RyYW5zZm9ybSgpLCBzdXJmYWNlLT5jb250
ZW50UmVjdCgpLCBzdXJmYWNlLT5jbGlwUmVjdCgpLCBzdXJmYWNlLT5kcmF3T3BhY2l0eSgpLCBp
c09wYXF1ZSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUg
PSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKHN1cmZhY2UtPmRyYXdUcmFuc2Zvcm0oKSwgc3Vy
ZmFjZS0+ZHJhd1RyYW5zZm9ybSgpLCBzdXJmYWNlLT5jb250ZW50UmVjdCgpLCBzdXJmYWNlLT5j
bGlwUmVjdCgpLCBsYXllci0+Ym91bmRzKCksIHN1cmZhY2UtPmRyYXdPcGFjaXR5KCksIGlzT3Bh
cXVlKTsKICAgICBtX3F1YWRMaXN0LmFwcGVuZChDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZDo6Y3Jl
YXRlKHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgc3VyZmFjZS0+Y29udGVudFJlY3QoKSwgbGF5ZXIs
IHN1cmZhY2VEYW1hZ2VSZWN0KCkpKTsKICAgICBtX3NoYXJlZFF1YWRTdGF0ZUxpc3QuYXBwZW5k
KHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFk
U3RhdGUuY3BwCmluZGV4IDliZjc2OTI1YmI4Y2YyYmJhYzUzOWMwMTQzMWM1NTc4NDMzOWZkMDUu
LjFjMWQ5NDNiZWI2NjQwYjEwN2IwZjZjOGIxYmFjMTYzYWNiYWVhY2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0
YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NoYXJlZFF1YWRTdGF0ZS5jcHAKQEAgLTI5LDE2ICsyOSwxNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IENDU2hhcmVkUXVhZFN0
YXRlOjpjcmVhdGUoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0sIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBsYXllclRyYW5zZm9ybSwgY29uc3QgSW50UmVjdCYg
bGF5ZXJSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCwgZmxvYXQgb3BhY2l0eSwgYm9vbCBv
cGFxdWUpCitQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBDQ1NoYXJlZFF1YWRTdGF0ZTo6
Y3JlYXRlKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIGxheWVy
UmVjdCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IEludFNpemUmIGJvdW5kcywgZmxv
YXQgb3BhY2l0eSwgYm9vbCBvcGFxdWUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1No
YXJlZFF1YWRTdGF0ZShxdWFkVHJhbnNmb3JtLCBsYXllclRyYW5zZm9ybSwgbGF5ZXJSZWN0LCBj
bGlwUmVjdCwgb3BhY2l0eSwgb3BhcXVlKSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1No
YXJlZFF1YWRTdGF0ZShxdWFkVHJhbnNmb3JtLCBsYXllclRyYW5zZm9ybSwgbGF5ZXJSZWN0LCBj
bGlwUmVjdCwgYm91bmRzLCBvcGFjaXR5LCBvcGFxdWUpKTsKIH0KIAotQ0NTaGFyZWRRdWFkU3Rh
dGU6OkNDU2hhcmVkUXVhZFN0YXRlKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJh
bnNmb3JtLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0sIGNvbnN0
IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QsIGZsb2F0IG9wYWNp
dHksIGJvb2wgb3BhcXVlKQorQ0NTaGFyZWRRdWFkU3RhdGU6OkNDU2hhcmVkUXVhZFN0YXRlKGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29u
c3QgSW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IEludFNpemUmIGJvdW5kcywgZmxvYXQgb3BhY2l0
eSwgYm9vbCBvcGFxdWUpCiAgICAgOiBtX3F1YWRUcmFuc2Zvcm0ocXVhZFRyYW5zZm9ybSkKICAg
ICAsIG1fbGF5ZXJUcmFuc2Zvcm0obGF5ZXJUcmFuc2Zvcm0pCiAgICAgLCBtX2xheWVyUmVjdChs
YXllclJlY3QpCiAgICAgLCBtX2NsaXBSZWN0KGNsaXBSZWN0KQorICAgICwgbV9ib3VuZHMoYm91
bmRzKQogICAgICwgbV9vcGFjaXR5KG9wYWNpdHkpCiAgICAgLCBtX29wYXF1ZShvcGFxdWUpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NoYXJlZFF1YWRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaAppbmRleCBlNzg1NzU3ZjlkYjk0YjFiMzIw
NjFmZDhkOGIyMWM0MGJlZjFmZjBhLi45ODYyNWZmZTRkOTJjYjI3NGQ2ZTQyODg3NjMxYzU5Yzlk
Yjc3NzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmgKQEAgLTM2LDcgKzM2LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ0NTaGFyZWRRdWFkU3RhdGUgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKENDU2hhcmVkUXVhZFN0YXRlKTsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY3JlYXRlKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5
ZXJUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgSW50UmVjdCYgY2xp
cFJlY3QsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlKTsKKyAgICBzdGF0aWMgUGFzc093blB0
cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY3JlYXRlKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBx
dWFkVHJhbnNmb3JtLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0s
IGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0
IEludFNpemUmIGJvdW5kcywgZmxvYXQgb3BhY2l0eSwgYm9vbCBvcGFxdWUpOwogCiAgICAgLy8g
VGhlIHRyYW5zZm9ybSB0aGF0IHF1YWRzIGluIGEgQ0NEcmF3UXVhZCBzaG91bGQgYmUgdHJhbnNm
b3JtZWQgd2l0aC4KICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9y
bSgpIGNvbnN0IHsgcmV0dXJuIG1fcXVhZFRyYW5zZm9ybTsgfQpAQCAtNDQsMTggKzQ0LDIwIEBA
IHB1YmxpYzoKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0o
KSBjb25zdCB7IHJldHVybiBtX2xheWVyVHJhbnNmb3JtOyB9CiAgICAgY29uc3QgSW50UmVjdCYg
bGF5ZXJSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXllclJlY3Q7IH0KICAgICBjb25zdCBJbnRS
ZWN0JiBjbGlwUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpcFJlY3Q7IH0KKyAgICBjb25zdCBJ
bnRTaXplJiBib3VuZHMoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kczsgfQogCiAgICAgZmxvYXQg
b3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BhY2l0eTsgfQogICAgIGJvb2wgaXNPcGFxdWUo
KSBjb25zdCB7IHJldHVybiBtX29wYXF1ZTsgfQogICAgIGJvb2wgaXNMYXllckF4aXNBbGlnbmVk
SW50UmVjdCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIENDU2hhcmVkUXVhZFN0YXRlKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3Qg
SW50UmVjdCYgY2xpcFJlY3QsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlKTsKKyAgICBDQ1No
YXJlZFF1YWRTdGF0ZShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9ybSwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVyVHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0
JiBsYXllclJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0LCBjb25zdCBJbnRTaXplJiBib3Vu
ZHMsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlKTsKIAogICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IG1fcXVhZFRyYW5zZm9ybTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX2xheWVyVHJh
bnNmb3JtOwogICAgIEludFJlY3QgbV9sYXllclJlY3Q7CiAgICAgSW50UmVjdCBtX2NsaXBSZWN0
OworICAgIEludFNpemUgbV9ib3VuZHM7CiAgICAgZmxvYXQgbV9vcGFjaXR5OwogICAgIGJvb2wg
bV9vcGFxdWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1F1YWRDdWxsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFk
Q3VsbGVyVGVzdC5jcHAKaW5kZXggZWQxNWU2YzEwZTFmZTQ2MmM5NDk2ODU2ZGIzOTM0NTY5ZmFi
ODgxYy4uY2I1YjA1M2Q1NWZmNjhlODZhMTA1NGE1OWU1NmE3Yzk5ZmI4NTk2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCkBAIC04
MSw4ICs4MSw4IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENoaWxkTGluZXNV
cFRvcExlZnQpCiB7CiAgICAgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FVQURTCiAKLSAg
ICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHJvb3RTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRl
OjpjcmVhdGUoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwg
cm9vdFJlY3QsIEludFJlY3QoKSwgMS4wLCB0cnVlKTsKLSAgICBPd25QdHI8Q0NTaGFyZWRRdWFk
U3RhdGU+IGNoaWxkU3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGNoaWxkVHJhbnNm
b3JtLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIEludFJlY3QoKSwgMS4wLCB0
cnVlKTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHJvb3RTdGF0ZSA9IENDU2hhcmVk
UXVhZFN0YXRlOjpjcmVhdGUoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSwgcm9vdFJlY3QsIEludFJlY3QoKSwgSW50U2l6ZSgpLCAxLjAsIHRydWUpOworICAg
IE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY2hpbGRTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRl
OjpjcmVhdGUoY2hpbGRUcmFuc2Zvcm0sIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVj
dCwgSW50UmVjdCgpLCBJbnRTaXplKCksIDEuMCwgdHJ1ZSk7CiAKICAgICBzZXRRdWFkcyhyb290
U3RhdGUuZ2V0KCksIGNoaWxkU3RhdGUuZ2V0KCksIHF1YWRMaXN0KTsKICAgICBFWFBFQ1RfRVEo
cXVhZExpc3Quc2l6ZSgpLCAxM3UpOwpAQCAtOTQsOCArOTQsOCBAQCBURVNUKENDUXVhZEN1bGxl
clRlc3QsIHZlcmlmeUN1bGxXaGVuQ2hpbGRPcGFjaXR5Tm90T25lKQogewogICAgIERFQ0xBUkVf
QU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUwogCi0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRl
PiByb290U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFRyYW5zZm9ybWF0aW9uTWF0
cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCBJbnRSZWN0KCksIDEuMCwg
dHJ1ZSk7Ci0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjaGlsZFN0YXRlID0gQ0NTaGFy
ZWRRdWFkU3RhdGU6OmNyZWF0ZShjaGlsZFRyYW5zZm9ybSwgVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSwgY2hpbGRSZWN0LCBJbnRSZWN0KCksIDAuOSwgdHJ1ZSk7CisgICAgT3duUHRyPENDU2hhcmVk
UXVhZFN0YXRlPiByb290U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFRyYW5zZm9y
bWF0aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCBJbnRSZWN0
KCksIEludFNpemUoKSwgMS4wLCB0cnVlKTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+
IGNoaWxkU3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGNoaWxkVHJhbnNmb3JtLCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIEludFJlY3QoKSwgSW50U2l6ZSgpLCAw
LjksIHRydWUpOwogCiAgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdl
dCgpLCBxdWFkTGlzdCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKQEAg
LTEwNyw4ICsxMDcsOCBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxXaGVuQ2hp
bGRPcGFxdWVGbGFnRmFsc2UpCiB7CiAgICAgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FV
QURTCiAKLSAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHJvb3RTdGF0ZSA9IENDU2hhcmVk
UXVhZFN0YXRlOjpjcmVhdGUoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSwgcm9vdFJlY3QsIEludFJlY3QoKSwgMS4wLCB0cnVlKTsKLSAgICBPd25QdHI8Q0NT
aGFyZWRRdWFkU3RhdGU+IGNoaWxkU3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGNo
aWxkVHJhbnNmb3JtLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIEludFJlY3Qo
KSwgMS4wLCBmYWxzZSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiByb290U3RhdGUg
PSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIFRyYW5z
Zm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCBJbnRSZWN0KCksIEludFNpemUoKSwgMS4wLCB0
cnVlKTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNoaWxkU3RhdGUgPSBDQ1NoYXJl
ZFF1YWRTdGF0ZTo6Y3JlYXRlKGNoaWxkVHJhbnNmb3JtLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
LCBjaGlsZFJlY3QsIEludFJlY3QoKSwgSW50U2l6ZSgpLCAxLjAsIGZhbHNlKTsKIAogICAgIHNl
dFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRTdGF0ZS5nZXQoKSwgcXVhZExpc3QpOwogICAg
IEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7CkBAIC0xMjIsOCArMTIyLDggQEAgVEVT
VChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsQ2VudGVyVGlsZU9ubHkpCiAKICAgICBjaGls
ZFRyYW5zZm9ybS50cmFuc2xhdGUoNTAsIDUwKTsKIAotICAgIE93blB0cjxDQ1NoYXJlZFF1YWRT
dGF0ZT4gcm9vdFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgSW50UmVjdCgpLCAx
LjAsIHRydWUpOwotICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY2hpbGRTdGF0ZSA9IEND
U2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoY2hpbGRUcmFuc2Zvcm0sIFRyYW5zZm9ybWF0aW9uTWF0
cml4KCksIGNoaWxkUmVjdCwgSW50UmVjdCgpLCAxLjAsIHRydWUpOworICAgIE93blB0cjxDQ1No
YXJlZFF1YWRTdGF0ZT4gcm9vdFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgSW50
UmVjdCgpLCBJbnRTaXplKCksIDEuMCwgdHJ1ZSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0
YXRlPiBjaGlsZFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjaGlsZFRyYW5zZm9y
bSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCBJbnRSZWN0KCksIEludFNpemUo
KSwgMS4wLCB0cnVlKTsKIAogICAgIHNldFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRTdGF0
ZS5nZXQoKSwgcXVhZExpc3QpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7
CkBAIC0xMzcsOCArMTM3LDggQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsQ2hp
bGRMaW5lc1VwQm90dG9tUmlnaHQpCiAKICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoMTAw
LCAxMDApOwogCi0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiByb290U3RhdGUgPSBDQ1No
YXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0
aW9uTWF0cml4KCksIHJvb3RSZWN0LCBJbnRSZWN0KCksIDEuMCwgdHJ1ZSk7Ci0gICAgT3duUHRy
PENDU2hhcmVkUXVhZFN0YXRlPiBjaGlsZFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0
ZShjaGlsZFRyYW5zZm9ybSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCBJbnRS
ZWN0KCksIDEuMCwgdHJ1ZSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiByb290U3Rh
dGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIFRy
YW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCBJbnRSZWN0KCksIEludFNpemUoKSwgMS4w
LCB0cnVlKTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNoaWxkU3RhdGUgPSBDQ1No
YXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGNoaWxkVHJhbnNmb3JtLCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpLCBjaGlsZFJlY3QsIEludFJlY3QoKSwgSW50U2l6ZSgpLCAxLjAsIHRydWUpOwogCiAgICAg
c2V0UXVhZHMocm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCk7CiAg
ICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKQEAgLTE1Myw4ICsxNTMsOCBAQCBU
RVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeU5vbkF4aXNBbGlnbmVkUXVhZHNEb250T2NjbHVk
ZSkKICAgICAvLyBVc2UgYSBzbWFsbCByb3RhdGlvbiBzbyBhcyB0byBub3QgZGlzdHVyYiB0aGUg
Z2VvbWV0cnkgc2lnbmlmaWNhbnRseS4KICAgICBjaGlsZFRyYW5zZm9ybS5yb3RhdGUoMSk7CiAK
LSAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHJvb3RTdGF0ZSA9IENDU2hhcmVkUXVhZFN0
YXRlOjpjcmVhdGUoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSwgcm9vdFJlY3QsIEludFJlY3QoKSwgMS4wLCB0cnVlKTsKLSAgICBPd25QdHI8Q0NTaGFyZWRR
dWFkU3RhdGU+IGNoaWxkU3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGNoaWxkVHJh
bnNmb3JtLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIEludFJlY3QoKSwgMS4w
LCB0cnVlKTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHJvb3RTdGF0ZSA9IENDU2hh
cmVkUXVhZFN0YXRlOjpjcmVhdGUoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSwgcm9vdFJlY3QsIEludFJlY3QoKSwgSW50U2l6ZSgpLCAxLjAsIHRydWUpOwor
ICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY2hpbGRTdGF0ZSA9IENDU2hhcmVkUXVhZFN0
YXRlOjpjcmVhdGUoY2hpbGRUcmFuc2Zvcm0sIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxk
UmVjdCwgSW50UmVjdCgpLCBJbnRTaXplKCksIDEuMCwgdHJ1ZSk7CiAKICAgICBzZXRRdWFkcyhy
b290U3RhdGUuZ2V0KCksIGNoaWxkU3RhdGUuZ2V0KCksIHF1YWRMaXN0KTsKICAgICBFWFBFQ1Rf
RVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOwpAQCAtMTc1LDggKzE3NSw4IEBAIFRFU1QoQ0NRdWFk
Q3VsbGVyVGVzdCwgdmVyaWZ5Tm9uQXhpc0FsaWduZWRRdWFkc1NhZmVseUN1bGxlZCkKICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBwYXJlbnRUcmFuc2Zvcm07CiAgICAgcGFyZW50VHJhbnNmb3Jt
LnJvdGF0ZSgxKTsKIAotICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gcm9vdFN0YXRlID0g
Q0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShwYXJlbnRUcmFuc2Zvcm0sIFRyYW5zZm9ybWF0aW9u
TWF0cml4KCksIHJvb3RSZWN0LCBJbnRSZWN0KCksIDEuMCwgdHJ1ZSk7Ci0gICAgT3duUHRyPEND
U2hhcmVkUXVhZFN0YXRlPiBjaGlsZFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3Qs
IEludFJlY3QoKSwgMS4wLCB0cnVlKTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHJv
b3RTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUocGFyZW50VHJhbnNmb3JtLCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgSW50UmVjdCgpLCBJbnRTaXplKCksIDEuMCwg
dHJ1ZSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjaGlsZFN0YXRlID0gQ0NTaGFy
ZWRRdWFkU3RhdGU6OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpLCBjaGlsZFJlY3QsIEludFJlY3QoKSwgSW50U2l6ZSgpLCAxLjAsIHRydWUpOwog
CiAgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlz
dCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123191</attachid>
            <date>2012-01-19 14:06:01 -0800</date>
            <delta_ts>2012-01-20 07:52:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76635-20120119170600.patch</filename>
            <type>text/plain</type>
            <size>9798</size>
            <attacher name="Tim Dresser">tdresser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDc1YTY1ZTQ3NmE2MGYx
NWQzNDY1ZjVlM2ExNjBkNWI1MGU0ZjA2Ni4uMjRiODA5NDBhNTU4NzNkMWM0OWNlNDFhYzg5MDQx
MTk4MmRlZjE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTAxLTE5ICBUaW0g
RHJlc3NlciAgPHRkcmVzc2VyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZWZhY3RvciBjYW52
YXMgZHJhd2luZyB0byBiZSBtb3JlIGRhdGEgZHJpdmVuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjYzNQorCisgICAgICAgIENDQ2FudmFzTGF5ZXJJ
bXBsIG5vIGxvbmdlciBoYW5kbGVzIGRyYXdpbmcgaXRzZWxmLCBidXQgcHJvZHVjZXMgYSBsaXN0
IG9mIENDQ2FudmFzRHJhd1F1YWRzLgorICAgICAgICBUaGVzZSBxdWFkcyBhcmUgdGhlbiBkcmF3
biBieSBMYXllclJlbmRlcmVyQ2hyb21pdW0uCisKKyAgICAgICAgVGhpcyBpcyBhIHJlZmFjdG9y
LCBzbyBubyBuZXcgdGVzdHMgd2VyZSBhZGRlZC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hy
b21pdW06OmRyYXdDYW52YXNRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0NhbnZhc0RyYXdRdWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDQ2FudmFz
RHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0NhbnZhc0RyYXdRdWFkOjpD
Q0NhbnZhc0RyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0NhbnZhc0RyYXdRdWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0NhbnZhc0RyYXdRdWFk
Ojp0ZXh0dXJlSWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NDYW52YXNEcmF3UXVhZDo6aGFzQWxw
aGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0NDYW52YXNEcmF3UXVhZDo6cHJlbXVsdGlwbGllZEFs
cGhhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xh
eWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0NhbnZhc0xheWVySW1wbDo6YXBwZW5k
UXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFz
TGF5ZXJJbXBsLmg6CisKIDIwMTItMDEtMTkgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIGlzU2VsZk9yQW5zZWN0b3Ig
YW5kIGlzU2VsZk9yRGVzY2VuZGFudCBtZXRob2RzIHRvIHV0aWxpdGllcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IGVlYzE3OWIxODZkMzFlMDM0ZGM3YTJmZTNk
MDllMzZmZjUyZDJkOTQuLjVhMGE5ZjcyMGI1ZTZiZTgwODFhMzU1NWYzNjIyZGQ4NmMxNDhjODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtNjY5LDggKzY2OSwy
NSBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RpbGVRdWFkKGNvbnN0IENDVGls
ZURyYXdRdWFkKiBxdWFkKQogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0NhbnZh
c1F1YWQoY29uc3QgQ0NDYW52YXNEcmF3UXVhZCogcXVhZCkKIHsKLSAgICBDQ0xheWVySW1wbCog
bGF5ZXIgPSBxdWFkLT5sYXllcigpOwotICAgIGxheWVyLT5kcmF3KHRoaXMpOworICAgIEFTU0VS
VChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgY29uc3QgQ0NDYW52YXNMYXllckltcGw6
OlByb2dyYW0qIHByb2dyYW0gPSBjYW52YXNMYXllclByb2dyYW0oKTsKKyAgICBBU1NFUlQocHJv
Z3JhbSAmJiBwcm9ncmFtLT5pbml0aWFsaXplZCgpKTsKKyAgICBHTEMoY29udGV4dCgpLCBjb250
ZXh0KCktPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7CisgICAg
R0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgcXVhZC0+dGV4dHVyZUlkKCkpKTsKKyAgICBHTEMoY29udGV4dCgpLCBjb250
ZXh0KCktPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5F
QVIpKTsKKyAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnRleFBhcmFtZXRlcmkoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19G
SUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKKworICAgIGlmIChxdWFkLT5oYXNB
bHBoYSgpICYmICFxdWFkLT5wcmVtdWx0aXBsaWVkQWxwaGEoKSkKKyAgICAgICAgR0xDKGNvbnRl
eHQoKSwgY29udGV4dCgpLT5ibGVuZEZ1bmMoR3JhcGhpY3NDb250ZXh0M0Q6OlNSQ19BTFBIQSwg
R3JhcGhpY3NDb250ZXh0M0Q6Ok9ORV9NSU5VU19TUkNfQUxQSEEpKTsKKworICAgIEdMQyhjb250
ZXh0KCksIGNvbnRleHQoKS0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKKyAgICBH
TEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRl
cigpLnNhbXBsZXJMb2NhdGlvbigpLCAwKSk7CisgICAgZHJhd1RleHR1cmVkUXVhZChxdWFkLT5s
YXllclRyYW5zZm9ybSgpLCBxdWFkLT5xdWFkUmVjdCgpLnNpemUoKS53aWR0aCgpLCBxdWFkLT5x
dWFkUmVjdCgpLnNpemUoKS5oZWlnaHQoKSwgcXVhZC0+b3BhY2l0eSgpLCBzaGFyZWRHZW9tZXRy
eVF1YWQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPnZl
cnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24oKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xKTsKKworICAgIEdMQyhtX2NvbnRl
eHQuZ2V0KCksIG1fY29udGV4dC0+YmxlbmRGdW5jKEdyYXBoaWNzQ29udGV4dDNEOjpPTkUsIEdy
YXBoaWNzQ29udGV4dDNEOjpPTkVfTUlOVVNfU1JDX0FMUEhBKSk7CiB9CiAKIHZvaWQgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpkcmF3VmlkZW9RdWFkKGNvbnN0IENDVmlkZW9EcmF3UXVhZCogcXVh
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDQ2FudmFzRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5jcHAKaW5kZXggYTVjNzY4ZjI5OWIzYWY2
OGQyYTY5YzdlNzgxMzY2MjA1YWQ1MjcyOC4uNTZmNTA4M2E1NWZjM2E0MWE2MWIzZTA0MDJjNWZm
YWI2YmRmN2ExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5jcHAKQEAgLTI5LDE2
ICsyOSwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NPd25QdHI8Q0NDYW52YXNE
cmF3UXVhZD4gQ0NDYW52YXNEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBDQ0xheWVySW1wbCog
bGF5ZXIpCitQYXNzT3duUHRyPENDQ2FudmFzRHJhd1F1YWQ+IENDQ2FudmFzRHJhd1F1YWQ6OmNy
ZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRS
ZWN0JiBxdWFkUmVjdCwgdW5zaWduZWQgdGV4dHVyZUlkLCBib29sIGhhc0FscGhhLCBib29sIHBy
ZW11bHRpcGxpZWRBbHBoYSkKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDQ2FudmFzRHJh
d1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbGF5ZXIpKTsKKyAgICByZXR1cm4gYWRv
cHRQdHIobmV3IENDQ2FudmFzRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgdGV4
dHVyZUlkLCBoYXNBbHBoYSwgcHJlbXVsdGlwbGllZEFscGhhKSk7CiB9CiAKLUNDQ2FudmFzRHJh
d1F1YWQ6OkNDQ2FudmFzRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1
YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIENDTGF5ZXJJbXBsKiBsYXllcikKK0ND
Q2FudmFzRHJhd1F1YWQ6OkNDQ2FudmFzRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
IHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIHVuc2lnbmVkIHRleHR1
cmVJZCwgYm9vbCBoYXNBbHBoYSwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEpCiAgICAgOiBDQ0Ry
YXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6Q2FudmFzQ29udGVudCwgcXVhZFJl
Y3QpCi0gICAgLCBtX2xheWVyKGxheWVyKQorICAgICwgbV90ZXh0dXJlSWQodGV4dHVyZUlkKQor
ICAgICwgbV9oYXNBbHBoYShoYXNBbHBoYSkKKyAgICAsIG1fcHJlbXVsdGlwbGllZEFscGhhKHBy
ZW11bHRpcGxpZWRBbHBoYSkKIHsKLSAgICBBU1NFUlQobV9sYXllcik7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2Fu
dmFzRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDQ2FudmFzRHJhd1F1YWQuaAppbmRleCA2NWI0YzhhMWMyZTAyOTgxMWE5YzI0ZWM0OGZh
MGQ5MjM5NjY4ZTQ5Li5hYTg1ZGJkMTM0ZGU4MDQxMzZiYTYzOTAyOWU2OTFjY2I1OWFiMmZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0NhbnZhc0RyYXdRdWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5oCkBAIC0zNSwxNCArMzUsMTggQEAgY2xhc3Mg
Q0NMYXllckltcGw7CiBjbGFzcyBDQ0NhbnZhc0RyYXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDQ2FudmFzRHJhd1F1YWQpOwogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENDQ2FudmFzRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBDQ0xheWVySW1wbCopOworICAgIHN0YXRp
YyBQYXNzT3duUHRyPENDQ2FudmFzRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSosIGNvbnN0IEludFJlY3QmLCB1bnNpZ25lZCB0ZXh0dXJlX2lkLCBib29sIGhhc0FscGhh
LCBib29sIHByZW11bHRpcGxpZWRBbHBoYSk7CiAKLSAgICBDQ0xheWVySW1wbCogbGF5ZXIoKSBj
b25zdCB7IHJldHVybiBtX2xheWVyOyB9CisgICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3Qg
eyByZXR1cm4gIG1fdGV4dHVyZUlkOyB9CisgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0IHsgcmV0
dXJuICBtX2hhc0FscGhhOyB9CisgICAgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEoKSBjb25zdCB7
IHJldHVybiAgbV9wcmVtdWx0aXBsaWVkQWxwaGE7IH0KIAogcHJpdmF0ZToKLSAgICBDQ0NhbnZh
c0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIENDTGF5
ZXJJbXBsKik7Ci0KLSAgICBDQ0xheWVySW1wbCogbV9sYXllcjsKKyAgICBDQ0NhbnZhc0RyYXdR
dWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIHVuc2lnbmVkIHRl
eHR1cmVfaWQsIGJvb2wgaGFzQWxwaGEsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhKTsKKyAgICAK
KyAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKKyAgICBib29sIG1faGFzQWxwaGE7CisgICAgYm9v
bCBtX3ByZW11bHRpcGxpZWRBbHBoYTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5
ZXJJbXBsLmNwcAppbmRleCBhYzE4MzY2MzNiYzU4ZDc0MzRlY2ViNTYwMGIyZjcwNzAxYjEwZGQ4
Li4yYmIzZWZmMjI3ODk1MzE1MWNiYTdhYzFkZmNjMTQxN2Q0NWVjZjk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVy
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NDYW52YXNMYXllckltcGwuY3BwCkBAIC00OSwzOSArNDksMTAgQEAgQ0NDYW52YXNMYXll
ckltcGw6On5DQ0NhbnZhc0xheWVySW1wbCgpCiB7CiB9CiAKLXZvaWQgQ0NDYW52YXNMYXllcklt
cGw6OmRyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQotewotICAgIEFT
U0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7Ci0gICAgY29uc3QgQ0NDYW52YXNMYXllcklt
cGw6OlByb2dyYW0qIHByb2dyYW0gPSBsYXllclJlbmRlcmVyLT5jYW52YXNMYXllclByb2dyYW0o
KTsKLSAgICBBU1NFUlQocHJvZ3JhbSAmJiBwcm9ncmFtLT5pbml0aWFsaXplZCgpKTsKLSAgICBH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IGxheWVyUmVuZGVyZXItPmNvbnRleHQoKTsKLSAg
ICBHTEMoY29udGV4dCwgY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRTApKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZUlkKSk7Ci0gICAgR0xDKGNvbnRleHQs
IGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpM
SU5FQVIpKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJ
TFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOwotCi0gICAgaWYgKCFtX2hhc0FscGhh
KSB7Ci0gICAgICAgIC8vIEV2ZW4gdGhvdWdoIHRoZSBXZWJHTCBsYXllcidzIHRleHR1cmUgd2Fz
IGxpa2VseSBhbGxvY2F0ZWQKLSAgICAgICAgLy8gYXMgR0xfUkdCLCBkaXNhYmxlIGJsZW5kaW5n
IGFueXdheSBmb3IgYmV0dGVyIHJvYnVzdG5lc3MuCi0gICAgICAgIGNvbnRleHQtPmRpc2FibGUo
R3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKTsKLSAgICB9IGVsc2UgewotICAgICAgICBHQzNEZW51
bSBzZmFjdG9yID0gbV9wcmVtdWx0aXBsaWVkQWxwaGEgPyBHcmFwaGljc0NvbnRleHQzRDo6T05F
IDogR3JhcGhpY3NDb250ZXh0M0Q6OlNSQ19BTFBIQTsKLSAgICAgICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPmJsZW5kRnVuYyhzZmFjdG9yLCBHcmFwaGljc0NvbnRleHQzRDo6T05FX01JTlVTX1NS
Q19BTFBIQSkpOwotICAgIH0KLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dXNlUHJvZ3JhbShw
cm9ncmFtLT5wcm9ncmFtKCkpKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFp
KHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKLSAgICBs
YXllclJlbmRlcmVyLT5kcmF3VGV4dHVyZWRRdWFkKGRyYXdUcmFuc2Zvcm0oKSwgYm91bmRzKCku
d2lkdGgoKSwgYm91bmRzKCkuaGVpZ2h0KCksIGRyYXdPcGFjaXR5KCksIGxheWVyUmVuZGVyZXIt
PnNoYXJlZEdlb21ldHJ5UXVhZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFM
b2NhdGlvbigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEpOwotICAg
IGlmICghbV9oYXNBbHBoYSkKLSAgICAgICAgY29udGV4dC0+ZW5hYmxlKEdyYXBoaWNzQ29udGV4
dDNEOjpCTEVORCk7Ci19Ci0KIHZvaWQgQ0NDYW52YXNMYXllckltcGw6OmFwcGVuZFF1YWRzKEND
UXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0
YXRlKQogewogICAgIEludFJlY3QgcXVhZFJlY3QoSW50UG9pbnQoKSwgYm91bmRzKCkpOwotICAg
IHF1YWRMaXN0LmFwcGVuZChDQ0NhbnZhc0RyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRl
LCBxdWFkUmVjdCwgdGhpcykpOworICAgIHF1YWRMaXN0LmFwcGVuZChDQ0NhbnZhc0RyYXdRdWFk
OjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV90ZXh0dXJlSWQsIG1faGFzQWxw
aGEsIG1fcHJlbXVsdGlwbGllZEFscGhhKSk7CiB9CiAKIHZvaWQgQ0NDYW52YXNMYXllckltcGw6
OmR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0NhbnZhc0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuaAppbmRleCAzNWI4OWU2NzU1MDEzNWEwNmQ4NTE5
ZWU3MzJlNDA2ZjFiNGQwYzA4Li45MTI2YTdkNDQ1MDFlNjMyNWI1ZWZkNGI1N2NiYTllNDZiYzhh
NzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmgKQEAgLTQ0LDggKzQ0LDYgQEAg
cHVibGljOgogCiAgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXgs
IEZyYWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBoYT4gUHJvZ3JhbTsKIAotICAgIHZpcnR1YWwg
dm9pZCBkcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSopOwotCiAgICAgdmlydHVhbCB2b2lkIGR1
bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0OwogCiAgICAg
dW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123316</attachid>
            <date>2012-01-20 07:52:18 -0800</date>
            <delta_ts>2012-01-20 11:23:31 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-76635-20120120105216.patch</filename>
            <type>text/plain</type>
            <size>9804</size>
            <attacher name="Tim Dresser">tdresser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM5ZTliNWIyNDZhZmMy
MDZmOGZhZmYyNTQ5ZTdmYjA0M2VkZTgxNS4uMWVjYTk5YTNjN2ZlNTA3MzVmNTM3ZjI1MTMzMGI5
Yjg4ZTMzMmFiYiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTAxLTIwICBUaW0g
RHJlc3NlciAgPHRkcmVzc2VyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZWZhY3RvciBjYW52
YXMgZHJhd2luZyB0byBiZSBtb3JlIGRhdGEgZHJpdmVuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjYzNQorCisgICAgICAgIENDQ2FudmFzTGF5ZXJJ
bXBsIG5vIGxvbmdlciBoYW5kbGVzIGRyYXdpbmcgaXRzZWxmLCBidXQgcHJvZHVjZXMgYSBsaXN0
IG9mIENDQ2FudmFzRHJhd1F1YWRzLgorICAgICAgICBUaGVzZSBxdWFkcyBhcmUgdGhlbiBkcmF3
biBieSBMYXllclJlbmRlcmVyQ2hyb21pdW0uCisKKyAgICAgICAgVGhpcyBpcyBhIHJlZmFjdG9y
LCBzbyBubyBuZXcgdGVzdHMgd2VyZSBhZGRlZC4KKworICAgICAgICBSZXZpZXdlZCBieSBKYW1l
cyBSb2JpbnNvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hy
b21pdW06OmRyYXdDYW52YXNRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0NhbnZhc0RyYXdRdWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDQ2FudmFz
RHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0NhbnZhc0RyYXdRdWFkOjpD
Q0NhbnZhc0RyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0NhbnZhc0RyYXdRdWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0NhbnZhc0RyYXdRdWFk
Ojp0ZXh0dXJlSWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NDYW52YXNEcmF3UXVhZDo6aGFzQWxw
aGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0NDYW52YXNEcmF3UXVhZDo6cHJlbXVsdGlwbGllZEFs
cGhhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xh
eWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0NhbnZhc0xheWVySW1wbDo6YXBwZW5k
UXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFz
TGF5ZXJJbXBsLmg6CisKIDIwMTItMDEtMjAgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIEFkZCBEYXRhVHJhbnNmZXJJdGVtcyBzdXBwb3J0IGZvciBkcmFn
LWFuZC1kcm9wJ2VkIGZpbGVzIGFuZCB0ZXh0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5jcHAKaW5kZXggZWVjMTc5YjE4NmQzMWUwMzRkYzdhMmZlM2QwOWUzNmZmNTJkMmQ5NC4u
YmJkZjg5ZGFmMDE2OGNjODA0MTk2YmQ5ZjMxM2IzMGE4OWYzMzFjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC02NjksOCArNjY5LDI3IEBAIHZvaWQgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpkcmF3VGlsZVF1YWQoY29uc3QgQ0NUaWxlRHJhd1F1YWQqIHF1YWQp
CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3Q2FudmFzUXVhZChjb25zdCBDQ0Nh
bnZhc0RyYXdRdWFkKiBxdWFkKQogewotICAgIENDTGF5ZXJJbXBsKiBsYXllciA9IHF1YWQtPmxh
eWVyKCk7Ci0gICAgbGF5ZXItPmRyYXcodGhpcyk7CisgICAgQVNTRVJUKENDUHJveHk6OmlzSW1w
bFRocmVhZCgpKTsKKyAgICBjb25zdCBDQ0NhbnZhc0xheWVySW1wbDo6UHJvZ3JhbSogcHJvZ3Jh
bSA9IGNhbnZhc0xheWVyUHJvZ3JhbSgpOworICAgIEFTU0VSVChwcm9ncmFtICYmIHByb2dyYW0t
PmluaXRpYWxpemVkKCkpOworICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YWN0aXZlVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsKKyAgICBHTEMoY29udGV4dCgpLCBj
b250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBxdWFk
LT50ZXh0dXJlSWQoKSkpOworICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dGV4UGFyYW1l
dGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOworICAgIEdMQyhj
b250ZXh0KCksIGNvbnRleHQoKS0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3ND
b250ZXh0M0Q6OkxJTkVBUikpOworCisgICAgaWYgKHF1YWQtPmhhc0FscGhhKCkgJiYgIXF1YWQt
PnByZW11bHRpcGxpZWRBbHBoYSgpKQorICAgICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCkt
PmJsZW5kRnVuYyhHcmFwaGljc0NvbnRleHQzRDo6U1JDX0FMUEhBLCBHcmFwaGljc0NvbnRleHQz
RDo6T05FX01JTlVTX1NSQ19BTFBIQSkpOworCisgICAgY29uc3QgSW50U2l6ZSYgYm91bmRzID0g
cXVhZC0+cXVhZFJlY3QoKS5zaXplKCk7CisKKyAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCkt
PnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CisgICAgR0xDKGNvbnRleHQoKSwgY29u
dGV4dCgpLT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRp
b24oKSwgMCkpOworICAgIGRyYXdUZXh0dXJlZFF1YWQocXVhZC0+bGF5ZXJUcmFuc2Zvcm0oKSwg
Ym91bmRzLndpZHRoKCksIGJvdW5kcy5oZWlnaHQoKSwgcXVhZC0+b3BhY2l0eSgpLCBzaGFyZWRH
ZW9tZXRyeVF1YWQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dy
YW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24o
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xKTsKKworICAgIEdMQyht
X2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+YmxlbmRGdW5jKEdyYXBoaWNzQ29udGV4dDNEOjpP
TkUsIEdyYXBoaWNzQ29udGV4dDNEOjpPTkVfTUlOVVNfU1JDX0FMUEhBKSk7CiB9CiAKIHZvaWQg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VmlkZW9RdWFkKGNvbnN0IENDVmlkZW9EcmF3UXVh
ZCogcXVhZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDQ2FudmFzRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5jcHAKaW5kZXggYTVjNzY4ZjI5
OWIzYWY2OGQyYTY5YzdlNzgxMzY2MjA1YWQ1MjcyOC4uNTZmNTA4M2E1NWZjM2E0MWE2MWIzZTA0
MDJjNWZmYWI2YmRmN2ExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5jcHAKQEAg
LTI5LDE2ICsyOSwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NPd25QdHI8Q0ND
YW52YXNEcmF3UXVhZD4gQ0NDYW52YXNEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBDQ0xheWVy
SW1wbCogbGF5ZXIpCitQYXNzT3duUHRyPENDQ2FudmFzRHJhd1F1YWQ+IENDQ2FudmFzRHJhd1F1
YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25z
dCBJbnRSZWN0JiBxdWFkUmVjdCwgdW5zaWduZWQgdGV4dHVyZUlkLCBib29sIGhhc0FscGhhLCBi
b29sIHByZW11bHRpcGxpZWRBbHBoYSkKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDQ2Fu
dmFzRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbGF5ZXIpKTsKKyAgICByZXR1
cm4gYWRvcHRQdHIobmV3IENDQ2FudmFzRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVj
dCwgdGV4dHVyZUlkLCBoYXNBbHBoYSwgcHJlbXVsdGlwbGllZEFscGhhKSk7CiB9CiAKLUNDQ2Fu
dmFzRHJhd1F1YWQ6OkNDQ2FudmFzRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNo
YXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIENDTGF5ZXJJbXBsKiBsYXll
cikKK0NDQ2FudmFzRHJhd1F1YWQ6OkNDQ2FudmFzRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFk
U3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIHVuc2lnbmVk
IHRleHR1cmVJZCwgYm9vbCBoYXNBbHBoYSwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEpCiAgICAg
OiBDQ0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6Q2FudmFzQ29udGVudCwg
cXVhZFJlY3QpCi0gICAgLCBtX2xheWVyKGxheWVyKQorICAgICwgbV90ZXh0dXJlSWQodGV4dHVy
ZUlkKQorICAgICwgbV9oYXNBbHBoYShoYXNBbHBoYSkKKyAgICAsIG1fcHJlbXVsdGlwbGllZEFs
cGhhKHByZW11bHRpcGxpZWRBbHBoYSkKIHsKLSAgICBBU1NFUlQobV9sYXllcik7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDQ2FudmFzRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDQ2FudmFzRHJhd1F1YWQuaAppbmRleCA2NWI0YzhhMWMyZTAyOTgxMWE5YzI0
ZWM0OGZhMGQ5MjM5NjY4ZTQ5Li5hYTg1ZGJkMTM0ZGU4MDQxMzZiYTYzOTAyOWU2OTFjY2I1OWFi
MmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0NhbnZhc0RyYXdRdWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5oCkBAIC0zNSwxNCArMzUsMTggQEAg
Y2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBDQ0NhbnZhc0RyYXdRdWFkIDogcHVibGljIENDRHJh
d1F1YWQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDQ2FudmFzRHJhd1F1YWQpOwogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDQ2FudmFzRHJhd1F1YWQ+IGNyZWF0ZShjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBDQ0xheWVySW1wbCopOworICAg
IHN0YXRpYyBQYXNzT3duUHRyPENDQ2FudmFzRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCB1bnNpZ25lZCB0ZXh0dXJlX2lkLCBib29sIGhh
c0FscGhhLCBib29sIHByZW11bHRpcGxpZWRBbHBoYSk7CiAKLSAgICBDQ0xheWVySW1wbCogbGF5
ZXIoKSBjb25zdCB7IHJldHVybiBtX2xheWVyOyB9CisgICAgdW5zaWduZWQgdGV4dHVyZUlkKCkg
Y29uc3QgeyByZXR1cm4gIG1fdGV4dHVyZUlkOyB9CisgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0
IHsgcmV0dXJuICBtX2hhc0FscGhhOyB9CisgICAgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEoKSBj
b25zdCB7IHJldHVybiAgbV9wcmVtdWx0aXBsaWVkQWxwaGE7IH0KIAogcHJpdmF0ZToKLSAgICBD
Q0NhbnZhc0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYs
IENDTGF5ZXJJbXBsKik7Ci0KLSAgICBDQ0xheWVySW1wbCogbV9sYXllcjsKKyAgICBDQ0NhbnZh
c0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIHVuc2ln
bmVkIHRleHR1cmVfaWQsIGJvb2wgaGFzQWxwaGEsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhKTsK
KyAgICAKKyAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKKyAgICBib29sIG1faGFzQWxwaGE7Cisg
ICAgYm9vbCBtX3ByZW11bHRpcGxpZWRBbHBoYTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2Fu
dmFzTGF5ZXJJbXBsLmNwcAppbmRleCBhYzE4MzY2MzNiYzU4ZDc0MzRlY2ViNTYwMGIyZjcwNzAx
YjEwZGQ4Li4yYmIzZWZmMjI3ODk1MzE1MWNiYTdhYzFkZmNjMTQxN2Q0NWVjZjk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZh
c0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuY3BwCkBAIC00OSwzOSArNDksMTAgQEAgQ0NDYW52
YXNMYXllckltcGw6On5DQ0NhbnZhc0xheWVySW1wbCgpCiB7CiB9CiAKLXZvaWQgQ0NDYW52YXNM
YXllckltcGw6OmRyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQotewot
ICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7Ci0gICAgY29uc3QgQ0NDYW52YXNM
YXllckltcGw6OlByb2dyYW0qIHByb2dyYW0gPSBsYXllclJlbmRlcmVyLT5jYW52YXNMYXllclBy
b2dyYW0oKTsKLSAgICBBU1NFUlQocHJvZ3JhbSAmJiBwcm9ncmFtLT5pbml0aWFsaXplZCgpKTsK
LSAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IGxheWVyUmVuZGVyZXItPmNvbnRleHQo
KTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRTApKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZUlkKSk7Ci0gICAgR0xDKGNv
bnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4
dDNEOjpMSU5FQVIpKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
TUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOwotCi0gICAgaWYgKCFtX2hh
c0FscGhhKSB7Ci0gICAgICAgIC8vIEV2ZW4gdGhvdWdoIHRoZSBXZWJHTCBsYXllcidzIHRleHR1
cmUgd2FzIGxpa2VseSBhbGxvY2F0ZWQKLSAgICAgICAgLy8gYXMgR0xfUkdCLCBkaXNhYmxlIGJs
ZW5kaW5nIGFueXdheSBmb3IgYmV0dGVyIHJvYnVzdG5lc3MuCi0gICAgICAgIGNvbnRleHQtPmRp
c2FibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKTsKLSAgICB9IGVsc2UgewotICAgICAgICBH
QzNEZW51bSBzZmFjdG9yID0gbV9wcmVtdWx0aXBsaWVkQWxwaGEgPyBHcmFwaGljc0NvbnRleHQz
RDo6T05FIDogR3JhcGhpY3NDb250ZXh0M0Q6OlNSQ19BTFBIQTsKLSAgICAgICAgR0xDKGNvbnRl
eHQsIGNvbnRleHQtPmJsZW5kRnVuYyhzZmFjdG9yLCBHcmFwaGljc0NvbnRleHQzRDo6T05FX01J
TlVTX1NSQ19BTFBIQSkpOwotICAgIH0KLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dXNlUHJv
Z3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5p
Zm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsK
LSAgICBsYXllclJlbmRlcmVyLT5kcmF3VGV4dHVyZWRRdWFkKGRyYXdUcmFuc2Zvcm0oKSwgYm91
bmRzKCkud2lkdGgoKSwgYm91bmRzKCkuaGVpZ2h0KCksIGRyYXdPcGFjaXR5KCksIGxheWVyUmVu
ZGVyZXItPnNoYXJlZEdlb21ldHJ5UXVhZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCku
YWxwaGFMb2NhdGlvbigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEp
OwotICAgIGlmICghbV9oYXNBbHBoYSkKLSAgICAgICAgY29udGV4dC0+ZW5hYmxlKEdyYXBoaWNz
Q29udGV4dDNEOjpCTEVORCk7Ci19Ci0KIHZvaWQgQ0NDYW52YXNMYXllckltcGw6OmFwcGVuZFF1
YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVk
UXVhZFN0YXRlKQogewogICAgIEludFJlY3QgcXVhZFJlY3QoSW50UG9pbnQoKSwgYm91bmRzKCkp
OwotICAgIHF1YWRMaXN0LmFwcGVuZChDQ0NhbnZhc0RyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVh
ZFN0YXRlLCBxdWFkUmVjdCwgdGhpcykpOworICAgIHF1YWRMaXN0LmFwcGVuZChDQ0NhbnZhc0Ry
YXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV90ZXh0dXJlSWQsIG1f
aGFzQWxwaGEsIG1fcHJlbXVsdGlwbGllZEFscGhhKSk7CiB9CiAKIHZvaWQgQ0NDYW52YXNMYXll
ckltcGw6OmR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuaAppbmRleCAzNWI4OWU2NzU1MDEzNWEw
NmQ4NTE5ZWU3MzJlNDA2ZjFiNGQwYzA4Li45MTI2YTdkNDQ1MDFlNjMyNWI1ZWZkNGI1N2NiYTll
NDZiYzhhNzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmgKQEAgLTQ0LDggKzQ0
LDYgQEAgcHVibGljOgogCiAgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQ
b3NUZXgsIEZyYWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBoYT4gUHJvZ3JhbTsKIAotICAgIHZp
cnR1YWwgdm9pZCBkcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSopOwotCiAgICAgdmlydHVhbCB2
b2lkIGR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0Owog
CiAgICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>