<?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>90058</bug_id>
          
          <creation_ts>2012-06-27 03:04:08 -0700</creation_ts>
          <short_desc>[WK2] Add Vibration API support for WebKit2</short_desc>
          <delta_ts>2012-09-05 01:13:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</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>
          
          <blocked>81252</blocked>
    
    <blocked>91077</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sudarsana Nagineni (babu)">naginenis</reporter>
          <assigned_to name="Sudarsana Nagineni (babu)">naginenis</assigned_to>
          <cc>andersca</cc>
    
    <cc>anssi.kostiainen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>menard</cc>
    
    <cc>rakuco</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>658504</commentid>
    <comment_count>0</comment_count>
    <who name="Sudarsana Nagineni (babu)">naginenis</who>
    <bug_when>2012-06-27 03:04:08 -0700</bug_when>
    <thetext>Currently there is no support for the Vibration API in WebKit2. We need to implement it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658516</commentid>
    <comment_count>1</comment_count>
      <attachid>149719</attachid>
    <who name="Sudarsana Nagineni (babu)">naginenis</who>
    <bug_when>2012-06-27 03:55:09 -0700</bug_when>
    <thetext>Created attachment 149719
Patch

This patch covers adding support for the Vibration API to WebKit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659098</commentid>
    <comment_count>2</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-27 19:20:32 -0700</bug_when>
    <thetext>When I build this patch on latest WebKit, there is build break. Could you check this ?


/home/gyuyoung/webkit/WebKit/Source/WebKit2/Platform/CoreIPC/ArgumentCoder.h: In static member function ‘static void CoreIPC::ArgumentCoder&lt;T&gt;::encode(CoreIPC::ArgumentEncoder*, const T&amp;) [with T = long unsigned int]’:
/home/gyuyoung/webkit/WebKit/Source/WebKit2/Platform/CoreIPC/ArgumentEncoder.h:67:9:   instantiated from ‘void CoreIPC::ArgumentEncoder::encode(const T&amp;) [with T = long unsigned int]’
/home/gyuyoung/webkit/WebKit/Source/WebKit2/Platform/CoreIPC/Arguments.h:72:9:   instantiated from ‘void CoreIPC::Arguments1&lt;T1&gt;::encode(CoreIPC::ArgumentEncoder*) const [with T1 = const long unsigned int&amp;]’
/home/gyuyoung/webkit/WebKit/Source/WebKit2/Platform/CoreIPC/ArgumentCoder.h:39:9:   instantiated from ‘static void CoreIPC::ArgumentCoder&lt;T&gt;::encode(CoreIPC::ArgumentEncoder*, const T&amp;) [with T = Messages::WebVibrationProxy::Vibrate]’
/home/gyuyoung/webkit/WebKit/Source/WebKit2/Platform/CoreIPC/ArgumentEncoder.h:67:9:   instantiated from ‘void CoreIPC::ArgumentEncoder::encode(const T&amp;) [with T = Messages::WebVibrationProxy::Vibrate]’
/home/gyuyoung/webkit/WebKit/Source/WebKit2/Platform/CoreIPC/Connection.h:374:5:   instantiated from ‘bool CoreIPC::Connection::send(const T&amp;, uint64_t, unsigned int) [with T = Messages::WebVibrationProxy::Vibrate, uint64_t = long long unsigned int]’
/home/gyuyoung/webkit/WebKit/Source/WebKit2/WebProcess/WebCoreSupport/WebVibrationClient.cpp:41:114:   instantiated from here
/home/gyuyoung/webkit/WebKit/Source/WebKit2/Platform/CoreIPC/ArgumentCoder.h:39:9: error: request for member ‘encode’ in ‘t’, which is of non-class type ‘const long unsigned int’
make[2]: *** [Source/WebKit2/CMakeFiles/ewebkit2.dir/WebProcess/WebCoreSupport/WebVibrationClient.cpp.o] Error 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659471</commentid>
    <comment_count>3</comment_count>
      <attachid>149943</attachid>
    <who name="Sudarsana Nagineni (babu)">naginenis</who>
    <bug_when>2012-06-28 06:53:41 -0700</bug_when>
    <thetext>Created attachment 149943
Patch

Fixed 32-bit build issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661237</commentid>
    <comment_count>4</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-01 19:41:47 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Created an attachment (id=149943) [details]
&gt; Patch
&gt; 
&gt; Fixed 32-bit build issue.

Thanks, there is no build break now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661240</commentid>
    <comment_count>5</comment_count>
      <attachid>149943</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-01 19:53:29 -0700</bug_when>
    <thetext>Comment on attachment 149943
Patch

Though I&apos;m not a WK2 reviewer, looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664238</commentid>
    <comment_count>6</comment_count>
      <attachid>149943</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-06 13:03:53 -0700</bug_when>
    <thetext>Comment on attachment 149943
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666098</commentid>
    <comment_count>7</comment_count>
      <attachid>149943</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-10 15:14:51 -0700</bug_when>
    <thetext>Comment on attachment 149943
Patch

Clearing flags on attachment: 149943

Committed r122270: &lt;http://trac.webkit.org/changeset/122270&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666099</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-10 15:14:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149719</attachid>
            <date>2012-06-27 03:55:09 -0700</date>
            <delta_ts>2012-06-28 06:53:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>vibration_api.patch</filename>
            <type>text/plain</type>
            <size>33231</size>
            <attacher name="Sudarsana Nagineni (babu)">naginenis</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggZDQwYmE4NC4uMmIwMjBlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTI1OCw2ICsyNTgsOCBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9j
ZXNzL1dlYlRleHRDaGVja2VyLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJUZXh0Q2hlY2tlckNsaWVu
dC5jcHAKICAgICBVSVByb2Nlc3MvV2ViVUlDbGllbnQuY3BwCisgICAgVUlQcm9jZXNzL1dlYlZp
YnJhdGlvblByb3ZpZGVyLmNwcAorICAgIFVJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5jcHAK
IAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcAogICAg
IFVJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcApAQCAtMjk1LDYg
KzI5Nyw3IEBAIFNFVChXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQcm90
ZWN0aW9uU3BhY2UuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFn
ZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLVGV4dENoZWNrZXIuY3BwCisgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLVmlicmF0aW9uLmNwcAogCiAgICAgVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9u
L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL0F1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5jcHAKQEAgLTQxNSw2ICs0MTgs
NyBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQb3B1cE1lbnUuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQ
b3B1cE1lbnUuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJWaWJyYXRpb25D
bGllbnQuY3BwCiAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRGVjb2RlckFkYXB0ZXIuY3BwCiAg
ICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcApAQCAtNDU5LDYgKzQ2Myw3IEBA
IFNFVChXZWJLaXQyX01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4K
ICAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgor
ICAgIFVJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5tZXNzYWdlcy5pbgogCiAgICAgVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAw
NjdiOTg4Li43NTU1M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMTItMDYtMjcg
IFN1ZGFyc2FuYSBOYWdpbmVuaSAgPHN1ZGFyc2FuYS5uYWdpbmVuaUBsaW51eC5pbnRlbC5jb20+
CisKKyAgICAgICAgW1dLMl0gQWRkIFZpYnJhdGlvbiBBUEkgc3VwcG9ydCBmb3IgV2ViS2l0Mgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAwNTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9y
dCBmb3IgVmlicmF0aW9uIEFQSSB0byBXZWJLaXQyLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMucHJpOgorICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaDoKKyAgICAg
ICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAgICAgICogU2hhcmVkL0FQSU9iamVjdC5o
OgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJ
Q2FzdC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tW
aWJyYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLVmlicmF0aW9uR2V0VHlwZUlEKToKKyAg
ICAgICAgKFdLVmlicmF0aW9uU2V0UHJvdmlkZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS1ZpYnJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVmlicmF0aW9u
UHJvdmlkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpYnJhdGlvblByb3ZpZGVyOjp2aWJyYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmli
cmF0aW9uUHJvdmlkZXI6OmNhbmNlbFZpYnJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlZpYnJhdGlvblByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYlZpYnJhdGlvblByb3ZpZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVmlicmF0aW9u
UHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpYnJhdGlvblByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWJyYXRpb25Q
cm94eTo6V2ViVmlicmF0aW9uUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWJyYXRpb25Q
cm94eTo6fldlYlZpYnJhdGlvblByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlicmF0aW9u
UHJveHk6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWJyYXRpb25Qcm94eTo6
aW5pdGlhbGl6ZVByb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlicmF0aW9uUHJveHk6
OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlicmF0aW9uUHJveHk6
OnZpYnJhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWJyYXRpb25Qcm94eTo6Y2FuY2VsVmli
cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuaDogQWRkZWQu
CisgICAgICAgIChDb3JlSVBDKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJWaWJy
YXRpb25Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpYnJhdGlvblByb3h5OjpjbGVhckNv
bnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWJyYXRpb25Qcm94eTo6dHlwZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlZpYnJhdGlvbkNsaWVudC5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlicmF0aW9u
Q2xpZW50Ojp2aWJyYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlicmF0aW9uQ2xpZW50Ojpj
YW5jZWxWaWJyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWJyYXRpb25DbGllbnQ6OnZp
YnJhdGlvbkRlc3Ryb3llZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJWaWJyYXRpb25DbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViVmlicmF0aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlicmF0aW9uQ2xpZW50
OjpXZWJWaWJyYXRpb25DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWJyYXRpb25DbGll
bnQ6On5XZWJWaWJyYXRpb25DbGllbnQpOgorCiAyMDEyLTA2LTI2ICBDaHJpc3RvcGhlIER1bWV6
ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW1dLMl1bR1RLXSBVbmlu
aXRpYWxpemVkIHZhcmlhYmxlIGluIFRleHRDaGVja2VyR3RrLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMucHJpIGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNv
dXJjZXMucHJpCmluZGV4IDMxOWJmN2UuLjBkNjE1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0Rlcml2ZWRTb3VyY2VzLnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNl
cy5wcmkKQEAgLTk5LDYgKzk5LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgV2ViUHJv
Y2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIFwKICAgICBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5tZXNz
YWdlcy5pbiBcCiAgICAgV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBc
CisgICAgV2ViVmlicmF0aW9uUHJveHkubWVzc2FnZXMuaW4gXAogICAgIE5QT2JqZWN0TWVzc2Fn
ZVJlY2VpdmVyLm1lc3NhZ2VzLmluCiAKIFNDUklQVFMgPSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUu
bGlzdC5hbQppbmRleCA4MzZkYWQ2Li41NDRkOWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxp
c3QuYW0KQEAgLTg0LDYgKzg0LDcgQEAgd2Via2l0Ml9oX2FwaSArPSBcCiAJJChXZWJLaXQyKS9V
SVByb2Nlc3MvQVBJL0MvV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oIFwKIAkkKFdlYktpdDIpL1VJ
UHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmggXAogCSQoV2ViS2l0MikvVUlQ
cm9jZXNzL0FQSS9DL1dLVGV4dENoZWNrZXIuaCBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJ
L0MvV0tWaWJyYXRpb24uY3BwIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvY3BwL1dLUmV0
YWluUHRyLmgKIAogd2Via2l0Mmd0a19oX2FwaSArPSBcCkBAIC0yMDYsNyArMjA3LDkgQEAgd2Vi
a2l0Ml9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYlNvdXBS
ZXF1ZXN0TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYktp
dDIvV2ViU291cFJlcXVlc3RNYW5hZ2VyTWVzc2FnZXMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgXAotCURl
cml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHlNZXNzYWdlcy5o
CisJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eU1lc3Nh
Z2VzLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViVmlicmF0aW9uUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYlZpYnJhdGlvblByb3h5
TWVzc2FnZXMuaAogCiB3ZWJraXQyZ3RrX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvd2Via2l0Mmd0ay93ZWJraXQyL1dlYktpdEVudW1UeXBlcy5jcHAgXApAQCAt
NTczLDYgKzU3Niw4IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tUZXh0Q2hlY2tlci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tUZXh0Q2hlY2tlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1ZpYnJhdGlvbi5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1ZpYnJhdGlvbi5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9XS1Jl
dGFpblB0ci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50
SW1wbC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1w
bC5jcHAgXApAQCAtODYwLDYgKzg2NSwxMCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJUZXh0Q2hlY2tlckNsaWVudC5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViVUlDbGllbnQuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlZpYnJhdGlv
blByb3ZpZGVyLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlZpYnJhdGlvblBy
b3ZpZGVyLmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5j
cHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5oIFwKIAlT
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyUHJlZml4LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvQXBwbGljYXRpb25DYWNoZS9XZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0FwcGxpY2F0aW9uQ2FjaGUvV2ViQXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIuY3BwIFwKQEAgLTEwNDIsNiArMTA1MSw4IEBAIHdlYmtpdDJfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUu
aCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQ
b3B1cE1lbnUuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlNlYXJjaFBvcHVwTWVudS5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlZpYnJhdGlvbkNsaWVudC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlicmF0aW9uQ2xpZW50LmggXAogCVNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EZWNvZGVyQWRhcHRlci5jcHAgXAogCVNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EZWNvZGVyQWRhcHRlci5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUlELmggYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5oCmluZGV4IGQ5MjNhMWIuLmUxOGQ5OTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUlELmgKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaApAQCAtNzksNiArNzks
NyBAQCBlbnVtIE1lc3NhZ2VDbGFzcyB7CiAjaWYgVVNFKFNPVVApCiAgICAgTWVzc2FnZUNsYXNz
V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHksCiAjZW5kaWYKKyAgICBNZXNzYWdlQ2xhc3NXZWJW
aWJyYXRpb25Qcm94eSwKIAogICAgIC8vIE1lc3NhZ2VzIHNlbnQgdG8gYSBXZWJDb25uZWN0aW9u
CiAgICAgTWVzc2FnZUNsYXNzV2ViQ29ubmVjdGlvbkxlZ2FjeSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS0Jhc2UuaAppbmRleCA4YjdlODFmLi5kNDE5OTUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jL1dLQmFzZS5oCkBAIC0xMTksNiArMTE5LDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
T3BhcXVlV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXIqIFdLUGx1Z2luU2l0ZURhdGFNYW5hZ2VyUmVm
OwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQcmVmZXJlbmNlcyogV0tQcmVmZXJlbmNl
c1JlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUHJvdGVjdGlvblNwYWNlKiBXS1By
b3RlY3Rpb25TcGFjZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVGV4dENoZWNr
ZXIqIFdLVGV4dENoZWNrZXJSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1ZpYnJh
dGlvbiogV0tWaWJyYXRpb25SZWY7CiAKIC8qIFdlYktpdDIgQnVuZGxlIHR5cGVzICovCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUElPYmplY3QuaAppbmRleCBlYWQ3NGYwLi42MmQ0ZWIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSU9iamVjdC5oCkBAIC0xMDMsNiArMTAzLDcgQEAgcHVibGljOgogICAgICAgICBU
eXBlUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLAogICAgICAgICBUeXBlUHJlZmVyZW5jZXMsCiAgICAg
ICAgIFR5cGVUZXh0Q2hlY2tlciwKKyAgICAgICAgVHlwZVZpYnJhdGlvbiwKIAogICAgICAgICAv
LyBCdW5kbGUgdHlwZXMKICAgICAgICAgVHlwZUJ1bmRsZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IDM3OTlk
ODUuLmU0NjVlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIv
U291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpAQCAtMTc3LDYgKzE3Nyw3IEBAIEhFQURFUlMgKz0g
XAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oIFwKICAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tQcm90ZWN0aW9uU3BhY2UuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dL
UHJvdGVjdGlvblNwYWNlVHlwZXMuaCBcCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLVmlicmF0aW9u
LmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XZWJLaXQyLmggXAogICAgIFVJUHJvY2Vzcy9BUEkv
Qy9xdC9XS05hdGl2ZUV2ZW50LmggXAogICAgIFVJUHJvY2Vzcy9BUEkvY3BwL1dLUmV0YWluUHRy
LmggXApAQCAtMjczLDYgKzI3NCw4IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxv
YWRDbGllbnQuaCBcCiAgICAgVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmggXAorICAgIFVJUHJvY2Vz
cy9XZWJWaWJyYXRpb25Qcm92aWRlci5oIFwKKyAgICBVSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJv
eHkuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0V2ViQ29udGV4dC5oIFwKICAgICBVSVByb2Nlc3Mv
cXQvUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmggXAogICAgIFVJUHJvY2Vzcy9xdC9RdEdlc3R1cmVS
ZWNvZ25pemVyLmggXApAQCAtMzYxLDYgKzM2NCw3IEBAIEhFQURFUlMgKz0gXAogICAgIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggXAogICAgIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmggXAogICAgIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmggXAorICAgIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViVmlicmF0aW9uQ2xpZW50LmggXAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvcXQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIFwKICAgICBXZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
SW1wbC5oIFwKQEAgLTUzMyw2ICs1MzcsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nlc3Mv
QVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Byb3RlY3Rp
b25TcGFjZS5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2Vy
LmNwcCBcCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLVmlicmF0aW9uLmNwcCBcCiAgICAgVUlQcm9j
ZXNzL0FQSS9jcHAvcXQvV0tTdHJpbmdRdC5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvY3BwL3F0
L1dLVVJMUXQuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uY3Bw
IFwKQEAgLTYyMyw2ICs2MjgsOCBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nlc3MvV2ViUmVz
b3VyY2VDYWNoZU1hbmFnZXJQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxv
YWRDbGllbnQuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViVUlDbGllbnQuY3BwIFwKKyAgICBVSVBy
b2Nlc3MvV2ViVmlicmF0aW9uUHJvdmlkZXIuY3BwIFwKKyAgICBVSVByb2Nlc3MvV2ViVmlicmF0
aW9uUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvUXRXZWJDb250ZXh0LmNwcCBcCiAgICAg
VUlQcm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHAgXAogICAgIFVJUHJvY2Vzcy9x
dC9RdEdlc3R1cmVSZWNvZ25pemVyLmNwcCBcCkBAIC03MjgsNiArNzM1LDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAgXAog
ICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmNwcCBcCisg
ICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJWaWJyYXRpb25DbGllbnQuY3BwIFwKICAg
ICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3F0L1dlYkNvbnRleHRNZW51Q2xpZW50UXQuY3Bw
IFwKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3F0L1dlYkVycm9yc1F0LmNwcCBcCiAg
ICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9xdC9XZWJEcmFnQ2xpZW50UXQuY3BwIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAppbmRleCA4MTZmOGYxLi5m
OWVhMTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElD
YXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCkBA
IC04OCw2ICs4OCw3IEBAIGNsYXNzIFdlYlByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFdlYlJlbmRl
ckxheWVyOwogY2xhc3MgV2ViUmVuZGVyT2JqZWN0OwogY2xhc3MgV2ViVGV4dENoZWNrZXI7Citj
bGFzcyBXZWJWaWJyYXRpb25Qcm94eTsKIAogV0tfQUREX0FQSV9NQVBQSU5HKFdLQXBwbGljYXRp
b25DYWNoZU1hbmFnZXJSZWYsIFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHkpCiBXS19B
RERfQVBJX01BUFBJTkcoV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlZiwgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eSkKQEAgLTEyOCw2ICsxMjksNyBAQCBXS19BRERfQVBJX01BUFBJTkco
V0tQcm90ZWN0aW9uU3BhY2VSZWYsIFdlYlByb3RlY3Rpb25TcGFjZSkKIFdLX0FERF9BUElfTUFQ
UElORyhXS1JlbmRlckxheWVyUmVmLCBXZWJSZW5kZXJMYXllcikKIFdLX0FERF9BUElfTUFQUElO
RyhXS1JlbmRlck9iamVjdFJlZiwgV2ViUmVuZGVyT2JqZWN0KQogV0tfQUREX0FQSV9NQVBQSU5H
KFdLVGV4dENoZWNrZXJSZWYsIFdlYlRleHRDaGVja2VyKQorV0tfQUREX0FQSV9NQVBQSU5HKFdL
VmlicmF0aW9uUmVmLCBXZWJWaWJyYXRpb25Qcm94eSkKIAogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CiBXS19BRERfQVBJX01BUFBJTkcoV0tJbnNwZWN0b3JSZWYsIFdlYkluc3BlY3RvclByb3h5KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVmlicmF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ZpYnJhdGlvbi5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTlkOTMzYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ZpYnJhdGlvbi5jcHAKQEAgLTAsMCAr
MSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldLVmlicmF0aW9uLmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKworI2lmIEVOQUJM
RShWSUJSQVRJT04pCisjaW5jbHVkZSAiV2ViVmlicmF0aW9uUHJveHkuaCIKKyNlbmRpZgorCit1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS1ZpYnJhdGlvbkdldFR5cGVJRCgp
Cit7CisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICByZXR1cm4gdG9BUEkoV2ViVmlicmF0aW9u
UHJveHk6OkFQSVR5cGUpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCit2b2lk
IFdLVmlicmF0aW9uU2V0UHJvdmlkZXIoV0tWaWJyYXRpb25SZWYgdmlicmF0aW9uUmVmLCBjb25z
dCBXS1ZpYnJhdGlvblByb3ZpZGVyKiB3a1Byb3ZpZGVyKQoreworI2lmIEVOQUJMRShWSUJSQVRJ
T04pCisgICAgdG9JbXBsKHZpYnJhdGlvblJlZiktPmluaXRpYWxpemVQcm92aWRlcih3a1Byb3Zp
ZGVyKTsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLVmlicmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tWaWJy
YXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjBhOWQ4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVmlicmF0aW9u
LmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jw
b3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS1ZpYnJh
dGlvbl9oCisjZGVmaW5lIFdLVmlicmF0aW9uX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNl
Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLy8gUHJv
dmlkZXIuCit0eXBlZGVmIHZvaWQgKCpXS1ZpYnJhdGlvblByb3ZpZGVyVmlicmF0ZUNhbGxiYWNr
KShXS1ZpYnJhdGlvblJlZiB2aWJyYXRpb25SZWYsIHVuc2lnbmVkIGxvbmcgdmlicmF0aW9uVGlt
ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS1ZpYnJhdGlvblBy
b3ZpZGVyQ2FuY2VsVmlicmF0aW9uQ2FsbGJhY2spKFdLVmlicmF0aW9uUmVmIHZpYnJhdGlvblJl
ZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3N0cnVjdCBXS1ZpYnJhdGlvblByb3ZpZGVy
IHsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZlcnNpb247CisgICAgY29uc3Qgdm9pZCAqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOwor
ICAgIFdLVmlicmF0aW9uUHJvdmlkZXJWaWJyYXRlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmlicmF0ZTsKKyAgICBXS1ZpYnJhdGlvblByb3ZpZGVyQ2FuY2VsVmli
cmF0aW9uQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbFZpYnJhdGlvbjsK
K307Cit0eXBlZGVmIHN0cnVjdCBXS1ZpYnJhdGlvblByb3ZpZGVyIFdLVmlicmF0aW9uUHJvdmlk
ZXI7CisKK2VudW0geyBrV0tWaWJyYXRpb25Qcm92aWRlckN1cnJlbnRWZXJzaW9uID0gMCB9Owor
CitXS19FWFBPUlQgV0tUeXBlSUQgV0tWaWJyYXRpb25HZXRUeXBlSUQoKTsKKworV0tfRVhQT1JU
IHZvaWQgV0tWaWJyYXRpb25TZXRQcm92aWRlcihXS1ZpYnJhdGlvblJlZiB2aWJyYXRpb25SZWYs
IGNvbnN0IFdLVmlicmF0aW9uUHJvdmlkZXIqIHByb3ZpZGVyKTsKKworI2lmZGVmIF9fY3BsdXNw
bHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIFdLVmlicmF0aW9uX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm92aWRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiMjkxZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJvdmlkZXIuY3BwCkBAIC0wLDAgKzEsNTQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
ZWJWaWJyYXRpb25Qcm92aWRlci5oIgorCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKworI2luY2x1
ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYlZpYnJhdGlvblByb3h5LmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCit2b2lkIFdlYlZpYnJhdGlvblByb3ZpZGVyOjp2aWJyYXRlKFdlYlZp
YnJhdGlvblByb3h5KiB2aWJyYXRpb24sIHVuc2lnbmVkIGxvbmcgdmlicmF0aW9uVGltZSkKK3sK
KyAgICBpZiAoIW1fY2xpZW50LnZpYnJhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xp
ZW50LnZpYnJhdGUodG9BUEkodmlicmF0aW9uKSwgdmlicmF0aW9uVGltZSwgbV9jbGllbnQuY2xp
ZW50SW5mbyk7Cit9CisKK3ZvaWQgV2ViVmlicmF0aW9uUHJvdmlkZXI6OmNhbmNlbFZpYnJhdGlv
bihXZWJWaWJyYXRpb25Qcm94eSogdmlicmF0aW9uKQoreworICAgIGlmICghbV9jbGllbnQuY2Fu
Y2VsVmlicmF0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5jYW5jZWxWaWJy
YXRpb24odG9BUEkodmlicmF0aW9uKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFZJQlJBVElPTikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm92aWRlci5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3ZpZGVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JjYTBiYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm92aWRlci5oCkBAIC0wLDAgKzEsNDkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVmlicmF0aW9uUHJvdmlkZXJfaAor
I2RlZmluZSBXZWJWaWJyYXRpb25Qcm92aWRlcl9oCisKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQor
CisjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCisjaW5jbHVkZSAiV0tWaWJyYXRpb24uaCIKKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViVmli
cmF0aW9uUHJveHk7CisKK2NsYXNzIFdlYlZpYnJhdGlvblByb3ZpZGVyIDogcHVibGljIEFQSUNs
aWVudDxXS1ZpYnJhdGlvblByb3ZpZGVyLCBrV0tWaWJyYXRpb25Qcm92aWRlckN1cnJlbnRWZXJz
aW9uPiB7CitwdWJsaWM6CisgICAgdm9pZCB2aWJyYXRlKFdlYlZpYnJhdGlvblByb3h5KiwgdW5z
aWduZWQgbG9uZyB2aWJyYXRpb25UaW1lKTsKKyAgICB2b2lkIGNhbmNlbFZpYnJhdGlvbihXZWJW
aWJyYXRpb25Qcm94eSopOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoVklCUkFUSU9OKQorCisjZW5kaWYgLy8gV2ViVmlicmF0aW9uUHJvdmlkZXJfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q1YzdiNQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5jcHAKQEAgLTAsMCAr
MSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldlYlZpYnJhdGlvblByb3h5LmgiCisKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorCisjaW5j
bHVkZSAiV2ViQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxX
ZWJWaWJyYXRpb25Qcm94eT4gV2ViVmlicmF0aW9uUHJveHk6OmNyZWF0ZShXZWJDb250ZXh0KiBj
b250ZXh0KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViVmlicmF0aW9uUHJveHkoY29u
dGV4dCkpOworfQorCitXZWJWaWJyYXRpb25Qcm94eTo6V2ViVmlicmF0aW9uUHJveHkoV2ViQ29u
dGV4dCogY29udGV4dCkKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQoreworfQorCitXZWJWaWJy
YXRpb25Qcm94eTo6fldlYlZpYnJhdGlvblByb3h5KCkKK3sKK30KKwordm9pZCBXZWJWaWJyYXRp
b25Qcm94eTo6aW52YWxpZGF0ZSgpCit7CisgICAgY2FuY2VsVmlicmF0aW9uKCk7Cit9CisKK3Zv
aWQgV2ViVmlicmF0aW9uUHJveHk6OmluaXRpYWxpemVQcm92aWRlcihjb25zdCBXS1ZpYnJhdGlv
blByb3ZpZGVyKiBwcm92aWRlcikKK3sKKyAgICBtX3Byb3ZpZGVyLmluaXRpYWxpemUocHJvdmlk
ZXIpOworfQorCit2b2lkIFdlYlZpYnJhdGlvblByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShDb3Jl
SVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlE
LCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cykKK3sKKyAgICBkaWRSZWNlaXZl
V2ViVmlicmF0aW9uUHJveHlNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRz
KTsKK30KKwordm9pZCBXZWJWaWJyYXRpb25Qcm94eTo6dmlicmF0ZSh1bnNpZ25lZCBsb25nIHZp
YnJhdGlvblRpbWUpCit7CisgICAgbV9wcm92aWRlci52aWJyYXRlKHRoaXMsIHZpYnJhdGlvblRp
bWUpOworfQorCit2b2lkIFdlYlZpYnJhdGlvblByb3h5OjpjYW5jZWxWaWJyYXRpb24oKQorewor
ICAgIG1fcHJvdmlkZXIuY2FuY2VsVmlicmF0aW9uKHRoaXMpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShWSUJSQVRJT04pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjI1NWU3Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYlZpYnJhdGlvblByb3h5X2gKKyNkZWZpbmUgV2ViVmlicmF0aW9u
UHJveHlfaAorCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKworI2luY2x1ZGUgIkFQSU9iamVjdC5o
IgorI2luY2x1ZGUgIk1lc3NhZ2VJRC5oIgorI2luY2x1ZGUgIldlYlZpYnJhdGlvblByb3ZpZGVy
LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIENvcmVJUEMgeworY2xh
c3MgQXJndW1lbnREZWNvZGVyOworY2xhc3MgQ29ubmVjdGlvbjsKK30KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYkNvbnRleHQ7CisKK2NsYXNzIFdlYlZpYnJhdGlvblByb3h5IDog
cHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlw
ZSA9IFR5cGVWaWJyYXRpb247CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJWaWJyYXRpb25Q
cm94eT4gY3JlYXRlKFdlYkNvbnRleHQqKTsKKyAgICB2aXJ0dWFsIH5XZWJWaWJyYXRpb25Qcm94
eSgpOworCisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisgICAgdm9pZCBjbGVhckNvbnRleHQoKSB7
IG1fY29udGV4dCA9IDA7IH0KKworICAgIHZvaWQgaW5pdGlhbGl6ZVByb3ZpZGVyKGNvbnN0IFdL
VmlicmF0aW9uUHJvdmlkZXIqKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQ
Qzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNv
ZGVyKik7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgV2ViVmlicmF0aW9uUHJveHkoV2ViQ29u
dGV4dCopOworCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBl
OyB9CisKKyAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViVmlicmF0aW9uUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwCisgICAgdm9pZCBkaWRSZWNlaXZlV2ViVmlicmF0aW9uUHJveHlN
ZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6
OkFyZ3VtZW50RGVjb2RlciopOworCisgICAgdm9pZCB2aWJyYXRlKHVuc2lnbmVkIGxvbmcgdmli
cmF0aW9uVGltZSk7CisgICAgdm9pZCBjYW5jZWxWaWJyYXRpb24oKTsKKworICAgIFdlYkNvbnRl
eHQqIG1fY29udGV4dDsKKyAgICBXZWJWaWJyYXRpb25Qcm92aWRlciBtX3Byb3ZpZGVyOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoVklCUkFUSU9OKQor
CisjZW5kaWYgLy8gV2ViVmlicmF0aW9uUHJveHlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjNGQwNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCAr
MSwzMCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KyNpZiBFTkFCTEUoVklCUkFUSU9OKQorCittZXNzYWdlcyAtPiBXZWJWaWJyYXRpb25Qcm94eSB7
CisgICAgVmlicmF0ZSh1bnNpZ25lZCBsb25nIHZpYnJhdGlvblRpbWUpOworICAgIENhbmNlbFZp
YnJhdGlvbigpOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlicmF0aW9uQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlicmF0aW9uQ2xpZW50LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTg5MTc1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJWaWJyYXRpb25D
bGllbnQuY3BwCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50
ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJWaWJyYXRpb25DbGllbnQuaCIKKworI2lmIEVOQUJM
RShWSUJSQVRJT04pCisKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vz
cy5oIgorI2luY2x1ZGUgIldlYlZpYnJhdGlvblByb3h5TWVzc2FnZXMuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYlZpYnJhdGlv
bkNsaWVudDo6dmlicmF0ZShjb25zdCB1bnNpZ25lZCBsb25nJiB2aWJyYXRpb25UaW1lKQorewor
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
VmlicmF0aW9uUHJveHk6OlZpYnJhdGUodmlicmF0aW9uVGltZSksIG1fcGFnZS0+cGFnZUlEKCkp
OworfQorCit2b2lkIFdlYlZpYnJhdGlvbkNsaWVudDo6Y2FuY2VsVmlicmF0aW9uKCkKK3sKKyAg
ICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlZp
YnJhdGlvblByb3h5OjpDYW5jZWxWaWJyYXRpb24oKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisK
K3ZvaWQgV2ViVmlicmF0aW9uQ2xpZW50Ojp2aWJyYXRpb25EZXN0cm95ZWQoKQoreworICAgIGRl
bGV0ZSB0aGlzOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJM
RShWSUJSQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlZpYnJhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJWaWJyYXRpb25DbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5hMDZiNGY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJWaWJyYXRpb25DbGllbnQuaApAQCAtMCww
ICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlZpYnJhdGlvbkNsaWVu
dF9oCisjZGVmaW5lIFdlYlZpYnJhdGlvbkNsaWVudF9oCisKKyNpZiBFTkFCTEUoVklCUkFUSU9O
KQorCisjaW5jbHVkZSA8V2ViQ29yZS9WaWJyYXRpb25DbGllbnQuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFdlYlZpYnJhdGlvbkNsaWVudCA6IHB1
YmxpYyBXZWJDb3JlOjpWaWJyYXRpb25DbGllbnQgeworcHVibGljOgorICAgIFdlYlZpYnJhdGlv
bkNsaWVudChXZWJQYWdlKiBwYWdlKQorICAgICAgICA6IG1fcGFnZShwYWdlKQorICAgIHsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIH5XZWJWaWJyYXRpb25DbGllbnQoKSB7IH0KKworcHJpdmF0ZToK
KyAgICB2aXJ0dWFsIHZvaWQgdmlicmF0ZShjb25zdCB1bnNpZ25lZCBsb25nJiB2aWJyYXRpb25U
aW1lKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVmlicmF0aW9uKCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHZpYnJhdGlvbkRlc3Ryb3llZCgpIE9WRVJSSURFOworCisg
ICAgV2ViUGFnZSogbV9wYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBFTkFCTEUoVklCUkFUSU9OKQorCisjZW5kaWYgLy8gV2ViVmlicmF0aW9uQ2xpZW50X2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149943</attachid>
            <date>2012-06-28 06:53:41 -0700</date>
            <delta_ts>2012-07-10 15:14:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>vibration_api.patch</filename>
            <type>text/plain</type>
            <size>33178</size>
            <attacher name="Sudarsana Nagineni (babu)">naginenis</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggZDQwYmE4NC4uMmIwMjBlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTI1OCw2ICsyNTgsOCBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9j
ZXNzL1dlYlRleHRDaGVja2VyLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJUZXh0Q2hlY2tlckNsaWVu
dC5jcHAKICAgICBVSVByb2Nlc3MvV2ViVUlDbGllbnQuY3BwCisgICAgVUlQcm9jZXNzL1dlYlZp
YnJhdGlvblByb3ZpZGVyLmNwcAorICAgIFVJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5jcHAK
IAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcAogICAg
IFVJUHJvY2Vzcy9BUEkvQy9XS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcApAQCAtMjk1LDYg
KzI5Nyw3IEBAIFNFVChXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQcm90
ZWN0aW9uU3BhY2UuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFn
ZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLVGV4dENoZWNrZXIuY3BwCisgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLVmlicmF0aW9uLmNwcAogCiAgICAgVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9u
L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL0F1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5jcHAKQEAgLTQxNSw2ICs0MTgs
NyBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQb3B1cE1lbnUuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQ
b3B1cE1lbnUuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJWaWJyYXRpb25D
bGllbnQuY3BwCiAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRGVjb2RlckFkYXB0ZXIuY3BwCiAg
ICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcApAQCAtNDU5LDYgKzQ2Myw3IEBA
IFNFVChXZWJLaXQyX01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4K
ICAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgor
ICAgIFVJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5tZXNzYWdlcy5pbgogCiAgICAgVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4
YThhOTcwLi44Mjc5NmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMTItMDYtMjcg
IFN1ZGFyc2FuYSBOYWdpbmVuaSAgPHN1ZGFyc2FuYS5uYWdpbmVuaUBsaW51eC5pbnRlbC5jb20+
CisKKyAgICAgICAgW1dLMl0gQWRkIFZpYnJhdGlvbiBBUEkgc3VwcG9ydCBmb3IgV2ViS2l0Mgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAwNTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9y
dCBmb3IgVmlicmF0aW9uIEFQSSB0byBXZWJLaXQyLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMucHJpOgorICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaDoKKyAgICAg
ICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAgICAgICogU2hhcmVkL0FQSU9iamVjdC5o
OgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJ
Q2FzdC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tW
aWJyYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLVmlicmF0aW9uR2V0VHlwZUlEKToKKyAg
ICAgICAgKFdLVmlicmF0aW9uU2V0UHJvdmlkZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS1ZpYnJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVmlicmF0aW9u
UHJvdmlkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpYnJhdGlvblByb3ZpZGVyOjp2aWJyYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmli
cmF0aW9uUHJvdmlkZXI6OmNhbmNlbFZpYnJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlZpYnJhdGlvblByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYlZpYnJhdGlvblByb3ZpZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVmlicmF0aW9u
UHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpYnJhdGlvblByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWJyYXRpb25Q
cm94eTo6V2ViVmlicmF0aW9uUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWJyYXRpb25Q
cm94eTo6fldlYlZpYnJhdGlvblByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlicmF0aW9u
UHJveHk6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWJyYXRpb25Qcm94eTo6
aW5pdGlhbGl6ZVByb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlicmF0aW9uUHJveHk6
OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlicmF0aW9uUHJveHk6
OnZpYnJhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWJyYXRpb25Qcm94eTo6Y2FuY2VsVmli
cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuaDogQWRkZWQu
CisgICAgICAgIChDb3JlSVBDKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJWaWJy
YXRpb25Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpYnJhdGlvblByb3h5OjpjbGVhckNv
bnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWJyYXRpb25Qcm94eTo6dHlwZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlZpYnJhdGlvbkNsaWVudC5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlicmF0aW9u
Q2xpZW50Ojp2aWJyYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlicmF0aW9uQ2xpZW50Ojpj
YW5jZWxWaWJyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWJyYXRpb25DbGllbnQ6OnZp
YnJhdGlvbkRlc3Ryb3llZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJWaWJyYXRpb25DbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViVmlicmF0aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlicmF0aW9uQ2xpZW50
OjpXZWJWaWJyYXRpb25DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWJyYXRpb25DbGll
bnQ6On5XZWJWaWJyYXRpb25DbGllbnQpOgorCiAyMDEyLTA2LTI4ICBCYWxhenMgS2VsZW1lbiAg
PGtiYWxhenNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIEtVUkwgYXNzZXJ0IGF0IGZhc3Qv
bG9hZGVyL29wYXF1ZS1iYXNlLXVybC5odG1sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9E
ZXJpdmVkU291cmNlcy5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5wcmkKaW5k
ZXggMzE5YmY3ZS4uMGQ2MTVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGVyaXZlZFNv
dXJjZXMucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLnByaQpAQCAtOTks
NiArOTksNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBXZWJQcm9jZXNzUHJveHkubWVz
c2FnZXMuaW4gXAogICAgIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLm1lc3NhZ2VzLmluIFwKICAg
ICBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIFwKKyAgICBXZWJWaWJy
YXRpb25Qcm94eS5tZXNzYWdlcy5pbiBcCiAgICAgTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIubWVz
c2FnZXMuaW4KIAogU0NSSVBUUyA9IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IDgzNmRhZDYuLjU0NGQ5ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtODQs
NiArODQsNyBAQCB3ZWJraXQyX2hfYXBpICs9IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkv
Qy9XS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9D
L1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL0Mv
V0tUZXh0Q2hlY2tlci5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvQy9XS1ZpYnJhdGlv
bi5jcHAgXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9jcHAvV0tSZXRhaW5QdHIuaAogCiB3
ZWJraXQyZ3RrX2hfYXBpICs9IFwKQEAgLTIwNiw3ICsyMDcsOSBAQCB3ZWJraXQyX2J1aWx0X3Nv
dXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViU291cFJlcXVlc3RNYW5hZ2Vy
TWVzc2FnZVJlY2VpdmVyLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJTb3VwUmVx
dWVzdE1hbmFnZXJNZXNzYWdlcy5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYlNvdXBS
ZXF1ZXN0TWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgKKwlEZXJpdmVkU291
cmNlcy9XZWJLaXQyL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5TWVzc2FnZXMuaCBcCisJRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJWaWJyYXRpb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
XAorCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViVmlicmF0aW9uUHJveHlNZXNzYWdlcy5oCiAK
IHdlYmtpdDJndGtfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi93
ZWJraXQyZ3RrL3dlYmtpdDIvV2ViS2l0RW51bVR5cGVzLmNwcCBcCkBAIC01NzMsNiArNTc2LDgg
QEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1RleHRDaGVja2VyLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1RleHRDaGVja2VyLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVmli
cmF0aW9uLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVmlicmF0aW9u
LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL1dLUmV0YWluUHRyLmggXAog
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmggXAogCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcCBcCkBAIC04
NjAsNiArODY1LDEwIEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlRleHRDaGVja2VyQ2xpZW50LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJVSUNsaWVudC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVu
dC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJvdmlkZXIuY3Bw
IFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJvdmlkZXIuaCBcCisJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3h5LmNwcCBcCisJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3h5LmggXAogCVNvdXJjZS9XZWJLaXQy
L1dlYktpdDJQcmVmaXguaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BcHBsaWNhdGlv
bkNhY2hlL1dlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmggXAogCVNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvQXBwbGljYXRpb25DYWNoZS9XZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAg
XApAQCAtMTA0Miw2ICsxMDUxLDggQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5oIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAg
XAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9w
dXBNZW51LmggXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
VmlicmF0aW9uQ2xpZW50LmNwcCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJWaWJyYXRpb25DbGllbnQuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvTWVzc2FnZUlELmgKaW5kZXggZDkyM2ExYi4uZTE4ZDk5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5oCkBAIC03OSw2ICs3OSw3IEBAIGVudW0gTWVz
c2FnZUNsYXNzIHsKICNpZiBVU0UoU09VUCkKICAgICBNZXNzYWdlQ2xhc3NXZWJTb3VwUmVxdWVz
dE1hbmFnZXJQcm94eSwKICNlbmRpZgorICAgIE1lc3NhZ2VDbGFzc1dlYlZpYnJhdGlvblByb3h5
LAogCiAgICAgLy8gTWVzc2FnZXMgc2VudCB0byBhIFdlYkNvbm5lY3Rpb24KICAgICBNZXNzYWdl
Q2xhc3NXZWJDb25uZWN0aW9uTGVnYWN5LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9jL1dLQmFzZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5o
CmluZGV4IDhiN2U4MWYuLmQ0MTk5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9XS0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNl
LmgKQEAgLTExOSw2ICsxMTksNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BsdWdp
blNpdGVEYXRhTWFuYWdlciogV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXJSZWY7CiB0eXBlZGVmIGNv
bnN0IHN0cnVjdCBPcGFxdWVXS1ByZWZlcmVuY2VzKiBXS1ByZWZlcmVuY2VzUmVmOwogdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQcm90ZWN0aW9uU3BhY2UqIFdLUHJvdGVjdGlvblNwYWNl
UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tUZXh0Q2hlY2tlciogV0tUZXh0Q2hl
Y2tlclJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVmlicmF0aW9uKiBXS1ZpYnJh
dGlvblJlZjsKIAogLyogV2ViS2l0MiBCdW5kbGUgdHlwZXMgKi8KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SU9iamVjdC5oCmluZGV4IGVhZDc0ZjAuLjYyZDRlYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2Jq
ZWN0LmgKQEAgLTEwMyw2ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFR5cGVQbHVnaW5TaXRl
RGF0YU1hbmFnZXIsCiAgICAgICAgIFR5cGVQcmVmZXJlbmNlcywKICAgICAgICAgVHlwZVRleHRD
aGVja2VyLAorICAgICAgICBUeXBlVmlicmF0aW9uLAogCiAgICAgICAgIC8vIEJ1bmRsZSB0eXBl
cwogICAgICAgICBUeXBlQnVuZGxlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0
LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggMzc5OWQ4NS4uZTQ2NWU3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9UYXJnZXQucHJpCkBAIC0xNzcsNiArMTc3LDcgQEAgSEVBREVSUyArPSBcCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S1Byb3RlY3Rpb25TcGFjZS5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQcm90ZWN0aW9uU3Bh
Y2VUeXBlcy5oIFwKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tWaWJyYXRpb24uaCBcCiAgICAgVUlQ
cm9jZXNzL0FQSS9DL1dlYktpdDIuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL3F0L1dLTmF0aXZl
RXZlbnQuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9jcHAvV0tSZXRhaW5QdHIuaCBcCkBAIC0yNzMs
NiArMjc0LDggQEAgSEVBREVSUyArPSBcCiAgICAgVUlQcm9jZXNzL1dlYlJlc291cmNlQ2FjaGVN
YW5hZ2VyUHJveHkuaCBcCiAgICAgVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZENsaWVudC5oIFwK
ICAgICBVSVByb2Nlc3MvV2ViVUlDbGllbnQuaCBcCisgICAgVUlQcm9jZXNzL1dlYlZpYnJhdGlv
blByb3ZpZGVyLmggXAorICAgIFVJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5oIFwKICAgICBV
SVByb2Nlc3MvcXQvUXRXZWJDb250ZXh0LmggXAogICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VF
dmVudEhhbmRsZXIuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJlY29nbml6ZXIuaCBc
CkBAIC0zNjEsNiArMzY0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQb3B1cE1lbnUuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJTZWFyY2hQb3B1cE1lbnUuaCBcCisgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJW
aWJyYXRpb25DbGllbnQuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9xdC9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0LmggXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5oIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmggXApAQCAt
NTMzLDYgKzUzNyw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZl
cmVuY2VzLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVjdGlvblNwYWNlLmNwcCBc
CiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwIFwKKyAgICBV
SVByb2Nlc3MvQVBJL0MvV0tWaWJyYXRpb24uY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL2NwcC9x
dC9XS1N0cmluZ1F0LmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tVUkxRdC5jcHAg
XAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5jcHAgXApAQCAtNjIzLDYg
KzYyOCw4IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUNhY2hlTWFu
YWdlclByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZENsaWVudC5jcHAg
XAogICAgIFVJUHJvY2Vzcy9XZWJVSUNsaWVudC5jcHAgXAorICAgIFVJUHJvY2Vzcy9XZWJWaWJy
YXRpb25Qcm92aWRlci5jcHAgXAorICAgIFVJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5jcHAg
XAogICAgIFVJUHJvY2Vzcy9xdC9RdFdlYkNvbnRleHQuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQv
UXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJl
Y29nbml6ZXIuY3BwIFwKQEAgLTcyOCw2ICs3MzUsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgXAogICAgIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNwcCBcCiAgICAgV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuY3BwIFwKKyAgICBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlZpYnJhdGlvbkNsaWVudC5jcHAgXAogICAgIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvcXQvV2ViQ29udGV4dE1lbnVDbGllbnRRdC5jcHAgXAogICAgIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvcXQvV2ViRXJyb3JzUXQuY3BwIFwKICAgICBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L3F0L1dlYkRyYWdDbGllbnRRdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCmluZGV4IDgxNmY4ZjEuLmY5ZWExNzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKQEAgLTg4LDYgKzg4LDcg
QEAgY2xhc3MgV2ViUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgV2ViUmVuZGVyTGF5ZXI7CiBjbGFz
cyBXZWJSZW5kZXJPYmplY3Q7CiBjbGFzcyBXZWJUZXh0Q2hlY2tlcjsKK2NsYXNzIFdlYlZpYnJh
dGlvblByb3h5OwogCiBXS19BRERfQVBJX01BUFBJTkcoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdl
clJlZiwgV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94eSkKIFdLX0FERF9BUElfTUFQUElO
RyhXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5KQpAQCAtMTI4LDYgKzEyOSw3IEBAIFdLX0FERF9BUElfTUFQUElORyhXS1Byb3RlY3Rpb25T
cGFjZVJlZiwgV2ViUHJvdGVjdGlvblNwYWNlKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUmVuZGVy
TGF5ZXJSZWYsIFdlYlJlbmRlckxheWVyKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUmVuZGVyT2Jq
ZWN0UmVmLCBXZWJSZW5kZXJPYmplY3QpCiBXS19BRERfQVBJX01BUFBJTkcoV0tUZXh0Q2hlY2tl
clJlZiwgV2ViVGV4dENoZWNrZXIpCitXS19BRERfQVBJX01BUFBJTkcoV0tWaWJyYXRpb25SZWYs
IFdlYlZpYnJhdGlvblByb3h5KQogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIFdLX0FERF9BUElf
TUFQUElORyhXS0luc3BlY3RvclJlZiwgV2ViSW5zcGVjdG9yUHJveHkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tWaWJyYXRpb24uY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVmlicmF0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5lOWQ5MzNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLVmlicmF0aW9uLmNwcApAQCAtMCwwICsxLDUxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tWaWJyYXRp
b24uaCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorCisjaWYgRU5BQkxFKFZJQlJBVElPTikK
KyNpbmNsdWRlICJXZWJWaWJyYXRpb25Qcm94eS5oIgorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLVmlicmF0aW9uR2V0VHlwZUlEKCkKK3sKKyNpZiBFTkFC
TEUoVklCUkFUSU9OKQorICAgIHJldHVybiB0b0FQSShXZWJWaWJyYXRpb25Qcm94eTo6QVBJVHlw
ZSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK3ZvaWQgV0tWaWJyYXRpb25T
ZXRQcm92aWRlcihXS1ZpYnJhdGlvblJlZiB2aWJyYXRpb25SZWYsIGNvbnN0IFdLVmlicmF0aW9u
UHJvdmlkZXIqIHdrUHJvdmlkZXIpCit7CisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICB0b0lt
cGwodmlicmF0aW9uUmVmKS0+aW5pdGlhbGl6ZVByb3ZpZGVyKHdrUHJvdmlkZXIpOworI2VuZGlm
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tWaWJyYXRp
b24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ZpYnJhdGlvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzMDBiNDYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tWaWJyYXRpb24uaApAQCAtMCwwICsx
LDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLVmlicmF0aW9uX2gKKyNkZWZp
bmUgV0tWaWJyYXRpb25faAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVm
IF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvLyBQcm92aWRlci4KK3R5cGVk
ZWYgdm9pZCAoKldLVmlicmF0aW9uUHJvdmlkZXJWaWJyYXRlQ2FsbGJhY2spKFdLVmlicmF0aW9u
UmVmIHZpYnJhdGlvblJlZiwgdWludDY0X3QgdmlicmF0aW9uVGltZSwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS1ZpYnJhdGlvblByb3ZpZGVyQ2FuY2VsVmlicmF0
aW9uQ2FsbGJhY2spKFdLVmlicmF0aW9uUmVmIHZpYnJhdGlvblJlZiwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbyk7CisKK3N0cnVjdCBXS1ZpYnJhdGlvblByb3ZpZGVyIHsKKyAgICBpbnQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZlcnNpb247CisgICAgY29uc3Qgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOworICAgIFdLVmlicmF0aW9uUHJv
dmlkZXJWaWJyYXRlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmli
cmF0ZTsKKyAgICBXS1ZpYnJhdGlvblByb3ZpZGVyQ2FuY2VsVmlicmF0aW9uQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbFZpYnJhdGlvbjsKK307Cit0eXBlZGVmIHN0cnVj
dCBXS1ZpYnJhdGlvblByb3ZpZGVyIFdLVmlicmF0aW9uUHJvdmlkZXI7CisKK2VudW0geyBrV0tW
aWJyYXRpb25Qcm92aWRlckN1cnJlbnRWZXJzaW9uID0gMCB9OworCitXS19FWFBPUlQgV0tUeXBl
SUQgV0tWaWJyYXRpb25HZXRUeXBlSUQoKTsKKworV0tfRVhQT1JUIHZvaWQgV0tWaWJyYXRpb25T
ZXRQcm92aWRlcihXS1ZpYnJhdGlvblJlZiB2aWJyYXRpb25SZWYsIGNvbnN0IFdLVmlicmF0aW9u
UHJvdmlkZXIqIHByb3ZpZGVyKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKwor
I2VuZGlmIC8vIFdLVmlicmF0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJWaWJyYXRpb25Qcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViVmlicmF0aW9uUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjA5NWJkOTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViVmlicmF0aW9uUHJvdmlkZXIuY3BwCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJWaWJyYXRpb25Qcm92aWRl
ci5oIgorCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgor
I2luY2x1ZGUgIldlYlZpYnJhdGlvblByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2
b2lkIFdlYlZpYnJhdGlvblByb3ZpZGVyOjp2aWJyYXRlKFdlYlZpYnJhdGlvblByb3h5KiB2aWJy
YXRpb24sIHVpbnQ2NF90IHZpYnJhdGlvblRpbWUpCit7CisgICAgaWYgKCFtX2NsaWVudC52aWJy
YXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC52aWJyYXRlKHRvQVBJKHZpYnJh
dGlvbiksIHZpYnJhdGlvblRpbWUsIG1fY2xpZW50LmNsaWVudEluZm8pOworfQorCit2b2lkIFdl
YlZpYnJhdGlvblByb3ZpZGVyOjpjYW5jZWxWaWJyYXRpb24oV2ViVmlicmF0aW9uUHJveHkqIHZp
YnJhdGlvbikKK3sKKyAgICBpZiAoIW1fY2xpZW50LmNhbmNlbFZpYnJhdGlvbikKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9jbGllbnQuY2FuY2VsVmlicmF0aW9uKHRvQVBJKHZpYnJhdGlvbiks
IG1fY2xpZW50LmNsaWVudEluZm8pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIEVOQUJMRShWSUJSQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViVmlicmF0aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJWaWJyYXRpb25Qcm92aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
Ljc2ZDk4YTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
VmlicmF0aW9uUHJvdmlkZXIuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYlZpYnJhdGlvblByb3ZpZGVyX2gKKyNkZWZpbmUgV2ViVmlicmF0aW9uUHJv
dmlkZXJfaAorCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKworI2luY2x1ZGUgIkFQSUNsaWVudC5o
IgorI2luY2x1ZGUgIldLVmlicmF0aW9uLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlZpYnJhdGlvblByb3h5OworCitjbGFzcyBX
ZWJWaWJyYXRpb25Qcm92aWRlciA6IHB1YmxpYyBBUElDbGllbnQ8V0tWaWJyYXRpb25Qcm92aWRl
ciwga1dLVmlicmF0aW9uUHJvdmlkZXJDdXJyZW50VmVyc2lvbj4geworcHVibGljOgorICAgIHZv
aWQgdmlicmF0ZShXZWJWaWJyYXRpb25Qcm94eSosIHVpbnQ2NF90IHZpYnJhdGlvblRpbWUpOwor
ICAgIHZvaWQgY2FuY2VsVmlicmF0aW9uKFdlYlZpYnJhdGlvblByb3h5Kik7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShWSUJSQVRJT04pCisKKyNlbmRp
ZiAvLyBXZWJWaWJyYXRpb25Qcm92aWRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlZpYnJhdGlvblByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li45YTVmN2YyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlZpYnJhdGlvblByb3h5LmNwcApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViVmlicmF0aW9uUHJveHkuaCIKKwor
I2lmIEVOQUJMRShWSUJSQVRJT04pCisKKyNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitQYXNzUmVmUHRyPFdlYlZpYnJhdGlvblByb3h5PiBXZWJWaWJyYXRp
b25Qcm94eTo6Y3JlYXRlKFdlYkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJWaWJyYXRpb25Qcm94eShjb250ZXh0KSk7Cit9CisKK1dlYlZpYnJhdGlvblBy
b3h5OjpXZWJWaWJyYXRpb25Qcm94eShXZWJDb250ZXh0KiBjb250ZXh0KQorICAgIDogbV9jb250
ZXh0KGNvbnRleHQpCit7Cit9CisKK1dlYlZpYnJhdGlvblByb3h5Ojp+V2ViVmlicmF0aW9uUHJv
eHkoKQoreworfQorCit2b2lkIFdlYlZpYnJhdGlvblByb3h5OjppbnZhbGlkYXRlKCkKK3sKKyAg
ICBjYW5jZWxWaWJyYXRpb24oKTsKK30KKwordm9pZCBXZWJWaWJyYXRpb25Qcm94eTo6aW5pdGlh
bGl6ZVByb3ZpZGVyKGNvbnN0IFdLVmlicmF0aW9uUHJvdmlkZXIqIHByb3ZpZGVyKQoreworICAg
IG1fcHJvdmlkZXIuaW5pdGlhbGl6ZShwcm92aWRlcik7Cit9CisKK3ZvaWQgV2ViVmlicmF0aW9u
UHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24s
IENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlciog
YXJndW1lbnRzKQoreworICAgIGRpZFJlY2VpdmVXZWJWaWJyYXRpb25Qcm94eU1lc3NhZ2UoY29u
bmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMpOworfQorCit2b2lkIFdlYlZpYnJhdGlvblBy
b3h5Ojp2aWJyYXRlKHVpbnQ2NF90IHZpYnJhdGlvblRpbWUpCit7CisgICAgbV9wcm92aWRlci52
aWJyYXRlKHRoaXMsIHZpYnJhdGlvblRpbWUpOworfQorCit2b2lkIFdlYlZpYnJhdGlvblByb3h5
OjpjYW5jZWxWaWJyYXRpb24oKQoreworICAgIG1fcHJvdmlkZXIuY2FuY2VsVmlicmF0aW9uKHRo
aXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShWSUJS
QVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9u
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlNjllOTYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuaApAQCAtMCww
ICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlZpYnJhdGlvblByb3h5
X2gKKyNkZWZpbmUgV2ViVmlicmF0aW9uUHJveHlfaAorCisjaWYgRU5BQkxFKFZJQlJBVElPTikK
KworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VJRC5oIgorI2luY2x1
ZGUgIldlYlZpYnJhdGlvblByb3ZpZGVyLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKwor
bmFtZXNwYWNlIENvcmVJUEMgeworY2xhc3MgQXJndW1lbnREZWNvZGVyOworY2xhc3MgQ29ubmVj
dGlvbjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkNvbnRleHQ7CisKK2Ns
YXNzIFdlYlZpYnJhdGlvblByb3h5IDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAg
c3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVWaWJyYXRpb247CisKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxXZWJWaWJyYXRpb25Qcm94eT4gY3JlYXRlKFdlYkNvbnRleHQqKTsKKyAgICB2
aXJ0dWFsIH5XZWJWaWJyYXRpb25Qcm94eSgpOworCisgICAgdm9pZCBpbnZhbGlkYXRlKCk7Cisg
ICAgdm9pZCBjbGVhckNvbnRleHQoKSB7IG1fY29udGV4dCA9IDA7IH0KKworICAgIHZvaWQgaW5p
dGlhbGl6ZVByb3ZpZGVyKGNvbnN0IFdLVmlicmF0aW9uUHJvdmlkZXIqKTsKKworICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJ
RCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQg
V2ViVmlicmF0aW9uUHJveHkoV2ViQ29udGV4dCopOworCisgICAgdmlydHVhbCBUeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CisKKyAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5l
cmF0ZWQgV2ViVmlicmF0aW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCisgICAgdm9pZCBkaWRS
ZWNlaXZlV2ViVmlicmF0aW9uUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3Jl
SVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOworCisgICAgdm9pZCB2
aWJyYXRlKHVpbnQ2NF90IHZpYnJhdGlvblRpbWUpOworICAgIHZvaWQgY2FuY2VsVmlicmF0aW9u
KCk7CisKKyAgICBXZWJDb250ZXh0KiBtX2NvbnRleHQ7CisgICAgV2ViVmlicmF0aW9uUHJvdmlk
ZXIgbV9wcm92aWRlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKFZJQlJBVElPTikKKworI2VuZGlmIC8vIFdlYlZpYnJhdGlvblByb3h5X2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5tZXNzYWdl
cy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjQwYjBkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3h5Lm1l
c3NhZ2VzLmluCkBAIC0wLDAgKzEsMzAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENv
cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKworbWVzc2FnZXMgLT4g
V2ViVmlicmF0aW9uUHJveHkgeworICAgIFZpYnJhdGUodWludDY0X3QgdmlicmF0aW9uVGltZSk7
CisgICAgQ2FuY2VsVmlicmF0aW9uKCk7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJWaWJyYXRpb25DbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJWaWJyYXRpb25D
bGllbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2MzVkZjQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlZpYnJhdGlvbkNsaWVudC5jcHAKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlZpYnJhdGlvbkNsaWVudC5o
IgorCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKworI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViVmlicmF0aW9uUHJveHlNZXNzYWdlcy5o
IgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3Zv
aWQgV2ViVmlicmF0aW9uQ2xpZW50Ojp2aWJyYXRlKGNvbnN0IHVpbnQ2NF90JiB2aWJyYXRpb25U
aW1lKQoreworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViVmlicmF0aW9uUHJveHk6OlZpYnJhdGUodmlicmF0aW9uVGltZSksIG1fcGFnZS0+
cGFnZUlEKCkpOworfQorCit2b2lkIFdlYlZpYnJhdGlvbkNsaWVudDo6Y2FuY2VsVmlicmF0aW9u
KCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYlZpYnJhdGlvblByb3h5OjpDYW5jZWxWaWJyYXRpb24oKSwgbV9wYWdlLT5wYWdlSUQo
KSk7Cit9CisKK3ZvaWQgV2ViVmlicmF0aW9uQ2xpZW50Ojp2aWJyYXRpb25EZXN0cm95ZWQoKQor
eworICAgIGRlbGV0ZSB0aGlzOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEVOQUJMRShWSUJSQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlZpYnJhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJWaWJyYXRpb25DbGllbnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzFkYjI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJWaWJyYXRpb25DbGllbnQu
aApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBv
cmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlZpYnJh
dGlvbkNsaWVudF9oCisjZGVmaW5lIFdlYlZpYnJhdGlvbkNsaWVudF9oCisKKyNpZiBFTkFCTEUo
VklCUkFUSU9OKQorCisjaW5jbHVkZSA8V2ViQ29yZS9WaWJyYXRpb25DbGllbnQuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFdlYlZpYnJhdGlvbkNs
aWVudCA6IHB1YmxpYyBXZWJDb3JlOjpWaWJyYXRpb25DbGllbnQgeworcHVibGljOgorICAgIFdl
YlZpYnJhdGlvbkNsaWVudChXZWJQYWdlKiBwYWdlKQorICAgICAgICA6IG1fcGFnZShwYWdlKQor
ICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5XZWJWaWJyYXRpb25DbGllbnQoKSB7IH0KKwor
cHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgdmlicmF0ZShjb25zdCB1aW50NjRfdCYgdmlicmF0
aW9uVGltZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFZpYnJhdGlvbigpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB2aWJyYXRpb25EZXN0cm95ZWQoKSBPVkVSUklERTsK
KworICAgIFdlYlBhZ2UqIG1fcGFnZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKFZJQlJBVElPTikKKworI2VuZGlmIC8vIFdlYlZpYnJhdGlvbkNsaWVu
dF9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>