<?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>91807</bug_id>
          
          <creation_ts>2012-07-19 20:57:39 -0700</creation_ts>
          <short_desc>[chromium] Make all compositor screen space transforms operate on content rects</short_desc>
          <delta_ts>2012-07-25 17:54:10 -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>
          <dependson>91417</dependson>
          <blocked>91815</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adrienne Walker">enne</reporter>
          <assigned_to name="Adrienne Walker">enne</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>senorblanco</cc>
    
    <cc>shawnsingh</cc>
    
    <cc>vollick</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>674104</commentid>
    <comment_count>0</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-19 20:57:39 -0700</bug_when>
    <thetext>[chromium] Make all compositor screen space transforms operate on content rects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674107</commentid>
    <comment_count>1</comment_count>
      <attachid>153388</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-19 21:00:15 -0700</bug_when>
    <thetext>Created attachment 153388
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674916</commentid>
    <comment_count>2</comment_count>
      <attachid>153388</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-20 13:37:50 -0700</bug_when>
    <thetext>Comment on attachment 153388
Patch

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

This LGTM!

&gt; Source/WebCore/platform/graphics/chromium/cc/CCDebugRectHistory.cpp:77
&gt; +        updateContentRect.scale(layer-&gt;contentBounds().width() / static_cast&lt;float&gt;(layer-&gt;bounds().width()), layer-&gt;contentBounds().height() / static_cast&lt;float&gt;(layer-&gt;bounds().height()));

want updateRect in content space again..

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostCommon.cpp:737
&gt; -        WebTransformationMatrix screenSpaceTransform = layer-&gt;screenSpaceTransform();
&gt; -        // FIXME: These should be consistent.
&gt; -        // The layer&apos;s screen space transform operates on layer rects, but the surfaces
&gt; -        // screen space transform operates on surface rects, which are in physical pixels,
&gt; -        // so we have to &apos;undo&apos; the scale here.
&gt; -        screenSpaceTransform.scale(1 / contentsScale);
&gt; -        renderSurface-&gt;setScreenSpaceTransform(screenSpaceTransform);
&gt; +        renderSurface-&gt;setScreenSpaceTransform(layer-&gt;screenSpaceTransform());

yayyy. this makes me super happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675198</commentid>
    <comment_count>3</comment_count>
      <attachid>153656</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-20 23:58:25 -0700</bug_when>
    <thetext>Created attachment 153656
Rebased onto patch sequence</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675201</commentid>
    <comment_count>4</comment_count>
      <attachid>153656</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-21 00:23:37 -0700</bug_when>
    <thetext>Comment on attachment 153656
Rebased onto patch sequence

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostCommon.cpp:588
&gt; +        nextHierarchyMatrix.scale(1 / contentsScale);

Other than test changes, this is the difference between this patch and the previous.  Without this, the duplicateChildNonOwner case in CCLayerTreeHostCommonTest.verifyRenderSurfaceTransformsInHighDPI gets a double-scaled screen space matrix.

Since originTransform (i.e. layer-&gt;drawTransform) includes a content scale, but nextHierarchyMatrix already included a content scale, then this is a double-scale and we need to undo one of them.  I think this just happened to cancel out previously because screen space transforms were dealing with layer rects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675284</commentid>
    <comment_count>5</comment_count>
      <attachid>153683</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-21 18:42:57 -0700</bug_when>
    <thetext>Created attachment 153683
Rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675285</commentid>
    <comment_count>6</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-21 18:44:12 -0700</bug_when>
    <thetext>I sorted it out.  The 1 / contentsScale line needed to be there because of the change to drawTransform and is now a part of the patch in bug 91417.  Everything now is explained.

This patch is now equivalent to patch 1, except for some extra test changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676215</commentid>
    <comment_count>7</comment_count>
      <attachid>153683</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-23 17:28:42 -0700</bug_when>
    <thetext>Comment on attachment 153683
Rebased

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

ok still lgtm (with nit similar to that other cl)

&gt; Source/WebKit/chromium/tests/CCLayerTreeHostCommonTest.cpp:3688
&gt; +    EXPECT_TRANSFORMATION_MATRIX_EQ(parent-&gt;screenSpaceTransform(), expectedParentTransform);

nit: expected result should come first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678227</commentid>
    <comment_count>8</comment_count>
      <attachid>154392</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-25 10:46:51 -0700</bug_when>
    <thetext>Created attachment 154392
Rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678256</commentid>
    <comment_count>9</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-25 11:12:17 -0700</bug_when>
    <thetext>@kbr or @senorblanco for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678447</commentid>
    <comment_count>10</comment_count>
      <attachid>154392</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-07-25 14:08:56 -0700</bug_when>
    <thetext>Comment on attachment 154392
Rebased

rs=me based on danakj&apos;s review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678579</commentid>
    <comment_count>11</comment_count>
      <attachid>154392</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-25 16:16:17 -0700</bug_when>
    <thetext>Comment on attachment 154392
Rebased

Rejecting attachment 154392 from commit-queue.

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

Last 500 characters of output:
CLayerTreeHostCommonTest.cpp
Hunk #1 succeeded at 2806 (offset -100 lines).
Hunk #2 succeeded at 3303 (offset -110 lines).
Hunk #3 succeeded at 3319 (offset -110 lines).
Hunk #4 succeeded at 3338 (offset -110 lines).
Hunk #5 succeeded at 3385 (offset -117 lines).
patching file Source/WebKit/chromium/tests/TiledLayerChromiumTest.cpp

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Kenneth Ru...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/13342420</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678616</commentid>
    <comment_count>12</comment_count>
      <attachid>154485</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-25 16:47:36 -0700</bug_when>
    <thetext>Created attachment 154485
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678664</commentid>
    <comment_count>13</comment_count>
      <attachid>154485</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-25 17:26:34 -0700</bug_when>
    <thetext>Comment on attachment 154485
Patch for landing

Rejecting attachment 154485 from commit-queue.

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

ERROR: /mnt/git/webkit-commit-queue/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/13342445</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678676</commentid>
    <comment_count>14</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-25 17:54:10 -0700</bug_when>
    <thetext>Committed r123685: &lt;http://trac.webkit.org/changeset/123685&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153388</attachid>
            <date>2012-07-19 21:00:15 -0700</date>
            <delta_ts>2012-07-20 23:58:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91807-20120719210011.patch</filename>
            <type>text/plain</type>
            <size>15310</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWUwMjFmY2U5YzM4NTc1
NTIxYzg2ZWIyMzIzYTEwN2I1MDI3MmI0ZC4uYjYwMWE3NTEwYzljZjZlYWNhZDlhN2MxNDM2NjY1
ZmU0NmU3ZGRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA3LTE5ICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBNYWtl
IGFsbCBjb21wb3NpdG9yIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm1zIG9wZXJhdGUgb24gY29udGVu
dCByZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTE4MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQ
cmV2aW91c2x5LCBzdXJmYWNlIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm1zIG9wZXJhdGVkIG9uIHN1
cmZhY2UKKyAgICAgICAgY29udGVudCBzcGFjZSBidXQgbGF5ZXIgc2NyZWVuIHNwYWNlIHRyYW5z
Zm9ybXMgb3BlcmF0ZWQgb24gbGF5ZXIKKyAgICAgICAgc3BhY2UuIEZvciB0aGUgcHVycG9zZSBv
ZiBjb25zaXN0ZW5jeSwgdW5pZnkgdGhlc2UgdHdvIHNvIHRoYXQgdGhleQorICAgICAgICBib3Ro
IG9wZXJhdGUgb24gY29udGVudCBzcGFjZS4KKworICAgICAgICBObyB0ZXN0cywgYmVjYXVzZSBu
byBjaGFuZ2UgaW4gYmVoYXZpb3IgZXhwZWN0ZWQuIEp1c3QgYSByZWZhY3RvcmluZy4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAg
ICAgKExheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnUmVj
dEhpc3Rvcnk6OnNhdmVQYWludFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDRGVidWdSZWN0
SGlzdG9yeTo6c2F2ZVByb3BlcnR5Q2hhbmdlZFJlY3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNJbnRlcm5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3RDb21tb246OmZpbmRMYXllclRoYXRJc0hpdEJ5UG9pbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjo6Om1hcmtPY2NsdWRlZEJlaGluZExheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Ojo6b2NjbHVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Ojp1bm9jY2x1
ZGVkQ29udGVudFJlY3QpOgorCiAyMDEyLTA3LTE5ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBs
ZS5jb20+CiAKICAgICAgICAgSW4gZmxpcHBlZCBibG9ja3Mgd3JpdGluZyBtb2Rlcywgbm8gZmxp
cHBpbmcgb2NjdXJzIHdoZW4gbWFwcGluZyBSZW5kZXJUZXh04oCZcyBsb2NhbCBjb29yZGluYXRl
cyB0byBhYnNvbHV0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA1ZmQ2YzZiYmI3OTU4
ZjhlNzdhMWFhZmI0MTY2NTFhOTczYjMwNDBiLi41YTNkNTE0ZWFiNGNhMTY5M2Y3ODU4MWZiZjYx
ZTFiNzI3NTc0ZmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDEyLTA3LTE5ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgW2Nocm9taXVtXSBNYWtlIGFsbCBjb21wb3NpdG9yIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm1z
IG9wZXJhdGUgb24gY29udGVudCByZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTE4MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVcGRhdGUgdGVzdHMgdGhhdCBkZWFsIHdpdGggc2NyZWVuIHNwYWNl
IHRyYW5zZm9ybXMgdG8gcmVmbGVjdCB0aGlzIGNoYW5nZS4KKworICAgICAgICAqIHRlc3RzL0ND
TGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL1RpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QuY3BwOgorCiAyMDEyLTA3LTE5ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBXZWJWaWV3IGlzIG1pc3NpbmcgaXNTZWxlY3Rp
b25FZGl0YWJsZSBhbmQgYmFja2dyb3VuZENvbG9yIHdoaWNoIGFyZSB1c2VkIGJ5IGNocm9taXVt
LWFuZHJvaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCA4MzA1OGU2MzNhNjQ3NmQyNGI3NzI0ZTY1
NzE2MmFiOGQzMmU5YmQ1Li4yZDU1MzQ1NmRhNmM3N2VjODVlOTZlNjAyYzRkODQ1ZWRkZTk2ZWFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0yNTEsNyArMjUxLDcgQEAgcHVibGljOgogICAgIC8v
IHJvb3QgcmVuZGVyIHN1cmZhY2UsIHRoZW4gdGhpcyBjb252ZXJ0cyB0byBwaHlzaWNhbCBwaXhl
bHMpLgogICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFu
c2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2RyYXdUcmFuc2Zvcm07IH0KICAgICB2b2lkIHNldERy
YXdUcmFuc2Zvcm0oY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4
KSB7IG1fZHJhd1RyYW5zZm9ybSA9IG1hdHJpeDsgfQotICAgIC8vIFRoaXMgbW92ZXMgZnJvbSBs
YXllciBzcGFjZSwgd2l0aCBvcmlnaW4gdGhlIHRvcCBsZWZ0IHRvIHNjcmVlbiBzcGFjZSB3aXRo
IG9yaWdpbiBpbiB0aGUgdG9wIGxlZnQuCisgICAgLy8gVGhpcyBtb3ZlcyBmcm9tIGNvbnRlbnQg
c3BhY2UsIHdpdGggb3JpZ2luIHRoZSB0b3AgbGVmdCB0byBzY3JlZW4gc3BhY2Ugd2l0aCBvcmln
aW4gaW4gdGhlIHRvcCBsZWZ0LgogICAgIC8vIEl0IGNvbnZlcnRzIGxvZ2ljYWwsIG5vbi1wYWdl
LXNjYWxlZCBwaXhlbHMgdG8gcGh5c2ljYWwgcGl4ZWxzLgogICAgIGNvbnN0IFdlYktpdDo6V2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHNjcmVlblNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1
cm4gbV9zY3JlZW5TcGFjZVRyYW5zZm9ybTsgfQogICAgIHZvaWQgc2V0U2NyZWVuU3BhY2VUcmFu
c2Zvcm0oY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KSB7IG1f
c2NyZWVuU3BhY2VUcmFuc2Zvcm0gPSBtYXRyaXg7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVj
dEhpc3RvcnkuY3BwCmluZGV4IGM2MTMyMTc4ZTE2MzkzMzVkMDE0Yzg2ZGViODY2YTYzYjViZDc2
NzguLjBhZjQ2YTRjOTY1ZTQzZTczZTJhMWY4N2NkYTZiMjYzZjQzY2U3Y2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0
SGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmNwcApAQCAtNzIsOCArNzIsMTEgQEAgdm9pZCBDQ0Rl
YnVnUmVjdEhpc3Rvcnk6OnNhdmVQYWludFJlY3RzKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICAv
LyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhpcyBsYXllciBpcyBza2lwcGVkIGZvciBhY3R1YWwg
ZHJhd2luZyBvciBub3QuIFRoZXJlZm9yZQogICAgIC8vIHdlIHRyYXZlcnNlIHJlY3Vyc2l2ZWx5
IG92ZXIgYWxsIGxheWVycywgbm90IGp1c3QgdGhlIHJlbmRlciBzdXJmYWNlIGxpc3QuCiAKLSAg
ICBpZiAoIWxheWVyLT51cGRhdGVSZWN0KCkuaXNFbXB0eSgpICYmIGxheWVyLT5kcmF3c0NvbnRl
bnQoKSkKLSAgICAgICAgbV9kZWJ1Z1JlY3RzLmFwcGVuZChDQ0RlYnVnUmVjdChQYWludFJlY3RU
eXBlLCBDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChsYXllci0+c2NyZWVuU3BhY2VUcmFuc2Zv
cm0oKSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSkpKTsKKyAgICBpZiAoIWxheWVyLT51cGRhdGVSZWN0
KCkuaXNFbXB0eSgpICYmIGxheWVyLT5kcmF3c0NvbnRlbnQoKSkgeworICAgICAgICBGbG9hdFJl
Y3QgdXBkYXRlQ29udGVudFJlY3QgPSBsYXllci0+dXBkYXRlUmVjdCgpOworICAgICAgICB1cGRh
dGVDb250ZW50UmVjdC5zY2FsZShsYXllci0+Y29udGVudEJvdW5kcygpLndpZHRoKCkgLyBzdGF0
aWNfY2FzdDxmbG9hdD4obGF5ZXItPmJvdW5kcygpLndpZHRoKCkpLCBsYXllci0+Y29udGVudEJv
dW5kcygpLmhlaWdodCgpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGxheWVyLT5ib3VuZHMoKS5oZWln
aHQoKSkpOworICAgICAgICBtX2RlYnVnUmVjdHMuYXBwZW5kKENDRGVidWdSZWN0KFBhaW50UmVj
dFR5cGUsIENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KGxheWVyLT5zY3JlZW5TcGFjZVRyYW5z
Zm9ybSgpLCB1cGRhdGVDb250ZW50UmVjdCkpKTsKKyAgICB9CiAKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbGF5ZXItPmNoaWxkcmVuKCkuc2l6ZSgpOyArK2kpCiAgICAgICAgIHNhdmVQ
YWludFJlY3RzKGxheWVyLT5jaGlsZHJlbigpW2ldLmdldCgpKTsKQEAgLTk0LDcgKzk3LDcgQEAg
dm9pZCBDQ0RlYnVnUmVjdEhpc3Rvcnk6OnNhdmVQcm9wZXJ0eUNoYW5nZWRSZWN0cyhjb25zdCBW
ZWN0b3I8Q0NMYXllckltcGwqPiYgcmUKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICAgICAgaWYgKGxheWVyLT5sYXllclByb3BlcnR5Q2hhbmdlZCgpKQotICAgICAgICAgICAg
ICAgIG1fZGVidWdSZWN0cy5hcHBlbmQoQ0NEZWJ1Z1JlY3QoUHJvcGVydHlDaGFuZ2VkUmVjdFR5
cGUsIENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KGxheWVyLT5zY3JlZW5TcGFjZVRyYW5zZm9y
bSgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBsYXllci0+Ym91bmRzKCkpKSkpOwor
ICAgICAgICAgICAgICAgIG1fZGVidWdSZWN0cy5hcHBlbmQoQ0NEZWJ1Z1JlY3QoUHJvcGVydHlD
aGFuZ2VkUmVjdFR5cGUsIENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KGxheWVyLT5zY3JlZW5T
cGFjZVRyYW5zZm9ybSgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBsYXllci0+Y29u
dGVudEJvdW5kcygpKSkpKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENv
bW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RDb21tb24uY3BwCmluZGV4IGViNzQwOWI2YmFmMWI3NzY5Nzk1MjY2ZmYx
NWE2MjVhNzg2ZTYwZTUuLmY0OTgwYzYxZmQxNDhjZjExNTE0NWE1MzVmNDI0ZTU4OGJjYzIwODYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcApAQCAtNDQwLDgg
KzQ0MCw4IEBAIHN0YXRpYyBib29sIGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zSW50ZXJuYWwoTGF5
ZXJUeXBlKiBsYXllciwgTGF5ZXJUeXBlKiByb290TGF5CiAgICAgLy8gICAgICAgIEludGVycHJl
dGluZyB0aGUgbWF0aCBsZWZ0LXRvLXJpZ2h0LCB0aGlzIHRyYW5zZm9ybXMgZnJvbSB0aGUgbGF5
ZXIncyByZW5kZXIgc3VyZmFjZSB0byB0aGUgb3JpZ2luIG9mIHRoZSBsYXllciBpbiBjb250ZW50
IHNwYWNlLgogICAgIC8vCiAgICAgLy8gVGhlIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm0gaXM6Ci0g
ICAgLy8gICAgICAgIE1bc2NyZWVuc3BhY2VdID0gTVtyb290XSAqIFRyW29yaWdpbl0gKiBjb21w
b3NpdGVMYXllclRyYW5zZm9ybQotICAgIC8vICAgICAgICAgICAgICAgICAgICAgICA9IE1bcm9v
dF0gKiBUcltsYXllci0+cG9zaXRpb24oKV0gKiBNW2xheWVyXSAqIFRyW29yaWdpbjJhbmNob3Jd
LmludmVyc2UoKQorICAgIC8vICAgICAgICBNW3NjcmVlbnNwYWNlXSA9IE1bcm9vdF0gKiBUcltv
cmlnaW5dICogY29tcG9zaXRlTGF5ZXJUcmFuc2Zvcm0gKiBTW2NvbnRlbnQybGF5ZXJdCisgICAg
Ly8gICAgICAgICAgICAgICAgICAgICAgID0gTVtyb290XSAqIFRyW2xheWVyLT5wb3NpdGlvbigp
XSAqIE1bbGF5ZXJdICogVHJbb3JpZ2luMmFuY2hvcl0uaW52ZXJzZSgpICogU1tjb250ZW50Mmxh
eWVyXQogICAgIC8vCiAgICAgLy8gICAgICAgIEludGVycHJldGluZyB0aGUgbWF0aCBsZWZ0LXRv
LXJpZ2h0LCB0aGlzIHRyYW5zZm9ybXMgZnJvbSB0aGUgcm9vdCBsYXllciBzcGFjZSB0byB0aGUg
bG9jYWwgbGF5ZXIncyBvcmlnaW4gaW4gbGF5ZXIgc3BhY2UuCiAgICAgLy8KQEAgLTY0MSwxMiAr
NjQxLDYgQEAgc3RhdGljIGJvb2wgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNJbnRlcm5hbChMYXll
clR5cGUqIGxheWVyLCBMYXllclR5cGUqIHJvb3RMYXkKICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBsYXllclNjcmVlblNwYWNlVHJhbnNmb3JtID0gbmV4dEhpZXJhcmNoeU1hdHJpeDsKICAg
ICBsYXllclNjcmVlblNwYWNlVHJhbnNmb3JtLnNjYWxlKDEgLyBjb250ZW50c1NjYWxlKTsKICAg
ICBsYXllclNjcmVlblNwYWNlVHJhbnNmb3JtLm11bHRpcGx5KGxheWVyLT5kcmF3VHJhbnNmb3Jt
KCkpOwotICAgIC8vIFRoZSBkcmF3IHRyYW5zZm9ybSBpcyBpbiBjb250ZW50IHNwYWNlLiBUaGlz
IG5lZWRzIHRvIGJlIGNvbnZlcnRlZCBiYWNrIHRvIGxheWVyIHNwYWNlLgotICAgIC8vIEZJWE1F
OiBNYWtlIGxheWVyIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm1zIG9wZXJhdGUgb24gY29udGVudCBz
cGFjZSByZWN0cy4KLSAgICBpZiAoIWxheWVyLT5jb250ZW50Qm91bmRzKCkuaXNFbXB0eSgpICYm
ICFsYXllci0+Ym91bmRzKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGxheWVyU2NyZWVuU3BhY2VU
cmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3JtKGxheWVyLT5jb250ZW50Qm91bmRzKCkud2lkdGgoKSAv
IHN0YXRpY19jYXN0PGRvdWJsZT4obGF5ZXItPmJvdW5kcygpLndpZHRoKCkpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci0+Y29udGVudEJv
dW5kcygpLmhlaWdodCgpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihsYXllci0+Ym91bmRzKCkuaGVp
Z2h0KCkpKTsKLSAgICB9CiAgICAgbGF5ZXItPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKGxheWVy
U2NyZWVuU3BhY2VUcmFuc2Zvcm0pOwogCiAgICAgLy8gZHJhd2FibGVDb250ZW50UmVjdCgpIGlz
IGFsd2F5cyBzdG9yZWQgaW4gdGhlIGNvb3JkaW5hdGUgc3lzdGVtIG9mIHRoZQpAQCAtNzQwLDEz
ICs3MzQsNyBAQCBzdGF0aWMgYm9vbCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0ludGVybmFsKExh
eWVyVHlwZSogbGF5ZXIsIExheWVyVHlwZSogcm9vdExheQogICAgICAgICAvLyBjbGlwUmVjdCB0
byBiZSBleHByZXNzZWQgaW4gdGhlIG5ldyBzdXJmYWNlJ3MgY29vcmRpbmF0ZSBzeXN0ZW0uCiAg
ICAgICAgIGxheWVyLT5zZXRDbGlwUmVjdChsYXllci0+ZHJhd2FibGVDb250ZW50UmVjdCgpKTsK
IAotICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzY3JlZW5TcGFjZVRyYW5zZm9ybSA9
IGxheWVyLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpOwotICAgICAgICAvLyBGSVhNRTogVGhlc2Ug
c2hvdWxkIGJlIGNvbnNpc3RlbnQuCi0gICAgICAgIC8vIFRoZSBsYXllcidzIHNjcmVlbiBzcGFj
ZSB0cmFuc2Zvcm0gb3BlcmF0ZXMgb24gbGF5ZXIgcmVjdHMsIGJ1dCB0aGUgc3VyZmFjZXMKLSAg
ICAgICAgLy8gc2NyZWVuIHNwYWNlIHRyYW5zZm9ybSBvcGVyYXRlcyBvbiBzdXJmYWNlIHJlY3Rz
LCB3aGljaCBhcmUgaW4gcGh5c2ljYWwgcGl4ZWxzLAotICAgICAgICAvLyBzbyB3ZSBoYXZlIHRv
ICd1bmRvJyB0aGUgc2NhbGUgaGVyZS4KLSAgICAgICAgc2NyZWVuU3BhY2VUcmFuc2Zvcm0uc2Nh
bGUoMSAvIGNvbnRlbnRzU2NhbGUpOwotICAgICAgICByZW5kZXJTdXJmYWNlLT5zZXRTY3JlZW5T
cGFjZVRyYW5zZm9ybShzY3JlZW5TcGFjZVRyYW5zZm9ybSk7CisgICAgICAgIHJlbmRlclN1cmZh
Y2UtPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKGxheWVyLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgp
KTsKIAogICAgICAgICBpZiAobGF5ZXItPnJlcGxpY2FMYXllcigpKSB7CiAgICAgICAgICAgICBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzdXJmYWNlT3JpZ2luVG9SZXBsaWNhT3JpZ2luVHJhbnNm
b3JtOwpAQCAtOTA0LDggKzg5Miw4IEBAIENDTGF5ZXJJbXBsKiBDQ0xheWVyVHJlZUhvc3RDb21t
b246OmZpbmRMYXllclRoYXRJc0hpdEJ5UG9pbnQoY29uc3QgSW50UG9pbnQmIHZpCiAKICAgICAg
ICAgQ0NMYXllckltcGwqIGN1cnJlbnRMYXllciA9ICgqaXQpOwogCi0gICAgICAgIEZsb2F0UmVj
dCBsYXllclJlY3QoRmxvYXRQb2ludDo6emVybygpLCBjdXJyZW50TGF5ZXItPmJvdW5kcygpKTsK
LSAgICAgICAgaWYgKCFwb2ludEhpdHNSZWN0KHZpZXdwb3J0UG9pbnQsIGN1cnJlbnRMYXllci0+
c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSwgbGF5ZXJSZWN0KSkKKyAgICAgICAgRmxvYXRSZWN0IGNv
bnRlbnRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgY3VycmVudExheWVyLT5jb250ZW50Qm91bmRz
KCkpOworICAgICAgICBpZiAoIXBvaW50SGl0c1JlY3Qodmlld3BvcnRQb2ludCwgY3VycmVudExh
eWVyLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLCBjb250ZW50UmVjdCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKIAogICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCB3ZSB0aGluayB0aGUgcG9pbnQg
ZG9lcyBoaXQgdGhlIGxheWVyLCBidXQgd2UgbmVlZCB0byB3YWxrIHVwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRy
YWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NPY2NsdXNpb25UcmFja2VyLmNwcAppbmRleCA3N2E0OWRiMzE3MDVhYWMzZTE3NjgyMzM5MGMz
YjNjZjg5MTMwODQ1Li5hN2UzZDFiNjBjZmFlMTJmMDdlMzMwMzM5ZTUyMDUxMDZmYTA5NGRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q09jY2x1c2lvblRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKQEAgLTI2NSwyNSArMjY1LDYg
QEAgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5
cGU+OjpsZWF2ZVRvUmVuZGVyVGFyZ2V0KGMKICAgICB9CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IExheWVyVHlwZT4KLXN0YXRpYyBpbmxpbmUgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVu
dFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm0oY29uc3QgTGF5ZXJUeXBlKiBsYXllcikKLXsKLSAgICBB
U1NFUlQobGF5ZXJUcmFuc2Zvcm1zVG9TY3JlZW5Lbm93bihsYXllcikpOwotICAgIEludFNpemUg
Ym91bmRzSW5MYXllclNwYWNlID0gbGF5ZXItPmJvdW5kcygpOwotICAgIEludFNpemUgYm91bmRz
SW5Db250ZW50U3BhY2UgPSBsYXllci0+Y29udGVudEJvdW5kcygpOwotCi0gICAgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gbGF5ZXItPnNjcmVlblNwYWNlVHJhbnNmb3JtKCk7
Ci0KLSAgICBpZiAoYm91bmRzSW5Db250ZW50U3BhY2UuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gdHJhbnNmb3JtOwotCi0gICAgLy8gU2NhbGUgZnJvbSBjb250ZW50IHNwYWNlIHRvIGxheWVy
IHNwYWNlCi0gICAgdHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9ybShib3VuZHNJbkxheWVyU3BhY2Uu
d2lkdGgoKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4oYm91bmRzSW5Db250ZW50U3BhY2Uud2lkdGgo
KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZHNJbkxheWVyU3BhY2UuaGVp
Z2h0KCkgLyBzdGF0aWNfY2FzdDxkb3VibGU+KGJvdW5kc0luQ29udGVudFNwYWNlLmhlaWdodCgp
KSk7Ci0KLSAgICByZXR1cm4gdHJhbnNmb3JtOwotfQotCiAvLyBGSVhNRTogUmVtb3ZlIHVzZVBh
aW50VHJhY2tpbmcgd2hlbiBwYWludCB0cmFja2luZyBpcyBvbiBmb3IgcGFpbnQgY3VsbGluZy4K
IHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4KIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRPY2Ns
dXNpb25CZWhpbmRMYXllcihSZWdpb24mIHJlZ2lvbiwgY29uc3QgTGF5ZXJUeXBlKiBsYXllciwg
Y29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgUmVnaW9uJiBv
cGFxdWVDb250ZW50cywgY29uc3QgSW50UmVjdCYgc2Npc3NvclJlY3QsIGNvbnN0IEludFNpemUm
IG1pbmltdW1UcmFja2luZ1NpemUsIFZlY3RvcjxJbnRSZWN0Piogb2NjbHVkaW5nU2NyZWVuU3Bh
Y2VSZWN0cykKQEAgLTM0Miw3ICszMjMsNyBAQCB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8
TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46Om1hcmtPY2NsdWRlZEJlaGluZExheQogICAg
ICAgICBpZiAoY2xpcHBlZCB8fCAhc2Npc3NvckluU2NyZWVuUXVhZC5pc1JlY3RpbGluZWFyKCkp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIEludFJlY3Qgc2Npc3NvckluU2NyZWVuUmVj
dCA9IGludGVyc2VjdGlvbihtX3NjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgZW5jbG9zZWRJbnRS
ZWN0KHNjaXNzb3JJblNjcmVlblF1YWQuYm91bmRpbmdCb3goKSkpOwotICAgICAgICBhZGRPY2Ns
dXNpb25CZWhpbmRMYXllcjxMYXllclR5cGU+KG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2Ny
ZWVuLCBsYXllciwgY29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXll
ciksIG9wYXF1ZUNvbnRlbnRzLCBzY2lzc29ySW5TY3JlZW5SZWN0LCBtX21pbmltdW1UcmFja2lu
Z1NpemUsIG1fb2NjbHVkaW5nU2NyZWVuU3BhY2VSZWN0cyk7CisgICAgICAgIGFkZE9jY2x1c2lv
bkJlaGluZExheWVyPExheWVyVHlwZT4obV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4s
IGxheWVyLCBsYXllci0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSwgb3BhcXVlQ29udGVudHMsIHNj
aXNzb3JJblNjcmVlblJlY3QsIG1fbWluaW11bVRyYWNraW5nU2l6ZSwgbV9vY2NsdWRpbmdTY3Jl
ZW5TcGFjZVJlY3RzKTsKICAgICB9CiB9CiAKQEAgLTM2NSw3ICszNDYsNyBAQCBib29sIENDT2Nj
bHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46Om9jY2x1ZGVk
KGNvbnN0IExheWVyVAogCiAgICAgQVNTRVJUKGxheWVyLT5yZW5kZXJUYXJnZXQoKSA9PSBtX3N0
YWNrLmxhc3QoKS50YXJnZXQpOwogCi0gICAgaWYgKGxheWVyVHJhbnNmb3Jtc1RvU2NyZWVuS25v
d24obGF5ZXIpICYmIHRlc3RDb250ZW50UmVjdE9jY2x1ZGVkKGNvbnRlbnRSZWN0LCBjb250ZW50
VG9TY3JlZW5TcGFjZVRyYW5zZm9ybTxMYXllclR5cGU+KGxheWVyKSwgbV9zY2lzc29yUmVjdElu
U2NyZWVuU3BhY2UsIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuKSkKKyAgICBpZiAo
bGF5ZXJUcmFuc2Zvcm1zVG9TY3JlZW5Lbm93bihsYXllcikgJiYgdGVzdENvbnRlbnRSZWN0T2Nj
bHVkZWQoY29udGVudFJlY3QsIGxheWVyLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLCBtX3NjaXNz
b3JSZWN0SW5TY3JlZW5TcGFjZSwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4pKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAobGF5ZXJUcmFuc2Zvcm1zVG9UYXJnZXRLbm93
bihsYXllcikgJiYgdGVzdENvbnRlbnRSZWN0T2NjbHVkZWQoY29udGVudFJlY3QsIGxheWVyLT5k
cmF3VHJhbnNmb3JtKCksIGxheWVyU2Npc3NvclJlY3RJblRhcmdldFN1cmZhY2UobGF5ZXIpLCBt
X3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpA
QCAtNDEwLDcgKzM5MSw3IEBAIEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5
cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6dW5vY2NsdWRlZENvbnRlbnRSCiAKICAgICBJbnRSZWN0
IHVub2NjbHVkZWRJblNjcmVlbiA9IGNvbnRlbnRSZWN0OwogICAgIGlmIChsYXllclRyYW5zZm9y
bXNUb1NjcmVlbktub3duKGxheWVyKSkKLSAgICAgICAgdW5vY2NsdWRlZEluU2NyZWVuID0gY29t
cHV0ZVVub2NjbHVkZWRDb250ZW50UmVjdChjb250ZW50UmVjdCwgY29udGVudFRvU2NyZWVuU3Bh
Y2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXllciksIG1fc2Npc3NvclJlY3RJblNjcmVlblNwYWNl
LCBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbik7CisgICAgICAgIHVub2NjbHVkZWRJ
blNjcmVlbiA9IGNvbXB1dGVVbm9jY2x1ZGVkQ29udGVudFJlY3QoY29udGVudFJlY3QsIGxheWVy
LT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLCBtX3NjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgbV9z
dGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4pOwogCiAgICAgaWYgKHVub2NjbHVkZWRJblNj
cmVlbi5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB1bm9jY2x1ZGVkSW5TY3JlZW47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1v
blRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RD
b21tb25UZXN0LmNwcAppbmRleCA1MTExNTQ3NTE1MGRkZWJjNGMxNjAwMTFhZTk3OGJlZmMyNjI3
YWZhLi44NDM2OTQ4ZWJkYWRhZjg3YWI1ZDY2OTBjNmJiMTc0MTcxY2MyZjk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29t
bW9uVGVzdC5jcHAKQEAgLTMxNzYsOCArMzE3Niw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29t
bW9uVGVzdCwgdmVyaWZ5SGl0VGVzdGluZ0ZvclNpbmdsZUxheWVyV2l0aFNjYWxlZENvbnRlbnRz
CiAgICAgLy8gc2NyZWVuU3BhY2VUcmFuc2Zvcm0gY29udmVydHMgZnJvbSB0aGUgbGF5ZXIncyBv
cmlnaW4gc3BhY2UgdG8gc2NyZWVuIHNwYWNlLiBUaGlzCiAgICAgLy8gdGVzdCBtYWtlcyBzdXJl
IHRoYXQgaGl0IHRlc3Rpbmcgd29ya3MgY29ycmVjdGx5IGFjY291bnRzIGZvciB0aGUgY29udGVu
dHMgc2NhbGUuCiAgICAgLy8gQSBjb250ZW50c1NjYWxlIHRoYXQgaXMgbm90IDEgZWZmZWN0aXZl
bHkgZm9yY2VzIGEgbm9uLWlkZW50aXR5IHRyYW5zZm9ybSBiZXR3ZWVuCi0gICAgLy8gbGF5ZXIn
cyBjb250ZW50IHNwYWNlIGFuZCBsYXllcidzIG9yaWdpbiBzcGFjZSwgd2hpY2ggaXMgbm90IGlu
Y2x1ZGVkIGluIHRoZQotICAgIC8vIHNjcmVlblNwYWNlVHJhbnNmb3Jtbi4gVGhlIGhpdCB0ZXN0
aW5nIGNvZGUgbXVzdCB0YWtlIHRoaXMgaW50byBhY2NvdW50LgorICAgIC8vIGxheWVyJ3MgY29u
dGVudCBzcGFjZSBhbmQgbGF5ZXIncyBvcmlnaW4gc3BhY2UuIFRoZSBoaXQgdGVzdGluZyBjb2Rl
IG11c3QgdGFrZSB0aGlzIGludG8gYWNjb3VudC4KICAgICAvLwogICAgIC8vIFRvIHRlc3QgdGhp
cywgdGhlIGxheWVyIGlzIHBvc2l0aW9uZWQgYXQgKDI1LCAyNSksIGFuZCBpcyBzaXplICg1MCwg
NTApLiBJZgogICAgIC8vIGNvbnRlbnRzU2NhbGUgaXMgaWdub3JlZCwgdGhlbiBoaXQgdGVzdGlu
ZyB3aWxsIG1pcy1pbnRlcnByZXQgdGhlIHZpc2libGVDb250ZW50UmVjdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAK
aW5kZXggZWEzMDU5ZDJiZTc4ODI3NTVmODlkYTBkODNmMDIyMWZiZTQyMWMwNi4uMjkxNWRmNzkz
NTQwMzdhN2E5ZWRmZDVjMDhjNWM1M2YyNzUyNDhjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0xMjMw
LDYgKzEyMzAsMTAgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRl
ZFdpdGhPY2NsdXNpb25BbmRTY2FsaW5nKQogICAgIC8vIHBpeGVscywgd2hpY2ggbWVhbnMgbm9u
ZSBzaG91bGQgYmUgb2NjbHVkZWQuCiAgICAgbGF5ZXItPnNldENvbnRlbnRzU2NhbGUoMC41KTsK
ICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoNjAwLCA2MDApKTsKKyAgICBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBkcmF3VHJhbnNmb3JtOworICAgIGRyYXdUcmFuc2Zvcm0uc2NhbGUoMSAv
IGxheWVyLT5jb250ZW50c1NjYWxlKCkpOworICAgIGxheWVyLT5zZXREcmF3VHJhbnNmb3JtKGRy
YXdUcmFuc2Zvcm0pOworICAgIGxheWVyLT5zZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShkcmF3VHJh
bnNmb3JtKTsKIAogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDIwMCwgMjAwLCAz
MDAsIDEwMCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdChJbnRQ
b2ludCgpLCBsYXllci0+Y29udGVudEJvdW5kcygpKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153656</attachid>
            <date>2012-07-20 23:58:25 -0700</date>
            <delta_ts>2012-07-21 18:42:55 -0700</delta_ts>
            <desc>Rebased onto patch sequence</desc>
            <filename>bug-91807-20120720235821.patch</filename>
            <type>text/plain</type>
            <size>21786</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMjg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTZiZjYzODMyZjgwZjAx
ZDQ3NzE0YTVkYTg5OTJiN2Q3ZDc2NjA2NC4uNGYyY2Q2YjlkNjZkODlmNzQyYjgwYTVmODNkMWUy
ZDg4M2FkNjM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA3LTE5ICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBNYWtl
IGFsbCBjb21wb3NpdG9yIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm1zIG9wZXJhdGUgb24gY29udGVu
dCByZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTE4MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQ
cmV2aW91c2x5LCBzdXJmYWNlIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm1zIG9wZXJhdGVkIG9uIHN1
cmZhY2UKKyAgICAgICAgY29udGVudCBzcGFjZSBidXQgbGF5ZXIgc2NyZWVuIHNwYWNlIHRyYW5z
Zm9ybXMgb3BlcmF0ZWQgb24gbGF5ZXIKKyAgICAgICAgc3BhY2UuIEZvciB0aGUgcHVycG9zZSBv
ZiBjb25zaXN0ZW5jeSwgdW5pZnkgdGhlc2UgdHdvIHNvIHRoYXQgdGhleQorICAgICAgICBib3Ro
IG9wZXJhdGUgb24gY29udGVudCBzcGFjZS4KKworICAgICAgICBObyB0ZXN0cywgYmVjYXVzZSBu
byBjaGFuZ2UgaW4gYmVoYXZpb3IgZXhwZWN0ZWQuIEp1c3QgYSByZWZhY3RvcmluZy4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAg
ICAgKExheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnUmVj
dEhpc3Rvcnk6OnNhdmVQYWludFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDRGVidWdSZWN0
SGlzdG9yeTo6c2F2ZVByb3BlcnR5Q2hhbmdlZFJlY3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNJbnRlcm5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3RDb21tb246OmZpbmRMYXllclRoYXRJc0hpdEJ5UG9pbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjo6Om1hcmtPY2NsdWRlZEJlaGluZExheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Ojo6b2NjbHVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Ojp1bm9jY2x1
ZGVkQ29udGVudFJlY3QpOgorCiAyMDEyLTA3LTIwICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdv
b2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBVbmlmeSBjb21wb3NpdG9yIHF1YWRUcmFu
c2Zvcm0vZHJhd1RyYW5zZm9ybS9vcmlnaW5UcmFuc2Zvcm0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggYjg5ZDdiOGY4NWEwZGMxY2ZkNWY1ZjYzNWVlYWU3MGNiMzhhM2Q3Ni4uY2UxM2Rl
YWZlNzdjYWM5ODM5NGQzNjE1ODk4Mzk2MWZmYTZjNjY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNy0xOSAgQWRyaWVubmUgV2Fsa2VyICA8ZW5u
ZUBnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFrZSBhbGwgY29tcG9zaXRvciBz
Y3JlZW4gc3BhY2UgdHJhbnNmb3JtcyBvcGVyYXRlIG9uIGNvbnRlbnQgcmVjdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODA3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRlc3RzIHRoYXQg
ZGVhbCB3aXRoIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm1zIHRvIHJlZmxlY3QgdGhpcyBjaGFuZ2Uu
CisKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcDoKKyAgICAg
ICAgKiB0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKwogMjAxMi0wNy0yMCAgQWRy
aWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gVW5p
ZnkgY29tcG9zaXRvciBxdWFkVHJhbnNmb3JtL2RyYXdUcmFuc2Zvcm0vb3JpZ2luVHJhbnNmb3Jt
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllckNocm9taXVtLmgKaW5kZXggODMwNThlNjMzYTY0NzZkMjRiNzcyNGU2NTcxNjJhYjhk
MzJlOWJkNS4uMmQ1NTM0NTZkYTZjNzdlYzg1ZTk2ZTYwMmM0ZDg0NWVkZGU5NmVhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyQ2hyb21pdW0uaApAQCAtMjUxLDcgKzI1MSw3IEBAIHB1YmxpYzoKICAgICAvLyByb290IHJl
bmRlciBzdXJmYWNlLCB0aGVuIHRoaXMgY29udmVydHMgdG8gcGh5c2ljYWwgcGl4ZWxzKS4KICAg
ICBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKCkg
Y29uc3QgeyByZXR1cm4gbV9kcmF3VHJhbnNmb3JtOyB9CiAgICAgdm9pZCBzZXREcmF3VHJhbnNm
b3JtKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkgeyBtX2Ry
YXdUcmFuc2Zvcm0gPSBtYXRyaXg7IH0KLSAgICAvLyBUaGlzIG1vdmVzIGZyb20gbGF5ZXIgc3Bh
Y2UsIHdpdGggb3JpZ2luIHRoZSB0b3AgbGVmdCB0byBzY3JlZW4gc3BhY2Ugd2l0aCBvcmlnaW4g
aW4gdGhlIHRvcCBsZWZ0LgorICAgIC8vIFRoaXMgbW92ZXMgZnJvbSBjb250ZW50IHNwYWNlLCB3
aXRoIG9yaWdpbiB0aGUgdG9wIGxlZnQgdG8gc2NyZWVuIHNwYWNlIHdpdGggb3JpZ2luIGluIHRo
ZSB0b3AgbGVmdC4KICAgICAvLyBJdCBjb252ZXJ0cyBsb2dpY2FsLCBub24tcGFnZS1zY2FsZWQg
cGl4ZWxzIHRvIHBoeXNpY2FsIHBpeGVscy4KICAgICBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9y
bWF0aW9uTWF0cml4JiBzY3JlZW5TcGFjZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Ny
ZWVuU3BhY2VUcmFuc2Zvcm07IH0KICAgICB2b2lkIHNldFNjcmVlblNwYWNlVHJhbnNmb3JtKGNv
bnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkgeyBtX3NjcmVlblNw
YWNlVHJhbnNmb3JtID0gbWF0cml4OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5
LmNwcAppbmRleCBjNjEzMjE3OGUxNjM5MzM1ZDAxNGM4NmRlYjg2NmE2M2I1YmQ3Njc4Li4wYWY0
NmE0Yzk2NWU0M2U3M2UyYTFmODdjZGE2YjI2M2Y0M2NlN2NhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3Rvcnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
RGVidWdSZWN0SGlzdG9yeS5jcHAKQEAgLTcyLDggKzcyLDExIEBAIHZvaWQgQ0NEZWJ1Z1JlY3RI
aXN0b3J5OjpzYXZlUGFpbnRSZWN0cyhDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgLy8gcmVnYXJk
bGVzcyBvZiB3aGV0aGVyIHRoaXMgbGF5ZXIgaXMgc2tpcHBlZCBmb3IgYWN0dWFsIGRyYXdpbmcg
b3Igbm90LiBUaGVyZWZvcmUKICAgICAvLyB3ZSB0cmF2ZXJzZSByZWN1cnNpdmVseSBvdmVyIGFs
bCBsYXllcnMsIG5vdCBqdXN0IHRoZSByZW5kZXIgc3VyZmFjZSBsaXN0LgogCi0gICAgaWYgKCFs
YXllci0+dXBkYXRlUmVjdCgpLmlzRW1wdHkoKSAmJiBsYXllci0+ZHJhd3NDb250ZW50KCkpCi0g
ICAgICAgIG1fZGVidWdSZWN0cy5hcHBlbmQoQ0NEZWJ1Z1JlY3QoUGFpbnRSZWN0VHlwZSwgQ0NN
YXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3QobGF5ZXItPnNjcmVlblNwYWNlVHJhbnNmb3JtKCksIGxh
eWVyLT51cGRhdGVSZWN0KCkpKSk7CisgICAgaWYgKCFsYXllci0+dXBkYXRlUmVjdCgpLmlzRW1w
dHkoKSAmJiBsYXllci0+ZHJhd3NDb250ZW50KCkpIHsKKyAgICAgICAgRmxvYXRSZWN0IHVwZGF0
ZUNvbnRlbnRSZWN0ID0gbGF5ZXItPnVwZGF0ZVJlY3QoKTsKKyAgICAgICAgdXBkYXRlQ29udGVu
dFJlY3Quc2NhbGUobGF5ZXItPmNvbnRlbnRCb3VuZHMoKS53aWR0aCgpIC8gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGxheWVyLT5ib3VuZHMoKS53aWR0aCgpKSwgbGF5ZXItPmNvbnRlbnRCb3VuZHMoKS5o
ZWlnaHQoKSAvIHN0YXRpY19jYXN0PGZsb2F0PihsYXllci0+Ym91bmRzKCkuaGVpZ2h0KCkpKTsK
KyAgICAgICAgbV9kZWJ1Z1JlY3RzLmFwcGVuZChDQ0RlYnVnUmVjdChQYWludFJlY3RUeXBlLCBD
Q01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChsYXllci0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSwg
dXBkYXRlQ29udGVudFJlY3QpKSk7CisgICAgfQogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGxheWVyLT5jaGlsZHJlbigpLnNpemUoKTsgKytpKQogICAgICAgICBzYXZlUGFpbnRSZWN0
cyhsYXllci0+Y2hpbGRyZW4oKVtpXS5nZXQoKSk7CkBAIC05NCw3ICs5Nyw3IEBAIHZvaWQgQ0NE
ZWJ1Z1JlY3RIaXN0b3J5OjpzYXZlUHJvcGVydHlDaGFuZ2VkUmVjdHMoY29uc3QgVmVjdG9yPEND
TGF5ZXJJbXBsKj4mIHJlCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAg
IGlmIChsYXllci0+bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSkKLSAgICAgICAgICAgICAgICBtX2Rl
YnVnUmVjdHMuYXBwZW5kKENDRGVidWdSZWN0KFByb3BlcnR5Q2hhbmdlZFJlY3RUeXBlLCBDQ01h
dGhVdGlsOjptYXBDbGlwcGVkUmVjdChsYXllci0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSwgRmxv
YXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbGF5ZXItPmJvdW5kcygpKSkpKTsKKyAgICAgICAg
ICAgICAgICBtX2RlYnVnUmVjdHMuYXBwZW5kKENDRGVidWdSZWN0KFByb3BlcnR5Q2hhbmdlZFJl
Y3RUeXBlLCBDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChsYXllci0+c2NyZWVuU3BhY2VUcmFu
c2Zvcm0oKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbGF5ZXItPmNvbnRlbnRCb3Vu
ZHMoKSkpKSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0Q29tbW9uLmNwcAppbmRleCAxYzYzZTVmMTRkYjgyYzcwZGZlODRkNzJkZTk1NTkyYWIw
YzA0ZDM3Li5hZDgwZTE2NTVlNzg3ODBmYWIxNTdkODYyZDk1ZDZiNzk2NDczZmFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAKQEAgLTQ0MCw4ICs0NDAsOCBA
QCBzdGF0aWMgYm9vbCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0ludGVybmFsKExheWVyVHlwZSog
bGF5ZXIsIExheWVyVHlwZSogcm9vdExheQogICAgIC8vICAgICAgICBJbnRlcnByZXRpbmcgdGhl
IG1hdGggbGVmdC10by1yaWdodCwgdGhpcyB0cmFuc2Zvcm1zIGZyb20gdGhlIGxheWVyJ3MgcmVu
ZGVyIHN1cmZhY2UgdG8gdGhlIG9yaWdpbiBvZiB0aGUgbGF5ZXIgaW4gY29udGVudCBzcGFjZS4K
ICAgICAvLwogICAgIC8vIFRoZSBzY3JlZW4gc3BhY2UgdHJhbnNmb3JtIGlzOgotICAgIC8vICAg
ICAgICBNW3NjcmVlbnNwYWNlXSA9IE1bcm9vdF0gKiBUcltvcmlnaW5dICogY29tcG9zaXRlTGF5
ZXJUcmFuc2Zvcm0KLSAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgPSBNW3Jvb3RdICogVHJb
bGF5ZXItPnBvc2l0aW9uKCldICogTVtsYXllcl0gKiBUcltvcmlnaW4yYW5jaG9yXS5pbnZlcnNl
KCkKKyAgICAvLyAgICAgICAgTVtzY3JlZW5zcGFjZV0gPSBNW3Jvb3RdICogVHJbb3JpZ2luXSAq
IGNvbXBvc2l0ZUxheWVyVHJhbnNmb3JtICogU1tjb250ZW50MmxheWVyXQorICAgIC8vICAgICAg
ICAgICAgICAgICAgICAgICA9IE1bcm9vdF0gKiBUcltsYXllci0+cG9zaXRpb24oKV0gKiBNW2xh
eWVyXSAqIFRyW29yaWdpbjJhbmNob3JdLmludmVyc2UoKSAqIFNbY29udGVudDJsYXllcl0KICAg
ICAvLwogICAgIC8vICAgICAgICBJbnRlcnByZXRpbmcgdGhlIG1hdGggbGVmdC10by1yaWdodCwg
dGhpcyB0cmFuc2Zvcm1zIGZyb20gdGhlIHJvb3QgcmVuZGVyIHN1cmZhY2UncyBjb250ZW50IHNw
YWNlIHRvIHRoZSBsb2NhbCBsYXllcidzIG9yaWdpbiBpbiBsYXllciBzcGFjZS4KICAgICAvLwpA
QCAtNTI0LDE1ICs1MjQsOSBAQCBzdGF0aWMgYm9vbCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0lu
dGVybmFsKExheWVyVHlwZSogbGF5ZXIsIExheWVyVHlwZSogcm9vdExheQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci0+Ym91bmRzKCkuaGVpZ2h0KCkgLyBzdGF0
aWNfY2FzdDxkb3VibGU+KGxheWVyLT5jb250ZW50Qm91bmRzKCkuaGVpZ2h0KCkpKTsKICAgICB9
CiAKLSAgICAvLyBsYXllclNjcmVlblNwYWNlVHJhbnNmb3JtIHJlcHJlc2VudHMgdGhlIHRyYW5z
Zm9ybSBiZXR3ZWVuIHJvb3QgbGF5ZXIncyAic2NyZWVuIHNwYWNlIiBhbmQgbG9jYWwgbGF5ZXIg
c3BhY2UuCisgICAgLy8gbGF5ZXJTY3JlZW5TcGFjZVRyYW5zZm9ybSByZXByZXNlbnRzIHRoZSB0
cmFuc2Zvcm0gYmV0d2VlbiByb290IGxheWVyJ3MgInNjcmVlbiBzcGFjZSIgYW5kIGxvY2FsIGNv
bnRlbnQgc3BhY2UuCiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJTY3JlZW5TcGFj
ZVRyYW5zZm9ybSA9IGZ1bGxIaWVyYXJjaHlNYXRyaXg7CiAgICAgbGF5ZXJTY3JlZW5TcGFjZVRy
YW5zZm9ybS5tdWx0aXBseShkcmF3VHJhbnNmb3JtKTsKLSAgICAvLyBUaGUgZHJhdyB0cmFuc2Zv
cm0gb3BlcmF0ZXMgb24gY29udGVudCBzcGFjZSByZWN0cy4gVGhpcyBuZWVkcyB0byBiZSBjb252
ZXJ0ZWQgdG8gdHJhbnNmb3JtIGxheWVyIHNwYWNlIHJlY3RzLgotICAgIC8vIEZJWE1FOiBNYWtl
IGxheWVyIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm1zIG9wZXJhdGUgb24gY29udGVudCBzcGFjZSBy
ZWN0cy4KLSAgICBpZiAoIWxheWVyLT5jb250ZW50Qm91bmRzKCkuaXNFbXB0eSgpICYmICFsYXll
ci0+Ym91bmRzKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGxheWVyU2NyZWVuU3BhY2VUcmFuc2Zv
cm0uc2NhbGVOb25Vbmlmb3JtKGxheWVyLT5jb250ZW50Qm91bmRzKCkud2lkdGgoKSAvIHN0YXRp
Y19jYXN0PGRvdWJsZT4obGF5ZXItPmJvdW5kcygpLndpZHRoKCkpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci0+Y29udGVudEJvdW5kcygp
LmhlaWdodCgpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihsYXllci0+Ym91bmRzKCkuaGVpZ2h0KCkp
KTsKLSAgICB9CiAgICAgbGF5ZXItPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKGxheWVyU2NyZWVu
U3BhY2VUcmFuc2Zvcm0pOwogCiAgICAgYm9vbCBhbmltYXRpbmdUcmFuc2Zvcm1Ub1RhcmdldCA9
IGxheWVyLT50cmFuc2Zvcm1Jc0FuaW1hdGluZygpOwpAQCAtNTkxLDYgKzU4NSw3IEBAIHN0YXRp
YyBib29sIGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zSW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwg
TGF5ZXJUeXBlKiByb290TGF5CiAKICAgICAgICAgLy8gVXBkYXRlIHRoZSBhZ2dyZWdhdGUgaGll
cmFyY2h5IG1hdHJpeCB0byBpbmNsdWRlIHRoZSB0cmFuc2Zvcm0gb2YgdGhlIG5ld2x5IGNyZWF0
ZWQgUmVuZGVyU3VyZmFjZS4KICAgICAgICAgbmV4dEhpZXJhcmNoeU1hdHJpeC5tdWx0aXBseShy
ZW5kZXJTdXJmYWNlLT5vcmlnaW5UcmFuc2Zvcm0oKSk7CisgICAgICAgIG5leHRIaWVyYXJjaHlN
YXRyaXguc2NhbGUoMSAvIGNvbnRlbnRzU2NhbGUpOwogCiAgICAgICAgIC8vIFRoZSByZW5kZXIg
c3VyZmFjZSBjbGlwUmVjdCBjb250cmlidXRlcyB0byB0aGUgc2Npc3NvciByZWN0IHRoYXQgbmVl
ZHMgdG8KICAgICAgICAgLy8gYmUgYXBwbGllZCBiZWZvcmUgZHJhd2luZyB0aGUgcmVuZGVyIHN1
cmZhY2Ugb250byBpdHMgY29udGFpbmluZwpAQCAtNzM5LDEzICs3MzQsNyBAQCBzdGF0aWMgYm9v
bCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0ludGVybmFsKExheWVyVHlwZSogbGF5ZXIsIExheWVy
VHlwZSogcm9vdExheQogICAgICAgICAvLyBjbGlwUmVjdCB0byBiZSBleHByZXNzZWQgaW4gdGhl
IG5ldyBzdXJmYWNlJ3MgY29vcmRpbmF0ZSBzeXN0ZW0uCiAgICAgICAgIGxheWVyLT5zZXRDbGlw
UmVjdChsYXllci0+ZHJhd2FibGVDb250ZW50UmVjdCgpKTsKIAotICAgICAgICBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBzY3JlZW5TcGFjZVRyYW5zZm9ybSA9IGxheWVyLT5zY3JlZW5TcGFjZVRy
YW5zZm9ybSgpOwotICAgICAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIGNvbnNpc3RlbnQu
Ci0gICAgICAgIC8vIFRoZSBsYXllcidzIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm0gb3BlcmF0ZXMg
b24gbGF5ZXIgcmVjdHMsIGJ1dCB0aGUgc3VyZmFjZXMKLSAgICAgICAgLy8gc2NyZWVuIHNwYWNl
IHRyYW5zZm9ybSBvcGVyYXRlcyBvbiBzdXJmYWNlIHJlY3RzLCB3aGljaCBhcmUgaW4gcGh5c2lj
YWwgcGl4ZWxzLAotICAgICAgICAvLyBzbyB3ZSBoYXZlIHRvICd1bmRvJyB0aGUgc2NhbGUgaGVy
ZS4KLSAgICAgICAgc2NyZWVuU3BhY2VUcmFuc2Zvcm0uc2NhbGUoMSAvIGNvbnRlbnRzU2NhbGUp
OwotICAgICAgICByZW5kZXJTdXJmYWNlLT5zZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShzY3JlZW5T
cGFjZVRyYW5zZm9ybSk7CisgICAgICAgIHJlbmRlclN1cmZhY2UtPnNldFNjcmVlblNwYWNlVHJh
bnNmb3JtKGxheWVyLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpKTsKIAogICAgICAgICBpZiAobGF5
ZXItPnJlcGxpY2FMYXllcigpKSB7CiAgICAgICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBzdXJmYWNlT3JpZ2luVG9SZXBsaWNhT3JpZ2luVHJhbnNmb3JtOwpAQCAtOTAzLDggKzg5Miw4
IEBAIENDTGF5ZXJJbXBsKiBDQ0xheWVyVHJlZUhvc3RDb21tb246OmZpbmRMYXllclRoYXRJc0hp
dEJ5UG9pbnQoY29uc3QgSW50UG9pbnQmIHZpCiAKICAgICAgICAgQ0NMYXllckltcGwqIGN1cnJl
bnRMYXllciA9ICgqaXQpOwogCi0gICAgICAgIEZsb2F0UmVjdCBsYXllclJlY3QoRmxvYXRQb2lu
dDo6emVybygpLCBjdXJyZW50TGF5ZXItPmJvdW5kcygpKTsKLSAgICAgICAgaWYgKCFwb2ludEhp
dHNSZWN0KHZpZXdwb3J0UG9pbnQsIGN1cnJlbnRMYXllci0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0o
KSwgbGF5ZXJSZWN0KSkKKyAgICAgICAgRmxvYXRSZWN0IGNvbnRlbnRSZWN0KEZsb2F0UG9pbnQ6
Onplcm8oKSwgY3VycmVudExheWVyLT5jb250ZW50Qm91bmRzKCkpOworICAgICAgICBpZiAoIXBv
aW50SGl0c1JlY3Qodmlld3BvcnRQb2ludCwgY3VycmVudExheWVyLT5zY3JlZW5TcGFjZVRyYW5z
Zm9ybSgpLCBjb250ZW50UmVjdCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAv
LyBBdCB0aGlzIHBvaW50LCB3ZSB0aGluayB0aGUgcG9pbnQgZG9lcyBoaXQgdGhlIGxheWVyLCBi
dXQgd2UgbmVlZCB0byB3YWxrIHVwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNw
cAppbmRleCBjNjQ0YjVmM2UxOGRkYTFjYTY3M2M4MmVjOTc0ZmIwOGI3YmVhZjgzLi43NWMzYjc2
ZDAzMzU3ZGFiMDMyNjJhZjk1MjhkZTUzZjhhMGNiNWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2Nj
bHVzaW9uVHJhY2tlci5jcHAKQEAgLTI2NSwyNSArMjY1LDYgQEAgdm9pZCBDQ09jY2x1c2lvblRy
YWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjpsZWF2ZVRvUmVuZGVyVGFy
Z2V0KGMKICAgICB9CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4KLXN0YXRpYyBp
bmxpbmUgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zv
cm0oY29uc3QgTGF5ZXJUeXBlKiBsYXllcikKLXsKLSAgICBBU1NFUlQobGF5ZXJUcmFuc2Zvcm1z
VG9TY3JlZW5Lbm93bihsYXllcikpOwotICAgIEludFNpemUgYm91bmRzSW5MYXllclNwYWNlID0g
bGF5ZXItPmJvdW5kcygpOwotICAgIEludFNpemUgYm91bmRzSW5Db250ZW50U3BhY2UgPSBsYXll
ci0+Y29udGVudEJvdW5kcygpOwotCi0gICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNm
b3JtID0gbGF5ZXItPnNjcmVlblNwYWNlVHJhbnNmb3JtKCk7Ci0KLSAgICBpZiAoYm91bmRzSW5D
b250ZW50U3BhY2UuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdHJhbnNmb3JtOwotCi0gICAg
Ly8gU2NhbGUgZnJvbSBjb250ZW50IHNwYWNlIHRvIGxheWVyIHNwYWNlCi0gICAgdHJhbnNmb3Jt
LnNjYWxlTm9uVW5pZm9ybShib3VuZHNJbkxheWVyU3BhY2Uud2lkdGgoKSAvIHN0YXRpY19jYXN0
PGRvdWJsZT4oYm91bmRzSW5Db250ZW50U3BhY2Uud2lkdGgoKSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib3VuZHNJbkxheWVyU3BhY2UuaGVpZ2h0KCkgLyBzdGF0aWNfY2FzdDxk
b3VibGU+KGJvdW5kc0luQ29udGVudFNwYWNlLmhlaWdodCgpKSk7Ci0KLSAgICByZXR1cm4gdHJh
bnNmb3JtOwotfQotCiAvLyBGSVhNRTogUmVtb3ZlIHVzZVBhaW50VHJhY2tpbmcgd2hlbiBwYWlu
dCB0cmFja2luZyBpcyBvbiBmb3IgcGFpbnQgY3VsbGluZy4KIHRlbXBsYXRlPHR5cGVuYW1lIExh
eWVyVHlwZT4KIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRPY2NsdXNpb25CZWhpbmRMYXllcihSZWdp
b24mIHJlZ2lvbiwgY29uc3QgTGF5ZXJUeXBlKiBsYXllciwgY29uc3QgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgUmVnaW9uJiBvcGFxdWVDb250ZW50cywgY29uc3Qg
SW50UmVjdCYgc2Npc3NvclJlY3QsIGNvbnN0IEludFNpemUmIG1pbmltdW1UcmFja2luZ1NpemUs
IFZlY3RvcjxJbnRSZWN0Piogb2NjbHVkaW5nU2NyZWVuU3BhY2VSZWN0cykKQEAgLTM0Miw3ICsz
MjMsNyBAQCB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJm
YWNlVHlwZT46Om1hcmtPY2NsdWRlZEJlaGluZExheQogICAgICAgICBpZiAoY2xpcHBlZCB8fCAh
c2Npc3NvckluU2NyZWVuUXVhZC5pc1JlY3RpbGluZWFyKCkpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIEludFJlY3Qgc2Npc3NvckluU2NyZWVuUmVjdCA9IGludGVyc2VjdGlvbihtX3Nj
aXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgZW5jbG9zZWRJbnRSZWN0KHNjaXNzb3JJblNjcmVlblF1
YWQuYm91bmRpbmdCb3goKSkpOwotICAgICAgICBhZGRPY2NsdXNpb25CZWhpbmRMYXllcjxMYXll
clR5cGU+KG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuLCBsYXllciwgY29udGVudFRv
U2NyZWVuU3BhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXllciksIG9wYXF1ZUNvbnRlbnRzLCBz
Y2lzc29ySW5TY3JlZW5SZWN0LCBtX21pbmltdW1UcmFja2luZ1NpemUsIG1fb2NjbHVkaW5nU2Ny
ZWVuU3BhY2VSZWN0cyk7CisgICAgICAgIGFkZE9jY2x1c2lvbkJlaGluZExheWVyPExheWVyVHlw
ZT4obV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4sIGxheWVyLCBsYXllci0+c2NyZWVu
U3BhY2VUcmFuc2Zvcm0oKSwgb3BhcXVlQ29udGVudHMsIHNjaXNzb3JJblNjcmVlblJlY3QsIG1f
bWluaW11bVRyYWNraW5nU2l6ZSwgbV9vY2NsdWRpbmdTY3JlZW5TcGFjZVJlY3RzKTsKICAgICB9
CiB9CiAKQEAgLTM3MSw3ICszNTIsNyBAQCBib29sIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5
ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46Om9jY2x1ZGVkKGNvbnN0IExheWVyVAogICAgIGlm
IChsYXllclRyYW5zZm9ybXNUb1RhcmdldEtub3duKGxheWVyKSAmJiB0ZXN0Q29udGVudFJlY3RP
Y2NsdWRlZChjb250ZW50UmVjdCwgbGF5ZXItPmRyYXdUcmFuc2Zvcm0oKSwgbGF5ZXJTY2lzc29y
UmVjdEluVGFyZ2V0U3VyZmFjZShsYXllciksIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluVGFy
Z2V0KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAobGF5ZXJUcmFuc2Zvcm1zVG9T
Y3JlZW5Lbm93bihsYXllcikgJiYgdGVzdENvbnRlbnRSZWN0T2NjbHVkZWQoY29udGVudFJlY3Qs
IGNvbnRlbnRUb1NjcmVlblNwYWNlVHJhbnNmb3JtPExheWVyVHlwZT4obGF5ZXIpLCBtX3NjaXNz
b3JSZWN0SW5TY3JlZW5TcGFjZSwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4pKSB7
CisgICAgaWYgKGxheWVyVHJhbnNmb3Jtc1RvU2NyZWVuS25vd24obGF5ZXIpICYmIHRlc3RDb250
ZW50UmVjdE9jY2x1ZGVkKGNvbnRlbnRSZWN0LCBsYXllci0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0o
KSwgbV9zY2lzc29yUmVjdEluU2NyZWVuU3BhY2UsIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbklu
U2NyZWVuKSkgewogICAgICAgICBpZiAoaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJm
YWNlKQogICAgICAgICAgICAgKmhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSA9
IHRydWU7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDE4LDcgKzM5OSw3IEBAIEludFJlY3Qg
Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6dW5v
Y2NsdWRlZENvbnRlbnRSCiAKICAgICBJbnRSZWN0IHVub2NjbHVkZWRJblNjcmVlbiA9IGNvbnRl
bnRSZWN0OwogICAgIGlmIChsYXllclRyYW5zZm9ybXNUb1NjcmVlbktub3duKGxheWVyKSkKLSAg
ICAgICAgdW5vY2NsdWRlZEluU2NyZWVuID0gY29tcHV0ZVVub2NjbHVkZWRDb250ZW50UmVjdChj
b250ZW50UmVjdCwgY29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXll
ciksIG1fc2Npc3NvclJlY3RJblNjcmVlblNwYWNlLCBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25J
blNjcmVlbik7CisgICAgICAgIHVub2NjbHVkZWRJblNjcmVlbiA9IGNvbXB1dGVVbm9jY2x1ZGVk
Q29udGVudFJlY3QoY29udGVudFJlY3QsIGxheWVyLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLCBt
X3NjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3Jl
ZW4pOwogCiAgICAgSW50UmVjdCB1bm9jY2x1ZGVkSW5UYXJnZXQgPSBjb250ZW50UmVjdDsKICAg
ICBpZiAobGF5ZXJUcmFuc2Zvcm1zVG9UYXJnZXRLbm93bihsYXllcikpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0
LmNwcAppbmRleCAyMzM0YWM2NDIyYmVkOGY0OWNiN2E0YjU4MzdlYWI1M2E3OTYxY2Y5Li5lMWIy
Y2FhYmM5OWYyNmZkMzk5YWNkYjI4ZWVhNDlkOTU4ZDljNDJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5j
cHAKQEAgLTMxNzYsOCArMzE3Niw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwg
dmVyaWZ5SGl0VGVzdGluZ0ZvclNpbmdsZUxheWVyV2l0aFNjYWxlZENvbnRlbnRzCiAgICAgLy8g
c2NyZWVuU3BhY2VUcmFuc2Zvcm0gY29udmVydHMgZnJvbSB0aGUgbGF5ZXIncyBvcmlnaW4gc3Bh
Y2UgdG8gc2NyZWVuIHNwYWNlLiBUaGlzCiAgICAgLy8gdGVzdCBtYWtlcyBzdXJlIHRoYXQgaGl0
IHRlc3Rpbmcgd29ya3MgY29ycmVjdGx5IGFjY291bnRzIGZvciB0aGUgY29udGVudHMgc2NhbGUu
CiAgICAgLy8gQSBjb250ZW50c1NjYWxlIHRoYXQgaXMgbm90IDEgZWZmZWN0aXZlbHkgZm9yY2Vz
IGEgbm9uLWlkZW50aXR5IHRyYW5zZm9ybSBiZXR3ZWVuCi0gICAgLy8gbGF5ZXIncyBjb250ZW50
IHNwYWNlIGFuZCBsYXllcidzIG9yaWdpbiBzcGFjZSwgd2hpY2ggaXMgbm90IGluY2x1ZGVkIGlu
IHRoZQotICAgIC8vIHNjcmVlblNwYWNlVHJhbnNmb3JtLiBUaGUgaGl0IHRlc3RpbmcgY29kZSBt
dXN0IHRha2UgdGhpcyBpbnRvIGFjY291bnQuCisgICAgLy8gbGF5ZXIncyBjb250ZW50IHNwYWNl
IGFuZCBsYXllcidzIG9yaWdpbiBzcGFjZS4gVGhlIGhpdCB0ZXN0aW5nIGNvZGUgbXVzdCB0YWtl
IHRoaXMgaW50byBhY2NvdW50LgogICAgIC8vCiAgICAgLy8gVG8gdGVzdCB0aGlzLCB0aGUgbGF5
ZXIgaXMgcG9zaXRpb25lZCBhdCAoMjUsIDI1KSwgYW5kIGlzIHNpemUgKDUwLCA1MCkuIElmCiAg
ICAgLy8gY29udGVudHNTY2FsZSBpcyBpZ25vcmVkLCB0aGVuIGhpdCB0ZXN0aW5nIHdpbGwgbWlz
LWludGVycHJldCB0aGUgdmlzaWJsZUNvbnRlbnRSZWN0CkBAIC0zNjgwLDE5ICszNjc5LDE1IEBA
IFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5TGF5ZXJUcmFuc2Zvcm1zSW5I
aWdoRFBJKQogICAgIEVYUEVDVF9FUSgxdSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5zaXplKCkp
OwogCiAgICAgLy8gVmVyaWZ5IHBhcmVudCB0cmFuc2Zvcm1zCi0gICAgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXggZXhwZWN0ZWRQYXJlbnRTY3JlZW5TcGFjZVRyYW5zZm9ybTsKLSAgICBleHBlY3Rl
ZFBhcmVudFNjcmVlblNwYWNlVHJhbnNmb3JtLnNldE0xMShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0g
ICAgZXhwZWN0ZWRQYXJlbnRTY3JlZW5TcGFjZVRyYW5zZm9ybS5zZXRNMjIoZGV2aWNlU2NhbGVG
YWN0b3IpOwotICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEocGFyZW50LT5zY3Jl
ZW5TcGFjZVRyYW5zZm9ybSgpLCBleHBlY3RlZFBhcmVudFNjcmVlblNwYWNlVHJhbnNmb3JtKTsK
LSAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZFBhcmVudERyYXdUcmFuc2Zvcm07
Ci0gICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShwYXJlbnQtPmRyYXdUcmFuc2Zv
cm0oKSwgZXhwZWN0ZWRQYXJlbnREcmF3VHJhbnNmb3JtKTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBleHBlY3RlZFBhcmVudFRyYW5zZm9ybTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJ
T05fTUFUUklYX0VRKHBhcmVudC0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSwgZXhwZWN0ZWRQYXJl
bnRUcmFuc2Zvcm0pOworICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEocGFyZW50
LT5kcmF3VHJhbnNmb3JtKCksIGV4cGVjdGVkUGFyZW50VHJhbnNmb3JtKTsKIAogICAgIC8vIFZl
cmlmeSByZXN1bHRzIG9mIHRyYW5zZm9ybWVkIHBhcmVudCByZWN0cwotICAgIEludFJlY3QgcGFy
ZW50Qm91bmRzKEludFBvaW50KCksIHBhcmVudC0+Ym91bmRzKCkpOwotICAgIEludFJlY3QgcGFy
ZW50Q29udGVudEJvdW5kcyhJbnRQb2ludCgpLCBwYXJlbnQtPmNvbnRlbnRCb3VuZHMoKSk7Cisg
ICAgRmxvYXRSZWN0IHBhcmVudENvbnRlbnRCb3VuZHMoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUo
cGFyZW50LT5jb250ZW50Qm91bmRzKCkpKTsKIAotICAgIEZsb2F0UmVjdCBwYXJlbnREcmF3UmVj
dCA9IENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KHBhcmVudC0+ZHJhd1RyYW5zZm9ybSgpLCBG
bG9hdFJlY3QocGFyZW50Q29udGVudEJvdW5kcykpOwotICAgIEZsb2F0UmVjdCBwYXJlbnRTY3Jl
ZW5TcGFjZVJlY3QgPSBDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChwYXJlbnQtPnNjcmVlblNw
YWNlVHJhbnNmb3JtKCksIEZsb2F0UmVjdChwYXJlbnRCb3VuZHMpKTsKKyAgICBGbG9hdFJlY3Qg
cGFyZW50RHJhd1JlY3QgPSBDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChwYXJlbnQtPmRyYXdU
cmFuc2Zvcm0oKSwgcGFyZW50Q29udGVudEJvdW5kcyk7CisgICAgRmxvYXRSZWN0IHBhcmVudFNj
cmVlblNwYWNlUmVjdCA9IENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KHBhcmVudC0+c2NyZWVu
U3BhY2VUcmFuc2Zvcm0oKSwgcGFyZW50Q29udGVudEJvdW5kcyk7CiAKICAgICBGbG9hdFJlY3Qg
ZXhwZWN0ZWRQYXJlbnREcmF3UmVjdChGbG9hdFBvaW50KCksIHBhcmVudC0+Ym91bmRzKCkpOwog
ICAgIGV4cGVjdGVkUGFyZW50RHJhd1JlY3Quc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IpOwpAQCAt
MzcwMCwyMiArMzY5NSwxNiBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlm
eUxheWVyVHJhbnNmb3Jtc0luSGlnaERQSSkKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShwYXJl
bnRTY3JlZW5TcGFjZVJlY3QsIGV4cGVjdGVkUGFyZW50RHJhd1JlY3QpOwogCiAgICAgLy8gVmVy
aWZ5IGNoaWxkIHRyYW5zZm9ybXMKLSAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3Rl
ZENoaWxkU2NyZWVuU3BhY2VUcmFuc2Zvcm07Ci0gICAgZXhwZWN0ZWRDaGlsZFNjcmVlblNwYWNl
VHJhbnNmb3JtLnNldE0xMShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgZXhwZWN0ZWRDaGlsZFNj
cmVlblNwYWNlVHJhbnNmb3JtLnNldE0yMihkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgZXhwZWN0
ZWRDaGlsZFNjcmVlblNwYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZShjaGlsZC0+cG9zaXRpb24oKS54
KCksIGNoaWxkLT5wb3NpdGlvbigpLnkoKSk7Ci0gICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01B
VFJJWF9FUShleHBlY3RlZENoaWxkU2NyZWVuU3BhY2VUcmFuc2Zvcm0sIGNoaWxkLT5zY3JlZW5T
cGFjZVRyYW5zZm9ybSgpKTsKLQotICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGV4cGVjdGVk
Q2hpbGREcmF3VHJhbnNmb3JtOwotICAgIGV4cGVjdGVkQ2hpbGREcmF3VHJhbnNmb3JtLnRyYW5z
bGF0ZShkZXZpY2VTY2FsZUZhY3RvciAqIGNoaWxkLT5wb3NpdGlvbigpLngoKSwgZGV2aWNlU2Nh
bGVGYWN0b3IgKiBjaGlsZC0+cG9zaXRpb24oKS55KCkpOwotICAgIEVYUEVDVF9UUkFOU0ZPUk1B
VElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRDaGlsZERyYXdUcmFuc2Zvcm0sIGNoaWxkLT5kcmF3VHJh
bnNmb3JtKCkpOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGV4cGVjdGVkQ2hpbGRUcmFu
c2Zvcm07CisgICAgZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoZGV2aWNlU2NhbGVG
YWN0b3IgKiBjaGlsZC0+cG9zaXRpb24oKS54KCksIGRldmljZVNjYWxlRmFjdG9yICogY2hpbGQt
PnBvc2l0aW9uKCkueSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4
cGVjdGVkQ2hpbGRUcmFuc2Zvcm0sIGNoaWxkLT5kcmF3VHJhbnNmb3JtKCkpOworICAgIEVYUEVD
VF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybSwgY2hpbGQt
PnNjcmVlblNwYWNlVHJhbnNmb3JtKCkpOwogCiAgICAgLy8gVmVyaWZ5IHJlc3VsdHMgb2YgdHJh
bnNmb3JtZWQgY2hpbGQgcmVjdHMKLSAgICBJbnRSZWN0IGNoaWxkQm91bmRzKEludFBvaW50KCks
IGNoaWxkLT5ib3VuZHMoKSk7Ci0gICAgSW50UmVjdCBjaGlsZENvbnRlbnRCb3VuZHMoSW50UG9p
bnQoKSwgY2hpbGQtPmNvbnRlbnRCb3VuZHMoKSk7CisgICAgRmxvYXRSZWN0IGNoaWxkQ29udGVu
dEJvdW5kcyhGbG9hdFBvaW50KCksIEZsb2F0U2l6ZShjaGlsZC0+Y29udGVudEJvdW5kcygpKSk7
CiAKLSAgICBGbG9hdFJlY3QgY2hpbGREcmF3UmVjdCA9IENDTWF0aFV0aWw6Om1hcENsaXBwZWRS
ZWN0KGNoaWxkLT5kcmF3VHJhbnNmb3JtKCksIEZsb2F0UmVjdChjaGlsZENvbnRlbnRCb3VuZHMp
KTsKLSAgICBGbG9hdFJlY3QgY2hpbGRTY3JlZW5TcGFjZVJlY3QgPSBDQ01hdGhVdGlsOjptYXBD
bGlwcGVkUmVjdChjaGlsZC0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSwgRmxvYXRSZWN0KGNoaWxk
Qm91bmRzKSk7CisgICAgRmxvYXRSZWN0IGNoaWxkRHJhd1JlY3QgPSBDQ01hdGhVdGlsOjptYXBD
bGlwcGVkUmVjdChjaGlsZC0+ZHJhd1RyYW5zZm9ybSgpLCBjaGlsZENvbnRlbnRCb3VuZHMpOwor
ICAgIEZsb2F0UmVjdCBjaGlsZFNjcmVlblNwYWNlUmVjdCA9IENDTWF0aFV0aWw6Om1hcENsaXBw
ZWRSZWN0KGNoaWxkLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLCBjaGlsZENvbnRlbnRCb3VuZHMp
OwogCiAgICAgRmxvYXRSZWN0IGV4cGVjdGVkQ2hpbGREcmF3UmVjdChGbG9hdFBvaW50KCksIGNo
aWxkLT5ib3VuZHMoKSk7CiAgICAgZXhwZWN0ZWRDaGlsZERyYXdSZWN0Lm1vdmUoY2hpbGQtPnBv
c2l0aW9uKCkueCgpLCBjaGlsZC0+cG9zaXRpb24oKS55KCkpOwpAQCAtMzc3MSwxMyArMzc2MCw5
IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5UmVuZGVyU3VyZmFjZVRy
YW5zZm9ybXNJbkhpZ2hEUEkpCiAgICAgLy8gcmVuZGVyIHN1cmZhY2UgKGl0IG5lZWRzIG9uZSBi
ZWNhdXNlIGl0IGhhcyBhIHJlcGxpY2EgbGF5ZXIpLgogICAgIEVYUEVDVF9FUSgydSwgcmVuZGVy
U3VyZmFjZUxheWVyTGlzdC5zaXplKCkpOwogCi0gICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgg
ZXhwZWN0ZWRQYXJlbnRTY3JlZW5TcGFjZVRyYW5zZm9ybTsKLSAgICBleHBlY3RlZFBhcmVudFNj
cmVlblNwYWNlVHJhbnNmb3JtLnNldE0xMShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgZXhwZWN0
ZWRQYXJlbnRTY3JlZW5TcGFjZVRyYW5zZm9ybS5zZXRNMjIoZGV2aWNlU2NhbGVGYWN0b3IpOwot
ICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEocGFyZW50LT5zY3JlZW5TcGFjZVRy
YW5zZm9ybSgpLCBleHBlY3RlZFBhcmVudFNjcmVlblNwYWNlVHJhbnNmb3JtKTsKLQotICAgIFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4IGV4cGVjdGVkUGFyZW50RHJhd1RyYW5zZm9ybTsKLSAgICBF
WFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKHBhcmVudC0+ZHJhd1RyYW5zZm9ybSgpLCBl
eHBlY3RlZFBhcmVudERyYXdUcmFuc2Zvcm0pOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4
IGV4cGVjdGVkUGFyZW50VHJhbnNmb3JtOworICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRS
SVhfRVEocGFyZW50LT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLCBleHBlY3RlZFBhcmVudFRyYW5z
Zm9ybSk7CisgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShwYXJlbnQtPmRyYXdU
cmFuc2Zvcm0oKSwgZXhwZWN0ZWRQYXJlbnRUcmFuc2Zvcm0pOwogCiAgICAgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXggZXhwZWN0ZWREcmF3VHJhbnNmb3JtOwogICAgIGV4cGVjdGVkRHJhd1RyYW5z
Zm9ybS5zZXRNMTEoZGV2aWNlU2NhbGVGYWN0b3IpOwpAQCAtMzc4NSw5ICszNzcwLDcgQEAgVEVT
VChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlSZW5kZXJTdXJmYWNlVHJhbnNmb3Jt
c0luSGlnaERQSSkKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4cGVjdGVk
RHJhd1RyYW5zZm9ybSwgY2hpbGQtPmRyYXdUcmFuc2Zvcm0oKSk7CiAKICAgICBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBleHBlY3RlZFNjcmVlblNwYWNlVHJhbnNmb3JtOwotICAgIGV4cGVjdGVk
U2NyZWVuU3BhY2VUcmFuc2Zvcm0uc2V0TTExKGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBleHBl
Y3RlZFNjcmVlblNwYWNlVHJhbnNmb3JtLnNldE0yMihkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAg
ZXhwZWN0ZWRTY3JlZW5TcGFjZVRyYW5zZm9ybS50cmFuc2xhdGUoY2hpbGQtPnBvc2l0aW9uKCku
eCgpLCBjaGlsZC0+cG9zaXRpb24oKS55KCkpOworICAgIGV4cGVjdGVkU2NyZWVuU3BhY2VUcmFu
c2Zvcm0udHJhbnNsYXRlKGRldmljZVNjYWxlRmFjdG9yICogY2hpbGQtPnBvc2l0aW9uKCkueCgp
LCBkZXZpY2VTY2FsZUZhY3RvciAqIGNoaWxkLT5wb3NpdGlvbigpLnkoKSk7CiAgICAgRVhQRUNU
X1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZFNjcmVlblNwYWNlVHJhbnNmb3JtLCBj
aGlsZC0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSk7CiAKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJ
T05fTUFUUklYX0VRKGNoaWxkLT5kcmF3VHJhbnNmb3JtKCksIGR1cGxpY2F0ZUNoaWxkTm9uT3du
ZXItPmRyYXdUcmFuc2Zvcm0oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCBlYTMwNTlkMmJlNzg4Mjc1
NWY4OWRhMGQ4M2YwMjIxZmJlNDIxYzA2Li4yOTE1ZGY3OTM1NDAzN2E3YTllZGZkNWMwOGM1YzUz
ZjI3NTI0OGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
VGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTEyMzAsNiArMTIzMCwxMCBAQCBURVNUX0Yo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFNjYWxp
bmcpCiAgICAgLy8gcGl4ZWxzLCB3aGljaCBtZWFucyBub25lIHNob3VsZCBiZSBvY2NsdWRlZC4K
ICAgICBsYXllci0+c2V0Q29udGVudHNTY2FsZSgwLjUpOwogICAgIGxheWVyLT5zZXRCb3VuZHMo
SW50U2l6ZSg2MDAsIDYwMCkpOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGRyYXdUcmFu
c2Zvcm07CisgICAgZHJhd1RyYW5zZm9ybS5zY2FsZSgxIC8gbGF5ZXItPmNvbnRlbnRzU2NhbGUo
KSk7CisgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oZHJhd1RyYW5zZm9ybSk7CisgICAgbGF5
ZXItPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKGRyYXdUcmFuc2Zvcm0pOwogCiAgICAgb2NjbHVk
ZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMTAwKSk7CiAgICAgbGF5ZXIt
PnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5jb250ZW50
Qm91bmRzKCkpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153683</attachid>
            <date>2012-07-21 18:42:57 -0700</date>
            <delta_ts>2012-07-25 10:46:48 -0700</delta_ts>
            <desc>Rebased</desc>
            <filename>bug-91807-20120721184251.patch</filename>
            <type>text/plain</type>
            <size>22163</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMjg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTZiZjYzODMyZjgwZjAx
ZDQ3NzE0YTVkYTg5OTJiN2Q3ZDc2NjA2NC4uNGYyY2Q2YjlkNjZkODlmNzQyYjgwYTVmODNkMWUy
ZDg4M2FkNjM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA3LTE5ICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBNYWtl
IGFsbCBjb21wb3NpdG9yIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm1zIG9wZXJhdGUgb24gY29udGVu
dCByZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTE4MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQ
cmV2aW91c2x5LCBzdXJmYWNlIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm1zIG9wZXJhdGVkIG9uIHN1
cmZhY2UKKyAgICAgICAgY29udGVudCBzcGFjZSBidXQgbGF5ZXIgc2NyZWVuIHNwYWNlIHRyYW5z
Zm9ybXMgb3BlcmF0ZWQgb24gbGF5ZXIKKyAgICAgICAgc3BhY2UuIEZvciB0aGUgcHVycG9zZSBv
ZiBjb25zaXN0ZW5jeSwgdW5pZnkgdGhlc2UgdHdvIHNvIHRoYXQgdGhleQorICAgICAgICBib3Ro
IG9wZXJhdGUgb24gY29udGVudCBzcGFjZS4KKworICAgICAgICBObyB0ZXN0cywgYmVjYXVzZSBu
byBjaGFuZ2UgaW4gYmVoYXZpb3IgZXhwZWN0ZWQuIEp1c3QgYSByZWZhY3RvcmluZy4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAg
ICAgKExheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnUmVj
dEhpc3Rvcnk6OnNhdmVQYWludFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDRGVidWdSZWN0
SGlzdG9yeTo6c2F2ZVByb3BlcnR5Q2hhbmdlZFJlY3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNJbnRlcm5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3RDb21tb246OmZpbmRMYXllclRoYXRJc0hpdEJ5UG9pbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjo6Om1hcmtPY2NsdWRlZEJlaGluZExheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Ojo6b2NjbHVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Ojp1bm9jY2x1
ZGVkQ29udGVudFJlY3QpOgorCiAyMDEyLTA3LTIwICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdv
b2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBVbmlmeSBjb21wb3NpdG9yIHF1YWRUcmFu
c2Zvcm0vZHJhd1RyYW5zZm9ybS9vcmlnaW5UcmFuc2Zvcm0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggYjg5ZDdiOGY4NWEwZGMxY2ZkNWY1ZjYzNWVlYWU3MGNiMzhhM2Q3Ni4uY2UxM2Rl
YWZlNzdjYWM5ODM5NGQzNjE1ODk4Mzk2MWZmYTZjNjY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNy0xOSAgQWRyaWVubmUgV2Fsa2VyICA8ZW5u
ZUBnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFrZSBhbGwgY29tcG9zaXRvciBz
Y3JlZW4gc3BhY2UgdHJhbnNmb3JtcyBvcGVyYXRlIG9uIGNvbnRlbnQgcmVjdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODA3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRlc3RzIHRoYXQg
ZGVhbCB3aXRoIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm1zIHRvIHJlZmxlY3QgdGhpcyBjaGFuZ2Uu
CisKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcDoKKyAgICAg
ICAgKiB0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKwogMjAxMi0wNy0yMCAgQWRy
aWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gVW5p
ZnkgY29tcG9zaXRvciBxdWFkVHJhbnNmb3JtL2RyYXdUcmFuc2Zvcm0vb3JpZ2luVHJhbnNmb3Jt
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllckNocm9taXVtLmgKaW5kZXggODMwNThlNjMzYTY0NzZkMjRiNzcyNGU2NTcxNjJhYjhk
MzJlOWJkNS4uMmQ1NTM0NTZkYTZjNzdlYzg1ZTk2ZTYwMmM0ZDg0NWVkZGU5NmVhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyQ2hyb21pdW0uaApAQCAtMjUxLDcgKzI1MSw3IEBAIHB1YmxpYzoKICAgICAvLyByb290IHJl
bmRlciBzdXJmYWNlLCB0aGVuIHRoaXMgY29udmVydHMgdG8gcGh5c2ljYWwgcGl4ZWxzKS4KICAg
ICBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKCkg
Y29uc3QgeyByZXR1cm4gbV9kcmF3VHJhbnNmb3JtOyB9CiAgICAgdm9pZCBzZXREcmF3VHJhbnNm
b3JtKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkgeyBtX2Ry
YXdUcmFuc2Zvcm0gPSBtYXRyaXg7IH0KLSAgICAvLyBUaGlzIG1vdmVzIGZyb20gbGF5ZXIgc3Bh
Y2UsIHdpdGggb3JpZ2luIHRoZSB0b3AgbGVmdCB0byBzY3JlZW4gc3BhY2Ugd2l0aCBvcmlnaW4g
aW4gdGhlIHRvcCBsZWZ0LgorICAgIC8vIFRoaXMgbW92ZXMgZnJvbSBjb250ZW50IHNwYWNlLCB3
aXRoIG9yaWdpbiB0aGUgdG9wIGxlZnQgdG8gc2NyZWVuIHNwYWNlIHdpdGggb3JpZ2luIGluIHRo
ZSB0b3AgbGVmdC4KICAgICAvLyBJdCBjb252ZXJ0cyBsb2dpY2FsLCBub24tcGFnZS1zY2FsZWQg
cGl4ZWxzIHRvIHBoeXNpY2FsIHBpeGVscy4KICAgICBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9y
bWF0aW9uTWF0cml4JiBzY3JlZW5TcGFjZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Ny
ZWVuU3BhY2VUcmFuc2Zvcm07IH0KICAgICB2b2lkIHNldFNjcmVlblNwYWNlVHJhbnNmb3JtKGNv
bnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkgeyBtX3NjcmVlblNw
YWNlVHJhbnNmb3JtID0gbWF0cml4OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5
LmNwcAppbmRleCBjNjEzMjE3OGUxNjM5MzM1ZDAxNGM4NmRlYjg2NmE2M2I1YmQ3Njc4Li4wYWY0
NmE0Yzk2NWU0M2U3M2UyYTFmODdjZGE2YjI2M2Y0M2NlN2NhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3Rvcnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
RGVidWdSZWN0SGlzdG9yeS5jcHAKQEAgLTcyLDggKzcyLDExIEBAIHZvaWQgQ0NEZWJ1Z1JlY3RI
aXN0b3J5OjpzYXZlUGFpbnRSZWN0cyhDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgLy8gcmVnYXJk
bGVzcyBvZiB3aGV0aGVyIHRoaXMgbGF5ZXIgaXMgc2tpcHBlZCBmb3IgYWN0dWFsIGRyYXdpbmcg
b3Igbm90LiBUaGVyZWZvcmUKICAgICAvLyB3ZSB0cmF2ZXJzZSByZWN1cnNpdmVseSBvdmVyIGFs
bCBsYXllcnMsIG5vdCBqdXN0IHRoZSByZW5kZXIgc3VyZmFjZSBsaXN0LgogCi0gICAgaWYgKCFs
YXllci0+dXBkYXRlUmVjdCgpLmlzRW1wdHkoKSAmJiBsYXllci0+ZHJhd3NDb250ZW50KCkpCi0g
ICAgICAgIG1fZGVidWdSZWN0cy5hcHBlbmQoQ0NEZWJ1Z1JlY3QoUGFpbnRSZWN0VHlwZSwgQ0NN
YXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3QobGF5ZXItPnNjcmVlblNwYWNlVHJhbnNmb3JtKCksIGxh
eWVyLT51cGRhdGVSZWN0KCkpKSk7CisgICAgaWYgKCFsYXllci0+dXBkYXRlUmVjdCgpLmlzRW1w
dHkoKSAmJiBsYXllci0+ZHJhd3NDb250ZW50KCkpIHsKKyAgICAgICAgRmxvYXRSZWN0IHVwZGF0
ZUNvbnRlbnRSZWN0ID0gbGF5ZXItPnVwZGF0ZVJlY3QoKTsKKyAgICAgICAgdXBkYXRlQ29udGVu
dFJlY3Quc2NhbGUobGF5ZXItPmNvbnRlbnRCb3VuZHMoKS53aWR0aCgpIC8gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGxheWVyLT5ib3VuZHMoKS53aWR0aCgpKSwgbGF5ZXItPmNvbnRlbnRCb3VuZHMoKS5o
ZWlnaHQoKSAvIHN0YXRpY19jYXN0PGZsb2F0PihsYXllci0+Ym91bmRzKCkuaGVpZ2h0KCkpKTsK
KyAgICAgICAgbV9kZWJ1Z1JlY3RzLmFwcGVuZChDQ0RlYnVnUmVjdChQYWludFJlY3RUeXBlLCBD
Q01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChsYXllci0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSwg
dXBkYXRlQ29udGVudFJlY3QpKSk7CisgICAgfQogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGxheWVyLT5jaGlsZHJlbigpLnNpemUoKTsgKytpKQogICAgICAgICBzYXZlUGFpbnRSZWN0
cyhsYXllci0+Y2hpbGRyZW4oKVtpXS5nZXQoKSk7CkBAIC05NCw3ICs5Nyw3IEBAIHZvaWQgQ0NE
ZWJ1Z1JlY3RIaXN0b3J5OjpzYXZlUHJvcGVydHlDaGFuZ2VkUmVjdHMoY29uc3QgVmVjdG9yPEND
TGF5ZXJJbXBsKj4mIHJlCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAg
IGlmIChsYXllci0+bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSkKLSAgICAgICAgICAgICAgICBtX2Rl
YnVnUmVjdHMuYXBwZW5kKENDRGVidWdSZWN0KFByb3BlcnR5Q2hhbmdlZFJlY3RUeXBlLCBDQ01h
dGhVdGlsOjptYXBDbGlwcGVkUmVjdChsYXllci0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSwgRmxv
YXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbGF5ZXItPmJvdW5kcygpKSkpKTsKKyAgICAgICAg
ICAgICAgICBtX2RlYnVnUmVjdHMuYXBwZW5kKENDRGVidWdSZWN0KFByb3BlcnR5Q2hhbmdlZFJl
Y3RUeXBlLCBDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChsYXllci0+c2NyZWVuU3BhY2VUcmFu
c2Zvcm0oKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbGF5ZXItPmNvbnRlbnRCb3Vu
ZHMoKSkpKSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0Q29tbW9uLmNwcAppbmRleCBkODc0ZmVmMDhmMDUxZTE3YTU3YTFmZmE5NDU4ZjFjOWQ0
YmQxY2YzLi42ZGRiY2RjODg2NjA1ZTFjMzkxOGE4MzdlOTc3ZWNhMjlmMjU4Njg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAKQEAgLTQ0MCw4ICs0NDAsOCBA
QCBzdGF0aWMgYm9vbCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0ludGVybmFsKExheWVyVHlwZSog
bGF5ZXIsIExheWVyVHlwZSogcm9vdExheQogICAgIC8vICAgICAgICBJbnRlcnByZXRpbmcgdGhl
IG1hdGggbGVmdC10by1yaWdodCwgdGhpcyB0cmFuc2Zvcm1zIGZyb20gdGhlIGxheWVyJ3MgcmVu
ZGVyIHN1cmZhY2UgdG8gdGhlIG9yaWdpbiBvZiB0aGUgbGF5ZXIgaW4gY29udGVudCBzcGFjZS4K
ICAgICAvLwogICAgIC8vIFRoZSBzY3JlZW4gc3BhY2UgdHJhbnNmb3JtIGlzOgotICAgIC8vICAg
ICAgICBNW3NjcmVlbnNwYWNlXSA9IE1bcm9vdF0gKiBUcltvcmlnaW5dICogY29tcG9zaXRlTGF5
ZXJUcmFuc2Zvcm0KLSAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgPSBNW3Jvb3RdICogVHJb
bGF5ZXItPnBvc2l0aW9uKCldICogTVtsYXllcl0gKiBUcltvcmlnaW4yYW5jaG9yXS5pbnZlcnNl
KCkKKyAgICAvLyAgICAgICAgTVtzY3JlZW5zcGFjZV0gPSBNW3Jvb3RdICogVHJbb3JpZ2luXSAq
IGNvbXBvc2l0ZUxheWVyVHJhbnNmb3JtICogU1tjb250ZW50MmxheWVyXQorICAgIC8vICAgICAg
ICAgICAgICAgICAgICAgICA9IE1bcm9vdF0gKiBUcltsYXllci0+cG9zaXRpb24oKV0gKiBNW2xh
eWVyXSAqIFRyW29yaWdpbjJhbmNob3JdLmludmVyc2UoKSAqIFNbY29udGVudDJsYXllcl0KICAg
ICAvLwogICAgIC8vICAgICAgICBJbnRlcnByZXRpbmcgdGhlIG1hdGggbGVmdC10by1yaWdodCwg
dGhpcyB0cmFuc2Zvcm1zIGZyb20gdGhlIHJvb3QgcmVuZGVyIHN1cmZhY2UncyBjb250ZW50IHNw
YWNlIHRvIHRoZSBsb2NhbCBsYXllcidzIG9yaWdpbiBpbiBsYXllciBzcGFjZS4KICAgICAvLwpA
QCAtNTI0LDE1ICs1MjQsOSBAQCBzdGF0aWMgYm9vbCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0lu
dGVybmFsKExheWVyVHlwZSogbGF5ZXIsIExheWVyVHlwZSogcm9vdExheQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci0+Ym91bmRzKCkuaGVpZ2h0KCkgLyBzdGF0
aWNfY2FzdDxkb3VibGU+KGxheWVyLT5jb250ZW50Qm91bmRzKCkuaGVpZ2h0KCkpKTsKICAgICB9
CiAKLSAgICAvLyBsYXllclNjcmVlblNwYWNlVHJhbnNmb3JtIHJlcHJlc2VudHMgdGhlIHRyYW5z
Zm9ybSBiZXR3ZWVuIHJvb3QgbGF5ZXIncyAic2NyZWVuIHNwYWNlIiBhbmQgbG9jYWwgbGF5ZXIg
c3BhY2UuCisgICAgLy8gbGF5ZXJTY3JlZW5TcGFjZVRyYW5zZm9ybSByZXByZXNlbnRzIHRoZSB0
cmFuc2Zvcm0gYmV0d2VlbiByb290IGxheWVyJ3MgInNjcmVlbiBzcGFjZSIgYW5kIGxvY2FsIGNv
bnRlbnQgc3BhY2UuCiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJTY3JlZW5TcGFj
ZVRyYW5zZm9ybSA9IGZ1bGxIaWVyYXJjaHlNYXRyaXg7CiAgICAgbGF5ZXJTY3JlZW5TcGFjZVRy
YW5zZm9ybS5tdWx0aXBseShkcmF3VHJhbnNmb3JtKTsKLSAgICAvLyBUaGUgZHJhdyB0cmFuc2Zv
cm0gb3BlcmF0ZXMgb24gY29udGVudCBzcGFjZSByZWN0cy4gVGhpcyBuZWVkcyB0byBiZSBjb252
ZXJ0ZWQgdG8gdHJhbnNmb3JtIGxheWVyIHNwYWNlIHJlY3RzLgotICAgIC8vIEZJWE1FOiBNYWtl
IGxheWVyIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm1zIG9wZXJhdGUgb24gY29udGVudCBzcGFjZSBy
ZWN0cy4KLSAgICBpZiAoIWxheWVyLT5jb250ZW50Qm91bmRzKCkuaXNFbXB0eSgpICYmICFsYXll
ci0+Ym91bmRzKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGxheWVyU2NyZWVuU3BhY2VUcmFuc2Zv
cm0uc2NhbGVOb25Vbmlmb3JtKGxheWVyLT5jb250ZW50Qm91bmRzKCkud2lkdGgoKSAvIHN0YXRp
Y19jYXN0PGRvdWJsZT4obGF5ZXItPmJvdW5kcygpLndpZHRoKCkpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci0+Y29udGVudEJvdW5kcygp
LmhlaWdodCgpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihsYXllci0+Ym91bmRzKCkuaGVpZ2h0KCkp
KTsKLSAgICB9CiAgICAgbGF5ZXItPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKGxheWVyU2NyZWVu
U3BhY2VUcmFuc2Zvcm0pOwogCiAgICAgYm9vbCBhbmltYXRpbmdUcmFuc2Zvcm1Ub1RhcmdldCA9
IGxheWVyLT50cmFuc2Zvcm1Jc0FuaW1hdGluZygpOwpAQCAtNzQ4LDEzICs3NDIsNyBAQCBzdGF0
aWMgYm9vbCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0ludGVybmFsKExheWVyVHlwZSogbGF5ZXIs
IExheWVyVHlwZSogcm9vdExheQogICAgICAgICAvLyBjbGlwUmVjdCB0byBiZSBleHByZXNzZWQg
aW4gdGhlIG5ldyBzdXJmYWNlJ3MgY29vcmRpbmF0ZSBzeXN0ZW0uCiAgICAgICAgIGxheWVyLT5z
ZXRDbGlwUmVjdChsYXllci0+ZHJhd2FibGVDb250ZW50UmVjdCgpKTsKIAotICAgICAgICBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBzY3JlZW5TcGFjZVRyYW5zZm9ybSA9IGxheWVyLT5zY3JlZW5T
cGFjZVRyYW5zZm9ybSgpOwotICAgICAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIGNvbnNp
c3RlbnQuCi0gICAgICAgIC8vIFRoZSBsYXllcidzIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm0gb3Bl
cmF0ZXMgb24gbGF5ZXIgcmVjdHMsIGJ1dCB0aGUgc3VyZmFjZXMKLSAgICAgICAgLy8gc2NyZWVu
IHNwYWNlIHRyYW5zZm9ybSBvcGVyYXRlcyBvbiBzdXJmYWNlIHJlY3RzLCB3aGljaCBhcmUgaW4g
cGh5c2ljYWwgcGl4ZWxzLAotICAgICAgICAvLyBzbyB3ZSBoYXZlIHRvICd1bmRvJyB0aGUgc2Nh
bGUgaGVyZS4KLSAgICAgICAgc2NyZWVuU3BhY2VUcmFuc2Zvcm0uc2NhbGUoMSAvIGNvbnRlbnRz
U2NhbGUpOwotICAgICAgICByZW5kZXJTdXJmYWNlLT5zZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShz
Y3JlZW5TcGFjZVRyYW5zZm9ybSk7CisgICAgICAgIHJlbmRlclN1cmZhY2UtPnNldFNjcmVlblNw
YWNlVHJhbnNmb3JtKGxheWVyLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpKTsKIAogICAgICAgICBp
ZiAobGF5ZXItPnJlcGxpY2FMYXllcigpKSB7CiAgICAgICAgICAgICBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBzdXJmYWNlT3JpZ2luVG9SZXBsaWNhT3JpZ2luVHJhbnNmb3JtOwpAQCAtOTEyLDgg
KzkwMCw4IEBAIENDTGF5ZXJJbXBsKiBDQ0xheWVyVHJlZUhvc3RDb21tb246OmZpbmRMYXllclRo
YXRJc0hpdEJ5UG9pbnQoY29uc3QgSW50UG9pbnQmIHZpCiAKICAgICAgICAgQ0NMYXllckltcGwq
IGN1cnJlbnRMYXllciA9ICgqaXQpOwogCi0gICAgICAgIEZsb2F0UmVjdCBsYXllclJlY3QoRmxv
YXRQb2ludDo6emVybygpLCBjdXJyZW50TGF5ZXItPmJvdW5kcygpKTsKLSAgICAgICAgaWYgKCFw
b2ludEhpdHNSZWN0KHZpZXdwb3J0UG9pbnQsIGN1cnJlbnRMYXllci0+c2NyZWVuU3BhY2VUcmFu
c2Zvcm0oKSwgbGF5ZXJSZWN0KSkKKyAgICAgICAgRmxvYXRSZWN0IGNvbnRlbnRSZWN0KEZsb2F0
UG9pbnQ6Onplcm8oKSwgY3VycmVudExheWVyLT5jb250ZW50Qm91bmRzKCkpOworICAgICAgICBp
ZiAoIXBvaW50SGl0c1JlY3Qodmlld3BvcnRQb2ludCwgY3VycmVudExheWVyLT5zY3JlZW5TcGFj
ZVRyYW5zZm9ybSgpLCBjb250ZW50UmVjdCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICAvLyBBdCB0aGlzIHBvaW50LCB3ZSB0aGluayB0aGUgcG9pbnQgZG9lcyBoaXQgdGhlIGxh
eWVyLCBidXQgd2UgbmVlZCB0byB3YWxrIHVwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFj
a2VyLmNwcAppbmRleCBjNjQ0YjVmM2UxOGRkYTFjYTY3M2M4MmVjOTc0ZmIwOGI3YmVhZjgzLi43
NWMzYjc2ZDAzMzU3ZGFiMDMyNjJhZjk1MjhkZTUzZjhhMGNiNWQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKQEAgLTI2NSwyNSArMjY1LDYgQEAgdm9pZCBDQ09jY2x1
c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjpsZWF2ZVRvUmVu
ZGVyVGFyZ2V0KGMKICAgICB9CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4KLXN0
YXRpYyBpbmxpbmUgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVudFRvU2NyZWVuU3BhY2VU
cmFuc2Zvcm0oY29uc3QgTGF5ZXJUeXBlKiBsYXllcikKLXsKLSAgICBBU1NFUlQobGF5ZXJUcmFu
c2Zvcm1zVG9TY3JlZW5Lbm93bihsYXllcikpOwotICAgIEludFNpemUgYm91bmRzSW5MYXllclNw
YWNlID0gbGF5ZXItPmJvdW5kcygpOwotICAgIEludFNpemUgYm91bmRzSW5Db250ZW50U3BhY2Ug
PSBsYXllci0+Y29udGVudEJvdW5kcygpOwotCi0gICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgg
dHJhbnNmb3JtID0gbGF5ZXItPnNjcmVlblNwYWNlVHJhbnNmb3JtKCk7Ci0KLSAgICBpZiAoYm91
bmRzSW5Db250ZW50U3BhY2UuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdHJhbnNmb3JtOwot
Ci0gICAgLy8gU2NhbGUgZnJvbSBjb250ZW50IHNwYWNlIHRvIGxheWVyIHNwYWNlCi0gICAgdHJh
bnNmb3JtLnNjYWxlTm9uVW5pZm9ybShib3VuZHNJbkxheWVyU3BhY2Uud2lkdGgoKSAvIHN0YXRp
Y19jYXN0PGRvdWJsZT4oYm91bmRzSW5Db250ZW50U3BhY2Uud2lkdGgoKSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib3VuZHNJbkxheWVyU3BhY2UuaGVpZ2h0KCkgLyBzdGF0aWNf
Y2FzdDxkb3VibGU+KGJvdW5kc0luQ29udGVudFNwYWNlLmhlaWdodCgpKSk7Ci0KLSAgICByZXR1
cm4gdHJhbnNmb3JtOwotfQotCiAvLyBGSVhNRTogUmVtb3ZlIHVzZVBhaW50VHJhY2tpbmcgd2hl
biBwYWludCB0cmFja2luZyBpcyBvbiBmb3IgcGFpbnQgY3VsbGluZy4KIHRlbXBsYXRlPHR5cGVu
YW1lIExheWVyVHlwZT4KIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRPY2NsdXNpb25CZWhpbmRMYXll
cihSZWdpb24mIHJlZ2lvbiwgY29uc3QgTGF5ZXJUeXBlKiBsYXllciwgY29uc3QgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgUmVnaW9uJiBvcGFxdWVDb250ZW50cywg
Y29uc3QgSW50UmVjdCYgc2Npc3NvclJlY3QsIGNvbnN0IEludFNpemUmIG1pbmltdW1UcmFja2lu
Z1NpemUsIFZlY3RvcjxJbnRSZWN0Piogb2NjbHVkaW5nU2NyZWVuU3BhY2VSZWN0cykKQEAgLTM0
Miw3ICszMjMsNyBAQCB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5k
ZXJTdXJmYWNlVHlwZT46Om1hcmtPY2NsdWRlZEJlaGluZExheQogICAgICAgICBpZiAoY2xpcHBl
ZCB8fCAhc2Npc3NvckluU2NyZWVuUXVhZC5pc1JlY3RpbGluZWFyKCkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIEludFJlY3Qgc2Npc3NvckluU2NyZWVuUmVjdCA9IGludGVyc2VjdGlv
bihtX3NjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgZW5jbG9zZWRJbnRSZWN0KHNjaXNzb3JJblNj
cmVlblF1YWQuYm91bmRpbmdCb3goKSkpOwotICAgICAgICBhZGRPY2NsdXNpb25CZWhpbmRMYXll
cjxMYXllclR5cGU+KG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuLCBsYXllciwgY29u
dGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXllciksIG9wYXF1ZUNvbnRl
bnRzLCBzY2lzc29ySW5TY3JlZW5SZWN0LCBtX21pbmltdW1UcmFja2luZ1NpemUsIG1fb2NjbHVk
aW5nU2NyZWVuU3BhY2VSZWN0cyk7CisgICAgICAgIGFkZE9jY2x1c2lvbkJlaGluZExheWVyPExh
eWVyVHlwZT4obV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4sIGxheWVyLCBsYXllci0+
c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSwgb3BhcXVlQ29udGVudHMsIHNjaXNzb3JJblNjcmVlblJl
Y3QsIG1fbWluaW11bVRyYWNraW5nU2l6ZSwgbV9vY2NsdWRpbmdTY3JlZW5TcGFjZVJlY3RzKTsK
ICAgICB9CiB9CiAKQEAgLTM3MSw3ICszNTIsNyBAQCBib29sIENDT2NjbHVzaW9uVHJhY2tlckJh
c2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46Om9jY2x1ZGVkKGNvbnN0IExheWVyVAog
ICAgIGlmIChsYXllclRyYW5zZm9ybXNUb1RhcmdldEtub3duKGxheWVyKSAmJiB0ZXN0Q29udGVu
dFJlY3RPY2NsdWRlZChjb250ZW50UmVjdCwgbGF5ZXItPmRyYXdUcmFuc2Zvcm0oKSwgbGF5ZXJT
Y2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZShsYXllciksIG1fc3RhY2subGFzdCgpLm9jY2x1c2lv
bkluVGFyZ2V0KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAobGF5ZXJUcmFuc2Zv
cm1zVG9TY3JlZW5Lbm93bihsYXllcikgJiYgdGVzdENvbnRlbnRSZWN0T2NjbHVkZWQoY29udGVu
dFJlY3QsIGNvbnRlbnRUb1NjcmVlblNwYWNlVHJhbnNmb3JtPExheWVyVHlwZT4obGF5ZXIpLCBt
X3NjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3Jl
ZW4pKSB7CisgICAgaWYgKGxheWVyVHJhbnNmb3Jtc1RvU2NyZWVuS25vd24obGF5ZXIpICYmIHRl
c3RDb250ZW50UmVjdE9jY2x1ZGVkKGNvbnRlbnRSZWN0LCBsYXllci0+c2NyZWVuU3BhY2VUcmFu
c2Zvcm0oKSwgbV9zY2lzc29yUmVjdEluU2NyZWVuU3BhY2UsIG1fc3RhY2subGFzdCgpLm9jY2x1
c2lvbkluU2NyZWVuKSkgewogICAgICAgICBpZiAoaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJn
ZXRTdXJmYWNlKQogICAgICAgICAgICAgKmhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3Vy
ZmFjZSA9IHRydWU7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDE4LDcgKzM5OSw3IEBAIElu
dFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBl
Pjo6dW5vY2NsdWRlZENvbnRlbnRSCiAKICAgICBJbnRSZWN0IHVub2NjbHVkZWRJblNjcmVlbiA9
IGNvbnRlbnRSZWN0OwogICAgIGlmIChsYXllclRyYW5zZm9ybXNUb1NjcmVlbktub3duKGxheWVy
KSkKLSAgICAgICAgdW5vY2NsdWRlZEluU2NyZWVuID0gY29tcHV0ZVVub2NjbHVkZWRDb250ZW50
UmVjdChjb250ZW50UmVjdCwgY29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm08TGF5ZXJUeXBl
PihsYXllciksIG1fc2Npc3NvclJlY3RJblNjcmVlblNwYWNlLCBtX3N0YWNrLmxhc3QoKS5vY2Ns
dXNpb25JblNjcmVlbik7CisgICAgICAgIHVub2NjbHVkZWRJblNjcmVlbiA9IGNvbXB1dGVVbm9j
Y2x1ZGVkQ29udGVudFJlY3QoY29udGVudFJlY3QsIGxheWVyLT5zY3JlZW5TcGFjZVRyYW5zZm9y
bSgpLCBtX3NjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9u
SW5TY3JlZW4pOwogCiAgICAgSW50UmVjdCB1bm9jY2x1ZGVkSW5UYXJnZXQgPSBjb250ZW50UmVj
dDsKICAgICBpZiAobGF5ZXJUcmFuc2Zvcm1zVG9UYXJnZXRLbm93bihsYXllcikpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21t
b25UZXN0LmNwcAppbmRleCBlYTU5ZTJmYmI5YWJjODFkOGMxYzE1NjRkNTVkZDVjNmYzZDNlNDUy
Li44Y2Y0NmViMzRlNTI1N2ExMzgzZWE5ZTE2N2I1MTIwNWM5NGY5N2I0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9u
VGVzdC5jcHAKQEAgLTMxNzYsOCArMzE3Niw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9u
VGVzdCwgdmVyaWZ5SGl0VGVzdGluZ0ZvclNpbmdsZUxheWVyV2l0aFNjYWxlZENvbnRlbnRzCiAg
ICAgLy8gc2NyZWVuU3BhY2VUcmFuc2Zvcm0gY29udmVydHMgZnJvbSB0aGUgbGF5ZXIncyBvcmln
aW4gc3BhY2UgdG8gc2NyZWVuIHNwYWNlLiBUaGlzCiAgICAgLy8gdGVzdCBtYWtlcyBzdXJlIHRo
YXQgaGl0IHRlc3Rpbmcgd29ya3MgY29ycmVjdGx5IGFjY291bnRzIGZvciB0aGUgY29udGVudHMg
c2NhbGUuCiAgICAgLy8gQSBjb250ZW50c1NjYWxlIHRoYXQgaXMgbm90IDEgZWZmZWN0aXZlbHkg
Zm9yY2VzIGEgbm9uLWlkZW50aXR5IHRyYW5zZm9ybSBiZXR3ZWVuCi0gICAgLy8gbGF5ZXIncyBj
b250ZW50IHNwYWNlIGFuZCBsYXllcidzIG9yaWdpbiBzcGFjZSwgd2hpY2ggaXMgbm90IGluY2x1
ZGVkIGluIHRoZQotICAgIC8vIHNjcmVlblNwYWNlVHJhbnNmb3JtLiBUaGUgaGl0IHRlc3Rpbmcg
Y29kZSBtdXN0IHRha2UgdGhpcyBpbnRvIGFjY291bnQuCisgICAgLy8gbGF5ZXIncyBjb250ZW50
IHNwYWNlIGFuZCBsYXllcidzIG9yaWdpbiBzcGFjZS4gVGhlIGhpdCB0ZXN0aW5nIGNvZGUgbXVz
dCB0YWtlIHRoaXMgaW50byBhY2NvdW50LgogICAgIC8vCiAgICAgLy8gVG8gdGVzdCB0aGlzLCB0
aGUgbGF5ZXIgaXMgcG9zaXRpb25lZCBhdCAoMjUsIDI1KSwgYW5kIGlzIHNpemUgKDUwLCA1MCku
IElmCiAgICAgLy8gY29udGVudHNTY2FsZSBpcyBpZ25vcmVkLCB0aGVuIGhpdCB0ZXN0aW5nIHdp
bGwgbWlzLWludGVycHJldCB0aGUgdmlzaWJsZUNvbnRlbnRSZWN0CkBAIC0zNjg1LDE5ICszNjg0
LDE1IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5TGF5ZXJUcmFuc2Zv
cm1zSW5IaWdoRFBJKQogICAgIEVYUEVDVF9FUSgxdSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5z
aXplKCkpOwogCiAgICAgLy8gVmVyaWZ5IHBhcmVudCB0cmFuc2Zvcm1zCi0gICAgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXggZXhwZWN0ZWRQYXJlbnRTY3JlZW5TcGFjZVRyYW5zZm9ybTsKLSAgICBl
eHBlY3RlZFBhcmVudFNjcmVlblNwYWNlVHJhbnNmb3JtLnNldE0xMShkZXZpY2VTY2FsZUZhY3Rv
cik7Ci0gICAgZXhwZWN0ZWRQYXJlbnRTY3JlZW5TcGFjZVRyYW5zZm9ybS5zZXRNMjIoZGV2aWNl
U2NhbGVGYWN0b3IpOwotICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEocGFyZW50
LT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLCBleHBlY3RlZFBhcmVudFNjcmVlblNwYWNlVHJhbnNm
b3JtKTsKLSAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZFBhcmVudERyYXdUcmFu
c2Zvcm07Ci0gICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShwYXJlbnQtPmRyYXdU
cmFuc2Zvcm0oKSwgZXhwZWN0ZWRQYXJlbnREcmF3VHJhbnNmb3JtKTsKKyAgICBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBleHBlY3RlZFBhcmVudFRyYW5zZm9ybTsKKyAgICBFWFBFQ1RfVFJBTlNG
T1JNQVRJT05fTUFUUklYX0VRKHBhcmVudC0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSwgZXhwZWN0
ZWRQYXJlbnRUcmFuc2Zvcm0pOworICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEo
cGFyZW50LT5kcmF3VHJhbnNmb3JtKCksIGV4cGVjdGVkUGFyZW50VHJhbnNmb3JtKTsKIAogICAg
IC8vIFZlcmlmeSByZXN1bHRzIG9mIHRyYW5zZm9ybWVkIHBhcmVudCByZWN0cwotICAgIEludFJl
Y3QgcGFyZW50Qm91bmRzKEludFBvaW50KCksIHBhcmVudC0+Ym91bmRzKCkpOwotICAgIEludFJl
Y3QgcGFyZW50Q29udGVudEJvdW5kcyhJbnRQb2ludCgpLCBwYXJlbnQtPmNvbnRlbnRCb3VuZHMo
KSk7CisgICAgRmxvYXRSZWN0IHBhcmVudENvbnRlbnRCb3VuZHMoRmxvYXRQb2ludCgpLCBGbG9h
dFNpemUocGFyZW50LT5jb250ZW50Qm91bmRzKCkpKTsKIAotICAgIEZsb2F0UmVjdCBwYXJlbnRE
cmF3UmVjdCA9IENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KHBhcmVudC0+ZHJhd1RyYW5zZm9y
bSgpLCBGbG9hdFJlY3QocGFyZW50Q29udGVudEJvdW5kcykpOwotICAgIEZsb2F0UmVjdCBwYXJl
bnRTY3JlZW5TcGFjZVJlY3QgPSBDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChwYXJlbnQtPnNj
cmVlblNwYWNlVHJhbnNmb3JtKCksIEZsb2F0UmVjdChwYXJlbnRCb3VuZHMpKTsKKyAgICBGbG9h
dFJlY3QgcGFyZW50RHJhd1JlY3QgPSBDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChwYXJlbnQt
PmRyYXdUcmFuc2Zvcm0oKSwgcGFyZW50Q29udGVudEJvdW5kcyk7CisgICAgRmxvYXRSZWN0IHBh
cmVudFNjcmVlblNwYWNlUmVjdCA9IENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KHBhcmVudC0+
c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSwgcGFyZW50Q29udGVudEJvdW5kcyk7CiAKICAgICBGbG9h
dFJlY3QgZXhwZWN0ZWRQYXJlbnREcmF3UmVjdChGbG9hdFBvaW50KCksIHBhcmVudC0+Ym91bmRz
KCkpOwogICAgIGV4cGVjdGVkUGFyZW50RHJhd1JlY3Quc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3Ip
OwpAQCAtMzcwNSwyMiArMzcwMCwxNiBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3Qs
IHZlcmlmeUxheWVyVHJhbnNmb3Jtc0luSGlnaERQSSkKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9F
UShwYXJlbnRTY3JlZW5TcGFjZVJlY3QsIGV4cGVjdGVkUGFyZW50RHJhd1JlY3QpOwogCiAgICAg
Ly8gVmVyaWZ5IGNoaWxkIHRyYW5zZm9ybXMKLSAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBl
eHBlY3RlZENoaWxkU2NyZWVuU3BhY2VUcmFuc2Zvcm07Ci0gICAgZXhwZWN0ZWRDaGlsZFNjcmVl
blNwYWNlVHJhbnNmb3JtLnNldE0xMShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgZXhwZWN0ZWRD
aGlsZFNjcmVlblNwYWNlVHJhbnNmb3JtLnNldE0yMihkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAg
ZXhwZWN0ZWRDaGlsZFNjcmVlblNwYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZShjaGlsZC0+cG9zaXRp
b24oKS54KCksIGNoaWxkLT5wb3NpdGlvbigpLnkoKSk7Ci0gICAgRVhQRUNUX1RSQU5TRk9STUFU
SU9OX01BVFJJWF9FUShleHBlY3RlZENoaWxkU2NyZWVuU3BhY2VUcmFuc2Zvcm0sIGNoaWxkLT5z
Y3JlZW5TcGFjZVRyYW5zZm9ybSgpKTsKLQotICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGV4
cGVjdGVkQ2hpbGREcmF3VHJhbnNmb3JtOwotICAgIGV4cGVjdGVkQ2hpbGREcmF3VHJhbnNmb3Jt
LnRyYW5zbGF0ZShkZXZpY2VTY2FsZUZhY3RvciAqIGNoaWxkLT5wb3NpdGlvbigpLngoKSwgZGV2
aWNlU2NhbGVGYWN0b3IgKiBjaGlsZC0+cG9zaXRpb24oKS55KCkpOwotICAgIEVYUEVDVF9UUkFO
U0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRDaGlsZERyYXdUcmFuc2Zvcm0sIGNoaWxkLT5k
cmF3VHJhbnNmb3JtKCkpOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGV4cGVjdGVkQ2hp
bGRUcmFuc2Zvcm07CisgICAgZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoZGV2aWNl
U2NhbGVGYWN0b3IgKiBjaGlsZC0+cG9zaXRpb24oKS54KCksIGRldmljZVNjYWxlRmFjdG9yICog
Y2hpbGQtPnBvc2l0aW9uKCkueSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklY
X0VRKGV4cGVjdGVkQ2hpbGRUcmFuc2Zvcm0sIGNoaWxkLT5kcmF3VHJhbnNmb3JtKCkpOworICAg
IEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybSwg
Y2hpbGQtPnNjcmVlblNwYWNlVHJhbnNmb3JtKCkpOwogCiAgICAgLy8gVmVyaWZ5IHJlc3VsdHMg
b2YgdHJhbnNmb3JtZWQgY2hpbGQgcmVjdHMKLSAgICBJbnRSZWN0IGNoaWxkQm91bmRzKEludFBv
aW50KCksIGNoaWxkLT5ib3VuZHMoKSk7Ci0gICAgSW50UmVjdCBjaGlsZENvbnRlbnRCb3VuZHMo
SW50UG9pbnQoKSwgY2hpbGQtPmNvbnRlbnRCb3VuZHMoKSk7CisgICAgRmxvYXRSZWN0IGNoaWxk
Q29udGVudEJvdW5kcyhGbG9hdFBvaW50KCksIEZsb2F0U2l6ZShjaGlsZC0+Y29udGVudEJvdW5k
cygpKSk7CiAKLSAgICBGbG9hdFJlY3QgY2hpbGREcmF3UmVjdCA9IENDTWF0aFV0aWw6Om1hcENs
aXBwZWRSZWN0KGNoaWxkLT5kcmF3VHJhbnNmb3JtKCksIEZsb2F0UmVjdChjaGlsZENvbnRlbnRC
b3VuZHMpKTsKLSAgICBGbG9hdFJlY3QgY2hpbGRTY3JlZW5TcGFjZVJlY3QgPSBDQ01hdGhVdGls
OjptYXBDbGlwcGVkUmVjdChjaGlsZC0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSwgRmxvYXRSZWN0
KGNoaWxkQm91bmRzKSk7CisgICAgRmxvYXRSZWN0IGNoaWxkRHJhd1JlY3QgPSBDQ01hdGhVdGls
OjptYXBDbGlwcGVkUmVjdChjaGlsZC0+ZHJhd1RyYW5zZm9ybSgpLCBjaGlsZENvbnRlbnRCb3Vu
ZHMpOworICAgIEZsb2F0UmVjdCBjaGlsZFNjcmVlblNwYWNlUmVjdCA9IENDTWF0aFV0aWw6Om1h
cENsaXBwZWRSZWN0KGNoaWxkLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLCBjaGlsZENvbnRlbnRC
b3VuZHMpOwogCiAgICAgRmxvYXRSZWN0IGV4cGVjdGVkQ2hpbGREcmF3UmVjdChGbG9hdFBvaW50
KCksIGNoaWxkLT5ib3VuZHMoKSk7CiAgICAgZXhwZWN0ZWRDaGlsZERyYXdSZWN0Lm1vdmUoY2hp
bGQtPnBvc2l0aW9uKCkueCgpLCBjaGlsZC0+cG9zaXRpb24oKS55KCkpOwpAQCAtMzczMCwxMSAr
MzcxOSwxMSBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeUxheWVyVHJh
bnNmb3Jtc0luSGlnaERQSSkKIAogICAgIC8vIFZlcmlmeSBjaGlsZE5vU2NhbGUgdHJhbnNmb3Jt
cwogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGV4cGVjdGVkQ2hpbGROb1NjYWxlVHJhbnNm
b3JtID0gY2hpbGQtPmRyYXdUcmFuc2Zvcm0oKTsKLSAgICAvLyBkcmF3VHJhbnNmb3JtIHRyYW5z
Zm9ybXMgb24gY29udGVudCByZWN0cy4gVGhlIGNoaWxkJ3MgY29udGVudCByZWN0CisgICAgLy8g
QWxsIHRyYW5zZm9ybXMgb3BlcmF0ZSBvbiBjb250ZW50IHJlY3RzLiBUaGUgY2hpbGQncyBjb250
ZW50IHJlY3QKICAgICAvLyBpbmNvcnBvcmF0ZXMgZGV2aWNlIHNjYWxlLCBidXQgdGhlIGNoaWxk
Tm9TY2FsZSBkb2VzIG5vdDsgYWRkIGl0IGhlcmUuCiAgICAgZXhwZWN0ZWRDaGlsZE5vU2NhbGVU
cmFuc2Zvcm0uc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIEVYUEVDVF9UUkFOU0ZPUk1B
VElPTl9NQVRSSVhfRVEoY2hpbGROb1NjYWxlLT5kcmF3VHJhbnNmb3JtKCksIGV4cGVjdGVkQ2hp
bGROb1NjYWxlVHJhbnNmb3JtKTsKLSAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VR
KGNoaWxkLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLCBjaGlsZE5vU2NhbGUtPnNjcmVlblNwYWNl
VHJhbnNmb3JtKCkpOworICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoY2hpbGRO
b1NjYWxlLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLCBleHBlY3RlZENoaWxkTm9TY2FsZVRyYW5z
Zm9ybSk7CiB9CiAKIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5UmVuZGVy
U3VyZmFjZVRyYW5zZm9ybXNJbkhpZ2hEUEkpCkBAIC0zNzg1LDEzICszNzc0LDkgQEAgVEVTVChD
Q0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlSZW5kZXJTdXJmYWNlVHJhbnNmb3Jtc0lu
SGlnaERQSSkKICAgICAvLyByZW5kZXIgc3VyZmFjZSAoaXQgbmVlZHMgb25lIGJlY2F1c2UgaXQg
aGFzIGEgcmVwbGljYSBsYXllcikuCiAgICAgRVhQRUNUX0VRKDJ1LCByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0LnNpemUoKSk7CiAKLSAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZFBh
cmVudFNjcmVlblNwYWNlVHJhbnNmb3JtOwotICAgIGV4cGVjdGVkUGFyZW50U2NyZWVuU3BhY2VU
cmFuc2Zvcm0uc2V0TTExKGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBleHBlY3RlZFBhcmVudFNj
cmVlblNwYWNlVHJhbnNmb3JtLnNldE0yMihkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgRVhQRUNU
X1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShwYXJlbnQtPnNjcmVlblNwYWNlVHJhbnNmb3JtKCks
IGV4cGVjdGVkUGFyZW50U2NyZWVuU3BhY2VUcmFuc2Zvcm0pOwotCi0gICAgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXggZXhwZWN0ZWRQYXJlbnREcmF3VHJhbnNmb3JtOwotICAgIEVYUEVDVF9UUkFO
U0ZPUk1BVElPTl9NQVRSSVhfRVEocGFyZW50LT5kcmF3VHJhbnNmb3JtKCksIGV4cGVjdGVkUGFy
ZW50RHJhd1RyYW5zZm9ybSk7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZXhwZWN0ZWRQ
YXJlbnRUcmFuc2Zvcm07CisgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShwYXJl
bnQtPnNjcmVlblNwYWNlVHJhbnNmb3JtKCksIGV4cGVjdGVkUGFyZW50VHJhbnNmb3JtKTsKKyAg
ICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKHBhcmVudC0+ZHJhd1RyYW5zZm9ybSgp
LCBleHBlY3RlZFBhcmVudFRyYW5zZm9ybSk7CiAKICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBleHBlY3RlZERyYXdUcmFuc2Zvcm07CiAgICAgZXhwZWN0ZWREcmF3VHJhbnNmb3JtLnNldE0x
MShkZXZpY2VTY2FsZUZhY3Rvcik7CkBAIC0zNzk5LDkgKzM3ODQsNyBAQCBURVNUKENDTGF5ZXJU
cmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVJlbmRlclN1cmZhY2VUcmFuc2Zvcm1zSW5IaWdoRFBJ
KQogICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWREcmF3VHJhbnNm
b3JtLCBjaGlsZC0+ZHJhd1RyYW5zZm9ybSgpKTsKIAogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4IGV4cGVjdGVkU2NyZWVuU3BhY2VUcmFuc2Zvcm07Ci0gICAgZXhwZWN0ZWRTY3JlZW5TcGFj
ZVRyYW5zZm9ybS5zZXRNMTEoZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIGV4cGVjdGVkU2NyZWVu
U3BhY2VUcmFuc2Zvcm0uc2V0TTIyKGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBleHBlY3RlZFNj
cmVlblNwYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZShjaGlsZC0+cG9zaXRpb24oKS54KCksIGNoaWxk
LT5wb3NpdGlvbigpLnkoKSk7CisgICAgZXhwZWN0ZWRTY3JlZW5TcGFjZVRyYW5zZm9ybS50cmFu
c2xhdGUoZGV2aWNlU2NhbGVGYWN0b3IgKiBjaGlsZC0+cG9zaXRpb24oKS54KCksIGRldmljZVNj
YWxlRmFjdG9yICogY2hpbGQtPnBvc2l0aW9uKCkueSgpKTsKICAgICBFWFBFQ1RfVFJBTlNGT1JN
QVRJT05fTUFUUklYX0VRKGV4cGVjdGVkU2NyZWVuU3BhY2VUcmFuc2Zvcm0sIGNoaWxkLT5zY3Jl
ZW5TcGFjZVRyYW5zZm9ybSgpKTsKIAogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGV4cGVj
dGVkRHVwbGljYXRlQ2hpbGREcmF3VHJhbnNmb3JtID0gY2hpbGQtPmRyYXdUcmFuc2Zvcm0oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9t
aXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwCmluZGV4IGVhMzA1OWQyYmU3ODgyNzU1Zjg5ZGEwZDgzZjAyMjFmYmU0MjFj
MDYuLjI5MTVkZjc5MzU0MDM3YTdhOWVkZmQ1YzA4YzVjNTNmMjc1MjQ4YzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0
LmNwcApAQCAtMTIzMCw2ICsxMjMwLDEwIEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykKICAgICAvLyBwaXhlbHMsIHdo
aWNoIG1lYW5zIG5vbmUgc2hvdWxkIGJlIG9jY2x1ZGVkLgogICAgIGxheWVyLT5zZXRDb250ZW50
c1NjYWxlKDAuNSk7CiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDYwMCwgNjAwKSk7Cisg
ICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZHJhd1RyYW5zZm9ybTsKKyAgICBkcmF3VHJhbnNm
b3JtLnNjYWxlKDEgLyBsYXllci0+Y29udGVudHNTY2FsZSgpKTsKKyAgICBsYXllci0+c2V0RHJh
d1RyYW5zZm9ybShkcmF3VHJhbnNmb3JtKTsKKyAgICBsYXllci0+c2V0U2NyZWVuU3BhY2VUcmFu
c2Zvcm0oZHJhd1RyYW5zZm9ybSk7CiAKICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVj
dCgyMDAsIDIwMCwgMzAwLCAxMDApKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0
KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmNvbnRlbnRCb3VuZHMoKSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154392</attachid>
            <date>2012-07-25 10:46:51 -0700</date>
            <delta_ts>2012-07-25 16:47:33 -0700</delta_ts>
            <desc>Rebased</desc>
            <filename>bug-91807-20120725104641.patch</filename>
            <type>text/plain</type>
            <size>22088</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTA1M2I1YWRmOTJmZTFk
MzU1Y2Q1ZTk0ODk4NWI1NTM5ZWI1MWI0YS4uZTRhMTRkMDE1MWE5ZmQxMzJiZjk3MWU5ODk2ZTAx
OGFmYmRjZjMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA3LTE5ICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBNYWtl
IGFsbCBjb21wb3NpdG9yIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm1zIG9wZXJhdGUgb24gY29udGVu
dCByZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTE4MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQ
cmV2aW91c2x5LCBzdXJmYWNlIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm1zIG9wZXJhdGVkIG9uIHN1
cmZhY2UKKyAgICAgICAgY29udGVudCBzcGFjZSBidXQgbGF5ZXIgc2NyZWVuIHNwYWNlIHRyYW5z
Zm9ybXMgb3BlcmF0ZWQgb24gbGF5ZXIKKyAgICAgICAgc3BhY2UuIEZvciB0aGUgcHVycG9zZSBv
ZiBjb25zaXN0ZW5jeSwgdW5pZnkgdGhlc2UgdHdvIHNvIHRoYXQgdGhleQorICAgICAgICBib3Ro
IG9wZXJhdGUgb24gY29udGVudCBzcGFjZS4KKworICAgICAgICBObyB0ZXN0cywgYmVjYXVzZSBu
byBjaGFuZ2UgaW4gYmVoYXZpb3IgZXhwZWN0ZWQuIEp1c3QgYSByZWZhY3RvcmluZy4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAg
ICAgKExheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnUmVj
dEhpc3Rvcnk6OnNhdmVQYWludFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDRGVidWdSZWN0
SGlzdG9yeTo6c2F2ZVByb3BlcnR5Q2hhbmdlZFJlY3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNJbnRlcm5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3RDb21tb246OmZpbmRMYXllclRoYXRJc0hpdEJ5UG9pbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjo6Om1hcmtPY2NsdWRlZEJlaGluZExheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Ojo6b2NjbHVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Ojp1bm9jY2x1
ZGVkQ29udGVudFJlY3QpOgorCiAyMDEyLTA3LTI1ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdv
b2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBVbmlmeSBjb21wb3NpdG9yIHF1YWRUcmFu
c2Zvcm0vZHJhd1RyYW5zZm9ybS9vcmlnaW5UcmFuc2Zvcm0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggZjFiNDNmZTJiMjdiNDMwMDJhYTBmZWY0OGEzMDI0OTc2NWUyOTJjYy4uMmQ5NTZi
YzliM2Y1NGEzZjI1MDI1NjljZDM4OWJiOWQ0NmVlMWVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNy0xOSAgQWRyaWVubmUgV2Fsa2VyICA8ZW5u
ZUBnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFrZSBhbGwgY29tcG9zaXRvciBz
Y3JlZW4gc3BhY2UgdHJhbnNmb3JtcyBvcGVyYXRlIG9uIGNvbnRlbnQgcmVjdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODA3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRlc3RzIHRoYXQg
ZGVhbCB3aXRoIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm1zIHRvIHJlZmxlY3QgdGhpcyBjaGFuZ2Uu
CisKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcDoKKyAgICAg
ICAgKiB0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKwogMjAxMi0wNy0yNSAgQWRy
aWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gVW5p
ZnkgY29tcG9zaXRvciBxdWFkVHJhbnNmb3JtL2RyYXdUcmFuc2Zvcm0vb3JpZ2luVHJhbnNmb3Jt
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllckNocm9taXVtLmgKaW5kZXggYmZlMmRjMjE4ZjdkOTE2ZDYzNjBjN2MyMWFmNWY1NTI3
NDBjNzZkZS4uMjdjZThmMTBhYjA2ODE3NGUzYjExOWJjNmE3ODk1YjM0NDU4NzZlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyQ2hyb21pdW0uaApAQCAtMjQ3LDcgKzI0Nyw3IEBAIHB1YmxpYzoKICAgICAvLyByb290IHJl
bmRlciBzdXJmYWNlLCB0aGVuIHRoaXMgY29udmVydHMgdG8gcGh5c2ljYWwgcGl4ZWxzKS4KICAg
ICBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKCkg
Y29uc3QgeyByZXR1cm4gbV9kcmF3VHJhbnNmb3JtOyB9CiAgICAgdm9pZCBzZXREcmF3VHJhbnNm
b3JtKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkgeyBtX2Ry
YXdUcmFuc2Zvcm0gPSBtYXRyaXg7IH0KLSAgICAvLyBUaGlzIG1vdmVzIGZyb20gbGF5ZXIgc3Bh
Y2UsIHdpdGggb3JpZ2luIHRoZSB0b3AgbGVmdCB0byBzY3JlZW4gc3BhY2Ugd2l0aCBvcmlnaW4g
aW4gdGhlIHRvcCBsZWZ0LgorICAgIC8vIFRoaXMgbW92ZXMgZnJvbSBjb250ZW50IHNwYWNlLCB3
aXRoIG9yaWdpbiB0aGUgdG9wIGxlZnQgdG8gc2NyZWVuIHNwYWNlIHdpdGggb3JpZ2luIGluIHRo
ZSB0b3AgbGVmdC4KICAgICAvLyBJdCBjb252ZXJ0cyBsb2dpY2FsLCBub24tcGFnZS1zY2FsZWQg
cGl4ZWxzIHRvIHBoeXNpY2FsIHBpeGVscy4KICAgICBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9y
bWF0aW9uTWF0cml4JiBzY3JlZW5TcGFjZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Ny
ZWVuU3BhY2VUcmFuc2Zvcm07IH0KICAgICB2b2lkIHNldFNjcmVlblNwYWNlVHJhbnNmb3JtKGNv
bnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkgeyBtX3NjcmVlblNw
YWNlVHJhbnNmb3JtID0gbWF0cml4OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5
LmNwcAppbmRleCBjNjEzMjE3OGUxNjM5MzM1ZDAxNGM4NmRlYjg2NmE2M2I1YmQ3Njc4Li4wYWY0
NmE0Yzk2NWU0M2U3M2UyYTFmODdjZGE2YjI2M2Y0M2NlN2NhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3Rvcnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
RGVidWdSZWN0SGlzdG9yeS5jcHAKQEAgLTcyLDggKzcyLDExIEBAIHZvaWQgQ0NEZWJ1Z1JlY3RI
aXN0b3J5OjpzYXZlUGFpbnRSZWN0cyhDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgLy8gcmVnYXJk
bGVzcyBvZiB3aGV0aGVyIHRoaXMgbGF5ZXIgaXMgc2tpcHBlZCBmb3IgYWN0dWFsIGRyYXdpbmcg
b3Igbm90LiBUaGVyZWZvcmUKICAgICAvLyB3ZSB0cmF2ZXJzZSByZWN1cnNpdmVseSBvdmVyIGFs
bCBsYXllcnMsIG5vdCBqdXN0IHRoZSByZW5kZXIgc3VyZmFjZSBsaXN0LgogCi0gICAgaWYgKCFs
YXllci0+dXBkYXRlUmVjdCgpLmlzRW1wdHkoKSAmJiBsYXllci0+ZHJhd3NDb250ZW50KCkpCi0g
ICAgICAgIG1fZGVidWdSZWN0cy5hcHBlbmQoQ0NEZWJ1Z1JlY3QoUGFpbnRSZWN0VHlwZSwgQ0NN
YXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3QobGF5ZXItPnNjcmVlblNwYWNlVHJhbnNmb3JtKCksIGxh
eWVyLT51cGRhdGVSZWN0KCkpKSk7CisgICAgaWYgKCFsYXllci0+dXBkYXRlUmVjdCgpLmlzRW1w
dHkoKSAmJiBsYXllci0+ZHJhd3NDb250ZW50KCkpIHsKKyAgICAgICAgRmxvYXRSZWN0IHVwZGF0
ZUNvbnRlbnRSZWN0ID0gbGF5ZXItPnVwZGF0ZVJlY3QoKTsKKyAgICAgICAgdXBkYXRlQ29udGVu
dFJlY3Quc2NhbGUobGF5ZXItPmNvbnRlbnRCb3VuZHMoKS53aWR0aCgpIC8gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGxheWVyLT5ib3VuZHMoKS53aWR0aCgpKSwgbGF5ZXItPmNvbnRlbnRCb3VuZHMoKS5o
ZWlnaHQoKSAvIHN0YXRpY19jYXN0PGZsb2F0PihsYXllci0+Ym91bmRzKCkuaGVpZ2h0KCkpKTsK
KyAgICAgICAgbV9kZWJ1Z1JlY3RzLmFwcGVuZChDQ0RlYnVnUmVjdChQYWludFJlY3RUeXBlLCBD
Q01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChsYXllci0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSwg
dXBkYXRlQ29udGVudFJlY3QpKSk7CisgICAgfQogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGxheWVyLT5jaGlsZHJlbigpLnNpemUoKTsgKytpKQogICAgICAgICBzYXZlUGFpbnRSZWN0
cyhsYXllci0+Y2hpbGRyZW4oKVtpXS5nZXQoKSk7CkBAIC05NCw3ICs5Nyw3IEBAIHZvaWQgQ0NE
ZWJ1Z1JlY3RIaXN0b3J5OjpzYXZlUHJvcGVydHlDaGFuZ2VkUmVjdHMoY29uc3QgVmVjdG9yPEND
TGF5ZXJJbXBsKj4mIHJlCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAg
IGlmIChsYXllci0+bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSkKLSAgICAgICAgICAgICAgICBtX2Rl
YnVnUmVjdHMuYXBwZW5kKENDRGVidWdSZWN0KFByb3BlcnR5Q2hhbmdlZFJlY3RUeXBlLCBDQ01h
dGhVdGlsOjptYXBDbGlwcGVkUmVjdChsYXllci0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSwgRmxv
YXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbGF5ZXItPmJvdW5kcygpKSkpKTsKKyAgICAgICAg
ICAgICAgICBtX2RlYnVnUmVjdHMuYXBwZW5kKENDRGVidWdSZWN0KFByb3BlcnR5Q2hhbmdlZFJl
Y3RUeXBlLCBDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChsYXllci0+c2NyZWVuU3BhY2VUcmFu
c2Zvcm0oKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbGF5ZXItPmNvbnRlbnRCb3Vu
ZHMoKSkpKSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0Q29tbW9uLmNwcAppbmRleCA5Y2I5MWYxZDAxNDE3MzE1ZWI1YWU4M2MyOWFlODQ2OTU0
ZDZmYzU1Li41NzA0ZjBlOGUxYmI4NmQ2NWEzM2QzMDQxYjkyNWJlOWMxMjc3YTljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAKQEAgLTQ1MCw4ICs0NTAsOCBA
QCBzdGF0aWMgdm9pZCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0ludGVybmFsKExheWVyVHlwZSog
bGF5ZXIsIExheWVyVHlwZSogcm9vdExheQogICAgIC8vICAgICAgICBJbnRlcnByZXRpbmcgdGhl
IG1hdGggbGVmdC10by1yaWdodCwgdGhpcyB0cmFuc2Zvcm1zIGZyb20gdGhlIGxheWVyJ3MgcmVu
ZGVyIHN1cmZhY2UgdG8gdGhlIG9yaWdpbiBvZiB0aGUgbGF5ZXIgaW4gY29udGVudCBzcGFjZS4K
ICAgICAvLwogICAgIC8vIFRoZSBzY3JlZW4gc3BhY2UgdHJhbnNmb3JtIGlzOgotICAgIC8vICAg
ICAgICBNW3NjcmVlbnNwYWNlXSA9IE1bcm9vdF0gKiBUcltvcmlnaW5dICogY29tcG9zaXRlTGF5
ZXJUcmFuc2Zvcm0KLSAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgPSBNW3Jvb3RdICogVHJb
bGF5ZXItPnBvc2l0aW9uKCldICogTVtsYXllcl0gKiBUcltvcmlnaW4yYW5jaG9yXS5pbnZlcnNl
KCkKKyAgICAvLyAgICAgICAgTVtzY3JlZW5zcGFjZV0gPSBNW3Jvb3RdICogVHJbb3JpZ2luXSAq
IGNvbXBvc2l0ZUxheWVyVHJhbnNmb3JtICogU1tjb250ZW50MmxheWVyXQorICAgIC8vICAgICAg
ICAgICAgICAgICAgICAgICA9IE1bcm9vdF0gKiBUcltsYXllci0+cG9zaXRpb24oKV0gKiBNW2xh
eWVyXSAqIFRyW29yaWdpbjJhbmNob3JdLmludmVyc2UoKSAqIFNbY29udGVudDJsYXllcl0KICAg
ICAvLwogICAgIC8vICAgICAgICBJbnRlcnByZXRpbmcgdGhlIG1hdGggbGVmdC10by1yaWdodCwg
dGhpcyB0cmFuc2Zvcm1zIGZyb20gdGhlIHJvb3QgcmVuZGVyIHN1cmZhY2UncyBjb250ZW50IHNw
YWNlIHRvIHRoZSBsb2NhbCBsYXllcidzIG9yaWdpbiBpbiBsYXllciBzcGFjZS4KICAgICAvLwpA
QCAtNTQwLDE1ICs1NDAsOSBAQCBzdGF0aWMgdm9pZCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0lu
dGVybmFsKExheWVyVHlwZSogbGF5ZXIsIExheWVyVHlwZSogcm9vdExheQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci0+Ym91bmRzKCkuaGVpZ2h0KCkgLyBzdGF0
aWNfY2FzdDxkb3VibGU+KGxheWVyLT5jb250ZW50Qm91bmRzKCkuaGVpZ2h0KCkpKTsKICAgICB9
CiAKLSAgICAvLyBsYXllclNjcmVlblNwYWNlVHJhbnNmb3JtIHJlcHJlc2VudHMgdGhlIHRyYW5z
Zm9ybSBiZXR3ZWVuIHJvb3QgbGF5ZXIncyAic2NyZWVuIHNwYWNlIiBhbmQgbG9jYWwgbGF5ZXIg
c3BhY2UuCisgICAgLy8gbGF5ZXJTY3JlZW5TcGFjZVRyYW5zZm9ybSByZXByZXNlbnRzIHRoZSB0
cmFuc2Zvcm0gYmV0d2VlbiByb290IGxheWVyJ3MgInNjcmVlbiBzcGFjZSIgYW5kIGxvY2FsIGNv
bnRlbnQgc3BhY2UuCiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJTY3JlZW5TcGFj
ZVRyYW5zZm9ybSA9IGZ1bGxIaWVyYXJjaHlNYXRyaXg7CiAgICAgbGF5ZXJTY3JlZW5TcGFjZVRy
YW5zZm9ybS5tdWx0aXBseShkcmF3VHJhbnNmb3JtKTsKLSAgICAvLyBUaGUgZHJhdyB0cmFuc2Zv
cm0gb3BlcmF0ZXMgb24gY29udGVudCBzcGFjZSByZWN0cy4gVGhpcyBuZWVkcyB0byBiZSBjb252
ZXJ0ZWQgdG8gdHJhbnNmb3JtIGxheWVyIHNwYWNlIHJlY3RzLgotICAgIC8vIEZJWE1FOiBNYWtl
IGxheWVyIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm1zIG9wZXJhdGUgb24gY29udGVudCBzcGFjZSBy
ZWN0cy4KLSAgICBpZiAoIWxheWVyLT5jb250ZW50Qm91bmRzKCkuaXNFbXB0eSgpICYmICFsYXll
ci0+Ym91bmRzKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGxheWVyU2NyZWVuU3BhY2VUcmFuc2Zv
cm0uc2NhbGVOb25Vbmlmb3JtKGxheWVyLT5jb250ZW50Qm91bmRzKCkud2lkdGgoKSAvIHN0YXRp
Y19jYXN0PGRvdWJsZT4obGF5ZXItPmJvdW5kcygpLndpZHRoKCkpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci0+Y29udGVudEJvdW5kcygp
LmhlaWdodCgpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihsYXllci0+Ym91bmRzKCkuaGVpZ2h0KCkp
KTsKLSAgICB9CiAgICAgbGF5ZXItPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKGxheWVyU2NyZWVu
U3BhY2VUcmFuc2Zvcm0pOwogCiAgICAgYm9vbCBhbmltYXRpbmdUcmFuc2Zvcm1Ub1RhcmdldCA9
IGxheWVyLT50cmFuc2Zvcm1Jc0FuaW1hdGluZygpOwpAQCAtNzU5LDE0ICs3NTMsNyBAQCBzdGF0
aWMgdm9pZCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0ludGVybmFsKExheWVyVHlwZSogbGF5ZXIs
IExheWVyVHlwZSogcm9vdExheQogICAgICAgICAgICAgcmVuZGVyU3VyZmFjZS0+Y2xlYXJMYXll
ckxpc3QoKTsKIAogICAgICAgICByZW5kZXJTdXJmYWNlLT5zZXRDb250ZW50UmVjdChjbGlwcGVk
Q29udGVudFJlY3QpOwotCi0gICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHNjcmVlblNw
YWNlVHJhbnNmb3JtID0gbGF5ZXItPnNjcmVlblNwYWNlVHJhbnNmb3JtKCk7Ci0gICAgICAgIC8v
IEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgY29uc2lzdGVudC4KLSAgICAgICAgLy8gVGhlIGxheWVy
J3Mgc2NyZWVuIHNwYWNlIHRyYW5zZm9ybSBvcGVyYXRlcyBvbiBsYXllciByZWN0cywgYnV0IHRo
ZSBzdXJmYWNlcwotICAgICAgICAvLyBzY3JlZW4gc3BhY2UgdHJhbnNmb3JtIG9wZXJhdGVzIG9u
IHN1cmZhY2UgcmVjdHMsIHdoaWNoIGFyZSBpbiBwaHlzaWNhbCBwaXhlbHMsCi0gICAgICAgIC8v
IHNvIHdlIGhhdmUgdG8gJ3VuZG8nIHRoZSBzY2FsZSBoZXJlLgotICAgICAgICBzY3JlZW5TcGFj
ZVRyYW5zZm9ybS5zY2FsZSgxIC8gY29udGVudHNTY2FsZSk7Ci0gICAgICAgIHJlbmRlclN1cmZh
Y2UtPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKHNjcmVlblNwYWNlVHJhbnNmb3JtKTsKKyAgICAg
ICAgcmVuZGVyU3VyZmFjZS0+c2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0obGF5ZXItPnNjcmVlblNw
YWNlVHJhbnNmb3JtKCkpOwogCiAgICAgICAgIGlmIChsYXllci0+cmVwbGljYUxheWVyKCkpIHsK
ICAgICAgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHN1cmZhY2VPcmlnaW5Ub1JlcGxp
Y2FPcmlnaW5UcmFuc2Zvcm07CkBAIC05MzUsOCArOTIyLDggQEAgQ0NMYXllckltcGwqIENDTGF5
ZXJUcmVlSG9zdENvbW1vbjo6ZmluZExheWVyVGhhdElzSGl0QnlQb2ludChjb25zdCBJbnRQb2lu
dCYgdmkKIAogICAgICAgICBDQ0xheWVySW1wbCogY3VycmVudExheWVyID0gKCppdCk7CiAKLSAg
ICAgICAgRmxvYXRSZWN0IGxheWVyUmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGN1cnJlbnRMYXll
ci0+Ym91bmRzKCkpOwotICAgICAgICBpZiAoIXBvaW50SGl0c1JlY3Qodmlld3BvcnRQb2ludCwg
Y3VycmVudExheWVyLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLCBsYXllclJlY3QpKQorICAgICAg
ICBGbG9hdFJlY3QgY29udGVudFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBjdXJyZW50TGF5ZXIt
PmNvbnRlbnRCb3VuZHMoKSk7CisgICAgICAgIGlmICghcG9pbnRIaXRzUmVjdCh2aWV3cG9ydFBv
aW50LCBjdXJyZW50TGF5ZXItPnNjcmVlblNwYWNlVHJhbnNmb3JtKCksIGNvbnRlbnRSZWN0KSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIHdlIHRo
aW5rIHRoZSBwb2ludCBkb2VzIGhpdCB0aGUgbGF5ZXIsIGJ1dCB3ZSBuZWVkIHRvIHdhbGsgdXAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDT2NjbHVzaW9uVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCmluZGV4IGMxYTM4Y2EyYzAwZTY0
MzkzN2FhYjZiODkwOTlkZDQwMTc1YWFhYTIuLjg4MGQ1NjNhNGEyMmQyN2NkMDRlZWE0NWRlM2Y0
NDBkZTg3YjBmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcApAQCAt
MjY1LDI1ICsyNjUsNiBAQCB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBS
ZW5kZXJTdXJmYWNlVHlwZT46OmxlYXZlVG9SZW5kZXJUYXJnZXQoYwogICAgIH0KIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPgotc3RhdGljIGlubGluZSBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBjb250ZW50VG9TY3JlZW5TcGFjZVRyYW5zZm9ybShjb25zdCBMYXllclR5cGUqIGxh
eWVyKQotewotICAgIEFTU0VSVChsYXllclRyYW5zZm9ybXNUb1NjcmVlbktub3duKGxheWVyKSk7
Ci0gICAgSW50U2l6ZSBib3VuZHNJbkxheWVyU3BhY2UgPSBsYXllci0+Ym91bmRzKCk7Ci0gICAg
SW50U2l6ZSBib3VuZHNJbkNvbnRlbnRTcGFjZSA9IGxheWVyLT5jb250ZW50Qm91bmRzKCk7Ci0K
LSAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm0gPSBsYXllci0+c2NyZWVuU3Bh
Y2VUcmFuc2Zvcm0oKTsKLQotICAgIGlmIChib3VuZHNJbkNvbnRlbnRTcGFjZS5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiB0cmFuc2Zvcm07Ci0KLSAgICAvLyBTY2FsZSBmcm9tIGNvbnRlbnQg
c3BhY2UgdG8gbGF5ZXIgc3BhY2UKLSAgICB0cmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3JtKGJvdW5k
c0luTGF5ZXJTcGFjZS53aWR0aCgpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihib3VuZHNJbkNvbnRl
bnRTcGFjZS53aWR0aCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kc0lu
TGF5ZXJTcGFjZS5oZWlnaHQoKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4oYm91bmRzSW5Db250ZW50
U3BhY2UuaGVpZ2h0KCkpKTsKLQotICAgIHJldHVybiB0cmFuc2Zvcm07Ci19Ci0KIC8vIEZJWE1F
OiBSZW1vdmUgdXNlUGFpbnRUcmFja2luZyB3aGVuIHBhaW50IHRyYWNraW5nIGlzIG9uIGZvciBw
YWludCBjdWxsaW5nLgogdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPgogc3RhdGljIGlubGlu
ZSB2b2lkIGFkZE9jY2x1c2lvbkJlaGluZExheWVyKFJlZ2lvbiYgcmVnaW9uLCBjb25zdCBMYXll
clR5cGUqIGxheWVyLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBj
b25zdCBSZWdpb24mIG9wYXF1ZUNvbnRlbnRzLCBjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdCwg
Y29uc3QgSW50U2l6ZSYgbWluaW11bVRyYWNraW5nU2l6ZSwgVmVjdG9yPEludFJlY3Q+KiBvY2Ns
dWRpbmdTY3JlZW5TcGFjZVJlY3RzKQpAQCAtMzQyLDcgKzMyMyw3IEBAIHZvaWQgQ0NPY2NsdXNp
b25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6bWFya09jY2x1ZGVk
QmVoaW5kTGF5CiAgICAgICAgIGlmIChjbGlwcGVkIHx8ICFzY2lzc29ySW5TY3JlZW5RdWFkLmlz
UmVjdGlsaW5lYXIoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgSW50UmVjdCBzY2lz
c29ySW5TY3JlZW5SZWN0ID0gaW50ZXJzZWN0aW9uKG1fc2Npc3NvclJlY3RJblNjcmVlblNwYWNl
LCBlbmNsb3NlZEludFJlY3Qoc2Npc3NvckluU2NyZWVuUXVhZC5ib3VuZGluZ0JveCgpKSk7Ci0g
ICAgICAgIGFkZE9jY2x1c2lvbkJlaGluZExheWVyPExheWVyVHlwZT4obV9zdGFjay5sYXN0KCku
b2NjbHVzaW9uSW5TY3JlZW4sIGxheWVyLCBjb250ZW50VG9TY3JlZW5TcGFjZVRyYW5zZm9ybTxM
YXllclR5cGU+KGxheWVyKSwgb3BhcXVlQ29udGVudHMsIHNjaXNzb3JJblNjcmVlblJlY3QsIG1f
bWluaW11bVRyYWNraW5nU2l6ZSwgbV9vY2NsdWRpbmdTY3JlZW5TcGFjZVJlY3RzKTsKKyAgICAg
ICAgYWRkT2NjbHVzaW9uQmVoaW5kTGF5ZXI8TGF5ZXJUeXBlPihtX3N0YWNrLmxhc3QoKS5vY2Ns
dXNpb25JblNjcmVlbiwgbGF5ZXIsIGxheWVyLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLCBvcGFx
dWVDb250ZW50cywgc2Npc3NvckluU2NyZWVuUmVjdCwgbV9taW5pbXVtVHJhY2tpbmdTaXplLCBt
X29jY2x1ZGluZ1NjcmVlblNwYWNlUmVjdHMpOwogICAgIH0KIH0KIApAQCAtMzcxLDcgKzM1Miw3
IEBAIGJvb2wgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VU
eXBlPjo6b2NjbHVkZWQoY29uc3QgTGF5ZXJUCiAgICAgaWYgKGxheWVyVHJhbnNmb3Jtc1RvVGFy
Z2V0S25vd24obGF5ZXIpICYmIHRlc3RDb250ZW50UmVjdE9jY2x1ZGVkKGNvbnRlbnRSZWN0LCBs
YXllci0+ZHJhd1RyYW5zZm9ybSgpLCBsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRTdXJmYWNlKGxh
eWVyKSwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIGlmIChsYXllclRyYW5zZm9ybXNUb1NjcmVlbktub3duKGxheWVyKSAmJiB0
ZXN0Q29udGVudFJlY3RPY2NsdWRlZChjb250ZW50UmVjdCwgY29udGVudFRvU2NyZWVuU3BhY2VU
cmFuc2Zvcm08TGF5ZXJUeXBlPihsYXllciksIG1fc2Npc3NvclJlY3RJblNjcmVlblNwYWNlLCBt
X3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbikpIHsKKyAgICBpZiAobGF5ZXJUcmFuc2Zv
cm1zVG9TY3JlZW5Lbm93bihsYXllcikgJiYgdGVzdENvbnRlbnRSZWN0T2NjbHVkZWQoY29udGVu
dFJlY3QsIGxheWVyLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLCBtX3NjaXNzb3JSZWN0SW5TY3Jl
ZW5TcGFjZSwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4pKSB7CiAgICAgICAgIGlm
IChoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpCiAgICAgICAgICAgICAqaGFz
T2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlID0gdHJ1ZTsKICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC00MTgsNyArMzk5LDcgQEAgSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNl
PExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+Ojp1bm9jY2x1ZGVkQ29udGVudFIKIAogICAg
IEludFJlY3QgdW5vY2NsdWRlZEluU2NyZWVuID0gY29udGVudFJlY3Q7CiAgICAgaWYgKGxheWVy
VHJhbnNmb3Jtc1RvU2NyZWVuS25vd24obGF5ZXIpKQotICAgICAgICB1bm9jY2x1ZGVkSW5TY3Jl
ZW4gPSBjb21wdXRlVW5vY2NsdWRlZENvbnRlbnRSZWN0KGNvbnRlbnRSZWN0LCBjb250ZW50VG9T
Y3JlZW5TcGFjZVRyYW5zZm9ybTxMYXllclR5cGU+KGxheWVyKSwgbV9zY2lzc29yUmVjdEluU2Ny
ZWVuU3BhY2UsIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuKTsKKyAgICAgICAgdW5v
Y2NsdWRlZEluU2NyZWVuID0gY29tcHV0ZVVub2NjbHVkZWRDb250ZW50UmVjdChjb250ZW50UmVj
dCwgbGF5ZXItPnNjcmVlblNwYWNlVHJhbnNmb3JtKCksIG1fc2Npc3NvclJlY3RJblNjcmVlblNw
YWNlLCBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbik7CiAKICAgICBJbnRSZWN0IHVu
b2NjbHVkZWRJblRhcmdldCA9IGNvbnRlbnRSZWN0OwogICAgIGlmIChsYXllclRyYW5zZm9ybXNU
b1RhcmdldEtub3duKGxheWVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwCmluZGV4IGU0MGExYzI4OTVi
Yjc5N2M0YjU0MDM1NmM0OWNjYTAzMmRhMmY1ZmMuLmM1Y2IyZTk5MTNjMzdiZmE3NTljNTEzZDk2
ODJjODBmMzk3ODYxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcApAQCAtMjkwNiw4ICsyOTA2LDcg
QEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlIaXRUZXN0aW5nRm9yU2lu
Z2xlTGF5ZXJXaXRoU2NhbGVkQ29udGVudHMKICAgICAvLyBzY3JlZW5TcGFjZVRyYW5zZm9ybSBj
b252ZXJ0cyBmcm9tIHRoZSBsYXllcidzIG9yaWdpbiBzcGFjZSB0byBzY3JlZW4gc3BhY2UuIFRo
aXMKICAgICAvLyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBoaXQgdGVzdGluZyB3b3JrcyBjb3JyZWN0
bHkgYWNjb3VudHMgZm9yIHRoZSBjb250ZW50cyBzY2FsZS4KICAgICAvLyBBIGNvbnRlbnRzU2Nh
bGUgdGhhdCBpcyBub3QgMSBlZmZlY3RpdmVseSBmb3JjZXMgYSBub24taWRlbnRpdHkgdHJhbnNm
b3JtIGJldHdlZW4KLSAgICAvLyBsYXllcidzIGNvbnRlbnQgc3BhY2UgYW5kIGxheWVyJ3Mgb3Jp
Z2luIHNwYWNlLCB3aGljaCBpcyBub3QgaW5jbHVkZWQgaW4gdGhlCi0gICAgLy8gc2NyZWVuU3Bh
Y2VUcmFuc2Zvcm0uIFRoZSBoaXQgdGVzdGluZyBjb2RlIG11c3QgdGFrZSB0aGlzIGludG8gYWNj
b3VudC4KKyAgICAvLyBsYXllcidzIGNvbnRlbnQgc3BhY2UgYW5kIGxheWVyJ3Mgb3JpZ2luIHNw
YWNlLiBUaGUgaGl0IHRlc3RpbmcgY29kZSBtdXN0IHRha2UgdGhpcyBpbnRvIGFjY291bnQuCiAg
ICAgLy8KICAgICAvLyBUbyB0ZXN0IHRoaXMsIHRoZSBsYXllciBpcyBwb3NpdGlvbmVkIGF0ICgy
NSwgMjUpLCBhbmQgaXMgc2l6ZSAoNTAsIDUwKS4gSWYKICAgICAvLyBjb250ZW50c1NjYWxlIGlz
IGlnbm9yZWQsIHRoZW4gaGl0IHRlc3Rpbmcgd2lsbCBtaXMtaW50ZXJwcmV0IHRoZSB2aXNpYmxl
Q29udGVudFJlY3QKQEAgLTM0MTQsMTkgKzM0MTMsMTUgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RD
b21tb25UZXN0LCB2ZXJpZnlMYXllclRyYW5zZm9ybXNJbkhpZ2hEUEkpCiAgICAgRVhQRUNUX0VR
KDF1LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LnNpemUoKSk7CiAKICAgICAvLyBWZXJpZnkgcGFy
ZW50IHRyYW5zZm9ybXMKLSAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZFBhcmVu
dFNjcmVlblNwYWNlVHJhbnNmb3JtOwotICAgIGV4cGVjdGVkUGFyZW50U2NyZWVuU3BhY2VUcmFu
c2Zvcm0uc2V0TTExKGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBleHBlY3RlZFBhcmVudFNjcmVl
blNwYWNlVHJhbnNmb3JtLnNldE0yMihkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgRVhQRUNUX1RS
QU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZFBhcmVudFNjcmVlblNwYWNlVHJhbnNmb3Jt
LCBwYXJlbnQtPnNjcmVlblNwYWNlVHJhbnNmb3JtKCkpOwotICAgIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4IGV4cGVjdGVkUGFyZW50RHJhd1RyYW5zZm9ybTsKLSAgICBFWFBFQ1RfVFJBTlNGT1JN
QVRJT05fTUFUUklYX0VRKGV4cGVjdGVkUGFyZW50RHJhd1RyYW5zZm9ybSwgcGFyZW50LT5kcmF3
VHJhbnNmb3JtKCkpOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGV4cGVjdGVkUGFyZW50
VHJhbnNmb3JtOworICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRQ
YXJlbnRUcmFuc2Zvcm0sIHBhcmVudC0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSk7CisgICAgRVhQ
RUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZFBhcmVudFRyYW5zZm9ybSwgcGFy
ZW50LT5kcmF3VHJhbnNmb3JtKCkpOwogCiAgICAgLy8gVmVyaWZ5IHJlc3VsdHMgb2YgdHJhbnNm
b3JtZWQgcGFyZW50IHJlY3RzCi0gICAgSW50UmVjdCBwYXJlbnRCb3VuZHMoSW50UG9pbnQoKSwg
cGFyZW50LT5ib3VuZHMoKSk7Ci0gICAgSW50UmVjdCBwYXJlbnRDb250ZW50Qm91bmRzKEludFBv
aW50KCksIHBhcmVudC0+Y29udGVudEJvdW5kcygpKTsKKyAgICBGbG9hdFJlY3QgcGFyZW50Q29u
dGVudEJvdW5kcyhGbG9hdFBvaW50KCksIEZsb2F0U2l6ZShwYXJlbnQtPmNvbnRlbnRCb3VuZHMo
KSkpOwogCi0gICAgRmxvYXRSZWN0IHBhcmVudERyYXdSZWN0ID0gQ0NNYXRoVXRpbDo6bWFwQ2xp
cHBlZFJlY3QocGFyZW50LT5kcmF3VHJhbnNmb3JtKCksIEZsb2F0UmVjdChwYXJlbnRDb250ZW50
Qm91bmRzKSk7Ci0gICAgRmxvYXRSZWN0IHBhcmVudFNjcmVlblNwYWNlUmVjdCA9IENDTWF0aFV0
aWw6Om1hcENsaXBwZWRSZWN0KHBhcmVudC0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSwgRmxvYXRS
ZWN0KHBhcmVudEJvdW5kcykpOworICAgIEZsb2F0UmVjdCBwYXJlbnREcmF3UmVjdCA9IENDTWF0
aFV0aWw6Om1hcENsaXBwZWRSZWN0KHBhcmVudC0+ZHJhd1RyYW5zZm9ybSgpLCBwYXJlbnRDb250
ZW50Qm91bmRzKTsKKyAgICBGbG9hdFJlY3QgcGFyZW50U2NyZWVuU3BhY2VSZWN0ID0gQ0NNYXRo
VXRpbDo6bWFwQ2xpcHBlZFJlY3QocGFyZW50LT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLCBwYXJl
bnRDb250ZW50Qm91bmRzKTsKIAogICAgIEZsb2F0UmVjdCBleHBlY3RlZFBhcmVudERyYXdSZWN0
KEZsb2F0UG9pbnQoKSwgcGFyZW50LT5ib3VuZHMoKSk7CiAgICAgZXhwZWN0ZWRQYXJlbnREcmF3
UmVjdC5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7CkBAIC0zNDM0LDIyICszNDI5LDE2IEBAIFRF
U1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5TGF5ZXJUcmFuc2Zvcm1zSW5IaWdo
RFBJKQogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKGV4cGVjdGVkUGFyZW50RHJhd1JlY3QsIHBh
cmVudFNjcmVlblNwYWNlUmVjdCk7CiAKICAgICAvLyBWZXJpZnkgY2hpbGQgdHJhbnNmb3Jtcwot
ICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGV4cGVjdGVkQ2hpbGRTY3JlZW5TcGFjZVRyYW5z
Zm9ybTsKLSAgICBleHBlY3RlZENoaWxkU2NyZWVuU3BhY2VUcmFuc2Zvcm0uc2V0TTExKGRldmlj
ZVNjYWxlRmFjdG9yKTsKLSAgICBleHBlY3RlZENoaWxkU2NyZWVuU3BhY2VUcmFuc2Zvcm0uc2V0
TTIyKGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBleHBlY3RlZENoaWxkU2NyZWVuU3BhY2VUcmFu
c2Zvcm0udHJhbnNsYXRlKGNoaWxkLT5wb3NpdGlvbigpLngoKSwgY2hpbGQtPnBvc2l0aW9uKCku
eSgpKTsKLSAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4cGVjdGVkQ2hpbGRT
Y3JlZW5TcGFjZVRyYW5zZm9ybSwgY2hpbGQtPnNjcmVlblNwYWNlVHJhbnNmb3JtKCkpOwotCi0g
ICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZXhwZWN0ZWRDaGlsZERyYXdUcmFuc2Zvcm07Ci0g
ICAgZXhwZWN0ZWRDaGlsZERyYXdUcmFuc2Zvcm0udHJhbnNsYXRlKGRldmljZVNjYWxlRmFjdG9y
ICogY2hpbGQtPnBvc2l0aW9uKCkueCgpLCBkZXZpY2VTY2FsZUZhY3RvciAqIGNoaWxkLT5wb3Np
dGlvbigpLnkoKSk7Ci0gICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3Rl
ZENoaWxkRHJhd1RyYW5zZm9ybSwgY2hpbGQtPmRyYXdUcmFuc2Zvcm0oKSk7CisgICAgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXggZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybTsKKyAgICBleHBlY3RlZENo
aWxkVHJhbnNmb3JtLnRyYW5zbGF0ZShkZXZpY2VTY2FsZUZhY3RvciAqIGNoaWxkLT5wb3NpdGlv
bigpLngoKSwgZGV2aWNlU2NhbGVGYWN0b3IgKiBjaGlsZC0+cG9zaXRpb24oKS55KCkpOworICAg
IEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybSwg
Y2hpbGQtPmRyYXdUcmFuc2Zvcm0oKSk7CisgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJ
WF9FUShleHBlY3RlZENoaWxkVHJhbnNmb3JtLCBjaGlsZC0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0o
KSk7CiAKICAgICAvLyBWZXJpZnkgcmVzdWx0cyBvZiB0cmFuc2Zvcm1lZCBjaGlsZCByZWN0cwot
ICAgIEludFJlY3QgY2hpbGRCb3VuZHMoSW50UG9pbnQoKSwgY2hpbGQtPmJvdW5kcygpKTsKLSAg
ICBJbnRSZWN0IGNoaWxkQ29udGVudEJvdW5kcyhJbnRQb2ludCgpLCBjaGlsZC0+Y29udGVudEJv
dW5kcygpKTsKKyAgICBGbG9hdFJlY3QgY2hpbGRDb250ZW50Qm91bmRzKEZsb2F0UG9pbnQoKSwg
RmxvYXRTaXplKGNoaWxkLT5jb250ZW50Qm91bmRzKCkpKTsKIAotICAgIEZsb2F0UmVjdCBjaGls
ZERyYXdSZWN0ID0gQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3QoY2hpbGQtPmRyYXdUcmFuc2Zv
cm0oKSwgRmxvYXRSZWN0KGNoaWxkQ29udGVudEJvdW5kcykpOwotICAgIEZsb2F0UmVjdCBjaGls
ZFNjcmVlblNwYWNlUmVjdCA9IENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KGNoaWxkLT5zY3Jl
ZW5TcGFjZVRyYW5zZm9ybSgpLCBGbG9hdFJlY3QoY2hpbGRCb3VuZHMpKTsKKyAgICBGbG9hdFJl
Y3QgY2hpbGREcmF3UmVjdCA9IENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KGNoaWxkLT5kcmF3
VHJhbnNmb3JtKCksIGNoaWxkQ29udGVudEJvdW5kcyk7CisgICAgRmxvYXRSZWN0IGNoaWxkU2Ny
ZWVuU3BhY2VSZWN0ID0gQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3QoY2hpbGQtPnNjcmVlblNw
YWNlVHJhbnNmb3JtKCksIGNoaWxkQ29udGVudEJvdW5kcyk7CiAKICAgICBGbG9hdFJlY3QgZXhw
ZWN0ZWRDaGlsZERyYXdSZWN0KEZsb2F0UG9pbnQoKSwgY2hpbGQtPmJvdW5kcygpKTsKICAgICBl
eHBlY3RlZENoaWxkRHJhd1JlY3QubW92ZShjaGlsZC0+cG9zaXRpb24oKS54KCksIGNoaWxkLT5w
b3NpdGlvbigpLnkoKSk7CkBAIC0zNDU5LDExICszNDQ4LDExIEBAIFRFU1QoQ0NMYXllclRyZWVI
b3N0Q29tbW9uVGVzdCwgdmVyaWZ5TGF5ZXJUcmFuc2Zvcm1zSW5IaWdoRFBJKQogCiAgICAgLy8g
VmVyaWZ5IGNoaWxkTm9TY2FsZSB0cmFuc2Zvcm1zCiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXggZXhwZWN0ZWRDaGlsZE5vU2NhbGVUcmFuc2Zvcm0gPSBjaGlsZC0+ZHJhd1RyYW5zZm9ybSgp
OwotICAgIC8vIGRyYXdUcmFuc2Zvcm0gdHJhbnNmb3JtcyBvbiBjb250ZW50IHJlY3RzLiBUaGUg
Y2hpbGQncyBjb250ZW50IHJlY3QKKyAgICAvLyBBbGwgdHJhbnNmb3JtcyBvcGVyYXRlIG9uIGNv
bnRlbnQgcmVjdHMuIFRoZSBjaGlsZCdzIGNvbnRlbnQgcmVjdAogICAgIC8vIGluY29ycG9yYXRl
cyBkZXZpY2Ugc2NhbGUsIGJ1dCB0aGUgY2hpbGROb1NjYWxlIGRvZXMgbm90OyBhZGQgaXQgaGVy
ZS4KICAgICBleHBlY3RlZENoaWxkTm9TY2FsZVRyYW5zZm9ybS5zY2FsZShkZXZpY2VTY2FsZUZh
Y3Rvcik7Ci0gICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShjaGlsZE5vU2NhbGUt
PmRyYXdUcmFuc2Zvcm0oKSwgZXhwZWN0ZWRDaGlsZE5vU2NhbGVUcmFuc2Zvcm0pOwotICAgIEVY
UEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoY2hpbGQtPnNjcmVlblNwYWNlVHJhbnNmb3Jt
KCksIGNoaWxkTm9TY2FsZS0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSk7CisgICAgRVhQRUNUX1RS
QU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZENoaWxkTm9TY2FsZVRyYW5zZm9ybSwgY2hp
bGROb1NjYWxlLT5kcmF3VHJhbnNmb3JtKCkpOworICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9N
QVRSSVhfRVEoZXhwZWN0ZWRDaGlsZE5vU2NhbGVUcmFuc2Zvcm0sIGNoaWxkTm9TY2FsZS0+c2Ny
ZWVuU3BhY2VUcmFuc2Zvcm0oKSk7CiB9CiAKIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVz
dCwgdmVyaWZ5UmVuZGVyU3VyZmFjZVRyYW5zZm9ybXNJbkhpZ2hEUEkpCkBAIC0zNTEzLDIxICsz
NTAyLDE1IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5UmVuZGVyU3Vy
ZmFjZVRyYW5zZm9ybXNJbkhpZ2hEUEkpCiAgICAgLy8gcmVuZGVyIHN1cmZhY2UgKGl0IG5lZWRz
IG9uZSBiZWNhdXNlIGl0IGhhcyBhIHJlcGxpY2EgbGF5ZXIpLgogICAgIEVYUEVDVF9FUSgydSwg
cmVuZGVyU3VyZmFjZUxheWVyTGlzdC5zaXplKCkpOwogCi0gICAgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXggZXhwZWN0ZWRQYXJlbnRTY3JlZW5TcGFjZVRyYW5zZm9ybTsKLSAgICBleHBlY3RlZFBh
cmVudFNjcmVlblNwYWNlVHJhbnNmb3JtLnNldE0xMShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAg
ZXhwZWN0ZWRQYXJlbnRTY3JlZW5TcGFjZVRyYW5zZm9ybS5zZXRNMjIoZGV2aWNlU2NhbGVGYWN0
b3IpOwotICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRQYXJlbnRT
Y3JlZW5TcGFjZVRyYW5zZm9ybSwgcGFyZW50LT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpKTsKLQot
ICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGV4cGVjdGVkUGFyZW50RHJhd1RyYW5zZm9ybTsK
LSAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKHBhcmVudC0+ZHJhd1RyYW5zZm9y
bSgpLCBleHBlY3RlZFBhcmVudERyYXdUcmFuc2Zvcm0pOworICAgIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4IGV4cGVjdGVkUGFyZW50VHJhbnNmb3JtOworICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElP
Tl9NQVRSSVhfRVEoZXhwZWN0ZWRQYXJlbnRUcmFuc2Zvcm0sIHBhcmVudC0+c2NyZWVuU3BhY2VU
cmFuc2Zvcm0oKSk7CisgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3Rl
ZFBhcmVudFRyYW5zZm9ybSwgcGFyZW50LT5kcmF3VHJhbnNmb3JtKCkpOwogCiAgICAgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXggZXhwZWN0ZWREcmF3VHJhbnNmb3JtOwogICAgIEVYUEVDVF9UUkFO
U0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWREcmF3VHJhbnNmb3JtLCBjaGlsZC0+ZHJhd1Ry
YW5zZm9ybSgpKTsKIAogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGV4cGVjdGVkU2NyZWVu
U3BhY2VUcmFuc2Zvcm07Ci0gICAgZXhwZWN0ZWRTY3JlZW5TcGFjZVRyYW5zZm9ybS5zZXRNMTEo
ZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIGV4cGVjdGVkU2NyZWVuU3BhY2VUcmFuc2Zvcm0uc2V0
TTIyKGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBleHBlY3RlZFNjcmVlblNwYWNlVHJhbnNmb3Jt
LnRyYW5zbGF0ZShjaGlsZC0+cG9zaXRpb24oKS54KCksIGNoaWxkLT5wb3NpdGlvbigpLnkoKSk7
CisgICAgZXhwZWN0ZWRTY3JlZW5TcGFjZVRyYW5zZm9ybS50cmFuc2xhdGUoZGV2aWNlU2NhbGVG
YWN0b3IgKiBjaGlsZC0+cG9zaXRpb24oKS54KCksIGRldmljZVNjYWxlRmFjdG9yICogY2hpbGQt
PnBvc2l0aW9uKCkueSgpKTsKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4
cGVjdGVkU2NyZWVuU3BhY2VUcmFuc2Zvcm0sIGNoaWxkLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgp
KTsKIAogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGV4cGVjdGVkRHVwbGljYXRlQ2hpbGRE
cmF3VHJhbnNmb3JtID0gY2hpbGQtPmRyYXdUcmFuc2Zvcm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4
IGMyNzk2YjlhYTZkMDk4MWE0N2U1MmVmZWViNmE1YzA2YWQ5YmE0ODYuLmUzOWZlN2U1NjljN2Vk
MmFkZGQ1YWNjMTJhNDM4YTIxMTgwNTM5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMTIzMiw2ICsx
MjMyLDEwIEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRo
T2NjbHVzaW9uQW5kU2NhbGluZykKICAgICAvLyBwaXhlbHMsIHdoaWNoIG1lYW5zIG5vbmUgc2hv
dWxkIGJlIG9jY2x1ZGVkLgogICAgIGxheWVyLT5zZXRDb250ZW50c1NjYWxlKDAuNSk7CiAgICAg
bGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDYwMCwgNjAwKSk7CisgICAgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXggZHJhd1RyYW5zZm9ybTsKKyAgICBkcmF3VHJhbnNmb3JtLnNjYWxlKDEgLyBsYXll
ci0+Y29udGVudHNTY2FsZSgpKTsKKyAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShkcmF3VHJh
bnNmb3JtKTsKKyAgICBsYXllci0+c2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0oZHJhd1RyYW5zZm9y
bSk7CiAKICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAx
MDApKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQo
KSwgbGF5ZXItPmNvbnRlbnRCb3VuZHMoKSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154485</attachid>
            <date>2012-07-25 16:47:36 -0700</date>
            <delta_ts>2012-07-25 17:26:34 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-91807-20120725164726.patch</filename>
            <type>text/plain</type>
            <size>22098</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNjc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDVlMmQ5NTgxNzllYjli
MDM5MGMxNzEzYjc5OTZhYWU3OTllMjFhOS4uNmE4OGI3ZDZlY2FjMjI0YTc5OTk2ZDU2YTM2Mjg4
ZDJhNGNiNjNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA3LTE5ICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBNYWtl
IGFsbCBjb21wb3NpdG9yIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm1zIG9wZXJhdGUgb24gY29udGVu
dCByZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTE4MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQ
cmV2aW91c2x5LCBzdXJmYWNlIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm1zIG9wZXJhdGVkIG9uIHN1
cmZhY2UKKyAgICAgICAgY29udGVudCBzcGFjZSBidXQgbGF5ZXIgc2NyZWVuIHNwYWNlIHRyYW5z
Zm9ybXMgb3BlcmF0ZWQgb24gbGF5ZXIKKyAgICAgICAgc3BhY2UuIEZvciB0aGUgcHVycG9zZSBv
ZiBjb25zaXN0ZW5jeSwgdW5pZnkgdGhlc2UgdHdvIHNvIHRoYXQgdGhleQorICAgICAgICBib3Ro
IG9wZXJhdGUgb24gY29udGVudCBzcGFjZS4KKworICAgICAgICBObyB0ZXN0cywgYmVjYXVzZSBu
byBjaGFuZ2UgaW4gYmVoYXZpb3IgZXhwZWN0ZWQuIEp1c3QgYSByZWZhY3RvcmluZy4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAg
ICAgKExheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnUmVj
dEhpc3Rvcnk6OnNhdmVQYWludFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDRGVidWdSZWN0
SGlzdG9yeTo6c2F2ZVByb3BlcnR5Q2hhbmdlZFJlY3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNJbnRlcm5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3RDb21tb246OmZpbmRMYXllclRoYXRJc0hpdEJ5UG9pbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjo6Om1hcmtPY2NsdWRlZEJlaGluZExheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Ojo6b2NjbHVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Ojp1bm9jY2x1
ZGVkQ29udGVudFJlY3QpOgorCiAyMDEyLTA3LTI1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFdpbmRvd3MgYnVpbGQgZml4IGF0dGVtcHQgYWZ0ZXIgcjEyMzYy
NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYjdlN2U4ZGQ0NzVmZTdmZjE4ZWI0OGNj
MGU1YzI4MTY4YWRiYTRiMy4uYTQ0N2ExMWQxZTJkMjVjYjM1MTkxNDAwMTM3NGRiMjU1YTM4NDAx
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNy0x
OSAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1
bV0gTWFrZSBhbGwgY29tcG9zaXRvciBzY3JlZW4gc3BhY2UgdHJhbnNmb3JtcyBvcGVyYXRlIG9u
IGNvbnRlbnQgcmVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkxODA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXBkYXRlIHRlc3RzIHRoYXQgZGVhbCB3aXRoIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm1z
IHRvIHJlZmxlY3QgdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhv
c3RDb21tb25UZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0
LmNwcDoKKwogMjAxMi0wNy0yNSAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbY2hyb21pdW1dIE1vdmUgV2ViRmlsdGVyT3BlcmF0aW9ucyBmcm9tIFJlbmRl
clBhc3NEcmF3UXVhZCB0byBSZW5kZXJQYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggYmZlMmRj
MjE4ZjdkOTE2ZDYzNjBjN2MyMWFmNWY1NTI3NDBjNzZkZS4uMjdjZThmMTBhYjA2ODE3NGUzYjEx
OWJjNmE3ODk1YjM0NDU4NzZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMjQ3LDcgKzI0Nyw3
IEBAIHB1YmxpYzoKICAgICAvLyByb290IHJlbmRlciBzdXJmYWNlLCB0aGVuIHRoaXMgY29udmVy
dHMgdG8gcGh5c2ljYWwgcGl4ZWxzKS4KICAgICBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0
aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9kcmF3VHJhbnNmb3Jt
OyB9CiAgICAgdm9pZCBzZXREcmF3VHJhbnNmb3JtKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG1hdHJpeCkgeyBtX2RyYXdUcmFuc2Zvcm0gPSBtYXRyaXg7IH0KLSAgICAv
LyBUaGlzIG1vdmVzIGZyb20gbGF5ZXIgc3BhY2UsIHdpdGggb3JpZ2luIHRoZSB0b3AgbGVmdCB0
byBzY3JlZW4gc3BhY2Ugd2l0aCBvcmlnaW4gaW4gdGhlIHRvcCBsZWZ0LgorICAgIC8vIFRoaXMg
bW92ZXMgZnJvbSBjb250ZW50IHNwYWNlLCB3aXRoIG9yaWdpbiB0aGUgdG9wIGxlZnQgdG8gc2Ny
ZWVuIHNwYWNlIHdpdGggb3JpZ2luIGluIHRoZSB0b3AgbGVmdC4KICAgICAvLyBJdCBjb252ZXJ0
cyBsb2dpY2FsLCBub24tcGFnZS1zY2FsZWQgcGl4ZWxzIHRvIHBoeXNpY2FsIHBpeGVscy4KICAg
ICBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBzY3JlZW5TcGFjZVRyYW5z
Zm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyZWVuU3BhY2VUcmFuc2Zvcm07IH0KICAgICB2b2lk
IHNldFNjcmVlblNwYWNlVHJhbnNmb3JtKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG1hdHJpeCkgeyBtX3NjcmVlblNwYWNlVHJhbnNmb3JtID0gbWF0cml4OyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Rl
YnVnUmVjdEhpc3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmNwcAppbmRleCAyM2VlODI2ZmQzNGE3YzhhYWMx
ZTkyMGFiZDJjYzU5NjFmOTc4YzEwLi44NTdkNzFmNTJiODcwNTg5YTViY2FiMjRjN2Y3ZDQ5ZDhk
MjVlMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHAKQEAgLTY3LDgg
KzY3LDExIEBAIHZvaWQgQ0NEZWJ1Z1JlY3RIaXN0b3J5OjpzYXZlUGFpbnRSZWN0cyhDQ0xheWVy
SW1wbCogbGF5ZXIpCiAgICAgLy8gcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoaXMgbGF5ZXIgaXMg
c2tpcHBlZCBmb3IgYWN0dWFsIGRyYXdpbmcgb3Igbm90LiBUaGVyZWZvcmUKICAgICAvLyB3ZSB0
cmF2ZXJzZSByZWN1cnNpdmVseSBvdmVyIGFsbCBsYXllcnMsIG5vdCBqdXN0IHRoZSByZW5kZXIg
c3VyZmFjZSBsaXN0LgogCi0gICAgaWYgKCFsYXllci0+dXBkYXRlUmVjdCgpLmlzRW1wdHkoKSAm
JiBsYXllci0+ZHJhd3NDb250ZW50KCkpCi0gICAgICAgIG1fZGVidWdSZWN0cy5hcHBlbmQoQ0NE
ZWJ1Z1JlY3QoUGFpbnRSZWN0VHlwZSwgQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3QobGF5ZXIt
PnNjcmVlblNwYWNlVHJhbnNmb3JtKCksIGxheWVyLT51cGRhdGVSZWN0KCkpKSk7CisgICAgaWYg
KCFsYXllci0+dXBkYXRlUmVjdCgpLmlzRW1wdHkoKSAmJiBsYXllci0+ZHJhd3NDb250ZW50KCkp
IHsKKyAgICAgICAgRmxvYXRSZWN0IHVwZGF0ZUNvbnRlbnRSZWN0ID0gbGF5ZXItPnVwZGF0ZVJl
Y3QoKTsKKyAgICAgICAgdXBkYXRlQ29udGVudFJlY3Quc2NhbGUobGF5ZXItPmNvbnRlbnRCb3Vu
ZHMoKS53aWR0aCgpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGxheWVyLT5ib3VuZHMoKS53aWR0aCgp
KSwgbGF5ZXItPmNvbnRlbnRCb3VuZHMoKS5oZWlnaHQoKSAvIHN0YXRpY19jYXN0PGZsb2F0Pihs
YXllci0+Ym91bmRzKCkuaGVpZ2h0KCkpKTsKKyAgICAgICAgbV9kZWJ1Z1JlY3RzLmFwcGVuZChD
Q0RlYnVnUmVjdChQYWludFJlY3RUeXBlLCBDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChsYXll
ci0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSwgdXBkYXRlQ29udGVudFJlY3QpKSk7CisgICAgfQog
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxheWVyLT5jaGlsZHJlbigpLnNpemUoKTsg
KytpKQogICAgICAgICBzYXZlUGFpbnRSZWN0cyhsYXllci0+Y2hpbGRyZW4oKVtpXS5nZXQoKSk7
CkBAIC05Miw3ICs5NSw3IEBAIHZvaWQgQ0NEZWJ1Z1JlY3RIaXN0b3J5OjpzYXZlUHJvcGVydHlD
aGFuZ2VkUmVjdHMoY29uc3QgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIHJlCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAKICAgICAgICAgICAgIGlmIChsYXllci0+bGF5ZXJQcm9wZXJ0eUNoYW5n
ZWQoKSB8fCBsYXllci0+bGF5ZXJTdXJmYWNlUHJvcGVydHlDaGFuZ2VkKCkpCi0gICAgICAgICAg
ICAgICAgbV9kZWJ1Z1JlY3RzLmFwcGVuZChDQ0RlYnVnUmVjdChQcm9wZXJ0eUNoYW5nZWRSZWN0
VHlwZSwgQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3QobGF5ZXItPnNjcmVlblNwYWNlVHJhbnNm
b3JtKCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGxheWVyLT5ib3VuZHMoKSkpKSk7
CisgICAgICAgICAgICAgICAgbV9kZWJ1Z1JlY3RzLmFwcGVuZChDQ0RlYnVnUmVjdChQcm9wZXJ0
eUNoYW5nZWRSZWN0VHlwZSwgQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3QobGF5ZXItPnNjcmVl
blNwYWNlVHJhbnNmb3JtKCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGxheWVyLT5j
b250ZW50Qm91bmRzKCkpKSkpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
Q29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAKaW5kZXggMzFlOWZmZmRmMTNlM2E4OWE2OTkxOWI3
NjMwOTk5N2RhYzllM2FiMi4uODM3YWQ3NmU2ZjQ0ZjY4Mjc3NjEyZTI5MjA1OTJhZTlhN2IwODM5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwCkBAIC00NjQs
OCArNDY0LDggQEAgc3RhdGljIHZvaWQgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNJbnRlcm5hbChM
YXllclR5cGUqIGxheWVyLCBMYXllclR5cGUqIHJvb3RMYXkKICAgICAvLyAgICAgICAgSW50ZXJw
cmV0aW5nIHRoZSBtYXRoIGxlZnQtdG8tcmlnaHQsIHRoaXMgdHJhbnNmb3JtcyBmcm9tIHRoZSBs
YXllcidzIHJlbmRlciBzdXJmYWNlIHRvIHRoZSBvcmlnaW4gb2YgdGhlIGxheWVyIGluIGNvbnRl
bnQgc3BhY2UuCiAgICAgLy8KICAgICAvLyBUaGUgc2NyZWVuIHNwYWNlIHRyYW5zZm9ybSBpczoK
LSAgICAvLyAgICAgICAgTVtzY3JlZW5zcGFjZV0gPSBNW3Jvb3RdICogVHJbb3JpZ2luXSAqIGNv
bXBvc2l0ZUxheWVyVHJhbnNmb3JtCi0gICAgLy8gICAgICAgICAgICAgICAgICAgICAgID0gTVty
b290XSAqIFRyW2xheWVyLT5wb3NpdGlvbigpXSAqIE1bbGF5ZXJdICogVHJbb3JpZ2luMmFuY2hv
cl0uaW52ZXJzZSgpCisgICAgLy8gICAgICAgIE1bc2NyZWVuc3BhY2VdID0gTVtyb290XSAqIFRy
W29yaWdpbl0gKiBjb21wb3NpdGVMYXllclRyYW5zZm9ybSAqIFNbY29udGVudDJsYXllcl0KKyAg
ICAvLyAgICAgICAgICAgICAgICAgICAgICAgPSBNW3Jvb3RdICogVHJbbGF5ZXItPnBvc2l0aW9u
KCldICogTVtsYXllcl0gKiBUcltvcmlnaW4yYW5jaG9yXS5pbnZlcnNlKCkgKiBTW2NvbnRlbnQy
bGF5ZXJdCiAgICAgLy8KICAgICAvLyAgICAgICAgSW50ZXJwcmV0aW5nIHRoZSBtYXRoIGxlZnQt
dG8tcmlnaHQsIHRoaXMgdHJhbnNmb3JtcyBmcm9tIHRoZSByb290IHJlbmRlciBzdXJmYWNlJ3Mg
Y29udGVudCBzcGFjZSB0byB0aGUgbG9jYWwgbGF5ZXIncyBvcmlnaW4gaW4gbGF5ZXIgc3BhY2Uu
CiAgICAgLy8KQEAgLTU1NCwxNSArNTU0LDkgQEAgc3RhdGljIHZvaWQgY2FsY3VsYXRlRHJhd1Ry
YW5zZm9ybXNJbnRlcm5hbChMYXllclR5cGUqIGxheWVyLCBMYXllclR5cGUqIHJvb3RMYXkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXItPmJvdW5kcygpLmhlaWdo
dCgpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihsYXllci0+Y29udGVudEJvdW5kcygpLmhlaWdodCgp
KSk7CiAgICAgfQogCi0gICAgLy8gbGF5ZXJTY3JlZW5TcGFjZVRyYW5zZm9ybSByZXByZXNlbnRz
IHRoZSB0cmFuc2Zvcm0gYmV0d2VlbiByb290IGxheWVyJ3MgInNjcmVlbiBzcGFjZSIgYW5kIGxv
Y2FsIGxheWVyIHNwYWNlLgorICAgIC8vIGxheWVyU2NyZWVuU3BhY2VUcmFuc2Zvcm0gcmVwcmVz
ZW50cyB0aGUgdHJhbnNmb3JtIGJldHdlZW4gcm9vdCBsYXllcidzICJzY3JlZW4gc3BhY2UiIGFu
ZCBsb2NhbCBjb250ZW50IHNwYWNlLgogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVy
U2NyZWVuU3BhY2VUcmFuc2Zvcm0gPSBmdWxsSGllcmFyY2h5TWF0cml4OwogICAgIGxheWVyU2Ny
ZWVuU3BhY2VUcmFuc2Zvcm0ubXVsdGlwbHkoZHJhd1RyYW5zZm9ybSk7Ci0gICAgLy8gVGhlIGRy
YXcgdHJhbnNmb3JtIG9wZXJhdGVzIG9uIGNvbnRlbnQgc3BhY2UgcmVjdHMuIFRoaXMgbmVlZHMg
dG8gYmUgY29udmVydGVkIHRvIHRyYW5zZm9ybSBsYXllciBzcGFjZSByZWN0cy4KLSAgICAvLyBG
SVhNRTogTWFrZSBsYXllciBzY3JlZW4gc3BhY2UgdHJhbnNmb3JtcyBvcGVyYXRlIG9uIGNvbnRl
bnQgc3BhY2UgcmVjdHMuCi0gICAgaWYgKCFsYXllci0+Y29udGVudEJvdW5kcygpLmlzRW1wdHko
KSAmJiAhbGF5ZXItPmJvdW5kcygpLmlzRW1wdHkoKSkgewotICAgICAgICBsYXllclNjcmVlblNw
YWNlVHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9ybShsYXllci0+Y29udGVudEJvdW5kcygpLndpZHRo
KCkgLyBzdGF0aWNfY2FzdDxkb3VibGU+KGxheWVyLT5ib3VuZHMoKS53aWR0aCgpKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXItPmNvbnRl
bnRCb3VuZHMoKS5oZWlnaHQoKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4obGF5ZXItPmJvdW5kcygp
LmhlaWdodCgpKSk7Ci0gICAgfQogICAgIGxheWVyLT5zZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShs
YXllclNjcmVlblNwYWNlVHJhbnNmb3JtKTsKIAogICAgIGJvb2wgYW5pbWF0aW5nVHJhbnNmb3Jt
VG9UYXJnZXQgPSBsYXllci0+dHJhbnNmb3JtSXNBbmltYXRpbmcoKTsKQEAgLTc3MiwxNCArNzY2
LDcgQEAgc3RhdGljIHZvaWQgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNJbnRlcm5hbChMYXllclR5
cGUqIGxheWVyLCBMYXllclR5cGUqIHJvb3RMYXkKICAgICAgICAgICAgIHJlbmRlclN1cmZhY2Ut
PmNsZWFyTGF5ZXJMaXN0KCk7CiAKICAgICAgICAgcmVuZGVyU3VyZmFjZS0+c2V0Q29udGVudFJl
Y3QoY2xpcHBlZENvbnRlbnRSZWN0KTsKLQotICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBzY3JlZW5TcGFjZVRyYW5zZm9ybSA9IGxheWVyLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpOwot
ICAgICAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIGNvbnNpc3RlbnQuCi0gICAgICAgIC8v
IFRoZSBsYXllcidzIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm0gb3BlcmF0ZXMgb24gbGF5ZXIgcmVj
dHMsIGJ1dCB0aGUgc3VyZmFjZXMKLSAgICAgICAgLy8gc2NyZWVuIHNwYWNlIHRyYW5zZm9ybSBv
cGVyYXRlcyBvbiBzdXJmYWNlIHJlY3RzLCB3aGljaCBhcmUgaW4gcGh5c2ljYWwgcGl4ZWxzLAot
ICAgICAgICAvLyBzbyB3ZSBoYXZlIHRvICd1bmRvJyB0aGUgc2NhbGUgaGVyZS4KLSAgICAgICAg
c2NyZWVuU3BhY2VUcmFuc2Zvcm0uc2NhbGUoMSAvIGNvbnRlbnRzU2NhbGUpOwotICAgICAgICBy
ZW5kZXJTdXJmYWNlLT5zZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShzY3JlZW5TcGFjZVRyYW5zZm9y
bSk7CisgICAgICAgIHJlbmRlclN1cmZhY2UtPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKGxheWVy
LT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpKTsKIAogICAgICAgICBpZiAobGF5ZXItPnJlcGxpY2FM
YXllcigpKSB7CiAgICAgICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzdXJmYWNlT3Jp
Z2luVG9SZXBsaWNhT3JpZ2luVHJhbnNmb3JtOwpAQCAtOTU4LDggKzk0NSw4IEBAIENDTGF5ZXJJ
bXBsKiBDQ0xheWVyVHJlZUhvc3RDb21tb246OmZpbmRMYXllclRoYXRJc0hpdEJ5UG9pbnQoY29u
c3QgSW50UG9pbnQmIHZpCiAKICAgICAgICAgQ0NMYXllckltcGwqIGN1cnJlbnRMYXllciA9ICgq
aXQpOwogCi0gICAgICAgIEZsb2F0UmVjdCBsYXllclJlY3QoRmxvYXRQb2ludDo6emVybygpLCBj
dXJyZW50TGF5ZXItPmJvdW5kcygpKTsKLSAgICAgICAgaWYgKCFwb2ludEhpdHNSZWN0KHZpZXdw
b3J0UG9pbnQsIGN1cnJlbnRMYXllci0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSwgbGF5ZXJSZWN0
KSkKKyAgICAgICAgRmxvYXRSZWN0IGNvbnRlbnRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgY3Vy
cmVudExheWVyLT5jb250ZW50Qm91bmRzKCkpOworICAgICAgICBpZiAoIXBvaW50SGl0c1JlY3Qo
dmlld3BvcnRQb2ludCwgY3VycmVudExheWVyLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLCBjb250
ZW50UmVjdCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAvLyBBdCB0aGlzIHBv
aW50LCB3ZSB0aGluayB0aGUgcG9pbnQgZG9lcyBoaXQgdGhlIGxheWVyLCBidXQgd2UgbmVlZCB0
byB3YWxrIHVwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcAppbmRleCBjMWEz
OGNhMmMwMGU2NDM5MzdhYWI2Yjg5MDk5ZGQ0MDE3NWFhYWEyLi44ODBkNTYzYTRhMjJkMjdjZDA0
ZWVhNDVkZTNmNDQwZGU4N2IwZjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tl
ci5jcHAKQEAgLTI2NSwyNSArMjY1LDYgQEAgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExh
eWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjpsZWF2ZVRvUmVuZGVyVGFyZ2V0KGMKICAgICB9
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4KLXN0YXRpYyBpbmxpbmUgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXggY29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm0oY29uc3QgTGF5
ZXJUeXBlKiBsYXllcikKLXsKLSAgICBBU1NFUlQobGF5ZXJUcmFuc2Zvcm1zVG9TY3JlZW5Lbm93
bihsYXllcikpOwotICAgIEludFNpemUgYm91bmRzSW5MYXllclNwYWNlID0gbGF5ZXItPmJvdW5k
cygpOwotICAgIEludFNpemUgYm91bmRzSW5Db250ZW50U3BhY2UgPSBsYXllci0+Y29udGVudEJv
dW5kcygpOwotCi0gICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gbGF5ZXIt
PnNjcmVlblNwYWNlVHJhbnNmb3JtKCk7Ci0KLSAgICBpZiAoYm91bmRzSW5Db250ZW50U3BhY2Uu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdHJhbnNmb3JtOwotCi0gICAgLy8gU2NhbGUgZnJv
bSBjb250ZW50IHNwYWNlIHRvIGxheWVyIHNwYWNlCi0gICAgdHJhbnNmb3JtLnNjYWxlTm9uVW5p
Zm9ybShib3VuZHNJbkxheWVyU3BhY2Uud2lkdGgoKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4oYm91
bmRzSW5Db250ZW50U3BhY2Uud2lkdGgoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib3VuZHNJbkxheWVyU3BhY2UuaGVpZ2h0KCkgLyBzdGF0aWNfY2FzdDxkb3VibGU+KGJvdW5k
c0luQ29udGVudFNwYWNlLmhlaWdodCgpKSk7Ci0KLSAgICByZXR1cm4gdHJhbnNmb3JtOwotfQot
CiAvLyBGSVhNRTogUmVtb3ZlIHVzZVBhaW50VHJhY2tpbmcgd2hlbiBwYWludCB0cmFja2luZyBp
cyBvbiBmb3IgcGFpbnQgY3VsbGluZy4KIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4KIHN0
YXRpYyBpbmxpbmUgdm9pZCBhZGRPY2NsdXNpb25CZWhpbmRMYXllcihSZWdpb24mIHJlZ2lvbiwg
Y29uc3QgTGF5ZXJUeXBlKiBsYXllciwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRy
YW5zZm9ybSwgY29uc3QgUmVnaW9uJiBvcGFxdWVDb250ZW50cywgY29uc3QgSW50UmVjdCYgc2Np
c3NvclJlY3QsIGNvbnN0IEludFNpemUmIG1pbmltdW1UcmFja2luZ1NpemUsIFZlY3RvcjxJbnRS
ZWN0Piogb2NjbHVkaW5nU2NyZWVuU3BhY2VSZWN0cykKQEAgLTM0Miw3ICszMjMsNyBAQCB2b2lk
IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46Om1h
cmtPY2NsdWRlZEJlaGluZExheQogICAgICAgICBpZiAoY2xpcHBlZCB8fCAhc2Npc3NvckluU2Ny
ZWVuUXVhZC5pc1JlY3RpbGluZWFyKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIElu
dFJlY3Qgc2Npc3NvckluU2NyZWVuUmVjdCA9IGludGVyc2VjdGlvbihtX3NjaXNzb3JSZWN0SW5T
Y3JlZW5TcGFjZSwgZW5jbG9zZWRJbnRSZWN0KHNjaXNzb3JJblNjcmVlblF1YWQuYm91bmRpbmdC
b3goKSkpOwotICAgICAgICBhZGRPY2NsdXNpb25CZWhpbmRMYXllcjxMYXllclR5cGU+KG1fc3Rh
Y2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuLCBsYXllciwgY29udGVudFRvU2NyZWVuU3BhY2VU
cmFuc2Zvcm08TGF5ZXJUeXBlPihsYXllciksIG9wYXF1ZUNvbnRlbnRzLCBzY2lzc29ySW5TY3Jl
ZW5SZWN0LCBtX21pbmltdW1UcmFja2luZ1NpemUsIG1fb2NjbHVkaW5nU2NyZWVuU3BhY2VSZWN0
cyk7CisgICAgICAgIGFkZE9jY2x1c2lvbkJlaGluZExheWVyPExheWVyVHlwZT4obV9zdGFjay5s
YXN0KCkub2NjbHVzaW9uSW5TY3JlZW4sIGxheWVyLCBsYXllci0+c2NyZWVuU3BhY2VUcmFuc2Zv
cm0oKSwgb3BhcXVlQ29udGVudHMsIHNjaXNzb3JJblNjcmVlblJlY3QsIG1fbWluaW11bVRyYWNr
aW5nU2l6ZSwgbV9vY2NsdWRpbmdTY3JlZW5TcGFjZVJlY3RzKTsKICAgICB9CiB9CiAKQEAgLTM3
MSw3ICszNTIsNyBAQCBib29sIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5k
ZXJTdXJmYWNlVHlwZT46Om9jY2x1ZGVkKGNvbnN0IExheWVyVAogICAgIGlmIChsYXllclRyYW5z
Zm9ybXNUb1RhcmdldEtub3duKGxheWVyKSAmJiB0ZXN0Q29udGVudFJlY3RPY2NsdWRlZChjb250
ZW50UmVjdCwgbGF5ZXItPmRyYXdUcmFuc2Zvcm0oKSwgbGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0
U3VyZmFjZShsYXllciksIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0KSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAobGF5ZXJUcmFuc2Zvcm1zVG9TY3JlZW5Lbm93bihs
YXllcikgJiYgdGVzdENvbnRlbnRSZWN0T2NjbHVkZWQoY29udGVudFJlY3QsIGNvbnRlbnRUb1Nj
cmVlblNwYWNlVHJhbnNmb3JtPExheWVyVHlwZT4obGF5ZXIpLCBtX3NjaXNzb3JSZWN0SW5TY3Jl
ZW5TcGFjZSwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4pKSB7CisgICAgaWYgKGxh
eWVyVHJhbnNmb3Jtc1RvU2NyZWVuS25vd24obGF5ZXIpICYmIHRlc3RDb250ZW50UmVjdE9jY2x1
ZGVkKGNvbnRlbnRSZWN0LCBsYXllci0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSwgbV9zY2lzc29y
UmVjdEluU2NyZWVuU3BhY2UsIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuKSkgewog
ICAgICAgICBpZiAoaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKQogICAgICAg
ICAgICAgKmhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSA9IHRydWU7CiAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtNDE4LDcgKzM5OSw3IEBAIEludFJlY3QgQ0NPY2NsdXNpb25U
cmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6dW5vY2NsdWRlZENvbnRl
bnRSCiAKICAgICBJbnRSZWN0IHVub2NjbHVkZWRJblNjcmVlbiA9IGNvbnRlbnRSZWN0OwogICAg
IGlmIChsYXllclRyYW5zZm9ybXNUb1NjcmVlbktub3duKGxheWVyKSkKLSAgICAgICAgdW5vY2Ns
dWRlZEluU2NyZWVuID0gY29tcHV0ZVVub2NjbHVkZWRDb250ZW50UmVjdChjb250ZW50UmVjdCwg
Y29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXllciksIG1fc2Npc3Nv
clJlY3RJblNjcmVlblNwYWNlLCBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbik7Cisg
ICAgICAgIHVub2NjbHVkZWRJblNjcmVlbiA9IGNvbXB1dGVVbm9jY2x1ZGVkQ29udGVudFJlY3Qo
Y29udGVudFJlY3QsIGxheWVyLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLCBtX3NjaXNzb3JSZWN0
SW5TY3JlZW5TcGFjZSwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4pOwogCiAgICAg
SW50UmVjdCB1bm9jY2x1ZGVkSW5UYXJnZXQgPSBjb250ZW50UmVjdDsKICAgICBpZiAobGF5ZXJU
cmFuc2Zvcm1zVG9UYXJnZXRLbm93bihsYXllcikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcAppbmRleCA0
NmY5NmFlYTg0MmYzZDgyZmEyMTk4YWY5NTFlYzM4MzhmZWRiM2Y3Li41OTcxOTc3YTk0ZWUyOTRk
MjMxN2ZkMjQxNzQwNjNhMWQ5NDRjNDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5jcHAKQEAgLTI4MDYs
OCArMjgwNiw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5SGl0VGVz
dGluZ0ZvclNpbmdsZUxheWVyV2l0aFNjYWxlZENvbnRlbnRzCiAgICAgLy8gc2NyZWVuU3BhY2VU
cmFuc2Zvcm0gY29udmVydHMgZnJvbSB0aGUgbGF5ZXIncyBvcmlnaW4gc3BhY2UgdG8gc2NyZWVu
IHNwYWNlLiBUaGlzCiAgICAgLy8gdGVzdCBtYWtlcyBzdXJlIHRoYXQgaGl0IHRlc3Rpbmcgd29y
a3MgY29ycmVjdGx5IGFjY291bnRzIGZvciB0aGUgY29udGVudHMgc2NhbGUuCiAgICAgLy8gQSBj
b250ZW50c1NjYWxlIHRoYXQgaXMgbm90IDEgZWZmZWN0aXZlbHkgZm9yY2VzIGEgbm9uLWlkZW50
aXR5IHRyYW5zZm9ybSBiZXR3ZWVuCi0gICAgLy8gbGF5ZXIncyBjb250ZW50IHNwYWNlIGFuZCBs
YXllcidzIG9yaWdpbiBzcGFjZSwgd2hpY2ggaXMgbm90IGluY2x1ZGVkIGluIHRoZQotICAgIC8v
IHNjcmVlblNwYWNlVHJhbnNmb3JtLiBUaGUgaGl0IHRlc3RpbmcgY29kZSBtdXN0IHRha2UgdGhp
cyBpbnRvIGFjY291bnQuCisgICAgLy8gbGF5ZXIncyBjb250ZW50IHNwYWNlIGFuZCBsYXllcidz
IG9yaWdpbiBzcGFjZS4gVGhlIGhpdCB0ZXN0aW5nIGNvZGUgbXVzdCB0YWtlIHRoaXMgaW50byBh
Y2NvdW50LgogICAgIC8vCiAgICAgLy8gVG8gdGVzdCB0aGlzLCB0aGUgbGF5ZXIgaXMgcG9zaXRp
b25lZCBhdCAoMjUsIDI1KSwgYW5kIGlzIHNpemUgKDUwLCA1MCkuIElmCiAgICAgLy8gY29udGVu
dHNTY2FsZSBpcyBpZ25vcmVkLCB0aGVuIGhpdCB0ZXN0aW5nIHdpbGwgbWlzLWludGVycHJldCB0
aGUgdmlzaWJsZUNvbnRlbnRSZWN0CkBAIC0zMzA0LDE5ICszMzAzLDE1IEBAIFRFU1QoQ0NMYXll
clRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5TGF5ZXJUcmFuc2Zvcm1zSW5IaWdoRFBJKQogICAg
IEVYUEVDVF9FUSgxdSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5zaXplKCkpOwogCiAgICAgLy8g
VmVyaWZ5IHBhcmVudCB0cmFuc2Zvcm1zCi0gICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZXhw
ZWN0ZWRQYXJlbnRTY3JlZW5TcGFjZVRyYW5zZm9ybTsKLSAgICBleHBlY3RlZFBhcmVudFNjcmVl
blNwYWNlVHJhbnNmb3JtLnNldE0xMShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgZXhwZWN0ZWRQ
YXJlbnRTY3JlZW5TcGFjZVRyYW5zZm9ybS5zZXRNMjIoZGV2aWNlU2NhbGVGYWN0b3IpOwotICAg
IEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRQYXJlbnRTY3JlZW5TcGFj
ZVRyYW5zZm9ybSwgcGFyZW50LT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpKTsKLSAgICBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZFBhcmVudERyYXdUcmFuc2Zvcm07Ci0gICAgRVhQRUNU
X1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZFBhcmVudERyYXdUcmFuc2Zvcm0sIHBh
cmVudC0+ZHJhd1RyYW5zZm9ybSgpKTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBl
Y3RlZFBhcmVudFRyYW5zZm9ybTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VR
KGV4cGVjdGVkUGFyZW50VHJhbnNmb3JtLCBwYXJlbnQtPnNjcmVlblNwYWNlVHJhbnNmb3JtKCkp
OworICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRQYXJlbnRUcmFu
c2Zvcm0sIHBhcmVudC0+ZHJhd1RyYW5zZm9ybSgpKTsKIAogICAgIC8vIFZlcmlmeSByZXN1bHRz
IG9mIHRyYW5zZm9ybWVkIHBhcmVudCByZWN0cwotICAgIEludFJlY3QgcGFyZW50Qm91bmRzKElu
dFBvaW50KCksIHBhcmVudC0+Ym91bmRzKCkpOwotICAgIEludFJlY3QgcGFyZW50Q29udGVudEJv
dW5kcyhJbnRQb2ludCgpLCBwYXJlbnQtPmNvbnRlbnRCb3VuZHMoKSk7CisgICAgRmxvYXRSZWN0
IHBhcmVudENvbnRlbnRCb3VuZHMoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUocGFyZW50LT5jb250
ZW50Qm91bmRzKCkpKTsKIAotICAgIEZsb2F0UmVjdCBwYXJlbnREcmF3UmVjdCA9IENDTWF0aFV0
aWw6Om1hcENsaXBwZWRSZWN0KHBhcmVudC0+ZHJhd1RyYW5zZm9ybSgpLCBGbG9hdFJlY3QocGFy
ZW50Q29udGVudEJvdW5kcykpOwotICAgIEZsb2F0UmVjdCBwYXJlbnRTY3JlZW5TcGFjZVJlY3Qg
PSBDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChwYXJlbnQtPnNjcmVlblNwYWNlVHJhbnNmb3Jt
KCksIEZsb2F0UmVjdChwYXJlbnRCb3VuZHMpKTsKKyAgICBGbG9hdFJlY3QgcGFyZW50RHJhd1Jl
Y3QgPSBDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChwYXJlbnQtPmRyYXdUcmFuc2Zvcm0oKSwg
cGFyZW50Q29udGVudEJvdW5kcyk7CisgICAgRmxvYXRSZWN0IHBhcmVudFNjcmVlblNwYWNlUmVj
dCA9IENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KHBhcmVudC0+c2NyZWVuU3BhY2VUcmFuc2Zv
cm0oKSwgcGFyZW50Q29udGVudEJvdW5kcyk7CiAKICAgICBGbG9hdFJlY3QgZXhwZWN0ZWRQYXJl
bnREcmF3UmVjdChGbG9hdFBvaW50KCksIHBhcmVudC0+Ym91bmRzKCkpOwogICAgIGV4cGVjdGVk
UGFyZW50RHJhd1JlY3Quc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IpOwpAQCAtMzMyNCwyMiArMzMx
OSwxNiBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeUxheWVyVHJhbnNm
b3Jtc0luSGlnaERQSSkKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShleHBlY3RlZFBhcmVudERy
YXdSZWN0LCBwYXJlbnRTY3JlZW5TcGFjZVJlY3QpOwogCiAgICAgLy8gVmVyaWZ5IGNoaWxkIHRy
YW5zZm9ybXMKLSAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZENoaWxkU2NyZWVu
U3BhY2VUcmFuc2Zvcm07Ci0gICAgZXhwZWN0ZWRDaGlsZFNjcmVlblNwYWNlVHJhbnNmb3JtLnNl
dE0xMShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgZXhwZWN0ZWRDaGlsZFNjcmVlblNwYWNlVHJh
bnNmb3JtLnNldE0yMihkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgZXhwZWN0ZWRDaGlsZFNjcmVl
blNwYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZShjaGlsZC0+cG9zaXRpb24oKS54KCksIGNoaWxkLT5w
b3NpdGlvbigpLnkoKSk7Ci0gICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBl
Y3RlZENoaWxkU2NyZWVuU3BhY2VUcmFuc2Zvcm0sIGNoaWxkLT5zY3JlZW5TcGFjZVRyYW5zZm9y
bSgpKTsKLQotICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGV4cGVjdGVkQ2hpbGREcmF3VHJh
bnNmb3JtOwotICAgIGV4cGVjdGVkQ2hpbGREcmF3VHJhbnNmb3JtLnRyYW5zbGF0ZShkZXZpY2VT
Y2FsZUZhY3RvciAqIGNoaWxkLT5wb3NpdGlvbigpLngoKSwgZGV2aWNlU2NhbGVGYWN0b3IgKiBj
aGlsZC0+cG9zaXRpb24oKS55KCkpOwotICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhf
RVEoZXhwZWN0ZWRDaGlsZERyYXdUcmFuc2Zvcm0sIGNoaWxkLT5kcmF3VHJhbnNmb3JtKCkpOwor
ICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGV4cGVjdGVkQ2hpbGRUcmFuc2Zvcm07CisgICAg
ZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoZGV2aWNlU2NhbGVGYWN0b3IgKiBjaGls
ZC0+cG9zaXRpb24oKS54KCksIGRldmljZVNjYWxlRmFjdG9yICogY2hpbGQtPnBvc2l0aW9uKCku
eSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4cGVjdGVkQ2hpbGRU
cmFuc2Zvcm0sIGNoaWxkLT5kcmF3VHJhbnNmb3JtKCkpOworICAgIEVYUEVDVF9UUkFOU0ZPUk1B
VElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybSwgY2hpbGQtPnNjcmVlblNwYWNl
VHJhbnNmb3JtKCkpOwogCiAgICAgLy8gVmVyaWZ5IHJlc3VsdHMgb2YgdHJhbnNmb3JtZWQgY2hp
bGQgcmVjdHMKLSAgICBJbnRSZWN0IGNoaWxkQm91bmRzKEludFBvaW50KCksIGNoaWxkLT5ib3Vu
ZHMoKSk7Ci0gICAgSW50UmVjdCBjaGlsZENvbnRlbnRCb3VuZHMoSW50UG9pbnQoKSwgY2hpbGQt
PmNvbnRlbnRCb3VuZHMoKSk7CisgICAgRmxvYXRSZWN0IGNoaWxkQ29udGVudEJvdW5kcyhGbG9h
dFBvaW50KCksIEZsb2F0U2l6ZShjaGlsZC0+Y29udGVudEJvdW5kcygpKSk7CiAKLSAgICBGbG9h
dFJlY3QgY2hpbGREcmF3UmVjdCA9IENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KGNoaWxkLT5k
cmF3VHJhbnNmb3JtKCksIEZsb2F0UmVjdChjaGlsZENvbnRlbnRCb3VuZHMpKTsKLSAgICBGbG9h
dFJlY3QgY2hpbGRTY3JlZW5TcGFjZVJlY3QgPSBDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChj
aGlsZC0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSwgRmxvYXRSZWN0KGNoaWxkQm91bmRzKSk7Cisg
ICAgRmxvYXRSZWN0IGNoaWxkRHJhd1JlY3QgPSBDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChj
aGlsZC0+ZHJhd1RyYW5zZm9ybSgpLCBjaGlsZENvbnRlbnRCb3VuZHMpOworICAgIEZsb2F0UmVj
dCBjaGlsZFNjcmVlblNwYWNlUmVjdCA9IENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KGNoaWxk
LT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLCBjaGlsZENvbnRlbnRCb3VuZHMpOwogCiAgICAgRmxv
YXRSZWN0IGV4cGVjdGVkQ2hpbGREcmF3UmVjdChGbG9hdFBvaW50KCksIGNoaWxkLT5ib3VuZHMo
KSk7CiAgICAgZXhwZWN0ZWRDaGlsZERyYXdSZWN0Lm1vdmUoY2hpbGQtPnBvc2l0aW9uKCkueCgp
LCBjaGlsZC0+cG9zaXRpb24oKS55KCkpOwpAQCAtMzM0OSwxMSArMzMzOCwxMSBAQCBURVNUKEND
TGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeUxheWVyVHJhbnNmb3Jtc0luSGlnaERQSSkK
IAogICAgIC8vIFZlcmlmeSBjaGlsZE5vU2NhbGUgdHJhbnNmb3JtcwogICAgIFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4IGV4cGVjdGVkQ2hpbGROb1NjYWxlVHJhbnNmb3JtID0gY2hpbGQtPmRyYXdU
cmFuc2Zvcm0oKTsKLSAgICAvLyBkcmF3VHJhbnNmb3JtIHRyYW5zZm9ybXMgb24gY29udGVudCBy
ZWN0cy4gVGhlIGNoaWxkJ3MgY29udGVudCByZWN0CisgICAgLy8gQWxsIHRyYW5zZm9ybXMgb3Bl
cmF0ZSBvbiBjb250ZW50IHJlY3RzLiBUaGUgY2hpbGQncyBjb250ZW50IHJlY3QKICAgICAvLyBp
bmNvcnBvcmF0ZXMgZGV2aWNlIHNjYWxlLCBidXQgdGhlIGNoaWxkTm9TY2FsZSBkb2VzIG5vdDsg
YWRkIGl0IGhlcmUuCiAgICAgZXhwZWN0ZWRDaGlsZE5vU2NhbGVUcmFuc2Zvcm0uc2NhbGUoZGV2
aWNlU2NhbGVGYWN0b3IpOwotICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoY2hp
bGROb1NjYWxlLT5kcmF3VHJhbnNmb3JtKCksIGV4cGVjdGVkQ2hpbGROb1NjYWxlVHJhbnNmb3Jt
KTsKLSAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGNoaWxkLT5zY3JlZW5TcGFj
ZVRyYW5zZm9ybSgpLCBjaGlsZE5vU2NhbGUtPnNjcmVlblNwYWNlVHJhbnNmb3JtKCkpOworICAg
IEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRDaGlsZE5vU2NhbGVUcmFu
c2Zvcm0sIGNoaWxkTm9TY2FsZS0+ZHJhd1RyYW5zZm9ybSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNG
T1JNQVRJT05fTUFUUklYX0VRKGV4cGVjdGVkQ2hpbGROb1NjYWxlVHJhbnNmb3JtLCBjaGlsZE5v
U2NhbGUtPnNjcmVlblNwYWNlVHJhbnNmb3JtKCkpOwogfQogCiBURVNUKENDTGF5ZXJUcmVlSG9z
dENvbW1vblRlc3QsIHZlcmlmeVJlbmRlclN1cmZhY2VUcmFuc2Zvcm1zSW5IaWdoRFBJKQpAQCAt
MzM5NiwyMSArMzM4NSwxNSBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlm
eVJlbmRlclN1cmZhY2VUcmFuc2Zvcm1zSW5IaWdoRFBJKQogICAgIC8vIHJlbmRlciBzdXJmYWNl
IChpdCBuZWVkcyBvbmUgYmVjYXVzZSBpdCBoYXMgYSByZXBsaWNhIGxheWVyKS4KICAgICBFWFBF
Q1RfRVEoMnUsIHJlbmRlclN1cmZhY2VMYXllckxpc3Quc2l6ZSgpKTsKIAotICAgIFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4IGV4cGVjdGVkUGFyZW50U2NyZWVuU3BhY2VUcmFuc2Zvcm07Ci0gICAg
ZXhwZWN0ZWRQYXJlbnRTY3JlZW5TcGFjZVRyYW5zZm9ybS5zZXRNMTEoZGV2aWNlU2NhbGVGYWN0
b3IpOwotICAgIGV4cGVjdGVkUGFyZW50U2NyZWVuU3BhY2VUcmFuc2Zvcm0uc2V0TTIyKGRldmlj
ZVNjYWxlRmFjdG9yKTsKLSAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4cGVj
dGVkUGFyZW50U2NyZWVuU3BhY2VUcmFuc2Zvcm0sIHBhcmVudC0+c2NyZWVuU3BhY2VUcmFuc2Zv
cm0oKSk7Ci0KLSAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZFBhcmVudERyYXdU
cmFuc2Zvcm07Ci0gICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShwYXJlbnQtPmRy
YXdUcmFuc2Zvcm0oKSwgZXhwZWN0ZWRQYXJlbnREcmF3VHJhbnNmb3JtKTsKKyAgICBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZFBhcmVudFRyYW5zZm9ybTsKKyAgICBFWFBFQ1RfVFJB
TlNGT1JNQVRJT05fTUFUUklYX0VRKGV4cGVjdGVkUGFyZW50VHJhbnNmb3JtLCBwYXJlbnQtPnNj
cmVlblNwYWNlVHJhbnNmb3JtKCkpOworICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhf
RVEoZXhwZWN0ZWRQYXJlbnRUcmFuc2Zvcm0sIHBhcmVudC0+ZHJhd1RyYW5zZm9ybSgpKTsKIAog
ICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGV4cGVjdGVkRHJhd1RyYW5zZm9ybTsKICAgICBF
WFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4cGVjdGVkRHJhd1RyYW5zZm9ybSwgY2hp
bGQtPmRyYXdUcmFuc2Zvcm0oKSk7CiAKICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBl
Y3RlZFNjcmVlblNwYWNlVHJhbnNmb3JtOwotICAgIGV4cGVjdGVkU2NyZWVuU3BhY2VUcmFuc2Zv
cm0uc2V0TTExKGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBleHBlY3RlZFNjcmVlblNwYWNlVHJh
bnNmb3JtLnNldE0yMihkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgZXhwZWN0ZWRTY3JlZW5TcGFj
ZVRyYW5zZm9ybS50cmFuc2xhdGUoY2hpbGQtPnBvc2l0aW9uKCkueCgpLCBjaGlsZC0+cG9zaXRp
b24oKS55KCkpOworICAgIGV4cGVjdGVkU2NyZWVuU3BhY2VUcmFuc2Zvcm0udHJhbnNsYXRlKGRl
dmljZVNjYWxlRmFjdG9yICogY2hpbGQtPnBvc2l0aW9uKCkueCgpLCBkZXZpY2VTY2FsZUZhY3Rv
ciAqIGNoaWxkLT5wb3NpdGlvbigpLnkoKSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01B
VFJJWF9FUShleHBlY3RlZFNjcmVlblNwYWNlVHJhbnNmb3JtLCBjaGlsZC0+c2NyZWVuU3BhY2VU
cmFuc2Zvcm0oKSk7CiAKICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZER1cGxp
Y2F0ZUNoaWxkRHJhd1RyYW5zZm9ybSA9IGNoaWxkLT5kcmF3VHJhbnNmb3JtKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0
LmNwcAppbmRleCBjMjc5NmI5YWE2ZDA5ODFhNDdlNTJlZmVlYjZhNWMwNmFkOWJhNDg2Li5lMzlm
ZTdlNTY5YzdlZDJhZGRkNWFjYzEyYTQzOGEyMTE4MDUzOTMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKQEAg
LTEyMzIsNiArMTIzMiwxMCBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQ
YWludGVkV2l0aE9jY2x1c2lvbkFuZFNjYWxpbmcpCiAgICAgLy8gcGl4ZWxzLCB3aGljaCBtZWFu
cyBub25lIHNob3VsZCBiZSBvY2NsdWRlZC4KICAgICBsYXllci0+c2V0Q29udGVudHNTY2FsZSgw
LjUpOwogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSg2MDAsIDYwMCkpOworICAgIFdlYlRy
YW5zZm9ybWF0aW9uTWF0cml4IGRyYXdUcmFuc2Zvcm07CisgICAgZHJhd1RyYW5zZm9ybS5zY2Fs
ZSgxIC8gbGF5ZXItPmNvbnRlbnRzU2NhbGUoKSk7CisgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zv
cm0oZHJhd1RyYW5zZm9ybSk7CisgICAgbGF5ZXItPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKGRy
YXdUcmFuc2Zvcm0pOwogCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMjAwLCAy
MDAsIDMwMCwgMTAwKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0
KEludFBvaW50KCksIGxheWVyLT5jb250ZW50Qm91bmRzKCkpKTsK
</data>
<flag name="commit-queue"
          id="163721"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>