<?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>96151</bug_id>
          
          <creation_ts>2012-09-07 15:45:39 -0700</creation_ts>
          <short_desc>[chromium] Implement WebCompositorInputHandlerImpl on top of exposed API instead of CC internals</short_desc>
          <delta_ts>2012-09-07 18:22:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>715064</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-07 15:45:39 -0700</bug_when>
    <thetext>[chromium] Implement WebCompositorInputHandlerImpl on top of exposed API instead of CC internals</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715070</commentid>
    <comment_count>1</comment_count>
      <attachid>162890</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-07 15:49:21 -0700</bug_when>
    <thetext>Created attachment 162890
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715076</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-07 15:53:29 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715097</commentid>
    <comment_count>3</comment_count>
      <attachid>162890</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-09-07 16:20:50 -0700</bug_when>
    <thetext>Comment on attachment 162890
Patch

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

There&apos;s a lot of code change, but it seems pretty straightforward.

&gt; Source/WebKit/chromium/src/WebCompositorInputHandlerImpl.cpp:237
&gt; +    TRACE_EVENT_INSTANT0(&quot;cc&quot;, &quot;WebCompositorInputHandlerImpl::bindToClient&quot;);
&gt; +    if (!s_compositors)
&gt; +        s_compositors = new HashSet&lt;WebCompositorInputHandlerImpl*&gt;;
&gt; +    s_compositors-&gt;add(this);

Now that this doesn&apos;t happen on construction, do you want some check that bindToClient is only called once?

&gt; Source/WebKit/chromium/src/WebToCCInputHandlerAdapter.cpp:60
&gt; +        return static_cast&lt;WebInputHandlerClient::ScrollStatus&gt;(m_client-&gt;scrollBegin(point, static_cast&lt;WebCore::CCInputHandlerClient::ScrollInputType&gt;(type)));

Can you add compile-time asserts that these enums are the same?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715103</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-07 16:24:39 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 162890 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162890&amp;action=review
&gt; 
&gt; There&apos;s a lot of code change, but it seems pretty straightforward.
&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebCompositorInputHandlerImpl.cpp:237
&gt; &gt; +    TRACE_EVENT_INSTANT0(&quot;cc&quot;, &quot;WebCompositorInputHandlerImpl::bindToClient&quot;);
&gt; &gt; +    if (!s_compositors)
&gt; &gt; +        s_compositors = new HashSet&lt;WebCompositorInputHandlerImpl*&gt;;
&gt; &gt; +    s_compositors-&gt;add(this);
&gt; 
&gt; Now that this doesn&apos;t happen on construction, do you want some check that bindToClient is only called once?

Yeah, good idea.

&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebToCCInputHandlerAdapter.cpp:60
&gt; &gt; +        return static_cast&lt;WebInputHandlerClient::ScrollStatus&gt;(m_client-&gt;scrollBegin(point, static_cast&lt;WebCore::CCInputHandlerClient::ScrollInputType&gt;(type)));
&gt; 
&gt; Can you add compile-time asserts that these enums are the same?

Sure - just have to figure out how those macros work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715120</commentid>
    <comment_count>5</comment_count>
      <attachid>162905</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-07 16:45:50 -0700</bug_when>
    <thetext>Created attachment 162905
checks bindToClient called once, asserts enums match, puts WCIHI in correct gyp section</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715190</commentid>
    <comment_count>6</comment_count>
      <attachid>162905</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-09-07 18:17:18 -0700</bug_when>
    <thetext>Comment on attachment 162905
checks bindToClient called once, asserts enums match, puts WCIHI in correct gyp section

R=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715195</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-07 18:22:24 -0700</bug_when>
    <thetext>Committed r127948: &lt;http://trac.webkit.org/changeset/127948&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162890</attachid>
            <date>2012-09-07 15:49:21 -0700</date>
            <delta_ts>2012-09-07 16:45:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96151-20120907154900.patch</filename>
            <type>text/plain</type>
            <size>81459</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3OTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAzM2U4NjU3M2NiYjAz
N2IzMGFkZGFiMjQ2M2VjYTc5MTg0M2EwMDExLi5kOWYxMDc0NzhhYzc1NjIyZGZiYjMwMzI0NzNl
MWRjMWQyMTlmZDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0wOS0wNyAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gSW1wbGVtZW50IFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsIG9uIHRvcCBvZiBleHBv
c2VkIEFQSSBpbnN0ZWFkIG9mIENDIGludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYxNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFkZHMgcHVibGljIGlucHV0IGhhbmRsaW5nIGlu
dGVyZmFjZXMgZm9yIHRoZSBjb21wb3NpdG9yLgorCisgICAgICAgICogY2hyb21pdW0vcHVibGlj
L1dlYklucHV0SGFuZGxlci5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYklucHV0
SGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYklucHV0SGFuZGxlcjo6fldlYklucHV0SGFu
ZGxlcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYklucHV0SGFuZGxlckNsaWVudC5o
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYklucHV0SGFuZGxlckNsaWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklucHV0SGFuZGxlckNsaWVudDo6fldlYklucHV0SGFuZGxlckNs
aWVudCk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaDoKKyAg
ICAgICAgKFdlYkxheWVyVHJlZVZpZXcpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJM
YXllclRyZWVWaWV3Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJMYXllclRyZWVWaWV3Q2xpZW50OjpjcmVhdGVJbnB1dEhhbmRsZXIpOgorICAgICAgICAo
V2ViTGF5ZXJUcmVlVmlld0NsaWVudCk6CisKIDIwMTItMDktMDcgIFRvbW15IFdpZGVuZmx5Y2h0
ICA8dG9tbXl3QGdvb2dsZS5jb20+CiAKICAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBhZGQgUlRD
UGVlckNvbm5lY3Rpb246OmNyZWF0ZUFuc3dlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIyZmZlY2M0N2MxMTNj
NDg0MGE4MzBmYmM3NGU0NjAwY2ZiYjBkNWYuLjhjNzZkMDNiY2ZmYWYwYmM3YjU5OGU0MWRmNjdi
MmY3NjIxY2M2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMi0wOS0wNyAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
SW1wbGVtZW50IFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsIG9uIHRvcCBvZiBleHBvc2Vk
IEFQSSBpbnN0ZWFkIG9mIENDIGludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYxNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZXdvcmtzIHRoZSBDQyBob29rdXAgZm9yIGlucHV0IGhhbmRs
aW5nIHRvIGJlIG1vcmUgc2ltaWxhciB0byB0aGUgT3V0cHV0U3VyZmFjZSBoYW5kbGluZy4gSWYg
b24gY29tcG9zaXRvcgorICAgICAgICBzdGFydHVwIHdlIHdhbnQgdG8gaW5pdGlhbGl6ZSB0aHJl
YWRlZCBpbnB1dCBoYW5kbGluZywgd2UgYXNrIHRoZSBlbWJlZGRlciBmb3IgYSBDQ0lucHV0SGFu
ZGxlciBpbXBsZW1lbnRhdGlvbgorICAgICAgICB2aWEgQ0NMYXllclRyZWVIb3N0Q2xpZW50LiBJ
ZiB0aGUgY2xpZW50IHByb3ZpZGVzIG9uZSwgd2UgbGF0ZXIgYmluZCB0aGlzIHRvIGEgQ0NJbnB1
dEhhbmRsZXJDbGllbnQgKGFjdHVhbGx5CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGwpIGZy
b20gdGhlIGNvbXBvc2l0b3IgdGhyZWFkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoQ0NJbnB1dEhhbmRsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3Q6OkNDTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6
OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjcmVhdGVJ
bnB1dEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChDQ0xheWVyVHJl
ZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdENsaWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0xheWVyVHJl
ZUhvc3RDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UHJveHkuaDoKKyAgICAgICAgKENDUHJveHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NTaW5nbGVUaHJlYWRQcm94eTo6Q0NTaW5nbGVUaHJlYWRQcm94eSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oOgorICAgICAg
ICAoQ0NTaW5nbGVUaHJlYWRQcm94eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFBy
b3h5OjpDQ1RocmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnN0
YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRy
YXdBbmRTd2FwSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW5p
dGlhbGl6ZUltcGxPbkltcGxUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorCiAy
MDEyLTA5LTA3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI3OTExLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCA1MDYzNTA2NjA1MjQwZjc1NDZmNmQ0Mzg5ODRiMzY4ZjZhNTIwNDA0Li43
MWM2ZTA0OGZhN2NiMWQ1MjNhNjcxNDNiZDhhNDRkYjQ3ODNjNjY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDEyLTA5LTA3ICBKYW1lcyBSb2JpbnNvbiAg
PGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBJbXBsZW1lbnQgV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGwgb24gdG9wIG9mIGV4cG9zZWQgQVBJIGluc3RlYWQg
b2YgQ0MgaW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NjE1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1vdmVzIGlucHV0IGhhbmRsZXIgc2V0dXAgY29kZSB1cCB0byB0aGUgV2ViS2l0IGxh
eWVyIGluc3RlYWQgb2YgcmVhY2hpbmcgaW4gdG8gQ0MgaW50ZXJuYWxzLgorICAgICAgICBXZWJM
YXllclRyZWVWaWV3SW1wbCBpbXBsZW1lbnRzIGNyZWF0ZUlucHV0SGFuZGxlcigpIGJ5IGFza2lu
ZyBpdHMgZW1iZWRkZXIgZm9yIGEgV2ViSW5wdXRIYW5kbGVyLiBJZiBvbmUgaXMKKyAgICAgICAg
cHJvdmlkZWQsIGl0IHdyYXBzIHRoZSBXZWJJbnB1dEhhbmRsZXIgaW4gYSBDQ0lucHV0SGFuZGxl
ciBpbXBsZW1lbnRhdGlvbiB0byBwYXNzIGRvd24gdG8gQ0MuCisKKyAgICAgICAgV2ViVmlld0lt
cGwgaW1wbGVtZW50cyBXZWJMYXllclRyZWVWaWV3OjpjcmVhdGVJbnB1dEhhbmRsZXIoKSBieSBj
b25zdHJ1Y3RpbmcgYSBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbAorICAgICAgICBhbmQg
c3RvcmluZyBpdHMgaWRlbnRpZmllciBmb3IgdGhlIGRpZEFjdGl2YXRlQ29tcG9zaXRvciBjYWxs
LiAgRnJvbSB0aGlzIHBvaW50IG9uIHRoZSBzZXR1cCBpcyB0aGUgc2FtZSBhcworICAgICAgICBi
ZWZvcmUuCisKKyAgICAgICAgV0NJSEkgY2hhbmdlcyBjb3ZlcmVkIGJ5IHVuaXQgdGVzdHMsIG92
ZXJhbGwgc2Nyb2xsaW5nIGJlaGF2aW9yIG1hbnVhbGx5IHRlc3RlZC4KKworICAgICAgICAqIFdl
YktpdC5neXBpOgorICAgICAgICAqIHNyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpmcm9t
SWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsOjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjp+V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2V0
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6
OmhhbmRsZUlucHV0RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVySW1wbDo6aGFuZGxlSW5wdXRFdmVudEludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmhhbmRsZUdlc3R1cmVGbGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpiaW5kVG9DbGllbnQp
OgorICAgICAgICAqIHNyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oOgorICAgICAg
ICAoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aWRlbnRpZmllcik6CisgICAgICAgICogc3JjL1dl
YkxheWVyVHJlZVZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmll
d0ltcGw6OmNyZWF0ZUlucHV0SGFuZGxlcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAq
IHNyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oOgorICAgICAgICAoV2ViTGF5ZXJUcmVlVmlld0lt
cGwpOgorICAgICAgICAqIHNyYy9XZWJUb0NDSW5wdXRIYW5kbGVyQWRhcHRlci5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVG9DQ0lucHV0SGFuZGxl
ckFkYXB0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRvQ0NJbnB1dEhhbmRsZXJB
ZGFwdGVyOjpXZWJUb0NDSW5wdXRIYW5kbGVyQWRhcHRlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlRvQ0NJbnB1dEhhbmRsZXJBZGFwdGVyOjp+V2ViVG9DQ0lucHV0SGFuZGxlckFkYXB0ZXIpOgor
ICAgICAgICAoV2ViVG9DQ0lucHV0SGFuZGxlckFkYXB0ZXI6OkNsaWVudEFkYXB0ZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJUb0NDSW5wdXRIYW5kbGVyQWRhcHRlcjo6Q2xpZW50QWRhcHRlcjo6
Q2xpZW50QWRhcHRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlRvQ0NJbnB1dEhhbmRsZXJBZGFw
dGVyOjpDbGllbnRBZGFwdGVyOjp+Q2xpZW50QWRhcHRlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlRvQ0NJbnB1dEhhbmRsZXJBZGFwdGVyOjpiaW5kVG9DbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJUb0NDSW5wdXRIYW5kbGVyQWRhcHRlcjo6YW5pbWF0ZSk6CisgICAgICAgICogc3JjL1dl
YlRvQ0NJbnB1dEhhbmRsZXJBZGFwdGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENsaWVudC5oLgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlRvQ0NJbnB1dEhhbmRsZXJBZGFwdGVyKToKKyAg
ICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6V2ViVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0SXNBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpjcmVhdGVJbnB1dEhhbmRsZXIpOgorICAgICAgICAqIHNyYy9X
ZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2ViVmlld0ltcGwpOgorICAgICAgICAqIHRlc3RzL0ND
VGhyZWFkZWRUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xp
ZW50Lmg6CisgICAgICAgICogdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0
LmNwcDoKKyAgICAgICAgKE1vY2tXZWJJbnB1dEhhbmRsZXJDbGllbnQpOgorICAgICAgICAoV2Vi
S2l0OjpNb2NrV2ViSW5wdXRIYW5kbGVyQ2xpZW50OjpNb2NrV2ViSW5wdXRIYW5kbGVyQ2xpZW50
KToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYklucHV0SGFuZGxlckNsaWVudDo6fk1vY2tXZWJJ
bnB1dEhhbmRsZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVySW1wbFRlc3Q6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCk6CisgICAg
ICAgIChXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QpOgorICAgICAgICAoV2ViS2l0
OjpURVNUX0YpOgorCiAyMDEyLTA5LTA3ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTWFrZSBSZW5kZXJQYXNzIGlkcyBob2xkIGJvdGgg
Z2VuZXJhdGluZyBsYXllciBpZCBhbmQgYW4gaW5kZXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRIYW5kbGVyLmggYi9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYklucHV0SGFuZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmYjIzZDUyNzEx
YTgzY2I4NTI3YThlOWIzYThjMTkxODQxMjVlZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYklucHV0SGFuZGxlci5oCkBAIC0wLDAgKzEsNDAg
QEAKKy8qIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJbnB1dEhhbmRsZXJfaAorI2RlZmluZSBXZWJJbnB1
dEhhbmRsZXJfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYklucHV0SGFuZGxlckNs
aWVudDsKKworY2xhc3MgV2ViSW5wdXRIYW5kbGVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5X
ZWJJbnB1dEhhbmRsZXIoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBiaW5kVG9DbGllbnQoV2Vi
SW5wdXRIYW5kbGVyQ2xpZW50KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRvdWJs
ZSBtb25vdG9uaWNUaW1lKSA9IDA7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEhhbmRsZXJDbGllbnQuaCBiL1Nv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRIYW5kbGVyQ2xpZW50LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMWJlZjIwNWM0ZWI0NTE0Y2E1OGY2ZDMyMzkwMjQyOGY2MjMxYzI0MwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRIYW5k
bGVyQ2xpZW50LmgKQEAgLTAsMCArMSw4MSBAQAorLyogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYklucHV0
SGFuZGxlckNsaWVudF9oCisjZGVmaW5lIFdlYklucHV0SGFuZGxlckNsaWVudF9oCisKKyNpbmNs
dWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJQb2ludC5oIgorI2luY2x1ZGUgIldlYlNp
emUuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYklucHV0SGFuZGxlckNsaWVu
dCB7CitwdWJsaWM6CisgICAgZW51bSBTY3JvbGxTdGF0dXMgeworICAgICAgICBTY3JvbGxTdGF0
dXNPbk1haW5UaHJlYWQsCisgICAgICAgIFNjcm9sbFN0YXR1c1N0YXJ0ZWQsCisgICAgICAgIFNj
cm9sbFN0YXR1c0lnbm9yZWQKKyAgICB9OworICAgIGVudW0gU2Nyb2xsSW5wdXRUeXBlIHsKKyAg
ICAgICAgU2Nyb2xsSW5wdXRUeXBlR2VzdHVyZSwKKyAgICAgICAgU2Nyb2xsSW5wdXRUeXBlV2hl
ZWwKKyAgICB9OworCisgICAgLy8gU2VsZWN0cyBhIGxheWVyIHRvIGJlIHNjcm9sbGVkIGF0IGEg
Z2l2ZW4gcG9pbnQgaW4gd2luZG93IGNvb3JkaW5hdGVzLgorICAgIC8vIFJldHVybnMgU2Nyb2xs
U3RhcnRlZCBpZiB0aGUgbGF5ZXIgYXQgdGhlIGNvb3JkaW5hdGVzIGNhbiBiZSBzY3JvbGxlZCwK
KyAgICAvLyBTY3JvbGxPbk1haW5UaHJlYWQgaWYgdGhlIHNjcm9sbCBldmVudCBzaG91bGQgaW5z
dGVhZCBiZSBkZWxlZ2F0ZWQgdG8gdGhlCisgICAgLy8gbWFpbiB0aHJlYWQsIG9yIFNjcm9sbEln
bm9yZWQgaWYgdGhlcmUgaXMgbm90aGluZyB0byBiZSBzY3JvbGxlZCBhdCB0aGUKKyAgICAvLyBn
aXZlbiBjb29yZGluYXRlcy4KKyAgICB2aXJ0dWFsIFNjcm9sbFN0YXR1cyBzY3JvbGxCZWdpbihX
ZWJQb2ludCwgU2Nyb2xsSW5wdXRUeXBlKSA9IDA7CisKKyAgICAvLyBTY3JvbGwgdGhlIHNlbGVj
dGVkIGxheWVyIHN0YXJ0aW5nIGF0IHRoZSBnaXZlbiB3aW5kb3cgY29vcmRpbmF0ZS4gSWYKKyAg
ICAvLyB0aGVyZSBpcyBubyByb29tIHRvIG1vdmUgdGhlIGxheWVyIGluIHRoZSByZXF1ZXN0ZWQg
ZGlyZWN0aW9uLCBpdHMgZmlyc3QKKyAgICAvLyBhbmNlc3RvciBsYXllciB0aGF0IGNhbiBiZSBz
Y3JvbGxlZCB3aWxsIGJlIG1vdmVkIGluc3RlYWQuIFNob3VsZCBvbmx5IGJlCisgICAgLy8gY2Fs
bGVkIGlmIHNjcm9sbEJlZ2luKCkgcmV0dXJuZWQgU2Nyb2xsU3RhcnRlZC4KKyAgICB2aXJ0dWFs
IHZvaWQgc2Nyb2xsQnkoV2ViUG9pbnQsIFdlYlNpemUpID0gMDsKKworICAgIC8vIFN0b3Agc2Ny
b2xsaW5nIHRoZSBzZWxlY3RlZCBsYXllci4gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIHNjcm9s
bEJlZ2luKCkKKyAgICAvLyByZXR1cm5lZCBTY3JvbGxTdGFydGVkLgorICAgIHZpcnR1YWwgdm9p
ZCBzY3JvbGxFbmQoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlQmVnaW4o
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBpbmNoR2VzdHVyZVVwZGF0ZShmbG9hdCBtYWduaWZ5
RGVsdGEsIFdlYlBvaW50IGFuY2hvcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1
cmVFbmQoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24o
V2ViU2l6ZSB0YXJnZXRQb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBhbmNob3JQb2ludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxvYXQgcGFnZVNjYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkb3VibGUgc3RhcnRUaW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkb3VibGUgZHVyYXRpb24pID0gMDsKKworICAgIC8vIFJlcXVlc3Qg
YW5vdGhlciBjYWxsYmFjayB0byBXZWJJbnB1dEhhbmRsZXI6OmFuaW1hdGUoKS4KKyAgICB2aXJ0
dWFsIHZvaWQgc2NoZWR1bGVBbmltYXRpb24oKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0
dWFsIH5XZWJJbnB1dEhhbmRsZXJDbGllbnQoKSB7IH0KK307CisKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcu
aCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCmlu
ZGV4IDQwYTNiYmQyZTk2NzdiOTgyYzg4M2FhNjI1ZGEyMzYxNmZkMGQwOGIuLjljOTVhZDJkM2U0
ZDQ4ODBhNzc1MjlmYWM2MTY4YmY5NTNkYWM0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCisrKyBiL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCkBAIC04NCwxMCArODQsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFJvb3RMYXllcihjb25zdCBXZWJMYXllciYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJSb290TGF5ZXIoKSA9IDA7CiAKLSAgICAvLyBSZXR1
cm5zIGEgdW5pcXVlIGlkZW50aWZpZXIgdGhhdCBjYW4gYmUgdXNlZCBvbiB0aGUgY29tcG9zaXRv
ciB0aHJlYWQgdG8gcmVxdWVzdCBhCi0gICAgLy8gV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlciBp
bnN0YW5jZS4KLSAgICB2aXJ0dWFsIGludCBjb21wb3NpdG9ySWRlbnRpZmllcigpID0gMDsKLQog
CiAgICAgLy8gVmlldyBwcm9wZXJ0aWVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oCmluZGV4IGRmYjRlODE2MTEyMWFi
MjkxZTk5MTU2M2RkMTZkZmIwOWJiOWQ5MGEuLjQ2YjA0NGEzMDhlZDUwYzlhNjViNzkxNjU4ZGQ1
OGY4NmZiYWY2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oCkBAIC0yOCw4ICsyOCw5IEBACiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2U7Ci1zdHJ1Y3Qg
V2ViU2l6ZTsKK2NsYXNzIFdlYklucHV0SGFuZGxlcjsKIGNsYXNzIFdlYlRocmVhZDsKK3N0cnVj
dCBXZWJTaXplOwogCiBjbGFzcyBXZWJMYXllclRyZWVWaWV3Q2xpZW50IHsKIHB1YmxpYzoKQEAg
LTcyLDYgKzczLDggQEAgcHVibGljOgogICAgIC8vIDNEIGNvbnRleHQgZXZlbnQpLgogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNyZWF0ZU91dHB1dFN1cmZhY2UoYm9vbCBzdWNjZXNzKSB7IH0KIAor
ICAgIHZpcnR1YWwgV2ViSW5wdXRIYW5kbGVyKiBjcmVhdGVJbnB1dEhhbmRsZXIoKSB7IHJldHVy
biAwOyB9CisKICAgICAvLyBJbmRpY2F0ZXMgdGhhdCBhIGZyYW1lIHdpbGwgYmUgY29tbWl0dGVk
IHRvIHRoZSBpbXBsIHNpZGUgb2YgdGhlIGNvbXBvc2l0b3IKICAgICAvLyBmb3IgcmVuZGVyaW5n
LgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29tbWl0KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRs
ZXIuaAppbmRleCAyNzIxZDExNmRhMGY4YTBlZTJlMjMwNTYxZGI3MzY5ZTllOTkyYTg2Li4xM2Zk
NTY4ZmFkM2UyNDNmMGEyMDgyNzk4YjQ2ZWQxMGQ0OWZlODYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRI
YW5kbGVyLmgKQEAgLTM2LDkgKzM2LDkgQEAgY2xhc3MgSW50U2l6ZTsKIC8vIHRoZSBpbXBsIHRo
cmVhZCBzaWRlIG9mIHRoZSBjb21wb3NpdG9yIGltcGxlbWVudGF0aW9uLgogLy8KIC8vIFRoZXJl
IGlzIG9uZSBDQ0lucHV0SGFuZGxlciBmb3IgZXZlcnkgQ0NMYXllclRyZWVIb3N0LiBJdCBpcwot
Ly8gY3JlYXRlZCBhbmQgdXNlZCBvbmx5IG9uIHRoZSBpbXBsIHRocmVhZC4KKy8vIGNyZWF0ZWQg
b24gdGhlIG1haW4gdGhyZWFkIGFuZCB1c2VkIG9ubHkgb24gdGhlIGltcGwgdGhyZWFkLgogLy8K
LS8vIFRoZSBDQ0lucHV0SGFuZGxlciBpcyBjb25zdHJ1Y3RlZCB3aXRoIGFuIElucHV0SGFuZGxl
ckNsaWVudCwgd2hpY2ggaXMgdGhlCisvLyBUaGUgQ0NJbnB1dEhhbmRsZXIgaXMgY29uc3RydWN0
ZWQgd2l0aCBhIENDSW5wdXRIYW5kbGVyQ2xpZW50LCB3aGljaCBpcyB0aGUKIC8vIGludGVyZmFj
ZSBieSB3aGljaCB0aGUgaGFuZGxlciBjYW4gbWFuaXB1bGF0ZSB0aGUgTGF5ZXJUcmVlLgogY2xh
c3MgQ0NJbnB1dEhhbmRsZXJDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDSW5w
dXRIYW5kbGVyQ2xpZW50KTsKQEAgLTg0LDEwICs4NCw5IEBAIHByb3RlY3RlZDoKIGNsYXNzIEND
SW5wdXRIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ0lucHV0SGFuZGxlcik7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NJbnB1dEhhbmRsZXI+IGNyZWF0ZShD
Q0lucHV0SGFuZGxlckNsaWVudCopOwogICAgIHZpcnR1YWwgfkNDSW5wdXRIYW5kbGVyKCkgeyB9
CiAKLSAgICB2aXJ0dWFsIGludCBpZGVudGlmaWVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBiaW5kVG9DbGllbnQoQ0NJbnB1dEhhbmRsZXJDbGllbnQqKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGFuaW1hdGUoZG91YmxlIG1vbm90b25pY1RpbWUpID0gMDsKIAogcHJvdGVjdGVkOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggNzAzMWU4MjJhMThjYmM3MjY2ODM4
ODQ1Y2QzYmQyZGRiMzE3M2ViOS4uNDZhZmFjYmE0OTQxNjgwZjU0MWExNzc2NWQ3YWE3MjRhM2Jk
MGZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC03MCw4ICs3MCw3IEBA
IFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0PiBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZShDQ0xh
eWVyVHJlZUhvc3RDbGllbnQqIGNsaWVuCiB9CiAKIENDTGF5ZXJUcmVlSG9zdDo6Q0NMYXllclRy
ZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBjb25zdCBDQ0xheWVyVHJlZVNl
dHRpbmdzJiBzZXR0aW5ncykKLSAgICA6IG1fY29tcG9zaXRvcklkZW50aWZpZXIoLTEpCi0gICAg
LCBtX2FuaW1hdGluZyhmYWxzZSkKKyAgICA6IG1fYW5pbWF0aW5nKGZhbHNlKQogICAgICwgbV9u
ZWVkc0FuaW1hdGVMYXllcnMoZmFsc2UpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBt
X2NvbW1pdE51bWJlcigwKQpAQCAtMTA1LDExICsxMDQsNyBAQCBib29sIENDTGF5ZXJUcmVlSG9z
dDo6aW5pdGlhbGl6ZSgpCiAgICAgICAgIG1fcHJveHkgPSBDQ1NpbmdsZVRocmVhZFByb3h5Ojpj
cmVhdGUodGhpcyk7CiAgICAgbV9wcm94eS0+c3RhcnQoKTsKIAotICAgIGlmICghbV9wcm94eS0+
aW5pdGlhbGl6ZUNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbV9jb21w
b3NpdG9ySWRlbnRpZmllciA9IG1fcHJveHktPmNvbXBvc2l0b3JJZGVudGlmaWVyKCk7Ci0gICAg
cmV0dXJuIHRydWU7CisgICAgcmV0dXJuIG1fcHJveHktPmluaXRpYWxpemVDb250ZXh0KCk7CiB9
CiAKIENDTGF5ZXJUcmVlSG9zdDo6fkNDTGF5ZXJUcmVlSG9zdCgpCkBAIC0yOTIsNiArMjg3LDEx
IEBAIFBhc3NPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRl
Q29udGV4dCgpCiAgICAgcmV0dXJuIG1fY2xpZW50LT5jcmVhdGVPdXRwdXRTdXJmYWNlKCk7CiB9
CiAKK1Bhc3NPd25QdHI8Q0NJbnB1dEhhbmRsZXI+IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlSW5w
dXRIYW5kbGVyKCkKK3sKKyAgICByZXR1cm4gbV9jbGllbnQtPmNyZWF0ZUlucHV0SGFuZGxlcigp
OworfQorCiBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IENDTGF5ZXJUcmVlSG9zdDo6
Y3JlYXRlTGF5ZXJUcmVlSG9zdEltcGwoQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCogY2xpZW50
KQogewogICAgIHJldHVybiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUobV9zZXR0aW5ncywg
Y2xpZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggNzQyNzg4YzcwNjc4M2Ji
NjM4ZjUzZDYyNmYyZGM1Y2MxZTNhNTgwYS4uNWQ3ODU4NTIxOWUyYzkxYjJlNWZhZTU1MjcwOTA5
ZjVkNDg0MmJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTE0NCw2ICsxNDQs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsQ29tbWl0KCk7CiAgICAgdm9pZCBjb21taXRDb21w
bGV0ZSgpOwogICAgIFBhc3NPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZUNvbnRleHQo
KTsKKyAgICBQYXNzT3duUHRyPENDSW5wdXRIYW5kbGVyPiBjcmVhdGVJbnB1dEhhbmRsZXIoKTsK
ICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gY3JlYXRlTGF5ZXJU
cmVlSG9zdEltcGwoQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCopOwogICAgIHZvaWQgZGlkTG9z
ZUNvbnRleHQoKTsKICAgICBlbnVtIFJlY3JlYXRlUmVzdWx0IHsKQEAgLTE2Miw4ICsxNjMsNiBA
QCBwdWJsaWM6CiAKICAgICBDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCgpIHsgcmV0dXJu
IG1fY2xpZW50OyB9CiAKLSAgICBpbnQgY29tcG9zaXRvcklkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2NvbXBvc2l0b3JJZGVudGlmaWVyOyB9Ci0KICAgICAvLyBPbmx5IHVzZWQgd2hlbiBj
b21wb3NpdGluZyBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgdm9pZCBjb21wb3NpdGUoKTsKICAg
ICB2b2lkIHNjaGVkdWxlQ29tcG9zaXRlKCk7CkBAIC0yNjcsOCArMjY2LDYgQEAgcHJpdmF0ZToK
ICAgICBib29sIGFuaW1hdGVMYXllcnNSZWN1cnNpdmUoTGF5ZXJDaHJvbWl1bSogY3VycmVudCwg
ZG91YmxlIG1vbm90b25pY1RpbWUpOwogICAgIHZvaWQgc2V0QW5pbWF0aW9uRXZlbnRzUmVjdXJz
aXZlKGNvbnN0IENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJiwgTGF5ZXJDaHJvbWl1bSosIGRvdWJs
ZSB3YWxsQ2xvY2tUaW1lKTsKIAotICAgIGludCBtX2NvbXBvc2l0b3JJZGVudGlmaWVyOwotCiAg
ICAgYm9vbCBtX2FuaW1hdGluZzsKICAgICBib29sIG1fbmVlZHNBbmltYXRlTGF5ZXJzOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENsaWVudC5oCmluZGV4IDhkOTY2Nzk5YmRiZWRl
MDM2MmI2Y2M3MjUzYTAwODU2YWYzMmFiNmIuLjNkNWNiMzdjYmU5NTk5NTU3ZTg3YTIxYjAzYTUx
NmE3NGY4MmM2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENsaWVudC5oCkBA
IC0zMiw2ICszMiw3IEBAIGNsYXNzIFdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlOwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDQ0lucHV0SGFuZGxlcjsKIGNsYXNzIEludFNpemU7
CiAKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdENsaWVudCB7CkBAIC00NCw2ICs0NSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBJbnRTaXplJiBz
Y3JvbGxEZWx0YSwgZmxvYXQgcGFnZVNjYWxlKSA9IDA7CiAgICAgdmlydHVhbCBQYXNzT3duUHRy
PFdlYktpdDo6V2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2U+IGNyZWF0ZU91dHB1dFN1cmZhY2Uo
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlT3V0cHV0U3VyZmFjZShib29sIHN1
Y2Nlc3MpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NJbnB1dEhhbmRsZXI+IGNyZWF0
ZUlucHV0SGFuZGxlcigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENvbW1pdCgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRD
b21taXRBbmREcmF3RnJhbWUoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKaW5kZXggNjAyZTlkNDlmZjhkNzJm
NjQ3NjNmMmI0YmNlNzVmYjA2ZDQ5MmNhNi4uNDIxMjRjM2EyZWIwZDI1NmQ2NTQ4MThhYWU2ODY1
MDA5NmY1ODQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaApAQCAtNzksOCArNzksNiBAQCBwdWJsaWM6CiAgICAg
Ly8gcmVpbml0aWFsaXplZC4KICAgICB2aXJ0dWFsIGJvb2wgcmVjcmVhdGVDb250ZXh0KCkgPSAw
OwogCi0gICAgdmlydHVhbCBpbnQgY29tcG9zaXRvcklkZW50aWZpZXIoKSBjb25zdCA9IDA7Ci0K
ICAgICB2aXJ0dWFsIHZvaWQgaW1wbFNpZGVSZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRz
JikgPSAwOwogCiAgICAgdmlydHVhbCBjb25zdCBSZW5kZXJlckNhcGFiaWxpdGllcyYgcmVuZGVy
ZXJDYXBhYmlsaXRpZXMoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuY3BwCmluZGV4IDY4NzZlYTIxODhiYWY2NjY4YTI5YWMzN2MxY2QzOGM4Y2I0NDFjZTku
LjQ5ZTVlZTRiMTJiOGZjMTBhZmU1YmQ0YWVkN2NhN2Y5MzZiNTRlZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC00Niw3ICs0Niw2IEBAIFBhc3NPd25QdHI8
Q0NQcm94eT4gQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y3JlYXRlKENDTGF5ZXJUcmVlSG9zdCogbGF5
ZXJUcmVlSG9zdCkKIENDU2luZ2xlVGhyZWFkUHJveHk6OkNDU2luZ2xlVGhyZWFkUHJveHkoQ0NM
YXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KQogICAgIDogbV9sYXllclRyZWVIb3N0KGxheWVy
VHJlZUhvc3QpCiAgICAgLCBtX2NvbnRleHRMb3N0KGZhbHNlKQotICAgICwgbV9jb21wb3NpdG9y
SWRlbnRpZmllcigtMSkKICAgICAsIG1fcmVuZGVyZXJJbml0aWFsaXplZChmYWxzZSkKICAgICAs
IG1fbmV4dEZyYW1lSXNOZXdseUNvbW1pdHRlZEZyYW1lKGZhbHNlKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4IGE3YWZkMGQ5MDFiZTkyYWE1MWYzZGI3ZDY4OTE0
YzM5NzE0ZWI5ODcuLmE0OGJkYWYwYjI0ZGQ5MDA1Nzg3N2Q4YjM5NThhMjZhMTljOGU0NTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTUwLDcgKzUwLDYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCBpbml0aWFsaXplUmVuZGVyZXIoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJv
b2wgcmVjcmVhdGVDb250ZXh0KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBpbnQgY29tcG9zaXRv
cklkZW50aWZpZXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2NvbXBvc2l0b3JJZGVudGlm
aWVyOyB9CiAgICAgdmlydHVhbCB2b2lkIGltcGxTaWRlUmVuZGVyaW5nU3RhdHMoQ0NSZW5kZXJp
bmdTdGF0cyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyZXJDYXBhYmlsaXRp
ZXMmIHJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGxvc2VDb250ZXh0KCkgT1ZFUlJJREU7CkBAIC04OCw3ICs4Nyw2IEBAIHByaXZhdGU6CiAg
ICAgLy8gQWNjZXNzZWQgb24gbWFpbiB0aHJlYWQgb25seS4KICAgICBDQ0xheWVyVHJlZUhvc3Qq
IG1fbGF5ZXJUcmVlSG9zdDsKICAgICBib29sIG1fY29udGV4dExvc3Q7Ci0gICAgaW50IG1fY29t
cG9zaXRvcklkZW50aWZpZXI7CiAKICAgICAvLyBIb2xkcyBvbiB0byB0aGUgY29udGV4dCBiZXR3
ZWVuIGluaXRpYWxpemVDb250ZXh0KCkgYW5kIGluaXRpYWxpemVSZW5kZXJlcigpIGNhbGxzLiBT
aG91bGRuJ3QKICAgICAvLyBiZSB1c2VkIGZvciBhbnl0aGluZyBlbHNlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcAppbmRleCBiM2FmNThlOTMyYWUzMmI1ZDJiMjg4MjIwZTExNjdkODEwNjE3
MGI0Li43MWFjZDc5ZTczYzYyM2E4ZmQ2YTZiYjRhM2RiYzZlMjZmNzllMGEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcApAQCAtNzEsNyArNzEsNiBAQCBDQ1RocmVhZFByb3h5OjpDQ1Ro
cmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCkKICAgICAsIG1fY29tbWl0
UmVxdWVzdFNlbnRUb0ltcGxUaHJlYWQoZmFsc2UpCiAgICAgLCBtX2ZvcmNlZENvbW1pdFJlcXVl
c3RlZChmYWxzZSkKICAgICAsIG1fbGF5ZXJUcmVlSG9zdChsYXllclRyZWVIb3N0KQotICAgICwg
bV9jb21wb3NpdG9ySWRlbnRpZmllcigtMSkKICAgICAsIG1fcmVuZGVyZXJJbml0aWFsaXplZChm
YWxzZSkKICAgICAsIG1fc3RhcnRlZChmYWxzZSkKICAgICAsIG1fdGV4dHVyZXNBY3F1aXJlZCh0
cnVlKQpAQCAtMjcxLDEyICsyNzAsNiBAQCBib29sIENDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29u
dGV4dCgpCiAgICAgcmV0dXJuIHJlY3JlYXRlU3VjY2VlZGVkOwogfQogCi1pbnQgQ0NUaHJlYWRQ
cm94eTo6Y29tcG9zaXRvcklkZW50aWZpZXIoKSBjb25zdAotewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7Ci0gICAgcmV0dXJuIG1fY29tcG9zaXRvcklkZW50aWZpZXI7Ci19Ci0KIHZvaWQg
Q0NUaHJlYWRQcm94eTo6aW1wbFNpZGVSZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJiBz
dGF0cykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtNDA5LDcgKzQwMiw4IEBA
IHZvaWQgQ0NUaHJlYWRQcm94eTo6c3RhcnQoKQogICAgIC8vIENyZWF0ZSBMYXllclRyZWVIb3N0
SW1wbC4KICAgICBEZWJ1Z1Njb3BlZFNldE1haW5UaHJlYWRCbG9ja2VkIG1haW5UaHJlYWRCbG9j
a2VkOwogICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBsZXRpb247Ci0gICAgQ0NQcm94eTo6aW1w
bFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJv
eHk6OmluaXRpYWxpemVJbXBsT25JbXBsVGhyZWFkLCAmY29tcGxldGlvbikpOworICAgIE93blB0
cjxDQ0lucHV0SGFuZGxlcj4gaGFuZGxlciA9IG1fbGF5ZXJUcmVlSG9zdC0+Y3JlYXRlSW5wdXRI
YW5kbGVyKCk7CisgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1Ro
cmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVJbXBsT25JbXBsVGhyZWFk
LCAmY29tcGxldGlvbiwgaGFuZGxlci5yZWxlYXNlKCkpKTsKICAgICBjb21wbGV0aW9uLndhaXQo
KTsKIAogICAgIG1fc3RhcnRlZCA9IHRydWU7CkBAIC03MDIsNyArNjk2LDggQEAgQ0NTY2hlZHVs
ZWRBY3Rpb25EcmF3QW5kU3dhcFJlc3VsdCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25E
cmF3QW5kU3dhcEludGUKICAgICBkb3VibGUgbW9ub3RvbmljVGltZSA9IG1vbm90b25pY2FsbHlJ
bmNyZWFzaW5nVGltZSgpOwogICAgIGRvdWJsZSB3YWxsQ2xvY2tUaW1lID0gY3VycmVudFRpbWUo
KTsKIAotICAgIG1faW5wdXRIYW5kbGVyT25JbXBsVGhyZWFkLT5hbmltYXRlKG1vbm90b25pY1Rp
bWUpOworICAgIGlmIChtX2lucHV0SGFuZGxlck9uSW1wbFRocmVhZCkKKyAgICAgICAgbV9pbnB1
dEhhbmRsZXJPbkltcGxUaHJlYWQtPmFuaW1hdGUobW9ub3RvbmljVGltZSk7CiAgICAgbV9sYXll
clRyZWVIb3N0SW1wbC0+YW5pbWF0ZShtb25vdG9uaWNUaW1lLCB3YWxsQ2xvY2tUaW1lKTsKIAog
ICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiBhIGZvcmNlZCBkcmF3LCByZWdhcmRsZXNz
IG9mIHdoZXRoZXIgd2UgYXJlIGFibGUgdG8gcHJvZHVjZSBhIGZyYW1lLApAQCAtODU1LDcgKzg1
MCw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6dHJ5VG9SZWNyZWF0ZUNvbnRleHQoKQogICAgICAg
ICBtX2NvbnRleHRSZWNyZWF0aW9uVGltZXIuY2xlYXIoKTsKIH0KIAotdm9pZCBDQ1RocmVhZFBy
b3h5Ojppbml0aWFsaXplSW1wbE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxl
dGlvbikKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUltcGxPbkltcGxUaHJlYWQoQ0ND
b21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIFBhc3NPd25QdHI8Q0NJbnB1dEhhbmRsZXI+IHBv
cEhhbmRsZXIpCiB7CiAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5Ojppbml0
aWFsaXplSW1wbE9uSW1wbFRocmVhZCIpOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CkBA
IC04NjksOCArODY0LDkgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplSW1wbE9uSW1w
bFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKICAgICBtX3NjaGVkdWxlck9u
SW1wbFRocmVhZCA9IENDU2NoZWR1bGVyOjpjcmVhdGUodGhpcywgZnJhbWVSYXRlQ29udHJvbGxl
ci5yZWxlYXNlKCkpOwogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXRWaXNpYmxlKG1f
bGF5ZXJUcmVlSG9zdEltcGwtPnZpc2libGUoKSk7CiAKLSAgICBtX2lucHV0SGFuZGxlck9uSW1w
bFRocmVhZCA9IENDSW5wdXRIYW5kbGVyOjpjcmVhdGUobV9sYXllclRyZWVIb3N0SW1wbC5nZXQo
KSk7Ci0gICAgbV9jb21wb3NpdG9ySWRlbnRpZmllciA9IG1faW5wdXRIYW5kbGVyT25JbXBsVGhy
ZWFkLT5pZGVudGlmaWVyKCk7CisgICAgbV9pbnB1dEhhbmRsZXJPbkltcGxUaHJlYWQgPSBwb3BI
YW5kbGVyOworICAgIGlmIChtX2lucHV0SGFuZGxlck9uSW1wbFRocmVhZCkKKyAgICAgICAgbV9p
bnB1dEhhbmRsZXJPbkltcGxUaHJlYWQtPmJpbmRUb0NsaWVudChtX2xheWVyVHJlZUhvc3RJbXBs
LmdldCgpKTsKIAogICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5oCmluZGV4IGM0OGRmOTMwNTk5NmJjNDAzZjY2ZWM1Y2Q5YTNlOWIzNmM2NWRlZDcuLmFh
MmI5NTM3YTY4YmIxZWY1YTQ2YmZlNmFlNzVmMzQ4MmFjYTZlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmgKQEAgLTU5LDcgKzU5LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRW
aXNpYmxlKGJvb2wpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplUmVuZGVy
ZXIoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgcmVjcmVhdGVDb250ZXh0KCkgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCBpbnQgY29tcG9zaXRvcklkZW50aWZpZXIoKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgaW1wbFNpZGVSZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0
YXRzJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBjb25zdCBSZW5kZXJlckNhcGFiaWxpdGllcyYg
cmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
bG9zZUNvbnRleHQoKSBPVkVSUklERTsKQEAgLTEzMyw3ICsxMzIsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgcmVxdWVzdFJlYWRiYWNrT25JbXBsVGhyZWFkKFJlYWRiYWNrUmVxdWVzdCopOwogICAg
IHZvaWQgcmVxdWVzdFN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uT25JbXBsVGhyZWFkKEludFNpemUg
dGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0
aW9uU2VjKTsKICAgICB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZChDQ0NvbXBs
ZXRpb25FdmVudCopOwotICAgIHZvaWQgaW5pdGlhbGl6ZUltcGxPbkltcGxUaHJlYWQoQ0NDb21w
bGV0aW9uRXZlbnQqKTsKKyAgICB2b2lkIGluaXRpYWxpemVJbXBsT25JbXBsVGhyZWFkKENDQ29t
cGxldGlvbkV2ZW50KiwgUGFzc093blB0cjxDQ0lucHV0SGFuZGxlcj4pOwogICAgIHZvaWQgc2V0
U3VyZmFjZVJlYWR5T25JbXBsVGhyZWFkKCk7CiAgICAgdm9pZCBzZXRWaXNpYmxlT25JbXBsVGhy
ZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgYm9vbCk7CiAgICAgdm9pZCBpbml0aWFsaXplQ29udGV4
dE9uSW1wbFRocmVhZChDQ0dyYXBoaWNzQ29udGV4dCopOwpAQCAtMTU0LDcgKzE1Myw2IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2ZvcmNlZENvbW1pdFJlcXVlc3RlZDsKICAgICBPd25QdHI8Q0NU
aHJlYWRQcm94eUNvbnRleHRSZWNyZWF0aW9uVGltZXI+IG1fY29udGV4dFJlY3JlYXRpb25UaW1l
cjsKICAgICBDQ0xheWVyVHJlZUhvc3QqIG1fbGF5ZXJUcmVlSG9zdDsKLSAgICBpbnQgbV9jb21w
b3NpdG9ySWRlbnRpZmllcjsKICAgICBib29sIG1fcmVuZGVyZXJJbml0aWFsaXplZDsKICAgICBS
ZW5kZXJlckNhcGFiaWxpdGllcyBtX1JlbmRlcmVyQ2FwYWJpbGl0aWVzTWFpblRocmVhZENvcHk7
CiAgICAgYm9vbCBtX3N0YXJ0ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCA4
MGNmMWQyNDVkMTJjZmQ1ZGM4YzZhZWI2OWY4ZjE4NTIxNzQ4YzEwLi4zODMxZmZlNzY5NWYzZmE5
NTYyNDRjOGQ1Zjc1NTE5MzEwODQ4Njk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkK
QEAgLTIwNSw2ICsyMDUsOCBAQAogICAgICAgICAgICAgJ3NyYy9XZWJJbWFnZUxheWVySW1wbC5o
JywKICAgICAgICAgICAgICdzcmMvV2ViTGF5ZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAnc3Jj
L1dlYkxheWVySW1wbC5oJywKKyAgICAgICAgICAgICdzcmMvV2ViVG9DQ0lucHV0SGFuZGxlckFk
YXB0ZXIuY3BwJywKKyAgICAgICAgICAgICdzcmMvV2ViVG9DQ0lucHV0SGFuZGxlckFkYXB0ZXIu
aCcsCiAgICAgICAgICAgICAnc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcCcsCiAgICAgICAg
ICAgICAnc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmgnLAogICAgICAgICAgICAgJ3NyYy9XZWJT
Y3JvbGxiYXJMYXllckltcGwuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcAppbmRleCBkMjkx
ZGM3YjI0YzcwY2NiMGIxODVhYjY4NTVkMzFkZTRkYTUyYjg3Li41NWIxZWQxZTNiNmRhNzkxMDVj
ZWIxY2MyYjNkMWE2YmYxZmRhODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwCkBAIC0yNywy
NiArMjcsMTYgQEAKIAogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgi
CiAKLSNpbmNsdWRlICJDQ1Byb3h5LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlQ3VydmVG
YWN0b3J5LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQuaCIKICNpbmNs
dWRlICJUcmFjZUV2ZW50LmgiCi0jaW5jbHVkZSAiV2ViQ29tcG9zaXRvckltcGwuaCIKICNpbmNs
dWRlICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViSW5w
dXRFdmVudC5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJJbnB1dEhhbmRsZXJDbGllbnQuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXNzT3duUHRyPENDSW5wdXRIYW5kbGVy
PiBDQ0lucHV0SGFuZGxlcjo6Y3JlYXRlKENDSW5wdXRIYW5kbGVyQ2xpZW50KiBpbnB1dEhhbmRs
ZXJDbGllbnQpCi17Ci0gICAgcmV0dXJuIFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckltcGw6OmNyZWF0ZShpbnB1dEhhbmRsZXJDbGllbnQpOwotfQotCi19Ci0KIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiAvLyBUaGVzZSBzdGF0aWNzIG1heSBvbmx5IGJlIGFjY2Vzc2VkIGZyb20gdGhl
IGNvbXBvc2l0b3IgdGhyZWFkLgpAQCAtNTgsMTUgKzQ4LDggQEAgV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlciogV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcjo6ZnJvbUlkZW50aWZpZXIoaW50IGlk
ZW50aWYKICAgICByZXR1cm4gV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmZyb21JZGVu
dGlmaWVyKGlkZW50aWZpZXIpOwogfQogCi1QYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsPiBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6Y3JlYXRlKFdlYkNvcmU6
OkNDSW5wdXRIYW5kbGVyQ2xpZW50KiBpbnB1dEhhbmRsZXJDbGllbnQpCi17Ci0gICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbChpbnB1dEhhbmRsZXJD
bGllbnQpKTsKLX0KLQogV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlciogV2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckltcGw6OmZyb21JZGVudGlmaWVyKGludCBpZGVudGlmaWVyKQogewotICAgIEFT
U0VSVChXZWJDb21wb3NpdG9ySW1wbDo6aW5pdGlhbGl6ZWQoKSk7Ci0gICAgQVNTRVJUKENDUHJv
eHk6OmlzSW1wbFRocmVhZCgpKTsKIAogICAgIGlmICghc19jb21wb3NpdG9ycykKICAgICAgICAg
cmV0dXJuIDA7CkBAIC03OCwyNiArNjEsMjAgQEAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlciog
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmZyb21JZGVudGlmaWVyKGludCBpZGUKICAg
ICByZXR1cm4gMDsKIH0KIAotV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OldlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsKENDSW5wdXRIYW5kbGVyQ2xpZW50KiBpbnB1dEhhbmRsZXJD
bGllbnQpCitXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6V2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGwoKQogICAgIDogbV9jbGllbnQoMCkKICAgICAsIG1faWRlbnRpZmllcihzX25l
eHRBdmFpbGFibGVJZGVudGlmaWVyKyspCi0gICAgLCBtX2lucHV0SGFuZGxlckNsaWVudChpbnB1
dEhhbmRsZXJDbGllbnQpCisgICAgLCBtX2lucHV0SGFuZGxlckNsaWVudCgwKQogI2lmbmRlZiBO
REVCVUcKICAgICAsIG1fZXhwZWN0U2Nyb2xsVXBkYXRlRW5kKGZhbHNlKQogICAgICwgbV9leHBl
Y3RQaW5jaFVwZGF0ZUVuZChmYWxzZSkKICNlbmRpZgogICAgICwgbV9nZXN0dXJlU2Nyb2xsU3Rh
cnRlZChmYWxzZSkKIHsKLSAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwotCi0g
ICAgaWYgKCFzX2NvbXBvc2l0b3JzKQotICAgICAgICBzX2NvbXBvc2l0b3JzID0gbmV3IEhhc2hT
ZXQ8V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwqPjsKLSAgICBzX2NvbXBvc2l0b3JzLT5h
ZGQodGhpcyk7CiB9CiAKIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjp+V2ViQ29tcG9z
aXRvcklucHV0SGFuZGxlckltcGwoKQogewotICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJl
YWQoKSk7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+d2lsbFNodXRkb3du
KCk7CiAKQEAgLTExMSw3ICs4OCw2IEBAIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjp+
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwoKQogCiB2b2lkIFdlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsOjpzZXRDbGllbnQoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudCog
Y2xpZW50KQogewotICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgLy8g
SXQncyB2YWxpZCB0byBzZXQgYSBuZXcgY2xpZW50IGlmIHdlJ3ZlIG5ldmVyIGhhZCBvbmUgb3Ig
dG8gY2xlYXIgdGhlIGNsaWVudCwgYnV0IGl0J3Mgbm90IHZhbGlkIHRvIGNoYW5nZSBmcm9tIGhh
dmluZyBvbmUgY2xpZW50IHRvIGEgZGlmZmVyZW50IG9uZS4KICAgICBBU1NFUlQoIW1fY2xpZW50
IHx8ICFjbGllbnQpOwogICAgIG1fY2xpZW50ID0gY2xpZW50OwpAQCAtMTE5LDcgKzk1LDYgQEAg
dm9pZCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2V0Q2xpZW50KFdlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJDbGllbnQqIGMKIAogdm9pZCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
SW1wbDo6aGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50JiBldmVudCkKIHsKLSAg
ICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX2NsaWVudCk7
CiAKICAgICBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6RXZlbnREaXNwb3NpdGlvbiBk
aXNwb3NpdGlvbiA9IGhhbmRsZUlucHV0RXZlbnRJbnRlcm5hbChldmVudCk7CkBAIC0xNDAsMTkg
KzExNSwxOSBAQCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6RXZlbnREaXNwb3NpdGlv
biBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aAogewogICAgIGlmIChldmVudC50eXBl
ID09IFdlYklucHV0RXZlbnQ6Ok1vdXNlV2hlZWwpIHsKICAgICAgICAgY29uc3QgV2ViTW91c2VX
aGVlbEV2ZW50JiB3aGVlbEV2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlV2hlZWxF
dmVudCo+KCZldmVudCk7Ci0gICAgICAgIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0
dXMgc2Nyb2xsU3RhdHVzID0gbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbEJlZ2luKEludFBv
aW50KHdoZWVsRXZlbnQueCwgd2hlZWxFdmVudC55KSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6Oldo
ZWVsKTsKKyAgICAgICAgV2ViSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgc2Nyb2xs
U3RhdHVzID0gbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbEJlZ2luKFdlYlBvaW50KHdoZWVs
RXZlbnQueCwgd2hlZWxFdmVudC55KSwgV2ViSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxJbnB1
dFR5cGVXaGVlbCk7CiAgICAgICAgIHN3aXRjaCAoc2Nyb2xsU3RhdHVzKSB7Ci0gICAgICAgIGNh
c2UgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQ6IHsKKyAgICAgICAgY2FzZSBX
ZWJJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1c1N0YXJ0ZWQ6IHsKICAgICAgICAgICAg
IFRSQUNFX0VWRU5UX0lOU1RBTlQyKCJjYyIsICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bDo6aGFuZGxlSW5wdXQgd2hlZWwgc2Nyb2xsIiwgImRlbHRhWCIsIC13aGVlbEV2ZW50LmRlbHRh
WCwgImRlbHRhWSIsIC13aGVlbEV2ZW50LmRlbHRhWSk7Ci0gICAgICAgICAgICBtX2lucHV0SGFu
ZGxlckNsaWVudC0+c2Nyb2xsQnkoSW50UG9pbnQod2hlZWxFdmVudC54LCB3aGVlbEV2ZW50Lnkp
LCBJbnRTaXplKC13aGVlbEV2ZW50LmRlbHRhWCwgLXdoZWVsRXZlbnQuZGVsdGFZKSk7CisgICAg
ICAgICAgICBtX2lucHV0SGFuZGxlckNsaWVudC0+c2Nyb2xsQnkoV2ViUG9pbnQod2hlZWxFdmVu
dC54LCB3aGVlbEV2ZW50LnkpLCBJbnRTaXplKC13aGVlbEV2ZW50LmRlbHRhWCwgLXdoZWVsRXZl
bnQuZGVsdGFZKSk7CiAgICAgICAgICAgICBtX2lucHV0SGFuZGxlckNsaWVudC0+c2Nyb2xsRW5k
KCk7CiAgICAgICAgICAgICByZXR1cm4gRGlkSGFuZGxlOwogICAgICAgICB9Ci0gICAgICAgIGNh
c2UgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbElnbm9yZWQ6CisgICAgICAgIGNhc2UgV2Vi
SW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXNJZ25vcmVkOgogICAgICAgICAgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIGJlIERyb3BFdmVudCwgYnV0IGluIGNhc2VzIHdoZXJlIHdlIGZh
aWwgdG8gcHJvcGVybHkgc3luYyBzY3JvbGxhYmlsaXR5IGl0J3Mgc2FmZXIgdG8gc2VuZCB0aGUK
ICAgICAgICAgICAgIC8vIGV2ZW50IHRvIHRoZSBtYWluIHRocmVhZC4gQ2hhbmdlIGJhY2sgdG8g
RHJvcEV2ZW50IG9uY2Ugd2UgaGF2ZSBzeW5jaHJvbml6YXRpb24gYnVncyBzb3J0ZWQgb3V0Lgog
ICAgICAgICAgICAgcmV0dXJuIERpZE5vdEhhbmRsZTsgCi0gICAgICAgIGNhc2UgQ0NJbnB1dEhh
bmRsZXJDbGllbnQ6OlNjcm9sbE9uTWFpblRocmVhZDoKKyAgICAgICAgY2FzZSBXZWJJbnB1dEhh
bmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1c09uTWFpblRocmVhZDoKICAgICAgICAgICAgIHJldHVy
biBEaWROb3RIYW5kbGU7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT0g
V2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luKSB7CkBAIC0xNjIsMTQgKzEzNywxNCBA
QCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6RXZlbnREaXNwb3NpdGlvbiBXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aAogICAgICAgICBtX2V4cGVjdFNjcm9sbFVwZGF0ZUVu
ZCA9IHRydWU7CiAjZW5kaWYKICAgICAgICAgY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBnZXN0dXJl
RXZlbnQgPSAqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViR2VzdHVyZUV2ZW50Kj4oJmV2ZW50KTsKLSAg
ICAgICAgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1cyBzY3JvbGxTdGF0dXMgPSBt
X2lucHV0SGFuZGxlckNsaWVudC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoZ2VzdHVyZUV2ZW50Lngs
IGdlc3R1cmVFdmVudC55KSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6Okdlc3R1cmUpOworICAgICAg
ICBXZWJJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1cyBzY3JvbGxTdGF0dXMgPSBtX2lu
cHV0SGFuZGxlckNsaWVudC0+c2Nyb2xsQmVnaW4oV2ViUG9pbnQoZ2VzdHVyZUV2ZW50LngsIGdl
c3R1cmVFdmVudC55KSwgV2ViSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxJbnB1dFR5cGVHZXN0
dXJlKTsKICAgICAgICAgc3dpdGNoIChzY3JvbGxTdGF0dXMpIHsKLSAgICAgICAgY2FzZSBDQ0lu
cHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZDoKKyAgICAgICAgY2FzZSBXZWJJbnB1dEhh
bmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1c1N0YXJ0ZWQ6CiAgICAgICAgICAgICBtX2dlc3R1cmVT
Y3JvbGxTdGFydGVkID0gdHJ1ZTsKICAgICAgICAgICAgIHJldHVybiBEaWRIYW5kbGU7Ci0gICAg
ICAgIGNhc2UgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbE9uTWFpblRocmVhZDoKKyAgICAg
ICAgY2FzZSBXZWJJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1c09uTWFpblRocmVhZDoK
ICAgICAgICAgICAgIHJldHVybiBEaWROb3RIYW5kbGU7Ci0gICAgICAgIGNhc2UgQ0NJbnB1dEhh
bmRsZXJDbGllbnQ6OlNjcm9sbElnbm9yZWQ6CisgICAgICAgIGNhc2UgV2ViSW5wdXRIYW5kbGVy
Q2xpZW50OjpTY3JvbGxTdGF0dXNJZ25vcmVkOgogICAgICAgICAgICAgcmV0dXJuIERyb3BFdmVu
dDsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PSBXZWJJbnB1dEV2ZW50
OjpHZXN0dXJlU2Nyb2xsVXBkYXRlKSB7CkBAIC0xNzksNyArMTU0LDcgQEAgV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlzcG9zaXRpb24gV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGw6OmgKICAgICAgICAgICAgIHJldHVybiBEaWROb3RIYW5kbGU7CiAKICAgICAgICAg
Y29uc3QgV2ViR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQgPSAqc3RhdGljX2Nhc3Q8Y29uc3Qg
V2ViR2VzdHVyZUV2ZW50Kj4oJmV2ZW50KTsKLSAgICAgICAgbV9pbnB1dEhhbmRsZXJDbGllbnQt
PnNjcm9sbEJ5KEludFBvaW50KGdlc3R1cmVFdmVudC54LCBnZXN0dXJlRXZlbnQueSksCisgICAg
ICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxCeShXZWJQb2ludChnZXN0dXJlRXZlbnQu
eCwgZ2VzdHVyZUV2ZW50LnkpLAogICAgICAgICAgICAgSW50U2l6ZSgtZ2VzdHVyZUV2ZW50LmRh
dGEuc2Nyb2xsVXBkYXRlLmRlbHRhWCwgLWdlc3R1cmVFdmVudC5kYXRhLnNjcm9sbFVwZGF0ZS5k
ZWx0YVkpKTsKICAgICAgICAgcmV0dXJuIERpZEhhbmRsZTsKICAgICB9IGVsc2UgaWYgKGV2ZW50
LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVuZCkgewpAQCAtMjEwLDcgKzE4
NSw3IEBAIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpFdmVudERpc3Bvc2l0aW9uIFdl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoCiAgICAgfSBlbHNlIGlmIChldmVudC50eXBl
ID09IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVQaW5jaFVwZGF0ZSkgewogICAgICAgICBBU1NFUlQo
bV9leHBlY3RQaW5jaFVwZGF0ZUVuZCk7CiAgICAgICAgIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYg
Z2VzdHVyZUV2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdlYkdlc3R1cmVFdmVudCo+KCZldmVu
dCk7Ci0gICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5waW5jaEdlc3R1cmVVcGRhdGUoZ2Vz
dHVyZUV2ZW50LmRhdGEucGluY2hVcGRhdGUuc2NhbGUsIEludFBvaW50KGdlc3R1cmVFdmVudC54
LCBnZXN0dXJlRXZlbnQueSkpOworICAgICAgICBtX2lucHV0SGFuZGxlckNsaWVudC0+cGluY2hH
ZXN0dXJlVXBkYXRlKGdlc3R1cmVFdmVudC5kYXRhLnBpbmNoVXBkYXRlLnNjYWxlLCBXZWJQb2lu
dChnZXN0dXJlRXZlbnQueCwgZ2VzdHVyZUV2ZW50LnkpKTsKICAgICAgICAgcmV0dXJuIERpZEhh
bmRsZTsKICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6R2VzdHVy
ZUZsaW5nU3RhcnQpIHsKICAgICAgICAgY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZl
bnQgPSAqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViR2VzdHVyZUV2ZW50Kj4oJmV2ZW50KTsKQEAgLTIy
Nyw5ICsyMDIsOSBAQCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6RXZlbnREaXNwb3Np
dGlvbiBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aAogCiBXZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbDo6RXZlbnREaXNwb3NpdGlvbiBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
SW1wbDo6aGFuZGxlR2VzdHVyZUZsaW5nKGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2
ZW50KQogewotICAgIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgc2Nyb2xsU3Rh
dHVzID0gbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbEJlZ2luKEludFBvaW50KGdlc3R1cmVF
dmVudC54LCBnZXN0dXJlRXZlbnQueSksIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpHZXN0dXJlKTsK
KyAgICBXZWJJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1cyBzY3JvbGxTdGF0dXMgPSBt
X2lucHV0SGFuZGxlckNsaWVudC0+c2Nyb2xsQmVnaW4oV2ViUG9pbnQoZ2VzdHVyZUV2ZW50Lngs
IGdlc3R1cmVFdmVudC55KSwgV2ViSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxJbnB1dFR5cGVH
ZXN0dXJlKTsKICAgICBzd2l0Y2ggKHNjcm9sbFN0YXR1cykgewotICAgIGNhc2UgQ0NJbnB1dEhh
bmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQ6IHsKKyAgICBjYXNlIFdlYklucHV0SGFuZGxlckNs
aWVudDo6U2Nyb2xsU3RhdHVzU3RhcnRlZDogewogICAgICAgICBtX3doZWVsRmxpbmdDdXJ2ZSA9
IFBsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeTo6Z2V0KCktPmNyZWF0ZUN1cnZlKGdlc3R1cmVF
dmVudC5kYXRhLmZsaW5nU3RhcnQuc291cmNlRGV2aWNlLCBGbG9hdFBvaW50KGdlc3R1cmVFdmVu
dC5kYXRhLmZsaW5nU3RhcnQudmVsb2NpdHlYLCBnZXN0dXJlRXZlbnQuZGF0YS5mbGluZ1N0YXJ0
LnZlbG9jaXR5WSkpOwogICAgICAgICBUUkFDRV9FVkVOVF9BU1lOQ19CRUdJTjEoImNjIiwgIldl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5kbGVHZXN0dXJlRmxpbmc6OnN0YXJ0ZWQi
LCB0aGlzLCAiY3VydmUiLCBtX3doZWVsRmxpbmdDdXJ2ZS0+ZGVidWdOYW1lKCkpOwogICAgICAg
ICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLmRlbHRhID0gV2ViRmxvYXRQb2ludChnZXN0dXJlRXZl
bnQuZGF0YS5mbGluZ1N0YXJ0LnZlbG9jaXR5WCwgZ2VzdHVyZUV2ZW50LmRhdGEuZmxpbmdTdGFy
dC52ZWxvY2l0eVkpOwpAQCAtMjQwLDExICsyMTUsMTEgQEAgV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGw6OkV2ZW50RGlzcG9zaXRpb24gV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6
OmgKICAgICAgICAgbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjaGVkdWxlQW5pbWF0aW9uKCk7CiAg
ICAgICAgIHJldHVybiBEaWRIYW5kbGU7CiAgICAgfQotICAgIGNhc2UgQ0NJbnB1dEhhbmRsZXJD
bGllbnQ6OlNjcm9sbE9uTWFpblRocmVhZDogeworICAgIGNhc2UgV2ViSW5wdXRIYW5kbGVyQ2xp
ZW50OjpTY3JvbGxTdGF0dXNPbk1haW5UaHJlYWQ6IHsKICAgICAgICAgVFJBQ0VfRVZFTlRfSU5T
VEFOVDAoImNjIiwgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5kbGVHZXN0dXJl
Rmxpbmc6OnNjcm9sbE9uTWFpblRocmVhZCIpOwogICAgICAgICByZXR1cm4gRGlkTm90SGFuZGxl
OwogICAgIH0KLSAgICBjYXNlIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxJZ25vcmVkOiB7
CisgICAgY2FzZSBXZWJJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1c0lnbm9yZWQ6IHsK
ICAgICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoImNjIiwgIldlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsOjpoYW5kbGVHZXN0dXJlRmxpbmc6Omlnbm9yZWQiKTsKICAgICAgICAgLy8gV2Ug
c3RpbGwgcGFzcyB0aGUgY3VydmUgdG8gdGhlIG1haW4gdGhyZWFkIGlmIHRoZXJlJ3Mgbm90aGlu
ZyBzY3JvbGxhYmxlLCBpbiBjYXNlIHNvbWV0aGluZwogICAgICAgICAvLyByZWdpc3RlcnMgYSBo
YW5kbGVyIGJlZm9yZSB0aGUgY3VydmUgaXMgb3Zlci4KQEAgLTI1NCwxMCArMjI5LDE0IEBAIFdl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpFdmVudERpc3Bvc2l0aW9uIFdlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsOjpoCiAgICAgcmV0dXJuIERpZE5vdEhhbmRsZTsKIH0KIAotaW50
IFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjppZGVudGlmaWVyKCkgY29uc3QKK3ZvaWQg
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmJpbmRUb0NsaWVudChXZWJJbnB1dEhhbmRs
ZXJDbGllbnQqIGNsaWVudCkKIHsKLSAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkp
OwotICAgIHJldHVybiBtX2lkZW50aWZpZXI7CisgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoImNj
IiwgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpiaW5kVG9DbGllbnQiKTsKKyAgICBp
ZiAoIXNfY29tcG9zaXRvcnMpCisgICAgICAgIHNfY29tcG9zaXRvcnMgPSBuZXcgSGFzaFNldDxX
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbCo+OworICAgIHNfY29tcG9zaXRvcnMtPmFkZCh0
aGlzKTsKKworICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50ID0gY2xpZW50OwogfQogCiB2b2lkIFdl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjphbmltYXRlKGRvdWJsZSBtb25vdG9uaWNUaW1l
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsLmgKaW5kZXggOTU3OGI1Y2ZkZTE3NjAwODU5Mjk0NzE2MDdiMzU5
Y2M5ZDVjZTFkOS4uZmE4MWRlOTQ1MjdjYWQ5ZTJjYWFjYmQ1YTlkNGE4NzNiMzk2Y2VmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9y
SW5wdXRIYW5kbGVySW1wbC5oCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpZm5kZWYgV2ViQ29tcG9z
aXRvcklucHV0SGFuZGxlckltcGxfaAogI2RlZmluZSBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
SW1wbF9oCiAKLSNpbmNsdWRlICJDQ0lucHV0SGFuZGxlci5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
R2VzdHVyZUN1cnZlVGFyZ2V0LmgiCiAjaW5jbHVkZSAiV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFt
ZXRlcnMuaCIKICNpbmNsdWRlICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyLmgiCiAjaW5jbHVk
ZSAiV2ViSW5wdXRFdmVudC5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJJbnB1dEhhbmRsZXIuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTQwLDcgKzQwLDYgQEAgY2xhc3MgTXV0ZXg7CiB9
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENDSW5wdXRIYW5kbGVyQ2xpZW50OwogY2xh
c3MgSW50UG9pbnQ7CiBjbGFzcyBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTsKIH0KQEAgLTQ5LDI3ICs0
OCwyOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckNsaWVudDsKIAotY2xhc3MgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwgOiBwdWJs
aWMgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlciwgcHVibGljIFdlYkNvcmU6OkNDSW5wdXRIYW5k
bGVyLCBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQgeworY2xhc3Mg
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwgOiBwdWJsaWMgV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlciwgcHVibGljIFdlYklucHV0SGFuZGxlciwgcHVibGljIFdlYkNvcmU6OlBsYXRmb3Jt
R2VzdHVyZUN1cnZlVGFyZ2V0IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8V2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGw+IGNyZWF0ZShXZWJDb3JlOjpDQ0lucHV0SGFuZGxl
ckNsaWVudCopOwogICAgIHN0YXRpYyBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyKiBmcm9tSWRl
bnRpZmllcihpbnQgaWRlbnRpZmllcik7CiAKKyAgICBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
SW1wbCgpOwogICAgIHZpcnR1YWwgfldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsKCk7CiAK
ICAgICAvLyBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyIGltcGxlbWVudGF0aW9uLgogICAgIHZp
cnR1YWwgdm9pZCBzZXRDbGllbnQoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudCopOwog
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmKTsK
IAotICAgIC8vIFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyIGltcGxlbWVudGF0aW9uLgotICAgIHZp
cnR1YWwgaW50IGlkZW50aWZpZXIoKSBjb25zdDsKKyAgICAvLyBXZWJJbnB1dEhhbmRsZXIgaW1w
bGVtZW50YXRpb24uCisgICAgdmlydHVhbCB2b2lkIGJpbmRUb0NsaWVudChXZWJJbnB1dEhhbmRs
ZXJDbGllbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZShkb3VibGUgbW9ub3RvbmljVGlt
ZSk7CiAKICAgICAvLyBXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCBpbXBsZW1l
bnRhdGlvbi4KICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmKTsKIAorICAgIGludCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVy
OyB9CisKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGwoV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQqKTsKIAogICAgIGVudW0gRXZlbnREaXNw
b3NpdGlvbiB7IERpZEhhbmRsZSwgRGlkTm90SGFuZGxlLCBEcm9wRXZlbnQgfTsKICAgICAvLyBU
aGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyB0aGUgaW5wdXQgZXZlbnQgYW5kIGRldGVybWluZXMgdGhl
IGRpc3Bvc2l0aW9uLCBidXQgZG9lcyBub3QgbWFrZQpAQCAtODcsNyArODcsNyBAQCBwcml2YXRl
OgogCiAgICAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudCogbV9jbGllbnQ7CiAgICAg
aW50IG1faWRlbnRpZmllcjsKLSAgICBXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudCogbV9p
bnB1dEhhbmRsZXJDbGllbnQ7CisgICAgV2ViSW5wdXRIYW5kbGVyQ2xpZW50KiBtX2lucHV0SGFu
ZGxlckNsaWVudDsKIAogI2lmbmRlZiBOREVCVUcKICAgICBib29sIG1fZXhwZWN0U2Nyb2xsVXBk
YXRlRW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJU
cmVlVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVl
Vmlld0ltcGwuY3BwCmluZGV4IDg3MGI4ZjFiNmMxMGVhYmJlZWIyODMzMDAzZWIzZjNjYjJiZDFi
ODMuLmJiODk4Yzk2NjkyOWUzNGFlYjE1ZjdhM2U2NmY4MDExY2YzMTcxNjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKQEAg
LTI3LDEwICsyNywxMyBAQAogI2luY2x1ZGUgIldlYkxheWVyVHJlZVZpZXdJbXBsLmgiCiAKICNp
bmNsdWRlICJDQ0ZvbnRBdGxhcy5oIgorI2luY2x1ZGUgIkNDSW5wdXRIYW5kbGVyLmgiCiAjaW5j
bHVkZSAiQ0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgIldlYkxheWVySW1wbC5oIgorI2luY2x1ZGUgIldlYlRvQ0NJbnB1dEhhbmRsZXJBZGFw
dGVyLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+CisjaW5jbHVk
ZSA8cHVibGljL1dlYklucHV0SGFuZGxlci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllci5o
PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg+CiAjaW5jbHVkZSA8cHVibGlj
L1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaD4KQEAgLTkxLDExICs5NCw2IEBAIHZvaWQgV2ViTGF5
ZXJUcmVlVmlld0ltcGw6OmNsZWFyUm9vdExheWVyKCkKICAgICBtX2xheWVyVHJlZUhvc3QtPnNl
dFJvb3RMYXllcihQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+KCkpOwogfQogCi1pbnQgV2ViTGF5
ZXJUcmVlVmlld0ltcGw6OmNvbXBvc2l0b3JJZGVudGlmaWVyKCkKLXsKLSAgICByZXR1cm4gbV9s
YXllclRyZWVIb3N0LT5jb21wb3NpdG9ySWRlbnRpZmllcigpOwotfQotCiB2b2lkIFdlYkxheWVy
VHJlZVZpZXdJbXBsOjpzZXRWaWV3cG9ydFNpemUoY29uc3QgV2ViU2l6ZSYgbGF5b3V0Vmlld3Bv
cnRTaXplLCBjb25zdCBXZWJTaXplJiBkZXZpY2VWaWV3cG9ydFNpemUpCiB7CiAgICAgaWYgKCFk
ZXZpY2VWaWV3cG9ydFNpemUuaXNFbXB0eSgpKQpAQCAtMjQ4LDYgKzI0NiwxNCBAQCB2b2lkIFdl
YkxheWVyVHJlZVZpZXdJbXBsOjpkaWRSZWNyZWF0ZU91dHB1dFN1cmZhY2UoYm9vbCBzdWNjZXNz
KQogICAgIG1fY2xpZW50LT5kaWRSZWNyZWF0ZU91dHB1dFN1cmZhY2Uoc3VjY2Vzcyk7CiB9CiAK
K1Bhc3NPd25QdHI8Q0NJbnB1dEhhbmRsZXI+IFdlYkxheWVyVHJlZVZpZXdJbXBsOjpjcmVhdGVJ
bnB1dEhhbmRsZXIoKQoreworICAgIE93blB0cjxXZWJJbnB1dEhhbmRsZXI+IGhhbmRsZXIgPSBh
ZG9wdFB0cihtX2NsaWVudC0+Y3JlYXRlSW5wdXRIYW5kbGVyKCkpOworICAgIGlmIChoYW5kbGVy
KQorICAgICAgICByZXR1cm4gV2ViVG9DQ0lucHV0SGFuZGxlckFkYXB0ZXI6OmNyZWF0ZShoYW5k
bGVyLnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIHZvaWQgV2ViTGF5ZXJU
cmVlVmlld0ltcGw6OndpbGxDb21taXQoKQogewogICAgIG1fY2xpZW50LT53aWxsQ29tbWl0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwu
aAppbmRleCA1OTM5NjJhMDg2ZjA1M2FmNDgwMzI1NjNiNWI1YmQ0M2ViMDJlY2U2Li5hMWRiZDc0
MDQ2ZWQwMmNjZjgxYTNiMmY5MzQzNGJkODVhNzY5ODk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmgKQEAgLTUxLDcgKzUxLDYgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRTdXJmYWNlUmVhZHkoKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Um9vdExheWVyKGNvbnN0IFdlYkxheWVyJikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIGNsZWFyUm9vdExheWVyKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBp
bnQgY29tcG9zaXRvcklkZW50aWZpZXIoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Vmlld3BvcnRTaXplKGNvbnN0IFdlYlNpemUmIGxheW91dFZpZXdwb3J0U2l6ZSwgY29uc3QgV2Vi
U2l6ZSYgZGV2aWNlVmlld3BvcnRTaXplID0gV2ViU2l6ZSgpKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIFdlYlNpemUgbGF5b3V0Vmlld3BvcnRTaXplKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBXZWJTaXplIGRldmljZVZpZXdwb3J0U2l6ZSgpIGNvbnN0IE9WRVJSSURFOwpAQCAtODEs
NiArODAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZSkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNl
PiBjcmVhdGVPdXRwdXRTdXJmYWNlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y3JlYXRlT3V0cHV0U3VyZmFjZShib29sIHN1Y2Nlc3MpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
UGFzc093blB0cjxXZWJDb3JlOjpDQ0lucHV0SGFuZGxlcj4gY3JlYXRlSW5wdXRIYW5kbGVyKCkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDb21taXQoKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ29tbWl0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZENv
bW1pdEFuZERyYXdGcmFtZSgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVG9DQ0lucHV0SGFuZGxlckFkYXB0ZXIuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVG9DQ0lucHV0SGFuZGxlckFkYXB0ZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkNzc2OThkNzBmNzk1MWE0YjUxYzg1YTFkOTI1MjIxYjlmYTMzODQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUb0NDSW5wdXRIYW5kbGVyQWRhcHRl
ci5jcHAKQEAgLTAsMCArMSwxMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2luY2x1ZGUgIldlYlRvQ0NJbnB1dEhhbmRsZXJBZGFwdGVyLmgiCisKKyNpbmNsdWRl
IDxwdWJsaWMvV2ViSW5wdXRIYW5kbGVyQ2xpZW50Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitQYXNzT3duUHRyPFdlYlRvQ0NJbnB1dEhhbmRsZXJBZGFwdGVyPiBXZWJUb0NDSW5wdXRIYW5k
bGVyQWRhcHRlcjo6Y3JlYXRlKFBhc3NPd25QdHI8V2ViSW5wdXRIYW5kbGVyPiBoYW5kbGVyKQor
eworICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViVG9DQ0lucHV0SGFuZGxlckFkYXB0ZXIoaGFu
ZGxlcikpOworfQorCitXZWJUb0NDSW5wdXRIYW5kbGVyQWRhcHRlcjo6V2ViVG9DQ0lucHV0SGFu
ZGxlckFkYXB0ZXIoUGFzc093blB0cjxXZWJJbnB1dEhhbmRsZXI+IGhhbmRsZXIpCisgICAgOiBt
X2hhbmRsZXIoaGFuZGxlcikKK3sKK30KKworV2ViVG9DQ0lucHV0SGFuZGxlckFkYXB0ZXI6On5X
ZWJUb0NDSW5wdXRIYW5kbGVyQWRhcHRlcigpCit7Cit9CisKK2NsYXNzIFdlYlRvQ0NJbnB1dEhh
bmRsZXJBZGFwdGVyOjpDbGllbnRBZGFwdGVyIDogcHVibGljIFdlYklucHV0SGFuZGxlckNsaWVu
dCB7CitwdWJsaWM6CisgICAgQ2xpZW50QWRhcHRlcihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNs
aWVudCogY2xpZW50KQorICAgICAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICB7CisgICAgfQor
CisgICAgdmlydHVhbCB+Q2xpZW50QWRhcHRlcigpCisgICAgeworICAgIH0KKworICAgIHZpcnR1
YWwgU2Nyb2xsU3RhdHVzIHNjcm9sbEJlZ2luKFdlYlBvaW50IHBvaW50LCBTY3JvbGxJbnB1dFR5
cGUgdHlwZSkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJJ
bnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1cz4obV9jbGllbnQtPnNjcm9sbEJlZ2luKHBv
aW50LCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsSW5w
dXRUeXBlPih0eXBlKSkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShXZWJQ
b2ludCBwb2ludCwgV2ViU2l6ZSBvZmZzZXQpIE9WRVJSSURFCisgICAgeworICAgICAgICBtX2Ns
aWVudC0+c2Nyb2xsQnkocG9pbnQsIG9mZnNldCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lk
IHNjcm9sbEVuZCgpIE9WRVJSSURFCisgICAgeworICAgICAgICBtX2NsaWVudC0+c2Nyb2xsRW5k
KCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHBpbmNoR2VzdHVyZUJlZ2luKCkgT1ZFUlJJ
REUKKyAgICB7CisgICAgICAgIG1fY2xpZW50LT5waW5jaEdlc3R1cmVCZWdpbigpOworICAgIH0K
KworICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVVcGRhdGUoZmxvYXQgbWFnbmlmeURlbHRh
LCBXZWJQb2ludCBhbmNob3IpIE9WRVJSSURFCisgICAgeworICAgICAgICBtX2NsaWVudC0+cGlu
Y2hHZXN0dXJlVXBkYXRlKG1hZ25pZnlEZWx0YSwgYW5jaG9yKTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgcGluY2hHZXN0dXJlRW5kKCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIG1fY2xp
ZW50LT5waW5jaEdlc3R1cmVFbmQoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQ
YWdlU2NhbGVBbmltYXRpb24oV2ViU2l6ZSB0YXJnZXRQb3NpdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhbmNob3JQb2ludCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgcGFnZVNjYWxlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgc3RhcnRUaW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZHVyYXRpb24pIE9WRVJS
SURFCisgICAgeworICAgICAgICBtX2NsaWVudC0+c3RhcnRQYWdlU2NhbGVBbmltYXRpb24odGFy
Z2V0UG9zaXRpb24sIGFuY2hvclBvaW50LCBwYWdlU2NhbGUsIHN0YXJ0VGltZSwgZHVyYXRpb24p
OworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpIE9WRVJSSURF
CisgICAgeworICAgICAgICBtX2NsaWVudC0+c2NoZWR1bGVBbmltYXRpb24oKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQqIG1fY2xpZW50Owor
fTsKKworCit2b2lkIFdlYlRvQ0NJbnB1dEhhbmRsZXJBZGFwdGVyOjpiaW5kVG9DbGllbnQoV2Vi
Q29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICBtX2NsaWVudEFkYXB0
ZXIgPSBhZG9wdFB0cihuZXcgQ2xpZW50QWRhcHRlcihjbGllbnQpKTsKKyAgICBtX2hhbmRsZXIt
PmJpbmRUb0NsaWVudChtX2NsaWVudEFkYXB0ZXIuZ2V0KCkpOworfQorCit2b2lkIFdlYlRvQ0NJ
bnB1dEhhbmRsZXJBZGFwdGVyOjphbmltYXRlKGRvdWJsZSBtb25vdG9uaWNUaW1lKQoreworICAg
IG1faGFuZGxlci0+YW5pbWF0ZShtb25vdG9uaWNUaW1lKTsKK30KKworfQorCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUb0NDSW5wdXRIYW5kbGVyQWRhcHRlci5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVG9DQ0lucHV0SGFuZGxlckFkYXB0ZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44ODk1NTM1NTk5OWVlYjdlYjI1ZDQ2ZDFhZjMxYTEyYWJjNzI5ZjdiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVG9DQ0lucHV0
SGFuZGxlckFkYXB0ZXIuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYlRvQ0NJbnB1dEhhbmRsZXJBZGFwdGVyX2gKKyNkZWZpbmUgV2ViVG9DQ0lucHV0SGFuZGxl
ckFkYXB0ZXJfaAorCisjaW5jbHVkZSAiQ0NJbnB1dEhhbmRsZXIuaCIKKyNpbmNsdWRlIDxwdWJs
aWMvV2ViSW5wdXRIYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJUb0ND
SW5wdXRIYW5kbGVyQWRhcHRlciA6IHB1YmxpYyBXZWJDb3JlOjpDQ0lucHV0SGFuZGxlciB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViVG9DQ0lucHV0SGFuZGxlckFkYXB0ZXI+
IGNyZWF0ZShQYXNzT3duUHRyPFdlYklucHV0SGFuZGxlcj4pOworICAgIHZpcnR1YWwgfldlYlRv
Q0NJbnB1dEhhbmRsZXJBZGFwdGVyKCk7IAorCisgICAgLy8gV2ViQ29yZTo6Q0NJbnB1dEhhbmRs
ZXIgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCB2b2lkIGJpbmRUb0NsaWVudChXZWJDb3Jl
OjpDQ0lucHV0SGFuZGxlckNsaWVudCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhbmlt
YXRlKGRvdWJsZSBtb25vdG9uaWNUaW1lKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBleHBs
aWNpdCBXZWJUb0NDSW5wdXRIYW5kbGVyQWRhcHRlcihQYXNzT3duUHRyPFdlYklucHV0SGFuZGxl
cj4pOworCisgICAgY2xhc3MgQ2xpZW50QWRhcHRlcjsKKyAgICBPd25QdHI8Q2xpZW50QWRhcHRl
cj4gbV9jbGllbnRBZGFwdGVyOworICAgIE93blB0cjxXZWJJbnB1dEhhbmRsZXI+IG1faGFuZGxl
cjsKK307CisKK30KKworI2VuZGlmIC8vIFdlYlRvQ0NJbnB1dEhhbmRsZXJBZGFwdGVyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA4ZDUzZTk1MzA0
NTdjZGIxYWUzNGViNmNkYmE2N2JlMWFmYzhiYWVlLi5jOTM1Nzg3MjhkMmE2ZWIwNjkzNjJhYmYz
ZDNhZWExM2E3MThlODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCkBAIC0xMjQsNiArMTI0LDcgQEAKICNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaCIKICNpbmNs
dWRlICJXZWJBdXRvZmlsbENsaWVudC5oIgorI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsLmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudEltcGwuaCIKICNpbmNsdWRl
ICJXZWJEZXZUb29sc0FnZW50UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgpA
QCAtNDE1LDYgKzQxNiw3IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50
KiBjbGllbnQpCiAgICAgLCBtX3JlY3JlYXRpbmdHcmFwaGljc0NvbnRleHQoZmFsc2UpCiAgICAg
LCBtX2NvbXBvc2l0b3JTdXJmYWNlUmVhZHkoZmFsc2UpCiAgICAgLCBtX2RldmljZVNjYWxlSW5D
b21wb3NpdG9yKDEpCisgICAgLCBtX2lucHV0SGFuZGxlcklkZW50aWZpZXIoLTEpCiAjZW5kaWYK
ICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChTcGVl
Y2hJbnB1dENsaWVudEltcGw6OmNyZWF0ZShjbGllbnQpKQpAQCAtMzc3Miw3ICszNzc0LDcgQEAg
dm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wg
YWN0aXZlKQogICAgICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSA9IHRydWU7
CiAgICAgICAgIHVwZGF0ZUxheWVyVHJlZVZpZXdwb3J0KCk7CiAKLSAgICAgICAgbV9jbGllbnQt
PmRpZEFjdGl2YXRlQ29tcG9zaXRvcihtX2xheWVyVHJlZVZpZXctPmNvbXBvc2l0b3JJZGVudGlm
aWVyKCkpOworICAgICAgICBtX2NsaWVudC0+ZGlkQWN0aXZhdGVDb21wb3NpdG9yKG1faW5wdXRI
YW5kbGVySWRlbnRpZmllcik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJ3
ZWJraXQiLCAiV2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSh0
cnVlKSIpOwogCkBAIC0zODA2LDcgKzM4MDgsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgICAgICAgICAgICAg
bV9sYXllclRyZWVWaWV3LT5zZXRTdXJmYWNlUmVhZHkoKTsKICAgICAgICAgICAgIG1fbGF5ZXJU
cmVlVmlldy0+c2V0SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGlzVHJhbnNwYXJlbnQoKSk7CiAg
ICAgICAgICAgICB1cGRhdGVMYXllclRyZWVWaWV3cG9ydCgpOwotICAgICAgICAgICAgbV9jbGll
bnQtPmRpZEFjdGl2YXRlQ29tcG9zaXRvcihtX2xheWVyVHJlZVZpZXctPmNvbXBvc2l0b3JJZGVu
dGlmaWVyKCkpOworICAgICAgICAgICAgbV9jbGllbnQtPmRpZEFjdGl2YXRlQ29tcG9zaXRvciht
X2lucHV0SGFuZGxlcklkZW50aWZpZXIpOwogICAgICAgICAgICAgbV9pc0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdBY3RpdmUgPSB0cnVlOwogICAgICAgICAgICAgbV9jb21wb3NpdG9yQ3JlYXRpb25G
YWlsZWQgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChtX3BhZ2VPdmVybGF5cykKQEAgLTM4OTIs
NiArMzg5NCwxMyBAQCBXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZSogV2ViVmlld0ltcGw6OmNy
ZWF0ZU91dHB1dFN1cmZhY2UoKQogICAgIHJldHVybiBtX2NsaWVudC0+Y3JlYXRlT3V0cHV0U3Vy
ZmFjZSgpOwogfQogCitXZWJJbnB1dEhhbmRsZXIqIFdlYlZpZXdJbXBsOjpjcmVhdGVJbnB1dEhh
bmRsZXIoKQoreworICAgIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsKiBoYW5kbGVyID0g
bmV3IFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsKCk7CisgICAgbV9pbnB1dEhhbmRsZXJJ
ZGVudGlmaWVyID0gaGFuZGxlci0+aWRlbnRpZmllcigpOworICAgIHJldHVybiBoYW5kbGVyOwor
fQorCiB2b2lkIFdlYlZpZXdJbXBsOjphcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IFdlYlNpemUm
IHNjcm9sbERlbHRhLCBmbG9hdCBwYWdlU2NhbGVEZWx0YSkKIHsKICAgICBpZiAoIW1haW5GcmFt
ZUltcGwoKSB8fCAhbWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDM2NzliZTQzODgwOGFlZDQyODIxZWM2YTAz
YTFiNDYxNjdkNWY4NWMuLmNlNTY1N2EyYjVlZTAwOGYyNmQwMTlhNjYxOGJjODVjMTg3YWQ5MDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtMzE0LDYgKzMx
NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmViaW5kR3JhcGhpY3NDb250ZXh0
KGJvb2wgc3VjY2VzcykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXZWJDb21wb3NpdG9yT3V0cHV0
U3VyZmFjZSogY3JlYXRlT3V0cHV0U3VyZmFjZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNyZWF0ZU91dHB1dFN1cmZhY2UoYm9vbCBzdWNjZXNzKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIFdlYklucHV0SGFuZGxlciogY3JlYXRlSW5wdXRIYW5kbGVyKCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxDb21taXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0
KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpOwpAQCAtODI4LDYg
KzgyOSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3JlY3JlYXRpbmdHcmFwaGljc0NvbnRleHQ7
CiAgICAgYm9vbCBtX2NvbXBvc2l0b3JTdXJmYWNlUmVhZHk7CiAgICAgZmxvYXQgbV9kZXZpY2VT
Y2FsZUluQ29tcG9zaXRvcjsKKyAgICBpbnQgbV9pbnB1dEhhbmRsZXJJZGVudGlmaWVyOwogI2Vu
ZGlmCiAgICAgc3RhdGljIGNvbnN0IFdlYklucHV0RXZlbnQqIG1fY3VycmVudElucHV0RXZlbnQ7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZGVkVGVzdC5jcHAK
aW5kZXggYWViMzVhNTE0ZTYyNDM5YWIxNjZlNDBkYTRiNTU0NmJiYTAwNTNjNi4uYTc0ZThlMDNh
NmQxMTQ1NWE4ZDRlNWQ0MDhhZjczY2E5MTM4NDJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZGVkVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1RocmVhZGVkVGVzdC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lu
Y2x1ZGUgIkNDQWN0aXZlQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiQ0NBbmltYXRpb25UZXN0Q29t
bW9uLmgiCisjaW5jbHVkZSAiQ0NJbnB1dEhhbmRsZXIuaCIKICNpbmNsdWRlICJDQ0xheWVyQW5p
bWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkNDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAi
Q0NMYXllclRyZWVIb3N0SW1wbC5oIgpAQCAtMjI3LDYgKzIyOCwxNiBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBtX3Rlc3RIb29rcy0+Y3JlYXRlT3V0cHV0U3VyZmFjZSgpOwogICAgIH0KIAor
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZU91dHB1dFN1cmZhY2UoYm9vbCBzdWNjZWVkZWQp
IE9WRVJSSURFCisgICAgeworICAgICAgICBtX3Rlc3RIb29rcy0+ZGlkUmVjcmVhdGVPdXRwdXRT
dXJmYWNlKHN1Y2NlZWRlZCk7CisgICAgfQorCisgICAgdmlydHVhbCBQYXNzT3duUHRyPENDSW5w
dXRIYW5kbGVyPiBjcmVhdGVJbnB1dEhhbmRsZXIoKSBPVkVSUklERQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorCiAgICAgdmlydHVhbCB2b2lkIHdpbGxDb21taXQoKSBP
VkVSUklERQogICAgIHsKICAgICB9CkBAIC0yNDUsMTEgKzI1Niw2IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlT3V0cHV0U3VyZmFjZShib29s
IHN1Y2NlZWRlZCkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIG1fdGVzdEhvb2tzLT5kaWRSZWNy
ZWF0ZU91dHB1dFN1cmZhY2Uoc3VjY2VlZGVkKTsKLSAgICB9Ci0KICAgICB2aXJ0dWFsIHZvaWQg
c2NoZWR1bGVDb21wb3NpdGUoKSBPVkVSUklERQogICAgIHsKICAgICAgICAgbV90ZXN0SG9va3Mt
PnNjaGVkdWxlQ29tcG9zaXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oCmluZGV4IDkwMDMwODhhNTg0Njgw
ZmJlZGRjMDhhNDdhYWRlZmJjN2Y5NzA1MDQuLmRjNWIwMjc2MzAxMmU2MTMyYTViZWU1YTJiNzM2
MGE3YWMzNmY5NGMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFr
ZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNs
dWRlICJjb25maWcuaCIKIAorI2luY2x1ZGUgIkNDSW5wdXRIYW5kbGVyLmgiCiAjaW5jbHVkZSAi
Q0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0Nv
bnRleHQzRC5oIgogI2luY2x1ZGUgIkZha2VXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZS5oIgpA
QCAtNDcsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBXZWJLaXQ6OkZha2VXZWJD
b21wb3NpdG9yT3V0cHV0U3VyZmFjZTo6Y3JlYXRlKFdlYktpdDo6Q29tcG9zaXRvckZha2VXZWJH
cmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKGF0dHJzKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNyZWF0ZU91dHB1dFN1cmZhY2UoYm9vbCBzdWNjZXNzKSBPVkVSUklERSB7IH0KKyAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NJbnB1dEhhbmRsZXI+IGNyZWF0ZUlucHV0SGFuZGxlcigp
IE9WRVJSSURFIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbENvbW1p
dCgpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXQoKSBPVkVSUklERSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkgT1ZFUlJJREUgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHAKaW5kZXggMTZjNjU2NzBlM2Q4MzBm
NzEyN2Q1OTZhZTUxZGI4YzM5ZTIxYzk5ZC4uNmVkMjE1MWFiNjY2NjQ3ZDFjODZkNTJhZGVlZTM0
MjFhYTZjYWU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcApAQCAtMjcs
OCArMjcsNiBAQAogCiAjaW5jbHVkZSAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuaCIK
IAotI2luY2x1ZGUgIkNDSW5wdXRIYW5kbGVyLmgiCi0jaW5jbHVkZSAiQ0NTaW5nbGVUaHJlYWRQ
cm94eS5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JJbml0aWFsaXplci5oIgogI2luY2x1ZGUg
IldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQuaCIKICNpbmNsdWRlICJXZWJJbnB1dEV2
ZW50LmgiCkBAIC0zNiw2ICszNCw4IEBACiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KICNpbmNs
dWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFBv
aW50Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYklucHV0SGFuZGxlci5oPgorI2luY2x1ZGUgPHB1
YmxpYy9XZWJJbnB1dEhhbmRsZXJDbGllbnQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUG9pbnQu
aD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKQEAgLTQzLDI3ICs0MywyNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogCiBuYW1lc3BhY2UgewogCi1jbGFzcyBNb2NrQ0NJbnB1dEhhbmRs
ZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQgewotICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKE1vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7CitjbGFzcyBNb2Nr
V2ViSW5wdXRIYW5kbGVyQ2xpZW50IDogcHVibGljIFdlYklucHV0SGFuZGxlckNsaWVudCB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTW9ja1dlYklucHV0SGFuZGxlckNsaWVudCk7CiBwdWJs
aWM6Ci0gICAgTW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KCkKKyAgICBNb2NrV2ViSW5wdXRIYW5k
bGVyQ2xpZW50KCkKICAgICB7CiAgICAgfQotICAgIHZpcnR1YWwgfk1vY2tDQ0lucHV0SGFuZGxl
ckNsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgfk1vY2tXZWJJbnB1dEhhbmRsZXJDbGllbnQoKSB7
IH0KIAogCiAgICAgTU9DS19NRVRIT0QwKHBpbmNoR2VzdHVyZUJlZ2luLCB2b2lkKCkpOwotICAg
IE1PQ0tfTUVUSE9EMihwaW5jaEdlc3R1cmVVcGRhdGUsIHZvaWQoZmxvYXQgbWFnbmlmeURlbHRh
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgYW5jaG9yKSk7CisgICAgTU9DS19NRVRIT0QyKHBp
bmNoR2VzdHVyZVVwZGF0ZSwgdm9pZChmbG9hdCBtYWduaWZ5RGVsdGEsIFdlYlBvaW50IGFuY2hv
cikpOwogICAgIE1PQ0tfTUVUSE9EMChwaW5jaEdlc3R1cmVFbmQsIHZvaWQoKSk7CiAKICAgICBN
T0NLX01FVEhPRDAoc2NoZWR1bGVBbmltYXRpb24sIHZvaWQoKSk7CiAKLSAgICBNT0NLX01FVEhP
RDIoc2Nyb2xsQmVnaW4sIFNjcm9sbFN0YXR1cyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFdl
YkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxJbnB1dFR5cGUpKTsKLSAgICBNT0NL
X01FVEhPRDIoc2Nyb2xsQnksIHZvaWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJikpOworICAgIE1PQ0tfTUVUSE9EMihzY3JvbGxCZWdpbiwgU2Nyb2xs
U3RhdHVzKFdlYlBvaW50LCBXZWJJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbElucHV0VHlwZSkp
OworICAgIE1PQ0tfTUVUSE9EMihzY3JvbGxCeSwgdm9pZChXZWJQb2ludCwgV2ViU2l6ZSkpOwog
ICAgIE1PQ0tfTUVUSE9EMChzY3JvbGxFbmQsIHZvaWQoKSk7CiAKIHByaXZhdGU6Ci0gICAgdmly
dHVhbCB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IHRhcmdldFBvc2l0aW9uLAorICAgIHZpcnR1YWwgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlv
bihXZWJTaXplIHRhcmdldFBvc2l0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGFuY2hvclBvaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbG9hdCBwYWdlU2NhbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvdWJsZSBzdGFydFRpbWVNcywKQEAgLTg3LDM4ICs4NywxNCBAQCBw
dWJsaWM6CiAKIH07CiAKLVRFU1QoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwsIGZyb21J
ZGVudGlmaWVyKQotewotICAgIFdlYktpdFRlc3RzOjpXZWJDb21wb3NpdG9ySW5pdGlhbGl6ZXIg
aW5pdGlhbGl6ZXIoMCk7Ci0gICAgV2ViQ29yZTo6RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGFs
d2F5c0ltcGxUaHJlYWQ7Ci0KLSAgICAvLyBCZWZvcmUgY3JlYXRpbmcgYW55IFdlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJzLCBsb29rdXBzIGZvciBhbnkgdmFsdWUgc2hvdWxkIGZhaWwgYW5kIG5v
dCBjcmFzaC4KLSAgICBFWFBFQ1RfRVEoMCwgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcjo6ZnJv
bUlkZW50aWZpZXIoMikpOwotICAgIEVYUEVDVF9FUSgwLCBXZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVyOjpmcm9tSWRlbnRpZmllcigwKSk7Ci0gICAgRVhQRUNUX0VRKDAsIFdlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXI6OmZyb21JZGVudGlmaWVyKC0xKSk7Ci0KLSAgICBpbnQgY29tcG9zaXRvcklk
ZW50aWZpZXIgPSAtMTsKLSAgICB7Ci0gICAgICAgIE93blB0cjxXZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVySW1wbD4gaW5wdXRIYW5kbGVyID0gV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6
OmNyZWF0ZSgwKTsKLSAgICAgICAgY29tcG9zaXRvcklkZW50aWZpZXIgPSBpbnB1dEhhbmRsZXIt
PmlkZW50aWZpZXIoKTsKLSAgICAgICAgLy8gVGhlIGNvbXBvc2l0b3Igd2UganVzdCBjcmVhdGVk
IHNob3VsZCBiZSBsb2NhdGFibGUuCi0gICAgICAgIEVYUEVDVF9FUShpbnB1dEhhbmRsZXIuZ2V0
KCksIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXI6OmZyb21JZGVudGlmaWVyKGNvbXBvc2l0b3JJ
ZGVudGlmaWVyKSk7Ci0KLSAgICAgICAgLy8gQnV0IG5vdGhpbmcgZWxzZS4KLSAgICAgICAgRVhQ
RUNUX0VRKDAsIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXI6OmZyb21JZGVudGlmaWVyKGlucHV0
SGFuZGxlci0+aWRlbnRpZmllcigpICsgMTApKTsKLSAgICB9Ci0KLSAgICAvLyBBZnRlciB0aGUg
Y29tcG9zaXRvciBpcyBkZXN0cm95ZWQsIGl0cyBlbnRyeSBzaG91bGQgYmUgcmVtb3ZlZCBmcm9t
IHRoZSBtYXAuCi0gICAgRVhQRUNUX0VRKDAsIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXI6OmZy
b21JZGVudGlmaWVyKGNvbXBvc2l0b3JJZGVudGlmaWVyKSk7Ci19Ci0KIGNsYXNzIFdlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIHB1Ymxp
YzoKICAgICBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QoKQogICAgICAgICA6IG1f
aW5pdGlhbGl6ZXIoMCkKICAgICAgICAgLCBtX2V4cGVjdGVkRGlzcG9zaXRpb24oRGlkSGFuZGxl
KQogICAgIHsKLSAgICAgICAgbV9pbnB1dEhhbmRsZXIgPSBXZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbDo6Y3JlYXRlKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7CisgICAgICAgIG1f
aW5wdXRIYW5kbGVyID0gYWRvcHRQdHIobmV3IFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBs
KTsKKyAgICAgICAgbV9pbnB1dEhhbmRsZXItPmJpbmRUb0NsaWVudCgmbV9tb2NrSW5wdXRIYW5k
bGVyQ2xpZW50KTsKICAgICAgICAgbV9pbnB1dEhhbmRsZXItPnNldENsaWVudCgmbV9tb2NrQ2xp
ZW50KTsKICAgICB9CiAKQEAgLTEzMiw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgLy8gb3V0IG9m
IGdtb2NrIGlzIHRoZSBsaW5lIG51bWJlciB0aGF0IHNldCB0aGUgZXhwZWN0YXRpb24uCiAjZGVm
aW5lIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKSBkbyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICAgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBl
Y3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFu
ZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgdGVzdGluZzo6TW9jazo6
VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NsaWVudCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIHN3aXRj
aCAobV9leHBlY3RlZERpc3Bvc2l0aW9uKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAg
ICAgICBjYXNlIERpZEhhbmRsZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKQEAgLTE1NiwxMSArMTMyLDEwIEBAIHB1YmxpYzoKICAgICB9IHdoaWxlICgwKQogCiBw
cm90ZWN0ZWQ6Ci0gICAgTW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50IG1fbW9ja0NDSW5wdXRIYW5k
bGVyQ2xpZW50OworICAgIE1vY2tXZWJJbnB1dEhhbmRsZXJDbGllbnQgbV9tb2NrSW5wdXRIYW5k
bGVyQ2xpZW50OwogICAgIE93blB0cjxXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbD4gbV9p
bnB1dEhhbmRsZXI7CiAgICAgTW9ja1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQgbV9t
b2NrQ2xpZW50OwogICAgIFdlYkdlc3R1cmVFdmVudCBnZXN0dXJlOwotICAgIFdlYkNvcmU6OkRl
YnVnU2NvcGVkU2V0SW1wbFRocmVhZCBhbHdheXNJbXBsVGhyZWFkOwogICAgIFdlYktpdFRlc3Rz
OjpXZWJDb21wb3NpdG9ySW5pdGlhbGl6ZXIgbV9pbml0aWFsaXplcjsKIAogICAgIGVudW0gRXhw
ZWN0ZWREaXNwb3NpdGlvbiB7IERpZEhhbmRsZSwgRGlkTm90SGFuZGxlLCBEcm9wRXZlbnQgfTsK
QEAgLTE3NCw4ICsxNDksOCBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxU
ZXN0LCBnZXN0dXJlU2Nyb2xsU3RhcnRlZCkKICAgICBtX2V4cGVjdGVkRGlzcG9zaXRpb24gPSBE
aWRIYW5kbGU7CiAgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCi0gICAgRVhQRUNUX0NB
TEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRl
c3Rpbmc6Ol8pKQotICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkND
SW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKSk7CisgICAgRVhQRUNUX0NBTEwobV9t
b2NrSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpf
KSkKKyAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJJbnB1dEhhbmRsZXJDbGll
bnQ6OlNjcm9sbFN0YXR1c1N0YXJ0ZWQpKTsKIAogICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0
RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjsKICAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5w
dXRFdmVudChnZXN0dXJlKTsKQEAgLTE4NCwxNCArMTU5LDE0IEBAIFRFU1RfRihXZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVTY3JvbGxTdGFydGVkKQogCiAgICAgZ2Vz
dHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZTsKICAgICBnZXN0
dXJlLmRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRhWSA9IC00MDsgLy8gLVkgbWVhbnMgc2Nyb2xsIGRv
d24gLSBpLmUuIGluIHRoZSArWSBkaXJlY3Rpb24uCi0gICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJ
bnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJ5KHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6OlByb3BlcnR5
KCZXZWJDb3JlOjpJbnRTaXplOjpoZWlnaHQsIHRlc3Rpbmc6Okd0KDApKSkpOworICAgIEVYUEVD
VF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQnkodGVzdGluZzo6XywgdGVz
dGluZzo6RmllbGQoJldlYlNpemU6OmhlaWdodCwgdGVzdGluZzo6R3QoMCkpKSk7CiAgICAgbV9p
bnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiAKICAgICBWRVJJRllfQU5E
X1JFU0VUX01PQ0tTKCk7CiAKICAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0
dXJlU2Nyb2xsRW5kOwogICAgIGdlc3R1cmUuZGF0YS5zY3JvbGxVcGRhdGUuZGVsdGFZID0gMDsK
LSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsRW5kKCkp
OworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsRW5kKCkp
OwogICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwogfQogCkBA
IC0yMDEsOCArMTc2LDggQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVz
dCwgZ2VzdHVyZVNjcm9sbE9uTWFpblRocmVhZCkKICAgICBtX2V4cGVjdGVkRGlzcG9zaXRpb24g
PSBEaWROb3RIYW5kbGU7CiAgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCi0gICAgRVhQ
RUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKDo6dGVzdGlu
Zzo6XywgOjp0ZXN0aW5nOjpfKSkKLSAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihX
ZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsT25NYWluVGhyZWFkKSk7CisgICAg
RVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbig6OnRlc3Rp
bmc6Ol8sIDo6dGVzdGluZzo6XykpCisgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4o
V2ViSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXNPbk1haW5UaHJlYWQpKTsKIAogICAg
IGdlc3R1cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjsKICAgICBt
X2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKQEAgLTIyOSw4ICsyMDQs
OCBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlU2Ny
b2xsSWdub3JlZCkKICAgICBtX2V4cGVjdGVkRGlzcG9zaXRpb24gPSBEcm9wRXZlbnQ7CiAgICAg
VkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCi0gICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1
dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQotICAg
ICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xp
ZW50OjpTY3JvbGxJZ25vcmVkKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVy
Q2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKKyAgICAgICAgLldp
bGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1
c0lnbm9yZWQpKTsKIAogICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVT
Y3JvbGxCZWdpbjsKICAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJl
KTsKQEAgLTI0Myw3ICsyMTgsNyBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGxUZXN0LCBnZXN0dXJlUGluY2gpCiAgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCiAg
ICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoQmVnaW47Ci0gICAg
RVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHBpbmNoR2VzdHVyZUJlZ2lu
KCkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlckNsaWVudCwgcGluY2hHZXN0
dXJlQmVnaW4oKSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVy
ZSk7CiAKICAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CkBAIC0yNTIsNyArMjI3LDcgQEAg
VEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZVBpbmNoKQog
ICAgIGdlc3R1cmUuZGF0YS5waW5jaFVwZGF0ZS5zY2FsZSA9IDEuNTsKICAgICBnZXN0dXJlLngg
PSA3OwogICAgIGdlc3R1cmUueSA9IDEzOwotICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRI
YW5kbGVyQ2xpZW50LCBwaW5jaEdlc3R1cmVVcGRhdGUoMS41LCBXZWJDb3JlOjpJbnRQb2ludCg3
LCAxMykpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQsIHBpbmNo
R2VzdHVyZVVwZGF0ZSgxLjUsIFdlYlBvaW50KDcsIDEzKSkpOwogICAgIG1faW5wdXRIYW5kbGVy
LT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwogCiAgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NL
UygpOwpAQCAtMjYxLDEzICsyMzYsMTMgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJJbXBsVGVzdCwgZ2VzdHVyZVBpbmNoKQogICAgIGdlc3R1cmUuZGF0YS5waW5jaFVwZGF0ZS5z
Y2FsZSA9IDAuNTsKICAgICBnZXN0dXJlLnggPSA5OwogICAgIGdlc3R1cmUueSA9IDY7Ci0gICAg
RVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHBpbmNoR2VzdHVyZVVwZGF0
ZSguNSwgV2ViQ29yZTo6SW50UG9pbnQoOSwgNikpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tJ
bnB1dEhhbmRsZXJDbGllbnQsIHBpbmNoR2VzdHVyZVVwZGF0ZSguNSwgV2ViUG9pbnQoOSwgNikp
KTsKICAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIAogICAg
IFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAogICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0
RXZlbnQ6Okdlc3R1cmVQaW5jaEVuZDsKLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFu
ZGxlckNsaWVudCwgcGluY2hHZXN0dXJlRW5kKCkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lu
cHV0SGFuZGxlckNsaWVudCwgcGluY2hHZXN0dXJlRW5kKCkpOwogICAgIG1faW5wdXRIYW5kbGVy
LT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwogfQogCkBAIC0yNzcsMTIgKzI1MiwxMiBAQCBU
RVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdTdGFy
dGVkKQogICAgIG1fZXhwZWN0ZWREaXNwb3NpdGlvbiA9IERpZEhhbmRsZTsKICAgICBWRVJJRllf
QU5EX1JFU0VUX01PQ0tTKCk7CiAKLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxl
ckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCi0gICAgICAgIC5X
aWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNj
cm9sbFN0YXJ0ZWQpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQs
IHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQorICAgICAgICAuV2lsbE9uY2Uo
dGVzdGluZzo6UmV0dXJuKFdlYklucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVzU3RhcnRl
ZCkpOwogCiAgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3Rh
cnQ7CiAgICAgZ2VzdHVyZS5kYXRhLmZsaW5nU3RhcnQudmVsb2NpdHlYID0gMTA7Ci0gICAgRVhQ
RUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkp
OworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmlt
YXRpb24oKSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7
CiAKICAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CkBAIC0yOTgsOCArMjczLDggQEAgVEVT
VF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nRmFpbGVk
KQogICAgIG1fZXhwZWN0ZWREaXNwb3NpdGlvbiA9IERpZE5vdEhhbmRsZTsKICAgICBWRVJJRllf
QU5EX1JFU0VUX01PQ0tTKCk7CiAKLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxl
ckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCi0gICAgICAgIC5X
aWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNj
cm9sbE9uTWFpblRocmVhZCkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlckNs
aWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCisgICAgICAgIC5XaWxs
T25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXNP
bk1haW5UaHJlYWQpKTsKIAogICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1
cmVGbGluZ1N0YXJ0OwogICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1
cmUpOwpAQCAtMzE2LDggKzI5MSw4IEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
SW1wbFRlc3QsIGdlc3R1cmVGbGluZ0lnbm9yZWQpCiAgICAgbV9leHBlY3RlZERpc3Bvc2l0aW9u
ID0gRGlkTm90SGFuZGxlOwogICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIAotICAgIEVY
UEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5n
OjpfLCB0ZXN0aW5nOjpfKSkKLSAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJD
b3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsSWdub3JlZCkpOworICAgIEVYUEVDVF9D
QUxMKG1fbW9ja0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVz
dGluZzo6XykpCisgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViSW5wdXRIYW5k
bGVyQ2xpZW50OjpTY3JvbGxTdGF0dXNJZ25vcmVkKSk7CiAKICAgICBnZXN0dXJlLnR5cGUgPSBX
ZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDsKICAgICBtX2lucHV0SGFuZGxlci0+aGFu
ZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKQEAgLTM0OSw0MCArMzI0LDQwIEBAIFRFU1RfRihXZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ0FuaW1hdGVzKQogICAg
IGdlc3R1cmUuZ2xvYmFsWCA9IGZsaW5nR2xvYmFsUG9pbnQueDsKICAgICBnZXN0dXJlLmdsb2Jh
bFkgPSBmbGluZ0dsb2JhbFBvaW50Lnk7CiAgICAgZ2VzdHVyZS5tb2RpZmllcnMgPSBtb2RpZmll
cnM7Ci0gICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxl
QW5pbWF0aW9uKCkpOwotICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50
LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKLSAgICAgICAgLldpbGxPbmNl
KHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3Rh
cnRlZCkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1
bGVBbmltYXRpb24oKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50
LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKKyAgICAgICAgLldpbGxPbmNl
KHRlc3Rpbmc6OlJldHVybihXZWJJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1c1N0YXJ0
ZWQpKTsKICAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIAot
ICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lu
cHV0SGFuZGxlckNsaWVudCk7CisgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBl
Y3RhdGlvbnMoJm1fbW9ja0lucHV0SGFuZGxlckNsaWVudCk7CiAgICAgLy8gVGhlIGZpcnN0IGFu
aW1hdGUgY2FsbCBzaG91bGQgbGV0IHVzIHBpY2sgdXAgYW4gYW5pbWF0aW9uIHN0YXJ0IHRpbWUs
IGJ1dCB3ZQogICAgIC8vIHNob3VsZG4ndCBhY3R1YWxseSBtb3ZlIGFueXdoZXJlIGp1c3QgeWV0
LiBUaGUgZmlyc3QgZnJhbWUgYWZ0ZXIgdGhlIGZsaW5nIHN0YXJ0CiAgICAgLy8gd2lsbCB0eXBp
Y2FsbHkgaW5jbHVkZSB0aGUgbGFzdCBzY3JvbGwgZnJvbSB0aGUgZ2VzdHVyZSB0aGF0IGxlYWQg
dG8gdGhlIHNjcm9sbAogICAgIC8vIChlaXRoZXIgd2hlZWwgb3IgZ2VzdHVyZSBzY3JvbGwpLCBz
byB0aGVyZSBzaG91bGQgYmUgbm8gdmlzaWJsZSBoaXRjaC4KLSAgICBFWFBFQ1RfQ0FMTChtX21v
Y2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7Ci0gICAgRVhQRUNU
X0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8s
IHRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRs
ZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lu
cHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpLlRp
bWVzKDApOwogICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDEwKTsKIAotICAgIHRlc3Rpbmc6
Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNs
aWVudCk7CisgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1f
bW9ja0lucHV0SGFuZGxlckNsaWVudCk7CiAKICAgICAvLyBUaGUgc2Vjb25kIGNhbGwgc2hvdWxk
IHN0YXJ0IHNjcm9sbGluZyBpbiB0aGUgLVggZGlyZWN0aW9uLgotICAgIEVYUEVDVF9DQUxMKG1f
bW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKLSAgICBFWFBF
Q1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6
XywgdGVzdGluZzo6XykpCi0gICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29y
ZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpKTsKLSAgICBFWFBFQ1RfQ0FM
TChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQnkodGVzdGluZzo6XywgdGVzdGlu
Zzo6UHJvcGVydHkoJldlYkNvcmU6OkludFNpemU6OndpZHRoLCB0ZXN0aW5nOjpMdCgwKSkpKTsK
LSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsRW5kKCkp
OworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmlt
YXRpb24oKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3Jv
bGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKKyAgICAgICAgLldpbGxPbmNlKHRlc3Rp
bmc6OlJldHVybihXZWJJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1c1N0YXJ0ZWQpKTsK
KyAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJ5KHRlc3Rp
bmc6Ol8sIHRlc3Rpbmc6OkZpZWxkKCZXZWJTaXplOjp3aWR0aCwgdGVzdGluZzo6THQoMCkpKSk7
CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxFbmQoKSk7
CiAgICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMTAuMSk7CiAKLSAgICB0ZXN0aW5nOjpNb2Nr
OjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQp
OworICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tJ
bnB1dEhhbmRsZXJDbGllbnQpOwogCiAgICAgLy8gTGV0J3Mgc2F5IG9uIHRoZSB0aGlyZCBjYWxs
IHdlIGhpdCBhIG5vbi1zY3JvbGxhYmxlIHJlZ2lvbi4gV2Ugc2hvdWxkIGFib3J0IHRoZSBmbGlu
ZyBhbmQgbm90IHNjcm9sbC4KICAgICAvLyBXZSBhbHNvIHNob3VsZCBwYXNzIHRoZSBjdXJyZW50
IGZsaW5nIHBhcmFtZXRlcnMgb3V0IHRvIHRoZSBjbGllbnQgc28gdGhlIHJlc3Qgb2YgdGhlIGZs
aW5nIGNhbiBiZQogICAgIC8vIHRyYW5zZmVycmVkIHRvIHRoZSBtYWluIHRocmVhZC4KLSAgICBF
WFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24o
KSk7Ci0gICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJl
Z2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQotICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6
UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxPbk1haW5UaHJlYWQp
KTsKLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQnko
dGVzdGluZzo6XywgdGVzdGluZzo6XykpLlRpbWVzKDApOwotICAgIEVYUEVDVF9DQUxMKG1fbW9j
a0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxFbmQoKSkuVGltZXMoMCk7CisgICAgRVhQRUNU
X0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKKyAg
ICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rp
bmc6Ol8sIHRlc3Rpbmc6Ol8pKQorICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdl
YklucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVzT25NYWluVGhyZWFkKSk7CisgICAgRVhQ
RUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCeSh0ZXN0aW5nOjpfLCB0
ZXN0aW5nOjpfKSkuVGltZXMoMCk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVy
Q2xpZW50LCBzY3JvbGxFbmQoKSkuVGltZXMoMCk7CiAKICAgICAvLyBFeHBlY3RlZCB3aGVlbCBm
bGluZyBhbmltYXRpb24gcGFyYW1ldGVyczoKICAgICAvLyAqKSBmbGluZ0RlbHRhIGFuZCBmbGlu
Z1BvaW50IHNob3VsZCBtYXRjaCB0aGUgb3JpZ2luYWwgR2VzdHVyZUZsaW5nU3RhcnQgZXZlbnQK
QEAgLTM5OCwxMyArMzczLDEzIEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bFRlc3QsIGdlc3R1cmVGbGluZ0FuaW1hdGVzKQogICAgICAgICAgICAgdGVzdGluZzo6RmllbGQo
JldlYlNpemU6OndpZHRoLCB0ZXN0aW5nOjpHdCgwKSkpKSkpOwogICAgIG1faW5wdXRIYW5kbGVy
LT5hbmltYXRlKDEwLjIpOwogCi0gICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBl
Y3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKKyAgICB0ZXN0aW5nOjpNb2Nr
OjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50KTsK
ICAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ2xp
ZW50KTsKIAogICAgIC8vIFNpbmNlIHdlJ3ZlIGFib3J0ZWQgdGhlIGZsaW5nLCB0aGUgbmV4dCBh
bmltYXRpb24gc2hvdWxkIGJlIGEgbm8tb3AgYW5kIHNob3VsZCBub3QgcmVzdWx0IGluIGFub3Ro
ZXIKICAgICAvLyBmcmFtZSBiZWluZyByZXF1ZXN0ZWQuCi0gICAgRVhQRUNUX0NBTEwobV9tb2Nr
Q0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpLlRpbWVzKDApOwotICAg
IEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0
aW5nOjpfLCB0ZXN0aW5nOjpfKSkuVGltZXMoMCk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5w
dXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKS5UaW1lcygwKTsKKyAgICBFWFBF
Q1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8s
IHRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsKICAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgxMC4z
KTsKIAogICAgIC8vIFNpbmNlIHdlJ3ZlIHRyYW5zZmVycmVkIHRoZSBmbGluZyB0byB0aGUgbWFp
biB0aHJlYWQsIHdlIG5lZWQgdG8gcGFzcyB0aGUgbmV4dCBHZXN0dXJlRmxpbmdDYW5jZWwgdG8g
dGhlIG1haW4KQEAgLTQzMywzOCArNDA4LDM4IEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ1RyYW5zZmVyUmVzZXRzKQogICAgIGdlc3R1cmUu
Z2xvYmFsWCA9IGZsaW5nR2xvYmFsUG9pbnQueDsKICAgICBnZXN0dXJlLmdsb2JhbFkgPSBmbGlu
Z0dsb2JhbFBvaW50Lnk7CiAgICAgZ2VzdHVyZS5tb2RpZmllcnMgPSBtb2RpZmllcnM7Ci0gICAg
RVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9u
KCkpOwotICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxC
ZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKLSAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6
OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCkpOwor
ICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRp
b24oKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxC
ZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKKyAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6
OlJldHVybihXZWJJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1c1N0YXJ0ZWQpKTsKICAg
ICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIAotICAgIHRlc3Rp
bmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxl
ckNsaWVudCk7CisgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMo
Jm1fbW9ja0lucHV0SGFuZGxlckNsaWVudCk7CiAKICAgICAvLyBTdGFydCB0aGUgZmxpbmcgYW5p
bWF0aW9uIGF0IHRpbWUgMTAuIFRoaXMgc2hvdWxkbid0IGFjdHVhbGx5IHNjcm9sbCwganVzdCBl
c3RhYmxpc2ggYSBzdGFydCB0aW1lLgotICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5k
bGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tD
Q0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6Xykp
LlRpbWVzKDApOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlckNsaWVudCwgc2No
ZWR1bGVBbmltYXRpb24oKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyQ2xp
ZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkuVGltZXMoMCk7CiAgICAg
bV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMTApOwogCi0gICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5
QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKKyAgICB0
ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrSW5wdXRIYW5k
bGVyQ2xpZW50KTsKIAogICAgIC8vIFRoZSBzZWNvbmQgY2FsbCBzaG91bGQgc3RhcnQgc2Nyb2xs
aW5nIGluIHRoZSAtWCBkaXJlY3Rpb24uCi0gICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhh
bmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOwotICAgIEVYUEVDVF9DQUxMKG1fbW9j
a0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpf
KSkKLSAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFu
ZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCkpOwotICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5w
dXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCeSh0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpQcm9wZXJ0eSgm
V2ViQ29yZTo6SW50U2l6ZTo6d2lkdGgsIHRlc3Rpbmc6Okx0KDApKSkpOwotICAgIEVYUEVDVF9D
QUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxFbmQoKSk7CisgICAgRVhQRUNU
X0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKKyAg
ICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rp
bmc6Ol8sIHRlc3Rpbmc6Ol8pKQorICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdl
YklucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVzU3RhcnRlZCkpOworICAgIEVYUEVDVF9D
QUxMKG1fbW9ja0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQnkodGVzdGluZzo6XywgdGVzdGlu
Zzo6RmllbGQoJldlYlNpemU6OndpZHRoLCB0ZXN0aW5nOjpMdCgwKSkpKTsKKyAgICBFWFBFQ1Rf
Q0FMTChtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEVuZCgpKTsKICAgICBtX2lucHV0
SGFuZGxlci0+YW5pbWF0ZSgxMC4xKTsKIAotICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENs
ZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7CisgICAgdGVzdGlu
Zzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0lucHV0SGFuZGxlckNs
aWVudCk7CiAKICAgICAvLyBMZXQncyBzYXkgb24gdGhlIHRoaXJkIGNhbGwgd2UgaGl0IGEgbm9u
LXNjcm9sbGFibGUgcmVnaW9uLiBXZSBzaG91bGQgYWJvcnQgdGhlIGZsaW5nIGFuZCBub3Qgc2Ny
b2xsLgogICAgIC8vIFdlIGFsc28gc2hvdWxkIHBhc3MgdGhlIGN1cnJlbnQgZmxpbmcgcGFyYW1l
dGVycyBvdXQgdG8gdGhlIGNsaWVudCBzbyB0aGUgcmVzdCBvZiB0aGUgZmxpbmcgY2FuIGJlCiAg
ICAgLy8gdHJhbnNmZXJyZWQgdG8gdGhlIG1haW4gdGhyZWFkLgotICAgIEVYUEVDVF9DQUxMKG1f
bW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKLSAgICBFWFBF
Q1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6
XywgdGVzdGluZzo6XykpCi0gICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29y
ZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbE9uTWFpblRocmVhZCkpOwotICAgIEVYUEVD
VF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCeSh0ZXN0aW5nOjpfLCB0
ZXN0aW5nOjpfKSkuVGltZXMoMCk7Ci0gICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRs
ZXJDbGllbnQsIHNjcm9sbEVuZCgpKS5UaW1lcygwKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tJ
bnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOworICAgIEVYUEVDVF9DQUxM
KG1fbW9ja0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGlu
Zzo6XykpCisgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViSW5wdXRIYW5kbGVy
Q2xpZW50OjpTY3JvbGxTdGF0dXNPbk1haW5UaHJlYWQpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21v
Y2tJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJ5KHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKS5U
aW1lcygwKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9s
bEVuZCgpKS5UaW1lcygwKTsKIAogICAgIC8vIEV4cGVjdGVkIHdoZWVsIGZsaW5nIGFuaW1hdGlv
biBwYXJhbWV0ZXJzOgogICAgIC8vICopIGZsaW5nRGVsdGEgYW5kIGZsaW5nUG9pbnQgc2hvdWxk
IG1hdGNoIHRoZSBvcmlnaW5hbCBHZXN0dXJlRmxpbmdTdGFydCBldmVudApAQCAtNDgwLDE2ICs0
NTUsMTYgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVy
ZUZsaW5nVHJhbnNmZXJSZXNldHMpCiAgICAgICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViU2l6
ZTo6d2lkdGgsIHRlc3Rpbmc6Okd0KDApKSkpKSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmFuaW1h
dGUoMTAuMik7CiAKLSAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9u
cygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQpOworICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlm
eUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQpOwogICAgIHRl
c3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDbGllbnQpOwog
CiAgICAgLy8gU2luY2Ugd2UndmUgYWJvcnRlZCB0aGUgZmxpbmcsIHRoZSBuZXh0IGFuaW1hdGlv
biBzaG91bGQgYmUgYSBuby1vcCBhbmQgc2hvdWxkIG5vdCByZXN1bHQgaW4gYW5vdGhlcgogICAg
IC8vIGZyYW1lIGJlaW5nIHJlcXVlc3RlZC4KLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0
SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSkuVGltZXMoMCk7Ci0gICAgRVhQRUNU
X0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8s
IHRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRs
ZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpLlRpbWVzKDApOworICAgIEVYUEVDVF9DQUxM
KG1fbW9ja0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGlu
Zzo6XykpLlRpbWVzKDApOwogICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDEwLjMpOwogCi0g
ICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5w
dXRIYW5kbGVyQ2xpZW50KTsKKyAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVj
dGF0aW9ucygmbV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50KTsKIAogICAgIC8vIFNpbmNlIHdlJ3Zl
IHRyYW5zZmVycmVkIHRoZSBmbGluZyB0byB0aGUgbWFpbiB0aHJlYWQsIHdlIG5lZWQgdG8gcGFz
cyB0aGUgbmV4dCBHZXN0dXJlRmxpbmdDYW5jZWwgdG8gdGhlIG1haW4KICAgICAvLyB0aHJlYWQg
YXMgd2VsbC4KQEAgLTUxMiwzNiArNDg3LDM2IEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ1RyYW5zZmVyUmVzZXRzKQogICAgIGdlc3R1cmUu
Z2xvYmFsWCA9IGZsaW5nR2xvYmFsUG9pbnQueDsKICAgICBnZXN0dXJlLmdsb2JhbFkgPSBmbGlu
Z0dsb2JhbFBvaW50Lnk7CiAgICAgZ2VzdHVyZS5tb2RpZmllcnMgPSBtb2RpZmllcnM7Ci0gICAg
RVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9u
KCkpOwotICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxC
ZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKLSAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6
OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCkpOwor
ICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRp
b24oKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxC
ZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKKyAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6
OlJldHVybihXZWJJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1c1N0YXJ0ZWQpKTsKICAg
ICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIAotICAgIHRlc3Rp
bmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxl
ckNsaWVudCk7CisgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMo
Jm1fbW9ja0lucHV0SGFuZGxlckNsaWVudCk7CiAKICAgICAvLyBTdGFydCB0aGUgc2Vjb25kIGZs
aW5nIGFuaW1hdGlvbiBhdCB0aW1lIDMwLgotICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRI
YW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKLSAgICBFWFBFQ1RfQ0FMTChtX21v
Y2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6
XykpLlRpbWVzKDApOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlckNsaWVudCwg
c2NoZWR1bGVBbmltYXRpb24oKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVy
Q2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkuVGltZXMoMCk7CiAg
ICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMzApOwogCi0gICAgdGVzdGluZzo6TW9jazo6VmVy
aWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKKyAg
ICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrSW5wdXRI
YW5kbGVyQ2xpZW50KTsKIAogICAgIC8vIFRpY2sgdGhlIHNlY29uZCBmbGluZyBvbmNlIG5vcm1h
bGx5LgotICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVs
ZUFuaW1hdGlvbigpKTsKLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVu
dCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCi0gICAgICAgIC5XaWxsT25j
ZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0
YXJ0ZWQpKTsKLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Ny
b2xsQnkodGVzdGluZzo6XywgdGVzdGluZzo6UHJvcGVydHkoJldlYkNvcmU6OkludFNpemU6Omhl
aWdodCwgdGVzdGluZzo6R3QoMCkpKSk7Ci0gICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhh
bmRsZXJDbGllbnQsIHNjcm9sbEVuZCgpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhh
bmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9j
a0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6Xykp
CisgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViSW5wdXRIYW5kbGVyQ2xpZW50
OjpTY3JvbGxTdGF0dXNTdGFydGVkKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5k
bGVyQ2xpZW50LCBzY3JvbGxCeSh0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpGaWVsZCgmV2ViU2l6ZTo6
aGVpZ2h0LCB0ZXN0aW5nOjpHdCgwKSkpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhh
bmRsZXJDbGllbnQsIHNjcm9sbEVuZCgpKTsKICAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgz
MC4xKTsKIAotICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZt
X21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7CisgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5k
Q2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0lucHV0SGFuZGxlckNsaWVudCk7CiAKICAgICAvLyBU
aGVuIGFib3J0IHRoZSBzZWNvbmQgZmxpbmcuCi0gICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1
dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOwotICAgIEVYUEVDVF9DQUxMKG1f
bW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5n
OjpfKSkKLSAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0
SGFuZGxlckNsaWVudDo6U2Nyb2xsT25NYWluVGhyZWFkKSk7Ci0gICAgRVhQRUNUX0NBTEwobV9t
b2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJ5KHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8p
KS5UaW1lcygwKTsKLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwg
c2Nyb2xsRW5kKCkpLlRpbWVzKDApOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxl
ckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5w
dXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKKyAg
ICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJJbnB1dEhhbmRsZXJDbGllbnQ6OlNj
cm9sbFN0YXR1c09uTWFpblRocmVhZCkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFu
ZGxlckNsaWVudCwgc2Nyb2xsQnkodGVzdGluZzo6XywgdGVzdGluZzo6XykpLlRpbWVzKDApOwor
ICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsRW5kKCkpLlRp
bWVzKDApOwogCiAgICAgLy8gV2Ugc2hvdWxkIGdldCBwYXJhbWV0ZXJzIGZyb20gdGhlIHNlY29u
ZCBmbGluZywgbm90aGluZyBmcm9tIHRoZSBmaXJzdCBmbGluZyBzaG91bGQgImxlYWsiLgogICAg
IEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgdHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0
aW9uKHRlc3Rpbmc6OkFsbE9mKApAQCAtNTU2LDMgKzUzMSw0IEBAIFRFU1RfRihXZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ1RyYW5zZmVyUmVzZXRzKQogfQog
CiB9CisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162905</attachid>
            <date>2012-09-07 16:45:50 -0700</date>
            <delta_ts>2012-09-07 18:17:17 -0700</delta_ts>
            <desc>checks bindToClient called once, asserts enums match, puts WCIHI in correct gyp section</desc>
            <filename>bug-96151-20120907164529.patch</filename>
            <type>text/plain</type>
            <size>83267</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3OTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAzM2U4NjU3M2NiYjAz
N2IzMGFkZGFiMjQ2M2VjYTc5MTg0M2EwMDExLi5kOWYxMDc0NzhhYzc1NjIyZGZiYjMwMzI0NzNl
MWRjMWQyMTlmZDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0wOS0wNyAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gSW1wbGVtZW50IFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsIG9uIHRvcCBvZiBleHBv
c2VkIEFQSSBpbnN0ZWFkIG9mIENDIGludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYxNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFkZHMgcHVibGljIGlucHV0IGhhbmRsaW5nIGlu
dGVyZmFjZXMgZm9yIHRoZSBjb21wb3NpdG9yLgorCisgICAgICAgICogY2hyb21pdW0vcHVibGlj
L1dlYklucHV0SGFuZGxlci5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYklucHV0
SGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYklucHV0SGFuZGxlcjo6fldlYklucHV0SGFu
ZGxlcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYklucHV0SGFuZGxlckNsaWVudC5o
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYklucHV0SGFuZGxlckNsaWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklucHV0SGFuZGxlckNsaWVudDo6fldlYklucHV0SGFuZGxlckNs
aWVudCk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaDoKKyAg
ICAgICAgKFdlYkxheWVyVHJlZVZpZXcpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJM
YXllclRyZWVWaWV3Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJMYXllclRyZWVWaWV3Q2xpZW50OjpjcmVhdGVJbnB1dEhhbmRsZXIpOgorICAgICAgICAo
V2ViTGF5ZXJUcmVlVmlld0NsaWVudCk6CisKIDIwMTItMDktMDcgIFRvbW15IFdpZGVuZmx5Y2h0
ICA8dG9tbXl3QGdvb2dsZS5jb20+CiAKICAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBhZGQgUlRD
UGVlckNvbm5lY3Rpb246OmNyZWF0ZUFuc3dlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIyZmZlY2M0N2MxMTNj
NDg0MGE4MzBmYmM3NGU0NjAwY2ZiYjBkNWYuLjhjNzZkMDNiY2ZmYWYwYmM3YjU5OGU0MWRmNjdi
MmY3NjIxY2M2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMi0wOS0wNyAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
SW1wbGVtZW50IFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsIG9uIHRvcCBvZiBleHBvc2Vk
IEFQSSBpbnN0ZWFkIG9mIENDIGludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYxNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZXdvcmtzIHRoZSBDQyBob29rdXAgZm9yIGlucHV0IGhhbmRs
aW5nIHRvIGJlIG1vcmUgc2ltaWxhciB0byB0aGUgT3V0cHV0U3VyZmFjZSBoYW5kbGluZy4gSWYg
b24gY29tcG9zaXRvcgorICAgICAgICBzdGFydHVwIHdlIHdhbnQgdG8gaW5pdGlhbGl6ZSB0aHJl
YWRlZCBpbnB1dCBoYW5kbGluZywgd2UgYXNrIHRoZSBlbWJlZGRlciBmb3IgYSBDQ0lucHV0SGFu
ZGxlciBpbXBsZW1lbnRhdGlvbgorICAgICAgICB2aWEgQ0NMYXllclRyZWVIb3N0Q2xpZW50LiBJ
ZiB0aGUgY2xpZW50IHByb3ZpZGVzIG9uZSwgd2UgbGF0ZXIgYmluZCB0aGlzIHRvIGEgQ0NJbnB1
dEhhbmRsZXJDbGllbnQgKGFjdHVhbGx5CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGwpIGZy
b20gdGhlIGNvbXBvc2l0b3IgdGhyZWFkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoQ0NJbnB1dEhhbmRsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3Q6OkNDTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6
OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjcmVhdGVJ
bnB1dEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChDQ0xheWVyVHJl
ZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdENsaWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0xheWVyVHJl
ZUhvc3RDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UHJveHkuaDoKKyAgICAgICAgKENDUHJveHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NTaW5nbGVUaHJlYWRQcm94eTo6Q0NTaW5nbGVUaHJlYWRQcm94eSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oOgorICAgICAg
ICAoQ0NTaW5nbGVUaHJlYWRQcm94eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFBy
b3h5OjpDQ1RocmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnN0
YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRy
YXdBbmRTd2FwSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW5p
dGlhbGl6ZUltcGxPbkltcGxUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorCiAy
MDEyLTA5LTA3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI3OTExLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCA1MDYzNTA2NjA1MjQwZjc1NDZmNmQ0Mzg5ODRiMzY4ZjZhNTIwNDA0Li43
MWM2ZTA0OGZhN2NiMWQ1MjNhNjcxNDNiZDhhNDRkYjQ3ODNjNjY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDEyLTA5LTA3ICBKYW1lcyBSb2JpbnNvbiAg
PGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBJbXBsZW1lbnQgV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGwgb24gdG9wIG9mIGV4cG9zZWQgQVBJIGluc3RlYWQg
b2YgQ0MgaW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NjE1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1vdmVzIGlucHV0IGhhbmRsZXIgc2V0dXAgY29kZSB1cCB0byB0aGUgV2ViS2l0IGxh
eWVyIGluc3RlYWQgb2YgcmVhY2hpbmcgaW4gdG8gQ0MgaW50ZXJuYWxzLgorICAgICAgICBXZWJM
YXllclRyZWVWaWV3SW1wbCBpbXBsZW1lbnRzIGNyZWF0ZUlucHV0SGFuZGxlcigpIGJ5IGFza2lu
ZyBpdHMgZW1iZWRkZXIgZm9yIGEgV2ViSW5wdXRIYW5kbGVyLiBJZiBvbmUgaXMKKyAgICAgICAg
cHJvdmlkZWQsIGl0IHdyYXBzIHRoZSBXZWJJbnB1dEhhbmRsZXIgaW4gYSBDQ0lucHV0SGFuZGxl
ciBpbXBsZW1lbnRhdGlvbiB0byBwYXNzIGRvd24gdG8gQ0MuCisKKyAgICAgICAgV2ViVmlld0lt
cGwgaW1wbGVtZW50cyBXZWJMYXllclRyZWVWaWV3OjpjcmVhdGVJbnB1dEhhbmRsZXIoKSBieSBj
b25zdHJ1Y3RpbmcgYSBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbAorICAgICAgICBhbmQg
c3RvcmluZyBpdHMgaWRlbnRpZmllciBmb3IgdGhlIGRpZEFjdGl2YXRlQ29tcG9zaXRvciBjYWxs
LiAgRnJvbSB0aGlzIHBvaW50IG9uIHRoZSBzZXR1cCBpcyB0aGUgc2FtZSBhcworICAgICAgICBi
ZWZvcmUuCisKKyAgICAgICAgV0NJSEkgY2hhbmdlcyBjb3ZlcmVkIGJ5IHVuaXQgdGVzdHMsIG92
ZXJhbGwgc2Nyb2xsaW5nIGJlaGF2aW9yIG1hbnVhbGx5IHRlc3RlZC4KKworICAgICAgICAqIFdl
YktpdC5neXBpOgorICAgICAgICAqIHNyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpmcm9t
SWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsOjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjp+V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2V0
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6
OmhhbmRsZUlucHV0RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVySW1wbDo6aGFuZGxlSW5wdXRFdmVudEludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmhhbmRsZUdlc3R1cmVGbGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpiaW5kVG9DbGllbnQp
OgorICAgICAgICAqIHNyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oOgorICAgICAg
ICAoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aWRlbnRpZmllcik6CisgICAgICAgICogc3JjL1dl
YkxheWVyVHJlZVZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmll
d0ltcGw6OmNyZWF0ZUlucHV0SGFuZGxlcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAq
IHNyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oOgorICAgICAgICAoV2ViTGF5ZXJUcmVlVmlld0lt
cGwpOgorICAgICAgICAqIHNyYy9XZWJUb0NDSW5wdXRIYW5kbGVyQWRhcHRlci5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVG9DQ0lucHV0SGFuZGxl
ckFkYXB0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRvQ0NJbnB1dEhhbmRsZXJB
ZGFwdGVyOjpXZWJUb0NDSW5wdXRIYW5kbGVyQWRhcHRlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlRvQ0NJbnB1dEhhbmRsZXJBZGFwdGVyOjp+V2ViVG9DQ0lucHV0SGFuZGxlckFkYXB0ZXIpOgor
ICAgICAgICAoV2ViVG9DQ0lucHV0SGFuZGxlckFkYXB0ZXI6OkNsaWVudEFkYXB0ZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJUb0NDSW5wdXRIYW5kbGVyQWRhcHRlcjo6Q2xpZW50QWRhcHRlcjo6
Q2xpZW50QWRhcHRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlRvQ0NJbnB1dEhhbmRsZXJBZGFw
dGVyOjpDbGllbnRBZGFwdGVyOjp+Q2xpZW50QWRhcHRlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlRvQ0NJbnB1dEhhbmRsZXJBZGFwdGVyOjpiaW5kVG9DbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJUb0NDSW5wdXRIYW5kbGVyQWRhcHRlcjo6YW5pbWF0ZSk6CisgICAgICAgICogc3JjL1dl
YlRvQ0NJbnB1dEhhbmRsZXJBZGFwdGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENsaWVudC5oLgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlRvQ0NJbnB1dEhhbmRsZXJBZGFwdGVyKToKKyAg
ICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6V2ViVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0SXNBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpjcmVhdGVJbnB1dEhhbmRsZXIpOgorICAgICAgICAqIHNyYy9X
ZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2ViVmlld0ltcGwpOgorICAgICAgICAqIHRlc3RzL0ND
VGhyZWFkZWRUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xp
ZW50Lmg6CisgICAgICAgICogdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0
LmNwcDoKKyAgICAgICAgKE1vY2tXZWJJbnB1dEhhbmRsZXJDbGllbnQpOgorICAgICAgICAoV2Vi
S2l0OjpNb2NrV2ViSW5wdXRIYW5kbGVyQ2xpZW50OjpNb2NrV2ViSW5wdXRIYW5kbGVyQ2xpZW50
KToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYklucHV0SGFuZGxlckNsaWVudDo6fk1vY2tXZWJJ
bnB1dEhhbmRsZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVySW1wbFRlc3Q6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCk6CisgICAg
ICAgIChXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QpOgorICAgICAgICAoV2ViS2l0
OjpURVNUX0YpOgorCiAyMDEyLTA5LTA3ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTWFrZSBSZW5kZXJQYXNzIGlkcyBob2xkIGJvdGgg
Z2VuZXJhdGluZyBsYXllciBpZCBhbmQgYW4gaW5kZXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRIYW5kbGVyLmggYi9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYklucHV0SGFuZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmYjIzZDUyNzEx
YTgzY2I4NTI3YThlOWIzYThjMTkxODQxMjVlZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYklucHV0SGFuZGxlci5oCkBAIC0wLDAgKzEsNDAg
QEAKKy8qIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJbnB1dEhhbmRsZXJfaAorI2RlZmluZSBXZWJJbnB1
dEhhbmRsZXJfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYklucHV0SGFuZGxlckNs
aWVudDsKKworY2xhc3MgV2ViSW5wdXRIYW5kbGVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5X
ZWJJbnB1dEhhbmRsZXIoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBiaW5kVG9DbGllbnQoV2Vi
SW5wdXRIYW5kbGVyQ2xpZW50KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRvdWJs
ZSBtb25vdG9uaWNUaW1lKSA9IDA7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEhhbmRsZXJDbGllbnQuaCBiL1Nv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRIYW5kbGVyQ2xpZW50LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMWJlZjIwNWM0ZWI0NTE0Y2E1OGY2ZDMyMzkwMjQyOGY2MjMxYzI0MwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRIYW5k
bGVyQ2xpZW50LmgKQEAgLTAsMCArMSw4MSBAQAorLyogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYklucHV0
SGFuZGxlckNsaWVudF9oCisjZGVmaW5lIFdlYklucHV0SGFuZGxlckNsaWVudF9oCisKKyNpbmNs
dWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJQb2ludC5oIgorI2luY2x1ZGUgIldlYlNp
emUuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYklucHV0SGFuZGxlckNsaWVu
dCB7CitwdWJsaWM6CisgICAgZW51bSBTY3JvbGxTdGF0dXMgeworICAgICAgICBTY3JvbGxTdGF0
dXNPbk1haW5UaHJlYWQsCisgICAgICAgIFNjcm9sbFN0YXR1c1N0YXJ0ZWQsCisgICAgICAgIFNj
cm9sbFN0YXR1c0lnbm9yZWQKKyAgICB9OworICAgIGVudW0gU2Nyb2xsSW5wdXRUeXBlIHsKKyAg
ICAgICAgU2Nyb2xsSW5wdXRUeXBlR2VzdHVyZSwKKyAgICAgICAgU2Nyb2xsSW5wdXRUeXBlV2hl
ZWwKKyAgICB9OworCisgICAgLy8gU2VsZWN0cyBhIGxheWVyIHRvIGJlIHNjcm9sbGVkIGF0IGEg
Z2l2ZW4gcG9pbnQgaW4gd2luZG93IGNvb3JkaW5hdGVzLgorICAgIC8vIFJldHVybnMgU2Nyb2xs
U3RhcnRlZCBpZiB0aGUgbGF5ZXIgYXQgdGhlIGNvb3JkaW5hdGVzIGNhbiBiZSBzY3JvbGxlZCwK
KyAgICAvLyBTY3JvbGxPbk1haW5UaHJlYWQgaWYgdGhlIHNjcm9sbCBldmVudCBzaG91bGQgaW5z
dGVhZCBiZSBkZWxlZ2F0ZWQgdG8gdGhlCisgICAgLy8gbWFpbiB0aHJlYWQsIG9yIFNjcm9sbEln
bm9yZWQgaWYgdGhlcmUgaXMgbm90aGluZyB0byBiZSBzY3JvbGxlZCBhdCB0aGUKKyAgICAvLyBn
aXZlbiBjb29yZGluYXRlcy4KKyAgICB2aXJ0dWFsIFNjcm9sbFN0YXR1cyBzY3JvbGxCZWdpbihX
ZWJQb2ludCwgU2Nyb2xsSW5wdXRUeXBlKSA9IDA7CisKKyAgICAvLyBTY3JvbGwgdGhlIHNlbGVj
dGVkIGxheWVyIHN0YXJ0aW5nIGF0IHRoZSBnaXZlbiB3aW5kb3cgY29vcmRpbmF0ZS4gSWYKKyAg
ICAvLyB0aGVyZSBpcyBubyByb29tIHRvIG1vdmUgdGhlIGxheWVyIGluIHRoZSByZXF1ZXN0ZWQg
ZGlyZWN0aW9uLCBpdHMgZmlyc3QKKyAgICAvLyBhbmNlc3RvciBsYXllciB0aGF0IGNhbiBiZSBz
Y3JvbGxlZCB3aWxsIGJlIG1vdmVkIGluc3RlYWQuIFNob3VsZCBvbmx5IGJlCisgICAgLy8gY2Fs
bGVkIGlmIHNjcm9sbEJlZ2luKCkgcmV0dXJuZWQgU2Nyb2xsU3RhcnRlZC4KKyAgICB2aXJ0dWFs
IHZvaWQgc2Nyb2xsQnkoV2ViUG9pbnQsIFdlYlNpemUpID0gMDsKKworICAgIC8vIFN0b3Agc2Ny
b2xsaW5nIHRoZSBzZWxlY3RlZCBsYXllci4gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIHNjcm9s
bEJlZ2luKCkKKyAgICAvLyByZXR1cm5lZCBTY3JvbGxTdGFydGVkLgorICAgIHZpcnR1YWwgdm9p
ZCBzY3JvbGxFbmQoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlQmVnaW4o
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBpbmNoR2VzdHVyZVVwZGF0ZShmbG9hdCBtYWduaWZ5
RGVsdGEsIFdlYlBvaW50IGFuY2hvcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1
cmVFbmQoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24o
V2ViU2l6ZSB0YXJnZXRQb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBhbmNob3JQb2ludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxvYXQgcGFnZVNjYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkb3VibGUgc3RhcnRUaW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkb3VibGUgZHVyYXRpb24pID0gMDsKKworICAgIC8vIFJlcXVlc3Qg
YW5vdGhlciBjYWxsYmFjayB0byBXZWJJbnB1dEhhbmRsZXI6OmFuaW1hdGUoKS4KKyAgICB2aXJ0
dWFsIHZvaWQgc2NoZWR1bGVBbmltYXRpb24oKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0
dWFsIH5XZWJJbnB1dEhhbmRsZXJDbGllbnQoKSB7IH0KK307CisKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcu
aCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCmlu
ZGV4IDQwYTNiYmQyZTk2NzdiOTgyYzg4M2FhNjI1ZGEyMzYxNmZkMGQwOGIuLjljOTVhZDJkM2U0
ZDQ4ODBhNzc1MjlmYWM2MTY4YmY5NTNkYWM0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCisrKyBiL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCkBAIC04NCwxMCArODQsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFJvb3RMYXllcihjb25zdCBXZWJMYXllciYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJSb290TGF5ZXIoKSA9IDA7CiAKLSAgICAvLyBSZXR1
cm5zIGEgdW5pcXVlIGlkZW50aWZpZXIgdGhhdCBjYW4gYmUgdXNlZCBvbiB0aGUgY29tcG9zaXRv
ciB0aHJlYWQgdG8gcmVxdWVzdCBhCi0gICAgLy8gV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlciBp
bnN0YW5jZS4KLSAgICB2aXJ0dWFsIGludCBjb21wb3NpdG9ySWRlbnRpZmllcigpID0gMDsKLQog
CiAgICAgLy8gVmlldyBwcm9wZXJ0aWVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oCmluZGV4IGRmYjRlODE2MTEyMWFi
MjkxZTk5MTU2M2RkMTZkZmIwOWJiOWQ5MGEuLjQ2YjA0NGEzMDhlZDUwYzlhNjViNzkxNjU4ZGQ1
OGY4NmZiYWY2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oCkBAIC0yOCw4ICsyOCw5IEBACiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2U7Ci1zdHJ1Y3Qg
V2ViU2l6ZTsKK2NsYXNzIFdlYklucHV0SGFuZGxlcjsKIGNsYXNzIFdlYlRocmVhZDsKK3N0cnVj
dCBXZWJTaXplOwogCiBjbGFzcyBXZWJMYXllclRyZWVWaWV3Q2xpZW50IHsKIHB1YmxpYzoKQEAg
LTcyLDYgKzczLDggQEAgcHVibGljOgogICAgIC8vIDNEIGNvbnRleHQgZXZlbnQpLgogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNyZWF0ZU91dHB1dFN1cmZhY2UoYm9vbCBzdWNjZXNzKSB7IH0KIAor
ICAgIHZpcnR1YWwgV2ViSW5wdXRIYW5kbGVyKiBjcmVhdGVJbnB1dEhhbmRsZXIoKSB7IHJldHVy
biAwOyB9CisKICAgICAvLyBJbmRpY2F0ZXMgdGhhdCBhIGZyYW1lIHdpbGwgYmUgY29tbWl0dGVk
IHRvIHRoZSBpbXBsIHNpZGUgb2YgdGhlIGNvbXBvc2l0b3IKICAgICAvLyBmb3IgcmVuZGVyaW5n
LgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29tbWl0KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRs
ZXIuaAppbmRleCAyNzIxZDExNmRhMGY4YTBlZTJlMjMwNTYxZGI3MzY5ZTllOTkyYTg2Li4xM2Zk
NTY4ZmFkM2UyNDNmMGEyMDgyNzk4YjQ2ZWQxMGQ0OWZlODYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRI
YW5kbGVyLmgKQEAgLTM2LDkgKzM2LDkgQEAgY2xhc3MgSW50U2l6ZTsKIC8vIHRoZSBpbXBsIHRo
cmVhZCBzaWRlIG9mIHRoZSBjb21wb3NpdG9yIGltcGxlbWVudGF0aW9uLgogLy8KIC8vIFRoZXJl
IGlzIG9uZSBDQ0lucHV0SGFuZGxlciBmb3IgZXZlcnkgQ0NMYXllclRyZWVIb3N0LiBJdCBpcwot
Ly8gY3JlYXRlZCBhbmQgdXNlZCBvbmx5IG9uIHRoZSBpbXBsIHRocmVhZC4KKy8vIGNyZWF0ZWQg
b24gdGhlIG1haW4gdGhyZWFkIGFuZCB1c2VkIG9ubHkgb24gdGhlIGltcGwgdGhyZWFkLgogLy8K
LS8vIFRoZSBDQ0lucHV0SGFuZGxlciBpcyBjb25zdHJ1Y3RlZCB3aXRoIGFuIElucHV0SGFuZGxl
ckNsaWVudCwgd2hpY2ggaXMgdGhlCisvLyBUaGUgQ0NJbnB1dEhhbmRsZXIgaXMgY29uc3RydWN0
ZWQgd2l0aCBhIENDSW5wdXRIYW5kbGVyQ2xpZW50LCB3aGljaCBpcyB0aGUKIC8vIGludGVyZmFj
ZSBieSB3aGljaCB0aGUgaGFuZGxlciBjYW4gbWFuaXB1bGF0ZSB0aGUgTGF5ZXJUcmVlLgogY2xh
c3MgQ0NJbnB1dEhhbmRsZXJDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDSW5w
dXRIYW5kbGVyQ2xpZW50KTsKQEAgLTg0LDEwICs4NCw5IEBAIHByb3RlY3RlZDoKIGNsYXNzIEND
SW5wdXRIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ0lucHV0SGFuZGxlcik7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NJbnB1dEhhbmRsZXI+IGNyZWF0ZShD
Q0lucHV0SGFuZGxlckNsaWVudCopOwogICAgIHZpcnR1YWwgfkNDSW5wdXRIYW5kbGVyKCkgeyB9
CiAKLSAgICB2aXJ0dWFsIGludCBpZGVudGlmaWVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBiaW5kVG9DbGllbnQoQ0NJbnB1dEhhbmRsZXJDbGllbnQqKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGFuaW1hdGUoZG91YmxlIG1vbm90b25pY1RpbWUpID0gMDsKIAogcHJvdGVjdGVkOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggNzAzMWU4MjJhMThjYmM3MjY2ODM4
ODQ1Y2QzYmQyZGRiMzE3M2ViOS4uNDZhZmFjYmE0OTQxNjgwZjU0MWExNzc2NWQ3YWE3MjRhM2Jk
MGZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC03MCw4ICs3MCw3IEBA
IFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0PiBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZShDQ0xh
eWVyVHJlZUhvc3RDbGllbnQqIGNsaWVuCiB9CiAKIENDTGF5ZXJUcmVlSG9zdDo6Q0NMYXllclRy
ZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBjb25zdCBDQ0xheWVyVHJlZVNl
dHRpbmdzJiBzZXR0aW5ncykKLSAgICA6IG1fY29tcG9zaXRvcklkZW50aWZpZXIoLTEpCi0gICAg
LCBtX2FuaW1hdGluZyhmYWxzZSkKKyAgICA6IG1fYW5pbWF0aW5nKGZhbHNlKQogICAgICwgbV9u
ZWVkc0FuaW1hdGVMYXllcnMoZmFsc2UpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBt
X2NvbW1pdE51bWJlcigwKQpAQCAtMTA1LDExICsxMDQsNyBAQCBib29sIENDTGF5ZXJUcmVlSG9z
dDo6aW5pdGlhbGl6ZSgpCiAgICAgICAgIG1fcHJveHkgPSBDQ1NpbmdsZVRocmVhZFByb3h5Ojpj
cmVhdGUodGhpcyk7CiAgICAgbV9wcm94eS0+c3RhcnQoKTsKIAotICAgIGlmICghbV9wcm94eS0+
aW5pdGlhbGl6ZUNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbV9jb21w
b3NpdG9ySWRlbnRpZmllciA9IG1fcHJveHktPmNvbXBvc2l0b3JJZGVudGlmaWVyKCk7Ci0gICAg
cmV0dXJuIHRydWU7CisgICAgcmV0dXJuIG1fcHJveHktPmluaXRpYWxpemVDb250ZXh0KCk7CiB9
CiAKIENDTGF5ZXJUcmVlSG9zdDo6fkNDTGF5ZXJUcmVlSG9zdCgpCkBAIC0yOTIsNiArMjg3LDEx
IEBAIFBhc3NPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRl
Q29udGV4dCgpCiAgICAgcmV0dXJuIG1fY2xpZW50LT5jcmVhdGVPdXRwdXRTdXJmYWNlKCk7CiB9
CiAKK1Bhc3NPd25QdHI8Q0NJbnB1dEhhbmRsZXI+IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlSW5w
dXRIYW5kbGVyKCkKK3sKKyAgICByZXR1cm4gbV9jbGllbnQtPmNyZWF0ZUlucHV0SGFuZGxlcigp
OworfQorCiBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IENDTGF5ZXJUcmVlSG9zdDo6
Y3JlYXRlTGF5ZXJUcmVlSG9zdEltcGwoQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCogY2xpZW50
KQogewogICAgIHJldHVybiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUobV9zZXR0aW5ncywg
Y2xpZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggNzQyNzg4YzcwNjc4M2Ji
NjM4ZjUzZDYyNmYyZGM1Y2MxZTNhNTgwYS4uNWQ3ODU4NTIxOWUyYzkxYjJlNWZhZTU1MjcwOTA5
ZjVkNDg0MmJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTE0NCw2ICsxNDQs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsQ29tbWl0KCk7CiAgICAgdm9pZCBjb21taXRDb21w
bGV0ZSgpOwogICAgIFBhc3NPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZUNvbnRleHQo
KTsKKyAgICBQYXNzT3duUHRyPENDSW5wdXRIYW5kbGVyPiBjcmVhdGVJbnB1dEhhbmRsZXIoKTsK
ICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gY3JlYXRlTGF5ZXJU
cmVlSG9zdEltcGwoQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCopOwogICAgIHZvaWQgZGlkTG9z
ZUNvbnRleHQoKTsKICAgICBlbnVtIFJlY3JlYXRlUmVzdWx0IHsKQEAgLTE2Miw4ICsxNjMsNiBA
QCBwdWJsaWM6CiAKICAgICBDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCgpIHsgcmV0dXJu
IG1fY2xpZW50OyB9CiAKLSAgICBpbnQgY29tcG9zaXRvcklkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2NvbXBvc2l0b3JJZGVudGlmaWVyOyB9Ci0KICAgICAvLyBPbmx5IHVzZWQgd2hlbiBj
b21wb3NpdGluZyBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgdm9pZCBjb21wb3NpdGUoKTsKICAg
ICB2b2lkIHNjaGVkdWxlQ29tcG9zaXRlKCk7CkBAIC0yNjcsOCArMjY2LDYgQEAgcHJpdmF0ZToK
ICAgICBib29sIGFuaW1hdGVMYXllcnNSZWN1cnNpdmUoTGF5ZXJDaHJvbWl1bSogY3VycmVudCwg
ZG91YmxlIG1vbm90b25pY1RpbWUpOwogICAgIHZvaWQgc2V0QW5pbWF0aW9uRXZlbnRzUmVjdXJz
aXZlKGNvbnN0IENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJiwgTGF5ZXJDaHJvbWl1bSosIGRvdWJs
ZSB3YWxsQ2xvY2tUaW1lKTsKIAotICAgIGludCBtX2NvbXBvc2l0b3JJZGVudGlmaWVyOwotCiAg
ICAgYm9vbCBtX2FuaW1hdGluZzsKICAgICBib29sIG1fbmVlZHNBbmltYXRlTGF5ZXJzOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENsaWVudC5oCmluZGV4IDhkOTY2Nzk5YmRiZWRl
MDM2MmI2Y2M3MjUzYTAwODU2YWYzMmFiNmIuLjNkNWNiMzdjYmU5NTk5NTU3ZTg3YTIxYjAzYTUx
NmE3NGY4MmM2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENsaWVudC5oCkBA
IC0zMiw2ICszMiw3IEBAIGNsYXNzIFdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlOwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDQ0lucHV0SGFuZGxlcjsKIGNsYXNzIEludFNpemU7
CiAKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdENsaWVudCB7CkBAIC00NCw2ICs0NSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBJbnRTaXplJiBz
Y3JvbGxEZWx0YSwgZmxvYXQgcGFnZVNjYWxlKSA9IDA7CiAgICAgdmlydHVhbCBQYXNzT3duUHRy
PFdlYktpdDo6V2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2U+IGNyZWF0ZU91dHB1dFN1cmZhY2Uo
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlT3V0cHV0U3VyZmFjZShib29sIHN1
Y2Nlc3MpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NJbnB1dEhhbmRsZXI+IGNyZWF0
ZUlucHV0SGFuZGxlcigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENvbW1pdCgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRD
b21taXRBbmREcmF3RnJhbWUoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKaW5kZXggNjAyZTlkNDlmZjhkNzJm
NjQ3NjNmMmI0YmNlNzVmYjA2ZDQ5MmNhNi4uNDIxMjRjM2EyZWIwZDI1NmQ2NTQ4MThhYWU2ODY1
MDA5NmY1ODQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaApAQCAtNzksOCArNzksNiBAQCBwdWJsaWM6CiAgICAg
Ly8gcmVpbml0aWFsaXplZC4KICAgICB2aXJ0dWFsIGJvb2wgcmVjcmVhdGVDb250ZXh0KCkgPSAw
OwogCi0gICAgdmlydHVhbCBpbnQgY29tcG9zaXRvcklkZW50aWZpZXIoKSBjb25zdCA9IDA7Ci0K
ICAgICB2aXJ0dWFsIHZvaWQgaW1wbFNpZGVSZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRz
JikgPSAwOwogCiAgICAgdmlydHVhbCBjb25zdCBSZW5kZXJlckNhcGFiaWxpdGllcyYgcmVuZGVy
ZXJDYXBhYmlsaXRpZXMoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuY3BwCmluZGV4IDY4NzZlYTIxODhiYWY2NjY4YTI5YWMzN2MxY2QzOGM4Y2I0NDFjZTku
LjQ5ZTVlZTRiMTJiOGZjMTBhZmU1YmQ0YWVkN2NhN2Y5MzZiNTRlZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC00Niw3ICs0Niw2IEBAIFBhc3NPd25QdHI8
Q0NQcm94eT4gQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y3JlYXRlKENDTGF5ZXJUcmVlSG9zdCogbGF5
ZXJUcmVlSG9zdCkKIENDU2luZ2xlVGhyZWFkUHJveHk6OkNDU2luZ2xlVGhyZWFkUHJveHkoQ0NM
YXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KQogICAgIDogbV9sYXllclRyZWVIb3N0KGxheWVy
VHJlZUhvc3QpCiAgICAgLCBtX2NvbnRleHRMb3N0KGZhbHNlKQotICAgICwgbV9jb21wb3NpdG9y
SWRlbnRpZmllcigtMSkKICAgICAsIG1fcmVuZGVyZXJJbml0aWFsaXplZChmYWxzZSkKICAgICAs
IG1fbmV4dEZyYW1lSXNOZXdseUNvbW1pdHRlZEZyYW1lKGZhbHNlKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4IGE3YWZkMGQ5MDFiZTkyYWE1MWYzZGI3ZDY4OTE0
YzM5NzE0ZWI5ODcuLmE0OGJkYWYwYjI0ZGQ5MDA1Nzg3N2Q4YjM5NThhMjZhMTljOGU0NTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTUwLDcgKzUwLDYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCBpbml0aWFsaXplUmVuZGVyZXIoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJv
b2wgcmVjcmVhdGVDb250ZXh0KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBpbnQgY29tcG9zaXRv
cklkZW50aWZpZXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2NvbXBvc2l0b3JJZGVudGlm
aWVyOyB9CiAgICAgdmlydHVhbCB2b2lkIGltcGxTaWRlUmVuZGVyaW5nU3RhdHMoQ0NSZW5kZXJp
bmdTdGF0cyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyZXJDYXBhYmlsaXRp
ZXMmIHJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGxvc2VDb250ZXh0KCkgT1ZFUlJJREU7CkBAIC04OCw3ICs4Nyw2IEBAIHByaXZhdGU6CiAg
ICAgLy8gQWNjZXNzZWQgb24gbWFpbiB0aHJlYWQgb25seS4KICAgICBDQ0xheWVyVHJlZUhvc3Qq
IG1fbGF5ZXJUcmVlSG9zdDsKICAgICBib29sIG1fY29udGV4dExvc3Q7Ci0gICAgaW50IG1fY29t
cG9zaXRvcklkZW50aWZpZXI7CiAKICAgICAvLyBIb2xkcyBvbiB0byB0aGUgY29udGV4dCBiZXR3
ZWVuIGluaXRpYWxpemVDb250ZXh0KCkgYW5kIGluaXRpYWxpemVSZW5kZXJlcigpIGNhbGxzLiBT
aG91bGRuJ3QKICAgICAvLyBiZSB1c2VkIGZvciBhbnl0aGluZyBlbHNlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcAppbmRleCBiM2FmNThlOTMyYWUzMmI1ZDJiMjg4MjIwZTExNjdkODEwNjE3
MGI0Li43MWFjZDc5ZTczYzYyM2E4ZmQ2YTZiYjRhM2RiYzZlMjZmNzllMGEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcApAQCAtNzEsNyArNzEsNiBAQCBDQ1RocmVhZFByb3h5OjpDQ1Ro
cmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCkKICAgICAsIG1fY29tbWl0
UmVxdWVzdFNlbnRUb0ltcGxUaHJlYWQoZmFsc2UpCiAgICAgLCBtX2ZvcmNlZENvbW1pdFJlcXVl
c3RlZChmYWxzZSkKICAgICAsIG1fbGF5ZXJUcmVlSG9zdChsYXllclRyZWVIb3N0KQotICAgICwg
bV9jb21wb3NpdG9ySWRlbnRpZmllcigtMSkKICAgICAsIG1fcmVuZGVyZXJJbml0aWFsaXplZChm
YWxzZSkKICAgICAsIG1fc3RhcnRlZChmYWxzZSkKICAgICAsIG1fdGV4dHVyZXNBY3F1aXJlZCh0
cnVlKQpAQCAtMjcxLDEyICsyNzAsNiBAQCBib29sIENDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29u
dGV4dCgpCiAgICAgcmV0dXJuIHJlY3JlYXRlU3VjY2VlZGVkOwogfQogCi1pbnQgQ0NUaHJlYWRQ
cm94eTo6Y29tcG9zaXRvcklkZW50aWZpZXIoKSBjb25zdAotewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7Ci0gICAgcmV0dXJuIG1fY29tcG9zaXRvcklkZW50aWZpZXI7Ci19Ci0KIHZvaWQg
Q0NUaHJlYWRQcm94eTo6aW1wbFNpZGVSZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJiBz
dGF0cykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtNDA5LDcgKzQwMiw4IEBA
IHZvaWQgQ0NUaHJlYWRQcm94eTo6c3RhcnQoKQogICAgIC8vIENyZWF0ZSBMYXllclRyZWVIb3N0
SW1wbC4KICAgICBEZWJ1Z1Njb3BlZFNldE1haW5UaHJlYWRCbG9ja2VkIG1haW5UaHJlYWRCbG9j
a2VkOwogICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBsZXRpb247Ci0gICAgQ0NQcm94eTo6aW1w
bFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJv
eHk6OmluaXRpYWxpemVJbXBsT25JbXBsVGhyZWFkLCAmY29tcGxldGlvbikpOworICAgIE93blB0
cjxDQ0lucHV0SGFuZGxlcj4gaGFuZGxlciA9IG1fbGF5ZXJUcmVlSG9zdC0+Y3JlYXRlSW5wdXRI
YW5kbGVyKCk7CisgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1Ro
cmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVJbXBsT25JbXBsVGhyZWFk
LCAmY29tcGxldGlvbiwgaGFuZGxlci5yZWxlYXNlKCkpKTsKICAgICBjb21wbGV0aW9uLndhaXQo
KTsKIAogICAgIG1fc3RhcnRlZCA9IHRydWU7CkBAIC03MDIsNyArNjk2LDggQEAgQ0NTY2hlZHVs
ZWRBY3Rpb25EcmF3QW5kU3dhcFJlc3VsdCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25E
cmF3QW5kU3dhcEludGUKICAgICBkb3VibGUgbW9ub3RvbmljVGltZSA9IG1vbm90b25pY2FsbHlJ
bmNyZWFzaW5nVGltZSgpOwogICAgIGRvdWJsZSB3YWxsQ2xvY2tUaW1lID0gY3VycmVudFRpbWUo
KTsKIAotICAgIG1faW5wdXRIYW5kbGVyT25JbXBsVGhyZWFkLT5hbmltYXRlKG1vbm90b25pY1Rp
bWUpOworICAgIGlmIChtX2lucHV0SGFuZGxlck9uSW1wbFRocmVhZCkKKyAgICAgICAgbV9pbnB1
dEhhbmRsZXJPbkltcGxUaHJlYWQtPmFuaW1hdGUobW9ub3RvbmljVGltZSk7CiAgICAgbV9sYXll
clRyZWVIb3N0SW1wbC0+YW5pbWF0ZShtb25vdG9uaWNUaW1lLCB3YWxsQ2xvY2tUaW1lKTsKIAog
ICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiBhIGZvcmNlZCBkcmF3LCByZWdhcmRsZXNz
IG9mIHdoZXRoZXIgd2UgYXJlIGFibGUgdG8gcHJvZHVjZSBhIGZyYW1lLApAQCAtODU1LDcgKzg1
MCw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6dHJ5VG9SZWNyZWF0ZUNvbnRleHQoKQogICAgICAg
ICBtX2NvbnRleHRSZWNyZWF0aW9uVGltZXIuY2xlYXIoKTsKIH0KIAotdm9pZCBDQ1RocmVhZFBy
b3h5Ojppbml0aWFsaXplSW1wbE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxl
dGlvbikKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUltcGxPbkltcGxUaHJlYWQoQ0ND
b21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIFBhc3NPd25QdHI8Q0NJbnB1dEhhbmRsZXI+IHBv
cEhhbmRsZXIpCiB7CiAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5Ojppbml0
aWFsaXplSW1wbE9uSW1wbFRocmVhZCIpOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CkBA
IC04NjksOCArODY0LDkgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplSW1wbE9uSW1w
bFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKICAgICBtX3NjaGVkdWxlck9u
SW1wbFRocmVhZCA9IENDU2NoZWR1bGVyOjpjcmVhdGUodGhpcywgZnJhbWVSYXRlQ29udHJvbGxl
ci5yZWxlYXNlKCkpOwogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXRWaXNpYmxlKG1f
bGF5ZXJUcmVlSG9zdEltcGwtPnZpc2libGUoKSk7CiAKLSAgICBtX2lucHV0SGFuZGxlck9uSW1w
bFRocmVhZCA9IENDSW5wdXRIYW5kbGVyOjpjcmVhdGUobV9sYXllclRyZWVIb3N0SW1wbC5nZXQo
KSk7Ci0gICAgbV9jb21wb3NpdG9ySWRlbnRpZmllciA9IG1faW5wdXRIYW5kbGVyT25JbXBsVGhy
ZWFkLT5pZGVudGlmaWVyKCk7CisgICAgbV9pbnB1dEhhbmRsZXJPbkltcGxUaHJlYWQgPSBwb3BI
YW5kbGVyOworICAgIGlmIChtX2lucHV0SGFuZGxlck9uSW1wbFRocmVhZCkKKyAgICAgICAgbV9p
bnB1dEhhbmRsZXJPbkltcGxUaHJlYWQtPmJpbmRUb0NsaWVudChtX2xheWVyVHJlZUhvc3RJbXBs
LmdldCgpKTsKIAogICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5oCmluZGV4IGM0OGRmOTMwNTk5NmJjNDAzZjY2ZWM1Y2Q5YTNlOWIzNmM2NWRlZDcuLmFh
MmI5NTM3YTY4YmIxZWY1YTQ2YmZlNmFlNzVmMzQ4MmFjYTZlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmgKQEAgLTU5LDcgKzU5LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRW
aXNpYmxlKGJvb2wpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplUmVuZGVy
ZXIoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgcmVjcmVhdGVDb250ZXh0KCkgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCBpbnQgY29tcG9zaXRvcklkZW50aWZpZXIoKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgaW1wbFNpZGVSZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmluZ1N0
YXRzJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBjb25zdCBSZW5kZXJlckNhcGFiaWxpdGllcyYg
cmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
bG9zZUNvbnRleHQoKSBPVkVSUklERTsKQEAgLTEzMyw3ICsxMzIsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgcmVxdWVzdFJlYWRiYWNrT25JbXBsVGhyZWFkKFJlYWRiYWNrUmVxdWVzdCopOwogICAg
IHZvaWQgcmVxdWVzdFN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uT25JbXBsVGhyZWFkKEludFNpemUg
dGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0
aW9uU2VjKTsKICAgICB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZChDQ0NvbXBs
ZXRpb25FdmVudCopOwotICAgIHZvaWQgaW5pdGlhbGl6ZUltcGxPbkltcGxUaHJlYWQoQ0NDb21w
bGV0aW9uRXZlbnQqKTsKKyAgICB2b2lkIGluaXRpYWxpemVJbXBsT25JbXBsVGhyZWFkKENDQ29t
cGxldGlvbkV2ZW50KiwgUGFzc093blB0cjxDQ0lucHV0SGFuZGxlcj4pOwogICAgIHZvaWQgc2V0
U3VyZmFjZVJlYWR5T25JbXBsVGhyZWFkKCk7CiAgICAgdm9pZCBzZXRWaXNpYmxlT25JbXBsVGhy
ZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgYm9vbCk7CiAgICAgdm9pZCBpbml0aWFsaXplQ29udGV4
dE9uSW1wbFRocmVhZChDQ0dyYXBoaWNzQ29udGV4dCopOwpAQCAtMTU0LDcgKzE1Myw2IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2ZvcmNlZENvbW1pdFJlcXVlc3RlZDsKICAgICBPd25QdHI8Q0NU
aHJlYWRQcm94eUNvbnRleHRSZWNyZWF0aW9uVGltZXI+IG1fY29udGV4dFJlY3JlYXRpb25UaW1l
cjsKICAgICBDQ0xheWVyVHJlZUhvc3QqIG1fbGF5ZXJUcmVlSG9zdDsKLSAgICBpbnQgbV9jb21w
b3NpdG9ySWRlbnRpZmllcjsKICAgICBib29sIG1fcmVuZGVyZXJJbml0aWFsaXplZDsKICAgICBS
ZW5kZXJlckNhcGFiaWxpdGllcyBtX1JlbmRlcmVyQ2FwYWJpbGl0aWVzTWFpblRocmVhZENvcHk7
CiAgICAgYm9vbCBtX3N0YXJ0ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggYjNl
Yjk1NGViMDlkMDYwNmU5YTNhYjQxZDQ2MjA5MDVlNWUyMmY2OC4uZjZjZDkzNGQxYmU4NmZiY2Ez
NTYzYmNkZmU1ZGZjNmYyZTY0NzFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAt
NDg1LDYgKzQ4NSw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJDYWNoZS5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViQ29sb3JOYW1lLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJDb21tb24uY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkNyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkN1cnNvcklu
Zm8uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkRPTUV2ZW50LmNwcCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCA4MGNmMWQyNDVkMTJjZmQ1ZGM4YzZhZWI2OWY4ZjE4
NTIxNzQ4YzEwLi41ZDNmODUwZDVhMWViMzViN2Q3NmI2MWFhMWUxOWRmM2U1ZjllZDQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTE5MSw4ICsxOTEsNiBAQAogICAgICAgICAg
ICAgJ3NyYy9XZWJBbmltYXRpb25DdXJ2ZUNvbW1vbi5oJywKICAgICAgICAgICAgICdzcmMvV2Vi
QW5pbWF0aW9uSW1wbC5jcHAnLAogICAgICAgICAgICAgJ3NyYy9XZWJBbmltYXRpb25JbXBsLmgn
LAotICAgICAgICAgICAgJ3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAnLAot
ICAgICAgICAgICAgJ3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oJywKICAgICAg
ICAgICAgICdzcmMvV2ViQ29udGVudExheWVySW1wbC5jcHAnLAogICAgICAgICAgICAgJ3NyYy9X
ZWJDb250ZW50TGF5ZXJJbXBsLmgnLAogICAgICAgICAgICAgJ3NyYy9XZWJFeHRlcm5hbFRleHR1
cmVMYXllckltcGwuY3BwJywKQEAgLTIwNSw2ICsyMDMsOCBAQAogICAgICAgICAgICAgJ3NyYy9X
ZWJJbWFnZUxheWVySW1wbC5oJywKICAgICAgICAgICAgICdzcmMvV2ViTGF5ZXJJbXBsLmNwcCcs
CiAgICAgICAgICAgICAnc3JjL1dlYkxheWVySW1wbC5oJywKKyAgICAgICAgICAgICdzcmMvV2Vi
VG9DQ0lucHV0SGFuZGxlckFkYXB0ZXIuY3BwJywKKyAgICAgICAgICAgICdzcmMvV2ViVG9DQ0lu
cHV0SGFuZGxlckFkYXB0ZXIuaCcsCiAgICAgICAgICAgICAnc3JjL1dlYkxheWVyVHJlZVZpZXdJ
bXBsLmNwcCcsCiAgICAgICAgICAgICAnc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmgnLAogICAg
ICAgICAgICAgJ3NyYy9XZWJTY3JvbGxiYXJMYXllckltcGwuY3BwJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsLmNwcAppbmRleCBkMjkxZGM3YjI0YzcwY2NiMGIxODVhYjY4NTVkMzFkZTRkYTUyYjg3Li4x
NjIyMmFjNGY2ZDdiYTU1ZjhjZTcwMzcyYTM3MWZkMmQ0MjQ3NDIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckltcGwuY3BwCkBAIC0yNywyNiArMjcsMTYgQEAKIAogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsLmgiCiAKLSNpbmNsdWRlICJDQ1Byb3h5LmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1HZXN0dXJlQ3VydmVGYWN0b3J5LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlQ3Vy
dmVUYXJnZXQuaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCi0jaW5jbHVkZSAiV2ViQ29tcG9z
aXRvckltcGwuaCIKICNpbmNsdWRlICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJJbnB1dEhh
bmRsZXJDbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXNzT3du
UHRyPENDSW5wdXRIYW5kbGVyPiBDQ0lucHV0SGFuZGxlcjo6Y3JlYXRlKENDSW5wdXRIYW5kbGVy
Q2xpZW50KiBpbnB1dEhhbmRsZXJDbGllbnQpCi17Ci0gICAgcmV0dXJuIFdlYktpdDo6V2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGw6OmNyZWF0ZShpbnB1dEhhbmRsZXJDbGllbnQpOwotfQot
Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiAvLyBUaGVzZSBzdGF0aWNzIG1heSBvbmx5IGJl
IGFjY2Vzc2VkIGZyb20gdGhlIGNvbXBvc2l0b3IgdGhyZWFkLgpAQCAtNTgsMTUgKzQ4LDggQEAg
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlciogV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcjo6ZnJv
bUlkZW50aWZpZXIoaW50IGlkZW50aWYKICAgICByZXR1cm4gV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGw6OmZyb21JZGVudGlmaWVyKGlkZW50aWZpZXIpOwogfQogCi1QYXNzT3duUHRyPFdl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsPiBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bDo6Y3JlYXRlKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50KiBpbnB1dEhhbmRsZXJDbGll
bnQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
SW1wbChpbnB1dEhhbmRsZXJDbGllbnQpKTsKLX0KLQogV2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ciogV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmZyb21JZGVudGlmaWVyKGludCBpZGVu
dGlmaWVyKQogewotICAgIEFTU0VSVChXZWJDb21wb3NpdG9ySW1wbDo6aW5pdGlhbGl6ZWQoKSk7
Ci0gICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKIAogICAgIGlmICghc19jb21w
b3NpdG9ycykKICAgICAgICAgcmV0dXJuIDA7CkBAIC03OCwyNiArNjEsMjAgQEAgV2ViQ29tcG9z
aXRvcklucHV0SGFuZGxlciogV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmZyb21JZGVu
dGlmaWVyKGludCBpZGUKICAgICByZXR1cm4gMDsKIH0KIAotV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGw6OldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsKENDSW5wdXRIYW5kbGVyQ2xp
ZW50KiBpbnB1dEhhbmRsZXJDbGllbnQpCitXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwoKQogICAgIDogbV9jbGllbnQoMCkKICAgICAs
IG1faWRlbnRpZmllcihzX25leHRBdmFpbGFibGVJZGVudGlmaWVyKyspCi0gICAgLCBtX2lucHV0
SGFuZGxlckNsaWVudChpbnB1dEhhbmRsZXJDbGllbnQpCisgICAgLCBtX2lucHV0SGFuZGxlckNs
aWVudCgwKQogI2lmbmRlZiBOREVCVUcKICAgICAsIG1fZXhwZWN0U2Nyb2xsVXBkYXRlRW5kKGZh
bHNlKQogICAgICwgbV9leHBlY3RQaW5jaFVwZGF0ZUVuZChmYWxzZSkKICNlbmRpZgogICAgICwg
bV9nZXN0dXJlU2Nyb2xsU3RhcnRlZChmYWxzZSkKIHsKLSAgICBBU1NFUlQoQ0NQcm94eTo6aXNJ
bXBsVGhyZWFkKCkpOwotCi0gICAgaWYgKCFzX2NvbXBvc2l0b3JzKQotICAgICAgICBzX2NvbXBv
c2l0b3JzID0gbmV3IEhhc2hTZXQ8V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwqPjsKLSAg
ICBzX2NvbXBvc2l0b3JzLT5hZGQodGhpcyk7CiB9CiAKIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJJbXBsOjp+V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwoKQogewotICAgIEFTU0VSVChD
Q1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2Ns
aWVudC0+d2lsbFNodXRkb3duKCk7CiAKQEAgLTExMSw3ICs4OCw2IEBAIFdlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsOjp+V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwoKQogCiB2b2lk
IFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpzZXRDbGllbnQoV2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckNsaWVudCogY2xpZW50KQogewotICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxU
aHJlYWQoKSk7CiAgICAgLy8gSXQncyB2YWxpZCB0byBzZXQgYSBuZXcgY2xpZW50IGlmIHdlJ3Zl
IG5ldmVyIGhhZCBvbmUgb3IgdG8gY2xlYXIgdGhlIGNsaWVudCwgYnV0IGl0J3Mgbm90IHZhbGlk
IHRvIGNoYW5nZSBmcm9tIGhhdmluZyBvbmUgY2xpZW50IHRvIGEgZGlmZmVyZW50IG9uZS4KICAg
ICBBU1NFUlQoIW1fY2xpZW50IHx8ICFjbGllbnQpOwogICAgIG1fY2xpZW50ID0gY2xpZW50OwpA
QCAtMTE5LDcgKzk1LDYgQEAgdm9pZCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2V0
Q2xpZW50KFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQqIGMKIAogdm9pZCBXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJbnB1dEV2
ZW50JiBldmVudCkKIHsKLSAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAg
IEFTU0VSVChtX2NsaWVudCk7CiAKICAgICBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6
RXZlbnREaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiA9IGhhbmRsZUlucHV0RXZlbnRJbnRlcm5hbChl
dmVudCk7CkBAIC0xNDAsMTkgKzExNSwxOSBAQCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bDo6RXZlbnREaXNwb3NpdGlvbiBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aAogewog
ICAgIGlmIChldmVudC50eXBlID09IFdlYklucHV0RXZlbnQ6Ok1vdXNlV2hlZWwpIHsKICAgICAg
ICAgY29uc3QgV2ViTW91c2VXaGVlbEV2ZW50JiB3aGVlbEV2ZW50ID0gKnN0YXRpY19jYXN0PGNv
bnN0IFdlYk1vdXNlV2hlZWxFdmVudCo+KCZldmVudCk7Ci0gICAgICAgIENDSW5wdXRIYW5kbGVy
Q2xpZW50OjpTY3JvbGxTdGF0dXMgc2Nyb2xsU3RhdHVzID0gbV9pbnB1dEhhbmRsZXJDbGllbnQt
PnNjcm9sbEJlZ2luKEludFBvaW50KHdoZWVsRXZlbnQueCwgd2hlZWxFdmVudC55KSwgQ0NJbnB1
dEhhbmRsZXJDbGllbnQ6OldoZWVsKTsKKyAgICAgICAgV2ViSW5wdXRIYW5kbGVyQ2xpZW50OjpT
Y3JvbGxTdGF0dXMgc2Nyb2xsU3RhdHVzID0gbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbEJl
Z2luKFdlYlBvaW50KHdoZWVsRXZlbnQueCwgd2hlZWxFdmVudC55KSwgV2ViSW5wdXRIYW5kbGVy
Q2xpZW50OjpTY3JvbGxJbnB1dFR5cGVXaGVlbCk7CiAgICAgICAgIHN3aXRjaCAoc2Nyb2xsU3Rh
dHVzKSB7Ci0gICAgICAgIGNhc2UgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQ6
IHsKKyAgICAgICAgY2FzZSBXZWJJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1c1N0YXJ0
ZWQ6IHsKICAgICAgICAgICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQyKCJjYyIsICJXZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlSW5wdXQgd2hlZWwgc2Nyb2xsIiwgImRlbHRhWCIs
IC13aGVlbEV2ZW50LmRlbHRhWCwgImRlbHRhWSIsIC13aGVlbEV2ZW50LmRlbHRhWSk7Ci0gICAg
ICAgICAgICBtX2lucHV0SGFuZGxlckNsaWVudC0+c2Nyb2xsQnkoSW50UG9pbnQod2hlZWxFdmVu
dC54LCB3aGVlbEV2ZW50LnkpLCBJbnRTaXplKC13aGVlbEV2ZW50LmRlbHRhWCwgLXdoZWVsRXZl
bnQuZGVsdGFZKSk7CisgICAgICAgICAgICBtX2lucHV0SGFuZGxlckNsaWVudC0+c2Nyb2xsQnko
V2ViUG9pbnQod2hlZWxFdmVudC54LCB3aGVlbEV2ZW50LnkpLCBJbnRTaXplKC13aGVlbEV2ZW50
LmRlbHRhWCwgLXdoZWVsRXZlbnQuZGVsdGFZKSk7CiAgICAgICAgICAgICBtX2lucHV0SGFuZGxl
ckNsaWVudC0+c2Nyb2xsRW5kKCk7CiAgICAgICAgICAgICByZXR1cm4gRGlkSGFuZGxlOwogICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbElnbm9yZWQ6
CisgICAgICAgIGNhc2UgV2ViSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXNJZ25vcmVk
OgogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIERyb3BFdmVudCwgYnV0IGlu
IGNhc2VzIHdoZXJlIHdlIGZhaWwgdG8gcHJvcGVybHkgc3luYyBzY3JvbGxhYmlsaXR5IGl0J3Mg
c2FmZXIgdG8gc2VuZCB0aGUKICAgICAgICAgICAgIC8vIGV2ZW50IHRvIHRoZSBtYWluIHRocmVh
ZC4gQ2hhbmdlIGJhY2sgdG8gRHJvcEV2ZW50IG9uY2Ugd2UgaGF2ZSBzeW5jaHJvbml6YXRpb24g
YnVncyBzb3J0ZWQgb3V0LgogICAgICAgICAgICAgcmV0dXJuIERpZE5vdEhhbmRsZTsgCi0gICAg
ICAgIGNhc2UgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbE9uTWFpblRocmVhZDoKKyAgICAg
ICAgY2FzZSBXZWJJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1c09uTWFpblRocmVhZDoK
ICAgICAgICAgICAgIHJldHVybiBEaWROb3RIYW5kbGU7CiAgICAgICAgIH0KICAgICB9IGVsc2Ug
aWYgKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luKSB7CkBA
IC0xNjIsMTQgKzEzNywxNCBAQCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6RXZlbnRE
aXNwb3NpdGlvbiBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aAogICAgICAgICBtX2V4
cGVjdFNjcm9sbFVwZGF0ZUVuZCA9IHRydWU7CiAjZW5kaWYKICAgICAgICAgY29uc3QgV2ViR2Vz
dHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQgPSAqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViR2VzdHVyZUV2
ZW50Kj4oJmV2ZW50KTsKLSAgICAgICAgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1
cyBzY3JvbGxTdGF0dXMgPSBtX2lucHV0SGFuZGxlckNsaWVudC0+c2Nyb2xsQmVnaW4oSW50UG9p
bnQoZ2VzdHVyZUV2ZW50LngsIGdlc3R1cmVFdmVudC55KSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6
Okdlc3R1cmUpOworICAgICAgICBXZWJJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1cyBz
Y3JvbGxTdGF0dXMgPSBtX2lucHV0SGFuZGxlckNsaWVudC0+c2Nyb2xsQmVnaW4oV2ViUG9pbnQo
Z2VzdHVyZUV2ZW50LngsIGdlc3R1cmVFdmVudC55KSwgV2ViSW5wdXRIYW5kbGVyQ2xpZW50OjpT
Y3JvbGxJbnB1dFR5cGVHZXN0dXJlKTsKICAgICAgICAgc3dpdGNoIChzY3JvbGxTdGF0dXMpIHsK
LSAgICAgICAgY2FzZSBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZDoKKyAgICAg
ICAgY2FzZSBXZWJJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1c1N0YXJ0ZWQ6CiAgICAg
ICAgICAgICBtX2dlc3R1cmVTY3JvbGxTdGFydGVkID0gdHJ1ZTsKICAgICAgICAgICAgIHJldHVy
biBEaWRIYW5kbGU7Ci0gICAgICAgIGNhc2UgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbE9u
TWFpblRocmVhZDoKKyAgICAgICAgY2FzZSBXZWJJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0
YXR1c09uTWFpblRocmVhZDoKICAgICAgICAgICAgIHJldHVybiBEaWROb3RIYW5kbGU7Ci0gICAg
ICAgIGNhc2UgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbElnbm9yZWQ6CisgICAgICAgIGNh
c2UgV2ViSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXNJZ25vcmVkOgogICAgICAgICAg
ICAgcmV0dXJuIERyb3BFdmVudDsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoZXZlbnQudHlw
ZSA9PSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlKSB7CkBAIC0xNzksNyArMTU0
LDcgQEAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlzcG9zaXRpb24gV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmgKICAgICAgICAgICAgIHJldHVybiBEaWROb3RI
YW5kbGU7CiAKICAgICAgICAgY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQgPSAq
c3RhdGljX2Nhc3Q8Y29uc3QgV2ViR2VzdHVyZUV2ZW50Kj4oJmV2ZW50KTsKLSAgICAgICAgbV9p
bnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbEJ5KEludFBvaW50KGdlc3R1cmVFdmVudC54LCBnZXN0
dXJlRXZlbnQueSksCisgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxCeShXZWJQ
b2ludChnZXN0dXJlRXZlbnQueCwgZ2VzdHVyZUV2ZW50LnkpLAogICAgICAgICAgICAgSW50U2l6
ZSgtZ2VzdHVyZUV2ZW50LmRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRhWCwgLWdlc3R1cmVFdmVudC5k
YXRhLnNjcm9sbFVwZGF0ZS5kZWx0YVkpKTsKICAgICAgICAgcmV0dXJuIERpZEhhbmRsZTsKICAg
ICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVu
ZCkgewpAQCAtMjEwLDcgKzE4NSw3IEBAIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpF
dmVudERpc3Bvc2l0aW9uIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoCiAgICAgfSBl
bHNlIGlmIChldmVudC50eXBlID09IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVQaW5jaFVwZGF0ZSkg
ewogICAgICAgICBBU1NFUlQobV9leHBlY3RQaW5jaFVwZGF0ZUVuZCk7CiAgICAgICAgIGNvbnN0
IFdlYkdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdlYkdl
c3R1cmVFdmVudCo+KCZldmVudCk7Ci0gICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5waW5j
aEdlc3R1cmVVcGRhdGUoZ2VzdHVyZUV2ZW50LmRhdGEucGluY2hVcGRhdGUuc2NhbGUsIEludFBv
aW50KGdlc3R1cmVFdmVudC54LCBnZXN0dXJlRXZlbnQueSkpOworICAgICAgICBtX2lucHV0SGFu
ZGxlckNsaWVudC0+cGluY2hHZXN0dXJlVXBkYXRlKGdlc3R1cmVFdmVudC5kYXRhLnBpbmNoVXBk
YXRlLnNjYWxlLCBXZWJQb2ludChnZXN0dXJlRXZlbnQueCwgZ2VzdHVyZUV2ZW50LnkpKTsKICAg
ICAgICAgcmV0dXJuIERpZEhhbmRsZTsKICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT0gV2Vi
SW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQpIHsKICAgICAgICAgY29uc3QgV2ViR2VzdHVy
ZUV2ZW50JiBnZXN0dXJlRXZlbnQgPSAqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViR2VzdHVyZUV2ZW50
Kj4oJmV2ZW50KTsKQEAgLTIyNyw5ICsyMDIsOSBAQCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
SW1wbDo6RXZlbnREaXNwb3NpdGlvbiBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aAog
CiBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6RXZlbnREaXNwb3NpdGlvbiBXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlR2VzdHVyZUZsaW5nKGNvbnN0IFdlYkdlc3R1
cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogewotICAgIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3Jv
bGxTdGF0dXMgc2Nyb2xsU3RhdHVzID0gbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbEJlZ2lu
KEludFBvaW50KGdlc3R1cmVFdmVudC54LCBnZXN0dXJlRXZlbnQueSksIENDSW5wdXRIYW5kbGVy
Q2xpZW50OjpHZXN0dXJlKTsKKyAgICBXZWJJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1
cyBzY3JvbGxTdGF0dXMgPSBtX2lucHV0SGFuZGxlckNsaWVudC0+c2Nyb2xsQmVnaW4oV2ViUG9p
bnQoZ2VzdHVyZUV2ZW50LngsIGdlc3R1cmVFdmVudC55KSwgV2ViSW5wdXRIYW5kbGVyQ2xpZW50
OjpTY3JvbGxJbnB1dFR5cGVHZXN0dXJlKTsKICAgICBzd2l0Y2ggKHNjcm9sbFN0YXR1cykgewot
ICAgIGNhc2UgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQ6IHsKKyAgICBjYXNl
IFdlYklucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVzU3RhcnRlZDogewogICAgICAgICBt
X3doZWVsRmxpbmdDdXJ2ZSA9IFBsYXRmb3JtR2VzdHVyZUN1cnZlRmFjdG9yeTo6Z2V0KCktPmNy
ZWF0ZUN1cnZlKGdlc3R1cmVFdmVudC5kYXRhLmZsaW5nU3RhcnQuc291cmNlRGV2aWNlLCBGbG9h
dFBvaW50KGdlc3R1cmVFdmVudC5kYXRhLmZsaW5nU3RhcnQudmVsb2NpdHlYLCBnZXN0dXJlRXZl
bnQuZGF0YS5mbGluZ1N0YXJ0LnZlbG9jaXR5WSkpOwogICAgICAgICBUUkFDRV9FVkVOVF9BU1lO
Q19CRUdJTjEoImNjIiwgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5kbGVHZXN0
dXJlRmxpbmc6OnN0YXJ0ZWQiLCB0aGlzLCAiY3VydmUiLCBtX3doZWVsRmxpbmdDdXJ2ZS0+ZGVi
dWdOYW1lKCkpOwogICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLmRlbHRhID0gV2ViRmxv
YXRQb2ludChnZXN0dXJlRXZlbnQuZGF0YS5mbGluZ1N0YXJ0LnZlbG9jaXR5WCwgZ2VzdHVyZUV2
ZW50LmRhdGEuZmxpbmdTdGFydC52ZWxvY2l0eVkpOwpAQCAtMjQwLDExICsyMTUsMTEgQEAgV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlzcG9zaXRpb24gV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGw6OmgKICAgICAgICAgbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjaGVk
dWxlQW5pbWF0aW9uKCk7CiAgICAgICAgIHJldHVybiBEaWRIYW5kbGU7CiAgICAgfQotICAgIGNh
c2UgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbE9uTWFpblRocmVhZDogeworICAgIGNhc2Ug
V2ViSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXNPbk1haW5UaHJlYWQ6IHsKICAgICAg
ICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoImNjIiwgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsOjpoYW5kbGVHZXN0dXJlRmxpbmc6OnNjcm9sbE9uTWFpblRocmVhZCIpOwogICAgICAgICBy
ZXR1cm4gRGlkTm90SGFuZGxlOwogICAgIH0KLSAgICBjYXNlIENDSW5wdXRIYW5kbGVyQ2xpZW50
OjpTY3JvbGxJZ25vcmVkOiB7CisgICAgY2FzZSBXZWJJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9s
bFN0YXR1c0lnbm9yZWQ6IHsKICAgICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoImNjIiwgIldl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5kbGVHZXN0dXJlRmxpbmc6Omlnbm9yZWQi
KTsKICAgICAgICAgLy8gV2Ugc3RpbGwgcGFzcyB0aGUgY3VydmUgdG8gdGhlIG1haW4gdGhyZWFk
IGlmIHRoZXJlJ3Mgbm90aGluZyBzY3JvbGxhYmxlLCBpbiBjYXNlIHNvbWV0aGluZwogICAgICAg
ICAvLyByZWdpc3RlcnMgYSBoYW5kbGVyIGJlZm9yZSB0aGUgY3VydmUgaXMgb3Zlci4KQEAgLTI1
NCwxMCArMjI5LDE2IEBAIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpFdmVudERpc3Bv
c2l0aW9uIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoCiAgICAgcmV0dXJuIERpZE5v
dEhhbmRsZTsKIH0KIAotaW50IFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjppZGVudGlm
aWVyKCkgY29uc3QKK3ZvaWQgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmJpbmRUb0Ns
aWVudChXZWJJbnB1dEhhbmRsZXJDbGllbnQqIGNsaWVudCkKIHsKLSAgICBBU1NFUlQoQ0NQcm94
eTo6aXNJbXBsVGhyZWFkKCkpOwotICAgIHJldHVybiBtX2lkZW50aWZpZXI7CisgICAgQVNTRVJU
KCFtX2lucHV0SGFuZGxlckNsaWVudCk7CisKKyAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgiY2Mi
LCAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmJpbmRUb0NsaWVudCIpOworICAgIGlm
ICghc19jb21wb3NpdG9ycykKKyAgICAgICAgc19jb21wb3NpdG9ycyA9IG5ldyBIYXNoU2V0PFdl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsKj47CisgICAgc19jb21wb3NpdG9ycy0+YWRkKHRo
aXMpOworCisgICAgbV9pbnB1dEhhbmRsZXJDbGllbnQgPSBjbGllbnQ7CiB9CiAKIHZvaWQgV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmFuaW1hdGUoZG91YmxlIG1vbm90b25pY1RpbWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGwuaAppbmRleCA5NTc4YjVjZmRlMTc2MDA4NTkyOTQ3MTYwN2IzNTlj
YzlkNWNlMWQ5Li5mYTgxZGU5NDUyN2NhZDllMmNhYWNiZDVhOWQ0YTg3M2IzOTZjZWYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsLmgKQEAgLTI2LDExICsyNiwxMSBAQAogI2lmbmRlZiBXZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbF9oCiAjZGVmaW5lIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsX2gKIAotI2luY2x1ZGUgIkNDSW5wdXRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1H
ZXN0dXJlQ3VydmVUYXJnZXQuaCIKICNpbmNsdWRlICJXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1l
dGVycy5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXIuaCIKICNpbmNsdWRl
ICJXZWJJbnB1dEV2ZW50LmgiCisjaW5jbHVkZSA8cHVibGljL1dlYklucHV0SGFuZGxlci5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAj
aW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNDAsNyArNDAsNiBAQCBjbGFzcyBNdXRleDsKIH0K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgQ0NJbnB1dEhhbmRsZXJDbGllbnQ7CiBjbGFz
cyBJbnRQb2ludDsKIGNsYXNzIFBsYXRmb3JtR2VzdHVyZUN1cnZlOwogfQpAQCAtNDksMjcgKzQ4
LDI4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVyQ2xpZW50OwogCi1jbGFzcyBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbCA6IHB1Ymxp
YyBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyLCBwdWJsaWMgV2ViQ29yZTo6Q0NJbnB1dEhhbmRs
ZXIsIHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCB7CitjbGFzcyBX
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbCA6IHB1YmxpYyBXZWJDb21wb3NpdG9ySW5wdXRI
YW5kbGVyLCBwdWJsaWMgV2ViSW5wdXRIYW5kbGVyLCBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1H
ZXN0dXJlQ3VydmVUYXJnZXQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxXZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbD4gY3JlYXRlKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVy
Q2xpZW50Kik7CiAgICAgc3RhdGljIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXIqIGZyb21JZGVu
dGlmaWVyKGludCBpZGVudGlmaWVyKTsKIAorICAgIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsKCk7CiAgICAgdmlydHVhbCB+V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwoKTsKIAog
ICAgIC8vIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXIgaW1wbGVtZW50YXRpb24uCiAgICAgdmly
dHVhbCB2b2lkIHNldENsaWVudChXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50Kik7CiAg
ICAgdmlydHVhbCB2b2lkIGhhbmRsZUlucHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYpOwog
Ci0gICAgLy8gV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXIgaW1wbGVtZW50YXRpb24uCi0gICAgdmly
dHVhbCBpbnQgaWRlbnRpZmllcigpIGNvbnN0OworICAgIC8vIFdlYklucHV0SGFuZGxlciBpbXBs
ZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgYmluZFRvQ2xpZW50KFdlYklucHV0SGFuZGxl
ckNsaWVudCopOwogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRvdWJsZSBtb25vdG9uaWNUaW1l
KTsKIAogICAgIC8vIFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0IGltcGxlbWVu
dGF0aW9uLgogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYpOwogCisgICAgaW50IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7
IH0KKwogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bChXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudCopOwogCiAgICAgZW51bSBFdmVudERpc3Bv
c2l0aW9uIHsgRGlkSGFuZGxlLCBEaWROb3RIYW5kbGUsIERyb3BFdmVudCB9OwogICAgIC8vIFRo
aXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSBpbnB1dCBldmVudCBhbmQgZGV0ZXJtaW5lcyB0aGUg
ZGlzcG9zaXRpb24sIGJ1dCBkb2VzIG5vdCBtYWtlCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6
CiAKICAgICBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50KiBtX2NsaWVudDsKICAgICBp
bnQgbV9pZGVudGlmaWVyOwotICAgIFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50KiBtX2lu
cHV0SGFuZGxlckNsaWVudDsKKyAgICBXZWJJbnB1dEhhbmRsZXJDbGllbnQqIG1faW5wdXRIYW5k
bGVyQ2xpZW50OwogCiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgbV9leHBlY3RTY3JvbGxVcGRh
dGVFbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRy
ZWVWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVW
aWV3SW1wbC5jcHAKaW5kZXggODcwYjhmMWI2YzEwZWFiYmVlYjI4MzMwMDNlYjNmM2NiMmJkMWI4
My4uYmI4OThjOTY2OTI5ZTM0YWViMTVmN2EzZTY2ZjgwMTFjZjMxNzE2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcApAQCAt
MjcsMTAgKzI3LDEzIEBACiAjaW5jbHVkZSAiV2ViTGF5ZXJUcmVlVmlld0ltcGwuaCIKIAogI2lu
Y2x1ZGUgIkNDRm9udEF0bGFzLmgiCisjaW5jbHVkZSAiQ0NJbnB1dEhhbmRsZXIuaCIKICNpbmNs
dWRlICJDQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCiAjaW5j
bHVkZSAiV2ViTGF5ZXJJbXBsLmgiCisjaW5jbHVkZSAiV2ViVG9DQ0lucHV0SGFuZGxlckFkYXB0
ZXIuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KKyNpbmNsdWRl
IDxwdWJsaWMvV2ViSW5wdXRIYW5kbGVyLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyLmg+
CiAjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyVHJlZVZpZXcuaD4KICNpbmNsdWRlIDxwdWJsaWMv
V2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oPgpAQCAtOTEsMTEgKzk0LDYgQEAgdm9pZCBXZWJMYXll
clRyZWVWaWV3SW1wbDo6Y2xlYXJSb290TGF5ZXIoKQogICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0
Um9vdExheWVyKFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4oKSk7CiB9CiAKLWludCBXZWJMYXll
clRyZWVWaWV3SW1wbDo6Y29tcG9zaXRvcklkZW50aWZpZXIoKQotewotICAgIHJldHVybiBtX2xh
eWVyVHJlZUhvc3QtPmNvbXBvc2l0b3JJZGVudGlmaWVyKCk7Ci19Ci0KIHZvaWQgV2ViTGF5ZXJU
cmVlVmlld0ltcGw6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBXZWJTaXplJiBsYXlvdXRWaWV3cG9y
dFNpemUsIGNvbnN0IFdlYlNpemUmIGRldmljZVZpZXdwb3J0U2l6ZSkKIHsKICAgICBpZiAoIWRl
dmljZVZpZXdwb3J0U2l6ZS5pc0VtcHR5KCkpCkBAIC0yNDgsNiArMjQ2LDE0IEBAIHZvaWQgV2Vi
TGF5ZXJUcmVlVmlld0ltcGw6OmRpZFJlY3JlYXRlT3V0cHV0U3VyZmFjZShib29sIHN1Y2Nlc3Mp
CiAgICAgbV9jbGllbnQtPmRpZFJlY3JlYXRlT3V0cHV0U3VyZmFjZShzdWNjZXNzKTsKIH0KIAor
UGFzc093blB0cjxDQ0lucHV0SGFuZGxlcj4gV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmNyZWF0ZUlu
cHV0SGFuZGxlcigpCit7CisgICAgT3duUHRyPFdlYklucHV0SGFuZGxlcj4gaGFuZGxlciA9IGFk
b3B0UHRyKG1fY2xpZW50LT5jcmVhdGVJbnB1dEhhbmRsZXIoKSk7CisgICAgaWYgKGhhbmRsZXIp
CisgICAgICAgIHJldHVybiBXZWJUb0NDSW5wdXRIYW5kbGVyQWRhcHRlcjo6Y3JlYXRlKGhhbmRs
ZXIucmVsZWFzZSgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogdm9pZCBXZWJMYXllclRy
ZWVWaWV3SW1wbDo6d2lsbENvbW1pdCgpCiB7CiAgICAgbV9jbGllbnQtPndpbGxDb21taXQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5o
CmluZGV4IDU5Mzk2MmEwODZmMDUzYWY0ODAzMjU2M2I1YjViZDQzZWIwMmVjZTYuLmExZGJkNzQw
NDZlZDAyY2NmODFhM2IyZjkzNDM0YmQ4NWE3Njk4OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaApAQCAtNTEsNyArNTEsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFN1cmZhY2VSZWFkeSgpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRSb290TGF5ZXIoY29uc3QgV2ViTGF5ZXImKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJSb290TGF5ZXIoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGlu
dCBjb21wb3NpdG9ySWRlbnRpZmllcigpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRW
aWV3cG9ydFNpemUoY29uc3QgV2ViU2l6ZSYgbGF5b3V0Vmlld3BvcnRTaXplLCBjb25zdCBXZWJT
aXplJiBkZXZpY2VWaWV3cG9ydFNpemUgPSBXZWJTaXplKCkpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgV2ViU2l6ZSBsYXlvdXRWaWV3cG9ydFNpemUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0
dWFsIFdlYlNpemUgZGV2aWNlVmlld3BvcnRTaXplKCkgY29uc3QgT1ZFUlJJREU7CkBAIC04MSw2
ICs4MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgcGFnZVNjYWxlKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2U+
IGNyZWF0ZU91dHB1dFN1cmZhY2UoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
cmVhdGVPdXRwdXRTdXJmYWNlKGJvb2wgc3VjY2VzcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQ
YXNzT3duUHRyPFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyPiBjcmVhdGVJbnB1dEhhbmRsZXIoKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENvbW1pdCgpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRDb21taXQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29t
bWl0QW5kRHJhd0ZyYW1lKCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJUb0NDSW5wdXRIYW5kbGVyQWRhcHRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJUb0NDSW5wdXRIYW5kbGVyQWRhcHRlci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzkwNDljOTdhMmQ5ZGNhM2ZkOGI2Mzk4Njk4NzgyZmIyYjIxYmNjYgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRvQ0NJbnB1dEhhbmRsZXJBZGFwdGVy
LmNwcApAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaW5jbHVkZSAiV2ViVG9DQ0lucHV0SGFuZGxlckFkYXB0ZXIuaCIKKworI2luY2x1ZGUg
PHB1YmxpYy9XZWJJbnB1dEhhbmRsZXJDbGllbnQuaD4KKworI2RlZmluZSBDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKHdlYmtpdF9uYW1lLCB3ZWJjb3JlX25hbWUpIFwKKyAgICBDT01QSUxF
X0FTU0VSVChpbnQoV2ViS2l0Ojp3ZWJraXRfbmFtZSkgPT0gaW50KFdlYkNvcmU6OndlYmNvcmVf
bmFtZSksIG1pc21hdGNoaW5nX2VudW1zKQorCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KFdlYklucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVzT25NYWluVGhyZWFkLCBDQ0lucHV0
SGFuZGxlckNsaWVudDo6U2Nyb2xsT25NYWluVGhyZWFkKTsKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oV2ViSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXNTdGFydGVkLCBDQ0lu
cHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKFdlYklucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVzSWdub3JlZCwgQ0NJbnB1
dEhhbmRsZXJDbGllbnQ6OlNjcm9sbElnbm9yZWQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShXZWJJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbElucHV0VHlwZUdlc3R1cmUsIENDSW5w
dXRIYW5kbGVyQ2xpZW50OjpHZXN0dXJlKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
V2ViSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxJbnB1dFR5cGVXaGVlbCwgQ0NJbnB1dEhhbmRs
ZXJDbGllbnQ6OldoZWVsKTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NPd25QdHI8V2Vi
VG9DQ0lucHV0SGFuZGxlckFkYXB0ZXI+IFdlYlRvQ0NJbnB1dEhhbmRsZXJBZGFwdGVyOjpjcmVh
dGUoUGFzc093blB0cjxXZWJJbnB1dEhhbmRsZXI+IGhhbmRsZXIpCit7CisgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBXZWJUb0NDSW5wdXRIYW5kbGVyQWRhcHRlcihoYW5kbGVyKSk7Cit9CisKK1dl
YlRvQ0NJbnB1dEhhbmRsZXJBZGFwdGVyOjpXZWJUb0NDSW5wdXRIYW5kbGVyQWRhcHRlcihQYXNz
T3duUHRyPFdlYklucHV0SGFuZGxlcj4gaGFuZGxlcikKKyAgICA6IG1faGFuZGxlcihoYW5kbGVy
KQoreworfQorCitXZWJUb0NDSW5wdXRIYW5kbGVyQWRhcHRlcjo6fldlYlRvQ0NJbnB1dEhhbmRs
ZXJBZGFwdGVyKCkKK3sKK30KKworY2xhc3MgV2ViVG9DQ0lucHV0SGFuZGxlckFkYXB0ZXI6OkNs
aWVudEFkYXB0ZXIgOiBwdWJsaWMgV2ViSW5wdXRIYW5kbGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAg
ICBDbGllbnRBZGFwdGVyKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50KiBjbGllbnQpCisg
ICAgICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5D
bGllbnRBZGFwdGVyKCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCBTY3JvbGxTdGF0dXMg
c2Nyb2xsQmVnaW4oV2ViUG9pbnQgcG9pbnQsIFNjcm9sbElucHV0VHlwZSB0eXBlKSBPVkVSUklE
RQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYklucHV0SGFuZGxlckNsaWVu
dDo6U2Nyb2xsU3RhdHVzPihtX2NsaWVudC0+c2Nyb2xsQmVnaW4ocG9pbnQsIHN0YXRpY19jYXN0
PFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxJbnB1dFR5cGU+KHR5cGUpKSk7
CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KFdlYlBvaW50IHBvaW50LCBXZWJT
aXplIG9mZnNldCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIG1fY2xpZW50LT5zY3JvbGxCeShw
b2ludCwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsRW5kKCkgT1ZF
UlJJREUKKyAgICB7CisgICAgICAgIG1fY2xpZW50LT5zY3JvbGxFbmQoKTsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlQmVnaW4oKSBPVkVSUklERQorICAgIHsKKyAgICAg
ICAgbV9jbGllbnQtPnBpbmNoR2VzdHVyZUJlZ2luKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2
b2lkIHBpbmNoR2VzdHVyZVVwZGF0ZShmbG9hdCBtYWduaWZ5RGVsdGEsIFdlYlBvaW50IGFuY2hv
cikgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIG1fY2xpZW50LT5waW5jaEdlc3R1cmVVcGRhdGUo
bWFnbmlmeURlbHRhLCBhbmNob3IpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdl
c3R1cmVFbmQoKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgbV9jbGllbnQtPnBpbmNoR2VzdHVy
ZUVuZCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlv
bihXZWJTaXplIHRhcmdldFBvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGFuY2hvclBvaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbG9hdCBwYWdlU2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvdWJsZSBzdGFydFRpbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkdXJhdGlvbikgT1ZFUlJJREUKKyAgICB7CisgICAg
ICAgIG1fY2xpZW50LT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbih0YXJnZXRQb3NpdGlvbiwgYW5j
aG9yUG9pbnQsIHBhZ2VTY2FsZSwgc3RhcnRUaW1lLCBkdXJhdGlvbik7CisgICAgfQorCisgICAg
dmlydHVhbCB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAg
IG1fY2xpZW50LT5zY2hlZHVsZUFuaW1hdGlvbigpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBX
ZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudCogbV9jbGllbnQ7Cit9OworCisKK3ZvaWQgV2Vi
VG9DQ0lucHV0SGFuZGxlckFkYXB0ZXI6OmJpbmRUb0NsaWVudChXZWJDb3JlOjpDQ0lucHV0SGFu
ZGxlckNsaWVudCogY2xpZW50KQoreworICAgIG1fY2xpZW50QWRhcHRlciA9IGFkb3B0UHRyKG5l
dyBDbGllbnRBZGFwdGVyKGNsaWVudCkpOworICAgIG1faGFuZGxlci0+YmluZFRvQ2xpZW50KG1f
Y2xpZW50QWRhcHRlci5nZXQoKSk7Cit9CisKK3ZvaWQgV2ViVG9DQ0lucHV0SGFuZGxlckFkYXB0
ZXI6OmFuaW1hdGUoZG91YmxlIG1vbm90b25pY1RpbWUpCit7CisgICAgbV9oYW5kbGVyLT5hbmlt
YXRlKG1vbm90b25pY1RpbWUpOworfQorCit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlRvQ0NJbnB1dEhhbmRsZXJBZGFwdGVyLmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJUb0NDSW5wdXRIYW5kbGVyQWRhcHRlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4
OTU1MzU1OTk5ZWViN2ViMjVkNDZkMWFmMzFhMTJhYmM3MjlmN2IKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUb0NDSW5wdXRIYW5kbGVyQWRhcHRlci5o
CkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVG9DQ0lucHV0SGFu
ZGxlckFkYXB0ZXJfaAorI2RlZmluZSBXZWJUb0NDSW5wdXRIYW5kbGVyQWRhcHRlcl9oCisKKyNp
bmNsdWRlICJDQ0lucHV0SGFuZGxlci5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJJbnB1dEhhbmRs
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlRvQ0NJbnB1dEhhbmRsZXJBZGFw
dGVyIDogcHVibGljIFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc093blB0cjxXZWJUb0NDSW5wdXRIYW5kbGVyQWRhcHRlcj4gY3JlYXRlKFBhc3NPd25Q
dHI8V2ViSW5wdXRIYW5kbGVyPik7CisgICAgdmlydHVhbCB+V2ViVG9DQ0lucHV0SGFuZGxlckFk
YXB0ZXIoKTsgCisKKyAgICAvLyBXZWJDb3JlOjpDQ0lucHV0SGFuZGxlciBpbXBsZW1lbnRhdGlv
bi4KKyAgICB2aXJ0dWFsIHZvaWQgYmluZFRvQ2xpZW50KFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVy
Q2xpZW50KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFuaW1hdGUoZG91YmxlIG1vbm90
b25pY1RpbWUpIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFdlYlRvQ0NJbnB1
dEhhbmRsZXJBZGFwdGVyKFBhc3NPd25QdHI8V2ViSW5wdXRIYW5kbGVyPik7CisKKyAgICBjbGFz
cyBDbGllbnRBZGFwdGVyOworICAgIE93blB0cjxDbGllbnRBZGFwdGVyPiBtX2NsaWVudEFkYXB0
ZXI7CisgICAgT3duUHRyPFdlYklucHV0SGFuZGxlcj4gbV9oYW5kbGVyOworfTsKKworfQorCisj
ZW5kaWYgLy8gV2ViVG9DQ0lucHV0SGFuZGxlckFkYXB0ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDhkNTNlOTUzMDQ1N2NkYjFhZTM0ZWI2Y2Ri
YTY3YmUxYWZjOGJhZWUuLmM5MzU3ODcyOGQyYTZlYjA2OTM2MmFiZjNkM2FlYTEzYTcxOGU4ODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTEyNCw2
ICsxMjQsNyBAQAogI2luY2x1ZGUgIldlYkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKICNpbmNsdWRl
ICJXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYkF1dG9maWxs
Q2xpZW50LmgiCisjaW5jbHVkZSAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuaCIKICNp
bmNsdWRlICJXZWJEZXZUb29sc0FnZW50SW1wbC5oIgogI2luY2x1ZGUgIldlYkRldlRvb2xzQWdl
bnRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCkBAIC00MTUsNiArNDE2LDcg
QEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCkKICAgICAs
IG1fcmVjcmVhdGluZ0dyYXBoaWNzQ29udGV4dChmYWxzZSkKICAgICAsIG1fY29tcG9zaXRvclN1
cmZhY2VSZWFkeShmYWxzZSkKICAgICAsIG1fZGV2aWNlU2NhbGVJbkNvbXBvc2l0b3IoMSkKKyAg
ICAsIG1faW5wdXRIYW5kbGVySWRlbnRpZmllcigtMSkKICNlbmRpZgogI2lmIEVOQUJMRShJTlBV
VF9TUEVFQ0gpCiAgICAgLCBtX3NwZWVjaElucHV0Q2xpZW50KFNwZWVjaElucHV0Q2xpZW50SW1w
bDo6Y3JlYXRlKGNsaWVudCkpCkBAIC0zNzcyLDcgKzM3NzQsNyBAQCB2b2lkIFdlYlZpZXdJbXBs
OjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgICAg
IG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlID0gdHJ1ZTsKICAgICAgICAgdXBkYXRl
TGF5ZXJUcmVlVmlld3BvcnQoKTsKIAotICAgICAgICBtX2NsaWVudC0+ZGlkQWN0aXZhdGVDb21w
b3NpdG9yKG1fbGF5ZXJUcmVlVmlldy0+Y29tcG9zaXRvcklkZW50aWZpZXIoKSk7CisgICAgICAg
IG1fY2xpZW50LT5kaWRBY3RpdmF0ZUNvbXBvc2l0b3IobV9pbnB1dEhhbmRsZXJJZGVudGlmaWVy
KTsKICAgICB9IGVsc2UgewogICAgICAgICBUUkFDRV9FVkVOVDAoIndlYmtpdCIsICJXZWJWaWV3
SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKHRydWUpIik7CiAKQEAgLTM4
MDYsNyArMzgwOCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAgICAgICAgICBtX2xheWVyVHJlZVZpZXct
PnNldFN1cmZhY2VSZWFkeSgpOwogICAgICAgICAgICAgbV9sYXllclRyZWVWaWV3LT5zZXRIYXNU
cmFuc3BhcmVudEJhY2tncm91bmQoaXNUcmFuc3BhcmVudCgpKTsKICAgICAgICAgICAgIHVwZGF0
ZUxheWVyVHJlZVZpZXdwb3J0KCk7Ci0gICAgICAgICAgICBtX2NsaWVudC0+ZGlkQWN0aXZhdGVD
b21wb3NpdG9yKG1fbGF5ZXJUcmVlVmlldy0+Y29tcG9zaXRvcklkZW50aWZpZXIoKSk7CisgICAg
ICAgICAgICBtX2NsaWVudC0+ZGlkQWN0aXZhdGVDb21wb3NpdG9yKG1faW5wdXRIYW5kbGVySWRl
bnRpZmllcik7CiAgICAgICAgICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSA9
IHRydWU7CiAgICAgICAgICAgICBtX2NvbXBvc2l0b3JDcmVhdGlvbkZhaWxlZCA9IGZhbHNlOwog
ICAgICAgICAgICAgaWYgKG1fcGFnZU92ZXJsYXlzKQpAQCAtMzg5Miw2ICszODk0LDEzIEBAIFdl
YkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlKiBXZWJWaWV3SW1wbDo6Y3JlYXRlT3V0cHV0U3VyZmFj
ZSgpCiAgICAgcmV0dXJuIG1fY2xpZW50LT5jcmVhdGVPdXRwdXRTdXJmYWNlKCk7CiB9CiAKK1dl
YklucHV0SGFuZGxlciogV2ViVmlld0ltcGw6OmNyZWF0ZUlucHV0SGFuZGxlcigpCit7CisgICAg
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwqIGhhbmRsZXIgPSBuZXcgV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGwoKTsKKyAgICBtX2lucHV0SGFuZGxlcklkZW50aWZpZXIgPSBoYW5k
bGVyLT5pZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIGhhbmRsZXI7Cit9CisKIHZvaWQgV2ViVmll
d0ltcGw6OmFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgV2ViU2l6ZSYgc2Nyb2xsRGVsdGEsIGZs
b2F0IHBhZ2VTY2FsZURlbHRhKQogewogICAgIGlmICghbWFpbkZyYW1lSW1wbCgpIHx8ICFtYWlu
RnJhbWVJbXBsKCktPmZyYW1lVmlldygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmgKaW5kZXggMzY3OWJlNDM4ODA4YWVkNDI4MjFlYzZhMDNhMWI0NjE2N2Q1Zjg1Yy4u
Y2U1NjU3YTJiNWVlMDA4ZjI2ZDAxOWE2NjE4YmM4NWMxODdhZDkwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC0zMTQsNiArMzE0LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWJpbmRHcmFwaGljc0NvbnRleHQoYm9vbCBzdWNjZXNzKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlKiBjcmVhdGVP
dXRwdXRTdXJmYWNlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlT3V0
cHV0U3VyZmFjZShib29sIHN1Y2Nlc3MpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViSW5wdXRI
YW5kbGVyKiBjcmVhdGVJbnB1dEhhbmRsZXIoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbENvbW1pdCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXQoKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCk7CkBAIC04MjgsNiArODI5LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1fcmVjcmVhdGluZ0dyYXBoaWNzQ29udGV4dDsKICAgICBib29sIG1fY29t
cG9zaXRvclN1cmZhY2VSZWFkeTsKICAgICBmbG9hdCBtX2RldmljZVNjYWxlSW5Db21wb3NpdG9y
OworICAgIGludCBtX2lucHV0SGFuZGxlcklkZW50aWZpZXI7CiAjZW5kaWYKICAgICBzdGF0aWMg
Y29uc3QgV2ViSW5wdXRFdmVudCogbV9jdXJyZW50SW5wdXRFdmVudDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZGVkVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGhyZWFkZWRUZXN0LmNwcAppbmRleCBhZWIzNWE1MTRl
NjI0MzlhYjE2NmU0MGRhNGI1NTQ2YmJhMDA1M2M2Li5hNzRlOGUwM2E2ZDExNDU1YThkNGU1ZDQw
OGFmNzNjYTkxMzg0MmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDVGhyZWFkZWRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
VGhyZWFkZWRUZXN0LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ0NBY3RpdmVB
bmltYXRpb24uaCIKICNpbmNsdWRlICJDQ0FuaW1hdGlvblRlc3RDb21tb24uaCIKKyNpbmNsdWRl
ICJDQ0lucHV0SGFuZGxlci5oIgogI2luY2x1ZGUgIkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJDQ0xheWVyVHJlZUhvc3RJ
bXBsLmgiCkBAIC0yMjcsNiArMjI4LDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fdGVz
dEhvb2tzLT5jcmVhdGVPdXRwdXRTdXJmYWNlKCk7CiAgICAgfQogCisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY3JlYXRlT3V0cHV0U3VyZmFjZShib29sIHN1Y2NlZWRlZCkgT1ZFUlJJREUKKyAgICB7
CisgICAgICAgIG1fdGVzdEhvb2tzLT5kaWRSZWNyZWF0ZU91dHB1dFN1cmZhY2Uoc3VjY2VlZGVk
KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NJbnB1dEhhbmRsZXI+IGNyZWF0
ZUlucHV0SGFuZGxlcigpIE9WRVJSSURFCisgICAgeworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENvbW1pdCgpIE9WRVJSSURFCiAgICAgewog
ICAgIH0KQEAgLTI0NSwxMSArMjU2LDYgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVPdXRwdXRTdXJmYWNlKGJvb2wgc3VjY2VlZGVkKSBPVkVS
UklERQotICAgIHsKLSAgICAgICAgbV90ZXN0SG9va3MtPmRpZFJlY3JlYXRlT3V0cHV0U3VyZmFj
ZShzdWNjZWVkZWQpOwotICAgIH0KLQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0
ZSgpIE9WRVJSSURFCiAgICAgewogICAgICAgICBtX3Rlc3RIb29rcy0+c2NoZWR1bGVDb21wb3Np
dGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZUNDTGF5
ZXJUcmVlSG9zdENsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlQ0NM
YXllclRyZWVIb3N0Q2xpZW50LmgKaW5kZXggOTAwMzA4OGE1ODQ2ODBmYmVkZGMwOGE0N2FhZGVm
YmM3Zjk3MDUwNC4uZGM1YjAyNzYzMDEyZTYxMzJhNWJlZTVhMmI3MzYwYTdhYzM2Zjk0YyAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlQ0NMYXllclRy
ZWVIb3N0Q2xpZW50LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgog
CisjaW5jbHVkZSAiQ0NJbnB1dEhhbmRsZXIuaCIKICNpbmNsdWRlICJDQ0xheWVyVHJlZUhvc3Qu
aCIKICNpbmNsdWRlICJDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5j
bHVkZSAiRmFrZVdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlLmgiCkBAIC00Nyw2ICs0OCw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFdlYktpdDo6RmFrZVdlYkNvbXBvc2l0b3JPdXRwdXRT
dXJmYWNlOjpjcmVhdGUoV2ViS2l0OjpDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNE
OjpjcmVhdGUoYXR0cnMpKTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlT3V0
cHV0U3VyZmFjZShib29sIHN1Y2Nlc3MpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgUGFzc093
blB0cjxDQ0lucHV0SGFuZGxlcj4gY3JlYXRlSW5wdXRIYW5kbGVyKCkgT1ZFUlJJREUgeyByZXR1
cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29tbWl0KCkgT1ZFUlJJREUgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdCgpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKSBPVkVSUklERSB7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGxUZXN0LmNwcAppbmRleCAxNmM2NTY3MGUzZDgzMGY3MTI3ZDU5NmFlNTFkYjhj
MzllMjFjOTlkLi42ZWQyMTUxYWI2NjY2NDdkMWM4NmQ1MmFkZWVlMzQyMWFhNmNhZTUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwCkBAIC0yNyw4ICsyNyw2IEBACiAKICNp
bmNsdWRlICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oIgogCi0jaW5jbHVkZSAiQ0NJ
bnB1dEhhbmRsZXIuaCIKLSNpbmNsdWRlICJDQ1NpbmdsZVRocmVhZFByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViQ29tcG9zaXRvckluaXRpYWxpemVyLmgiCiAjaW5jbHVkZSAiV2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKQEAgLTM2LDYg
KzM0LDggQEAKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJD
b21wb3NpdG9yLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UG9pbnQuaD4KKyNpbmNsdWRl
IDxwdWJsaWMvV2ViSW5wdXRIYW5kbGVyLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYklucHV0SGFu
ZGxlckNsaWVudC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJQb2ludC5oPgogI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KIApAQCAtNDMsMjcgKzQzLDI3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CiAKIG5hbWVzcGFjZSB7CiAKLWNsYXNzIE1vY2tDQ0lucHV0SGFuZGxlckNsaWVudCA6IHB1Ymxp
YyBXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoTW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKK2NsYXNzIE1vY2tXZWJJbnB1dEhhbmRsZXJD
bGllbnQgOiBwdWJsaWMgV2ViSW5wdXRIYW5kbGVyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShNb2NrV2ViSW5wdXRIYW5kbGVyQ2xpZW50KTsKIHB1YmxpYzoKLSAgICBNb2NrQ0NJ
bnB1dEhhbmRsZXJDbGllbnQoKQorICAgIE1vY2tXZWJJbnB1dEhhbmRsZXJDbGllbnQoKQogICAg
IHsKICAgICB9Ci0gICAgdmlydHVhbCB+TW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KCkgeyB9Cisg
ICAgdmlydHVhbCB+TW9ja1dlYklucHV0SGFuZGxlckNsaWVudCgpIHsgfQogCiAKICAgICBNT0NL
X01FVEhPRDAocGluY2hHZXN0dXJlQmVnaW4sIHZvaWQoKSk7Ci0gICAgTU9DS19NRVRIT0QyKHBp
bmNoR2VzdHVyZVVwZGF0ZSwgdm9pZChmbG9hdCBtYWduaWZ5RGVsdGEsIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBhbmNob3IpKTsKKyAgICBNT0NLX01FVEhPRDIocGluY2hHZXN0dXJlVXBkYXRl
LCB2b2lkKGZsb2F0IG1hZ25pZnlEZWx0YSwgV2ViUG9pbnQgYW5jaG9yKSk7CiAgICAgTU9DS19N
RVRIT0QwKHBpbmNoR2VzdHVyZUVuZCwgdm9pZCgpKTsKIAogICAgIE1PQ0tfTUVUSE9EMChzY2hl
ZHVsZUFuaW1hdGlvbiwgdm9pZCgpKTsKIAotICAgIE1PQ0tfTUVUSE9EMihzY3JvbGxCZWdpbiwg
U2Nyb2xsU3RhdHVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6Q0NJbnB1dEhh
bmRsZXJDbGllbnQ6OlNjcm9sbElucHV0VHlwZSkpOwotICAgIE1PQ0tfTUVUSE9EMihzY3JvbGxC
eSwgdm9pZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUm
KSk7CisgICAgTU9DS19NRVRIT0QyKHNjcm9sbEJlZ2luLCBTY3JvbGxTdGF0dXMoV2ViUG9pbnQs
IFdlYklucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsSW5wdXRUeXBlKSk7CisgICAgTU9DS19NRVRI
T0QyKHNjcm9sbEJ5LCB2b2lkKFdlYlBvaW50LCBXZWJTaXplKSk7CiAgICAgTU9DS19NRVRIT0Qw
KHNjcm9sbEVuZCwgdm9pZCgpKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQ
YWdlU2NhbGVBbmltYXRpb24oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24s
CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKFdlYlNpemUgdGFyZ2V0
UG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
YW5jaG9yUG9pbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
b2F0IHBhZ2VTY2FsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG91YmxlIHN0YXJ0VGltZU1zLApAQCAtODcsMzggKzg3LDE0IEBAIHB1YmxpYzoKIAogfTsKIAot
VEVTVChXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbCwgZnJvbUlkZW50aWZpZXIpCi17Ci0g
ICAgV2ViS2l0VGVzdHM6OldlYkNvbXBvc2l0b3JJbml0aWFsaXplciBpbml0aWFsaXplcigwKTsK
LSAgICBXZWJDb3JlOjpEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgYWx3YXlzSW1wbFRocmVhZDsK
LQotICAgIC8vIEJlZm9yZSBjcmVhdGluZyBhbnkgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcnMs
IGxvb2t1cHMgZm9yIGFueSB2YWx1ZSBzaG91bGQgZmFpbCBhbmQgbm90IGNyYXNoLgotICAgIEVY
UEVDVF9FUSgwLCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyOjpmcm9tSWRlbnRpZmllcigyKSk7
Ci0gICAgRVhQRUNUX0VRKDAsIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXI6OmZyb21JZGVudGlm
aWVyKDApKTsKLSAgICBFWFBFQ1RfRVEoMCwgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcjo6ZnJv
bUlkZW50aWZpZXIoLTEpKTsKLQotICAgIGludCBjb21wb3NpdG9ySWRlbnRpZmllciA9IC0xOwot
ICAgIHsKLSAgICAgICAgT3duUHRyPFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsPiBpbnB1
dEhhbmRsZXIgPSBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6Y3JlYXRlKDApOwotICAg
ICAgICBjb21wb3NpdG9ySWRlbnRpZmllciA9IGlucHV0SGFuZGxlci0+aWRlbnRpZmllcigpOwot
ICAgICAgICAvLyBUaGUgY29tcG9zaXRvciB3ZSBqdXN0IGNyZWF0ZWQgc2hvdWxkIGJlIGxvY2F0
YWJsZS4KLSAgICAgICAgRVhQRUNUX0VRKGlucHV0SGFuZGxlci5nZXQoKSwgV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlcjo6ZnJvbUlkZW50aWZpZXIoY29tcG9zaXRvcklkZW50aWZpZXIpKTsKLQot
ICAgICAgICAvLyBCdXQgbm90aGluZyBlbHNlLgotICAgICAgICBFWFBFQ1RfRVEoMCwgV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlcjo6ZnJvbUlkZW50aWZpZXIoaW5wdXRIYW5kbGVyLT5pZGVudGlm
aWVyKCkgKyAxMCkpOwotICAgIH0KLQotICAgIC8vIEFmdGVyIHRoZSBjb21wb3NpdG9yIGlzIGRl
c3Ryb3llZCwgaXRzIGVudHJ5IHNob3VsZCBiZSByZW1vdmVkIGZyb20gdGhlIG1hcC4KLSAgICBF
WFBFQ1RfRVEoMCwgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcjo6ZnJvbUlkZW50aWZpZXIoY29t
cG9zaXRvcklkZW50aWZpZXIpKTsKLX0KLQogY2xhc3MgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckltcGxUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogcHVibGljOgogICAgIFdlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCgpCiAgICAgICAgIDogbV9pbml0aWFsaXplcigwKQog
ICAgICAgICAsIG1fZXhwZWN0ZWREaXNwb3NpdGlvbihEaWRIYW5kbGUpCiAgICAgewotICAgICAg
ICBtX2lucHV0SGFuZGxlciA9IFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpjcmVhdGUo
Jm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKKyAgICAgICAgbV9pbnB1dEhhbmRsZXIgPSBh
ZG9wdFB0cihuZXcgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwpOworICAgICAgICBtX2lu
cHV0SGFuZGxlci0+YmluZFRvQ2xpZW50KCZtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQpOwogICAg
ICAgICBtX2lucHV0SGFuZGxlci0+c2V0Q2xpZW50KCZtX21vY2tDbGllbnQpOwogICAgIH0KIApA
QCAtMTMyLDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICAvLyBvdXQgb2YgZ21vY2sgaXMgdGhlIGxp
bmUgbnVtYmVyIHRoYXQgc2V0IHRoZSBleHBlY3RhdGlvbi4KICNkZWZpbmUgVkVSSUZZX0FORF9S
RVNFVF9NT0NLUygpIGRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgeyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgICAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2Nr
Q0NJbnB1dEhhbmRsZXJDbGllbnQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlv
bnMoJm1fbW9ja0lucHV0SGFuZGxlckNsaWVudCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAogICAgICAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4
cGVjdGF0aW9ucygmbV9tb2NrQ2xpZW50KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgc3dpdGNoIChtX2V4cGVjdGVkRGlz
cG9zaXRpb24pIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGNhc2UgRGlkSGFu
ZGxlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMTU2LDEx
ICsxMzIsMTAgQEAgcHVibGljOgogICAgIH0gd2hpbGUgKDApCiAKIHByb3RlY3RlZDoKLSAgICBN
b2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQgbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQ7CisgICAg
TW9ja1dlYklucHV0SGFuZGxlckNsaWVudCBtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQ7CiAgICAg
T3duUHRyPFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsPiBtX2lucHV0SGFuZGxlcjsKICAg
ICBNb2NrV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckNsaWVudCBtX21vY2tDbGllbnQ7CiAgICAg
V2ViR2VzdHVyZUV2ZW50IGdlc3R1cmU7Ci0gICAgV2ViQ29yZTo6RGVidWdTY29wZWRTZXRJbXBs
VGhyZWFkIGFsd2F5c0ltcGxUaHJlYWQ7CiAgICAgV2ViS2l0VGVzdHM6OldlYkNvbXBvc2l0b3JJ
bml0aWFsaXplciBtX2luaXRpYWxpemVyOwogCiAgICAgZW51bSBFeHBlY3RlZERpc3Bvc2l0aW9u
IHsgRGlkSGFuZGxlLCBEaWROb3RIYW5kbGUsIERyb3BFdmVudCB9OwpAQCAtMTc0LDggKzE0OSw4
IEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVTY3Jv
bGxTdGFydGVkKQogICAgIG1fZXhwZWN0ZWREaXNwb3NpdGlvbiA9IERpZEhhbmRsZTsKICAgICBW
RVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0
SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCi0gICAg
ICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGll
bnQ6OlNjcm9sbFN0YXJ0ZWQpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXJD
bGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQorICAgICAgICAuV2ls
bE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYklucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVz
U3RhcnRlZCkpOwogCiAgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNj
cm9sbEJlZ2luOwogICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUp
OwpAQCAtMTg0LDE0ICsxNTksMTQgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsVGVzdCwgZ2VzdHVyZVNjcm9sbFN0YXJ0ZWQpCiAKICAgICBnZXN0dXJlLnR5cGUgPSBXZWJJ
bnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlOwogICAgIGdlc3R1cmUuZGF0YS5zY3JvbGxV
cGRhdGUuZGVsdGFZID0gLTQwOyAvLyAtWSBtZWFucyBzY3JvbGwgZG93biAtIGkuZS4gaW4gdGhl
ICtZIGRpcmVjdGlvbi4KLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVu
dCwgc2Nyb2xsQnkodGVzdGluZzo6XywgdGVzdGluZzo6UHJvcGVydHkoJldlYkNvcmU6OkludFNp
emU6OmhlaWdodCwgdGVzdGluZzo6R3QoMCkpKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5w
dXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCeSh0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpGaWVsZCgmV2Vi
U2l6ZTo6aGVpZ2h0LCB0ZXN0aW5nOjpHdCgwKSkpKTsKICAgICBtX2lucHV0SGFuZGxlci0+aGFu
ZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIAogICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsK
IAogICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ7CiAg
ICAgZ2VzdHVyZS5kYXRhLnNjcm9sbFVwZGF0ZS5kZWx0YVkgPSAwOwotICAgIEVYUEVDVF9DQUxM
KG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxFbmQoKSk7CisgICAgRVhQRUNUX0NB
TEwobV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxFbmQoKSk7CiAgICAgbV9pbnB1dEhh
bmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiB9CiAKQEAgLTIwMSw4ICsxNzYsOCBA
QCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlU2Nyb2xs
T25NYWluVGhyZWFkKQogICAgIG1fZXhwZWN0ZWREaXNwb3NpdGlvbiA9IERpZE5vdEhhbmRsZTsK
ICAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tD
Q0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4oOjp0ZXN0aW5nOjpfLCA6OnRlc3Rpbmc6
Ol8pKQotICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRI
YW5kbGVyQ2xpZW50OjpTY3JvbGxPbk1haW5UaHJlYWQpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21v
Y2tJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKDo6dGVzdGluZzo6XywgOjp0ZXN0aW5n
OjpfKSkKKyAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJJbnB1dEhhbmRsZXJD
bGllbnQ6OlNjcm9sbFN0YXR1c09uTWFpblRocmVhZCkpOwogCiAgICAgZ2VzdHVyZS50eXBlID0g
V2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOwogICAgIG1faW5wdXRIYW5kbGVyLT5o
YW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwpAQCAtMjI5LDggKzIwNCw4IEBAIFRFU1RfRihXZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVTY3JvbGxJZ25vcmVkKQogICAg
IG1fZXhwZWN0ZWREaXNwb3NpdGlvbiA9IERyb3BFdmVudDsKICAgICBWRVJJRllfQU5EX1JFU0VU
X01PQ0tTKCk7CiAKLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwg
c2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCi0gICAgICAgIC5XaWxsT25jZSh0
ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbElnbm9y
ZWQpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJl
Z2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQorICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6
UmV0dXJuKFdlYklucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVzSWdub3JlZCkpOwogCiAg
ICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOwogICAg
IG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwpAQCAtMjQzLDcgKzIx
OCw3IEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVQ
aW5jaCkKICAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKICAgICBnZXN0dXJlLnR5cGUg
PSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlUGluY2hCZWdpbjsKLSAgICBFWFBFQ1RfQ0FMTChtX21v
Y2tDQ0lucHV0SGFuZGxlckNsaWVudCwgcGluY2hHZXN0dXJlQmVnaW4oKSk7CisgICAgRVhQRUNU
X0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50LCBwaW5jaEdlc3R1cmVCZWdpbigpKTsKICAg
ICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIAogICAgIFZFUklG
WV9BTkRfUkVTRVRfTU9DS1MoKTsKQEAgLTI1Miw3ICsyMjcsNyBAQCBURVNUX0YoV2ViQ29tcG9z
aXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlUGluY2gpCiAgICAgZ2VzdHVyZS5kYXRh
LnBpbmNoVXBkYXRlLnNjYWxlID0gMS41OwogICAgIGdlc3R1cmUueCA9IDc7CiAgICAgZ2VzdHVy
ZS55ID0gMTM7Ci0gICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHBp
bmNoR2VzdHVyZVVwZGF0ZSgxLjUsIFdlYkNvcmU6OkludFBvaW50KDcsIDEzKSkpOworICAgIEVY
UEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlckNsaWVudCwgcGluY2hHZXN0dXJlVXBkYXRlKDEu
NSwgV2ViUG9pbnQoNywgMTMpKSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZl
bnQoZ2VzdHVyZSk7CiAKICAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CkBAIC0yNjEsMTMg
KzIzNiwxMyBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0
dXJlUGluY2gpCiAgICAgZ2VzdHVyZS5kYXRhLnBpbmNoVXBkYXRlLnNjYWxlID0gMC41OwogICAg
IGdlc3R1cmUueCA9IDk7CiAgICAgZ2VzdHVyZS55ID0gNjsKLSAgICBFWFBFQ1RfQ0FMTChtX21v
Y2tDQ0lucHV0SGFuZGxlckNsaWVudCwgcGluY2hHZXN0dXJlVXBkYXRlKC41LCBXZWJDb3JlOjpJ
bnRQb2ludCg5LCA2KSkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlckNsaWVu
dCwgcGluY2hHZXN0dXJlVXBkYXRlKC41LCBXZWJQb2ludCg5LCA2KSkpOwogICAgIG1faW5wdXRI
YW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwogCiAgICAgVkVSSUZZX0FORF9SRVNF
VF9NT0NLUygpOwogCiAgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVBp
bmNoRW5kOwotICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBwaW5j
aEdlc3R1cmVFbmQoKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50
LCBwaW5jaEdlc3R1cmVFbmQoKSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZl
bnQoZ2VzdHVyZSk7CiB9CiAKQEAgLTI3NywxMiArMjUyLDEyIEBAIFRFU1RfRihXZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ1N0YXJ0ZWQpCiAgICAgbV9leHBl
Y3RlZERpc3Bvc2l0aW9uID0gRGlkSGFuZGxlOwogICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1Mo
KTsKIAotICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxC
ZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKLSAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6
OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCkpOwor
ICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVz
dGluZzo6XywgdGVzdGluZzo6XykpCisgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4o
V2ViSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXNTdGFydGVkKSk7CiAKICAgICBnZXN0
dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDsKICAgICBnZXN0dXJl
LmRhdGEuZmxpbmdTdGFydC52ZWxvY2l0eVggPSAxMDsKLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tD
Q0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7CisgICAgRVhQRUNUX0NB
TEwobV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKICAgICBt
X2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIAogICAgIFZFUklGWV9B
TkRfUkVTRVRfTU9DS1MoKTsKQEAgLTI5OCw4ICsyNzMsOCBAQCBURVNUX0YoV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdGYWlsZWQpCiAgICAgbV9leHBlY3Rl
ZERpc3Bvc2l0aW9uID0gRGlkTm90SGFuZGxlOwogICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1Mo
KTsKIAotICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxC
ZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKLSAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6
OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsT25NYWluVGhyZWFk
KSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdp
bih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKKyAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJl
dHVybihXZWJJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1c09uTWFpblRocmVhZCkpOwog
CiAgICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7CiAg
ICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CkBAIC0zMTYsOCAr
MjkxLDggQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVy
ZUZsaW5nSWdub3JlZCkKICAgICBtX2V4cGVjdGVkRGlzcG9zaXRpb24gPSBEaWROb3RIYW5kbGU7
CiAgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCi0gICAgRVhQRUNUX0NBTEwobV9tb2Nr
Q0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8p
KQotICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5k
bGVyQ2xpZW50OjpTY3JvbGxJZ25vcmVkKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRI
YW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKKyAgICAg
ICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9s
bFN0YXR1c0lnbm9yZWQpKTsKIAogICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdl
c3R1cmVGbGluZ1N0YXJ0OwogICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdl
c3R1cmUpOwpAQCAtMzQ5LDQwICszMjQsNDAgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nQW5pbWF0ZXMpCiAgICAgZ2VzdHVyZS5nbG9iYWxY
ID0gZmxpbmdHbG9iYWxQb2ludC54OwogICAgIGdlc3R1cmUuZ2xvYmFsWSA9IGZsaW5nR2xvYmFs
UG9pbnQueTsKICAgICBnZXN0dXJlLm1vZGlmaWVycyA9IG1vZGlmaWVyczsKLSAgICBFWFBFQ1Rf
Q0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7Ci0g
ICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRl
c3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQotICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJu
KFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKSk7CisgICAgRVhQ
RUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsK
KyAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRl
c3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQorICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJu
KFdlYklucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVzU3RhcnRlZCkpOwogICAgIG1faW5w
dXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwogCi0gICAgdGVzdGluZzo6TW9j
azo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50
KTsKKyAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2Nr
SW5wdXRIYW5kbGVyQ2xpZW50KTsKICAgICAvLyBUaGUgZmlyc3QgYW5pbWF0ZSBjYWxsIHNob3Vs
ZCBsZXQgdXMgcGljayB1cCBhbiBhbmltYXRpb24gc3RhcnQgdGltZSwgYnV0IHdlCiAgICAgLy8g
c2hvdWxkbid0IGFjdHVhbGx5IG1vdmUgYW55d2hlcmUganVzdCB5ZXQuIFRoZSBmaXJzdCBmcmFt
ZSBhZnRlciB0aGUgZmxpbmcgc3RhcnQKICAgICAvLyB3aWxsIHR5cGljYWxseSBpbmNsdWRlIHRo
ZSBsYXN0IHNjcm9sbCBmcm9tIHRoZSBnZXN0dXJlIHRoYXQgbGVhZCB0byB0aGUgc2Nyb2xsCiAg
ICAgLy8gKGVpdGhlciB3aGVlbCBvciBnZXN0dXJlIHNjcm9sbCksIHNvIHRoZXJlIHNob3VsZCBi
ZSBubyB2aXNpYmxlIGhpdGNoLgotICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVy
Q2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lu
cHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpLlRp
bWVzKDApOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1
bGVBbmltYXRpb24oKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50
LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkuVGltZXMoMCk7CiAgICAgbV9p
bnB1dEhhbmRsZXItPmFuaW1hdGUoMTApOwogCi0gICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5k
Q2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKKyAgICB0ZXN0
aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrSW5wdXRIYW5kbGVy
Q2xpZW50KTsKIAogICAgIC8vIFRoZSBzZWNvbmQgY2FsbCBzaG91bGQgc3RhcnQgc2Nyb2xsaW5n
IGluIHRoZSAtWCBkaXJlY3Rpb24uCi0gICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRs
ZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOwotICAgIEVYUEVDVF9DQUxMKG1fbW9ja0ND
SW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkK
LSAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxl
ckNsaWVudDo6U2Nyb2xsU3RhcnRlZCkpOwotICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRI
YW5kbGVyQ2xpZW50LCBzY3JvbGxCeSh0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpQcm9wZXJ0eSgmV2Vi
Q29yZTo6SW50U2l6ZTo6d2lkdGgsIHRlc3Rpbmc6Okx0KDApKSkpOwotICAgIEVYUEVDVF9DQUxM
KG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxFbmQoKSk7CisgICAgRVhQRUNUX0NB
TEwobV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKKyAgICBF
WFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6
Ol8sIHRlc3Rpbmc6Ol8pKQorICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYklu
cHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVzU3RhcnRlZCkpOworICAgIEVYUEVDVF9DQUxM
KG1fbW9ja0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQnkodGVzdGluZzo6XywgdGVzdGluZzo6
RmllbGQoJldlYlNpemU6OndpZHRoLCB0ZXN0aW5nOjpMdCgwKSkpKTsKKyAgICBFWFBFQ1RfQ0FM
TChtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEVuZCgpKTsKICAgICBtX2lucHV0SGFu
ZGxlci0+YW5pbWF0ZSgxMC4xKTsKIAotICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFy
RXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7CisgICAgdGVzdGluZzo6
TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0lucHV0SGFuZGxlckNsaWVu
dCk7CiAKICAgICAvLyBMZXQncyBzYXkgb24gdGhlIHRoaXJkIGNhbGwgd2UgaGl0IGEgbm9uLXNj
cm9sbGFibGUgcmVnaW9uLiBXZSBzaG91bGQgYWJvcnQgdGhlIGZsaW5nIGFuZCBub3Qgc2Nyb2xs
LgogICAgIC8vIFdlIGFsc28gc2hvdWxkIHBhc3MgdGhlIGN1cnJlbnQgZmxpbmcgcGFyYW1ldGVy
cyBvdXQgdG8gdGhlIGNsaWVudCBzbyB0aGUgcmVzdCBvZiB0aGUgZmxpbmcgY2FuIGJlCiAgICAg
Ly8gdHJhbnNmZXJyZWQgdG8gdGhlIG1haW4gdGhyZWFkLgotICAgIEVYUEVDVF9DQUxMKG1fbW9j
a0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKLSAgICBFWFBFQ1Rf
Q0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6Xywg
dGVzdGluZzo6XykpCi0gICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6
Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbE9uTWFpblRocmVhZCkpOwotICAgIEVYUEVDVF9D
QUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCeSh0ZXN0aW5nOjpfLCB0ZXN0
aW5nOjpfKSkuVGltZXMoMCk7Ci0gICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJD
bGllbnQsIHNjcm9sbEVuZCgpKS5UaW1lcygwKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1
dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOworICAgIEVYUEVDVF9DQUxMKG1f
bW9ja0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6
XykpCisgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViSW5wdXRIYW5kbGVyQ2xp
ZW50OjpTY3JvbGxTdGF0dXNPbk1haW5UaHJlYWQpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tJ
bnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJ5KHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKS5UaW1l
cygwKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEVu
ZCgpKS5UaW1lcygwKTsKIAogICAgIC8vIEV4cGVjdGVkIHdoZWVsIGZsaW5nIGFuaW1hdGlvbiBw
YXJhbWV0ZXJzOgogICAgIC8vICopIGZsaW5nRGVsdGEgYW5kIGZsaW5nUG9pbnQgc2hvdWxkIG1h
dGNoIHRoZSBvcmlnaW5hbCBHZXN0dXJlRmxpbmdTdGFydCBldmVudApAQCAtMzk4LDEzICszNzMs
MTMgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZs
aW5nQW5pbWF0ZXMpCiAgICAgICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViU2l6ZTo6d2lkdGgs
IHRlc3Rpbmc6Okd0KDApKSkpKSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMTAuMik7
CiAKLSAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2Nr
Q0NJbnB1dEhhbmRsZXJDbGllbnQpOworICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFy
RXhwZWN0YXRpb25zKCZtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQpOwogICAgIHRlc3Rpbmc6Ok1v
Y2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDbGllbnQpOwogCiAgICAgLy8g
U2luY2Ugd2UndmUgYWJvcnRlZCB0aGUgZmxpbmcsIHRoZSBuZXh0IGFuaW1hdGlvbiBzaG91bGQg
YmUgYSBuby1vcCBhbmQgc2hvdWxkIG5vdCByZXN1bHQgaW4gYW5vdGhlcgogICAgIC8vIGZyYW1l
IGJlaW5nIHJlcXVlc3RlZC4KLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNs
aWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSkuVGltZXMoMCk7Ci0gICAgRVhQRUNUX0NBTEwobV9t
b2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6
Ol8pKS5UaW1lcygwKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQs
IHNjaGVkdWxlQW5pbWF0aW9uKCkpLlRpbWVzKDApOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lu
cHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpLlRp
bWVzKDApOwogICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDEwLjMpOwogCiAgICAgLy8gU2lu
Y2Ugd2UndmUgdHJhbnNmZXJyZWQgdGhlIGZsaW5nIHRvIHRoZSBtYWluIHRocmVhZCwgd2UgbmVl
ZCB0byBwYXNzIHRoZSBuZXh0IEdlc3R1cmVGbGluZ0NhbmNlbCB0byB0aGUgbWFpbgpAQCAtNDMz
LDM4ICs0MDgsMzggQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwg
Z2VzdHVyZUZsaW5nVHJhbnNmZXJSZXNldHMpCiAgICAgZ2VzdHVyZS5nbG9iYWxYID0gZmxpbmdH
bG9iYWxQb2ludC54OwogICAgIGdlc3R1cmUuZ2xvYmFsWSA9IGZsaW5nR2xvYmFsUG9pbnQueTsK
ICAgICBnZXN0dXJlLm1vZGlmaWVycyA9IG1vZGlmaWVyczsKLSAgICBFWFBFQ1RfQ0FMTChtX21v
Y2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7Ci0gICAgRVhQRUNU
X0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8s
IHRlc3Rpbmc6Ol8pKQotICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6
OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKSk7CisgICAgRVhQRUNUX0NBTEwo
bV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKKyAgICBFWFBF
Q1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8s
IHRlc3Rpbmc6Ol8pKQorICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYklucHV0
SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVzU3RhcnRlZCkpOwogICAgIG1faW5wdXRIYW5kbGVy
LT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwogCi0gICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5
QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKKyAgICB0
ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrSW5wdXRIYW5k
bGVyQ2xpZW50KTsKIAogICAgIC8vIFN0YXJ0IHRoZSBmbGluZyBhbmltYXRpb24gYXQgdGltZSAx
MC4gVGhpcyBzaG91bGRuJ3QgYWN0dWFsbHkgc2Nyb2xsLCBqdXN0IGVzdGFibGlzaCBhIHN0YXJ0
IHRpbWUuCi0gICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVk
dWxlQW5pbWF0aW9uKCkpOwotICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xp
ZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkuVGltZXMoMCk7CisgICAg
RVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigp
KTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2lu
KHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsKICAgICBtX2lucHV0SGFuZGxlci0+
YW5pbWF0ZSgxMCk7CiAKLSAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0
aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQpOworICAgIHRlc3Rpbmc6Ok1vY2s6OlZl
cmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQpOwogCiAg
ICAgLy8gVGhlIHNlY29uZCBjYWxsIHNob3VsZCBzdGFydCBzY3JvbGxpbmcgaW4gdGhlIC1YIGRp
cmVjdGlvbi4KLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2No
ZWR1bGVBbmltYXRpb24oKSk7Ci0gICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJD
bGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQotICAgICAgICAuV2ls
bE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3Jv
bGxTdGFydGVkKSk7Ci0gICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQs
IHNjcm9sbEJ5KHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6OlByb3BlcnR5KCZXZWJDb3JlOjpJbnRTaXpl
Ojp3aWR0aCwgdGVzdGluZzo6THQoMCkpKSk7Ci0gICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1
dEhhbmRsZXJDbGllbnQsIHNjcm9sbEVuZCgpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1
dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOworICAgIEVYUEVDVF9DQUxMKG1f
bW9ja0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6
XykpCisgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViSW5wdXRIYW5kbGVyQ2xp
ZW50OjpTY3JvbGxTdGF0dXNTdGFydGVkKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRI
YW5kbGVyQ2xpZW50LCBzY3JvbGxCeSh0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpGaWVsZCgmV2ViU2l6
ZTo6d2lkdGgsIHRlc3Rpbmc6Okx0KDApKSkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0
SGFuZGxlckNsaWVudCwgc2Nyb2xsRW5kKCkpOwogICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRl
KDEwLjEpOwogCi0gICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMo
Jm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKKyAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlB
bmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50KTsKIAogICAgIC8v
IExldCdzIHNheSBvbiB0aGUgdGhpcmQgY2FsbCB3ZSBoaXQgYSBub24tc2Nyb2xsYWJsZSByZWdp
b24uIFdlIHNob3VsZCBhYm9ydCB0aGUgZmxpbmcgYW5kIG5vdCBzY3JvbGwuCiAgICAgLy8gV2Ug
YWxzbyBzaG91bGQgcGFzcyB0aGUgY3VycmVudCBmbGluZyBwYXJhbWV0ZXJzIG91dCB0byB0aGUg
Y2xpZW50IHNvIHRoZSByZXN0IG9mIHRoZSBmbGluZyBjYW4gYmUKICAgICAvLyB0cmFuc2ZlcnJl
ZCB0byB0aGUgbWFpbiB0aHJlYWQuCi0gICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRs
ZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOwotICAgIEVYUEVDVF9DQUxMKG1fbW9ja0ND
SW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkK
LSAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxl
ckNsaWVudDo6U2Nyb2xsT25NYWluVGhyZWFkKSk7Ci0gICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJ
bnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJ5KHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKS5UaW1l
cygwKTsKLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xs
RW5kKCkpLlRpbWVzKDApOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlckNsaWVu
dCwgc2NoZWR1bGVBbmltYXRpb24oKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5k
bGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKKyAgICAgICAg
LldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0
YXR1c09uTWFpblRocmVhZCkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlckNs
aWVudCwgc2Nyb2xsQnkodGVzdGluZzo6XywgdGVzdGluZzo6XykpLlRpbWVzKDApOworICAgIEVY
UEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsRW5kKCkpLlRpbWVzKDAp
OwogCiAgICAgLy8gRXhwZWN0ZWQgd2hlZWwgZmxpbmcgYW5pbWF0aW9uIHBhcmFtZXRlcnM6CiAg
ICAgLy8gKikgZmxpbmdEZWx0YSBhbmQgZmxpbmdQb2ludCBzaG91bGQgbWF0Y2ggdGhlIG9yaWdp
bmFsIEdlc3R1cmVGbGluZ1N0YXJ0IGV2ZW50CkBAIC00ODAsMTYgKzQ1NSwxNiBAQCBURVNUX0Yo
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdUcmFuc2ZlclJl
c2V0cykKICAgICAgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJTaXplOjp3aWR0aCwgdGVzdGlu
Zzo6R3QoMCkpKSkpKTsKICAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgxMC4yKTsKIAotICAg
IHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0
SGFuZGxlckNsaWVudCk7CisgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3Rh
dGlvbnMoJm1fbW9ja0lucHV0SGFuZGxlckNsaWVudCk7CiAgICAgdGVzdGluZzo6TW9jazo6VmVy
aWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NsaWVudCk7CiAKICAgICAvLyBTaW5jZSB3
ZSd2ZSBhYm9ydGVkIHRoZSBmbGluZywgdGhlIG5leHQgYW5pbWF0aW9uIHNob3VsZCBiZSBhIG5v
LW9wIGFuZCBzaG91bGQgbm90IHJlc3VsdCBpbiBhbm90aGVyCiAgICAgLy8gZnJhbWUgYmVpbmcg
cmVxdWVzdGVkLgotICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBz
Y2hlZHVsZUFuaW1hdGlvbigpKS5UaW1lcygwKTsKLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lu
cHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpLlRp
bWVzKDApOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1
bGVBbmltYXRpb24oKSkuVGltZXMoMCk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5k
bGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkuVGltZXMoMCk7
CiAgICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMTAuMyk7CiAKLSAgICB0ZXN0aW5nOjpNb2Nr
OjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQp
OworICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tJ
bnB1dEhhbmRsZXJDbGllbnQpOwogCiAgICAgLy8gU2luY2Ugd2UndmUgdHJhbnNmZXJyZWQgdGhl
IGZsaW5nIHRvIHRoZSBtYWluIHRocmVhZCwgd2UgbmVlZCB0byBwYXNzIHRoZSBuZXh0IEdlc3R1
cmVGbGluZ0NhbmNlbCB0byB0aGUgbWFpbgogICAgIC8vIHRocmVhZCBhcyB3ZWxsLgpAQCAtNTEy
LDM2ICs0ODcsMzYgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwg
Z2VzdHVyZUZsaW5nVHJhbnNmZXJSZXNldHMpCiAgICAgZ2VzdHVyZS5nbG9iYWxYID0gZmxpbmdH
bG9iYWxQb2ludC54OwogICAgIGdlc3R1cmUuZ2xvYmFsWSA9IGZsaW5nR2xvYmFsUG9pbnQueTsK
ICAgICBnZXN0dXJlLm1vZGlmaWVycyA9IG1vZGlmaWVyczsKLSAgICBFWFBFQ1RfQ0FMTChtX21v
Y2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7Ci0gICAgRVhQRUNU
X0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8s
IHRlc3Rpbmc6Ol8pKQotICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6
OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKSk7CisgICAgRVhQRUNUX0NBTEwo
bV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKKyAgICBFWFBF
Q1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8s
IHRlc3Rpbmc6Ol8pKQorICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYklucHV0
SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVzU3RhcnRlZCkpOwogICAgIG1faW5wdXRIYW5kbGVy
LT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwogCi0gICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5
QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKKyAgICB0
ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrSW5wdXRIYW5k
bGVyQ2xpZW50KTsKIAogICAgIC8vIFN0YXJ0IHRoZSBzZWNvbmQgZmxpbmcgYW5pbWF0aW9uIGF0
IHRpbWUgMzAuCi0gICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNj
aGVkdWxlQW5pbWF0aW9uKCkpOwotICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVy
Q2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkuVGltZXMoMCk7Cisg
ICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlv
bigpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJl
Z2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsKICAgICBtX2lucHV0SGFuZGxl
ci0+YW5pbWF0ZSgzMCk7CiAKLSAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVj
dGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQpOworICAgIHRlc3Rpbmc6Ok1vY2s6
OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQpOwog
CiAgICAgLy8gVGljayB0aGUgc2Vjb25kIGZsaW5nIG9uY2Ugbm9ybWFsbHkuCi0gICAgRVhQRUNU
X0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOwot
ICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0
ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKLSAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVy
bihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCkpOwotICAgIEVY
UEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCeSh0ZXN0aW5nOjpf
LCB0ZXN0aW5nOjpQcm9wZXJ0eSgmV2ViQ29yZTo6SW50U2l6ZTo6aGVpZ2h0LCB0ZXN0aW5nOjpH
dCgwKSkpKTsKLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Ny
b2xsRW5kKCkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlckNsaWVudCwgc2No
ZWR1bGVBbmltYXRpb24oKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyQ2xp
ZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKKyAgICAgICAgLldpbGxP
bmNlKHRlc3Rpbmc6OlJldHVybihXZWJJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1c1N0
YXJ0ZWQpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9s
bEJ5KHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6OkZpZWxkKCZXZWJTaXplOjpoZWlnaHQsIHRlc3Rpbmc6
Okd0KDApKSkpOworICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlckNsaWVudCwgc2Ny
b2xsRW5kKCkpOwogICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDMwLjEpOwogCi0gICAgdGVz
dGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5k
bGVyQ2xpZW50KTsKKyAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9u
cygmbV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50KTsKIAogICAgIC8vIFRoZW4gYWJvcnQgdGhlIHNl
Y29uZCBmbGluZy4KLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwg
c2NoZWR1bGVBbmltYXRpb24oKSk7Ci0gICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRs
ZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQotICAgICAgICAu
V2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpT
Y3JvbGxPbk1haW5UaHJlYWQpKTsKLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxl
ckNsaWVudCwgc2Nyb2xsQnkodGVzdGluZzo6XywgdGVzdGluZzo6XykpLlRpbWVzKDApOwotICAg
IEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxFbmQoKSkuVGlt
ZXMoMCk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVs
ZUFuaW1hdGlvbigpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQs
IHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQorICAgICAgICAuV2lsbE9uY2Uo
dGVzdGluZzo6UmV0dXJuKFdlYklucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVzT25NYWlu
VGhyZWFkKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3Jv
bGxCeSh0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkuVGltZXMoMCk7CisgICAgRVhQRUNUX0NBTEwo
bV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxFbmQoKSkuVGltZXMoMCk7CiAKICAgICAv
LyBXZSBzaG91bGQgZ2V0IHBhcmFtZXRlcnMgZnJvbSB0aGUgc2Vjb25kIGZsaW5nLCBub3RoaW5n
IGZyb20gdGhlIGZpcnN0IGZsaW5nIHNob3VsZCAibGVhayIuCiAgICAgRVhQRUNUX0NBTEwobV9t
b2NrQ2xpZW50LCB0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24odGVzdGluZzo6QWxs
T2YoCkBAIC01NTYsMyArNTMxLDQgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsVGVzdCwgZ2VzdHVyZUZsaW5nVHJhbnNmZXJSZXNldHMpCiB9CiAKIH0KKwo=
</data>
<flag name="review"
          id="174163"
          type_id="1"
          status="+"
          setter="enne"
    />
          </attachment>
      

    </bug>

</bugzilla>