<?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>91823</bug_id>
          
          <creation_ts>2012-07-19 23:30:33 -0700</creation_ts>
          <short_desc>[chromium] Clean up LayerRendererChromium::drawTexturedQuad</short_desc>
          <delta_ts>2012-07-27 15:31: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>91815</dependson>
          
          <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>shawnsingh</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>674225</commentid>
    <comment_count>0</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-19 23:30:33 -0700</bug_when>
    <thetext>[chromium] Clean up LayerRendererChromium::drawTexturedQuad</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674231</commentid>
    <comment_count>1</comment_count>
      <attachid>153427</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-19 23:35:18 -0700</bug_when>
    <thetext>Created attachment 153427
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678727</commentid>
    <comment_count>2</comment_count>
      <attachid>154515</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-25 18:56:57 -0700</bug_when>
    <thetext>Created attachment 154515
Rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680123</commentid>
    <comment_count>3</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-26 22:26:59 -0700</bug_when>
    <thetext>Anybody feel like reviewing this? Officially? Unofficially? *crickets*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680764</commentid>
    <comment_count>4</comment_count>
      <attachid>154515</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-27 10:13:40 -0700</bug_when>
    <thetext>Comment on attachment 154515
Rebased

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

A few little comments, looks good overall!

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:749
&gt; +    if (useAA)
&gt; +        setShaderFloatQuad(surfaceQuad, shaderQuadLocation);

if useAA is false, then shaderQuadLocation should be -1? Can we do the if inside setShaderFloatQuad, the same as we do with setShaderOpacity?

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:944
&gt; +    setShaderFloatQuad(localQuad, uniforms.pointLocation);

The drawTexturedQuad would handle pointLocation == -1 but setShaderFloatQuad doesn&apos;t, more reason to have setShaderFloatQuad do that check/early-out?

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:947
&gt; +    FloatRect centeredRect(FloatPoint(-0.5 * tileRect.width(), -0.5 * tileRect.height()), tileRect.size());
&gt; +    drawQuadGeometry(frame, quad-&gt;quadTransform(), centeredRect, uniforms.matrixLocation);

FIXME to make quadTransform() consistent with other quad types?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680794</commentid>
    <comment_count>5</comment_count>
      <attachid>154515</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-27 10:42:58 -0700</bug_when>
    <thetext>Comment on attachment 154515
Rebased

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:749
&gt;&gt; +        setShaderFloatQuad(surfaceQuad, shaderQuadLocation);
&gt; 
&gt; if useAA is false, then shaderQuadLocation should be -1? Can we do the if inside setShaderFloatQuad, the same as we do with setShaderOpacity?

Sure.

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:944
&gt;&gt; +    setShaderFloatQuad(localQuad, uniforms.pointLocation);
&gt; 
&gt; The drawTexturedQuad would handle pointLocation == -1 but setShaderFloatQuad doesn&apos;t, more reason to have setShaderFloatQuad do that check/early-out?

It&apos;s always used for the tile shader, for what it&apos;s worth.

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:947
&gt;&gt; +    drawQuadGeometry(frame, quad-&gt;quadTransform(), centeredRect, uniforms.matrixLocation);
&gt; 
&gt; FIXME to make quadTransform() consistent with other quad types?

This is only because of the way the shader works.  It uses these bounds as a way to figure out how big the texture is supposed to be before applying AA to it.  I don&apos;t know if there&apos;s really anything to fix? I could add a comment to make it more clear that this is shader is special and behaves unexpectedly with respect to its geometry/transfom inputs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680869</commentid>
    <comment_count>6</comment_count>
      <attachid>154515</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-27 11:37:51 -0700</bug_when>
    <thetext>Comment on attachment 154515
Rebased

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:947
&gt;&gt;&gt; +    drawQuadGeometry(frame, quad-&gt;quadTransform(), centeredRect, uniforms.matrixLocation);
&gt;&gt; 
&gt;&gt; FIXME to make quadTransform() consistent with other quad types?
&gt; 
&gt; This is only because of the way the shader works.  It uses these bounds as a way to figure out how big the texture is supposed to be before applying AA to it.  I don&apos;t know if there&apos;s really anything to fix? I could add a comment to make it more clear that this is shader is special and behaves unexpectedly with respect to its geometry/transfom inputs.

Oh interesting.. thanks for the explanation. A comment might be nice for when I forget this again in a couple months :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680978</commentid>
    <comment_count>7</comment_count>
      <attachid>155024</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-27 12:42:15 -0700</bug_when>
    <thetext>Created attachment 155024
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681158</commentid>
    <comment_count>8</comment_count>
      <attachid>155024</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-27 15:31:06 -0700</bug_when>
    <thetext>Comment on attachment 155024
Patch for landing

Clearing flags on attachment: 155024

Committed r123926: &lt;http://trac.webkit.org/changeset/123926&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681159</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-27 15:31:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153427</attachid>
            <date>2012-07-19 23:35:18 -0700</date>
            <delta_ts>2012-07-25 18:56:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91823-20120719233515.patch</filename>
            <type>text/plain</type>
            <size>18709</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Y0M2JhZjkwNzFjNzRi
OTBhNDAyNzdmOWFmY2ViMWQ1YTFmNjMwNC4uZTgzYzkwNjIwMjlmZTY1OTA3ZmQwODg2M2VjNDUx
ZDlkNzgwMDdhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ0IEBACiAyMDEyLTA3LTE5ICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAKKyAgICAgICAgW2Nocm9taXVtXSBDbGVh
biB1cCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUZXh0dXJlZFF1YWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODIzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpkcmF3VGV4dHVyZWRRdWFkIGhhcyBiZWVuIGFyb3VuZCBmb3JldmVyIGFuZAorICAgICAgICBv
dmVyIHRpbWUgaGFzIGRldmVsb3BlZCBzZXZlcmFsIHByb2JsZW1zOgorICAgICAgICAgLSBDb25m
dXNpbmdseSBuYW1lZCByZWxhdGl2ZSB0byBkcmF3VGV4dHVyZVF1YWQKKyAgICAgICAgIC0gQWxs
IGJ1dCBvbmUgY2FsbGVycyBpZGVudGljYWxseSBtYW5pcHVsYXRlIHRoZSB0cmFuc2Zvcm0gbWF0
cml4CisgICAgICAgICAtIExvdHMgb2Ygb3B0aW9uYWwgcGFyYW1ldGVycyB0aGF0IG9ubHkgZmV3
IGZ1bmN0aW9ucyB1c2UKKworICAgICAgICBUaGlzIHBhdGNoIGJyZWFrcyB1cCBkcmF3VGV4dHVy
ZWRRdWFkIGludG8gc2V0U2hhZGVyT3BhY2l0eSAoZm9yCisgICAgICAgIG9wdGlvbmFsIG9wYWNp
dHkgdmFsdWVzIHNlbnQgdG8gdGhlIHNoYWRlciksIHNldFNoYWRlckZsb2F0UXVhZCAodGhlCisg
ICAgICAgIGZ1bGwgRmxvYXRRdWFkIHVzZWQgYnkgQUEgc2hhZGVycyksIGFuZCBkcmF3UXVhZEdl
b21ldHJ5IChhY3R1YWxseQorICAgICAgICBkcmF3IHRoZSBnZW9tZXRyeSwgYW5kIHdyYXAgdGhl
IHRyYW5zZm9ybSBsb2dpYyB0aGF0IHdhcyBkdXBsaWNhdGVkCisgICAgICAgIGV2ZXJ5d2hlcmUp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0czsgbm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3Q2hl
Y2tlcmJvYXJkUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06
OmRyYXdCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdSZW5kZXJQYXNzUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJl
bmRlcmVyQ2hyb21pdW06OmRyYXdTb2xpZENvbG9yUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUaWxlUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdZVVZWaWRlb1F1YWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3U3RyZWFtVmlkZW9RdWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RleHR1cmVRdWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0lPU3VyZmFjZVF1YWQpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3SGVhZHNVcERpc3Bs
YXkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRTaGFkZXJG
bG9hdFF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRT
aGFkZXJPcGFjaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
ZHJhd1F1YWRHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21p
dW06OmNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAgICAgIChMYXllclJlbmRl
cmVyQ2hyb21pdW0pOgorCisyMDEyLTA3LTE5ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2ds
ZS5jb20+CisKICAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUgcmVkdW5kYW50IHN1cmZhY2Ugb3Jp
Z2luIHRyYW5zZm9ybXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkxODE1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4
IGIzNDE0ODMyNmE0ZGIwMGUyZGU5NzRhNjY3OTM2YTQ5ZWQ5YWU5MGYuLjZjMzBmYjcyYzc4N2I4
Y2Y0ODE2NWRhYjQ4N2I1MGJhMTI2MDJhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmNwcApAQCAtNDcyLDkgKzQ3Miw2IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpkcmF3Q2hlY2tlcmJvYXJkUXVhZChjb25zdCBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKiBxCiAg
ICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0o
KSkpOwogCiAgICAgSW50UmVjdCB0aWxlUmVjdCA9IHF1YWQtPnF1YWRSZWN0KCk7Ci0gICAgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXggdGlsZVRyYW5zZm9ybSA9IHF1YWQtPnF1YWRUcmFuc2Zvcm0o
KTsKLSAgICB0aWxlVHJhbnNmb3JtLnRyYW5zbGF0ZSh0aWxlUmVjdC54KCkgKyB0aWxlUmVjdC53
aWR0aCgpIC8gMi4wLCB0aWxlUmVjdC55KCkgKyB0aWxlUmVjdC5oZWlnaHQoKSAvIDIuMCk7Ci0K
ICAgICBmbG9hdCB0ZXhPZmZzZXRYID0gdGlsZVJlY3QueCgpOwogICAgIGZsb2F0IHRleE9mZnNl
dFkgPSB0aWxlUmVjdC55KCk7CiAgICAgZmxvYXQgdGV4U2NhbGVYID0gdGlsZVJlY3Qud2lkdGgo
KTsKQEAgLTQ4NiwxMSArNDgzLDggQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdD
aGVja2VyYm9hcmRRdWFkKGNvbnN0IENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQqIHEKIAogICAgIEdM
Qyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTFmKHByb2dyYW0tPmZyYWdtZW50U2hhZGVy
KCkuZnJlcXVlbmN5TG9jYXRpb24oKSwgZnJlcXVlbmN5KSk7CiAKLSAgICBmbG9hdCBvcGFjaXR5
ID0gcXVhZC0+b3BhY2l0eSgpOwotICAgIGRyYXdUZXh0dXJlZFF1YWQodGlsZVRyYW5zZm9ybSwK
LSAgICAgICAgICAgICAgICAgICAgIHRpbGVSZWN0LndpZHRoKCksIHRpbGVSZWN0LmhlaWdodCgp
LCBvcGFjaXR5LCBGbG9hdFF1YWQoKSwKLSAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPnZl
cnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCksCi0gICAgICAgICAgICAgICAgICAgICBwcm9n
cmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24oKSwgLTEpOworICAgIHNldFNoYWRl
ck9wYWNpdHkocXVhZC0+b3BhY2l0eSgpLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhh
TG9jYXRpb24oKSk7CisgICAgZHJhd1F1YWRHZW9tZXRyeShxdWFkLT5xdWFkVHJhbnNmb3JtKCks
IHF1YWQtPnF1YWRSZWN0KCksIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9u
KCkpOwogfQogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0RlYnVnQm9yZGVyUXVh
ZChjb25zdCBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQqIHF1YWQpCkBAIC01OTUsMTAgKzU4OSw3IEBA
IFBhc3NPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdC
YWNrZ3JvdW5kRmlsdGVycyhjb25zdCBDCiAgICAgICAgIGRldmljZVRvRnJhbWVidWZmZXJUcmFu
c2Zvcm0udHJhbnNsYXRlKHF1YWQtPnF1YWRSZWN0KCkud2lkdGgoKSAvIDIuMCwgcXVhZC0+cXVh
ZFJlY3QoKS5oZWlnaHQoKSAvIDIuMCk7CiAgICAgICAgIGRldmljZVRvRnJhbWVidWZmZXJUcmFu
c2Zvcm0uc2NhbGUzZChxdWFkLT5xdWFkUmVjdCgpLndpZHRoKCksIHF1YWQtPnF1YWRSZWN0KCku
aGVpZ2h0KCksIDEpOwogICAgICAgICBkZXZpY2VUb0ZyYW1lYnVmZmVyVHJhbnNmb3JtLm11bHRp
cGx5KGNvbnRlbnRzRGV2aWNlVHJhbnNmb3JtLmludmVyc2UoKSk7Ci0gICAgICAgIGRldmljZVRv
RnJhbWVidWZmZXJUcmFuc2Zvcm0udHJhbnNsYXRlKGRldmljZVJlY3Qud2lkdGgoKSAvIDIuMCwg
ZGV2aWNlUmVjdC5oZWlnaHQoKSAvIDIuMCk7Ci0gICAgICAgIGRldmljZVRvRnJhbWVidWZmZXJU
cmFuc2Zvcm0udHJhbnNsYXRlKGRldmljZVJlY3QueCgpLCBkZXZpY2VSZWN0LnkoKSk7Ci0KLSAg
ICAgICAgY29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKGZpbHRlcmVkRGV2aWNlQmFja2dyb3VuZFRl
eHR1cmVJZCwgZGV2aWNlUmVjdC5zaXplKCksIGRldmljZVRvRnJhbWVidWZmZXJUcmFuc2Zvcm0p
OworICAgICAgICBjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoZmlsdGVyZWREZXZpY2VCYWNrZ3Jv
dW5kVGV4dHVyZUlkLCBkZXZpY2VSZWN0LCBkZXZpY2VUb0ZyYW1lYnVmZmVyVHJhbnNmb3JtKTsK
ICAgICB9CiAKICAgICB1c2VSZW5kZXJQYXNzKHRhcmdldFJlbmRlclBhc3MpOwpAQCAtNjQzLDcg
KzYzNCw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyUGFzc1F1YWQo
Y29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIHF1YWQpCiAgICAgaWYgKGJhY2tncm91bmRUZXh0
dXJlKSB7CiAgICAgICAgIEFTU0VSVChiYWNrZ3JvdW5kVGV4dHVyZS0+c2l6ZSgpID09IHF1YWQt
PnF1YWRSZWN0KCkuc2l6ZSgpKTsKICAgICAgICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFk
IGxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCBiYWNrZ3JvdW5kVGV4dHVyZS0+aWQoKSk7Ci0gICAg
ICAgIGNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcihsb2NrLnRleHR1cmVJZCgpLCBxdWFkLT5xdWFk
UmVjdCgpLnNpemUoKSwgcmVuZGVyTWF0cml4KTsKKyAgICAgICAgY29weVRleHR1cmVUb0ZyYW1l
YnVmZmVyKGxvY2sudGV4dHVyZUlkKCksIHF1YWQtPnF1YWRSZWN0KCksIHF1YWQtPnF1YWRUcmFu
c2Zvcm0oKSk7CiAgICAgfQogCiAgICAgYm9vbCBjbGlwcGVkID0gZmFsc2U7CkBAIC03MzAsOCAr
NzIxLDEwIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyUGFzc1F1YWQo
Y29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIHF1YWQpCiAgICAgRmxvYXRRdWFkIHN1cmZhY2VR
dWFkID0gQ0NNYXRoVXRpbDo6bWFwUXVhZChjb250ZW50c0RldmljZVRyYW5zZm9ybS5pbnZlcnNl
KCksIGRldmljZUxheWVyRWRnZXMuZmxvYXRRdWFkKCksIGNsaXBwZWQpOwogICAgIEFTU0VSVCgh
Y2xpcHBlZCk7CiAKLSAgICBkcmF3VGV4dHVyZWRRdWFkKHJlbmRlck1hdHJpeCwgcXVhZC0+cXVh
ZFJlY3QoKS53aWR0aCgpLCBxdWFkLT5xdWFkUmVjdCgpLmhlaWdodCgpLCBxdWFkLT5vcGFjaXR5
KCksIHN1cmZhY2VRdWFkLAotICAgICAgICAgICAgICAgICAgICAgc2hhZGVyTWF0cml4TG9jYXRp
b24sIHNoYWRlckFscGhhTG9jYXRpb24sIHNoYWRlclF1YWRMb2NhdGlvbik7CisgICAgc2V0U2hh
ZGVyT3BhY2l0eShxdWFkLT5vcGFjaXR5KCksIHNoYWRlckFscGhhTG9jYXRpb24pOworICAgIGlm
ICh1c2VBQSkKKyAgICAgICAgc2V0U2hhZGVyRmxvYXRRdWFkKHN1cmZhY2VRdWFkLCBzaGFkZXJR
dWFkTG9jYXRpb24pOworICAgIGRyYXdRdWFkR2VvbWV0cnkocXVhZC0+cXVhZFRyYW5zZm9ybSgp
LCBxdWFkLT5xdWFkUmVjdCgpLCBzaGFkZXJNYXRyaXhMb2NhdGlvbik7CiB9CiAKIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3U29saWRDb2xvclF1YWQoY29uc3QgQ0NTb2xpZENvbG9y
RHJhd1F1YWQqIHF1YWQpCkBAIC03MzksMjEgKzczMiwxMyBAQCB2b2lkIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6ZHJhd1NvbGlkQ29sb3JRdWFkKGNvbnN0IENDU29saWRDb2xvckRyYXdRdWFkKiBx
dWFkKQogICAgIGNvbnN0IFNvbGlkQ29sb3JQcm9ncmFtKiBwcm9ncmFtID0gc29saWRDb2xvclBy
b2dyYW0oKTsKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVzZVByb2dyYW0ocHJvZ3Jh
bS0+cHJvZ3JhbSgpKSk7CiAKLSAgICBJbnRSZWN0IHRpbGVSZWN0ID0gcXVhZC0+cXVhZFJlY3Qo
KTsKLQotICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRpbGVUcmFuc2Zvcm0gPSBxdWFkLT5x
dWFkVHJhbnNmb3JtKCk7Ci0gICAgdGlsZVRyYW5zZm9ybS50cmFuc2xhdGUodGlsZVJlY3QueCgp
ICsgdGlsZVJlY3Qud2lkdGgoKSAvIDIuMCwgdGlsZVJlY3QueSgpICsgdGlsZVJlY3QuaGVpZ2h0
KCkgLyAyLjApOwotCiAgICAgU2tDb2xvciBjb2xvciA9IHF1YWQtPmNvbG9yKCk7CiAgICAgZmxv
YXQgb3BhY2l0eSA9IHF1YWQtPm9wYWNpdHkoKTsKICAgICBmbG9hdCBhbHBoYSA9IChTa0NvbG9y
R2V0QShjb2xvcikgLyAyNTUuMCkgKiBvcGFjaXR5OwogCiAgICAgR0xDKGNvbnRleHQoKSwgY29u
dGV4dCgpLT51bmlmb3JtNGYocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5jb2xvckxvY2F0aW9u
KCksIChTa0NvbG9yR2V0Uihjb2xvcikgLyAyNTUuMCkgKiBhbHBoYSwgKFNrQ29sb3JHZXRHKGNv
bG9yKSAvIDI1NS4wKSAqIGFscGhhLCAoU2tDb2xvckdldEIoY29sb3IpIC8gMjU1LjApICogYWxw
aGEsIGFscGhhKSk7CiAKLSAgICBkcmF3VGV4dHVyZWRRdWFkKHRpbGVUcmFuc2Zvcm0sCi0gICAg
ICAgICAgICAgICAgICAgICB0aWxlUmVjdC53aWR0aCgpLCB0aWxlUmVjdC5oZWlnaHQoKSwgMS4w
LCBGbG9hdFF1YWQoKSwKLSAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPnZlcnRleFNoYWRl
cigpLm1hdHJpeExvY2F0aW9uKCksCi0gICAgICAgICAgICAgICAgICAgICAtMSwgLTEpOworICAg
IGRyYXdRdWFkR2VvbWV0cnkocXVhZC0+cXVhZFRyYW5zZm9ybSgpLCBxdWFkLT5xdWFkUmVjdCgp
LCBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpKTsKIH0KIAogc3RydWN0
IFRpbGVQcm9ncmFtVW5pZm9ybXMgewpAQCAtODU1LDkgKzg0MCw4IEBAIHZvaWQgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpkcmF3VGlsZVF1YWQoY29uc3QgQ0NUaWxlRHJhd1F1YWQqIHF1YWQpCiAg
ICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBx
dWFkLT50ZXh0dXJlRmlsdGVyKCkpKTsKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnRl
eFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFX01BR19GSUxURVIsIHF1YWQtPnRleHR1cmVGaWx0ZXIoKSkpOwogCi0KLSAg
ICBpZiAoIWNsaXBwZWQgJiYgcXVhZC0+aXNBbnRpYWxpYXNlZCgpKSB7Ci0KKyAgICBib29sIHVz
ZUFBID0gIWNsaXBwZWQgJiYgcXVhZC0+aXNBbnRpYWxpYXNlZCgpOworICAgIGlmICh1c2VBQSkg
ewogICAgICAgICBDQ0xheWVyUXVhZCBkZXZpY2VMYXllckJvdW5kcyA9IENDTGF5ZXJRdWFkKEZs
b2F0UXVhZChkZXZpY2VMYXllclF1YWQuYm91bmRpbmdCb3goKSkpOwogICAgICAgICBkZXZpY2VM
YXllckJvdW5kcy5pbmZsYXRlQW50aUFsaWFzaW5nRGlzdGFuY2UoKTsKIApAQCAtOTMzLDcgKzkx
NywxMSBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RpbGVRdWFkKGNvbnN0IEND
VGlsZURyYXdRdWFkKiBxdWFkKQogICAgIC8vIE5vcm1hbGl6ZSB0byB0aWxlUmVjdC4KICAgICBs
b2NhbFF1YWQuc2NhbGUoMS4wZiAvIHRpbGVSZWN0LndpZHRoKCksIDEuMGYgLyB0aWxlUmVjdC5o
ZWlnaHQoKSk7CiAKLSAgICBkcmF3VGV4dHVyZWRRdWFkKHF1YWQtPnF1YWRUcmFuc2Zvcm0oKSwg
dGlsZVJlY3Qud2lkdGgoKSwgdGlsZVJlY3QuaGVpZ2h0KCksIHF1YWQtPm9wYWNpdHkoKSwgbG9j
YWxRdWFkLCB1bmlmb3Jtcy5tYXRyaXhMb2NhdGlvbiwgdW5pZm9ybXMuYWxwaGFMb2NhdGlvbiwg
dW5pZm9ybXMucG9pbnRMb2NhdGlvbik7CisgICAgc2V0U2hhZGVyT3BhY2l0eShxdWFkLT5vcGFj
aXR5KCksIHVuaWZvcm1zLmFscGhhTG9jYXRpb24pOworICAgIHNldFNoYWRlckZsb2F0UXVhZChs
b2NhbFF1YWQsIHVuaWZvcm1zLnBvaW50TG9jYXRpb24pOworCisgICAgRmxvYXRSZWN0IGNlbnRl
cmVkUmVjdChGbG9hdFBvaW50KC0wLjUgKiB0aWxlUmVjdC53aWR0aCgpLCAtMC41ICogdGlsZVJl
Y3QuaGVpZ2h0KCkpLCB0aWxlUmVjdC5zaXplKCkpOworICAgIGRyYXdRdWFkR2VvbWV0cnkocXVh
ZC0+cXVhZFRyYW5zZm9ybSgpLCBjZW50ZXJlZFJlY3QsIHVuaWZvcm1zLm1hdHJpeExvY2F0aW9u
KTsKIH0KIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdZVVZWaWRlb1F1YWQoY29u
c3QgQ0NZVVZWaWRlb0RyYXdRdWFkKiBxdWFkKQpAQCAtOTg5LDEyICs5NzcsOCBAQCB2b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1lVVlZpZGVvUXVhZChjb25zdCBDQ1lVVlZpZGVvRHJh
d1F1YWQqIHF1YWQpCiAgICAgfTsKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVuaWZv
cm0zZnYocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS55dXZBZGpMb2NhdGlvbigpLCAxLCB5dXZB
ZGp1c3QpKTsKIAotICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHF1YWRUcmFuc2Zvcm0gPSBx
dWFkLT5xdWFkVHJhbnNmb3JtKCk7Ci0gICAgSW50UmVjdCBxdWFkUmVjdCA9IHF1YWQtPnF1YWRS
ZWN0KCk7Ci0gICAgcXVhZFRyYW5zZm9ybS50cmFuc2xhdGUocXVhZFJlY3QueCgpICsgcXVhZFJl
Y3Qud2lkdGgoKSAvIDIuMCwgcXVhZFJlY3QueSgpICsgcXVhZFJlY3QuaGVpZ2h0KCkgLyAyLjAp
OwotCi0gICAgZHJhd1RleHR1cmVkUXVhZChxdWFkVHJhbnNmb3JtLCBxdWFkUmVjdC53aWR0aCgp
LCBxdWFkUmVjdC5oZWlnaHQoKSwgcXVhZC0+b3BhY2l0eSgpLCBGbG9hdFF1YWQoKSwKLSAgICAg
ICAgICAgICAgICAgICAgIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCks
IHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpLCAtMSk7CisgICAgc2V0
U2hhZGVyT3BhY2l0eShxdWFkLT5vcGFjaXR5KCksIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCku
YWxwaGFMb2NhdGlvbigpKTsKKyAgICBkcmF3UXVhZEdlb21ldHJ5KHF1YWQtPnF1YWRUcmFuc2Zv
cm0oKSwgcXVhZC0+cXVhZFJlY3QoKSwgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9j
YXRpb24oKSk7CiAKICAgICAvLyBSZXNldCBhY3RpdmUgdGV4dHVyZSBiYWNrIHRvIHRleHR1cmUg
MC4KICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkUwKSk7CkBAIC0xMDE3LDEyICsxMDAxLDggQEAgdm9pZCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OmRyYXdTdHJlYW1WaWRlb1F1YWQoY29uc3QgQ0NTdHJlYW1WaWRlb0Ry
YXdRdWFkKiBxdWEKIAogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTFpKHBy
b2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKIAotICAgIFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4IHF1YWRUcmFuc2Zvcm0gPSBxdWFkLT5xdWFkVHJhbnNmb3Jt
KCk7Ci0gICAgSW50UmVjdCBxdWFkUmVjdCA9IHF1YWQtPnF1YWRSZWN0KCk7Ci0gICAgcXVhZFRy
YW5zZm9ybS50cmFuc2xhdGUocXVhZFJlY3QueCgpICsgcXVhZFJlY3Qud2lkdGgoKSAvIDIuMCwg
cXVhZFJlY3QueSgpICsgcXVhZFJlY3QuaGVpZ2h0KCkgLyAyLjApOwotCi0gICAgZHJhd1RleHR1
cmVkUXVhZChxdWFkVHJhbnNmb3JtLCBxdWFkUmVjdC53aWR0aCgpLCBxdWFkUmVjdC5oZWlnaHQo
KSwgcXVhZC0+b3BhY2l0eSgpLCBzaGFyZWRHZW9tZXRyeVF1YWQoKSwKLSAgICAgICAgICAgICAg
ICAgICAgIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCksIHByb2dyYW0t
PmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpLCAtMSk7CisgICAgc2V0U2hhZGVyT3Bh
Y2l0eShxdWFkLT5vcGFjaXR5KCksIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2Nh
dGlvbigpKTsKKyAgICBkcmF3UXVhZEdlb21ldHJ5KHF1YWQtPnF1YWRUcmFuc2Zvcm0oKSwgcXVh
ZC0+cXVhZFJlY3QoKSwgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSk7
CiB9CiAKIHN0cnVjdCBUZXh0dXJlUHJvZ3JhbUJpbmRpbmcgewpAQCAtMTA4NiwxMSArMTA2Niw4
IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGV4dHVyZVF1YWQoY29uc3QgQ0NU
ZXh0dXJlRHJhd1F1YWQqIHF1YWQpCiAgICAgICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+
YmxlbmRGdW5jU2VwYXJhdGUoR3JhcGhpY3NDb250ZXh0M0Q6OlNSQ19BTFBIQSwgR3JhcGhpY3ND
b250ZXh0M0Q6Ok9ORV9NSU5VU19TUkNfQUxQSEEsIEdyYXBoaWNzQ29udGV4dDNEOjpaRVJPLCBH
cmFwaGljc0NvbnRleHQzRDo6T05FKSk7CiAgICAgfQogCi0gICAgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXggcXVhZFRyYW5zZm9ybSA9IHF1YWQtPnF1YWRUcmFuc2Zvcm0oKTsKLSAgICBJbnRSZWN0
IHF1YWRSZWN0ID0gcXVhZC0+cXVhZFJlY3QoKTsKLSAgICBxdWFkVHJhbnNmb3JtLnRyYW5zbGF0
ZShxdWFkUmVjdC54KCkgKyBxdWFkUmVjdC53aWR0aCgpIC8gMi4wLCBxdWFkUmVjdC55KCkgKyBx
dWFkUmVjdC5oZWlnaHQoKSAvIDIuMCk7Ci0KLSAgICBkcmF3VGV4dHVyZWRRdWFkKHF1YWRUcmFu
c2Zvcm0sIHF1YWRSZWN0LndpZHRoKCksIHF1YWRSZWN0LmhlaWdodCgpLCBxdWFkLT5vcGFjaXR5
KCksIHNoYXJlZEdlb21ldHJ5UXVhZCgpLCBiaW5kaW5nLm1hdHJpeExvY2F0aW9uLCBiaW5kaW5n
LmFscGhhTG9jYXRpb24sIC0xKTsKKyAgICBzZXRTaGFkZXJPcGFjaXR5KHF1YWQtPm9wYWNpdHko
KSwgYmluZGluZy5hbHBoYUxvY2F0aW9uKTsKKyAgICBkcmF3UXVhZEdlb21ldHJ5KHF1YWQtPnF1
YWRUcmFuc2Zvcm0oKSwgcXVhZC0+cXVhZFJlY3QoKSwgYmluZGluZy5tYXRyaXhMb2NhdGlvbik7
CiAKICAgICBpZiAoIXF1YWQtPnByZW11bHRpcGxpZWRBbHBoYSgpKQogICAgICAgICBHTEMobV9j
b250ZXh0LCBtX2NvbnRleHQtPmJsZW5kRnVuYyhHcmFwaGljc0NvbnRleHQzRDo6T05FLCBHcmFw
aGljc0NvbnRleHQzRDo6T05FX01JTlVTX1NSQ19BTFBIQSkpOwpAQCAtMTExMiwxMSArMTA4OSw4
IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3SU9TdXJmYWNlUXVhZChjb25zdCBD
Q0lPU3VyZmFjZURyYXdRdWFkKiBxdWFkKQogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+
YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsKICAgICBHTEMoY29u
dGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEV4dGVuc2lvbnMzRDo6VEVYVFVSRV9SRUNU
QU5HTEVfQVJCLCBxdWFkLT5pb1N1cmZhY2VUZXh0dXJlSWQoKSkpOwogCi0gICAgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXggcXVhZFRyYW5zZm9ybSA9IHF1YWQtPnF1YWRUcmFuc2Zvcm0oKTsKLSAg
ICBJbnRSZWN0IHF1YWRSZWN0ID0gcXVhZC0+cXVhZFJlY3QoKTsKLSAgICBxdWFkVHJhbnNmb3Jt
LnRyYW5zbGF0ZShxdWFkUmVjdC54KCkgKyBxdWFkUmVjdC53aWR0aCgpIC8gMi4wLCBxdWFkUmVj
dC55KCkgKyBxdWFkUmVjdC5oZWlnaHQoKSAvIDIuMCk7Ci0KLSAgICBkcmF3VGV4dHVyZWRRdWFk
KHF1YWRUcmFuc2Zvcm0sIHF1YWRSZWN0LndpZHRoKCksIHF1YWRSZWN0LmhlaWdodCgpLCBxdWFk
LT5vcGFjaXR5KCksIHNoYXJlZEdlb21ldHJ5UXVhZCgpLCBiaW5kaW5nLm1hdHJpeExvY2F0aW9u
LCBiaW5kaW5nLmFscGhhTG9jYXRpb24sIC0xKTsKKyAgICBzZXRTaGFkZXJPcGFjaXR5KHF1YWQt
Pm9wYWNpdHkoKSwgYmluZGluZy5hbHBoYUxvY2F0aW9uKTsKKyAgICBkcmF3UXVhZEdlb21ldHJ5
KHF1YWQtPnF1YWRUcmFuc2Zvcm0oKSwgcXVhZC0+cXVhZFJlY3QoKSwgYmluZGluZy5tYXRyaXhM
b2NhdGlvbik7CiAKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEV4
dGVuc2lvbnMzRDo6VEVYVFVSRV9SRUNUQU5HTEVfQVJCLCAwKSk7CiB9CkBAIC0xMTM4LDEyICsx
MTEyLDggQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdIZWFkc1VwRGlzcGxheShj
b25zdCBDQ1Njb3BlZFRleHR1cmUqIGh1ZFRleHR1cmUKICAgICBHTEMobV9jb250ZXh0LCBtX2Nv
bnRleHQtPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CiAgICAgR0xDKG1fY29udGV4
dCwgbV9jb250ZXh0LT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVy
TG9jYXRpb24oKSwgMCkpOwogCi0gICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4Owot
ICAgIG1hdHJpeC50cmFuc2xhdGUzZChodWRTaXplLndpZHRoKCkgKiAwLjUsIGh1ZFNpemUuaGVp
Z2h0KCkgKiAwLjUsIDApOwotICAgIGRyYXdUZXh0dXJlZFF1YWQobWF0cml4LCBodWRTaXplLndp
ZHRoKCksIGh1ZFNpemUuaGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgICAxLCBzaGFyZWRH
ZW9tZXRyeVF1YWQoKSwgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwK
LSAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2Nh
dGlvbigpLAotICAgICAgICAgICAgICAgICAgICAgLTEpOworICAgIHNldFNoYWRlck9wYWNpdHko
MSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCkpOworICAgIGRyYXdR
dWFkR2VvbWV0cnkoV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgSW50UmVjdChJbnRQb2ludCgp
LCBodWRTaXplKSwgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSk7CiB9
CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpmaW5pc2hEcmF3aW5nRnJhbWUoKQpAQCAt
MTE3Myw0MiArMTE0Myw0MSBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dG9HTE1hdHJp
eChmbG9hdCogZmxhdHRlbmVkLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbgogICAgIGZsYXR0ZW5l
ZFsxNV0gPSBtLm00NCgpOwogfQogCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1Rl
eHR1cmVkUXVhZChjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd01hdHJpeCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHdpZHRoLCBm
bG9hdCBoZWlnaHQsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEZsb2F0UXVhZCYgcXVhZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXRyaXhMb2NhdGlv
biwgaW50IGFscGhhTG9jYXRpb24sIGludCBxdWFkTG9jYXRpb24pCit2b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6c2V0U2hhZGVyRmxvYXRRdWFkKGNvbnN0IEZsb2F0UXVhZCYgcXVhZCwgaW50
IHF1YWRMb2NhdGlvbikKIHsKLSAgICBzdGF0aWMgZmxvYXQgZ2xNYXRyaXhbMTZdOwotCi0gICAg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcmVuZGVyTWF0cml4ID0gZHJhd01hdHJpeDsKKyAgICBB
U1NFUlQocXVhZExvY2F0aW9uID49IDApOworICAgIGZsb2F0IHBvaW50WzhdOworICAgIHBvaW50
WzBdID0gcXVhZC5wMSgpLngoKTsKKyAgICBwb2ludFsxXSA9IHF1YWQucDEoKS55KCk7CisgICAg
cG9pbnRbMl0gPSBxdWFkLnAyKCkueCgpOworICAgIHBvaW50WzNdID0gcXVhZC5wMigpLnkoKTsK
KyAgICBwb2ludFs0XSA9IHF1YWQucDMoKS54KCk7CisgICAgcG9pbnRbNV0gPSBxdWFkLnAzKCku
eSgpOworICAgIHBvaW50WzZdID0gcXVhZC5wNCgpLngoKTsKKyAgICBwb2ludFs3XSA9IHF1YWQu
cDQoKS55KCk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51bmlmb3JtMmZ2KHF1YWRM
b2NhdGlvbiwgNCwgcG9pbnQpKTsKK30KIAotICAgIC8vIEFwcGx5IGEgc2NhbGluZyBmYWN0b3Ig
dG8gc2l6ZSB0aGUgcXVhZCBmcm9tIDF4MSB0byBpdHMgaW50ZW5kZWQgc2l6ZS4KLSAgICByZW5k
ZXJNYXRyaXguc2NhbGUzZCh3aWR0aCwgaGVpZ2h0LCAxKTsKK3ZvaWQgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpzZXRTaGFkZXJPcGFjaXR5KGZsb2F0IG9wYWNpdHksIGludCBhbHBoYUxvY2F0aW9u
KQoreworICAgIGlmIChhbHBoYUxvY2F0aW9uICE9IC0xKQorICAgICAgICBHTEMobV9jb250ZXh0
LCBtX2NvbnRleHQtPnVuaWZvcm0xZihhbHBoYUxvY2F0aW9uLCBvcGFjaXR5KSk7Cit9CiAKLSAg
ICAvLyBBcHBseSB0aGUgcHJvamVjdGlvbiBtYXRyaXggYmVmb3JlIHNlbmRpbmcgdGhlIHRyYW5z
Zm9ybSBvdmVyIHRvIHRoZSBzaGFkZXIuCi0gICAgdG9HTE1hdHJpeCgmZ2xNYXRyaXhbMF0sIG1f
cHJvamVjdGlvbk1hdHJpeCAqIHJlbmRlck1hdHJpeCk7Cit2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6ZHJhd1F1YWRHZW9tZXRyeShjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0
cml4JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHF1YWRSZWN0LCBpbnQgbWF0cml4
TG9jYXRpb24pCit7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcXVhZE1hdHJpeCA9IGRy
YXdUcmFuc2Zvcm07CisgICAgcXVhZE1hdHJpeC50cmFuc2xhdGUoMC41ICogcXVhZFJlY3Qud2lk
dGgoKSArIHF1YWRSZWN0LngoKSwgMC41ICogcXVhZFJlY3QuaGVpZ2h0KCkgKyBxdWFkUmVjdC55
KCkpOworICAgIHF1YWRNYXRyaXguc2NhbGVOb25Vbmlmb3JtKHF1YWRSZWN0LndpZHRoKCksIHF1
YWRSZWN0LmhlaWdodCgpKTsKIAorICAgIHN0YXRpYyBmbG9hdCBnbE1hdHJpeFsxNl07CisgICAg
dG9HTE1hdHJpeCgmZ2xNYXRyaXhbMF0sIG1fcHJvamVjdGlvbk1hdHJpeCAqIHF1YWRNYXRyaXgp
OwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihtYXRyaXhM
b2NhdGlvbiwgMSwgZmFsc2UsICZnbE1hdHJpeFswXSkpOwogCi0gICAgaWYgKHF1YWRMb2NhdGlv
biAhPSAtMSkgewotICAgICAgICBmbG9hdCBwb2ludFs4XTsKLSAgICAgICAgcG9pbnRbMF0gPSBx
dWFkLnAxKCkueCgpOwotICAgICAgICBwb2ludFsxXSA9IHF1YWQucDEoKS55KCk7Ci0gICAgICAg
IHBvaW50WzJdID0gcXVhZC5wMigpLngoKTsKLSAgICAgICAgcG9pbnRbM10gPSBxdWFkLnAyKCku
eSgpOwotICAgICAgICBwb2ludFs0XSA9IHF1YWQucDMoKS54KCk7Ci0gICAgICAgIHBvaW50WzVd
ID0gcXVhZC5wMygpLnkoKTsKLSAgICAgICAgcG9pbnRbNl0gPSBxdWFkLnA0KCkueCgpOwotICAg
ICAgICBwb2ludFs3XSA9IHF1YWQucDQoKS55KCk7Ci0gICAgICAgIEdMQyhtX2NvbnRleHQsIG1f
Y29udGV4dC0+dW5pZm9ybTJmdihxdWFkTG9jYXRpb24sIDQsIHBvaW50KSk7Ci0gICAgfQotCi0g
ICAgaWYgKGFscGhhTG9jYXRpb24gIT0gLTEpCi0gICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29u
dGV4dC0+dW5pZm9ybTFmKGFscGhhTG9jYXRpb24sIG9wYWNpdHkpKTsKLQogICAgIEdMQyhtX2Nv
bnRleHQsIG1fY29udGV4dC0+ZHJhd0VsZW1lbnRzKEdyYXBoaWNzQ29udGV4dDNEOjpUUklBTkdM
RVMsIDYsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9TSE9SVCwgMCkpOwogfQogCi12b2lk
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKGludCB0ZXh0
dXJlSWQsIGNvbnN0IEludFNpemUmIGJvdW5kcywgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgmIGRyYXdNYXRyaXgpCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weVRleHR1cmVU
b0ZyYW1lYnVmZmVyKGludCB0ZXh0dXJlSWQsIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3TWF0cml4KQogewogICAgIGNvbnN0IFJlbmRlclBh
c3NQcm9ncmFtKiBwcm9ncmFtID0gcmVuZGVyUGFzc1Byb2dyYW0oKTsKIApAQCAtMTIyMSwxMCAr
MTE5MCw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjb3B5VGV4dHVyZVRvRnJhbWVi
dWZmZXIoaW50IHRleHR1cmVJZCwgY29uc3QgSW50U2l6CiAKICAgICBHTEMoY29udGV4dCgpLCBj
b250ZXh0KCktPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CiAgICAgR0xDKGNvbnRl
eHQoKSwgY29udGV4dCgpLT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1w
bGVyTG9jYXRpb24oKSwgMCkpOwotICAgIGRyYXdUZXh0dXJlZFF1YWQoZHJhd01hdHJpeCwgYm91
bmRzLndpZHRoKCksIGJvdW5kcy5oZWlnaHQoKSwgMSwgc2hhcmVkR2VvbWV0cnlRdWFkKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIo
KS5tYXRyaXhMb2NhdGlvbigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAtMSk7CisgICAgc2V0U2hhZGVyT3BhY2l0eSgxLCBwcm9n
cmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24oKSk7CisgICAgZHJhd1F1YWRHZW9t
ZXRyeShkcmF3TWF0cml4LCByZWN0LCBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2Nh
dGlvbigpKTsKIH0KIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmZpbmlzaCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IGNkNWIyY2MyYjI5MjE1Y2UxZWY0NjI0
YzRlYjFjZjQ4NDhiYzkyODcuLjlkZjhiNGNjMGJiMDRiZDcwYTQ4ZGZmMTFjNDY0MGNiYTE5YTVi
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0xMDYsMTAgKzEwNiw2
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wpIE9WRVJSSURF
OwogCi0gICAgdm9pZCBkcmF3VGV4dHVyZWRRdWFkKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIGxheWVyTWF0cml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9h
dCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBGbG9hdFF1YWQmLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF0cml4TG9jYXRpb24sIGludCBhbHBoYUxv
Y2F0aW9uLCBpbnQgcXVhZExvY2F0aW9uKTsKLSAgICB2b2lkIGNvcHlUZXh0dXJlVG9GcmFtZWJ1
ZmZlcihpbnQgdGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGNvbnN0IFdlYktpdDo6
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdNYXRyaXgpOwogICAgIENDUmVzb3VyY2VQcm92
aWRlciogcmVzb3VyY2VQcm92aWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VQcm92aWRl
cjsgfQogCiBwcm90ZWN0ZWQ6CkBAIC0xMzksNiArMTM1LDEyIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkcmF3VGlsZVF1YWQoY29uc3QgQ0NUaWxlRHJhd1F1YWQqKTsKICAgICB2b2lkIGRyYXdZVVZW
aWRlb1F1YWQoY29uc3QgQ0NZVVZWaWRlb0RyYXdRdWFkKik7CiAKKyAgICB2b2lkIHNldFNoYWRl
ck9wYWNpdHkoZmxvYXQgb3BhY2l0eSwgaW50IGFscGhhTG9jYXRpb24pOworICAgIHZvaWQgc2V0
U2hhZGVyRmxvYXRRdWFkKGNvbnN0IEZsb2F0UXVhZCYsIGludCBxdWFkTG9jYXRpb24pOworICAg
IHZvaWQgZHJhd1F1YWRHZW9tZXRyeShjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0
cml4JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHF1YWRSZWN0LCBpbnQgbWF0cml4
TG9jYXRpb24pOworCisgICAgdm9pZCBjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoaW50IHRleHR1
cmVJZCwgY29uc3QgSW50UmVjdCYsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgmIGRyYXdNYXRyaXgpOworCiAgICAgdm9pZCBzZXRTY2lzc29yVG9SZWN0KGNvbnN0IEludFJl
Y3QmKTsKIAogICAgIHZvaWQgc2V0RHJhd0ZyYW1lYnVmZmVyUmVjdChjb25zdCBJbnRSZWN0Jiwg
Ym9vbCBmbGlwWSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154515</attachid>
            <date>2012-07-25 18:56:57 -0700</date>
            <delta_ts>2012-07-27 12:42:12 -0700</delta_ts>
            <desc>Rebased</desc>
            <filename>bug-91823-20120725185646.patch</filename>
            <type>text/plain</type>
            <size>18069</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmU4OGVhN2M4MWFlMDg3
ZmEwZTQwNjYwYjMxZWM4N2FjNDljYjBkMC4uZGFiMzU5YjBmMTA1YWUyNzk0NDcwZWY0ZTI5N2Jj
MzMyMGNkYmFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ0IEBACiAyMDEyLTA3LTE5ICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAKKyAgICAgICAgW2Nocm9taXVtXSBDbGVh
biB1cCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUZXh0dXJlZFF1YWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODIzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpkcmF3VGV4dHVyZWRRdWFkIGhhcyBiZWVuIGFyb3VuZCBmb3JldmVyIGFuZAorICAgICAgICBv
dmVyIHRpbWUgaGFzIGRldmVsb3BlZCBzZXZlcmFsIHByb2JsZW1zOgorICAgICAgICAgLSBDb25m
dXNpbmdseSBuYW1lZCByZWxhdGl2ZSB0byBkcmF3VGV4dHVyZVF1YWQKKyAgICAgICAgIC0gQWxs
IGJ1dCBvbmUgY2FsbGVycyBpZGVudGljYWxseSBtYW5pcHVsYXRlIHRoZSB0cmFuc2Zvcm0gbWF0
cml4CisgICAgICAgICAtIExvdHMgb2Ygb3B0aW9uYWwgcGFyYW1ldGVycyB0aGF0IG9ubHkgZmV3
IGZ1bmN0aW9ucyB1c2UKKworICAgICAgICBUaGlzIHBhdGNoIGJyZWFrcyB1cCBkcmF3VGV4dHVy
ZWRRdWFkIGludG8gc2V0U2hhZGVyT3BhY2l0eSAoZm9yCisgICAgICAgIG9wdGlvbmFsIG9wYWNp
dHkgdmFsdWVzIHNlbnQgdG8gdGhlIHNoYWRlciksIHNldFNoYWRlckZsb2F0UXVhZCAodGhlCisg
ICAgICAgIGZ1bGwgRmxvYXRRdWFkIHVzZWQgYnkgQUEgc2hhZGVycyksIGFuZCBkcmF3UXVhZEdl
b21ldHJ5IChhY3R1YWxseQorICAgICAgICBkcmF3IHRoZSBnZW9tZXRyeSwgYW5kIHdyYXAgdGhl
IHRyYW5zZm9ybSBsb2dpYyB0aGF0IHdhcyBkdXBsaWNhdGVkCisgICAgICAgIGV2ZXJ5d2hlcmUp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0czsgbm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3Q2hl
Y2tlcmJvYXJkUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06
OmRyYXdCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdSZW5kZXJQYXNzUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJl
bmRlcmVyQ2hyb21pdW06OmRyYXdTb2xpZENvbG9yUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUaWxlUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdZVVZWaWRlb1F1YWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3U3RyZWFtVmlkZW9RdWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RleHR1cmVRdWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0lPU3VyZmFjZVF1YWQpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3SGVhZHNVcERpc3Bs
YXkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRTaGFkZXJG
bG9hdFF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRT
aGFkZXJPcGFjaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
ZHJhd1F1YWRHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21p
dW06OmNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAgICAgIChMYXllclJlbmRl
cmVyQ2hyb21pdW0pOgorCisyMDEyLTA3LTE5ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2ds
ZS5jb20+CisKICAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUgcmVkdW5kYW50IHN1cmZhY2Ugb3Jp
Z2luIHRyYW5zZm9ybXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkxODE1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4
IGViZDYxMDIxZDRkZjA1MDhlYWI0MTc3NTI5YzhmMWMxZGE0NzU3MDQuLjYxNzUyOTA0N2FmMzZh
ZjE0YzU0MGIwNGIyZDM2MDc5YmM0NWIxOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmNwcApAQCAtNDkwLDkgKzQ5MCw2IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpkcmF3Q2hlY2tlcmJvYXJkUXVhZChEcmF3aW5nRnJhbWUmIGZyYW1lLCBjb25zdCBDQ0NoCiAg
ICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0o
KSkpOwogCiAgICAgSW50UmVjdCB0aWxlUmVjdCA9IHF1YWQtPnF1YWRSZWN0KCk7Ci0gICAgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXggdGlsZVRyYW5zZm9ybSA9IHF1YWQtPnF1YWRUcmFuc2Zvcm0o
KTsKLSAgICB0aWxlVHJhbnNmb3JtLnRyYW5zbGF0ZSh0aWxlUmVjdC54KCkgKyB0aWxlUmVjdC53
aWR0aCgpIC8gMi4wLCB0aWxlUmVjdC55KCkgKyB0aWxlUmVjdC5oZWlnaHQoKSAvIDIuMCk7Ci0K
ICAgICBmbG9hdCB0ZXhPZmZzZXRYID0gdGlsZVJlY3QueCgpOwogICAgIGZsb2F0IHRleE9mZnNl
dFkgPSB0aWxlUmVjdC55KCk7CiAgICAgZmxvYXQgdGV4U2NhbGVYID0gdGlsZVJlY3Qud2lkdGgo
KTsKQEAgLTUwNCwxMSArNTAxLDggQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdD
aGVja2VyYm9hcmRRdWFkKERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDQ2gKIAogICAgIEdM
Qyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTFmKHByb2dyYW0tPmZyYWdtZW50U2hhZGVy
KCkuZnJlcXVlbmN5TG9jYXRpb24oKSwgZnJlcXVlbmN5KSk7CiAKLSAgICBmbG9hdCBvcGFjaXR5
ID0gcXVhZC0+b3BhY2l0eSgpOwotICAgIGRyYXdUZXh0dXJlZFF1YWQoZnJhbWUsIHRpbGVUcmFu
c2Zvcm0sCi0gICAgICAgICAgICAgICAgICAgICB0aWxlUmVjdC53aWR0aCgpLCB0aWxlUmVjdC5o
ZWlnaHQoKSwgb3BhY2l0eSwgRmxvYXRRdWFkKCksCi0gICAgICAgICAgICAgICAgICAgICBwcm9n
cmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpLAotICAgICAgICAgICAgICAgICAg
ICAgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCksIC0xKTsKKyAgICBz
ZXRTaGFkZXJPcGFjaXR5KHF1YWQtPm9wYWNpdHkoKSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIo
KS5hbHBoYUxvY2F0aW9uKCkpOworICAgIGRyYXdRdWFkR2VvbWV0cnkoZnJhbWUsIHF1YWQtPnF1
YWRUcmFuc2Zvcm0oKSwgcXVhZC0+cXVhZFJlY3QoKSwgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCku
bWF0cml4TG9jYXRpb24oKSk7CiB9CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
RGVidWdCb3JkZXJRdWFkKERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDRGVidWdCb3JkZXJE
cmF3UXVhZCogcXVhZCkKQEAgLTYxMywxMCArNjA3LDcgQEAgUGFzc093blB0cjxDQ1Njb3BlZFRl
eHR1cmU+IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91bmRGaWx0ZXJzKERyYXdp
bmcKICAgICAgICAgZGV2aWNlVG9GcmFtZWJ1ZmZlclRyYW5zZm9ybS50cmFuc2xhdGUocXVhZC0+
cXVhZFJlY3QoKS53aWR0aCgpIC8gMi4wLCBxdWFkLT5xdWFkUmVjdCgpLmhlaWdodCgpIC8gMi4w
KTsKICAgICAgICAgZGV2aWNlVG9GcmFtZWJ1ZmZlclRyYW5zZm9ybS5zY2FsZTNkKHF1YWQtPnF1
YWRSZWN0KCkud2lkdGgoKSwgcXVhZC0+cXVhZFJlY3QoKS5oZWlnaHQoKSwgMSk7CiAgICAgICAg
IGRldmljZVRvRnJhbWVidWZmZXJUcmFuc2Zvcm0ubXVsdGlwbHkoY29udGVudHNEZXZpY2VUcmFu
c2Zvcm0uaW52ZXJzZSgpKTsKLSAgICAgICAgZGV2aWNlVG9GcmFtZWJ1ZmZlclRyYW5zZm9ybS50
cmFuc2xhdGUoZGV2aWNlUmVjdC53aWR0aCgpIC8gMi4wLCBkZXZpY2VSZWN0LmhlaWdodCgpIC8g
Mi4wKTsKLSAgICAgICAgZGV2aWNlVG9GcmFtZWJ1ZmZlclRyYW5zZm9ybS50cmFuc2xhdGUoZGV2
aWNlUmVjdC54KCksIGRldmljZVJlY3QueSgpKTsKLQotICAgICAgICBjb3B5VGV4dHVyZVRvRnJh
bWVidWZmZXIoZnJhbWUsIGZpbHRlcmVkRGV2aWNlQmFja2dyb3VuZFRleHR1cmVJZCwgZGV2aWNl
UmVjdC5zaXplKCksIGRldmljZVRvRnJhbWVidWZmZXJUcmFuc2Zvcm0pOworICAgICAgICBjb3B5
VGV4dHVyZVRvRnJhbWVidWZmZXIoZnJhbWUsIGZpbHRlcmVkRGV2aWNlQmFja2dyb3VuZFRleHR1
cmVJZCwgZGV2aWNlUmVjdCwgZGV2aWNlVG9GcmFtZWJ1ZmZlclRyYW5zZm9ybSk7CiAgICAgfQog
CiAgICAgdXNlUmVuZGVyUGFzcyhmcmFtZSwgdGFyZ2V0UmVuZGVyUGFzcyk7CkBAIC02NjYsNyAr
NjU3LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJQYXNzUXVhZChE
cmF3aW5nRnJhbWUmIGZyYW1lLCBjb25zdCBDQ1JlbmQKICAgICBpZiAoYmFja2dyb3VuZFRleHR1
cmUpIHsKICAgICAgICAgQVNTRVJUKGJhY2tncm91bmRUZXh0dXJlLT5zaXplKCkgPT0gcXVhZC0+
cXVhZFJlY3QoKS5zaXplKCkpOwogICAgICAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQg
bG9jayhtX3Jlc291cmNlUHJvdmlkZXIsIGJhY2tncm91bmRUZXh0dXJlLT5pZCgpKTsKLSAgICAg
ICAgY29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKGZyYW1lLCBsb2NrLnRleHR1cmVJZCgpLCBxdWFk
LT5xdWFkUmVjdCgpLnNpemUoKSwgcmVuZGVyTWF0cml4KTsKKyAgICAgICAgY29weVRleHR1cmVU
b0ZyYW1lYnVmZmVyKGZyYW1lLCBsb2NrLnRleHR1cmVJZCgpLCBxdWFkLT5xdWFkUmVjdCgpLCBx
dWFkLT5xdWFkVHJhbnNmb3JtKCkpOwogICAgIH0KIAogICAgIGJvb2wgY2xpcHBlZCA9IGZhbHNl
OwpAQCAtNzUzLDggKzc0NCwxMCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1Jl
bmRlclBhc3NRdWFkKERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDUmVuZAogICAgIEZsb2F0
UXVhZCBzdXJmYWNlUXVhZCA9IENDTWF0aFV0aWw6Om1hcFF1YWQoY29udGVudHNEZXZpY2VUcmFu
c2Zvcm0uaW52ZXJzZSgpLCBkZXZpY2VMYXllckVkZ2VzLmZsb2F0UXVhZCgpLCBjbGlwcGVkKTsK
ICAgICBBU1NFUlQoIWNsaXBwZWQpOwogCi0gICAgZHJhd1RleHR1cmVkUXVhZChmcmFtZSwgcmVu
ZGVyTWF0cml4LCBxdWFkLT5xdWFkUmVjdCgpLndpZHRoKCksIHF1YWQtPnF1YWRSZWN0KCkuaGVp
Z2h0KCksIHF1YWQtPm9wYWNpdHkoKSwgc3VyZmFjZVF1YWQsCi0gICAgICAgICAgICAgICAgICAg
ICBzaGFkZXJNYXRyaXhMb2NhdGlvbiwgc2hhZGVyQWxwaGFMb2NhdGlvbiwgc2hhZGVyUXVhZExv
Y2F0aW9uKTsKKyAgICBzZXRTaGFkZXJPcGFjaXR5KHF1YWQtPm9wYWNpdHkoKSwgc2hhZGVyQWxw
aGFMb2NhdGlvbik7CisgICAgaWYgKHVzZUFBKQorICAgICAgICBzZXRTaGFkZXJGbG9hdFF1YWQo
c3VyZmFjZVF1YWQsIHNoYWRlclF1YWRMb2NhdGlvbik7CisgICAgZHJhd1F1YWRHZW9tZXRyeShm
cmFtZSwgcXVhZC0+cXVhZFRyYW5zZm9ybSgpLCBxdWFkLT5xdWFkUmVjdCgpLCBzaGFkZXJNYXRy
aXhMb2NhdGlvbik7CiB9CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3U29saWRD
b2xvclF1YWQoRHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgQ0NTb2xpZENvbG9yRHJhd1F1YWQq
IHF1YWQpCkBAIC03NjIsMjEgKzc1NSwxMyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
ZHJhd1NvbGlkQ29sb3JRdWFkKERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDU29saQogICAg
IGNvbnN0IFNvbGlkQ29sb3JQcm9ncmFtKiBwcm9ncmFtID0gc29saWRDb2xvclByb2dyYW0oKTsK
ICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3Jh
bSgpKSk7CiAKLSAgICBJbnRSZWN0IHRpbGVSZWN0ID0gcXVhZC0+cXVhZFJlY3QoKTsKLQotICAg
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRpbGVUcmFuc2Zvcm0gPSBxdWFkLT5xdWFkVHJhbnNm
b3JtKCk7Ci0gICAgdGlsZVRyYW5zZm9ybS50cmFuc2xhdGUodGlsZVJlY3QueCgpICsgdGlsZVJl
Y3Qud2lkdGgoKSAvIDIuMCwgdGlsZVJlY3QueSgpICsgdGlsZVJlY3QuaGVpZ2h0KCkgLyAyLjAp
OwotCiAgICAgU2tDb2xvciBjb2xvciA9IHF1YWQtPmNvbG9yKCk7CiAgICAgZmxvYXQgb3BhY2l0
eSA9IHF1YWQtPm9wYWNpdHkoKTsKICAgICBmbG9hdCBhbHBoYSA9IChTa0NvbG9yR2V0QShjb2xv
cikgLyAyNTUuMCkgKiBvcGFjaXR5OwogCiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51
bmlmb3JtNGYocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5jb2xvckxvY2F0aW9uKCksIChTa0Nv
bG9yR2V0Uihjb2xvcikgLyAyNTUuMCkgKiBhbHBoYSwgKFNrQ29sb3JHZXRHKGNvbG9yKSAvIDI1
NS4wKSAqIGFscGhhLCAoU2tDb2xvckdldEIoY29sb3IpIC8gMjU1LjApICogYWxwaGEsIGFscGhh
KSk7CiAKLSAgICBkcmF3VGV4dHVyZWRRdWFkKGZyYW1lLCB0aWxlVHJhbnNmb3JtLAotICAgICAg
ICAgICAgICAgICAgICAgdGlsZVJlY3Qud2lkdGgoKSwgdGlsZVJlY3QuaGVpZ2h0KCksIDEuMCwg
RmxvYXRRdWFkKCksCi0gICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIo
KS5tYXRyaXhMb2NhdGlvbigpLAotICAgICAgICAgICAgICAgICAgICAgLTEsIC0xKTsKKyAgICBk
cmF3UXVhZEdlb21ldHJ5KGZyYW1lLCBxdWFkLT5xdWFkVHJhbnNmb3JtKCksIHF1YWQtPnF1YWRS
ZWN0KCksIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCkpOwogfQogCiBz
dHJ1Y3QgVGlsZVByb2dyYW1Vbmlmb3JtcyB7CkBAIC04NzgsOSArODYzLDggQEAgdm9pZCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OmRyYXdUaWxlUXVhZChEcmF3aW5nRnJhbWUmIGZyYW1lLCBjb25z
dCBDQ1RpbGVEcmF3UXUKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnRleFBhcmFtZXRl
cmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFX01JTl9GSUxURVIsIHF1YWQtPnRleHR1cmVGaWx0ZXIoKSkpOwogICAgIEdMQyhjb250ZXh0
KCksIGNvbnRleHQoKS0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgcXVhZC0+dGV4dHVyZUZp
bHRlcigpKSk7CiAKLQotICAgIGlmICghY2xpcHBlZCAmJiBxdWFkLT5pc0FudGlhbGlhc2VkKCkp
IHsKLQorICAgIGJvb2wgdXNlQUEgPSAhY2xpcHBlZCAmJiBxdWFkLT5pc0FudGlhbGlhc2VkKCk7
CisgICAgaWYgKHVzZUFBKSB7CiAgICAgICAgIENDTGF5ZXJRdWFkIGRldmljZUxheWVyQm91bmRz
ID0gQ0NMYXllclF1YWQoRmxvYXRRdWFkKGRldmljZUxheWVyUXVhZC5ib3VuZGluZ0JveCgpKSk7
CiAgICAgICAgIGRldmljZUxheWVyQm91bmRzLmluZmxhdGVBbnRpQWxpYXNpbmdEaXN0YW5jZSgp
OwogCkBAIC05NTYsNyArOTQwLDExIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
VGlsZVF1YWQoRHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgQ0NUaWxlRHJhd1F1CiAgICAgLy8g
Tm9ybWFsaXplIHRvIHRpbGVSZWN0LgogICAgIGxvY2FsUXVhZC5zY2FsZSgxLjBmIC8gdGlsZVJl
Y3Qud2lkdGgoKSwgMS4wZiAvIHRpbGVSZWN0LmhlaWdodCgpKTsKIAotICAgIGRyYXdUZXh0dXJl
ZFF1YWQoZnJhbWUsIHF1YWQtPnF1YWRUcmFuc2Zvcm0oKSwgdGlsZVJlY3Qud2lkdGgoKSwgdGls
ZVJlY3QuaGVpZ2h0KCksIHF1YWQtPm9wYWNpdHkoKSwgbG9jYWxRdWFkLCB1bmlmb3Jtcy5tYXRy
aXhMb2NhdGlvbiwgdW5pZm9ybXMuYWxwaGFMb2NhdGlvbiwgdW5pZm9ybXMucG9pbnRMb2NhdGlv
bik7CisgICAgc2V0U2hhZGVyT3BhY2l0eShxdWFkLT5vcGFjaXR5KCksIHVuaWZvcm1zLmFscGhh
TG9jYXRpb24pOworICAgIHNldFNoYWRlckZsb2F0UXVhZChsb2NhbFF1YWQsIHVuaWZvcm1zLnBv
aW50TG9jYXRpb24pOworCisgICAgRmxvYXRSZWN0IGNlbnRlcmVkUmVjdChGbG9hdFBvaW50KC0w
LjUgKiB0aWxlUmVjdC53aWR0aCgpLCAtMC41ICogdGlsZVJlY3QuaGVpZ2h0KCkpLCB0aWxlUmVj
dC5zaXplKCkpOworICAgIGRyYXdRdWFkR2VvbWV0cnkoZnJhbWUsIHF1YWQtPnF1YWRUcmFuc2Zv
cm0oKSwgY2VudGVyZWRSZWN0LCB1bmlmb3Jtcy5tYXRyaXhMb2NhdGlvbik7CiB9CiAKIHZvaWQg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3WVVWVmlkZW9RdWFkKERyYXdpbmdGcmFtZSYgZnJh
bWUsIGNvbnN0IENDWVVWVmlkZW9EcmF3UXVhZCogcXVhZCkKQEAgLTEwMTIsMTIgKzEwMDAsOCBA
QCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1lVVlZpZGVvUXVhZChEcmF3aW5nRnJh
bWUmIGZyYW1lLCBjb25zdCBDQ1lVVlZpZAogICAgIH07CiAgICAgR0xDKGNvbnRleHQoKSwgY29u
dGV4dCgpLT51bmlmb3JtM2Z2KHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkueXV2QWRqTG9jYXRp
b24oKSwgMSwgeXV2QWRqdXN0KSk7CiAKLSAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBxdWFk
VHJhbnNmb3JtID0gcXVhZC0+cXVhZFRyYW5zZm9ybSgpOwotICAgIEludFJlY3QgcXVhZFJlY3Qg
PSBxdWFkLT5xdWFkUmVjdCgpOwotICAgIHF1YWRUcmFuc2Zvcm0udHJhbnNsYXRlKHF1YWRSZWN0
LngoKSArIHF1YWRSZWN0LndpZHRoKCkgLyAyLjAsIHF1YWRSZWN0LnkoKSArIHF1YWRSZWN0Lmhl
aWdodCgpIC8gMi4wKTsKLQotICAgIGRyYXdUZXh0dXJlZFF1YWQoZnJhbWUsIHF1YWRUcmFuc2Zv
cm0sIHF1YWRSZWN0LndpZHRoKCksIHF1YWRSZWN0LmhlaWdodCgpLCBxdWFkLT5vcGFjaXR5KCks
IEZsb2F0UXVhZCgpLAotICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+dmVydGV4U2hhZGVy
KCkubWF0cml4TG9jYXRpb24oKSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0
aW9uKCksIC0xKTsKKyAgICBzZXRTaGFkZXJPcGFjaXR5KHF1YWQtPm9wYWNpdHkoKSwgcHJvZ3Jh
bS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCkpOworICAgIGRyYXdRdWFkR2VvbWV0
cnkoZnJhbWUsIHF1YWQtPnF1YWRUcmFuc2Zvcm0oKSwgcXVhZC0+cXVhZFJlY3QoKSwgcHJvZ3Jh
bS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSk7CiAKICAgICAvLyBSZXNldCBhY3Rp
dmUgdGV4dHVyZSBiYWNrIHRvIHRleHR1cmUgMC4KICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0
KCktPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7CkBAIC0xMDQw
LDEyICsxMDI0LDggQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdTdHJlYW1WaWRl
b1F1YWQoRHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgQ0NTdHIKIAogICAgIEdMQyhjb250ZXh0
KCksIGNvbnRleHQoKS0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxl
ckxvY2F0aW9uKCksIDApKTsKIAotICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHF1YWRUcmFu
c2Zvcm0gPSBxdWFkLT5xdWFkVHJhbnNmb3JtKCk7Ci0gICAgSW50UmVjdCBxdWFkUmVjdCA9IHF1
YWQtPnF1YWRSZWN0KCk7Ci0gICAgcXVhZFRyYW5zZm9ybS50cmFuc2xhdGUocXVhZFJlY3QueCgp
ICsgcXVhZFJlY3Qud2lkdGgoKSAvIDIuMCwgcXVhZFJlY3QueSgpICsgcXVhZFJlY3QuaGVpZ2h0
KCkgLyAyLjApOwotCi0gICAgZHJhd1RleHR1cmVkUXVhZChmcmFtZSwgcXVhZFRyYW5zZm9ybSwg
cXVhZFJlY3Qud2lkdGgoKSwgcXVhZFJlY3QuaGVpZ2h0KCksIHF1YWQtPm9wYWNpdHkoKSwgc2hh
cmVkR2VvbWV0cnlRdWFkKCksCi0gICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT52ZXJ0ZXhT
aGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhh
TG9jYXRpb24oKSwgLTEpOworICAgIHNldFNoYWRlck9wYWNpdHkocXVhZC0+b3BhY2l0eSgpLCBw
cm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24oKSk7CisgICAgZHJhd1F1YWRH
ZW9tZXRyeShmcmFtZSwgcXVhZC0+cXVhZFRyYW5zZm9ybSgpLCBxdWFkLT5xdWFkUmVjdCgpLCBw
cm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpKTsKIH0KIAogc3RydWN0IFRl
eHR1cmVQcm9ncmFtQmluZGluZyB7CkBAIC0xMTA5LDExICsxMDg5LDggQEAgdm9pZCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OmRyYXdUZXh0dXJlUXVhZChEcmF3aW5nRnJhbWUmIGZyYW1lLCBjb25z
dCBDQ1RleHR1cmUKICAgICAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5ibGVuZEZ1bmNT
ZXBhcmF0ZShHcmFwaGljc0NvbnRleHQzRDo6U1JDX0FMUEhBLCBHcmFwaGljc0NvbnRleHQzRDo6
T05FX01JTlVTX1NSQ19BTFBIQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlpFUk8sIEdyYXBoaWNzQ29u
dGV4dDNEOjpPTkUpKTsKICAgICB9CiAKLSAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBxdWFk
VHJhbnNmb3JtID0gcXVhZC0+cXVhZFRyYW5zZm9ybSgpOwotICAgIEludFJlY3QgcXVhZFJlY3Qg
PSBxdWFkLT5xdWFkUmVjdCgpOwotICAgIHF1YWRUcmFuc2Zvcm0udHJhbnNsYXRlKHF1YWRSZWN0
LngoKSArIHF1YWRSZWN0LndpZHRoKCkgLyAyLjAsIHF1YWRSZWN0LnkoKSArIHF1YWRSZWN0Lmhl
aWdodCgpIC8gMi4wKTsKLQotICAgIGRyYXdUZXh0dXJlZFF1YWQoZnJhbWUsIHF1YWRUcmFuc2Zv
cm0sIHF1YWRSZWN0LndpZHRoKCksIHF1YWRSZWN0LmhlaWdodCgpLCBxdWFkLT5vcGFjaXR5KCks
IHNoYXJlZEdlb21ldHJ5UXVhZCgpLCBiaW5kaW5nLm1hdHJpeExvY2F0aW9uLCBiaW5kaW5nLmFs
cGhhTG9jYXRpb24sIC0xKTsKKyAgICBzZXRTaGFkZXJPcGFjaXR5KHF1YWQtPm9wYWNpdHkoKSwg
YmluZGluZy5hbHBoYUxvY2F0aW9uKTsKKyAgICBkcmF3UXVhZEdlb21ldHJ5KGZyYW1lLCBxdWFk
LT5xdWFkVHJhbnNmb3JtKCksIHF1YWQtPnF1YWRSZWN0KCksIGJpbmRpbmcubWF0cml4TG9jYXRp
b24pOwogCiAgICAgaWYgKCFxdWFkLT5wcmVtdWx0aXBsaWVkQWxwaGEoKSkKICAgICAgICAgR0xD
KG1fY29udGV4dCwgbV9jb250ZXh0LT5ibGVuZEZ1bmMoR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORSwg
R3JhcGhpY3NDb250ZXh0M0Q6Ok9ORV9NSU5VU19TUkNfQUxQSEEpKTsKQEAgLTExMzUsMTEgKzEx
MTIsOCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0lPU3VyZmFjZVF1YWQoRHJh
d2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgQ0NJT1N1cgogICAgIEdMQyhjb250ZXh0KCksIGNvbnRl
eHQoKS0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsKICAgICBH
TEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEV4dGVuc2lvbnMzRDo6VEVYVFVS
RV9SRUNUQU5HTEVfQVJCLCBxdWFkLT5pb1N1cmZhY2VUZXh0dXJlSWQoKSkpOwogCi0gICAgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXggcXVhZFRyYW5zZm9ybSA9IHF1YWQtPnF1YWRUcmFuc2Zvcm0o
KTsKLSAgICBJbnRSZWN0IHF1YWRSZWN0ID0gcXVhZC0+cXVhZFJlY3QoKTsKLSAgICBxdWFkVHJh
bnNmb3JtLnRyYW5zbGF0ZShxdWFkUmVjdC54KCkgKyBxdWFkUmVjdC53aWR0aCgpIC8gMi4wLCBx
dWFkUmVjdC55KCkgKyBxdWFkUmVjdC5oZWlnaHQoKSAvIDIuMCk7Ci0KLSAgICBkcmF3VGV4dHVy
ZWRRdWFkKGZyYW1lLCBxdWFkVHJhbnNmb3JtLCBxdWFkUmVjdC53aWR0aCgpLCBxdWFkUmVjdC5o
ZWlnaHQoKSwgcXVhZC0+b3BhY2l0eSgpLCBzaGFyZWRHZW9tZXRyeVF1YWQoKSwgYmluZGluZy5t
YXRyaXhMb2NhdGlvbiwgYmluZGluZy5hbHBoYUxvY2F0aW9uLCAtMSk7CisgICAgc2V0U2hhZGVy
T3BhY2l0eShxdWFkLT5vcGFjaXR5KCksIGJpbmRpbmcuYWxwaGFMb2NhdGlvbik7CisgICAgZHJh
d1F1YWRHZW9tZXRyeShmcmFtZSwgcXVhZC0+cXVhZFRyYW5zZm9ybSgpLCBxdWFkLT5xdWFkUmVj
dCgpLCBiaW5kaW5nLm1hdHJpeExvY2F0aW9uKTsKIAogICAgIEdMQyhjb250ZXh0KCksIGNvbnRl
eHQoKS0+YmluZFRleHR1cmUoRXh0ZW5zaW9uczNEOjpURVhUVVJFX1JFQ1RBTkdMRV9BUkIsIDAp
KTsKIH0KQEAgLTExNzAsNDIgKzExNDQsNDEgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OnRvR0xNYXRyaXgoZmxvYXQqIGZsYXR0ZW5lZCwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb24KICAg
ICBmbGF0dGVuZWRbMTVdID0gbS5tNDQoKTsKIH0KIAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmRyYXdUZXh0dXJlZFF1YWQoRHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgmIGRyYXdNYXRyaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBvcGFjaXR5
LCBjb25zdCBGbG9hdFF1YWQmIHF1YWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgbWF0cml4TG9jYXRpb24sIGludCBhbHBoYUxvY2F0aW9uLCBpbnQg
cXVhZExvY2F0aW9uKQordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldFNoYWRlckZsb2F0
UXVhZChjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGludCBxdWFkTG9jYXRpb24pCiB7Ci0gICAgc3Rh
dGljIGZsb2F0IGdsTWF0cml4WzE2XTsKLQotICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHJl
bmRlck1hdHJpeCA9IGRyYXdNYXRyaXg7CisgICAgQVNTRVJUKHF1YWRMb2NhdGlvbiA+PSAwKTsK
KyAgICBmbG9hdCBwb2ludFs4XTsKKyAgICBwb2ludFswXSA9IHF1YWQucDEoKS54KCk7CisgICAg
cG9pbnRbMV0gPSBxdWFkLnAxKCkueSgpOworICAgIHBvaW50WzJdID0gcXVhZC5wMigpLngoKTsK
KyAgICBwb2ludFszXSA9IHF1YWQucDIoKS55KCk7CisgICAgcG9pbnRbNF0gPSBxdWFkLnAzKCku
eCgpOworICAgIHBvaW50WzVdID0gcXVhZC5wMygpLnkoKTsKKyAgICBwb2ludFs2XSA9IHF1YWQu
cDQoKS54KCk7CisgICAgcG9pbnRbN10gPSBxdWFkLnA0KCkueSgpOworICAgIEdMQyhtX2NvbnRl
eHQsIG1fY29udGV4dC0+dW5pZm9ybTJmdihxdWFkTG9jYXRpb24sIDQsIHBvaW50KSk7Cit9CiAK
LSAgICAvLyBBcHBseSBhIHNjYWxpbmcgZmFjdG9yIHRvIHNpemUgdGhlIHF1YWQgZnJvbSAxeDEg
dG8gaXRzIGludGVuZGVkIHNpemUuCi0gICAgcmVuZGVyTWF0cml4LnNjYWxlM2Qod2lkdGgsIGhl
aWdodCwgMSk7Cit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0U2hhZGVyT3BhY2l0eShm
bG9hdCBvcGFjaXR5LCBpbnQgYWxwaGFMb2NhdGlvbikKK3sKKyAgICBpZiAoYWxwaGFMb2NhdGlv
biAhPSAtMSkKKyAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51bmlmb3JtMWYoYWxw
aGFMb2NhdGlvbiwgb3BhY2l0eSkpOworfQogCi0gICAgLy8gQXBwbHkgdGhlIHByb2plY3Rpb24g
bWF0cml4IGJlZm9yZSBzZW5kaW5nIHRoZSB0cmFuc2Zvcm0gb3ZlciB0byB0aGUgc2hhZGVyLgot
ICAgIHRvR0xNYXRyaXgoJmdsTWF0cml4WzBdLCBmcmFtZS5wcm9qZWN0aW9uTWF0cml4ICogcmVu
ZGVyTWF0cml4KTsKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UXVhZEdlb21ldHJ5
KERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgmIGRyYXdUcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgcXVhZFJlY3QsIGludCBtYXRyaXhM
b2NhdGlvbikKK3sKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBxdWFkTWF0cml4ID0gZHJh
d1RyYW5zZm9ybTsKKyAgICBxdWFkTWF0cml4LnRyYW5zbGF0ZSgwLjUgKiBxdWFkUmVjdC53aWR0
aCgpICsgcXVhZFJlY3QueCgpLCAwLjUgKiBxdWFkUmVjdC5oZWlnaHQoKSArIHF1YWRSZWN0Lnko
KSk7CisgICAgcXVhZE1hdHJpeC5zY2FsZU5vblVuaWZvcm0ocXVhZFJlY3Qud2lkdGgoKSwgcXVh
ZFJlY3QuaGVpZ2h0KCkpOwogCisgICAgc3RhdGljIGZsb2F0IGdsTWF0cml4WzE2XTsKKyAgICB0
b0dMTWF0cml4KCZnbE1hdHJpeFswXSwgZnJhbWUucHJvamVjdGlvbk1hdHJpeCAqIHF1YWRNYXRy
aXgpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihtYXRy
aXhMb2NhdGlvbiwgMSwgZmFsc2UsICZnbE1hdHJpeFswXSkpOwogCi0gICAgaWYgKHF1YWRMb2Nh
dGlvbiAhPSAtMSkgewotICAgICAgICBmbG9hdCBwb2ludFs4XTsKLSAgICAgICAgcG9pbnRbMF0g
PSBxdWFkLnAxKCkueCgpOwotICAgICAgICBwb2ludFsxXSA9IHF1YWQucDEoKS55KCk7Ci0gICAg
ICAgIHBvaW50WzJdID0gcXVhZC5wMigpLngoKTsKLSAgICAgICAgcG9pbnRbM10gPSBxdWFkLnAy
KCkueSgpOwotICAgICAgICBwb2ludFs0XSA9IHF1YWQucDMoKS54KCk7Ci0gICAgICAgIHBvaW50
WzVdID0gcXVhZC5wMygpLnkoKTsKLSAgICAgICAgcG9pbnRbNl0gPSBxdWFkLnA0KCkueCgpOwot
ICAgICAgICBwb2ludFs3XSA9IHF1YWQucDQoKS55KCk7Ci0gICAgICAgIEdMQyhtX2NvbnRleHQs
IG1fY29udGV4dC0+dW5pZm9ybTJmdihxdWFkTG9jYXRpb24sIDQsIHBvaW50KSk7Ci0gICAgfQot
Ci0gICAgaWYgKGFscGhhTG9jYXRpb24gIT0gLTEpCi0gICAgICAgIEdMQyhtX2NvbnRleHQsIG1f
Y29udGV4dC0+dW5pZm9ybTFmKGFscGhhTG9jYXRpb24sIG9wYWNpdHkpKTsKLQogICAgIEdMQyht
X2NvbnRleHQsIG1fY29udGV4dC0+ZHJhd0VsZW1lbnRzKEdyYXBoaWNzQ29udGV4dDNEOjpUUklB
TkdMRVMsIDYsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9TSE9SVCwgMCkpOwogfQogCi12
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKERyYXdp
bmdGcmFtZSYgZnJhbWUsIGludCB0ZXh0dXJlSWQsIGNvbnN0IEludFNpemUmIGJvdW5kcywgY29u
c3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdNYXRyaXgpCit2b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6Y29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKERyYXdpbmdGcmFtZSYgZnJhbWUs
IGludCB0ZXh0dXJlSWQsIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4JiBkcmF3TWF0cml4KQogewogICAgIGNvbnN0IFJlbmRlclBhc3NQcm9ncmFtKiBw
cm9ncmFtID0gcmVuZGVyUGFzc1Byb2dyYW0oKTsKIApAQCAtMTIxOCwxMCArMTE5MSw4IEBAIHZv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoRHJhd2lu
Z0ZyYW1lJiBmcmFtZSwgaW50IHRlCiAKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVz
ZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4
dCgpLT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24o
KSwgMCkpOwotICAgIGRyYXdUZXh0dXJlZFF1YWQoZnJhbWUsIGRyYXdNYXRyaXgsIGJvdW5kcy53
aWR0aCgpLCBib3VuZHMuaGVpZ2h0KCksIDEsIHNoYXJlZEdlb21ldHJ5UXVhZCgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0
cml4TG9jYXRpb24oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dy
YW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLTEpOworICAgIHNldFNoYWRlck9wYWNpdHkoMSwgcHJvZ3JhbS0+
ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCkpOworICAgIGRyYXdRdWFkR2VvbWV0cnko
ZnJhbWUsIGRyYXdNYXRyaXgsIHJlY3QsIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExv
Y2F0aW9uKCkpOwogfQogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZmluaXNoKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggODA3MTBjMWVmMzdhMTAzY2E2MTEz
ZWY5NDRjYTBmY2M3ZWVlNTRkYS4uNjg0MmYwY2M1OTU0YmRmN2ViYzM5ZjZjM2VmOTcxOTQzZTkz
ZGFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTE1MCwxMCArMTUw
LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkcmF3VGlsZVF1YWQoRHJhd2luZ0ZyYW1lJiwgY29u
c3QgQ0NUaWxlRHJhd1F1YWQqKTsKICAgICB2b2lkIGRyYXdZVVZWaWRlb1F1YWQoRHJhd2luZ0Zy
YW1lJiwgY29uc3QgQ0NZVVZWaWRlb0RyYXdRdWFkKik7CiAKLSAgICB2b2lkIGRyYXdUZXh0dXJl
ZFF1YWQoRHJhd2luZ0ZyYW1lJiwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgbGF5ZXJNYXRyaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHdpZHRoLCBm
bG9hdCBoZWlnaHQsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEZsb2F0UXVhZCYsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBtYXRyaXhMb2NhdGlvbiwgaW50IGFscGhhTG9jYXRpb24sIGlu
dCBxdWFkTG9jYXRpb24pOwotICAgIHZvaWQgY29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKERyYXdp
bmdGcmFtZSYsIGludCB0ZXh0dXJlSWQsIGNvbnN0IEludFNpemUmIGJvdW5kcywgY29uc3QgV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd01hdHJpeCk7CisgICAgdm9pZCBzZXRT
aGFkZXJPcGFjaXR5KGZsb2F0IG9wYWNpdHksIGludCBhbHBoYUxvY2F0aW9uKTsKKyAgICB2b2lk
IHNldFNoYWRlckZsb2F0UXVhZChjb25zdCBGbG9hdFF1YWQmLCBpbnQgcXVhZExvY2F0aW9uKTsK
KyAgICB2b2lkIGRyYXdRdWFkR2VvbWV0cnkoRHJhd2luZ0ZyYW1lJiwgY29uc3QgV2ViS2l0OjpX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBx
dWFkUmVjdCwgaW50IG1hdHJpeExvY2F0aW9uKTsKKworICAgIHZvaWQgY29weVRleHR1cmVUb0Zy
YW1lYnVmZmVyKERyYXdpbmdGcmFtZSYsIGludCB0ZXh0dXJlSWQsIGNvbnN0IEludFJlY3QmLCBj
b25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3TWF0cml4KTsKIAogICAg
IHZvaWQgc2V0U2Npc3NvclRvUmVjdChEcmF3aW5nRnJhbWUmLCBjb25zdCBJbnRSZWN0Jik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155024</attachid>
            <date>2012-07-27 12:42:15 -0700</date>
            <delta_ts>2012-07-27 15:31:06 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-91823-20120727124203.patch</filename>
            <type>text/plain</type>
            <size>18434</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzODc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVjODQzNmI1NTkwYWI4
ZjM1NDhmM2I3MmU4NzM2NGE0YTQyYzYwMC4uMzkyYmY5ODdkYWFlZGQ1NzNiN2Q0OWQ0NzUxZGQ1
MzMzN2RiMTRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTA3LTI2ICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBDbGVh
biB1cCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUZXh0dXJlZFF1YWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODIzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCisKKyAgICAgICAgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpkcmF3VGV4dHVyZWRRdWFkIGhhcyBiZWVuIGFyb3VuZCBmb3JldmVyIGFuZAorICAgICAgICBv
dmVyIHRpbWUgaGFzIGRldmVsb3BlZCBzZXZlcmFsIHByb2JsZW1zOgorICAgICAgICAgLSBDb25m
dXNpbmdseSBuYW1lZCByZWxhdGl2ZSB0byBkcmF3VGV4dHVyZVF1YWQKKyAgICAgICAgIC0gQWxs
IGJ1dCBvbmUgY2FsbGVycyBpZGVudGljYWxseSBtYW5pcHVsYXRlIHRoZSB0cmFuc2Zvcm0gbWF0
cml4CisgICAgICAgICAtIExvdHMgb2Ygb3B0aW9uYWwgcGFyYW1ldGVycyB0aGF0IG9ubHkgZmV3
IGZ1bmN0aW9ucyB1c2UKKworICAgICAgICBUaGlzIHBhdGNoIGJyZWFrcyB1cCBkcmF3VGV4dHVy
ZWRRdWFkIGludG8gc2V0U2hhZGVyT3BhY2l0eSAoZm9yCisgICAgICAgIG9wdGlvbmFsIG9wYWNp
dHkgdmFsdWVzIHNlbnQgdG8gdGhlIHNoYWRlciksIHNldFNoYWRlckZsb2F0UXVhZCAodGhlCisg
ICAgICAgIGZ1bGwgRmxvYXRRdWFkIHVzZWQgYnkgQUEgc2hhZGVycyksIGFuZCBkcmF3UXVhZEdl
b21ldHJ5IChhY3R1YWxseQorICAgICAgICBkcmF3IHRoZSBnZW9tZXRyeSwgYW5kIHdyYXAgdGhl
IHRyYW5zZm9ybSBsb2dpYyB0aGF0IHdhcyBkdXBsaWNhdGVkCisgICAgICAgIGV2ZXJ5d2hlcmUp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0czsgbm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3Q2hl
Y2tlcmJvYXJkUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06
OmRyYXdCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdSZW5kZXJQYXNzUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJl
bmRlcmVyQ2hyb21pdW06OmRyYXdTb2xpZENvbG9yUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUaWxlUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdZVVZWaWRlb1F1YWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3U3RyZWFtVmlkZW9RdWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RleHR1cmVRdWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0lPU3VyZmFjZVF1YWQpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3SGVhZHNVcERpc3Bs
YXkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRTaGFkZXJG
bG9hdFF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRT
aGFkZXJPcGFjaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
ZHJhd1F1YWRHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21p
dW06OmNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAgICAgIChMYXllclJlbmRl
cmVyQ2hyb21pdW0pOgorCiAyMDEyLTA3LTI3ICBUaGlhZ28gTWFyY29zIFAuIFNhbnRvcyAgPHRo
aWFnby5zYW50b3NAaW50ZWwuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjEyMzg1Nik6IEJy
ZWFrcyB0aGUgYnVpbGQgd2hlbiBkaXNhYmxpbmcgaW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmNwcAppbmRleCBlYmQ2MTAyMWQ0ZGYwNTA4ZWFiNDE3NzUyOWM4ZjFj
MWRhNDc1NzA0Li5jNGYxMzhhYjcxYzZiYmE1MDBhNWRiMDc0OGNhZTM0MWEzMzE5OGE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTQ5MCw5ICs0OTAsNiBAQCB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0NoZWNrZXJib2FyZFF1YWQoRHJhd2luZ0Zy
YW1lJiBmcmFtZSwgY29uc3QgQ0NDaAogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dXNl
UHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKIAogICAgIEludFJlY3QgdGlsZVJlY3QgPSBx
dWFkLT5xdWFkUmVjdCgpOwotICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRpbGVUcmFuc2Zv
cm0gPSBxdWFkLT5xdWFkVHJhbnNmb3JtKCk7Ci0gICAgdGlsZVRyYW5zZm9ybS50cmFuc2xhdGUo
dGlsZVJlY3QueCgpICsgdGlsZVJlY3Qud2lkdGgoKSAvIDIuMCwgdGlsZVJlY3QueSgpICsgdGls
ZVJlY3QuaGVpZ2h0KCkgLyAyLjApOwotCiAgICAgZmxvYXQgdGV4T2Zmc2V0WCA9IHRpbGVSZWN0
LngoKTsKICAgICBmbG9hdCB0ZXhPZmZzZXRZID0gdGlsZVJlY3QueSgpOwogICAgIGZsb2F0IHRl
eFNjYWxlWCA9IHRpbGVSZWN0LndpZHRoKCk7CkBAIC01MDQsMTEgKzUwMSw4IEBAIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3Q2hlY2tlcmJvYXJkUXVhZChEcmF3aW5nRnJhbWUmIGZy
YW1lLCBjb25zdCBDQ0NoCiAKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVuaWZvcm0x
Zihwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmZyZXF1ZW5jeUxvY2F0aW9uKCksIGZyZXF1ZW5j
eSkpOwogCi0gICAgZmxvYXQgb3BhY2l0eSA9IHF1YWQtPm9wYWNpdHkoKTsKLSAgICBkcmF3VGV4
dHVyZWRRdWFkKGZyYW1lLCB0aWxlVHJhbnNmb3JtLAotICAgICAgICAgICAgICAgICAgICAgdGls
ZVJlY3Qud2lkdGgoKSwgdGlsZVJlY3QuaGVpZ2h0KCksIG9wYWNpdHksIEZsb2F0UXVhZCgpLAot
ICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRp
b24oKSwKLSAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxw
aGFMb2NhdGlvbigpLCAtMSk7CisgICAgc2V0U2hhZGVyT3BhY2l0eShxdWFkLT5vcGFjaXR5KCks
IHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpKTsKKyAgICBkcmF3UXVh
ZEdlb21ldHJ5KGZyYW1lLCBxdWFkLT5xdWFkVHJhbnNmb3JtKCksIHF1YWQtPnF1YWRSZWN0KCks
IHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCkpOwogfQogCiB2b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0RlYnVnQm9yZGVyUXVhZChEcmF3aW5nRnJhbWUmIGZy
YW1lLCBjb25zdCBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQqIHF1YWQpCkBAIC02MTMsMTAgKzYwNyw3
IEBAIFBhc3NPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRy
YXdCYWNrZ3JvdW5kRmlsdGVycyhEcmF3aW5nCiAgICAgICAgIGRldmljZVRvRnJhbWVidWZmZXJU
cmFuc2Zvcm0udHJhbnNsYXRlKHF1YWQtPnF1YWRSZWN0KCkud2lkdGgoKSAvIDIuMCwgcXVhZC0+
cXVhZFJlY3QoKS5oZWlnaHQoKSAvIDIuMCk7CiAgICAgICAgIGRldmljZVRvRnJhbWVidWZmZXJU
cmFuc2Zvcm0uc2NhbGUzZChxdWFkLT5xdWFkUmVjdCgpLndpZHRoKCksIHF1YWQtPnF1YWRSZWN0
KCkuaGVpZ2h0KCksIDEpOwogICAgICAgICBkZXZpY2VUb0ZyYW1lYnVmZmVyVHJhbnNmb3JtLm11
bHRpcGx5KGNvbnRlbnRzRGV2aWNlVHJhbnNmb3JtLmludmVyc2UoKSk7Ci0gICAgICAgIGRldmlj
ZVRvRnJhbWVidWZmZXJUcmFuc2Zvcm0udHJhbnNsYXRlKGRldmljZVJlY3Qud2lkdGgoKSAvIDIu
MCwgZGV2aWNlUmVjdC5oZWlnaHQoKSAvIDIuMCk7Ci0gICAgICAgIGRldmljZVRvRnJhbWVidWZm
ZXJUcmFuc2Zvcm0udHJhbnNsYXRlKGRldmljZVJlY3QueCgpLCBkZXZpY2VSZWN0LnkoKSk7Ci0K
LSAgICAgICAgY29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKGZyYW1lLCBmaWx0ZXJlZERldmljZUJh
Y2tncm91bmRUZXh0dXJlSWQsIGRldmljZVJlY3Quc2l6ZSgpLCBkZXZpY2VUb0ZyYW1lYnVmZmVy
VHJhbnNmb3JtKTsKKyAgICAgICAgY29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKGZyYW1lLCBmaWx0
ZXJlZERldmljZUJhY2tncm91bmRUZXh0dXJlSWQsIGRldmljZVJlY3QsIGRldmljZVRvRnJhbWVi
dWZmZXJUcmFuc2Zvcm0pOwogICAgIH0KIAogICAgIHVzZVJlbmRlclBhc3MoZnJhbWUsIHRhcmdl
dFJlbmRlclBhc3MpOwpAQCAtNjY2LDcgKzY1Nyw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpkcmF3UmVuZGVyUGFzc1F1YWQoRHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgQ0NSZW5k
CiAgICAgaWYgKGJhY2tncm91bmRUZXh0dXJlKSB7CiAgICAgICAgIEFTU0VSVChiYWNrZ3JvdW5k
VGV4dHVyZS0+c2l6ZSgpID09IHF1YWQtPnF1YWRSZWN0KCkuc2l6ZSgpKTsKICAgICAgICAgQ0NT
Y29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkIGxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCBiYWNrZ3Jv
dW5kVGV4dHVyZS0+aWQoKSk7Ci0gICAgICAgIGNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcihmcmFt
ZSwgbG9jay50ZXh0dXJlSWQoKSwgcXVhZC0+cXVhZFJlY3QoKS5zaXplKCksIHJlbmRlck1hdHJp
eCk7CisgICAgICAgIGNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcihmcmFtZSwgbG9jay50ZXh0dXJl
SWQoKSwgcXVhZC0+cXVhZFJlY3QoKSwgcXVhZC0+cXVhZFRyYW5zZm9ybSgpKTsKICAgICB9CiAK
ICAgICBib29sIGNsaXBwZWQgPSBmYWxzZTsKQEAgLTc1Myw4ICs3NDQsOSBAQCB2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKERyYXdpbmdGcmFtZSYgZnJhbWUs
IGNvbnN0IENDUmVuZAogICAgIEZsb2F0UXVhZCBzdXJmYWNlUXVhZCA9IENDTWF0aFV0aWw6Om1h
cFF1YWQoY29udGVudHNEZXZpY2VUcmFuc2Zvcm0uaW52ZXJzZSgpLCBkZXZpY2VMYXllckVkZ2Vz
LmZsb2F0UXVhZCgpLCBjbGlwcGVkKTsKICAgICBBU1NFUlQoIWNsaXBwZWQpOwogCi0gICAgZHJh
d1RleHR1cmVkUXVhZChmcmFtZSwgcmVuZGVyTWF0cml4LCBxdWFkLT5xdWFkUmVjdCgpLndpZHRo
KCksIHF1YWQtPnF1YWRSZWN0KCkuaGVpZ2h0KCksIHF1YWQtPm9wYWNpdHkoKSwgc3VyZmFjZVF1
YWQsCi0gICAgICAgICAgICAgICAgICAgICBzaGFkZXJNYXRyaXhMb2NhdGlvbiwgc2hhZGVyQWxw
aGFMb2NhdGlvbiwgc2hhZGVyUXVhZExvY2F0aW9uKTsKKyAgICBzZXRTaGFkZXJPcGFjaXR5KHF1
YWQtPm9wYWNpdHkoKSwgc2hhZGVyQWxwaGFMb2NhdGlvbik7CisgICAgc2V0U2hhZGVyRmxvYXRR
dWFkKHN1cmZhY2VRdWFkLCBzaGFkZXJRdWFkTG9jYXRpb24pOworICAgIGRyYXdRdWFkR2VvbWV0
cnkoZnJhbWUsIHF1YWQtPnF1YWRUcmFuc2Zvcm0oKSwgcXVhZC0+cXVhZFJlY3QoKSwgc2hhZGVy
TWF0cml4TG9jYXRpb24pOwogfQogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1Nv
bGlkQ29sb3JRdWFkKERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDU29saWRDb2xvckRyYXdR
dWFkKiBxdWFkKQpAQCAtNzYyLDIxICs3NTQsMTMgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmRyYXdTb2xpZENvbG9yUXVhZChEcmF3aW5nRnJhbWUmIGZyYW1lLCBjb25zdCBDQ1NvbGkK
ICAgICBjb25zdCBTb2xpZENvbG9yUHJvZ3JhbSogcHJvZ3JhbSA9IHNvbGlkQ29sb3JQcm9ncmFt
KCk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51c2VQcm9ncmFtKHByb2dyYW0tPnBy
b2dyYW0oKSkpOwogCi0gICAgSW50UmVjdCB0aWxlUmVjdCA9IHF1YWQtPnF1YWRSZWN0KCk7Ci0K
LSAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0aWxlVHJhbnNmb3JtID0gcXVhZC0+cXVhZFRy
YW5zZm9ybSgpOwotICAgIHRpbGVUcmFuc2Zvcm0udHJhbnNsYXRlKHRpbGVSZWN0LngoKSArIHRp
bGVSZWN0LndpZHRoKCkgLyAyLjAsIHRpbGVSZWN0LnkoKSArIHRpbGVSZWN0LmhlaWdodCgpIC8g
Mi4wKTsKLQogICAgIFNrQ29sb3IgY29sb3IgPSBxdWFkLT5jb2xvcigpOwogICAgIGZsb2F0IG9w
YWNpdHkgPSBxdWFkLT5vcGFjaXR5KCk7CiAgICAgZmxvYXQgYWxwaGEgPSAoU2tDb2xvckdldEEo
Y29sb3IpIC8gMjU1LjApICogb3BhY2l0eTsKIAogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQo
KS0+dW5pZm9ybTRmKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuY29sb3JMb2NhdGlvbigpLCAo
U2tDb2xvckdldFIoY29sb3IpIC8gMjU1LjApICogYWxwaGEsIChTa0NvbG9yR2V0Ryhjb2xvcikg
LyAyNTUuMCkgKiBhbHBoYSwgKFNrQ29sb3JHZXRCKGNvbG9yKSAvIDI1NS4wKSAqIGFscGhhLCBh
bHBoYSkpOwogCi0gICAgZHJhd1RleHR1cmVkUXVhZChmcmFtZSwgdGlsZVRyYW5zZm9ybSwKLSAg
ICAgICAgICAgICAgICAgICAgIHRpbGVSZWN0LndpZHRoKCksIHRpbGVSZWN0LmhlaWdodCgpLCAx
LjAsIEZsb2F0UXVhZCgpLAotICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+dmVydGV4U2hh
ZGVyKCkubWF0cml4TG9jYXRpb24oKSwKLSAgICAgICAgICAgICAgICAgICAgIC0xLCAtMSk7Cisg
ICAgZHJhd1F1YWRHZW9tZXRyeShmcmFtZSwgcXVhZC0+cXVhZFRyYW5zZm9ybSgpLCBxdWFkLT5x
dWFkUmVjdCgpLCBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpKTsKIH0K
IAogc3RydWN0IFRpbGVQcm9ncmFtVW5pZm9ybXMgewpAQCAtODc4LDkgKzg2Miw4IEBAIHZvaWQg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGlsZVF1YWQoRHJhd2luZ0ZyYW1lJiBmcmFtZSwg
Y29uc3QgQ0NUaWxlRHJhd1F1CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT50ZXhQYXJh
bWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV9NSU5fRklMVEVSLCBxdWFkLT50ZXh0dXJlRmlsdGVyKCkpKTsKICAgICBHTEMoY29u
dGV4dCgpLCBjb250ZXh0KCktPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIHF1YWQtPnRleHR1
cmVGaWx0ZXIoKSkpOwogCi0KLSAgICBpZiAoIWNsaXBwZWQgJiYgcXVhZC0+aXNBbnRpYWxpYXNl
ZCgpKSB7Ci0KKyAgICBib29sIHVzZUFBID0gIWNsaXBwZWQgJiYgcXVhZC0+aXNBbnRpYWxpYXNl
ZCgpOworICAgIGlmICh1c2VBQSkgewogICAgICAgICBDQ0xheWVyUXVhZCBkZXZpY2VMYXllckJv
dW5kcyA9IENDTGF5ZXJRdWFkKEZsb2F0UXVhZChkZXZpY2VMYXllclF1YWQuYm91bmRpbmdCb3go
KSkpOwogICAgICAgICBkZXZpY2VMYXllckJvdW5kcy5pbmZsYXRlQW50aUFsaWFzaW5nRGlzdGFu
Y2UoKTsKIApAQCAtOTU2LDcgKzkzOSwxNiBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
ZHJhd1RpbGVRdWFkKERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDVGlsZURyYXdRdQogICAg
IC8vIE5vcm1hbGl6ZSB0byB0aWxlUmVjdC4KICAgICBsb2NhbFF1YWQuc2NhbGUoMS4wZiAvIHRp
bGVSZWN0LndpZHRoKCksIDEuMGYgLyB0aWxlUmVjdC5oZWlnaHQoKSk7CiAKLSAgICBkcmF3VGV4
dHVyZWRRdWFkKGZyYW1lLCBxdWFkLT5xdWFkVHJhbnNmb3JtKCksIHRpbGVSZWN0LndpZHRoKCks
IHRpbGVSZWN0LmhlaWdodCgpLCBxdWFkLT5vcGFjaXR5KCksIGxvY2FsUXVhZCwgdW5pZm9ybXMu
bWF0cml4TG9jYXRpb24sIHVuaWZvcm1zLmFscGhhTG9jYXRpb24sIHVuaWZvcm1zLnBvaW50TG9j
YXRpb24pOworICAgIHNldFNoYWRlck9wYWNpdHkocXVhZC0+b3BhY2l0eSgpLCB1bmlmb3Jtcy5h
bHBoYUxvY2F0aW9uKTsKKyAgICBzZXRTaGFkZXJGbG9hdFF1YWQobG9jYWxRdWFkLCB1bmlmb3Jt
cy5wb2ludExvY2F0aW9uKTsKKworICAgIC8vIFRoZSB0aWxlIHF1YWQgc2hhZGVyIGJlaGF2ZXMg
ZGlmZmVyZW50bHkgY29tcGFyZWQgdG8gYWxsIG90aGVyIHNoYWRlcnMuCisgICAgLy8gVGhlIHRy
YW5zZm9ybSBhbmQgdmVydGV4IGRhdGEgYXJlIHVzZWQgdG8gZmlndXJlIG91dCB0aGUgZXh0ZW50
cyB0aGF0IHRoZQorICAgIC8vIHVuLWFudGlhbGlhc2VkIHF1YWQgc2hvdWxkIGhhdmUgYW5kIHdo
aWNoIHZlcnRleCB0aGlzIGlzIGFuZCB0aGUgZmxvYXQKKyAgICAvLyBxdWFkIHBhc3NlZCBpbiB2
aWEgdW5pZm9ybSBpcyB0aGUgYWN0dWFsIGdlb21ldHJ5IHRoYXQgZ2V0cyB1c2VkIHRvIGRyYXcK
KyAgICAvLyBpdC4gVGhpcyBpcyB3aHkgdGhpcyBjZW50ZXJlZCByZWN0IGlzIHVzZWQgYW5kIG5v
dCB0aGUgb3JpZ2luYWwgcXVhZFJlY3QuCisgICAgRmxvYXRSZWN0IGNlbnRlcmVkUmVjdChGbG9h
dFBvaW50KC0wLjUgKiB0aWxlUmVjdC53aWR0aCgpLCAtMC41ICogdGlsZVJlY3QuaGVpZ2h0KCkp
LCB0aWxlUmVjdC5zaXplKCkpOworICAgIGRyYXdRdWFkR2VvbWV0cnkoZnJhbWUsIHF1YWQtPnF1
YWRUcmFuc2Zvcm0oKSwgY2VudGVyZWRSZWN0LCB1bmlmb3Jtcy5tYXRyaXhMb2NhdGlvbik7CiB9
CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3WVVWVmlkZW9RdWFkKERyYXdpbmdG
cmFtZSYgZnJhbWUsIGNvbnN0IENDWVVWVmlkZW9EcmF3UXVhZCogcXVhZCkKQEAgLTEwMTIsMTIg
KzEwMDQsOCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1lVVlZpZGVvUXVhZChE
cmF3aW5nRnJhbWUmIGZyYW1lLCBjb25zdCBDQ1lVVlZpZAogICAgIH07CiAgICAgR0xDKGNvbnRl
eHQoKSwgY29udGV4dCgpLT51bmlmb3JtM2Z2KHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkueXV2
QWRqTG9jYXRpb24oKSwgMSwgeXV2QWRqdXN0KSk7CiAKLSAgICBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBxdWFkVHJhbnNmb3JtID0gcXVhZC0+cXVhZFRyYW5zZm9ybSgpOwotICAgIEludFJlY3Qg
cXVhZFJlY3QgPSBxdWFkLT5xdWFkUmVjdCgpOwotICAgIHF1YWRUcmFuc2Zvcm0udHJhbnNsYXRl
KHF1YWRSZWN0LngoKSArIHF1YWRSZWN0LndpZHRoKCkgLyAyLjAsIHF1YWRSZWN0LnkoKSArIHF1
YWRSZWN0LmhlaWdodCgpIC8gMi4wKTsKLQotICAgIGRyYXdUZXh0dXJlZFF1YWQoZnJhbWUsIHF1
YWRUcmFuc2Zvcm0sIHF1YWRSZWN0LndpZHRoKCksIHF1YWRSZWN0LmhlaWdodCgpLCBxdWFkLT5v
cGFjaXR5KCksIEZsb2F0UXVhZCgpLAotICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+dmVy
dGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5h
bHBoYUxvY2F0aW9uKCksIC0xKTsKKyAgICBzZXRTaGFkZXJPcGFjaXR5KHF1YWQtPm9wYWNpdHko
KSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCkpOworICAgIGRyYXdR
dWFkR2VvbWV0cnkoZnJhbWUsIHF1YWQtPnF1YWRUcmFuc2Zvcm0oKSwgcXVhZC0+cXVhZFJlY3Qo
KSwgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSk7CiAKICAgICAvLyBS
ZXNldCBhY3RpdmUgdGV4dHVyZSBiYWNrIHRvIHRleHR1cmUgMC4KICAgICBHTEMoY29udGV4dCgp
LCBjb250ZXh0KCktPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7
CkBAIC0xMDQwLDEyICsxMDI4LDggQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdT
dHJlYW1WaWRlb1F1YWQoRHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgQ0NTdHIKIAogICAgIEdM
Qyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVy
KCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKIAotICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4
IHF1YWRUcmFuc2Zvcm0gPSBxdWFkLT5xdWFkVHJhbnNmb3JtKCk7Ci0gICAgSW50UmVjdCBxdWFk
UmVjdCA9IHF1YWQtPnF1YWRSZWN0KCk7Ci0gICAgcXVhZFRyYW5zZm9ybS50cmFuc2xhdGUocXVh
ZFJlY3QueCgpICsgcXVhZFJlY3Qud2lkdGgoKSAvIDIuMCwgcXVhZFJlY3QueSgpICsgcXVhZFJl
Y3QuaGVpZ2h0KCkgLyAyLjApOwotCi0gICAgZHJhd1RleHR1cmVkUXVhZChmcmFtZSwgcXVhZFRy
YW5zZm9ybSwgcXVhZFJlY3Qud2lkdGgoKSwgcXVhZFJlY3QuaGVpZ2h0KCksIHF1YWQtPm9wYWNp
dHkoKSwgc2hhcmVkR2VvbWV0cnlRdWFkKCksCi0gICAgICAgICAgICAgICAgICAgICBwcm9ncmFt
LT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRl
cigpLmFscGhhTG9jYXRpb24oKSwgLTEpOworICAgIHNldFNoYWRlck9wYWNpdHkocXVhZC0+b3Bh
Y2l0eSgpLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24oKSk7CisgICAg
ZHJhd1F1YWRHZW9tZXRyeShmcmFtZSwgcXVhZC0+cXVhZFRyYW5zZm9ybSgpLCBxdWFkLT5xdWFk
UmVjdCgpLCBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpKTsKIH0KIAog
c3RydWN0IFRleHR1cmVQcm9ncmFtQmluZGluZyB7CkBAIC0xMTA5LDExICsxMDkzLDggQEAgdm9p
ZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUZXh0dXJlUXVhZChEcmF3aW5nRnJhbWUmIGZy
YW1lLCBjb25zdCBDQ1RleHR1cmUKICAgICAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5i
bGVuZEZ1bmNTZXBhcmF0ZShHcmFwaGljc0NvbnRleHQzRDo6U1JDX0FMUEhBLCBHcmFwaGljc0Nv
bnRleHQzRDo6T05FX01JTlVTX1NSQ19BTFBIQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlpFUk8sIEdy
YXBoaWNzQ29udGV4dDNEOjpPTkUpKTsKICAgICB9CiAKLSAgICBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBxdWFkVHJhbnNmb3JtID0gcXVhZC0+cXVhZFRyYW5zZm9ybSgpOwotICAgIEludFJlY3Qg
cXVhZFJlY3QgPSBxdWFkLT5xdWFkUmVjdCgpOwotICAgIHF1YWRUcmFuc2Zvcm0udHJhbnNsYXRl
KHF1YWRSZWN0LngoKSArIHF1YWRSZWN0LndpZHRoKCkgLyAyLjAsIHF1YWRSZWN0LnkoKSArIHF1
YWRSZWN0LmhlaWdodCgpIC8gMi4wKTsKLQotICAgIGRyYXdUZXh0dXJlZFF1YWQoZnJhbWUsIHF1
YWRUcmFuc2Zvcm0sIHF1YWRSZWN0LndpZHRoKCksIHF1YWRSZWN0LmhlaWdodCgpLCBxdWFkLT5v
cGFjaXR5KCksIHNoYXJlZEdlb21ldHJ5UXVhZCgpLCBiaW5kaW5nLm1hdHJpeExvY2F0aW9uLCBi
aW5kaW5nLmFscGhhTG9jYXRpb24sIC0xKTsKKyAgICBzZXRTaGFkZXJPcGFjaXR5KHF1YWQtPm9w
YWNpdHkoKSwgYmluZGluZy5hbHBoYUxvY2F0aW9uKTsKKyAgICBkcmF3UXVhZEdlb21ldHJ5KGZy
YW1lLCBxdWFkLT5xdWFkVHJhbnNmb3JtKCksIHF1YWQtPnF1YWRSZWN0KCksIGJpbmRpbmcubWF0
cml4TG9jYXRpb24pOwogCiAgICAgaWYgKCFxdWFkLT5wcmVtdWx0aXBsaWVkQWxwaGEoKSkKICAg
ICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5ibGVuZEZ1bmMoR3JhcGhpY3NDb250ZXh0
M0Q6Ok9ORSwgR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORV9NSU5VU19TUkNfQUxQSEEpKTsKQEAgLTEx
MzUsMTEgKzExMTYsOCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0lPU3VyZmFj
ZVF1YWQoRHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgQ0NJT1N1cgogICAgIEdMQyhjb250ZXh0
KCksIGNvbnRleHQoKS0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTAp
KTsKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEV4dGVuc2lvbnMz
RDo6VEVYVFVSRV9SRUNUQU5HTEVfQVJCLCBxdWFkLT5pb1N1cmZhY2VUZXh0dXJlSWQoKSkpOwog
Ci0gICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcXVhZFRyYW5zZm9ybSA9IHF1YWQtPnF1YWRU
cmFuc2Zvcm0oKTsKLSAgICBJbnRSZWN0IHF1YWRSZWN0ID0gcXVhZC0+cXVhZFJlY3QoKTsKLSAg
ICBxdWFkVHJhbnNmb3JtLnRyYW5zbGF0ZShxdWFkUmVjdC54KCkgKyBxdWFkUmVjdC53aWR0aCgp
IC8gMi4wLCBxdWFkUmVjdC55KCkgKyBxdWFkUmVjdC5oZWlnaHQoKSAvIDIuMCk7Ci0KLSAgICBk
cmF3VGV4dHVyZWRRdWFkKGZyYW1lLCBxdWFkVHJhbnNmb3JtLCBxdWFkUmVjdC53aWR0aCgpLCBx
dWFkUmVjdC5oZWlnaHQoKSwgcXVhZC0+b3BhY2l0eSgpLCBzaGFyZWRHZW9tZXRyeVF1YWQoKSwg
YmluZGluZy5tYXRyaXhMb2NhdGlvbiwgYmluZGluZy5hbHBoYUxvY2F0aW9uLCAtMSk7CisgICAg
c2V0U2hhZGVyT3BhY2l0eShxdWFkLT5vcGFjaXR5KCksIGJpbmRpbmcuYWxwaGFMb2NhdGlvbik7
CisgICAgZHJhd1F1YWRHZW9tZXRyeShmcmFtZSwgcXVhZC0+cXVhZFRyYW5zZm9ybSgpLCBxdWFk
LT5xdWFkUmVjdCgpLCBiaW5kaW5nLm1hdHJpeExvY2F0aW9uKTsKIAogICAgIEdMQyhjb250ZXh0
KCksIGNvbnRleHQoKS0+YmluZFRleHR1cmUoRXh0ZW5zaW9uczNEOjpURVhUVVJFX1JFQ1RBTkdM
RV9BUkIsIDApKTsKIH0KQEAgLTExNzAsNDIgKzExNDgsNDMgQEAgdm9pZCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OnRvR0xNYXRyaXgoZmxvYXQqIGZsYXR0ZW5lZCwgY29uc3QgV2ViVHJhbnNmb3Jt
YXRpb24KICAgICBmbGF0dGVuZWRbMTVdID0gbS5tNDQoKTsKIH0KIAotdm9pZCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRyYXdUZXh0dXJlZFF1YWQoRHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3Qg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdNYXRyaXgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9h
dCBvcGFjaXR5LCBjb25zdCBGbG9hdFF1YWQmIHF1YWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF0cml4TG9jYXRpb24sIGludCBhbHBoYUxvY2F0
aW9uLCBpbnQgcXVhZExvY2F0aW9uKQordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldFNo
YWRlckZsb2F0UXVhZChjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGludCBxdWFkTG9jYXRpb24pCiB7
Ci0gICAgc3RhdGljIGZsb2F0IGdsTWF0cml4WzE2XTsKKyAgICBpZiAocXVhZExvY2F0aW9uID09
IC0xKQorICAgICAgICByZXR1cm47CiAKLSAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZW5k
ZXJNYXRyaXggPSBkcmF3TWF0cml4OworICAgIGZsb2F0IHBvaW50WzhdOworICAgIHBvaW50WzBd
ID0gcXVhZC5wMSgpLngoKTsKKyAgICBwb2ludFsxXSA9IHF1YWQucDEoKS55KCk7CisgICAgcG9p
bnRbMl0gPSBxdWFkLnAyKCkueCgpOworICAgIHBvaW50WzNdID0gcXVhZC5wMigpLnkoKTsKKyAg
ICBwb2ludFs0XSA9IHF1YWQucDMoKS54KCk7CisgICAgcG9pbnRbNV0gPSBxdWFkLnAzKCkueSgp
OworICAgIHBvaW50WzZdID0gcXVhZC5wNCgpLngoKTsKKyAgICBwb2ludFs3XSA9IHF1YWQucDQo
KS55KCk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51bmlmb3JtMmZ2KHF1YWRMb2Nh
dGlvbiwgNCwgcG9pbnQpKTsKK30KIAotICAgIC8vIEFwcGx5IGEgc2NhbGluZyBmYWN0b3IgdG8g
c2l6ZSB0aGUgcXVhZCBmcm9tIDF4MSB0byBpdHMgaW50ZW5kZWQgc2l6ZS4KLSAgICByZW5kZXJN
YXRyaXguc2NhbGUzZCh3aWR0aCwgaGVpZ2h0LCAxKTsKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpzZXRTaGFkZXJPcGFjaXR5KGZsb2F0IG9wYWNpdHksIGludCBhbHBoYUxvY2F0aW9uKQor
eworICAgIGlmIChhbHBoYUxvY2F0aW9uICE9IC0xKQorICAgICAgICBHTEMobV9jb250ZXh0LCBt
X2NvbnRleHQtPnVuaWZvcm0xZihhbHBoYUxvY2F0aW9uLCBvcGFjaXR5KSk7Cit9CiAKLSAgICAv
LyBBcHBseSB0aGUgcHJvamVjdGlvbiBtYXRyaXggYmVmb3JlIHNlbmRpbmcgdGhlIHRyYW5zZm9y
bSBvdmVyIHRvIHRoZSBzaGFkZXIuCi0gICAgdG9HTE1hdHJpeCgmZ2xNYXRyaXhbMF0sIGZyYW1l
LnByb2plY3Rpb25NYXRyaXggKiByZW5kZXJNYXRyaXgpOwordm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmRyYXdRdWFkR2VvbWV0cnkoRHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgV2ViS2l0
OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0
JiBxdWFkUmVjdCwgaW50IG1hdHJpeExvY2F0aW9uKQoreworICAgIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4IHF1YWRNYXRyaXggPSBkcmF3VHJhbnNmb3JtOworICAgIHF1YWRNYXRyaXgudHJhbnNs
YXRlKDAuNSAqIHF1YWRSZWN0LndpZHRoKCkgKyBxdWFkUmVjdC54KCksIDAuNSAqIHF1YWRSZWN0
LmhlaWdodCgpICsgcXVhZFJlY3QueSgpKTsKKyAgICBxdWFkTWF0cml4LnNjYWxlTm9uVW5pZm9y
bShxdWFkUmVjdC53aWR0aCgpLCBxdWFkUmVjdC5oZWlnaHQoKSk7CiAKKyAgICBzdGF0aWMgZmxv
YXQgZ2xNYXRyaXhbMTZdOworICAgIHRvR0xNYXRyaXgoJmdsTWF0cml4WzBdLCBmcmFtZS5wcm9q
ZWN0aW9uTWF0cml4ICogcXVhZE1hdHJpeCk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0
LT51bmlmb3JtTWF0cml4NGZ2KG1hdHJpeExvY2F0aW9uLCAxLCBmYWxzZSwgJmdsTWF0cml4WzBd
KSk7CiAKLSAgICBpZiAocXVhZExvY2F0aW9uICE9IC0xKSB7Ci0gICAgICAgIGZsb2F0IHBvaW50
WzhdOwotICAgICAgICBwb2ludFswXSA9IHF1YWQucDEoKS54KCk7Ci0gICAgICAgIHBvaW50WzFd
ID0gcXVhZC5wMSgpLnkoKTsKLSAgICAgICAgcG9pbnRbMl0gPSBxdWFkLnAyKCkueCgpOwotICAg
ICAgICBwb2ludFszXSA9IHF1YWQucDIoKS55KCk7Ci0gICAgICAgIHBvaW50WzRdID0gcXVhZC5w
MygpLngoKTsKLSAgICAgICAgcG9pbnRbNV0gPSBxdWFkLnAzKCkueSgpOwotICAgICAgICBwb2lu
dFs2XSA9IHF1YWQucDQoKS54KCk7Ci0gICAgICAgIHBvaW50WzddID0gcXVhZC5wNCgpLnkoKTsK
LSAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51bmlmb3JtMmZ2KHF1YWRMb2NhdGlv
biwgNCwgcG9pbnQpKTsKLSAgICB9Ci0KLSAgICBpZiAoYWxwaGFMb2NhdGlvbiAhPSAtMSkKLSAg
ICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51bmlmb3JtMWYoYWxwaGFMb2NhdGlvbiwg
b3BhY2l0eSkpOwotCiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kcmF3RWxlbWVudHMo
R3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFOR0xFUywgNiwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lH
TkVEX1NIT1JULCAwKSk7CiB9CiAKLXZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjb3B5VGV4
dHVyZVRvRnJhbWVidWZmZXIoRHJhd2luZ0ZyYW1lJiBmcmFtZSwgaW50IHRleHR1cmVJZCwgY29u
c3QgSW50U2l6ZSYgYm91bmRzLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd01h
dHJpeCkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjb3B5VGV4dHVyZVRvRnJhbWVidWZm
ZXIoRHJhd2luZ0ZyYW1lJiBmcmFtZSwgaW50IHRleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgcmVj
dCwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdNYXRyaXgpCiB7CiAgICAgY29u
c3QgUmVuZGVyUGFzc1Byb2dyYW0qIHByb2dyYW0gPSByZW5kZXJQYXNzUHJvZ3JhbSgpOwogCkBA
IC0xMjE4LDEwICsxMTk3LDggQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvcHlUZXh0
dXJlVG9GcmFtZWJ1ZmZlcihEcmF3aW5nRnJhbWUmIGZyYW1lLCBpbnQgdGUKIAogICAgIEdMQyhj
b250ZXh0KCksIGNvbnRleHQoKS0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKICAg
ICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVudFNo
YWRlcigpLnNhbXBsZXJMb2NhdGlvbigpLCAwKSk7Ci0gICAgZHJhd1RleHR1cmVkUXVhZChmcmFt
ZSwgZHJhd01hdHJpeCwgYm91bmRzLndpZHRoKCksIGJvdW5kcy5oZWlnaHQoKSwgMSwgc2hhcmVk
R2VvbWV0cnlRdWFkKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9n
cmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9u
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSk7CisgICAgc2V0U2hh
ZGVyT3BhY2l0eSgxLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24oKSk7
CisgICAgZHJhd1F1YWRHZW9tZXRyeShmcmFtZSwgZHJhd01hdHJpeCwgcmVjdCwgcHJvZ3JhbS0+
dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSk7CiB9CiAKIHZvaWQgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpmaW5pc2goKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRl
eCA4MDcxMGMxZWYzN2ExMDNjYTYxMTNlZjk0NGNhMGZjYzdlZWU1NGRhLi42ODQyZjBjYzU5NTRi
ZGY3ZWJjMzlmNmMzZWY5NzE5NDNlOTNkYWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uaApAQCAtMTUwLDEwICsxNTAsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRyYXdUaWxl
UXVhZChEcmF3aW5nRnJhbWUmLCBjb25zdCBDQ1RpbGVEcmF3UXVhZCopOwogICAgIHZvaWQgZHJh
d1lVVlZpZGVvUXVhZChEcmF3aW5nRnJhbWUmLCBjb25zdCBDQ1lVVlZpZGVvRHJhd1F1YWQqKTsK
IAotICAgIHZvaWQgZHJhd1RleHR1cmVkUXVhZChEcmF3aW5nRnJhbWUmLCBjb25zdCBXZWJLaXQ6
OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBsYXllck1hdHJpeCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgb3BhY2l0eSwgY29uc3Qg
RmxvYXRRdWFkJiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1hdHJpeExvY2F0aW9u
LCBpbnQgYWxwaGFMb2NhdGlvbiwgaW50IHF1YWRMb2NhdGlvbik7Ci0gICAgdm9pZCBjb3B5VGV4
dHVyZVRvRnJhbWVidWZmZXIoRHJhd2luZ0ZyYW1lJiwgaW50IHRleHR1cmVJZCwgY29uc3QgSW50
U2l6ZSYgYm91bmRzLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3
TWF0cml4KTsKKyAgICB2b2lkIHNldFNoYWRlck9wYWNpdHkoZmxvYXQgb3BhY2l0eSwgaW50IGFs
cGhhTG9jYXRpb24pOworICAgIHZvaWQgc2V0U2hhZGVyRmxvYXRRdWFkKGNvbnN0IEZsb2F0UXVh
ZCYsIGludCBxdWFkTG9jYXRpb24pOworICAgIHZvaWQgZHJhd1F1YWRHZW9tZXRyeShEcmF3aW5n
RnJhbWUmLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNm
b3JtLCBjb25zdCBGbG9hdFJlY3QmIHF1YWRSZWN0LCBpbnQgbWF0cml4TG9jYXRpb24pOworCisg
ICAgdm9pZCBjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoRHJhd2luZ0ZyYW1lJiwgaW50IHRleHR1
cmVJZCwgY29uc3QgSW50UmVjdCYsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgmIGRyYXdNYXRyaXgpOwogCiAgICAgdm9pZCBzZXRTY2lzc29yVG9SZWN0KERyYXdpbmdGcmFt
ZSYsIGNvbnN0IEludFJlY3QmKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>