<?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>70454</bug_id>
          
          <creation_ts>2011-10-19 16:52:28 -0700</creation_ts>
          <short_desc>[chromium] Batch up texture uploads so that they can be updated incrementally</short_desc>
          <delta_ts>2011-10-25 10:44:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adrienne Walker">enne</reporter>
          <assigned_to name="Adrienne Walker">enne</assigned_to>
          <cc>aelias</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>487136</commentid>
    <comment_count>0</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-10-19 16:52:28 -0700</bug_when>
    <thetext>[chromium] Batch up texture uploads so that they can be updated incrementally</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487139</commentid>
    <comment_count>1</comment_count>
      <attachid>111695</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-10-19 16:53:35 -0700</bug_when>
    <thetext>Created attachment 111695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487155</commentid>
    <comment_count>2</comment_count>
      <attachid>111695</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-10-19 17:07:07 -0700</bug_when>
    <thetext>Comment on attachment 111695
Patch

Work in progress patch.

If we want to interleave input and drawing during a commit, we probably need something like this.  I figure a class than can collect all the rects will have a better chance of estimating upload times in the GPU process, if we assume that it&apos;s proportional to pixels uploaded.  Insert lots of hand-waving here.

Right now CCTextureUpdater just has an updateAllTextures function, but it&apos;d be easy enough to expose a way to partially iterate through them when needed.

One concern is that maybe this is the wrong architectural approach to upload textures while still having the compositor thread be responsive.  James suggested something like using multiple contexts, but I&apos;m not totally sure I trust the driver to handle that responsibly on all platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487180</commentid>
    <comment_count>3</comment_count>
      <attachid>111695</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-19 17:45:30 -0700</bug_when>
    <thetext>Comment on attachment 111695
Patch

Attachment 111695 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10181072</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487331</commentid>
    <comment_count>4</comment_count>
      <attachid>111695</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-19 22:18:24 -0700</bug_when>
    <thetext>Comment on attachment 111695
Patch

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

&gt; Source/WebCore/WebCore.gypi:3547
&gt; +            &apos;platform/graphics/chromium/cc/CCTextureUpdater.cpp&apos;,
&gt; +            &apos;platform/graphics/chromium/cc/CCTextureUpdater.h&apos;,

i think you forgot to git add these files, they aren&apos;t showing up in the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487722</commentid>
    <comment_count>5</comment_count>
      <attachid>111809</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-10-20 11:21:18 -0700</bug_when>
    <thetext>Created attachment 111809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487723</commentid>
    <comment_count>6</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-10-20 11:21:47 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created an attachment (id=111809) [details]
&gt; Patch

Haha, whoops.  Not that the missing class was very interesting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488000</commentid>
    <comment_count>7</comment_count>
      <attachid>111873</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-10-20 16:48:51 -0700</bug_when>
    <thetext>Created attachment 111873
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488051</commentid>
    <comment_count>8</comment_count>
      <attachid>111873</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-10-20 17:59:44 -0700</bug_when>
    <thetext>Comment on attachment 111873
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp:156
&gt; +        m_layerTreeHost-&gt;beginCommitOnCCThread(m_layerTreeHostImpl.get());

Random aside: I just renamed the OnCCThread suffixes to onImplThread for clarity.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:421
&gt; +    m_layerTreeHost-&gt;updateCompositorResources(m_layerTreeHostImpl-&gt;context(), m_layerTreeHostImpl-&gt;contentsTextureAllocator(), updater);

updateCompositorResources really just gets the list of resources to update, right?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:422
&gt; +    updater.updateAllTextures(m_layerTreeHostImpl-&gt;context(), m_layerTreeHostImpl-&gt;contentsTextureAllocator());

I guess your next step is to factor this to be something like updater.hasMore() { updater.updateMoreTextures(..., 6); }?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488429</commentid>
    <comment_count>9</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-10-21 09:14:41 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 111873 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=111873&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp:156
&gt; &gt; +        m_layerTreeHost-&gt;beginCommitOnCCThread(m_layerTreeHostImpl.get());
&gt; 
&gt; Random aside: I just renamed the OnCCThread suffixes to onImplThread for clarity.

Thanks for the heads up.  I&apos;ll rename them.  It looks like this patch doesn&apos;t apply to ToT anyway.

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:421
&gt; &gt; +    m_layerTreeHost-&gt;updateCompositorResources(m_layerTreeHostImpl-&gt;context(), m_layerTreeHostImpl-&gt;contentsTextureAllocator(), updater);
&gt; 
&gt; updateCompositorResources really just gets the list of resources to update, right?

Is this a &quot;so it shouldn&apos;t be called update&quot; suggestion? ;)

Unfortunately, VideoLayerChromium still does the upload in updateCompositorResources.  I considering converting VideoLayerChromium to use a texture updater and the tex map sub image class.  That class is also a little bit weird because you have to tell the video frame provider when you&apos;re done copying bits out of the frame, so there&apos;s this additional post-upload cleanup step that none of the other texture updaters have to deal with.  On top of that, on platforms where you have hardware video acceleration, this path gets skipped anyway.

In short, I punted, updateCompositorResources now updates some resources and collects others for deferred updating.

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:422
&gt; &gt; +    updater.updateAllTextures(m_layerTreeHostImpl-&gt;context(), m_layerTreeHostImpl-&gt;contentsTextureAllocator());
&gt; 
&gt; I guess your next step is to factor this to be something like updater.hasMore() { updater.updateMoreTextures(..., 6); }?

Would it be helpful for you if I just landed that change now with this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488559</commentid>
    <comment_count>10</comment_count>
      <attachid>112001</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-10-21 12:22:41 -0700</bug_when>
    <thetext>Created attachment 112001
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488601</commentid>
    <comment_count>11</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2011-10-21 13:21:36 -0700</bug_when>
    <thetext>LGTM.  Seems like a useful initial refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489555</commentid>
    <comment_count>12</comment_count>
      <attachid>112001</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-24 13:13:03 -0700</bug_when>
    <thetext>Comment on attachment 112001
Patch

Could you fold the TextureAllocator into the CCTextureUpdater?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489681</commentid>
    <comment_count>13</comment_count>
      <attachid>112258</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-10-24 15:05:20 -0700</bug_when>
    <thetext>Created attachment 112258
fold allocator into updater</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489768</commentid>
    <comment_count>14</comment_count>
      <attachid>112258</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-24 16:45:42 -0700</bug_when>
    <thetext>Comment on attachment 112258
fold allocator into updater

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490135</commentid>
    <comment_count>15</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-10-25 10:44:01 -0700</bug_when>
    <thetext>Committed r98360: &lt;http://trac.webkit.org/changeset/98360&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111695</attachid>
            <date>2011-10-19 16:53:35 -0700</date>
            <delta_ts>2011-10-20 11:21:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70454-20111019165334.patch</filename>
            <type>text/plain</type>
            <size>22498</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc4NjkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmZThjY2FjYTViNWViN2Yy
YjZhMTVmNjM2YTExM2EwZTdmYmRjNzU4Li5mYzcwNWQ3YzZhNGU2Y2VkNzNkNWY1ODJhNGMwMjEy
ZGE2M2ExYjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMTAtMTkgIEFkcmll
bm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEJhdGNo
IHVwIHRleHR1cmUgdXBsb2FkcyBzbyB0aGF0IHRoZXkgY2FuIGJlIHVwZGF0ZWQgaW5jcmVtZW50
YWxseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA0
NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMy
RExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9t
aXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpM
YXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9W
aWRlb0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNo
cm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0OjpiZWdpbkNvbW1pdE9uQ0NUaHJlYWQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpmaW5pc2hDb21taXRPbkNDVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5OjpzZXRO
ZWVkc0NvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0Nv
bW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21taXRJZk5l
ZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6Y29tbWl0
T25DQ1RocmVhZCk6CisKIDIwMTEtMTAtMTkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjogd29ya2VyIGluc3BlY3RvciB0aXRs
ZSBzaG91bGQgY29udGFpbiB3b3JrZXIgVVJMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOTI3NzU5NjIw
N2VmZWU2MDMxNDIxOWY3ZjA3YWNmNGNhNjNmNDZjZS4uMGU1MzI1NjhlNDdjY2Y4YjU3ZGE3YzE1
MTFmNmM3ZDM2YWEwMTU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzU0Myw2ICszNTQzLDggQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbENvbnRy
b2xsZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAnLAorICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWQuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcAppbmRleCBmY2FjMjYy
OTZkZjhlZGM5ODQ4MTcyZDQ2NDY1OWI0YjBhZDEyNDdlLi5jOTBkNjM4NWEwNDkwMzdmN2MxN2Ey
ZWQyMTAzYTcyZWM3Yzk3Yzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5j
cHAKQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBDYW52YXMyRExheWVyQ2hyb21pdW06OmRyYXdzQ29u
dGVudCgpIGNvbnN0CiAgICAgICAgICAgICAmJiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkt
PmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJS
T1IpKTsKIH0KIAotdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKikKK3ZvaWQgQ2Fu
dmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29u
dGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpCiB7CiAgICAgaWYgKG1fZGlydHlSZWN0LmlzRW1w
dHkoKSB8fCAhZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJv
bWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckNocm9taXVtLmgKaW5kZXggMGYzMzJmNGUwMjdkNzA0ZjQ0YTFkMzQ5ODdmMzY3YzZm
MDNjMGQ0Ni4uMWMxNjM5M2Y0MjgzYzg2YWM5ZjViOWE5ZjU3MDE5N2UzYjU1OTIyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRM
YXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhczJETGF5ZXJDaHJvbWl1bT4gY3JlYXRlKEdyYXBo
aWNzQ29udGV4dDNEKik7CiAgICAgdmlydHVhbCB+Q2FudmFzMkRMYXllckNocm9taXVtKCk7CiAg
ICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9j
YXRvciopOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBo
aWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOwogCiAgICAgdm9pZCBzZXRUZXh0dXJl
Q2hhbmdlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggMmI2OGY1NTY1OTM1MGMzMmU1NTQx
OWIyZWVhNjEwOGU2NDA2ODcwNC4uODExOWU2OTY1OTM4ZTE2MTA1ZDJlMzRlMGQ5N2EyNTYyM2Nk
YzgxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtNTMsNiArNTMsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0OworY2xh
c3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogCiBjbGFzcyBD
Q0xheWVyRGVsZWdhdGUgewpAQCAtMTU5LDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGVz
ZSBtZXRob2RzIHR5cGljYWxseSBuZWVkIHRvIGJlIG92ZXJ3cml0dGVuIGJ5IGRlcml2ZWQgY2xh
c3Nlcy4KICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCos
IFRleHR1cmVBbGxvY2F0b3IqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2V0SXNNYXNrKGJvb2wpIHt9CiAgICAgdmlydHVhbCB2b2lkIHVucmVz
ZXJ2ZUNvbnRlbnRzVGV4dHVyZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBiaW5kQ29udGVudHNU
ZXh0dXJlKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAppbmRleCAzMjcwMjI4
Njg1ODg4Nzk5OTc1MDNlMTRmMDlkMDk0YWZhNDdiMTdjLi5jYTZhMmVjMTdiM2ZjNWI5YTdjNzkz
ODAyOTViZmI4ODIyNmNkZTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgIlRl
eHRTdHJlYW0uaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgorI2luY2x1ZGUgImNjL0ND
VGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RpbGVkTGF5ZXJJbXBsLmgiCiAjaW5j
bHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKQEAgLTE1MCw3ICsxNTEsNyBAQCB2b2lkIFRpbGVk
TGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3QqIGhvc3QpCiAg
ICAgICAgIGlzTm9uQ29tcG9zaXRlZENvbnRlbnQoKSA/IENDTGF5ZXJUaWxpbmdEYXRhOjpOb0Jv
cmRlclRleGVscyA6IENDTGF5ZXJUaWxpbmdEYXRhOjpIYXNCb3JkZXJUZXhlbHMpOwogfQogCi12
b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQordm9pZCBU
aWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiB7CiAgICAgLy8gUGFp
bnRpbmcgY291bGQgY2F1c2UgY29tcG9zaXRpbmcgdG8gZ2V0IHR1cm5lZCBvZmYsIHdoaWNoIG1h
eSBjYXVzZSB0aGUgdGlsZXIgdG8gYmVjb21lIGludmFsaWRhdGVkIG1pZC11cGRhdGUuCiAgICAg
aWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRlUmVjdC5pc0VtcHR5KCkgfHwgIW1f
dGlsZXItPm51bVRpbGVzKCkpCkBAIC0xOTYsMTMgKzE5NywyMiBAQCB2b2lkIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgVAogICAgICAgICAgICAgaWYgKHBhaW50T2Zmc2V0LnkoKSArIGRlc3RSZWN0LmhlaWdo
dCgpID4gbV9wYWludFJlY3QuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgQ1JBU0goKTsKIAor
ICAgICAgICAgICAgLy8gRklYTUUgZW5uZToKKyAgICAgICAgICAgIC8vIEl0J3MgbmljZSB0byBu
b3QgcGFzcyB0aGUgYWxsb2NhdG9yIGludG8KKyAgICAgICAgICAgIC8vIHVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMsIGJlY2F1c2UgdGhlbiB5b3UncmUgZ3VhcmFudGVlZCB0aGF0CisgICAgICAg
ICAgICAvLyBub2JvZHkgaXMgdXBsb2FkaW5nIHRleHR1cmVzIG91dHNpZGUgb2YgdGhlIENDVGV4
dHVyZVVwZGF0ZXIuCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gTWF5YmUgc2hvdmUg
dGhlIGZpbHRlciB2YWx1ZSBpbnRvIHRoZSBtYW5hZ2VkIHRleHR1cmUgb3IganVzdAorICAgICAg
ICAgICAgLy8gc3RpY2sgdGhpcyBjYWxsIGluIGF0IGRyYXcgdGltZS4gWXVjay4KKyNpZiAwCiAg
ICAgICAgICAgICB0aWxlLT50ZXh0dXJlKCktPmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRv
cik7CiAgICAgICAgICAgICBjb25zdCBHQzNEaW50IGZpbHRlciA9IG1fdGlsZXItPmhhc0JvcmRl
clRleGVscygpID8gR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUiA6IEdyYXBoaWNzQ29udGV4dDNE
OjpORUFSRVNUOwogICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRl
cmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFX01JTl9GSUxURVIsIGZpbHRlcikpOwogICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRl
eHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIGZpbHRlcikpOwogICAgICAgICAgICAgR0xD
KGNvbnRleHQsIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCAwKSk7CisjZW5kaWYKIAotICAgICAgICAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRl
VGV4dHVyZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCB0aWxlLT50ZXh0dXJlKCksIHNvdXJjZVJl
Y3QsIGRlc3RSZWN0KTsKKyAgICAgICAgICAgIHVwZGF0ZXIuYXBwZW5kKHRpbGUtPnRleHR1cmUo
KSwgdGV4dHVyZVVwZGF0ZXIoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogICAgICAgICAgICAg
dGlsZS0+Y2xlYXJEaXJ0eSgpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hy
b21pdW0uaAppbmRleCAyMzYzYjgwOWY5MTg0NzNmMDlhNWI5MDA2YjJkMWM3OTIxYzE5ZWRkLi41
ZGFmMGYwMTk0N2E5OTQ3Y2QyMzVmNTVmYjczOTU5ZTQ0N2IxZjU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExh
eWVyQ2hyb21pdW0uaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5U
aWxlZExheWVyQ2hyb21pdW0oKTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOworICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwg
Q0NUZXh0dXJlVXBkYXRlciYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJc01hc2soYm9vbCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXll
ckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMGViNmNmYjgzNDhhNDk5ZWRjOWFhY2Y5MGIz
OGI5NTg1MjgwYjAyNC4uNTM4NzkzYzRiYWZkZDlmZmJlMzRmZDc1NTE1MWE2MzViNWY1NmE0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlk
ZW9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQg
VmlkZW9MYXllckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2VzKCkKICAgICAgICAgbV90ZXh0dXJl
c1tpXS5tX3RleHR1cmUuY2xlYXIoKTsKIH0KIAotdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1
cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKK3ZvaWQgVmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVV
cGRhdGVyJikKIHsKICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcHJvdmlkZXIpCiAgICAgICAg
IHJldHVybjsKQEAgLTEyOCw3ICsxMjgsMTEgQEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFQKICAg
ICAgICAgVGV4dHVyZSYgdGV4dHVyZSA9IG1fdGV4dHVyZXNbcGxhbmVdOwogICAgICAgICBBU1NF
UlQodGV4dHVyZS5tX3RleHR1cmUpOwogICAgICAgICBBU1NFUlQoZnJhbWUtPnJlcXVpcmVkVGV4
dHVyZVNpemUocGxhbmUpID09IHRleHR1cmUubV90ZXh0dXJlLT5zaXplKCkpOworICAgICAgICAv
LyBGSVhNRTogZW5uZSAtIG5lZWQgdG8gd3JhcCB0aGlzIGluIGEgdGV4dHVyZSB1cGRhdGVyIGlu
IG9yZGVyIHRvCisgICAgICAgIC8vIGZpdCB3aXRoIENDVGV4dHVyZVVwZGF0ZXIgc2NoZW1lCisj
aWYgMAogICAgICAgICB1cGRhdGVUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVyZSwg
ZnJhbWUtPmRhdGEocGxhbmUpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIG1fcGxhbmVzID0gZnJh
bWUtPnBsYW5lcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAppbmRleCBmMzdiNmJhM2Rk
NTYxZGUzNWNkM2NhY2M5YmNjMzMzNDU1Yzk5ZjE4Li40OTA1NzIyNWU0MzBjZThkZGI4YjQzMGJm
ZWZjNzQxMmNiNTIxYjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaApAQCAtNTAsNyAr
NTAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNy
ZWF0ZUNDTGF5ZXJJbXBsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIEND
VGV4dHVyZVVwZGF0ZXImKTsKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCByZWxlYXNlUHJvdmlkZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9X
ZWJHTExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDVjZmI2NmFjOWM3MWQwOTlhMjRmY2JhOTA3NGU5
YjdkYjg2ZDRkN2IuLmYzODdmZGE1Zjg1ZDA3YTA1NGQ0ZjRkOTc1MzQxMmI4MzRkYjE2OTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdM
TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcApAQCAtNjUsNyArNjUsNyBAQCBib29sIFdl
YkdMTGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gKG1fY29u
dGV4dCAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1
c0FSQigpID09IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUik7CiB9CiAKLXZvaWQgV2ViR0xM
YXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNE
KiByZW5kZXJlckNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqKQordm9pZCBXZWJHTExheWVyQ2hy
b21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIHJlbmRl
cmVyQ29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYpCiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQo
KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAppbmRleCA3MjM2
YmFjN2ZlNDg2YmIyYzI0YzY1NjUyMjYyYTA2Mzk1MmIwZTc0Li5mZTUyZTJjZjY4ODc5ZmNjYzlk
MjhiNWVlYzYwNzRhMzVkNjk4ZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaApAQCAt
NTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR0xMYXllckNocm9taXVtKCk7
CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJl
QWxsb2NhdG9yKik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
R3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CiAgICAgdm9pZCBzZXRUZXh0
dXJlVXBkYXRlZCgpOwogICAgIGJvb2wgcGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyhJbWFn
ZUJ1ZmZlciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCBjZTRjYjZj
NzgwMTY1OGJjYzYzYzc0ZWVhMDQ4ZTM4YzQ2NDg5MWJlLi45ZjIyMDJhNzAyMTM0YWMzNGYxMzU1
OWRjZTYyNWJmNDQyMWRiMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAg
LTExMSwyMiArMTExLDI0IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjphbmltYXRlQW5kTGF5b3V0
KGRvdWJsZSBmcmFtZUJlZ2luVGltZSkKICAgICBtX2FuaW1hdGluZyA9IGZhbHNlOwogfQogCit2
b2lkIENDTGF5ZXJUcmVlSG9zdDo6YmVnaW5Db21taXRPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9z
dEltcGwqIGhvc3RJbXBsKQoreworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7
CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6Y29tbWl0VG8iLCB0aGlzLCAwKTsK
KworICAgIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+cmVkdWNlTWVtb3J5VG9MaW1pdChUZXh0
dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXMoKSk7CisgICAgY29udGVudHNUZXh0dXJlTWFu
YWdlcigpLT5kZWxldGVFdmljdGVkVGV4dHVyZXMoaG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFs
bG9jYXRvcigpKTsKK30KKwogLy8gVGhpcyBmdW5jdGlvbiBjb21taXRzIHRoZSBDQ0xheWVyVHJl
ZUhvc3QgdG8gYW4gaW1wbCB0cmVlLiBXaGVuIG1vZGlmeWluZwogLy8gdGhpcyBmdW5jdGlvbiwg
a2VlcCBpbiBtaW5kIHRoYXQgdGhlIGZ1bmN0aW9uICpydW5zKiBvbiB0aGUgaW1wbCB0aHJlYWQh
IEFueQogLy8gY29kZSB0aGF0IGlzIGxvZ2ljYWxseSBhIG1haW4gdGhyZWFkIG9wZXJhdGlvbiwg
ZS5nLiBkZWxldGlvbiBvZiBhIExheWVyQ2hyb21pdW0sCiAvLyBzaG91bGQgYmUgZGVsYXllZCB1
bnRpbCB0aGUgQ0NMYXllclRyZWVIb3N0Ojpjb21taXRDb21wbGV0ZSwgd2hpY2ggd2lsbCBydW4K
IC8vIGFmdGVyIHRoZSBjb21taXQsIGJ1dCBvbiB0aGUgbWFpbiB0aHJlYWQuCi12b2lkIENDTGF5
ZXJUcmVlSG9zdDo6Y29tbWl0VG9PbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhvc3RJ
bXBsKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaENvbW1pdE9uQ0NUaHJlYWQoQ0NMYXll
clRyZWVIb3N0SW1wbCogaG9zdEltcGwpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRo
cmVhZCgpKTsKLSAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojpjb21taXRUbyIsIHRo
aXMsIDApOwogICAgIGhvc3RJbXBsLT5zZXRTb3VyY2VGcmFtZU51bWJlcihmcmFtZU51bWJlcigp
KTsKLQotICAgIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+cmVkdWNlTWVtb3J5VG9MaW1pdChU
ZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXMoKSk7Ci0gICAgY29udGVudHNUZXh0dXJl
TWFuYWdlcigpLT5kZWxldGVFdmljdGVkVGV4dHVyZXMoaG9zdEltcGwtPmNvbnRlbnRzVGV4dHVy
ZUFsbG9jYXRvcigpKTsKLQotICAgIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV91cGRhdGVM
aXN0LCBob3N0SW1wbC0+Y29udGV4dCgpLCBob3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2Nh
dG9yKCkpOwotCiAgICAgaG9zdEltcGwtPnNldFZpc2libGUobV92aXNpYmxlKTsKICAgICBob3N0
SW1wbC0+c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtKTsK
ICAgICBob3N0SW1wbC0+c2V0Vmlld3BvcnQodmlld3BvcnRTaXplKCkpOwpAQCAtMzU4LDEwICsz
NjAsMTAgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBM
YXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QKICAgICB9CiB9CiAKLXZvaWQgQ0NMYXll
clRyZWVIb3N0Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnN0IExheWVyTGlzdCYgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCwgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVB
bGxvY2F0b3IqIGFsbG9jYXRvcikKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVy
JiB1cGRhdGVyKQogewotICAgIGZvciAoaW50IHN1cmZhY2VJbmRleCA9IHJlbmRlclN1cmZhY2VM
YXllckxpc3Quc2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4ID49IDAgOyAtLXN1cmZhY2VJbmRleCkg
ewotICAgICAgICBMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIgPSByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7CisgICAgZm9yIChpbnQgc3VyZmFjZUlu
ZGV4ID0gbV91cGRhdGVMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJm
YWNlSW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyID0g
bV91cGRhdGVMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7CiAgICAgICAgIFJlbmRlclN1cmZhY2VD
aHJvbWl1bSogcmVuZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2VMYXllci0+cmVuZGVyU3VyZmFj
ZSgpOwogICAgICAgICBBU1NFUlQocmVuZGVyU3VyZmFjZSk7CiAKQEAgLTM3NSwxMiArMzc3LDEy
IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnN0
IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxhCiAgICAgICAgICAgICBpZiAobGF5ZXItPnJlbmRl
clN1cmZhY2UoKSAmJiBsYXllci0+cmVuZGVyU3VyZmFjZSgpICE9IHJlbmRlclN1cmZhY2UpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIHVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMobGF5ZXIsIGNvbnRleHQsIGFsbG9jYXRvcik7CisgICAgICAgICAgICB1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKGxheWVyLCBjb250ZXh0LCB1cGRhdGVyKTsKICAgICAgICAgfQog
ICAgIH0KIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0
dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhMYXllckNocm9taXVtKiBsYXllciwgR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiB7CiAgICAgaWYgKGxheWVyLT5i
b3VuZHMoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM4OSwxMiArMzkxLDEyIEBA
IHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKExheWVyQ2hy
b21pdW0qIGxheWVyLCBHcmFwaGljc0NvCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChsYXll
ci0+bWFza0xheWVyKCkpCi0gICAgICAgIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobGF5ZXIt
Pm1hc2tMYXllcigpLCBjb250ZXh0LCBhbGxvY2F0b3IpOworICAgICAgICB1cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKGxheWVyLT5tYXNrTGF5ZXIoKSwgY29udGV4dCwgdXBkYXRlcik7CiAgICAg
aWYgKGxheWVyLT5yZXBsaWNhTGF5ZXIoKSkKLSAgICAgICAgdXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcyhsYXllci0+cmVwbGljYUxheWVyKCksIGNvbnRleHQsIGFsbG9jYXRvcik7CisgICAgICAg
IHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobGF5ZXItPnJlcGxpY2FMYXllcigpLCBjb250ZXh0
LCB1cGRhdGVyKTsKIAogICAgIGlmIChsYXllci0+ZHJhd3NDb250ZW50KCkpCi0gICAgICAgIGxh
eWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIGFsbG9jYXRvcik7CisgICAg
ICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwog
fQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y2xlYXJQZW5kaW5nVXBkYXRlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmgKaW5kZXggOTYwYzE3MDA1MTVjZTE4NWMyYjZhMGVlNDgwN2Q4OWM0
NmQyNzc0MS4uNjc5NGY5ZDczODAwY2IzYzNlYjBlZDMyZTIxNzJkYzgyMzYzMjAxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgR3JDb250ZXh0
OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsOworY2xh
c3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgTGF5
ZXJDaHJvbWl1bTsKIGNsYXNzIExheWVyUGFpbnRlckNocm9taXVtOwpAQCAtOTgsOCArOTksOSBA
QCBwdWJsaWM6CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3QgaW50ZXJmYWNlIHRvIENDUHJveHku
CiAgICAgdm9pZCBhbmltYXRlQW5kTGF5b3V0KGRvdWJsZSBmcmFtZUJlZ2luVGltZSk7CisgICAg
dm9pZCBiZWdpbkNvbW1pdE9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopOworICAgIHZv
aWQgZmluaXNoQ29tbWl0T25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKik7CiAgICAgdm9p
ZCBjb21taXRDb21wbGV0ZSgpOwotICAgIHZvaWQgY29tbWl0VG9PbkNDVGhyZWFkKENDTGF5ZXJU
cmVlSG9zdEltcGwqKTsKICAgICBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVM
YXllclRyZWVIb3N0Q29udGV4dDNEKCk7CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPENDTGF5ZXJU
cmVlSG9zdEltcGw+IGNyZWF0ZUxheWVyVHJlZUhvc3RJbXBsKCk7CiAgICAgdm9pZCBkaWRSZWNy
ZWF0ZUdyYXBoaWNzQ29udGV4dChib29sIHN1Y2Nlc3MpOwpAQCAtMTUxLDYgKzE1Myw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlTGF5ZXJzKCk7CiAKKyAgICB2b2lkIHVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CiAg
ICAgdm9pZCBhcHBseVNjcm9sbERlbHRhcyhjb25zdCBDQ1Njcm9sbFVwZGF0ZVNldCYpOwogcHJv
dGVjdGVkOgogICAgIENDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqLCBQYXNz
UmVmUHRyPExheWVyQ2hyb21pdW0+IHJvb3RMYXllciwgY29uc3QgQ0NTZXR0aW5ncyYpOwpAQCAt
MTYxLDggKzE2NCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBhaW50TGF5ZXJDb250ZW50cyhj
b25zdCBMYXllckxpc3QmKTsKICAgICB2b2lkIHVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKik7
Ci0gICAgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnN0IExheWVyTGlzdCYsIEdy
YXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOwotICAgIHZvaWQgdXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhMYXllckNocm9taXVtKiwgR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0
dXJlQWxsb2NhdG9yKik7CisgICAgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKExheWVy
Q2hyb21pdW0qLCBHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKICAgICB2
b2lkIGNsZWFyUGVuZGluZ1VwZGF0ZSgpOwogCiAgICAgaW50IG1fY29tcG9zaXRvcklkZW50aWZp
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IDYwZTQ3OTUy
ZThhNWUxOWU1NjY3ODhjNGYxZjgwNDYxZDhjNmQ3YTMuLjk4YTU4MjA3ODNjMDQ4ZjkzZjk1NGI4
MzRkZjY0ZDZjYmFlYzRmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
Y3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAj
aW5jbHVkZSAiY2MvQ0NNYWluVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgImNjL0NDU2Nyb2xsQ29u
dHJvbGxlci5oIgorI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlIDx3
dGYvQ3VycmVudFRpbWUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdURjsKQEAgLTE0MSwxMSArMTQy
LDIzIEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6bG9zZUNvbXBvc2l0b3JDb250ZXh0KGlu
dCBudW1UaW1lcykKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXQoKQog
ewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CisgICAgZG9Db21taXQoKTsK
K30KKwordm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCgpCit7CisgICAgQVNTRVJU
KENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKICAgICAvLyBDb21taXQgaW1tZWRpYXRlbHkKICAg
ICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogICAgICAgICBtX2xh
eWVyVHJlZUhvc3RJbXBsLT5iZWdpbkNvbW1pdCgpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PmNvbW1pdFRvT25DQ1RocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKKworICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPmJlZ2luQ29tbWl0T25DQ1RocmVhZChtX2xheWVyVHJlZUhvc3RJ
bXBsLmdldCgpKTsKKyAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOworICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0
SW1wbC0+Y29udGV4dCgpLCB1cGRhdGVyKTsKKyAgICAgICAgdXBkYXRlci51cGRhdGVBbGxUZXh0
dXJlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5m
aW5pc2hDb21taXRPbkNDVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOworCiAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbW1pdENvbXBsZXRlKCk7CiAKICNpZiAhQVNTRVJU
X0RJU0FCTEVECkBAIC0yNDcsMTcgKzI2MCw5IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6
Y29tbWl0SWZOZWVkZWQoKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7
CiAKLSAgICAvLyBVcGRhdGUKICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOwog
Ci0gICAgLy8gQ29tbWl0Ci0gICAgewotICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQg
aW1wbDsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YmVnaW5Db21taXQoKTsKLSAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRUb09uQ0NUaHJlYWQobV9sYXllclRyZWVIb3N0SW1w
bC5nZXQoKSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbW1pdENvbXBsZXRlKCk7
Ci0gICAgfQotICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKKyAgICBkb0Nv
bW1pdCgpOwogfQogCiBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tcG9zaXRlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRleCAyODRkZjA1YjFiOTg0MDI5YjY2
NDMzMTcwNzA4ZDE5YjU0NWRkNjQ2Li45NTdiZTcxYjAzZmU3MjY4YzNlNjRkZWU0YmU4MzE4OWU5
OTRkZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCkBAIC02MSw2ICs2
MSw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ0NTaW5nbGVUaHJlYWRQcm94eShDQ0xheWVy
VHJlZUhvc3QqKTsKICAgICBib29sIHJlY3JlYXRlQ29udGV4dElmTmVlZGVkKCk7CiAgICAgdm9p
ZCBjb21taXRJZk5lZWRlZCgpOworICAgIHZvaWQgZG9Db21taXQoKTsKICAgICBib29sIGRvQ29t
cG9zaXRlKCk7CiAKICAgICAvLyBBY2Nlc3NlZCBvbiBtYWluIHRocmVhZCBvbmx5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCBmNDMwNTIwOGY1YzA0NTE1YTYzODMwNWEyNjYwZDdl
MjQ3ODE5YzBlLi44MjZhNzUwNmI1N2E1Y2ZhMzQ4YzU3Y2RiYTZlMDU1MGFiMjUzNzEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgImNj
L0NDU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NTY29wZWRNYWluVGhyZWFkUHJveHkuaCIK
ICNpbmNsdWRlICJjYy9DQ1Njcm9sbENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1
cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRUYXNrLmgiCiAjaW5jbHVkZSA8d3Rm
L0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTQxNCw3ICs0
MTUsMTMgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojpjb21taXRPbkNDVGhyZWFkKENDQ29tcGxldGlv
bkV2ZW50KiBjb21wbGV0aW9uKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7Ci0gICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRU
b09uQ0NUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7CisKKyAgICBtX2xheWVyVHJl
ZUhvc3QtPmJlZ2luQ29tbWl0T25DQ1RocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsK
KyAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CisgICAgbV9sYXllclRyZWVIb3N0LT51cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgdXBk
YXRlcik7CisgICAgdXBkYXRlci51cGRhdGVBbGxUZXh0dXJlcyhtX2xheWVyVHJlZUhvc3RJbXBs
LT5jb250ZXh0KCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRv
cigpKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPmZpbmlzaENvbW1pdE9uQ0NUaHJlYWQobV9sYXll
clRyZWVIb3N0SW1wbC5nZXQoKSk7CisKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5jb21taXRD
b21wbGV0ZSgpOwogCiAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111809</attachid>
            <date>2011-10-20 11:21:18 -0700</date>
            <delta_ts>2011-10-20 16:48:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70454-20111020112117.patch</filename>
            <type>text/plain</type>
            <size>27789</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc4NjkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmZThjY2FjYTViNWViN2Yy
YjZhMTVmNjM2YTExM2EwZTdmYmRjNzU4Li5mYzcwNWQ3YzZhNGU2Y2VkNzNkNWY1ODJhNGMwMjEy
ZGE2M2ExYjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMTAtMTkgIEFkcmll
bm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEJhdGNo
IHVwIHRleHR1cmUgdXBsb2FkcyBzbyB0aGF0IHRoZXkgY2FuIGJlIHVwZGF0ZWQgaW5jcmVtZW50
YWxseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA0
NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMy
RExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9t
aXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpM
YXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9W
aWRlb0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNo
cm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0OjpiZWdpbkNvbW1pdE9uQ0NUaHJlYWQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpmaW5pc2hDb21taXRPbkNDVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5OjpzZXRO
ZWVkc0NvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0Nv
bW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21taXRJZk5l
ZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6Y29tbWl0
T25DQ1RocmVhZCk6CisKIDIwMTEtMTAtMTkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjogd29ya2VyIGluc3BlY3RvciB0aXRs
ZSBzaG91bGQgY29udGFpbiB3b3JrZXIgVVJMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOTI3NzU5NjIw
N2VmZWU2MDMxNDIxOWY3ZjA3YWNmNGNhNjNmNDZjZS4uMGU1MzI1NjhlNDdjY2Y4YjU3ZGE3YzE1
MTFmNmM3ZDM2YWEwMTU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzU0Myw2ICszNTQzLDggQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbENvbnRy
b2xsZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAnLAorICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWQuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcAppbmRleCBmY2FjMjYy
OTZkZjhlZGM5ODQ4MTcyZDQ2NDY1OWI0YjBhZDEyNDdlLi5jOTBkNjM4NWEwNDkwMzdmN2MxN2Ey
ZWQyMTAzYTcyZWM3Yzk3Yzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5j
cHAKQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBDYW52YXMyRExheWVyQ2hyb21pdW06OmRyYXdzQ29u
dGVudCgpIGNvbnN0CiAgICAgICAgICAgICAmJiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkt
PmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJS
T1IpKTsKIH0KIAotdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKikKK3ZvaWQgQ2Fu
dmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29u
dGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpCiB7CiAgICAgaWYgKG1fZGlydHlSZWN0LmlzRW1w
dHkoKSB8fCAhZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJv
bWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckNocm9taXVtLmgKaW5kZXggMGYzMzJmNGUwMjdkNzA0ZjQ0YTFkMzQ5ODdmMzY3YzZm
MDNjMGQ0Ni4uMWMxNjM5M2Y0MjgzYzg2YWM5ZjViOWE5ZjU3MDE5N2UzYjU1OTIyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRM
YXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhczJETGF5ZXJDaHJvbWl1bT4gY3JlYXRlKEdyYXBo
aWNzQ29udGV4dDNEKik7CiAgICAgdmlydHVhbCB+Q2FudmFzMkRMYXllckNocm9taXVtKCk7CiAg
ICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9j
YXRvciopOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBo
aWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOwogCiAgICAgdm9pZCBzZXRUZXh0dXJl
Q2hhbmdlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggMmI2OGY1NTY1OTM1MGMzMmU1NTQx
OWIyZWVhNjEwOGU2NDA2ODcwNC4uODExOWU2OTY1OTM4ZTE2MTA1ZDJlMzRlMGQ5N2EyNTYyM2Nk
YzgxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtNTMsNiArNTMsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0OworY2xh
c3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogCiBjbGFzcyBD
Q0xheWVyRGVsZWdhdGUgewpAQCAtMTU5LDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGVz
ZSBtZXRob2RzIHR5cGljYWxseSBuZWVkIHRvIGJlIG92ZXJ3cml0dGVuIGJ5IGRlcml2ZWQgY2xh
c3Nlcy4KICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCos
IFRleHR1cmVBbGxvY2F0b3IqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2V0SXNNYXNrKGJvb2wpIHt9CiAgICAgdmlydHVhbCB2b2lkIHVucmVz
ZXJ2ZUNvbnRlbnRzVGV4dHVyZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBiaW5kQ29udGVudHNU
ZXh0dXJlKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAppbmRleCAzMjcwMjI4
Njg1ODg4Nzk5OTc1MDNlMTRmMDlkMDk0YWZhNDdiMTdjLi5jYTZhMmVjMTdiM2ZjNWI5YTdjNzkz
ODAyOTViZmI4ODIyNmNkZTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgIlRl
eHRTdHJlYW0uaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgorI2luY2x1ZGUgImNjL0ND
VGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RpbGVkTGF5ZXJJbXBsLmgiCiAjaW5j
bHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKQEAgLTE1MCw3ICsxNTEsNyBAQCB2b2lkIFRpbGVk
TGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3QqIGhvc3QpCiAg
ICAgICAgIGlzTm9uQ29tcG9zaXRlZENvbnRlbnQoKSA/IENDTGF5ZXJUaWxpbmdEYXRhOjpOb0Jv
cmRlclRleGVscyA6IENDTGF5ZXJUaWxpbmdEYXRhOjpIYXNCb3JkZXJUZXhlbHMpOwogfQogCi12
b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQordm9pZCBU
aWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiB7CiAgICAgLy8gUGFp
bnRpbmcgY291bGQgY2F1c2UgY29tcG9zaXRpbmcgdG8gZ2V0IHR1cm5lZCBvZmYsIHdoaWNoIG1h
eSBjYXVzZSB0aGUgdGlsZXIgdG8gYmVjb21lIGludmFsaWRhdGVkIG1pZC11cGRhdGUuCiAgICAg
aWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRlUmVjdC5pc0VtcHR5KCkgfHwgIW1f
dGlsZXItPm51bVRpbGVzKCkpCkBAIC0xOTYsMTMgKzE5NywyMiBAQCB2b2lkIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgVAogICAgICAgICAgICAgaWYgKHBhaW50T2Zmc2V0LnkoKSArIGRlc3RSZWN0LmhlaWdo
dCgpID4gbV9wYWludFJlY3QuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgQ1JBU0goKTsKIAor
ICAgICAgICAgICAgLy8gRklYTUUgZW5uZToKKyAgICAgICAgICAgIC8vIEl0J3MgbmljZSB0byBu
b3QgcGFzcyB0aGUgYWxsb2NhdG9yIGludG8KKyAgICAgICAgICAgIC8vIHVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMsIGJlY2F1c2UgdGhlbiB5b3UncmUgZ3VhcmFudGVlZCB0aGF0CisgICAgICAg
ICAgICAvLyBub2JvZHkgaXMgdXBsb2FkaW5nIHRleHR1cmVzIG91dHNpZGUgb2YgdGhlIENDVGV4
dHVyZVVwZGF0ZXIuCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gTWF5YmUgc2hvdmUg
dGhlIGZpbHRlciB2YWx1ZSBpbnRvIHRoZSBtYW5hZ2VkIHRleHR1cmUgb3IganVzdAorICAgICAg
ICAgICAgLy8gc3RpY2sgdGhpcyBjYWxsIGluIGF0IGRyYXcgdGltZS4gWXVjay4KKyNpZiAwCiAg
ICAgICAgICAgICB0aWxlLT50ZXh0dXJlKCktPmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRv
cik7CiAgICAgICAgICAgICBjb25zdCBHQzNEaW50IGZpbHRlciA9IG1fdGlsZXItPmhhc0JvcmRl
clRleGVscygpID8gR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUiA6IEdyYXBoaWNzQ29udGV4dDNE
OjpORUFSRVNUOwogICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRl
cmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFX01JTl9GSUxURVIsIGZpbHRlcikpOwogICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRl
eHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIGZpbHRlcikpOwogICAgICAgICAgICAgR0xD
KGNvbnRleHQsIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCAwKSk7CisjZW5kaWYKIAotICAgICAgICAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRl
VGV4dHVyZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCB0aWxlLT50ZXh0dXJlKCksIHNvdXJjZVJl
Y3QsIGRlc3RSZWN0KTsKKyAgICAgICAgICAgIHVwZGF0ZXIuYXBwZW5kKHRpbGUtPnRleHR1cmUo
KSwgdGV4dHVyZVVwZGF0ZXIoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogICAgICAgICAgICAg
dGlsZS0+Y2xlYXJEaXJ0eSgpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hy
b21pdW0uaAppbmRleCAyMzYzYjgwOWY5MTg0NzNmMDlhNWI5MDA2YjJkMWM3OTIxYzE5ZWRkLi41
ZGFmMGYwMTk0N2E5OTQ3Y2QyMzVmNTVmYjczOTU5ZTQ0N2IxZjU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExh
eWVyQ2hyb21pdW0uaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5U
aWxlZExheWVyQ2hyb21pdW0oKTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOworICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwg
Q0NUZXh0dXJlVXBkYXRlciYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJc01hc2soYm9vbCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXll
ckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMGViNmNmYjgzNDhhNDk5ZWRjOWFhY2Y5MGIz
OGI5NTg1MjgwYjAyNC4uNTM4NzkzYzRiYWZkZDlmZmJlMzRmZDc1NTE1MWE2MzViNWY1NmE0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlk
ZW9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQg
VmlkZW9MYXllckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2VzKCkKICAgICAgICAgbV90ZXh0dXJl
c1tpXS5tX3RleHR1cmUuY2xlYXIoKTsKIH0KIAotdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1
cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKK3ZvaWQgVmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVV
cGRhdGVyJikKIHsKICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcHJvdmlkZXIpCiAgICAgICAg
IHJldHVybjsKQEAgLTEyOCw3ICsxMjgsMTEgQEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFQKICAg
ICAgICAgVGV4dHVyZSYgdGV4dHVyZSA9IG1fdGV4dHVyZXNbcGxhbmVdOwogICAgICAgICBBU1NF
UlQodGV4dHVyZS5tX3RleHR1cmUpOwogICAgICAgICBBU1NFUlQoZnJhbWUtPnJlcXVpcmVkVGV4
dHVyZVNpemUocGxhbmUpID09IHRleHR1cmUubV90ZXh0dXJlLT5zaXplKCkpOworICAgICAgICAv
LyBGSVhNRTogZW5uZSAtIG5lZWQgdG8gd3JhcCB0aGlzIGluIGEgdGV4dHVyZSB1cGRhdGVyIGlu
IG9yZGVyIHRvCisgICAgICAgIC8vIGZpdCB3aXRoIENDVGV4dHVyZVVwZGF0ZXIgc2NoZW1lCisj
aWYgMAogICAgICAgICB1cGRhdGVUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVyZSwg
ZnJhbWUtPmRhdGEocGxhbmUpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIG1fcGxhbmVzID0gZnJh
bWUtPnBsYW5lcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAppbmRleCBmMzdiNmJhM2Rk
NTYxZGUzNWNkM2NhY2M5YmNjMzMzNDU1Yzk5ZjE4Li40OTA1NzIyNWU0MzBjZThkZGI4YjQzMGJm
ZWZjNzQxMmNiNTIxYjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaApAQCAtNTAsNyAr
NTAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNy
ZWF0ZUNDTGF5ZXJJbXBsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIEND
VGV4dHVyZVVwZGF0ZXImKTsKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCByZWxlYXNlUHJvdmlkZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9X
ZWJHTExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDVjZmI2NmFjOWM3MWQwOTlhMjRmY2JhOTA3NGU5
YjdkYjg2ZDRkN2IuLmYzODdmZGE1Zjg1ZDA3YTA1NGQ0ZjRkOTc1MzQxMmI4MzRkYjE2OTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdM
TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcApAQCAtNjUsNyArNjUsNyBAQCBib29sIFdl
YkdMTGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gKG1fY29u
dGV4dCAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1
c0FSQigpID09IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUik7CiB9CiAKLXZvaWQgV2ViR0xM
YXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNE
KiByZW5kZXJlckNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqKQordm9pZCBXZWJHTExheWVyQ2hy
b21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIHJlbmRl
cmVyQ29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYpCiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQo
KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAppbmRleCA3MjM2
YmFjN2ZlNDg2YmIyYzI0YzY1NjUyMjYyYTA2Mzk1MmIwZTc0Li5mZTUyZTJjZjY4ODc5ZmNjYzlk
MjhiNWVlYzYwNzRhMzVkNjk4ZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaApAQCAt
NTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR0xMYXllckNocm9taXVtKCk7
CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJl
QWxsb2NhdG9yKik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
R3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CiAgICAgdm9pZCBzZXRUZXh0
dXJlVXBkYXRlZCgpOwogICAgIGJvb2wgcGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyhJbWFn
ZUJ1ZmZlciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCBjZTRjYjZj
NzgwMTY1OGJjYzYzYzc0ZWVhMDQ4ZTM4YzQ2NDg5MWJlLi45ZjIyMDJhNzAyMTM0YWMzNGYxMzU1
OWRjZTYyNWJmNDQyMWRiMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAg
LTExMSwyMiArMTExLDI0IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjphbmltYXRlQW5kTGF5b3V0
KGRvdWJsZSBmcmFtZUJlZ2luVGltZSkKICAgICBtX2FuaW1hdGluZyA9IGZhbHNlOwogfQogCit2
b2lkIENDTGF5ZXJUcmVlSG9zdDo6YmVnaW5Db21taXRPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9z
dEltcGwqIGhvc3RJbXBsKQoreworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7
CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6Y29tbWl0VG8iLCB0aGlzLCAwKTsK
KworICAgIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+cmVkdWNlTWVtb3J5VG9MaW1pdChUZXh0
dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXMoKSk7CisgICAgY29udGVudHNUZXh0dXJlTWFu
YWdlcigpLT5kZWxldGVFdmljdGVkVGV4dHVyZXMoaG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFs
bG9jYXRvcigpKTsKK30KKwogLy8gVGhpcyBmdW5jdGlvbiBjb21taXRzIHRoZSBDQ0xheWVyVHJl
ZUhvc3QgdG8gYW4gaW1wbCB0cmVlLiBXaGVuIG1vZGlmeWluZwogLy8gdGhpcyBmdW5jdGlvbiwg
a2VlcCBpbiBtaW5kIHRoYXQgdGhlIGZ1bmN0aW9uICpydW5zKiBvbiB0aGUgaW1wbCB0aHJlYWQh
IEFueQogLy8gY29kZSB0aGF0IGlzIGxvZ2ljYWxseSBhIG1haW4gdGhyZWFkIG9wZXJhdGlvbiwg
ZS5nLiBkZWxldGlvbiBvZiBhIExheWVyQ2hyb21pdW0sCiAvLyBzaG91bGQgYmUgZGVsYXllZCB1
bnRpbCB0aGUgQ0NMYXllclRyZWVIb3N0Ojpjb21taXRDb21wbGV0ZSwgd2hpY2ggd2lsbCBydW4K
IC8vIGFmdGVyIHRoZSBjb21taXQsIGJ1dCBvbiB0aGUgbWFpbiB0aHJlYWQuCi12b2lkIENDTGF5
ZXJUcmVlSG9zdDo6Y29tbWl0VG9PbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhvc3RJ
bXBsKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaENvbW1pdE9uQ0NUaHJlYWQoQ0NMYXll
clRyZWVIb3N0SW1wbCogaG9zdEltcGwpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRo
cmVhZCgpKTsKLSAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojpjb21taXRUbyIsIHRo
aXMsIDApOwogICAgIGhvc3RJbXBsLT5zZXRTb3VyY2VGcmFtZU51bWJlcihmcmFtZU51bWJlcigp
KTsKLQotICAgIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+cmVkdWNlTWVtb3J5VG9MaW1pdChU
ZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXMoKSk7Ci0gICAgY29udGVudHNUZXh0dXJl
TWFuYWdlcigpLT5kZWxldGVFdmljdGVkVGV4dHVyZXMoaG9zdEltcGwtPmNvbnRlbnRzVGV4dHVy
ZUFsbG9jYXRvcigpKTsKLQotICAgIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV91cGRhdGVM
aXN0LCBob3N0SW1wbC0+Y29udGV4dCgpLCBob3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2Nh
dG9yKCkpOwotCiAgICAgaG9zdEltcGwtPnNldFZpc2libGUobV92aXNpYmxlKTsKICAgICBob3N0
SW1wbC0+c2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtKTsK
ICAgICBob3N0SW1wbC0+c2V0Vmlld3BvcnQodmlld3BvcnRTaXplKCkpOwpAQCAtMzU4LDEwICsz
NjAsMTAgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBM
YXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QKICAgICB9CiB9CiAKLXZvaWQgQ0NMYXll
clRyZWVIb3N0Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnN0IExheWVyTGlzdCYgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCwgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVB
bGxvY2F0b3IqIGFsbG9jYXRvcikKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVy
JiB1cGRhdGVyKQogewotICAgIGZvciAoaW50IHN1cmZhY2VJbmRleCA9IHJlbmRlclN1cmZhY2VM
YXllckxpc3Quc2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4ID49IDAgOyAtLXN1cmZhY2VJbmRleCkg
ewotICAgICAgICBMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIgPSByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7CisgICAgZm9yIChpbnQgc3VyZmFjZUlu
ZGV4ID0gbV91cGRhdGVMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJm
YWNlSW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyID0g
bV91cGRhdGVMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7CiAgICAgICAgIFJlbmRlclN1cmZhY2VD
aHJvbWl1bSogcmVuZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2VMYXllci0+cmVuZGVyU3VyZmFj
ZSgpOwogICAgICAgICBBU1NFUlQocmVuZGVyU3VyZmFjZSk7CiAKQEAgLTM3NSwxMiArMzc3LDEy
IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnN0
IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxhCiAgICAgICAgICAgICBpZiAobGF5ZXItPnJlbmRl
clN1cmZhY2UoKSAmJiBsYXllci0+cmVuZGVyU3VyZmFjZSgpICE9IHJlbmRlclN1cmZhY2UpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIHVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMobGF5ZXIsIGNvbnRleHQsIGFsbG9jYXRvcik7CisgICAgICAgICAgICB1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKGxheWVyLCBjb250ZXh0LCB1cGRhdGVyKTsKICAgICAgICAgfQog
ICAgIH0KIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0
dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhMYXllckNocm9taXVtKiBsYXllciwgR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiB7CiAgICAgaWYgKGxheWVyLT5i
b3VuZHMoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM4OSwxMiArMzkxLDEyIEBA
IHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKExheWVyQ2hy
b21pdW0qIGxheWVyLCBHcmFwaGljc0NvCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChsYXll
ci0+bWFza0xheWVyKCkpCi0gICAgICAgIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobGF5ZXIt
Pm1hc2tMYXllcigpLCBjb250ZXh0LCBhbGxvY2F0b3IpOworICAgICAgICB1cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKGxheWVyLT5tYXNrTGF5ZXIoKSwgY29udGV4dCwgdXBkYXRlcik7CiAgICAg
aWYgKGxheWVyLT5yZXBsaWNhTGF5ZXIoKSkKLSAgICAgICAgdXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcyhsYXllci0+cmVwbGljYUxheWVyKCksIGNvbnRleHQsIGFsbG9jYXRvcik7CisgICAgICAg
IHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobGF5ZXItPnJlcGxpY2FMYXllcigpLCBjb250ZXh0
LCB1cGRhdGVyKTsKIAogICAgIGlmIChsYXllci0+ZHJhd3NDb250ZW50KCkpCi0gICAgICAgIGxh
eWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIGFsbG9jYXRvcik7CisgICAg
ICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwog
fQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y2xlYXJQZW5kaW5nVXBkYXRlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmgKaW5kZXggOTYwYzE3MDA1MTVjZTE4NWMyYjZhMGVlNDgwN2Q4OWM0
NmQyNzc0MS4uNjc5NGY5ZDczODAwY2IzYzNlYjBlZDMyZTIxNzJkYzgyMzYzMjAxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgR3JDb250ZXh0
OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsOworY2xh
c3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgTGF5
ZXJDaHJvbWl1bTsKIGNsYXNzIExheWVyUGFpbnRlckNocm9taXVtOwpAQCAtOTgsOCArOTksOSBA
QCBwdWJsaWM6CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3QgaW50ZXJmYWNlIHRvIENDUHJveHku
CiAgICAgdm9pZCBhbmltYXRlQW5kTGF5b3V0KGRvdWJsZSBmcmFtZUJlZ2luVGltZSk7CisgICAg
dm9pZCBiZWdpbkNvbW1pdE9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopOworICAgIHZv
aWQgZmluaXNoQ29tbWl0T25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKik7CiAgICAgdm9p
ZCBjb21taXRDb21wbGV0ZSgpOwotICAgIHZvaWQgY29tbWl0VG9PbkNDVGhyZWFkKENDTGF5ZXJU
cmVlSG9zdEltcGwqKTsKICAgICBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVM
YXllclRyZWVIb3N0Q29udGV4dDNEKCk7CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPENDTGF5ZXJU
cmVlSG9zdEltcGw+IGNyZWF0ZUxheWVyVHJlZUhvc3RJbXBsKCk7CiAgICAgdm9pZCBkaWRSZWNy
ZWF0ZUdyYXBoaWNzQ29udGV4dChib29sIHN1Y2Nlc3MpOwpAQCAtMTUxLDYgKzE1Myw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlTGF5ZXJzKCk7CiAKKyAgICB2b2lkIHVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CiAg
ICAgdm9pZCBhcHBseVNjcm9sbERlbHRhcyhjb25zdCBDQ1Njcm9sbFVwZGF0ZVNldCYpOwogcHJv
dGVjdGVkOgogICAgIENDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqLCBQYXNz
UmVmUHRyPExheWVyQ2hyb21pdW0+IHJvb3RMYXllciwgY29uc3QgQ0NTZXR0aW5ncyYpOwpAQCAt
MTYxLDggKzE2NCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBhaW50TGF5ZXJDb250ZW50cyhj
b25zdCBMYXllckxpc3QmKTsKICAgICB2b2lkIHVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKik7
Ci0gICAgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnN0IExheWVyTGlzdCYsIEdy
YXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOwotICAgIHZvaWQgdXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhMYXllckNocm9taXVtKiwgR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0
dXJlQWxsb2NhdG9yKik7CisgICAgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKExheWVy
Q2hyb21pdW0qLCBHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKICAgICB2
b2lkIGNsZWFyUGVuZGluZ1VwZGF0ZSgpOwogCiAgICAgaW50IG1fY29tcG9zaXRvcklkZW50aWZp
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IDYwZTQ3OTUy
ZThhNWUxOWU1NjY3ODhjNGYxZjgwNDYxZDhjNmQ3YTMuLjk4YTU4MjA3ODNjMDQ4ZjkzZjk1NGI4
MzRkZjY0ZDZjYmFlYzRmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
Y3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAj
aW5jbHVkZSAiY2MvQ0NNYWluVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgImNjL0NDU2Nyb2xsQ29u
dHJvbGxlci5oIgorI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlIDx3
dGYvQ3VycmVudFRpbWUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdURjsKQEAgLTE0MSwxMSArMTQy
LDIzIEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6bG9zZUNvbXBvc2l0b3JDb250ZXh0KGlu
dCBudW1UaW1lcykKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXQoKQog
ewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CisgICAgZG9Db21taXQoKTsK
K30KKwordm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCgpCit7CisgICAgQVNTRVJU
KENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKICAgICAvLyBDb21taXQgaW1tZWRpYXRlbHkKICAg
ICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogICAgICAgICBtX2xh
eWVyVHJlZUhvc3RJbXBsLT5iZWdpbkNvbW1pdCgpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PmNvbW1pdFRvT25DQ1RocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKKworICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPmJlZ2luQ29tbWl0T25DQ1RocmVhZChtX2xheWVyVHJlZUhvc3RJ
bXBsLmdldCgpKTsKKyAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOworICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0
SW1wbC0+Y29udGV4dCgpLCB1cGRhdGVyKTsKKyAgICAgICAgdXBkYXRlci51cGRhdGVBbGxUZXh0
dXJlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5m
aW5pc2hDb21taXRPbkNDVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOworCiAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbW1pdENvbXBsZXRlKCk7CiAKICNpZiAhQVNTRVJU
X0RJU0FCTEVECkBAIC0yNDcsMTcgKzI2MCw5IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6
Y29tbWl0SWZOZWVkZWQoKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7
CiAKLSAgICAvLyBVcGRhdGUKICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOwog
Ci0gICAgLy8gQ29tbWl0Ci0gICAgewotICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQg
aW1wbDsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YmVnaW5Db21taXQoKTsKLSAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRUb09uQ0NUaHJlYWQobV9sYXllclRyZWVIb3N0SW1w
bC5nZXQoKSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbW1pdENvbXBsZXRlKCk7
Ci0gICAgfQotICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKKyAgICBkb0Nv
bW1pdCgpOwogfQogCiBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tcG9zaXRlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRleCAyODRkZjA1YjFiOTg0MDI5YjY2
NDMzMTcwNzA4ZDE5YjU0NWRkNjQ2Li45NTdiZTcxYjAzZmU3MjY4YzNlNjRkZWU0YmU4MzE4OWU5
OTRkZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCkBAIC02MSw2ICs2
MSw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ0NTaW5nbGVUaHJlYWRQcm94eShDQ0xheWVy
VHJlZUhvc3QqKTsKICAgICBib29sIHJlY3JlYXRlQ29udGV4dElmTmVlZGVkKCk7CiAgICAgdm9p
ZCBjb21taXRJZk5lZWRlZCgpOworICAgIHZvaWQgZG9Db21taXQoKTsKICAgICBib29sIGRvQ29t
cG9zaXRlKCk7CiAKICAgICAvLyBBY2Nlc3NlZCBvbiBtYWluIHRocmVhZCBvbmx5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTFjNDljMTliM2VlM2JlZDY4
YTA4NWU3MDVmYjExM2FkYjcxNjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTAs
MCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKKworI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKKwor
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBk
YXRlci5oIgorI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworQ0NUZXh0dXJlVXBkYXRlcjo6Q0NUZXh0dXJlVXBkYXRlcigpCit7Cit9CisKK0NDVGV4
dHVyZVVwZGF0ZXI6On5DQ1RleHR1cmVVcGRhdGVyKCkKK3sKK30KKwordm9pZCBDQ1RleHR1cmVV
cGRhdGVyOjphcHBlbmQoTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIExheWVyVGV4dHVyZVVwZGF0
ZXIqIHVwZGF0ZXIsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0KQoreworICAgIEFTU0VSVCh0ZXh0dXJlKTsKKyAgICBBU1NFUlQodXBkYXRlcik7CisK
KyAgICBVcGRhdGVFbnRyeSBlbnRyeTsKKyAgICBlbnRyeS5tX3RleHR1cmUgPSB0ZXh0dXJlOwor
ICAgIGVudHJ5Lm1fdXBkYXRlciA9IHVwZGF0ZXI7CisgICAgZW50cnkubV9zb3VyY2VSZWN0ID0g
c291cmNlUmVjdDsKKyAgICBlbnRyeS5tX2Rlc3RSZWN0ID0gZGVzdFJlY3Q7CisgICAgbV9lbnRy
aWVzLmFwcGVuZChlbnRyeSk7Cit9CisKK3ZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlQWxs
VGV4dHVyZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFs
bG9jYXRvcikKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZW50cmllcy5zaXplKCk7
ICsraSkgeworICAgICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBtX2VudHJpZXNbaV07CisgICAg
ICAgIGVudHJ5Lm1fdXBkYXRlci0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgYWxsb2NhdG9y
LCBlbnRyeS5tX3RleHR1cmUsIGVudHJ5Lm1fc291cmNlUmVjdCwgZW50cnkubV9kZXN0UmVjdCk7
CisgICAgfQorfQorCit9CisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmEyNWVmZTk3M2I2ZTRh
NDE1ZWJhODVkN2JiN2NmMGNhZGQwZDBmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaApAQCAt
MCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDQ1RleHR1cmVVcGRhdGVyX2gKKyNkZWZpbmUg
Q0NUZXh0dXJlVXBkYXRlcl9oCisKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdyYXBoaWNzQ29udGV4
dDNEOworY2xhc3MgTGF5ZXJUZXh0dXJlVXBkYXRlcjsKK2NsYXNzIE1hbmFnZWRUZXh0dXJlOwor
Y2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKKworY2xhc3MgQ0NUZXh0dXJlVXBkYXRlciB7CitwdWJs
aWM6CisgICAgQ0NUZXh0dXJlVXBkYXRlcigpOworICAgIH5DQ1RleHR1cmVVcGRhdGVyKCk7CisK
KyAgICB2b2lkIGFwcGVuZChNYW5hZ2VkVGV4dHVyZSosIExheWVyVGV4dHVyZVVwZGF0ZXIqLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisKKyAg
ICB2b2lkIHVwZGF0ZUFsbFRleHR1cmVzKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9j
YXRvciopOworCitwcml2YXRlOgorICAgIHN0cnVjdCBVcGRhdGVFbnRyeSB7CisgICAgICAgIE1h
bmFnZWRUZXh0dXJlKiBtX3RleHR1cmU7CisgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXIqIG1f
dXBkYXRlcjsKKyAgICAgICAgSW50UmVjdCBtX3NvdXJjZVJlY3Q7CisgICAgICAgIEludFJlY3Qg
bV9kZXN0UmVjdDsKKyAgICB9OworICAgIFZlY3RvcjxVcGRhdGVFbnRyeT4gbV9lbnRyaWVzOwor
fTsKKworfQorCisjZW5kaWYgLy8gQ0NUZXh0dXJlVXBkYXRlcl9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwCmluZGV4IGY0MzA1MjA4ZjVjMDQ1MTVhNjM4MzA1YTI2NjBkN2UyNDc4MTljMGUu
LjgyNmE3NTA2YjU3YTVjZmEzNDhjNTdjZGJhNmUwNTUwYWIyNTM3MTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiY2MvQ0NTY2hlZHVs
ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1Njb3BlZE1haW5UaHJlYWRQcm94eS5oIgogI2luY2x1ZGUg
ImNjL0NDU2Nyb2xsQ29udHJvbGxlci5oIgorI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIu
aCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFRhc2suaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNDE0LDcgKzQxNSwxMyBAQCB2
b2lkIENDVGhyZWFkUHJveHk6OmNvbW1pdE9uQ0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNv
bXBsZXRpb24pCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9sYXllclRyZWVIb3N0SW1w
bC0+YmVnaW5Db21taXQoKTsKLSAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdFRvT25DQ1RocmVh
ZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKKworICAgIG1fbGF5ZXJUcmVlSG9zdC0+YmVn
aW5Db21taXRPbkNDVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOworICAgIENDVGV4
dHVyZVVwZGF0ZXIgdXBkYXRlcjsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCB1cGRhdGVyKTsKKyAg
ICB1cGRhdGVyLnVwZGF0ZUFsbFRleHR1cmVzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQo
KSwgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOworICAg
IG1fbGF5ZXJUcmVlSG9zdC0+ZmluaXNoQ29tbWl0T25DQ1RocmVhZChtX2xheWVyVHJlZUhvc3RJ
bXBsLmdldCgpKTsKKwogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbW1pdENvbXBsZXRlKCk7
CiAKICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111873</attachid>
            <date>2011-10-20 16:48:51 -0700</date>
            <delta_ts>2011-10-21 12:22:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70454-20111020164850.patch</filename>
            <type>text/plain</type>
            <size>28237</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc4NjkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmZThjY2FjYTViNWViN2Yy
YjZhMTVmNjM2YTExM2EwZTdmYmRjNzU4Li41ZTUzYmIzMDQ4ZDZjODlhMTI2M2U3MWFkYzMzZDdh
Y2I0MGRhNjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMTEtMTAtMjAgIEFkcmll
bm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEJhdGNo
IHVwIHRleHR1cmUgdXBsb2FkcyBzbyB0aGF0IHRoZXkgY2FuIGJlIHVwZGF0ZWQgaW5jcmVtZW50
YWxseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA0
NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZWNh
dXNlIHRleHR1cmUgdXBsb2FkcyBjYW4gc29tZXRpbWVzIHRha2UgbW9yZSB0aGFuIGEgZnJhbWUg
dG8KKyAgICAgICAgY29tcGxldGUsIGNvbGxlY3QgYWxsIHRoZSB1cGxvYWRzIHRoYXQgbmVlZCB0
byBvY2N1ciBpbiBhCisgICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgc28gdGhhdCB3ZSBjYW4gZWFz
aWx5IGluY3JlbWVudGFsbHkgdXBsb2FkIHNvbWUgb2YKKyAgICAgICAgdGhlbSwgaW50ZXJsZWF2
aW5nIGlucHV0IGFuZCBkcmF3aW5nIHNvIHRoYXQgdGhlIGNvbXBvc2l0b3IgdGhyZWFkCisgICAg
ICAgIGNvbnRpbnVlcyB0byBhcHBlYXIgcmVzcG9uc2l2ZSBkdXJpbmcgYSBjb21taXQuCisKKyAg
ICAgICAgVGhpcyBjaGFuZ2UgZG9lc24ndCBhY3R1YWxseSBpbnRlcmxlYXZlIHRoZSBjb21taXRz
LCBpdCBqdXN0IHB1c2hlcworICAgICAgICB0aGUgaW5mcmFzdHJ1Y3R1cmUgZm9yIGRvaW5nIHNv
IHVwIHRvIHRoZSBDQ1Byb3h5IGxldmVsIHNvIHRoYXQgYQorICAgICAgICBmdXR1cmUgc2NoZWR1
bGVyIGNhbiBtYWtlIHRoaXMgZGVjaXNpb24uCisKKyAgICAgICAgVmlkZW9MYXllckNocm9taXVt
IGlzIHRoZSBvbmx5IGxheWVyIHR5cGUgdG8gbm90IHVzZSB0aGlzIHN5c3RlbS4gSXQKKyAgICAg
ICAgbmVlZHMgdG8gYmUgY29udmVydGVkIHRvIHVzZSBhIHRleHR1cmUgdXBkYXRlciBmaXJzdCBh
bmQgaXQgaXMgbGVzcyBvZgorICAgICAgICBhIHByaW9yaXR5IHRoYW4gdGhlIHRpbGVkIGxheWVy
cy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aWxlZExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNo
cm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpiZWdpbkNvbW1pdE9uQ0NU
aHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpmaW5pc2hDb21taXRP
bkNDVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Npbmds
ZVRocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Npbmds
ZVRocmVhZFByb3h5Ojpkb0NvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVh
ZFByb3h5Ojpjb21taXRJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OkNDVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6fkNDVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4
dHVyZVVwZGF0ZXI6OnVwZGF0ZUFsbFRleHR1cmVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmg6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6Y29tbWl0T25DQ1RocmVhZCk6CisKIDIwMTEtMTAtMTkg
IFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIElu
c3BlY3Rvcjogd29ya2VyIGluc3BlY3RvciB0aXRsZSBzaG91bGQgY29udGFpbiB3b3JrZXIgVVJM
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKaW5kZXggOTI3NzU5NjIwN2VmZWU2MDMxNDIxOWY3ZjA3YWNmNGNhNjNm
NDZjZS4uMGU1MzI1NjhlNDdjY2Y4YjU3ZGE3YzE1MTFmNmM3ZDM2YWEwMTU4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtMzU0Myw2ICszNTQzLDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbENvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJv
eHkuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlVXBkYXRlci5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGV4dHVyZVVwZGF0ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRM
YXllckNocm9taXVtLmNwcAppbmRleCBmY2FjMjYyOTZkZjhlZGM5ODQ4MTcyZDQ2NDY1OWI0YjBh
ZDEyNDdlLi5lMDk3YjEzNjY5YmIyMGEwZWVmOWE3NDYxNGRiM2M0YjNmOWM0ZmY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExh
eWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBD
YW52YXMyRExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgICAgICAgICAm
JiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIo
KSA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpKTsKIH0KIAotdm9pZCBDYW52YXMyRExh
eWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0Qq
LCBUZXh0dXJlQWxsb2NhdG9yKikKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvcios
IENDVGV4dHVyZVVwZGF0ZXImKQogewogICAgIGlmIChtX2RpcnR5UmVjdC5pc0VtcHR5KCkgfHwg
IWRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJD
aHJvbWl1bS5oCmluZGV4IDBmMzMyZjRlMDI3ZDcwNGY0NGExZDM0OTg3ZjM2N2M2ZjAzYzBkNDYu
Ljk3OTcxNmQ0ODQ5M2E4MzkwZjBiNDc0ZmExNGJhN2FmNDg5YWE4MzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nh
bnZhczJETGF5ZXJDaHJvbWl1bS5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IGNyZWF0ZShHcmFwaGljc0NvbnRl
eHQzRCopOwogICAgIHZpcnR1YWwgfkNhbnZhczJETGF5ZXJDaHJvbWl1bSgpOwogICAgIHZpcnR1
YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRl
eHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBDQ1RleHR1cmVVcGRhdGVyJik7CiAKICAgICB2b2lk
IHNldFRleHR1cmVDaGFuZ2VkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCAyYjY4ZjU1NjU5
MzUwYzMyZTU1NDE5YjJlZWE2MTA4ZTY0MDY4NzA0Li5mODAxOWMwZDhhNjdhNjE4NWM0NDM3NDU4
YTY4Zjg5M2YwMDNhNmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC01Myw2ICs1Myw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBDQ0xheWVyVHJl
ZUhvc3Q7CitjbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7
CiAKIGNsYXNzIENDTGF5ZXJEZWxlZ2F0ZSB7CkBAIC0xNTksNyArMTYwLDcgQEAgcHVibGljOgog
ICAgIC8vIFRoZXNlIG1ldGhvZHMgdHlwaWNhbGx5IG5lZWQgdG8gYmUgb3ZlcndyaXR0ZW4gYnkg
ZGVyaXZlZCBjbGFzc2VzLgogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNz
Q29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRv
ciosIENDVGV4dHVyZVVwZGF0ZXImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNNYXNrKGJv
b2wpIHt9CiAgICAgdmlydHVhbCB2b2lkIHVucmVzZXJ2ZUNvbnRlbnRzVGV4dHVyZSgpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBiaW5kQ29udGVudHNUZXh0dXJlKCkgeyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRM
YXllckNocm9taXVtLmNwcAppbmRleCAzMjcwMjI4Njg1ODg4Nzk5OTc1MDNlMTRmMDlkMDk0YWZh
NDdiMTdjLi5kYmRlZTNhNTg1Mjg5Y2EzMDMwMmIyZmMxMDY4ZjExZTIzMjBjZGQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVy
Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJN
YW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlICJjYy9D
Q0xheWVySW1wbC5oIgorI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRl
ICJjYy9DQ1RpbGVkTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAK
QEAgLTE1MCw3ICsxNTEsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVl
SG9zdChDQ0xheWVyVHJlZUhvc3QqIGhvc3QpCiAgICAgICAgIGlzTm9uQ29tcG9zaXRlZENvbnRl
bnQoKSA/IENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyA6IENDTGF5ZXJUaWxpbmdE
YXRhOjpIYXNCb3JkZXJUZXhlbHMpOwogfQogCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVy
ZUFsbG9jYXRvciogYWxsb2NhdG9yKQordm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxv
Y2F0b3IqIGFsbG9jYXRvciwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKIHsKICAgICAvLyBQ
YWludGluZyBjb3VsZCBjYXVzZSBjb21wb3NpdGluZyB0byBnZXQgdHVybmVkIG9mZiwgd2hpY2gg
bWF5IGNhdXNlIHRoZSB0aWxlciB0byBiZWNvbWUgaW52YWxpZGF0ZWQgbWlkLXVwZGF0ZS4KICAg
ICBpZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRVcGRhdGVSZWN0LmlzRW1wdHkoKSB8fCAh
bV90aWxlci0+bnVtVGlsZXMoKSkKQEAgLTIwMCw5ICsyMDEsOCBAQCB2b2lkIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgVAogICAgICAgICAgICAgY29uc3QgR0MzRGludCBmaWx0ZXIgPSBtX3RpbGVyLT5oYXNC
b3JkZXJUZXhlbHMoKSA/IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIgOiBHcmFwaGljc0NvbnRl
eHQzRDo6TkVBUkVTVDsKICAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJh
bWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV9NSU5fRklMVEVSLCBmaWx0ZXIpKTsKICAgICAgICAgICAgIEdMQyhjb250ZXh0LCBj
b250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBmaWx0ZXIpKTsKLSAgICAgICAgICAg
IEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgMCkpOwogCi0gICAgICAgICAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0
dXJlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHRpbGUtPnRleHR1cmUoKSwgc291cmNlUmVjdCwg
ZGVzdFJlY3QpOworICAgICAgICAgICAgdXBkYXRlci5hcHBlbmQodGlsZS0+dGV4dHVyZSgpLCB0
ZXh0dXJlVXBkYXRlcigpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiAgICAgICAgICAgICB0aWxl
LT5jbGVhckRpcnR5KCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1
bS5oCmluZGV4IDIzNjNiODA5ZjkxODQ3M2YwOWE1YjkwMDZiMmQxYzc5MjFjMTllZGQuLmQ1NDhm
MWE4OGUwYjk1ZDJjZDZkNjM3YWVjNzdmYmE1NWE1YTUxNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflRpbGVk
TGF5ZXJDaHJvbWl1bSgpOwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0
dXJlQWxsb2NhdG9yKiwgQ0NUZXh0dXJlVXBkYXRlciYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJ
c01hc2soYm9vbCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVy
SW1wbCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMGViNmNmYjgzNDhh
NDk5ZWRjOWFhY2Y5MGIzOGI5NTg1MjgwYjAyNC4uZGVlYWVlMTExNDcxMmFhODM4MGRlM2RkNGQy
ZWY3Yzk4OTdlMDE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCkBAIC03Niw3
ICs3Niw3IEBAIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2VzKCkKICAg
ICAgICAgbV90ZXh0dXJlc1tpXS5tX3RleHR1cmUuY2xlYXIoKTsKIH0KIAotdm9pZCBWaWRlb0xh
eWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKK3ZvaWQgVmlkZW9MYXllckNo
cm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIENDVGV4dHVyZVVwZGF0ZXImKQogewog
ICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9wcm92aWRlcikKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9M
YXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9WaWRlb0xheWVyQ2hyb21pdW0uaAppbmRleCBmMzdiNmJhM2RkNTYxZGUzNWNkM2NhY2M5YmNj
MzMzNDU1Yzk5ZjE4Li5kNDYzYmNjYWY1N2RhYzczYmRkYjhjNWIyZjY1MTlhMDkzYWM3NWU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRl
b0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0Nv
bnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBD
Q1RleHR1cmVVcGRhdGVyJik7CiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQgcmVsZWFzZVByb3ZpZGVyKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVy
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
V2ViR0xMYXllckNocm9taXVtLmNwcAppbmRleCA1Y2ZiNjZhYzljNzFkMDk5YTI0ZmNiYTkwNzRl
OWI3ZGI4NmQ0ZDdiLi5kNDFmNjVlODBmYzI3MjQ4ZGNkNzg4OTc4NWU1MTJmZTk2ZDVhYmJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgYm9vbCBX
ZWJHTExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIChtX2Nv
bnRleHQgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmdldEdyYXBoaWNzUmVzZXRTdGF0
dXNBUkIoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpOwogfQogCi12b2lkIFdlYkdM
TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQz
RCogcmVuZGVyZXJDb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKikKK3ZvaWQgV2ViR0xMYXllckNo
cm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5k
ZXJlckNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqLCBDQ1RleHR1cmVVcGRhdGVyJikKIHsKICAg
ICBpZiAoIWRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJD
aHJvbWl1bS5oCmluZGV4IDcyMzZiYWM3ZmU0ODZiYjJjMjRjNjU2NTIyNjJhMDYzOTUyYjBlNzQu
LjkyNjEyMDFkYWMzOGFkMjc1N2VmMDhhNmZiYzFkY2FlNTI3MTRiYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdM
TGF5ZXJDaHJvbWl1bS5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5X
ZWJHTExheWVyQ2hyb21pdW0oKTsKIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGlj
c0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3Iq
LCBDQ1RleHR1cmVVcGRhdGVyJik7CiAgICAgdm9pZCBzZXRUZXh0dXJlVXBkYXRlZCgpOwogICAg
IGJvb2wgcGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCBjZTRjYjZjNzgwMTY1OGJjYzYzYzc0ZWVh
MDQ4ZTM4YzQ2NDg5MWJlLi4zMGUxZjhmNzk2NTE1N2FkNGJjZTVlODY4ODQzYmM0ZGZjYTk3Nzg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTExMSwyMiArMTExLDI0IEBA
IHZvaWQgQ0NMYXllclRyZWVIb3N0OjphbmltYXRlQW5kTGF5b3V0KGRvdWJsZSBmcmFtZUJlZ2lu
VGltZSkKICAgICBtX2FuaW1hdGluZyA9IGZhbHNlOwogfQogCit2b2lkIENDTGF5ZXJUcmVlSG9z
dDo6YmVnaW5Db21taXRPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhvc3RJbXBsKQor
eworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgVFJBQ0VfRVZFTlQo
IkNDTGF5ZXJUcmVlSG9zdDo6Y29tbWl0VG8iLCB0aGlzLCAwKTsKKworICAgIGNvbnRlbnRzVGV4
dHVyZU1hbmFnZXIoKS0+cmVkdWNlTWVtb3J5VG9MaW1pdChUZXh0dXJlTWFuYWdlcjo6cmVjbGFp
bUxpbWl0Qnl0ZXMoKSk7CisgICAgY29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5kZWxldGVFdmlj
dGVkVGV4dHVyZXMoaG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKK30KKwog
Ly8gVGhpcyBmdW5jdGlvbiBjb21taXRzIHRoZSBDQ0xheWVyVHJlZUhvc3QgdG8gYW4gaW1wbCB0
cmVlLiBXaGVuIG1vZGlmeWluZwogLy8gdGhpcyBmdW5jdGlvbiwga2VlcCBpbiBtaW5kIHRoYXQg
dGhlIGZ1bmN0aW9uICpydW5zKiBvbiB0aGUgaW1wbCB0aHJlYWQhIEFueQogLy8gY29kZSB0aGF0
IGlzIGxvZ2ljYWxseSBhIG1haW4gdGhyZWFkIG9wZXJhdGlvbiwgZS5nLiBkZWxldGlvbiBvZiBh
IExheWVyQ2hyb21pdW0sCiAvLyBzaG91bGQgYmUgZGVsYXllZCB1bnRpbCB0aGUgQ0NMYXllclRy
ZWVIb3N0Ojpjb21taXRDb21wbGV0ZSwgd2hpY2ggd2lsbCBydW4KIC8vIGFmdGVyIHRoZSBjb21t
aXQsIGJ1dCBvbiB0aGUgbWFpbiB0aHJlYWQuCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y29tbWl0
VG9PbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhvc3RJbXBsKQordm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OmZpbmlzaENvbW1pdE9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaG9z
dEltcGwpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKLSAgICBUUkFD
RV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojpjb21taXRUbyIsIHRoaXMsIDApOwogICAgIGhvc3RJ
bXBsLT5zZXRTb3VyY2VGcmFtZU51bWJlcihmcmFtZU51bWJlcigpKTsKLQotICAgIGNvbnRlbnRz
VGV4dHVyZU1hbmFnZXIoKS0+cmVkdWNlTWVtb3J5VG9MaW1pdChUZXh0dXJlTWFuYWdlcjo6cmVj
bGFpbUxpbWl0Qnl0ZXMoKSk7Ci0gICAgY29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5kZWxldGVF
dmljdGVkVGV4dHVyZXMoaG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKLQot
ICAgIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV91cGRhdGVMaXN0LCBob3N0SW1wbC0+Y29u
dGV4dCgpLCBob3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOwotCiAgICAgaG9z
dEltcGwtPnNldFZpc2libGUobV92aXNpYmxlKTsKICAgICBob3N0SW1wbC0+c2V0Wm9vbUFuaW1h
dG9yVHJhbnNmb3JtKG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtKTsKICAgICBob3N0SW1wbC0+c2V0
Vmlld3BvcnQodmlld3BvcnRTaXplKCkpOwpAQCAtMzU4LDEwICszNjAsMTAgQEAgdm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1
cmZhY2VMYXllckxpc3QKICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dCwgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRv
cikKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIENDVGV4
dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiB7Ci0gICAgZm9yIChpbnQgc3VyZmFjZUluZGV4ID0gcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdC5zaXplKCkgLSAxOyBzdXJmYWNlSW5kZXggPj0gMCA7IC0tc3Vy
ZmFjZUluZGV4KSB7Ci0gICAgICAgIExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciA9
IHJlbmRlclN1cmZhY2VMYXllckxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKKyAgICBmb3IgKGlu
dCBzdXJmYWNlSW5kZXggPSBtX3VwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4ID49
IDAgOyAtLXN1cmZhY2VJbmRleCkgeworICAgICAgICBMYXllckNocm9taXVtKiByZW5kZXJTdXJm
YWNlTGF5ZXIgPSBtX3VwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKICAgICAgICAgUmVu
ZGVyU3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZUxheWVyLT5y
ZW5kZXJTdXJmYWNlKCk7CiAgICAgICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlKTsKIApAQCAtMzc1
LDEyICszNzcsMTIgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGEKICAgICAgICAgICAgIGlmIChs
YXllci0+cmVuZGVyU3VyZmFjZSgpICYmIGxheWVyLT5yZW5kZXJTdXJmYWNlKCkgIT0gcmVuZGVy
U3VyZmFjZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgdXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcyhsYXllciwgY29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICAgICAg
ICAgIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobGF5ZXIsIGNvbnRleHQsIGFsbG9jYXRvciwg
dXBkYXRlcik7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKExheWVyQ2hyb21pdW0qIGxheWVyLCBHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQordm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoTGF5ZXJDaHJvbWl1bSogbGF5
ZXIsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiB7CiAgICAgaWYgKGxheWVyLT5ib3VuZHMo
KS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM4OSwxMiArMzkxLDEyIEBAIHZvaWQg
Q0NMYXllclRyZWVIb3N0Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKExheWVyQ2hyb21pdW0q
IGxheWVyLCBHcmFwaGljc0NvCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChsYXllci0+bWFz
a0xheWVyKCkpCi0gICAgICAgIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobGF5ZXItPm1hc2tM
YXllcigpLCBjb250ZXh0LCBhbGxvY2F0b3IpOworICAgICAgICB1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKGxheWVyLT5tYXNrTGF5ZXIoKSwgY29udGV4dCwgYWxsb2NhdG9yLCB1cGRhdGVyKTsK
ICAgICBpZiAobGF5ZXItPnJlcGxpY2FMYXllcigpKQotICAgICAgICB1cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKGxheWVyLT5yZXBsaWNhTGF5ZXIoKSwgY29udGV4dCwgYWxsb2NhdG9yKTsKKyAg
ICAgICAgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhsYXllci0+cmVwbGljYUxheWVyKCksIGNv
bnRleHQsIGFsbG9jYXRvciwgdXBkYXRlcik7CiAKICAgICBpZiAobGF5ZXItPmRyYXdzQ29udGVu
dCgpKQotICAgICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCBh
bGxvY2F0b3IpOworICAgICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250
ZXh0LCBhbGxvY2F0b3IsIHVwZGF0ZXIpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y2xl
YXJQZW5kaW5nVXBkYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggOTYwYzE3
MDA1MTVjZTE4NWMyYjZhMGVlNDgwN2Q4OWM0NmQyNzc0MS4uYjFkMTNiYWJmZGQzMmE0NDA5Zjlj
MjUwYmMzYWI3YzIxNDU0MTkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTQy
LDYgKzQyLDcgQEAgY2xhc3MgR3JDb250ZXh0OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDQ0xheWVyVHJlZUhvc3RJbXBsOworY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDNEOwogY2xhc3MgTGF5ZXJDaHJvbWl1bTsKIGNsYXNzIExheWVyUGFpbnRl
ckNocm9taXVtOwpAQCAtOTgsOCArOTksOSBAQCBwdWJsaWM6CiAKICAgICAvLyBDQ0xheWVyVHJl
ZUhvc3QgaW50ZXJmYWNlIHRvIENDUHJveHkuCiAgICAgdm9pZCBhbmltYXRlQW5kTGF5b3V0KGRv
dWJsZSBmcmFtZUJlZ2luVGltZSk7CisgICAgdm9pZCBiZWdpbkNvbW1pdE9uQ0NUaHJlYWQoQ0NM
YXllclRyZWVIb3N0SW1wbCopOworICAgIHZvaWQgZmluaXNoQ29tbWl0T25DQ1RocmVhZChDQ0xh
eWVyVHJlZUhvc3RJbXBsKik7CiAgICAgdm9pZCBjb21taXRDb21wbGV0ZSgpOwotICAgIHZvaWQg
Y29tbWl0VG9PbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKTsKICAgICBQYXNzUmVmUHRy
PEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVMYXllclRyZWVIb3N0Q29udGV4dDNEKCk7CiAgICAg
dmlydHVhbCBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGNyZWF0ZUxheWVyVHJlZUhv
c3RJbXBsKCk7CiAgICAgdm9pZCBkaWRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dChib29sIHN1Y2Nl
c3MpOwpAQCAtMTUxLDYgKzE1Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlTGF5ZXJz
KCk7CiAKKyAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0
M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgQ0NUZXh0dXJlVXBkYXRlciYpOwogICAgIHZvaWQgYXBw
bHlTY3JvbGxEZWx0YXMoY29uc3QgQ0NTY3JvbGxVcGRhdGVTZXQmKTsKIHByb3RlY3RlZDoKICAg
ICBDQ0xheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiwgUGFzc1JlZlB0cjxMYXll
ckNocm9taXVtPiByb290TGF5ZXIsIGNvbnN0IENDU2V0dGluZ3MmKTsKQEAgLTE2MSw4ICsxNjQs
NyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJM
aXN0Jik7CiAgICAgdm9pZCB1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSopOwotICAgIHZvaWQg
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb25zdCBMYXllckxpc3QmLCBHcmFwaGljc0NvbnRl
eHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKLSAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoTGF5ZXJDaHJvbWl1bSosIEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRv
ciopOworICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhMYXllckNocm9taXVtKiwg
R3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgQ0NUZXh0dXJlVXBkYXRlciYp
OwogICAgIHZvaWQgY2xlYXJQZW5kaW5nVXBkYXRlKCk7CiAKICAgICBpbnQgbV9jb21wb3NpdG9y
SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXgg
NjBlNDc5NTJlOGE1ZTE5ZTU2Njc4OGM0ZjFmODA0NjFkOGM2ZDdhMy4uOGRmOWZmMzlmZDU4ZjQ4
Y2VmNDM0ZWFhMjA3YmZlMTNlY2I0OGY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhv
c3QuaCIKICNpbmNsdWRlICJjYy9DQ01haW5UaHJlYWRUYXNrLmgiCiAjaW5jbHVkZSAiY2MvQ0NT
Y3JvbGxDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV1RGOwpAQCAtMTQx
LDExICsxNDIsMjMgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpsb3NlQ29tcG9zaXRvckNv
bnRleHQoaW50IG51bVRpbWVzKQogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzZXROZWVkc0Nv
bW1pdCgpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKKyAgICBkb0Nv
bW1pdCgpOworfQorCit2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KCkKK3sKKyAg
ICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwogICAgIC8vIENvbW1pdCBpbW1lZGlh
dGVseQogICAgIHsKICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7CiAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7Ci0gICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+Y29tbWl0VG9PbkNDVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwor
CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+YmVnaW5Db21taXRPbkNDVGhyZWFkKG1fbGF5ZXJU
cmVlSG9zdEltcGwuZ2V0KCkpOworICAgICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7Cisg
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVy
VHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4
dHVyZUFsbG9jYXRvcigpLCB1cGRhdGVyKTsKKyAgICAgICAgdXBkYXRlci51cGRhdGVBbGxUZXh0
dXJlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5m
aW5pc2hDb21taXRPbkNDVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOworCiAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbW1pdENvbXBsZXRlKCk7CiAKICNpZiAhQVNTRVJU
X0RJU0FCTEVECkBAIC0yNDcsMTcgKzI2MCw5IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6
Y29tbWl0SWZOZWVkZWQoKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7
CiAKLSAgICAvLyBVcGRhdGUKICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOwog
Ci0gICAgLy8gQ29tbWl0Ci0gICAgewotICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQg
aW1wbDsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YmVnaW5Db21taXQoKTsKLSAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRUb09uQ0NUaHJlYWQobV9sYXllclRyZWVIb3N0SW1w
bC5nZXQoKSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbW1pdENvbXBsZXRlKCk7
Ci0gICAgfQotICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKKyAgICBkb0Nv
bW1pdCgpOwogfQogCiBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tcG9zaXRlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRleCAyODRkZjA1YjFiOTg0MDI5YjY2
NDMzMTcwNzA4ZDE5YjU0NWRkNjQ2Li45NTdiZTcxYjAzZmU3MjY4YzNlNjRkZWU0YmU4MzE4OWU5
OTRkZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCkBAIC02MSw2ICs2
MSw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ0NTaW5nbGVUaHJlYWRQcm94eShDQ0xheWVy
VHJlZUhvc3QqKTsKICAgICBib29sIHJlY3JlYXRlQ29udGV4dElmTmVlZGVkKCk7CiAgICAgdm9p
ZCBjb21taXRJZk5lZWRlZCgpOworICAgIHZvaWQgZG9Db21taXQoKTsKICAgICBib29sIGRvQ29t
cG9zaXRlKCk7CiAKICAgICAvLyBBY2Nlc3NlZCBvbiBtYWluIHRocmVhZCBvbmx5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTFjNDljMTliM2VlM2JlZDY4
YTA4NWU3MDVmYjExM2FkYjcxNjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTAs
MCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKKworI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKKwor
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBk
YXRlci5oIgorI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworQ0NUZXh0dXJlVXBkYXRlcjo6Q0NUZXh0dXJlVXBkYXRlcigpCit7Cit9CisKK0NDVGV4
dHVyZVVwZGF0ZXI6On5DQ1RleHR1cmVVcGRhdGVyKCkKK3sKK30KKwordm9pZCBDQ1RleHR1cmVV
cGRhdGVyOjphcHBlbmQoTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIExheWVyVGV4dHVyZVVwZGF0
ZXIqIHVwZGF0ZXIsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0KQoreworICAgIEFTU0VSVCh0ZXh0dXJlKTsKKyAgICBBU1NFUlQodXBkYXRlcik7CisK
KyAgICBVcGRhdGVFbnRyeSBlbnRyeTsKKyAgICBlbnRyeS5tX3RleHR1cmUgPSB0ZXh0dXJlOwor
ICAgIGVudHJ5Lm1fdXBkYXRlciA9IHVwZGF0ZXI7CisgICAgZW50cnkubV9zb3VyY2VSZWN0ID0g
c291cmNlUmVjdDsKKyAgICBlbnRyeS5tX2Rlc3RSZWN0ID0gZGVzdFJlY3Q7CisgICAgbV9lbnRy
aWVzLmFwcGVuZChlbnRyeSk7Cit9CisKK3ZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlQWxs
VGV4dHVyZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFs
bG9jYXRvcikKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZW50cmllcy5zaXplKCk7
ICsraSkgeworICAgICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBtX2VudHJpZXNbaV07CisgICAg
ICAgIGVudHJ5Lm1fdXBkYXRlci0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgYWxsb2NhdG9y
LCBlbnRyeS5tX3RleHR1cmUsIGVudHJ5Lm1fc291cmNlUmVjdCwgZW50cnkubV9kZXN0UmVjdCk7
CisgICAgfQorfQorCit9CisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmEyNWVmZTk3M2I2ZTRh
NDE1ZWJhODVkN2JiN2NmMGNhZGQwZDBmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaApAQCAt
MCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDQ1RleHR1cmVVcGRhdGVyX2gKKyNkZWZpbmUg
Q0NUZXh0dXJlVXBkYXRlcl9oCisKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdyYXBoaWNzQ29udGV4
dDNEOworY2xhc3MgTGF5ZXJUZXh0dXJlVXBkYXRlcjsKK2NsYXNzIE1hbmFnZWRUZXh0dXJlOwor
Y2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKKworY2xhc3MgQ0NUZXh0dXJlVXBkYXRlciB7CitwdWJs
aWM6CisgICAgQ0NUZXh0dXJlVXBkYXRlcigpOworICAgIH5DQ1RleHR1cmVVcGRhdGVyKCk7CisK
KyAgICB2b2lkIGFwcGVuZChNYW5hZ2VkVGV4dHVyZSosIExheWVyVGV4dHVyZVVwZGF0ZXIqLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisKKyAg
ICB2b2lkIHVwZGF0ZUFsbFRleHR1cmVzKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9j
YXRvciopOworCitwcml2YXRlOgorICAgIHN0cnVjdCBVcGRhdGVFbnRyeSB7CisgICAgICAgIE1h
bmFnZWRUZXh0dXJlKiBtX3RleHR1cmU7CisgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXIqIG1f
dXBkYXRlcjsKKyAgICAgICAgSW50UmVjdCBtX3NvdXJjZVJlY3Q7CisgICAgICAgIEludFJlY3Qg
bV9kZXN0UmVjdDsKKyAgICB9OworICAgIFZlY3RvcjxVcGRhdGVFbnRyeT4gbV9lbnRyaWVzOwor
fTsKKworfQorCisjZW5kaWYgLy8gQ0NUZXh0dXJlVXBkYXRlcl9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwCmluZGV4IGY0MzA1MjA4ZjVjMDQ1MTVhNjM4MzA1YTI2NjBkN2UyNDc4MTljMGUu
LmI1NWZiMWIyZjhkMGJhY2RiNmJlNmI5NzA4NjNjMGE5MTYxMWM3NGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiY2MvQ0NTY2hlZHVs
ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1Njb3BlZE1haW5UaHJlYWRQcm94eS5oIgogI2luY2x1ZGUg
ImNjL0NDU2Nyb2xsQ29udHJvbGxlci5oIgorI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIu
aCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFRhc2suaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNDE0LDcgKzQxNSwxMyBAQCB2
b2lkIENDVGhyZWFkUHJveHk6OmNvbW1pdE9uQ0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNv
bXBsZXRpb24pCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9sYXllclRyZWVIb3N0SW1w
bC0+YmVnaW5Db21taXQoKTsKLSAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdFRvT25DQ1RocmVh
ZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKKworICAgIG1fbGF5ZXJUcmVlSG9zdC0+YmVn
aW5Db21taXRPbkNDVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOworICAgIENDVGV4
dHVyZVVwZGF0ZXIgdXBkYXRlcjsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBtX2xheWVyVHJlZUhv
c3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSwgdXBkYXRlcik7CisgICAgdXBkYXRl
ci51cGRhdGVBbGxUZXh0dXJlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICBtX2xheWVy
VHJlZUhvc3QtPmZpbmlzaENvbW1pdE9uQ0NUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQo
KSk7CisKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5jb21taXRDb21wbGV0ZSgpOwogCiAgICAg
Y29tcGxldGlvbi0+c2lnbmFsKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112001</attachid>
            <date>2011-10-21 12:22:41 -0700</date>
            <delta_ts>2011-10-24 15:05:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70454-20111021122240.patch</filename>
            <type>text/plain</type>
            <size>28772</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTgxMTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmYjUwYTVkNzZkMjJiOTQ4
MTZmOTFhZjBlMWI0NTBlMmFjOTliNzVmLi5jYTE4MjdmYWFhYjRkYWQ2NWUyZWI5ZjhmZTU2MDVk
YjMwNDA3OWVjIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTEtMTAtMjEgIEFkcmll
bm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEJhdGNo
IHVwIHRleHR1cmUgdXBsb2FkcyBzbyB0aGF0IHRoZXkgY2FuIGJlIHVwZGF0ZWQgaW5jcmVtZW50
YWxseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA0
NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZWNh
dXNlIHRleHR1cmUgdXBsb2FkcyBjYW4gc29tZXRpbWVzIHRha2UgbW9yZSB0aGFuIGEgZnJhbWUg
dG8KKyAgICAgICAgY29tcGxldGUsIGNvbGxlY3QgYWxsIHRoZSB1cGxvYWRzIHRoYXQgbmVlZCB0
byBvY2N1ciBpbiBhCisgICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgc28gdGhhdCB3ZSBjYW4gZWFz
aWx5IGluY3JlbWVudGFsbHkgdXBsb2FkIHNvbWUgb2YKKyAgICAgICAgdGhlbSwgaW50ZXJsZWF2
aW5nIGlucHV0IGFuZCBkcmF3aW5nIHNvIHRoYXQgdGhlIGNvbXBvc2l0b3IgdGhyZWFkCisgICAg
ICAgIGNvbnRpbnVlcyB0byBhcHBlYXIgcmVzcG9uc2l2ZSBkdXJpbmcgYSBjb21taXQuCisKKyAg
ICAgICAgVGhpcyBjaGFuZ2UgZG9lc24ndCBhY3R1YWxseSBpbnRlcmxlYXZlIHRoZSBjb21taXRz
LCBpdCBqdXN0IHB1c2hlcworICAgICAgICB0aGUgaW5mcmFzdHJ1Y3R1cmUgZm9yIGRvaW5nIHNv
IHVwIHRvIHRoZSBDQ1Byb3h5IGxldmVsIHNvIHRoYXQgYQorICAgICAgICBmdXR1cmUgc2NoZWR1
bGVyIGNhbiBtYWtlIHRoaXMgZGVjaXNpb24uCisKKyAgICAgICAgVmlkZW9MYXllckNocm9taXVt
IGlzIHRoZSBvbmx5IGxheWVyIHR5cGUgdG8gbm90IHVzZSB0aGlzIHN5c3RlbS4gSXQKKyAgICAg
ICAgbmVlZHMgdG8gYmUgY29udmVydGVkIHRvIHVzZSBhIHRleHR1cmUgdXBkYXRlciBmaXJzdCBh
bmQgaXQgaXMgbGVzcyBvZgorICAgICAgICBhIHByaW9yaXR5IHRoYW4gdGhlIHRpbGVkIGxheWVy
cy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aWxlZExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNo
cm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpiZWdpbkNvbW1pdE9uSW1w
bFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaENvbW1p
dE9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
aW5nbGVUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
aW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVU
aHJlYWRQcm94eTo6Y29tbWl0SWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRhdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6On5DQ1RleHR1cmVVcGRhdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RleHR1cmVVcGRhdGVyOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBk
YXRlcjo6Y2xlYXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGV4dHVyZVVwZGF0ZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFBy
b3h5Ojpjb21taXRPbkltcGxUaHJlYWQpOgorCiAyMDExLTEwLTIxICBTaW1vbiBGcmFzZXIgIDxz
aW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBXaW5kb3dzIGJ1aWxkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IDM0NjEzMzUyZjZmZjNkMWM2YzQzZGM5NGU0ZTRlZmQ2YzEzZTc3YjIu
LjJlZjRkYjA4ZTI2YjNiZjhjOWUwM2M5OTQxNjlhMTVkMWEyYTQwMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTM1NTIsNiArMzU1Miw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY3JvbGxDb250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmgn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVw
ZGF0ZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmVVcGRhdGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJD
aHJvbWl1bS5jcHAKaW5kZXggZmNhYzI2Mjk2ZGY4ZWRjOTg0ODE3MmQ0NjQ2NTliNGIwYWQxMjQ3
ZS4uZTA5N2IxMzY2OWJiMjBhMGVlZjlhNzQ2MTRkYjNjNGIzZjljNGZmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNo
cm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCkBAIC02NCw3ICs2NCw3IEBAIGJvb2wgQ2FudmFz
MkRMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdAogICAgICAgICAgICAgJiYgKG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgPT0g
R3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SKSk7CiB9CiAKLXZvaWQgQ2FudmFzMkRMYXllckNo
cm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4
dHVyZUFsbG9jYXRvciopCit2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBDQ1Rl
eHR1cmVVcGRhdGVyJikKIHsKICAgICBpZiAobV9kaXJ0eVJlY3QuaXNFbXB0eSgpIHx8ICFkcmF3
c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21p
dW0uaAppbmRleCAwZjMzMmY0ZTAyN2Q3MDRmNDRhMWQzNDk4N2YzNjdjNmYwM2MwZDQ2Li45Nzk3
MTZkNDg0OTNhODM5MGYwYjQ3NGZhMTRiYTdhZjQ4OWFhODM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMy
RExheWVyQ2hyb21pdW0uaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8Q2FudmFzMkRMYXllckNocm9taXVtPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0Qq
KTsKICAgICB2aXJ0dWFsIH5DYW52YXMyRExheWVyQ2hyb21pdW0oKTsKICAgICB2aXJ0dWFsIGJv
b2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0Qq
LCBUZXh0dXJlQWxsb2NhdG9yKiwgQ0NUZXh0dXJlVXBkYXRlciYpOwogCiAgICAgdm9pZCBzZXRU
ZXh0dXJlQ2hhbmdlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggY2VkZjJlYzUyMDE5ZTVi
NWU3OGZkMjY4ZWExNWM5YmM5NjUzMThlOS4uODhmMzUxZDBlNDdkNzNjNDNjMWQ5NGVjNjIwYTY3
YWRhZjIxNzQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtNTMsNiArNTMsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0
OworY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogCiBj
bGFzcyBDQ0xheWVyRGVsZWdhdGUgewpAQCAtMTU5LDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICAv
LyBUaGVzZSBtZXRob2RzIHR5cGljYWxseSBuZWVkIHRvIGJlIG92ZXJ3cml0dGVuIGJ5IGRlcml2
ZWQgY2xhc3Nlcy4KICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRl
eHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBD
Q1RleHR1cmVVcGRhdGVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldElzTWFzayhib29sKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgdW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKCkgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGJpbmRDb250ZW50c1RleHR1cmUoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVy
Q2hyb21pdW0uY3BwCmluZGV4IDMyNzAyMjg2ODU4ODg3OTk5NzUwM2UxNGYwOWQwOTRhZmE0N2Ix
N2MuLmRiZGVlM2E1ODUyODljYTMwMzAyYjJmYzEwNjhmMTFlMjMyMGNkZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGlsZWRMYXllckNocm9taXVtLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIk1hbmFn
ZWRUZXh0dXJlLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogI2luY2x1ZGUgImNjL0NDTGF5
ZXJJbXBsLmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNj
L0NDVGlsZWRMYXllckltcGwuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIApAQCAt
MTUwLDcgKzE1MSw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpzZXRMYXllclRyZWVIb3N0
KENDTGF5ZXJUcmVlSG9zdCogaG9zdCkKICAgICAgICAgaXNOb25Db21wb3NpdGVkQ29udGVudCgp
ID8gQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzIDogQ0NMYXllclRpbGluZ0RhdGE6
Okhhc0JvcmRlclRleGVscyk7CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxs
b2NhdG9yKiBhbGxvY2F0b3IpCit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRv
ciogYWxsb2NhdG9yLCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQogewogICAgIC8vIFBhaW50
aW5nIGNvdWxkIGNhdXNlIGNvbXBvc2l0aW5nIHRvIGdldCB0dXJuZWQgb2ZmLCB3aGljaCBtYXkg
Y2F1c2UgdGhlIHRpbGVyIHRvIGJlY29tZSBpbnZhbGlkYXRlZCBtaWQtdXBkYXRlLgogICAgIGlm
IChtX3NraXBzRHJhdyB8fCBtX3JlcXVlc3RlZFVwZGF0ZVJlY3QuaXNFbXB0eSgpIHx8ICFtX3Rp
bGVyLT5udW1UaWxlcygpKQpAQCAtMjAwLDkgKzIwMSw4IEBAIHZvaWQgVGlsZWRMYXllckNocm9t
aXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBUCiAgICAgICAgICAgICBjb25zdCBHQzNEaW50IGZpbHRlciA9IG1fdGlsZXItPmhhc0JvcmRl
clRleGVscygpID8gR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUiA6IEdyYXBoaWNzQ29udGV4dDNE
OjpORUFSRVNUOwogICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRl
cmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFX01JTl9GSUxURVIsIGZpbHRlcikpOwogICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRl
eHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIGZpbHRlcikpOwotICAgICAgICAgICAgR0xD
KGNvbnRleHQsIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCAwKSk7CiAKLSAgICAgICAgICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVS
ZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgdGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0
UmVjdCk7CisgICAgICAgICAgICB1cGRhdGVyLmFwcGVuZCh0aWxlLT50ZXh0dXJlKCksIHRleHR1
cmVVcGRhdGVyKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKICAgICAgICAgICAgIHRpbGUtPmNs
ZWFyRGlydHkoKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgK
aW5kZXggMjM2M2I4MDlmOTE4NDczZjA5YTViOTAwNmIyZDFjNzkyMWMxOWVkZC4uZDU0OGYxYTg4
ZTBiOTVkMmNkNmQ2MzdhZWM3N2ZiYTU1YTVhNTE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9t
aXVtLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+VGlsZWRMYXll
ckNocm9taXVtKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyhHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVB
bGxvY2F0b3IqLCBDQ1RleHR1cmVVcGRhdGVyJik7CiAgICAgdmlydHVhbCB2b2lkIHNldElzTWFz
ayhib29sKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBs
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcAppbmRleCAwZWI2Y2ZiODM0OGE0OTll
ZGM5YWFjZjkwYjM4Yjk1ODUyODBiMDI0Li5kZWVhZWUxMTE0NzEyYWE4MzgwZGUzZGQ0ZDJlZjdj
OTg5N2UwMTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTc2LDcgKzc2
LDcgQEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMoKQogICAgICAg
ICBtX3RleHR1cmVzW2ldLm1fdGV4dHVyZS5jbGVhcigpOwogfQogCi12b2lkIFZpZGVvTGF5ZXJD
aHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQordm9pZCBWaWRlb0xheWVyQ2hyb21p
dW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgQ0NUZXh0dXJlVXBkYXRlciYpCiB7CiAgICAg
aWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Byb3ZpZGVyKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVy
Q2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Zp
ZGVvTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGYzN2I2YmEzZGQ1NjFkZTM1Y2QzY2FjYzliY2MzMzM0
NTVjOTlmMTguLmQ0NjNiY2NhZjU3ZGFjNzNiZGRiOGM1YjJmNjUxOWEwOTNhYzc1ZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5
ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4
dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIENDVGV4
dHVyZVVwZGF0ZXImKTsKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCByZWxlYXNlUHJvdmlkZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJv
bWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDVjZmI2NmFjOWM3MWQwOTlhMjRmY2JhOTA3NGU5Yjdk
Yjg2ZDRkN2IuLmQ0MWY2NWU4MGZjMjcyNDhkY2Q3ODg5Nzg1ZTUxMmZlOTZkNWFiYmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5
ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcApAQCAtNjUsNyArNjUsNyBAQCBib29sIFdlYkdM
TGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gKG1fY29udGV4
dCAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FS
QigpID09IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUik7CiB9CiAKLXZvaWQgV2ViR0xMYXll
ckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBy
ZW5kZXJlckNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqKQordm9pZCBXZWJHTExheWVyQ2hyb21p
dW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIHJlbmRlcmVy
Q29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciosIENDVGV4dHVyZVVwZGF0ZXImKQogewogICAgIGlm
ICghZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9t
aXVtLmgKaW5kZXggNzIzNmJhYzdmZTQ4NmJiMmMyNGM2NTY1MjI2MmEwNjM5NTJiMGU3NC4uOTI2
MTIwMWRhYzM4YWQyNzU3ZWYwOGE2ZmJjMWRjYWU1MjcxNGJhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXll
ckNocm9taXVtLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYkdM
TGF5ZXJDaHJvbWl1bSgpOwogCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0
OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29u
dGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIEND
VGV4dHVyZVVwZGF0ZXImKTsKICAgICB2b2lkIHNldFRleHR1cmVVcGRhdGVkKCk7CiAgICAgYm9v
bCBwYWludFJlbmRlcmVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDdjNzYwYjlkNjliMDQ2MzI4MDNkOTY3NWFiZjcy
YWQyYTY1MjRmYjEuLjlhNDI2ZWQyYTc0ZTg3YzY0ZjFhYmI2NjUxZjAxOTZkZmQ4MTBhNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMTExLDIyICsxMTEsMjQgQEAgdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OmFuaW1hdGVBbmRMYXlvdXQoZG91YmxlIGZyYW1lQmVnaW5UaW1l
KQogICAgIG1fYW5pbWF0aW5nID0gZmFsc2U7CiB9CiAKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Ojpi
ZWdpbkNvbW1pdE9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkKK3sK
KyAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOworICAgIFRSQUNFX0VWRU5UKCJD
Q0xheWVyVHJlZUhvc3Q6OmNvbW1pdFRvIiwgdGhpcywgMCk7CisKKyAgICBjb250ZW50c1RleHR1
cmVNYW5hZ2VyKCktPnJlZHVjZU1lbW9yeVRvTGltaXQoVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1M
aW1pdEJ5dGVzKCkpOworICAgIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+ZGVsZXRlRXZpY3Rl
ZFRleHR1cmVzKGhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7Cit9CisKIC8v
IFRoaXMgZnVuY3Rpb24gY29tbWl0cyB0aGUgQ0NMYXllclRyZWVIb3N0IHRvIGFuIGltcGwgdHJl
ZS4gV2hlbiBtb2RpZnlpbmcKIC8vIHRoaXMgZnVuY3Rpb24sIGtlZXAgaW4gbWluZCB0aGF0IHRo
ZSBmdW5jdGlvbiAqcnVucyogb24gdGhlIGltcGwgdGhyZWFkISBBbnkKIC8vIGNvZGUgdGhhdCBp
cyBsb2dpY2FsbHkgYSBtYWluIHRocmVhZCBvcGVyYXRpb24sIGUuZy4gZGVsZXRpb24gb2YgYSBM
YXllckNocm9taXVtLAogLy8gc2hvdWxkIGJlIGRlbGF5ZWQgdW50aWwgdGhlIENDTGF5ZXJUcmVl
SG9zdDo6Y29tbWl0Q29tcGxldGUsIHdoaWNoIHdpbGwgcnVuCiAvLyBhZnRlciB0aGUgY29tbWl0
LCBidXQgb24gdGhlIG1haW4gdGhyZWFkLgotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNvbW1pdFRv
T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhvc3RJbXBsKQordm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBo
b3N0SW1wbCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwotICAgIFRS
QUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OmNvbW1pdFRvIiwgdGhpcywgMCk7CiAgICAgaG9z
dEltcGwtPnNldFNvdXJjZUZyYW1lTnVtYmVyKGZyYW1lTnVtYmVyKCkpOwotCi0gICAgY29udGVu
dHNUZXh0dXJlTWFuYWdlcigpLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KFRleHR1cmVNYW5hZ2VyOjpy
ZWNsYWltTGltaXRCeXRlcygpKTsKLSAgICBjb250ZW50c1RleHR1cmVNYW5hZ2VyKCktPmRlbGV0
ZUV2aWN0ZWRUZXh0dXJlcyhob3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOwot
Ci0gICAgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhtX3VwZGF0ZUxpc3QsIGhvc3RJbXBsLT5j
b250ZXh0KCksIGhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7Ci0KICAgICBo
b3N0SW1wbC0+c2V0VmlzaWJsZShtX3Zpc2libGUpOwogICAgIGhvc3RJbXBsLT5zZXRab29tQW5p
bWF0b3JUcmFuc2Zvcm0obV96b29tQW5pbWF0b3JUcmFuc2Zvcm0pOwogICAgIGhvc3RJbXBsLT5z
ZXRWaWV3cG9ydCh2aWV3cG9ydFNpemUoKSk7CkBAIC0zNjQsMTAgKzM2NiwxMCBAQCB2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVy
U3VyZmFjZUxheWVyTGlzdAogICAgIH0KIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2Nh
dG9yKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgQ0NU
ZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKIHsKLSAgICBmb3IgKGludCBzdXJmYWNlSW5kZXggPSBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1z
dXJmYWNlSW5kZXgpIHsKLSAgICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVy
ID0gcmVuZGVyU3VyZmFjZUxheWVyTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOworICAgIGZvciAo
aW50IHN1cmZhY2VJbmRleCA9IG1fdXBkYXRlTGlzdC5zaXplKCkgLSAxOyBzdXJmYWNlSW5kZXgg
Pj0gMCA7IC0tc3VyZmFjZUluZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21pdW0qIHJlbmRlclN1
cmZhY2VMYXllciA9IG1fdXBkYXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOwogICAgICAgICBS
ZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJmYWNlTGF5ZXIt
PnJlbmRlclN1cmZhY2UoKTsKICAgICAgICAgQVNTRVJUKHJlbmRlclN1cmZhY2UpOwogCkBAIC0z
ODEsMTIgKzM4MywxMiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYQogICAgICAgICAgICAgaWYg
KGxheWVyLT5yZW5kZXJTdXJmYWNlKCkgJiYgbGF5ZXItPnJlbmRlclN1cmZhY2UoKSAhPSByZW5k
ZXJTdXJmYWNlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICB1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKGxheWVyLCBjb250ZXh0LCBhbGxvY2F0b3IpOworICAgICAg
ICAgICAgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhsYXllciwgY29udGV4dCwgYWxsb2NhdG9y
LCB1cGRhdGVyKTsKICAgICAgICAgfQogICAgIH0KIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCit2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhMYXllckNocm9taXVtKiBs
YXllciwgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9j
YXRvciwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKIHsKICAgICBpZiAobGF5ZXItPmJvdW5k
cygpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzk1LDEyICszOTcsMTIgQEAgdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoTGF5ZXJDaHJvbWl1
bSogbGF5ZXIsIEdyYXBoaWNzQ28KICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGxheWVyLT5t
YXNrTGF5ZXIoKSkKLSAgICAgICAgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhsYXllci0+bWFz
a0xheWVyKCksIGNvbnRleHQsIGFsbG9jYXRvcik7CisgICAgICAgIHVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMobGF5ZXItPm1hc2tMYXllcigpLCBjb250ZXh0LCBhbGxvY2F0b3IsIHVwZGF0ZXIp
OwogICAgIGlmIChsYXllci0+cmVwbGljYUxheWVyKCkpCi0gICAgICAgIHVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMobGF5ZXItPnJlcGxpY2FMYXllcigpLCBjb250ZXh0LCBhbGxvY2F0b3IpOwor
ICAgICAgICB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGxheWVyLT5yZXBsaWNhTGF5ZXIoKSwg
Y29udGV4dCwgYWxsb2NhdG9yLCB1cGRhdGVyKTsKIAogICAgIGlmIChsYXllci0+ZHJhd3NDb250
ZW50KCkpCi0gICAgICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQs
IGFsbG9jYXRvcik7CisgICAgICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNv
bnRleHQsIGFsbG9jYXRvciwgdXBkYXRlcik7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpj
bGVhclBlbmRpbmdVcGRhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCAzZjJi
MTIwMDIwYzMyZGU0ZWZhYmNlOGNmZjJiMzI3OTgyMzE3YWIwLi40YWEwZmYxMmYwYTBkYzZlZTlk
YmIxNzE3YzgwNTQ2NDVkZWM4MDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAt
NDIsNiArNDIsNyBAQCBjbGFzcyBHckNvbnRleHQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENDTGF5ZXJUcmVlSG9zdEltcGw7CitjbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3Mg
R3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBMYXllckNocm9taXVtOwogY2xhc3MgTGF5ZXJQYWlu
dGVyQ2hyb21pdW07CkBAIC0xMDAsOCArMTAxLDkgQEAgcHVibGljOgogCiAgICAgLy8gQ0NMYXll
clRyZWVIb3N0IGludGVyZmFjZSB0byBDQ1Byb3h5LgogICAgIHZvaWQgYW5pbWF0ZUFuZExheW91
dChkb3VibGUgZnJhbWVCZWdpblRpbWUpOworICAgIHZvaWQgYmVnaW5Db21taXRPbkltcGxUaHJl
YWQoQ0NMYXllclRyZWVIb3N0SW1wbCopOworICAgIHZvaWQgZmluaXNoQ29tbWl0T25JbXBsVGhy
ZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKTsKICAgICB2b2lkIGNvbW1pdENvbXBsZXRlKCk7Ci0g
ICAgdm9pZCBjb21taXRUb09uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKik7CiAgICAg
UGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlTGF5ZXJUcmVlSG9zdENvbnRleHQz
RCgpOwogICAgIHZpcnR1YWwgUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBjcmVhdGVM
YXllclRyZWVIb3N0SW1wbChDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50Kik7CiAgICAgdm9pZCBk
aWRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dChib29sIHN1Y2Nlc3MpOwpAQCAtMTU0LDYgKzE1Niw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlTGF5ZXJzKCk7CiAKKyAgICB2b2lkIHVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9y
KiwgQ0NUZXh0dXJlVXBkYXRlciYpOwogICAgIHZvaWQgYXBwbHlTY3JvbGxEZWx0YXMoY29uc3Qg
Q0NTY3JvbGxVcGRhdGVTZXQmKTsKIHByb3RlY3RlZDoKICAgICBDQ0xheWVyVHJlZUhvc3QoQ0NM
YXllclRyZWVIb3N0Q2xpZW50KiwgUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiByb290TGF5ZXIs
IGNvbnN0IENDU2V0dGluZ3MmKTsKQEAgLTE2NCw4ICsxNjcsNyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0Jik7CiAgICAgdm9pZCB1cGRh
dGVMYXllcnMoTGF5ZXJDaHJvbWl1bSopOwotICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcyhjb25zdCBMYXllckxpc3QmLCBHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0
b3IqKTsKLSAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoTGF5ZXJDaHJvbWl1bSos
IEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOworICAgIHZvaWQgdXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcyhMYXllckNocm9taXVtKiwgR3JhcGhpY3NDb250ZXh0M0QqLCBU
ZXh0dXJlQWxsb2NhdG9yKiwgQ0NUZXh0dXJlVXBkYXRlciYpOwogICAgIHZvaWQgY2xlYXJQZW5k
aW5nVXBkYXRlKCk7CiAKICAgICBpbnQgbV9jb21wb3NpdG9ySWRlbnRpZmllcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggM2Y3NGFjYTgyYzY0Y2I1YzgxNGFj
ODA4MmYzMDE0NWFmYmM0YTI2NS4uMjJhODU2YTQyODg2ODk1YTk4MGI5MDY5OGVhODgzNmVhNWE3
N2Y1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJjYy9D
Q01haW5UaHJlYWRUYXNrLmgiCiAjaW5jbHVkZSAiY2MvQ0NTY3JvbGxDb250cm9sbGVyLmgiCisj
aW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV1RGOwpAQCAtMTQ3LDExICsxNDgsMjMgQEAgdm9pZCBD
Q1NpbmdsZVRocmVhZFByb3h5OjpzZXROZWVkc0FuaW1hdGUoKQogdm9pZCBDQ1NpbmdsZVRocmVh
ZFByb3h5OjpzZXROZWVkc0NvbW1pdCgpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRo
cmVhZCgpKTsKKyAgICBkb0NvbW1pdCgpOworfQorCit2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6
OmRvQ29tbWl0KCkKK3sKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwogICAg
IC8vIENvbW1pdCBpbW1lZGlhdGVseQogICAgIHsKICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBs
VGhyZWFkIGltcGw7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7
Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0VG9PbkltcGxUaHJlYWQobV9sYXllclRy
ZWVIb3N0SW1wbC5nZXQoKSk7CisKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5iZWdpbkNvbW1p
dE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKKyAgICAgICAgQ0NUZXh0
dXJlVXBkYXRlciB1cGRhdGVyOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBtX2xheWVyVHJl
ZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSwgdXBkYXRlcik7CisgICAgICAg
IHdoaWxlICh1cGRhdGVyLnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpLCAxKSkgeyB9Cisg
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJU
cmVlSG9zdEltcGwuZ2V0KCkpOworCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbW1p
dENvbXBsZXRlKCk7CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC0yNTMsMTcgKzI2Niw5IEBA
IHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tbWl0SWZOZWVkZWQoKQogewogICAgIEFTU0VS
VChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CiAKLSAgICAvLyBVcGRhdGUKICAgICBtX2xheWVy
VHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOwogCi0gICAgLy8gQ29tbWl0Ci0gICAgewotICAgICAg
ICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0
SW1wbC0+YmVnaW5Db21taXQoKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRUb09u
SW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKLSAgICAgICAgbV9sYXllclRy
ZWVIb3N0SW1wbC0+Y29tbWl0Q29tcGxldGUoKTsKLSAgICB9Ci0gICAgbV9sYXllclRyZWVIb3N0
LT5jb21taXRDb21wbGV0ZSgpOworICAgIGRvQ29tbWl0KCk7CiB9CiAKIGJvb2wgQ0NTaW5nbGVU
aHJlYWRQcm94eTo6ZG9Db21wb3NpdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5oCmluZGV4IGE0YjY0Njk1NjFiMDQxYmVmY2FhN2UyM2MzZTk4Y2JiMDIxMjExZDguLjExYTgz
ZmI1N2RjNzkwMzA1MGVhNmE0ZTVmNDNlZWVhZWYyNDZmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Np
bmdsZVRocmVhZFByb3h5LmgKQEAgLTY3LDYgKzY3LDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNp
dCBDQ1NpbmdsZVRocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCopOwogICAgIGJvb2wgcmVjcmVh
dGVDb250ZXh0SWZOZWVkZWQoKTsKICAgICB2b2lkIGNvbW1pdElmTmVlZGVkKCk7CisgICAgdm9p
ZCBkb0NvbW1pdCgpOwogICAgIGJvb2wgZG9Db21wb3NpdGUoKTsKIAogICAgIC8vIEFjY2Vzc2Vk
IG9uIG1haW4gdGhyZWFkIG9ubHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjY3ZmVhZTlhODdjZWUxM2NhM2Q5OTY0YzNhM2E0YmE1NDc2MzY0OWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RleHR1cmVVcGRhdGVyLmNwcApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjaW5jbHVk
ZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0Qu
aCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCisjaW5jbHVkZSAiTWFuYWdlZFRl
eHR1cmUuaCIKKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitDQ1RleHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRhdGVyKCkKKyAgICA6IG1fZW50cnlJbmRl
eCgwKQoreworfQorCitDQ1RleHR1cmVVcGRhdGVyOjp+Q0NUZXh0dXJlVXBkYXRlcigpCit7Cit9
CisKK3ZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6YXBwZW5kKE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJl
LCBMYXllclRleHR1cmVVcGRhdGVyKiB1cGRhdGVyLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBBU1NFUlQodGV4dHVyZSk7CisgICAg
QVNTRVJUKHVwZGF0ZXIpOworCisgICAgVXBkYXRlRW50cnkgZW50cnk7CisgICAgZW50cnkubV90
ZXh0dXJlID0gdGV4dHVyZTsKKyAgICBlbnRyeS5tX3VwZGF0ZXIgPSB1cGRhdGVyOworICAgIGVu
dHJ5Lm1fc291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7CisgICAgZW50cnkubV9kZXN0UmVjdCA9IGRl
c3RSZWN0OworICAgIG1fZW50cmllcy5hcHBlbmQoZW50cnkpOworfQorCitib29sIENDVGV4dHVy
ZVVwZGF0ZXI6OnVwZGF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9j
YXRvciogYWxsb2NhdG9yLCBzaXplX3QgY291bnQpCit7CisgICAgc2l6ZV90IG1heEluZGV4ID0g
bWluKG1fZW50cnlJbmRleCArIGNvdW50LCBtX2VudHJpZXMuc2l6ZSgpKTsKKyAgICBmb3IgKDsg
bV9lbnRyeUluZGV4IDwgbWF4SW5kZXg7ICsrbV9lbnRyeUluZGV4KSB7CisgICAgICAgIFVwZGF0
ZUVudHJ5JiBlbnRyeSA9IG1fZW50cmllc1ttX2VudHJ5SW5kZXhdOworICAgICAgICBlbnRyeS5t
X3VwZGF0ZXItPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgZW50cnkubV90
ZXh0dXJlLCBlbnRyeS5tX3NvdXJjZVJlY3QsIGVudHJ5Lm1fZGVzdFJlY3QpOworICAgIH0KKwor
ICAgIGlmIChtYXhJbmRleCA8IG1fZW50cmllcy5zaXplKCkpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgLy8gSWYgbm8gZW50cmllcyBsZWZ0IHRvIHByb2Nlc3MsIGF1dG8tY2xlYXIuCisg
ICAgY2xlYXIoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ0NUZXh0dXJlVXBkYXRl
cjo6Y2xlYXIoKQoreworICAgIG1fZW50cnlJbmRleCA9IDA7CisgICAgbV9lbnRyaWVzLmNsZWFy
KCk7Cit9CisKK30KKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODUxMDQ1NGJiMzIwYTVkMzg4
NGQ0ZjEzZGQxODEzNjNlN2E3OTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCkBAIC0wLDAg
KzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIENDVGV4dHVyZVVwZGF0ZXJfaAorI2RlZmluZSBDQ1Rl
eHR1cmVVcGRhdGVyX2gKKworI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7
CitjbGFzcyBMYXllclRleHR1cmVVcGRhdGVyOworY2xhc3MgTWFuYWdlZFRleHR1cmU7CitjbGFz
cyBUZXh0dXJlQWxsb2NhdG9yOworCitjbGFzcyBDQ1RleHR1cmVVcGRhdGVyIHsKK3B1YmxpYzoK
KyAgICBDQ1RleHR1cmVVcGRhdGVyKCk7CisgICAgfkNDVGV4dHVyZVVwZGF0ZXIoKTsKKworICAg
IHZvaWQgYXBwZW5kKE1hbmFnZWRUZXh0dXJlKiwgTGF5ZXJUZXh0dXJlVXBkYXRlciosIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgIC8v
IFVwZGF0ZSBzb21lIHRleHR1cmVzLiBSZXR1cm5zIHRydWUgaWYgbW9yZSB0ZXh0dXJlcyBsZWZ0
IHRvIHByb2Nlc3MuCisgICAgYm9vbCB1cGRhdGUoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJl
QWxsb2NhdG9yKiwgc2l6ZV90IGNvdW50KTsKKworICAgIHZvaWQgY2xlYXIoKTsKKworcHJpdmF0
ZToKKyAgICBzdHJ1Y3QgVXBkYXRlRW50cnkgeworICAgICAgICBNYW5hZ2VkVGV4dHVyZSogbV90
ZXh0dXJlOworICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyKiBtX3VwZGF0ZXI7CisgICAgICAg
IEludFJlY3QgbV9zb3VyY2VSZWN0OworICAgICAgICBJbnRSZWN0IG1fZGVzdFJlY3Q7CisgICAg
fTsKKworICAgIHNpemVfdCBtX2VudHJ5SW5kZXg7CisgICAgVmVjdG9yPFVwZGF0ZUVudHJ5PiBt
X2VudHJpZXM7Cit9OworCit9CisKKyNlbmRpZiAvLyBDQ1RleHR1cmVVcGRhdGVyX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggOGZlZmE2ZWQyZTkzMThhOGY2ZmRkZmJjNWM0Y2U4
MjYwM2E4ZjExNi4uMzllMzkyYjY2YTcxMjJlNDk1Mjc0YWYwZTlmYWE1OWE2NjNiOTMyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJj
Yy9DQ1NjaGVkdWxlci5oIgogI2luY2x1ZGUgImNjL0NDU2NvcGVkTWFpblRocmVhZFByb3h5Lmgi
CiAjaW5jbHVkZSAiY2MvQ0NTY3JvbGxDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0
dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgPHd0
Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC00MTksNyAr
NDIwLDEzIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6Y29tbWl0T25JbXBsVGhyZWFkKENDQ29tcGxl
dGlvbkV2ZW50KiBjb21wbGV0aW9uKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7Ci0gICAgbV9sYXllclRyZWVIb3N0LT5jb21t
aXRUb09uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKKworICAgIG1fbGF5
ZXJUcmVlSG9zdC0+YmVnaW5Db21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5n
ZXQoKSk7CisgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOworICAgIG1fbGF5ZXJUcmVlSG9z
dC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0
KCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpLCB1cGRh
dGVyKTsKKyAgICB3aGlsZSAodXBkYXRlci51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29u
dGV4dCgpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSwg
MSkpIHsgfQorICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKG1f
bGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOworCiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29t
bWl0Q29tcGxldGUoKTsKIAogICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112258</attachid>
            <date>2011-10-24 15:05:20 -0700</date>
            <delta_ts>2011-10-24 16:45:42 -0700</delta_ts>
            <desc>fold allocator into updater</desc>
            <filename>bug-70454-20111024150519.patch</filename>
            <type>text/plain</type>
            <size>29494</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTgyNzUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4MDhhYmE4NGNiYmE1YTFj
NGNkYjkyMWYwNGEwZDhlYTg2YTcxNmRkLi5mNWYzZGY2NjkyMTEyNDBhYTMyMjdlYzk1YTkxNzY5
NzY5NGZmMTFhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMTEtMTAtMjQgIEFkcmll
bm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEJhdGNo
IHVwIHRleHR1cmUgdXBsb2FkcyBzbyB0aGF0IHRoZXkgY2FuIGJlIHVwZGF0ZWQgaW5jcmVtZW50
YWxseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA0
NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZWNh
dXNlIHRleHR1cmUgdXBsb2FkcyBjYW4gc29tZXRpbWVzIHRha2UgbW9yZSB0aGFuIGEgZnJhbWUg
dG8KKyAgICAgICAgY29tcGxldGUsIGNvbGxlY3QgYWxsIHRoZSB1cGxvYWRzIHRoYXQgbmVlZCB0
byBvY2N1ciBpbiBhCisgICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgc28gdGhhdCB3ZSBjYW4gZWFz
aWx5IGluY3JlbWVudGFsbHkgdXBsb2FkIHNvbWUgb2YKKyAgICAgICAgdGhlbSwgaW50ZXJsZWF2
aW5nIGlucHV0IGFuZCBkcmF3aW5nIHNvIHRoYXQgdGhlIGNvbXBvc2l0b3IgdGhyZWFkCisgICAg
ICAgIGNvbnRpbnVlcyB0byBhcHBlYXIgcmVzcG9uc2l2ZSBkdXJpbmcgYSBjb21taXQuCisKKyAg
ICAgICAgVGhpcyBjaGFuZ2UgZG9lc24ndCBhY3R1YWxseSBpbnRlcmxlYXZlIHRoZSBjb21taXRz
LCBpdCBqdXN0IHB1c2hlcworICAgICAgICB0aGUgaW5mcmFzdHJ1Y3R1cmUgZm9yIGRvaW5nIHNv
IHVwIHRvIHRoZSBDQ1Byb3h5IGxldmVsIHNvIHRoYXQgYQorICAgICAgICBmdXR1cmUgc2NoZWR1
bGVyIGNhbiBtYWtlIHRoaXMgZGVjaXNpb24uCisKKyAgICAgICAgVmlkZW9MYXllckNocm9taXVt
IGlzIHRoZSBvbmx5IGxheWVyIHR5cGUgdG8gbm90IHVzZSB0aGlzIHN5c3RlbS4gSXQKKyAgICAg
ICAgbmVlZHMgdG8gYmUgY29udmVydGVkIHRvIHVzZSBhIHRleHR1cmUgdXBkYXRlciBmaXJzdCBh
bmQgaXQgaXMgbGVzcyBvZgorICAgICAgICBhIHByaW9yaXR5IHRoYW4gdGhlIHRpbGVkIGxheWVy
cy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aWxlZExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNo
cm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpiZWdpbkNvbW1pdE9uSW1w
bFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaENvbW1p
dE9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
aW5nbGVUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
aW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVU
aHJlYWRQcm94eTo6Y29tbWl0SWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRhdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6On5DQ1RleHR1cmVVcGRhdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RleHR1cmVVcGRhdGVyOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBk
YXRlcjo6Y2xlYXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGV4dHVyZVVwZGF0ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRh
dGVyOjphbGxvY2F0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6Y29t
bWl0T25JbXBsVGhyZWFkKToKKwogMjAxMS0xMC0yNCAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBPcHRpbWl6ZSBOb2RlOjppc0luU2hhZG93VHJlZSB0byBleGVj
dXRlIGluIGNvbnN0YW50LXRpbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBlYmVhNGJhMTc1M2M5NzRm
MWE2MTk0NmI1MTVhODQxNTdkZWZmZWI0Li5hMGIyZjU1MThjNTBkNjQwMTM2MTVlM2ZlOWRjMDkz
OTgzZTViOWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNTU5LDYgKzM1NTksOCBAQAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsQ29udHJvbGxlci5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRo
cmVhZFByb3h5LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZC5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nh
bnZhczJETGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCmluZGV4IGZjYWMyNjI5NmRmOGVk
Yzk4NDgxNzJkNDY0NjU5YjRiMGFkMTI0N2UuLmM5MGQ2Mzg1YTA0OTAzN2Y3YzE3YTJlZDIxMDNh
NzJlYzdjOTdjOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcApAQCAt
NjQsNyArNjQsNyBAQCBib29sIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkg
Y29uc3QKICAgICAgICAgICAgICYmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+Z2V0R3Jh
cGhpY3NSZXNldFN0YXR1c0FSQigpID09IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUikpOwog
fQogCi12b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyhHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKQordm9pZCBDYW52YXMyRExh
eWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0Qq
LCBDQ1RleHR1cmVVcGRhdGVyJikKIHsKICAgICBpZiAobV9kaXJ0eVJlY3QuaXNFbXB0eSgpIHx8
ICFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVy
Q2hyb21pdW0uaAppbmRleCAwZjMzMmY0ZTAyN2Q3MDRmNDRhMWQzNDk4N2YzNjdjNmYwM2MwZDQ2
Li4xYzE2MzkzZjQyODNjODZhYzlmNWI5YTlmNTcwMTk3ZTNiNTU5MjIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hy
b21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
YW52YXMyRExheWVyQ2hyb21pdW0uaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q2FudmFzMkRMYXllckNocm9taXVtPiBjcmVhdGUoR3JhcGhpY3NDb250
ZXh0M0QqKTsKICAgICB2aXJ0dWFsIH5DYW52YXMyRExheWVyQ2hyb21pdW0oKTsKICAgICB2aXJ0
dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7
CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250
ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CiAKICAgICB2b2lkIHNldFRleHR1cmVDaGFuZ2Vk
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCBjZWRmMmVjNTIwMTllNWI1ZTc4ZmQyNjhlYTE1
YzliYzk2NTMxOGU5Li5kNjY0MjVhZWY2NDM2YWFmNWIxMmUwMjY0ZTZhMDVmODEzNjIxMDVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
ckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC01Myw2ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7CitjbGFzcyBDQ1Rl
eHR1cmVVcGRhdGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAKIGNsYXNzIENDTGF5ZXJE
ZWxlZ2F0ZSB7CkBAIC0xNTksNyArMTYwLDcgQEAgcHVibGljOgogICAgIC8vIFRoZXNlIG1ldGhv
ZHMgdHlwaWNhbGx5IG5lZWQgdG8gYmUgb3ZlcndyaXR0ZW4gYnkgZGVyaXZlZCBjbGFzc2VzLgog
ICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVy
ZUFsbG9jYXRvciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBzZXRJc01hc2soYm9vbCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVucmVzZXJ2ZUNv
bnRlbnRzVGV4dHVyZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBiaW5kQ29udGVudHNUZXh0dXJl
KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAppbmRleCAzMjcwMjI4Njg1ODg4
Nzk5OTc1MDNlMTRmMDlkMDk0YWZhNDdiMTdjLi5mY2M0NmQ5OTNkNTQwYTQyMTlkN2YyNzAxMDAx
ODczOGVmN2I4ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM0LDYg
KzM0LDcgQEAKICNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgIlRleHRTdHJl
YW0uaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgorI2luY2x1ZGUgImNjL0NDVGV4dHVy
ZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RpbGVkTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSA8
d3RmL0N1cnJlbnRUaW1lLmg+CiAKQEAgLTE1MCw3ICsxNTEsNyBAQCB2b2lkIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6c2V0TGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3QqIGhvc3QpCiAgICAgICAg
IGlzTm9uQ29tcG9zaXRlZENvbnRlbnQoKSA/IENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRl
eGVscyA6IENDTGF5ZXJUaWxpbmdEYXRhOjpIYXNCb3JkZXJUZXhlbHMpOwogfQogCi12b2lkIFRp
bGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQordm9pZCBUaWxlZExh
eWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiB7CiAgICAgLy8gUGFpbnRpbmcg
Y291bGQgY2F1c2UgY29tcG9zaXRpbmcgdG8gZ2V0IHR1cm5lZCBvZmYsIHdoaWNoIG1heSBjYXVz
ZSB0aGUgdGlsZXIgdG8gYmVjb21lIGludmFsaWRhdGVkIG1pZC11cGRhdGUuCiAgICAgaWYgKG1f
c2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRlUmVjdC5pc0VtcHR5KCkgfHwgIW1fdGlsZXIt
Pm51bVRpbGVzKCkpCkBAIC0xOTYsMTMgKzE5NywxMiBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
VAogICAgICAgICAgICAgaWYgKHBhaW50T2Zmc2V0LnkoKSArIGRlc3RSZWN0LmhlaWdodCgpID4g
bV9wYWludFJlY3QuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgQ1JBU0goKTsKIAotICAgICAg
ICAgICAgdGlsZS0+dGV4dHVyZSgpLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOwor
ICAgICAgICAgICAgdGlsZS0+dGV4dHVyZSgpLT5iaW5kVGV4dHVyZShjb250ZXh0LCB1cGRhdGVy
LmFsbG9jYXRvcigpKTsKICAgICAgICAgICAgIGNvbnN0IEdDM0RpbnQgZmlsdGVyID0gbV90aWxl
ci0+aGFzQm9yZGVyVGV4ZWxzKCkgPyBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSIDogR3JhcGhp
Y3NDb250ZXh0M0Q6Ok5FQVJFU1Q7CiAgICAgICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgZmlsdGVyKSk7CiAgICAgICAgICAgICBHTEMoY29u
dGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgZmlsdGVyKSk7Ci0gICAg
ICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIDApKTsKIAotICAgICAgICAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBk
YXRlVGV4dHVyZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCB0aWxlLT50ZXh0dXJlKCksIHNvdXJj
ZVJlY3QsIGRlc3RSZWN0KTsKKyAgICAgICAgICAgIHVwZGF0ZXIuYXBwZW5kKHRpbGUtPnRleHR1
cmUoKSwgdGV4dHVyZVVwZGF0ZXIoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogICAgICAgICAg
ICAgdGlsZS0+Y2xlYXJEaXJ0eSgpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVy
Q2hyb21pdW0uaAppbmRleCAyMzYzYjgwOWY5MTg0NzNmMDlhNWI5MDA2YjJkMWM3OTIxYzE5ZWRk
Li41ZGFmMGYwMTk0N2E5OTQ3Y2QyMzVmNTVmYjczOTU5ZTQ0N2IxZjU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IH5UaWxlZExheWVyQ2hyb21pdW0oKTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOworICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNE
KiwgQ0NUZXh0dXJlVXBkYXRlciYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJc01hc2soYm9vbCk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9M
YXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMGViNmNmYjgzNDhhNDk5ZWRjOWFhY2Y5
MGIzOGI5NTg1MjgwYjAyNC4uMjM5NDU2OGYyZDgyNzhmNTk3OWE3ZmUwYzU2MTVkOWY3MjA5OGI2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VmlkZW9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCkBAIC00MCw2ICs0MCw3IEBACiAj
aW5jbHVkZSAiVmlkZW9GcmFtZUNocm9taXVtLmgiCiAjaW5jbHVkZSAiVmlkZW9GcmFtZVByb3Zp
ZGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1
cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NWaWRlb0xheWVySW1wbC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC03Niw3ICs3Nyw3IEBAIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjpj
bGVhbnVwUmVzb3VyY2VzKCkKICAgICAgICAgbV90ZXh0dXJlc1tpXS5tX3RleHR1cmUuY2xlYXIo
KTsKIH0KIAotdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRv
cikKK3ZvaWQgVmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQogewog
ICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9wcm92aWRlcikKICAgICAgICAgcmV0dXJuOwpAQCAt
MTI4LDcgKzEyOSw3IEBAIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUCiAgICAgICAgIFRleHR1cmUm
IHRleHR1cmUgPSBtX3RleHR1cmVzW3BsYW5lXTsKICAgICAgICAgQVNTRVJUKHRleHR1cmUubV90
ZXh0dXJlKTsKICAgICAgICAgQVNTRVJUKGZyYW1lLT5yZXF1aXJlZFRleHR1cmVTaXplKHBsYW5l
KSA9PSB0ZXh0dXJlLm1fdGV4dHVyZS0+c2l6ZSgpKTsKLSAgICAgICAgdXBkYXRlVGV4dHVyZShj
b250ZXh0LCBhbGxvY2F0b3IsIHRleHR1cmUsIGZyYW1lLT5kYXRhKHBsYW5lKSk7CisgICAgICAg
IHVwZGF0ZVRleHR1cmUoY29udGV4dCwgdXBkYXRlci5hbGxvY2F0b3IoKSwgdGV4dHVyZSwgZnJh
bWUtPmRhdGEocGxhbmUpKTsKICAgICB9CiAKICAgICBtX3BsYW5lcyA9IGZyYW1lLT5wbGFuZXMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1ZpZGVvTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKaW5kZXggZjM3YjZiYTNkZDU2MWRlMzVjZDNj
YWNjOWJjYzMzMzQ1NWM5OWYxOC4uNDkwNTcyMjVlNDMwY2U4ZGRiOGI0MzBiZmVmYzc0MTJjYjUy
MWIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVmlkZW9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVy
SW1wbCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3Jh
cGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRh
dGVyJik7CiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KIAogICAgIHZvaWQgcmVsZWFzZVByb3ZpZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNo
cm9taXVtLmNwcAppbmRleCA1Y2ZiNjZhYzljNzFkMDk5YTI0ZmNiYTkwNzRlOWI3ZGI4NmQ0ZDdi
Li5mMzg3ZmRhNWY4NWQwN2EwNTRkNGY0ZDk3NTM0MTJiODM0ZGIxNjkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dl
YkdMTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgYm9vbCBXZWJHTExheWVyQ2hy
b21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIChtX2NvbnRleHQgJiYgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9PSBH
cmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpOwogfQogCi12b2lkIFdlYkdMTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogcmVuZGVyZXJD
b250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKikKK3ZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvbnRleHQs
IENDVGV4dHVyZVVwZGF0ZXImKQogewogICAgIGlmICghZHJhd3NDb250ZW50KCkpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKaW5kZXggNzIzNmJhYzdmZTQ4NmJi
MmMyNGM2NTY1MjI2MmEwNjM5NTJiMGU3NC4uZmU1MmUyY2Y2ODg3OWZjY2M5ZDI4YjVlZWM2MDc0
YTM1ZDY5OGY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKQEAgLTUwLDcgKzUwLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYkdMTGF5ZXJDaHJvbWl1bSgpOwogCiAgICAgdmly
dHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciop
OworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29u
dGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOwogICAgIHZvaWQgc2V0VGV4dHVyZVVwZGF0ZWQo
KTsKICAgICBib29sIHBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggN2M3NjBiOWQ2OWIwNDYzMjgw
M2Q5Njc1YWJmNzJhZDJhNjUyNGZiMS4uOGYwNjE3OTNmZDkzNGZkMDdkYjBhN2JhM2MwMDI1MzM5
YThlZDAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0xMTEsMjIgKzEx
MSwyNCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YW5pbWF0ZUFuZExheW91dChkb3VibGUgZnJh
bWVCZWdpblRpbWUpCiAgICAgbV9hbmltYXRpbmcgPSBmYWxzZTsKIH0KIAordm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OmJlZ2luQ29tbWl0T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhv
c3RJbXBsKQoreworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgVFJB
Q0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6Y29tbWl0VG8iLCB0aGlzLCAwKTsKKworICAgIGNv
bnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+cmVkdWNlTWVtb3J5VG9MaW1pdChUZXh0dXJlTWFuYWdl
cjo6cmVjbGFpbUxpbWl0Qnl0ZXMoKSk7CisgICAgY29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5k
ZWxldGVFdmljdGVkVGV4dHVyZXMoaG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigp
KTsKK30KKwogLy8gVGhpcyBmdW5jdGlvbiBjb21taXRzIHRoZSBDQ0xheWVyVHJlZUhvc3QgdG8g
YW4gaW1wbCB0cmVlLiBXaGVuIG1vZGlmeWluZwogLy8gdGhpcyBmdW5jdGlvbiwga2VlcCBpbiBt
aW5kIHRoYXQgdGhlIGZ1bmN0aW9uICpydW5zKiBvbiB0aGUgaW1wbCB0aHJlYWQhIEFueQogLy8g
Y29kZSB0aGF0IGlzIGxvZ2ljYWxseSBhIG1haW4gdGhyZWFkIG9wZXJhdGlvbiwgZS5nLiBkZWxl
dGlvbiBvZiBhIExheWVyQ2hyb21pdW0sCiAvLyBzaG91bGQgYmUgZGVsYXllZCB1bnRpbCB0aGUg
Q0NMYXllclRyZWVIb3N0Ojpjb21taXRDb21wbGV0ZSwgd2hpY2ggd2lsbCBydW4KIC8vIGFmdGVy
IHRoZSBjb21taXQsIGJ1dCBvbiB0aGUgbWFpbiB0aHJlYWQuCi12b2lkIENDTGF5ZXJUcmVlSG9z
dDo6Y29tbWl0VG9PbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaG9zdEltcGwpCit2
b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVl
SG9zdEltcGwqIGhvc3RJbXBsKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQo
KSk7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6Y29tbWl0VG8iLCB0aGlzLCAw
KTsKICAgICBob3N0SW1wbC0+c2V0U291cmNlRnJhbWVOdW1iZXIoZnJhbWVOdW1iZXIoKSk7Ci0K
LSAgICBjb250ZW50c1RleHR1cmVNYW5hZ2VyKCktPnJlZHVjZU1lbW9yeVRvTGltaXQoVGV4dHVy
ZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKCkpOwotICAgIGNvbnRlbnRzVGV4dHVyZU1hbmFn
ZXIoKS0+ZGVsZXRlRXZpY3RlZFRleHR1cmVzKGhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxv
Y2F0b3IoKSk7Ci0KLSAgICB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKG1fdXBkYXRlTGlzdCwg
aG9zdEltcGwtPmNvbnRleHQoKSwgaG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigp
KTsKLQogICAgIGhvc3RJbXBsLT5zZXRWaXNpYmxlKG1fdmlzaWJsZSk7CiAgICAgaG9zdEltcGwt
PnNldFpvb21BbmltYXRvclRyYW5zZm9ybShtX3pvb21BbmltYXRvclRyYW5zZm9ybSk7CiAgICAg
aG9zdEltcGwtPnNldFZpZXdwb3J0KHZpZXdwb3J0U2l6ZSgpKTsKQEAgLTM2NCwxMCArMzY2LDEw
IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJM
aXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0CiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJUcmVl
SG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1
cmZhY2VMYXllckxpc3QsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2Nh
dG9yKiBhbGxvY2F0b3IpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBk
YXRlcikKIHsKLSAgICBmb3IgKGludCBzdXJmYWNlSW5kZXggPSByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsKLSAg
ICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyID0gcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOworICAgIGZvciAoaW50IHN1cmZhY2VJbmRleCA9
IG1fdXBkYXRlTGlzdC5zaXplKCkgLSAxOyBzdXJmYWNlSW5kZXggPj0gMCA7IC0tc3VyZmFjZUlu
ZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciA9IG1fdXBk
YXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOwogICAgICAgICBSZW5kZXJTdXJmYWNlQ2hyb21p
dW0qIHJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlbmRlclN1cmZhY2UoKTsK
ICAgICAgICAgQVNTRVJUKHJlbmRlclN1cmZhY2UpOwogCkBAIC0zODEsMTIgKzM4MywxMiBAQCB2
b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb25zdCBMYXll
ckxpc3QmIHJlbmRlclN1cmZhY2VMYQogICAgICAgICAgICAgaWYgKGxheWVyLT5yZW5kZXJTdXJm
YWNlKCkgJiYgbGF5ZXItPnJlbmRlclN1cmZhY2UoKSAhPSByZW5kZXJTdXJmYWNlKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICB1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKGxheWVyLCBjb250ZXh0LCBhbGxvY2F0b3IpOworICAgICAgICAgICAgdXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyhsYXllciwgY29udGV4dCwgdXBkYXRlcik7CiAgICAgICAgIH0KICAgICB9
CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKExh
eWVyQ2hyb21pdW0qIGxheWVyLCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFs
bG9jYXRvciogYWxsb2NhdG9yKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQogewogICAgIGlmIChsYXllci0+Ym91bmRz
KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0zOTUsMTIgKzM5NywxMiBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhMYXllckNocm9taXVt
KiBsYXllciwgR3JhcGhpY3NDbwogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobGF5ZXItPm1h
c2tMYXllcigpKQotICAgICAgICB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGxheWVyLT5tYXNr
TGF5ZXIoKSwgY29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICAgICAgdXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhsYXllci0+bWFza0xheWVyKCksIGNvbnRleHQsIHVwZGF0ZXIpOwogICAgIGlmIChs
YXllci0+cmVwbGljYUxheWVyKCkpCi0gICAgICAgIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
bGF5ZXItPnJlcGxpY2FMYXllcigpLCBjb250ZXh0LCBhbGxvY2F0b3IpOworICAgICAgICB1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKGxheWVyLT5yZXBsaWNhTGF5ZXIoKSwgY29udGV4dCwgdXBk
YXRlcik7CiAKICAgICBpZiAobGF5ZXItPmRyYXdzQ29udGVudCgpKQotICAgICAgICBsYXllci0+
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCBhbGxvY2F0b3IpOworICAgICAgICBs
YXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKIH0KIAog
dm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNsZWFyUGVuZGluZ1VwZGF0ZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5oCmluZGV4IGU1ZGRiYjQzNTFhYjRhNmI0MmViNTM3NzI5NzEyYTA0NTU4Nzgy
ZDIuLmU5ZWM5MmZkY2JhMDQ5ZTNlZTgzZjk2N2NmOWEyZjJkMTc3ZmYwMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIEdyQ29udGV4dDsKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbDsKK2NsYXNzIEND
VGV4dHVyZVVwZGF0ZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIExheWVyQ2hy
b21pdW07CiBjbGFzcyBMYXllclBhaW50ZXJDaHJvbWl1bTsKQEAgLTEwMiw4ICsxMDMsOSBAQCBw
dWJsaWM6CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3QgaW50ZXJmYWNlIHRvIENDUHJveHkuCiAg
ICAgdm9pZCBhbmltYXRlQW5kTGF5b3V0KGRvdWJsZSBmcmFtZUJlZ2luVGltZSk7CisgICAgdm9p
ZCBiZWdpbkNvbW1pdE9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKik7CisgICAgdm9p
ZCBmaW5pc2hDb21taXRPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopOwogICAgIHZv
aWQgY29tbWl0Q29tcGxldGUoKTsKLSAgICB2b2lkIGNvbW1pdFRvT25JbXBsVGhyZWFkKENDTGF5
ZXJUcmVlSG9zdEltcGwqKTsKICAgICBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVh
dGVMYXllclRyZWVIb3N0Q29udGV4dDNEKCk7CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPENDTGF5
ZXJUcmVlSG9zdEltcGw+IGNyZWF0ZUxheWVyVHJlZUhvc3RJbXBsKENDTGF5ZXJUcmVlSG9zdElt
cGxDbGllbnQqKTsKICAgICB2b2lkIGRpZFJlY3JlYXRlR3JhcGhpY3NDb250ZXh0KGJvb2wgc3Vj
Y2Vzcyk7CkBAIC0xNTYsNiArMTU4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVMYXll
cnMoKTsKIAorICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRl
eHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKICAgICB2b2lkIGFwcGx5U2Nyb2xsRGVsdGFzKGNv
bnN0IENDU2Nyb2xsVXBkYXRlU2V0Jik7CiBwcm90ZWN0ZWQ6CiAgICAgQ0NMYXllclRyZWVIb3N0
KENDTGF5ZXJUcmVlSG9zdENsaWVudCosIFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcm9vdExh
eWVyLCBjb25zdCBDQ1NldHRpbmdzJik7CkBAIC0xNjYsOCArMTY5LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgcGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYpOwogICAgIHZvaWQg
dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qKTsKLSAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoY29uc3QgTGF5ZXJMaXN0JiwgR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxs
b2NhdG9yKik7Ci0gICAgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKExheWVyQ2hyb21p
dW0qLCBHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2b2lkIHVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoTGF5ZXJDaHJvbWl1bSosIEdyYXBoaWNzQ29udGV4dDNE
KiwgQ0NUZXh0dXJlVXBkYXRlciYpOwogICAgIHZvaWQgY2xlYXJQZW5kaW5nVXBkYXRlKCk7CiAK
ICAgICBpbnQgbV9jb21wb3NpdG9ySWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHAKaW5kZXggM2Y3NGFjYTgyYzY0Y2I1YzgxNGFjODA4MmYzMDE0NWFmYmM0
YTI2NS4uMTQxODI2MTA0N2ZiYjE0NzFhODM5N2UyOGViMmNiNTRlM2U0ZjExYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNs
dWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJjYy9DQ01haW5UaHJlYWRUYXNr
LmgiCiAjaW5jbHVkZSAiY2MvQ0NTY3JvbGxDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NU
ZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV1RGOwpAQCAtMTQ3LDExICsxNDgsMjMgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFBy
b3h5OjpzZXROZWVkc0FuaW1hdGUoKQogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzZXROZWVk
c0NvbW1pdCgpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKKyAgICBk
b0NvbW1pdCgpOworfQorCit2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KCkKK3sK
KyAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwogICAgIC8vIENvbW1pdCBpbW1l
ZGlhdGVseQogICAgIHsKICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7CiAg
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7Ci0gICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+Y29tbWl0VG9PbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQo
KSk7CisKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5iZWdpbkNvbW1pdE9uSW1wbFRocmVhZCht
X2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKKyAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRh
dGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAg
ICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmNvbnRleHQoKSwgdXBkYXRlcik7CisgICAgICAgIHdoaWxlICh1cGRhdGVy
LnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIDEpKSB7IH0KKyAgICAgICAg
bV9sYXllclRyZWVIb3N0LT5maW5pc2hDb21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0
SW1wbC5nZXQoKSk7CisKICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29tbWl0Q29tcGxl
dGUoKTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTI1MywxNyArMjY2LDkgQEAgdm9pZCBD
Q1NpbmdsZVRocmVhZFByb3h5Ojpjb21taXRJZk5lZWRlZCgpCiB7CiAgICAgQVNTRVJUKENDUHJv
eHk6OmlzTWFpblRocmVhZCgpKTsKIAotICAgIC8vIFVwZGF0ZQogICAgIG1fbGF5ZXJUcmVlSG9z
dC0+dXBkYXRlTGF5ZXJzKCk7CiAKLSAgICAvLyBDb21taXQKLSAgICB7Ci0gICAgICAgIERlYnVn
U2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwotICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5i
ZWdpbkNvbW1pdCgpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdFRvT25JbXBsVGhy
ZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3RJ
bXBsLT5jb21taXRDb21wbGV0ZSgpOwotICAgIH0KLSAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1p
dENvbXBsZXRlKCk7CisgICAgZG9Db21taXQoKTsKIH0KIAogYm9vbCBDQ1NpbmdsZVRocmVhZFBy
b3h5Ojpkb0NvbXBvc2l0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5k
ZXggYTRiNjQ2OTU2MWIwNDFiZWZjYWE3ZTIzYzNlOThjYmIwMjEyMTFkOC4uMTFhODNmYjU3ZGM3
OTAzMDUwZWE2YTRlNWY0M2VlZWFlZjI0NmYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhy
ZWFkUHJveHkuaApAQCAtNjcsNiArNjcsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IENDU2lu
Z2xlVGhyZWFkUHJveHkoQ0NMYXllclRyZWVIb3N0Kik7CiAgICAgYm9vbCByZWNyZWF0ZUNvbnRl
eHRJZk5lZWRlZCgpOwogICAgIHZvaWQgY29tbWl0SWZOZWVkZWQoKTsKKyAgICB2b2lkIGRvQ29t
bWl0KCk7CiAgICAgYm9vbCBkb0NvbXBvc2l0ZSgpOwogCiAgICAgLy8gQWNjZXNzZWQgb24gbWFp
biB0aHJlYWQgb25seS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDA4NGRlZWFmMGZiYzcwYjA4NTRiYWU2MGQ4ZWEyN2E3NDM3YmEyMwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4
dHVyZVVwZGF0ZXIuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNpbmNsdWRlICJjYy9D
Q1RleHR1cmVVcGRhdGVyLmgiCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2lu
Y2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5o
IgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NDVGV4
dHVyZVVwZGF0ZXI6OkNDVGV4dHVyZVVwZGF0ZXIoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9y
KQorICAgIDogbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQorICAgICwgbV9lbnRyeUluZGV4KDApCit7
CisgICAgQVNTRVJUKG1fYWxsb2NhdG9yKTsKK30KKworQ0NUZXh0dXJlVXBkYXRlcjo6fkNDVGV4
dHVyZVVwZGF0ZXIoKQoreworfQorCit2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OmFwcGVuZChNYW5h
Z2VkVGV4dHVyZSogdGV4dHVyZSwgTGF5ZXJUZXh0dXJlVXBkYXRlciogdXBkYXRlciwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit7CisgICAgQVNT
RVJUKHRleHR1cmUpOworICAgIEFTU0VSVCh1cGRhdGVyKTsKKworICAgIFVwZGF0ZUVudHJ5IGVu
dHJ5OworICAgIGVudHJ5Lm1fdGV4dHVyZSA9IHRleHR1cmU7CisgICAgZW50cnkubV91cGRhdGVy
ID0gdXBkYXRlcjsKKyAgICBlbnRyeS5tX3NvdXJjZVJlY3QgPSBzb3VyY2VSZWN0OworICAgIGVu
dHJ5Lm1fZGVzdFJlY3QgPSBkZXN0UmVjdDsKKyAgICBtX2VudHJpZXMuYXBwZW5kKGVudHJ5KTsK
K30KKworYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjp1cGRhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIHNpemVfdCBjb3VudCkKK3sKKyAgICBzaXplX3QgbWF4SW5kZXggPSBtaW4obV9lbnRy
eUluZGV4ICsgY291bnQsIG1fZW50cmllcy5zaXplKCkpOworICAgIGZvciAoOyBtX2VudHJ5SW5k
ZXggPCBtYXhJbmRleDsgKyttX2VudHJ5SW5kZXgpIHsKKyAgICAgICAgVXBkYXRlRW50cnkmIGVu
dHJ5ID0gbV9lbnRyaWVzW21fZW50cnlJbmRleF07CisgICAgICAgIGVudHJ5Lm1fdXBkYXRlci0+
dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgbV9hbGxvY2F0b3IsIGVudHJ5Lm1fdGV4dHVyZSwg
ZW50cnkubV9zb3VyY2VSZWN0LCBlbnRyeS5tX2Rlc3RSZWN0KTsKKyAgICB9CisKKyAgICBpZiAo
bWF4SW5kZXggPCBtX2VudHJpZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IC8vIElmIG5vIGVudHJpZXMgbGVmdCB0byBwcm9jZXNzLCBhdXRvLWNsZWFyLgorICAgIGNsZWFy
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OmNsZWFy
KCkKK3sKKyAgICBtX2VudHJ5SW5kZXggPSAwOworICAgIG1fZW50cmllcy5jbGVhcigpOworfQor
Cit9CisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVV
cGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmVVcGRhdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzAzMWMzOWU2MGQ4MDJhZmZlMTZhY2RlYjc4
OGJhYjIwMjE5YjJhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaApAQCAtMCwwICsxLDY4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBDQ1RleHR1cmVVcGRhdGVyX2gKKyNkZWZpbmUgQ0NUZXh0dXJlVXBk
YXRlcl9oCisKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDNEOworY2xhc3Mg
TGF5ZXJUZXh0dXJlVXBkYXRlcjsKK2NsYXNzIE1hbmFnZWRUZXh0dXJlOworY2xhc3MgVGV4dHVy
ZUFsbG9jYXRvcjsKKworY2xhc3MgQ0NUZXh0dXJlVXBkYXRlciB7CitwdWJsaWM6CisgICAgQ0NU
ZXh0dXJlVXBkYXRlcihUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgfkNDVGV4dHVyZVVwZGF0ZXIo
KTsKKworICAgIHZvaWQgYXBwZW5kKE1hbmFnZWRUZXh0dXJlKiwgTGF5ZXJUZXh0dXJlVXBkYXRl
ciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsK
KworICAgIC8vIFVwZGF0ZSBzb21lIHRleHR1cmVzLiBSZXR1cm5zIHRydWUgaWYgbW9yZSB0ZXh0
dXJlcyBsZWZ0IHRvIHByb2Nlc3MuCisgICAgYm9vbCB1cGRhdGUoR3JhcGhpY3NDb250ZXh0M0Qq
LCBzaXplX3QgY291bnQpOworCisgICAgdm9pZCBjbGVhcigpOworCisgICAgVGV4dHVyZUFsbG9j
YXRvciogYWxsb2NhdG9yKCkgeyByZXR1cm4gbV9hbGxvY2F0b3I7IH0KKworcHJpdmF0ZToKKyAg
ICBzdHJ1Y3QgVXBkYXRlRW50cnkgeworICAgICAgICBNYW5hZ2VkVGV4dHVyZSogbV90ZXh0dXJl
OworICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyKiBtX3VwZGF0ZXI7CisgICAgICAgIEludFJl
Y3QgbV9zb3VyY2VSZWN0OworICAgICAgICBJbnRSZWN0IG1fZGVzdFJlY3Q7CisgICAgfTsKKwor
ICAgIFRleHR1cmVBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOworICAgIHNpemVfdCBtX2VudHJ5SW5k
ZXg7CisgICAgVmVjdG9yPFVwZGF0ZUVudHJ5PiBtX2VudHJpZXM7Cit9OworCit9CisKKyNlbmRp
ZiAvLyBDQ1RleHR1cmVVcGRhdGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXgg
OGZlZmE2ZWQyZTkzMThhOGY2ZmRkZmJjNWM0Y2U4MjYwM2E4ZjExNi4uNzE3NmMyNDA3MGZjYzdm
M2MzOGNlMDJmOWQ4YTA2MGE4MzQxZWQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJjYy9DQ1NjaGVkdWxlci5oIgogI2luY2x1ZGUg
ImNjL0NDU2NvcGVkTWFpblRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NTY3JvbGxDb250
cm9sbGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNj
L0NDVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CkBAIC00MTksNyArNDIwLDEzIEBAIHZvaWQgQ0NUaHJlYWRQcm94
eTo6Y29tbWl0T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0
KCk7Ci0gICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRUb09uSW1wbFRocmVhZChtX2xheWVyVHJl
ZUhvc3RJbXBsLmdldCgpKTsKKworICAgIG1fbGF5ZXJUcmVlSG9zdC0+YmVnaW5Db21taXRPbklt
cGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7CisgICAgQ0NUZXh0dXJlVXBkYXRl
ciB1cGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigp
KTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXll
clRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCB1cGRhdGVyKTsKKyAgICB3aGlsZSAodXBkYXRlci51
cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCAxKSkgeyB9CisgICAgbV9sYXll
clRyZWVIb3N0LT5maW5pc2hDb21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5n
ZXQoKSk7CisKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5jb21taXRDb21wbGV0ZSgpOwogCiAg
ICAgY29tcGxldGlvbi0+c2lnbmFsKCk7Cg==
</data>
<flag name="review"
          id="110300"
          type_id="1"
          status="+"
          setter="jamesr"
    />
          </attachment>
      

    </bug>

</bugzilla>