<?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>64772</bug_id>
          
          <creation_ts>2011-07-18 18:27:09 -0700</creation_ts>
          <short_desc>[chromium] Defer managed texture creation and destruction until updateCompositorResources</short_desc>
          <delta_ts>2011-08-11 19:07:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>64771</dependson>
          <blocked>58902</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>senorblanco</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>438897</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-18 18:27:09 -0700</bug_when>
    <thetext>[chromium] Defer managed texture creation and destruction until updateCompositorResources</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438904</commentid>
    <comment_count>1</comment_count>
      <attachid>101255</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-18 18:31:28 -0700</bug_when>
    <thetext>Created attachment 101255
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442011</commentid>
    <comment_count>2</comment_count>
      <attachid>101947</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-25 17:22:47 -0700</bug_when>
    <thetext>Created attachment 101947
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443751</commentid>
    <comment_count>3</comment_count>
      <attachid>101947</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-07-28 18:16:39 -0700</bug_when>
    <thetext>Comment on attachment 101947
Patch

I like the split but it worries me a bit that we have to pass a pointer to a GraphicsContext3D every time we need to do the real GL operation.  This allows for inconsistent context usage, like for example creating a texture with one context and deleting it with another. 

Since we know that every manager is dealing with only one context, how about we keep the context as a member of the manager (doesn&apos;t have to be set by the constructor, just needs to be there before any actual GL operation takes place)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443771</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-28 19:22:51 -0700</bug_when>
    <thetext>The reason I didn&apos;t do that was that I want to start being more careful about when we use the compositor context so that it&apos;ll be easier to enforce the threading constraints on the context.  The way I&apos;ve been thinking to enforce this is to limit access to the GraphicsContext3D pointer itself and guard places that are passed the pointer with ASSERT()s, since I can&apos;t put ASSERT()s in the GraphicsContext3D interface itself.  This does depend on the TextureManager always being passed in the same GraphicsContext3D*, but I&apos;m not totally sure what to do about that.

It could be that I&apos;m being overly paranoid here about people misusing GraphicsContext3Ds that are member functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443772</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-28 19:23:03 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; It could be that I&apos;m being overly paranoid here about people misusing GraphicsContext3Ds that are member functions.

member variables that is</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444191</commentid>
    <comment_count>6</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-07-29 17:20:08 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 101947 [details])
&gt; I like the split but it worries me a bit that we have to pass a pointer to a GraphicsContext3D every time we need to do the real GL operation.  This allows for inconsistent context usage, like for example creating a texture with one context and deleting it with another. 

On the other hand, in the previous world, we could be binding with the same GraphicsContext3D that we created with, but it would be the current one to draw with because some LayerTexture hadn&apos;t been updated to use a new one.  I think the consistency issues aren&apos;t increased here, they&apos;ve just been shifted around.

We could always keep around the GraphicsContext3D pointer in debug builds and assert that we are always using a consistent one for each LayerTexture.  That&apos;s kind of messy, but it would catch errors like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449464</commentid>
    <comment_count>7</comment_count>
      <attachid>103550</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-10 16:08:57 -0700</bug_when>
    <thetext>Created attachment 103550
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449465</commentid>
    <comment_count>8</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-10 16:14:20 -0700</bug_when>
    <thetext>This adds a GraphicsContext3D* in debug only so we can ASSERT() that we aren&apos;t mixing up our contexts.  I&apos;ve also renamed LayerTexture since there are layer and non-layer users of it now (RenderSurfaces and the HUD use the class as well).

Another thought I had as a potential follow-up was to delegate the creation/destruction logic out to a client interface so I don&apos;t have to make TextureManager aware of how the actual resources are made and destroyed.  Then TextureManager would just be responsible for keeping track of resource use and deciding who gets evicted when under pressure.  That would also make it easier to write some C++ unit tests for the class, which is something I should have done ages ago.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449475</commentid>
    <comment_count>9</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-08-10 16:31:01 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; This adds a GraphicsContext3D* in debug only so we can ASSERT() that we aren&apos;t mixing up our contexts.  I&apos;ve also renamed LayerTexture since there are layer and non-layer users of it now (RenderSurfaces and the HUD use the class as well).

Awesome.  This patch looks like a great refactoring.

&gt; Another thought I had as a potential follow-up was to delegate the creation/destruction logic out to a client interface so I don&apos;t have to make TextureManager aware of how the actual resources are made and destroyed.  Then TextureManager would just be responsible for keeping track of resource use and deciding who gets evicted when under pressure.  That would also make it easier to write some C++ unit tests for the class, which is something I should have done ages ago.

This also sounds like a great idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450195</commentid>
    <comment_count>10</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-11 17:48:01 -0700</bug_when>
    <thetext>Can I get an official review+?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450200</commentid>
    <comment_count>11</comment_count>
      <attachid>103550</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-08-11 18:00:00 -0700</bug_when>
    <thetext>Comment on attachment 103550
Patch

Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450231</commentid>
    <comment_count>12</comment_count>
      <attachid>103550</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-11 19:07:38 -0700</bug_when>
    <thetext>Comment on attachment 103550
Patch

Clearing flags on attachment: 103550

Committed r92900: &lt;http://trac.webkit.org/changeset/92900&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450232</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-11 19:07:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101255</attachid>
            <date>2011-07-18 18:31:28 -0700</date>
            <delta_ts>2011-07-25 17:22:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64772-20110718183127.patch</filename>
            <type>text/plain</type>
            <size>23922</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEyMTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5o
CmluZGV4IGUwYmJkZWRhODI2YTY2NjAzNWViOTYyMzQyZGE5NzU2NThhMTcyM2MuLmQ0YTU0N2Nj
NTk3NjIzYmQxMDIwNDYwZmZiOTg5NzhjZjg3ODI4ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVy
Q2hyb21pdW0uaApAQCAtMzksNyArMzksNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIExheWVyVGV4dHVyZTsKIGNsYXNzIExheWVyVGlsZXJDaHJvbWl1bTsKIGNsYXNzIExheWVy
VGV4dHVyZVVwZGF0ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IGYy
NDhmMmMxNjI1NjQ5ODA5MTZlMDlkYjRiNTllY2RlM2MxNDAyNWMuLjNhYzNkZTQ5Mzc0NDYzNDBi
YmQ5ZTVkNTE2ZmVkOWRkMzBlMWJhOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNw
cApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4
dHVyZVJlY3QoTGF5ZXJUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKICAgICB7Ci0gICAgICAgIHRleHR1cmUtPmJpbmRU
ZXh0dXJlKCk7CisgICAgICAgIHRleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQoKSk7CiAKICAg
ICAgICAgLy8gU291cmNlIHJlY3Qgc2hvdWxkIG5ldmVyIGdvIG91dHNpZGUgdGhlIGltYWdlIHBp
eGVscywgZXZlbiBpZiB0aGlzCiAgICAgICAgIC8vIGlzIHJlcXVlc3RlZCBiZWNhdXNlIHRoZSB0
ZXh0dXJlIGV4dGVuZHMgb3V0c2lkZSB0aGUgaW1hZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmNwcAppbmRleCBjYjZiMGZiMDNkMDkzMjliZWM3OThlZDQ1YmEyNWQwOTBlMjdi
M2Q2Li4xMTE4Yzc5ODA0NzUyNGQyNGUwNDk3MmU3M2M1MTU5YTFmZGE4N2EyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTIxNCw5ICsyMTQsMTEgQEAgdm9pZCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OnJlbGVhc2VUZXh0dXJlcygpCiAgICAgbV9yb290TGF5ZXJD
b250ZW50VGlsZXItPnByb3RlY3RUaWxlVGV4dHVyZXMobV92aWV3cG9ydFZpc2libGVSZWN0KTsK
ICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGltaXQodGV4dHVy
ZU1lbW9yeUxvd0xpbWl0Qnl0ZXMpOwogICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+dW5w
cm90ZWN0QWxsVGV4dHVyZXMoKTsKKyAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPmRlbGV0
ZUV2aWN0ZWRUZXh0dXJlcyhtX2NvbnRleHQuZ2V0KCkpOwogICAgIC8vIEV2aWN0IGFsbCBSZW5k
ZXJTdXJmYWNlIHRleHR1cmVzLgogICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT51
bnByb3RlY3RBbGxUZXh0dXJlcygpOwogICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2Vy
LT5yZWR1Y2VNZW1vcnlUb0xpbWl0KDApOworICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5h
Z2VyLT5kZWxldGVFdmljdGVkVGV4dHVyZXMobV9jb250ZXh0LmdldCgpKTsKIH0KIAogdm9pZCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OnVwZGF0ZVJvb3RMYXllckNvbnRlbnRzKCkKQEAgLTMyMyw2
ICszMjUsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVycygpCiAgICAg
ZWxzZQogICAgICAgICByZW5kZXJTdXJmYWNlTGltaXRzLnJlY2xhaW1MaW1pdCA9IDA7CiAgICAg
bV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXItPnNldExpbWl0cyhyZW5kZXJTdXJmYWNlTGlt
aXRzKTsKKyAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+ZGVsZXRlRXZpY3RlZFRl
eHR1cmVzKG1fY29udGV4dC5nZXQoKSk7CiAKICAgICAvLyBBZnRlciBkcmF3TGF5ZXJzOgogICAg
IGlmIChoYXJkd2FyZUNvbXBvc2l0aW5nKCkgJiYgbV9jb250ZXh0U3VwcG9ydHNMYXRjaCkgewpA
QCAtMzczLDYgKzM3Niw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVMYXll
cnMoTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KQogICAgIC8vIGNvbmNlcHQgb2Yg
YSBsYXJnZSBjb250ZW50IGxheWVyLgogICAgIHVwZGF0ZVByb3BlcnRpZXNBbmRSZW5kZXJTdXJm
YWNlcyhyb290RHJhd0xheWVyLCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dCwgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+bV9sYXllckxpc3QpOwogCisgICAgbV9jb250ZW50
c1RleHR1cmVNYW5hZ2VyLT5kZWxldGVFdmljdGVkVGV4dHVyZXMobV9jb250ZXh0LmdldCgpKTsK
ICNpZm5kZWYgTkRFQlVHCiAgICAgc19pblBhaW50TGF5ZXJDb250ZW50cyA9IHRydWU7CiAjZW5k
aWYKQEAgLTEwMzYsNyArMTA0MCw3IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1c2VS
ZW5kZXJTdXJmYWNlKFJlbmRlclN1cmZhY2VDaHJvbWl1bSogcmVuZGVyU3VyZmFjCiAgICAgaWYg
KCFyZW5kZXJTdXJmYWNlLT5wcmVwYXJlQ29udGVudHNUZXh0dXJlKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIHJlbmRlclN1cmZhY2UtPm1fY29udGVudHNUZXh0dXJlLT5mcmFtZWJ1
ZmZlclRleHR1cmUyRCgpOworICAgIHJlbmRlclN1cmZhY2UtPm1fY29udGVudHNUZXh0dXJlLT5m
cmFtZWJ1ZmZlclRleHR1cmUyRChtX2NvbnRleHQuZ2V0KCkpOwogCiAjaWYgIWRlZmluZWQgKCBO
REVCVUcgKQogICAgIGlmIChtX2NvbnRleHQtPmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR3JhcGhp
Y3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZG
RVJfQ09NUExFVEUpIHsKQEAgLTExNzgsOCArMTE4Miw4IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjppbml0aWFsaXplU2hhcmVkT2JqZWN0cygpCiAgICAgVGV4dHVyZU1hbmFnZXI6OlRl
eHR1cmVNZW1vcnlMaW1pdHMgbGltaXRzOwogICAgIGxpbWl0cy51cHBlckxpbWl0ID0gdGV4dHVy
ZU1lbW9yeUhpZ2hMaW1pdEJ5dGVzOwogICAgIGxpbWl0cy5yZWNsYWltTGltaXQgPSB0ZXh0dXJl
TWVtb3J5UmVjbGFpbUxpbWl0Qnl0ZXM7Ci0gICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyID0g
VGV4dHVyZU1hbmFnZXI6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCksIGxpbWl0cywgbV9tYXhUZXh0
dXJlU2l6ZSk7Ci0gICAgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFu
YWdlcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSwgbGltaXRzLCBtX21heFRleHR1cmVTaXplKTsK
KyAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKGxp
bWl0cywgbV9tYXhUZXh0dXJlU2l6ZSk7CisgICAgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFn
ZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKGxpbWl0cywgbV9tYXhUZXh0dXJlU2l6ZSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmUuY3BwCmluZGV4IDA5OTg2NDNiZWJh
MTdhMjg0YTM2YjBhODNiNzFlZmE4Mjk1MTgzNzguLmI5MGUxMzY2YTdmYTc0NWY5NTBlNDMyOGVk
YzE0NTI4NWNlMTJmOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlLmNwcApAQCAtMzMsOSArMzMsOCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUxheWVyVGV4dHVyZTo6TGF5ZXJUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlTWFuYWdlciogbWFuYWdlcikKLSAgICA6IG1f
Y29udGV4dChjb250ZXh0KQotICAgICwgbV90ZXh0dXJlTWFuYWdlcihtYW5hZ2VyKQorTGF5ZXJU
ZXh0dXJlOjpMYXllclRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpCisgICAgOiBtX3Rl
eHR1cmVNYW5hZ2VyKG1hbmFnZXIpCiAgICAgLCBtX3Rva2VuKDApCiAgICAgLCBtX2Zvcm1hdCgw
KQogICAgICwgbV90ZXh0dXJlSWQoMCkKQEAgLTU4LDE3ICs1NywxOSBAQCBib29sIExheWVyVGV4
dHVyZTo6cmVzZXJ2ZShjb25zdCBJbnRTaXplJiBzaXplLCB1bnNpZ25lZCBmb3JtYXQpCiAgICAg
aWYgKCFtX3Rva2VuKQogICAgICAgICBtX3Rva2VuID0gbV90ZXh0dXJlTWFuYWdlci0+Z2V0VG9r
ZW4oKTsKIAorICAgIGJvb2wgcmVzZXJ2ZWQgPSB0cnVlOwogICAgIGlmIChzaXplID09IG1fc2l6
ZSAmJiBmb3JtYXQgPT0gbV9mb3JtYXQgJiYgbV90ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZSht
X3Rva2VuKSkKICAgICAgICAgbV90ZXh0dXJlTWFuYWdlci0+cHJvdGVjdFRleHR1cmUobV90b2tl
bik7CiAgICAgZWxzZSB7Ci0gICAgICAgIG1fdGV4dHVyZUlkID0gbV90ZXh0dXJlTWFuYWdlci0+
cmVxdWVzdFRleHR1cmUobV90b2tlbiwgc2l6ZSwgZm9ybWF0KTsKLSAgICAgICAgaWYgKG1fdGV4
dHVyZUlkKSB7CisgICAgICAgIG1fdGV4dHVyZUlkID0gMDsKKyAgICAgICAgcmVzZXJ2ZWQgPSBt
X3RleHR1cmVNYW5hZ2VyLT5yZXF1ZXN0VGV4dHVyZShtX3Rva2VuLCBzaXplLCBmb3JtYXQpOwor
ICAgICAgICBpZiAocmVzZXJ2ZWQpIHsKICAgICAgICAgICAgIG1fc2l6ZSA9IHNpemU7CiAgICAg
ICAgICAgICBtX2Zvcm1hdCA9IGZvcm1hdDsKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVy
biBtX3RleHR1cmVJZDsKKyAgICByZXR1cm4gcmVzZXJ2ZWQ7CiB9CiAKIHZvaWQgTGF5ZXJUZXh0
dXJlOjp1bnJlc2VydmUoKQpAQCAtNzksMTUgKzgwLDIwIEBAIHZvaWQgTGF5ZXJUZXh0dXJlOjp1
bnJlc2VydmUoKQogICAgIG1fdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdFRleHR1cmUobV90b2tl
bik7CiB9CiAKLXZvaWQgTGF5ZXJUZXh0dXJlOjpiaW5kVGV4dHVyZSgpCit2b2lkIExheWVyVGV4
dHVyZTo6YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiB7CiAgICAgQVNT
RVJUKG1fdGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUobV90b2tlbikpOwotICAgIG1fY29udGV4
dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZUlk
KTsKKyAgICBpZiAoIW1fdGV4dHVyZUlkKQorICAgICAgICBtX3RleHR1cmVJZCA9IG1fdGV4dHVy
ZU1hbmFnZXItPmFsbG9jYXRlVGV4dHVyZShjb250ZXh0LCBtX3Rva2VuKTsKKyAgICBjb250ZXh0
LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlSWQp
OwogfQogCi12b2lkIExheWVyVGV4dHVyZTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoKQordm9pZCBM
YXllclRleHR1cmU6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0KQogewotICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAs
IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVJZCwgMCk7CisgICAgQVNT
RVJUKG1fdGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUobV90b2tlbikpOworICAgIGlmICghbV90
ZXh0dXJlSWQpCisgICAgICAgIG1fdGV4dHVyZUlkID0gbV90ZXh0dXJlTWFuYWdlci0+YWxsb2Nh
dGVUZXh0dXJlKGNvbnRleHQsIG1fdG9rZW4pOworICAgIGNvbnRleHQtPmZyYW1lYnVmZmVyVGV4
dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6
OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0
dXJlSWQsIDApOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZS5oCmluZGV4IGQzMGE1MDc4ZWY1ZmNmMzM0
NWQ4NDNjNWRhNjU0YTk4NTk3NzI2MjIuLjFiNWY0YTg2MWQ0YTQ0MTI1MjBiMmJlYWY3MzU3ZjE5
MjM0YTBlZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZS5oCkBAIC00MSw5ICs0MSw5IEBAIGNsYXNzIFRleHR1
cmVNYW5hZ2VyOwogY2xhc3MgTGF5ZXJUZXh0dXJlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShMYXllclRleHR1cmUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc093blB0cjxMYXllclRleHR1cmU+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpCisgICAgc3RhdGljIFBhc3NPd25QdHI8
TGF5ZXJUZXh0dXJlPiBjcmVhdGUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IExheWVyVGV4dHVyZShjb250ZXh0LCBtYW5hZ2VyKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTGF5ZXJUZXh0dXJlKG1hbmFnZXIpKTsKICAg
ICB9CiAgICAgfkxheWVyVGV4dHVyZSgpOwogCkBAIC01NywxMyArNTcsMTIgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbV90ZXh0dXJlTWFuYWdlci0+aXNQcm90ZWN0ZWQobV90b2tlbik7CiAg
ICAgfQogCi0gICAgdm9pZCBiaW5kVGV4dHVyZSgpOwotICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0
dXJlMkQoKTsKKyAgICB2b2lkIGJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKik7CisgICAg
dm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRCopOwogCiBwcml2YXRl
OgotICAgIExheWVyVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVNYW5hZ2VyKik7
CisgICAgZXhwbGljaXQgTGF5ZXJUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKik7CiAKLSAgICBSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsKICAgICBUZXh0dXJlTWFuYWdlciogbV90
ZXh0dXJlTWFuYWdlcjsKICAgICBUZXh0dXJlVG9rZW4gbV90b2tlbjsKICAgICBJbnRTaXplIG1f
c2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5jcHAKaW5kZXgg
M2YwZjk0OGNjY2VkMTRjZGJiODg5M2YyMjdiYTMzYWQ2Mzk4ZjNkZC4uNzBhNTI2OWU4NmRiZGU5
NjgyOTZjY2YwMDc1NzdmMmJiY2IxODdjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJl
VXBkYXRlckNhbnZhcy5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBMYXllclRleHR1cmVVcGRh
dGVyQml0bWFwOjp1cGRhdGVUZXh0dXJlUmVjdChMYXllclRleHR1cmUqIHRleHR1cmUsIGNvbnN0
IEkKIHsKICAgICBQbGF0Zm9ybUNhbnZhczo6QXV0b0xvY2tlciBsb2NrZXIoJm1fY2FudmFzKTsK
IAotICAgIHRleHR1cmUtPmJpbmRUZXh0dXJlKCk7CisgICAgdGV4dHVyZS0+YmluZFRleHR1cmUo
Y29udGV4dCgpKTsKICAgICBtX3RleFN1YkltYWdlLnVwbG9hZChsb2NrZXIucGl4ZWxzKCksIGNv
bnRlbnRSZWN0KCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0LCB0ZXh0dXJlLT5mb3JtYXQoKSwgY29u
dGV4dCgpKTsKIH0KIApAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgTGF5ZXJUZXh0dXJlVXBkYXRl
clNrUGljdHVyZTo6dXBkYXRlVGV4dHVyZVJlY3QoTGF5ZXJUZXh0dXJlKiB0ZXh0dXJlLCBjb25z
CiAKICAgICAvLyBCaW5kIHRleHR1cmUuCiAgICAgY29udGV4dCgpLT5iaW5kRnJhbWVidWZmZXIo
R3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zibyk7Ci0gICAgdGV4dHVyZS0+ZnJh
bWVidWZmZXJUZXh0dXJlMkQoKTsKKyAgICB0ZXh0dXJlLT5mcmFtZWJ1ZmZlclRleHR1cmUyRChj
b250ZXh0KCkpOwogICAgIEFTU0VSVChjb250ZXh0KCktPmNoZWNrRnJhbWVidWZmZXJTdGF0dXMo
R3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6RlJB
TUVCVUZGRVJfQ09NUExFVEUpOwogCiAgICAgLy8gTWFrZSBzdXJlIFNLSUEgdXNlcyB0aGUgY29y
cmVjdCBHTCBjb250ZXh0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAKaW5kZXggYTBi
ZDEwOGE4MjU0ZWM5ZTM2YTgzZDM1OWI1YTVhODVjNjc3YzdkYi4uZGVmYjAwM2U1ZWFhNjU5Nzll
ZTBjNzc1NDg0ZDJhOTJkNzEzZmM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3Bw
CkBAIC0xMTQsOSArMTE0LDggQEAgTGF5ZXJUaWxlckNocm9taXVtOjpUaWxlKiBMYXllclRpbGVy
Q2hyb21pdW06OmNyZWF0ZVRpbGUoaW50IGksIGludCBqKQogICAgICAgICBtX3VudXNlZFRpbGVz
LnJlbW92ZUxhc3QoKTsKICAgICAgICAgQVNTRVJUKHRpbGUtPnJlZkNvdW50KCkgPT0gMSk7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJl
bmRlcmVyQ29udGV4dCgpOwogICAgICAgICBUZXh0dXJlTWFuYWdlciogbWFuYWdlciA9IGxheWVy
UmVuZGVyZXIoKS0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpOwotICAgICAgICB0aWxlID0gYWRv
cHRSZWYobmV3IFRpbGUoTGF5ZXJUZXh0dXJlOjpjcmVhdGUoY29udGV4dCwgbWFuYWdlcikpKTsK
KyAgICAgICAgdGlsZSA9IGFkb3B0UmVmKG5ldyBUaWxlKExheWVyVGV4dHVyZTo6Y3JlYXRlKG1h
bmFnZXIpKSk7CiAgICAgfQogICAgIG1fdGlsZXMuYWRkKG1ha2VfcGFpcihpLCBqKSwgdGlsZSk7
CiAKQEAgLTM3Miw3ICszNzEsNyBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6dXBkYXRlUmVj
dChMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcikKICAgICAgICAgICAgIGlmIChw
YWludE9mZnNldC55KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSA+IG1fcGFpbnRSZWN0LmhlaWdodCgp
KQogICAgICAgICAgICAgICAgIENSQVNIKCk7CiAKLSAgICAgICAgICAgIHRpbGUtPnRleHR1cmUo
KS0+YmluZFRleHR1cmUoKTsKKyAgICAgICAgICAgIHRpbGUtPnRleHR1cmUoKS0+YmluZFRleHR1
cmUoY29udGV4dCk7CiAgICAgICAgICAgICBjb25zdCBHQzNEaW50IGZpbHRlciA9IG1fdGlsaW5n
RGF0YS5ib3JkZXJUZXhlbHMoKSA/IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIgOiBHcmFwaGlj
c0NvbnRleHQzRDo6TkVBUkVTVDsKICAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50
ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBmaWx0ZXIpKTsKICAgICAgICAgICAgIEdMQyhjb250
ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBmaWx0ZXIpKTsKQEAgLTUz
Niw3ICs1MzUsNyBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6ZHJhd1RpbGVzKGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdAogCiAgICAgICAgICAgICBBU1NF
UlQodGlsZS0+dGV4dHVyZSgpLT5pc1Jlc2VydmVkKCkpOwogCi0gICAgICAgICAgICB0aWxlLT50
ZXh0dXJlKCktPmJpbmRUZXh0dXJlKCk7CisgICAgICAgICAgICB0aWxlLT50ZXh0dXJlKCktPmJp
bmRUZXh0dXJlKGNvbnRleHQpOwogICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRl
eFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIGZpbHRlcikpOwogICAgICAgICAgICAgR0xDKGNvbnRl
eHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIGZpbHRlcikpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJT
dXJmYWNlQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcAppbmRleCBlMmI5ZWM4YzViNjY5YzU4ZTVl
NDA3MTYzNDgwNWQ4MzE4MTA4ODM3Li4zYjIwZTdlNTkyN2ZhZWEzYWM0MzY3NTY2MGUyNDNkMjM3
NTNlNzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHAKQEAgLTg1LDcg
Kzg1LDcgQEAgYm9vbCBSZW5kZXJTdXJmYWNlQ2hyb21pdW06OnByZXBhcmVDb250ZW50c1RleHR1
cmUoKQogICAgIFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlciA9IGxheWVyUmVuZGVyZXIo
KS0+cmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyKCk7CiAKICAgICBpZiAoIW1fY29udGVudHNU
ZXh0dXJlKQotICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZSA9IExheWVyVGV4dHVyZTo6Y3JlYXRl
KGxheWVyUmVuZGVyZXIoKS0+Y29udGV4dCgpLCB0ZXh0dXJlTWFuYWdlcik7CisgICAgICAgIG1f
Y29udGVudHNUZXh0dXJlID0gTGF5ZXJUZXh0dXJlOjpjcmVhdGUodGV4dHVyZU1hbmFnZXIpOwog
CiAgICAgaWYgKG1fY29udGVudHNUZXh0dXJlLT5pc1Jlc2VydmVkKCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgUmVuZGVyU3VyZmFjZUNocm9taXVtOjpk
cmF3U3VyZmFjZShDQ0xheWVySW1wbCogbWFza0xheWVyLCBjb25zdCBUcmFuc2Zvcm1hCiAgICAg
ICAgICAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPnVzZVByb2dyYW0obWFza1Byb2dyYW0t
PnByb2dyYW0oKSkpOwogICAgICAgICAgICAgR0xDKGNvbnRleHQzRCwgY29udGV4dDNELT5hY3Rp
dmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwogICAgICAgICAgICAgR0xD
KGNvbnRleHQzRCwgY29udGV4dDNELT51bmlmb3JtMWkobWFza1Byb2dyYW0tPmZyYWdtZW50U2hh
ZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKLSAgICAgICAgICAgIG1fY29udGVudHNUZXh0
dXJlLT5iaW5kVGV4dHVyZSgpOworICAgICAgICAgICAgbV9jb250ZW50c1RleHR1cmUtPmJpbmRU
ZXh0dXJlKGNvbnRleHQzRCk7CiAgICAgICAgICAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0Qt
PmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUxKSk7CiAgICAgICAgICAg
ICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPnVuaWZvcm0xaShtYXNrUHJvZ3JhbS0+ZnJhZ21l
bnRTaGFkZXIoKS5tYXNrU2FtcGxlckxvY2F0aW9uKCksIDEpKTsKICAgICAgICAgICAgIG1hc2tM
YXllci0+YmluZENvbnRlbnRzVGV4dHVyZSgpOwpAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgUmVu
ZGVyU3VyZmFjZUNocm9taXVtOjpkcmF3U3VyZmFjZShDQ0xheWVySW1wbCogbWFza0xheWVyLCBj
b25zdCBUcmFuc2Zvcm1hCiAKICAgICBpZiAoIXVzZU1hc2spIHsKICAgICAgICAgR0xDKGNvbnRl
eHQzRCwgY29udGV4dDNELT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOwotICAgICAg
ICBtX2NvbnRlbnRzVGV4dHVyZS0+YmluZFRleHR1cmUoKTsKKyAgICAgICAgbV9jb250ZW50c1Rl
eHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQzRCk7CiAgICAgICAgIEdMQyhjb250ZXh0M0QsIGNv
bnRleHQzRC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0
aW9uKCksIDApKTsKICAgICAgICAgc2hhZGVyTWF0cml4TG9jYXRpb24gPSBwcm9ncmFtLT52ZXJ0
ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpOwogICAgICAgICBzaGFkZXJBbHBoYUxvY2F0aW9u
ID0gcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJl
TWFuYWdlci5jcHAKaW5kZXggNjQ0ZGQyYTZhYzA0NmU5OGUzN2Q2OTA4NWU0ZDU5ZDA0NWI0NTBj
Mi4uMGRkMGQzYzJmMTkzMjc3ZGMxYjNkZjRkZjljMjk5ZjE1YmM2Mzc2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1
cmVNYW5hZ2VyLmNwcApAQCAtMzgsOSArMzgsOCBAQCBzdGF0aWMgc2l6ZV90IG1lbW9yeVVzZUJ5
dGVzKEludFNpemUgc2l6ZSwgdW5zaWduZWQgdGV4dHVyZUZvcm1hdCkKICAgICByZXR1cm4gc2l6
ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKSAqIDQ7CiB9CiAKLVRleHR1cmVNYW5hZ2VyOjpUZXh0
dXJlTWFuYWdlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgVGV4dHVyZU1lbW9y
eUxpbWl0cyYgbWVtb3J5TGltaXRzLCBpbnQgbWF4VGV4dHVyZVNpemUpCi0gICAgOiBtX2NvbnRl
eHQoY29udGV4dCkKLSAgICAsIG1fbWVtb3J5TGltaXRzKG1lbW9yeUxpbWl0cykKK1RleHR1cmVN
YW5hZ2VyOjpUZXh0dXJlTWFuYWdlcihjb25zdCBUZXh0dXJlTWVtb3J5TGltaXRzJiBtZW1vcnlM
aW1pdHMsIGludCBtYXhUZXh0dXJlU2l6ZSkKKyAgICA6IG1fbWVtb3J5TGltaXRzKG1lbW9yeUxp
bWl0cykKICAgICAsIG1fbWVtb3J5VXNlQnl0ZXMoMCkKICAgICAsIG1fbWF4VGV4dHVyZVNpemUo
bWF4VGV4dHVyZVNpemUpCiAgICAgLCBtX25leHRUb2tlbigxKQpAQCAtMTMxLDYgKzEzMCwxMyBA
QCB2b2lkIFRleHR1cmVNYW5hZ2VyOjphZGRUZXh0dXJlKFRleHR1cmVUb2tlbiB0b2tlbiwgVGV4
dHVyZUluZm8gaW5mbykKICAgICBtX3RleHR1cmVMUlVTZXQuYWRkKHRva2VuKTsKIH0KIAordm9p
ZCBUZXh0dXJlTWFuYWdlcjo6ZGVsZXRlRXZpY3RlZFRleHR1cmVzKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0KQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ldmljdGVkVGV4dHVy
ZUlkcy5zaXplKCk7ICsraSkKKyAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmRlbGV0ZVRl
eHR1cmUobV9ldmljdGVkVGV4dHVyZUlkc1tpXSkpOworICAgIG1fZXZpY3RlZFRleHR1cmVJZHMu
Y2xlYXIoKTsKK30KKwogdm9pZCBUZXh0dXJlTWFuYWdlcjo6cmVtb3ZlVGV4dHVyZShUZXh0dXJl
VG9rZW4gdG9rZW4sIFRleHR1cmVJbmZvIGluZm8pCiB7CiAgICAgQVNTRVJUKG1fdGV4dHVyZUxS
VVNldC5jb250YWlucyh0b2tlbikpOwpAQCAtMTM5LDEzICsxNDUsMzQgQEAgdm9pZCBUZXh0dXJl
TWFuYWdlcjo6cmVtb3ZlVGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4sIFRleHR1cmVJbmZvIGlu
Zm8pCiAgICAgbV90ZXh0dXJlcy5yZW1vdmUodG9rZW4pOwogICAgIEFTU0VSVChtX3RleHR1cmVM
UlVTZXQuY29udGFpbnModG9rZW4pKTsKICAgICBtX3RleHR1cmVMUlVTZXQucmVtb3ZlKHRva2Vu
KTsKLSAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmRlbGV0ZVRleHR1cmUoaW5m
by50ZXh0dXJlSWQpKTsKKyAgICBtX2V2aWN0ZWRUZXh0dXJlSWRzLmFwcGVuZChpbmZvLnRleHR1
cmVJZCk7Cit9CisKK3Vuc2lnbmVkIFRleHR1cmVNYW5hZ2VyOjphbGxvY2F0ZVRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVUb2tlbiB0b2tlbikKK3sKKyAgICBUZXh0
dXJlTWFwOjppdGVyYXRvciBpdCA9IG1fdGV4dHVyZXMuZmluZCh0b2tlbik7CisgICAgQVNTRVJU
KGl0ICE9IG1fdGV4dHVyZXMuZW5kKCkpOworICAgIFRleHR1cmVJbmZvKiBpbmZvID0gJml0Lmdl
dCgpLT5zZWNvbmQ7CisgICAgQVNTRVJUKGluZm8tPmlzUHJvdGVjdGVkKTsKKworICAgIHVuc2ln
bmVkIHRleHR1cmVJZDsKKyAgICBHTEMoY29udGV4dCwgdGV4dHVyZUlkID0gY29udGV4dC0+Y3Jl
YXRlVGV4dHVyZSgpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmVJZCkpOworICAgIC8vIERvIGJhc2lj
IGxpbmVhciBmaWx0ZXJpbmcgb24gcmVzaXplLgorICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50
ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7Cisg
ICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBo
aWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKKyAgICAvLyBOUE9UIHRleHR1cmVzIGluIEdMIEVTIG9u
bHkgd29yayB3aGVuIHRoZSB3cmFwIG1vZGUgaXMgc2V0IHRvIEdyYXBoaWNzQ29udGV4dDNEOjpD
TEFNUF9UT19FREdFLgorICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9X
UkFQX1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKSk7CisgICAgR0xDKGNvbnRl
eHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNM
QU1QX1RPX0VER0UpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4SW1hZ2UyRFJlc291
cmNlU2FmZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgaW5mby0+Zm9ybWF0LCBp
bmZvLT5zaXplLndpZHRoKCksIGluZm8tPnNpemUuaGVpZ2h0KCksIDAsIGluZm8tPmZvcm1hdCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUpKTsKKyAgICBpbmZvLT50ZXh0dXJlSWQg
PSB0ZXh0dXJlSWQ7CisgICAgcmV0dXJuIHRleHR1cmVJZDsKIH0KIAotdW5zaWduZWQgVGV4dHVy
ZU1hbmFnZXI6OnJlcXVlc3RUZXh0dXJlKFRleHR1cmVUb2tlbiB0b2tlbiwgSW50U2l6ZSBzaXpl
LCB1bnNpZ25lZCBmb3JtYXQpCitib29sIFRleHR1cmVNYW5hZ2VyOjpyZXF1ZXN0VGV4dHVyZShU
ZXh0dXJlVG9rZW4gdG9rZW4sIEludFNpemUgc2l6ZSwgdW5zaWduZWQgZm9ybWF0KQogewogICAg
IGlmIChzaXplLndpZHRoKCkgPiBtX21heFRleHR1cmVTaXplIHx8IHNpemUuaGVpZ2h0KCkgPiBt
X21heFRleHR1cmVTaXplKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgVGV4dHVyZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3RleHR1cmVzLmZpbmQodG9rZW4p
OwogICAgIGlmIChpdCAhPSBtX3RleHR1cmVzLmVuZCgpKSB7CkBAIC0xNTgsMjUgKzE4NSwxNSBA
QCB1bnNpZ25lZCBUZXh0dXJlTWFuYWdlcjo6cmVxdWVzdFRleHR1cmUoVGV4dHVyZVRva2VuIHRv
a2VuLCBJbnRTaXplIHNpemUsIHVuc2lnbgogICAgIC8vIFJlY2xhaW0gZXhpc3RpbmcgdW5yZXNl
cnZlZCB0ZXh0dXJlcyB0byB0cnkgdG8gc3RheSBiZWxvdyB0aGUgcmVjbGFpbSBsaW1pdC4KICAg
ICByZWR1Y2VNZW1vcnlUb0xpbWl0KHN0ZDo6bWF4KG1fbWVtb3J5TGltaXRzLnJlY2xhaW1MaW1p
dCAtIG1lbW9yeVJlcXVpcmVkQnl0ZXMsIHN0YXRpY19jYXN0PHNpemVfdD4oMCkpKTsKICAgICBp
ZiAobV9tZW1vcnlVc2VCeXRlcyArIG1lbW9yeVJlcXVpcmVkQnl0ZXMgPiBtX21lbW9yeUxpbWl0
cy51cHBlckxpbWl0KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgdW5zaWduZWQgdGV4dHVyZUlkOwotICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIHRleHR1
cmVJZCA9IG1fY29udGV4dC0+Y3JlYXRlVGV4dHVyZSgpKTsKLSAgICBHTEMobV9jb250ZXh0Lmdl
dCgpLCBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCB0ZXh0dXJlSWQpKTsKLSAgICAvLyBEbyBiYXNpYyBsaW5lYXIgZmlsdGVyaW5nIG9uIHJlc2l6
ZS4KLSAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01J
Tl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKLSAgICBHTEMobV9jb250ZXh0
LmdldCgpLCBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpMSU5FQVIpKTsKLSAgICAvLyBOUE9UIHRleHR1cmVzIGluIEdMIEVTIG9ubHkgd29y
ayB3aGVuIHRoZSB3cmFwIG1vZGUgaXMgc2V0IHRvIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9U
T19FREdFLgotICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+dGV4UGFyYW1ldGVy
aShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOwotICAgIEdMQyht
X2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGlj
c0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOwotICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1f
Y29udGV4dC0+dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgMCwgZm9ybWF0LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIDAsIGZvcm1hdCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUpKTsKICAgICBUZXh0dXJlSW5mbyBpbmZv
OwogICAgIGluZm8uc2l6ZSA9IHNpemU7CiAgICAgaW5mby5mb3JtYXQgPSBmb3JtYXQ7Ci0gICAg
aW5mby50ZXh0dXJlSWQgPSB0ZXh0dXJlSWQ7CisgICAgaW5mby50ZXh0dXJlSWQgPSAwOwogICAg
IGluZm8uaXNQcm90ZWN0ZWQgPSB0cnVlOwogICAgIGFkZFRleHR1cmUodG9rZW4sIGluZm8pOwot
ICAgIHJldHVybiB0ZXh0dXJlSWQ7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJl
TWFuYWdlci5oCmluZGV4IGUwZDJkNTc0MjdmNWYxMmEwZWI4MDNjZTIyMmU2YTE2Y2FlYzIwNjAu
LjMwOWVjYjAyYWE1NjlhMTU2NDA4YzFmNmJhMDMxNTU1ZTU5NTJlMjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1h
bmFnZXIuaApAQCAtNDcsOSArNDcsOSBAQCBwdWJsaWM6CiAgICAgICAgIHNpemVfdCByZWNsYWlt
TGltaXQ7CiAgICAgfTsKIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPFRleHR1cmVNYW5hZ2VyPiBj
cmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IFRleHR1cmVNZW1vcnlMaW1p
dHMmIG1lbW9yeUxpbWl0cywgaW50IG1heFRleHR1cmVTaXplKQorICAgIHN0YXRpYyBQYXNzT3du
UHRyPFRleHR1cmVNYW5hZ2VyPiBjcmVhdGUoY29uc3QgVGV4dHVyZU1lbW9yeUxpbWl0cyYgbWVt
b3J5TGltaXRzLCBpbnQgbWF4VGV4dHVyZVNpemUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IFRleHR1cmVNYW5hZ2VyKGNvbnRleHQsIG1lbW9yeUxpbWl0cywgbWF4VGV4dHVy
ZVNpemUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJlTWFuYWdlcihtZW1v
cnlMaW1pdHMsIG1heFRleHR1cmVTaXplKSk7CiAgICAgfQogCiAgICAgLy8gU2V0cyBuZXcgcmVz
b3VyY2UgbGltaXRzIGFuZCByZWNsYWltcyBhdmFpbGFibGUgdGV4dHVyZXMgYXMgY2xvc2UgdG8g
cmVjbGFpbUxpbWl0IGFzIHBvc3NpYmxlLgpAQCAtNTksMTggKzU5LDIxIEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlbGVhc2VUb2tlbihUZXh0dXJlVG9rZW4pOwogICAgIGJvb2wgaGFzVGV4dHVyZShU
ZXh0dXJlVG9rZW4pOwogCi0gICAgdW5zaWduZWQgcmVxdWVzdFRleHR1cmUoVGV4dHVyZVRva2Vu
LCBJbnRTaXplLCB1bnNpZ25lZCB0ZXh0dXJlRm9ybWF0KTsKKyAgICBib29sIHJlcXVlc3RUZXh0
dXJlKFRleHR1cmVUb2tlbiwgSW50U2l6ZSwgdW5zaWduZWQgdGV4dHVyZUZvcm1hdCk7CiAKICAg
ICB2b2lkIHByb3RlY3RUZXh0dXJlKFRleHR1cmVUb2tlbik7CiAgICAgdm9pZCB1bnByb3RlY3RU
ZXh0dXJlKFRleHR1cmVUb2tlbik7CiAgICAgdm9pZCB1bnByb3RlY3RBbGxUZXh0dXJlcygpOwog
ICAgIGJvb2wgaXNQcm90ZWN0ZWQoVGV4dHVyZVRva2VuKTsKIAorICAgIHVuc2lnbmVkIGFsbG9j
YXRlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVUb2tlbik7CisgICAgdm9pZCBk
ZWxldGVFdmljdGVkVGV4dHVyZXMoR3JhcGhpY3NDb250ZXh0M0QqKTsKKwogICAgIHZvaWQgcmVk
dWNlTWVtb3J5VG9MaW1pdChzaXplX3QpOwogICAgIHNpemVfdCBjdXJyZW50TWVtb3J5VXNlQnl0
ZXMoKSBjb25zdCB7IHJldHVybiBtX21lbW9yeVVzZUJ5dGVzOyB9CiAKIHByaXZhdGU6Ci0gICAg
VGV4dHVyZU1hbmFnZXIoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBUZXh0dXJlTWVtb3J5TGlt
aXRzJiwgaW50IG1heFRleHR1cmVTaXplKTsKKyAgICBUZXh0dXJlTWFuYWdlcihjb25zdCBUZXh0
dXJlTWVtb3J5TGltaXRzJiwgaW50IG1heFRleHR1cmVTaXplKTsKIAogICAgIHN0cnVjdCBUZXh0
dXJlSW5mbyB7CiAgICAgICAgIEludFNpemUgc2l6ZTsKQEAgLTgyLDggKzg1LDYgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGFkZFRleHR1cmUoVGV4dHVyZVRva2VuLCBUZXh0dXJlSW5mbyk7CiAgICAg
dm9pZCByZW1vdmVUZXh0dXJlKFRleHR1cmVUb2tlbiwgVGV4dHVyZUluZm8pOwogCi0gICAgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7Ci0KICAgICB0eXBlZGVmIEhhc2hNYXA8
VGV4dHVyZVRva2VuLCBUZXh0dXJlSW5mbz4gVGV4dHVyZU1hcDsKICAgICBUZXh0dXJlTWFwIG1f
dGV4dHVyZXM7CiAgICAgTGlzdEhhc2hTZXQ8VGV4dHVyZVRva2VuPiBtX3RleHR1cmVMUlVTZXQ7
CkBAIC05Miw2ICs5Myw4IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fbWVtb3J5VXNlQnl0ZXM7
CiAgICAgaW50IG1fbWF4VGV4dHVyZVNpemU7CiAgICAgVGV4dHVyZVRva2VuIG1fbmV4dFRva2Vu
OworCisgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2V2aWN0ZWRUZXh0dXJlSWRzOwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAppbmRleCA3ODhhZGM3ZjEwOGFhNmEyNWNiM2Q0Y2Y4
Y2QxNDkzMGU2NDY0MTU3Li5hM2FjYTU3NjZhNTZjMzZmODZkZDYyYzcyYzhiY2NmMWEzNTc3ZDE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aWxlZExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaApAQCAtMzMsNyArMzMsNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIExheWVyVGV4dHVyZTsKIGNsYXNzIExheWVyVGlsZXJD
aHJvbWl1bTsKIGNsYXNzIExheWVyVGV4dHVyZVVwZGF0ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFk
c1VwRGlzcGxheS5jcHAKaW5kZXggMGMwNzBjNWNlNTc3MDBiMTVlZDA5YjE3MGMxYTkyNDdiNWVh
MmY5Yy4uZTI4MjI1YWQ4MzRkZDIwNGViODliYjlmYzE2NDllZjBlOGQ2NjM2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1Vw
RGlzcGxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBDQ0hlYWRz
VXBEaXNwbGF5OjpkcmF3KCkKIHsKICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IG1f
bGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpOwogICAgIGlmICghbV9odWRUZXh0dXJlKQotICAgICAg
ICBtX2h1ZFRleHR1cmUgPSBMYXllclRleHR1cmU6OmNyZWF0ZShjb250ZXh0LCBtX2xheWVyUmVu
ZGVyZXItPnJlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcigpKTsKKyAgICAgICAgbV9odWRUZXh0
dXJlID0gTGF5ZXJUZXh0dXJlOjpjcmVhdGUobV9sYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNl
VGV4dHVyZU1hbmFnZXIoKSk7CiAKICAgICAvLyBVc2UgYSBmdWxsc2NyZWVuIHRleHR1cmUgb25s
eSBpZiB3ZSBuZWVkIHRvLi4uCiAgICAgSW50U2l6ZSBodWRTaXplOwpAQCAtMTEwLDcgKzExMCw3
IEBAIHZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhdygpCiAgICAgewogICAgICAgICBQbGF0Zm9y
bUNhbnZhczo6QXV0b0xvY2tlciBsb2NrZXIoJmNhbnZhcyk7CiAKLSAgICAgICAgbV9odWRUZXh0
dXJlLT5iaW5kVGV4dHVyZSgpOworICAgICAgICBtX2h1ZFRleHR1cmUtPmJpbmRUZXh0dXJlKGNv
bnRleHQpOwogICAgICAgICBib29sIHVwbG9hZGVkVmlhTWFwID0gZmFsc2U7CiAgICAgICAgIGlm
IChtX3VzZU1hcFN1YkZvclVwbG9hZHMpIHsKICAgICAgICAgICAgIEV4dGVuc2lvbnMzRENocm9t
aXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkpOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgQ0NIZWFkc1Vw
RGlzcGxheTo6ZHJhdygpCiAgICAgY29uc3QgUHJvZ3JhbSogcHJvZ3JhbSA9IG1fbGF5ZXJSZW5k
ZXJlci0+aGVhZHNVcERpc3BsYXlQcm9ncmFtKCk7CiAgICAgQVNTRVJUKHByb2dyYW0gJiYgcHJv
Z3JhbS0+aW5pdGlhbGl6ZWQoKSk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmFjdGl2ZVRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7Ci0gICAgbV9odWRUZXh0dXJlLT5i
aW5kVGV4dHVyZSgpOworICAgIG1faHVkVGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCk7CiAg
ICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7
CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVudFNo
YWRlcigpLnNhbXBsZXJMb2NhdGlvbigpLCAwKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVy
SW1wbC5jcHAKaW5kZXggODAzYmEwNmQ1NjE5N2QyOGFhZTU1YTc4YzViY2QxMWUxMjQ3N2I1ZS4u
MTc1NzE5ZWZhZjViYjhlNTI4ZGY0NTI0MGExMzI4YzQwN2RiZDFjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaWxlZExheWVySW1wbC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJjYy9DQ1Rp
bGVkTGF5ZXJJbXBsLmgiCiAKICNpbmNsdWRlICJDb250ZW50TGF5ZXJDaHJvbWl1bS5oIgorI2lu
Y2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKQEAgLTYyLDcgKzYzLDcgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpiaW5k
Q29udGVudHNUZXh0dXJlKCkKICAgICBMYXllclRleHR1cmUqIHRleHR1cmUgPSBtX3RpbGVyLT5n
ZXRTaW5nbGVUZXh0dXJlKCk7CiAgICAgQVNTRVJUKHRleHR1cmUpOwogCi0gICAgdGV4dHVyZS0+
YmluZFRleHR1cmUoKTsKKyAgICB0ZXh0dXJlLT5iaW5kVGV4dHVyZShsYXllclJlbmRlcmVyKCkt
PmNvbnRleHQoKSk7CiB9CiAKIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6ZHVtcExheWVyUHJvcGVy
dGllcyhUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101947</attachid>
            <date>2011-07-25 17:22:47 -0700</date>
            <delta_ts>2011-08-10 16:08:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64772-20110725172246.patch</filename>
            <type>text/plain</type>
            <size>27757</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE3MjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiYTYwMzQ0MWQ5NTczY2Vh
Y2Q0YmVhNDJhOWY5MzQ4Mzk1NjU1YTdkLi44N2Q3NDc2Y2ZhYWVhNzM3NDdmNjA2OTA3YzNlYzM2
OGFmOTRmZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNjEgQEAKIDIwMTEtMDctMjUgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbY2hyb21pdW1dIERl
ZmVyIG1hbmFnZWQgdGV4dHVyZSBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24gdW50aWwgdXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjQ3NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgZGVmZXJyaW5nIEdyYXBoaWNzQ29udGV4
dDNEIGNhbGxzIGZvciB0ZXh0dXJlIGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbiBmb3IgbWFuYWdl
ZAorICAgICAgICB0ZXh0dXJlcyBhbmQgZGVmZXJzIHRoZXNlIGNhbGxzIHVudGlsIHVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoKSBmb3IgY29udGVudHMgdGV4dHVyZXMuICBUaGUgcHJpbWFyeSBi
ZW5lZml0IG9mCisgICAgICAgIHRoaXMgY2hhbmdlIGlzIHRoYXQgaXQgZGVjb3VwbGVzIG1hbmFn
aW5nIHRoZSB0ZXh0dXJlIGJ1ZGdldCBmb3IgdGhlIG5leHQgZnJhbWUgKHdoaWNoIGhhcyB0byBo
YXBwZW4gYmVmb3JlCisgICAgICAgIHBhaW50aW5nIGxheWVyIGNvbnRlbnRzKSBmcm9tIHRoZSBh
Y3R1YWwgR0wgY2FsbHMgdGhhdCBjcmVhdGUvZGVzdHJveSB0ZXh0dXJlcy4gIFRoYXQgd2F5LCBp
biB0aGUgdGhyZWFkZWQKKyAgICAgICAgY29tcG9zaXRpbmcgd29ybGQgd2UgY2FuIGNvbnRpbnVl
IHRvIHVzZSB0ZXh0dXJlcyBmcm9tIHRoZSBwcmV2aW91cyBmcmFtZSB3aGlsZSBzb2Z0d2FyZSBw
YWludGluZyBjb250ZW50cyBmb3IKKyAgICAgICAgdGhlIG5leHQgZnJhbWUgaW50byBzb2Z0d2Fy
ZSBidWZmZXJzIG9yIFNrUGljdHVyZXMuCisKKyAgICAgICAgQ292ZXJlZCBieSBjb21wb3NpdGlu
Zy8gbGF5b3V0IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q29udGVudExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXll
clRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVsZWFzZVRleHR1cmVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnVwZGF0ZUxheWVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVkT2JqZWN0
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZTo6TGF5ZXJUZXh0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZTo6cmVzZXJ2ZSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclRleHR1cmU6OmJpbmRUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVy
ZTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyVGV4dHVyZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlOjpj
cmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVy
ZVVwZGF0ZXJDYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRl
ckJpdG1hcDo6dXBkYXRlVGV4dHVyZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0
dXJlVXBkYXRlclNrUGljdHVyZTo6dXBkYXRlVGV4dHVyZVJlY3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OmNyZWF0ZVRpbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJUaWxlckNocm9taXVtOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyVGlsZXJDaHJvbWl1bTo6ZHJhd1RpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3VyZmFjZUNocm9taXVtOjpwcmVwYXJlQ29udGVudHNUZXh0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN1cmZhY2VDaHJvbWl1bTo6ZHJhd1N1cmZhY2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYW5hZ2VyOjpUZXh0dXJlTWFuYWdlcik6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFuYWdlcjo6ZGVsZXRlRXZpY3RlZFRleHR1cmVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYW5hZ2VyOjpyZW1vdmVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHR1cmVNYW5hZ2VyOjphbGxvY2F0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hbmFnZXI6OnJlcXVlc3RUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
bmFnZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NIZWFkc1VwRGlzcGxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNw
bGF5OjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rp
bGVkTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6OmJp
bmRDb250ZW50c1RleHR1cmUpOgorCisyMDExLTA3LTI1ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVz
ckBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgW2Nocm9taXVtXSBIVUQgdGV4dHVyZSBtdXN0IGJl
IHVucmVzZXJ2ZWQgYWZ0ZXIgZHJhd2luZwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjUxMjIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgK
aW5kZXggZTBiYmRlZGE4MjZhNjY2MDM1ZWI5NjIzNDJkYTk3NTY1OGExNzIzYy4uZDRhNTQ3Y2M1
OTc2MjNiZDEwMjA0NjBmZmI5ODk3OGNmODc4Mjg4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJD
aHJvbWl1bS5oCkBAIC0zOSw3ICszOSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgTGF5ZXJUZXh0dXJlOwogY2xhc3MgTGF5ZXJUaWxlckNocm9taXVtOwogY2xhc3MgTGF5ZXJU
ZXh0dXJlVXBkYXRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZjI0
OGYyYzE2MjU2NDk4MDkxNmUwOWRiNGI1OWVjZGUzYzE0MDI1Yy4uM2FjM2RlNDkzNzQ0NjM0MGJi
ZDllNWQ1MTZmZWQ5ZGQzMGUxYmE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3Bw
CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0
dXJlUmVjdChMYXllclRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogICAgIHsKLSAgICAgICAgdGV4dHVyZS0+YmluZFRl
eHR1cmUoKTsKKyAgICAgICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCgpKTsKIAogICAg
ICAgICAvLyBTb3VyY2UgcmVjdCBzaG91bGQgbmV2ZXIgZ28gb3V0c2lkZSB0aGUgaW1hZ2UgcGl4
ZWxzLCBldmVuIGlmIHRoaXMKICAgICAgICAgLy8gaXMgcmVxdWVzdGVkIGJlY2F1c2UgdGhlIHRl
eHR1cmUgZXh0ZW5kcyBvdXRzaWRlIHRoZSBpbWFnZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uY3BwCmluZGV4IDNiYzVjZTcxYTY2MGM0MDMzZWYwMDEzODAwMGUxYzczYmY2MDdj
ZjkuLjA1YTM1NjYxOGMzYWE4YTU2YTdmNjhiYzJkMjEyYTczYmYzZDE4YzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtMjE0LDkgKzIxNCwxMSBAQCB2b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVsZWFzZVRleHR1cmVzKCkKICAgICBtX3Jvb3RMYXllckNv
bnRlbnRUaWxlci0+cHJvdGVjdFRpbGVUZXh0dXJlcyhtX3ZpZXdwb3J0VmlzaWJsZVJlY3QpOwog
ICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdCh0ZXh0dXJl
TWVtb3J5TG93TGltaXRCeXRlcyk7CiAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT51bnBy
b3RlY3RBbGxUZXh0dXJlcygpOworICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+ZGVsZXRl
RXZpY3RlZFRleHR1cmVzKG1fY29udGV4dC5nZXQoKSk7CiAgICAgLy8gRXZpY3QgYWxsIFJlbmRl
clN1cmZhY2UgdGV4dHVyZXMuCiAgICAgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXItPnVu
cHJvdGVjdEFsbFRleHR1cmVzKCk7CiAgICAgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIt
PnJlZHVjZU1lbW9yeVRvTGltaXQoMCk7CisgICAgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFn
ZXItPmRlbGV0ZUV2aWN0ZWRUZXh0dXJlcyhtX2NvbnRleHQuZ2V0KCkpOwogfQogCiB2b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlUm9vdExheWVyQ29udGVudHMoKQpAQCAtMzEwLDEy
ICszMTIsMTIgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnMoKQogICAg
IGRyYXdMYXllcnMoKm1fY29tcHV0ZWRSZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKIAogICAgIG1f
Y29udGVudHNUZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKLSAgICBtX2Nv
bnRlbnRzVGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGltaXQodGV4dHVyZU1lbW9yeVJl
Y2xhaW1MaW1pdEJ5dGVzKTsKIAogICAgIGlmICh0ZXh0dXJlTWVtb3J5UmVjbGFpbUxpbWl0Qnl0
ZXMgPiBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKQog
ICAgICAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1p
dCh0ZXh0dXJlTWVtb3J5UmVjbGFpbUxpbWl0Qnl0ZXMgLSBtX2NvbnRlbnRzVGV4dHVyZU1hbmFn
ZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKICAgICBlbHNlCiAgICAgICAgIG1fcmVuZGVy
U3VyZmFjZVRleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KDApOworICAgIG1fcmVu
ZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT5kZWxldGVFdmljdGVkVGV4dHVyZXMobV9jb250ZXh0
LmdldCgpKTsKIAogICAgIC8vIEFmdGVyIGRyYXdMYXllcnM6CiAgICAgaWYgKGhhcmR3YXJlQ29t
cG9zaXRpbmcoKSAmJiBtX2NvbnRleHRTdXBwb3J0c0xhdGNoKSB7CkBAIC0zODAsNiArMzgyLDcg
QEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVwZGF0ZUxheWVycyhMYXllckxpc3QmIHJl
bmRlclN1cmZhY2VMYXllckxpc3QpCiAgICAgfQogCiAgICAgbV9jb250ZW50c1RleHR1cmVNYW5h
Z2VyLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KHRleHR1cmVNZW1vcnlSZWNsYWltTGltaXRCeXRlcyk7
CisgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5kZWxldGVFdmljdGVkVGV4dHVyZXMobV9j
b250ZXh0LmdldCgpKTsKICAgICB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHJlbmRlclN1cmZh
Y2VMYXllckxpc3QpOwogfQogCkBAIC0xMDM0LDcgKzEwMzcsNyBAQCBib29sIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6dXNlUmVuZGVyU3VyZmFjZShSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRl
clN1cmZhYwogICAgIGlmICghcmVuZGVyU3VyZmFjZS0+cHJlcGFyZUNvbnRlbnRzVGV4dHVyZSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZW5kZXJTdXJmYWNlLT5jb250ZW50c1Rl
eHR1cmUoKS0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoKTsKKyAgICByZW5kZXJTdXJmYWNlLT5jb250
ZW50c1RleHR1cmUoKS0+ZnJhbWVidWZmZXJUZXh0dXJlMkQobV9jb250ZXh0LmdldCgpKTsKIAog
I2lmICFkZWZpbmVkICggTkRFQlVHICkKICAgICBpZiAobV9jb250ZXh0LT5jaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUikgIT0gR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CkBAIC0xMTc4LDggKzExODEsOCBAQCBib29s
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMoKQogCiAgICAg
R0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT5mbHVzaCgpKTsKIAotICAgIG1fY29udGVu
dHNUZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUobV9jb250ZXh0LmdldCgp
LCB0ZXh0dXJlTWVtb3J5SGlnaExpbWl0Qnl0ZXMsIG1fbWF4VGV4dHVyZVNpemUpOwotICAgIG1f
cmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZShtX2Nv
bnRleHQuZ2V0KCksIHRleHR1cmVNZW1vcnlIaWdoTGltaXRCeXRlcywgbV9tYXhUZXh0dXJlU2l6
ZSk7CisgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0
ZSh0ZXh0dXJlTWVtb3J5SGlnaExpbWl0Qnl0ZXMsIG1fbWF4VGV4dHVyZVNpemUpOworICAgIG1f
cmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSh0ZXh0
dXJlTWVtb3J5SGlnaExpbWl0Qnl0ZXMsIG1fbWF4VGV4dHVyZVNpemUpOwogICAgIHJldHVybiB0
cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlLmNwcAppbmRleCAwOTk4NjQzYmViYTE3YTI4NGEzNmIw
YTgzYjcxZWZhODI5NTE4Mzc4Li5iOTBlMTM2NmE3ZmE3NDVmOTUwZTQzMjhlZGMxNDUyODVjZTEy
ZjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGV4dHVyZS5jcHAKQEAgLTMzLDkgKzMzLDggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1MYXllclRleHR1cmU6OkxheWVyVGV4dHVyZShHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpCi0gICAgOiBtX2NvbnRleHQoY29u
dGV4dCkKLSAgICAsIG1fdGV4dHVyZU1hbmFnZXIobWFuYWdlcikKK0xheWVyVGV4dHVyZTo6TGF5
ZXJUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKQorICAgIDogbV90ZXh0dXJlTWFuYWdl
cihtYW5hZ2VyKQogICAgICwgbV90b2tlbigwKQogICAgICwgbV9mb3JtYXQoMCkKICAgICAsIG1f
dGV4dHVyZUlkKDApCkBAIC01OCwxNyArNTcsMTkgQEAgYm9vbCBMYXllclRleHR1cmU6OnJlc2Vy
dmUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgdW5zaWduZWQgZm9ybWF0KQogICAgIGlmICghbV90b2tl
bikKICAgICAgICAgbV90b2tlbiA9IG1fdGV4dHVyZU1hbmFnZXItPmdldFRva2VuKCk7CiAKKyAg
ICBib29sIHJlc2VydmVkID0gdHJ1ZTsKICAgICBpZiAoc2l6ZSA9PSBtX3NpemUgJiYgZm9ybWF0
ID09IG1fZm9ybWF0ICYmIG1fdGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUobV90b2tlbikpCiAg
ICAgICAgIG1fdGV4dHVyZU1hbmFnZXItPnByb3RlY3RUZXh0dXJlKG1fdG9rZW4pOwogICAgIGVs
c2UgewotICAgICAgICBtX3RleHR1cmVJZCA9IG1fdGV4dHVyZU1hbmFnZXItPnJlcXVlc3RUZXh0
dXJlKG1fdG9rZW4sIHNpemUsIGZvcm1hdCk7Ci0gICAgICAgIGlmIChtX3RleHR1cmVJZCkgewor
ICAgICAgICBtX3RleHR1cmVJZCA9IDA7CisgICAgICAgIHJlc2VydmVkID0gbV90ZXh0dXJlTWFu
YWdlci0+cmVxdWVzdFRleHR1cmUobV90b2tlbiwgc2l6ZSwgZm9ybWF0KTsKKyAgICAgICAgaWYg
KHJlc2VydmVkKSB7CiAgICAgICAgICAgICBtX3NpemUgPSBzaXplOwogICAgICAgICAgICAgbV9m
b3JtYXQgPSBmb3JtYXQ7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gbV90ZXh0dXJl
SWQ7CisgICAgcmV0dXJuIHJlc2VydmVkOwogfQogCiB2b2lkIExheWVyVGV4dHVyZTo6dW5yZXNl
cnZlKCkKQEAgLTc5LDE1ICs4MCwyMCBAQCB2b2lkIExheWVyVGV4dHVyZTo6dW5yZXNlcnZlKCkK
ICAgICBtX3RleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RUZXh0dXJlKG1fdG9rZW4pOwogfQogCi12
b2lkIExheWVyVGV4dHVyZTo6YmluZFRleHR1cmUoKQordm9pZCBMYXllclRleHR1cmU6OmJpbmRU
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogewogICAgIEFTU0VSVChtX3RleHR1
cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKG1fdG9rZW4pKTsKLSAgICBtX2NvbnRleHQtPmJpbmRUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVJZCk7CisgICAgaWYg
KCFtX3RleHR1cmVJZCkKKyAgICAgICAgbV90ZXh0dXJlSWQgPSBtX3RleHR1cmVNYW5hZ2VyLT5h
bGxvY2F0ZVRleHR1cmUoY29udGV4dCwgbV90b2tlbik7CisgICAgY29udGV4dC0+YmluZFRleHR1
cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZUlkKTsKIH0KIAotdm9p
ZCBMYXllclRleHR1cmU6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKCkKK3ZvaWQgTGF5ZXJUZXh0dXJl
OjpmcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsKLSAg
ICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlSWQsIDApOworICAgIEFTU0VSVChtX3RleHR1
cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKG1fdG9rZW4pKTsKKyAgICBpZiAoIW1fdGV4dHVyZUlkKQor
ICAgICAgICBtX3RleHR1cmVJZCA9IG1fdGV4dHVyZU1hbmFnZXItPmFsbG9jYXRlVGV4dHVyZShj
b250ZXh0LCBtX3Rva2VuKTsKKyAgICBjb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRB
Q0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZUlkLCAwKTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclRleHR1cmUuaAppbmRleCBkMzBhNTA3OGVmNWZjZjMzNDVkODQzYzVkYTY1
NGE5ODU5NzcyNjIyLi4xYjVmNGE4NjFkNGE0NDEyNTIwYjJiZWFmNzM1N2YxOTIzNGEwZWY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRleHR1cmUuaApAQCAtNDEsOSArNDEsOSBAQCBjbGFzcyBUZXh0dXJlTWFuYWdlcjsK
IGNsYXNzIExheWVyVGV4dHVyZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGF5ZXJUZXh0
dXJlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NP
d25QdHI8TGF5ZXJUZXh0dXJlPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRl
eHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVyVGV4dHVy
ZT4gY3JlYXRlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBMYXllclRleHR1cmUoY29udGV4dCwgbWFuYWdlcikpOworICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IExheWVyVGV4dHVyZShtYW5hZ2VyKSk7CiAgICAgfQogICAgIH5M
YXllclRleHR1cmUoKTsKIApAQCAtNTcsMTMgKzU3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG1fdGV4dHVyZU1hbmFnZXItPmlzUHJvdGVjdGVkKG1fdG9rZW4pOwogICAgIH0KIAotICAg
IHZvaWQgYmluZFRleHR1cmUoKTsKLSAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKCk7Cisg
ICAgdm9pZCBiaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCopOworICAgIHZvaWQgZnJhbWVi
dWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0QqKTsKIAogcHJpdmF0ZToKLSAgICBMYXll
clRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlTWFuYWdlciopOworICAgIGV4cGxp
Y2l0IExheWVyVGV4dHVyZShUZXh0dXJlTWFuYWdlciopOwogCi0gICAgUmVmUHRyPEdyYXBoaWNz
Q29udGV4dDNEPiBtX2NvbnRleHQ7CiAgICAgVGV4dHVyZU1hbmFnZXIqIG1fdGV4dHVyZU1hbmFn
ZXI7CiAgICAgVGV4dHVyZVRva2VuIG1fdG9rZW47CiAgICAgSW50U2l6ZSBtX3NpemU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRl
eHR1cmVVcGRhdGVyQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuY3BwCmluZGV4IDNmMGY5NDhjY2Nl
ZDE0Y2RiYjg4OTNmMjI3YmEzM2FkNjM5OGYzZGQuLjcwYTUyNjllODZkYmRlOTY4Mjk2Y2NmMDA3
NTc3ZjJiYmNiMTg3YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52
YXMuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgTGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1hcDo6
dXBkYXRlVGV4dHVyZVJlY3QoTGF5ZXJUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJCiB7CiAgICAg
UGxhdGZvcm1DYW52YXM6OkF1dG9Mb2NrZXIgbG9ja2VyKCZtX2NhbnZhcyk7CiAKLSAgICB0ZXh0
dXJlLT5iaW5kVGV4dHVyZSgpOworICAgIHRleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQoKSk7
CiAgICAgbV90ZXhTdWJJbWFnZS51cGxvYWQobG9ja2VyLnBpeGVscygpLCBjb250ZW50UmVjdCgp
LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgdGV4dHVyZS0+Zm9ybWF0KCksIGNvbnRleHQoKSk7CiB9
CiAKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmU6
OnVwZGF0ZVRleHR1cmVSZWN0KExheWVyVGV4dHVyZSogdGV4dHVyZSwgY29ucwogCiAgICAgLy8g
QmluZCB0ZXh0dXJlLgogICAgIGNvbnRleHQoKS0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29u
dGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwotICAgIHRleHR1cmUtPmZyYW1lYnVmZmVyVGV4
dHVyZTJEKCk7CisgICAgdGV4dHVyZS0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoY29udGV4dCgpKTsK
ICAgICBBU1NFUlQoY29udGV4dCgpLT5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29u
dGV4dDNEOjpGUkFNRUJVRkZFUikgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NP
TVBMRVRFKTsKIAogICAgIC8vIE1ha2Ugc3VyZSBTS0lBIHVzZXMgdGhlIGNvcnJlY3QgR0wgY29u
dGV4dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwCmluZGV4IGEwYmQxMDhhODI1NGVj
OWUzNmE4M2QzNTliNWE1YTg1YzY3N2M3ZGIuLmRlZmIwMDNlNWVhYTY1OTc5ZWUwYzc3NTQ4NGQy
YTkyZDcxM2ZjNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcApAQCAtMTE0LDkg
KzExNCw4IEBAIExheWVyVGlsZXJDaHJvbWl1bTo6VGlsZSogTGF5ZXJUaWxlckNocm9taXVtOjpj
cmVhdGVUaWxlKGludCBpLCBpbnQgaikKICAgICAgICAgbV91bnVzZWRUaWxlcy5yZW1vdmVMYXN0
KCk7CiAgICAgICAgIEFTU0VSVCh0aWxlLT5yZWZDb3VudCgpID09IDEpOwogICAgIH0gZWxzZSB7
Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRl
eHQoKTsKICAgICAgICAgVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIgPSBsYXllclJlbmRlcmVyKCkt
PmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKTsKLSAgICAgICAgdGlsZSA9IGFkb3B0UmVmKG5ldyBU
aWxlKExheWVyVGV4dHVyZTo6Y3JlYXRlKGNvbnRleHQsIG1hbmFnZXIpKSk7CisgICAgICAgIHRp
bGUgPSBhZG9wdFJlZihuZXcgVGlsZShMYXllclRleHR1cmU6OmNyZWF0ZShtYW5hZ2VyKSkpOwog
ICAgIH0KICAgICBtX3RpbGVzLmFkZChtYWtlX3BhaXIoaSwgaiksIHRpbGUpOwogCkBAIC0zNzIs
NyArMzcxLDcgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OnVwZGF0ZVJlY3QoTGF5ZXJUZXh0
dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIpCiAgICAgICAgICAgICBpZiAocGFpbnRPZmZzZXQu
eSgpICsgZGVzdFJlY3QuaGVpZ2h0KCkgPiBtX3BhaW50UmVjdC5oZWlnaHQoKSkKICAgICAgICAg
ICAgICAgICBDUkFTSCgpOwogCi0gICAgICAgICAgICB0aWxlLT50ZXh0dXJlKCktPmJpbmRUZXh0
dXJlKCk7CisgICAgICAgICAgICB0aWxlLT50ZXh0dXJlKCktPmJpbmRUZXh0dXJlKGNvbnRleHQp
OwogICAgICAgICAgICAgY29uc3QgR0MzRGludCBmaWx0ZXIgPSBtX3RpbGluZ0RhdGEuYm9yZGVy
VGV4ZWxzKCkgPyBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSIDogR3JhcGhpY3NDb250ZXh0M0Q6
Ok5FQVJFU1Q7CiAgICAgICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVy
aShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfTUlOX0ZJTFRFUiwgZmlsdGVyKSk7CiAgICAgICAgICAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgZmlsdGVyKSk7CkBAIC01MzYsNyArNTM1LDcg
QEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OmRyYXdUaWxlcyhjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCwgY29uc3QgVHJhbnNmb3JtYXQKIAogICAgICAgICAgICAgQVNTRVJUKHRpbGUtPnRl
eHR1cmUoKS0+aXNSZXNlcnZlZCgpKTsKIAotICAgICAgICAgICAgdGlsZS0+dGV4dHVyZSgpLT5i
aW5kVGV4dHVyZSgpOworICAgICAgICAgICAgdGlsZS0+dGV4dHVyZSgpLT5iaW5kVGV4dHVyZShj
b250ZXh0KTsKICAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJp
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV9NSU5fRklMVEVSLCBmaWx0ZXIpKTsKICAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0
LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBmaWx0ZXIpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRl
clN1cmZhY2VDaHJvbWl1bS5jcHAKaW5kZXggNmEyNzIxNmQwMjRiZTkzMTJlZjY5NjI3MTk0MmU2
Mjk1ZGI4NDM2NC4uMTA4Yzk1NzI0YjE5MGFjYjE3MzRkOWQ2YjhhMmY5YjdiZGRiYjE2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVy
U3VyZmFjZUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwCkBAIC04NSw3ICs4NSw3IEBAIGJv
b2wgUmVuZGVyU3VyZmFjZUNocm9taXVtOjpwcmVwYXJlQ29udGVudHNUZXh0dXJlKCkKICAgICBU
ZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIgPSBsYXllclJlbmRlcmVyKCktPnJlbmRlclN1
cmZhY2VUZXh0dXJlTWFuYWdlcigpOwogCiAgICAgaWYgKCFtX2NvbnRlbnRzVGV4dHVyZSkKLSAg
ICAgICAgbV9jb250ZW50c1RleHR1cmUgPSBMYXllclRleHR1cmU6OmNyZWF0ZShsYXllclJlbmRl
cmVyKCktPmNvbnRleHQoKSwgdGV4dHVyZU1hbmFnZXIpOworICAgICAgICBtX2NvbnRlbnRzVGV4
dHVyZSA9IExheWVyVGV4dHVyZTo6Y3JlYXRlKHRleHR1cmVNYW5hZ2VyKTsKIAogICAgIGlmICht
X2NvbnRlbnRzVGV4dHVyZS0+aXNSZXNlcnZlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTEyMiw3ICsxMjIsNyBAQCB2b2lkIFJlbmRlclN1cmZhY2VDaHJvbWl1bTo6ZHJhd1N1cmZhY2Uo
Q0NMYXllckltcGwqIG1hc2tMYXllciwgY29uc3QgVHJhbnNmb3JtYQogICAgICAgICAgICAgR0xD
KGNvbnRleHQzRCwgY29udGV4dDNELT51c2VQcm9ncmFtKG1hc2tQcm9ncmFtLT5wcm9ncmFtKCkp
KTsKICAgICAgICAgICAgIEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+YWN0aXZlVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsKICAgICAgICAgICAgIEdMQyhjb250ZXh0M0Qs
IGNvbnRleHQzRC0+dW5pZm9ybTFpKG1hc2tQcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnNhbXBs
ZXJMb2NhdGlvbigpLCAwKSk7Ci0gICAgICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZS0+YmluZFRl
eHR1cmUoKTsKKyAgICAgICAgICAgIG1fY29udGVudHNUZXh0dXJlLT5iaW5kVGV4dHVyZShjb250
ZXh0M0QpOwogICAgICAgICAgICAgR0xDKGNvbnRleHQzRCwgY29udGV4dDNELT5hY3RpdmVUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMSkpOwogICAgICAgICAgICAgR0xDKGNvbnRl
eHQzRCwgY29udGV4dDNELT51bmlmb3JtMWkobWFza1Byb2dyYW0tPmZyYWdtZW50U2hhZGVyKCku
bWFza1NhbXBsZXJMb2NhdGlvbigpLCAxKSk7CiAgICAgICAgICAgICBtYXNrTGF5ZXItPmJpbmRD
b250ZW50c1RleHR1cmUoKTsKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFJlbmRlclN1cmZhY2VD
aHJvbWl1bTo6ZHJhd1N1cmZhY2UoQ0NMYXllckltcGwqIG1hc2tMYXllciwgY29uc3QgVHJhbnNm
b3JtYQogCiAgICAgaWYgKCF1c2VNYXNrKSB7CiAgICAgICAgIEdMQyhjb250ZXh0M0QsIGNvbnRl
eHQzRC0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKLSAgICAgICAgbV9jb250ZW50
c1RleHR1cmUtPmJpbmRUZXh0dXJlKCk7CisgICAgICAgIG1fY29udGVudHNUZXh0dXJlLT5iaW5k
VGV4dHVyZShjb250ZXh0M0QpOwogICAgICAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPnVu
aWZvcm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnNhbXBsZXJMb2NhdGlvbigpLCAwKSk7
CiAgICAgICAgIHNoYWRlck1hdHJpeExvY2F0aW9uID0gcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCku
bWF0cml4TG9jYXRpb24oKTsKICAgICAgICAgc2hhZGVyQWxwaGFMb2NhdGlvbiA9IHByb2dyYW0t
PmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3Bw
CmluZGV4IDllNGVhMjg2NzhjYmY2YWNhMGQxM2UxYmEwMmM1MWU0MTg2ZTI2MzcuLjM1OGFmZmVm
YmM1MzFiYjVmNzA1OTZhMGUxNGExYWJkNjAzZDExODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5j
cHAKQEAgLTM4LDkgKzM4LDggQEAgc3RhdGljIHNpemVfdCBtZW1vcnlVc2VCeXRlcyhJbnRTaXpl
IHNpemUsIHVuc2lnbmVkIHRleHR1cmVGb3JtYXQpCiAgICAgcmV0dXJuIHNpemUud2lkdGgoKSAq
IHNpemUuaGVpZ2h0KCkgKiA0OwogfQogCi1UZXh0dXJlTWFuYWdlcjo6VGV4dHVyZU1hbmFnZXIo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHNpemVfdCBtZW1vcnlMaW1pdEJ5dGVzLCBpbnQg
bWF4VGV4dHVyZVNpemUpCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fbWVtb3J5
TGltaXRCeXRlcyhtZW1vcnlMaW1pdEJ5dGVzKQorVGV4dHVyZU1hbmFnZXI6OlRleHR1cmVNYW5h
Z2VyKHNpemVfdCBtZW1vcnlMaW1pdEJ5dGVzLCBpbnQgbWF4VGV4dHVyZVNpemUpCisgICAgOiBt
X21lbW9yeUxpbWl0Qnl0ZXMobWVtb3J5TGltaXRCeXRlcykKICAgICAsIG1fbWVtb3J5VXNlQnl0
ZXMoMCkKICAgICAsIG1fbWF4VGV4dHVyZVNpemUobWF4VGV4dHVyZVNpemUpCiAgICAgLCBtX25l
eHRUb2tlbigxKQpAQCAtMTMyLDYgKzEzMSwxMyBAQCB2b2lkIFRleHR1cmVNYW5hZ2VyOjphZGRU
ZXh0dXJlKFRleHR1cmVUb2tlbiB0b2tlbiwgVGV4dHVyZUluZm8gaW5mbykKICAgICBtX3RleHR1
cmVMUlVTZXQuYWRkKHRva2VuKTsKIH0KIAordm9pZCBUZXh0dXJlTWFuYWdlcjo6ZGVsZXRlRXZp
Y3RlZFRleHR1cmVzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQoreworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9ldmljdGVkVGV4dHVyZUlkcy5zaXplKCk7ICsraSkKKyAgICAgICAg
R0xDKGNvbnRleHQsIGNvbnRleHQtPmRlbGV0ZVRleHR1cmUobV9ldmljdGVkVGV4dHVyZUlkc1tp
XSkpOworICAgIG1fZXZpY3RlZFRleHR1cmVJZHMuY2xlYXIoKTsKK30KKwogdm9pZCBUZXh0dXJl
TWFuYWdlcjo6cmVtb3ZlVGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4sIFRleHR1cmVJbmZvIGlu
Zm8pCiB7CiAgICAgQVNTRVJUKG1fdGV4dHVyZUxSVVNldC5jb250YWlucyh0b2tlbikpOwpAQCAt
MTQwLDEzICsxNDYsMzQgQEAgdm9pZCBUZXh0dXJlTWFuYWdlcjo6cmVtb3ZlVGV4dHVyZShUZXh0
dXJlVG9rZW4gdG9rZW4sIFRleHR1cmVJbmZvIGluZm8pCiAgICAgbV90ZXh0dXJlcy5yZW1vdmUo
dG9rZW4pOwogICAgIEFTU0VSVChtX3RleHR1cmVMUlVTZXQuY29udGFpbnModG9rZW4pKTsKICAg
ICBtX3RleHR1cmVMUlVTZXQucmVtb3ZlKHRva2VuKTsKLSAgICBHTEMobV9jb250ZXh0LmdldCgp
LCBtX2NvbnRleHQtPmRlbGV0ZVRleHR1cmUoaW5mby50ZXh0dXJlSWQpKTsKKyAgICBtX2V2aWN0
ZWRUZXh0dXJlSWRzLmFwcGVuZChpbmZvLnRleHR1cmVJZCk7Cit9CisKK3Vuc2lnbmVkIFRleHR1
cmVNYW5hZ2VyOjphbGxvY2F0ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRl
eHR1cmVUb2tlbiB0b2tlbikKK3sKKyAgICBUZXh0dXJlTWFwOjppdGVyYXRvciBpdCA9IG1fdGV4
dHVyZXMuZmluZCh0b2tlbik7CisgICAgQVNTRVJUKGl0ICE9IG1fdGV4dHVyZXMuZW5kKCkpOwor
ICAgIFRleHR1cmVJbmZvKiBpbmZvID0gJml0LmdldCgpLT5zZWNvbmQ7CisgICAgQVNTRVJUKGlu
Zm8tPmlzUHJvdGVjdGVkKTsKKworICAgIHVuc2lnbmVkIHRleHR1cmVJZDsKKyAgICBHTEMoY29u
dGV4dCwgdGV4dHVyZUlkID0gY29udGV4dC0+Y3JlYXRlVGV4dHVyZSgpKTsKKyAgICBHTEMoY29u
dGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IHRleHR1cmVJZCkpOworICAgIC8vIERvIGJhc2ljIGxpbmVhciBmaWx0ZXJpbmcgb24gcmVzaXpl
LgorICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBH
cmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRl
eFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKKyAg
ICAvLyBOUE9UIHRleHR1cmVzIGluIEdMIEVTIG9ubHkgd29yayB3aGVuIHRoZSB3cmFwIG1vZGUg
aXMgc2V0IHRvIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFLgorICAgIEdMQyhjb250
ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dDNEOjpD
TEFNUF9UT19FREdFKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmko
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
X1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpKTsKKyAgICBHTEMoY29u
dGV4dCwgY29udGV4dC0+dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgMCwgaW5mby0+Zm9ybWF0LCBpbmZvLT5zaXplLndpZHRoKCksIGluZm8tPnNp
emUuaGVpZ2h0KCksIDAsIGluZm8tPmZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVE
X0JZVEUpKTsKKyAgICBpbmZvLT50ZXh0dXJlSWQgPSB0ZXh0dXJlSWQ7CisgICAgcmV0dXJuIHRl
eHR1cmVJZDsKIH0KIAotdW5zaWduZWQgVGV4dHVyZU1hbmFnZXI6OnJlcXVlc3RUZXh0dXJlKFRl
eHR1cmVUb2tlbiB0b2tlbiwgSW50U2l6ZSBzaXplLCB1bnNpZ25lZCBmb3JtYXQpCitib29sIFRl
eHR1cmVNYW5hZ2VyOjpyZXF1ZXN0VGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4sIEludFNpemUg
c2l6ZSwgdW5zaWduZWQgZm9ybWF0KQogewogICAgIGlmIChzaXplLndpZHRoKCkgPiBtX21heFRl
eHR1cmVTaXplIHx8IHNpemUuaGVpZ2h0KCkgPiBtX21heFRleHR1cmVTaXplKQotICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgVGV4dHVyZU1hcDo6aXRlcmF0
b3IgaXQgPSBtX3RleHR1cmVzLmZpbmQodG9rZW4pOwogICAgIGlmIChpdCAhPSBtX3RleHR1cmVz
LmVuZCgpKSB7CkBAIC0xNTYsMjkgKzE4MywxOSBAQCB1bnNpZ25lZCBUZXh0dXJlTWFuYWdlcjo6
cmVxdWVzdFRleHR1cmUoVGV4dHVyZVRva2VuIHRva2VuLCBJbnRTaXplIHNpemUsIHVuc2lnbgog
CiAgICAgc2l6ZV90IG1lbW9yeVJlcXVpcmVkQnl0ZXMgPSBtZW1vcnlVc2VCeXRlcyhzaXplLCBm
b3JtYXQpOwogICAgIGlmIChtZW1vcnlSZXF1aXJlZEJ5dGVzID4gbV9tZW1vcnlMaW1pdEJ5dGVz
KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmVkdWNl
TWVtb3J5VG9MaW1pdChtX21lbW9yeUxpbWl0Qnl0ZXMgLSBtZW1vcnlSZXF1aXJlZEJ5dGVzKTsK
ICAgICBpZiAobV9tZW1vcnlVc2VCeXRlcyArIG1lbW9yeVJlcXVpcmVkQnl0ZXMgPiBtX21lbW9y
eUxpbWl0Qnl0ZXMpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICB1bnNpZ25lZCB0ZXh0dXJlSWQ7Ci0gICAgR0xDKG1fY29udGV4dC5nZXQoKSwgdGV4dHVy
ZUlkID0gbV9jb250ZXh0LT5jcmVhdGVUZXh0dXJlKCkpOwotICAgIEdMQyhtX2NvbnRleHQuZ2V0
KCksIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IHRleHR1cmVJZCkpOwotICAgIC8vIERvIGJhc2ljIGxpbmVhciBmaWx0ZXJpbmcgb24gcmVzaXpl
LgotICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlO
X0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOwotICAgIEdMQyhtX2NvbnRleHQu
Z2V0KCksIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250
ZXh0M0Q6OkxJTkVBUikpOwotICAgIC8vIE5QT1QgdGV4dHVyZXMgaW4gR0wgRVMgb25seSB3b3Jr
IHdoZW4gdGhlIHdyYXAgbW9kZSBpcyBzZXQgdG8gR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RP
X0VER0UuCi0gICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJp
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKSk7Ci0gICAgR0xDKG1f
Y29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNz
Q29udGV4dDNEOjpDTEFNUF9UT19FREdFKSk7Ci0gICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9j
b250ZXh0LT50ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCAwLCBmb3JtYXQsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgMCwgZm9ybWF0LCBH
cmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSkpOwogICAgIFRleHR1cmVJbmZvIGluZm87
CiAgICAgaW5mby5zaXplID0gc2l6ZTsKICAgICBpbmZvLmZvcm1hdCA9IGZvcm1hdDsKLSAgICBp
bmZvLnRleHR1cmVJZCA9IHRleHR1cmVJZDsKKyAgICBpbmZvLnRleHR1cmVJZCA9IDA7CiAgICAg
aW5mby5pc1Byb3RlY3RlZCA9IHRydWU7CiAgICAgYWRkVGV4dHVyZSh0b2tlbiwgaW5mbyk7Ci0g
ICAgcmV0dXJuIHRleHR1cmVJZDsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVN
YW5hZ2VyLmgKaW5kZXggZGE2Mjg2ZTkzYTNkMmUxNWM0NjE2NzZiOGIyZTc2YzAxZjI3NTMzYS4u
NmMzNzBmMDU0NjZmMTlkM2U3YmQ3YWJiODQ4Nzg4NmQ0MGIyYjk5YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFu
YWdlci5oCkBAIC00MCw5ICs0MCw5IEBAIHR5cGVkZWYgaW50IFRleHR1cmVUb2tlbjsKIGNsYXNz
IFRleHR1cmVNYW5hZ2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUZXh0dXJlTWFuYWdl
cik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8VGV4dHVyZU1hbmFnZXI+IGNyZWF0
ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgc2l6ZV90IG1lbW9yeUxpbWl0Qnl0ZXMsIGlu
dCBtYXhUZXh0dXJlU2l6ZSkKKyAgICBzdGF0aWMgUGFzc093blB0cjxUZXh0dXJlTWFuYWdlcj4g
Y3JlYXRlKHNpemVfdCBtZW1vcnlMaW1pdEJ5dGVzLCBpbnQgbWF4VGV4dHVyZVNpemUpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRleHR1cmVNYW5hZ2VyKGNvbnRleHQsIG1l
bW9yeUxpbWl0Qnl0ZXMsIG1heFRleHR1cmVTaXplKSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgVGV4dHVyZU1hbmFnZXIobWVtb3J5TGltaXRCeXRlcywgbWF4VGV4dHVyZVNpemUpKTsK
ICAgICB9CiAKICAgICB2b2lkIHNldE1lbW9yeUxpbWl0Qnl0ZXMoc2l6ZV90KTsKQEAgLTUxLDE4
ICs1MSwyMSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWxlYXNlVG9rZW4oVGV4dHVyZVRva2VuKTsK
ICAgICBib29sIGhhc1RleHR1cmUoVGV4dHVyZVRva2VuKTsKIAotICAgIHVuc2lnbmVkIHJlcXVl
c3RUZXh0dXJlKFRleHR1cmVUb2tlbiwgSW50U2l6ZSwgdW5zaWduZWQgdGV4dHVyZUZvcm1hdCk7
CisgICAgYm9vbCByZXF1ZXN0VGV4dHVyZShUZXh0dXJlVG9rZW4sIEludFNpemUsIHVuc2lnbmVk
IHRleHR1cmVGb3JtYXQpOwogCiAgICAgdm9pZCBwcm90ZWN0VGV4dHVyZShUZXh0dXJlVG9rZW4p
OwogICAgIHZvaWQgdW5wcm90ZWN0VGV4dHVyZShUZXh0dXJlVG9rZW4pOwogICAgIHZvaWQgdW5w
cm90ZWN0QWxsVGV4dHVyZXMoKTsKICAgICBib29sIGlzUHJvdGVjdGVkKFRleHR1cmVUb2tlbik7
CiAKKyAgICB1bnNpZ25lZCBhbGxvY2F0ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0
dXJlVG9rZW4pOworICAgIHZvaWQgZGVsZXRlRXZpY3RlZFRleHR1cmVzKEdyYXBoaWNzQ29udGV4
dDNEKik7CisKICAgICB2b2lkIHJlZHVjZU1lbW9yeVRvTGltaXQoc2l6ZV90KTsKICAgICBzaXpl
X3QgY3VycmVudE1lbW9yeVVzZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlVc2VCeXRl
czsgfQogCiBwcml2YXRlOgotICAgIFRleHR1cmVNYW5hZ2VyKEdyYXBoaWNzQ29udGV4dDNEKiwg
c2l6ZV90IG1lbW9yeUxpbWl0Qnl0ZXMsIGludCBtYXhUZXh0dXJlU2l6ZSk7CisgICAgVGV4dHVy
ZU1hbmFnZXIoc2l6ZV90IG1lbW9yeUxpbWl0Qnl0ZXMsIGludCBtYXhUZXh0dXJlU2l6ZSk7CiAK
ICAgICBzdHJ1Y3QgVGV4dHVyZUluZm8gewogICAgICAgICBJbnRTaXplIHNpemU7CkBAIC03NCw4
ICs3Nyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRUZXh0dXJlKFRleHR1cmVUb2tlbiwgVGV4
dHVyZUluZm8pOwogICAgIHZvaWQgcmVtb3ZlVGV4dHVyZShUZXh0dXJlVG9rZW4sIFRleHR1cmVJ
bmZvKTsKIAotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OwotCiAgICAg
dHlwZWRlZiBIYXNoTWFwPFRleHR1cmVUb2tlbiwgVGV4dHVyZUluZm8+IFRleHR1cmVNYXA7CiAg
ICAgVGV4dHVyZU1hcCBtX3RleHR1cmVzOwogICAgIExpc3RIYXNoU2V0PFRleHR1cmVUb2tlbj4g
bV90ZXh0dXJlTFJVU2V0OwpAQCAtODQsNiArODUsOCBAQCBwcml2YXRlOgogICAgIHNpemVfdCBt
X21lbW9yeVVzZUJ5dGVzOwogICAgIGludCBtX21heFRleHR1cmVTaXplOwogICAgIFRleHR1cmVU
b2tlbiBtX25leHRUb2tlbjsKKworICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9ldmljdGVkVGV4dHVy
ZUlkczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKaW5kZXggNzg4YWRjN2Yx
MDhhYTZhMjVjYjNkNGNmOGNkMTQ5MzBlNjQ2NDE1Ny4uYTNhY2E1NzY2YTU2YzM2Zjg2ZGQ2MmM3
MmM4YmNjZjFhMzU3N2QxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKQEAgLTMzLDcg
KzMzLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBMYXllclRleHR1cmU7CiBj
bGFzcyBMYXllclRpbGVyQ2hyb21pdW07CiBjbGFzcyBMYXllclRleHR1cmVVcGRhdGVyOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0hlYWRzVXBEaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCmluZGV4IDdmMmNlYzc3ODVjZjBmMGUwZjFh
ZDNkNDEzMzU0YzgzOTM2YTE1ZmMuLjliYTViMGZiZWMwNWI5MTExM2Y4OTg5N2VkOWZhOGRhNGMw
NDY2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCkBAIC04Myw3ICs4Myw3
IEBAIHZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhdygpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQgPSBtX2xheWVyUmVuZGVyZXItPmNvbnRleHQoKTsKICAgICBpZiAoIW1faHVk
VGV4dHVyZSkKLSAgICAgICAgbV9odWRUZXh0dXJlID0gTGF5ZXJUZXh0dXJlOjpjcmVhdGUoY29u
dGV4dCwgbV9sYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIoKSk7Cisg
ICAgICAgIG1faHVkVGV4dHVyZSA9IExheWVyVGV4dHVyZTo6Y3JlYXRlKG1fbGF5ZXJSZW5kZXJl
ci0+cmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyKCkpOwogCiAgICAgLy8gVXNlIGEgZnVsbHNj
cmVlbiB0ZXh0dXJlIG9ubHkgaWYgd2UgbmVlZCB0by4uLgogICAgIEludFNpemUgaHVkU2l6ZTsK
QEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXcoKQogICAgIHsK
ICAgICAgICAgUGxhdGZvcm1DYW52YXM6OkF1dG9Mb2NrZXIgbG9ja2VyKCZjYW52YXMpOwogCi0g
ICAgICAgIG1faHVkVGV4dHVyZS0+YmluZFRleHR1cmUoKTsKKyAgICAgICAgbV9odWRUZXh0dXJl
LT5iaW5kVGV4dHVyZShjb250ZXh0KTsKICAgICAgICAgYm9vbCB1cGxvYWRlZFZpYU1hcCA9IGZh
bHNlOwogICAgICAgICBpZiAobV91c2VNYXBTdWJGb3JVcGxvYWRzKSB7CiAgICAgICAgICAgICBF
eHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMz
RENocm9taXVtKj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKQEAgLTEzMiw3ICsxMzIsNyBA
QCB2b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXcoKQogICAgIGNvbnN0IFByb2dyYW0qIHByb2dy
YW0gPSBtX2xheWVyUmVuZGVyZXItPmhlYWRzVXBEaXNwbGF5UHJvZ3JhbSgpOwogICAgIEFTU0VS
VChwcm9ncmFtICYmIHByb2dyYW0tPmluaXRpYWxpemVkKCkpOwogICAgIEdMQyhjb250ZXh0LCBj
b250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwotICAg
IG1faHVkVGV4dHVyZS0+YmluZFRleHR1cmUoKTsKKyAgICBtX2h1ZFRleHR1cmUtPmJpbmRUZXh0
dXJlKGNvbnRleHQpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51c2VQcm9ncmFtKHByb2dy
YW0tPnByb2dyYW0oKSkpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWkocHJv
Z3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVk
TGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGlsZWRMYXllckltcGwuY3BwCmluZGV4IDgwM2JhMDZkNTYxOTdkMjhhYWU1NWE3OGM1
YmNkMTFlMTI0NzdiNWUuLjE3NTcxOWVmYWY1YmI4ZTUyOGRmNDUyNDBhMTMyOGM0MDdkYmQxYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGlsZWRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAj
aW5jbHVkZSAiY2MvQ0NUaWxlZExheWVySW1wbC5oIgogCiAjaW5jbHVkZSAiQ29udGVudExheWVy
Q2hyb21pdW0uaCIKKyNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKIAogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC02Miw3ICs2Myw3IEBAIHZvaWQgQ0NUaWxl
ZExheWVySW1wbDo6YmluZENvbnRlbnRzVGV4dHVyZSgpCiAgICAgTGF5ZXJUZXh0dXJlKiB0ZXh0
dXJlID0gbV90aWxlci0+Z2V0U2luZ2xlVGV4dHVyZSgpOwogICAgIEFTU0VSVCh0ZXh0dXJlKTsK
IAotICAgIHRleHR1cmUtPmJpbmRUZXh0dXJlKCk7CisgICAgdGV4dHVyZS0+YmluZFRleHR1cmUo
bGF5ZXJSZW5kZXJlcigpLT5jb250ZXh0KCkpOwogfQogCiB2b2lkIENDVGlsZWRMYXllckltcGw6
OmR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103550</attachid>
            <date>2011-08-10 16:08:57 -0700</date>
            <delta_ts>2011-08-11 19:07:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64772-20110810160856.patch</filename>
            <type>text/plain</type>
            <size>51505</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI3OTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxMzMxNGIzMTdkNTYzMmYw
ZmMzNjJmZWZkZTJhMDA2YzM5MGExMjU3Li4yMDNlNmEwZTNkMWRlY2I3NTk2YjEzMDgxOTVmZWU1
MmQxYzA5MjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODIgQEAKKzIwMTEtMDgtMTAgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIERl
ZmVyIG1hbmFnZWQgdGV4dHVyZSBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24gdW50aWwgdXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjQ3NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgZGVmZXJyaW5nIEdyYXBoaWNzQ29udGV4
dDNEIGNhbGxzIGZvciB0ZXh0dXJlIGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbiBmb3IgbWFuYWdl
ZAorICAgICAgICB0ZXh0dXJlcyBhbmQgZGVmZXJzIHRoZXNlIGNhbGxzIHVudGlsIHVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoKSBmb3IgY29udGVudHMgdGV4dHVyZXMuICBUaGUgcHJpbWFyeSBi
ZW5lZml0IG9mCisgICAgICAgIHRoaXMgY2hhbmdlIGlzIHRoYXQgaXQgZGVjb3VwbGVzIG1hbmFn
aW5nIHRoZSB0ZXh0dXJlIGJ1ZGdldCBmb3IgdGhlIG5leHQgZnJhbWUgKHdoaWNoIGhhcyB0byBo
YXBwZW4gYmVmb3JlCisgICAgICAgIHBhaW50aW5nIGxheWVyIGNvbnRlbnRzKSBmcm9tIHRoZSBh
Y3R1YWwgR0wgY2FsbHMgdGhhdCBjcmVhdGUvZGVzdHJveSB0ZXh0dXJlcy4gIFRoYXQgd2F5LCBp
biB0aGUgdGhyZWFkZWQKKyAgICAgICAgY29tcG9zaXRpbmcgd29ybGQgd2UgY2FuIGNvbnRpbnVl
IHRvIHVzZSB0ZXh0dXJlcyBmcm9tIHRoZSBwcmV2aW91cyBmcmFtZSB3aGlsZSBzb2Z0d2FyZSBw
YWludGluZyBjb250ZW50cyBmb3IKKyAgICAgICAgdGhlIG5leHQgZnJhbWUgaW50byBzb2Z0d2Fy
ZSBidWZmZXJzIG9yIFNrUGljdHVyZXMuCisKKyAgICAgICAgQWxzbyByZW5hbWVzIExheWVyVGV4
dHVyZSB0byBNYW5hZ2VkVGV4dHVyZSB0byBiZXR0ZXIgcmVmbGVjdCB3aGF0IGl0IGlzLiAgTm90
IGFsbCBNYW5hZ2VkVGV4dHVyZXMgd2UgY3JlYXRlIGFyZQorICAgICAgICBuZWNlc3NhcmlseSBh
c3NvY2lhdGVkIHdpdGggbGF5ZXJzLCBidXQgdGhleSBhcmUgYWxsIG1hbmFnZWQgYnkgYSBUZXh0
dXJlTWFuYWdlci4KKworICAgICAgICBDb3ZlcmVkIGJ5IGNvbXBvc2l0aW5nLyBsYXlvdXQgdGVz
dHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVsZWFzZVRleHR1cmVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVycyk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnVwZGF0ZUxheWVycyk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldE9mZnNjcmVlbkxh
eWVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnVz
ZVJlbmRlclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
Ojppbml0aWFsaXplU2hhcmVkT2JqZWN0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1hcDo6dXBkYXRlVGV4dHVyZVJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZTo6dXBkYXRl
VGV4dHVyZVJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
VGV4dHVyZVVwZGF0ZXJDYW52YXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxl
ckNocm9taXVtOjpnZXRTaW5nbGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGls
ZXJDaHJvbWl1bTo6Y3JlYXRlVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hy
b21pdW06OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVt
OjpkcmF3VGlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
VGlsZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpU
aWxlOjpUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXJDaHJvbWl1bTo6VGlsZTo6
dGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRl
eHR1cmUuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJUZXh0dXJlLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6Ok1hbmFnZWRUZXh0
dXJlOjpNYW5hZ2VkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpNYW5hZ2VkVGV4dHVyZTo6
fk1hbmFnZWRUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmFnZWRUZXh0dXJlOjppc1Zh
bGlkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmFnZWRUZXh0dXJlOjpyZXNlcnZlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1hbmFnZWRUZXh0dXJlOjp1bnJlc2VydmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWFuYWdlZFRleHR1cmU6OmJpbmRUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmFn
ZWRUZXh0dXJlOjpmcmFtZWJ1ZmZlclRleHR1cmUyRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZS5oLgorICAgICAgICAo
V2ViQ29yZTo6TWFuYWdlZFRleHR1cmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNYW5h
Z2VkVGV4dHVyZTo6Zm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmFnZWRUZXh0dXJlOjpp
c1Jlc2VydmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJT
dXJmYWNlQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
ZXh0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6VGV4
dHVyZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hbmFnZXI6OmRlbGV0ZUV2
aWN0ZWRUZXh0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6cmVtb3Zl
VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6YWxsb2NhdGVUZXh0
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYW5hZ2VyOjpyZXF1ZXN0VGV4dHVyZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYW5hZ2VyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZU1hbmFnZXI6OnNldEFzc29jaWF0ZWRDb250ZXh0RGVidWdPbmx5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYW5hZ2VyOjphc3NvY2lhdGVkQ29udGV4dERlYnVnT25s
eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9t
aXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1Vw
RGlzcGxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJm
YWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6cHJlcGFyZUNvbnRl
bnRzVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmRyYXdTdXJm
YWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1
cmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6Y29udGVudHNUZXh0
dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5
ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6OmJpbmRDb250
ZW50c1RleHR1cmUpOgorCiAyMDExLTA4LTEwICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgQ2hlY2sgdGhhdCB3ZSBkbyBub3QgbmVlZCBsYXlvdXQgYmVm
b3JlIHRyeWluZyB0byBkaXJ0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDE2ODQ0YjcxMDE3OGE3MTIy
MThmZmQ2MDZhMmNiYzIzM2QwY2QwNzIuLjEyYWEzNmVjZjM2NzJiYTBmNDc2NGUwNGY5MzU2ZmIw
ZjA5OGRmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM0OTksOCArMzQ5OSw4IEBACiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJQYWludGVyQ2hyb21pdW0uaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyVGV4dHVyZS5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGV4dHVyZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCmluZGV4IGZkYWVlMjllMjc4ZTA2
OGM3NGM5YjAzMTg0MWIzZmUxOWI1NTU2M2QuLmEwZTk2YzM0YTIwZDU0MmExZGE2ZTg3MTYwNTU4
NGMwZjkxZWVjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaApAQCAtMzksNyAr
MzksNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIExheWVyVGV4dHVyZTsKIGNs
YXNzIExheWVyVGlsZXJDaHJvbWl1bTsKIGNsYXNzIExheWVyVGV4dHVyZVVwZGF0ZXI7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdl
TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IGYyNDhmMmMxNjI1NjQ5ODA5MTZlMDlk
YjRiNTllY2RlM2MxNDAyNWMuLjJhNzcxNWVmOWE0NDRiZjk5M2Y0MWY1NDFiMGY1NTM3NDYwYjE3
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAtMzcsNyArMzcsNyBAQAog
I2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRl
ICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJMYXllclRleHR1cmUuaCIKKyNp
bmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVN1YkltYWdl
LmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
Q29sb3IuaCIKQEAgLTY3LDkgKzY3LDkgQEAgcHVibGljOgogICAgICAgICBtX3RleFN1YkltYWdl
LnNldFN1YkltYWdlU2l6ZSh0aWxlU2l6ZSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVRleHR1cmVSZWN0KExheWVyVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVRleHR1cmVSZWN0KE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKICAgICB7Ci0gICAgICAgIHRleHR1cmUt
PmJpbmRUZXh0dXJlKCk7CisgICAgICAgIHRleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQoKSk7
CiAKICAgICAgICAgLy8gU291cmNlIHJlY3Qgc2hvdWxkIG5ldmVyIGdvIG91dHNpZGUgdGhlIGlt
YWdlIHBpeGVscywgZXZlbiBpZiB0aGlzCiAgICAgICAgIC8vIGlzIHJlcXVlc3RlZCBiZWNhdXNl
IHRoZSB0ZXh0dXJlIGV4dGVuZHMgb3V0c2lkZSB0aGUgaW1hZ2UuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmNwcAppbmRleCBiZmMyOWI3OGQxZDNmNTcwODdjMGM3M2QzMDY5MjE0
OGYxMjhkNWI4Li5mNDNkNzA1MTBhNzI2MWMxNTIxNjIwYjM3MzQ4NWMzOTUyNDQ1MzVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIK
ICNpbmNsdWRlICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIkxheWVyVGV4dHVy
ZS5oIgorI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJl
VXBkYXRlckNhbnZhcy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAi
UmVuZGVyU3VyZmFjZUNocm9taXVtLmgiCkBAIC01MjYsOSArNTI2LDExIEBAIHZvaWQgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpyZWxlYXNlVGV4dHVyZXMoKQogICAgIG1fcm9vdExheWVyQ29udGVu
dFRpbGVyLT5wcm90ZWN0VGlsZVRleHR1cmVzKG1fdmlld3BvcnRWaXNpYmxlUmVjdCk7CiAgICAg
bV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KHRleHR1cmVNZW1v
cnlMb3dMaW1pdEJ5dGVzKTsKICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnVucHJvdGVj
dEFsbFRleHR1cmVzKCk7CisgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5kZWxldGVFdmlj
dGVkVGV4dHVyZXMobV9jb250ZXh0LmdldCgpKTsKICAgICAvLyBFdmljdCBhbGwgUmVuZGVyU3Vy
ZmFjZSB0ZXh0dXJlcy4KICAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+dW5wcm90
ZWN0QWxsVGV4dHVyZXMoKTsKICAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+cmVk
dWNlTWVtb3J5VG9MaW1pdCgwKTsKKyAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+
ZGVsZXRlRXZpY3RlZFRleHR1cmVzKG1fY29udGV4dC5nZXQoKSk7CiB9CiAKIHZvaWQgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjp1cGRhdGVSb290TGF5ZXJDb250ZW50cygpCkBAIC02MTQsMTIgKzYx
NiwxMiBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVycygpCiAgICAgZHJh
d0xheWVyc0ludGVybmFsKCk7CiAKICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnVucHJv
dGVjdEFsbFRleHR1cmVzKCk7Ci0gICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5yZWR1Y2VN
ZW1vcnlUb0xpbWl0KHRleHR1cmVNZW1vcnlSZWNsYWltTGltaXRCeXRlcyk7CiAKICAgICBpZiAo
dGV4dHVyZU1lbW9yeVJlY2xhaW1MaW1pdEJ5dGVzID4gbV9jb250ZW50c1RleHR1cmVNYW5hZ2Vy
LT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSkKICAgICAgICAgbV9yZW5kZXJTdXJmYWNlVGV4dHVy
ZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGltaXQodGV4dHVyZU1lbW9yeVJlY2xhaW1MaW1pdEJ5
dGVzIC0gbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7
CiAgICAgZWxzZQogICAgICAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+cmVkdWNl
TWVtb3J5VG9MaW1pdCgwKTsKKyAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+ZGVs
ZXRlRXZpY3RlZFRleHR1cmVzKG1fY29udGV4dC5nZXQoKSk7CiAKICAgICBpZiAoaXNDb21wb3Np
dGluZ09mZnNjcmVlbigpKQogICAgICAgICBjb3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSgp
OwpAQCAtNjY1LDYgKzY2Nyw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVM
YXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogICAgIH0KIAogICAgIG1fY29udGVudHNU
ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdCh0ZXh0dXJlTWVtb3J5UmVjbGFpbUxp
bWl0Qnl0ZXMpOworICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+ZGVsZXRlRXZpY3RlZFRl
eHR1cmVzKG1fY29udGV4dC5nZXQoKSk7CiAgICAgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKIH0KIApAQCAtMTAxOCw3ICsxMDIxLDcgQEAgdm9pZCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OnNldENvbXBvc2l0ZU9mZnNjcmVlbihib29sIGNvbXBvc2l0
ZU9mZnNjcmVlbikKICAgICAgICAgbV9yb290Q0NMYXllckltcGwtPmNsZWFyUmVuZGVyU3VyZmFj
ZSgpOwogfQogCi1MYXllclRleHR1cmUqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0T2Zmc2Ny
ZWVuTGF5ZXJUZXh0dXJlKCkKK01hbmFnZWRUZXh0dXJlKiBMYXllclJlbmRlcmVyQ2hyb21pdW06
OmdldE9mZnNjcmVlbkxheWVyVGV4dHVyZSgpCiB7CiAgICAgcmV0dXJuIG1fY29tcG9zaXRlT2Zm
c2NyZWVuICYmIG1fcm9vdENDTGF5ZXJJbXBsID8gbV9yb290Q0NMYXllckltcGwtPnJlbmRlclN1
cmZhY2UoKS0+Y29udGVudHNUZXh0dXJlKCkgOiAwOwogfQpAQCAtMTA1OCw3ICsxMDYxLDcgQEAg
Ym9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UoQ0NSZW5kZXJTdXJm
YWNlKiByZW5kZXJTdXJmYWNlKQogICAgIGlmICghcmVuZGVyU3VyZmFjZS0+cHJlcGFyZUNvbnRl
bnRzVGV4dHVyZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZW5kZXJTdXJmYWNl
LT5jb250ZW50c1RleHR1cmUoKS0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoKTsKKyAgICByZW5kZXJT
dXJmYWNlLT5jb250ZW50c1RleHR1cmUoKS0+ZnJhbWVidWZmZXJUZXh0dXJlMkQobV9jb250ZXh0
LmdldCgpKTsKIAogI2lmICFkZWZpbmVkICggTkRFQlVHICkKICAgICBpZiAobV9jb250ZXh0LT5j
aGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUikgIT0g
R3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CkBAIC0xMTk1LDggKzEx
OTgsMTIgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmpl
Y3RzKCkKIAogICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+Zmx1c2goKSk7CiAK
LSAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKG1f
Y29udGV4dC5nZXQoKSwgdGV4dHVyZU1lbW9yeUhpZ2hMaW1pdEJ5dGVzLCBtX21heFRleHR1cmVT
aXplKTsKLSAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2Vy
OjpjcmVhdGUobV9jb250ZXh0LmdldCgpLCB0ZXh0dXJlTWVtb3J5SGlnaExpbWl0Qnl0ZXMsIG1f
bWF4VGV4dHVyZVNpemUpOworICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlciA9IFRleHR1cmVN
YW5hZ2VyOjpjcmVhdGUodGV4dHVyZU1lbW9yeUhpZ2hMaW1pdEJ5dGVzLCBtX21heFRleHR1cmVT
aXplKTsKKyAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2Vy
OjpjcmVhdGUodGV4dHVyZU1lbW9yeUhpZ2hMaW1pdEJ5dGVzLCBtX21heFRleHR1cmVTaXplKTsK
KyNpZm5kZWYgTkRFQlVHCisgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5zZXRBc3NvY2lh
dGVkQ29udGV4dERlYnVnT25seShtX2NvbnRleHQuZ2V0KCkpOworICAgIG1fcmVuZGVyU3VyZmFj
ZVRleHR1cmVNYW5hZ2VyLT5zZXRBc3NvY2lhdGVkQ29udGV4dERlYnVnT25seShtX2NvbnRleHQu
Z2V0KCkpOworI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmgKaW5kZXggY2FjMDc1NGIwOGEwMDRlYzBlOGVkZDJiMjUyOGU1NjQ3MjU3
Mzg2OC4uODdmMDNiMTZjM2ZlZTA4YTY2MWVmMjM2MzliYWRlMDU2ZWExOWMzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTE4Nyw3ICsxODcsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZHJhd0xheWVyKENDTGF5ZXJJbXBsKiwgQ0NSZW5kZXJTdXJmYWNlKik7CiAKICAg
ICB2b2lkIGRyYXdSb290TGF5ZXIoKTsKLSAgICBMYXllclRleHR1cmUqIGdldE9mZnNjcmVlbkxh
eWVyVGV4dHVyZSgpOworICAgIE1hbmFnZWRUZXh0dXJlKiBnZXRPZmZzY3JlZW5MYXllclRleHR1
cmUoKTsKICAgICB2b2lkIGNvcHlPZmZzY3JlZW5UZXh0dXJlVG9EaXNwbGF5KCk7CiAKICAgICBi
b29sIGlzTGF5ZXJWaXNpYmxlKExheWVyQ2hyb21pdW0qLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYsIGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmUuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTk4NjQzYmViYTE3YTI4NGEzNmIwYTgzYjcx
ZWZhODI5NTE4Mzc4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVy
ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
Ci0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotCi0j
aW5jbHVkZSAiTGF5ZXJUZXh0dXJlLmgiCi0KLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5o
IgotI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
TGF5ZXJUZXh0dXJlOjpMYXllclRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRl
eHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBt
X3RleHR1cmVNYW5hZ2VyKG1hbmFnZXIpCi0gICAgLCBtX3Rva2VuKDApCi0gICAgLCBtX2Zvcm1h
dCgwKQotICAgICwgbV90ZXh0dXJlSWQoMCkKLXsKLX0KLQotTGF5ZXJUZXh0dXJlOjp+TGF5ZXJU
ZXh0dXJlKCkKLXsKLSAgICBpZiAobV90b2tlbikKLSAgICAgICAgbV90ZXh0dXJlTWFuYWdlci0+
cmVsZWFzZVRva2VuKG1fdG9rZW4pOwotfQotCi1ib29sIExheWVyVGV4dHVyZTo6aXNWYWxpZChj
b25zdCBJbnRTaXplJiBzaXplLCB1bnNpZ25lZCBmb3JtYXQpCi17Ci0gICAgcmV0dXJuIG1fdG9r
ZW4gJiYgc2l6ZSA9PSBtX3NpemUgJiYgZm9ybWF0ID09IG1fZm9ybWF0ICYmIG1fdGV4dHVyZU1h
bmFnZXItPmhhc1RleHR1cmUobV90b2tlbik7Ci19Ci0KLWJvb2wgTGF5ZXJUZXh0dXJlOjpyZXNl
cnZlKGNvbnN0IEludFNpemUmIHNpemUsIHVuc2lnbmVkIGZvcm1hdCkKLXsKLSAgICBpZiAoIW1f
dG9rZW4pCi0gICAgICAgIG1fdG9rZW4gPSBtX3RleHR1cmVNYW5hZ2VyLT5nZXRUb2tlbigpOwot
Ci0gICAgaWYgKHNpemUgPT0gbV9zaXplICYmIGZvcm1hdCA9PSBtX2Zvcm1hdCAmJiBtX3RleHR1
cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKG1fdG9rZW4pKQotICAgICAgICBtX3RleHR1cmVNYW5hZ2Vy
LT5wcm90ZWN0VGV4dHVyZShtX3Rva2VuKTsKLSAgICBlbHNlIHsKLSAgICAgICAgbV90ZXh0dXJl
SWQgPSBtX3RleHR1cmVNYW5hZ2VyLT5yZXF1ZXN0VGV4dHVyZShtX3Rva2VuLCBzaXplLCBmb3Jt
YXQpOwotICAgICAgICBpZiAobV90ZXh0dXJlSWQpIHsKLSAgICAgICAgICAgIG1fc2l6ZSA9IHNp
emU7Ci0gICAgICAgICAgICBtX2Zvcm1hdCA9IGZvcm1hdDsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIHJldHVybiBtX3RleHR1cmVJZDsKLX0KLQotdm9pZCBMYXllclRleHR1cmU6OnVucmVzZXJ2
ZSgpCi17Ci0gICAgaWYgKCFtX3Rva2VuKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3RleHR1
cmVNYW5hZ2VyLT51bnByb3RlY3RUZXh0dXJlKG1fdG9rZW4pOwotfQotCi12b2lkIExheWVyVGV4
dHVyZTo6YmluZFRleHR1cmUoKQotewotICAgIEFTU0VSVChtX3RleHR1cmVNYW5hZ2VyLT5oYXNU
ZXh0dXJlKG1fdG9rZW4pKTsKLSAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVJZCk7Ci19Ci0KLXZvaWQgTGF5ZXJUZXh0dXJl
OjpmcmFtZWJ1ZmZlclRleHR1cmUyRCgpCi17Ci0gICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRl
eHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNE
OjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4
dHVyZUlkLCAwKTsKLX0KLQotfQotCi0jZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyVGV4dHVyZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzBh
NTA3OGVmNWZjZjMzNDVkODQzYzVkYTY1NGE5ODU5NzcyNjIyLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
Ci0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgTGF5ZXJUZXh0dXJlX2gKLSNkZWZpbmUgTGF5ZXJU
ZXh0dXJlX2gKLQotI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFuYWdl
ci5oIgotCi0jaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KLSNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHcmFwaGljc0NvbnRleHQz
RDsKLWNsYXNzIFRleHR1cmVNYW5hZ2VyOwotCi1jbGFzcyBMYXllclRleHR1cmUgewotICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKExheWVyVGV4dHVyZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVyVGV4dHVyZT4gY3JlYXRlKEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlTWFuYWdlciogbWFuYWdlcikKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTGF5ZXJUZXh0dXJlKGNvbnRleHQsIG1hbmFn
ZXIpKTsKLSAgICB9Ci0gICAgfkxheWVyVGV4dHVyZSgpOwotCi0gICAgdW5zaWduZWQgZm9ybWF0
KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXQ7IH0KLSAgICBib29sIGlzVmFsaWQoY29uc3QgSW50
U2l6ZSYsIHVuc2lnbmVkIGZvcm1hdCk7Ci0gICAgYm9vbCByZXNlcnZlKGNvbnN0IEludFNpemUm
LCB1bnNpZ25lZCBmb3JtYXQpOwotICAgIHZvaWQgdW5yZXNlcnZlKCk7Ci0gICAgYm9vbCBpc1Jl
c2VydmVkKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3RleHR1cmVNYW5hZ2VyKTsKLSAgICAg
ICAgcmV0dXJuIG1fdGV4dHVyZU1hbmFnZXItPmlzUHJvdGVjdGVkKG1fdG9rZW4pOwotICAgIH0K
LQotICAgIHZvaWQgYmluZFRleHR1cmUoKTsKLSAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJE
KCk7Ci0KLXByaXZhdGU6Ci0gICAgTGF5ZXJUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4
dHVyZU1hbmFnZXIqKTsKLQotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0
OwotICAgIFRleHR1cmVNYW5hZ2VyKiBtX3RleHR1cmVNYW5hZ2VyOwotICAgIFRleHR1cmVUb2tl
biBtX3Rva2VuOwotICAgIEludFNpemUgbV9zaXplOwotICAgIHVuc2lnbmVkIG1fZm9ybWF0Owot
ICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOwotfTsKLQotfQotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJl
VXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDJkYzQ0ZTNkMjRlMmY5YzQwNzUwMDNjNzI3ODlmNTli
OTJhZDFiMTMuLjIxZDUyZDAyYTVhMjFiNjExMWY3OGI1NDBhZWM2OGMzNDdhMDllZmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4
dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3Mg
SW50U2l6ZTsKLWNsYXNzIExheWVyVGV4dHVyZTsKK2NsYXNzIE1hbmFnZWRUZXh0dXJlOwogCiBj
bGFzcyBMYXllclRleHR1cmVVcGRhdGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMYXll
clRleHR1cmVVcGRhdGVyKTsKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIC8vIElmIHRo
ZSBmb3JtYXQgaXMgVGV4ZWxGb3JtYXRCR1JBLCB2ZWM0LnggaXMgYmx1ZSBhbmQgdmVjNC56IGlz
IHJlZC4KICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQo
R0MzRGVudW0gdGV4dHVyZUZvcm1hdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9V
cGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXpl
LCBpbnQgYm9yZGVyVGV4ZWxzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHR1cmVS
ZWN0KExheWVyVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KE1h
bmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IExheWVyVGV4dHVyZVVw
ZGF0ZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpIDogbV9jb250ZXh0KGNvbnRleHQpIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmNwcAppbmRleCA2NWI2
NTcyZTMxNjMwODM1YzdiMjZjZDJlOWJjNjFjMDlkNTZiZmMwLi4xMDEyNTU5Y2JhZTcyZjc4M2Zm
YjAwOGIyZDljZjM5ZDlmYTYwNmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRh
dGVyQ2FudmFzLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRC5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkxheWVyUGFpbnRlckNo
cm9taXVtLmgiCi0jaW5jbHVkZSAiTGF5ZXJUZXh0dXJlLmgiCisjaW5jbHVkZSAiTWFuYWdlZFRl
eHR1cmUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVu
dC5oIgogCkBAIC05NCwxMSArOTQsMTEgQEAgdm9pZCBMYXllclRleHR1cmVVcGRhdGVyQml0bWFw
OjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnMKICAgICBw
YWludENvbnRlbnRzKCpjYW52YXNQYWludGVyLmNvbnRleHQoKSwgY29udGVudFJlY3QpOwogfQog
Ci12b2lkIExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA6OnVwZGF0ZVRleHR1cmVSZWN0KExheWVy
VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpCit2b2lkIExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA6OnVwZGF0ZVRleHR1
cmVSZWN0KE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICBQbGF0Zm9ybUNhbnZhczo6QXV0b0xv
Y2tlciBsb2NrZXIoJm1fY2FudmFzKTsKIAotICAgIHRleHR1cmUtPmJpbmRUZXh0dXJlKCk7Cisg
ICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCgpKTsKICAgICBtX3RleFN1YkltYWdlLnVw
bG9hZChsb2NrZXIucGl4ZWxzKCksIGNvbnRlbnRSZWN0KCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0
LCB0ZXh0dXJlLT5mb3JtYXQoKSwgY29udGV4dCgpKTsKIH0KIApAQCAtMTQ1LDcgKzE0NSw3IEBA
IHZvaWQgTGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0
IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjCiAgICAgbV9waWN0dXJlLmVuZFJlY29yZGluZygpOwog
fQogCi12b2lkIExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmU6OnVwZGF0ZVRleHR1cmVSZWN0
KExheWVyVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmU6OnVw
ZGF0ZVRleHR1cmVSZWN0KE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICBpZiAobV9jcmVhdGVG
cmFtZUJ1ZmZlcikgewogICAgICAgICBkZWxldGVGcmFtZUJ1ZmZlcigpOwpAQCAtMTU3LDcgKzE1
Nyw3IEBAIHZvaWQgTGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZTo6dXBkYXRlVGV4dHVyZVJl
Y3QoTGF5ZXJUZXh0dXJlKiB0ZXh0dXJlLCBjb25zCiAKICAgICAvLyBCaW5kIHRleHR1cmUuCiAg
ICAgY29udGV4dCgpLT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSLCBtX2Zibyk7Ci0gICAgdGV4dHVyZS0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoKTsKKyAgICB0
ZXh0dXJlLT5mcmFtZWJ1ZmZlclRleHR1cmUyRChjb250ZXh0KCkpOwogICAgIEFTU0VSVChjb250
ZXh0KCktPmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQ09NUExFVEUpOwogCiAgICAg
Ly8gTWFrZSBzdXJlIFNLSUEgdXNlcyB0aGUgY29ycmVjdCBHTCBjb250ZXh0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJl
VXBkYXRlckNhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5oCmluZGV4IDAxNjg3NmY5MzBmNTVhYjVkNDhh
OWIwOWRkMWI0ZmIxMmRjNzFhM2IuLjg3YjFhMGY4ZjMzZWFjN2IzMzBjODZhYTJhYmY0YjZhMjc0
OWFlMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmgKQEAgLTc2
LDcgKzc2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgT3JpZW50YXRpb24gb3JpZW50YXRpb24o
KSB7IHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpCb3R0b21VcE9yaWVudGF0aW9uOyB9CiAg
ICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVt
IHRleHR1cmVGb3JtYXQpOwogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3Qg
SW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVy
VGV4ZWxzKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoTGF5ZXJUZXh0dXJl
KiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwor
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChNYW5hZ2VkVGV4dHVyZSosIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogcHJpdmF0
ZToKICAgICBMYXllclRleHR1cmVVcGRhdGVyQml0bWFwKEdyYXBoaWNzQ29udGV4dDNEKiwgUGFz
c093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4sIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpOwpA
QCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBPcmllbnRhdGlvbiBvcmllbnRh
dGlvbigpIHsgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRvcERvd25PcmllbnRhdGlvbjsg
fQogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNE
ZW51bSB0ZXh0dXJlRm9ybWF0KTsKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNv
bnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJv
cmRlclRleGVscyk7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KExheWVyVGV4
dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoTWFuYWdlZFRleHR1cmUqLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKIHBy
aXZhdGU6CiAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZShHcmFwaGljc0NvbnRleHQz
RCosIFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBHckNvbnRleHQqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGls
ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwCmluZGV4IDU3MzgwNzE4NDZjZjRkMzU3ZDEyOGUzNWU2
NTU5MjA4YzE3Zjc4YzcuLjI2OTczZTMxNmZmZTRkNjIzY2MwMDkzOGZjYzJjYWNjOTgzN2YxZjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyVGlsZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgi
CiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCi0jaW5jbHVkZSAiTGF5ZXJUZXh0
dXJlLmgiCisjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKICNpbmNsdWRlICJMYXllclRleHR1
cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db2xvci5oIgogI2luY2x1ZGUgIlRyYWNl
RXZlbnQuaCIKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OnNldFRp
bGVTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgbV90aWxpbmdEYXRhLnNldE1heFRleHR1
cmVTaXplKG1heChzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKIH0KIAotTGF5ZXJUZXh0
dXJlKiBMYXllclRpbGVyQ2hyb21pdW06OmdldFNpbmdsZVRleHR1cmUoKQorTWFuYWdlZFRleHR1
cmUqIExheWVyVGlsZXJDaHJvbWl1bTo6Z2V0U2luZ2xlVGV4dHVyZSgpCiB7CiAgICAgaWYgKG1f
dGlsaW5nRGF0YS5udW1UaWxlcygpICE9IDEpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTE1LDkg
KzExNSw4IEBAIExheWVyVGlsZXJDaHJvbWl1bTo6VGlsZSogTGF5ZXJUaWxlckNocm9taXVtOjpj
cmVhdGVUaWxlKGludCBpLCBpbnQgaikKICAgICAgICAgbV91bnVzZWRUaWxlcy5yZW1vdmVMYXN0
KCk7CiAgICAgICAgIEFTU0VSVCh0aWxlLT5yZWZDb3VudCgpID09IDEpOwogICAgIH0gZWxzZSB7
Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRl
eHQoKTsKICAgICAgICAgVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIgPSBsYXllclJlbmRlcmVyKCkt
PmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKTsKLSAgICAgICAgdGlsZSA9IGFkb3B0UmVmKG5ldyBU
aWxlKExheWVyVGV4dHVyZTo6Y3JlYXRlKGNvbnRleHQsIG1hbmFnZXIpKSk7CisgICAgICAgIHRp
bGUgPSBhZG9wdFJlZihuZXcgVGlsZShNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1hbmFnZXIpKSk7
CiAgICAgfQogICAgIG1fdGlsZXMuYWRkKG1ha2VfcGFpcihpLCBqKSwgdGlsZSk7CiAKQEAgLTM1
NSw3ICszNTQsNyBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6dXBkYXRlUmVjdChMYXllclRl
eHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcikKICAgICAgICAgICAgIGlmIChwYWludE9mZnNl
dC55KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSA+IG1fcGFpbnRSZWN0LmhlaWdodCgpKQogICAgICAg
ICAgICAgICAgIENSQVNIKCk7CiAKLSAgICAgICAgICAgIHRpbGUtPnRleHR1cmUoKS0+YmluZFRl
eHR1cmUoKTsKKyAgICAgICAgICAgIHRpbGUtPnRleHR1cmUoKS0+YmluZFRleHR1cmUoY29udGV4
dCk7CiAgICAgICAgICAgICBjb25zdCBHQzNEaW50IGZpbHRlciA9IG1fdGlsaW5nRGF0YS5ib3Jk
ZXJUZXhlbHMoKSA/IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIgOiBHcmFwaGljc0NvbnRleHQz
RDo6TkVBUkVTVDsKICAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0
ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV9NSU5fRklMVEVSLCBmaWx0ZXIpKTsKICAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBmaWx0ZXIpKTsKQEAgLTUzNSw3ICs1MzQs
NyBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6ZHJhd1RpbGVzKGNvbnN0IEludFJlY3QmIGNv
bnRlbnRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdAogCiAgICAgICAgICAgICBBU1NFUlQodGlsZS0+
dGV4dHVyZSgpLT5pc1Jlc2VydmVkKCkpOwogCi0gICAgICAgICAgICB0aWxlLT50ZXh0dXJlKCkt
PmJpbmRUZXh0dXJlKCk7CisgICAgICAgICAgICB0aWxlLT50ZXh0dXJlKCktPmJpbmRUZXh0dXJl
KGNvbnRleHQpOwogCiAgICAgICAgICAgICAvLyBEb24ndCB1c2UgdGlsZUNvbnRlbnRSZWN0IGhl
cmUsIGFzIHRoYXQgY29udGFpbnMgdGhlIGZ1bGwKICAgICAgICAgICAgIC8vIHJlY3Qgd2l0aCBi
b3JkZXIgdGV4ZWxzIHdoaWNoIHNob3VsZG4ndCBiZSBkcmF3bi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNo
cm9taXVtLmgKaW5kZXggYjQ1NWJhMjQ3MmQwNmJiNjkzNTg5ZGEwY2QyNGYzNzAxYTM2ZDYxOC4u
N2JiZGU5ZTFkYmYyYjJlNGFhNzFlNWMzMGYyMjAyNDA5NGYyOGM0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJU
aWxlckNocm9taXVtLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCiAKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCi0jaW5jbHVkZSAiTGF5ZXJU
ZXh0dXJlLmgiCisjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKICNpbmNsdWRlICJMYXllclRl
eHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiVGlsaW5nRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9I
YXNoVHJhaXRzLmg+CkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIFByb2dy
YW1CaW5kaW5nPFZlcnRleFNoYWRlclRpbGUsIEZyYWdtZW50U2hhZGVyUkdCQVRleFN3aXp6bGVB
bHBoYUFBPiBQcm9ncmFtU3dpenpsZUFBOwogCiAgICAgLy8gSWYgdGhpcyB0aWxlciBoYXMgZXhh
Y3RseSBvbmUgdGlsZSwgcmV0dXJuIGl0cyB0ZXh0dXJlLiBPdGhlcndpc2UsIG51bGwuCi0gICAg
TGF5ZXJUZXh0dXJlKiBnZXRTaW5nbGVUZXh0dXJlKCk7CisgICAgTWFuYWdlZFRleHR1cmUqIGdl
dFNpbmdsZVRleHR1cmUoKTsKIAogcHJpdmF0ZToKICAgICBMYXllclRpbGVyQ2hyb21pdW0oTGF5
ZXJSZW5kZXJlckNocm9taXVtKiwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIEJvcmRlclRleGVs
T3B0aW9uKTsKQEAgLTkzLDkgKzkzLDkgQEAgcHJpdmF0ZToKICAgICBjbGFzcyBUaWxlIDogcHVi
bGljIFJlZkNvdW50ZWQ8VGlsZT4gewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaWxl
KTsKICAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IFRpbGUoUGFzc093blB0cjxMYXllclRl
eHR1cmU+IHRleCkgOiBtX3RleCh0ZXgpLCBtX2koLTEpLCBtX2ooLTEpIHsgfQorICAgICAgICBl
eHBsaWNpdCBUaWxlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleCkgOiBtX3RleCh0ZXgp
LCBtX2koLTEpLCBtX2ooLTEpIHsgfQogCi0gICAgICAgIExheWVyVGV4dHVyZSogdGV4dHVyZSgp
IHsgcmV0dXJuIG1fdGV4LmdldCgpOyB9CisgICAgICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJl
KCkgeyByZXR1cm4gbV90ZXguZ2V0KCk7IH0KIAogICAgICAgICBib29sIGRpcnR5KCkgY29uc3Qg
eyByZXR1cm4gIW1fZGlydHlMYXllclJlY3QuaXNFbXB0eSgpOyB9CiAgICAgICAgIHZvaWQgY2xl
YXJEaXJ0eSgpIHsgbV9kaXJ0eUxheWVyUmVjdCA9IEludFJlY3QoKTsgfQpAQCAtMTA3LDcgKzEw
Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIExheWVyLXNwYWNlIGRpcnR5IHJlY3RhbmdsZSB0
aGF0IG5lZWRzIHRvIGJlIHJlcGFpbnRlZC4KICAgICAgICAgSW50UmVjdCBtX2RpcnR5TGF5ZXJS
ZWN0OwogICAgIHByaXZhdGU6Ci0gICAgICAgIE93blB0cjxMYXllclRleHR1cmU+IG1fdGV4Owor
ICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4OwogICAgICAgICBpbnQgbV9pOwog
ICAgICAgICBpbnQgbV9qOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjJkZDZmMDdmZDFhMTcxN2FiZGZhOGYzZTA4MDJmNzg2NGE3YzBkMQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRU
ZXh0dXJlLmNwcApAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2luY2x1ZGUg
Ik1hbmFnZWRUZXh0dXJlLmgiCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2lu
Y2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTWFuYWdl
ZFRleHR1cmU6Ok1hbmFnZWRUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKQorICAgIDog
bV90ZXh0dXJlTWFuYWdlcihtYW5hZ2VyKQorICAgICwgbV90b2tlbigwKQorICAgICwgbV9mb3Jt
YXQoMCkKKyAgICAsIG1fdGV4dHVyZUlkKDApCit7Cit9CisKK01hbmFnZWRUZXh0dXJlOjp+TWFu
YWdlZFRleHR1cmUoKQoreworICAgIGlmIChtX3Rva2VuKQorICAgICAgICBtX3RleHR1cmVNYW5h
Z2VyLT5yZWxlYXNlVG9rZW4obV90b2tlbik7Cit9CisKK2Jvb2wgTWFuYWdlZFRleHR1cmU6Omlz
VmFsaWQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgdW5zaWduZWQgZm9ybWF0KQoreworICAgIHJldHVy
biBtX3Rva2VuICYmIHNpemUgPT0gbV9zaXplICYmIGZvcm1hdCA9PSBtX2Zvcm1hdCAmJiBtX3Rl
eHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKG1fdG9rZW4pOworfQorCitib29sIE1hbmFnZWRUZXh0
dXJlOjpyZXNlcnZlKGNvbnN0IEludFNpemUmIHNpemUsIHVuc2lnbmVkIGZvcm1hdCkKK3sKKyAg
ICBpZiAoIW1fdG9rZW4pCisgICAgICAgIG1fdG9rZW4gPSBtX3RleHR1cmVNYW5hZ2VyLT5nZXRU
b2tlbigpOworCisgICAgYm9vbCByZXNlcnZlZCA9IHRydWU7CisgICAgaWYgKHNpemUgPT0gbV9z
aXplICYmIGZvcm1hdCA9PSBtX2Zvcm1hdCAmJiBtX3RleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJl
KG1fdG9rZW4pKQorICAgICAgICBtX3RleHR1cmVNYW5hZ2VyLT5wcm90ZWN0VGV4dHVyZShtX3Rv
a2VuKTsKKyAgICBlbHNlIHsKKyAgICAgICAgbV90ZXh0dXJlSWQgPSAwOworICAgICAgICByZXNl
cnZlZCA9IG1fdGV4dHVyZU1hbmFnZXItPnJlcXVlc3RUZXh0dXJlKG1fdG9rZW4sIHNpemUsIGZv
cm1hdCk7CisgICAgICAgIGlmIChyZXNlcnZlZCkgeworICAgICAgICAgICAgbV9zaXplID0gc2l6
ZTsKKyAgICAgICAgICAgIG1fZm9ybWF0ID0gZm9ybWF0OworICAgICAgICB9CisgICAgfQorCisg
ICAgcmV0dXJuIHJlc2VydmVkOworfQorCit2b2lkIE1hbmFnZWRUZXh0dXJlOjp1bnJlc2VydmUo
KQoreworICAgIGlmICghbV90b2tlbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV90ZXh0dXJl
TWFuYWdlci0+dW5wcm90ZWN0VGV4dHVyZShtX3Rva2VuKTsKK30KKwordm9pZCBNYW5hZ2VkVGV4
dHVyZTo6YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCit7CisgICAgQVNT
RVJUKG1fdGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUobV90b2tlbikpOworICAgIEFTU0VSVChj
b250ZXh0ID09IG1fdGV4dHVyZU1hbmFnZXItPmFzc29jaWF0ZWRDb250ZXh0RGVidWdPbmx5KCkp
OworICAgIGlmICghbV90ZXh0dXJlSWQpCisgICAgICAgIG1fdGV4dHVyZUlkID0gbV90ZXh0dXJl
TWFuYWdlci0+YWxsb2NhdGVUZXh0dXJlKGNvbnRleHQsIG1fdG9rZW4pOworICAgIGNvbnRleHQt
PmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVJZCk7
Cit9CisKK3ZvaWQgTWFuYWdlZFRleHR1cmU6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0KQoreworICAgIEFTU0VSVChtX3RleHR1cmVNYW5hZ2VyLT5oYXNU
ZXh0dXJlKG1fdG9rZW4pKTsKKyAgICBBU1NFUlQoY29udGV4dCA9PSBtX3RleHR1cmVNYW5hZ2Vy
LT5hc3NvY2lhdGVkQ29udGV4dERlYnVnT25seSgpKTsKKyAgICBpZiAoIW1fdGV4dHVyZUlkKQor
ICAgICAgICBtX3RleHR1cmVJZCA9IG1fdGV4dHVyZU1hbmFnZXItPmFsbG9jYXRlVGV4dHVyZShj
b250ZXh0LCBtX3Rva2VuKTsKKyAgICBjb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRB
Q0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZUlkLCAwKTsK
K30KKworfQorCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2Vk
VGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFu
YWdlZFRleHR1cmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjdjMjJlOTAyNWVmODk3YjE3OGY4NjRhYjMzMjk5
NmYzZTNlZTdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaApAQCAtMCwwICsxLDc2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBNYW5hZ2VkVGV4dHVyZV9oCisjZGVmaW5lIE1hbmFnZWRUZXh0dXJl
X2gKKworI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgor
CisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKK2Ns
YXNzIFRleHR1cmVNYW5hZ2VyOworCitjbGFzcyBNYW5hZ2VkVGV4dHVyZSB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoTWFuYWdlZFRleHR1cmUpOworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
T3duUHRyPE1hbmFnZWRUZXh0dXJlPiBjcmVhdGUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE1hbmFnZWRUZXh0dXJlKG1hbmFnZXIp
KTsKKyAgICB9CisgICAgfk1hbmFnZWRUZXh0dXJlKCk7CisKKyAgICB1bnNpZ25lZCBmb3JtYXQo
KSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQorICAgIGJvb2wgaXNWYWxpZChjb25zdCBJbnRT
aXplJiwgdW5zaWduZWQgZm9ybWF0KTsKKyAgICBib29sIHJlc2VydmUoY29uc3QgSW50U2l6ZSYs
IHVuc2lnbmVkIGZvcm1hdCk7CisgICAgdm9pZCB1bnJlc2VydmUoKTsKKyAgICBib29sIGlzUmVz
ZXJ2ZWQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdGV4dHVyZU1hbmFnZXIpOworICAgICAg
ICByZXR1cm4gbV90ZXh0dXJlTWFuYWdlci0+aXNQcm90ZWN0ZWQobV90b2tlbik7CisgICAgfQor
CisgICAgdm9pZCBiaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCopOworICAgIHZvaWQgZnJh
bWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0QqKTsKKworcHJpdmF0ZToKKyAgICBl
eHBsaWNpdCBNYW5hZ2VkVGV4dHVyZShUZXh0dXJlTWFuYWdlciopOworCisgICAgVGV4dHVyZU1h
bmFnZXIqIG1fdGV4dHVyZU1hbmFnZXI7CisgICAgVGV4dHVyZVRva2VuIG1fdG9rZW47CisgICAg
SW50U2l6ZSBtX3NpemU7CisgICAgdW5zaWduZWQgbV9mb3JtYXQ7CisgICAgdW5zaWduZWQgbV90
ZXh0dXJlSWQ7Cit9OworCit9CisKKyNlbmRpZiAvLyBNYW5hZ2VkVGV4dHVyZV9oCisKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1
cmZhY2VDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgKaW5kZXggYzM0ZWRhZTFhZjdmZWQ4ZDVjODI5YTU0
NzJiMTM3ODIzM2VlNDYyOS4uNTFiZGNmYTUxMTljZjI2Y2ZiMDZkMmJmMWU4YmUxNmExOTdjNDVk
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
UmVuZGVyU3VyZmFjZUNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgKQEAgLTQxLDcgKzQxLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBMYXllckNocm9taXVtOwogY2xhc3MgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOwotY2xhc3MgTGF5ZXJUZXh0dXJlOworY2xhc3MgTWFuYWdlZFRleHR1
cmU7CiAKIGNsYXNzIFJlbmRlclN1cmZhY2VDaHJvbWl1bSB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoUmVuZGVyU3VyZmFjZUNocm9taXVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcAppbmRl
eCA5ZTRlYTI4Njc4Y2JmNmFjYTBkMTNlMWJhMDJjNTFlNDE4NmUyNjM3Li41ODFkMGI0NTdiYzc1
ZTE2ZTVjOGEwY2IwNDNiY2RmNjg2MWE2OTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwCkBA
IC0zOCw5ICszOCw4IEBAIHN0YXRpYyBzaXplX3QgbWVtb3J5VXNlQnl0ZXMoSW50U2l6ZSBzaXpl
LCB1bnNpZ25lZCB0ZXh0dXJlRm9ybWF0KQogICAgIHJldHVybiBzaXplLndpZHRoKCkgKiBzaXpl
LmhlaWdodCgpICogNDsKIH0KIAotVGV4dHVyZU1hbmFnZXI6OlRleHR1cmVNYW5hZ2VyKEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBzaXplX3QgbWVtb3J5TGltaXRCeXRlcywgaW50IG1heFRl
eHR1cmVTaXplKQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX21lbW9yeUxpbWl0
Qnl0ZXMobWVtb3J5TGltaXRCeXRlcykKK1RleHR1cmVNYW5hZ2VyOjpUZXh0dXJlTWFuYWdlcihz
aXplX3QgbWVtb3J5TGltaXRCeXRlcywgaW50IG1heFRleHR1cmVTaXplKQorICAgIDogbV9tZW1v
cnlMaW1pdEJ5dGVzKG1lbW9yeUxpbWl0Qnl0ZXMpCiAgICAgLCBtX21lbW9yeVVzZUJ5dGVzKDAp
CiAgICAgLCBtX21heFRleHR1cmVTaXplKG1heFRleHR1cmVTaXplKQogICAgICwgbV9uZXh0VG9r
ZW4oMSkKQEAgLTEzMiw2ICsxMzEsMTQgQEAgdm9pZCBUZXh0dXJlTWFuYWdlcjo6YWRkVGV4dHVy
ZShUZXh0dXJlVG9rZW4gdG9rZW4sIFRleHR1cmVJbmZvIGluZm8pCiAgICAgbV90ZXh0dXJlTFJV
U2V0LmFkZCh0b2tlbik7CiB9CiAKK3ZvaWQgVGV4dHVyZU1hbmFnZXI6OmRlbGV0ZUV2aWN0ZWRU
ZXh0dXJlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKK3sKKyAgICBBU1NFUlQoY29udGV4
dCA9PSBtX2Fzc29jaWF0ZWRDb250ZXh0RGVidWdPbmx5KTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fZXZpY3RlZFRleHR1cmVJZHMuc2l6ZSgpOyArK2kpCisgICAgICAgIEdMQyhjb250
ZXh0LCBjb250ZXh0LT5kZWxldGVUZXh0dXJlKG1fZXZpY3RlZFRleHR1cmVJZHNbaV0pKTsKKyAg
ICBtX2V2aWN0ZWRUZXh0dXJlSWRzLmNsZWFyKCk7Cit9CisKIHZvaWQgVGV4dHVyZU1hbmFnZXI6
OnJlbW92ZVRleHR1cmUoVGV4dHVyZVRva2VuIHRva2VuLCBUZXh0dXJlSW5mbyBpbmZvKQogewog
ICAgIEFTU0VSVChtX3RleHR1cmVMUlVTZXQuY29udGFpbnModG9rZW4pKTsKQEAgLTE0MCwxMyAr
MTQ3LDM1IEBAIHZvaWQgVGV4dHVyZU1hbmFnZXI6OnJlbW92ZVRleHR1cmUoVGV4dHVyZVRva2Vu
IHRva2VuLCBUZXh0dXJlSW5mbyBpbmZvKQogICAgIG1fdGV4dHVyZXMucmVtb3ZlKHRva2VuKTsK
ICAgICBBU1NFUlQobV90ZXh0dXJlTFJVU2V0LmNvbnRhaW5zKHRva2VuKSk7CiAgICAgbV90ZXh0
dXJlTFJVU2V0LnJlbW92ZSh0b2tlbik7Ci0gICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250
ZXh0LT5kZWxldGVUZXh0dXJlKGluZm8udGV4dHVyZUlkKSk7CisgICAgbV9ldmljdGVkVGV4dHVy
ZUlkcy5hcHBlbmQoaW5mby50ZXh0dXJlSWQpOworfQorCit1bnNpZ25lZCBUZXh0dXJlTWFuYWdl
cjo6YWxsb2NhdGVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlVG9r
ZW4gdG9rZW4pCit7CisgICAgQVNTRVJUKGNvbnRleHQgPT0gbV9hc3NvY2lhdGVkQ29udGV4dERl
YnVnT25seSk7CisgICAgVGV4dHVyZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3RleHR1cmVzLmZpbmQo
dG9rZW4pOworICAgIEFTU0VSVChpdCAhPSBtX3RleHR1cmVzLmVuZCgpKTsKKyAgICBUZXh0dXJl
SW5mbyogaW5mbyA9ICZpdC5nZXQoKS0+c2Vjb25kOworICAgIEFTU0VSVChpbmZvLT5pc1Byb3Rl
Y3RlZCk7CisKKyAgICB1bnNpZ25lZCB0ZXh0dXJlSWQ7CisgICAgR0xDKGNvbnRleHQsIHRleHR1
cmVJZCA9IGNvbnRleHQtPmNyZWF0ZVRleHR1cmUoKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRl
eHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlSWQp
KTsKKyAgICAvLyBEbyBiYXNpYyBsaW5lYXIgZmlsdGVyaW5nIG9uIHJlc2l6ZS4KKyAgICBHTEMo
Y29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250
ZXh0M0Q6OkxJTkVBUikpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJp
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7CisgICAgLy8gTlBPVCB0
ZXh0dXJlcyBpbiBHTCBFUyBvbmx5IHdvcmsgd2hlbiB0aGUgd3JhcCBtb2RlIGlzIHNldCB0byBH
cmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRS4KKyAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURH
RSkpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdy
YXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRl
eHQtPnRleEltYWdlMkRSZXNvdXJjZVNhZmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IDAsIGluZm8tPmZvcm1hdCwgaW5mby0+c2l6ZS53aWR0aCgpLCBpbmZvLT5zaXplLmhlaWdodCgp
LCAwLCBpbmZvLT5mb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFKSk7Cisg
ICAgaW5mby0+dGV4dHVyZUlkID0gdGV4dHVyZUlkOworICAgIHJldHVybiB0ZXh0dXJlSWQ7CiB9
CiAKLXVuc2lnbmVkIFRleHR1cmVNYW5hZ2VyOjpyZXF1ZXN0VGV4dHVyZShUZXh0dXJlVG9rZW4g
dG9rZW4sIEludFNpemUgc2l6ZSwgdW5zaWduZWQgZm9ybWF0KQorYm9vbCBUZXh0dXJlTWFuYWdl
cjo6cmVxdWVzdFRleHR1cmUoVGV4dHVyZVRva2VuIHRva2VuLCBJbnRTaXplIHNpemUsIHVuc2ln
bmVkIGZvcm1hdCkKIHsKICAgICBpZiAoc2l6ZS53aWR0aCgpID4gbV9tYXhUZXh0dXJlU2l6ZSB8
fCBzaXplLmhlaWdodCgpID4gbV9tYXhUZXh0dXJlU2l6ZSkKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFRleHR1cmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV90
ZXh0dXJlcy5maW5kKHRva2VuKTsKICAgICBpZiAoaXQgIT0gbV90ZXh0dXJlcy5lbmQoKSkgewpA
QCAtMTU2LDI5ICsxODUsMTkgQEAgdW5zaWduZWQgVGV4dHVyZU1hbmFnZXI6OnJlcXVlc3RUZXh0
dXJlKFRleHR1cmVUb2tlbiB0b2tlbiwgSW50U2l6ZSBzaXplLCB1bnNpZ24KIAogICAgIHNpemVf
dCBtZW1vcnlSZXF1aXJlZEJ5dGVzID0gbWVtb3J5VXNlQnl0ZXMoc2l6ZSwgZm9ybWF0KTsKICAg
ICBpZiAobWVtb3J5UmVxdWlyZWRCeXRlcyA+IG1fbWVtb3J5TGltaXRCeXRlcykKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJlZHVjZU1lbW9yeVRvTGlt
aXQobV9tZW1vcnlMaW1pdEJ5dGVzIC0gbWVtb3J5UmVxdWlyZWRCeXRlcyk7CiAgICAgaWYgKG1f
bWVtb3J5VXNlQnl0ZXMgKyBtZW1vcnlSZXF1aXJlZEJ5dGVzID4gbV9tZW1vcnlMaW1pdEJ5dGVz
KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdW5zaWdu
ZWQgdGV4dHVyZUlkOwotICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIHRleHR1cmVJZCA9IG1fY29u
dGV4dC0+Y3JlYXRlVGV4dHVyZSgpKTsKLSAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRl
eHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlSWQp
KTsKLSAgICAvLyBEbyBiYXNpYyBsaW5lYXIgZmlsdGVyaW5nIG9uIHJlc2l6ZS4KLSAgICBHTEMo
bV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdy
YXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKLSAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2Nv
bnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5F
QVIpKTsKLSAgICAvLyBOUE9UIHRleHR1cmVzIGluIEdMIEVTIG9ubHkgd29yayB3aGVuIHRoZSB3
cmFwIG1vZGUgaXMgc2V0IHRvIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFLgotICAg
IEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBH
cmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOwotICAgIEdMQyhtX2NvbnRleHQuZ2V0
KCksIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6
Q0xBTVBfVE9fRURHRSkpOwotICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+dGV4
SW1hZ2UyRFJlc291cmNlU2FmZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZm9y
bWF0LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIDAsIGZvcm1hdCwgR3JhcGhpY3NDb250
ZXh0M0Q6OlVOU0lHTkVEX0JZVEUpKTsKICAgICBUZXh0dXJlSW5mbyBpbmZvOwogICAgIGluZm8u
c2l6ZSA9IHNpemU7CiAgICAgaW5mby5mb3JtYXQgPSBmb3JtYXQ7Ci0gICAgaW5mby50ZXh0dXJl
SWQgPSB0ZXh0dXJlSWQ7CisgICAgaW5mby50ZXh0dXJlSWQgPSAwOwogICAgIGluZm8uaXNQcm90
ZWN0ZWQgPSB0cnVlOwogICAgIGFkZFRleHR1cmUodG9rZW4sIGluZm8pOwotICAgIHJldHVybiB0
ZXh0dXJlSWQ7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oCmlu
ZGV4IGRhNjI4NmU5M2EzZDJlMTVjNDYxNjc2YjhiMmU3NmMwMWYyNzUzM2EuLjkyZjMwOGNhOWQ1
ZTc3ZjNlOGI5OWQ0NTcxMmM4YmU1NDEyNDRkOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuaApAQCAt
NDAsOSArNDAsOSBAQCB0eXBlZGVmIGludCBUZXh0dXJlVG9rZW47CiBjbGFzcyBUZXh0dXJlTWFu
YWdlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGV4dHVyZU1hbmFnZXIpOwogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFRleHR1cmVNYW5hZ2VyPiBjcmVhdGUoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIHNpemVfdCBtZW1vcnlMaW1pdEJ5dGVzLCBpbnQgbWF4VGV4dHVy
ZVNpemUpCisgICAgc3RhdGljIFBhc3NPd25QdHI8VGV4dHVyZU1hbmFnZXI+IGNyZWF0ZShzaXpl
X3QgbWVtb3J5TGltaXRCeXRlcywgaW50IG1heFRleHR1cmVTaXplKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJlTWFuYWdlcihjb250ZXh0LCBtZW1vcnlMaW1pdEJ5
dGVzLCBtYXhUZXh0dXJlU2l6ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRleHR1
cmVNYW5hZ2VyKG1lbW9yeUxpbWl0Qnl0ZXMsIG1heFRleHR1cmVTaXplKSk7CiAgICAgfQogCiAg
ICAgdm9pZCBzZXRNZW1vcnlMaW1pdEJ5dGVzKHNpemVfdCk7CkBAIC01MSwxOCArNTEsMjYgQEAg
cHVibGljOgogICAgIHZvaWQgcmVsZWFzZVRva2VuKFRleHR1cmVUb2tlbik7CiAgICAgYm9vbCBo
YXNUZXh0dXJlKFRleHR1cmVUb2tlbik7CiAKLSAgICB1bnNpZ25lZCByZXF1ZXN0VGV4dHVyZShU
ZXh0dXJlVG9rZW4sIEludFNpemUsIHVuc2lnbmVkIHRleHR1cmVGb3JtYXQpOworICAgIGJvb2wg
cmVxdWVzdFRleHR1cmUoVGV4dHVyZVRva2VuLCBJbnRTaXplLCB1bnNpZ25lZCB0ZXh0dXJlRm9y
bWF0KTsKIAogICAgIHZvaWQgcHJvdGVjdFRleHR1cmUoVGV4dHVyZVRva2VuKTsKICAgICB2b2lk
IHVucHJvdGVjdFRleHR1cmUoVGV4dHVyZVRva2VuKTsKICAgICB2b2lkIHVucHJvdGVjdEFsbFRl
eHR1cmVzKCk7CiAgICAgYm9vbCBpc1Byb3RlY3RlZChUZXh0dXJlVG9rZW4pOwogCisgICAgdW5z
aWduZWQgYWxsb2NhdGVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZVRva2VuKTsK
KyAgICB2b2lkIGRlbGV0ZUV2aWN0ZWRUZXh0dXJlcyhHcmFwaGljc0NvbnRleHQzRCopOworCiAg
ICAgdm9pZCByZWR1Y2VNZW1vcnlUb0xpbWl0KHNpemVfdCk7CiAgICAgc2l6ZV90IGN1cnJlbnRN
ZW1vcnlVc2VCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5VXNlQnl0ZXM7IH0KIAorI2lm
bmRlZiBOREVCVUcKKyAgICB2b2lkIHNldEFzc29jaWF0ZWRDb250ZXh0RGVidWdPbmx5KEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0KSB7IG1fYXNzb2NpYXRlZENvbnRleHREZWJ1Z09ubHkgPSBj
b250ZXh0OyB9CisgICAgR3JhcGhpY3NDb250ZXh0M0QqIGFzc29jaWF0ZWRDb250ZXh0RGVidWdP
bmx5KCkgY29uc3QgeyByZXR1cm4gbV9hc3NvY2lhdGVkQ29udGV4dERlYnVnT25seTsgfQorI2Vu
ZGlmCisKIHByaXZhdGU6Ci0gICAgVGV4dHVyZU1hbmFnZXIoR3JhcGhpY3NDb250ZXh0M0QqLCBz
aXplX3QgbWVtb3J5TGltaXRCeXRlcywgaW50IG1heFRleHR1cmVTaXplKTsKKyAgICBUZXh0dXJl
TWFuYWdlcihzaXplX3QgbWVtb3J5TGltaXRCeXRlcywgaW50IG1heFRleHR1cmVTaXplKTsKIAog
ICAgIHN0cnVjdCBUZXh0dXJlSW5mbyB7CiAgICAgICAgIEludFNpemUgc2l6ZTsKQEAgLTc0LDgg
KzgyLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFRleHR1cmUoVGV4dHVyZVRva2VuLCBUZXh0
dXJlSW5mbyk7CiAgICAgdm9pZCByZW1vdmVUZXh0dXJlKFRleHR1cmVUb2tlbiwgVGV4dHVyZUlu
Zm8pOwogCi0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7Ci0KICAgICB0
eXBlZGVmIEhhc2hNYXA8VGV4dHVyZVRva2VuLCBUZXh0dXJlSW5mbz4gVGV4dHVyZU1hcDsKICAg
ICBUZXh0dXJlTWFwIG1fdGV4dHVyZXM7CiAgICAgTGlzdEhhc2hTZXQ8VGV4dHVyZVRva2VuPiBt
X3RleHR1cmVMUlVTZXQ7CkBAIC04NCw2ICs5MCwxMiBAQCBwcml2YXRlOgogICAgIHNpemVfdCBt
X21lbW9yeVVzZUJ5dGVzOwogICAgIGludCBtX21heFRleHR1cmVTaXplOwogICAgIFRleHR1cmVU
b2tlbiBtX25leHRUb2tlbjsKKworI2lmbmRlZiBOREVCVUcKKyAgICBHcmFwaGljc0NvbnRleHQz
RCogbV9hc3NvY2lhdGVkQ29udGV4dERlYnVnT25seTsKKyNlbmRpZgorCisgICAgVmVjdG9yPHVu
c2lnbmVkPiBtX2V2aWN0ZWRUZXh0dXJlSWRzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hy
b21pdW0uaAppbmRleCAyZjQzNjliNjQwMzgzODUxNzBjNzcxNDMyZmQ3YTFlYzI3MjJjZjk3Li5l
NjJlY2M3YjFjMDY4YTcwYzBmMDNjZTBmYzY1ZjNhNDU4ODk4ZDYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExh
eWVyQ2hyb21pdW0uaApAQCAtMzMsNyArMzMsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIExheWVyVGV4dHVyZTsKIGNsYXNzIExheWVyVGlsZXJDaHJvbWl1bTsKIGNsYXNzIExh
eWVyVGV4dHVyZVVwZGF0ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKaW5k
ZXggN2YyY2VjNzc4NWNmMGYwZTBmMWFkM2Q0MTMzNTRjODM5MzZhMTVmYy4uYWUzM2Q1OTU3M2Y1
NzI1YTA1MzhiYTU5YjI0NmJjYzQyODI0YjkzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlz
cGxheS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5o
IgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hy
b21pdW0uaCIKLSNpbmNsdWRlICJMYXllclRleHR1cmUuaCIKKyNpbmNsdWRlICJNYW5hZ2VkVGV4
dHVyZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ2FudmFzLmgiCiAjaW5jbHVkZSAiVGV4dFJ1bi5o
IgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBDQ0hlYWRz
VXBEaXNwbGF5OjpkcmF3KCkKIHsKICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IG1f
bGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpOwogICAgIGlmICghbV9odWRUZXh0dXJlKQotICAgICAg
ICBtX2h1ZFRleHR1cmUgPSBMYXllclRleHR1cmU6OmNyZWF0ZShjb250ZXh0LCBtX2xheWVyUmVu
ZGVyZXItPnJlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcigpKTsKKyAgICAgICAgbV9odWRUZXh0
dXJlID0gTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShtX2xheWVyUmVuZGVyZXItPnJlbmRlclN1cmZh
Y2VUZXh0dXJlTWFuYWdlcigpKTsKIAogICAgIC8vIFVzZSBhIGZ1bGxzY3JlZW4gdGV4dHVyZSBv
bmx5IGlmIHdlIG5lZWQgdG8uLi4KICAgICBJbnRTaXplIGh1ZFNpemU7CkBAIC0xMTAsNyArMTEw
LDcgQEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KCkKICAgICB7CiAgICAgICAgIFBsYXRm
b3JtQ2FudmFzOjpBdXRvTG9ja2VyIGxvY2tlcigmY2FudmFzKTsKIAotICAgICAgICBtX2h1ZFRl
eHR1cmUtPmJpbmRUZXh0dXJlKCk7CisgICAgICAgIG1faHVkVGV4dHVyZS0+YmluZFRleHR1cmUo
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgdXBsb2FkZWRWaWFNYXAgPSBmYWxzZTsKICAgICAgICAg
aWYgKG1fdXNlTWFwU3ViRm9yVXBsb2FkcykgewogICAgICAgICAgICAgRXh0ZW5zaW9uczNEQ2hy
b21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBDQ0hlYWRz
VXBEaXNwbGF5OjpkcmF3KCkKICAgICBjb25zdCBQcm9ncmFtKiBwcm9ncmFtID0gbV9sYXllclJl
bmRlcmVyLT5oZWFkc1VwRGlzcGxheVByb2dyYW0oKTsKICAgICBBU1NFUlQocHJvZ3JhbSAmJiBw
cm9ncmFtLT5pbml0aWFsaXplZCgpKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YWN0aXZl
VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsKLSAgICBtX2h1ZFRleHR1cmUt
PmJpbmRUZXh0dXJlKCk7CisgICAgbV9odWRUZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0KTsK
ICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkp
KTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50
U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlz
cGxheS5oCmluZGV4IGYwNDMzMTdmNTVmZDk3YzFiZmY2MmFlZmZhYWIyZDAwNjIyMGI0ZGEuLjhh
YTg0ZDg1NDM4NDEzNjhlMzZlODc5NmQ5YWY4NDdiZDljY2U0OGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hl
YWRzVXBEaXNwbGF5LmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgR2VvbWV0cnlCaW5kaW5nOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBMYXll
clJlbmRlcmVyQ2hyb21pdW07Ci1jbGFzcyBMYXllclRleHR1cmU7CitjbGFzcyBNYW5hZ2VkVGV4
dHVyZTsKIAogLy8gQ2xhc3MgdGhhdCBoYW5kbGVzIGRyYXdpbmcgb2YgY29tcG9zaXRlZCByZW5k
ZXIgbGF5ZXJzIHVzaW5nIEdMLgogY2xhc3MgQ0NIZWFkc1VwRGlzcGxheSB7CkBAIC03Niw3ICs3
Niw3IEBAIHByaXZhdGU6CiAKICAgICBkb3VibGUgbV9maWx0ZXJlZEZyYW1lVGltZTsKIAotICAg
IE93blB0cjxMYXllclRleHR1cmU+IG1faHVkVGV4dHVyZTsKKyAgICBPd25QdHI8TWFuYWdlZFRl
eHR1cmU+IG1faHVkVGV4dHVyZTsKIAogICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bSogbV9sYXll
clJlbmRlcmVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAppbmRleCBjMDYwYmNj
Mjg4Y2RiMDlmNjNmZTQ1YTRlNDdiNDI2ZTQ0Yjc0MzI0Li5mZjI5YWM2MzdlYzZlYzAyOGE2ZWEz
NDQwM2IzZWYxMjQwZTcyNDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKQEAg
LTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUg
IkxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKLSNp
bmNsdWRlICJMYXllclRleHR1cmUuaCIKKyNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2lu
Y2x1ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTg1LDcgKzg1LDcgQEAgYm9vbCBDQ1JlbmRlclN1
cmZhY2U6OnByZXBhcmVDb250ZW50c1RleHR1cmUoKQogICAgIFRleHR1cmVNYW5hZ2VyKiB0ZXh0
dXJlTWFuYWdlciA9IGxheWVyUmVuZGVyZXIoKS0+cmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2Vy
KCk7CiAKICAgICBpZiAoIW1fY29udGVudHNUZXh0dXJlKQotICAgICAgICBtX2NvbnRlbnRzVGV4
dHVyZSA9IExheWVyVGV4dHVyZTo6Y3JlYXRlKGxheWVyUmVuZGVyZXIoKS0+Y29udGV4dCgpLCB0
ZXh0dXJlTWFuYWdlcik7CisgICAgICAgIG1fY29udGVudHNUZXh0dXJlID0gTWFuYWdlZFRleHR1
cmU6OmNyZWF0ZSh0ZXh0dXJlTWFuYWdlcik7CiAKICAgICBpZiAobV9jb250ZW50c1RleHR1cmUt
PmlzUmVzZXJ2ZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMjMsNyArMTIzLDcgQEAg
dm9pZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdTdXJmYWNlKENDTGF5ZXJJbXBsKiBtYXNrTGF5ZXIs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWEKICAgICAgICAgICAgIEdMQyhjb250ZXh0M0QsIGNvbnRl
eHQzRC0+dXNlUHJvZ3JhbShtYXNrUHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CiAgICAgICAgICAgICBH
TEMoY29udGV4dDNELCBjb250ZXh0M0QtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkUwKSk7CiAgICAgICAgICAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPnVuaWZv
cm0xaShtYXNrUHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkp
OwotICAgICAgICAgICAgbV9jb250ZW50c1RleHR1cmUtPmJpbmRUZXh0dXJlKCk7CisgICAgICAg
ICAgICBtX2NvbnRlbnRzVGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dDNEKTsKICAgICAgICAg
ICAgIEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRTEpKTsKICAgICAgICAgICAgIEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+
dW5pZm9ybTFpKG1hc2tQcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLm1hc2tTYW1wbGVyTG9jYXRp
b24oKSwgMSkpOwogICAgICAgICAgICAgbWFza0xheWVyLT5iaW5kQ29udGVudHNUZXh0dXJlKCk7
CkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdTdXJmYWNlKEND
TGF5ZXJJbXBsKiBtYXNrTGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWEKIAogICAgIGlmICgh
dXNlTWFzaykgewogICAgICAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPnVzZVByb2dyYW0o
cHJvZ3JhbS0+cHJvZ3JhbSgpKSk7Ci0gICAgICAgIG1fY29udGVudHNUZXh0dXJlLT5iaW5kVGV4
dHVyZSgpOworICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dDNE
KTsKICAgICAgICAgR0xDKGNvbnRleHQzRCwgY29udGV4dDNELT51bmlmb3JtMWkocHJvZ3JhbS0+
ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOwogICAgICAgICBzaGFkZXJN
YXRyaXhMb2NhdGlvbiA9IHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCk7
CiAgICAgICAgIHNoYWRlckFscGhhTG9jYXRpb24gPSBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigp
LmFscGhhTG9jYXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgKaW5kZXggOTc3MjZk
Yjc4MjBkZWI1Yjg5ZTYyMmQyNDE0YWZlOGUxOWIxZTcxYS4uYTdmYjViMmY5ZmU0MzdjYTBjNzFh
ZmRmYWU1OTRmMTViYTE2ZGVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgKQEAgLTQx
LDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0xheWVySW1wbDsKIGNs
YXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKLWNsYXNzIExheWVyVGV4dHVyZTsKK2NsYXNzIE1h
bmFnZWRUZXh0dXJlOwogCiBjbGFzcyBDQ1JlbmRlclN1cmZhY2UgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKENDUmVuZGVyU3VyZmFjZSk7CkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAg
ICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleCwgRnJhZ21lbnRTaGFk
ZXJSR0JBVGV4QWxwaGE+IFByb2dyYW07CiAgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0
ZXhTaGFkZXJQb3NUZXgsIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzaz4gTWFza1Byb2dy
YW07CiAKLSAgICBMYXllclRleHR1cmUqIGNvbnRlbnRzVGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGVudHNUZXh0dXJlLmdldCgpOyB9CisgICAgTWFuYWdlZFRleHR1cmUqIGNvbnRlbnRz
VGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNUZXh0dXJlLmdldCgpOyB9CiAKICAg
ICBpbnQgb3duaW5nTGF5ZXJJZCgpIGNvbnN0OwogcHJpdmF0ZToKQEAgLTEwNCw3ICsxMDQsNyBA
QCBwcml2YXRlOgogICAgIEludFJlY3QgbV9jb250ZW50UmVjdDsKICAgICBib29sIG1fc2tpcHNE
cmF3OwogCi0gICAgT3duUHRyPExheWVyVGV4dHVyZT4gbV9jb250ZW50c1RleHR1cmU7CisgICAg
T3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX2NvbnRlbnRzVGV4dHVyZTsKICAgICBmbG9hdCBtX2Ry
YXdPcGFjaXR5OwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fZHJhd1RyYW5zZm9ybTsKICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3JlcGxpY2FEcmF3VHJhbnNmb3JtOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExh
eWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAppbmRleCBmYzEwM2VhZGNhYjJlOWZhM2EwMDY3NGVmY2Jk
ZDNiMGRkZDE1ODAxLi4xNzNjNDkxMTU1NTE4YWUyODZmNDI0Yjc1ZTJlNGRlZjBmNzU3YTIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RpbGVkTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcApAQCAtMjksMTEgKzI5LDEzIEBACiAK
ICNpbmNsdWRlICJjYy9DQ1RpbGVkTGF5ZXJJbXBsLmgiCiAKKyNpbmNsdWRlICJMYXllclJlbmRl
cmVyQ2hyb21pdW0uaCIKKwogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIExheWVyVGV4dHVyZTsKK2NsYXNzIE1hbmFnZWRUZXh0
dXJlOwogCiBDQ1RpbGVkTGF5ZXJJbXBsOjpDQ1RpbGVkTGF5ZXJJbXBsKGludCBpZCkKICAgICA6
IENDTGF5ZXJJbXBsKGlkKQpAQCAtNTcsMTAgKzU5LDEwIEBAIHZvaWQgQ0NUaWxlZExheWVySW1w
bDo6YmluZENvbnRlbnRzVGV4dHVyZSgpCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IHZh
bGlkIGZvciBzaW5nbGUgdGV4dHVyZSBsYXllcnMsIGUuZy4gbWFza3MuCiAgICAgQVNTRVJUKG1f
dGlsZXIpOwogCi0gICAgTGF5ZXJUZXh0dXJlKiB0ZXh0dXJlID0gbV90aWxlci0+Z2V0U2luZ2xl
VGV4dHVyZSgpOworICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlID0gbV90aWxlci0+Z2V0U2lu
Z2xlVGV4dHVyZSgpOwogICAgIEFTU0VSVCh0ZXh0dXJlKTsKIAotICAgIHRleHR1cmUtPmJpbmRU
ZXh0dXJlKCk7CisgICAgdGV4dHVyZS0+YmluZFRleHR1cmUobGF5ZXJSZW5kZXJlcigpLT5jb250
ZXh0KCkpOwogfQogCiB2b2lkIENDVGlsZWRMYXllckltcGw6OmR1bXBMYXllclByb3BlcnRpZXMo
VGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNvbnN0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>