<?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>90230</bug_id>
          
          <creation_ts>2012-06-28 17:41:26 -0700</creation_ts>
          <short_desc>[chromium] Remove mapRect and mapQuad from WebTransformationMatrix</short_desc>
          <delta_ts>2012-06-29 12:57:44 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>fishd</cc>
    
    <cc>shawnsingh</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjmaclean</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>659983</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-28 17:41:26 -0700</bug_when>
    <thetext>[chromium] Remove mapRect and mapQuad from WebTransformationMatrix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659984</commentid>
    <comment_count>1</comment_count>
      <attachid>150050</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-28 17:43:50 -0700</bug_when>
    <thetext>Created attachment 150050
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659985</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-28 17:45:29 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659991</commentid>
    <comment_count>3</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-28 17:51:27 -0700</bug_when>
    <thetext>Shawn - would you mind checking my math here?  I wrote a tiny bit of new code in CCOverdrawMetrics, the rest of the time I&apos;m just assuming that we do not expect to clip.  The polygon handling in CCOverdrawMetrics may be overkill for what it&apos;s trying to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660054</commentid>
    <comment_count>4</comment_count>
      <attachid>150064</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-28 19:00:42 -0700</bug_when>
    <thetext>Created attachment 150064
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660055</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-28 19:01:26 -0700</bug_when>
    <thetext>Second patch uses CCMathUtil::projectPoint inside of projectQuad.  That just leaves the mapPoint functions behind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660530</commentid>
    <comment_count>6</comment_count>
      <attachid>150064</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-29 08:41:57 -0700</bug_when>
    <thetext>Comment on attachment 150064
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.cpp:99
&gt; -        IntRect layerRect = transformToLayerSpace.mapRect(fillRects[i]);
&gt; +        IntRect layerRect = CCMathUtil::mapClippedRect(transformToLayerSpace, fillRects[i]);

This is using an inverse transform, so shouldn&apos;t it actually be project instead of map?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660643</commentid>
    <comment_count>7</comment_count>
      <attachid>150064</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-06-29 11:07:58 -0700</bug_when>
    <thetext>Comment on attachment 150064
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:666
&gt; +    FloatQuad surfaceQuad = CCMathUtil::mapQuad(contentsDeviceTransform.inverse(), deviceLayerEdges.floatQuad(), clipped);

Can we please add a comment here that says &quot;to2dTransform removed the perspective component of the transform, so projectQuad is unnecessary here.&quot;

&gt; Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.cpp:154
&gt; +    // Clipping has been verified above, so mapClippedRect will give correct results.

I think this comment can either be removed or be reworded to say &quot;Clipping was already performed by the transform above, using mapClippedRect here is not expected to clip anything further here.&quot;

&gt; Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.cpp:322
&gt; +    // We verify that the possible bounds of this region are not clipped above, so we can use mapClippedRect() safely here.

And similarly for this comment

&gt; Source/WebCore/platform/graphics/chromium/cc/CCOverdrawMetrics.cpp:64
&gt; +    if (numPoints &lt; 2)

if numPoints == 2 then this function would compute an area of 0, so we should be able to say  numPoints &lt; 3 here, if you want.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.cpp:99
&gt;&gt; +        IntRect layerRect = CCMathUtil::mapClippedRect(transformToLayerSpace, fillRects[i]);
&gt; 
&gt; This is using an inverse transform, so shouldn&apos;t it actually be project instead of map?

I think Dana is right. If projectQuad causes any regressions versus mapRect, I would really love to see that scenario and analyze it...  Otherwise I think the general rule is that inverse() usually means project rather than map.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660644</commentid>
    <comment_count>8</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-06-29 11:09:51 -0700</bug_when>
    <thetext>Yeah, the math seems fine to me.   I think the most likely thing that might go wrong with this patch is if clipped rects break culling -- and if that happens, it&apos;s not really a fault of this patch, instead its more likely that another bug gets revealed that should be fixed anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660666</commentid>
    <comment_count>9</comment_count>
      <attachid>150064</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-29 11:33:51 -0700</bug_when>
    <thetext>Comment on attachment 150064
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:666
&gt;&gt; +    FloatQuad surfaceQuad = CCMathUtil::mapQuad(contentsDeviceTransform.inverse(), deviceLayerEdges.floatQuad(), clipped);
&gt; 
&gt; Can we please add a comment here that says &quot;to2dTransform removed the perspective component of the transform, so projectQuad is unnecessary here.&quot;

done

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.cpp:154
&gt;&gt; +    // Clipping has been verified above, so mapClippedRect will give correct results.
&gt; 
&gt; I think this comment can either be removed or be reworded to say &quot;Clipping was already performed by the transform above, using mapClippedRect here is not expected to clip anything further here.&quot;

done

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.cpp:322
&gt;&gt; +    // We verify that the possible bounds of this region are not clipped above, so we can use mapClippedRect() safely here.
&gt; 
&gt; And similarly for this comment

done

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCOverdrawMetrics.cpp:64
&gt;&gt; +    if (numPoints &lt; 2)
&gt; 
&gt; if numPoints == 2 then this function would compute an area of 0, so we should be able to say  numPoints &lt; 3 here, if you want.

Good point!

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.cpp:99
&gt;&gt;&gt; +        IntRect layerRect = CCMathUtil::mapClippedRect(transformToLayerSpace, fillRects[i]);
&gt;&gt; 
&gt;&gt; This is using an inverse transform, so shouldn&apos;t it actually be project instead of map?
&gt; 
&gt; I think Dana is right. If projectQuad causes any regressions versus mapRect, I would really love to see that scenario and analyze it...  Otherwise I think the general rule is that inverse() usually means project rather than map.

This function is used to fill out background color quads for solid-color checkerboarding.  It&apos;s only used on the root layer, so there should never be any perspective here (only translation/scales) and it shouldn&apos;t make a difference, if I understand correctly.  Doing a project seems like overkill.

Should I instead ASSERT() or comment the expectations here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660667</commentid>
    <comment_count>10</comment_count>
      <attachid>150224</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-29 11:34:24 -0700</bug_when>
    <thetext>Created attachment 150224
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660668</commentid>
    <comment_count>11</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-29 11:34:33 -0700</bug_when>
    <thetext>Updated - I&apos;d like a bit more guidance on how to handle the appendQuadsToFillScreen().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660680</commentid>
    <comment_count>12</comment_count>
      <attachid>150064</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-29 11:40:16 -0700</bug_when>
    <thetext>Comment on attachment 150064
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.cpp:99
&gt;&gt;&gt;&gt; +        IntRect layerRect = CCMathUtil::mapClippedRect(transformToLayerSpace, fillRects[i]);
&gt;&gt;&gt; 
&gt;&gt;&gt; This is using an inverse transform, so shouldn&apos;t it actually be project instead of map?
&gt;&gt; 
&gt;&gt; I think Dana is right. If projectQuad causes any regressions versus mapRect, I would really love to see that scenario and analyze it...  Otherwise I think the general rule is that inverse() usually means project rather than map.
&gt; 
&gt; This function is used to fill out background color quads for solid-color checkerboarding.  It&apos;s only used on the root layer, so there should never be any perspective here (only translation/scales) and it shouldn&apos;t make a difference, if I understand correctly.  Doing a project seems like overkill.
&gt; 
&gt; Should I instead ASSERT() or comment the expectations here?

Oh, ya good observation. ASSERT() would be nice but I don&apos;t think we have any nice helpers to check for this, comment will be fine IMO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660690</commentid>
    <comment_count>13</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-06-29 11:54:14 -0700</bug_when>
    <thetext>
&gt; 
&gt; This function is used to fill out background color quads for solid-color checkerboarding.  It&apos;s only used on the root layer, so there should never be any perspective here (only translation/scales) and it shouldn&apos;t make a difference, if I understand correctly.  Doing a project seems like overkill.
&gt; 
&gt; Should I instead ASSERT() or comment the expectations here?

Yeah, I think its OK to avoid projectQuad based on your point.  Comment about this seems appropriate and necessary.

we could add ASSERT(!rootLayer-&gt;parent()) or something similar that makes sure that rootLayer really is the root layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660706</commentid>
    <comment_count>14</comment_count>
      <attachid>150234</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-29 12:25:54 -0700</bug_when>
    <thetext>Created attachment 150234
add comment in CCRenderPass::appendQuadsToFillScreen</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660712</commentid>
    <comment_count>15</comment_count>
      <attachid>150234</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-06-29 12:33:05 -0700</bug_when>
    <thetext>Comment on attachment 150234
add comment in CCRenderPass::appendQuadsToFillScreen

LGTM.  R=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660722</commentid>
    <comment_count>16</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-29 12:57:44 -0700</bug_when>
    <thetext>Committed r121583: &lt;http://trac.webkit.org/changeset/121583&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150050</attachid>
            <date>2012-06-28 17:43:50 -0700</date>
            <delta_ts>2012-06-28 19:00:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90230-20120628174349.patch</filename>
            <type>text/plain</type>
            <size>19437</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxNDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA0YzJkY2Q0MGY5MjBj
MzRjYmJlYTY3ZGI3NDI3YzVhYWNlMDliYzAwLi5mNzk1ZWM4MjYyMmZlZWZhY2EzMzAyMWM5NjQ0
MjZmOWI5OGI0NjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNi0yOCAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gUmVtb3ZlIG1hcFJlY3QgYW5kIG1hcFF1YWQgZnJvbSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAyMzAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVz
IGNsaXBwaW5nLXVuYXdhcmUgbWFwUmVjdCBhbmQgbWFwUXVhZCBmdW5jdGlvbnMgZnJvbSB0aGUg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggaW50ZXJmYWNlLgorCisgICAgICAgICogY2hyb21pdW0v
cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg6CisgICAgICAgIChXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCk6CisKIDIwMTItMDYtMjYgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSBXZWJWaWV3OjpncmFwaGljc0Nv
bnRleHQzRCBnZXR0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyZmFjOWYzODM5NWExN2E5ZTEzMmNhYjc4ODQw
Zjk1ZjRkOWFiNDEzLi5iNDgwNzkyM2FiY2E4MzIxYmQ4MGQ5ZGEyODkyYmYwZjI0Y2RkMTk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTItMDYtMjggIEphbWVzIFJvYmluc29uICA8
amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSBtYXBSZWN0
IGFuZCBtYXBRdWFkIGZyb20gV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMjMwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZXMgY2FsbHMgdG8gV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXg6Om1hcFJlY3QvbWFwUXVhZCB3aXRoIGNsaXBwaW5nLWF3YXJlIGNh
bGxzIHRvIENDTWF0aFV0aWxzLiBJbiBtb3N0CisgICAgICAgIGNhc2VzLCB3ZSBkbyBub3QgZXhw
ZWN0IGNsaXBwaW5nIHRvIGhhcHBlbi4gRm9yIG90aGVycyAoc3VjaCBhcyBhcmVhIGNhbGN1bGF0
aW9ucyBpbiBDQ092ZXJkcmF3TWV0cmljcykgd2UgY2FuCisgICAgICAgIGhhbmRsZSBhIGNsaXBw
ZWQgcXVhZCBlYXNpbHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dl
YlRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyUGFzc1F1YWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGlsZVF1YWQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdXJmYWNlQ2hyb21pdW06OmRyYXdhYmxlQ29udGVudFJlY3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpnZXREcmF3UmVjdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybVN1cmZhY2VPcGFxdWVSZWdpb24pOgorICAgICAgICAo
V2ViQ29yZTo6YWRkT2NjbHVzaW9uQmVoaW5kTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRyYXdNZXRyaWNzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6cG9seWdvbkFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6
YXJlYU9mTWFwcGVkUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ092ZXJkcmF3TWV0cmljczo6
ZGlkVXBsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT3ZlcmRyYXdNZXRyaWNzOjpkaWRDdWxs
Rm9yRHJhd2luZyk6CisgICAgICAgIChXZWJDb3JlOjpDQ092ZXJkcmF3TWV0cmljczo6ZGlkRHJh
dyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNUb0ZpbGxT
Y3JlZW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
U3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmRyYXdhYmxl
Q29udGVudFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2hhcmVkUXVhZFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2hhcmVkUXVhZFN0YXRl
Ojppc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KToKKwogMjAxMi0wNi0yNyAgUnlvc3VrZSBOaXdh
ICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBDbGVhbnVwIEhUTUxGb3JtQ29sbGVjdGlv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oCmluZGV4IDMxMzViNGU2ODAxZjFlMDk4Yzc2YmY0NzUyZTA1MjJk
ZmI4MGQ0YWIuLjA5N2M5ZjFhMzRhZWJjMDFiNjY0NGUwNDZhYmFjMmY5YTVkZGFkZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXguaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlRyYW5zZm9y
bWF0aW9uTWF0cml4LmgKQEAgLTE0MSwxMiArMTQxLDkgQEAgcHVibGljOgogICAgIC8vIEZJWE1F
OiB0aGVzZSBtYXAgZnVuY3Rpb25zIHNob3VsZCBub3QgZXhpc3QsIHNob3VsZCBiZSB1c2luZyBD
Q01hdGhVdGlsCiAgICAgLy8gaW5zdGVhZC4gRXZlbnR1YWxseSBDQ01hdGhVdGlsIGZ1bmN0aW9u
cyBjb3VsZCBiZSBtZXJnZWQgaGVyZSwgYnV0IGl0cwogICAgIC8vIG5vdCB5ZXQgdGhlIHJpZ2h0
IHRpbWUgZm9yIHRoYXQuCi0gICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1hcFJlY3QoY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JikgY29uc3Q7Ci0gICAgV2ViQ29yZTo6SW50UmVjdCBtYXBSZWN0KGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKSBjb25zdDsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50M0Qg
bWFwUG9pbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludDNEJikgY29uc3Q7CiAgICAgV2ViQ29y
ZTo6RmxvYXRQb2ludCBtYXBQb2ludChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgY29uc3Q7
CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgbWFwUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
KSBjb25zdDsKLSAgICBXZWJDb3JlOjpGbG9hdFF1YWQgbWFwUXVhZChjb25zdCBXZWJDb3JlOjpG
bG9hdFF1YWQmKSBjb25zdDsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHByb2plY3RQb2ludChj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgYm9vbCogY2xhbXBlZCA9IDApIGNvbnN0OwogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vc3VwcG9ydC9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKaW5kZXggZWVmZDE1
NGU4YTkzNWZiZTNmMGE3MjA3YzRlNDAzZjZkYjc1ODBjMC4uZTAxZGExNTc1MDA3NTE0OGIyN2Fi
Njg3MWMyZWEyODhhMjYxMGE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vc3VwcG9ydC9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eC5jcHAKQEAgLTQyMiwxNiArNDIyLDYgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXg6OnRvV2ViQ29yZVRyYW5zZm9ybSgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
cHJpdmF0ZTsKIH0KIAotRmxvYXRSZWN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptYXBSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLm1h
cFJlY3QocmVjdCk7Ci19Ci0KLUludFJlY3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om1hcFJl
Y3QoY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLm1h
cFJlY3QocmVjdCk7Ci19Ci0KIEZsb2F0UG9pbnQzRCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
bWFwUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJiBwKSBjb25zdAogewogICAgIHJldHVybiBtX3By
aXZhdGUubWFwUG9pbnQocCk7CkBAIC00NDcsMTEgKzQzNyw2IEBAIEludFBvaW50IFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4OjptYXBQb2ludChjb25zdCBJbnRQb2ludCYgcCkgY29uc3QKICAgICBy
ZXR1cm4gbV9wcml2YXRlLm1hcFBvaW50KHApOwogfQogCi1GbG9hdFF1YWQgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXg6Om1hcFF1YWQoY29uc3QgRmxvYXRRdWFkJiBxdWFkKSBjb25zdAotewotICAg
IHJldHVybiBtX3ByaXZhdGUubWFwUXVhZChxdWFkKTsKLX0KLQogRmxvYXRQb2ludCBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeDo6cHJvamVjdFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIHAsIGJvb2wq
IGNsYW1wZWQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS5wcm9qZWN0UG9pbnQocCwg
Y2xhbXBlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA0NmM5
YjM2MjE1YTczNTkwNDgyNWY5ZjY0MjQ4YzhkZmEyMTk4NDE1Li45OTM5Yjk0YmM4YmVkYTMwYWE1
YTM2YzQzMDI3ZTFiZTM0M2IyNjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAKQEAgLTU4Nyw3ICs1ODcsOSBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJh
d1JlbmRlclBhc3NRdWFkKGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBxdWFkKQogICAgIGlm
IChkcmF3aW5nU3VyZmFjZS0+aGFzVmFsaWRCYWNrZ3JvdW5kVGV4dHVyZSgpKQogICAgICAgICBj
b3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoZHJhd2luZ1N1cmZhY2UtPmJhY2tncm91bmRUZXh0dXJl
KCktPnRleHR1cmVJZCgpLCBxdWFkLT5xdWFkUmVjdCgpLnNpemUoKSwgcXVhZC0+bGF5ZXJUcmFu
c2Zvcm0oKSk7CiAKLSAgICBGbG9hdFF1YWQgZGV2aWNlUXVhZCA9IGNvbnRlbnRzRGV2aWNlVHJh
bnNmb3JtLm1hcFF1YWQoc2hhcmVkR2VvbWV0cnlRdWFkKCkpOworICAgIGJvb2wgY2xpcHBlZCA9
IGZhbHNlOworICAgIEZsb2F0UXVhZCBkZXZpY2VRdWFkID0gQ0NNYXRoVXRpbDo6bWFwUXVhZChj
b250ZW50c0RldmljZVRyYW5zZm9ybSwgc2hhcmVkR2VvbWV0cnlRdWFkKCksIGNsaXBwZWQpOwor
ICAgIEFTU0VSVCghY2xpcHBlZCk7CiAgICAgQ0NMYXllclF1YWQgZGV2aWNlTGF5ZXJCb3VuZHMg
PSBDQ0xheWVyUXVhZChGbG9hdFF1YWQoZGV2aWNlUXVhZC5ib3VuZGluZ0JveCgpKSk7CiAgICAg
Q0NMYXllclF1YWQgZGV2aWNlTGF5ZXJFZGdlcyA9IENDTGF5ZXJRdWFkKGRldmljZVF1YWQpOwog
CkBAIC02NjEsNyArNjYzLDggQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5k
ZXJQYXNzUXVhZChjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCogcXVhZCkKICAgICB9CiAKICAg
ICAvLyBNYXAgZGV2aWNlIHNwYWNlIHF1YWQgdG8gc3VyZmFjZSBzcGFjZS4KLSAgICBGbG9hdFF1
YWQgc3VyZmFjZVF1YWQgPSBjb250ZW50c0RldmljZVRyYW5zZm9ybS5pbnZlcnNlKCkubWFwUXVh
ZChkZXZpY2VMYXllckVkZ2VzLmZsb2F0UXVhZCgpKTsKKyAgICBGbG9hdFF1YWQgc3VyZmFjZVF1
YWQgPSBDQ01hdGhVdGlsOjptYXBRdWFkKGNvbnRlbnRzRGV2aWNlVHJhbnNmb3JtLmludmVyc2Uo
KSwgZGV2aWNlTGF5ZXJFZGdlcy5mbG9hdFF1YWQoKSwgY2xpcHBlZCk7CisgICAgQVNTRVJUKCFj
bGlwcGVkKTsKIAogICAgIGRyYXdUZXh0dXJlZFF1YWQocXVhZC0+bGF5ZXJUcmFuc2Zvcm0oKSwg
cXVhZC0+cXVhZFJlY3QoKS53aWR0aCgpLCBxdWFkLT5xdWFkUmVjdCgpLmhlaWdodCgpLCBxdWFk
LT5vcGFjaXR5KCksIHN1cmZhY2VRdWFkLAogICAgICAgICAgICAgICAgICAgICAgc2hhZGVyTWF0
cml4TG9jYXRpb24sIHNoYWRlckFscGhhTG9jYXRpb24sIHNoYWRlclF1YWRMb2NhdGlvbik7CkBA
IC03NjEsNiArNzY0LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUaWxlUXVh
ZChjb25zdCBDQ1RpbGVEcmF3UXVhZCogcXVhZCkKIAogICAgIGJvb2wgY2xpcHBlZCA9IGZhbHNl
OwogICAgIEZsb2F0UXVhZCBkZXZpY2VMYXllclF1YWQgPSBDQ01hdGhVdGlsOjptYXBRdWFkKGRl
dmljZVRyYW5zZm9ybSwgRmxvYXRRdWFkKHF1YWQtPmxheWVyUmVjdCgpKSwgY2xpcHBlZCk7Cisg
ICAgQVNTRVJUKCFjbGlwcGVkKTsKIAogICAgIFRpbGVQcm9ncmFtVW5pZm9ybXMgdW5pZm9ybXM7
CiAgICAgLy8gRm9yIG5vdywgd2Ugc2ltcGx5IHNraXAgYW50aS1hbGlhc2luZyB3aXRoIHRoZSBx
dWFkIGlzIGNsaXBwZWQuIFRoaXMgb25seSBoYXBwZW5zCkBAIC04NDUsNyArODQ5LDggQEAgdm9p
ZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUaWxlUXVhZChjb25zdCBDQ1RpbGVEcmF3UXVh
ZCogcXVhZCkKIAogICAgICAgICAvLyBNYXAgcXVhZCB0byBsYXllciBzcGFjZS4KICAgICAgICAg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggaW52ZXJzZURldmljZVRyYW5zZm9ybSA9IGRldmljZVRy
YW5zZm9ybS5pbnZlcnNlKCk7Ci0gICAgICAgIGxvY2FsUXVhZCA9IGludmVyc2VEZXZpY2VUcmFu
c2Zvcm0ubWFwUXVhZChkZXZpY2VRdWFkLmZsb2F0UXVhZCgpKTsKKyAgICAgICAgbG9jYWxRdWFk
ID0gQ0NNYXRoVXRpbDo6bWFwUXVhZChpbnZlcnNlRGV2aWNlVHJhbnNmb3JtLCBkZXZpY2VRdWFk
LmZsb2F0UXVhZCgpLCBjbGlwcGVkKTsKKyAgICAgICAgQVNTRVJUKCFjbGlwcGVkKTsKICAgICB9
IGVsc2UgewogICAgICAgICAvLyBNb3ZlIGZyYWdtZW50IHNoYWRlciB0cmFuc2Zvcm0gdG8gdmVy
dGV4IHNoYWRlci4gV2UgY2FuIGRvIHRoaXMgd2hpbGUKICAgICAgICAgLy8gc3RpbGwgcHJvZHVj
aW5nIGNvcnJlY3QgcmVzdWx0cyBhcyBmcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJT
dXJmYWNlQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcAppbmRleCA1MTc2MTQ1M2Q4MzNhZjY1ODEy
NjJmZmI2YmEzM2FlZjg3NzYxMDU0Li5mYjJkZDhiYzY3NmUzNmI2YmVhZWVjNDllODEzZDg4ZjUy
YWZhYzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHAKQEAgLTU4LDkg
KzU4LDkgQEAgRmxvYXRSZWN0IFJlbmRlclN1cmZhY2VDaHJvbWl1bTo6ZHJhd2FibGVDb250ZW50
UmVjdCgpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IGxvY2FsQ29udGVudFJlY3QoLTAuNSAqIG1f
Y29udGVudFJlY3Qud2lkdGgoKSwgLTAuNSAqIG1fY29udGVudFJlY3QuaGVpZ2h0KCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jb250ZW50UmVjdC53aWR0aCgpLCBtX2NvbnRl
bnRSZWN0LmhlaWdodCgpKTsKLSAgICBGbG9hdFJlY3QgZHJhd2FibGVDb250ZW50UmVjdCA9IG1f
ZHJhd1RyYW5zZm9ybS5tYXBSZWN0KGxvY2FsQ29udGVudFJlY3QpOworICAgIEZsb2F0UmVjdCBk
cmF3YWJsZUNvbnRlbnRSZWN0ID0gQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3QobV9kcmF3VHJh
bnNmb3JtLCBsb2NhbENvbnRlbnRSZWN0KTsKICAgICBpZiAobV9vd25pbmdMYXllci0+cmVwbGlj
YUxheWVyKCkpCi0gICAgICAgIGRyYXdhYmxlQ29udGVudFJlY3QudW5pdGUobV9yZXBsaWNhRHJh
d1RyYW5zZm9ybS5tYXBSZWN0KGxvY2FsQ29udGVudFJlY3QpKTsKKyAgICAgICAgZHJhd2FibGVD
b250ZW50UmVjdC51bml0ZShDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChtX3JlcGxpY2FEcmF3
VHJhbnNmb3JtLCBsb2NhbENvbnRlbnRSZWN0KSk7CiAKICAgICByZXR1cm4gZHJhd2FibGVDb250
ZW50UmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRleCBjMzgwYmQ0NWJmMzE1NWQ1
NTdmZmRjN2U2NjlkNGIyYzkyYzhjNjYzLi44MzY2NmIwNDY0ZjY3NjRmNjg4Y2E2ZmQ1YzJiZmJm
Mjc3MWFmNDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAg
Y29uc3QgSW50UmVjdCBDQ0xheWVySW1wbDo6Z2V0RHJhd1JlY3QoKSBjb25zdAogICAgIC8vIEZv
cm0gdGhlIG1hdHJpeCB1c2VkIGJ5IHRoZSBzaGFkZXIgdG8gbWFwIHRoZSBjb3JuZXJzIG9mIHRo
ZSBsYXllcidzCiAgICAgLy8gYm91bmRzIGludG8gdGhlIHZpZXcgc3BhY2UuCiAgICAgRmxvYXRS
ZWN0IGxheWVyUmVjdCgtMC41ICogYm91bmRzKCkud2lkdGgoKSwgLTAuNSAqIGJvdW5kcygpLmhl
aWdodCgpLCBib3VuZHMoKS53aWR0aCgpLCBib3VuZHMoKS5oZWlnaHQoKSk7Ci0gICAgSW50UmVj
dCBtYXBwZWRSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChkcmF3VHJhbnNmb3JtKCkubWFwUmVjdChs
YXllclJlY3QpKTsKKyAgICBJbnRSZWN0IG1hcHBlZFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KEND
TWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KGRyYXdUcmFuc2Zvcm0oKSwgbGF5ZXJSZWN0KSk7CiAg
ICAgcmV0dXJuIG1hcHBlZFJlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNr
ZXIuY3BwCmluZGV4IDkxN2RjODdkMGZmNWMzNWIxNjZlNGFmNDAxOGVhZWJjYTNkNjUyZWEuLmIz
MDc5MzY3ZmQ1ODA2NTY3ZmFkYTY1ZDEzY2M4ODI3MzBjZDQ3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NPY2NsdXNpb25UcmFja2VyLmNwcApAQCAtMTUxLDkgKzE1MSw5IEBAIHN0YXRpYyBpbmxpbmUg
UmVnaW9uIHRyYW5zZm9ybVN1cmZhY2VPcGFxdWVSZWdpb24oY29uc3QgUmVuZGVyU3VyZmFjZVR5
cGUqIHN1cmZhCiAgICAgUmVnaW9uIHRyYW5zZm9ybWVkUmVnaW9uOwogCiAgICAgVmVjdG9yPElu
dFJlY3Q+IHJlY3RzID0gcmVnaW9uLnJlY3RzKCk7Ci0gICAgLy8gQ2xpcHBpbmcgaGFzIGJlZW4g
dmVyaWZpZWQgYWJvdmUsIHNvIG1hcFJlY3Qgd2lsbCBnaXZlIGNvcnJlY3QgcmVzdWx0cy4KKyAg
ICAvLyBDbGlwcGluZyBoYXMgYmVlbiB2ZXJpZmllZCBhYm92ZSwgc28gbWFwQ2xpcHBlZFJlY3Qg
d2lsbCBnaXZlIGNvcnJlY3QgcmVzdWx0cy4KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJl
Y3RzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIEludFJlY3QgdHJhbnNmb3JtZWRSZWN0ID0gZW5j
bG9zZWRJbnRSZWN0KHRyYW5zZm9ybS5tYXBSZWN0KEZsb2F0UmVjdChyZWN0c1tpXSkpKTsKKyAg
ICAgICAgSW50UmVjdCB0cmFuc2Zvcm1lZFJlY3QgPSBlbmNsb3NlZEludFJlY3QoQ0NNYXRoVXRp
bDo6bWFwQ2xpcHBlZFJlY3QodHJhbnNmb3JtLCBGbG9hdFJlY3QocmVjdHNbaV0pKSk7CiAgICAg
ICAgIGlmICghc3VyZmFjZS0+Y2xpcFJlY3QoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICB0cmFu
c2Zvcm1lZFJlY3QuaW50ZXJzZWN0KHN1cmZhY2UtPmNsaXBSZWN0KCkpOwogICAgICAgICB0cmFu
c2Zvcm1lZFJlZ2lvbi51bml0ZSh0cmFuc2Zvcm1lZFJlY3QpOwpAQCAtMzE5LDkgKzMxOSw5IEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRPY2NsdXNpb25CZWhpbmRMYXllcihSZWdpb24mIHJlZ2lv
biwgY29uc3QgTGF5ZXJUeXBlKiBsYXllCiAgICAgICAgIHJldHVybjsKIAogICAgIFZlY3RvcjxJ
bnRSZWN0PiBjb250ZW50UmVjdHMgPSBvcGFxdWVDb250ZW50cy5yZWN0cygpOwotICAgIC8vIFdl
IHZlcmlmeSB0aGF0IHRoZSBwb3NzaWJsZSBib3VuZHMgb2YgdGhpcyByZWdpb24gYXJlIG5vdCBj
bGlwcGVkIGFib3ZlLCBzbyB3ZSBjYW4gdXNlIG1hcFJlY3QoKSBzYWZlbHkgaGVyZS4KKyAgICAv
LyBXZSB2ZXJpZnkgdGhhdCB0aGUgcG9zc2libGUgYm91bmRzIG9mIHRoaXMgcmVnaW9uIGFyZSBu
b3QgY2xpcHBlZCBhYm92ZSwgc28gd2UgY2FuIHVzZSBtYXBDbGlwcGVkUmVjdCgpIHNhZmVseSBo
ZXJlLgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29udGVudFJlY3RzLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgIEludFJlY3QgdHJhbnNmb3JtZWRSZWN0ID0gZW5jbG9zZWRJbnRSZWN0KHRy
YW5zZm9ybS5tYXBSZWN0KEZsb2F0UmVjdChjb250ZW50UmVjdHNbaV0pKSk7CisgICAgICAgIElu
dFJlY3QgdHJhbnNmb3JtZWRSZWN0ID0gZW5jbG9zZWRJbnRSZWN0KENDTWF0aFV0aWw6Om1hcENs
aXBwZWRSZWN0KHRyYW5zZm9ybSwgRmxvYXRSZWN0KGNvbnRlbnRSZWN0c1tpXSkpKTsKICAgICAg
ICAgdHJhbnNmb3JtZWRSZWN0LmludGVyc2VjdChzY2lzc29yUmVjdCk7CiAgICAgICAgIGlmICh0
cmFuc2Zvcm1lZFJlY3Qud2lkdGgoKSA+PSBtaW5pbXVtVHJhY2tpbmdTaXplLndpZHRoKCkgfHwg
dHJhbnNmb3JtZWRSZWN0LmhlaWdodCgpID49IG1pbmltdW1UcmFja2luZ1NpemUuaGVpZ2h0KCkp
IHsKICAgICAgICAgICAgIGlmIChvY2NsdWRpbmdTY3JlZW5TcGFjZVJlY3RzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPdmVyZHJh
d01ldHJpY3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NPdmVyZHJhd01ldHJpY3MuY3BwCmluZGV4IDBjYzJmYTVlYzYxNmEwMDQ3NzgyNjE1ODk2
MGJkMDE3ODg3ZTNkZDguLjBlOGM4ZmQ4NzE5ODk2Y2RiMmMzZjY0ODVlNTc3ZDdjZGYxNGI0Yzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDT3ZlcmRyYXdNZXRyaWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ092ZXJkcmF3TWV0cmljcy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAK
ICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Lmgi
CiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgorI2luY2x1ZGUgImNjL0NDTWF0
aFV0aWwuaCIKICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMv
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KIApAQCAtNTcsMTMgKzU4LDI1IEBAIHN0YXRpYyBp
bmxpbmUgZmxvYXQgd2VkZ2VQcm9kdWN0KGNvbnN0IEZsb2F0UG9pbnQmIHAxLCBjb25zdCBGbG9h
dFBvaW50JiBwMikKICAgICByZXR1cm4gcDEueCgpICogcDIueSgpIC0gcDEueSgpICogcDIueCgp
OwogfQogCi0vLyBDb21wdXRlcyBhcmVhIG9mIHF1YWRzIHRoYXQgYXJlIHBvc3NpYmx5IG5vbi1y
ZWN0YW5ndWxhci4gQ2FuIGJlIGVhc2lseSBleHRlbmRlZCB0byBwb2x5Z29ucy4KLXN0YXRpYyBp
bmxpbmUgZmxvYXQgcXVhZEFyZWEoY29uc3QgRmxvYXRRdWFkJiBxdWFkKQorLy8gQ2FsY3VsYXRl
cyBhcmVhIG9mIGFuIGFyYml0cmFyeSBjb252ZXggcG9seWdvbiB3aXRoIHVwIHRvIDggcG9pbnRz
Lgorc3RhdGljIGlubGluZSBmbG9hdCBwb2x5Z29uQXJlYShjb25zdCBGbG9hdFBvaW50IHBvaW50
c1s4XSwgaW50IG51bVBvaW50cykKIHsKLSAgICByZXR1cm4gZmFicygwLjUgKiAod2VkZ2VQcm9k
dWN0KHF1YWQucDEoKSwgcXVhZC5wMigpKSArCi0gICAgICAgICAgICAgICAgICAgICAgIHdlZGdl
UHJvZHVjdChxdWFkLnAyKCksIHF1YWQucDMoKSkgKwotICAgICAgICAgICAgICAgICAgICAgICB3
ZWRnZVByb2R1Y3QocXVhZC5wMygpLCBxdWFkLnA0KCkpICsKLSAgICAgICAgICAgICAgICAgICAg
ICAgd2VkZ2VQcm9kdWN0KHF1YWQucDQoKSwgcXVhZC5wMSgpKSkpOworICAgIGlmIChudW1Qb2lu
dHMgPCAyKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGZsb2F0IGFyZWEgPSAwOworICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbnVtUG9pbnRzOyArK2kpCisgICAgICAgIGFyZWEgKz0gd2VkZ2VQ
cm9kdWN0KHBvaW50c1tpXSwgcG9pbnRzWyhpKzEpJW51bVBvaW50c10pOworICAgIHJldHVybiBm
YWJzKDAuNWYgKiBhcmVhKTsKK30KKworLy8gVGFrZXMgYSBnaXZlbiBxdWFkLCBtYXBzIGl0IGJ5
IHRoZSBnaXZlbiB0cmFuc2Zvcm1hdGlvbiwgYW5kIGdpdmVzIHRoZSBhcmVhIG9mIHRoZSByZXN1
bHRpbmcgcG9seWdvbi4KK3N0YXRpYyBpbmxpbmUgZmxvYXQgYXJlYU9mTWFwcGVkUXVhZChjb25z
dCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFF1YWQmIHF1
YWQpCit7CisgICAgRmxvYXRQb2ludCBjbGlwcGVkUXVhZFs4XTsKKyAgICBpbnQgbnVtVmVydGlj
ZXNJbkNsaXBwZWRRdWFkID0gMDsKKyAgICBDQ01hdGhVdGlsOjptYXBDbGlwcGVkUXVhZCh0cmFu
c2Zvcm0sIHF1YWQsIGNsaXBwZWRRdWFkLCBudW1WZXJ0aWNlc0luQ2xpcHBlZFF1YWQpOworICAg
IHJldHVybiBwb2x5Z29uQXJlYShjbGlwcGVkUXVhZCwgbnVtVmVydGljZXNJbkNsaXBwZWRRdWFk
KTsKIH0KIAogdm9pZCBDQ092ZXJkcmF3TWV0cmljczo6ZGlkUGFpbnQoY29uc3QgSW50UmVjdCYg
cGFpbnRlZFJlY3QpCkBAIC04NSw4ICs5OCw4IEBAIHZvaWQgQ0NPdmVyZHJhd01ldHJpY3M6OmRp
ZFVwbG9hZChjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9UYXJnCiAg
ICAgaWYgKCFtX3JlY29yZE1ldHJpY3NGb3JGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
ZmxvYXQgdXBsb2FkQXJlYSA9IHF1YWRBcmVhKHRyYW5zZm9ybVRvVGFyZ2V0Lm1hcFF1YWQoRmxv
YXRRdWFkKHVwbG9hZFJlY3QpKSk7Ci0gICAgZmxvYXQgdXBsb2FkT3BhcXVlQXJlYSA9IHF1YWRB
cmVhKHRyYW5zZm9ybVRvVGFyZ2V0Lm1hcFF1YWQoRmxvYXRRdWFkKGludGVyc2VjdGlvbihvcGFx
dWVSZWN0LCB1cGxvYWRSZWN0KSkpKTsKKyAgICBmbG9hdCB1cGxvYWRBcmVhID0gYXJlYU9mTWFw
cGVkUXVhZCh0cmFuc2Zvcm1Ub1RhcmdldCwgRmxvYXRRdWFkKHVwbG9hZFJlY3QpKTsKKyAgICBm
bG9hdCB1cGxvYWRPcGFxdWVBcmVhID0gYXJlYU9mTWFwcGVkUXVhZCh0cmFuc2Zvcm1Ub1Rhcmdl
dCwgRmxvYXRRdWFkKGludGVyc2VjdGlvbihvcGFxdWVSZWN0LCB1cGxvYWRSZWN0KSkpOwogCiAg
ICAgbV9waXhlbHNVcGxvYWRlZE9wYXF1ZSArPSB1cGxvYWRPcGFxdWVBcmVhOwogICAgIG1fcGl4
ZWxzVXBsb2FkZWRUcmFuc2x1Y2VudCArPSB1cGxvYWRBcmVhIC0gdXBsb2FkT3BhcXVlQXJlYTsK
QEAgLTk3LDggKzExMCw4IEBAIHZvaWQgQ0NPdmVyZHJhd01ldHJpY3M6OmRpZEN1bGxGb3JEcmF3
aW5nKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2ZvCiAgICAgaWYgKCFtX3Jl
Y29yZE1ldHJpY3NGb3JGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZmxvYXQgYmVmb3Jl
Q3VsbEFyZWEgPSBxdWFkQXJlYSh0cmFuc2Zvcm1Ub1RhcmdldC5tYXBRdWFkKEZsb2F0UXVhZChi
ZWZvcmVDdWxsUmVjdCkpKTsKLSAgICBmbG9hdCBhZnRlckN1bGxBcmVhID0gcXVhZEFyZWEodHJh
bnNmb3JtVG9UYXJnZXQubWFwUXVhZChGbG9hdFF1YWQoYWZ0ZXJDdWxsUmVjdCkpKTsKKyAgICBm
bG9hdCBiZWZvcmVDdWxsQXJlYSA9IGFyZWFPZk1hcHBlZFF1YWQodHJhbnNmb3JtVG9UYXJnZXQs
IEZsb2F0UXVhZChiZWZvcmVDdWxsUmVjdCkpOworICAgIGZsb2F0IGFmdGVyQ3VsbEFyZWEgPSBh
cmVhT2ZNYXBwZWRRdWFkKHRyYW5zZm9ybVRvVGFyZ2V0LCBGbG9hdFF1YWQoYWZ0ZXJDdWxsUmVj
dCkpOwogCiAgICAgbV9waXhlbHNDdWxsZWRGb3JEcmF3aW5nICs9IGJlZm9yZUN1bGxBcmVhIC0g
YWZ0ZXJDdWxsQXJlYTsKIH0KQEAgLTEwOCw4ICsxMjEsOCBAQCB2b2lkIENDT3ZlcmRyYXdNZXRy
aWNzOjpkaWREcmF3KGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Ub1Rh
cmdldAogICAgIGlmICghbV9yZWNvcmRNZXRyaWNzRm9yRnJhbWUpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGZsb2F0IGFmdGVyQ3VsbEFyZWEgPSBxdWFkQXJlYSh0cmFuc2Zvcm1Ub1RhcmdldC5t
YXBRdWFkKEZsb2F0UXVhZChhZnRlckN1bGxSZWN0KSkpOwotICAgIGZsb2F0IGFmdGVyQ3VsbE9w
YXF1ZUFyZWEgPSBxdWFkQXJlYSh0cmFuc2Zvcm1Ub1RhcmdldC5tYXBRdWFkKEZsb2F0UXVhZChp
bnRlcnNlY3Rpb24ob3BhcXVlUmVjdCwgYWZ0ZXJDdWxsUmVjdCkpKSk7CisgICAgZmxvYXQgYWZ0
ZXJDdWxsQXJlYSA9IGFyZWFPZk1hcHBlZFF1YWQodHJhbnNmb3JtVG9UYXJnZXQsIEZsb2F0UXVh
ZChhZnRlckN1bGxSZWN0KSk7CisgICAgZmxvYXQgYWZ0ZXJDdWxsT3BhcXVlQXJlYSA9IGFyZWFP
Zk1hcHBlZFF1YWQodHJhbnNmb3JtVG9UYXJnZXQsIEZsb2F0UXVhZChpbnRlcnNlY3Rpb24ob3Bh
cXVlUmVjdCwgYWZ0ZXJDdWxsUmVjdCkpKTsKIAogICAgIG1fcGl4ZWxzRHJhd25PcGFxdWUgKz0g
YWZ0ZXJDdWxsT3BhcXVlQXJlYTsKICAgICBtX3BpeGVsc0RyYXduVHJhbnNsdWNlbnQgKz0gYWZ0
ZXJDdWxsQXJlYSAtIGFmdGVyQ3VsbE9wYXF1ZUFyZWE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNw
cAppbmRleCBiMWQ1M2M2M2QwOGZiMmE4ODQzYjQyMWM0OTgxODgwOTQzY2U3ZTg3Li5mN2FiMTcx
MjdhZmRiYTNmZTdjY2NhZmQ3MDYyOWQ0MzA1NmRkZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFz
cy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3MuaCIKIAog
I2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCisjaW5jbHVkZSAiY2MvQ0NNYXRoVXRpbC5oIgog
I2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5oIgogI2luY2x1ZGUgImNjL0NDU2hhcmVkUXVhZFN0
YXRlLmgiCiAjaW5jbHVkZSAiY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaCIKQEAgLTk1LDcgKzk2
LDcgQEAgdm9pZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzVG9GaWxsU2NyZWVuKENDTGF5ZXJJ
bXBsKiByb290TGF5ZXIsIFNrQ29sb3Igc2NyZWUKICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCB0cmFuc2Zvcm1Ub0xheWVyU3BhY2UgPSByb290TGF5ZXItPnNjcmVlblNwYWNlVHJhbnNmb3Jt
KCkuaW52ZXJzZSgpOwogICAgIFZlY3RvcjxJbnRSZWN0PiBmaWxsUmVjdHMgPSBmaWxsUmVnaW9u
LnJlY3RzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWxsUmVjdHMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgSW50UmVjdCBsYXllclJlY3QgPSB0cmFuc2Zvcm1Ub0xheWVyU3BhY2Uu
bWFwUmVjdChmaWxsUmVjdHNbaV0pOworICAgICAgICBJbnRSZWN0IGxheWVyUmVjdCA9IENDTWF0
aFV0aWw6Om1hcENsaXBwZWRSZWN0KHRyYW5zZm9ybVRvTGF5ZXJTcGFjZSwgZmlsbFJlY3RzW2ld
KTsKICAgICAgICAgbV9xdWFkTGlzdC5hcHBlbmQoQ0NTb2xpZENvbG9yRHJhd1F1YWQ6OmNyZWF0
ZShzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGxheWVyUmVjdCwgc2NyZWVuQmFja2dyb3VuZENvbG9y
KSk7CiAgICAgfQogICAgIG1fc2hhcmVkUXVhZFN0YXRlTGlzdC5hcHBlbmQoc2hhcmVkUXVhZFN0
YXRlLnJlbGVhc2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAppbmRleCA2YWMw
OTQ2YWE2ODY3YWU3Yjc3NWYwZDI5Y2JiOGVkYjBkNzFkNjgxLi5kMDk0MDFjNGYyM2UwOWU1MTJl
NjI0OTk4NGJlNGNkZThhOTRhMmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAK
QEAgLTc4LDkgKzc4LDkgQEAgRmxvYXRSZWN0IENDUmVuZGVyU3VyZmFjZTo6ZHJhd2FibGVDb250
ZW50UmVjdCgpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IGxvY2FsQ29udGVudFJlY3QoLTAuNSAq
IG1fY29udGVudFJlY3Qud2lkdGgoKSwgLTAuNSAqIG1fY29udGVudFJlY3QuaGVpZ2h0KCksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jb250ZW50UmVjdC53aWR0aCgpLCBtX2Nv
bnRlbnRSZWN0LmhlaWdodCgpKTsKLSAgICBGbG9hdFJlY3QgZHJhd2FibGVDb250ZW50UmVjdCA9
IG1fZHJhd1RyYW5zZm9ybS5tYXBSZWN0KGxvY2FsQ29udGVudFJlY3QpOworICAgIEZsb2F0UmVj
dCBkcmF3YWJsZUNvbnRlbnRSZWN0ID0gQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3QobV9kcmF3
VHJhbnNmb3JtLCBsb2NhbENvbnRlbnRSZWN0KTsKICAgICBpZiAoaGFzUmVwbGljYSgpKQotICAg
ICAgICBkcmF3YWJsZUNvbnRlbnRSZWN0LnVuaXRlKG1fcmVwbGljYURyYXdUcmFuc2Zvcm0ubWFw
UmVjdChsb2NhbENvbnRlbnRSZWN0KSk7CisgICAgICAgIGRyYXdhYmxlQ29udGVudFJlY3QudW5p
dGUoQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3QobV9yZXBsaWNhRHJhd1RyYW5zZm9ybSwgbG9j
YWxDb250ZW50UmVjdCkpOwogCiAgICAgcmV0dXJuIGRyYXdhYmxlQ29udGVudFJlY3Q7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NoYXJlZFF1YWRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5jcHAKaW5kZXggNTM2YjM5ODY3ZDUwMjIwNWIx
MjI3OTdkMGIxMzViYWE2M2VjODQ5NC4uNWUwNjgxZmY1ZmFmZDIzYzU4NmNjYTcxZjllMTQ3MDU2
ODIxNzE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmNwcApAQCAtMjcsNiAr
MjcsOCBAQAogCiAjaW5jbHVkZSAiY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCIKIAorI2luY2x1ZGUg
ImNjL0NDTWF0aFV0aWwuaCIKKwogdXNpbmcgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsOCArNTIsOSBAQCBib29sIENDU2hhcmVk
UXVhZFN0YXRlOjppc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkgY29uc3QKIHsKICAgICAvLyBO
b3RlOiB0aGlzIGRvZXNuJ3QgY29uc2lkZXIgd2luZG93IG9yIHByb2plY3Rpb24gbWF0cmljZXMu
CiAgICAgLy8gQXNzdW1lIHRoYXQgdGhleSdyZSBvcnRob25vcm1hbCBhbmQgaGF2ZSBpbnRlZ2Vy
IHNjYWxlcyBhbmQgdHJhbnNsYXRpb25zLgotICAgIEZsb2F0UXVhZCBxdWFkID0gcXVhZFRyYW5z
Zm9ybSgpLm1hcFF1YWQoRmxvYXRRdWFkKGxheWVyUmVjdCgpKSk7Ci0gICAgcmV0dXJuIHF1YWQu
aXNSZWN0aWxpbmVhcigpICYmIHF1YWQuYm91bmRpbmdCb3goKS5pc0V4cHJlc3NpYmxlQXNJbnRS
ZWN0KCk7CisgICAgYm9vbCBjbGlwcGVkID0gZmFsc2U7CisgICAgRmxvYXRRdWFkIHF1YWQgPSBD
Q01hdGhVdGlsOjptYXBRdWFkKHF1YWRUcmFuc2Zvcm0oKSwgRmxvYXRRdWFkKGxheWVyUmVjdCgp
KSwgY2xpcHBlZCk7CisgICAgcmV0dXJuICFjbGlwcGVkICYmIHF1YWQuaXNSZWN0aWxpbmVhcigp
ICYmIHF1YWQuYm91bmRpbmdCb3goKS5pc0V4cHJlc3NpYmxlQXNJbnRSZWN0KCk7CiB9CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150064</attachid>
            <date>2012-06-28 19:00:42 -0700</date>
            <delta_ts>2012-06-29 11:40:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90230-20120628190042.patch</filename>
            <type>text/plain</type>
            <size>20806</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxNTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA4MmU5ZDRiOGI5MTlm
YWYyM2JlOWE2MWExOTAxZWNlYWJlN2QzZDk0Li4zZDhkOWQxMjA2MmU4MmUxMzFjY2EzNDVmNzEw
N2I3ZGI0NjUzNTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNi0yOCAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gUmVtb3ZlIG1hcFJlY3QgYW5kIG1hcFF1YWQgZnJvbSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAyMzAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVz
IGNsaXBwaW5nLXVuYXdhcmUgbWFwUmVjdCwgbWFwUXVhZCBhbmQgcHJvamVjdFBvaW50IGZ1bmN0
aW9ucyBmcm9tIHRoZSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbnRlcmZhY2UuCisKKyAgICAg
ICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaDoKKyAgICAgICAg
KFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KToKKwogMjAxMi0wNi0yOCAgQWRyaWVubmUgV2Fsa2Vy
ICA8ZW5uZUBnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gU3BsaXQgV2ViU2Nyb2xs
YmFyIGludG8gV2ViUGx1Z2luU2Nyb2xsYmFyIGFuZCBXZWJTY3JvbGxiYXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA3ZGQ3ZjUyZmRiMTc4NTg0ODRhODZmMmNjMDg0OGI2ZWFhNjhkMWE2Li4zYWIzOWYwZWJiMWY4
YmRjZDNlZDQzYTM3ZTllZTQ0OWY3NzI4YmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAK
KzIwMTItMDYtMjggIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbY2hyb21pdW1dIFJlbW92ZSBtYXBSZWN0IGFuZCBtYXBRdWFkIGZyb20gV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkwMjMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVwbGFjZXMgY2FsbHMgdG8gV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om1hcFJlY3Qv
bWFwUXVhZCB3aXRoIGNsaXBwaW5nLWF3YXJlIGNhbGxzIHRvIENDTWF0aFV0aWxzLiBJbiBtb3N0
CisgICAgICAgIGNhc2VzLCB3ZSBkbyBub3QgZXhwZWN0IGNsaXBwaW5nIHRvIGhhcHBlbi4gRm9y
IG90aGVycyAoc3VjaCBhcyBhcmVhIGNhbGN1bGF0aW9ucyBpbiBDQ092ZXJkcmF3TWV0cmljcykg
d2UgY2FuCisgICAgICAgIGhhbmRsZSBhIGNsaXBwZWQgcXVhZCBlYXNpbHkuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVu
ZGVyUGFzc1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpk
cmF3VGlsZVF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRl
clN1cmZhY2VDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdXJmYWNlQ2hy
b21pdW06OmRyYXdhYmxlQ29udGVudFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJ
bXBsOjpnZXREcmF3UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybVN1
cmZhY2VPcGFxdWVSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6YWRkT2NjbHVzaW9uQmVoaW5k
TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRy
YXdNZXRyaWNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cG9s
eWdvbkFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6YXJlYU9mTWFwcGVkUXVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ092ZXJkcmF3TWV0cmljczo6ZGlkVXBsb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDT3ZlcmRyYXdNZXRyaWNzOjpkaWRDdWxsRm9yRHJhd2luZyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ092ZXJkcmF3TWV0cmljczo6ZGlkRHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
UmVuZGVyUGFzczo6YXBwZW5kUXVhZHNUb0ZpbGxTY3JlZW4pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ1JlbmRlclN1cmZhY2U6OmRyYXdhYmxlQ29udGVudFJlY3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNDU2hhcmVkUXVhZFN0YXRlOjppc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0
KToKKwogMjAxMi0wNi0yOCAgQnJ1bm8gZGUgT2xpdmVpcmEgQWJpbmFkZXIgIDxicnVuby5hYmlu
YWRlckBiYXN5c2tvbS5jb20+CiAKICAgICAgICAgW1F0XSBSZW1vdmUgdW5uZWNlc3NhcnkgQWZm
aW5lVHJhbnNmb3JtIGNhbGxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4LmgKaW5kZXggMzEzNWI0ZTY4MDFmMWUw
OThjNzZiZjQ3NTJlMDUyMmRmYjgwZDRhYi4uMGZmZTBjNDA1MmE0NjhlMjNmOGFhMDA3YjMyNjYw
NDUzYjE5MDZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaApAQCAtMTQxLDEzICsxNDEsOSBAQCBwdWJs
aWM6CiAgICAgLy8gRklYTUU6IHRoZXNlIG1hcCBmdW5jdGlvbnMgc2hvdWxkIG5vdCBleGlzdCwg
c2hvdWxkIGJlIHVzaW5nIENDTWF0aFV0aWwKICAgICAvLyBpbnN0ZWFkLiBFdmVudHVhbGx5IEND
TWF0aFV0aWwgZnVuY3Rpb25zIGNvdWxkIGJlIG1lcmdlZCBoZXJlLCBidXQgaXRzCiAgICAgLy8g
bm90IHlldCB0aGUgcmlnaHQgdGltZSBmb3IgdGhhdC4KLSAgICBXZWJDb3JlOjpGbG9hdFJlY3Qg
bWFwUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBjb25zdDsKLSAgICBXZWJDb3JlOjpJ
bnRSZWN0IG1hcFJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0OwogICAgIFdlYkNv
cmU6OkZsb2F0UG9pbnQzRCBtYXBQb2ludChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50M0QmKSBj
b25zdDsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1hcFBvaW50KGNvbnN0IFdlYkNvcmU6OkZs
b2F0UG9pbnQmKSBjb25zdDsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBtYXBQb2ludChjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0OwotICAgIFdlYkNvcmU6OkZsb2F0UXVhZCBtYXBRdWFk
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UXVhZCYpIGNvbnN0OwotICAgIFdlYkNvcmU6OkZsb2F0UG9p
bnQgcHJvamVjdFBvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBib29sKiBjbGFtcGVk
ID0gMCkgY29uc3Q7CiAjZW5kaWYKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlRyYW5zZm9y
bWF0aW9uTWF0cml4LmNwcAppbmRleCBlZWZkMTU0ZThhOTM1ZmJlM2YwYTcyMDdjNGU0MDNmNmRi
NzU4MGMwLi5jYjI1OWYwNTFlZjg4NTc4ZmM0Y2Q3NmYxYjZhYWI3ZTc1MTRlNmNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlRyYW5zZm9y
bWF0aW9uTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9z
dXBwb3J0L1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcApAQCAtNDIyLDE2ICs0MjIsNiBAQCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6dG9XZWJDb3JlVHJh
bnNmb3JtKCkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlOwogfQogCi1GbG9hdFJlY3QgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXg6Om1hcFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25z
dAotewotICAgIHJldHVybiBtX3ByaXZhdGUubWFwUmVjdChyZWN0KTsKLX0KLQotSW50UmVjdCBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bWFwUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KSBjb25z
dAotewotICAgIHJldHVybiBtX3ByaXZhdGUubWFwUmVjdChyZWN0KTsKLX0KLQogRmxvYXRQb2lu
dDNEIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptYXBQb2ludChjb25zdCBGbG9hdFBvaW50M0Qm
IHApIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS5tYXBQb2ludChwKTsKQEAgLTQ0Nywx
NCArNDM3LDQgQEAgSW50UG9pbnQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om1hcFBvaW50KGNv
bnN0IEludFBvaW50JiBwKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUubWFwUG9pbnQocCk7
CiB9CiAKLUZsb2F0UXVhZCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bWFwUXVhZChjb25zdCBG
bG9hdFF1YWQmIHF1YWQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS5tYXBRdWFkKHF1
YWQpOwotfQotCi1GbG9hdFBvaW50IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4Ojpwcm9qZWN0UG9p
bnQoY29uc3QgRmxvYXRQb2ludCYgcCwgYm9vbCogY2xhbXBlZCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9wcml2YXRlLnByb2plY3RQb2ludChwLCBjbGFtcGVkKTsKLX0KLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA0NmM5
YjM2MjE1YTczNTkwNDgyNWY5ZjY0MjQ4YzhkZmEyMTk4NDE1Li45OTM5Yjk0YmM4YmVkYTMwYWE1
YTM2YzQzMDI3ZTFiZTM0M2IyNjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAKQEAgLTU4Nyw3ICs1ODcsOSBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJh
d1JlbmRlclBhc3NRdWFkKGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBxdWFkKQogICAgIGlm
IChkcmF3aW5nU3VyZmFjZS0+aGFzVmFsaWRCYWNrZ3JvdW5kVGV4dHVyZSgpKQogICAgICAgICBj
b3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoZHJhd2luZ1N1cmZhY2UtPmJhY2tncm91bmRUZXh0dXJl
KCktPnRleHR1cmVJZCgpLCBxdWFkLT5xdWFkUmVjdCgpLnNpemUoKSwgcXVhZC0+bGF5ZXJUcmFu
c2Zvcm0oKSk7CiAKLSAgICBGbG9hdFF1YWQgZGV2aWNlUXVhZCA9IGNvbnRlbnRzRGV2aWNlVHJh
bnNmb3JtLm1hcFF1YWQoc2hhcmVkR2VvbWV0cnlRdWFkKCkpOworICAgIGJvb2wgY2xpcHBlZCA9
IGZhbHNlOworICAgIEZsb2F0UXVhZCBkZXZpY2VRdWFkID0gQ0NNYXRoVXRpbDo6bWFwUXVhZChj
b250ZW50c0RldmljZVRyYW5zZm9ybSwgc2hhcmVkR2VvbWV0cnlRdWFkKCksIGNsaXBwZWQpOwor
ICAgIEFTU0VSVCghY2xpcHBlZCk7CiAgICAgQ0NMYXllclF1YWQgZGV2aWNlTGF5ZXJCb3VuZHMg
PSBDQ0xheWVyUXVhZChGbG9hdFF1YWQoZGV2aWNlUXVhZC5ib3VuZGluZ0JveCgpKSk7CiAgICAg
Q0NMYXllclF1YWQgZGV2aWNlTGF5ZXJFZGdlcyA9IENDTGF5ZXJRdWFkKGRldmljZVF1YWQpOwog
CkBAIC02NjEsNyArNjYzLDggQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5k
ZXJQYXNzUXVhZChjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCogcXVhZCkKICAgICB9CiAKICAg
ICAvLyBNYXAgZGV2aWNlIHNwYWNlIHF1YWQgdG8gc3VyZmFjZSBzcGFjZS4KLSAgICBGbG9hdFF1
YWQgc3VyZmFjZVF1YWQgPSBjb250ZW50c0RldmljZVRyYW5zZm9ybS5pbnZlcnNlKCkubWFwUXVh
ZChkZXZpY2VMYXllckVkZ2VzLmZsb2F0UXVhZCgpKTsKKyAgICBGbG9hdFF1YWQgc3VyZmFjZVF1
YWQgPSBDQ01hdGhVdGlsOjptYXBRdWFkKGNvbnRlbnRzRGV2aWNlVHJhbnNmb3JtLmludmVyc2Uo
KSwgZGV2aWNlTGF5ZXJFZGdlcy5mbG9hdFF1YWQoKSwgY2xpcHBlZCk7CisgICAgQVNTRVJUKCFj
bGlwcGVkKTsKIAogICAgIGRyYXdUZXh0dXJlZFF1YWQocXVhZC0+bGF5ZXJUcmFuc2Zvcm0oKSwg
cXVhZC0+cXVhZFJlY3QoKS53aWR0aCgpLCBxdWFkLT5xdWFkUmVjdCgpLmhlaWdodCgpLCBxdWFk
LT5vcGFjaXR5KCksIHN1cmZhY2VRdWFkLAogICAgICAgICAgICAgICAgICAgICAgc2hhZGVyTWF0
cml4TG9jYXRpb24sIHNoYWRlckFscGhhTG9jYXRpb24sIHNoYWRlclF1YWRMb2NhdGlvbik7CkBA
IC03NjEsNiArNzY0LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUaWxlUXVh
ZChjb25zdCBDQ1RpbGVEcmF3UXVhZCogcXVhZCkKIAogICAgIGJvb2wgY2xpcHBlZCA9IGZhbHNl
OwogICAgIEZsb2F0UXVhZCBkZXZpY2VMYXllclF1YWQgPSBDQ01hdGhVdGlsOjptYXBRdWFkKGRl
dmljZVRyYW5zZm9ybSwgRmxvYXRRdWFkKHF1YWQtPmxheWVyUmVjdCgpKSwgY2xpcHBlZCk7Cisg
ICAgQVNTRVJUKCFjbGlwcGVkKTsKIAogICAgIFRpbGVQcm9ncmFtVW5pZm9ybXMgdW5pZm9ybXM7
CiAgICAgLy8gRm9yIG5vdywgd2Ugc2ltcGx5IHNraXAgYW50aS1hbGlhc2luZyB3aXRoIHRoZSBx
dWFkIGlzIGNsaXBwZWQuIFRoaXMgb25seSBoYXBwZW5zCkBAIC04NDUsNyArODQ5LDggQEAgdm9p
ZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUaWxlUXVhZChjb25zdCBDQ1RpbGVEcmF3UXVh
ZCogcXVhZCkKIAogICAgICAgICAvLyBNYXAgcXVhZCB0byBsYXllciBzcGFjZS4KICAgICAgICAg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggaW52ZXJzZURldmljZVRyYW5zZm9ybSA9IGRldmljZVRy
YW5zZm9ybS5pbnZlcnNlKCk7Ci0gICAgICAgIGxvY2FsUXVhZCA9IGludmVyc2VEZXZpY2VUcmFu
c2Zvcm0ubWFwUXVhZChkZXZpY2VRdWFkLmZsb2F0UXVhZCgpKTsKKyAgICAgICAgbG9jYWxRdWFk
ID0gQ0NNYXRoVXRpbDo6bWFwUXVhZChpbnZlcnNlRGV2aWNlVHJhbnNmb3JtLCBkZXZpY2VRdWFk
LmZsb2F0UXVhZCgpLCBjbGlwcGVkKTsKKyAgICAgICAgQVNTRVJUKCFjbGlwcGVkKTsKICAgICB9
IGVsc2UgewogICAgICAgICAvLyBNb3ZlIGZyYWdtZW50IHNoYWRlciB0cmFuc2Zvcm0gdG8gdmVy
dGV4IHNoYWRlci4gV2UgY2FuIGRvIHRoaXMgd2hpbGUKICAgICAgICAgLy8gc3RpbGwgcHJvZHVj
aW5nIGNvcnJlY3QgcmVzdWx0cyBhcyBmcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJT
dXJmYWNlQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcAppbmRleCA1MTc2MTQ1M2Q4MzNhZjY1ODEy
NjJmZmI2YmEzM2FlZjg3NzYxMDU0Li5mYjJkZDhiYzY3NmUzNmI2YmVhZWVjNDllODEzZDg4ZjUy
YWZhYzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHAKQEAgLTU4LDkg
KzU4LDkgQEAgRmxvYXRSZWN0IFJlbmRlclN1cmZhY2VDaHJvbWl1bTo6ZHJhd2FibGVDb250ZW50
UmVjdCgpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IGxvY2FsQ29udGVudFJlY3QoLTAuNSAqIG1f
Y29udGVudFJlY3Qud2lkdGgoKSwgLTAuNSAqIG1fY29udGVudFJlY3QuaGVpZ2h0KCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jb250ZW50UmVjdC53aWR0aCgpLCBtX2NvbnRl
bnRSZWN0LmhlaWdodCgpKTsKLSAgICBGbG9hdFJlY3QgZHJhd2FibGVDb250ZW50UmVjdCA9IG1f
ZHJhd1RyYW5zZm9ybS5tYXBSZWN0KGxvY2FsQ29udGVudFJlY3QpOworICAgIEZsb2F0UmVjdCBk
cmF3YWJsZUNvbnRlbnRSZWN0ID0gQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3QobV9kcmF3VHJh
bnNmb3JtLCBsb2NhbENvbnRlbnRSZWN0KTsKICAgICBpZiAobV9vd25pbmdMYXllci0+cmVwbGlj
YUxheWVyKCkpCi0gICAgICAgIGRyYXdhYmxlQ29udGVudFJlY3QudW5pdGUobV9yZXBsaWNhRHJh
d1RyYW5zZm9ybS5tYXBSZWN0KGxvY2FsQ29udGVudFJlY3QpKTsKKyAgICAgICAgZHJhd2FibGVD
b250ZW50UmVjdC51bml0ZShDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChtX3JlcGxpY2FEcmF3
VHJhbnNmb3JtLCBsb2NhbENvbnRlbnRSZWN0KSk7CiAKICAgICByZXR1cm4gZHJhd2FibGVDb250
ZW50UmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRleCBjMzgwYmQ0NWJmMzE1NWQ1
NTdmZmRjN2U2NjlkNGIyYzkyYzhjNjYzLi44MzY2NmIwNDY0ZjY3NjRmNjg4Y2E2ZmQ1YzJiZmJm
Mjc3MWFmNDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAg
Y29uc3QgSW50UmVjdCBDQ0xheWVySW1wbDo6Z2V0RHJhd1JlY3QoKSBjb25zdAogICAgIC8vIEZv
cm0gdGhlIG1hdHJpeCB1c2VkIGJ5IHRoZSBzaGFkZXIgdG8gbWFwIHRoZSBjb3JuZXJzIG9mIHRo
ZSBsYXllcidzCiAgICAgLy8gYm91bmRzIGludG8gdGhlIHZpZXcgc3BhY2UuCiAgICAgRmxvYXRS
ZWN0IGxheWVyUmVjdCgtMC41ICogYm91bmRzKCkud2lkdGgoKSwgLTAuNSAqIGJvdW5kcygpLmhl
aWdodCgpLCBib3VuZHMoKS53aWR0aCgpLCBib3VuZHMoKS5oZWlnaHQoKSk7Ci0gICAgSW50UmVj
dCBtYXBwZWRSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChkcmF3VHJhbnNmb3JtKCkubWFwUmVjdChs
YXllclJlY3QpKTsKKyAgICBJbnRSZWN0IG1hcHBlZFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KEND
TWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KGRyYXdUcmFuc2Zvcm0oKSwgbGF5ZXJSZWN0KSk7CiAg
ICAgcmV0dXJuIG1hcHBlZFJlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWF0aFV0aWwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYXRoVXRpbC5jcHAKaW5kZXggODQ3
MWIzZTZhMTAxMzY3OGIwMzFhYTBmNTc1OTVlNjg5ZmYyYzA2My4uMDA3ZTc0ZDQ5YjMyY2MwZmFl
ZDA2YTExMmIzODBkMWM5ZjNkM2NlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYXRoVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYXRoVXRpbC5jcHAKQEAgLTI3OCwx
MyArMjc4LDEzIEBAIEZsb2F0UXVhZCBDQ01hdGhVdGlsOjpwcm9qZWN0UXVhZChjb25zdCBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zCiB7CiAgICAgRmxvYXRRdWFkIHBy
b2plY3RlZFF1YWQ7CiAgICAgYm9vbCBjbGlwcGVkUG9pbnQ7Ci0gICAgcHJvamVjdGVkUXVhZC5z
ZXRQMSh0cmFuc2Zvcm0ucHJvamVjdFBvaW50KHEucDEoKSwgJmNsaXBwZWRQb2ludCkpOworICAg
IHByb2plY3RlZFF1YWQuc2V0UDEocHJvamVjdFBvaW50KHRyYW5zZm9ybSwgcS5wMSgpLCBjbGlw
cGVkUG9pbnQpKTsKICAgICBjbGlwcGVkID0gY2xpcHBlZFBvaW50OwotICAgIHByb2plY3RlZFF1
YWQuc2V0UDIodHJhbnNmb3JtLnByb2plY3RQb2ludChxLnAyKCksICZjbGlwcGVkUG9pbnQpKTsK
KyAgICBwcm9qZWN0ZWRRdWFkLnNldFAyKHByb2plY3RQb2ludCh0cmFuc2Zvcm0sIHEucDIoKSwg
Y2xpcHBlZFBvaW50KSk7CiAgICAgY2xpcHBlZCB8PSBjbGlwcGVkUG9pbnQ7Ci0gICAgcHJvamVj
dGVkUXVhZC5zZXRQMyh0cmFuc2Zvcm0ucHJvamVjdFBvaW50KHEucDMoKSwgJmNsaXBwZWRQb2lu
dCkpOworICAgIHByb2plY3RlZFF1YWQuc2V0UDMocHJvamVjdFBvaW50KHRyYW5zZm9ybSwgcS5w
MygpLCBjbGlwcGVkUG9pbnQpKTsKICAgICBjbGlwcGVkIHw9IGNsaXBwZWRQb2ludDsKLSAgICBw
cm9qZWN0ZWRRdWFkLnNldFA0KHRyYW5zZm9ybS5wcm9qZWN0UG9pbnQocS5wNCgpLCAmY2xpcHBl
ZFBvaW50KSk7CisgICAgcHJvamVjdGVkUXVhZC5zZXRQNChwcm9qZWN0UG9pbnQodHJhbnNmb3Jt
LCBxLnA0KCksIGNsaXBwZWRQb2ludCkpOwogICAgIGNsaXBwZWQgfD0gY2xpcHBlZFBvaW50Owog
CiAgICAgcmV0dXJuIHByb2plY3RlZFF1YWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFj
a2VyLmNwcAppbmRleCA5MTdkYzg3ZDBmZjVjMzViMTY2ZTRhZjQwMThlYWViY2EzZDY1MmVhLi5i
MzA3OTM2N2ZkNTgwNjU2N2ZhZGE2NWQxM2NjODgyNzMwY2Q0NzBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKQEAgLTE1MSw5ICsxNTEsOSBAQCBzdGF0aWMgaW5saW5l
IFJlZ2lvbiB0cmFuc2Zvcm1TdXJmYWNlT3BhcXVlUmVnaW9uKGNvbnN0IFJlbmRlclN1cmZhY2VU
eXBlKiBzdXJmYQogICAgIFJlZ2lvbiB0cmFuc2Zvcm1lZFJlZ2lvbjsKIAogICAgIFZlY3RvcjxJ
bnRSZWN0PiByZWN0cyA9IHJlZ2lvbi5yZWN0cygpOwotICAgIC8vIENsaXBwaW5nIGhhcyBiZWVu
IHZlcmlmaWVkIGFib3ZlLCBzbyBtYXBSZWN0IHdpbGwgZ2l2ZSBjb3JyZWN0IHJlc3VsdHMuCisg
ICAgLy8gQ2xpcHBpbmcgaGFzIGJlZW4gdmVyaWZpZWQgYWJvdmUsIHNvIG1hcENsaXBwZWRSZWN0
IHdpbGwgZ2l2ZSBjb3JyZWN0IHJlc3VsdHMuCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBy
ZWN0cy5zaXplKCk7ICsraSkgewotICAgICAgICBJbnRSZWN0IHRyYW5zZm9ybWVkUmVjdCA9IGVu
Y2xvc2VkSW50UmVjdCh0cmFuc2Zvcm0ubWFwUmVjdChGbG9hdFJlY3QocmVjdHNbaV0pKSk7Cisg
ICAgICAgIEludFJlY3QgdHJhbnNmb3JtZWRSZWN0ID0gZW5jbG9zZWRJbnRSZWN0KENDTWF0aFV0
aWw6Om1hcENsaXBwZWRSZWN0KHRyYW5zZm9ybSwgRmxvYXRSZWN0KHJlY3RzW2ldKSkpOwogICAg
ICAgICBpZiAoIXN1cmZhY2UtPmNsaXBSZWN0KCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgdHJh
bnNmb3JtZWRSZWN0LmludGVyc2VjdChzdXJmYWNlLT5jbGlwUmVjdCgpKTsKICAgICAgICAgdHJh
bnNmb3JtZWRSZWdpb24udW5pdGUodHJhbnNmb3JtZWRSZWN0KTsKQEAgLTMxOSw5ICszMTksOSBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkT2NjbHVzaW9uQmVoaW5kTGF5ZXIoUmVnaW9uJiByZWdp
b24sIGNvbnN0IExheWVyVHlwZSogbGF5ZQogICAgICAgICByZXR1cm47CiAKICAgICBWZWN0b3I8
SW50UmVjdD4gY29udGVudFJlY3RzID0gb3BhcXVlQ29udGVudHMucmVjdHMoKTsKLSAgICAvLyBX
ZSB2ZXJpZnkgdGhhdCB0aGUgcG9zc2libGUgYm91bmRzIG9mIHRoaXMgcmVnaW9uIGFyZSBub3Qg
Y2xpcHBlZCBhYm92ZSwgc28gd2UgY2FuIHVzZSBtYXBSZWN0KCkgc2FmZWx5IGhlcmUuCisgICAg
Ly8gV2UgdmVyaWZ5IHRoYXQgdGhlIHBvc3NpYmxlIGJvdW5kcyBvZiB0aGlzIHJlZ2lvbiBhcmUg
bm90IGNsaXBwZWQgYWJvdmUsIHNvIHdlIGNhbiB1c2UgbWFwQ2xpcHBlZFJlY3QoKSBzYWZlbHkg
aGVyZS4KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbnRlbnRSZWN0cy5zaXplKCk7ICsr
aSkgewotICAgICAgICBJbnRSZWN0IHRyYW5zZm9ybWVkUmVjdCA9IGVuY2xvc2VkSW50UmVjdCh0
cmFuc2Zvcm0ubWFwUmVjdChGbG9hdFJlY3QoY29udGVudFJlY3RzW2ldKSkpOworICAgICAgICBJ
bnRSZWN0IHRyYW5zZm9ybWVkUmVjdCA9IGVuY2xvc2VkSW50UmVjdChDQ01hdGhVdGlsOjptYXBD
bGlwcGVkUmVjdCh0cmFuc2Zvcm0sIEZsb2F0UmVjdChjb250ZW50UmVjdHNbaV0pKSk7CiAgICAg
ICAgIHRyYW5zZm9ybWVkUmVjdC5pbnRlcnNlY3Qoc2Npc3NvclJlY3QpOwogICAgICAgICBpZiAo
dHJhbnNmb3JtZWRSZWN0LndpZHRoKCkgPj0gbWluaW11bVRyYWNraW5nU2l6ZS53aWR0aCgpIHx8
IHRyYW5zZm9ybWVkUmVjdC5oZWlnaHQoKSA+PSBtaW5pbXVtVHJhY2tpbmdTaXplLmhlaWdodCgp
KSB7CiAgICAgICAgICAgICBpZiAob2NjbHVkaW5nU2NyZWVuU3BhY2VSZWN0cykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRy
YXdNZXRyaWNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDT3ZlcmRyYXdNZXRyaWNzLmNwcAppbmRleCAwY2MyZmE1ZWM2MTZhMDA0Nzc4MjYxNTg5
NjBiZDAxNzg4N2UzZGQ4Li4wZThjOGZkODcxOTg5NmNkYjJjM2Y2NDg1ZTU3N2Q3Y2RmMTRiNGM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ092ZXJkcmF3TWV0cmljcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NPdmVyZHJhd01ldHJpY3MuY3BwCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5o
IgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKKyNpbmNsdWRlICJjYy9DQ01h
dGhVdGlsLmgiCiAjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGlj
L1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CiAKQEAgLTU3LDEzICs1OCwyNSBAQCBzdGF0aWMg
aW5saW5lIGZsb2F0IHdlZGdlUHJvZHVjdChjb25zdCBGbG9hdFBvaW50JiBwMSwgY29uc3QgRmxv
YXRQb2ludCYgcDIpCiAgICAgcmV0dXJuIHAxLngoKSAqIHAyLnkoKSAtIHAxLnkoKSAqIHAyLngo
KTsKIH0KIAotLy8gQ29tcHV0ZXMgYXJlYSBvZiBxdWFkcyB0aGF0IGFyZSBwb3NzaWJseSBub24t
cmVjdGFuZ3VsYXIuIENhbiBiZSBlYXNpbHkgZXh0ZW5kZWQgdG8gcG9seWdvbnMuCi1zdGF0aWMg
aW5saW5lIGZsb2F0IHF1YWRBcmVhKGNvbnN0IEZsb2F0UXVhZCYgcXVhZCkKKy8vIENhbGN1bGF0
ZXMgYXJlYSBvZiBhbiBhcmJpdHJhcnkgY29udmV4IHBvbHlnb24gd2l0aCB1cCB0byA4IHBvaW50
cy4KK3N0YXRpYyBpbmxpbmUgZmxvYXQgcG9seWdvbkFyZWEoY29uc3QgRmxvYXRQb2ludCBwb2lu
dHNbOF0sIGludCBudW1Qb2ludHMpCiB7Ci0gICAgcmV0dXJuIGZhYnMoMC41ICogKHdlZGdlUHJv
ZHVjdChxdWFkLnAxKCksIHF1YWQucDIoKSkgKwotICAgICAgICAgICAgICAgICAgICAgICB3ZWRn
ZVByb2R1Y3QocXVhZC5wMigpLCBxdWFkLnAzKCkpICsKLSAgICAgICAgICAgICAgICAgICAgICAg
d2VkZ2VQcm9kdWN0KHF1YWQucDMoKSwgcXVhZC5wNCgpKSArCi0gICAgICAgICAgICAgICAgICAg
ICAgIHdlZGdlUHJvZHVjdChxdWFkLnA0KCksIHF1YWQucDEoKSkpKTsKKyAgICBpZiAobnVtUG9p
bnRzIDwgMikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmbG9hdCBhcmVhID0gMDsKKyAgICBm
b3IgKGludCBpID0gMDsgaSA8IG51bVBvaW50czsgKytpKQorICAgICAgICBhcmVhICs9IHdlZGdl
UHJvZHVjdChwb2ludHNbaV0sIHBvaW50c1soaSsxKSVudW1Qb2ludHNdKTsKKyAgICByZXR1cm4g
ZmFicygwLjVmICogYXJlYSk7Cit9CisKKy8vIFRha2VzIGEgZ2l2ZW4gcXVhZCwgbWFwcyBpdCBi
eSB0aGUgZ2l2ZW4gdHJhbnNmb3JtYXRpb24sIGFuZCBnaXZlcyB0aGUgYXJlYSBvZiB0aGUgcmVz
dWx0aW5nIHBvbHlnb24uCitzdGF0aWMgaW5saW5lIGZsb2F0IGFyZWFPZk1hcHBlZFF1YWQoY29u
c3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRRdWFkJiBx
dWFkKQoreworICAgIEZsb2F0UG9pbnQgY2xpcHBlZFF1YWRbOF07CisgICAgaW50IG51bVZlcnRp
Y2VzSW5DbGlwcGVkUXVhZCA9IDA7CisgICAgQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFF1YWQodHJh
bnNmb3JtLCBxdWFkLCBjbGlwcGVkUXVhZCwgbnVtVmVydGljZXNJbkNsaXBwZWRRdWFkKTsKKyAg
ICByZXR1cm4gcG9seWdvbkFyZWEoY2xpcHBlZFF1YWQsIG51bVZlcnRpY2VzSW5DbGlwcGVkUXVh
ZCk7CiB9CiAKIHZvaWQgQ0NPdmVyZHJhd01ldHJpY3M6OmRpZFBhaW50KGNvbnN0IEludFJlY3Qm
IHBhaW50ZWRSZWN0KQpAQCAtODUsOCArOTgsOCBAQCB2b2lkIENDT3ZlcmRyYXdNZXRyaWNzOjpk
aWRVcGxvYWQoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvVGFyZwog
ICAgIGlmICghbV9yZWNvcmRNZXRyaWNzRm9yRnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGZsb2F0IHVwbG9hZEFyZWEgPSBxdWFkQXJlYSh0cmFuc2Zvcm1Ub1RhcmdldC5tYXBRdWFkKEZs
b2F0UXVhZCh1cGxvYWRSZWN0KSkpOwotICAgIGZsb2F0IHVwbG9hZE9wYXF1ZUFyZWEgPSBxdWFk
QXJlYSh0cmFuc2Zvcm1Ub1RhcmdldC5tYXBRdWFkKEZsb2F0UXVhZChpbnRlcnNlY3Rpb24ob3Bh
cXVlUmVjdCwgdXBsb2FkUmVjdCkpKSk7CisgICAgZmxvYXQgdXBsb2FkQXJlYSA9IGFyZWFPZk1h
cHBlZFF1YWQodHJhbnNmb3JtVG9UYXJnZXQsIEZsb2F0UXVhZCh1cGxvYWRSZWN0KSk7CisgICAg
ZmxvYXQgdXBsb2FkT3BhcXVlQXJlYSA9IGFyZWFPZk1hcHBlZFF1YWQodHJhbnNmb3JtVG9UYXJn
ZXQsIEZsb2F0UXVhZChpbnRlcnNlY3Rpb24ob3BhcXVlUmVjdCwgdXBsb2FkUmVjdCkpKTsKIAog
ICAgIG1fcGl4ZWxzVXBsb2FkZWRPcGFxdWUgKz0gdXBsb2FkT3BhcXVlQXJlYTsKICAgICBtX3Bp
eGVsc1VwbG9hZGVkVHJhbnNsdWNlbnQgKz0gdXBsb2FkQXJlYSAtIHVwbG9hZE9wYXF1ZUFyZWE7
CkBAIC05Nyw4ICsxMTAsOCBAQCB2b2lkIENDT3ZlcmRyYXdNZXRyaWNzOjpkaWRDdWxsRm9yRHJh
d2luZyhjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmbwogICAgIGlmICghbV9y
ZWNvcmRNZXRyaWNzRm9yRnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZsb2F0IGJlZm9y
ZUN1bGxBcmVhID0gcXVhZEFyZWEodHJhbnNmb3JtVG9UYXJnZXQubWFwUXVhZChGbG9hdFF1YWQo
YmVmb3JlQ3VsbFJlY3QpKSk7Ci0gICAgZmxvYXQgYWZ0ZXJDdWxsQXJlYSA9IHF1YWRBcmVhKHRy
YW5zZm9ybVRvVGFyZ2V0Lm1hcFF1YWQoRmxvYXRRdWFkKGFmdGVyQ3VsbFJlY3QpKSk7CisgICAg
ZmxvYXQgYmVmb3JlQ3VsbEFyZWEgPSBhcmVhT2ZNYXBwZWRRdWFkKHRyYW5zZm9ybVRvVGFyZ2V0
LCBGbG9hdFF1YWQoYmVmb3JlQ3VsbFJlY3QpKTsKKyAgICBmbG9hdCBhZnRlckN1bGxBcmVhID0g
YXJlYU9mTWFwcGVkUXVhZCh0cmFuc2Zvcm1Ub1RhcmdldCwgRmxvYXRRdWFkKGFmdGVyQ3VsbFJl
Y3QpKTsKIAogICAgIG1fcGl4ZWxzQ3VsbGVkRm9yRHJhd2luZyArPSBiZWZvcmVDdWxsQXJlYSAt
IGFmdGVyQ3VsbEFyZWE7CiB9CkBAIC0xMDgsOCArMTIxLDggQEAgdm9pZCBDQ092ZXJkcmF3TWV0
cmljczo6ZGlkRHJhdyhjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9U
YXJnZXQKICAgICBpZiAoIW1fcmVjb3JkTWV0cmljc0ZvckZyYW1lKQogICAgICAgICByZXR1cm47
CiAKLSAgICBmbG9hdCBhZnRlckN1bGxBcmVhID0gcXVhZEFyZWEodHJhbnNmb3JtVG9UYXJnZXQu
bWFwUXVhZChGbG9hdFF1YWQoYWZ0ZXJDdWxsUmVjdCkpKTsKLSAgICBmbG9hdCBhZnRlckN1bGxP
cGFxdWVBcmVhID0gcXVhZEFyZWEodHJhbnNmb3JtVG9UYXJnZXQubWFwUXVhZChGbG9hdFF1YWQo
aW50ZXJzZWN0aW9uKG9wYXF1ZVJlY3QsIGFmdGVyQ3VsbFJlY3QpKSkpOworICAgIGZsb2F0IGFm
dGVyQ3VsbEFyZWEgPSBhcmVhT2ZNYXBwZWRRdWFkKHRyYW5zZm9ybVRvVGFyZ2V0LCBGbG9hdFF1
YWQoYWZ0ZXJDdWxsUmVjdCkpOworICAgIGZsb2F0IGFmdGVyQ3VsbE9wYXF1ZUFyZWEgPSBhcmVh
T2ZNYXBwZWRRdWFkKHRyYW5zZm9ybVRvVGFyZ2V0LCBGbG9hdFF1YWQoaW50ZXJzZWN0aW9uKG9w
YXF1ZVJlY3QsIGFmdGVyQ3VsbFJlY3QpKSk7CiAKICAgICBtX3BpeGVsc0RyYXduT3BhcXVlICs9
IGFmdGVyQ3VsbE9wYXF1ZUFyZWE7CiAgICAgbV9waXhlbHNEcmF3blRyYW5zbHVjZW50ICs9IGFm
dGVyQ3VsbEFyZWEgLSBhZnRlckN1bGxPcGFxdWVBcmVhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5j
cHAKaW5kZXggYjFkNTNjNjNkMDhmYjJhODg0M2I0MjFjNDk4MTg4MDk0M2NlN2U4Ny4uZjdhYjE3
MTI3YWZkYmEzZmU3Y2NjYWZkNzA2MjlkNDMwNTZkZGQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3MuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzLmgiCiAK
ICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgorI2luY2x1ZGUgImNjL0NDTWF0aFV0aWwuaCIK
ICNpbmNsdWRlICJjYy9DQ1F1YWRDdWxsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1NoYXJlZFF1YWRT
dGF0ZS5oIgogI2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgiCkBAIC05NSw3ICs5
Niw3IEBAIHZvaWQgQ0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc1RvRmlsbFNjcmVlbihDQ0xheWVy
SW1wbCogcm9vdExheWVyLCBTa0NvbG9yIHNjcmVlCiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXggdHJhbnNmb3JtVG9MYXllclNwYWNlID0gcm9vdExheWVyLT5zY3JlZW5TcGFjZVRyYW5zZm9y
bSgpLmludmVyc2UoKTsKICAgICBWZWN0b3I8SW50UmVjdD4gZmlsbFJlY3RzID0gZmlsbFJlZ2lv
bi5yZWN0cygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsbFJlY3RzLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gdHJhbnNmb3JtVG9MYXllclNwYWNl
Lm1hcFJlY3QoZmlsbFJlY3RzW2ldKTsKKyAgICAgICAgSW50UmVjdCBsYXllclJlY3QgPSBDQ01h
dGhVdGlsOjptYXBDbGlwcGVkUmVjdCh0cmFuc2Zvcm1Ub0xheWVyU3BhY2UsIGZpbGxSZWN0c1tp
XSk7CiAgICAgICAgIG1fcXVhZExpc3QuYXBwZW5kKENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVh
dGUoc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBsYXllclJlY3QsIHNjcmVlbkJhY2tncm91bmRDb2xv
cikpOwogICAgIH0KICAgICBtX3NoYXJlZFF1YWRTdGF0ZUxpc3QuYXBwZW5kKHNoYXJlZFF1YWRT
dGF0ZS5yZWxlYXNlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKaW5kZXggNmFj
MDk0NmFhNjg2N2FlN2I3NzVmMGQyOWNiYjhlZGIwZDcxZDY4MS4uZDA5NDAxYzRmMjNlMDllNTEy
ZTYyNDk5ODRiZTRjZGU4YTk0YTJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3Bw
CkBAIC03OCw5ICs3OCw5IEBAIEZsb2F0UmVjdCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdhYmxlQ29u
dGVudFJlY3QoKSBjb25zdAogewogICAgIEZsb2F0UmVjdCBsb2NhbENvbnRlbnRSZWN0KC0wLjUg
KiBtX2NvbnRlbnRSZWN0LndpZHRoKCksIC0wLjUgKiBtX2NvbnRlbnRSZWN0LmhlaWdodCgpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY29udGVudFJlY3Qud2lkdGgoKSwgbV9j
b250ZW50UmVjdC5oZWlnaHQoKSk7Ci0gICAgRmxvYXRSZWN0IGRyYXdhYmxlQ29udGVudFJlY3Qg
PSBtX2RyYXdUcmFuc2Zvcm0ubWFwUmVjdChsb2NhbENvbnRlbnRSZWN0KTsKKyAgICBGbG9hdFJl
Y3QgZHJhd2FibGVDb250ZW50UmVjdCA9IENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KG1fZHJh
d1RyYW5zZm9ybSwgbG9jYWxDb250ZW50UmVjdCk7CiAgICAgaWYgKGhhc1JlcGxpY2EoKSkKLSAg
ICAgICAgZHJhd2FibGVDb250ZW50UmVjdC51bml0ZShtX3JlcGxpY2FEcmF3VHJhbnNmb3JtLm1h
cFJlY3QobG9jYWxDb250ZW50UmVjdCkpOworICAgICAgICBkcmF3YWJsZUNvbnRlbnRSZWN0LnVu
aXRlKENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KG1fcmVwbGljYURyYXdUcmFuc2Zvcm0sIGxv
Y2FsQ29udGVudFJlY3QpKTsKIAogICAgIHJldHVybiBkcmF3YWJsZUNvbnRlbnRSZWN0OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaGFyZWRRdWFkU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuY3BwCmluZGV4IDUzNmIzOTg2N2Q1MDIyMDVi
MTIyNzk3ZDBiMTM1YmFhNjNlYzg0OTQuLjVlMDY4MWZmNWZhZmQyM2M1ODZjY2E3MWY5ZTE0NzA1
NjgyMTcxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5jcHAKQEAgLTI3LDYg
KzI3LDggQEAKIAogI2luY2x1ZGUgImNjL0NDU2hhcmVkUXVhZFN0YXRlLmgiCiAKKyNpbmNsdWRl
ICJjYy9DQ01hdGhVdGlsLmgiCisKIHVzaW5nIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRy
aXg7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUwLDggKzUyLDkgQEAgYm9vbCBDQ1NoYXJl
ZFF1YWRTdGF0ZTo6aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpIGNvbnN0CiB7CiAgICAgLy8g
Tm90ZTogdGhpcyBkb2Vzbid0IGNvbnNpZGVyIHdpbmRvdyBvciBwcm9qZWN0aW9uIG1hdHJpY2Vz
LgogICAgIC8vIEFzc3VtZSB0aGF0IHRoZXkncmUgb3J0aG9ub3JtYWwgYW5kIGhhdmUgaW50ZWdl
ciBzY2FsZXMgYW5kIHRyYW5zbGF0aW9ucy4KLSAgICBGbG9hdFF1YWQgcXVhZCA9IHF1YWRUcmFu
c2Zvcm0oKS5tYXBRdWFkKEZsb2F0UXVhZChsYXllclJlY3QoKSkpOwotICAgIHJldHVybiBxdWFk
LmlzUmVjdGlsaW5lYXIoKSAmJiBxdWFkLmJvdW5kaW5nQm94KCkuaXNFeHByZXNzaWJsZUFzSW50
UmVjdCgpOworICAgIGJvb2wgY2xpcHBlZCA9IGZhbHNlOworICAgIEZsb2F0UXVhZCBxdWFkID0g
Q0NNYXRoVXRpbDo6bWFwUXVhZChxdWFkVHJhbnNmb3JtKCksIEZsb2F0UXVhZChsYXllclJlY3Qo
KSksIGNsaXBwZWQpOworICAgIHJldHVybiAhY2xpcHBlZCAmJiBxdWFkLmlzUmVjdGlsaW5lYXIo
KSAmJiBxdWFkLmJvdW5kaW5nQm94KCkuaXNFeHByZXNzaWJsZUFzSW50UmVjdCgpOwogfQogCiB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150224</attachid>
            <date>2012-06-29 11:34:24 -0700</date>
            <delta_ts>2012-06-29 12:25:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90230-20120629113423.patch</filename>
            <type>text/plain</type>
            <size>21079</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxNTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA4MmU5ZDRiOGI5MTlm
YWYyM2JlOWE2MWExOTAxZWNlYWJlN2QzZDk0Li4zZDhkOWQxMjA2MmU4MmUxMzFjY2EzNDVmNzEw
N2I3ZGI0NjUzNTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNi0yOCAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gUmVtb3ZlIG1hcFJlY3QgYW5kIG1hcFF1YWQgZnJvbSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAyMzAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVz
IGNsaXBwaW5nLXVuYXdhcmUgbWFwUmVjdCwgbWFwUXVhZCBhbmQgcHJvamVjdFBvaW50IGZ1bmN0
aW9ucyBmcm9tIHRoZSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbnRlcmZhY2UuCisKKyAgICAg
ICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaDoKKyAgICAgICAg
KFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KToKKwogMjAxMi0wNi0yOCAgQWRyaWVubmUgV2Fsa2Vy
ICA8ZW5uZUBnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gU3BsaXQgV2ViU2Nyb2xs
YmFyIGludG8gV2ViUGx1Z2luU2Nyb2xsYmFyIGFuZCBXZWJTY3JvbGxiYXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBkNmRkYmVlMGYyNjFmMGFjYWFjZDk5ZjQ0OWY5ODQ3MmUwYjZmYzRhLi40YTdlZWYzOWQwNDFl
OGI1OTU4NjViNzE0ODJhYWNkNjQ5MjgyZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAK
KzIwMTItMDYtMjggIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbY2hyb21pdW1dIFJlbW92ZSBtYXBSZWN0IGFuZCBtYXBRdWFkIGZyb20gV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkwMjMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVwbGFjZXMgY2FsbHMgdG8gV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om1hcFJlY3Qv
bWFwUXVhZCB3aXRoIGNsaXBwaW5nLWF3YXJlIGNhbGxzIHRvIENDTWF0aFV0aWxzLiBJbiBtb3N0
CisgICAgICAgIGNhc2VzLCB3ZSBkbyBub3QgZXhwZWN0IGNsaXBwaW5nIHRvIGhhcHBlbi4gRm9y
IG90aGVycyAoc3VjaCBhcyBhcmVhIGNhbGN1bGF0aW9ucyBpbiBDQ092ZXJkcmF3TWV0cmljcykg
d2UgY2FuCisgICAgICAgIGhhbmRsZSBhIGNsaXBwZWQgcXVhZCBlYXNpbHkuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVu
ZGVyUGFzc1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpk
cmF3VGlsZVF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRl
clN1cmZhY2VDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdXJmYWNlQ2hy
b21pdW06OmRyYXdhYmxlQ29udGVudFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJ
bXBsOjpnZXREcmF3UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybVN1
cmZhY2VPcGFxdWVSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6YWRkT2NjbHVzaW9uQmVoaW5k
TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRy
YXdNZXRyaWNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cG9s
eWdvbkFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6YXJlYU9mTWFwcGVkUXVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ092ZXJkcmF3TWV0cmljczo6ZGlkVXBsb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDT3ZlcmRyYXdNZXRyaWNzOjpkaWRDdWxsRm9yRHJhd2luZyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ092ZXJkcmF3TWV0cmljczo6ZGlkRHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
UmVuZGVyUGFzczo6YXBwZW5kUXVhZHNUb0ZpbGxTY3JlZW4pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ1JlbmRlclN1cmZhY2U6OmRyYXdhYmxlQ29udGVudFJlY3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNDU2hhcmVkUXVhZFN0YXRlOjppc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0
KToKKwogMjAxMi0wNi0yOSAgRXJpYyBQZW5uZXIgIDxlcGVubmVyQGdvb2dsZS5jb20+CiAKICAg
ICAgICAgW2Nocm9taXVtXSBBZGRpbmcgUHJpb3JpdGl6ZWRUZXh0dXJlIGFuZCByZXBsYWNpbmcg
Q29udGVudHNUZXh0dXJlTWFuYWdlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIGIvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCmluZGV4IDMxMzViNGU2ODAx
ZjFlMDk4Yzc2YmY0NzUyZTA1MjJkZmI4MGQ0YWIuLjBmZmUwYzQwNTJhNDY4ZTIzZjhhYTAwN2Iz
MjY2MDQ1M2IxOTA2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4LmgKQEAgLTE0MSwxMyArMTQxLDkgQEAg
cHVibGljOgogICAgIC8vIEZJWE1FOiB0aGVzZSBtYXAgZnVuY3Rpb25zIHNob3VsZCBub3QgZXhp
c3QsIHNob3VsZCBiZSB1c2luZyBDQ01hdGhVdGlsCiAgICAgLy8gaW5zdGVhZC4gRXZlbnR1YWxs
eSBDQ01hdGhVdGlsIGZ1bmN0aW9ucyBjb3VsZCBiZSBtZXJnZWQgaGVyZSwgYnV0IGl0cwogICAg
IC8vIG5vdCB5ZXQgdGhlIHJpZ2h0IHRpbWUgZm9yIHRoYXQuCi0gICAgV2ViQ29yZTo6RmxvYXRS
ZWN0IG1hcFJlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgY29uc3Q7Ci0gICAgV2ViQ29y
ZTo6SW50UmVjdCBtYXBSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBjb25zdDsKICAgICBX
ZWJDb3JlOjpGbG9hdFBvaW50M0QgbWFwUG9pbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludDNE
JikgY29uc3Q7CiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtYXBQb2ludChjb25zdCBXZWJDb3Jl
OjpGbG9hdFBvaW50JikgY29uc3Q7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgbWFwUG9pbnQoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdDsKLSAgICBXZWJDb3JlOjpGbG9hdFF1YWQgbWFw
UXVhZChjb25zdCBXZWJDb3JlOjpGbG9hdFF1YWQmKSBjb25zdDsKLSAgICBXZWJDb3JlOjpGbG9h
dFBvaW50IHByb2plY3RQb2ludChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgYm9vbCogY2xh
bXBlZCA9IDApIGNvbnN0OwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeC5jcHAKaW5kZXggZWVmZDE1NGU4YTkzNWZiZTNmMGE3MjA3YzRlNDAz
ZjZkYjc1ODBjMC4uY2IyNTlmMDUxZWY4ODU3OGZjNGNkNzZmMWI2YWFiN2U3NTE0ZTZjZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vc3VwcG9ydC9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKQEAgLTQyMiwxNiArNDIyLDYg
QEAgVHJhbnNmb3JtYXRpb25NYXRyaXggV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnRvV2ViQ29y
ZVRyYW5zZm9ybSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZTsKIH0KIAotRmxvYXRSZWN0
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptYXBSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLm1hcFJlY3QocmVjdCk7Ci19Ci0KLUludFJl
Y3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om1hcFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLm1hcFJlY3QocmVjdCk7Ci19Ci0KIEZsb2F0
UG9pbnQzRCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bWFwUG9pbnQoY29uc3QgRmxvYXRQb2lu
dDNEJiBwKSBjb25zdAogewogICAgIHJldHVybiBtX3ByaXZhdGUubWFwUG9pbnQocCk7CkBAIC00
NDcsMTQgKzQzNyw0IEBAIEludFBvaW50IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptYXBQb2lu
dChjb25zdCBJbnRQb2ludCYgcCkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlLm1hcFBvaW50
KHApOwogfQogCi1GbG9hdFF1YWQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om1hcFF1YWQoY29u
c3QgRmxvYXRRdWFkJiBxdWFkKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUubWFwUXVh
ZChxdWFkKTsKLX0KLQotRmxvYXRQb2ludCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cHJvamVj
dFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIHAsIGJvb2wqIGNsYW1wZWQpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fcHJpdmF0ZS5wcm9qZWN0UG9pbnQocCwgY2xhbXBlZCk7Ci19Ci0KIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXgg
NDZjOWIzNjIxNWE3MzU5MDQ4MjVmOWY2NDI0OGM4ZGZhMjE5ODQxNS4uN2M4MTgxZDMwMjUwZDY0
Zjk1ZDg0YmMxZjk0MmE5Y2E2YTg3Mzk4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwCkBAIC01ODcsNyArNTg3LDkgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OmRyYXdSZW5kZXJQYXNzUXVhZChjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCogcXVhZCkKICAg
ICBpZiAoZHJhd2luZ1N1cmZhY2UtPmhhc1ZhbGlkQmFja2dyb3VuZFRleHR1cmUoKSkKICAgICAg
ICAgY29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKGRyYXdpbmdTdXJmYWNlLT5iYWNrZ3JvdW5kVGV4
dHVyZSgpLT50ZXh0dXJlSWQoKSwgcXVhZC0+cXVhZFJlY3QoKS5zaXplKCksIHF1YWQtPmxheWVy
VHJhbnNmb3JtKCkpOwogCi0gICAgRmxvYXRRdWFkIGRldmljZVF1YWQgPSBjb250ZW50c0Rldmlj
ZVRyYW5zZm9ybS5tYXBRdWFkKHNoYXJlZEdlb21ldHJ5UXVhZCgpKTsKKyAgICBib29sIGNsaXBw
ZWQgPSBmYWxzZTsKKyAgICBGbG9hdFF1YWQgZGV2aWNlUXVhZCA9IENDTWF0aFV0aWw6Om1hcFF1
YWQoY29udGVudHNEZXZpY2VUcmFuc2Zvcm0sIHNoYXJlZEdlb21ldHJ5UXVhZCgpLCBjbGlwcGVk
KTsKKyAgICBBU1NFUlQoIWNsaXBwZWQpOwogICAgIENDTGF5ZXJRdWFkIGRldmljZUxheWVyQm91
bmRzID0gQ0NMYXllclF1YWQoRmxvYXRRdWFkKGRldmljZVF1YWQuYm91bmRpbmdCb3goKSkpOwog
ICAgIENDTGF5ZXJRdWFkIGRldmljZUxheWVyRWRnZXMgPSBDQ0xheWVyUXVhZChkZXZpY2VRdWFk
KTsKIApAQCAtNjYwLDggKzY2Miw5IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
UmVuZGVyUGFzc1F1YWQoY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIHF1YWQpCiAgICAgICAg
IEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTNmdihzaGFkZXJFZGdlTG9jYXRpb24s
IDgsIGVkZ2UpKTsKICAgICB9CiAKLSAgICAvLyBNYXAgZGV2aWNlIHNwYWNlIHF1YWQgdG8gc3Vy
ZmFjZSBzcGFjZS4KLSAgICBGbG9hdFF1YWQgc3VyZmFjZVF1YWQgPSBjb250ZW50c0RldmljZVRy
YW5zZm9ybS5pbnZlcnNlKCkubWFwUXVhZChkZXZpY2VMYXllckVkZ2VzLmZsb2F0UXVhZCgpKTsK
KyAgICAvLyBNYXAgZGV2aWNlIHNwYWNlIHF1YWQgdG8gc3VyZmFjZSBzcGFjZS4gY29udGVudHNE
ZXZpY2VUcmFuc2Zvcm0gaGFzIG5vIHBlcnNwZWN0aXZlIHNpbmNlIGl0IHdhcyBnZW5lcmF0ZWQg
d2l0aCB0bzJkVHJhbnNmb3JtKCkgc28gd2UgZG9uJ3QgbmVlZCB0byBwcm9qZWN0LgorICAgIEZs
b2F0UXVhZCBzdXJmYWNlUXVhZCA9IENDTWF0aFV0aWw6Om1hcFF1YWQoY29udGVudHNEZXZpY2VU
cmFuc2Zvcm0uaW52ZXJzZSgpLCBkZXZpY2VMYXllckVkZ2VzLmZsb2F0UXVhZCgpLCBjbGlwcGVk
KTsKKyAgICBBU1NFUlQoIWNsaXBwZWQpOwogCiAgICAgZHJhd1RleHR1cmVkUXVhZChxdWFkLT5s
YXllclRyYW5zZm9ybSgpLCBxdWFkLT5xdWFkUmVjdCgpLndpZHRoKCksIHF1YWQtPnF1YWRSZWN0
KCkuaGVpZ2h0KCksIHF1YWQtPm9wYWNpdHkoKSwgc3VyZmFjZVF1YWQsCiAgICAgICAgICAgICAg
ICAgICAgICBzaGFkZXJNYXRyaXhMb2NhdGlvbiwgc2hhZGVyQWxwaGFMb2NhdGlvbiwgc2hhZGVy
UXVhZExvY2F0aW9uKTsKQEAgLTc2MSw2ICs3NjQsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6ZHJhd1RpbGVRdWFkKGNvbnN0IENDVGlsZURyYXdRdWFkKiBxdWFkKQogCiAgICAgYm9v
bCBjbGlwcGVkID0gZmFsc2U7CiAgICAgRmxvYXRRdWFkIGRldmljZUxheWVyUXVhZCA9IENDTWF0
aFV0aWw6Om1hcFF1YWQoZGV2aWNlVHJhbnNmb3JtLCBGbG9hdFF1YWQocXVhZC0+bGF5ZXJSZWN0
KCkpLCBjbGlwcGVkKTsKKyAgICBBU1NFUlQoIWNsaXBwZWQpOwogCiAgICAgVGlsZVByb2dyYW1V
bmlmb3JtcyB1bmlmb3JtczsKICAgICAvLyBGb3Igbm93LCB3ZSBzaW1wbHkgc2tpcCBhbnRpLWFs
aWFzaW5nIHdpdGggdGhlIHF1YWQgaXMgY2xpcHBlZC4gVGhpcyBvbmx5IGhhcHBlbnMKQEAgLTg0
NSw3ICs4NDksOCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RpbGVRdWFkKGNv
bnN0IENDVGlsZURyYXdRdWFkKiBxdWFkKQogCiAgICAgICAgIC8vIE1hcCBxdWFkIHRvIGxheWVy
IHNwYWNlLgogICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbnZlcnNlRGV2aWNlVHJh
bnNmb3JtID0gZGV2aWNlVHJhbnNmb3JtLmludmVyc2UoKTsKLSAgICAgICAgbG9jYWxRdWFkID0g
aW52ZXJzZURldmljZVRyYW5zZm9ybS5tYXBRdWFkKGRldmljZVF1YWQuZmxvYXRRdWFkKCkpOwor
ICAgICAgICBsb2NhbFF1YWQgPSBDQ01hdGhVdGlsOjptYXBRdWFkKGludmVyc2VEZXZpY2VUcmFu
c2Zvcm0sIGRldmljZVF1YWQuZmxvYXRRdWFkKCksIGNsaXBwZWQpOworICAgICAgICBBU1NFUlQo
IWNsaXBwZWQpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIE1vdmUgZnJhZ21lbnQgc2hhZGVy
IHRyYW5zZm9ybSB0byB2ZXJ0ZXggc2hhZGVyLiBXZSBjYW4gZG8gdGhpcyB3aGlsZQogICAgICAg
ICAvLyBzdGlsbCBwcm9kdWNpbmcgY29ycmVjdCByZXN1bHRzIGFzIGZyYWdtZW50VGV4VHJhbnNm
b3JtTG9jYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwCmluZGV4IDUx
NzYxNDUzZDgzM2FmNjU4MTI2MmZmYjZiYTMzYWVmODc3NjEwNTQuLmZiMmRkOGJjNjc2ZTM2YjZi
ZWFlZWM0OWU4MTNkODhmNTJhZmFjM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9t
aXVtLmNwcApAQCAtNTgsOSArNTgsOSBAQCBGbG9hdFJlY3QgUmVuZGVyU3VyZmFjZUNocm9taXVt
OjpkcmF3YWJsZUNvbnRlbnRSZWN0KCkgY29uc3QKIHsKICAgICBGbG9hdFJlY3QgbG9jYWxDb250
ZW50UmVjdCgtMC41ICogbV9jb250ZW50UmVjdC53aWR0aCgpLCAtMC41ICogbV9jb250ZW50UmVj
dC5oZWlnaHQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2NvbnRlbnRSZWN0
LndpZHRoKCksIG1fY29udGVudFJlY3QuaGVpZ2h0KCkpOwotICAgIEZsb2F0UmVjdCBkcmF3YWJs
ZUNvbnRlbnRSZWN0ID0gbV9kcmF3VHJhbnNmb3JtLm1hcFJlY3QobG9jYWxDb250ZW50UmVjdCk7
CisgICAgRmxvYXRSZWN0IGRyYXdhYmxlQ29udGVudFJlY3QgPSBDQ01hdGhVdGlsOjptYXBDbGlw
cGVkUmVjdChtX2RyYXdUcmFuc2Zvcm0sIGxvY2FsQ29udGVudFJlY3QpOwogICAgIGlmIChtX293
bmluZ0xheWVyLT5yZXBsaWNhTGF5ZXIoKSkKLSAgICAgICAgZHJhd2FibGVDb250ZW50UmVjdC51
bml0ZShtX3JlcGxpY2FEcmF3VHJhbnNmb3JtLm1hcFJlY3QobG9jYWxDb250ZW50UmVjdCkpOwor
ICAgICAgICBkcmF3YWJsZUNvbnRlbnRSZWN0LnVuaXRlKENDTWF0aFV0aWw6Om1hcENsaXBwZWRS
ZWN0KG1fcmVwbGljYURyYXdUcmFuc2Zvcm0sIGxvY2FsQ29udGVudFJlY3QpKTsKIAogICAgIHJl
dHVybiBkcmF3YWJsZUNvbnRlbnRSZWN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCmluZGV4
IGMzODBiZDQ1YmYzMTU1ZDU1N2ZmZGM3ZTY2OWQ0YjJjOTJjOGM2NjMuLjgzNjY2YjA0NjRmNjc2
NGY2ODhjYTZmZDVjMmJmYmYyNzcxYWY0NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKQEAg
LTIzMSw3ICsyMzEsNyBAQCBjb25zdCBJbnRSZWN0IENDTGF5ZXJJbXBsOjpnZXREcmF3UmVjdCgp
IGNvbnN0CiAgICAgLy8gRm9ybSB0aGUgbWF0cml4IHVzZWQgYnkgdGhlIHNoYWRlciB0byBtYXAg
dGhlIGNvcm5lcnMgb2YgdGhlIGxheWVyJ3MKICAgICAvLyBib3VuZHMgaW50byB0aGUgdmlldyBz
cGFjZS4KICAgICBGbG9hdFJlY3QgbGF5ZXJSZWN0KC0wLjUgKiBib3VuZHMoKS53aWR0aCgpLCAt
MC41ICogYm91bmRzKCkuaGVpZ2h0KCksIGJvdW5kcygpLndpZHRoKCksIGJvdW5kcygpLmhlaWdo
dCgpKTsKLSAgICBJbnRSZWN0IG1hcHBlZFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGRyYXdUcmFu
c2Zvcm0oKS5tYXBSZWN0KGxheWVyUmVjdCkpOworICAgIEludFJlY3QgbWFwcGVkUmVjdCA9IGVu
Y2xvc2luZ0ludFJlY3QoQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3QoZHJhd1RyYW5zZm9ybSgp
LCBsYXllclJlY3QpKTsKICAgICByZXR1cm4gbWFwcGVkUmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYXRoVXRpbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ01hdGhV
dGlsLmNwcAppbmRleCA4NDcxYjNlNmExMDEzNjc4YjAzMWFhMGY1NzU5NWU2ODlmZjJjMDYzLi4w
MDdlNzRkNDliMzJjYzBmYWVkMDZhMTEyYjM4MGQxYzlmM2QzY2UwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ01hdGhVdGlsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ01hdGhV
dGlsLmNwcApAQCAtMjc4LDEzICsyNzgsMTMgQEAgRmxvYXRRdWFkIENDTWF0aFV0aWw6OnByb2pl
Y3RRdWFkKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnMKIHsK
ICAgICBGbG9hdFF1YWQgcHJvamVjdGVkUXVhZDsKICAgICBib29sIGNsaXBwZWRQb2ludDsKLSAg
ICBwcm9qZWN0ZWRRdWFkLnNldFAxKHRyYW5zZm9ybS5wcm9qZWN0UG9pbnQocS5wMSgpLCAmY2xp
cHBlZFBvaW50KSk7CisgICAgcHJvamVjdGVkUXVhZC5zZXRQMShwcm9qZWN0UG9pbnQodHJhbnNm
b3JtLCBxLnAxKCksIGNsaXBwZWRQb2ludCkpOwogICAgIGNsaXBwZWQgPSBjbGlwcGVkUG9pbnQ7
Ci0gICAgcHJvamVjdGVkUXVhZC5zZXRQMih0cmFuc2Zvcm0ucHJvamVjdFBvaW50KHEucDIoKSwg
JmNsaXBwZWRQb2ludCkpOworICAgIHByb2plY3RlZFF1YWQuc2V0UDIocHJvamVjdFBvaW50KHRy
YW5zZm9ybSwgcS5wMigpLCBjbGlwcGVkUG9pbnQpKTsKICAgICBjbGlwcGVkIHw9IGNsaXBwZWRQ
b2ludDsKLSAgICBwcm9qZWN0ZWRRdWFkLnNldFAzKHRyYW5zZm9ybS5wcm9qZWN0UG9pbnQocS5w
MygpLCAmY2xpcHBlZFBvaW50KSk7CisgICAgcHJvamVjdGVkUXVhZC5zZXRQMyhwcm9qZWN0UG9p
bnQodHJhbnNmb3JtLCBxLnAzKCksIGNsaXBwZWRQb2ludCkpOwogICAgIGNsaXBwZWQgfD0gY2xp
cHBlZFBvaW50OwotICAgIHByb2plY3RlZFF1YWQuc2V0UDQodHJhbnNmb3JtLnByb2plY3RQb2lu
dChxLnA0KCksICZjbGlwcGVkUG9pbnQpKTsKKyAgICBwcm9qZWN0ZWRRdWFkLnNldFA0KHByb2pl
Y3RQb2ludCh0cmFuc2Zvcm0sIHEucDQoKSwgY2xpcHBlZFBvaW50KSk7CiAgICAgY2xpcHBlZCB8
PSBjbGlwcGVkUG9pbnQ7CiAKICAgICByZXR1cm4gcHJvamVjdGVkUXVhZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9u
VHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCmluZGV4IDkxN2RjODdkMGZmNWMzNWIxNjZlNGFmNDAx
OGVhZWJjYTNkNjUyZWEuLmI0OWZmOTA4MzcyYjE1ZjQxMjE1YzQyZWJjYjZmM2MwM2E2ZGE1NjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcApAQCAtMTUxLDkgKzE1MSw5
IEBAIHN0YXRpYyBpbmxpbmUgUmVnaW9uIHRyYW5zZm9ybVN1cmZhY2VPcGFxdWVSZWdpb24oY29u
c3QgUmVuZGVyU3VyZmFjZVR5cGUqIHN1cmZhCiAgICAgUmVnaW9uIHRyYW5zZm9ybWVkUmVnaW9u
OwogCiAgICAgVmVjdG9yPEludFJlY3Q+IHJlY3RzID0gcmVnaW9uLnJlY3RzKCk7Ci0gICAgLy8g
Q2xpcHBpbmcgaGFzIGJlZW4gdmVyaWZpZWQgYWJvdmUsIHNvIG1hcFJlY3Qgd2lsbCBnaXZlIGNv
cnJlY3QgcmVzdWx0cy4KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlY3RzLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIEludFJlY3QgdHJhbnNmb3JtZWRSZWN0ID0gZW5jbG9zZWRJbnRSZWN0
KHRyYW5zZm9ybS5tYXBSZWN0KEZsb2F0UmVjdChyZWN0c1tpXSkpKTsKKyAgICAgICAgLy8gV2Un
dmUgYWxyZWFkeSBjaGVja2VkIGZvciBjbGlwcGluZyBpbiB0aGUgbWFwUXVhZCBjYWxsIGFib3Zl
LCB0aGVzZSBjYWxscyBzaG91bGQgbm90IGNsaXAgYW55dGhpbmcgZnVydGhlci4KKyAgICAgICAg
SW50UmVjdCB0cmFuc2Zvcm1lZFJlY3QgPSBlbmNsb3NlZEludFJlY3QoQ0NNYXRoVXRpbDo6bWFw
Q2xpcHBlZFJlY3QodHJhbnNmb3JtLCBGbG9hdFJlY3QocmVjdHNbaV0pKSk7CiAgICAgICAgIGlm
ICghc3VyZmFjZS0+Y2xpcFJlY3QoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICB0cmFuc2Zvcm1l
ZFJlY3QuaW50ZXJzZWN0KHN1cmZhY2UtPmNsaXBSZWN0KCkpOwogICAgICAgICB0cmFuc2Zvcm1l
ZFJlZ2lvbi51bml0ZSh0cmFuc2Zvcm1lZFJlY3QpOwpAQCAtMzE5LDkgKzMxOSw5IEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCBhZGRPY2NsdXNpb25CZWhpbmRMYXllcihSZWdpb24mIHJlZ2lvbiwgY29u
c3QgTGF5ZXJUeXBlKiBsYXllCiAgICAgICAgIHJldHVybjsKIAogICAgIFZlY3RvcjxJbnRSZWN0
PiBjb250ZW50UmVjdHMgPSBvcGFxdWVDb250ZW50cy5yZWN0cygpOwotICAgIC8vIFdlIHZlcmlm
eSB0aGF0IHRoZSBwb3NzaWJsZSBib3VuZHMgb2YgdGhpcyByZWdpb24gYXJlIG5vdCBjbGlwcGVk
IGFib3ZlLCBzbyB3ZSBjYW4gdXNlIG1hcFJlY3QoKSBzYWZlbHkgaGVyZS4KICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGNvbnRlbnRSZWN0cy5zaXplKCk7ICsraSkgewotICAgICAgICBJbnRS
ZWN0IHRyYW5zZm9ybWVkUmVjdCA9IGVuY2xvc2VkSW50UmVjdCh0cmFuc2Zvcm0ubWFwUmVjdChG
bG9hdFJlY3QoY29udGVudFJlY3RzW2ldKSkpOworICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IGNo
ZWNrZWQgZm9yIGNsaXBwaW5nIGluIHRoZSBtYXBRdWFkIGNhbGwgYWJvdmUsIHRoZXNlIGNhbGxz
IHNob3VsZCBub3QgY2xpcCBhbnl0aGluZyBmdXJ0aGVyLgorICAgICAgICBJbnRSZWN0IHRyYW5z
Zm9ybWVkUmVjdCA9IGVuY2xvc2VkSW50UmVjdChDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdCh0
cmFuc2Zvcm0sIEZsb2F0UmVjdChjb250ZW50UmVjdHNbaV0pKSk7CiAgICAgICAgIHRyYW5zZm9y
bWVkUmVjdC5pbnRlcnNlY3Qoc2Npc3NvclJlY3QpOwogICAgICAgICBpZiAodHJhbnNmb3JtZWRS
ZWN0LndpZHRoKCkgPj0gbWluaW11bVRyYWNraW5nU2l6ZS53aWR0aCgpIHx8IHRyYW5zZm9ybWVk
UmVjdC5oZWlnaHQoKSA+PSBtaW5pbXVtVHJhY2tpbmdTaXplLmhlaWdodCgpKSB7CiAgICAgICAg
ICAgICBpZiAob2NjbHVkaW5nU2NyZWVuU3BhY2VSZWN0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRyYXdNZXRyaWNzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRy
YXdNZXRyaWNzLmNwcAppbmRleCAwY2MyZmE1ZWM2MTZhMDA0Nzc4MjYxNTg5NjBiZDAxNzg4N2Uz
ZGQ4Li5jMGYwYmQ3N2QzM2U1YWYyYjg3NzQ4MzU1NDBlNjQzMWUwZjQ2MDZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ092ZXJkcmF3
TWV0cmljcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NPdmVyZHJhd01ldHJpY3MuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
VHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUg
ImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKKyNpbmNsdWRlICJjYy9DQ01hdGhVdGlsLmgiCiAj
aW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9y
bWF0aW9uTWF0cml4Lmg+CiAKQEAgLTU3LDEzICs1OCwyNSBAQCBzdGF0aWMgaW5saW5lIGZsb2F0
IHdlZGdlUHJvZHVjdChjb25zdCBGbG9hdFBvaW50JiBwMSwgY29uc3QgRmxvYXRQb2ludCYgcDIp
CiAgICAgcmV0dXJuIHAxLngoKSAqIHAyLnkoKSAtIHAxLnkoKSAqIHAyLngoKTsKIH0KIAotLy8g
Q29tcHV0ZXMgYXJlYSBvZiBxdWFkcyB0aGF0IGFyZSBwb3NzaWJseSBub24tcmVjdGFuZ3VsYXIu
IENhbiBiZSBlYXNpbHkgZXh0ZW5kZWQgdG8gcG9seWdvbnMuCi1zdGF0aWMgaW5saW5lIGZsb2F0
IHF1YWRBcmVhKGNvbnN0IEZsb2F0UXVhZCYgcXVhZCkKKy8vIENhbGN1bGF0ZXMgYXJlYSBvZiBh
biBhcmJpdHJhcnkgY29udmV4IHBvbHlnb24gd2l0aCB1cCB0byA4IHBvaW50cy4KK3N0YXRpYyBp
bmxpbmUgZmxvYXQgcG9seWdvbkFyZWEoY29uc3QgRmxvYXRQb2ludCBwb2ludHNbOF0sIGludCBu
dW1Qb2ludHMpCiB7Ci0gICAgcmV0dXJuIGZhYnMoMC41ICogKHdlZGdlUHJvZHVjdChxdWFkLnAx
KCksIHF1YWQucDIoKSkgKwotICAgICAgICAgICAgICAgICAgICAgICB3ZWRnZVByb2R1Y3QocXVh
ZC5wMigpLCBxdWFkLnAzKCkpICsKLSAgICAgICAgICAgICAgICAgICAgICAgd2VkZ2VQcm9kdWN0
KHF1YWQucDMoKSwgcXVhZC5wNCgpKSArCi0gICAgICAgICAgICAgICAgICAgICAgIHdlZGdlUHJv
ZHVjdChxdWFkLnA0KCksIHF1YWQucDEoKSkpKTsKKyAgICBpZiAobnVtUG9pbnRzIDwgMykKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBmbG9hdCBhcmVhID0gMDsKKyAgICBmb3IgKGludCBpID0g
MDsgaSA8IG51bVBvaW50czsgKytpKQorICAgICAgICBhcmVhICs9IHdlZGdlUHJvZHVjdChwb2lu
dHNbaV0sIHBvaW50c1soaSsxKSVudW1Qb2ludHNdKTsKKyAgICByZXR1cm4gZmFicygwLjVmICog
YXJlYSk7Cit9CisKKy8vIFRha2VzIGEgZ2l2ZW4gcXVhZCwgbWFwcyBpdCBieSB0aGUgZ2l2ZW4g
dHJhbnNmb3JtYXRpb24sIGFuZCBnaXZlcyB0aGUgYXJlYSBvZiB0aGUgcmVzdWx0aW5nIHBvbHln
b24uCitzdGF0aWMgaW5saW5lIGZsb2F0IGFyZWFPZk1hcHBlZFF1YWQoY29uc3QgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRRdWFkJiBxdWFkKQoreworICAg
IEZsb2F0UG9pbnQgY2xpcHBlZFF1YWRbOF07CisgICAgaW50IG51bVZlcnRpY2VzSW5DbGlwcGVk
UXVhZCA9IDA7CisgICAgQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFF1YWQodHJhbnNmb3JtLCBxdWFk
LCBjbGlwcGVkUXVhZCwgbnVtVmVydGljZXNJbkNsaXBwZWRRdWFkKTsKKyAgICByZXR1cm4gcG9s
eWdvbkFyZWEoY2xpcHBlZFF1YWQsIG51bVZlcnRpY2VzSW5DbGlwcGVkUXVhZCk7CiB9CiAKIHZv
aWQgQ0NPdmVyZHJhd01ldHJpY3M6OmRpZFBhaW50KGNvbnN0IEludFJlY3QmIHBhaW50ZWRSZWN0
KQpAQCAtODUsOCArOTgsOCBAQCB2b2lkIENDT3ZlcmRyYXdNZXRyaWNzOjpkaWRVcGxvYWQoY29u
c3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvVGFyZwogICAgIGlmICghbV9y
ZWNvcmRNZXRyaWNzRm9yRnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZsb2F0IHVwbG9h
ZEFyZWEgPSBxdWFkQXJlYSh0cmFuc2Zvcm1Ub1RhcmdldC5tYXBRdWFkKEZsb2F0UXVhZCh1cGxv
YWRSZWN0KSkpOwotICAgIGZsb2F0IHVwbG9hZE9wYXF1ZUFyZWEgPSBxdWFkQXJlYSh0cmFuc2Zv
cm1Ub1RhcmdldC5tYXBRdWFkKEZsb2F0UXVhZChpbnRlcnNlY3Rpb24ob3BhcXVlUmVjdCwgdXBs
b2FkUmVjdCkpKSk7CisgICAgZmxvYXQgdXBsb2FkQXJlYSA9IGFyZWFPZk1hcHBlZFF1YWQodHJh
bnNmb3JtVG9UYXJnZXQsIEZsb2F0UXVhZCh1cGxvYWRSZWN0KSk7CisgICAgZmxvYXQgdXBsb2Fk
T3BhcXVlQXJlYSA9IGFyZWFPZk1hcHBlZFF1YWQodHJhbnNmb3JtVG9UYXJnZXQsIEZsb2F0UXVh
ZChpbnRlcnNlY3Rpb24ob3BhcXVlUmVjdCwgdXBsb2FkUmVjdCkpKTsKIAogICAgIG1fcGl4ZWxz
VXBsb2FkZWRPcGFxdWUgKz0gdXBsb2FkT3BhcXVlQXJlYTsKICAgICBtX3BpeGVsc1VwbG9hZGVk
VHJhbnNsdWNlbnQgKz0gdXBsb2FkQXJlYSAtIHVwbG9hZE9wYXF1ZUFyZWE7CkBAIC05Nyw4ICsx
MTAsOCBAQCB2b2lkIENDT3ZlcmRyYXdNZXRyaWNzOjpkaWRDdWxsRm9yRHJhd2luZyhjb25zdCBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmbwogICAgIGlmICghbV9yZWNvcmRNZXRyaWNz
Rm9yRnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZsb2F0IGJlZm9yZUN1bGxBcmVhID0g
cXVhZEFyZWEodHJhbnNmb3JtVG9UYXJnZXQubWFwUXVhZChGbG9hdFF1YWQoYmVmb3JlQ3VsbFJl
Y3QpKSk7Ci0gICAgZmxvYXQgYWZ0ZXJDdWxsQXJlYSA9IHF1YWRBcmVhKHRyYW5zZm9ybVRvVGFy
Z2V0Lm1hcFF1YWQoRmxvYXRRdWFkKGFmdGVyQ3VsbFJlY3QpKSk7CisgICAgZmxvYXQgYmVmb3Jl
Q3VsbEFyZWEgPSBhcmVhT2ZNYXBwZWRRdWFkKHRyYW5zZm9ybVRvVGFyZ2V0LCBGbG9hdFF1YWQo
YmVmb3JlQ3VsbFJlY3QpKTsKKyAgICBmbG9hdCBhZnRlckN1bGxBcmVhID0gYXJlYU9mTWFwcGVk
UXVhZCh0cmFuc2Zvcm1Ub1RhcmdldCwgRmxvYXRRdWFkKGFmdGVyQ3VsbFJlY3QpKTsKIAogICAg
IG1fcGl4ZWxzQ3VsbGVkRm9yRHJhd2luZyArPSBiZWZvcmVDdWxsQXJlYSAtIGFmdGVyQ3VsbEFy
ZWE7CiB9CkBAIC0xMDgsOCArMTIxLDggQEAgdm9pZCBDQ092ZXJkcmF3TWV0cmljczo6ZGlkRHJh
dyhjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9UYXJnZXQKICAgICBp
ZiAoIW1fcmVjb3JkTWV0cmljc0ZvckZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBmbG9h
dCBhZnRlckN1bGxBcmVhID0gcXVhZEFyZWEodHJhbnNmb3JtVG9UYXJnZXQubWFwUXVhZChGbG9h
dFF1YWQoYWZ0ZXJDdWxsUmVjdCkpKTsKLSAgICBmbG9hdCBhZnRlckN1bGxPcGFxdWVBcmVhID0g
cXVhZEFyZWEodHJhbnNmb3JtVG9UYXJnZXQubWFwUXVhZChGbG9hdFF1YWQoaW50ZXJzZWN0aW9u
KG9wYXF1ZVJlY3QsIGFmdGVyQ3VsbFJlY3QpKSkpOworICAgIGZsb2F0IGFmdGVyQ3VsbEFyZWEg
PSBhcmVhT2ZNYXBwZWRRdWFkKHRyYW5zZm9ybVRvVGFyZ2V0LCBGbG9hdFF1YWQoYWZ0ZXJDdWxs
UmVjdCkpOworICAgIGZsb2F0IGFmdGVyQ3VsbE9wYXF1ZUFyZWEgPSBhcmVhT2ZNYXBwZWRRdWFk
KHRyYW5zZm9ybVRvVGFyZ2V0LCBGbG9hdFF1YWQoaW50ZXJzZWN0aW9uKG9wYXF1ZVJlY3QsIGFm
dGVyQ3VsbFJlY3QpKSk7CiAKICAgICBtX3BpeGVsc0RyYXduT3BhcXVlICs9IGFmdGVyQ3VsbE9w
YXF1ZUFyZWE7CiAgICAgbV9waXhlbHNEcmF3blRyYW5zbHVjZW50ICs9IGFmdGVyQ3VsbEFyZWEg
LSBhZnRlckN1bGxPcGFxdWVBcmVhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKaW5kZXggYjFk
NTNjNjNkMDhmYjJhODg0M2I0MjFjNDk4MTg4MDk0M2NlN2U4Ny4uZjdhYjE3MTI3YWZkYmEzZmU3
Y2NjYWZkNzA2MjlkNDMwNTZkZGQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzLmgiCiAKICNpbmNsdWRlICJj
Yy9DQ0xheWVySW1wbC5oIgorI2luY2x1ZGUgImNjL0NDTWF0aFV0aWwuaCIKICNpbmNsdWRlICJj
Yy9DQ1F1YWRDdWxsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oIgogI2lu
Y2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgiCkBAIC05NSw3ICs5Niw3IEBAIHZvaWQg
Q0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc1RvRmlsbFNjcmVlbihDQ0xheWVySW1wbCogcm9vdExh
eWVyLCBTa0NvbG9yIHNjcmVlCiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3Jt
VG9MYXllclNwYWNlID0gcm9vdExheWVyLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLmludmVyc2Uo
KTsKICAgICBWZWN0b3I8SW50UmVjdD4gZmlsbFJlY3RzID0gZmlsbFJlZ2lvbi5yZWN0cygpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsbFJlY3RzLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gdHJhbnNmb3JtVG9MYXllclNwYWNlLm1hcFJlY3QoZmls
bFJlY3RzW2ldKTsKKyAgICAgICAgSW50UmVjdCBsYXllclJlY3QgPSBDQ01hdGhVdGlsOjptYXBD
bGlwcGVkUmVjdCh0cmFuc2Zvcm1Ub0xheWVyU3BhY2UsIGZpbGxSZWN0c1tpXSk7CiAgICAgICAg
IG1fcXVhZExpc3QuYXBwZW5kKENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVh
ZFN0YXRlLmdldCgpLCBsYXllclJlY3QsIHNjcmVlbkJhY2tncm91bmRDb2xvcikpOwogICAgIH0K
ICAgICBtX3NoYXJlZFF1YWRTdGF0ZUxpc3QuYXBwZW5kKHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNl
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKaW5kZXggNmFjMDk0NmFhNjg2N2Fl
N2I3NzVmMGQyOWNiYjhlZGIwZDcxZDY4MS4uZDA5NDAxYzRmMjNlMDllNTEyZTYyNDk5ODRiZTRj
ZGU4YTk0YTJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCkBAIC03OCw5ICs3
OCw5IEBAIEZsb2F0UmVjdCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdhYmxlQ29udGVudFJlY3QoKSBj
b25zdAogewogICAgIEZsb2F0UmVjdCBsb2NhbENvbnRlbnRSZWN0KC0wLjUgKiBtX2NvbnRlbnRS
ZWN0LndpZHRoKCksIC0wLjUgKiBtX2NvbnRlbnRSZWN0LmhlaWdodCgpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fY29udGVudFJlY3Qud2lkdGgoKSwgbV9jb250ZW50UmVjdC5o
ZWlnaHQoKSk7Ci0gICAgRmxvYXRSZWN0IGRyYXdhYmxlQ29udGVudFJlY3QgPSBtX2RyYXdUcmFu
c2Zvcm0ubWFwUmVjdChsb2NhbENvbnRlbnRSZWN0KTsKKyAgICBGbG9hdFJlY3QgZHJhd2FibGVD
b250ZW50UmVjdCA9IENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KG1fZHJhd1RyYW5zZm9ybSwg
bG9jYWxDb250ZW50UmVjdCk7CiAgICAgaWYgKGhhc1JlcGxpY2EoKSkKLSAgICAgICAgZHJhd2Fi
bGVDb250ZW50UmVjdC51bml0ZShtX3JlcGxpY2FEcmF3VHJhbnNmb3JtLm1hcFJlY3QobG9jYWxD
b250ZW50UmVjdCkpOworICAgICAgICBkcmF3YWJsZUNvbnRlbnRSZWN0LnVuaXRlKENDTWF0aFV0
aWw6Om1hcENsaXBwZWRSZWN0KG1fcmVwbGljYURyYXdUcmFuc2Zvcm0sIGxvY2FsQ29udGVudFJl
Y3QpKTsKIAogICAgIHJldHVybiBkcmF3YWJsZUNvbnRlbnRSZWN0OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFk
U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaGFyZWRRdWFkU3RhdGUuY3BwCmluZGV4IDUzNmIzOTg2N2Q1MDIyMDViMTIyNzk3ZDBiMTM1
YmFhNjNlYzg0OTQuLjVlMDY4MWZmNWZhZmQyM2M1ODZjY2E3MWY5ZTE0NzA1NjgyMTcxNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2hhcmVkUXVhZFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5jcHAKQEAgLTI3LDYgKzI3LDggQEAKIAog
I2luY2x1ZGUgImNjL0NDU2hhcmVkUXVhZFN0YXRlLmgiCiAKKyNpbmNsdWRlICJjYy9DQ01hdGhV
dGlsLmgiCisKIHVzaW5nIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTUwLDggKzUyLDkgQEAgYm9vbCBDQ1NoYXJlZFF1YWRTdGF0ZTo6
aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpIGNvbnN0CiB7CiAgICAgLy8gTm90ZTogdGhpcyBk
b2Vzbid0IGNvbnNpZGVyIHdpbmRvdyBvciBwcm9qZWN0aW9uIG1hdHJpY2VzLgogICAgIC8vIEFz
c3VtZSB0aGF0IHRoZXkncmUgb3J0aG9ub3JtYWwgYW5kIGhhdmUgaW50ZWdlciBzY2FsZXMgYW5k
IHRyYW5zbGF0aW9ucy4KLSAgICBGbG9hdFF1YWQgcXVhZCA9IHF1YWRUcmFuc2Zvcm0oKS5tYXBR
dWFkKEZsb2F0UXVhZChsYXllclJlY3QoKSkpOwotICAgIHJldHVybiBxdWFkLmlzUmVjdGlsaW5l
YXIoKSAmJiBxdWFkLmJvdW5kaW5nQm94KCkuaXNFeHByZXNzaWJsZUFzSW50UmVjdCgpOworICAg
IGJvb2wgY2xpcHBlZCA9IGZhbHNlOworICAgIEZsb2F0UXVhZCBxdWFkID0gQ0NNYXRoVXRpbDo6
bWFwUXVhZChxdWFkVHJhbnNmb3JtKCksIEZsb2F0UXVhZChsYXllclJlY3QoKSksIGNsaXBwZWQp
OworICAgIHJldHVybiAhY2xpcHBlZCAmJiBxdWFkLmlzUmVjdGlsaW5lYXIoKSAmJiBxdWFkLmJv
dW5kaW5nQm94KCkuaXNFeHByZXNzaWJsZUFzSW50UmVjdCgpOwogfQogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150234</attachid>
            <date>2012-06-29 12:25:54 -0700</date>
            <delta_ts>2012-06-29 12:33:04 -0700</delta_ts>
            <desc>add comment in CCRenderPass::appendQuadsToFillScreen</desc>
            <filename>bug-90230-20120629122554.patch</filename>
            <type>text/plain</type>
            <size>21203</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxNTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA4MmU5ZDRiOGI5MTlm
YWYyM2JlOWE2MWExOTAxZWNlYWJlN2QzZDk0Li4zZDhkOWQxMjA2MmU4MmUxMzFjY2EzNDVmNzEw
N2I3ZGI0NjUzNTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNi0yOCAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gUmVtb3ZlIG1hcFJlY3QgYW5kIG1hcFF1YWQgZnJvbSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAyMzAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVz
IGNsaXBwaW5nLXVuYXdhcmUgbWFwUmVjdCwgbWFwUXVhZCBhbmQgcHJvamVjdFBvaW50IGZ1bmN0
aW9ucyBmcm9tIHRoZSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbnRlcmZhY2UuCisKKyAgICAg
ICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaDoKKyAgICAgICAg
KFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KToKKwogMjAxMi0wNi0yOCAgQWRyaWVubmUgV2Fsa2Vy
ICA8ZW5uZUBnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gU3BsaXQgV2ViU2Nyb2xs
YmFyIGludG8gV2ViUGx1Z2luU2Nyb2xsYmFyIGFuZCBXZWJTY3JvbGxiYXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBkNmRkYmVlMGYyNjFmMGFjYWFjZDk5ZjQ0OWY5ODQ3MmUwYjZmYzRhLi40YTdlZWYzOWQwNDFl
OGI1OTU4NjViNzE0ODJhYWNkNjQ5MjgyZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAK
KzIwMTItMDYtMjggIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbY2hyb21pdW1dIFJlbW92ZSBtYXBSZWN0IGFuZCBtYXBRdWFkIGZyb20gV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkwMjMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVwbGFjZXMgY2FsbHMgdG8gV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om1hcFJlY3Qv
bWFwUXVhZCB3aXRoIGNsaXBwaW5nLWF3YXJlIGNhbGxzIHRvIENDTWF0aFV0aWxzLiBJbiBtb3N0
CisgICAgICAgIGNhc2VzLCB3ZSBkbyBub3QgZXhwZWN0IGNsaXBwaW5nIHRvIGhhcHBlbi4gRm9y
IG90aGVycyAoc3VjaCBhcyBhcmVhIGNhbGN1bGF0aW9ucyBpbiBDQ092ZXJkcmF3TWV0cmljcykg
d2UgY2FuCisgICAgICAgIGhhbmRsZSBhIGNsaXBwZWQgcXVhZCBlYXNpbHkuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVu
ZGVyUGFzc1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpk
cmF3VGlsZVF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRl
clN1cmZhY2VDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdXJmYWNlQ2hy
b21pdW06OmRyYXdhYmxlQ29udGVudFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJ
bXBsOjpnZXREcmF3UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybVN1
cmZhY2VPcGFxdWVSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6YWRkT2NjbHVzaW9uQmVoaW5k
TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRy
YXdNZXRyaWNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cG9s
eWdvbkFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6YXJlYU9mTWFwcGVkUXVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ092ZXJkcmF3TWV0cmljczo6ZGlkVXBsb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDT3ZlcmRyYXdNZXRyaWNzOjpkaWRDdWxsRm9yRHJhd2luZyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ092ZXJkcmF3TWV0cmljczo6ZGlkRHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
UmVuZGVyUGFzczo6YXBwZW5kUXVhZHNUb0ZpbGxTY3JlZW4pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ1JlbmRlclN1cmZhY2U6OmRyYXdhYmxlQ29udGVudFJlY3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNDU2hhcmVkUXVhZFN0YXRlOjppc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0
KToKKwogMjAxMi0wNi0yOSAgRXJpYyBQZW5uZXIgIDxlcGVubmVyQGdvb2dsZS5jb20+CiAKICAg
ICAgICAgW2Nocm9taXVtXSBBZGRpbmcgUHJpb3JpdGl6ZWRUZXh0dXJlIGFuZCByZXBsYWNpbmcg
Q29udGVudHNUZXh0dXJlTWFuYWdlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIGIvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCmluZGV4IDMxMzViNGU2ODAx
ZjFlMDk4Yzc2YmY0NzUyZTA1MjJkZmI4MGQ0YWIuLjBmZmUwYzQwNTJhNDY4ZTIzZjhhYTAwN2Iz
MjY2MDQ1M2IxOTA2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4LmgKQEAgLTE0MSwxMyArMTQxLDkgQEAg
cHVibGljOgogICAgIC8vIEZJWE1FOiB0aGVzZSBtYXAgZnVuY3Rpb25zIHNob3VsZCBub3QgZXhp
c3QsIHNob3VsZCBiZSB1c2luZyBDQ01hdGhVdGlsCiAgICAgLy8gaW5zdGVhZC4gRXZlbnR1YWxs
eSBDQ01hdGhVdGlsIGZ1bmN0aW9ucyBjb3VsZCBiZSBtZXJnZWQgaGVyZSwgYnV0IGl0cwogICAg
IC8vIG5vdCB5ZXQgdGhlIHJpZ2h0IHRpbWUgZm9yIHRoYXQuCi0gICAgV2ViQ29yZTo6RmxvYXRS
ZWN0IG1hcFJlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgY29uc3Q7Ci0gICAgV2ViQ29y
ZTo6SW50UmVjdCBtYXBSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBjb25zdDsKICAgICBX
ZWJDb3JlOjpGbG9hdFBvaW50M0QgbWFwUG9pbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludDNE
JikgY29uc3Q7CiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtYXBQb2ludChjb25zdCBXZWJDb3Jl
OjpGbG9hdFBvaW50JikgY29uc3Q7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgbWFwUG9pbnQoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdDsKLSAgICBXZWJDb3JlOjpGbG9hdFF1YWQgbWFw
UXVhZChjb25zdCBXZWJDb3JlOjpGbG9hdFF1YWQmKSBjb25zdDsKLSAgICBXZWJDb3JlOjpGbG9h
dFBvaW50IHByb2plY3RQb2ludChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgYm9vbCogY2xh
bXBlZCA9IDApIGNvbnN0OwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeC5jcHAKaW5kZXggZWVmZDE1NGU4YTkzNWZiZTNmMGE3MjA3YzRlNDAz
ZjZkYjc1ODBjMC4uY2IyNTlmMDUxZWY4ODU3OGZjNGNkNzZmMWI2YWFiN2U3NTE0ZTZjZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vc3VwcG9ydC9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKQEAgLTQyMiwxNiArNDIyLDYg
QEAgVHJhbnNmb3JtYXRpb25NYXRyaXggV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnRvV2ViQ29y
ZVRyYW5zZm9ybSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZTsKIH0KIAotRmxvYXRSZWN0
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptYXBSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLm1hcFJlY3QocmVjdCk7Ci19Ci0KLUludFJl
Y3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om1hcFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLm1hcFJlY3QocmVjdCk7Ci19Ci0KIEZsb2F0
UG9pbnQzRCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bWFwUG9pbnQoY29uc3QgRmxvYXRQb2lu
dDNEJiBwKSBjb25zdAogewogICAgIHJldHVybiBtX3ByaXZhdGUubWFwUG9pbnQocCk7CkBAIC00
NDcsMTQgKzQzNyw0IEBAIEludFBvaW50IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptYXBQb2lu
dChjb25zdCBJbnRQb2ludCYgcCkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlLm1hcFBvaW50
KHApOwogfQogCi1GbG9hdFF1YWQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Om1hcFF1YWQoY29u
c3QgRmxvYXRRdWFkJiBxdWFkKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUubWFwUXVh
ZChxdWFkKTsKLX0KLQotRmxvYXRQb2ludCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cHJvamVj
dFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIHAsIGJvb2wqIGNsYW1wZWQpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fcHJpdmF0ZS5wcm9qZWN0UG9pbnQocCwgY2xhbXBlZCk7Ci19Ci0KIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXgg
NDZjOWIzNjIxNWE3MzU5MDQ4MjVmOWY2NDI0OGM4ZGZhMjE5ODQxNS4uN2M4MTgxZDMwMjUwZDY0
Zjk1ZDg0YmMxZjk0MmE5Y2E2YTg3Mzk4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwCkBAIC01ODcsNyArNTg3LDkgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OmRyYXdSZW5kZXJQYXNzUXVhZChjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCogcXVhZCkKICAg
ICBpZiAoZHJhd2luZ1N1cmZhY2UtPmhhc1ZhbGlkQmFja2dyb3VuZFRleHR1cmUoKSkKICAgICAg
ICAgY29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKGRyYXdpbmdTdXJmYWNlLT5iYWNrZ3JvdW5kVGV4
dHVyZSgpLT50ZXh0dXJlSWQoKSwgcXVhZC0+cXVhZFJlY3QoKS5zaXplKCksIHF1YWQtPmxheWVy
VHJhbnNmb3JtKCkpOwogCi0gICAgRmxvYXRRdWFkIGRldmljZVF1YWQgPSBjb250ZW50c0Rldmlj
ZVRyYW5zZm9ybS5tYXBRdWFkKHNoYXJlZEdlb21ldHJ5UXVhZCgpKTsKKyAgICBib29sIGNsaXBw
ZWQgPSBmYWxzZTsKKyAgICBGbG9hdFF1YWQgZGV2aWNlUXVhZCA9IENDTWF0aFV0aWw6Om1hcFF1
YWQoY29udGVudHNEZXZpY2VUcmFuc2Zvcm0sIHNoYXJlZEdlb21ldHJ5UXVhZCgpLCBjbGlwcGVk
KTsKKyAgICBBU1NFUlQoIWNsaXBwZWQpOwogICAgIENDTGF5ZXJRdWFkIGRldmljZUxheWVyQm91
bmRzID0gQ0NMYXllclF1YWQoRmxvYXRRdWFkKGRldmljZVF1YWQuYm91bmRpbmdCb3goKSkpOwog
ICAgIENDTGF5ZXJRdWFkIGRldmljZUxheWVyRWRnZXMgPSBDQ0xheWVyUXVhZChkZXZpY2VRdWFk
KTsKIApAQCAtNjYwLDggKzY2Miw5IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
UmVuZGVyUGFzc1F1YWQoY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIHF1YWQpCiAgICAgICAg
IEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTNmdihzaGFkZXJFZGdlTG9jYXRpb24s
IDgsIGVkZ2UpKTsKICAgICB9CiAKLSAgICAvLyBNYXAgZGV2aWNlIHNwYWNlIHF1YWQgdG8gc3Vy
ZmFjZSBzcGFjZS4KLSAgICBGbG9hdFF1YWQgc3VyZmFjZVF1YWQgPSBjb250ZW50c0RldmljZVRy
YW5zZm9ybS5pbnZlcnNlKCkubWFwUXVhZChkZXZpY2VMYXllckVkZ2VzLmZsb2F0UXVhZCgpKTsK
KyAgICAvLyBNYXAgZGV2aWNlIHNwYWNlIHF1YWQgdG8gc3VyZmFjZSBzcGFjZS4gY29udGVudHNE
ZXZpY2VUcmFuc2Zvcm0gaGFzIG5vIHBlcnNwZWN0aXZlIHNpbmNlIGl0IHdhcyBnZW5lcmF0ZWQg
d2l0aCB0bzJkVHJhbnNmb3JtKCkgc28gd2UgZG9uJ3QgbmVlZCB0byBwcm9qZWN0LgorICAgIEZs
b2F0UXVhZCBzdXJmYWNlUXVhZCA9IENDTWF0aFV0aWw6Om1hcFF1YWQoY29udGVudHNEZXZpY2VU
cmFuc2Zvcm0uaW52ZXJzZSgpLCBkZXZpY2VMYXllckVkZ2VzLmZsb2F0UXVhZCgpLCBjbGlwcGVk
KTsKKyAgICBBU1NFUlQoIWNsaXBwZWQpOwogCiAgICAgZHJhd1RleHR1cmVkUXVhZChxdWFkLT5s
YXllclRyYW5zZm9ybSgpLCBxdWFkLT5xdWFkUmVjdCgpLndpZHRoKCksIHF1YWQtPnF1YWRSZWN0
KCkuaGVpZ2h0KCksIHF1YWQtPm9wYWNpdHkoKSwgc3VyZmFjZVF1YWQsCiAgICAgICAgICAgICAg
ICAgICAgICBzaGFkZXJNYXRyaXhMb2NhdGlvbiwgc2hhZGVyQWxwaGFMb2NhdGlvbiwgc2hhZGVy
UXVhZExvY2F0aW9uKTsKQEAgLTc2MSw2ICs3NjQsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6ZHJhd1RpbGVRdWFkKGNvbnN0IENDVGlsZURyYXdRdWFkKiBxdWFkKQogCiAgICAgYm9v
bCBjbGlwcGVkID0gZmFsc2U7CiAgICAgRmxvYXRRdWFkIGRldmljZUxheWVyUXVhZCA9IENDTWF0
aFV0aWw6Om1hcFF1YWQoZGV2aWNlVHJhbnNmb3JtLCBGbG9hdFF1YWQocXVhZC0+bGF5ZXJSZWN0
KCkpLCBjbGlwcGVkKTsKKyAgICBBU1NFUlQoIWNsaXBwZWQpOwogCiAgICAgVGlsZVByb2dyYW1V
bmlmb3JtcyB1bmlmb3JtczsKICAgICAvLyBGb3Igbm93LCB3ZSBzaW1wbHkgc2tpcCBhbnRpLWFs
aWFzaW5nIHdpdGggdGhlIHF1YWQgaXMgY2xpcHBlZC4gVGhpcyBvbmx5IGhhcHBlbnMKQEAgLTg0
NSw3ICs4NDksOCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RpbGVRdWFkKGNv
bnN0IENDVGlsZURyYXdRdWFkKiBxdWFkKQogCiAgICAgICAgIC8vIE1hcCBxdWFkIHRvIGxheWVy
IHNwYWNlLgogICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbnZlcnNlRGV2aWNlVHJh
bnNmb3JtID0gZGV2aWNlVHJhbnNmb3JtLmludmVyc2UoKTsKLSAgICAgICAgbG9jYWxRdWFkID0g
aW52ZXJzZURldmljZVRyYW5zZm9ybS5tYXBRdWFkKGRldmljZVF1YWQuZmxvYXRRdWFkKCkpOwor
ICAgICAgICBsb2NhbFF1YWQgPSBDQ01hdGhVdGlsOjptYXBRdWFkKGludmVyc2VEZXZpY2VUcmFu
c2Zvcm0sIGRldmljZVF1YWQuZmxvYXRRdWFkKCksIGNsaXBwZWQpOworICAgICAgICBBU1NFUlQo
IWNsaXBwZWQpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIE1vdmUgZnJhZ21lbnQgc2hhZGVy
IHRyYW5zZm9ybSB0byB2ZXJ0ZXggc2hhZGVyLiBXZSBjYW4gZG8gdGhpcyB3aGlsZQogICAgICAg
ICAvLyBzdGlsbCBwcm9kdWNpbmcgY29ycmVjdCByZXN1bHRzIGFzIGZyYWdtZW50VGV4VHJhbnNm
b3JtTG9jYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwCmluZGV4IDUx
NzYxNDUzZDgzM2FmNjU4MTI2MmZmYjZiYTMzYWVmODc3NjEwNTQuLmZiMmRkOGJjNjc2ZTM2YjZi
ZWFlZWM0OWU4MTNkODhmNTJhZmFjM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9t
aXVtLmNwcApAQCAtNTgsOSArNTgsOSBAQCBGbG9hdFJlY3QgUmVuZGVyU3VyZmFjZUNocm9taXVt
OjpkcmF3YWJsZUNvbnRlbnRSZWN0KCkgY29uc3QKIHsKICAgICBGbG9hdFJlY3QgbG9jYWxDb250
ZW50UmVjdCgtMC41ICogbV9jb250ZW50UmVjdC53aWR0aCgpLCAtMC41ICogbV9jb250ZW50UmVj
dC5oZWlnaHQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2NvbnRlbnRSZWN0
LndpZHRoKCksIG1fY29udGVudFJlY3QuaGVpZ2h0KCkpOwotICAgIEZsb2F0UmVjdCBkcmF3YWJs
ZUNvbnRlbnRSZWN0ID0gbV9kcmF3VHJhbnNmb3JtLm1hcFJlY3QobG9jYWxDb250ZW50UmVjdCk7
CisgICAgRmxvYXRSZWN0IGRyYXdhYmxlQ29udGVudFJlY3QgPSBDQ01hdGhVdGlsOjptYXBDbGlw
cGVkUmVjdChtX2RyYXdUcmFuc2Zvcm0sIGxvY2FsQ29udGVudFJlY3QpOwogICAgIGlmIChtX293
bmluZ0xheWVyLT5yZXBsaWNhTGF5ZXIoKSkKLSAgICAgICAgZHJhd2FibGVDb250ZW50UmVjdC51
bml0ZShtX3JlcGxpY2FEcmF3VHJhbnNmb3JtLm1hcFJlY3QobG9jYWxDb250ZW50UmVjdCkpOwor
ICAgICAgICBkcmF3YWJsZUNvbnRlbnRSZWN0LnVuaXRlKENDTWF0aFV0aWw6Om1hcENsaXBwZWRS
ZWN0KG1fcmVwbGljYURyYXdUcmFuc2Zvcm0sIGxvY2FsQ29udGVudFJlY3QpKTsKIAogICAgIHJl
dHVybiBkcmF3YWJsZUNvbnRlbnRSZWN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCmluZGV4
IGMzODBiZDQ1YmYzMTU1ZDU1N2ZmZGM3ZTY2OWQ0YjJjOTJjOGM2NjMuLjgzNjY2YjA0NjRmNjc2
NGY2ODhjYTZmZDVjMmJmYmYyNzcxYWY0NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKQEAg
LTIzMSw3ICsyMzEsNyBAQCBjb25zdCBJbnRSZWN0IENDTGF5ZXJJbXBsOjpnZXREcmF3UmVjdCgp
IGNvbnN0CiAgICAgLy8gRm9ybSB0aGUgbWF0cml4IHVzZWQgYnkgdGhlIHNoYWRlciB0byBtYXAg
dGhlIGNvcm5lcnMgb2YgdGhlIGxheWVyJ3MKICAgICAvLyBib3VuZHMgaW50byB0aGUgdmlldyBz
cGFjZS4KICAgICBGbG9hdFJlY3QgbGF5ZXJSZWN0KC0wLjUgKiBib3VuZHMoKS53aWR0aCgpLCAt
MC41ICogYm91bmRzKCkuaGVpZ2h0KCksIGJvdW5kcygpLndpZHRoKCksIGJvdW5kcygpLmhlaWdo
dCgpKTsKLSAgICBJbnRSZWN0IG1hcHBlZFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGRyYXdUcmFu
c2Zvcm0oKS5tYXBSZWN0KGxheWVyUmVjdCkpOworICAgIEludFJlY3QgbWFwcGVkUmVjdCA9IGVu
Y2xvc2luZ0ludFJlY3QoQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3QoZHJhd1RyYW5zZm9ybSgp
LCBsYXllclJlY3QpKTsKICAgICByZXR1cm4gbWFwcGVkUmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYXRoVXRpbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ01hdGhV
dGlsLmNwcAppbmRleCA4NDcxYjNlNmExMDEzNjc4YjAzMWFhMGY1NzU5NWU2ODlmZjJjMDYzLi4w
MDdlNzRkNDliMzJjYzBmYWVkMDZhMTEyYjM4MGQxYzlmM2QzY2UwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ01hdGhVdGlsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ01hdGhV
dGlsLmNwcApAQCAtMjc4LDEzICsyNzgsMTMgQEAgRmxvYXRRdWFkIENDTWF0aFV0aWw6OnByb2pl
Y3RRdWFkKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnMKIHsK
ICAgICBGbG9hdFF1YWQgcHJvamVjdGVkUXVhZDsKICAgICBib29sIGNsaXBwZWRQb2ludDsKLSAg
ICBwcm9qZWN0ZWRRdWFkLnNldFAxKHRyYW5zZm9ybS5wcm9qZWN0UG9pbnQocS5wMSgpLCAmY2xp
cHBlZFBvaW50KSk7CisgICAgcHJvamVjdGVkUXVhZC5zZXRQMShwcm9qZWN0UG9pbnQodHJhbnNm
b3JtLCBxLnAxKCksIGNsaXBwZWRQb2ludCkpOwogICAgIGNsaXBwZWQgPSBjbGlwcGVkUG9pbnQ7
Ci0gICAgcHJvamVjdGVkUXVhZC5zZXRQMih0cmFuc2Zvcm0ucHJvamVjdFBvaW50KHEucDIoKSwg
JmNsaXBwZWRQb2ludCkpOworICAgIHByb2plY3RlZFF1YWQuc2V0UDIocHJvamVjdFBvaW50KHRy
YW5zZm9ybSwgcS5wMigpLCBjbGlwcGVkUG9pbnQpKTsKICAgICBjbGlwcGVkIHw9IGNsaXBwZWRQ
b2ludDsKLSAgICBwcm9qZWN0ZWRRdWFkLnNldFAzKHRyYW5zZm9ybS5wcm9qZWN0UG9pbnQocS5w
MygpLCAmY2xpcHBlZFBvaW50KSk7CisgICAgcHJvamVjdGVkUXVhZC5zZXRQMyhwcm9qZWN0UG9p
bnQodHJhbnNmb3JtLCBxLnAzKCksIGNsaXBwZWRQb2ludCkpOwogICAgIGNsaXBwZWQgfD0gY2xp
cHBlZFBvaW50OwotICAgIHByb2plY3RlZFF1YWQuc2V0UDQodHJhbnNmb3JtLnByb2plY3RQb2lu
dChxLnA0KCksICZjbGlwcGVkUG9pbnQpKTsKKyAgICBwcm9qZWN0ZWRRdWFkLnNldFA0KHByb2pl
Y3RQb2ludCh0cmFuc2Zvcm0sIHEucDQoKSwgY2xpcHBlZFBvaW50KSk7CiAgICAgY2xpcHBlZCB8
PSBjbGlwcGVkUG9pbnQ7CiAKICAgICByZXR1cm4gcHJvamVjdGVkUXVhZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9u
VHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCmluZGV4IDkxN2RjODdkMGZmNWMzNWIxNjZlNGFmNDAx
OGVhZWJjYTNkNjUyZWEuLmI0OWZmOTA4MzcyYjE1ZjQxMjE1YzQyZWJjYjZmM2MwM2E2ZGE1NjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcApAQCAtMTUxLDkgKzE1MSw5
IEBAIHN0YXRpYyBpbmxpbmUgUmVnaW9uIHRyYW5zZm9ybVN1cmZhY2VPcGFxdWVSZWdpb24oY29u
c3QgUmVuZGVyU3VyZmFjZVR5cGUqIHN1cmZhCiAgICAgUmVnaW9uIHRyYW5zZm9ybWVkUmVnaW9u
OwogCiAgICAgVmVjdG9yPEludFJlY3Q+IHJlY3RzID0gcmVnaW9uLnJlY3RzKCk7Ci0gICAgLy8g
Q2xpcHBpbmcgaGFzIGJlZW4gdmVyaWZpZWQgYWJvdmUsIHNvIG1hcFJlY3Qgd2lsbCBnaXZlIGNv
cnJlY3QgcmVzdWx0cy4KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlY3RzLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIEludFJlY3QgdHJhbnNmb3JtZWRSZWN0ID0gZW5jbG9zZWRJbnRSZWN0
KHRyYW5zZm9ybS5tYXBSZWN0KEZsb2F0UmVjdChyZWN0c1tpXSkpKTsKKyAgICAgICAgLy8gV2Un
dmUgYWxyZWFkeSBjaGVja2VkIGZvciBjbGlwcGluZyBpbiB0aGUgbWFwUXVhZCBjYWxsIGFib3Zl
LCB0aGVzZSBjYWxscyBzaG91bGQgbm90IGNsaXAgYW55dGhpbmcgZnVydGhlci4KKyAgICAgICAg
SW50UmVjdCB0cmFuc2Zvcm1lZFJlY3QgPSBlbmNsb3NlZEludFJlY3QoQ0NNYXRoVXRpbDo6bWFw
Q2xpcHBlZFJlY3QodHJhbnNmb3JtLCBGbG9hdFJlY3QocmVjdHNbaV0pKSk7CiAgICAgICAgIGlm
ICghc3VyZmFjZS0+Y2xpcFJlY3QoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICB0cmFuc2Zvcm1l
ZFJlY3QuaW50ZXJzZWN0KHN1cmZhY2UtPmNsaXBSZWN0KCkpOwogICAgICAgICB0cmFuc2Zvcm1l
ZFJlZ2lvbi51bml0ZSh0cmFuc2Zvcm1lZFJlY3QpOwpAQCAtMzE5LDkgKzMxOSw5IEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCBhZGRPY2NsdXNpb25CZWhpbmRMYXllcihSZWdpb24mIHJlZ2lvbiwgY29u
c3QgTGF5ZXJUeXBlKiBsYXllCiAgICAgICAgIHJldHVybjsKIAogICAgIFZlY3RvcjxJbnRSZWN0
PiBjb250ZW50UmVjdHMgPSBvcGFxdWVDb250ZW50cy5yZWN0cygpOwotICAgIC8vIFdlIHZlcmlm
eSB0aGF0IHRoZSBwb3NzaWJsZSBib3VuZHMgb2YgdGhpcyByZWdpb24gYXJlIG5vdCBjbGlwcGVk
IGFib3ZlLCBzbyB3ZSBjYW4gdXNlIG1hcFJlY3QoKSBzYWZlbHkgaGVyZS4KICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGNvbnRlbnRSZWN0cy5zaXplKCk7ICsraSkgewotICAgICAgICBJbnRS
ZWN0IHRyYW5zZm9ybWVkUmVjdCA9IGVuY2xvc2VkSW50UmVjdCh0cmFuc2Zvcm0ubWFwUmVjdChG
bG9hdFJlY3QoY29udGVudFJlY3RzW2ldKSkpOworICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IGNo
ZWNrZWQgZm9yIGNsaXBwaW5nIGluIHRoZSBtYXBRdWFkIGNhbGwgYWJvdmUsIHRoZXNlIGNhbGxz
IHNob3VsZCBub3QgY2xpcCBhbnl0aGluZyBmdXJ0aGVyLgorICAgICAgICBJbnRSZWN0IHRyYW5z
Zm9ybWVkUmVjdCA9IGVuY2xvc2VkSW50UmVjdChDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdCh0
cmFuc2Zvcm0sIEZsb2F0UmVjdChjb250ZW50UmVjdHNbaV0pKSk7CiAgICAgICAgIHRyYW5zZm9y
bWVkUmVjdC5pbnRlcnNlY3Qoc2Npc3NvclJlY3QpOwogICAgICAgICBpZiAodHJhbnNmb3JtZWRS
ZWN0LndpZHRoKCkgPj0gbWluaW11bVRyYWNraW5nU2l6ZS53aWR0aCgpIHx8IHRyYW5zZm9ybWVk
UmVjdC5oZWlnaHQoKSA+PSBtaW5pbXVtVHJhY2tpbmdTaXplLmhlaWdodCgpKSB7CiAgICAgICAg
ICAgICBpZiAob2NjbHVkaW5nU2NyZWVuU3BhY2VSZWN0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRyYXdNZXRyaWNzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRy
YXdNZXRyaWNzLmNwcAppbmRleCAwY2MyZmE1ZWM2MTZhMDA0Nzc4MjYxNTg5NjBiZDAxNzg4N2Uz
ZGQ4Li5jMGYwYmQ3N2QzM2U1YWYyYjg3NzQ4MzU1NDBlNjQzMWUwZjQ2MDZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ092ZXJkcmF3
TWV0cmljcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NPdmVyZHJhd01ldHJpY3MuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
VHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUg
ImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKKyNpbmNsdWRlICJjYy9DQ01hdGhVdGlsLmgiCiAj
aW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9y
bWF0aW9uTWF0cml4Lmg+CiAKQEAgLTU3LDEzICs1OCwyNSBAQCBzdGF0aWMgaW5saW5lIGZsb2F0
IHdlZGdlUHJvZHVjdChjb25zdCBGbG9hdFBvaW50JiBwMSwgY29uc3QgRmxvYXRQb2ludCYgcDIp
CiAgICAgcmV0dXJuIHAxLngoKSAqIHAyLnkoKSAtIHAxLnkoKSAqIHAyLngoKTsKIH0KIAotLy8g
Q29tcHV0ZXMgYXJlYSBvZiBxdWFkcyB0aGF0IGFyZSBwb3NzaWJseSBub24tcmVjdGFuZ3VsYXIu
IENhbiBiZSBlYXNpbHkgZXh0ZW5kZWQgdG8gcG9seWdvbnMuCi1zdGF0aWMgaW5saW5lIGZsb2F0
IHF1YWRBcmVhKGNvbnN0IEZsb2F0UXVhZCYgcXVhZCkKKy8vIENhbGN1bGF0ZXMgYXJlYSBvZiBh
biBhcmJpdHJhcnkgY29udmV4IHBvbHlnb24gd2l0aCB1cCB0byA4IHBvaW50cy4KK3N0YXRpYyBp
bmxpbmUgZmxvYXQgcG9seWdvbkFyZWEoY29uc3QgRmxvYXRQb2ludCBwb2ludHNbOF0sIGludCBu
dW1Qb2ludHMpCiB7Ci0gICAgcmV0dXJuIGZhYnMoMC41ICogKHdlZGdlUHJvZHVjdChxdWFkLnAx
KCksIHF1YWQucDIoKSkgKwotICAgICAgICAgICAgICAgICAgICAgICB3ZWRnZVByb2R1Y3QocXVh
ZC5wMigpLCBxdWFkLnAzKCkpICsKLSAgICAgICAgICAgICAgICAgICAgICAgd2VkZ2VQcm9kdWN0
KHF1YWQucDMoKSwgcXVhZC5wNCgpKSArCi0gICAgICAgICAgICAgICAgICAgICAgIHdlZGdlUHJv
ZHVjdChxdWFkLnA0KCksIHF1YWQucDEoKSkpKTsKKyAgICBpZiAobnVtUG9pbnRzIDwgMykKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBmbG9hdCBhcmVhID0gMDsKKyAgICBmb3IgKGludCBpID0g
MDsgaSA8IG51bVBvaW50czsgKytpKQorICAgICAgICBhcmVhICs9IHdlZGdlUHJvZHVjdChwb2lu
dHNbaV0sIHBvaW50c1soaSsxKSVudW1Qb2ludHNdKTsKKyAgICByZXR1cm4gZmFicygwLjVmICog
YXJlYSk7Cit9CisKKy8vIFRha2VzIGEgZ2l2ZW4gcXVhZCwgbWFwcyBpdCBieSB0aGUgZ2l2ZW4g
dHJhbnNmb3JtYXRpb24sIGFuZCBnaXZlcyB0aGUgYXJlYSBvZiB0aGUgcmVzdWx0aW5nIHBvbHln
b24uCitzdGF0aWMgaW5saW5lIGZsb2F0IGFyZWFPZk1hcHBlZFF1YWQoY29uc3QgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRRdWFkJiBxdWFkKQoreworICAg
IEZsb2F0UG9pbnQgY2xpcHBlZFF1YWRbOF07CisgICAgaW50IG51bVZlcnRpY2VzSW5DbGlwcGVk
UXVhZCA9IDA7CisgICAgQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFF1YWQodHJhbnNmb3JtLCBxdWFk
LCBjbGlwcGVkUXVhZCwgbnVtVmVydGljZXNJbkNsaXBwZWRRdWFkKTsKKyAgICByZXR1cm4gcG9s
eWdvbkFyZWEoY2xpcHBlZFF1YWQsIG51bVZlcnRpY2VzSW5DbGlwcGVkUXVhZCk7CiB9CiAKIHZv
aWQgQ0NPdmVyZHJhd01ldHJpY3M6OmRpZFBhaW50KGNvbnN0IEludFJlY3QmIHBhaW50ZWRSZWN0
KQpAQCAtODUsOCArOTgsOCBAQCB2b2lkIENDT3ZlcmRyYXdNZXRyaWNzOjpkaWRVcGxvYWQoY29u
c3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvVGFyZwogICAgIGlmICghbV9y
ZWNvcmRNZXRyaWNzRm9yRnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZsb2F0IHVwbG9h
ZEFyZWEgPSBxdWFkQXJlYSh0cmFuc2Zvcm1Ub1RhcmdldC5tYXBRdWFkKEZsb2F0UXVhZCh1cGxv
YWRSZWN0KSkpOwotICAgIGZsb2F0IHVwbG9hZE9wYXF1ZUFyZWEgPSBxdWFkQXJlYSh0cmFuc2Zv
cm1Ub1RhcmdldC5tYXBRdWFkKEZsb2F0UXVhZChpbnRlcnNlY3Rpb24ob3BhcXVlUmVjdCwgdXBs
b2FkUmVjdCkpKSk7CisgICAgZmxvYXQgdXBsb2FkQXJlYSA9IGFyZWFPZk1hcHBlZFF1YWQodHJh
bnNmb3JtVG9UYXJnZXQsIEZsb2F0UXVhZCh1cGxvYWRSZWN0KSk7CisgICAgZmxvYXQgdXBsb2Fk
T3BhcXVlQXJlYSA9IGFyZWFPZk1hcHBlZFF1YWQodHJhbnNmb3JtVG9UYXJnZXQsIEZsb2F0UXVh
ZChpbnRlcnNlY3Rpb24ob3BhcXVlUmVjdCwgdXBsb2FkUmVjdCkpKTsKIAogICAgIG1fcGl4ZWxz
VXBsb2FkZWRPcGFxdWUgKz0gdXBsb2FkT3BhcXVlQXJlYTsKICAgICBtX3BpeGVsc1VwbG9hZGVk
VHJhbnNsdWNlbnQgKz0gdXBsb2FkQXJlYSAtIHVwbG9hZE9wYXF1ZUFyZWE7CkBAIC05Nyw4ICsx
MTAsOCBAQCB2b2lkIENDT3ZlcmRyYXdNZXRyaWNzOjpkaWRDdWxsRm9yRHJhd2luZyhjb25zdCBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmbwogICAgIGlmICghbV9yZWNvcmRNZXRyaWNz
Rm9yRnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZsb2F0IGJlZm9yZUN1bGxBcmVhID0g
cXVhZEFyZWEodHJhbnNmb3JtVG9UYXJnZXQubWFwUXVhZChGbG9hdFF1YWQoYmVmb3JlQ3VsbFJl
Y3QpKSk7Ci0gICAgZmxvYXQgYWZ0ZXJDdWxsQXJlYSA9IHF1YWRBcmVhKHRyYW5zZm9ybVRvVGFy
Z2V0Lm1hcFF1YWQoRmxvYXRRdWFkKGFmdGVyQ3VsbFJlY3QpKSk7CisgICAgZmxvYXQgYmVmb3Jl
Q3VsbEFyZWEgPSBhcmVhT2ZNYXBwZWRRdWFkKHRyYW5zZm9ybVRvVGFyZ2V0LCBGbG9hdFF1YWQo
YmVmb3JlQ3VsbFJlY3QpKTsKKyAgICBmbG9hdCBhZnRlckN1bGxBcmVhID0gYXJlYU9mTWFwcGVk
UXVhZCh0cmFuc2Zvcm1Ub1RhcmdldCwgRmxvYXRRdWFkKGFmdGVyQ3VsbFJlY3QpKTsKIAogICAg
IG1fcGl4ZWxzQ3VsbGVkRm9yRHJhd2luZyArPSBiZWZvcmVDdWxsQXJlYSAtIGFmdGVyQ3VsbEFy
ZWE7CiB9CkBAIC0xMDgsOCArMTIxLDggQEAgdm9pZCBDQ092ZXJkcmF3TWV0cmljczo6ZGlkRHJh
dyhjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9UYXJnZXQKICAgICBp
ZiAoIW1fcmVjb3JkTWV0cmljc0ZvckZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBmbG9h
dCBhZnRlckN1bGxBcmVhID0gcXVhZEFyZWEodHJhbnNmb3JtVG9UYXJnZXQubWFwUXVhZChGbG9h
dFF1YWQoYWZ0ZXJDdWxsUmVjdCkpKTsKLSAgICBmbG9hdCBhZnRlckN1bGxPcGFxdWVBcmVhID0g
cXVhZEFyZWEodHJhbnNmb3JtVG9UYXJnZXQubWFwUXVhZChGbG9hdFF1YWQoaW50ZXJzZWN0aW9u
KG9wYXF1ZVJlY3QsIGFmdGVyQ3VsbFJlY3QpKSkpOworICAgIGZsb2F0IGFmdGVyQ3VsbEFyZWEg
PSBhcmVhT2ZNYXBwZWRRdWFkKHRyYW5zZm9ybVRvVGFyZ2V0LCBGbG9hdFF1YWQoYWZ0ZXJDdWxs
UmVjdCkpOworICAgIGZsb2F0IGFmdGVyQ3VsbE9wYXF1ZUFyZWEgPSBhcmVhT2ZNYXBwZWRRdWFk
KHRyYW5zZm9ybVRvVGFyZ2V0LCBGbG9hdFF1YWQoaW50ZXJzZWN0aW9uKG9wYXF1ZVJlY3QsIGFm
dGVyQ3VsbFJlY3QpKSk7CiAKICAgICBtX3BpeGVsc0RyYXduT3BhcXVlICs9IGFmdGVyQ3VsbE9w
YXF1ZUFyZWE7CiAgICAgbV9waXhlbHNEcmF3blRyYW5zbHVjZW50ICs9IGFmdGVyQ3VsbEFyZWEg
LSBhZnRlckN1bGxPcGFxdWVBcmVhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKaW5kZXggYjFk
NTNjNjNkMDhmYjJhODg0M2I0MjFjNDk4MTg4MDk0M2NlN2U4Ny4uMjhhY2RkN2M5YjQ3YmRmYjdm
MmI4NWY1ZTkxOThiOGZlODdlN2UzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzLmgiCiAKICNpbmNsdWRlICJj
Yy9DQ0xheWVySW1wbC5oIgorI2luY2x1ZGUgImNjL0NDTWF0aFV0aWwuaCIKICNpbmNsdWRlICJj
Yy9DQ1F1YWRDdWxsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oIgogI2lu
Y2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgiCkBAIC05NSw3ICs5Niw4IEBAIHZvaWQg
Q0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc1RvRmlsbFNjcmVlbihDQ0xheWVySW1wbCogcm9vdExh
eWVyLCBTa0NvbG9yIHNjcmVlCiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3Jt
VG9MYXllclNwYWNlID0gcm9vdExheWVyLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLmludmVyc2Uo
KTsKICAgICBWZWN0b3I8SW50UmVjdD4gZmlsbFJlY3RzID0gZmlsbFJlZ2lvbi5yZWN0cygpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsbFJlY3RzLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gdHJhbnNmb3JtVG9MYXllclNwYWNlLm1hcFJlY3QoZmls
bFJlY3RzW2ldKTsKKyAgICAgICAgLy8gVGhlIHJvb3QgbGF5ZXIgdHJhbnNmb3JtIGlzIGNvbXBv
c2VkIG9mIHRyYW5zbGF0aW9ucyBhbmQgc2NhbGVzIG9ubHksIG5vIHBlcnNwZWN0aXZlLCBzbyBt
YXBwaW5nIGlzIHN1ZmZpY2llbnQuCisgICAgICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gQ0NNYXRo
VXRpbDo6bWFwQ2xpcHBlZFJlY3QodHJhbnNmb3JtVG9MYXllclNwYWNlLCBmaWxsUmVjdHNbaV0p
OwogICAgICAgICBtX3F1YWRMaXN0LmFwcGVuZChDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRl
KHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgbGF5ZXJSZWN0LCBzY3JlZW5CYWNrZ3JvdW5kQ29sb3Ip
KTsKICAgICB9CiAgICAgbV9zaGFyZWRRdWFkU3RhdGVMaXN0LmFwcGVuZChzaGFyZWRRdWFkU3Rh
dGUucmVsZWFzZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCmluZGV4IDZhYzA5
NDZhYTY4NjdhZTdiNzc1ZjBkMjljYmI4ZWRiMGQ3MWQ2ODEuLmQwOTQwMWM0ZjIzZTA5ZTUxMmU2
MjQ5OTg0YmU0Y2RlOGE5NGEyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcApA
QCAtNzgsOSArNzgsOSBAQCBGbG9hdFJlY3QgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3YWJsZUNvbnRl
bnRSZWN0KCkgY29uc3QKIHsKICAgICBGbG9hdFJlY3QgbG9jYWxDb250ZW50UmVjdCgtMC41ICog
bV9jb250ZW50UmVjdC53aWR0aCgpLCAtMC41ICogbV9jb250ZW50UmVjdC5oZWlnaHQoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2NvbnRlbnRSZWN0LndpZHRoKCksIG1fY29u
dGVudFJlY3QuaGVpZ2h0KCkpOwotICAgIEZsb2F0UmVjdCBkcmF3YWJsZUNvbnRlbnRSZWN0ID0g
bV9kcmF3VHJhbnNmb3JtLm1hcFJlY3QobG9jYWxDb250ZW50UmVjdCk7CisgICAgRmxvYXRSZWN0
IGRyYXdhYmxlQ29udGVudFJlY3QgPSBDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChtX2RyYXdU
cmFuc2Zvcm0sIGxvY2FsQ29udGVudFJlY3QpOwogICAgIGlmIChoYXNSZXBsaWNhKCkpCi0gICAg
ICAgIGRyYXdhYmxlQ29udGVudFJlY3QudW5pdGUobV9yZXBsaWNhRHJhd1RyYW5zZm9ybS5tYXBS
ZWN0KGxvY2FsQ29udGVudFJlY3QpKTsKKyAgICAgICAgZHJhd2FibGVDb250ZW50UmVjdC51bml0
ZShDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChtX3JlcGxpY2FEcmF3VHJhbnNmb3JtLCBsb2Nh
bENvbnRlbnRSZWN0KSk7CiAKICAgICByZXR1cm4gZHJhd2FibGVDb250ZW50UmVjdDsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2hhcmVkUXVhZFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmNwcAppbmRleCA1MzZiMzk4NjdkNTAyMjA1YjEy
Mjc5N2QwYjEzNWJhYTYzZWM4NDk0Li41ZTA2ODFmZjVmYWZkMjNjNTg2Y2NhNzFmOWUxNDcwNTY4
MjE3MTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuY3BwCkBAIC0yNyw2ICsy
Nyw4IEBACiAKICNpbmNsdWRlICJjYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oIgogCisjaW5jbHVkZSAi
Y2MvQ0NNYXRoVXRpbC5oIgorCiB1c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MCw4ICs1Miw5IEBAIGJvb2wgQ0NTaGFyZWRR
dWFkU3RhdGU6OmlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKSBjb25zdAogewogICAgIC8vIE5v
dGU6IHRoaXMgZG9lc24ndCBjb25zaWRlciB3aW5kb3cgb3IgcHJvamVjdGlvbiBtYXRyaWNlcy4K
ICAgICAvLyBBc3N1bWUgdGhhdCB0aGV5J3JlIG9ydGhvbm9ybWFsIGFuZCBoYXZlIGludGVnZXIg
c2NhbGVzIGFuZCB0cmFuc2xhdGlvbnMuCi0gICAgRmxvYXRRdWFkIHF1YWQgPSBxdWFkVHJhbnNm
b3JtKCkubWFwUXVhZChGbG9hdFF1YWQobGF5ZXJSZWN0KCkpKTsKLSAgICByZXR1cm4gcXVhZC5p
c1JlY3RpbGluZWFyKCkgJiYgcXVhZC5ib3VuZGluZ0JveCgpLmlzRXhwcmVzc2libGVBc0ludFJl
Y3QoKTsKKyAgICBib29sIGNsaXBwZWQgPSBmYWxzZTsKKyAgICBGbG9hdFF1YWQgcXVhZCA9IEND
TWF0aFV0aWw6Om1hcFF1YWQocXVhZFRyYW5zZm9ybSgpLCBGbG9hdFF1YWQobGF5ZXJSZWN0KCkp
LCBjbGlwcGVkKTsKKyAgICByZXR1cm4gIWNsaXBwZWQgJiYgcXVhZC5pc1JlY3RpbGluZWFyKCkg
JiYgcXVhZC5ib3VuZGluZ0JveCgpLmlzRXhwcmVzc2libGVBc0ludFJlY3QoKTsKIH0KIAogfQo=
</data>
<flag name="review"
          id="158454"
          type_id="1"
          status="+"
          setter="enne"
    />
          </attachment>
      

    </bug>

</bugzilla>