<?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>173832</bug_id>
          
          <creation_ts>2017-06-26 07:52:29 -0700</creation_ts>
          <short_desc>Refactor drag start codepaths to plumb a DragItem to client layers</short_desc>
          <delta_ts>2017-06-27 12:12:07 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>japhet</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1322832</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-06-26 07:52:29 -0700</bug_when>
    <thetext>Work towards &lt;rdar://problem/32236827&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322844</commentid>
    <comment_count>1</comment_count>
      <attachid>313841</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-06-26 08:32:09 -0700</bug_when>
    <thetext>Created attachment 313841
First pass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322928</commentid>
    <comment_count>2</comment_count>
      <attachid>313858</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-06-26 11:56:34 -0700</bug_when>
    <thetext>Created attachment 313858
Attempt to fix Windows build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1323091</commentid>
    <comment_count>3</comment_count>
      <attachid>313858</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-27 00:08:26 -0700</bug_when>
    <thetext>Comment on attachment 313858
Attempt to fix Windows build

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

It&apos;s a bit scary to expose DragItem like this to WebKit/WebKit2 but I guess there isn&apos;t a good alternative here.
r=me.

&gt; Source/WebKit2/Shared/WebCoreArgumentCoders.h:541
&gt; +#if ENABLE(DRAG_SUPPORT)
&gt; +template&lt;&gt; struct ArgumentCoder&lt;WebCore::DragItem&gt; {

Modern coding style is to implement encode/decode in WebCore right next to the actual data type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1323094</commentid>
    <comment_count>4</comment_count>
      <attachid>313858</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-27 00:19:10 -0700</bug_when>
    <thetext>Comment on attachment 313858
Attempt to fix Windows build

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

&gt; Source/WebKit2/Shared/WebCoreArgumentCoders.cpp:2235
&gt; +    encoder &lt;&lt; hasIndicatorData;
&gt; +    if (hasIndicatorData)
&gt; +        encoder &lt;&lt; item.image.indicatorData().value();

It&apos;s a bit strange to not include the image data but only the indicator data.
We should probably add a FIXME here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1323163</commentid>
    <comment_count>5</comment_count>
      <attachid>313925</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-06-27 10:26:33 -0700</bug_when>
    <thetext>Created attachment 313925
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1323165</commentid>
    <comment_count>6</comment_count>
      <attachid>313858</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-06-27 10:28:25 -0700</bug_when>
    <thetext>Comment on attachment 313858
Attempt to fix Windows build

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

&gt;&gt; Source/WebKit2/Shared/WebCoreArgumentCoders.cpp:2235
&gt;&gt; +        encoder &lt;&lt; item.image.indicatorData().value();
&gt; 
&gt; It&apos;s a bit strange to not include the image data but only the indicator data.
&gt; We should probably add a FIXME here.

I added a FIXME earlier in this function that references wkbug.com/173815, which tracks the rest of the DragItems refactoring.

&gt;&gt; Source/WebKit2/Shared/WebCoreArgumentCoders.h:541
&gt;&gt; +template&lt;&gt; struct ArgumentCoder&lt;WebCore::DragItem&gt; {
&gt; 
&gt; Modern coding style is to implement encode/decode in WebCore right next to the actual data type.

Got it -- fixed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1323195</commentid>
    <comment_count>7</comment_count>
      <attachid>313925</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-06-27 12:11:55 -0700</bug_when>
    <thetext>Comment on attachment 313925
Patch for landing

Committed r218837: &lt;http://trac.webkit.org/changeset/218837&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313841</attachid>
            <date>2017-06-26 08:32:09 -0700</date>
            <delta_ts>2017-06-26 11:56:33 -0700</delta_ts>
            <desc>First pass</desc>
            <filename>bug-173832-20170626083209.patch</filename>
            <type>text/plain</type>
            <size>50328</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjEyYmVlZDBjMmRmYjFh
ZmQzYzg1NGVkNDc5ODFlYzVhY2I3ODE2ZS4uNmNhNWRjMjMwZTJhOTFhNjc1ZDE3MWFhNWVkYWU5
MzAxZmJhYWM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE3LTA2LTI2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIGRy
YWcgc3RhcnQgY29kZXBhdGhzIHRvIHBsdW1iIGEgRHJhZ0l0ZW0gdG8gY2xpZW50IGxheWVycwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczODMyCisg
ICAgICAgIFdvcmsgdG93YXJkcyA8cmRhcjovL3Byb2JsZW0vMzIyMzY4Mjc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgZHJhZyBzdGFy
dCBsb2dpYyBpbiBXZWJDb3JlIHRvIHNldCB1cCBhIERyYWdJdGVtIGFuZCBwcm9wYWdhdGUgaXQg
dG8gV2ViRHJhZ0NsaWVudC4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgICogcGFnZS9EcmFnQ2xpZW50Lmg6CisgICAg
ICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29u
dHJvbGxlcjo6c3RhcnREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpk
b0ltYWdlRHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZG9TeXN0ZW1E
cmFnKToKKworICAgICAgICBSZWZhY3RvciB0byBwYXNzIGFsb25nIGEgRHJhZ0l0ZW0uIEFsc28s
IHJlbW92ZSB1bnVzZWQgZHJhZyBpbWFnZSBhbmNob3IgY29tcHV0YXRpb24uCisKKyAgICAgICAg
KiBwYWdlL0RyYWdDb250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0ltYWdlLmg6
CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0l0ZW0uaDoKKworICAgICAgICBBZGQgYWRkaXRpb25h
bCBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gYmVnaW4gYSBkcmFnIG9uIGlPUy4KKworICAgICAgICAq
IHBsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
c3RlYm9hcmRXcml0ZXJEYXRhOjppc0VtcHR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkV3JpdGVyRGF0YS5oOgorCiAyMDE3LTA2LTIyICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjE0NzEyKTogSW5maW5pdGUgcmVjdXJzaW9u
IGluIFJlbmRlclRhYmxlOjpsYXlvdXQgaW4gcGFnaW5hdGVkIG1vZGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpp
bmRleCA3YjhhMTcyNTJjYzBmODUxYzJiZTY4YWM2YTE3OTIyNTIzN2M0ZjJjLi45Y2U0MDU4Yjk0
N2JkMjRjMTdkNjkwN2IyYzhiMzUzNmMwMmU3MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjkgQEAKKzIwMTctMDYtMjYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVmYWN0b3IgZHJhZyBzdGFydCBjb2RlcGF0aHMgdG8gcGx1bWIgYSBE
cmFnSXRlbSB0byBjbGllbnQgbGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzM4MzIKKyAgICAgICAgV29yayB0b3dhcmRzIDxyZGFyOi8vcHJv
YmxlbS8zMjIzNjgyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZWZhY3RvciBjb2RlIHVzZWQgdG8gc3RhcnQgYSBkcmFnIGluIFdlYktpdDEgdG8g
cGx1bWIgYSBzaW5nbGUgRHJhZ0l0ZW0gZnJvbSBEcmFnQ29udHJvbGxlciB0byB0aGUgY2xpZW50
IGxheWVyCisgICAgICAgIGluIFdlYkRyYWdDbGllbnQgdGhhdCBjb250YWlucyBhbGwgdGhlIGlu
Zm9ybWF0aW9uIG5lZWRlZCB0byBiZWdpbiBhIGRyYWcuIEFsc28gcmVuYW1lcyBfc2V0RGF0YUlu
dGVyYWN0aW9uRGF0YToKKyAgICAgICAgdG8gX3N0YXJ0RHJhZzogdG8gbWF0Y2ggbG9naWMgdXNl
ZCB0byBzdGFydCBhIGRyYWcgb24gb3RoZXIgcGxhdGZvcm1zLgorCisgICAgICAgIE5vIGJlaGF2
aW9yIGNoYW5nZSAtLSB0aGUgc2FtZSBpbmZvcm1hdGlvbiBzaG91bGQgYmUgcHJvcGFnYXRlZCB0
byBBcHBLaXQgYW5kIFVJS2l0IHdoZW4gYmVnaW5uaW5nIGEgZHJhZywgb25seQorICAgICAgICB0
aHJvdWdoIHRoZSBEcmFnSXRlbSBzdHJ1Y3QuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5t
bToKKyAgICAgICAgKFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyk6CisgICAgICAgIChXZWJEcmFn
Q2xpZW50OjpkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KToKKyAgICAgICAgKFdlYkRyYWdD
bGllbnQ6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbik6CisgICAgICAgIChXZWJEcmFnQ2xp
ZW50OjpiZWdpbkRyYWcpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAg
KC1bV2ViVmlldyBfc3RhcnREcmFnOl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9zZXREYXRhSW50
ZXJhY3Rpb25EYXRhOnRleHRJbmRpY2F0b3I6YXRDbGllbnRQb3NpdGlvbjphbmNob3JQb2ludDph
Y3Rpb246XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaDoK
KwogMjAxNy0wNi0yMiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgTWFrZSBGcmFtZUxvYWRSZXF1ZXN0IGEgbW92ZS1vbmx5IHR5cGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpp
bmRleCAyYTUyZDgyZjE0NDY5YmIxN2ExMzJkMTA2MzRmOTcwY2Y4MDQ1NTBlLi40ODM3YzliNjEz
ODRiYWJkZmU4MWUwNGQ4MjVhNDMzMjMyYTA5OTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTctMDYtMjYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVmYWN0b3IgZHJhZyBzdGFydCBjb2RlcGF0aHMgdG8gcGx1bWIgYSBE
cmFnSXRlbSB0byBjbGllbnQgbGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzM4MzIKKyAgICAgICAgV29yayB0b3dhcmRzIDxyZGFyOi8vcHJv
YmxlbS8zMjIzNjgyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGp1c3QgZm9yIGNoYW5nZXMgdG8gV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnIGJ5
IHB1bGxpbmcgaW5mb3JtYXRpb24gb3V0IG9mIERyYWdJdGVtLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHA6CisgICAgICAgIChXZWJEcmFnQ2xpZW50OjpzdGFy
dERyYWcpOgorCiAyMDE3LTA2LTIyICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4K
IAogICAgICAgICBNYWtlIEZyYW1lTG9hZFJlcXVlc3QgYSBtb3ZlLW9ubHkgdHlwZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IDUzNTNhZjBmY2I3NTM0MTY2M2QxYWM5NThhYTBkOWIxODI5OWI0OTcuLjdhMzdiZDc1
NDkzNWU5MzFiMmQ3MTM3Zjc0YjQ2N2M2NDBhYmZiYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1
NiBAQAorMjAxNy0wNi0yNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
KworICAgICAgICBSZWZhY3RvciBkcmFnIHN0YXJ0IGNvZGVwYXRocyB0byBwbHVtYiBhIERyYWdJ
dGVtIHRvIGNsaWVudCBsYXllcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MzgzMgorICAgICAgICBXb3JrIHRvd2FyZHMgPHJkYXI6Ly9wcm9ibGVt
LzMyMjM2ODI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBzdXBwb3J0IGZvciBzZXJpYWxpemluZyBhIERyYWdJdGVtIG92ZXIgSVBDLiBUaGlz
IGVuY29kZXMgYW5kIGRlY29kZXMgYWxsIG1lbWJlcnMgb2YgRHJhZ0l0ZW0gZXhjZXB0IGZvciB0
aGUKKyAgICAgICAgUGFzdGVib2FyZFdyaXRlckRhdGEgYW5kIHRoZSBEcmFnSW1hZ2UncyBpbWFn
ZS4gVGhlIERyYWdJdGVtIGlzIHNlbnQgb3ZlciB0byB0aGUgVUkgcHJvY2VzcyBpbgorICAgICAg
ICBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcgdmlhIHRoZSBXZWJQYWdlUHJveHk6OnN0YXJ0RHJh
ZyBJUEMgbWVzc2FnZSAocmVuYW1lZCBmcm9tIFdlYlBhZ2VQcm94eTo6c2V0RHJhZ0ltYWdlKQor
ICAgICAgICB3aGljaCBub3cgdGFrZXMgYSBEcmFnSXRlbS4KKworICAgICAgICAqIFNjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAoaGVhZGVyc19mb3JfdHlwZSk6CisgICAgICAg
ICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8RHJhZ0l0ZW0+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PERyYWdJdGVtPjo6ZGVjb2RlKToKKworICAgICAgICBBZGQgZW5jb2RlIGFuZCBkZWNvZGUgc3Vw
cG9ydCBmb3IgRHJhZ0l0ZW0uCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0YXJ0RHJhZyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2V0RHJhZ0ltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAg
IFJlbmFtZSBTZXREcmFnSW1hZ2UgdG8gU3RhcnREcmFnIGFuZCByZWZhY3RvciB0byByZWNlaXZl
IG9ubHkgYSBEcmFnSXRlbSBhbmQgc2hhcmVhYmxlIGJpdG1hcCBoYW5kbGUuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OnN0YXJ0RHJhZyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzdGFydERh
dGFJbnRlcmFjdGlvbldpdGhJbWFnZSk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVuYW1lIHN0YXJ0
RGF0YUludGVyYWN0aW9uV2l0aEltYWdlIHRvIHN0YXJ0RHJhZy4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgX3N0YXJ0RHJhZzppdGVtOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zdGFydERh
dGFJbnRlcmFjdGlvbldpdGhJbWFnZTp3aXRoSW5kaWNhdG9yRGF0YTphdENsaWVudFBvc2l0aW9u
OmFuY2hvclBvaW50OmFjdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdGFy
dERyYWcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldERyYWdJbWFnZSk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcpOgorCiAyMDE3LTA2LTIyICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1MgRG5EXSBbV0sy
XSBFbmFibGUgaW4tYXBwIGRyYWdnaW5nIGZyb20gV0tXZWJWaWV3IG9uIHRoZSBwaG9uZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCBhZGQ0N2I2MWE0ZjY5MjkzZWU2
NTRiMjIyMGI5ZmZhODQ4ZTA5MGVkLi5mYzQ1YjFmNGE4MTAwMDkwNGYwN2I0MDdhNTZiOGU3MGJi
MDkwMDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMTMxLDcg
KzEzMSw3IEBAIGNsYXNzIEVtcHR5RHJhZ0NsaWVudCBmaW5hbCA6IHB1YmxpYyBEcmFnQ2xpZW50
IHsKICAgICB2b2lkIHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5h
dGlvbkFjdGlvbiwgY29uc3QgRHJhZ0RhdGEmKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxQZXJm
b3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uLCBjb25zdCBJbnRQb2ludCYsIERh
dGFUcmFuc2ZlciYpIGZpbmFsIHsgfQogICAgIERyYWdTb3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFj
dGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYpIGZpbmFsIHsgcmV0dXJuIERyYWdTb3Vy
Y2VBY3Rpb25Ob25lOyB9Ci0gICAgdm9pZCBzdGFydERyYWcoRHJhZ0ltYWdlLCBjb25zdCBJbnRQ
b2ludCYsIGNvbnN0IEludFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIERhdGFUcmFuc2ZlciYs
IEZyYW1lJiwgRHJhZ1NvdXJjZUFjdGlvbikgZmluYWwgeyB9CisgICAgdm9pZCBzdGFydERyYWco
RHJhZ0l0ZW0sIERhdGFUcmFuc2ZlciYsIEZyYW1lJikgZmluYWwgeyB9CiAgICAgdm9pZCBkcmFn
Q29udHJvbGxlckRlc3Ryb3llZCgpIGZpbmFsIHsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDbGll
bnQuaAppbmRleCBlY2RlYjdmNDczYzNkOWRiYzUwZDMwZDJiY2Q1NGQxNmVjNzhiMmM4Li5lY2U1
YTkwM2JjMDZlMmE2MjY4ZTIzYTU5Zjk0N2M5YTllY2U0YWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
bGllbnQuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENv
bmNsdWRlRWRpdERyYWcoKSB7IH0KICAgICB2aXJ0dWFsIERyYWdTb3VyY2VBY3Rpb24gZHJhZ1Nv
dXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYgcm9vdFZpZXdQb2ludCkgPSAw
OwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBzdGFydERyYWcoRHJhZ0ltYWdlLCBjb25zdCBJbnRQ
b2ludCYgZHJhZ0ltYWdlT3JpZ2luLCBjb25zdCBJbnRQb2ludCYgZXZlbnRQb3MsIGNvbnN0IEZs
b2F0UG9pbnQmIGRyYWdJbWFnZUFuY2hvciwgRGF0YVRyYW5zZmVyJiwgRnJhbWUmLCBEcmFnU291
cmNlQWN0aW9uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0RHJhZyhEcmFnSXRlbSwgRGF0
YVRyYW5zZmVyJiwgRnJhbWUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYWdFbmRlZCgpIHsg
fQogCiAgICAgdmlydHVhbCB2b2lkIGJlZ2luRHJhZyhEcmFnSXRlbSwgRnJhbWUmLCBjb25zdCBJ
bnRQb2ludCYsIGNvbnN0IEludFBvaW50JiwgRGF0YVRyYW5zZmVyJiwgRHJhZ1NvdXJjZUFjdGlv
bikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IGZmYmU4Zjhi
ZTU5ZTc5MzA5NGEyOTQxZjJlMmYwN2U3ODdlMzgyYWEuLmUwOGRmZWIzMTUyNWFiODZlNThhZTE4
NTY5NWZjMmMwZTM0YjNhNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
CkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiRWRpdGluZy5oIgogI2luY2x1ZGUgIkVkaXRv
ci5oIgogI2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnRBbmNlc3Rv
ckl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRmxvYXRS
ZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgpAQCAtNTIsNiArNTMsNyBAQAog
I2luY2x1ZGUgIkhUTUxBdHRhY2htZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFBh
cnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCiAjaW5jbHVkZSAi
SGl0VGVzdFJlcXVlc3QuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCkBAIC05NjMsNyAr
OTY1LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0
IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24KICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgICAgICBpZiAobXVzdFVzZUxlZ2FjeURyYWdDbGllbnQpIHsKLSAgICAgICAgICAg
IGRvU3lzdGVtRHJhZyhXVEZNb3ZlKGRyYWdJbWFnZSksIGRyYWdMb2MsIGRyYWdPcmlnaW4sIGRy
YWdJbWFnZUJvdW5kcywgZGF0YVRyYW5zZmVyLCBzcmMsIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rp
b24pOworICAgICAgICAgICAgZG9TeXN0ZW1EcmFnKFdURk1vdmUoZHJhZ0ltYWdlKSwgZHJhZ0xv
YywgZHJhZ09yaWdpbiwgc3JjLCBzdGF0ZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQogCkBAIC05OTYsMTAgKzk5OCwxMCBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFy
dERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgog
ICAgICAgICBtX2NsaWVudC53aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFj
dGlvbkltYWdlLCBkcmFnT3JpZ2luLCBkYXRhVHJhbnNmZXIpOwogCiAgICAgICAgIGlmICghZHJh
Z0ltYWdlKQotICAgICAgICAgICAgZG9JbWFnZURyYWcoZWxlbWVudCwgZHJhZ09yaWdpbiwgaGl0
VGVzdFJlc3VsdC5pbWFnZVJlY3QoKSwgZGF0YVRyYW5zZmVyLCBzcmMsIG1fZHJhZ09mZnNldCk7
CisgICAgICAgICAgICBkb0ltYWdlRHJhZyhlbGVtZW50LCBkcmFnT3JpZ2luLCBoaXRUZXN0UmVz
dWx0LmltYWdlUmVjdCgpLCBzcmMsIG1fZHJhZ09mZnNldCwgc3RhdGUpOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIC8vIERIVE1MIGRlZmluZWQgZHJhZyBpbWFnZQotICAgICAgICAgICAg
ZG9TeXN0ZW1EcmFnKFdURk1vdmUoZHJhZ0ltYWdlKSwgZHJhZ0xvYywgZHJhZ09yaWdpbiwgeyB9
LCBkYXRhVHJhbnNmZXIsIHNyYywgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKTsKKyAgICAgICAgICAg
IGRvU3lzdGVtRHJhZyhXVEZNb3ZlKGRyYWdJbWFnZSksIGRyYWdMb2MsIGRyYWdPcmlnaW4sIHNy
Yywgc3RhdGUpOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDUxLDcg
KzEwNTMsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29u
c3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogICAgICAgICB9CiAKICAgICAgICAg
aWYgKG11c3RVc2VMZWdhY3lEcmFnQ2xpZW50KSB7Ci0gICAgICAgICAgICBkb1N5c3RlbURyYWco
V1RGTW92ZShkcmFnSW1hZ2UpLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCB7IH0sIGRhdGFUcmFuc2Zl
ciwgc3JjLCBEcmFnU291cmNlQWN0aW9uTGluayk7CisgICAgICAgICAgICBkb1N5c3RlbURyYWco
V1RGTW92ZShkcmFnSW1hZ2UpLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBzcmMsIHN0YXRlKTsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKQEAgLTExMDIsNyArMTEwNCw3IEBA
IGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3Rh
dGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uCiAgICAgICAgICAgICBkcmFnTG9jID0gZHJhZ0xvY0Zv
clNlbGVjdGlvbkRyYWcoc3JjKTsKICAgICAgICAgICAgIG1fZHJhZ09mZnNldCA9IEludFBvaW50
KGRyYWdPcmlnaW4ueCgpIC0gZHJhZ0xvYy54KCksIGRyYWdPcmlnaW4ueSgpIC0gZHJhZ0xvYy55
KCkpOwogICAgICAgICB9Ci0gICAgICAgIGRvU3lzdGVtRHJhZyhXVEZNb3ZlKGRyYWdJbWFnZSks
IGRyYWdMb2MsIGRyYWdPcmlnaW4sIHsgfSwgZGF0YVRyYW5zZmVyLCBzcmMsIERyYWdTb3VyY2VB
Y3Rpb25BdHRhY2htZW50KTsKKyAgICAgICAgZG9TeXN0ZW1EcmFnKFdURk1vdmUoZHJhZ0ltYWdl
KSwgZHJhZ0xvYywgZHJhZ09yaWdpbiwgc3JjLCBzdGF0ZSk7CiAgICAgICAgIHNyYy5zZWxlY3Rp
b24oKS5zZXRTZWxlY3Rpb24ocHJldmlvdXNTZWxlY3Rpb24pOwogICAgICAgICBzcmMuZWRpdG9y
KCkuc2V0SWdub3JlU2VsZWN0aW9uQ2hhbmdlcyhmYWxzZSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtMTExMiwxNCArMTExNCwxNCBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWco
RnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogICAgIGlm
IChzdGF0ZS50eXBlID09IERyYWdTb3VyY2VBY3Rpb25ESFRNTCAmJiBkcmFnSW1hZ2UpIHsKICAg
ICAgICAgQVNTRVJUKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25ESFRNTCk7
CiAgICAgICAgIG1fY2xpZW50LndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNl
QWN0aW9uREhUTUwsIGRyYWdPcmlnaW4sIGRhdGFUcmFuc2Zlcik7Ci0gICAgICAgIGRvU3lzdGVt
RHJhZyhXVEZNb3ZlKGRyYWdJbWFnZSksIGRyYWdMb2MsIGRyYWdPcmlnaW4sIHsgfSwgZGF0YVRy
YW5zZmVyLCBzcmMsIERyYWdTb3VyY2VBY3Rpb25ESFRNTCk7CisgICAgICAgIGRvU3lzdGVtRHJh
ZyhXVEZNb3ZlKGRyYWdJbWFnZSksIGRyYWdMb2MsIGRyYWdPcmlnaW4sIHNyYywgc3RhdGUpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZv
aWQgRHJhZ0NvbnRyb2xsZXI6OmRvSW1hZ2VEcmFnKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IElu
dFBvaW50JiBkcmFnT3JpZ2luLCBjb25zdCBJbnRSZWN0JiBsYXlvdXRSZWN0LCBEYXRhVHJhbnNm
ZXImIGRhdGFUcmFuc2ZlciwgRnJhbWUmIGZyYW1lLCBJbnRQb2ludCYgZHJhZ0ltYWdlT2Zmc2V0
KQordm9pZCBEcmFnQ29udHJvbGxlcjo6ZG9JbWFnZURyYWcoRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgSW50UG9pbnQmIGRyYWdPcmlnaW4sIGNvbnN0IEludFJlY3QmIGxheW91dFJlY3QsIEZyYW1l
JiBmcmFtZSwgSW50UG9pbnQmIGRyYWdJbWFnZU9mZnNldCwgY29uc3QgRHJhZ1N0YXRlJiBzdGF0
ZSkKIHsKICAgICBJbnRQb2ludCBtb3VzZURvd25Qb2ludCA9IGRyYWdPcmlnaW47CiAgICAgRHJh
Z0ltYWdlIGRyYWdJbWFnZTsKQEAgLTExNjAsNyArMTE2Miw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xs
ZXI6OmRvSW1hZ2VEcmFnKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEludFBvaW50JiBkcmFnT3Jp
Z2luLCBjCiAgICAgICAgIHJldHVybjsKIAogICAgIGRyYWdJbWFnZU9mZnNldCA9IG1vdXNlRG93
blBvaW50ICsgc2NhbGVkT3JpZ2luOwotICAgIGRvU3lzdGVtRHJhZyhXVEZNb3ZlKGRyYWdJbWFn
ZSksIGRyYWdJbWFnZU9mZnNldCwgZHJhZ09yaWdpbiwgZWxlbWVudC5ib3VuZHNJblJvb3RWaWV3
U3BhY2UoKSwgZGF0YVRyYW5zZmVyLCBmcmFtZSwgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKTsKKyAg
ICBkb1N5c3RlbURyYWcoV1RGTW92ZShkcmFnSW1hZ2UpLCBkcmFnSW1hZ2VPZmZzZXQsIGRyYWdP
cmlnaW4sIGZyYW1lLCBzdGF0ZSk7CiB9CiAKIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmJlZ2luRHJh
ZyhEcmFnSXRlbSBkcmFnSXRlbSwgRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRQb2ludCYgbW91c2VE
b3duUG9pbnQsIGNvbnN0IEludFBvaW50JiBtb3VzZURyYWdnZWRQb2ludCwgRGF0YVRyYW5zZmVy
JiBkYXRhVHJhbnNmZXIsIERyYWdTb3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbikKQEAgLTEx
ODcsMjIgKzExODksNDEgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6YmVnaW5EcmFnKERyYWdJdGVt
IGRyYWdJdGVtLCBGcmFtZSYgZnJhbWUsIGNvbnN0IEludFBvaW50JgogICAgIGNsZWFudXBBZnRl
clN5c3RlbURyYWcoKTsKIH0KIAotdm9pZCBEcmFnQ29udHJvbGxlcjo6ZG9TeXN0ZW1EcmFnKERy
YWdJbWFnZSBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGRyYWdMb2MsIGNvbnN0IEludFBvaW50JiBl
dmVudFBvcywgY29uc3QgSW50UmVjdCYgZHJhZ0ltYWdlQm91bmRzLCBEYXRhVHJhbnNmZXImIGRh
dGFUcmFuc2ZlciwgRnJhbWUmIGZyYW1lLCBEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rp
b24pCit2b2lkIERyYWdDb250cm9sbGVyOjpkb1N5c3RlbURyYWcoRHJhZ0ltYWdlIGltYWdlLCBj
b25zdCBJbnRQb2ludCYgZHJhZ0xvYywgY29uc3QgSW50UG9pbnQmIGV2ZW50UG9zLCBGcmFtZSYg
ZnJhbWUsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgRmxvYXRQb2ludCBkcmFnSW1h
Z2VBbmNob3IgPSB7IDAuNSwgMC41IH07Ci0gICAgaWYgKGRyYWdTb3VyY2VBY3Rpb24gPT0gRHJh
Z1NvdXJjZUFjdGlvbkxpbmspCi0gICAgICAgIGRyYWdJbWFnZUFuY2hvci5zZXRZKDEpOwotICAg
IGVsc2UgaWYgKCFkcmFnSW1hZ2VCb3VuZHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGRyYWdJbWFn
ZUFuY2hvci5zZXRYKChldmVudFBvcy54KCkgLSBkcmFnSW1hZ2VCb3VuZHMueCgpKSAvIChmbG9h
dClkcmFnSW1hZ2VCb3VuZHMud2lkdGgoKSk7Ci0gICAgICAgIGRyYWdJbWFnZUFuY2hvci5zZXRZ
KChldmVudFBvcy55KCkgLSBkcmFnSW1hZ2VCb3VuZHMueSgpKSAvIChmbG9hdClkcmFnSW1hZ2VC
b3VuZHMuaGVpZ2h0KCkpOwotICAgIH0KLQogICAgIG1fZGlkSW5pdGlhdGVEcmFnID0gdHJ1ZTsK
ICAgICBtX2RyYWdJbml0aWF0b3IgPSBmcmFtZS5kb2N1bWVudCgpOwogICAgIC8vIFByb3RlY3Qg
dGhpcyBmcmFtZSBhbmQgdmlldywgYXMgYSBsb2FkIG1heSBvY2N1ciBtaWQgZHJhZyBhbmQgYXR0
ZW1wdCB0byB1bmxvYWQgdGhpcyBmcmFtZQogICAgIFJlZjxNYWluRnJhbWU+IGZyYW1lUHJvdGVj
dG9yKG1fcGFnZS5tYWluRnJhbWUoKSk7CiAgICAgUmVmUHRyPEZyYW1lVmlldz4gdmlld1Byb3Rl
Y3RvciA9IGZyYW1lUHJvdGVjdG9yLT52aWV3KCk7Ci0gICAgbV9jbGllbnQuc3RhcnREcmFnKFdU
Rk1vdmUoaW1hZ2UpLCB2aWV3UHJvdGVjdG9yLT5yb290Vmlld1RvQ29udGVudHMoZnJhbWUudmll
dygpLT5jb250ZW50c1RvUm9vdFZpZXcoZHJhZ0xvYykpLCB2aWV3UHJvdGVjdG9yLT5yb290Vmll
d1RvQ29udGVudHMoZnJhbWUudmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcoZXZlbnRQb3MpKSwg
ZHJhZ0ltYWdlQW5jaG9yLCBkYXRhVHJhbnNmZXIsIGZyYW1lUHJvdGVjdG9yLmdldCgpLCBkcmFn
U291cmNlQWN0aW9uKTsKKworICAgIERyYWdJdGVtIGl0ZW07CisgICAgaXRlbS5pbWFnZSA9IFdU
Rk1vdmUoaW1hZ2UpOworICAgIGl0ZW0uc291cmNlQWN0aW9uID0gc3RhdGUudHlwZTsKKyAgICBp
dGVtLmV2ZW50UG9zaXRpb25JbkNvbnRlbnRDb29yZGluYXRlcyA9IHZpZXdQcm90ZWN0b3ItPnJv
b3RWaWV3VG9Db250ZW50cyhmcmFtZS52aWV3KCktPmNvbnRlbnRzVG9Sb290VmlldyhldmVudFBv
cykpOworICAgIGl0ZW0uZHJhZ0xvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXMgPSB2aWV3UHJv
dGVjdG9yLT5yb290Vmlld1RvQ29udGVudHMoZnJhbWUudmlldygpLT5jb250ZW50c1RvUm9vdFZp
ZXcoZHJhZ0xvYykpOworICAgIGl0ZW0uZXZlbnRQb3NpdGlvbkluV2luZG93Q29vcmRpbmF0ZXMg
PSBmcmFtZS52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3coaXRlbS5ldmVudFBvc2l0aW9uSW5Db250
ZW50Q29vcmRpbmF0ZXMpOworICAgIGl0ZW0uZHJhZ0xvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyA9IGZyYW1lLnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhpdGVtLmRyYWdMb2NhdGlvbkluQ29u
dGVudENvb3JkaW5hdGVzKTsKKyAgICBpZiAoYXV0byBlbGVtZW50ID0gc3RhdGUuc291cmNlKSB7
CisgICAgICAgIGl0ZW0uZWxlbWVudEJvdW5kcyA9IGVsZW1lbnQtPmJvdW5kc0luUm9vdFZpZXdT
cGFjZSgpOworICAgICAgICBSZWZQdHI8RWxlbWVudD4gbGluazsKKyAgICAgICAgaWYgKGVsZW1l
bnQtPmlzTGluaygpKQorICAgICAgICAgICAgbGluayA9IGVsZW1lbnQ7CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgZm9yIChhdXRvJiBjdXJyZW50RWxlbWVudCA6IGVsZW1lbnRMaW5lYWdl
KGVsZW1lbnQuZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50Lmlz
TGluaygpKSB7CisgICAgICAgICAgICAgICAgICAgIGxpbmsgPSAmY3VycmVudEVsZW1lbnQ7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBpZiAobGluaykgeworICAgICAgICAgICAgYXV0byB0aXRs
ZUF0dHJpYnV0ZSA9IGxpbmstPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5h
bWVzOjp0aXRsZUF0dHIpOworICAgICAgICAgICAgaXRlbS50aXRsZSA9IHRpdGxlQXR0cmlidXRl
LmlzRW1wdHkoKSA/IGxpbmstPmlubmVyVGV4dCgpIDogdGl0bGVBdHRyaWJ1dGUuc3RyaW5nKCk7
CisgICAgICAgICAgICBpdGVtLnVybCA9IGZyYW1lLmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0
cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhsaW5rLT5nZXRBdHRyaWJ1dGUoSFRNTE5h
bWVzOjpocmVmQXR0cikpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBtX2NsaWVudC5zdGFydERy
YWcoV1RGTW92ZShpdGVtKSwgKnN0YXRlLmRhdGFUcmFuc2ZlciwgZnJhbWVQcm90ZWN0b3IuZ2V0
KCkpOwogICAgIC8vIERyYWdDbGllbnQ6OnN0YXJ0RHJhZyBjYW4gY2F1c2Ugb3VyIFBhZ2UgdG8g
ZGlzcGVhciwgZGVhbGxvY2F0aW5nIHx0aGlzfC4KICAgICBpZiAoIWZyYW1lUHJvdGVjdG9yLT5w
YWdlKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaApp
bmRleCAyZGY2ZjQwZjY3N2ZiNTUzNDQ1ZWVkZGJiMjZkMzY5ZjgzZTlkYjM5Li4yYjBiZWNkM2Ez
YmViOWY3ZmI3MDM5ZmUxOWVlYzI1YTI4ZDlhZDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5oCkBAIC0xMTUsOCArMTE1LDggQEAgc3RydWN0IERyYWdTdGF0ZTsKICAgICAgICAg
dm9pZCBtb3VzZU1vdmVkSW50b0RvY3VtZW50KERvY3VtZW50Kik7CiAgICAgICAgIGJvb2wgc2hv
dWxkVXNlQ2FjaGVkSW1hZ2VGb3JEcmFnSW1hZ2UoY29uc3QgSW1hZ2UmKSBjb25zdDsKIAotICAg
ICAgICB2b2lkIGRvSW1hZ2VEcmFnKEVsZW1lbnQmLCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IElu
dFJlY3QmLCBEYXRhVHJhbnNmZXImLCBGcmFtZSYsIEludFBvaW50Jik7Ci0gICAgICAgIHZvaWQg
ZG9TeXN0ZW1EcmFnKERyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRQb2ludCYs
IGNvbnN0IEludFJlY3QmIGRyYWdJbWFnZUJvdW5kcywgRGF0YVRyYW5zZmVyJiwgRnJhbWUmLCBE
cmFnU291cmNlQWN0aW9uKTsKKyAgICAgICAgdm9pZCBkb0ltYWdlRHJhZyhFbGVtZW50JiwgY29u
c3QgSW50UG9pbnQmLCBjb25zdCBJbnRSZWN0JiwgRnJhbWUmLCBJbnRQb2ludCYsIGNvbnN0IERy
YWdTdGF0ZSYpOworICAgICAgICB2b2lkIGRvU3lzdGVtRHJhZyhEcmFnSW1hZ2UsIGNvbnN0IElu
dFBvaW50JiwgY29uc3QgSW50UG9pbnQmLCBGcmFtZSYsIGNvbnN0IERyYWdTdGF0ZSYpOwogCiAg
ICAgICAgIHZvaWQgYmVnaW5EcmFnKERyYWdJdGVtLCBGcmFtZSYsIGNvbnN0IEludFBvaW50JiBt
b3VzZURvd25Qb2ludCwgY29uc3QgSW50UG9pbnQmIG1vdXNlRHJhZ2dlZFBvaW50LCBEYXRhVHJh
bnNmZXImLCBEcmFnU291cmNlQWN0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRHJhZ0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2Uu
aAppbmRleCBlNjEyMmJiYTVlMmNlZTM5MTM5ZjAzYzAzY2IwYWQ2NzMyMGQ3YTYyLi5hYTE2OTll
NTY4Y2IxMDJlNzkwMjFmMDg1NzllY2I0YjQwNTdkOWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
cmFnSW1hZ2UuaApAQCAtOTcsMTAgKzk3LDEwIEBAIEZsb2F0UG9pbnQgYW5jaG9yUG9pbnRGb3JM
aW5rRHJhZ0ltYWdlKERyYWdJbWFnZVJlZik7CiAKIGNsYXNzIERyYWdJbWFnZSBmaW5hbCB7CiBw
dWJsaWM6Ci0gICAgRHJhZ0ltYWdlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0ltYWdlKCk7
CiAgICAgZXhwbGljaXQgRHJhZ0ltYWdlKERyYWdJbWFnZVJlZik7CiAgICAgRHJhZ0ltYWdlKERy
YWdJbWFnZSYmKTsKLSAgICB+RHJhZ0ltYWdlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgfkRyYWdJ
bWFnZSgpOwogCiAgICAgRHJhZ0ltYWdlJiBvcGVyYXRvcj0oRHJhZ0ltYWdlJiYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSXRlbS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRHJhZ0l0ZW0uaAppbmRleCA4NzEzMWUxMjJmMDdmYTg0MWUwNTkwYWYxOWE5
ZTYyMmJjNDc5M2U3Li4zMDM0MmRiZjc3YjM3ZmMzYWZiNTJkNTVmMzM5OTU0ZWVhZWE1NzFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSXRlbS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJdGVtLmgKQEAgLTI3LDYgKzI3LDggQEAKIAogI2luY2x1
ZGUgIkRyYWdJbWFnZS5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKKyNpbmNsdWRlICJJbnRQ
b2ludC5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkV3JpdGVy
RGF0YS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNyw2ICszOSwxNSBAQCBzdHJ1Y3Qg
RHJhZ0l0ZW0gZmluYWwgewogICAgIC8vIFdoZXJlIHRoZSBpbWFnZSBzaG91bGQgYmUgcG9zaXRp
b25lZCByZWxhdGl2ZSB0byB0aGUgY3Vyc29yLgogICAgIEZsb2F0UG9pbnQgaW1hZ2VBbmNob3JQ
b2ludDsKIAorICAgIERyYWdTb3VyY2VBY3Rpb24gc291cmNlQWN0aW9uIHsgRHJhZ1NvdXJjZUFj
dGlvbk5vbmUgfTsKKyAgICBJbnRQb2ludCBldmVudFBvc2l0aW9uSW5Db250ZW50Q29vcmRpbmF0
ZXM7CisgICAgSW50UG9pbnQgZHJhZ0xvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CisgICAg
SW50UG9pbnQgZXZlbnRQb3NpdGlvbkluV2luZG93Q29vcmRpbmF0ZXM7CisgICAgSW50UG9pbnQg
ZHJhZ0xvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlczsKKyAgICBTdHJpbmcgdGl0bGU7CisgICAg
VVJMIHVybDsKKyAgICBJbnRSZWN0IGVsZW1lbnRCb3VuZHM7CisKICAgICBQYXN0ZWJvYXJkV3Jp
dGVyRGF0YSBkYXRhOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFdyaXRlckRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZFdyaXRlckRhdGEuY3BwCmluZGV4IGE0NWE1MmUxODM0NzhiMDMyZWZmYzMyNTFhOTMwODJj
M2ZhNTBhY2UuLmQwMDYxZTg4Y2VhZmIxYjFlOGU2Yjc0YTQ2MGZlMjUyNmIxMTJiM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5jcHAKQEAg
LTQ4LDEzICs0OCw3IEBAIFBhc3RlYm9hcmRXcml0ZXJEYXRhOjpXZWJDb250ZW50Ojp+V2ViQ29u
dGVudCgpCiAKIGJvb2wgUGFzdGVib2FyZFdyaXRlckRhdGE6OmlzRW1wdHkoKSBjb25zdAogewot
ICAgIGlmIChtX3BsYWluVGV4dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKG1f
dXJsKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1
cm4gIW1fcGxhaW5UZXh0ICYmICFtX3VybCAmJiAhbV93ZWJDb250ZW50OwogfQogCiB2b2lkIFBh
c3RlYm9hcmRXcml0ZXJEYXRhOjpzZXRQbGFpblRleHQoUGxhaW5UZXh0IHBsYWluVGV4dCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCmluZGV4IDBk
MWI0YjczNmQyMjRlZmRmOWMyMGM3NGU4MzcyMTMyZDE5NDQ5YzkuLjZmZWVlOTMyNTJmYzc5NWUy
NjU2YWJhZDk0ZWM4MmU2NTYzMjkyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFdyaXRlckRhdGEuaApAQCAtMzUsOCArMzUsOCBAQCBjbGFzcyBTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRXcml0ZXJEYXRhIGZpbmFsIHsKIHB1YmxpYzoKLSAgICBQ
YXN0ZWJvYXJkV3JpdGVyRGF0YSgpOwotICAgIH5QYXN0ZWJvYXJkV3JpdGVyRGF0YSgpOworICAg
IFdFQkNPUkVfRVhQT1JUIFBhc3RlYm9hcmRXcml0ZXJEYXRhKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgflBhc3RlYm9hcmRXcml0ZXJEYXRhKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlz
RW1wdHkoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5oCmluZGV4IDgxNTFmNjNjYmI5ZTg3MzQ3NWQ3ZDgyNTIxZmEzODIzMmZl
M2E2ZmMuLjE3YmM2OWFiZWJiY2YyMmZjYzI1NDk5NjA4NWY2NzAwOGM3NDVhMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKQEAgLTM5
LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9u
KFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2Vi
Q29yZTo6RGF0YVRyYW5zZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmFnQ29udHJvbGxlckRl
c3Ryb3llZCgpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gZHJhZ1Nv
dXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgd2luZG93UG9p
bnQpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6OkRyYWdJbWFnZSwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIGRyYWdQb3MsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBl
dmVudFBvcywgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIFdlYkNvcmU6OkRhdGFUcmFuc2Zl
ciYsIFdlYkNvcmU6OkZyYW1lJiwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbikgb3ZlcnJpZGU7
CisgICAgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6RHJhZ0l0ZW0sIFdlYkNvcmU6OkRhdGFUcmFu
c2ZlciYsIFdlYkNvcmU6OkZyYW1lJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGJlZ2luRHJhZyhX
ZWJDb3JlOjpEcmFnSXRlbSwgV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgbW91c2VEb3duUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBtb3VzZURyYWdn
ZWRQb3NpdGlvbiwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJiwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFj
dGlvbikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkRyYWdDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJEcmFnQ2xpZW50Lm1tCmluZGV4IDExNWE4MzczMjk1Yzc2MTZjMDIwOGMxM2EzMjA4OTQ4
NjVkMjVlZGMuLjU4YTRjZjM4NWU2ZTA5MWNmNDk4ZDRlYjNlZDFiNjA5ZmZhZjMzMDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQpA
QCAtNTAsNiArNTAsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRWRpdG9yQ2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgor
I2ltcG9ydCA8V2ViQ29yZS9GbG9hdFBvaW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmll
dy5oPgogI2ltcG9ydCA8V2ViQ29yZS9JbWFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NYWluRnJh
bWUuaD4KQEAgLTEwMCwxMyArMTAxLDE2IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZv
cm1EcmFnU291cmNlQWN0aW9uKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gYWN0aW9uCiAgICAg
W1ttX3dlYlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6bV93ZWJWaWV3IHdpbGxQ
ZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbjooV2ViRHJhZ1NvdXJjZUFjdGlvbilhY3Rpb24gZnJvbVBv
aW50Om1vdXNlRG93blBvaW50IHdpdGhQYXN0ZWJvYXJkOltOU1Bhc3RlYm9hcmQgcGFzdGVib2Fy
ZFdpdGhOYW1lOmRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkubmFtZSgpXV07CiB9CiAKLXZvaWQg
V2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJbWFnZSBkcmFnSW1hZ2UsIGNvbnN0IEludFBv
aW50JiBhdCwgY29uc3QgSW50UG9pbnQmIGV2ZW50UG9zLCBjb25zdCBGbG9hdFBvaW50JiwgRGF0
YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIEZyYW1lJiBmcmFtZSwgRHJhZ1NvdXJjZUFjdGlvbiBk
cmFnU291cmNlQWN0aW9uKQordm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0l0ZW0g
ZHJhZ0l0ZW0sIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBGcmFtZSYgZnJhbWUpCiB7Cisg
ICAgYXV0byYgZHJhZ0ltYWdlID0gZHJhZ0l0ZW0uaW1hZ2U7CisgICAgYXV0byBkcmFnTG9jYXRp
b25JbkNvbnRlbnRDb29yZGluYXRlcyA9IGRyYWdJdGVtLmRyYWdMb2NhdGlvbkluQ29udGVudENv
b3JkaW5hdGVzOworCiAgICAgUmV0YWluUHRyPFdlYkhUTUxWaWV3PiBodG1sVmlldyA9IChXZWJI
VE1MVmlldyopW1traXQoJmZyYW1lKSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld107CiAgICAgaWYg
KCFbaHRtbFZpZXcuZ2V0KCkgaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xhc3NdXSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIE5TRXZlbnQgKmV2ZW50ID0gZHJhZ1NvdXJjZUFjdGlv
biA9PSBEcmFnU291cmNlQWN0aW9uTGluayA/IGZyYW1lLmV2ZW50SGFuZGxlcigpLmN1cnJlbnRO
U0V2ZW50KCkgOiBbaHRtbFZpZXcuZ2V0KCkgX21vdXNlRG93bkV2ZW50XTsKKyAgICBOU0V2ZW50
ICpldmVudCA9IGRyYWdJdGVtLnNvdXJjZUFjdGlvbiA9PSBEcmFnU291cmNlQWN0aW9uTGluayA/
IGZyYW1lLmV2ZW50SGFuZGxlcigpLmN1cnJlbnROU0V2ZW50KCkgOiBbaHRtbFZpZXcuZ2V0KCkg
X21vdXNlRG93bkV2ZW50XTsKICAgICBXZWJIVE1MVmlldyogdG9wSFRNTFZpZXcgPSBnZXRUb3BI
VE1MVmlldygmZnJhbWUpOwogICAgIFJldGFpblB0cjxXZWJIVE1MVmlldz4gdG9wVmlld1Byb3Rl
Y3RvciA9IHRvcEhUTUxWaWV3OwogICAgIApAQCAtMTI0LDE0ICsxMjgsMTQgQEAgdm9pZCBXZWJE
cmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0ltYWdlIGRyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQm
IGF0LCBjb25zdCBJbnQKICAgICBTRUwgc2VsZWN0b3IgPSBAc2VsZWN0b3Iod2ViVmlldzpkcmFn
SW1hZ2U6YXQ6b2Zmc2V0OmV2ZW50OnBhc3RlYm9hcmQ6c291cmNlOnNsaWRlQmFjazpmb3JWaWV3
Oik7CiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0b3JdKSB7CiAg
ICAgICAgIEB0cnkgewotICAgICAgICAgICAgW2RlbGVnYXRlIHdlYlZpZXc6bV93ZWJWaWV3IGRy
YWdJbWFnZTpkcmFnTlNJbWFnZSBhdDphdCBvZmZzZXQ6TlNaZXJvU2l6ZSBldmVudDpldmVudCBw
YXN0ZWJvYXJkOnBhc3RlYm9hcmQgc291cmNlOnNvdXJjZUhUTUxWaWV3IHNsaWRlQmFjazpZRVMg
Zm9yVmlldzp0b3BIVE1MVmlld107CisgICAgICAgICAgICBbZGVsZWdhdGUgd2ViVmlldzptX3dl
YlZpZXcgZHJhZ0ltYWdlOmRyYWdOU0ltYWdlIGF0OmRyYWdMb2NhdGlvbkluQ29udGVudENvb3Jk
aW5hdGVzIG9mZnNldDpOU1plcm9TaXplIGV2ZW50OmV2ZW50IHBhc3RlYm9hcmQ6cGFzdGVib2Fy
ZCBzb3VyY2U6c291cmNlSFRNTFZpZXcgc2xpZGVCYWNrOllFUyBmb3JWaWV3OnRvcEhUTUxWaWV3
XTsKICAgICAgICAgfSBAY2F0Y2ggKGlkIGV4Y2VwdGlvbikgewogICAgICAgICAgICAgUmVwb3J0
RGlzY2FyZGVkRGVsZWdhdGVFeGNlcHRpb24oc2VsZWN0b3IsIGV4Y2VwdGlvbik7CiAgICAgICAg
IH0KICAgICB9IGVsc2UKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCiAjcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAgICAg
ICAgW3RvcEhUTUxWaWV3IGRyYWdJbWFnZTpkcmFnTlNJbWFnZSBhdDphdCBvZmZzZXQ6TlNaZXJv
U2l6ZSBldmVudDpldmVudCBwYXN0ZWJvYXJkOnBhc3RlYm9hcmQgc291cmNlOnNvdXJjZUhUTUxW
aWV3IHNsaWRlQmFjazpZRVNdOworICAgICAgICBbdG9wSFRNTFZpZXcgZHJhZ0ltYWdlOmRyYWdO
U0ltYWdlIGF0OmRyYWdMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzIG9mZnNldDpOU1plcm9T
aXplIGV2ZW50OmV2ZW50IHBhc3RlYm9hcmQ6cGFzdGVib2FyZCBzb3VyY2U6c291cmNlSFRNTFZp
ZXcgc2xpZGVCYWNrOllFU107CiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiB9CiAKQEAg
LTE5OCw3ICsyMDIsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ1NvdXJj
ZUFjdGlvbihXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uLCBjb25zdAogewogfQogCi12b2lkIFdl
YkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhXZWJDb3JlOjpEcmFnSW1hZ2UsIGNvbnN0IEludFBvaW50
JiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JiwgRGF0YVRyYW5zZmVyJiwgRnJh
bWUmLCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uKQordm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFy
dERyYWcoV2ViQ29yZTo6RHJhZ0l0ZW0sIERhdGFUcmFuc2ZlciYsIEZyYW1lJikKIHsKIH0KIApA
QCAtMjM5LDkgKzI0Myw5IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnU291
cmNlQWN0aW9uKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24sIGNvbnN0CiB7CiB9CiAKLXZvaWQg
V2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJbWFnZSBkcmFnSW1hZ2UsIGNvbnN0IEludFBv
aW50JiBwb2ludCwgY29uc3QgSW50UG9pbnQmIGV2ZW50TG9jYXRpb24sIGNvbnN0IEZsb2F0UG9p
bnQmIGRyYWdJbWFnZUFuY2hvciwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIEZyYW1lJiBm
cmFtZSwgRHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uKQordm9pZCBXZWJEcmFnQ2xp
ZW50OjpzdGFydERyYWcoRHJhZ0l0ZW0gZHJhZ0l0ZW0sIERhdGFUcmFuc2ZlciYsIEZyYW1lJikK
IHsKLSAgICBbbV93ZWJWaWV3IF9zZXREYXRhSW50ZXJhY3Rpb25EYXRhOmRyYWdJbWFnZS5nZXQo
KS5nZXQoKSB0ZXh0SW5kaWNhdG9yOmRyYWdJbWFnZS5pbmRpY2F0b3JEYXRhKCkgYXRDbGllbnRQ
b3NpdGlvbjpldmVudExvY2F0aW9uIGFuY2hvclBvaW50OmRyYWdJbWFnZUFuY2hvciBhY3Rpb246
ZHJhZ1NvdXJjZUFjdGlvbl07CisgICAgW21fd2ViVmlldyBfc3RhcnREcmFnOmRyYWdJdGVtXTsK
IH0KIAogdm9pZCBXZWJEcmFnQ2xpZW50OjpiZWdpbkRyYWcoRHJhZ0l0ZW0sIEZyYW1lJiwgY29u
c3QgSW50UG9pbnQmLCBjb25zdCBJbnRQb2ludCYsIERhdGFUcmFuc2ZlciYsIERyYWdTb3VyY2VB
Y3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggM2E3MTU1ZDgyNjFj
MmM1NWQyMTMwZTJkNTM3YjAyMWE5OTA5MTliZC4uY2FiMzZhOTM5ODE4NmQzYzIzNjcyMTAwMWNi
YTVhMmI3MmNlY2ViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTMz
LDYgKzEzMyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0RyYWdDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdEYXRhLmg+
CisjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRpbmcu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50SGFu
ZGxlci5oPgpAQCAtMTgyNyw4ICsxODI4LDEyIEBAIC0gKEJPT0wpX3JlcXVlc3RTdGFydERhdGFJ
bnRlcmFjdGlvbjooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBnbG9iYWxQb3NpdGlvbjooQ0dQCiAg
ICAgcmV0dXJuIF9wcml2YXRlLT5wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS50cnlU
b0JlZ2luRGF0YUludGVyYWN0aW9uQXRQb2ludChJbnRQb2ludChjbGllbnRQb3NpdGlvbiksIElu
dFBvaW50KGdsb2JhbFBvc2l0aW9uKSk7CiB9CiAKLS0gKHZvaWQpX3NldERhdGFJbnRlcmFjdGlv
bkRhdGE6KENHSW1hZ2VSZWYpaW1hZ2UgdGV4dEluZGljYXRvcjooc3RkOjpvcHRpb25hbDxUZXh0
SW5kaWNhdG9yRGF0YT4paW5kaWNhdG9yRGF0YSBhdENsaWVudFBvc2l0aW9uOihDR1BvaW50KWNs
aWVudFBvc2l0aW9uIGFuY2hvclBvaW50OihDR1BvaW50KWFuY2hvclBvaW50IGFjdGlvbjoodWlu
dDY0X3QpYWN0aW9uCistICh2b2lkKV9zdGFydERyYWc6KGNvbnN0IERyYWdJdGVtJilkcmFnSXRl
bQogeworICAgIGF1dG8mIGRyYWdJbWFnZSA9IGRyYWdJdGVtLmltYWdlOworICAgIGF1dG8gaW1h
Z2UgPSBkcmFnSW1hZ2UuZ2V0KCkuZ2V0KCk7CisgICAgYXV0byBpbmRpY2F0b3JEYXRhID0gZHJh
Z0ltYWdlLmluZGljYXRvckRhdGEoKTsKKwogICAgIGlmIChpbmRpY2F0b3JEYXRhKQogICAgICAg
ICBfcHJpdmF0ZS0+dGV4dEluZGljYXRvckRhdGEgPSBhZG9wdE5TKFtbV2ViVUlUZXh0SW5kaWNh
dG9yRGF0YSBhbGxvY10gaW5pdFdpdGhJbWFnZTppbWFnZSB0ZXh0SW5kaWNhdG9yRGF0YTppbmRp
Y2F0b3JEYXRhLnZhbHVlKCkgc2NhbGU6X3ByaXZhdGUtPnBhZ2UtPmRldmljZVNjYWxlRmFjdG9y
KCldKTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJu
YWwuaAppbmRleCA5MTI0ZTEyNzFlZjE1ZGZjMzBhOTJmNmUwMmUyZDYyYTY2NDhjZDdiLi4yNDM2
OTNlMTgwYTNlM2YxY2I0OWY2M2MwYzJiZjIwYjhkYTVlMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKQEAgLTYzLDYgKzYzLDEyIEBAIHN0cnVjdCBE
aWN0YXRpb25BbHRlcm5hdGl2ZTsKIHN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJbmZvOwogfQogCisj
aWYgUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQorbmFtZXNwYWNlIFdlYkNv
cmUgeworc3RydWN0IERyYWdJdGVtOworfQorI2VuZGlmCisKIGNsYXNzIFdlYk1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXI7CiBjbGFzcyBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjsKIApA
QCAtMjYxLDcgKzI2Nyw3IEBAIE9CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykK
LS0gKHZvaWQpX3NldERhdGFJbnRlcmFjdGlvbkRhdGE6KENHSW1hZ2VSZWYpaW1hZ2UgdGV4dElu
ZGljYXRvcjooc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pdGV4dElu
ZGljYXRvciBhdENsaWVudFBvc2l0aW9uOihDR1BvaW50KWNsaWVudFBvc2l0aW9uIGFuY2hvclBv
aW50OihDR1BvaW50KWFuY2hvclBvaW50IGFjdGlvbjoodWludDY0X3QpYWN0aW9uOworLSAodm9p
ZClfc3RhcnREcmFnOihjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYpZHJhZ0l0ZW07CiAtICh2b2lk
KV9kaWRDb25jbHVkZUVkaXREYXRhSW50ZXJhY3Rpb247CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAppbmRleCBlMzdi
ZGY2NDU4MjI0ZTU2YzFmMTg2OTk3YjI1Zjg4OTc5MDY3MDU3Li4zNjMzZmEzYTcxZjg1ZWI4ODdj
YmY2NWM1M2Y5M2IxYWExYmRiOGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcApAQCAtOTgsMTEgKzk4LDE1IEBAIHZvaWQgV2Vi
RHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb24g
YWN0aW9uLCBjb25zdCBJCiAgICAgICAgIGNvbnN0X2Nhc3Q8UGFzdGVib2FyZCY+KGRhdGFUcmFu
c2Zlci5wYXN0ZWJvYXJkKCkpLnNldEV4dGVybmFsRGF0YU9iamVjdChuZXdEYXRhT2JqZWN0Lmdl
dCgpKTsKIH0KIAotdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0ltYWdlIGltYWdl
LCBjb25zdCBJbnRQb2ludCYgaW1hZ2VPcmlnaW4sIGNvbnN0IEludFBvaW50JiBkcmFnUG9pbnQs
IGNvbnN0IEZsb2F0UG9pbnQmLCBEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlciwgRnJhbWUmIGZy
YW1lLCBEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb24pCit2b2lkIFdlYkRyYWdDbGll
bnQ6OnN0YXJ0RHJhZyhEcmFnSXRlbSBpdGVtLCBEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2Zlciwg
RnJhbWUmIGZyYW1lKQogewogICAgIC8vRklYTUU6IEFsbG93IFVJRGVsZWdhdGUgdG8gb3ZlcnJp
ZGUgYmVoYXZpb3VyIDxyZGFyOi8vcHJvYmxlbS81MDE1OTUzPgogCiAgICAgLy9XZSBsaWJlcmFs
bHkgcHJvdGVjdCBldmVyeXRoaW5nLCB0byBwcm90ZWN0IGFnYWluc3QgYSBsb2FkIG9jY3Vycmlu
ZyBtaWQtZHJhZworICAgIGF1dG8mIGltYWdlID0gaXRlbS5pbWFnZTsKKyAgICBhdXRvIGltYWdl
T3JpZ2luID0gaXRlbS5kcmFnTG9jYXRpb25JbkNvbnRlbnRDb29yZGluYXRlczsKKyAgICBhdXRv
IGRyYWdQb2ludCA9IGl0ZW0uZXZlbnRQb3NpdGlvbkluQ29udGVudENvb3JkaW5hdGVzOworCiAg
ICAgUmVmUHRyPEZyYW1lPiBmcmFtZVByb3RlY3RvciA9ICZmcmFtZTsKICAgICBDT01QdHI8SURy
YWdTb3VyY2VIZWxwZXI+IGhlbHBlcjsKICAgICBDT01QdHI8SURhdGFPYmplY3Q+IGRhdGFPYmpl
Y3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eSBiL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGZlNmJm
ODk2ZGQ4NTg3NTc5ZjBhNzJmM2YwZDhjODQ2NTc1Y2ZkMTYuLjc4MTkwZGNiNjBiN2I5Y2Y0Yjhl
YWY2MTEzODc4ZTY1OTBjMWI2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CkBAIC0zNTMsNiArMzUzLDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6
CiAgICAgc3BlY2lhbF9jYXNlcyA9IHsKICAgICAgICAgJ1N0cmluZyc6IFsnPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6QXV0b3BsYXlFdmVudEZsYWdzJzogWyc8
V2ViQ29yZS9BdXRvcGxheUV2ZW50Lmg+J10sCisgICAgICAgICdXZWJDb3JlOjpEcmFnSXRlbSc6
IFsnPFdlYkNvcmUvRHJhZ0l0ZW0uaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkV4Y2VwdGlvbkRl
dGFpbHMnOiBbJzxXZWJDb3JlL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaD4nXSwKICAgICAgICAg
J1dlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MnOiBbJzxXZWJDb3JlL0ZpbGVDaG9vc2VyLmg+
J10sCiAgICAgICAgICdXZWJDb3JlOjpHcmFtbWFyRGV0YWlsJzogWyc8V2ViQ29yZS9UZXh0Q2hl
Y2tlckNsaWVudC5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAppbmRleCA5YmU0OTc2ZjAyYTZhYTQwMTI1MWJhNGI3NzU3YTQwNWZlNTFm
YWU0Li5lNjJlMmVlMzk3YmUyYzNlY2ZmMzZmYzg4ZjEwZTc5YjFjZTJiMjJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMzgsNiAr
MzgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRGljdGF0aW9uQWx0ZXJuYXRpdmUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0RpY3Rpb25hcnlQb3B1cEluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Ry
YWdEYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EcmFnSXRlbS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRXZlbnRUcmFja2luZ1JlZ2lvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVDaG9vc2Vy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWx0ZXJPcGVyYXRpb24uaD4KQEAgLTIyMTMsNiArMjIx
NCw2MSBAQCBib29sIEFyZ3VtZW50Q29kZXI8RGljdGlvbmFyeVBvcHVwSW5mbz46OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIsIERpY3Rpb25hcgogICAgIHJldHVybiB0cnVlOwogfQogCisj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKKwordm9pZCBBcmd1bWVudENvZGVyPERyYWdJdGVtPjo6
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlciwgY29uc3QgRHJhZ0l0ZW0mIGl0ZW0pCit7Cisg
ICAgLy8gRklYTUUoMTczODE1KTogV2Ugc2hvdWxkIGVuY29kZSBhbmQgZGVjb2RlIFBhc3RlYm9h
cmRXcml0ZXJEYXRhIGFuZCBwbGF0Zm9ybSBkcmFnIGltYWdlIGRhdGEKKyAgICAvLyBoZXJlIHRv
bywgYXMgcGFydCBvZiBtb3Zpbmcgb2ZmIG9mIHRoZSBsZWdhY3kgZHJhZ2dpbmcgY29kZXBhdGgu
CisgICAgZW5jb2RlciA8PCBpdGVtLmltYWdlQW5jaG9yUG9pbnQ7CisgICAgZW5jb2Rlci5lbmNv
ZGVFbnVtKGl0ZW0uc291cmNlQWN0aW9uKTsKKyAgICBlbmNvZGVyIDw8IGl0ZW0uZXZlbnRQb3Np
dGlvbkluQ29udGVudENvb3JkaW5hdGVzOworICAgIGVuY29kZXIgPDwgaXRlbS5kcmFnTG9jYXRp
b25JbkNvbnRlbnRDb29yZGluYXRlczsKKyAgICBlbmNvZGVyIDw8IGl0ZW0uZXZlbnRQb3NpdGlv
bkluV2luZG93Q29vcmRpbmF0ZXM7CisgICAgZW5jb2RlciA8PCBpdGVtLmRyYWdMb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXM7CisgICAgZW5jb2RlciA8PCBpdGVtLnRpdGxlOworICAgIGVuY29k
ZXIgPDwgaXRlbS51cmw7CisgICAgZW5jb2RlciA8PCBpdGVtLmVsZW1lbnRCb3VuZHM7CisgICAg
Ym9vbCBoYXNJbmRpY2F0b3JEYXRhID0gaXRlbS5pbWFnZS5oYXNJbmRpY2F0b3JEYXRhKCk7Cisg
ICAgZW5jb2RlciA8PCBoYXNJbmRpY2F0b3JEYXRhOworICAgIGlmIChoYXNJbmRpY2F0b3JEYXRh
KQorICAgICAgICBlbmNvZGVyIDw8IGl0ZW0uaW1hZ2UuaW5kaWNhdG9yRGF0YSgpLnZhbHVlKCk7
Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxEcmFnSXRlbT46OmRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIsIERyYWdJdGVtJiByZXN1bHQpCit7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQuaW1hZ2VBbmNob3JQb2ludCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlRW51bShyZXN1bHQuc291cmNlQWN0aW9uKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmV2ZW50UG9zaXRpb25JbkNv
bnRlbnRDb29yZGluYXRlcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5kcmFnTG9jYXRpb25JbkNvbnRlbnRDb29yZGluYXRlcykpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5ldmVudFBv
c2l0aW9uSW5XaW5kb3dDb29yZGluYXRlcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5kcmFnTG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
LnRpdGxlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LnVybCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5lbGVtZW50Qm91bmRzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGJv
b2wgaGFzSW5kaWNhdG9yRGF0YTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0luZGljYXRv
ckRhdGEpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGhhc0luZGljYXRvckRhdGEp
IHsKKyAgICAgICAgVGV4dEluZGljYXRvckRhdGEgaW5kaWNhdG9yRGF0YTsKKyAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShpbmRpY2F0b3JEYXRhKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcmVzdWx0LmltYWdlLnNldEluZGljYXRvckRhdGEoaW5kaWNhdG9yRGF0YSk7
CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCisjZW5kaWYKKwogdm9pZCBBcmd1bWVudENv
ZGVyPEV4Y2VwdGlvbkRldGFpbHM+OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBFeGNlcHRpb25EZXRhaWxzJiBpbmZvKQogewogICAgIGVuY29kZXIgPDwgaW5mby5tZXNzYWdl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4
IDkyM2FiNzlmYmVmM2M1YWQ3N2EyNzAyZWNiNzgxOGQwMDRjOGZiNDQuLjEwNDRkNDVjN2YwZmNi
MDJjOTEzOGY4NmRhN2Q5NGIwMWRjMGU0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTE3Miw2ICsxNzIsMTIgQEAgdXNpbmcgSURCS2V5
UGF0aCA9IFZhcmlhbnQ8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj47CiB9CiAjZW5kaWYKIAorI2lm
IEVOQUJMRShEUkFHX1NVUFBPUlQpCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgRHJhZ0l0
ZW07Cit9CisjZW5kaWYKKwogbmFtZXNwYWNlIElQQyB7CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V1RGOjpNb25vdG9uaWNUaW1lPiB7CkBAIC01MzEsNiArNTM3LDEzIEBAIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RGljdGlvbmFyeVBvcHVwSW5m
bz4gewogICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6RGljdGlvbmFy
eVBvcHVwSW5mbyYpOwogfTsKIAorI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCit0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkRyYWdJdGVtPiB7CisgICAgc3RhdGljIHZv
aWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYpOworICAgIHN0YXRp
YyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6RHJhZ0l0ZW0mKTsKK307CisjZW5kaWYK
KwogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiB0ZW1wbGF0ZTw+IHN0cnVj
dCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0PiB7CiAg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IGU0ZWQwYjM3NzMzYjZjODUxZjgxYThiYzMy
YmQ2YThlY2MyZGVjODIuLmQ1MGIzM2RjY2NkOWE1NGM3OWYwNDAyNWVmOTEyNWIyYTRiMmU2MzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5
Q29jb2EubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIkxvYWRQYXJhbWV0ZXJzLmgiCiAj
aW1wb3J0ICJQYWdlQ2xpZW50LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbXBv
cnQgPFdlYkNvcmUvRHJhZ0l0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Q29jb2EuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVmFsaWRhdGlvbkJ1YmJsZS5oPgpAQCAtMTA0LDkgKzEwNSw5IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpjcmVhdGVTYW5kYm94RXh0ZW5zaW9uc0lmTmVlZGVkKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBmaWxlcywKIAogI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
IAotdm9pZCBXZWJQYWdlUHJveHk6OnNldERyYWdJbWFnZShjb25zdCBJbnRQb2ludCYgY2xpZW50
UG9zaXRpb24sIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBkcmFnSW1hZ2VIYW5kbGUs
IHN0ZDo6b3B0aW9uYWw8VGV4dEluZGljYXRvckRhdGE+IHRleHRJbmRpY2F0b3IsIGNvbnN0IEZs
b2F0UG9pbnQmIGRyYWdJbWFnZUFuY2hvciwgdWludDY0X3QgYWN0aW9uKQordm9pZCBXZWJQYWdl
UHJveHk6OnN0YXJ0RHJhZyhjb25zdCBEcmFnSXRlbSYgZHJhZ0l0ZW0sIGNvbnN0IFNoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlJiBkcmFnSW1hZ2VIYW5kbGUpCiB7Ci0gICAgbV9wYWdlQ2xpZW50LnN0
YXJ0RGF0YUludGVyYWN0aW9uV2l0aEltYWdlKGNsaWVudFBvc2l0aW9uLCBkcmFnSW1hZ2VIYW5k
bGUsIHRleHRJbmRpY2F0b3IsIGRyYWdJbWFnZUFuY2hvciwgYWN0aW9uKTsKKyAgICBtX3BhZ2VD
bGllbnQuc3RhcnREcmFnKGRyYWdJdGVtLCBkcmFnSW1hZ2VIYW5kbGUpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U2hhcmVkTWVtb3J5OjpIYW5kbGUmLCB1aW50NjRfdCwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U2hhcmVkTWVtb3J5OjpIYW5kbGUmLCB1aW50NjRfdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCmluZGV4IGVkZGJiMTY0ZTlkNGNkYjE3Mjc2ZTI0N2ExNmRjYmVjZjliMmE1OTgu
LjU4ZTFlMjU3NWQ3MzY0MmQ4OTQ2YWI3YzY2MjYxZWE1MDU4MzQyZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNTYsNiArNTYsMTIgQEAgc3RydWN0IEhpZ2hsaWdo
dDsKIHN0cnVjdCBWaWV3cG9ydEF0dHJpYnV0ZXM7CiB9CiAKKyNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQorbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IERyYWdJdGVtOworfQorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBEcmF3aW5nQXJlYVByb3h5OwpAQCAtMzczLDcg
KzM3OSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUGVyZm9ybURhdGFJbnRlcmFjdGlvbkNvbnRyb2xsZXJPcGVyYXRpb24oYm9v
bCBoYW5kbGVkKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEhhbmRsZVN0YXJ0RGF0YUludGVy
YWN0aW9uUmVxdWVzdChib29sIHN0YXJ0ZWQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRE
YXRhSW50ZXJhY3Rpb25XaXRoSW1hZ2UoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBv
c2l0aW9uLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2UsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+LCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
JiBhbmNob3JQb2ludCwgdWludDY0X3QgYWN0aW9uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0
YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlJiBpbWFnZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb25jbHVkZUVkaXREYXRh
SW50ZXJhY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlRGF0YUludGVyYWN0aW9uQ2FyZXRSZWN0KGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHByZXZpb3VzQ2FyZXRSZWN0LCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBjYXJldFJlY3QpID0gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCmluZGV4IGMyNTNjYzRjZDY0NDU1NWVlZmMzY2Y2MjRlYzkxM2Q0NTEzZjUw
MTMuLjA5ZTIwMThlOTQyNGEwYzU2OWIwNTg3ZjQxMTRlYmFlZDE5MGI0OWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTgyNCw3ICs4MjQsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkcmFnQ2FuY2VsbGVkKCk7CiAgICAgdm9pZCBzZXREcmFnQ2FyZXRSZWN0KGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIHNl
dERyYWdJbWFnZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBkcmFnSW1hZ2VIYW5kbGUsIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+LCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBk
cmFnSW1hZ2VBbmNob3IsIHVpbnQ2NF90IGFjdGlvbik7CisgICAgdm9pZCBzdGFydERyYWcoY29u
c3QgV2ViQ29yZTo6RHJhZ0l0ZW0mLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgZHJh
Z0ltYWdlSGFuZGxlKTsKICAgICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBpbWFnZUhh
bmRsZSwgdWludDY0X3QgaW1hZ2VTaXplLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBT
dHJpbmcmIGV4dGVuc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBjb25z
dCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgYXJjaGl2ZUhhbmRsZSwgdWludDY0X3QgYXJjaGl2ZVNp
emUpOwogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCAyYzljYWM0M2JlNDNi
MTQ5NTVjNjVhMDNkMjkwZDkzNzI4NTAzNWIzLi40M2YwYjNlNmY3ZGQ4ZTFlN2U4NDM3OTI0ZWVj
MjEyNDI0NGI3NjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4KQEAgLTMwMiw3ICszMDIsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
UHJveHkgewogICAgIERpZEVuZERyYWdnaW5nKCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NP
QSkgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBTZXREcmFnSW1hZ2UoV2ViQ29yZTo6SW50
UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgZHJh
Z0ltYWdlLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPiB0ZXh0SW5k
aWNhdG9yLCBXZWJDb3JlOjpGbG9hdFBvaW50IGRyYWdJbWFnZUFuY2hvciwgdWludDY0X3QgYWN0
aW9uKQorICAgIFN0YXJ0RHJhZyhzdHJ1Y3QgV2ViQ29yZTo6RHJhZ0l0ZW0gZHJhZ0l0ZW0sIFdl
YktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgZHJhZ0ltYWdlKQogICAgIFNldFByb21pc2Vk
RGF0YUZvckltYWdlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6
OkhhbmRsZSBpbWFnZUhhbmRsZSwgdWludDY0X3QgaW1hZ2VTaXplLCBTdHJpbmcgZmlsZW5hbWUs
IFN0cmluZyBleHRlbnNpb24sIFN0cmluZyB0aXRsZSwgU3RyaW5nIHVybCwgU3RyaW5nIHZpc2li
bGVVUkwsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgYXJjaGl2ZUhhbmRsZSwgdWludDY0
X3QgYXJjaGl2ZVNpemUpCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBTZXRQ
cm9taXNlZERhdGFGb3JBdHRhY2htZW50KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIGZp
bGVuYW1lLCBTdHJpbmcgZXh0ZW5zaW9uLCBTdHJpbmcgdGl0bGUsIFN0cmluZyB1cmwsIFN0cmlu
ZyB2aXNpYmxlVVJMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oCmluZGV4IDM4ZGQxMmQxZWYwNDQ1MTU5ZjMzM2I0NDM0NzdkNTI3MDY1OTI0
OTQuLmNkNjI3YzJjN2U1ZGY5NjQ2NTJmMDJkYTE2ZWE3YmNjZTg0NjAyNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTIwOCw3
ICsyMDgsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQogICAgIHZv
aWQgZGlkUGVyZm9ybURhdGFJbnRlcmFjdGlvbkNvbnRyb2xsZXJPcGVyYXRpb24oYm9vbCBoYW5k
bGVkKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEhhbmRsZVN0YXJ0RGF0YUludGVyYWN0aW9uUmVx
dWVzdChib29sIHN0YXJ0ZWQpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RhcnREYXRhSW50ZXJhY3Rp
b25XaXRoSW1hZ2UoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25z
dCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2UsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
VGV4dEluZGljYXRvckRhdGE+LCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBhbmNob3JQb2lu
dCwgdWludDY0X3QgYWN0aW9uKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0YXJ0RHJhZyhjb25zdCBX
ZWJDb3JlOjpEcmFnSXRlbSYsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDb25jbHVkZUVkaXREYXRhSW50ZXJhY3Rpb24oc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkQ2hhbmdlRGF0YUludGVyYWN0aW9uQ2FyZXRSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IHByZXZpb3VzQ2FyZXRSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjYXJldFJlY3QpIG92
ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbQppbmRleCBhOThiODU3MmZlNTNhYzljOWZjODJhNWY0MTU1OTFjOTVl
Yjk2MWU0Li43OGU1MWEzOTUyNjQwNjY0MmQwOTJiNDU0MTRlN2JiYmRmMjZjNGExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAg
LTc4Niw5ICs3ODYsOSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRIYW5kbGVTdGFydERhdGFJ
bnRlcmFjdGlvblJlcXVlc3QoYm9vbCBzdGFydGVkKQogICAgIFttX2NvbnRlbnRWaWV3IF9kaWRI
YW5kbGVTdGFydERhdGFJbnRlcmFjdGlvblJlcXVlc3Q6c3RhcnRlZF07CiB9CiAKLXZvaWQgUGFn
ZUNsaWVudEltcGw6OnN0YXJ0RGF0YUludGVyYWN0aW9uV2l0aEltYWdlKGNvbnN0IEludFBvaW50
JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlLCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPiBpbmRpY2F0b3JEYXRhLCBj
b25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwgdWludDY0X3QgYWN0aW9uKQordm9pZCBQYWdl
Q2xpZW50SW1wbDo6c3RhcnREcmFnKGNvbnN0IERyYWdJdGVtJiBpdGVtLCBjb25zdCBTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2UpCiB7Ci0gICAgW21fY29udGVudFZpZXcgX3N0YXJ0RGF0
YUludGVyYWN0aW9uV2l0aEltYWdlOlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlKS0+bWFr
ZUNHSW1hZ2VDb3B5KCkgd2l0aEluZGljYXRvckRhdGE6aW5kaWNhdG9yRGF0YSBhdENsaWVudFBv
c2l0aW9uOkNHUG9pbnRNYWtlKGNsaWVudFBvc2l0aW9uLngoKSwgY2xpZW50UG9zaXRpb24ueSgp
KSBhbmNob3JQb2ludDphbmNob3JQb2ludCBhY3Rpb246YWN0aW9uXTsKKyAgICBbbV9jb250ZW50
VmlldyBfc3RhcnREcmFnOlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlKS0+bWFrZUNHSW1h
Z2VDb3B5KCkgaXRlbTppdGVtXTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ29uY2x1
ZGVFZGl0RGF0YUludGVyYWN0aW9uKHN0ZDo6b3B0aW9uYWw8VGV4dEluZGljYXRvckRhdGE+IGRh
dGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaAppbmRleCAxMTM0ODkyZjgxZTZkNmQ1MWM0MTMyNmU5ZDgxMDdhYmFj
M2EyYjJkLi4xMmZhYzVlMmUxMzAzNzk3YTA4MDYyOWY3ZmY2ZWY4MzU4NTgzMjYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLmgKQEAgLTU3LDYgKzU3LDEyIEBAIGNsYXNzIEludFNpemU7CiBjbGFzcyBUZXh0U3Ry
ZWFtOwogfQogCisjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K3N0cnVjdCBEcmFnSXRlbTsKK30KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNz
IElucHV0Vmlld1VwZGF0ZURlZmVycmVyOwogY2xhc3MgTmF0aXZlV2ViVG91Y2hFdmVudDsKQEAg
LTMyOSw3ICszMzUsNyBAQCBGT1JfRUFDSF9XS0NPTlRFTlRWSUVXX0FDVElPTihERUNMQVJFX1dL
Q09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFD
VElPTikKIC0gKHZvaWQpX2RpZFBlcmZvcm1EYXRhSW50ZXJhY3Rpb25Db250cm9sbGVyT3BlcmF0
aW9uOihCT09MKWhhbmRsZWQ7CiAtICh2b2lkKV9kaWRIYW5kbGVTdGFydERhdGFJbnRlcmFjdGlv
blJlcXVlc3Q6KEJPT0wpc3RhcnRlZDsKLS0gKHZvaWQpX3N0YXJ0RGF0YUludGVyYWN0aW9uV2l0
aEltYWdlOihSZXRhaW5QdHI8Q0dJbWFnZVJlZj4paW1hZ2Ugd2l0aEluZGljYXRvckRhdGE6KHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+KWluZGljYXRvckRhdGEgYXRD
bGllbnRQb3NpdGlvbjooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBhbmNob3JQb2ludDooQ0dQb2lu
dClhbmNob3JQb2ludCBhY3Rpb246KHVpbnQ2NF90KWFjdGlvbjsKKy0gKHZvaWQpX3N0YXJ0RHJh
ZzooUmV0YWluUHRyPENHSW1hZ2VSZWY+KWltYWdlIGl0ZW06KGNvbnN0IFdlYkNvcmU6OkRyYWdJ
dGVtJilpdGVtOwogLSAodm9pZClfZGlkQ29uY2x1ZGVFZGl0RGF0YUludGVyYWN0aW9uOihzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPilkYXRhOwogLSAodm9pZClfZGlk
Q2hhbmdlRGF0YUludGVyYWN0aW9uQ2FyZXRSZWN0OihDR1JlY3QpcHJldmlvdXNSZWN0IGN1cnJl
bnRSZWN0OihDR1JlY3QpcmVjdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBmZmFjNWRiOTU0ZjQ0
YWE3Y2ExMzM5MWE1NzUwZjc2OTQxYWYzN2QwLi44N2I4Y2EyYzVmYTkwMWI0OWYxYmQ0Zjk5YWJk
NTM3OTI3NDMzOTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMTAxLDYgKzEwMSw3IEBACiAjaW1w
b3J0IDxVSUtpdC9VSVVSTERyYWdQcmV2aWV3Vmlldy5oPgogI2ltcG9ydCA8VUlLaXQvX1VJVGV4
dERyYWdDYXJldFZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvRHJhZ0l0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1QYXN0ZWJvYXJk
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaD4KICNlbmRp
ZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtNDIyMCwxMiArNDIyMSwxMyBAQCAtICh2b2lk
KXRlYXJkb3duRGF0YUludGVyYWN0aW9uRGVsZWdhdGVzCiAgICAgW3NlbGYgY2xlYW5VcERyYWdT
b3VyY2VTZXNzaW9uU3RhdGVdOwogfQogCi0tICh2b2lkKV9zdGFydERhdGFJbnRlcmFjdGlvbldp
dGhJbWFnZTooUmV0YWluUHRyPENHSW1hZ2VSZWY+KWltYWdlIHdpdGhJbmRpY2F0b3JEYXRhOihz
dGQ6Om9wdGlvbmFsPFRleHRJbmRpY2F0b3JEYXRhPilpbmRpY2F0b3JEYXRhIGF0Q2xpZW50UG9z
aXRpb246KENHUG9pbnQpY2xpZW50UG9zaXRpb24gYW5jaG9yUG9pbnQ6KENHUG9pbnQpYW5jaG9y
UG9pbnQgYWN0aW9uOih1aW50NjRfdClhY3Rpb24KKy0gKHZvaWQpX3N0YXJ0RHJhZzooUmV0YWlu
UHRyPENHSW1hZ2VSZWY+KWltYWdlIGl0ZW06KGNvbnN0IERyYWdJdGVtJilpdGVtCiB7Ci0gICAg
QVNTRVJUKGFjdGlvbiAhPSBEcmFnU291cmNlQWN0aW9uTm9uZSk7CisgICAgQVNTRVJUKGl0ZW0u
c291cmNlQWN0aW9uICE9IERyYWdTb3VyY2VBY3Rpb25Ob25lKTsKKwogICAgIF9kYXRhSW50ZXJh
Y3Rpb25TdGF0ZS5pbWFnZSA9IGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1h
Z2U6aW1hZ2UuZ2V0KCkgc2NhbGU6X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkgb3JpZW50YXRp
b246VUlJbWFnZU9yaWVudGF0aW9uVXBdKTsKLSAgICBfZGF0YUludGVyYWN0aW9uU3RhdGUuaW5k
aWNhdG9yRGF0YSA9IGluZGljYXRvckRhdGE7Ci0gICAgX2RhdGFJbnRlcmFjdGlvblN0YXRlLnNv
dXJjZUFjdGlvbiA9IHN0YXRpY19jYXN0PERyYWdTb3VyY2VBY3Rpb24+KGFjdGlvbik7CisgICAg
X2RhdGFJbnRlcmFjdGlvblN0YXRlLmluZGljYXRvckRhdGEgPSBpdGVtLmltYWdlLmluZGljYXRv
ckRhdGEoKTsKKyAgICBfZGF0YUludGVyYWN0aW9uU3RhdGUuc291cmNlQWN0aW9uID0gc3RhdGlj
X2Nhc3Q8RHJhZ1NvdXJjZUFjdGlvbj4oaXRlbS5zb3VyY2VBY3Rpb24pOwogfQogCiAtICh2b2lk
KV9kaWRIYW5kbGVTdGFydERhdGFJbnRlcmFjdGlvblJlcXVlc3Q6KEJPT0wpc3RhcnRlZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCAx
YTY0ZTc5YjhjYzhkYTJiYzFkODRiMWIyN2JmM2M4MGY0MmRlNTkyLi4wYzVhOWY2MzgxOTA2MmRl
YjI4NzBmMGU5MzI5ZThjNzkxMmQ3YmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtNDgsNiArNDgsNyBAQAogI2ltcG9ydCAiV2Vi
UHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0RpY3RhdGlvbkFsdGVybmF0aXZlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlMb29rdXAuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
RHJhZ0l0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9OU0FwcGxpY2F0aW9uU1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5oPgpAQCAtMjY5LDEwICsyNzAsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHR5cGUKICNlbmRpZgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLXZvaWQgV2ViUGFnZVBy
b3h5OjpzZXREcmFnSW1hZ2UoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9u
LCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgZHJhZ0ltYWdlSGFuZGxlLCBzdGQ6Om9w
dGlvbmFsPFRleHRJbmRpY2F0b3JEYXRhPiwgY29uc3QgRmxvYXRQb2ludCYsIHVpbnQ2NF90IGFj
dGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpzdGFydERyYWcoY29uc3QgRHJhZ0l0ZW0mIGRyYWdJ
dGVtLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgZHJhZ0ltYWdlSGFuZGxlKQogewog
ICAgIGlmIChhdXRvIGRyYWdJbWFnZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGRyYWdJbWFn
ZUhhbmRsZSkpCi0gICAgICAgIG1fcGFnZUNsaWVudC5zZXREcmFnSW1hZ2UoY2xpZW50UG9zaXRp
b24sIGRyYWdJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCBzdGF0aWNfY2FzdDxEcmFnU291cmNlQWN0
aW9uPihhY3Rpb24pKTsKKyAgICAgICAgbV9wYWdlQ2xpZW50LnNldERyYWdJbWFnZShkcmFnSXRl
bS5kcmFnTG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzLCBkcmFnSW1hZ2UucmVsZWFzZU5vbk51
bGwoKSwgc3RhdGljX2Nhc3Q8RHJhZ1NvdXJjZUFjdGlvbj4oZHJhZ0l0ZW0uc291cmNlQWN0aW9u
KSk7CiAKICAgICBkaWRTdGFydERyYWcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCmluZGV4IGZk
M2VjMjQ3NWY5YzU2OTdmZWU0NWYyMDBmODk5MGM1YWUxZmI1MzMuLmZkNjZhZDhjODhlYmNiNmZm
ZGZhNTUyNDQxNWM5MTYyMDZiYTg2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcApAQCAtNTIsNyAr
NTIsNyBAQCBEcmFnU291cmNlQWN0aW9uIFdlYkRyYWdDbGllbnQ6OmRyYWdTb3VyY2VBY3Rpb25N
YXNrRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKQogfQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKSAm
JiAhUExBVEZPUk0oR1RLKQotdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0ltYWdl
LCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IEludFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIERh
dGFUcmFuc2ZlciYsIEZyYW1lJiwgRHJhZ1NvdXJjZUFjdGlvbikKK3ZvaWQgV2ViRHJhZ0NsaWVu
dDo6c3RhcnREcmFnKERyYWdJdGVtLCBEYXRhVHJhbnNmZXImLCBGcmFtZSYpCiB7CiB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJEcmFnQ2xpZW50LmgKaW5kZXggZGE0NmViYmE2NDAwNzU2MGJkZjcyYTRkZDFmNjFlNmUx
Mjg2Y2M0OC4uZDNmZjUzNGVmMGI1OTliYTE1NTdkZWE4MmVkNGMzOTYwYmM4NTliMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJE
cmFnQ2xpZW50LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJm
b3JtRHJhZ1NvdXJjZUFjdGlvbihXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uLCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYpIG92ZXJyaWRlOwogICAgIFdl
YkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgd2luZG93UG9pbnQpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBz
dGFydERyYWcoV2ViQ29yZTo6RHJhZ0ltYWdlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZHJh
Z0ltYWdlT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZXZlbnRQb3MsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQmIGRyYWdJbWFnZUFuY2hvciwgV2ViQ29yZTo6RGF0YVRyYW5zZmVy
JiwgV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uKSBvdmVycmlkZTsK
KyAgICB2b2lkIHN0YXJ0RHJhZyhXZWJDb3JlOjpEcmFnSXRlbSwgV2ViQ29yZTo6RGF0YVRyYW5z
ZmVyJiwgV2ViQ29yZTo6RnJhbWUmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENvbmNsdWRlRWRp
dERyYWcoKSBvdmVycmlkZTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0
ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJE
cmFnQ2xpZW50R3RrLmNwcAppbmRleCA4MjQ0ZjAxYWI5ZjA2MDc3NmNmMGM5NDkzMWZiM2MxZjYw
NTRlYmViLi5hMmJjODRkYThiYjg0Mjk3MTJlN2Y2MDUzMDFhMTJkYmU3NTY3Y2U4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFn
Q2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcApAQCAtNjAsOCArNjAsOSBAQCB2b2lkIFdlYkRy
YWdDbGllbnQ6OmRpZENvbmNsdWRlRWRpdERyYWcoKQogewogfQogCi12b2lkIFdlYkRyYWdDbGll
bnQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2UgZHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYgY2xpZW50
UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgY29uc3QgRmxvYXRQb2lu
dCYsIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBGcmFtZSYsIERyYWdTb3VyY2VBY3Rpb24p
Cit2b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSXRlbSBpdGVtLCBEYXRhVHJhbnNm
ZXImIGRhdGFUcmFuc2ZlciwgRnJhbWUmKQogeworICAgIGF1dG8mIGRyYWdJbWFnZSA9IGl0ZW0u
aW1hZ2U7CiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gY29udmVydENhaXJv
U3VyZmFjZVRvU2hhcmVhYmxlQml0bWFwKGRyYWdJbWFnZS5nZXQoKS5nZXQoKSk7CiAgICAgU2hh
cmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1h
Yy5tbQppbmRleCA3YTk4MjViYTYzNTNkY2E0ZjI1MjdkMWM0MjYxYThhNDFkNzE3NDU2Li5iMGNl
ZTIxYTg4MTEyNDA5ZjQyMmE2YTc3ZjYwY2Y1NTVkZmViMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRy
YWdDbGllbnRNYWMubW0KQEAgLTkyLDggKzkyLDkgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkaWRD
b25jbHVkZUVkaXREcmFnKCkKIHsKIH0KIAotdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWco
RHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRQb2ludCYgcG9pbnQsIGNvbnN0IEludFBvaW50Jiwg
Y29uc3QgRmxvYXRQb2ludCYsIERhdGFUcmFuc2ZlciYsIEZyYW1lJiBmcmFtZSwgRHJhZ1NvdXJj
ZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uKQordm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWco
RHJhZ0l0ZW0gZHJhZ0l0ZW0sIERhdGFUcmFuc2ZlciYsIEZyYW1lJiBmcmFtZSkKIHsKKyAgICBh
dXRvJiBpbWFnZSA9IGRyYWdJdGVtLmltYWdlOwogICAgIEludFNpemUgYml0bWFwU2l6ZShbaW1h
Z2UuZ2V0KCkgc2l6ZV0pOwogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IGNv
bnZlcnRJbWFnZVRvQml0bWFwKGltYWdlLmdldCgpLmdldCgpLCBiaXRtYXBTaXplLCBmcmFtZSk7
CiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwpAQCAtMTAxLDkgKzEwMiw3IEBA
IHZvaWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJbWFnZSBpbWFnZSwgY29uc3QgSW50
UG9pbnQmIHBvaW50LCBjb25zdCBJbnRQCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGFnZS0+
d2lsbFN0YXJ0RHJhZygpOwotCi0gICAgLy8gRklYTUU6IFNlZW1zIHRoaXMgbWVzc2FnZSBzaG91
bGQgYmUgbmFtZWQgU3RhcnREcmFnLCBub3QgU2V0RHJhZ0ltYWdlLgotICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXREcmFnSW1hZ2UoZnJhbWUudmlldygpLT5jb250
ZW50c1RvV2luZG93KHBvaW50KSwgaGFuZGxlLCBzdGQ6Om51bGxvcHQsIHsgfSwgZHJhZ1NvdXJj
ZUFjdGlvbikpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdGFy
dERyYWcoZHJhZ0l0ZW0sIGhhbmRsZSkpOwogfQogCiBzdGF0aWMgV2ViQ29yZTo6Q2FjaGVkSW1h
Z2UqIGNhY2hlZEltYWdlKEVsZW1lbnQmIGVsZW1lbnQpCkBAIC0yMDcsOCArMjA2LDEwIEBAIHN0
YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0Q0dJbWFnZVRvQml0bWFwKENHSW1h
Z2VSZWYgaW1hZ2UsIGNvbnN0IEluCiAgICAgcmV0dXJuIGJpdG1hcDsKIH0KIAotdm9pZCBXZWJE
cmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRQb2ludCYgcG9p
bnQsIGNvbnN0IEludFBvaW50JiBldmVudExvY2F0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBkcmFn
SW1hZ2VBbmNob3IsIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBGcmFtZSYgZnJhbWUsIERy
YWdTb3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbikKK3ZvaWQgV2ViRHJhZ0NsaWVudDo6c3Rh
cnREcmFnKERyYWdJdGVtIGRyYWdJdGVtLCBEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlciwgRnJh
bWUmIGZyYW1lKQogeworICAgIGF1dG8mIGltYWdlID0gZHJhZ0l0ZW0uaW1hZ2U7CisKICAgICBJ
bnRTaXplIGJpdG1hcFNpemUoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpLmdldCgpKSwgQ0dJ
bWFnZUdldEhlaWdodChpbWFnZS5nZXQoKS5nZXQoKSkpOwogICAgIGF1dG8gYml0bWFwID0gY29u
dmVydENHSW1hZ2VUb0JpdG1hcChpbWFnZS5nZXQoKS5nZXQoKSwgYml0bWFwU2l6ZSwgZnJhbWUp
OwogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKQEAgLTIxNiw3ICsyMTcsNyBA
QCB2b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IElu
dFBvaW50JiBwb2ludCwgY29uc3QgSW50UAogICAgICAgICByZXR1cm47CiAKICAgICBtX3BhZ2Ut
PndpbGxTdGFydERyYWcoKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6U2V0RHJhZ0ltYWdlKGZyYW1lLnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhwb2ludCksIGhh
bmRsZSwgaW1hZ2UuaW5kaWNhdG9yRGF0YSgpLCBkcmFnSW1hZ2VBbmNob3IsIGRyYWdTb3VyY2VB
Y3Rpb24pKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RhcnRE
cmFnKGRyYWdJdGVtLCBoYW5kbGUpKTsKIH0KIAogdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJl
QW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWVudCYg
ZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEZyYW1lKikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313858</attachid>
            <date>2017-06-26 11:56:34 -0700</date>
            <delta_ts>2017-06-27 00:08:26 -0700</delta_ts>
            <desc>Attempt to fix Windows build</desc>
            <filename>bug-173832-20170626115633.patch</filename>
            <type>text/plain</type>
            <size>52177</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjEyYmVlZDBjMmRmYjFh
ZmQzYzg1NGVkNDc5ODFlYzVhY2I3ODE2ZS4uNmNhNWRjMjMwZTJhOTFhNjc1ZDE3MWFhNWVkYWU5
MzAxZmJhYWM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE3LTA2LTI2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIGRy
YWcgc3RhcnQgY29kZXBhdGhzIHRvIHBsdW1iIGEgRHJhZ0l0ZW0gdG8gY2xpZW50IGxheWVycwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczODMyCisg
ICAgICAgIFdvcmsgdG93YXJkcyA8cmRhcjovL3Byb2JsZW0vMzIyMzY4Mjc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgZHJhZyBzdGFy
dCBsb2dpYyBpbiBXZWJDb3JlIHRvIHNldCB1cCBhIERyYWdJdGVtIGFuZCBwcm9wYWdhdGUgaXQg
dG8gV2ViRHJhZ0NsaWVudC4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgICogcGFnZS9EcmFnQ2xpZW50Lmg6CisgICAg
ICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29u
dHJvbGxlcjo6c3RhcnREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpk
b0ltYWdlRHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZG9TeXN0ZW1E
cmFnKToKKworICAgICAgICBSZWZhY3RvciB0byBwYXNzIGFsb25nIGEgRHJhZ0l0ZW0uIEFsc28s
IHJlbW92ZSB1bnVzZWQgZHJhZyBpbWFnZSBhbmNob3IgY29tcHV0YXRpb24uCisKKyAgICAgICAg
KiBwYWdlL0RyYWdDb250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0ltYWdlLmg6
CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0l0ZW0uaDoKKworICAgICAgICBBZGQgYWRkaXRpb25h
bCBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gYmVnaW4gYSBkcmFnIG9uIGlPUy4KKworICAgICAgICAq
IHBsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
c3RlYm9hcmRXcml0ZXJEYXRhOjppc0VtcHR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkV3JpdGVyRGF0YS5oOgorCiAyMDE3LTA2LTIyICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjE0NzEyKTogSW5maW5pdGUgcmVjdXJzaW9u
IGluIFJlbmRlclRhYmxlOjpsYXlvdXQgaW4gcGFnaW5hdGVkIG1vZGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpp
bmRleCA3YjhhMTcyNTJjYzBmODUxYzJiZTY4YWM2YTE3OTIyNTIzN2M0ZjJjLi45Y2U0MDU4Yjk0
N2JkMjRjMTdkNjkwN2IyYzhiMzUzNmMwMmU3MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjkgQEAKKzIwMTctMDYtMjYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVmYWN0b3IgZHJhZyBzdGFydCBjb2RlcGF0aHMgdG8gcGx1bWIgYSBE
cmFnSXRlbSB0byBjbGllbnQgbGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzM4MzIKKyAgICAgICAgV29yayB0b3dhcmRzIDxyZGFyOi8vcHJv
YmxlbS8zMjIzNjgyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZWZhY3RvciBjb2RlIHVzZWQgdG8gc3RhcnQgYSBkcmFnIGluIFdlYktpdDEgdG8g
cGx1bWIgYSBzaW5nbGUgRHJhZ0l0ZW0gZnJvbSBEcmFnQ29udHJvbGxlciB0byB0aGUgY2xpZW50
IGxheWVyCisgICAgICAgIGluIFdlYkRyYWdDbGllbnQgdGhhdCBjb250YWlucyBhbGwgdGhlIGlu
Zm9ybWF0aW9uIG5lZWRlZCB0byBiZWdpbiBhIGRyYWcuIEFsc28gcmVuYW1lcyBfc2V0RGF0YUlu
dGVyYWN0aW9uRGF0YToKKyAgICAgICAgdG8gX3N0YXJ0RHJhZzogdG8gbWF0Y2ggbG9naWMgdXNl
ZCB0byBzdGFydCBhIGRyYWcgb24gb3RoZXIgcGxhdGZvcm1zLgorCisgICAgICAgIE5vIGJlaGF2
aW9yIGNoYW5nZSAtLSB0aGUgc2FtZSBpbmZvcm1hdGlvbiBzaG91bGQgYmUgcHJvcGFnYXRlZCB0
byBBcHBLaXQgYW5kIFVJS2l0IHdoZW4gYmVnaW5uaW5nIGEgZHJhZywgb25seQorICAgICAgICB0
aHJvdWdoIHRoZSBEcmFnSXRlbSBzdHJ1Y3QuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5t
bToKKyAgICAgICAgKFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyk6CisgICAgICAgIChXZWJEcmFn
Q2xpZW50OjpkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KToKKyAgICAgICAgKFdlYkRyYWdD
bGllbnQ6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbik6CisgICAgICAgIChXZWJEcmFnQ2xp
ZW50OjpiZWdpbkRyYWcpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAg
KC1bV2ViVmlldyBfc3RhcnREcmFnOl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9zZXREYXRhSW50
ZXJhY3Rpb25EYXRhOnRleHRJbmRpY2F0b3I6YXRDbGllbnRQb3NpdGlvbjphbmNob3JQb2ludDph
Y3Rpb246XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaDoK
KwogMjAxNy0wNi0yMiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgTWFrZSBGcmFtZUxvYWRSZXF1ZXN0IGEgbW92ZS1vbmx5IHR5cGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpp
bmRleCAyYTUyZDgyZjE0NDY5YmIxN2ExMzJkMTA2MzRmOTcwY2Y4MDQ1NTBlLi5mN2Y2OTFlMGI4
ZmQ0N2ViOTgyZjIwNDk2M2E1NjFjMzZhN2Q4NzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTctMDYtMjYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVmYWN0b3IgZHJhZyBzdGFydCBjb2RlcGF0aHMgdG8gcGx1bWIgYSBE
cmFnSXRlbSB0byBjbGllbnQgbGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzM4MzIKKyAgICAgICAgV29yayB0b3dhcmRzIDxyZGFyOi8vcHJv
YmxlbS8zMjIzNjgyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGp1c3QgZm9yIGNoYW5nZXMgdG8gV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnIGJ5
IHB1bGxpbmcgaW5mb3JtYXRpb24gb3V0IG9mIERyYWdJdGVtLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHA6CisgICAgICAgIChXZWJEcmFnQ2xpZW50OjpzdGFy
dERyYWcpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaDoKKwogMjAx
Ny0wNi0yMiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgTWFr
ZSBGcmFtZUxvYWRSZXF1ZXN0IGEgbW92ZS1vbmx5IHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA1MzUzYWYw
ZmNiNzUzNDE2NjNkMWFjOTU4YWEwZDliMTgyOTliNDk3Li43YTM3YmQ3NTQ5MzVlOTMxYjJkNzEz
N2Y3NGI0NjdjNjQwYWJmYmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMTctMDYt
MjYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVm
YWN0b3IgZHJhZyBzdGFydCBjb2RlcGF0aHMgdG8gcGx1bWIgYSBEcmFnSXRlbSB0byBjbGllbnQg
bGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzM4MzIKKyAgICAgICAgV29yayB0b3dhcmRzIDxyZGFyOi8vcHJvYmxlbS8zMjIzNjgyNz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9y
dCBmb3Igc2VyaWFsaXppbmcgYSBEcmFnSXRlbSBvdmVyIElQQy4gVGhpcyBlbmNvZGVzIGFuZCBk
ZWNvZGVzIGFsbCBtZW1iZXJzIG9mIERyYWdJdGVtIGV4Y2VwdCBmb3IgdGhlCisgICAgICAgIFBh
c3RlYm9hcmRXcml0ZXJEYXRhIGFuZCB0aGUgRHJhZ0ltYWdlJ3MgaW1hZ2UuIFRoZSBEcmFnSXRl
bSBpcyBzZW50IG92ZXIgdG8gdGhlIFVJIHByb2Nlc3MgaW4KKyAgICAgICAgV2ViRHJhZ0NsaWVu
dDo6c3RhcnREcmFnIHZpYSB0aGUgV2ViUGFnZVByb3h5OjpzdGFydERyYWcgSVBDIG1lc3NhZ2Ug
KHJlbmFtZWQgZnJvbSBXZWJQYWdlUHJveHk6OnNldERyYWdJbWFnZSkKKyAgICAgICAgd2hpY2gg
bm93IHRha2VzIGEgRHJhZ0l0ZW0uCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weToKKyAgICAgICAgKGhlYWRlcnNfZm9yX3R5cGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERyYWdJ
dGVtPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxEcmFnSXRlbT46OmRl
Y29kZSk6CisKKyAgICAgICAgQWRkIGVuY29kZSBhbmQgZGVjb2RlIHN1cHBvcnQgZm9yIERyYWdJ
dGVtLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzdGFydERyYWcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnNldERyYWdJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICBSZW5hbWUgU2V0RHJh
Z0ltYWdlIHRvIFN0YXJ0RHJhZyBhbmQgcmVmYWN0b3IgdG8gcmVjZWl2ZSBvbmx5IGEgRHJhZ0l0
ZW0gYW5kIHNoYXJlYWJsZSBiaXRtYXAgaGFuZGxlLgorCisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzdGFydERyYWcp
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c3RhcnREYXRhSW50ZXJhY3Rpb25X
aXRoSW1hZ2UpOiBEZWxldGVkLgorCisgICAgICAgIFJlbmFtZSBzdGFydERhdGFJbnRlcmFjdGlv
bldpdGhJbWFnZSB0byBzdGFydERyYWcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zdGFydERyYWc6
aXRlbTpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc3RhcnREYXRhSW50ZXJhY3Rpb25X
aXRoSW1hZ2U6d2l0aEluZGljYXRvckRhdGE6YXRDbGllbnRQb3NpdGlvbjphbmNob3JQb2ludDph
Y3Rpb246XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3RhcnREcmFnKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXREcmFnSW1hZ2UpOiBEZWxldGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJh
Z0NsaWVudDo6c3RhcnREcmFnKToKKwogMjAxNy0wNi0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIERuRF0gW1dLMl0gRW5hYmxlIGluLWFw
cCBkcmFnZ2luZyBmcm9tIFdLV2ViVmlldyBvbiB0aGUgcGhvbmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggYWRkNDdiNjFhNGY2OTI5M2VlNjU0YjIyMjBiOWZmYTg0
OGUwOTBlZC4uZmM0NWIxZjRhODEwMDA5MDRmMDdiNDA3YTU2YjhlNzBiYjA5MDA2MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBjbGFz
cyBFbXB0eURyYWdDbGllbnQgZmluYWwgOiBwdWJsaWMgRHJhZ0NsaWVudCB7CiAgICAgdm9pZCB3
aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25BY3Rpb24sIGNv
bnN0IERyYWdEYXRhJikgZmluYWwgeyB9CiAgICAgdm9pZCB3aWxsUGVyZm9ybURyYWdTb3VyY2VB
Y3Rpb24oRHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgSW50UG9pbnQmLCBEYXRhVHJhbnNmZXImKSBm
aW5hbCB7IH0KICAgICBEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9p
bnQoY29uc3QgSW50UG9pbnQmKSBmaW5hbCB7IHJldHVybiBEcmFnU291cmNlQWN0aW9uTm9uZTsg
fQotICAgIHZvaWQgc3RhcnREcmFnKERyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJ
bnRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBEYXRhVHJhbnNmZXImLCBGcmFtZSYsIERyYWdT
b3VyY2VBY3Rpb24pIGZpbmFsIHsgfQorICAgIHZvaWQgc3RhcnREcmFnKERyYWdJdGVtLCBEYXRh
VHJhbnNmZXImLCBGcmFtZSYpIGZpbmFsIHsgfQogICAgIHZvaWQgZHJhZ0NvbnRyb2xsZXJEZXN0
cm95ZWQoKSBmaW5hbCB7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xpZW50LmgKaW5kZXggZWNk
ZWI3ZjQ3M2MzZDlkYmM1MGQzMGQyYmNkNTRkMTZlYzc4YjJjOC4uZWNlNWE5MDNiYzA2ZTJhNjI2
OGUyM2E1OWY5NDdjOWE5ZWNlNGFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xpZW50LmgKQEAgLTQ5
LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDb25jbHVkZUVkaXREcmFn
KCkgeyB9CiAgICAgdmlydHVhbCBEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb25NYXNr
Rm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHJvb3RWaWV3UG9pbnQpID0gMDsKICAgICAKLSAgICB2
aXJ0dWFsIHZvaWQgc3RhcnREcmFnKERyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQmIGRyYWdJbWFn
ZU9yaWdpbiwgY29uc3QgSW50UG9pbnQmIGV2ZW50UG9zLCBjb25zdCBGbG9hdFBvaW50JiBkcmFn
SW1hZ2VBbmNob3IsIERhdGFUcmFuc2ZlciYsIEZyYW1lJiwgRHJhZ1NvdXJjZUFjdGlvbikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzdGFydERyYWcoRHJhZ0l0ZW0sIERhdGFUcmFuc2ZlciYsIEZy
YW1lJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmFnRW5kZWQoKSB7IH0KIAogICAgIHZpcnR1
YWwgdm9pZCBiZWdpbkRyYWcoRHJhZ0l0ZW0sIEZyYW1lJiwgY29uc3QgSW50UG9pbnQmLCBjb25z
dCBJbnRQb2ludCYsIERhdGFUcmFuc2ZlciYsIERyYWdTb3VyY2VBY3Rpb24pIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCBmZmJlOGY4YmU1OWU3OTMwOTRhMjk0
MWYyZTJmMDdlNzg3ZTM4MmFhLi5lMDhkZmViMzE1MjVhYjg2ZTU4YWUxODU2OTVmYzJjMGUzNGIz
YTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtNDMsNiArNDMs
NyBAQAogI2luY2x1ZGUgIkVkaXRpbmcuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRl
ICJFZGl0b3JDbGllbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oIgog
I2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZFJlcXVlc3QuaCIKQEAgLTUyLDYgKzUzLDcgQEAKICNpbmNsdWRlICJIVE1M
QXR0YWNobWVudEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIK
ICNpbmNsdWRlICJIVE1MUGx1Z0luRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXF1ZXN0
LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgpAQCAtOTYzLDcgKzk2NSw3IEBAIGJvb2wg
RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0
YXRlLCBEcmFnT3BlcmF0aW9uCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAg
aWYgKG11c3RVc2VMZWdhY3lEcmFnQ2xpZW50KSB7Ci0gICAgICAgICAgICBkb1N5c3RlbURyYWco
V1RGTW92ZShkcmFnSW1hZ2UpLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBkcmFnSW1hZ2VCb3VuZHMs
IGRhdGFUcmFuc2Zlciwgc3JjLCBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKTsKKyAgICAgICAg
ICAgIGRvU3lzdGVtRHJhZyhXVEZNb3ZlKGRyYWdJbWFnZSksIGRyYWdMb2MsIGRyYWdPcmlnaW4s
IHNyYywgc3RhdGUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApAQCAt
OTk2LDEwICs5OTgsMTAgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBz
cmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24KICAgICAgICAgbV9jbGll
bnQud2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25JbWFnZSwgZHJh
Z09yaWdpbiwgZGF0YVRyYW5zZmVyKTsKIAogICAgICAgICBpZiAoIWRyYWdJbWFnZSkKLSAgICAg
ICAgICAgIGRvSW1hZ2VEcmFnKGVsZW1lbnQsIGRyYWdPcmlnaW4sIGhpdFRlc3RSZXN1bHQuaW1h
Z2VSZWN0KCksIGRhdGFUcmFuc2Zlciwgc3JjLCBtX2RyYWdPZmZzZXQpOworICAgICAgICAgICAg
ZG9JbWFnZURyYWcoZWxlbWVudCwgZHJhZ09yaWdpbiwgaGl0VGVzdFJlc3VsdC5pbWFnZVJlY3Qo
KSwgc3JjLCBtX2RyYWdPZmZzZXQsIHN0YXRlKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICAvLyBESFRNTCBkZWZpbmVkIGRyYWcgaW1hZ2UKLSAgICAgICAgICAgIGRvU3lzdGVtRHJhZyhX
VEZNb3ZlKGRyYWdJbWFnZSksIGRyYWdMb2MsIGRyYWdPcmlnaW4sIHsgfSwgZGF0YVRyYW5zZmVy
LCBzcmMsIERyYWdTb3VyY2VBY3Rpb25JbWFnZSk7CisgICAgICAgICAgICBkb1N5c3RlbURyYWco
V1RGTW92ZShkcmFnSW1hZ2UpLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBzcmMsIHN0YXRlKTsKICAg
ICAgICAgfQogCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTA1MSw3ICsxMDUzLDcgQEAgYm9v
bCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYg
c3RhdGUsIERyYWdPcGVyYXRpb24KICAgICAgICAgfQogCiAgICAgICAgIGlmIChtdXN0VXNlTGVn
YWN5RHJhZ0NsaWVudCkgewotICAgICAgICAgICAgZG9TeXN0ZW1EcmFnKFdURk1vdmUoZHJhZ0lt
YWdlKSwgZHJhZ0xvYywgZHJhZ09yaWdpbiwgeyB9LCBkYXRhVHJhbnNmZXIsIHNyYywgRHJhZ1Nv
dXJjZUFjdGlvbkxpbmspOworICAgICAgICAgICAgZG9TeXN0ZW1EcmFnKFdURk1vdmUoZHJhZ0lt
YWdlKSwgZHJhZ0xvYywgZHJhZ09yaWdpbiwgc3JjLCBzdGF0ZSk7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC0xMTAyLDcgKzExMDQsNyBAQCBib29sIERyYWdDb250
cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJh
Z09wZXJhdGlvbgogICAgICAgICAgICAgZHJhZ0xvYyA9IGRyYWdMb2NGb3JTZWxlY3Rpb25EcmFn
KHNyYyk7CiAgICAgICAgICAgICBtX2RyYWdPZmZzZXQgPSBJbnRQb2ludChkcmFnT3JpZ2luLngo
KSAtIGRyYWdMb2MueCgpLCBkcmFnT3JpZ2luLnkoKSAtIGRyYWdMb2MueSgpKTsKICAgICAgICAg
fQotICAgICAgICBkb1N5c3RlbURyYWcoV1RGTW92ZShkcmFnSW1hZ2UpLCBkcmFnTG9jLCBkcmFn
T3JpZ2luLCB7IH0sIGRhdGFUcmFuc2Zlciwgc3JjLCBEcmFnU291cmNlQWN0aW9uQXR0YWNobWVu
dCk7CisgICAgICAgIGRvU3lzdGVtRHJhZyhXVEZNb3ZlKGRyYWdJbWFnZSksIGRyYWdMb2MsIGRy
YWdPcmlnaW4sIHNyYywgc3RhdGUpOwogICAgICAgICBzcmMuc2VsZWN0aW9uKCkuc2V0U2VsZWN0
aW9uKHByZXZpb3VzU2VsZWN0aW9uKTsKICAgICAgICAgc3JjLmVkaXRvcigpLnNldElnbm9yZVNl
bGVjdGlvbkNoYW5nZXMoZmFsc2UpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExMTIsMTQg
KzExMTQsMTQgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNv
bnN0IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24KICAgICBpZiAoc3RhdGUudHlwZSA9
PSBEcmFnU291cmNlQWN0aW9uREhUTUwgJiYgZHJhZ0ltYWdlKSB7CiAgICAgICAgIEFTU0VSVCht
X2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uREhUTUwpOwogICAgICAgICBtX2Ns
aWVudC53aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvbkRIVE1MLCBk
cmFnT3JpZ2luLCBkYXRhVHJhbnNmZXIpOwotICAgICAgICBkb1N5c3RlbURyYWcoV1RGTW92ZShk
cmFnSW1hZ2UpLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCB7IH0sIGRhdGFUcmFuc2Zlciwgc3JjLCBE
cmFnU291cmNlQWN0aW9uREhUTUwpOworICAgICAgICBkb1N5c3RlbURyYWcoV1RGTW92ZShkcmFn
SW1hZ2UpLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBzcmMsIHN0YXRlKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIERyYWdDb250cm9s
bGVyOjpkb0ltYWdlRHJhZyhFbGVtZW50JiBlbGVtZW50LCBjb25zdCBJbnRQb2ludCYgZHJhZ09y
aWdpbiwgY29uc3QgSW50UmVjdCYgbGF5b3V0UmVjdCwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNm
ZXIsIEZyYW1lJiBmcmFtZSwgSW50UG9pbnQmIGRyYWdJbWFnZU9mZnNldCkKK3ZvaWQgRHJhZ0Nv
bnRyb2xsZXI6OmRvSW1hZ2VEcmFnKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEludFBvaW50JiBk
cmFnT3JpZ2luLCBjb25zdCBJbnRSZWN0JiBsYXlvdXRSZWN0LCBGcmFtZSYgZnJhbWUsIEludFBv
aW50JiBkcmFnSW1hZ2VPZmZzZXQsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUpCiB7CiAgICAgSW50
UG9pbnQgbW91c2VEb3duUG9pbnQgPSBkcmFnT3JpZ2luOwogICAgIERyYWdJbWFnZSBkcmFnSW1h
Z2U7CkBAIC0xMTYwLDcgKzExNjIsNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpkb0ltYWdlRHJh
ZyhFbGVtZW50JiBlbGVtZW50LCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbiwgYwogICAgICAg
ICByZXR1cm47CiAKICAgICBkcmFnSW1hZ2VPZmZzZXQgPSBtb3VzZURvd25Qb2ludCArIHNjYWxl
ZE9yaWdpbjsKLSAgICBkb1N5c3RlbURyYWcoV1RGTW92ZShkcmFnSW1hZ2UpLCBkcmFnSW1hZ2VP
ZmZzZXQsIGRyYWdPcmlnaW4sIGVsZW1lbnQuYm91bmRzSW5Sb290Vmlld1NwYWNlKCksIGRhdGFU
cmFuc2ZlciwgZnJhbWUsIERyYWdTb3VyY2VBY3Rpb25JbWFnZSk7CisgICAgZG9TeXN0ZW1EcmFn
KFdURk1vdmUoZHJhZ0ltYWdlKSwgZHJhZ0ltYWdlT2Zmc2V0LCBkcmFnT3JpZ2luLCBmcmFtZSwg
c3RhdGUpOwogfQogCiB2b2lkIERyYWdDb250cm9sbGVyOjpiZWdpbkRyYWcoRHJhZ0l0ZW0gZHJh
Z0l0ZW0sIEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UG9pbnQmIG1vdXNlRG93blBvaW50LCBjb25z
dCBJbnRQb2ludCYgbW91c2VEcmFnZ2VkUG9pbnQsIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVy
LCBEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb24pCkBAIC0xMTg3LDIyICsxMTg5LDQx
IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmJlZ2luRHJhZyhEcmFnSXRlbSBkcmFnSXRlbSwgRnJh
bWUmIGZyYW1lLCBjb25zdCBJbnRQb2ludCYKICAgICBjbGVhbnVwQWZ0ZXJTeXN0ZW1EcmFnKCk7
CiB9CiAKLXZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRvU3lzdGVtRHJhZyhEcmFnSW1hZ2UgaW1hZ2Us
IGNvbnN0IEludFBvaW50JiBkcmFnTG9jLCBjb25zdCBJbnRQb2ludCYgZXZlbnRQb3MsIGNvbnN0
IEludFJlY3QmIGRyYWdJbWFnZUJvdW5kcywgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIEZy
YW1lJiBmcmFtZSwgRHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uKQordm9pZCBEcmFn
Q29udHJvbGxlcjo6ZG9TeXN0ZW1EcmFnKERyYWdJbWFnZSBpbWFnZSwgY29uc3QgSW50UG9pbnQm
IGRyYWdMb2MsIGNvbnN0IEludFBvaW50JiBldmVudFBvcywgRnJhbWUmIGZyYW1lLCBjb25zdCBE
cmFnU3RhdGUmIHN0YXRlKQogewotICAgIEZsb2F0UG9pbnQgZHJhZ0ltYWdlQW5jaG9yID0geyAw
LjUsIDAuNSB9OwotICAgIGlmIChkcmFnU291cmNlQWN0aW9uID09IERyYWdTb3VyY2VBY3Rpb25M
aW5rKQotICAgICAgICBkcmFnSW1hZ2VBbmNob3Iuc2V0WSgxKTsKLSAgICBlbHNlIGlmICghZHJh
Z0ltYWdlQm91bmRzLmlzRW1wdHkoKSkgewotICAgICAgICBkcmFnSW1hZ2VBbmNob3Iuc2V0WCgo
ZXZlbnRQb3MueCgpIC0gZHJhZ0ltYWdlQm91bmRzLngoKSkgLyAoZmxvYXQpZHJhZ0ltYWdlQm91
bmRzLndpZHRoKCkpOwotICAgICAgICBkcmFnSW1hZ2VBbmNob3Iuc2V0WSgoZXZlbnRQb3MueSgp
IC0gZHJhZ0ltYWdlQm91bmRzLnkoKSkgLyAoZmxvYXQpZHJhZ0ltYWdlQm91bmRzLmhlaWdodCgp
KTsKLSAgICB9Ci0KICAgICBtX2RpZEluaXRpYXRlRHJhZyA9IHRydWU7CiAgICAgbV9kcmFnSW5p
dGlhdG9yID0gZnJhbWUuZG9jdW1lbnQoKTsKICAgICAvLyBQcm90ZWN0IHRoaXMgZnJhbWUgYW5k
IHZpZXcsIGFzIGEgbG9hZCBtYXkgb2NjdXIgbWlkIGRyYWcgYW5kIGF0dGVtcHQgdG8gdW5sb2Fk
IHRoaXMgZnJhbWUKICAgICBSZWY8TWFpbkZyYW1lPiBmcmFtZVByb3RlY3RvcihtX3BhZ2UubWFp
bkZyYW1lKCkpOwogICAgIFJlZlB0cjxGcmFtZVZpZXc+IHZpZXdQcm90ZWN0b3IgPSBmcmFtZVBy
b3RlY3Rvci0+dmlldygpOwotICAgIG1fY2xpZW50LnN0YXJ0RHJhZyhXVEZNb3ZlKGltYWdlKSwg
dmlld1Byb3RlY3Rvci0+cm9vdFZpZXdUb0NvbnRlbnRzKGZyYW1lLnZpZXcoKS0+Y29udGVudHNU
b1Jvb3RWaWV3KGRyYWdMb2MpKSwgdmlld1Byb3RlY3Rvci0+cm9vdFZpZXdUb0NvbnRlbnRzKGZy
YW1lLnZpZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KGV2ZW50UG9zKSksIGRyYWdJbWFnZUFuY2hv
ciwgZGF0YVRyYW5zZmVyLCBmcmFtZVByb3RlY3Rvci5nZXQoKSwgZHJhZ1NvdXJjZUFjdGlvbik7
CisKKyAgICBEcmFnSXRlbSBpdGVtOworICAgIGl0ZW0uaW1hZ2UgPSBXVEZNb3ZlKGltYWdlKTsK
KyAgICBpdGVtLnNvdXJjZUFjdGlvbiA9IHN0YXRlLnR5cGU7CisgICAgaXRlbS5ldmVudFBvc2l0
aW9uSW5Db250ZW50Q29vcmRpbmF0ZXMgPSB2aWV3UHJvdGVjdG9yLT5yb290Vmlld1RvQ29udGVu
dHMoZnJhbWUudmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcoZXZlbnRQb3MpKTsKKyAgICBpdGVt
LmRyYWdMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0gdmlld1Byb3RlY3Rvci0+cm9vdFZp
ZXdUb0NvbnRlbnRzKGZyYW1lLnZpZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KGRyYWdMb2MpKTsK
KyAgICBpdGVtLmV2ZW50UG9zaXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzID0gZnJhbWUudmlldygp
LT5jb250ZW50c1RvV2luZG93KGl0ZW0uZXZlbnRQb3NpdGlvbkluQ29udGVudENvb3JkaW5hdGVz
KTsKKyAgICBpdGVtLmRyYWdMb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMgPSBmcmFtZS52aWV3
KCktPmNvbnRlbnRzVG9XaW5kb3coaXRlbS5kcmFnTG9jYXRpb25JbkNvbnRlbnRDb29yZGluYXRl
cyk7CisgICAgaWYgKGF1dG8gZWxlbWVudCA9IHN0YXRlLnNvdXJjZSkgeworICAgICAgICBpdGVt
LmVsZW1lbnRCb3VuZHMgPSBlbGVtZW50LT5ib3VuZHNJblJvb3RWaWV3U3BhY2UoKTsKKyAgICAg
ICAgUmVmUHRyPEVsZW1lbnQ+IGxpbms7CisgICAgICAgIGlmIChlbGVtZW50LT5pc0xpbmsoKSkK
KyAgICAgICAgICAgIGxpbmsgPSBlbGVtZW50OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IGZvciAoYXV0byYgY3VycmVudEVsZW1lbnQgOiBlbGVtZW50TGluZWFnZShlbGVtZW50LmdldCgp
KSkgeworICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RWxlbWVudC5pc0xpbmsoKSkgeworICAg
ICAgICAgICAgICAgICAgICBsaW5rID0gJmN1cnJlbnRFbGVtZW50OworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGxpbmspIHsKKyAgICAgICAgICAgIGF1dG8gdGl0bGVBdHRyaWJ1dGUgPSBs
aW5rLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6dGl0bGVBdHRy
KTsKKyAgICAgICAgICAgIGl0ZW0udGl0bGUgPSB0aXRsZUF0dHJpYnV0ZS5pc0VtcHR5KCkgPyBs
aW5rLT5pbm5lclRleHQoKSA6IHRpdGxlQXR0cmlidXRlLnN0cmluZygpOworICAgICAgICAgICAg
aXRlbS51cmwgPSBmcmFtZS5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRU
cmFpbGluZ0hUTUxTcGFjZXMobGluay0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aHJlZkF0dHIp
KSk7CisgICAgICAgIH0KKyAgICB9CisgICAgbV9jbGllbnQuc3RhcnREcmFnKFdURk1vdmUoaXRl
bSksICpzdGF0ZS5kYXRhVHJhbnNmZXIsIGZyYW1lUHJvdGVjdG9yLmdldCgpKTsKICAgICAvLyBE
cmFnQ2xpZW50OjpzdGFydERyYWcgY2FuIGNhdXNlIG91ciBQYWdlIHRvIGRpc3BlYXIsIGRlYWxs
b2NhdGluZyB8dGhpc3wuCiAgICAgaWYgKCFmcmFtZVByb3RlY3Rvci0+cGFnZSgpKQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKaW5kZXggMmRmNmY0MGY2
NzdmYjU1MzQ0NWVlZGRiYjI2ZDM2OWY4M2U5ZGIzOS4uMmIwYmVjZDNhM2JlYjlmN2ZiNzAzOWZl
MTllZWMyNWEyOGQ5YWQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaApAQCAt
MTE1LDggKzExNSw4IEBAIHN0cnVjdCBEcmFnU3RhdGU7CiAgICAgICAgIHZvaWQgbW91c2VNb3Zl
ZEludG9Eb2N1bWVudChEb2N1bWVudCopOwogICAgICAgICBib29sIHNob3VsZFVzZUNhY2hlZElt
YWdlRm9yRHJhZ0ltYWdlKGNvbnN0IEltYWdlJikgY29uc3Q7CiAKLSAgICAgICAgdm9pZCBkb0lt
YWdlRHJhZyhFbGVtZW50JiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRSZWN0JiwgRGF0YVRy
YW5zZmVyJiwgRnJhbWUmLCBJbnRQb2ludCYpOwotICAgICAgICB2b2lkIGRvU3lzdGVtRHJhZyhE
cmFnSW1hZ2UsIGNvbnN0IEludFBvaW50JiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRSZWN0
JiBkcmFnSW1hZ2VCb3VuZHMsIERhdGFUcmFuc2ZlciYsIEZyYW1lJiwgRHJhZ1NvdXJjZUFjdGlv
bik7CisgICAgICAgIHZvaWQgZG9JbWFnZURyYWcoRWxlbWVudCYsIGNvbnN0IEludFBvaW50Jiwg
Y29uc3QgSW50UmVjdCYsIEZyYW1lJiwgSW50UG9pbnQmLCBjb25zdCBEcmFnU3RhdGUmKTsKKyAg
ICAgICAgdm9pZCBkb1N5c3RlbURyYWcoRHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYsIGNvbnN0
IEludFBvaW50JiwgRnJhbWUmLCBjb25zdCBEcmFnU3RhdGUmKTsKIAogICAgICAgICB2b2lkIGJl
Z2luRHJhZyhEcmFnSXRlbSwgRnJhbWUmLCBjb25zdCBJbnRQb2ludCYgbW91c2VEb3duUG9pbnQs
IGNvbnN0IEludFBvaW50JiBtb3VzZURyYWdnZWRQb2ludCwgRGF0YVRyYW5zZmVyJiwgRHJhZ1Nv
dXJjZUFjdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJ
bWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgKaW5kZXggZTYxMjJi
YmE1ZTJjZWUzOTEzOWYwM2MwM2NiMGFkNjczMjBkN2E2Mi4uYWExNjk5ZTU2OGNiMTAyZTc5MDIx
ZjA4NTc5ZWNiNGI0MDU3ZDlkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RHJhZ0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgKQEAg
LTk3LDEwICs5NywxMCBAQCBGbG9hdFBvaW50IGFuY2hvclBvaW50Rm9yTGlua0RyYWdJbWFnZShE
cmFnSW1hZ2VSZWYpOwogCiBjbGFzcyBEcmFnSW1hZ2UgZmluYWwgewogcHVibGljOgotICAgIERy
YWdJbWFnZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdJbWFnZSgpOwogICAgIGV4cGxpY2l0
IERyYWdJbWFnZShEcmFnSW1hZ2VSZWYpOwogICAgIERyYWdJbWFnZShEcmFnSW1hZ2UmJik7Ci0g
ICAgfkRyYWdJbWFnZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIH5EcmFnSW1hZ2UoKTsKIAogICAg
IERyYWdJbWFnZSYgb3BlcmF0b3I9KERyYWdJbWFnZSYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0l0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ry
YWdJdGVtLmgKaW5kZXggODcxMzFlMTIyZjA3ZmE4NDFlMDU5MGFmMTlhOWU2MjJiYzQ3OTNlNy4u
MzAzNDJkYmY3N2IzN2ZjM2FmYjUyZDU1ZjMzOTk1NGVlYWVhNTcxZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0l0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EcmFnSXRlbS5oCkBAIC0yNyw2ICsyNyw4IEBACiAKICNpbmNsdWRlICJEcmFnSW1hZ2Uu
aCIKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNs
dWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZFdyaXRlckRhdGEuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcsNiArMzksMTUgQEAgc3RydWN0IERyYWdJdGVtIGZpbmFs
IHsKICAgICAvLyBXaGVyZSB0aGUgaW1hZ2Ugc2hvdWxkIGJlIHBvc2l0aW9uZWQgcmVsYXRpdmUg
dG8gdGhlIGN1cnNvci4KICAgICBGbG9hdFBvaW50IGltYWdlQW5jaG9yUG9pbnQ7CiAKKyAgICBE
cmFnU291cmNlQWN0aW9uIHNvdXJjZUFjdGlvbiB7IERyYWdTb3VyY2VBY3Rpb25Ob25lIH07Cisg
ICAgSW50UG9pbnQgZXZlbnRQb3NpdGlvbkluQ29udGVudENvb3JkaW5hdGVzOworICAgIEludFBv
aW50IGRyYWdMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzOworICAgIEludFBvaW50IGV2ZW50
UG9zaXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzOworICAgIEludFBvaW50IGRyYWdMb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXM7CisgICAgU3RyaW5nIHRpdGxlOworICAgIFVSTCB1cmw7CisgICAg
SW50UmVjdCBlbGVtZW50Qm91bmRzOworCiAgICAgUGFzdGVib2FyZFdyaXRlckRhdGEgZGF0YTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0
ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRh
LmNwcAppbmRleCBhNDVhNTJlMTgzNDc4YjAzMmVmZmMzMjUxYTkzMDgyYzNmYTUwYWNlLi5kMDA2
MWU4OGNlYWZiMWIxZThlNmI3NGE0NjBmZTI1MjZiMTEyYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuY3BwCkBAIC00OCwxMyArNDgsNyBA
QCBQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6V2ViQ29udGVudDo6fldlYkNvbnRlbnQoKQogCiBib29s
IFBhc3RlYm9hcmRXcml0ZXJEYXRhOjppc0VtcHR5KCkgY29uc3QKIHsKLSAgICBpZiAobV9wbGFp
blRleHQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChtX3VybCkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuICFtX3BsYWluVGV4
dCAmJiAhbV91cmwgJiYgIW1fd2ViQ29udGVudDsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkV3JpdGVy
RGF0YTo6c2V0UGxhaW5UZXh0KFBsYWluVGV4dCBwbGFpblRleHQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAppbmRleCAwZDFiNGI3MzZkMjI0ZWZk
ZjljMjBjNzRlODM3MjEzMmQxOTQ0OWM5Li42ZmVlZTkzMjUyZmM3OTVlMjY1NmFiYWQ5NGVjODJl
NjU2MzI5MjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
V3JpdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0
ZXJEYXRhLmgKQEAgLTM1LDggKzM1LDggQEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQ
YXN0ZWJvYXJkV3JpdGVyRGF0YSBmaW5hbCB7CiBwdWJsaWM6Ci0gICAgUGFzdGVib2FyZFdyaXRl
ckRhdGEoKTsKLSAgICB+UGFzdGVib2FyZFdyaXRlckRhdGEoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBQYXN0ZWJvYXJkV3JpdGVyRGF0YSgpOworICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJk
V3JpdGVyRGF0YSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0VtcHR5KCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQu
aAppbmRleCA4MTUxZjYzY2JiOWU4NzM0NzVkN2Q4MjUyMWZhMzgyMzJmZTNhNmZjLi4xN2JjNjlh
YmViYmNmMjJmY2MyNTQ5OTYwODVmNjcwMDhjNzQ1YTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihXZWJDb3JlOjpEcmFn
U291cmNlQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OkRhdGFUcmFu
c2ZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQoKSBvdmVy
cmlkZTsKICAgICBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb25NYXNr
Rm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHdpbmRvd1BvaW50KSBvdmVycmlkZTsK
LSAgICB2b2lkIHN0YXJ0RHJhZyhXZWJDb3JlOjpEcmFnSW1hZ2UsIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBkcmFnUG9zLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZXZlbnRQb3MsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImLCBXZWJDb3JlOjpG
cmFtZSYsIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24pIG92ZXJyaWRlOworICAgIHZvaWQgc3Rh
cnREcmFnKFdlYkNvcmU6OkRyYWdJdGVtLCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImLCBXZWJDb3Jl
OjpGcmFtZSYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBiZWdpbkRyYWcoV2ViQ29yZTo6RHJhZ0l0
ZW0sIFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG1vdXNlRG93blBv
c2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbW91c2VEcmFnZ2VkUG9zaXRpb24sIFdl
YkNvcmU6OkRhdGFUcmFuc2ZlciYsIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24pIG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVu
dC5tbQppbmRleCAxMTVhODM3MzI5NWM3NjE2YzAyMDhjMTNhMzIwODk0ODY1ZDI1ZWRjLi41OGE0
Y2YzODVlNmUwOTFjZjQ5OGQ0ZWIzZWQxYjYwOWZmYWYzMzA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0KQEAgLTUwLDYgKzUwLDcg
QEAKICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRvckNs
aWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9FdmVudEhhbmRsZXIuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvRmxvYXRQb2ludC5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CkBAIC0xMDAs
MTMgKzEwMSwxNiBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFj
dGlvbihXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGFjdGlvbgogICAgIFtbbV93ZWJWaWV3IF9V
SURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyB3aWxsUGVyZm9ybURyYWdTb3Vy
Y2VBY3Rpb246KFdlYkRyYWdTb3VyY2VBY3Rpb24pYWN0aW9uIGZyb21Qb2ludDptb3VzZURvd25Q
b2ludCB3aXRoUGFzdGVib2FyZDpbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoTmFtZTpkYXRh
VHJhbnNmZXIucGFzdGVib2FyZCgpLm5hbWUoKV1dOwogfQogCi12b2lkIFdlYkRyYWdDbGllbnQ6
OnN0YXJ0RHJhZyhEcmFnSW1hZ2UgZHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYgYXQsIGNvbnN0
IEludFBvaW50JiBldmVudFBvcywgY29uc3QgRmxvYXRQb2ludCYsIERhdGFUcmFuc2ZlciYgZGF0
YVRyYW5zZmVyLCBGcmFtZSYgZnJhbWUsIERyYWdTb3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlv
bikKK3ZvaWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJdGVtIGRyYWdJdGVtLCBEYXRh
VHJhbnNmZXImIGRhdGFUcmFuc2ZlciwgRnJhbWUmIGZyYW1lKQogeworICAgIGF1dG8mIGRyYWdJ
bWFnZSA9IGRyYWdJdGVtLmltYWdlOworICAgIGF1dG8gZHJhZ0xvY2F0aW9uSW5Db250ZW50Q29v
cmRpbmF0ZXMgPSBkcmFnSXRlbS5kcmFnTG9jYXRpb25JbkNvbnRlbnRDb29yZGluYXRlczsKKwog
ICAgIFJldGFpblB0cjxXZWJIVE1MVmlldz4gaHRtbFZpZXcgPSAoV2ViSFRNTFZpZXcqKVtba2l0
KCZmcmFtZSkgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddOwogICAgIGlmICghW2h0bWxWaWV3Lmdl
dCgpIGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNzXV0pCiAgICAgICAgIHJldHVybjsK
ICAgICAKLSAgICBOU0V2ZW50ICpldmVudCA9IGRyYWdTb3VyY2VBY3Rpb24gPT0gRHJhZ1NvdXJj
ZUFjdGlvbkxpbmsgPyBmcmFtZS5ldmVudEhhbmRsZXIoKS5jdXJyZW50TlNFdmVudCgpIDogW2h0
bWxWaWV3LmdldCgpIF9tb3VzZURvd25FdmVudF07CisgICAgTlNFdmVudCAqZXZlbnQgPSBkcmFn
SXRlbS5zb3VyY2VBY3Rpb24gPT0gRHJhZ1NvdXJjZUFjdGlvbkxpbmsgPyBmcmFtZS5ldmVudEhh
bmRsZXIoKS5jdXJyZW50TlNFdmVudCgpIDogW2h0bWxWaWV3LmdldCgpIF9tb3VzZURvd25FdmVu
dF07CiAgICAgV2ViSFRNTFZpZXcqIHRvcEhUTUxWaWV3ID0gZ2V0VG9wSFRNTFZpZXcoJmZyYW1l
KTsKICAgICBSZXRhaW5QdHI8V2ViSFRNTFZpZXc+IHRvcFZpZXdQcm90ZWN0b3IgPSB0b3BIVE1M
VmlldzsKICAgICAKQEAgLTEyNCwxNCArMTI4LDE0IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6c3Rh
cnREcmFnKERyYWdJbWFnZSBkcmFnSW1hZ2UsIGNvbnN0IEludFBvaW50JiBhdCwgY29uc3QgSW50
CiAgICAgU0VMIHNlbGVjdG9yID0gQHNlbGVjdG9yKHdlYlZpZXc6ZHJhZ0ltYWdlOmF0Om9mZnNl
dDpldmVudDpwYXN0ZWJvYXJkOnNvdXJjZTpzbGlkZUJhY2s6Zm9yVmlldzopOwogICAgIGlmIChb
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkgewogICAgICAgICBAdHJ5IHsK
LSAgICAgICAgICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fd2ViVmlldyBkcmFnSW1hZ2U6ZHJhZ05T
SW1hZ2UgYXQ6YXQgb2Zmc2V0Ok5TWmVyb1NpemUgZXZlbnQ6ZXZlbnQgcGFzdGVib2FyZDpwYXN0
ZWJvYXJkIHNvdXJjZTpzb3VyY2VIVE1MVmlldyBzbGlkZUJhY2s6WUVTIGZvclZpZXc6dG9wSFRN
TFZpZXddOworICAgICAgICAgICAgW2RlbGVnYXRlIHdlYlZpZXc6bV93ZWJWaWV3IGRyYWdJbWFn
ZTpkcmFnTlNJbWFnZSBhdDpkcmFnTG9jYXRpb25JbkNvbnRlbnRDb29yZGluYXRlcyBvZmZzZXQ6
TlNaZXJvU2l6ZSBldmVudDpldmVudCBwYXN0ZWJvYXJkOnBhc3RlYm9hcmQgc291cmNlOnNvdXJj
ZUhUTUxWaWV3IHNsaWRlQmFjazpZRVMgZm9yVmlldzp0b3BIVE1MVmlld107CiAgICAgICAgIH0g
QGNhdGNoIChpZCBleGNlcHRpb24pIHsKICAgICAgICAgICAgIFJlcG9ydERpc2NhcmRlZERlbGVn
YXRlRXhjZXB0aW9uKHNlbGVjdG9yLCBleGNlcHRpb24pOwogICAgICAgICB9CiAgICAgfSBlbHNl
CiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgICAgIFt0b3BIVE1MVmll
dyBkcmFnSW1hZ2U6ZHJhZ05TSW1hZ2UgYXQ6YXQgb2Zmc2V0Ok5TWmVyb1NpemUgZXZlbnQ6ZXZl
bnQgcGFzdGVib2FyZDpwYXN0ZWJvYXJkIHNvdXJjZTpzb3VyY2VIVE1MVmlldyBzbGlkZUJhY2s6
WUVTXTsKKyAgICAgICAgW3RvcEhUTUxWaWV3IGRyYWdJbWFnZTpkcmFnTlNJbWFnZSBhdDpkcmFn
TG9jYXRpb25JbkNvbnRlbnRDb29yZGluYXRlcyBvZmZzZXQ6TlNaZXJvU2l6ZSBldmVudDpldmVu
dCBwYXN0ZWJvYXJkOnBhc3RlYm9hcmQgc291cmNlOnNvdXJjZUhUTUxWaWV3IHNsaWRlQmFjazpZ
RVNdOwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogfQogCkBAIC0xOTgsNyArMjAyLDcg
QEAgdm9pZCBXZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oV2ViQ29y
ZTo6RHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QKIHsKIH0KIAotdm9pZCBXZWJEcmFnQ2xpZW50Ojpz
dGFydERyYWcoV2ViQ29yZTo6RHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IEludFBv
aW50JiwgY29uc3QgRmxvYXRQb2ludCYsIERhdGFUcmFuc2ZlciYsIEZyYW1lJiwgV2ViQ29yZTo6
RHJhZ1NvdXJjZUFjdGlvbikKK3ZvaWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKFdlYkNvcmU6
OkRyYWdJdGVtLCBEYXRhVHJhbnNmZXImLCBGcmFtZSYpCiB7CiB9CiAKQEAgLTIzOSw5ICsyNDMs
OSBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihXZWJD
b3JlOjpEcmFnU291cmNlQWN0aW9uLCBjb25zdAogewogfQogCi12b2lkIFdlYkRyYWdDbGllbnQ6
OnN0YXJ0RHJhZyhEcmFnSW1hZ2UgZHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYgcG9pbnQsIGNv
bnN0IEludFBvaW50JiBldmVudExvY2F0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBkcmFnSW1hZ2VB
bmNob3IsIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBGcmFtZSYgZnJhbWUsIERyYWdTb3Vy
Y2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbikKK3ZvaWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFn
KERyYWdJdGVtIGRyYWdJdGVtLCBEYXRhVHJhbnNmZXImLCBGcmFtZSYpCiB7Ci0gICAgW21fd2Vi
VmlldyBfc2V0RGF0YUludGVyYWN0aW9uRGF0YTpkcmFnSW1hZ2UuZ2V0KCkuZ2V0KCkgdGV4dElu
ZGljYXRvcjpkcmFnSW1hZ2UuaW5kaWNhdG9yRGF0YSgpIGF0Q2xpZW50UG9zaXRpb246ZXZlbnRM
b2NhdGlvbiBhbmNob3JQb2ludDpkcmFnSW1hZ2VBbmNob3IgYWN0aW9uOmRyYWdTb3VyY2VBY3Rp
b25dOworICAgIFttX3dlYlZpZXcgX3N0YXJ0RHJhZzpkcmFnSXRlbV07CiB9CiAKIHZvaWQgV2Vi
RHJhZ0NsaWVudDo6YmVnaW5EcmFnKERyYWdJdGVtLCBGcmFtZSYsIGNvbnN0IEludFBvaW50Jiwg
Y29uc3QgSW50UG9pbnQmLCBEYXRhVHJhbnNmZXImLCBEcmFnU291cmNlQWN0aW9uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDNhNzE1NWQ4MjYxYzJjNTVkMjEzMGUyZDUz
N2IwMjFhOTkwOTE5YmQuLmNhYjM2YTkzOTgxODZkM2MyMzY3MjEwMDFjYmE1YTJiNzJjZWNlYmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTEzMyw2ICsxMzMsNyBAQAog
I2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudExvYWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFn
Q29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnRGF0YS5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9EcmFnSXRlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9FZGl0aW5nLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0VkaXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9FdmVudEhhbmRsZXIuaD4KQEAgLTE4
MjcsOCArMTgyOCwxMiBAQCAtIChCT09MKV9yZXF1ZXN0U3RhcnREYXRhSW50ZXJhY3Rpb246KENH
UG9pbnQpY2xpZW50UG9zaXRpb24gZ2xvYmFsUG9zaXRpb246KENHUAogICAgIHJldHVybiBfcHJp
dmF0ZS0+cGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkudHJ5VG9CZWdpbkRhdGFJbnRl
cmFjdGlvbkF0UG9pbnQoSW50UG9pbnQoY2xpZW50UG9zaXRpb24pLCBJbnRQb2ludChnbG9iYWxQ
b3NpdGlvbikpOwogfQogCi0tICh2b2lkKV9zZXREYXRhSW50ZXJhY3Rpb25EYXRhOihDR0ltYWdl
UmVmKWltYWdlIHRleHRJbmRpY2F0b3I6KHN0ZDo6b3B0aW9uYWw8VGV4dEluZGljYXRvckRhdGE+
KWluZGljYXRvckRhdGEgYXRDbGllbnRQb3NpdGlvbjooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBh
bmNob3JQb2ludDooQ0dQb2ludClhbmNob3JQb2ludCBhY3Rpb246KHVpbnQ2NF90KWFjdGlvbgor
LSAodm9pZClfc3RhcnREcmFnOihjb25zdCBEcmFnSXRlbSYpZHJhZ0l0ZW0KIHsKKyAgICBhdXRv
JiBkcmFnSW1hZ2UgPSBkcmFnSXRlbS5pbWFnZTsKKyAgICBhdXRvIGltYWdlID0gZHJhZ0ltYWdl
LmdldCgpLmdldCgpOworICAgIGF1dG8gaW5kaWNhdG9yRGF0YSA9IGRyYWdJbWFnZS5pbmRpY2F0
b3JEYXRhKCk7CisKICAgICBpZiAoaW5kaWNhdG9yRGF0YSkKICAgICAgICAgX3ByaXZhdGUtPnRl
eHRJbmRpY2F0b3JEYXRhID0gYWRvcHROUyhbW1dlYlVJVGV4dEluZGljYXRvckRhdGEgYWxsb2Nd
IGluaXRXaXRoSW1hZ2U6aW1hZ2UgdGV4dEluZGljYXRvckRhdGE6aW5kaWNhdG9yRGF0YS52YWx1
ZSgpIHNjYWxlOl9wcml2YXRlLT5wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpXSk7CiAgICAgZWxz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwu
aCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKaW5kZXggOTEy
NGUxMjcxZWYxNWRmYzMwYTkyZjZlMDJlMmQ2MmE2NjQ4Y2Q3Yi4uMjQzNjkzZTE4MGEzZTNmMWNi
NDlmNjNjMGMyYmYyMGI4ZGE1ZTM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXdJbnRlcm5hbC5oCkBAIC02Myw2ICs2MywxMiBAQCBzdHJ1Y3QgRGljdGF0aW9uQWx0ZXJu
YXRpdmU7CiBzdHJ1Y3QgRGljdGlvbmFyeVBvcHVwSW5mbzsKIH0KIAorI2lmIFBMQVRGT1JNKElP
UykgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBE
cmFnSXRlbTsKK30KKyNlbmRpZgorCiBjbGFzcyBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
OwogY2xhc3MgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI7CiAKQEAgLTI2MSw3ICsyNjcs
NyBAQCBPQkpDX0NMQVNTIE5TVGV4dEFsdGVybmF0aXZlczsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KERBVEFfSU5URVJBQ1RJT04pICYmIGRlZmluZWQoX19jcGx1c3BsdXMpCi0tICh2b2lkKV9zZXRE
YXRhSW50ZXJhY3Rpb25EYXRhOihDR0ltYWdlUmVmKWltYWdlIHRleHRJbmRpY2F0b3I6KHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+KXRleHRJbmRpY2F0b3IgYXRDbGll
bnRQb3NpdGlvbjooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBhbmNob3JQb2ludDooQ0dQb2ludClh
bmNob3JQb2ludCBhY3Rpb246KHVpbnQ2NF90KWFjdGlvbjsKKy0gKHZvaWQpX3N0YXJ0RHJhZzoo
Y29uc3QgV2ViQ29yZTo6RHJhZ0l0ZW0mKWRyYWdJdGVtOwogLSAodm9pZClfZGlkQ29uY2x1ZGVF
ZGl0RGF0YUludGVyYWN0aW9uOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKaW5kZXggZTM3YmRmNjQ1ODIyNGU1NmMx
ZjE4Njk5N2IyNWY4ODk3OTA2NzA1Ny4uYWU0NjJiZDJmZDE2YzFjNTA2NTQ4ZmQ3YWY2NzMyMTYy
YTE2MjViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RHJhZ0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RHJhZ0NsaWVudC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFU
cmFuc2Zlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0NvbnRyb2xsZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0RyYWdEYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EcmFnSXRlbS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZp
ZXcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgpAQCAtOTgsMTEgKzk5
LDE1IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERy
YWdTb3VyY2VBY3Rpb24gYWN0aW9uLCBjb25zdCBJCiAgICAgICAgIGNvbnN0X2Nhc3Q8UGFzdGVi
b2FyZCY+KGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkpLnNldEV4dGVybmFsRGF0YU9iamVjdChu
ZXdEYXRhT2JqZWN0LmdldCgpKTsKIH0KIAotdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWco
RHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRQb2ludCYgaW1hZ2VPcmlnaW4sIGNvbnN0IEludFBv
aW50JiBkcmFnUG9pbnQsIGNvbnN0IEZsb2F0UG9pbnQmLCBEYXRhVHJhbnNmZXImIGRhdGFUcmFu
c2ZlciwgRnJhbWUmIGZyYW1lLCBEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb24pCit2
b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSXRlbSBpdGVtLCBEYXRhVHJhbnNmZXIm
IGRhdGFUcmFuc2ZlciwgRnJhbWUmIGZyYW1lKQogewogICAgIC8vRklYTUU6IEFsbG93IFVJRGVs
ZWdhdGUgdG8gb3ZlcnJpZGUgYmVoYXZpb3VyIDxyZGFyOi8vcHJvYmxlbS81MDE1OTUzPgogCiAg
ICAgLy9XZSBsaWJlcmFsbHkgcHJvdGVjdCBldmVyeXRoaW5nLCB0byBwcm90ZWN0IGFnYWluc3Qg
YSBsb2FkIG9jY3VycmluZyBtaWQtZHJhZworICAgIGF1dG8mIGltYWdlID0gaXRlbS5pbWFnZTsK
KyAgICBhdXRvIGltYWdlT3JpZ2luID0gaXRlbS5kcmFnTG9jYXRpb25JbkNvbnRlbnRDb29yZGlu
YXRlczsKKyAgICBhdXRvIGRyYWdQb2ludCA9IGl0ZW0uZXZlbnRQb3NpdGlvbkluQ29udGVudENv
b3JkaW5hdGVzOworCiAgICAgUmVmUHRyPEZyYW1lPiBmcmFtZVByb3RlY3RvciA9ICZmcmFtZTsK
ICAgICBDT01QdHI8SURyYWdTb3VyY2VIZWxwZXI+IGhlbHBlcjsKICAgICBDT01QdHI8SURhdGFP
YmplY3Q+IGRhdGFPYmplY3Q7CkBAIC0xMjUsNyArMTMwLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50
OjpzdGFydERyYWcoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRQb2ludCYgaW1hZ2VPcmlnaW4s
IGNvbnMKICAgICAgICAgICAgICAgICBzZGkuaGJtcERyYWdJbWFnZSA9IGltYWdlLmdldCgpOwog
ICAgICAgICAgICAgICAgIHNkaS5wdE9mZnNldC54ID0gZHJhZ1BvaW50LngoKSAtIGltYWdlT3Jp
Z2luLngoKTsKICAgICAgICAgICAgICAgICBzZGkucHRPZmZzZXQueSA9IGRyYWdQb2ludC55KCkg
LSBpbWFnZU9yaWdpbi55KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGRyYWdTb3VyY2VBY3Rpb24g
PT0gRHJhZ1NvdXJjZUFjdGlvbkxpbmspCisgICAgICAgICAgICAgICAgaWYgKGl0ZW0uc291cmNl
QWN0aW9uID09IERyYWdTb3VyY2VBY3Rpb25MaW5rKQogICAgICAgICAgICAgICAgICAgICBzZGku
cHRPZmZzZXQueSA9IGIuYm1IZWlnaHQgLSBzZGkucHRPZmZzZXQueTsKIAogICAgICAgICAgICAg
ICAgIGhlbHBlci0+SW5pdGlhbGl6ZUZyb21CaXRtYXAoJnNkaSwgZGF0YU9iamVjdC5nZXQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgK
aW5kZXggMWY0OTZhY2Y3NjFlZjRjN2UyMjZmYTJlOWM4YTAzN2Y2OTljYjU4MS4uYjU5ODkzMzI5
MTAwOWUyODUxZWQ3NTQxNWVjNGFhMGZlNDAzZDYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rp
b25NYXNrRm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYpOwogICAgIHZpcnR1YWwgdm9pZCB3
aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6OkRyYWdJbWFnZSwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9p
bnQmLCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImLCBXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OkRy
YWdTb3VyY2VBY3Rpb24pOworICAgIHZpcnR1YWwgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6RHJh
Z0l0ZW0sIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYsIFdlYkNvcmU6OkZyYW1lJik7CiAKIHByaXZh
dGU6CiAgICAgV2ViVmlldyogbV93ZWJWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQppbmRleCBmZTZiZjg5NmRkODU4NzU3OWYwYTcyZjNmMGQ4Yzg0NjU3NWNm
ZDE2Li43ODE5MGRjYjYwYjdiOWNmNGI4ZWFmNjExMzg3OGU2NTkwYzFiNjMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMzUzLDYgKzM1Myw3IEBAIGRl
ZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgIHNwZWNpYWxfY2FzZXMgPSB7CiAgICAgICAg
ICdTdHJpbmcnOiBbJzx3dGYvdGV4dC9XVEZTdHJpbmcuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6
OkF1dG9wbGF5RXZlbnRGbGFncyc6IFsnPFdlYkNvcmUvQXV0b3BsYXlFdmVudC5oPiddLAorICAg
ICAgICAnV2ViQ29yZTo6RHJhZ0l0ZW0nOiBbJzxXZWJDb3JlL0RyYWdJdGVtLmg+J10sCiAgICAg
ICAgICdXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJzogWyc8V2ViQ29yZS9KU0RPTUV4Y2VwdGlv
bkhhbmRsaW5nLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzJzog
Wyc8V2ViQ29yZS9GaWxlQ2hvb3Nlci5oPiddLAogICAgICAgICAnV2ViQ29yZTo6R3JhbW1hckRl
dGFpbCc6IFsnPFdlYkNvcmUvVGV4dENoZWNrZXJDbGllbnQuaD4nXSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggOWJlNDk3NmYwMmE2
YWE0MDEyNTFiYTRiNzc1N2E0MDVmZTUxZmFlNC4uZTYyZTJlZTM5N2JlMmMzZWNmZjM2ZmM4OGYx
MGU3OWIxY2UyYjIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0RpY3Rh
dGlvbkFsdGVybmF0aXZlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWN0aW9uYXJ5UG9wdXBJbmZv
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRHJh
Z0l0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50VHJhY2tpbmdSZWdpb25zLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9GaWxlQ2hvb3Nlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsdGVyT3Bl
cmF0aW9uLmg+CkBAIC0yMjEzLDYgKzIyMTQsNjEgQEAgYm9vbCBBcmd1bWVudENvZGVyPERpY3Rp
b25hcnlQb3B1cEluZm8+OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBEaWN0aW9uYXIK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCisKK3ZvaWQg
QXJndW1lbnRDb2RlcjxEcmFnSXRlbT46OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIsIGNv
bnN0IERyYWdJdGVtJiBpdGVtKQoreworICAgIC8vIEZJWE1FKDE3MzgxNSk6IFdlIHNob3VsZCBl
bmNvZGUgYW5kIGRlY29kZSBQYXN0ZWJvYXJkV3JpdGVyRGF0YSBhbmQgcGxhdGZvcm0gZHJhZyBp
bWFnZSBkYXRhCisgICAgLy8gaGVyZSB0b28sIGFzIHBhcnQgb2YgbW92aW5nIG9mZiBvZiB0aGUg
bGVnYWN5IGRyYWdnaW5nIGNvZGVwYXRoLgorICAgIGVuY29kZXIgPDwgaXRlbS5pbWFnZUFuY2hv
clBvaW50OworICAgIGVuY29kZXIuZW5jb2RlRW51bShpdGVtLnNvdXJjZUFjdGlvbik7CisgICAg
ZW5jb2RlciA8PCBpdGVtLmV2ZW50UG9zaXRpb25JbkNvbnRlbnRDb29yZGluYXRlczsKKyAgICBl
bmNvZGVyIDw8IGl0ZW0uZHJhZ0xvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CisgICAgZW5j
b2RlciA8PCBpdGVtLmV2ZW50UG9zaXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzOworICAgIGVuY29k
ZXIgPDwgaXRlbS5kcmFnTG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzOworICAgIGVuY29kZXIg
PDwgaXRlbS50aXRsZTsKKyAgICBlbmNvZGVyIDw8IGl0ZW0udXJsOworICAgIGVuY29kZXIgPDwg
aXRlbS5lbGVtZW50Qm91bmRzOworICAgIGJvb2wgaGFzSW5kaWNhdG9yRGF0YSA9IGl0ZW0uaW1h
Z2UuaGFzSW5kaWNhdG9yRGF0YSgpOworICAgIGVuY29kZXIgPDwgaGFzSW5kaWNhdG9yRGF0YTsK
KyAgICBpZiAoaGFzSW5kaWNhdG9yRGF0YSkKKyAgICAgICAgZW5jb2RlciA8PCBpdGVtLmltYWdl
LmluZGljYXRvckRhdGEoKS52YWx1ZSgpOworfQorCitib29sIEFyZ3VtZW50Q29kZXI8RHJhZ0l0
ZW0+OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBEcmFnSXRlbSYgcmVzdWx0KQorewor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmltYWdlQW5jaG9yUG9pbnQpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LnNvdXJj
ZUFjdGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5ldmVudFBvc2l0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXMpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZHJhZ0xvY2F0aW9uSW5D
b250ZW50Q29vcmRpbmF0ZXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQuZXZlbnRQb3NpdGlvbkluV2luZG93Q29vcmRpbmF0ZXMpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZHJhZ0xv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC50aXRsZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC51cmwpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZWxlbWVudEJvdW5kcykpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBib29sIGhhc0luZGljYXRvckRhdGE7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShoYXNJbmRpY2F0b3JEYXRhKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmIChoYXNJbmRpY2F0b3JEYXRhKSB7CisgICAgICAgIFRleHRJbmRpY2F0b3JEYXRhIGlu
ZGljYXRvckRhdGE7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5kaWNhdG9yRGF0YSkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJlc3VsdC5pbWFnZS5zZXRJbmRp
Y2F0b3JEYXRhKGluZGljYXRvckRhdGEpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
I2VuZGlmCisKIHZvaWQgQXJndW1lbnRDb2RlcjxFeGNlcHRpb25EZXRhaWxzPjo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlciwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYgaW5mbykKIHsKICAg
ICBlbmNvZGVyIDw8IGluZm8ubWVzc2FnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA5MjNhYjc5ZmJlZjNjNWFkNzdhMjcwMmVjYjc4MThk
MDA0YzhmYjQ0Li4xMDQ0ZDQ1YzdmMGZjYjAyYzkxMzhmODZkYTdkOTRiMDFkYzBlNDE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xNzIs
NiArMTcyLDEyIEBAIHVzaW5nIElEQktleVBhdGggPSBWYXJpYW50PFN0cmluZywgVmVjdG9yPFN0
cmluZz4+OwogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorbmFtZXNwYWNl
IFdlYkNvcmUgeworc3RydWN0IERyYWdJdGVtOworfQorI2VuZGlmCisKIG5hbWVzcGFjZSBJUEMg
ewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdURjo6TW9ub3RvbmljVGltZT4g
ewpAQCAtNTMxLDYgKzUzNywxMyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OkRpY3Rpb25hcnlQb3B1cEluZm8+IHsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVj
b2RlciYsIFdlYkNvcmU6OkRpY3Rpb25hcnlQb3B1cEluZm8mKTsKIH07CiAKKyNpZiBFTkFCTEUo
RFJBR19TVVBQT1JUKQordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpE
cmFnSXRlbT4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29y
ZTo6RHJhZ0l0ZW0mKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6
OkRyYWdJdGVtJik7Cit9OworI2VuZGlmCisKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVBs
YXliYWNrVGFyZ2V0Q29udGV4dD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwg
Y29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCBl
NGVkMGIzNzczM2I2Yzg1MWY4MWE4YmMzMmJkNmE4ZWNjMmRlYzgyLi5kNTBiMzNkY2NjZDlhNTRj
NzlmMDQwMjVlZjkxMjViMmE0YjJlNjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1w
b3J0ICJMb2FkUGFyYW1ldGVycy5oIgogI2ltcG9ydCAiUGFnZUNsaWVudC5oIgogI2ltcG9ydCAi
V2ViUHJvY2Vzc1Byb3h5LmgiCisjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlYXJjaFBvcHVw
TWVudUNvY29hLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1ZhbGlkYXRpb25CdWJibGUuaD4KQEAgLTEw
NCw5ICsxMDUsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlU2FuZGJveEV4dGVuc2lvbnNJ
Zk5lZWRlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMsCiAKICNpZiBQTEFURk9STShJT1Mp
ICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZXREcmFnSW1h
Z2UoY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZSYgZHJhZ0ltYWdlSGFuZGxlLCBzdGQ6Om9wdGlvbmFsPFRleHRJbmRpY2F0b3JEYXRh
PiB0ZXh0SW5kaWNhdG9yLCBjb25zdCBGbG9hdFBvaW50JiBkcmFnSW1hZ2VBbmNob3IsIHVpbnQ2
NF90IGFjdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpzdGFydERyYWcoY29uc3QgRHJhZ0l0ZW0m
IGRyYWdJdGVtLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgZHJhZ0ltYWdlSGFuZGxl
KQogewotICAgIG1fcGFnZUNsaWVudC5zdGFydERhdGFJbnRlcmFjdGlvbldpdGhJbWFnZShjbGll
bnRQb3NpdGlvbiwgZHJhZ0ltYWdlSGFuZGxlLCB0ZXh0SW5kaWNhdG9yLCBkcmFnSW1hZ2VBbmNo
b3IsIGFjdGlvbik7CisgICAgbV9wYWdlQ2xpZW50LnN0YXJ0RHJhZyhkcmFnSXRlbSwgZHJhZ0lt
YWdlSGFuZGxlKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YUZvcklt
YWdlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiwgdWludDY0X3Qs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiwgdWludDY0X3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBlZGRiYjE2NGU5ZDRjZGIx
NzI3NmUyNDdhMTZkY2JlY2Y5YjJhNTk4Li41OGUxZTI1NzVkNzM2NDJkODk0NmFiN2M2NjI2MWVh
NTA1ODM0MmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTU2LDYg
KzU2LDEyIEBAIHN0cnVjdCBIaWdobGlnaHQ7CiBzdHJ1Y3QgVmlld3BvcnRBdHRyaWJ1dGVzOwog
fQogCisjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVj
dCBEcmFnSXRlbTsKK30KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRHJh
d2luZ0FyZWFQcm94eTsKQEAgLTM3Myw3ICszNzksNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKERB
VEFfSU5URVJBQ1RJT04pCiAgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1EYXRhSW50ZXJhY3Rp
b25Db250cm9sbGVyT3BlcmF0aW9uKGJvb2wgaGFuZGxlZCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRIYW5kbGVTdGFydERhdGFJbnRlcmFjdGlvblJlcXVlc3QoYm9vbCBzdGFydGVkKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHN0YXJ0RGF0YUludGVyYWN0aW9uV2l0aEltYWdlKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUmIGltYWdlLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIHVpbnQ2NF90IGFjdGlvbikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzdGFydERyYWcoY29uc3QgV2ViQ29yZTo6RHJhZ0l0ZW0m
LCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2UpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ29uY2x1ZGVFZGl0RGF0YUludGVyYWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6VGV4dEluZGljYXRvckRhdGE+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZURh
dGFJbnRlcmFjdGlvbkNhcmV0UmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBwcmV2aW91c0Nh
cmV0UmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2FyZXRSZWN0KSA9IDA7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBjMjUzY2M0Y2Q2NDQ1
NTVlZWZjM2NmNjI0ZWM5MTNkNDUxM2Y1MDEzLi4wOWUyMDE4ZTk0MjRhMGM1NjliMDU4N2Y0MTE0
ZWJhZWQxOTBiNDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC04MjQsNyArODI0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZHJhZ0NhbmNlbGxlZCgpOwogICAg
IHZvaWQgc2V0RHJhZ0NhcmV0UmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgdm9pZCBzZXREcmFnSW1hZ2UoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgZHJhZ0lt
YWdlSGFuZGxlLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgZHJhZ0ltYWdlQW5jaG9yLCB1aW50NjRfdCBhY3Rpb24p
OworICAgIHZvaWQgc3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwgY29uc3QgU2hh
cmVhYmxlQml0bWFwOjpIYW5kbGUmIGRyYWdJbWFnZUhhbmRsZSk7CiAgICAgdm9pZCBzZXRQcm9t
aXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTaGFy
ZWRNZW1vcnk6OkhhbmRsZSYgaW1hZ2VIYW5kbGUsIHVpbnQ2NF90IGltYWdlU2l6ZSwgY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgdmlzaWJsZVVSTCwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGFyY2hpdmVI
YW5kbGUsIHVpbnQ2NF90IGFyY2hpdmVTaXplKTsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVN
RU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggMmM5Y2FjNDNiZTQzYjE0OTU1YzY1YTAzZDI5MGQ5MzcyODUwMzViMy4uNDNm
MGIzZTZmN2RkOGUxZTdlODQzNzkyNGVlYzIxMjQyNDRiNzYyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMDIsNyArMzAy
LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRFbmREcmFnZ2luZygpOwog
I2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAg
U2V0RHJhZ0ltYWdlKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJLaXQ6OlNo
YXJlYWJsZUJpdG1hcDo6SGFuZGxlIGRyYWdJbWFnZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpU
ZXh0SW5kaWNhdG9yRGF0YT4gdGV4dEluZGljYXRvciwgV2ViQ29yZTo6RmxvYXRQb2ludCBkcmFn
SW1hZ2VBbmNob3IsIHVpbnQ2NF90IGFjdGlvbikKKyAgICBTdGFydERyYWcoc3RydWN0IFdlYkNv
cmU6OkRyYWdJdGVtIGRyYWdJdGVtLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGRy
YWdJbWFnZSkKICAgICBTZXRQcm9taXNlZERhdGFGb3JJbWFnZShTdHJpbmcgcGFzdGVib2FyZE5h
bWUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaW1hZ2VIYW5kbGUsIHVpbnQ2NF90IGlt
YWdlU2l6ZSwgU3RyaW5nIGZpbGVuYW1lLCBTdHJpbmcgZXh0ZW5zaW9uLCBTdHJpbmcgdGl0bGUs
IFN0cmluZyB1cmwsIFN0cmluZyB2aXNpYmxlVVJMLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFu
ZGxlIGFyY2hpdmVIYW5kbGUsIHVpbnQ2NF90IGFyY2hpdmVTaXplKQogI2lmIEVOQUJMRShBVFRB
Q0hNRU5UX0VMRU1FTlQpCiAgICAgU2V0UHJvbWlzZWREYXRhRm9yQXR0YWNobWVudChTdHJpbmcg
cGFzdGVib2FyZE5hbWUsIFN0cmluZyBmaWxlbmFtZSwgU3RyaW5nIGV4dGVuc2lvbiwgU3RyaW5n
IHRpdGxlLCBTdHJpbmcgdXJsLCBTdHJpbmcgdmlzaWJsZVVSTCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCAzOGRkMTJkMWVmMDQ0
NTE1OWYzMzNiNDQzNDc3ZDUyNzA2NTkyNDk0Li5jZDYyN2MyYzdlNWRmOTY0NjUyZjAyZGExNmVh
N2JjY2U4NDYwMjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oCkBAIC0yMDgsNyArMjA4LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUo
REFUQV9JTlRFUkFDVElPTikKICAgICB2b2lkIGRpZFBlcmZvcm1EYXRhSW50ZXJhY3Rpb25Db250
cm9sbGVyT3BlcmF0aW9uKGJvb2wgaGFuZGxlZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRIYW5k
bGVTdGFydERhdGFJbnRlcmFjdGlvblJlcXVlc3QoYm9vbCBzdGFydGVkKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHN0YXJ0RGF0YUludGVyYWN0aW9uV2l0aEltYWdlKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdl
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIHVpbnQ2NF90IGFjdGlvbikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzdGFydERyYWcoY29uc3QgV2ViQ29yZTo6RHJhZ0l0ZW0mLCBjb25zdCBTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ29uY2x1ZGVF
ZGl0RGF0YUludGVyYWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRh
dGE+KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENoYW5nZURhdGFJbnRlcmFjdGlvbkNhcmV0UmVj
dChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBwcmV2aW91c0NhcmV0UmVjdCwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgY2FyZXRSZWN0KSBvdmVycmlkZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggYTk4Yjg1NzJm
ZTUzYWM5YzlmYzgyYTVmNDE1NTkxYzk1ZWI5NjFlNC4uNzhlNTFhMzk1MjY0MDY2NDJkMDkyYjQ1
NDE0ZTdiYmJkZjI2YzRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC03ODYsOSArNzg2LDkgQEAgdm9pZCBQYWdlQ2xpZW50
SW1wbDo6ZGlkSGFuZGxlU3RhcnREYXRhSW50ZXJhY3Rpb25SZXF1ZXN0KGJvb2wgc3RhcnRlZCkK
ICAgICBbbV9jb250ZW50VmlldyBfZGlkSGFuZGxlU3RhcnREYXRhSW50ZXJhY3Rpb25SZXF1ZXN0
OnN0YXJ0ZWRdOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzdGFydERhdGFJbnRlcmFjdGlv
bldpdGhJbWFnZShjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFNoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlJiBpbWFnZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNh
dG9yRGF0YT4gaW5kaWNhdG9yRGF0YSwgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIHVp
bnQ2NF90IGFjdGlvbikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnN0YXJ0RHJhZyhjb25zdCBEcmFn
SXRlbSYgaXRlbSwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlKQogewotICAg
IFttX2NvbnRlbnRWaWV3IF9zdGFydERhdGFJbnRlcmFjdGlvbldpdGhJbWFnZTpTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZShpbWFnZSktPm1ha2VDR0ltYWdlQ29weSgpIHdpdGhJbmRpY2F0b3JEYXRh
OmluZGljYXRvckRhdGEgYXRDbGllbnRQb3NpdGlvbjpDR1BvaW50TWFrZShjbGllbnRQb3NpdGlv
bi54KCksIGNsaWVudFBvc2l0aW9uLnkoKSkgYW5jaG9yUG9pbnQ6YW5jaG9yUG9pbnQgYWN0aW9u
OmFjdGlvbl07CisgICAgW21fY29udGVudFZpZXcgX3N0YXJ0RHJhZzpTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZShpbWFnZSktPm1ha2VDR0ltYWdlQ29weSgpIGl0ZW06aXRlbV07CiB9CiAKIHZvaWQg
UGFnZUNsaWVudEltcGw6OmRpZENvbmNsdWRlRWRpdERhdGFJbnRlcmFjdGlvbihzdGQ6Om9wdGlv
bmFsPFRleHRJbmRpY2F0b3JEYXRhPiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggMTEzNDg5MmY4
MWU2ZDZkNTFjNDEzMjZlOWQ4MTA3YWJhYzNhMmIyZC4uMTJmYWM1ZTJlMTMwMzc5N2EwODA2Mjlm
N2ZmNmVmODM1ODU4MzI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC01Nyw2ICs1NywxMiBAQCBjbGFz
cyBJbnRTaXplOwogY2xhc3MgVGV4dFN0cmVhbTsKIH0KIAorI2lmIEVOQUJMRShEUkFHX1NVUFBP
UlQpCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgRHJhZ0l0ZW07Cit9CisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBJbnB1dFZpZXdVcGRhdGVEZWZlcnJlcjsKIGNsYXNz
IE5hdGl2ZVdlYlRvdWNoRXZlbnQ7CkBAIC0zMjksNyArMzM1LDcgQEAgRk9SX0VBQ0hfV0tDT05U
RU5UVklFV19BQ1RJT04oREVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcp
CiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCiAtICh2b2lkKV9kaWRQZXJmb3JtRGF0YUlu
dGVyYWN0aW9uQ29udHJvbGxlck9wZXJhdGlvbjooQk9PTCloYW5kbGVkOwogLSAodm9pZClfZGlk
SGFuZGxlU3RhcnREYXRhSW50ZXJhY3Rpb25SZXF1ZXN0OihCT09MKXN0YXJ0ZWQ7Ci0tICh2b2lk
KV9zdGFydERhdGFJbnRlcmFjdGlvbldpdGhJbWFnZTooUmV0YWluUHRyPENHSW1hZ2VSZWY+KWlt
YWdlIHdpdGhJbmRpY2F0b3JEYXRhOihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0
b3JEYXRhPilpbmRpY2F0b3JEYXRhIGF0Q2xpZW50UG9zaXRpb246KENHUG9pbnQpY2xpZW50UG9z
aXRpb24gYW5jaG9yUG9pbnQ6KENHUG9pbnQpYW5jaG9yUG9pbnQgYWN0aW9uOih1aW50NjRfdClh
Y3Rpb247CistICh2b2lkKV9zdGFydERyYWc6KFJldGFpblB0cjxDR0ltYWdlUmVmPilpbWFnZSBp
dGVtOihjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYpaXRlbTsKIC0gKHZvaWQpX2RpZENvbmNsdWRl
RWRpdERhdGFJbnRlcmFjdGlvbjooc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9y
RGF0YT4pZGF0YTsKIC0gKHZvaWQpX2RpZENoYW5nZURhdGFJbnRlcmFjdGlvbkNhcmV0UmVjdDoo
Q0dSZWN0KXByZXZpb3VzUmVjdCBjdXJyZW50UmVjdDooQ0dSZWN0KXJlY3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KaW5kZXggZmZhYzVkYjk1NGY0NGFhN2NhMTMzOTFhNTc1MGY3Njk0MWFmMzdkMC4uODdi
OGNhMmM1ZmE5MDFiNDlmMWJkNGY5OWFiZDUzNzkyNzQzMzkyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
QEAgLTEwMSw2ICsxMDEsNyBAQAogI2ltcG9ydCA8VUlLaXQvVUlVUkxEcmFnUHJldmlld1ZpZXcu
aD4KICNpbXBvcnQgPFVJS2l0L19VSVRleHREcmFnQ2FyZXRWaWV3Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0RyYWdEYXRhLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1BsYXRmb3JtUGFzdGVib2FyZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJJdGVtUHJv
dmlkZXJQYXN0ZWJvYXJkLmg+CiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTQy
MjAsMTIgKzQyMjEsMTMgQEAgLSAodm9pZCl0ZWFyZG93bkRhdGFJbnRlcmFjdGlvbkRlbGVnYXRl
cwogICAgIFtzZWxmIGNsZWFuVXBEcmFnU291cmNlU2Vzc2lvblN0YXRlXTsKIH0KIAotLSAodm9p
ZClfc3RhcnREYXRhSW50ZXJhY3Rpb25XaXRoSW1hZ2U6KFJldGFpblB0cjxDR0ltYWdlUmVmPilp
bWFnZSB3aXRoSW5kaWNhdG9yRGF0YTooc3RkOjpvcHRpb25hbDxUZXh0SW5kaWNhdG9yRGF0YT4p
aW5kaWNhdG9yRGF0YSBhdENsaWVudFBvc2l0aW9uOihDR1BvaW50KWNsaWVudFBvc2l0aW9uIGFu
Y2hvclBvaW50OihDR1BvaW50KWFuY2hvclBvaW50IGFjdGlvbjoodWludDY0X3QpYWN0aW9uCist
ICh2b2lkKV9zdGFydERyYWc6KFJldGFpblB0cjxDR0ltYWdlUmVmPilpbWFnZSBpdGVtOihjb25z
dCBEcmFnSXRlbSYpaXRlbQogewotICAgIEFTU0VSVChhY3Rpb24gIT0gRHJhZ1NvdXJjZUFjdGlv
bk5vbmUpOworICAgIEFTU0VSVChpdGVtLnNvdXJjZUFjdGlvbiAhPSBEcmFnU291cmNlQWN0aW9u
Tm9uZSk7CisKICAgICBfZGF0YUludGVyYWN0aW9uU3RhdGUuaW1hZ2UgPSBhZG9wdE5TKFtbVUlJ
bWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmltYWdlLmdldCgpIHNjYWxlOl9wYWdlLT5kZXZp
Y2VTY2FsZUZhY3RvcigpIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXSk7Ci0gICAg
X2RhdGFJbnRlcmFjdGlvblN0YXRlLmluZGljYXRvckRhdGEgPSBpbmRpY2F0b3JEYXRhOwotICAg
IF9kYXRhSW50ZXJhY3Rpb25TdGF0ZS5zb3VyY2VBY3Rpb24gPSBzdGF0aWNfY2FzdDxEcmFnU291
cmNlQWN0aW9uPihhY3Rpb24pOworICAgIF9kYXRhSW50ZXJhY3Rpb25TdGF0ZS5pbmRpY2F0b3JE
YXRhID0gaXRlbS5pbWFnZS5pbmRpY2F0b3JEYXRhKCk7CisgICAgX2RhdGFJbnRlcmFjdGlvblN0
YXRlLnNvdXJjZUFjdGlvbiA9IHN0YXRpY19jYXN0PERyYWdTb3VyY2VBY3Rpb24+KGl0ZW0uc291
cmNlQWN0aW9uKTsKIH0KIAogLSAodm9pZClfZGlkSGFuZGxlU3RhcnREYXRhSW50ZXJhY3Rpb25S
ZXF1ZXN0OihCT09MKXN0YXJ0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW0KaW5kZXggMWE2NGU3OWI4Y2M4ZGEyYmMxZDg0YjFiMjdiZjNjODBm
NDJkZTU5Mi4uMGM1YTlmNjM4MTkwNjJkZWIyODcwZjBlOTMyOWU4Yzc5MTJkN2JjYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTQ4
LDYgKzQ4LDcgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCA8V2ViQ29y
ZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9v
a3VwLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dy
YXBoaWNzTGF5ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvTlNBcHBsaWNhdGlvblNQSS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KQEAgLTI2OSwxMCArMjcw
LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmRE
YXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlCiAjZW5kaWYKIAogI2lmIEVOQUJMRShEUkFH
X1NVUFBPUlQpCi12b2lkIFdlYlBhZ2VQcm94eTo6c2V0RHJhZ0ltYWdlKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUm
IGRyYWdJbWFnZUhhbmRsZSwgc3RkOjpvcHRpb25hbDxUZXh0SW5kaWNhdG9yRGF0YT4sIGNvbnN0
IEZsb2F0UG9pbnQmLCB1aW50NjRfdCBhY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnRE
cmFnKGNvbnN0IERyYWdJdGVtJiBkcmFnSXRlbSwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5k
bGUmIGRyYWdJbWFnZUhhbmRsZSkKIHsKICAgICBpZiAoYXV0byBkcmFnSW1hZ2UgPSBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZShkcmFnSW1hZ2VIYW5kbGUpKQotICAgICAgICBtX3BhZ2VDbGllbnQu
c2V0RHJhZ0ltYWdlKGNsaWVudFBvc2l0aW9uLCBkcmFnSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwg
c3RhdGljX2Nhc3Q8RHJhZ1NvdXJjZUFjdGlvbj4oYWN0aW9uKSk7CisgICAgICAgIG1fcGFnZUNs
aWVudC5zZXREcmFnSW1hZ2UoZHJhZ0l0ZW0uZHJhZ0xvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cywgZHJhZ0ltYWdlLnJlbGVhc2VOb25OdWxsKCksIHN0YXRpY19jYXN0PERyYWdTb3VyY2VBY3Rp
b24+KGRyYWdJdGVtLnNvdXJjZUFjdGlvbikpOwogCiAgICAgZGlkU3RhcnREcmFnKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRy
YWdDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJEcmFnQ2xpZW50LmNwcAppbmRleCBmZDNlYzI0NzVmOWM1Njk3ZmVlNDVmMjAwZjg5OTBjNWFl
MWZiNTMzLi5mZDY2YWQ4Yzg4ZWJjYjZmZmRmYTU1MjQ0MTVjOTE2MjA2YmE4NjFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RHJhZ0NsaWVudC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgRHJhZ1NvdXJjZUFjdGlvbiBXZWJEcmFn
Q2xpZW50OjpkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JikKIH0K
IAogI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKEdUSykKLXZvaWQgV2ViRHJhZ0Ns
aWVudDo6c3RhcnREcmFnKERyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRQb2lu
dCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBEYXRhVHJhbnNmZXImLCBGcmFtZSYsIERyYWdTb3VyY2VB
Y3Rpb24pCit2b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSXRlbSwgRGF0YVRyYW5z
ZmVyJiwgRnJhbWUmKQogewogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCmluZGV4IGRhNDZlYmJh
NjQwMDc1NjBiZGY3MmE0ZGQxZjYxZTZlMTI4NmNjNDguLmQzZmY1MzRlZjBiNTk5YmExNTU3ZGVh
ODJlZDRjMzk2MGJjODU5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC00Niw3ICs0Niw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oV2ViQ29yZTo6RHJh
Z1NvdXJjZUFjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpEYXRhVHJh
bnNmZXImKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGRyYWdTb3Vy
Y2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHdpbmRvd1BvaW50
KSBvdmVycmlkZTsKIAotICAgIHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6OkRyYWdJbWFnZSwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIGRyYWdJbWFnZU9yaWdpbiwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIGV2ZW50UG9zLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBkcmFnSW1hZ2VBbmNo
b3IsIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYsIFdlYkNvcmU6OkZyYW1lJiwgV2ViQ29yZTo6RHJh
Z1NvdXJjZUFjdGlvbikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6RHJh
Z0l0ZW0sIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYsIFdlYkNvcmU6OkZyYW1lJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRDb25jbHVkZUVkaXREcmFnKCkgb3ZlcnJpZGU7CiAKICNpZiBQTEFURk9S
TShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKaW5kZXggODI0NGYwMWFi
OWYwNjA3NzZjZjBjOTQ5MzFmYjNjMWY2MDU0ZWJlYi4uYTJiYzg0ZGE4YmI4NDI5NzEyZTdmNjA1
MzAxYTEyZGJlNzU2N2NlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKQEAg
LTYwLDggKzYwLDkgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkaWRDb25jbHVkZUVkaXREcmFnKCkK
IHsKIH0KIAotdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0ltYWdlIGRyYWdJbWFn
ZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFs
UG9zaXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmLCBEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2Zlciwg
RnJhbWUmLCBEcmFnU291cmNlQWN0aW9uKQordm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWco
RHJhZ0l0ZW0gaXRlbSwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIEZyYW1lJikKIHsKKyAg
ICBhdXRvJiBkcmFnSW1hZ2UgPSBpdGVtLmltYWdlOwogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IGJpdG1hcCA9IGNvbnZlcnRDYWlyb1N1cmZhY2VUb1NoYXJlYWJsZUJpdG1hcChkcmFnSW1h
Z2UuZ2V0KCkuZ2V0KCkpOwogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5kZXggN2E5ODI1YmE2MzUzZGNhNGYyNTI3
ZDFjNDI2MWE4YTQxZDcxNzQ1Ni4uYjBjZWUyMWE4ODExMjQwOWY0MjJhNmE3N2Y2MGNmNTU1ZGZl
YjAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC05Miw4ICs5Miw5IEBA
IHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGlkQ29uY2x1ZGVFZGl0RHJhZygpCiB7CiB9CiAKLXZvaWQg
V2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJbWFnZSBpbWFnZSwgY29uc3QgSW50UG9pbnQm
IHBvaW50LCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBEYXRhVHJhbnNmZXIm
LCBGcmFtZSYgZnJhbWUsIERyYWdTb3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbikKK3ZvaWQg
V2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJdGVtIGRyYWdJdGVtLCBEYXRhVHJhbnNmZXIm
LCBGcmFtZSYgZnJhbWUpCiB7CisgICAgYXV0byYgaW1hZ2UgPSBkcmFnSXRlbS5pbWFnZTsKICAg
ICBJbnRTaXplIGJpdG1hcFNpemUoW2ltYWdlLmdldCgpIHNpemVdKTsKICAgICBSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBiaXRtYXAgPSBjb252ZXJ0SW1hZ2VUb0JpdG1hcChpbWFnZS5nZXQoKS5n
ZXQoKSwgYml0bWFwU2l6ZSwgZnJhbWUpOwogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhh
bmRsZTsKQEAgLTEwMSw5ICsxMDIsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhE
cmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBwb2ludCwgY29uc3QgSW50UAogICAgICAg
ICByZXR1cm47CiAKICAgICBtX3BhZ2UtPndpbGxTdGFydERyYWcoKTsKLQotICAgIC8vIEZJWE1F
OiBTZWVtcyB0aGlzIG1lc3NhZ2Ugc2hvdWxkIGJlIG5hbWVkIFN0YXJ0RHJhZywgbm90IFNldERy
YWdJbWFnZS4KLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0RHJh
Z0ltYWdlKGZyYW1lLnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhwb2ludCksIGhhbmRsZSwgc3Rk
OjpudWxsb3B0LCB7IH0sIGRyYWdTb3VyY2VBY3Rpb24pKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6U3RhcnREcmFnKGRyYWdJdGVtLCBoYW5kbGUpKTsKIH0KIAog
c3RhdGljIFdlYkNvcmU6OkNhY2hlZEltYWdlKiBjYWNoZWRJbWFnZShFbGVtZW50JiBlbGVtZW50
KQpAQCAtMjA3LDggKzIwNiwxMCBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29u
dmVydENHSW1hZ2VUb0JpdG1hcChDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbgogICAgIHJldHVy
biBiaXRtYXA7CiB9CiAKLXZvaWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJbWFnZSBp
bWFnZSwgY29uc3QgSW50UG9pbnQmIHBvaW50LCBjb25zdCBJbnRQb2ludCYgZXZlbnRMb2NhdGlv
biwgY29uc3QgRmxvYXRQb2ludCYgZHJhZ0ltYWdlQW5jaG9yLCBEYXRhVHJhbnNmZXImIGRhdGFU
cmFuc2ZlciwgRnJhbWUmIGZyYW1lLCBEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb24p
Cit2b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSXRlbSBkcmFnSXRlbSwgRGF0YVRy
YW5zZmVyJiBkYXRhVHJhbnNmZXIsIEZyYW1lJiBmcmFtZSkKIHsKKyAgICBhdXRvJiBpbWFnZSA9
IGRyYWdJdGVtLmltYWdlOworCiAgICAgSW50U2l6ZSBiaXRtYXBTaXplKENHSW1hZ2VHZXRXaWR0
aChpbWFnZS5nZXQoKS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkuZ2V0KCkp
KTsKICAgICBhdXRvIGJpdG1hcCA9IGNvbnZlcnRDR0ltYWdlVG9CaXRtYXAoaW1hZ2UuZ2V0KCku
Z2V0KCksIGJpdG1hcFNpemUsIGZyYW1lKTsKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBo
YW5kbGU7CkBAIC0yMTYsNyArMjE3LDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWco
RHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRQb2ludCYgcG9pbnQsIGNvbnN0IEludFAKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgbV9wYWdlLT53aWxsU3RhcnREcmFnKCk7Ci0gICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldERyYWdJbWFnZShmcmFtZS52aWV3KCktPmNv
bnRlbnRzVG9XaW5kb3cocG9pbnQpLCBoYW5kbGUsIGltYWdlLmluZGljYXRvckRhdGEoKSwgZHJh
Z0ltYWdlQW5jaG9yLCBkcmFnU291cmNlQWN0aW9uKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlN0YXJ0RHJhZyhkcmFnSXRlbSwgaGFuZGxlKSk7CiB9CiAKIHZv
aWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIGxhYmVsLCBGcmFtZSopCg==
</data>
<flag name="review"
          id="334754"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313925</attachid>
            <date>2017-06-27 10:26:33 -0700</date>
            <delta_ts>2017-06-27 12:11:55 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-173832-20170627102633.patch</filename>
            <type>text/plain</type>
            <size>49412</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4ODM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQzNGIzMGE0YTU4Yjhl
ZjJiNDIzNDVmZTkyMjk5YmQ3MGFiOTUzYy4uNzRkZGZmMTI4MDc0ZTFmMDQyMzQ1NGZhMGQ5N2Y2
NDEyMzk3ZmQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE3LTA2LTI3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIGRy
YWcgc3RhcnQgY29kZXBhdGhzIHRvIHBsdW1iIGEgRHJhZ0l0ZW0gdG8gY2xpZW50IGxheWVycwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczODMyCisg
ICAgICAgIFdvcmsgdG93YXJkcyA8cmRhcjovL3Byb2JsZW0vMzIyMzY4Mjc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhIGFuZCBUaW0gSG9ydG9uLgorCisgICAgICAgIFJlZmFj
dG9yIGRyYWcgc3RhcnQgbG9naWMgaW4gV2ViQ29yZSB0byBzZXQgdXAgYSBEcmFnSXRlbSBhbmQg
cHJvcGFnYXRlIGl0IHRvIFdlYkRyYWdDbGllbnQuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKwor
ICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIHBhZ2UvRHJhZ0Ns
aWVudC5oOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFn
Q29udHJvbGxlcjo6ZG9JbWFnZURyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OmRvU3lzdGVtRHJhZyk6CisKKyAgICAgICAgUmVmYWN0b3IgdG8gcGFzcyBhbG9uZyBhIERy
YWdJdGVtLiBBbHNvLCByZW1vdmUgdW51c2VkIGRyYWcgaW1hZ2UgYW5jaG9yIGNvbXB1dGF0aW9u
LgorCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L0RyYWdJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJdGVtLmg6CisKKyAgICAgICAg
QWRkIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGJlZ2luIGEgZHJhZyBvbiBpT1Mu
CisKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdJdGVtOjplbmNvZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhZ0l0ZW06OmRlY29kZSk6CisKKyAgICAgICAgQWRkIElQQyBzZXJpYWxpemF0aW9uL2Rl
c2VyaWFsaXphdGlvbiBzdXBwb3J0IGZvciBEcmFnSXRlbS4KKworICAgICAgICAqIHBsYXRmb3Jt
L1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRX
cml0ZXJEYXRhOjppc0VtcHR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVy
RGF0YS5oOgorCiAyMDE3LTA2LTI2ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNv
bnkuY29tPgogCiAgICAgICAgIFtHVEtdIExheW91dCBUZXN0IHdlYnJ0Yy92aWRlby5odG1sIGlz
c3VlcyAic3RhY2sgc21hc2hpbmcgZGV0ZWN0ZWQiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNjc1Y2Uy
OWIzNzQzYWRmZWY5OTAyZWM4NTJkZjgwZmEyY2M0NmQxMi4uY2MyZTY0MzEwNmVhYjg0OGU4NmM0
ZmVmYzU1ZjQ1MjU5Nzg0ZDY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisy
MDE3LTA2LTI3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAg
ICAgIFJlZmFjdG9yIGRyYWcgc3RhcnQgY29kZXBhdGhzIHRvIHBsdW1iIGEgRHJhZ0l0ZW0gdG8g
Y2xpZW50IGxheWVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTczODMyCisgICAgICAgIFdvcmsgdG93YXJkcyA8cmRhcjovL3Byb2JsZW0vMzIyMzY4
Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhIGFuZCBUaW0gSG9ydG9uLgor
CisgICAgICAgIFJlZmFjdG9yIGNvZGUgdXNlZCB0byBzdGFydCBhIGRyYWcgaW4gV2ViS2l0MSB0
byBwbHVtYiBhIHNpbmdsZSBEcmFnSXRlbSBmcm9tIERyYWdDb250cm9sbGVyIHRvIHRoZSBjbGll
bnQgbGF5ZXIKKyAgICAgICAgaW4gV2ViRHJhZ0NsaWVudCB0aGF0IGNvbnRhaW5zIGFsbCB0aGUg
aW5mb3JtYXRpb24gbmVlZGVkIHRvIGJlZ2luIGEgZHJhZy4gQWxzbyByZW5hbWVzIF9zZXREYXRh
SW50ZXJhY3Rpb25EYXRhOgorICAgICAgICB0byBfc3RhcnREcmFnOiB0byBtYXRjaCBsb2dpYyB1
c2VkIHRvIHN0YXJ0IGEgZHJhZyBvbiBvdGhlciBwbGF0Zm9ybXMuCisKKyAgICAgICAgTm8gYmVo
YXZpb3IgY2hhbmdlIC0tIHRoZSBzYW1lIGluZm9ybWF0aW9uIHNob3VsZCBiZSBwcm9wYWdhdGVk
IHRvIEFwcEtpdCBhbmQgVUlLaXQgd2hlbiBiZWdpbm5pbmcgYSBkcmFnLCBvbmx5CisgICAgICAg
IHRocm91Z2ggdGhlIERyYWdJdGVtIHN0cnVjdC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkRyYWdDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50
Lm1tOgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKToKKyAgICAgICAgKFdlYkRy
YWdDbGllbnQ6OmRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQpOgorICAgICAgICAoV2ViRHJh
Z0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKToKKyAgICAgICAgKFdlYkRyYWdD
bGllbnQ6OmJlZ2luRHJhZyk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAg
ICAoLVtXZWJWaWV3IF9zdGFydERyYWc6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3NldERhdGFJ
bnRlcmFjdGlvbkRhdGE6dGV4dEluZGljYXRvcjphdENsaWVudFBvc2l0aW9uOmFuY2hvclBvaW50
OmFjdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5o
OgorCiAyMDE3LTA2LTI1ICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4K
IAogICAgICAgICBSZW1vdmUgZXhjZXNzaXZlIGhlYWRlcnMgZnJvbSBKYXZhU2NyaXB0Q29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCmluZGV4IDIxYWI2MWM5YjJkOGZmMzZjYjFlZDI0NmQ3MWU5MWJlMmZlMmMz
YWYuLmIxNmI4MDUyZDU5OGJiYzJlNGU0YjIxNThkMzU5MmVlNWQxOWFmZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNy0wNi0yNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBkcmFnIHN0YXJ0IGNvZGVwYXRo
cyB0byBwbHVtYiBhIERyYWdJdGVtIHRvIGNsaWVudCBsYXllcnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzgzMgorICAgICAgICBXb3JrIHRvd2Fy
ZHMgPHJkYXI6Ly9wcm9ibGVtLzMyMjM2ODI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1
a2UgTml3YSBhbmQgVGltIEhvcnRvbi4KKworICAgICAgICBBZGp1c3QgZm9yIGNoYW5nZXMgdG8g
V2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnIGJ5IHB1bGxpbmcgaW5mb3JtYXRpb24gb3V0IG9mIERy
YWdJdGVtLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQuaDoKKwogMjAxNy0wNi0yNSAgS29uc3RhbnRpbiBUb2thcmV2ICA8
YW5udWxlbkB5YW5kZXgucnU+CiAKICAgICAgICAgUmVtb3ZlIGV4Y2Vzc2l2ZSBoZWFkZXJzIGZy
b20gSmF2YVNjcmlwdENvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4ZmEzNzRkNzA4OTE0ZmYzMDBlZTIzMjhh
NjkyYTYxYTZlNDU2Zjc5Li45ZjQyYzJiMDY0OWFmZmE2NDE4NmJjY2E2YTQyMjUxY2U3YjE1YWRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDkgQEAKIDIwMTctMDYtMjcgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVmYWN0b3IgZHJhZyBzdGFydCBj
b2RlcGF0aHMgdG8gcGx1bWIgYSBEcmFnSXRlbSB0byBjbGllbnQgbGF5ZXJzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM4MzIKKyAgICAgICAgV29y
ayB0b3dhcmRzIDxyZGFyOi8vcHJvYmxlbS8zMjIzNjgyNz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBSeW9zdWtlIE5pd2EgYW5kIFRpbSBIb3J0b24uCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IHNlcmlhbGl6aW5nIGEgRHJhZ0l0ZW0gb3ZlciBJUEMuIFRoaXMgZW5jb2RlcyBhbmQgZGVjb2Rl
cyBhbGwgbWVtYmVycyBvZiBEcmFnSXRlbSBleGNlcHQgZm9yIHRoZQorICAgICAgICBQYXN0ZWJv
YXJkV3JpdGVyRGF0YSBhbmQgdGhlIERyYWdJbWFnZSdzIGltYWdlLiBUaGUgRHJhZ0l0ZW0gaXMg
c2VudCBvdmVyIHRvIHRoZSBVSSBwcm9jZXNzIGluCisgICAgICAgIFdlYkRyYWdDbGllbnQ6OnN0
YXJ0RHJhZyB2aWEgdGhlIFdlYlBhZ2VQcm94eTo6c3RhcnREcmFnIElQQyBtZXNzYWdlIChyZW5h
bWVkIGZyb20gV2ViUGFnZVByb3h5OjpzZXREcmFnSW1hZ2UpCisgICAgICAgIHdoaWNoIG5vdyB0
YWtlcyBhIERyYWdJdGVtLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94
eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0YXJ0RHJhZyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RHJhZ0ltYWdlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
OgorCisgICAgICAgIFJlbmFtZSBTZXREcmFnSW1hZ2UgdG8gU3RhcnREcmFnIGFuZCByZWZhY3Rv
ciB0byByZWNlaXZlIG9ubHkgYSBEcmFnSXRlbSBhbmQgc2hhcmVhYmxlIGJpdG1hcCBoYW5kbGUu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OnN0YXJ0RHJhZyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsOjpzdGFydERhdGFJbnRlcmFjdGlvbldpdGhJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBfc3RhcnREcmFnOml0ZW06XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3N0
YXJ0RGF0YUludGVyYWN0aW9uV2l0aEltYWdlOndpdGhJbmRpY2F0b3JEYXRhOmF0Q2xpZW50UG9z
aXRpb246YW5jaG9yUG9pbnQ6YWN0aW9uOl0pOiBEZWxldGVkLgorCisgICAgICAgIFJlbmFtZSBz
dGFydERhdGFJbnRlcmFjdGlvbldpdGhJbWFnZSB0byBzdGFydERyYWcuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzdGFydERyYWcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldERy
YWdJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJEcmFnQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6c3RhcnRE
cmFnKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50
R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcpOgorCisyMDE3LTA2
LTI3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCiAgICAgICAgIFtp
T1MgRG5EXSBbV0syXSBXS1dlYlZpZXcgZG9lcyBub3QgaGFuZGxlIGRyYWcgc2Vzc2lvbnMgdGhh
dCBleGl0IGFuZCByZS1lbnRlcgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTczODU2CiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMjk1NzEwMD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggYWRkNDdiNjFhNGY2OTI5M2Vl
NjU0YjIyMjBiOWZmYTg0OGUwOTBlZC4uZmM0NWIxZjRhODEwMDA5MDRmMDdiNDA3YTU2YjhlNzBi
YjA5MDA2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTEzMSw3
ICsxMzEsNyBAQCBjbGFzcyBFbXB0eURyYWdDbGllbnQgZmluYWwgOiBwdWJsaWMgRHJhZ0NsaWVu
dCB7CiAgICAgdm9pZCB3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGlu
YXRpb25BY3Rpb24sIGNvbnN0IERyYWdEYXRhJikgZmluYWwgeyB9CiAgICAgdm9pZCB3aWxsUGVy
Zm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgSW50UG9pbnQmLCBE
YXRhVHJhbnNmZXImKSBmaW5hbCB7IH0KICAgICBEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VB
Y3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKSBmaW5hbCB7IHJldHVybiBEcmFnU291
cmNlQWN0aW9uTm9uZTsgfQotICAgIHZvaWQgc3RhcnREcmFnKERyYWdJbWFnZSwgY29uc3QgSW50
UG9pbnQmLCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBEYXRhVHJhbnNmZXIm
LCBGcmFtZSYsIERyYWdTb3VyY2VBY3Rpb24pIGZpbmFsIHsgfQorICAgIHZvaWQgc3RhcnREcmFn
KERyYWdJdGVtLCBEYXRhVHJhbnNmZXImLCBGcmFtZSYpIGZpbmFsIHsgfQogICAgIHZvaWQgZHJh
Z0NvbnRyb2xsZXJEZXN0cm95ZWQoKSBmaW5hbCB7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xp
ZW50LmgKaW5kZXggZWNkZWI3ZjQ3M2MzZDlkYmM1MGQzMGQyYmNkNTRkMTZlYzc4YjJjOC4uZWNl
NWE5MDNiYzA2ZTJhNjI2OGUyM2E1OWY5NDdjOWE5ZWNlNGFkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q2xpZW50LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRD
b25jbHVkZUVkaXREcmFnKCkgeyB9CiAgICAgdmlydHVhbCBEcmFnU291cmNlQWN0aW9uIGRyYWdT
b3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHJvb3RWaWV3UG9pbnQpID0g
MDsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFnKERyYWdJbWFnZSwgY29uc3QgSW50
UG9pbnQmIGRyYWdJbWFnZU9yaWdpbiwgY29uc3QgSW50UG9pbnQmIGV2ZW50UG9zLCBjb25zdCBG
bG9hdFBvaW50JiBkcmFnSW1hZ2VBbmNob3IsIERhdGFUcmFuc2ZlciYsIEZyYW1lJiwgRHJhZ1Nv
dXJjZUFjdGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdGFydERyYWcoRHJhZ0l0ZW0sIERh
dGFUcmFuc2ZlciYsIEZyYW1lJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmFnRW5kZWQoKSB7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkRyYWcoRHJhZ0l0ZW0sIEZyYW1lJiwgY29uc3Qg
SW50UG9pbnQmLCBjb25zdCBJbnRQb2ludCYsIERhdGFUcmFuc2ZlciYsIERyYWdTb3VyY2VBY3Rp
b24pIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCBmZmJlOGY4
YmU1OWU3OTMwOTRhMjk0MWYyZTJmMDdlNzg3ZTM4MmFhLi5lMDhkZmViMzE1MjVhYjg2ZTU4YWUx
ODU2OTVmYzJjMGUzNGIzYTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNw
cApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIkVkaXRpbmcuaCIKICNpbmNsdWRlICJFZGl0
b3IuaCIKICNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50QW5jZXN0
b3JJdGVyYXRvci5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkZsb2F0
UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZFJlcXVlc3QuaCIKQEAgLTUyLDYgKzUzLDcgQEAK
ICNpbmNsdWRlICJIVE1MQXR0YWNobWVudEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxQ
YXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIVE1MUGx1Z0luRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhpdFRlc3RSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgpAQCAtOTYzLDcg
Kzk2NSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25z
dCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAgICAgaWYgKG11c3RVc2VMZWdhY3lEcmFnQ2xpZW50KSB7Ci0gICAgICAgICAg
ICBkb1N5c3RlbURyYWcoV1RGTW92ZShkcmFnSW1hZ2UpLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBk
cmFnSW1hZ2VCb3VuZHMsIGRhdGFUcmFuc2Zlciwgc3JjLCBEcmFnU291cmNlQWN0aW9uU2VsZWN0
aW9uKTsKKyAgICAgICAgICAgIGRvU3lzdGVtRHJhZyhXVEZNb3ZlKGRyYWdJbWFnZSksIGRyYWdM
b2MsIGRyYWdPcmlnaW4sIHNyYywgc3RhdGUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0KIApAQCAtOTk2LDEwICs5OTgsMTAgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3Rh
cnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24K
ICAgICAgICAgbV9jbGllbnQud2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VB
Y3Rpb25JbWFnZSwgZHJhZ09yaWdpbiwgZGF0YVRyYW5zZmVyKTsKIAogICAgICAgICBpZiAoIWRy
YWdJbWFnZSkKLSAgICAgICAgICAgIGRvSW1hZ2VEcmFnKGVsZW1lbnQsIGRyYWdPcmlnaW4sIGhp
dFRlc3RSZXN1bHQuaW1hZ2VSZWN0KCksIGRhdGFUcmFuc2Zlciwgc3JjLCBtX2RyYWdPZmZzZXQp
OworICAgICAgICAgICAgZG9JbWFnZURyYWcoZWxlbWVudCwgZHJhZ09yaWdpbiwgaGl0VGVzdFJl
c3VsdC5pbWFnZVJlY3QoKSwgc3JjLCBtX2RyYWdPZmZzZXQsIHN0YXRlKTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICAvLyBESFRNTCBkZWZpbmVkIGRyYWcgaW1hZ2UKLSAgICAgICAgICAg
IGRvU3lzdGVtRHJhZyhXVEZNb3ZlKGRyYWdJbWFnZSksIGRyYWdMb2MsIGRyYWdPcmlnaW4sIHsg
fSwgZGF0YVRyYW5zZmVyLCBzcmMsIERyYWdTb3VyY2VBY3Rpb25JbWFnZSk7CisgICAgICAgICAg
ICBkb1N5c3RlbURyYWcoV1RGTW92ZShkcmFnSW1hZ2UpLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBz
cmMsIHN0YXRlKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTA1MSw3
ICsxMDUzLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNv
bnN0IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24KICAgICAgICAgfQogCiAgICAgICAg
IGlmIChtdXN0VXNlTGVnYWN5RHJhZ0NsaWVudCkgewotICAgICAgICAgICAgZG9TeXN0ZW1EcmFn
KFdURk1vdmUoZHJhZ0ltYWdlKSwgZHJhZ0xvYywgZHJhZ09yaWdpbiwgeyB9LCBkYXRhVHJhbnNm
ZXIsIHNyYywgRHJhZ1NvdXJjZUFjdGlvbkxpbmspOworICAgICAgICAgICAgZG9TeXN0ZW1EcmFn
KFdURk1vdmUoZHJhZ0ltYWdlKSwgZHJhZ0xvYywgZHJhZ09yaWdpbiwgc3JjLCBzdGF0ZSk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC0xMTAyLDcgKzExMDQsNyBA
QCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0
YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogICAgICAgICAgICAgZHJhZ0xvYyA9IGRyYWdMb2NG
b3JTZWxlY3Rpb25EcmFnKHNyYyk7CiAgICAgICAgICAgICBtX2RyYWdPZmZzZXQgPSBJbnRQb2lu
dChkcmFnT3JpZ2luLngoKSAtIGRyYWdMb2MueCgpLCBkcmFnT3JpZ2luLnkoKSAtIGRyYWdMb2Mu
eSgpKTsKICAgICAgICAgfQotICAgICAgICBkb1N5c3RlbURyYWcoV1RGTW92ZShkcmFnSW1hZ2Up
LCBkcmFnTG9jLCBkcmFnT3JpZ2luLCB7IH0sIGRhdGFUcmFuc2Zlciwgc3JjLCBEcmFnU291cmNl
QWN0aW9uQXR0YWNobWVudCk7CisgICAgICAgIGRvU3lzdGVtRHJhZyhXVEZNb3ZlKGRyYWdJbWFn
ZSksIGRyYWdMb2MsIGRyYWdPcmlnaW4sIHNyYywgc3RhdGUpOwogICAgICAgICBzcmMuc2VsZWN0
aW9uKCkuc2V0U2VsZWN0aW9uKHByZXZpb3VzU2VsZWN0aW9uKTsKICAgICAgICAgc3JjLmVkaXRv
cigpLnNldElnbm9yZVNlbGVjdGlvbkNoYW5nZXMoZmFsc2UpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTExMTIsMTQgKzExMTQsMTQgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFn
KEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24KICAgICBp
ZiAoc3RhdGUudHlwZSA9PSBEcmFnU291cmNlQWN0aW9uREhUTUwgJiYgZHJhZ0ltYWdlKSB7CiAg
ICAgICAgIEFTU0VSVChtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uREhUTUwp
OwogICAgICAgICBtX2NsaWVudC53aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJj
ZUFjdGlvbkRIVE1MLCBkcmFnT3JpZ2luLCBkYXRhVHJhbnNmZXIpOwotICAgICAgICBkb1N5c3Rl
bURyYWcoV1RGTW92ZShkcmFnSW1hZ2UpLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCB7IH0sIGRhdGFU
cmFuc2Zlciwgc3JjLCBEcmFnU291cmNlQWN0aW9uREhUTUwpOworICAgICAgICBkb1N5c3RlbURy
YWcoV1RGTW92ZShkcmFnSW1hZ2UpLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBzcmMsIHN0YXRlKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12
b2lkIERyYWdDb250cm9sbGVyOjpkb0ltYWdlRHJhZyhFbGVtZW50JiBlbGVtZW50LCBjb25zdCBJ
bnRQb2ludCYgZHJhZ09yaWdpbiwgY29uc3QgSW50UmVjdCYgbGF5b3V0UmVjdCwgRGF0YVRyYW5z
ZmVyJiBkYXRhVHJhbnNmZXIsIEZyYW1lJiBmcmFtZSwgSW50UG9pbnQmIGRyYWdJbWFnZU9mZnNl
dCkKK3ZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRvSW1hZ2VEcmFnKEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IEludFBvaW50JiBkcmFnT3JpZ2luLCBjb25zdCBJbnRSZWN0JiBsYXlvdXRSZWN0LCBGcmFt
ZSYgZnJhbWUsIEludFBvaW50JiBkcmFnSW1hZ2VPZmZzZXQsIGNvbnN0IERyYWdTdGF0ZSYgc3Rh
dGUpCiB7CiAgICAgSW50UG9pbnQgbW91c2VEb3duUG9pbnQgPSBkcmFnT3JpZ2luOwogICAgIERy
YWdJbWFnZSBkcmFnSW1hZ2U7CkBAIC0xMTYwLDcgKzExNjIsNyBAQCB2b2lkIERyYWdDb250cm9s
bGVyOjpkb0ltYWdlRHJhZyhFbGVtZW50JiBlbGVtZW50LCBjb25zdCBJbnRQb2ludCYgZHJhZ09y
aWdpbiwgYwogICAgICAgICByZXR1cm47CiAKICAgICBkcmFnSW1hZ2VPZmZzZXQgPSBtb3VzZURv
d25Qb2ludCArIHNjYWxlZE9yaWdpbjsKLSAgICBkb1N5c3RlbURyYWcoV1RGTW92ZShkcmFnSW1h
Z2UpLCBkcmFnSW1hZ2VPZmZzZXQsIGRyYWdPcmlnaW4sIGVsZW1lbnQuYm91bmRzSW5Sb290Vmll
d1NwYWNlKCksIGRhdGFUcmFuc2ZlciwgZnJhbWUsIERyYWdTb3VyY2VBY3Rpb25JbWFnZSk7Cisg
ICAgZG9TeXN0ZW1EcmFnKFdURk1vdmUoZHJhZ0ltYWdlKSwgZHJhZ0ltYWdlT2Zmc2V0LCBkcmFn
T3JpZ2luLCBmcmFtZSwgc3RhdGUpOwogfQogCiB2b2lkIERyYWdDb250cm9sbGVyOjpiZWdpbkRy
YWcoRHJhZ0l0ZW0gZHJhZ0l0ZW0sIEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UG9pbnQmIG1vdXNl
RG93blBvaW50LCBjb25zdCBJbnRQb2ludCYgbW91c2VEcmFnZ2VkUG9pbnQsIERhdGFUcmFuc2Zl
ciYgZGF0YVRyYW5zZmVyLCBEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb24pCkBAIC0x
MTg3LDIyICsxMTg5LDQxIEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmJlZ2luRHJhZyhEcmFnSXRl
bSBkcmFnSXRlbSwgRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRQb2ludCYKICAgICBjbGVhbnVwQWZ0
ZXJTeXN0ZW1EcmFnKCk7CiB9CiAKLXZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRvU3lzdGVtRHJhZyhE
cmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBkcmFnTG9jLCBjb25zdCBJbnRQb2ludCYg
ZXZlbnRQb3MsIGNvbnN0IEludFJlY3QmIGRyYWdJbWFnZUJvdW5kcywgRGF0YVRyYW5zZmVyJiBk
YXRhVHJhbnNmZXIsIEZyYW1lJiBmcmFtZSwgRHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0
aW9uKQordm9pZCBEcmFnQ29udHJvbGxlcjo6ZG9TeXN0ZW1EcmFnKERyYWdJbWFnZSBpbWFnZSwg
Y29uc3QgSW50UG9pbnQmIGRyYWdMb2MsIGNvbnN0IEludFBvaW50JiBldmVudFBvcywgRnJhbWUm
IGZyYW1lLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlKQogewotICAgIEZsb2F0UG9pbnQgZHJhZ0lt
YWdlQW5jaG9yID0geyAwLjUsIDAuNSB9OwotICAgIGlmIChkcmFnU291cmNlQWN0aW9uID09IERy
YWdTb3VyY2VBY3Rpb25MaW5rKQotICAgICAgICBkcmFnSW1hZ2VBbmNob3Iuc2V0WSgxKTsKLSAg
ICBlbHNlIGlmICghZHJhZ0ltYWdlQm91bmRzLmlzRW1wdHkoKSkgewotICAgICAgICBkcmFnSW1h
Z2VBbmNob3Iuc2V0WCgoZXZlbnRQb3MueCgpIC0gZHJhZ0ltYWdlQm91bmRzLngoKSkgLyAoZmxv
YXQpZHJhZ0ltYWdlQm91bmRzLndpZHRoKCkpOwotICAgICAgICBkcmFnSW1hZ2VBbmNob3Iuc2V0
WSgoZXZlbnRQb3MueSgpIC0gZHJhZ0ltYWdlQm91bmRzLnkoKSkgLyAoZmxvYXQpZHJhZ0ltYWdl
Qm91bmRzLmhlaWdodCgpKTsKLSAgICB9Ci0KICAgICBtX2RpZEluaXRpYXRlRHJhZyA9IHRydWU7
CiAgICAgbV9kcmFnSW5pdGlhdG9yID0gZnJhbWUuZG9jdW1lbnQoKTsKICAgICAvLyBQcm90ZWN0
IHRoaXMgZnJhbWUgYW5kIHZpZXcsIGFzIGEgbG9hZCBtYXkgb2NjdXIgbWlkIGRyYWcgYW5kIGF0
dGVtcHQgdG8gdW5sb2FkIHRoaXMgZnJhbWUKICAgICBSZWY8TWFpbkZyYW1lPiBmcmFtZVByb3Rl
Y3RvcihtX3BhZ2UubWFpbkZyYW1lKCkpOwogICAgIFJlZlB0cjxGcmFtZVZpZXc+IHZpZXdQcm90
ZWN0b3IgPSBmcmFtZVByb3RlY3Rvci0+dmlldygpOwotICAgIG1fY2xpZW50LnN0YXJ0RHJhZyhX
VEZNb3ZlKGltYWdlKSwgdmlld1Byb3RlY3Rvci0+cm9vdFZpZXdUb0NvbnRlbnRzKGZyYW1lLnZp
ZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KGRyYWdMb2MpKSwgdmlld1Byb3RlY3Rvci0+cm9vdFZp
ZXdUb0NvbnRlbnRzKGZyYW1lLnZpZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KGV2ZW50UG9zKSks
IGRyYWdJbWFnZUFuY2hvciwgZGF0YVRyYW5zZmVyLCBmcmFtZVByb3RlY3Rvci5nZXQoKSwgZHJh
Z1NvdXJjZUFjdGlvbik7CisKKyAgICBEcmFnSXRlbSBpdGVtOworICAgIGl0ZW0uaW1hZ2UgPSBX
VEZNb3ZlKGltYWdlKTsKKyAgICBpdGVtLnNvdXJjZUFjdGlvbiA9IHN0YXRlLnR5cGU7CisgICAg
aXRlbS5ldmVudFBvc2l0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXMgPSB2aWV3UHJvdGVjdG9yLT5y
b290Vmlld1RvQ29udGVudHMoZnJhbWUudmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcoZXZlbnRQ
b3MpKTsKKyAgICBpdGVtLmRyYWdMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0gdmlld1By
b3RlY3Rvci0+cm9vdFZpZXdUb0NvbnRlbnRzKGZyYW1lLnZpZXcoKS0+Y29udGVudHNUb1Jvb3RW
aWV3KGRyYWdMb2MpKTsKKyAgICBpdGVtLmV2ZW50UG9zaXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
ID0gZnJhbWUudmlldygpLT5jb250ZW50c1RvV2luZG93KGl0ZW0uZXZlbnRQb3NpdGlvbkluQ29u
dGVudENvb3JkaW5hdGVzKTsKKyAgICBpdGVtLmRyYWdMb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMgPSBmcmFtZS52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3coaXRlbS5kcmFnTG9jYXRpb25JbkNv
bnRlbnRDb29yZGluYXRlcyk7CisgICAgaWYgKGF1dG8gZWxlbWVudCA9IHN0YXRlLnNvdXJjZSkg
eworICAgICAgICBpdGVtLmVsZW1lbnRCb3VuZHMgPSBlbGVtZW50LT5ib3VuZHNJblJvb3RWaWV3
U3BhY2UoKTsKKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGxpbms7CisgICAgICAgIGlmIChlbGVt
ZW50LT5pc0xpbmsoKSkKKyAgICAgICAgICAgIGxpbmsgPSBlbGVtZW50OworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgY3VycmVudEVsZW1lbnQgOiBlbGVtZW50TGluZWFn
ZShlbGVtZW50LmdldCgpKSkgeworICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RWxlbWVudC5p
c0xpbmsoKSkgeworICAgICAgICAgICAgICAgICAgICBsaW5rID0gJmN1cnJlbnRFbGVtZW50Owor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGxpbmspIHsKKyAgICAgICAgICAgIGF1dG8gdGl0
bGVBdHRyaWJ1dGUgPSBsaW5rLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxO
YW1lczo6dGl0bGVBdHRyKTsKKyAgICAgICAgICAgIGl0ZW0udGl0bGUgPSB0aXRsZUF0dHJpYnV0
ZS5pc0VtcHR5KCkgPyBsaW5rLT5pbm5lclRleHQoKSA6IHRpdGxlQXR0cmlidXRlLnN0cmluZygp
OworICAgICAgICAgICAgaXRlbS51cmwgPSBmcmFtZS5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChz
dHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMobGluay0+Z2V0QXR0cmlidXRlKEhUTUxO
YW1lczo6aHJlZkF0dHIpKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgbV9jbGllbnQuc3RhcnRE
cmFnKFdURk1vdmUoaXRlbSksICpzdGF0ZS5kYXRhVHJhbnNmZXIsIGZyYW1lUHJvdGVjdG9yLmdl
dCgpKTsKICAgICAvLyBEcmFnQ2xpZW50OjpzdGFydERyYWcgY2FuIGNhdXNlIG91ciBQYWdlIHRv
IGRpc3BlYXIsIGRlYWxsb2NhdGluZyB8dGhpc3wuCiAgICAgaWYgKCFmcmFtZVByb3RlY3Rvci0+
cGFnZSgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgK
aW5kZXggMmRmNmY0MGY2NzdmYjU1MzQ0NWVlZGRiYjI2ZDM2OWY4M2U5ZGIzOS4uMmIwYmVjZDNh
M2JlYjlmN2ZiNzAzOWZlMTllZWMyNWEyOGQ5YWQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuaApAQCAtMTE1LDggKzExNSw4IEBAIHN0cnVjdCBEcmFnU3RhdGU7CiAgICAgICAg
IHZvaWQgbW91c2VNb3ZlZEludG9Eb2N1bWVudChEb2N1bWVudCopOwogICAgICAgICBib29sIHNo
b3VsZFVzZUNhY2hlZEltYWdlRm9yRHJhZ0ltYWdlKGNvbnN0IEltYWdlJikgY29uc3Q7CiAKLSAg
ICAgICAgdm9pZCBkb0ltYWdlRHJhZyhFbGVtZW50JiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJ
bnRSZWN0JiwgRGF0YVRyYW5zZmVyJiwgRnJhbWUmLCBJbnRQb2ludCYpOwotICAgICAgICB2b2lk
IGRvU3lzdGVtRHJhZyhEcmFnSW1hZ2UsIGNvbnN0IEludFBvaW50JiwgY29uc3QgSW50UG9pbnQm
LCBjb25zdCBJbnRSZWN0JiBkcmFnSW1hZ2VCb3VuZHMsIERhdGFUcmFuc2ZlciYsIEZyYW1lJiwg
RHJhZ1NvdXJjZUFjdGlvbik7CisgICAgICAgIHZvaWQgZG9JbWFnZURyYWcoRWxlbWVudCYsIGNv
bnN0IEludFBvaW50JiwgY29uc3QgSW50UmVjdCYsIEZyYW1lJiwgSW50UG9pbnQmLCBjb25zdCBE
cmFnU3RhdGUmKTsKKyAgICAgICAgdm9pZCBkb1N5c3RlbURyYWcoRHJhZ0ltYWdlLCBjb25zdCBJ
bnRQb2ludCYsIGNvbnN0IEludFBvaW50JiwgRnJhbWUmLCBjb25zdCBEcmFnU3RhdGUmKTsKIAog
ICAgICAgICB2b2lkIGJlZ2luRHJhZyhEcmFnSXRlbSwgRnJhbWUmLCBjb25zdCBJbnRQb2ludCYg
bW91c2VEb3duUG9pbnQsIGNvbnN0IEludFBvaW50JiBtb3VzZURyYWdnZWRQb2ludCwgRGF0YVRy
YW5zZmVyJiwgRHJhZ1NvdXJjZUFjdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdl
LmgKaW5kZXggZTYxMjJiYmE1ZTJjZWUzOTEzOWYwM2MwM2NiMGFkNjczMjBkN2E2Mi4uYWExNjk5
ZTU2OGNiMTAyZTc5MDIxZjA4NTc5ZWNiNGI0MDU3ZDlkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RHJhZ0ltYWdlLmgKQEAgLTk3LDEwICs5NywxMCBAQCBGbG9hdFBvaW50IGFuY2hvclBvaW50Rm9y
TGlua0RyYWdJbWFnZShEcmFnSW1hZ2VSZWYpOwogCiBjbGFzcyBEcmFnSW1hZ2UgZmluYWwgewog
cHVibGljOgotICAgIERyYWdJbWFnZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdJbWFnZSgp
OwogICAgIGV4cGxpY2l0IERyYWdJbWFnZShEcmFnSW1hZ2VSZWYpOwogICAgIERyYWdJbWFnZShE
cmFnSW1hZ2UmJik7Ci0gICAgfkRyYWdJbWFnZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIH5EcmFn
SW1hZ2UoKTsKIAogICAgIERyYWdJbWFnZSYgb3BlcmF0b3I9KERyYWdJbWFnZSYmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0l0ZW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RyYWdJdGVtLmgKaW5kZXggODcxMzFlMTIyZjA3ZmE4NDFlMDU5MGFmMTlh
OWU2MjJiYzQ3OTNlNy4uMjhmNjdjNjc5ZWU3Y2JkNWU0ZmU2NzIzZjdmNDkwYTEwNTY1OWUyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0l0ZW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSXRlbS5oCkBAIC0yNyw2ICsyNyw4IEBACiAKICNpbmNs
dWRlICJEcmFnSW1hZ2UuaCIKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiSW50
UG9pbnQuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZFdyaXRl
ckRhdGEuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcsNyArMzksNjUgQEAgc3RydWN0
IERyYWdJdGVtIGZpbmFsIHsKICAgICAvLyBXaGVyZSB0aGUgaW1hZ2Ugc2hvdWxkIGJlIHBvc2l0
aW9uZWQgcmVsYXRpdmUgdG8gdGhlIGN1cnNvci4KICAgICBGbG9hdFBvaW50IGltYWdlQW5jaG9y
UG9pbnQ7CiAKKyAgICBEcmFnU291cmNlQWN0aW9uIHNvdXJjZUFjdGlvbiB7IERyYWdTb3VyY2VB
Y3Rpb25Ob25lIH07CisgICAgSW50UG9pbnQgZXZlbnRQb3NpdGlvbkluQ29udGVudENvb3JkaW5h
dGVzOworICAgIEludFBvaW50IGRyYWdMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzOworICAg
IEludFBvaW50IGV2ZW50UG9zaXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzOworICAgIEludFBvaW50
IGRyYWdMb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXM7CisgICAgU3RyaW5nIHRpdGxlOworICAg
IFVSTCB1cmw7CisgICAgSW50UmVjdCBlbGVtZW50Qm91bmRzOworCiAgICAgUGFzdGVib2FyZFdy
aXRlckRhdGEgZGF0YTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9v
bCBkZWNvZGUoRGVjb2RlciYsIERyYWdJdGVtJik7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgordm9pZCBEcmFnSXRlbTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7Cisg
ICAgLy8gRklYTUUoMTczODE1KTogV2Ugc2hvdWxkIGVuY29kZSBhbmQgZGVjb2RlIFBhc3RlYm9h
cmRXcml0ZXJEYXRhIGFuZCBwbGF0Zm9ybSBkcmFnIGltYWdlIGRhdGEKKyAgICAvLyBoZXJlIHRv
bywgYXMgcGFydCBvZiBtb3Zpbmcgb2ZmIG9mIHRoZSBsZWdhY3kgZHJhZ2dpbmcgY29kZXBhdGgu
CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHNvdXJjZUFjdGlvbik7CisgICAgZW5jb2RlciA8PCBp
bWFnZUFuY2hvclBvaW50IDw8IGV2ZW50UG9zaXRpb25JbkNvbnRlbnRDb29yZGluYXRlcyA8PCBk
cmFnTG9jYXRpb25JbkNvbnRlbnRDb29yZGluYXRlcyA8PCBldmVudFBvc2l0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyA8PCBkcmFnTG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzIDw8IHRpdGxlIDw8
IHVybCA8PCBlbGVtZW50Qm91bmRzOworICAgIGJvb2wgaGFzSW5kaWNhdG9yRGF0YSA9IGltYWdl
Lmhhc0luZGljYXRvckRhdGEoKTsKKyAgICBlbmNvZGVyIDw8IGhhc0luZGljYXRvckRhdGE7Cisg
ICAgaWYgKGhhc0luZGljYXRvckRhdGEpCisgICAgICAgIGVuY29kZXIgPDwgaW1hZ2UuaW5kaWNh
dG9yRGF0YSgpLnZhbHVlKCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+Citib29sIERy
YWdJdGVtOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRHJhZ0l0ZW0mIHJlc3VsdCkKK3sKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXN1bHQuc291cmNlQWN0aW9uKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmltYWdlQW5jaG9y
UG9pbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQuZXZlbnRQb3NpdGlvbkluQ29udGVudENvb3JkaW5hdGVzKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmRyYWdMb2NhdGlvbkluQ29u
dGVudENvb3JkaW5hdGVzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LmV2ZW50UG9zaXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmRyYWdMb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQudGl0bGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudXJsKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmVsZW1lbnRCb3VuZHMpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgYm9vbCBoYXNJbmRpY2F0b3JEYXRhOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoaGFzSW5kaWNhdG9yRGF0YSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoaGFzSW5kaWNhdG9yRGF0YSkgeworICAgICAgICBUZXh0SW5kaWNhdG9yRGF0YSBpbmRp
Y2F0b3JEYXRhOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZGljYXRvckRhdGEpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXN1bHQuaW1hZ2Uuc2V0SW5kaWNh
dG9yRGF0YShpbmRpY2F0b3JEYXRhKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmNwcApp
bmRleCBhNDVhNTJlMTgzNDc4YjAzMmVmZmMzMjUxYTkzMDgyYzNmYTUwYWNlLi5kMDA2MWU4OGNl
YWZiMWIxZThlNmI3NGE0NjBmZTI1MjZiMTEyYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuY3BwCkBAIC00OCwxMyArNDgsNyBAQCBQYXN0
ZWJvYXJkV3JpdGVyRGF0YTo6V2ViQ29udGVudDo6fldlYkNvbnRlbnQoKQogCiBib29sIFBhc3Rl
Ym9hcmRXcml0ZXJEYXRhOjppc0VtcHR5KCkgY29uc3QKIHsKLSAgICBpZiAobV9wbGFpblRleHQp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChtX3VybCkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuICFtX3BsYWluVGV4dCAmJiAh
bV91cmwgJiYgIW1fd2ViQ29udGVudDsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkV3JpdGVyRGF0YTo6
c2V0UGxhaW5UZXh0KFBsYWluVGV4dCBwbGFpblRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAppbmRleCAwZDFiNGI3MzZkMjI0ZWZkZjljMjBj
NzRlODM3MjEzMmQxOTQ0OWM5Li42ZmVlZTkzMjUyZmM3OTVlMjY1NmFiYWQ5NGVjODJlNjU2MzI5
MjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVy
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRh
LmgKQEAgLTM1LDggKzM1LDggQEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJv
YXJkV3JpdGVyRGF0YSBmaW5hbCB7CiBwdWJsaWM6Ci0gICAgUGFzdGVib2FyZFdyaXRlckRhdGEo
KTsKLSAgICB+UGFzdGVib2FyZFdyaXRlckRhdGEoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBQYXN0
ZWJvYXJkV3JpdGVyRGF0YSgpOworICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJkV3JpdGVy
RGF0YSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRl
eCA4MTUxZjYzY2JiOWU4NzM0NzVkN2Q4MjUyMWZhMzgyMzJmZTNhNmZjLi4xN2JjNjlhYmViYmNm
MjJmY2MyNTQ5OTYwODVmNjcwMDhjNzQ1YTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihXZWJDb3JlOjpEcmFnU291cmNl
QWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQoKSBvdmVycmlkZTsK
ICAgICBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9p
bnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHdpbmRvd1BvaW50KSBvdmVycmlkZTsKLSAgICB2
b2lkIHN0YXJ0RHJhZyhXZWJDb3JlOjpEcmFnSW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBkcmFnUG9zLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZXZlbnRQb3MsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UG9pbnQmLCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImLCBXZWJDb3JlOjpGcmFtZSYs
IFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24pIG92ZXJyaWRlOworICAgIHZvaWQgc3RhcnREcmFn
KFdlYkNvcmU6OkRyYWdJdGVtLCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImLCBXZWJDb3JlOjpGcmFt
ZSYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBiZWdpbkRyYWcoV2ViQ29yZTo6RHJhZ0l0ZW0sIFdl
YkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG1vdXNlRG93blBvc2l0aW9u
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbW91c2VEcmFnZ2VkUG9zaXRpb24sIFdlYkNvcmU6
OkRhdGFUcmFuc2ZlciYsIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24pIG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQpp
bmRleCAxMTVhODM3MzI5NWM3NjE2YzAyMDhjMTNhMzIwODk0ODY1ZDI1ZWRjLi41OGE0Y2YzODVl
NmUwOTFjZjQ5OGQ0ZWIzZWQxYjYwOWZmYWYzMzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0KQEAgLTUwLDYgKzUwLDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRvckNsaWVudC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9FdmVudEhhbmRsZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRmxv
YXRQb2ludC5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNv
cmUvSW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CkBAIC0xMDAsMTMgKzEw
MSwxNiBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihX
ZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGFjdGlvbgogICAgIFtbbV93ZWJWaWV3IF9VSURlbGVn
YXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyB3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rp
b246KFdlYkRyYWdTb3VyY2VBY3Rpb24pYWN0aW9uIGZyb21Qb2ludDptb3VzZURvd25Qb2ludCB3
aXRoUGFzdGVib2FyZDpbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoTmFtZTpkYXRhVHJhbnNm
ZXIucGFzdGVib2FyZCgpLm5hbWUoKV1dOwogfQogCi12b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0
RHJhZyhEcmFnSW1hZ2UgZHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYgYXQsIGNvbnN0IEludFBv
aW50JiBldmVudFBvcywgY29uc3QgRmxvYXRQb2ludCYsIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5z
ZmVyLCBGcmFtZSYgZnJhbWUsIERyYWdTb3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbikKK3Zv
aWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJdGVtIGRyYWdJdGVtLCBEYXRhVHJhbnNm
ZXImIGRhdGFUcmFuc2ZlciwgRnJhbWUmIGZyYW1lKQogeworICAgIGF1dG8mIGRyYWdJbWFnZSA9
IGRyYWdJdGVtLmltYWdlOworICAgIGF1dG8gZHJhZ0xvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0
ZXMgPSBkcmFnSXRlbS5kcmFnTG9jYXRpb25JbkNvbnRlbnRDb29yZGluYXRlczsKKwogICAgIFJl
dGFpblB0cjxXZWJIVE1MVmlldz4gaHRtbFZpZXcgPSAoV2ViSFRNTFZpZXcqKVtba2l0KCZmcmFt
ZSkgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddOwogICAgIGlmICghW2h0bWxWaWV3LmdldCgpIGlz
S2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNzXV0pCiAgICAgICAgIHJldHVybjsKICAgICAK
LSAgICBOU0V2ZW50ICpldmVudCA9IGRyYWdTb3VyY2VBY3Rpb24gPT0gRHJhZ1NvdXJjZUFjdGlv
bkxpbmsgPyBmcmFtZS5ldmVudEhhbmRsZXIoKS5jdXJyZW50TlNFdmVudCgpIDogW2h0bWxWaWV3
LmdldCgpIF9tb3VzZURvd25FdmVudF07CisgICAgTlNFdmVudCAqZXZlbnQgPSBkcmFnSXRlbS5z
b3VyY2VBY3Rpb24gPT0gRHJhZ1NvdXJjZUFjdGlvbkxpbmsgPyBmcmFtZS5ldmVudEhhbmRsZXIo
KS5jdXJyZW50TlNFdmVudCgpIDogW2h0bWxWaWV3LmdldCgpIF9tb3VzZURvd25FdmVudF07CiAg
ICAgV2ViSFRNTFZpZXcqIHRvcEhUTUxWaWV3ID0gZ2V0VG9wSFRNTFZpZXcoJmZyYW1lKTsKICAg
ICBSZXRhaW5QdHI8V2ViSFRNTFZpZXc+IHRvcFZpZXdQcm90ZWN0b3IgPSB0b3BIVE1MVmlldzsK
ICAgICAKQEAgLTEyNCwxNCArMTI4LDE0IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFn
KERyYWdJbWFnZSBkcmFnSW1hZ2UsIGNvbnN0IEludFBvaW50JiBhdCwgY29uc3QgSW50CiAgICAg
U0VMIHNlbGVjdG9yID0gQHNlbGVjdG9yKHdlYlZpZXc6ZHJhZ0ltYWdlOmF0Om9mZnNldDpldmVu
dDpwYXN0ZWJvYXJkOnNvdXJjZTpzbGlkZUJhY2s6Zm9yVmlldzopOwogICAgIGlmIChbZGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkgewogICAgICAgICBAdHJ5IHsKLSAgICAg
ICAgICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fd2ViVmlldyBkcmFnSW1hZ2U6ZHJhZ05TSW1hZ2Ug
YXQ6YXQgb2Zmc2V0Ok5TWmVyb1NpemUgZXZlbnQ6ZXZlbnQgcGFzdGVib2FyZDpwYXN0ZWJvYXJk
IHNvdXJjZTpzb3VyY2VIVE1MVmlldyBzbGlkZUJhY2s6WUVTIGZvclZpZXc6dG9wSFRNTFZpZXdd
OworICAgICAgICAgICAgW2RlbGVnYXRlIHdlYlZpZXc6bV93ZWJWaWV3IGRyYWdJbWFnZTpkcmFn
TlNJbWFnZSBhdDpkcmFnTG9jYXRpb25JbkNvbnRlbnRDb29yZGluYXRlcyBvZmZzZXQ6TlNaZXJv
U2l6ZSBldmVudDpldmVudCBwYXN0ZWJvYXJkOnBhc3RlYm9hcmQgc291cmNlOnNvdXJjZUhUTUxW
aWV3IHNsaWRlQmFjazpZRVMgZm9yVmlldzp0b3BIVE1MVmlld107CiAgICAgICAgIH0gQGNhdGNo
IChpZCBleGNlcHRpb24pIHsKICAgICAgICAgICAgIFJlcG9ydERpc2NhcmRlZERlbGVnYXRlRXhj
ZXB0aW9uKHNlbGVjdG9yLCBleGNlcHRpb24pOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9y
ZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgICAgIFt0b3BIVE1MVmlldyBkcmFn
SW1hZ2U6ZHJhZ05TSW1hZ2UgYXQ6YXQgb2Zmc2V0Ok5TWmVyb1NpemUgZXZlbnQ6ZXZlbnQgcGFz
dGVib2FyZDpwYXN0ZWJvYXJkIHNvdXJjZTpzb3VyY2VIVE1MVmlldyBzbGlkZUJhY2s6WUVTXTsK
KyAgICAgICAgW3RvcEhUTUxWaWV3IGRyYWdJbWFnZTpkcmFnTlNJbWFnZSBhdDpkcmFnTG9jYXRp
b25JbkNvbnRlbnRDb29yZGluYXRlcyBvZmZzZXQ6TlNaZXJvU2l6ZSBldmVudDpldmVudCBwYXN0
ZWJvYXJkOnBhc3RlYm9hcmQgc291cmNlOnNvdXJjZUhUTUxWaWV3IHNsaWRlQmFjazpZRVNdOwog
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogfQogCkBAIC0xOTgsNyArMjAyLDcgQEAgdm9p
ZCBXZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oV2ViQ29yZTo6RHJh
Z1NvdXJjZUFjdGlvbiwgY29uc3QKIHsKIH0KIAotdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERy
YWcoV2ViQ29yZTo6RHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IEludFBvaW50Jiwg
Y29uc3QgRmxvYXRQb2ludCYsIERhdGFUcmFuc2ZlciYsIEZyYW1lJiwgV2ViQ29yZTo6RHJhZ1Nv
dXJjZUFjdGlvbikKK3ZvaWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKFdlYkNvcmU6OkRyYWdJ
dGVtLCBEYXRhVHJhbnNmZXImLCBGcmFtZSYpCiB7CiB9CiAKQEAgLTIzOSw5ICsyNDMsOSBAQCB2
b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihXZWJDb3JlOjpE
cmFnU291cmNlQWN0aW9uLCBjb25zdAogewogfQogCi12b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0
RHJhZyhEcmFnSW1hZ2UgZHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYgcG9pbnQsIGNvbnN0IElu
dFBvaW50JiBldmVudExvY2F0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBkcmFnSW1hZ2VBbmNob3Is
IERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBGcmFtZSYgZnJhbWUsIERyYWdTb3VyY2VBY3Rp
b24gZHJhZ1NvdXJjZUFjdGlvbikKK3ZvaWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJ
dGVtIGRyYWdJdGVtLCBEYXRhVHJhbnNmZXImLCBGcmFtZSYpCiB7Ci0gICAgW21fd2ViVmlldyBf
c2V0RGF0YUludGVyYWN0aW9uRGF0YTpkcmFnSW1hZ2UuZ2V0KCkuZ2V0KCkgdGV4dEluZGljYXRv
cjpkcmFnSW1hZ2UuaW5kaWNhdG9yRGF0YSgpIGF0Q2xpZW50UG9zaXRpb246ZXZlbnRMb2NhdGlv
biBhbmNob3JQb2ludDpkcmFnSW1hZ2VBbmNob3IgYWN0aW9uOmRyYWdTb3VyY2VBY3Rpb25dOwor
ICAgIFttX3dlYlZpZXcgX3N0YXJ0RHJhZzpkcmFnSXRlbV07CiB9CiAKIHZvaWQgV2ViRHJhZ0Ns
aWVudDo6YmVnaW5EcmFnKERyYWdJdGVtLCBGcmFtZSYsIGNvbnN0IEludFBvaW50JiwgY29uc3Qg
SW50UG9pbnQmLCBEYXRhVHJhbnNmZXImLCBEcmFnU291cmNlQWN0aW9uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDU4NmQzM2VlZWI3YTUxZDliOGY5NTYyZGRjNTNjMjM5
YTkyZDVmMzYuLmM4YjNjZDYyZmUxZDdmZGRkZTZjN2E0MWY0MGQyYjRkZWQyODEyZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTEzMyw2ICsxMzMsNyBAQAogI2ltcG9y
dCA8V2ViQ29yZS9Eb2N1bWVudExvYWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnQ29udHJv
bGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnRGF0YS5oPgorI2ltcG9ydCA8V2ViQ29yZS9E
cmFnSXRlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9FZGl0aW5nLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0VkaXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9FdmVudC5oPgpAQCAtMTgyOSw4ICsxODMwLDEy
IEBAIC0gKEJPT0wpX3JlcXVlc3RTdGFydERhdGFJbnRlcmFjdGlvbjooQ0dQb2ludCljbGllbnRQ
b3NpdGlvbiBnbG9iYWxQb3NpdGlvbjooQ0dQCiAgICAgcmV0dXJuIF9wcml2YXRlLT5wYWdlLT5t
YWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS50cnlUb0JlZ2luRGF0YUludGVyYWN0aW9uQXRQb2lu
dChJbnRQb2ludChjbGllbnRQb3NpdGlvbiksIEludFBvaW50KGdsb2JhbFBvc2l0aW9uKSk7CiB9
CiAKLS0gKHZvaWQpX3NldERhdGFJbnRlcmFjdGlvbkRhdGE6KENHSW1hZ2VSZWYpaW1hZ2UgdGV4
dEluZGljYXRvcjooc3RkOjpvcHRpb25hbDxUZXh0SW5kaWNhdG9yRGF0YT4paW5kaWNhdG9yRGF0
YSBhdENsaWVudFBvc2l0aW9uOihDR1BvaW50KWNsaWVudFBvc2l0aW9uIGFuY2hvclBvaW50OihD
R1BvaW50KWFuY2hvclBvaW50IGFjdGlvbjoodWludDY0X3QpYWN0aW9uCistICh2b2lkKV9zdGFy
dERyYWc6KGNvbnN0IERyYWdJdGVtJilkcmFnSXRlbQogeworICAgIGF1dG8mIGRyYWdJbWFnZSA9
IGRyYWdJdGVtLmltYWdlOworICAgIGF1dG8gaW1hZ2UgPSBkcmFnSW1hZ2UuZ2V0KCkuZ2V0KCk7
CisgICAgYXV0byBpbmRpY2F0b3JEYXRhID0gZHJhZ0ltYWdlLmluZGljYXRvckRhdGEoKTsKKwog
ICAgIGlmIChpbmRpY2F0b3JEYXRhKQogICAgICAgICBfcHJpdmF0ZS0+dGV4dEluZGljYXRvckRh
dGEgPSBhZG9wdE5TKFtbV2ViVUlUZXh0SW5kaWNhdG9yRGF0YSBhbGxvY10gaW5pdFdpdGhJbWFn
ZTppbWFnZSB0ZXh0SW5kaWNhdG9yRGF0YTppbmRpY2F0b3JEYXRhLnZhbHVlKCkgc2NhbGU6X3By
aXZhdGUtPnBhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCldKTsKICAgICBlbHNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRleCA5MTI0ZTEyNzFlZjE1ZGZj
MzBhOTJmNmUwMmUyZDYyYTY2NDhjZDdiLi4yNDM2OTNlMTgwYTNlM2YxY2I0OWY2M2MwYzJiZjIw
YjhkYTVlMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJ
bnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFs
LmgKQEAgLTYzLDYgKzYzLDEyIEBAIHN0cnVjdCBEaWN0YXRpb25BbHRlcm5hdGl2ZTsKIHN0cnVj
dCBEaWN0aW9uYXJ5UG9wdXBJbmZvOwogfQogCisjaWYgUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUo
RFJBR19TVVBQT1JUKQorbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IERyYWdJdGVtOworfQor
I2VuZGlmCisKIGNsYXNzIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI7CiBjbGFzcyBXZWJT
ZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjsKIApAQCAtMjYxLDcgKzI2Nyw3IEBAIE9CSkNfQ0xB
U1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFD
VElPTikgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykKLS0gKHZvaWQpX3NldERhdGFJbnRlcmFjdGlv
bkRhdGE6KENHSW1hZ2VSZWYpaW1hZ2UgdGV4dEluZGljYXRvcjooc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pdGV4dEluZGljYXRvciBhdENsaWVudFBvc2l0aW9uOihD
R1BvaW50KWNsaWVudFBvc2l0aW9uIGFuY2hvclBvaW50OihDR1BvaW50KWFuY2hvclBvaW50IGFj
dGlvbjoodWludDY0X3QpYWN0aW9uOworLSAodm9pZClfc3RhcnREcmFnOihjb25zdCBXZWJDb3Jl
OjpEcmFnSXRlbSYpZHJhZ0l0ZW07CiAtICh2b2lkKV9kaWRDb25jbHVkZUVkaXREYXRhSW50ZXJh
Y3Rpb247CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJEcmFnQ2xpZW50LmNwcAppbmRleCBlMzdiZGY2NDU4MjI0ZTU2YzFmMTg2OTk3YjI1Zjg4
OTc5MDY3MDU3Li5hZTQ2MmJkMmZkMTZjMWM1MDY1NDhmZDdhZjY3MzIxNjJhMTYyNWI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNw
cApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YVRyYW5zZmVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9EcmFnQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJh
Z0RhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RyYWdJdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9FdmVudEhhbmRsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CkBAIC05OCwxMSArOTksMTUgQEAgdm9pZCBX
ZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlv
biBhY3Rpb24sIGNvbnN0IEkKICAgICAgICAgY29uc3RfY2FzdDxQYXN0ZWJvYXJkJj4oZGF0YVRy
YW5zZmVyLnBhc3RlYm9hcmQoKSkuc2V0RXh0ZXJuYWxEYXRhT2JqZWN0KG5ld0RhdGFPYmplY3Qu
Z2V0KCkpOwogfQogCi12b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2UgaW1h
Z2UsIGNvbnN0IEludFBvaW50JiBpbWFnZU9yaWdpbiwgY29uc3QgSW50UG9pbnQmIGRyYWdQb2lu
dCwgY29uc3QgRmxvYXRQb2ludCYsIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBGcmFtZSYg
ZnJhbWUsIERyYWdTb3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbikKK3ZvaWQgV2ViRHJhZ0Ns
aWVudDo6c3RhcnREcmFnKERyYWdJdGVtIGl0ZW0sIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVy
LCBGcmFtZSYgZnJhbWUpCiB7CiAgICAgLy9GSVhNRTogQWxsb3cgVUlEZWxlZ2F0ZSB0byBvdmVy
cmlkZSBiZWhhdmlvdXIgPHJkYXI6Ly9wcm9ibGVtLzUwMTU5NTM+CiAKICAgICAvL1dlIGxpYmVy
YWxseSBwcm90ZWN0IGV2ZXJ5dGhpbmcsIHRvIHByb3RlY3QgYWdhaW5zdCBhIGxvYWQgb2NjdXJy
aW5nIG1pZC1kcmFnCisgICAgYXV0byYgaW1hZ2UgPSBpdGVtLmltYWdlOworICAgIGF1dG8gaW1h
Z2VPcmlnaW4gPSBpdGVtLmRyYWdMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzOworICAgIGF1
dG8gZHJhZ1BvaW50ID0gaXRlbS5ldmVudFBvc2l0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CisK
ICAgICBSZWZQdHI8RnJhbWU+IGZyYW1lUHJvdGVjdG9yID0gJmZyYW1lOwogICAgIENPTVB0cjxJ
RHJhZ1NvdXJjZUhlbHBlcj4gaGVscGVyOwogICAgIENPTVB0cjxJRGF0YU9iamVjdD4gZGF0YU9i
amVjdDsKQEAgLTEyNSw3ICsxMzAsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhE
cmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBpbWFnZU9yaWdpbiwgY29ucwogICAgICAg
ICAgICAgICAgIHNkaS5oYm1wRHJhZ0ltYWdlID0gaW1hZ2UuZ2V0KCk7CiAgICAgICAgICAgICAg
ICAgc2RpLnB0T2Zmc2V0LnggPSBkcmFnUG9pbnQueCgpIC0gaW1hZ2VPcmlnaW4ueCgpOwogICAg
ICAgICAgICAgICAgIHNkaS5wdE9mZnNldC55ID0gZHJhZ1BvaW50LnkoKSAtIGltYWdlT3JpZ2lu
LnkoKTsKLSAgICAgICAgICAgICAgICBpZiAoZHJhZ1NvdXJjZUFjdGlvbiA9PSBEcmFnU291cmNl
QWN0aW9uTGluaykKKyAgICAgICAgICAgICAgICBpZiAoaXRlbS5zb3VyY2VBY3Rpb24gPT0gRHJh
Z1NvdXJjZUFjdGlvbkxpbmspCiAgICAgICAgICAgICAgICAgICAgIHNkaS5wdE9mZnNldC55ID0g
Yi5ibUhlaWdodCAtIHNkaS5wdE9mZnNldC55OwogCiAgICAgICAgICAgICAgICAgaGVscGVyLT5J
bml0aWFsaXplRnJvbUJpdG1hcCgmc2RpLCBkYXRhT2JqZWN0LmdldCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCAxZjQ5NmFj
Zjc2MWVmNGM3ZTIyNmZhMmU5YzhhMDM3ZjY5OWNiNTgxLi5iNTk4OTMzMjkxMDA5ZTI4NTFlZDc1
NDE1ZWM0YWEwZmU0MDNkNjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2lu
dChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9y
bURyYWdEZXN0aW5hdGlvbkFjdGlvbihXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24sIGNv
bnN0IFdlYkNvcmU6OkRyYWdEYXRhJik7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtRHJh
Z1NvdXJjZUFjdGlvbihXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYsIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYpOwotICAgIHZpcnR1YWwgdm9pZCBzdGFy
dERyYWcoV2ViQ29yZTo6RHJhZ0ltYWdlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIFdlYkNvcmU6
OkRhdGFUcmFuc2ZlciYsIFdlYkNvcmU6OkZyYW1lJiwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlv
bik7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0RHJhZyhXZWJDb3JlOjpEcmFnSXRlbSwgV2ViQ29y
ZTo6RGF0YVRyYW5zZmVyJiwgV2ViQ29yZTo6RnJhbWUmKTsKIAogcHJpdmF0ZToKICAgICBXZWJW
aWV3KiBtX3dlYlZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggZTRlZDBiMzc3MzNiNmM4NTFmODFhOGJjMzJiZDZh
OGVjYzJkZWM4Mi4uZDUwYjMzZGNjY2Q5YTU0Yzc5ZjA0MDI1ZWY5MTI1YjJhNGIyZTYzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2Nv
YS5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCAiTG9hZFBhcmFtZXRlcnMuaCIKICNpbXBv
cnQgIlBhZ2VDbGllbnQuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgorI2ltcG9ydCA8
V2ViQ29yZS9EcmFnSXRlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9WYWxpZGF0aW9uQnViYmxlLmg+CkBAIC0xMDQsOSArMTA1LDkgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmNyZWF0ZVNhbmRib3hFeHRlbnNpb25zSWZOZWVkZWQoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGZpbGVzLAogCiAjaWYgUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6c2V0RHJhZ0ltYWdlKGNvbnN0IEludFBvaW50JiBjbGllbnRQb3Np
dGlvbiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGRyYWdJbWFnZUhhbmRsZSwgc3Rk
OjpvcHRpb25hbDxUZXh0SW5kaWNhdG9yRGF0YT4gdGV4dEluZGljYXRvciwgY29uc3QgRmxvYXRQ
b2ludCYgZHJhZ0ltYWdlQW5jaG9yLCB1aW50NjRfdCBhY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94
eTo6c3RhcnREcmFnKGNvbnN0IERyYWdJdGVtJiBkcmFnSXRlbSwgY29uc3QgU2hhcmVhYmxlQml0
bWFwOjpIYW5kbGUmIGRyYWdJbWFnZUhhbmRsZSkKIHsKLSAgICBtX3BhZ2VDbGllbnQuc3RhcnRE
YXRhSW50ZXJhY3Rpb25XaXRoSW1hZ2UoY2xpZW50UG9zaXRpb24sIGRyYWdJbWFnZUhhbmRsZSwg
dGV4dEluZGljYXRvciwgZHJhZ0ltYWdlQW5jaG9yLCBhY3Rpb24pOworICAgIG1fcGFnZUNsaWVu
dC5zdGFydERyYWcoZHJhZ0l0ZW0sIGRyYWdJbWFnZUhhbmRsZSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmLCBjb25zdCBTaGFy
ZWRNZW1vcnk6OkhhbmRsZSYsIHVpbnQ2NF90LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTaGFy
ZWRNZW1vcnk6OkhhbmRsZSYsIHVpbnQ2NF90KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKaW5kZXggMWM5YjA0NmQ0NzcyNmYyMDMzZmVhYmM3MTNkY2VmZjI1MzdmMDU2MC4uODkz
ZTJjMDE0NzljNzUzNjg5ZjI1YWE2NzU0MjA5ZTNiNDA2NDA4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCkBAIC01Niw2ICs1NiwxMiBAQCBzdHJ1Y3QgSGlnaGxpZ2h0Owog
c3RydWN0IFZpZXdwb3J0QXR0cmlidXRlczsKIH0KIAorI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQp
CituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgRHJhZ0l0ZW07Cit9CisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIERyYXdpbmdBcmVhUHJveHk7CkBAIC0zNzMsNyArMzc5
LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQogICAgIHZpcnR1YWwg
dm9pZCBkaWRQZXJmb3JtRGF0YUludGVyYWN0aW9uQ29udHJvbGxlck9wZXJhdGlvbihib29sIGhh
bmRsZWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkSGFuZGxlU3RhcnREYXRhSW50ZXJhY3Rp
b25SZXF1ZXN0KGJvb2wgc3RhcnRlZCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzdGFydERhdGFJ
bnRlcmFjdGlvbldpdGhJbWFnZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRp
b24sIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZSwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGFu
Y2hvclBvaW50LCB1aW50NjRfdCBhY3Rpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRE
cmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5k
bGUmIGltYWdlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbmNsdWRlRWRpdERhdGFJbnRl
cmFjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VEYXRhSW50ZXJhY3Rpb25DYXJldFJlY3QoY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgcHJldmlvdXNDYXJldFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIGNhcmV0UmVjdCkgPSAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggNDQ0NWQ1MzJkYzUwOGVhZDBmMDkzZDM5OWRjMzlmOTQ1MjkzMTllNS4u
ZmFiZDZhNTAzYzMwZTU2OWJmYzcwNzBhNWYzZmM5MzgxZTcxZjY4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtODMyLDcgKzgzMiw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRyYWdDYW5jZWxsZWQoKTsKICAgICB2b2lkIHNldERyYWdDYXJldFJlY3QoY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgc2V0RHJh
Z0ltYWdlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgU2hh
cmVhYmxlQml0bWFwOjpIYW5kbGUmIGRyYWdJbWFnZUhhbmRsZSwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGRyYWdJ
bWFnZUFuY2hvciwgdWludDY0X3QgYWN0aW9uKTsKKyAgICB2b2lkIHN0YXJ0RHJhZyhjb25zdCBX
ZWJDb3JlOjpEcmFnSXRlbSYsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBkcmFnSW1h
Z2VIYW5kbGUpOwogICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGltYWdlSGFuZGxl
LCB1aW50NjRfdCBpbWFnZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmlu
ZyYgZXh0ZW5zaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIGNvbnN0IFNo
YXJlZE1lbW9yeTo6SGFuZGxlJiBhcmNoaXZlSGFuZGxlLCB1aW50NjRfdCBhcmNoaXZlU2l6ZSk7
CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGE3OTFkYWI4MGQzY2E2NTE3
YWY4N2EwMGRiOTgzMDRhOTQ4ZWFkNjguLmVjMDAyZTJjMjQ1NGQ4YTY1ZWMwM2RjM2RjMDEzMjI2
YWE1MjE0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgpAQCAtMzAyLDcgKzMwMiw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94
eSB7CiAgICAgRGlkRW5kRHJhZ2dpbmcoKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAm
JiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgIFNldERyYWdJbWFnZShXZWJDb3JlOjpJbnRQb2lu
dCBjbGllbnRQb3NpdGlvbiwgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBkcmFnSW1h
Z2UsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+IHRleHRJbmRpY2F0
b3IsIFdlYkNvcmU6OkZsb2F0UG9pbnQgZHJhZ0ltYWdlQW5jaG9yLCB1aW50NjRfdCBhY3Rpb24p
CisgICAgU3RhcnREcmFnKHN0cnVjdCBXZWJDb3JlOjpEcmFnSXRlbSBkcmFnSXRlbSwgV2ViS2l0
OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBkcmFnSW1hZ2UpCiAgICAgU2V0UHJvbWlzZWREYXRh
Rm9ySW1hZ2UoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFu
ZGxlIGltYWdlSGFuZGxlLCB1aW50NjRfdCBpbWFnZVNpemUsIFN0cmluZyBmaWxlbmFtZSwgU3Ry
aW5nIGV4dGVuc2lvbiwgU3RyaW5nIHRpdGxlLCBTdHJpbmcgdXJsLCBTdHJpbmcgdmlzaWJsZVVS
TCwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBhcmNoaXZlSGFuZGxlLCB1aW50NjRfdCBh
cmNoaXZlU2l6ZSkKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIFNldFByb21p
c2VkRGF0YUZvckF0dGFjaG1lbnQoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgZmlsZW5h
bWUsIFN0cmluZyBleHRlbnNpb24sIFN0cmluZyB0aXRsZSwgU3RyaW5nIHVybCwgU3RyaW5nIHZp
c2libGVVUkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLmgKaW5kZXggMzhkZDEyZDFlZjA0NDUxNTlmMzMzYjQ0MzQ3N2Q1MjcwNjU5MjQ5NC4u
Y2Q2MjdjMmM3ZTVkZjk2NDY1MmYwMmRhMTZlYTdiY2NlODQ2MDI2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMjA4LDcgKzIw
OCw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCiAgICAgdm9pZCBk
aWRQZXJmb3JtRGF0YUludGVyYWN0aW9uQ29udHJvbGxlck9wZXJhdGlvbihib29sIGhhbmRsZWQp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkSGFuZGxlU3RhcnREYXRhSW50ZXJhY3Rpb25SZXF1ZXN0
KGJvb2wgc3RhcnRlZCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdGFydERhdGFJbnRlcmFjdGlvbldp
dGhJbWFnZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFNo
YXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpUZXh0
SW5kaWNhdG9yRGF0YT4sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCB1
aW50NjRfdCBhY3Rpb24pIG92ZXJyaWRlOworICAgIHZvaWQgc3RhcnREcmFnKGNvbnN0IFdlYkNv
cmU6OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZENvbmNsdWRlRWRpdERhdGFJbnRlcmFjdGlvbihzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRD
aGFuZ2VEYXRhSW50ZXJhY3Rpb25DYXJldFJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcHJl
dmlvdXNDYXJldFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNhcmV0UmVjdCkgb3ZlcnJp
ZGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLm1tCmluZGV4IGE5OGI4NTcyZmU1M2FjOWM5ZmM4MmE1ZjQxNTU5MWM5NWViOTYx
ZTQuLjc4ZTUxYTM5NTI2NDA2NjQyZDA5MmI0NTQxNGU3YmJiZGYyNmM0YTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtNzg2
LDkgKzc4Niw5IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZEhhbmRsZVN0YXJ0RGF0YUludGVy
YWN0aW9uUmVxdWVzdChib29sIHN0YXJ0ZWQpCiAgICAgW21fY29udGVudFZpZXcgX2RpZEhhbmRs
ZVN0YXJ0RGF0YUludGVyYWN0aW9uUmVxdWVzdDpzdGFydGVkXTsKIH0KIAotdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6c3RhcnREYXRhSW50ZXJhY3Rpb25XaXRoSW1hZ2UoY29uc3QgSW50UG9pbnQmIGNs
aWVudFBvc2l0aW9uLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2UsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+IGluZGljYXRvckRhdGEsIGNvbnN0
IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCB1aW50NjRfdCBhY3Rpb24pCit2b2lkIFBhZ2VDbGll
bnRJbXBsOjpzdGFydERyYWcoY29uc3QgRHJhZ0l0ZW0mIGl0ZW0sIGNvbnN0IFNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlJiBpbWFnZSkKIHsKLSAgICBbbV9jb250ZW50VmlldyBfc3RhcnREYXRhSW50
ZXJhY3Rpb25XaXRoSW1hZ2U6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2UpLT5tYWtlQ0dJ
bWFnZUNvcHkoKSB3aXRoSW5kaWNhdG9yRGF0YTppbmRpY2F0b3JEYXRhIGF0Q2xpZW50UG9zaXRp
b246Q0dQb2ludE1ha2UoY2xpZW50UG9zaXRpb24ueCgpLCBjbGllbnRQb3NpdGlvbi55KCkpIGFu
Y2hvclBvaW50OmFuY2hvclBvaW50IGFjdGlvbjphY3Rpb25dOworICAgIFttX2NvbnRlbnRWaWV3
IF9zdGFydERyYWc6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2UpLT5tYWtlQ0dJbWFnZUNv
cHkoKSBpdGVtOml0ZW1dOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDb25jbHVkZUVk
aXREYXRhSW50ZXJhY3Rpb24oc3RkOjpvcHRpb25hbDxUZXh0SW5kaWNhdG9yRGF0YT4gZGF0YSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5oCmluZGV4IDExMzQ4OTJmODFlNmQ2ZDUxYzQxMzI2ZTlkODEwN2FiYWMzYTJi
MmQuLjEyZmFjNWUyZTEzMDM3OTdhMDgwNjI5ZjdmZjZlZjgzNTg1ODMyNjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24uaApAQCAtNTcsNiArNTcsMTIgQEAgY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFRleHRTdHJlYW07
CiB9CiAKKyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorbmFtZXNwYWNlIFdlYkNvcmUgeworc3Ry
dWN0IERyYWdJdGVtOworfQorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgSW5w
dXRWaWV3VXBkYXRlRGVmZXJyZXI7CiBjbGFzcyBOYXRpdmVXZWJUb3VjaEV2ZW50OwpAQCAtMzI5
LDcgKzMzNSw3IEBAIEZPUl9FQUNIX1dLQ09OVEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tDT05U
RU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXKQogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9O
KQogLSAodm9pZClfZGlkUGVyZm9ybURhdGFJbnRlcmFjdGlvbkNvbnRyb2xsZXJPcGVyYXRpb246
KEJPT0wpaGFuZGxlZDsKIC0gKHZvaWQpX2RpZEhhbmRsZVN0YXJ0RGF0YUludGVyYWN0aW9uUmVx
dWVzdDooQk9PTClzdGFydGVkOwotLSAodm9pZClfc3RhcnREYXRhSW50ZXJhY3Rpb25XaXRoSW1h
Z2U6KFJldGFpblB0cjxDR0ltYWdlUmVmPilpbWFnZSB3aXRoSW5kaWNhdG9yRGF0YTooc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4paW5kaWNhdG9yRGF0YSBhdENsaWVu
dFBvc2l0aW9uOihDR1BvaW50KWNsaWVudFBvc2l0aW9uIGFuY2hvclBvaW50OihDR1BvaW50KWFu
Y2hvclBvaW50IGFjdGlvbjoodWludDY0X3QpYWN0aW9uOworLSAodm9pZClfc3RhcnREcmFnOihS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4paW1hZ2UgaXRlbTooY29uc3QgV2ViQ29yZTo6RHJhZ0l0ZW0m
KWl0ZW07CiAtICh2b2lkKV9kaWRDb25jbHVkZUVkaXREYXRhSW50ZXJhY3Rpb246KHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+KWRhdGE7CiAtICh2b2lkKV9kaWRDaGFu
Z2VEYXRhSW50ZXJhY3Rpb25DYXJldFJlY3Q6KENHUmVjdClwcmV2aW91c1JlY3QgY3VycmVudFJl
Y3Q6KENHUmVjdClyZWN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDE3MjZlYmIzZThhNTkwZmFm
ZWEzYmU3YzIxYTUzYzAxOWQ3MDI2ZjEuLjgxYjlmMTg3NWMwMTYxMWM1NjAwZmUwOTc2Zjg4ZWFh
NTE3NjdjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0xMDEsNiArMTAxLDcgQEAKICNpbXBvcnQg
PFVJS2l0L1VJVVJMRHJhZ1ByZXZpZXdWaWV3Lmg+CiAjaW1wb3J0IDxVSUtpdC9fVUlUZXh0RHJh
Z0NhcmV0Vmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnRGF0YS5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9EcmFnSXRlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVBhc3RlYm9hcmQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oPgogI2VuZGlmIC8v
IEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC00MjIwLDEyICs0MjIxLDEzIEBAIC0gKHZvaWQpdGVh
cmRvd25EYXRhSW50ZXJhY3Rpb25EZWxlZ2F0ZXMKICAgICBbc2VsZiBjbGVhblVwRHJhZ1NvdXJj
ZVNlc3Npb25TdGF0ZV07CiB9CiAKLS0gKHZvaWQpX3N0YXJ0RGF0YUludGVyYWN0aW9uV2l0aElt
YWdlOihSZXRhaW5QdHI8Q0dJbWFnZVJlZj4paW1hZ2Ugd2l0aEluZGljYXRvckRhdGE6KHN0ZDo6
b3B0aW9uYWw8VGV4dEluZGljYXRvckRhdGE+KWluZGljYXRvckRhdGEgYXRDbGllbnRQb3NpdGlv
bjooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBhbmNob3JQb2ludDooQ0dQb2ludClhbmNob3JQb2lu
dCBhY3Rpb246KHVpbnQ2NF90KWFjdGlvbgorLSAodm9pZClfc3RhcnREcmFnOihSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4paW1hZ2UgaXRlbTooY29uc3QgRHJhZ0l0ZW0mKWl0ZW0KIHsKLSAgICBBU1NF
UlQoYWN0aW9uICE9IERyYWdTb3VyY2VBY3Rpb25Ob25lKTsKKyAgICBBU1NFUlQoaXRlbS5zb3Vy
Y2VBY3Rpb24gIT0gRHJhZ1NvdXJjZUFjdGlvbk5vbmUpOworCiAgICAgX2RhdGFJbnRlcmFjdGlv
blN0YXRlLmltYWdlID0gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpp
bWFnZS5nZXQoKSBzY2FsZTpfcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSBvcmllbnRhdGlvbjpV
SUltYWdlT3JpZW50YXRpb25VcF0pOwotICAgIF9kYXRhSW50ZXJhY3Rpb25TdGF0ZS5pbmRpY2F0
b3JEYXRhID0gaW5kaWNhdG9yRGF0YTsKLSAgICBfZGF0YUludGVyYWN0aW9uU3RhdGUuc291cmNl
QWN0aW9uID0gc3RhdGljX2Nhc3Q8RHJhZ1NvdXJjZUFjdGlvbj4oYWN0aW9uKTsKKyAgICBfZGF0
YUludGVyYWN0aW9uU3RhdGUuaW5kaWNhdG9yRGF0YSA9IGl0ZW0uaW1hZ2UuaW5kaWNhdG9yRGF0
YSgpOworICAgIF9kYXRhSW50ZXJhY3Rpb25TdGF0ZS5zb3VyY2VBY3Rpb24gPSBzdGF0aWNfY2Fz
dDxEcmFnU291cmNlQWN0aW9uPihpdGVtLnNvdXJjZUFjdGlvbik7CiB9CiAKIC0gKHZvaWQpX2Rp
ZEhhbmRsZVN0YXJ0RGF0YUludGVyYWN0aW9uUmVxdWVzdDooQk9PTClzdGFydGVkCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IDFhNjRl
NzliOGNjOGRhMmJjMWQ4NGIxYjI3YmYzYzgwZjQyZGU1OTIuLjBjNWE5ZjYzODE5MDYyZGViMjg3
MGYwZTkzMjllOGM3OTEyZDdiY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC00OCw2ICs0OCw3IEBACiAjaW1wb3J0ICJXZWJQcm9j
ZXNzUHJveHkuaCIKICNpbXBvcnQgPFdlYkNvcmUvRGljdGF0aW9uQWx0ZXJuYXRpdmUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRGljdGlvbmFyeUxvb2t1cC5oPgorI2ltcG9ydCA8V2ViQ29yZS9EcmFn
SXRlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL05TQXBwbGljYXRpb25TUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmg+CkBAIC0yNjksMTAgKzI3MCwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVw
bGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlw
ZQogI2VuZGlmCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotdm9pZCBXZWJQYWdlUHJveHk6
OnNldERyYWdJbWFnZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNv
bnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBkcmFnSW1hZ2VIYW5kbGUsIHN0ZDo6b3B0aW9u
YWw8VGV4dEluZGljYXRvckRhdGE+LCBjb25zdCBGbG9hdFBvaW50JiwgdWludDY0X3QgYWN0aW9u
KQordm9pZCBXZWJQYWdlUHJveHk6OnN0YXJ0RHJhZyhjb25zdCBEcmFnSXRlbSYgZHJhZ0l0ZW0s
IGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBkcmFnSW1hZ2VIYW5kbGUpCiB7CiAgICAg
aWYgKGF1dG8gZHJhZ0ltYWdlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoZHJhZ0ltYWdlSGFu
ZGxlKSkKLSAgICAgICAgbV9wYWdlQ2xpZW50LnNldERyYWdJbWFnZShjbGllbnRQb3NpdGlvbiwg
ZHJhZ0ltYWdlLnJlbGVhc2VOb25OdWxsKCksIHN0YXRpY19jYXN0PERyYWdTb3VyY2VBY3Rpb24+
KGFjdGlvbikpOworICAgICAgICBtX3BhZ2VDbGllbnQuc2V0RHJhZ0ltYWdlKGRyYWdJdGVtLmRy
YWdMb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMsIGRyYWdJbWFnZS5yZWxlYXNlTm9uTnVsbCgp
LCBzdGF0aWNfY2FzdDxEcmFnU291cmNlQWN0aW9uPihkcmFnSXRlbS5zb3VyY2VBY3Rpb24pKTsK
IAogICAgIGRpZFN0YXJ0RHJhZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKaW5kZXggZmQzZWMy
NDc1ZjljNTY5N2ZlZTQ1ZjIwMGY4OTkwYzVhZTFmYjUzMy4uZmQ2NmFkOGM4OGViY2I2ZmZkZmE1
NTI0NDE1YzkxNjIwNmJhODYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCkBAIC01Miw3ICs1Miw3
IEBAIERyYWdTb3VyY2VBY3Rpb24gV2ViRHJhZ0NsaWVudDo6ZHJhZ1NvdXJjZUFjdGlvbk1hc2tG
b3JQb2ludChjb25zdCBJbnRQb2ludCYpCiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFQ
TEFURk9STShHVEspCi12b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2UsIGNv
bnN0IEludFBvaW50JiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JiwgRGF0YVRy
YW5zZmVyJiwgRnJhbWUmLCBEcmFnU291cmNlQWN0aW9uKQordm9pZCBXZWJEcmFnQ2xpZW50Ojpz
dGFydERyYWcoRHJhZ0l0ZW0sIERhdGFUcmFuc2ZlciYsIEZyYW1lJikKIHsKIH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJE
cmFnQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkRyYWdDbGllbnQuaAppbmRleCBkYTQ2ZWJiYTY0MDA3NTYwYmRmNzJhNGRkMWY2MWU2ZTEyODZj
YzQ4Li5kM2ZmNTM0ZWYwYjU5OWJhMTU1N2RlYTgyZWQ0YzM5NjBiYzg1OWIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdD
bGllbnQuaApAQCAtNDYsNyArNDYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1E
cmFnU291cmNlQWN0aW9uKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJikgb3ZlcnJpZGU7CiAgICAgV2ViQ29y
ZTo6RHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiB3aW5kb3dQb2ludCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHN0YXJ0
RHJhZyhXZWJDb3JlOjpEcmFnSW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkcmFnSW1h
Z2VPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBldmVudFBvcywgY29uc3QgV2ViQ29y
ZTo6RmxvYXRQb2ludCYgZHJhZ0ltYWdlQW5jaG9yLCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImLCBX
ZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24pIG92ZXJyaWRlOworICAg
IHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6OkRyYWdJdGVtLCBXZWJDb3JlOjpEYXRhVHJhbnNmZXIm
LCBXZWJDb3JlOjpGcmFtZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ29uY2x1ZGVFZGl0RHJh
ZygpIG92ZXJyaWRlOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdD
bGllbnRHdGsuY3BwCmluZGV4IDgyNDRmMDFhYjlmMDYwNzc2Y2YwYzk0OTMxZmIzYzFmNjA1NGVi
ZWIuLmEyYmM4NGRhOGJiODQyOTcxMmU3ZjYwNTMwMWExMmRiZTc1NjdjZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGll
bnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
Z3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCkBAIC02MCw4ICs2MCw5IEBAIHZvaWQgV2ViRHJhZ0Ns
aWVudDo6ZGlkQ29uY2x1ZGVFZGl0RHJhZygpCiB7CiB9CiAKLXZvaWQgV2ViRHJhZ0NsaWVudDo6
c3RhcnREcmFnKERyYWdJbWFnZSBkcmFnSW1hZ2UsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3Np
dGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBjb25zdCBGbG9hdFBvaW50Jiwg
RGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIEZyYW1lJiwgRHJhZ1NvdXJjZUFjdGlvbikKK3Zv
aWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJdGVtIGl0ZW0sIERhdGFUcmFuc2ZlciYg
ZGF0YVRyYW5zZmVyLCBGcmFtZSYpCiB7CisgICAgYXV0byYgZHJhZ0ltYWdlID0gaXRlbS5pbWFn
ZTsKICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBjb252ZXJ0Q2Fpcm9TdXJm
YWNlVG9TaGFyZWFibGVCaXRtYXAoZHJhZ0ltYWdlLmdldCgpLmdldCgpKTsKICAgICBTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1t
CmluZGV4IDdhOTgyNWJhNjM1M2RjYTRmMjUyN2QxYzQyNjFhOGE0MWQ3MTc0NTYuLmIwY2VlMjFh
ODgxMTI0MDlmNDIyYTZhNzdmNjBjZjU1NWRmZWIwM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0Ns
aWVudE1hYy5tbQpAQCAtOTIsOCArOTIsOSBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRpZENvbmNs
dWRlRWRpdERyYWcoKQogewogfQogCi12b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFn
SW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBwb2ludCwgY29uc3QgSW50UG9pbnQmLCBjb25z
dCBGbG9hdFBvaW50JiwgRGF0YVRyYW5zZmVyJiwgRnJhbWUmIGZyYW1lLCBEcmFnU291cmNlQWN0
aW9uIGRyYWdTb3VyY2VBY3Rpb24pCit2b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFn
SXRlbSBkcmFnSXRlbSwgRGF0YVRyYW5zZmVyJiwgRnJhbWUmIGZyYW1lKQogeworICAgIGF1dG8m
IGltYWdlID0gZHJhZ0l0ZW0uaW1hZ2U7CiAgICAgSW50U2l6ZSBiaXRtYXBTaXplKFtpbWFnZS5n
ZXQoKSBzaXplXSk7CiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gY29udmVy
dEltYWdlVG9CaXRtYXAoaW1hZ2UuZ2V0KCkuZ2V0KCksIGJpdG1hcFNpemUsIGZyYW1lKTsKICAg
ICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CkBAIC0xMDEsOSArMTAyLDcgQEAgdm9p
ZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRQb2lu
dCYgcG9pbnQsIGNvbnN0IEludFAKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wYWdlLT53aWxs
U3RhcnREcmFnKCk7Ci0KLSAgICAvLyBGSVhNRTogU2VlbXMgdGhpcyBtZXNzYWdlIHNob3VsZCBi
ZSBuYW1lZCBTdGFydERyYWcsIG5vdCBTZXREcmFnSW1hZ2UuCi0gICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldERyYWdJbWFnZShmcmFtZS52aWV3KCktPmNvbnRlbnRz
VG9XaW5kb3cocG9pbnQpLCBoYW5kbGUsIHN0ZDo6bnVsbG9wdCwgeyB9LCBkcmFnU291cmNlQWN0
aW9uKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0YXJ0RHJh
ZyhkcmFnSXRlbSwgaGFuZGxlKSk7CiB9CiAKIHN0YXRpYyBXZWJDb3JlOjpDYWNoZWRJbWFnZSog
Y2FjaGVkSW1hZ2UoRWxlbWVudCYgZWxlbWVudCkKQEAgLTIwNyw4ICsyMDYsMTAgQEAgc3RhdGlj
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRDR0ltYWdlVG9CaXRtYXAoQ0dJbWFnZVJl
ZiBpbWFnZSwgY29uc3QgSW4KICAgICByZXR1cm4gYml0bWFwOwogfQogCi12b2lkIFdlYkRyYWdD
bGllbnQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBwb2ludCwg
Y29uc3QgSW50UG9pbnQmIGV2ZW50TG9jYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIGRyYWdJbWFn
ZUFuY2hvciwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIEZyYW1lJiBmcmFtZSwgRHJhZ1Nv
dXJjZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uKQordm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERy
YWcoRHJhZ0l0ZW0gZHJhZ0l0ZW0sIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBGcmFtZSYg
ZnJhbWUpCiB7CisgICAgYXV0byYgaW1hZ2UgPSBkcmFnSXRlbS5pbWFnZTsKKwogICAgIEludFNp
emUgYml0bWFwU2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkuZ2V0KCkpLCBDR0ltYWdl
R2V0SGVpZ2h0KGltYWdlLmdldCgpLmdldCgpKSk7CiAgICAgYXV0byBiaXRtYXAgPSBjb252ZXJ0
Q0dJbWFnZVRvQml0bWFwKGltYWdlLmdldCgpLmdldCgpLCBiaXRtYXBTaXplLCBmcmFtZSk7CiAg
ICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwpAQCAtMjE2LDcgKzIxNyw3IEBAIHZv
aWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJbWFnZSBpbWFnZSwgY29uc3QgSW50UG9p
bnQmIHBvaW50LCBjb25zdCBJbnRQCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGFnZS0+d2ls
bFN0YXJ0RHJhZygpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpT
ZXREcmFnSW1hZ2UoZnJhbWUudmlldygpLT5jb250ZW50c1RvV2luZG93KHBvaW50KSwgaGFuZGxl
LCBpbWFnZS5pbmRpY2F0b3JEYXRhKCksIGRyYWdJbWFnZUFuY2hvciwgZHJhZ1NvdXJjZUFjdGlv
bikpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdGFydERyYWco
ZHJhZ0l0ZW0sIGhhbmRsZSkpOwogfQogCiB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRX
cml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgRnJhbWUqKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>