<?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>196188</bug_id>
          
          <creation_ts>2019-03-24 09:02:57 -0700</creation_ts>
          <short_desc>[watchOS] Remove unused Proximity Networking code</short_desc>
          <delta_ts>2019-03-24 13:44:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bdakin</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>thorton</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1520712</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-03-24 09:02:57 -0700</bug_when>
    <thetext>[watchOS] Remove unused Proximity Networking code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520713</commentid>
    <comment_count>1</comment_count>
      <attachid>365828</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-03-24 09:05:51 -0700</bug_when>
    <thetext>Created attachment 365828
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520717</commentid>
    <comment_count>2</comment_count>
      <attachid>365829</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-03-24 09:18:56 -0700</bug_when>
    <thetext>Created attachment 365829
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520718</commentid>
    <comment_count>3</comment_count>
      <attachid>365830</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-03-24 09:30:43 -0700</bug_when>
    <thetext>Created attachment 365830
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520721</commentid>
    <comment_count>4</comment_count>
      <attachid>365833</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-03-24 09:36:18 -0700</bug_when>
    <thetext>Created attachment 365833
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520750</commentid>
    <comment_count>5</comment_count>
      <attachid>365833</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-24 13:42:43 -0700</bug_when>
    <thetext>Comment on attachment 365833
Patch

Clearing flags on attachment: 365833

Committed r243427: &lt;https://trac.webkit.org/changeset/243427&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520751</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-24 13:42:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520752</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-24 13:44:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/49199685&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365828</attachid>
            <date>2019-03-24 09:05:51 -0700</date>
            <delta_ts>2019-03-24 09:18:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196188-20190324090550.patch</filename>
            <type>text/plain</type>
            <size>52608</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg4NGQ4ODQxOGNhMGZjNjZlZmNmMWVh
NGU4MTRmMDU4ZDExNTlmYjkuLmEzMDE2ZTQ5N2M3MDJlOWNkYzdhNzgyNjA4ZTliYjRiYzFmMmNl
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMDMtMjQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFt3YXRjaE9TXSBSZW1vdmUgdW51c2VkIFByb3hpbWl0eSBO
ZXR3b3JraW5nIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NjE4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL0ZlYXR1cmVEZWZpbmVzLmg6CisKIDIwMTktMDMtMjIgIEtlaXRoIFJvbGxp
biAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSBUaGluTFRPIHN1cHBvcnQg
aW4gUHJvZHVjdGlvbiBidWlsZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMGE1MDJkNWQyZDAxYzE4YzNlMGZiNzc3
ODNiYzY0Y2RhNDY0OWIzMi4uY2I2ODY3OThhMzc0ZGY0NWIzOTA0ZjNlMGY5MDI3YzA5NDVhMWZi
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxOS0wMy0yNCAgQW5keSBFc3RlcyAgPGFl
c3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW3dhdGNoT1NdIFJlbW92ZSB1bnVzZWQgUHJveGlt
aXR5IE5ldHdvcmtpbmcgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk2MTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2Nv
YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtUHJlcGFyZVRvU3Vz
cGVuZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVByb2Nlc3NE
aWRSZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Qcm9j
ZXNzRGlkVHJhbnNpdGlvblRvQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpwbGF0Zm9ybVByb2Nlc3NEaWRUcmFuc2l0aW9uVG9Gb3JlZ3JvdW5kKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy93YXRjaG9zL05ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24uaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93YXRjaG9zL05ldHdvcmtQcm94aW1p
dHlBc3NlcnRpb24ubW06IFJlbW92ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2F0Y2hv
cy9OZXR3b3JrUHJveGltaXR5TWFuYWdlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3dhdGNob3MvTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIubW06IFJlbW92ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAg
ICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbToKKyAg
ICAgICAgKC1bX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHdpcmVsZXNzQ29udGV4dElkZW50
aWZpZXJdKToKKyAgICAgICAgKC1bX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFdpcmVs
ZXNzQ29udGV4dElkZW50aWZpZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0
Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMDMtMjMgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBw
bGUuY29tPgogCiAgICAgICAgIFtBcHBsZSBQYXldIFJlbW92ZSB0aGUgQXZhaWxhYmxlUGF5bWVu
dE5ldHdvcmtzIHN5bmNocm9ub3VzIG1lc3NhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0ZlYXR1cmVEZWZpbmVzLmggYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCmluZGV4
IGUyNjk4ZjZkZmVjMzhlOTNhMDg2MjlhMjI4ZDIxODEzMDkxMDJhNjEuLmM0MDY5YWNlZWExMmVm
YWI2NGUxYmQyOTQ2ZDVlZmU4N2EyZGY4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zl
YXR1cmVEZWZpbmVzLmgKKysrIGIvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaApAQCAt
MTk4LDEyICsxOTgsNiBAQCB0aGUgcHVibGljIGlPUyBTREsuIFNlZSA8aHR0cHM6Ly93ZWJraXQu
b3JnL2IvMTc5MTY3Pi4gKi8KIC8qIC0tLS0tLS0tLSBBcHBsZSBXQVRDSE9TIHBvcnQgLS0tLS0t
LS0tICovCiAjaWYgUExBVEZPUk0oV0FUQ0hPUykKIAotI2lmICFkZWZpbmVkKEVOQUJMRV9QUk9Y
SU1JVFlfTkVUV09SS0lORykKLSNpZiAhVEFSR0VUX09TX1NJTVVMQVRPUiAmJiBfX1dBVENIX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgNjAwMDAKLSNkZWZpbmUgRU5BQkxFX1BST1hJTUlUWV9O
RVRXT1JLSU5HIDEKLSNlbmRpZgotI2VuZGlmCi0KICNlbmRpZiAvKiBQTEFURk9STShXQVRDSE9T
KSAqLwogCiAvKiAtLS0tLS0tLS0gQXBwbGUgTUFDIHBvcnQgKG5vdCBJT1MpIC0tLS0tLS0tLSAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApp
bmRleCBiNWI3YmVjMDQxMWY1YjdhOGRjNjhmZTc2YmQzZjRkY2EyMzA5NmY5Li43M2YxYjQ4Mzc2
OWViZGRjZWY5YmQ0YjdmNGVjMTAzYWM1YTlmNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1
ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1By
b3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJOZXR3b3JrUHJveGltaXR5TWFuYWdlci5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9u
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaCIKQEAgLTE0
NSw5ICsxNDQsNiBAQCBOZXR3b3JrUHJvY2Vzczo6TmV0d29ya1Byb2Nlc3MoQXV4aWxpYXJ5UHJv
Y2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZQogI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBVU0UoU09VUCkKICAgICBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6Om5ldHdvcmtQ
cm9jZXNzQ3JlYXRlZCgqdGhpcyk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoUFJPWElNSVRZX05FVFdP
UktJTkcpCi0gICAgYWRkU3VwcGxlbWVudDxOZXR3b3JrUHJveGltaXR5TWFuYWdlcj4oKTsKLSNl
bmRpZgogCiAjaWYgVVNFKFNPVVApCiAgICAgRE5TUmVzb2x2ZVF1ZXVlU291cDo6c2V0R2xvYmFs
RGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkFjY2Vzc29yKFt0aGlzXSgpIC0+IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgewpAQCAtMTgzLDEzICsxNzksNiBAQCBEb3dubG9hZE1hbmFnZXImIE5l
dHdvcmtQcm9jZXNzOjpkb3dubG9hZE1hbmFnZXIoKQogICAgIHJldHVybiBtX2Rvd25sb2FkTWFu
YWdlcjsKIH0KIAotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKLU5ldHdvcmtQcm94
aW1pdHlNYW5hZ2VyJiBOZXR3b3JrUHJvY2Vzczo6cHJveGltaXR5TWFuYWdlcigpCi17Ci0gICAg
cmV0dXJuICpzdXBwbGVtZW50PE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyPigpOwotfQotI2VuZGlm
Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQogewogICAgIGF1
dG8gY291bnQgPSBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5yZW1vdmVBbGxNYXRjaGluZyhbJl0g
KGNvbnN0IGF1dG8mIGMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAppbmRleCBjYzI2OGRjYjAxNTc2YjJjYTJlNGM1NmE5ODRkN2IzY2I1YTQ3MTM1
Li41MjlmODc5MjIwZjZlNTFhMzQwZWU0Yjc2M2EyMDIzMWE3NDY3ZWVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0xNTQsOSArMTU0LDYg
QEAgcHVibGljOgogCiAgICAgQXV0aGVudGljYXRpb25NYW5hZ2VyJiBhdXRoZW50aWNhdGlvbk1h
bmFnZXIoKTsKICAgICBEb3dubG9hZE1hbmFnZXImIGRvd25sb2FkTWFuYWdlcigpOwotI2lmIEVO
QUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKLSAgICBOZXR3b3JrUHJveGltaXR5TWFuYWdlciYg
cHJveGltaXR5TWFuYWdlcigpOwotI2VuZGlmCiAKICAgICBOZXR3b3JrQ2FjaGU6OkNhY2hlKiBj
YWNoZSgpIHsgcmV0dXJuIG1fY2FjaGUuZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAppbmRleCBhYjUxOTU5YTQ4N2U3ODQ2NTBmMWQ5Yjg4ZjViMjE4YjU1NWI4MDIy
Li5lZDMxOTk3NWQ4NmQ1M2NlY2E3OGZmNTYzODQ4NjIyYmJkZGY1ZjUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtODUsMTAgKzg1LDYgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29u
c3QKICAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxlZDsKICAg
ICBlbmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVx
dWVzdDsKIAotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKLSAgICBlbmNvZGVyIDw8
IHdpcmVsZXNzQ29udGV4dElkZW50aWZpZXI7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICBlbmNvZGVyIDw8IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkgPDwgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA8
PCB1cmxTY2hlbWVzU2VydmljZVdvcmtlcnNDYW5IYW5kbGUgPDwgc2hvdWxkRGlzYWJsZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheTsKICNlbmRpZgpAQCAtMTk1LDExICsxOTEs
NiBAQCBib29sIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3JrUHJvYwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0LnVybFNjaGVtZXNSZWdpc3RlcmVkQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykK
LSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC53aXJlbGVzc0NvbnRleHRJZGVudGlmaWVy
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaAppbmRleCAwYWExYWJkM2ZmOWZmZDgyZmM3MjgxODU4OTM2YzFjZDk4ZmQx
ZjBlLi4wZjFmNDQwNzEwN2U4ZDMzNjhmMzIwMzI2Y2Y3YzllNDEwYjNiMmM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0xMDAsMTAgKzEwMCw2IEBAIHN0cnVjdCBOZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgVmVjdG9yPFN0cmluZz4gdXJsU2NoZW1l
c1JlZ2lzdGVyZWRBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0OwogICAgIFZlY3RvcjxTdHJp
bmc+IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxlZDsKIAotI2lmIEVOQUJMRShQUk9Y
SU1JVFlfTkVUV09SS0lORykKLSAgICB1bnNpZ25lZCB3aXJlbGVzc0NvbnRleHRJZGVudGlmaWVy
IHsgMCB9OwotI2VuZGlmCi0KICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgU3RyaW5n
IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLmgKaW5kZXggMmNlNjc3ZGJhMTlkNDgyYzJhMjViZjE0ZGY0MjM5
ZDkzMGJjMGNmZC4uOTY1YzZmYTY2NGJjZDE1NWY3NmNkYjNiNGQ3MzI2ZWVlMDNlOTE4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EuaApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtBY3Rp
dml0eVRyYWNrZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKICNpbmNsdWRlICJO
ZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlICJOZXR3b3JrUHJveGltaXR5QXNzZXJ0
aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJpY3MuaD4KICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTczLDE0ICs3Miw2IEBAIHB1YmxpYzoKICAgICB1aW50
NjRfdCBmcmFtZUlEKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUlEOyB9OwogICAgIHVpbnQ2NF90
IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9OwogCi0jaWYgRU5BQkxFKFBST1hJ
TUlUWV9ORVRXT1JLSU5HKQotICAgIHZvaWQgaG9sZFByb3hpbWl0eUFzc2VydGlvbihOZXR3b3Jr
UHJveGltaXR5QXNzZXJ0aW9uJiBhc3NlcnRpb24pCi0gICAgewotICAgICAgICBBU1NFUlQoIW1f
cHJveGltaXR5QXNzZXJ0aW9uVG9rZW4pOwotICAgICAgICBtX3Byb3hpbWl0eUFzc2VydGlvblRv
a2VuLmVtcGxhY2UoYXNzZXJ0aW9uKTsKLSAgICB9Ci0jZW5kaWYKLQogICAgIFN0cmluZyBkZXNj
cmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgpAQCAtMTA3LDEwICs5OCw2IEBA
IHByaXZhdGU6CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBib29s
IG1faGFzQmVlblNldFRvVXNlU3RhdGVsZXNzQ29va2llU3RvcmFnZSB7IGZhbHNlIH07CiAjZW5k
aWYKLQotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKLSAgICBPcHRpb25hbDxOZXR3
b3JrUHJveGltaXR5QXNzZXJ0aW9uOjpUb2tlbj4gbV9wcm94aW1pdHlBc3NlcnRpb25Ub2tlbjsK
LSNlbmRpZgogfTsKIAogV2ViQ29yZTo6Q3JlZGVudGlhbCBzZXJ2ZXJUcnVzdENyZWRlbnRpYWwo
Y29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
Lm1tCmluZGV4IDVjZGQzMTY1MjM2NzBmNzRkNjhlNzJhN2YwOTBiMTdkNmE5YmRjMDguLjFkMGE1
OWY3OGM2NDIzYzQ3ZTlhNzYxZTg1MDIyYzhiODJjN2JjNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bQpAQCAtMzIsNyArMzIsNiBAQAogI2ltcG9ydCAiRG93bmxvYWRQcm94eU1lc3NhZ2VzLmgiCiAj
aW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgotI2ltcG9ydCAi
TmV0d29ya1Byb3hpbWl0eU1hbmFnZXIuaCIKICNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uQ29jb2Eu
aCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9B
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgpAQCAtMjAwLDkgKzE5OSw2IEBAIE5ldHdvcmtEYXRh
VGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwg
TmV0d29ya0RhdGFUCiAKICAgICBOU1VSTFJlcXVlc3QgKm5zUmVxdWVzdCA9IHJlcXVlc3QubnNV
UkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpVcGRhdGVIVFRQQm9keSk7
CiAgICAgYXBwbHlTbmlmZmluZ1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVl
ZGVkKG5zUmVxdWVzdCwgc2hvdWxkQ29udGVudFNuaWZmID09IFdlYkNvcmU6OkNvbnRlbnRTbmlm
ZmluZ1BvbGljeTo6U25pZmZDb250ZW50ICYmICF1cmwuaXNMb2NhbEZpbGUoKSwgc2hvdWxkQ29u
dGVudEVuY29kaW5nU25pZmYgPT0gV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xp
Y3k6OlNuaWZmKTsKLSNpZiBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCi0gICAgbV9zZXNz
aW9uLT5uZXR3b3JrUHJvY2VzcygpLnByb3hpbWl0eU1hbmFnZXIoKS5hcHBseVByb3BlcnRpZXMo
cmVxdWVzdCwgKnRoaXMsIG5zUmVxdWVzdCk7Ci0jZW5kaWYKIAogICAgIGF1dG8mIGNvY29hU2Vz
c2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EmPihtX3Nlc3Npb24uZ2V0KCkp
OwogICAgIGlmIChzdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9PSBXZWJDb3JlOjpTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeTo6VXNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KaW5kZXggNzBiMzljOWE3YmM0
YTU4ZDcxZGU1NWE1NzU2ZTZkZjA5ZTUxOGU4YS4uNWFlNDlmNmM5MmRiY2M3OThhZjYxMWJkOGI0
MTY2NDA3OWZjMWVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQpAQCAtMzAsNyArMzAsNiBAQAogI2lt
cG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTmV0d29ya0NhY2hlLmgiCiAjaW1wb3J0ICJOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2ltcG9ydCAiTmV0d29ya1Byb3hpbWl0
eU1hbmFnZXIuaCIKICNpbXBvcnQgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2ltcG9ydCAi
TmV0d29ya1Nlc3Npb25Db2NvYS5oIgogI2ltcG9ydCAiU2FuZGJveEV4dGVuc2lvbi5oIgpAQCAt
MjQ3LDMyICsyNDYsMTkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1TeW5jQWxsQ29v
a2llcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGkKIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6cGxhdGZvcm1QcmVwYXJlVG9TdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSNpZiBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJ
TkcpCi0gICAgcHJveGltaXR5TWFuYWdlcigpLnN1c3BlbmQoU3VzcGVuc2lvblJlYXNvbjo6UHJv
Y2Vzc1N1c3BlbmRpbmcsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSNlbHNlCiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKLSNlbmRpZgogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpw
bGF0Zm9ybVByb2Nlc3NEaWRSZXN1bWUoKQogewotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09S
S0lORykKLSAgICBwcm94aW1pdHlNYW5hZ2VyKCkucmVzdW1lKFJlc3VtcHRpb25SZWFzb246OlBy
b2Nlc3NSZXN1bWluZyk7Ci0jZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZv
cm1Qcm9jZXNzRGlkVHJhbnNpdGlvblRvQmFja2dyb3VuZCgpCiB7Ci0jaWYgRU5BQkxFKFBST1hJ
TUlUWV9ORVRXT1JLSU5HKQotICAgIHByb3hpbWl0eU1hbmFnZXIoKS5zdXNwZW5kKFN1c3BlbnNp
b25SZWFzb246OlByb2Nlc3NCYWNrZ3JvdW5kaW5nLCBbXSB7IH0pOwotI2VuZGlmCiB9CiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtUHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0ZvcmVncm91
bmQoKQogewotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKLSAgICBwcm94aW1pdHlN
YW5hZ2VyKCkucmVzdW1lKFJlc3VtcHRpb25SZWFzb246OlByb2Nlc3NGb3JlZ3JvdW5kaW5nKTsK
LSNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dhdGNob3MvTmV0d29ya1Byb3hpbWl0eUFz
c2VydGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTEwNzEyNGY1MDZhYTc5
NTA1NDBiYTFlOWNlOTcwMjEzODE2ZjA5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3
b3JrUHJveGltaXR5QXNzZXJ0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjAgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JL
SU5HKQotCi0jaW5jbHVkZSAiTW9iaWxlV2lGaVNQSS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVGlt
ZXIuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+Ci0KLU9CSkNfQ0xBU1MgSURTU2VydmljZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LWVudW0gY2xhc3MgUmVzdW1wdGlvblJlYXNvbiA6IHVpbnQ4X3Q7Ci1lbnVtIGNsYXNzIFN1c3Bl
bnNpb25SZWFzb24gOiB1aW50OF90OwotCi1jbGFzcyBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9u
IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uKTsK
LXB1YmxpYzoKLSAgICBjbGFzcyBUb2tlbiB7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFRva2VuKTsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IFRva2VuKE5ldHdvcmtQcm94
aW1pdHlBc3NlcnRpb24mIGFzc2VydGlvbikKLSAgICAgICAgICAgIDogbV9hc3NlcnRpb24geyBh
c3NlcnRpb24gfQotICAgICAgICB7Ci0gICAgICAgICAgICBtX2Fzc2VydGlvbi5ob2xkKCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICB+VG9rZW4oKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX2Fz
c2VydGlvbi5yZWxlYXNlKCk7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIE5l
dHdvcmtQcm94aW1pdHlBc3NlcnRpb24mIG1fYXNzZXJ0aW9uOwotICAgIH07Ci0KLSAgICB2b2lk
IHJlc3VtZShSZXN1bXB0aW9uUmVhc29uKTsKLSAgICB2b2lkIHN1c3BlbmQoU3VzcGVuc2lvblJl
YXNvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLQotcHJvdGVjdGVkOgotICAgIE5l
dHdvcmtQcm94aW1pdHlBc3NlcnRpb24oKTsKLSAgICB2aXJ0dWFsIH5OZXR3b3JrUHJveGltaXR5
QXNzZXJ0aW9uKCkgPSBkZWZhdWx0OwotCi0gICAgYm9vbCBtX2lzSG9sZGluZ0Fzc2VydGlvbiB7
IGZhbHNlIH07Ci0KLXByaXZhdGU6Ci0gICAgZW51bSBjbGFzcyBTdGF0ZSB7Ci0gICAgICAgIEJh
Y2tncm91bmRlZCwgLy8gQ2FuIGhvbGQgYXNzZXJ0aW9ucyB1bnRpbCBtX3N1c3BlbmRBZnRlckJh
Y2tncm91bmRpbmdUaW1lciBmaXJlcy4KLSAgICAgICAgUmVzdW1lZCwgLy8gQ2FuIGhvbGQgYXNz
ZXJ0aW9ucyBhdCBhbnkgdGltZS4KLSAgICAgICAgU3VzcGVuZGVkLCAvLyBDYW4gbm90IGhvbGQg
YXNzZXJ0aW9ucy4KLSAgICB9OwotCi0gICAgdmlydHVhbCB2b2lkIGhvbGROb3coKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlbGVhc2VOb3coKSA9IDA7Ci0KLSAgICB2b2lkIGhvbGQoKTsKLSAg
ICB2b2lkIHJlbGVhc2UoKTsKLSAgICB2b2lkIHJlbGVhc2VUaW1lckZpcmVkKCk7Ci0gICAgdm9p
ZCBzdXNwZW5kQWZ0ZXJCYWNrZ3JvdW5kaW5nVGltZXJGaXJlZCgpOwotICAgIHZvaWQgc3VzcGVu
ZE5vdygpOwotCi0gICAgdWludDY0X3QgbV9hc3NlcnRpb25Db3VudCB7IDAgfTsKLSAgICBTdGF0
ZSBtX3N0YXRlIHsgU3RhdGU6OlN1c3BlbmRlZCB9OwotICAgIFdlYkNvcmU6OkRlZmVycmFibGVP
bmVTaG90VGltZXIgbV9yZWxlYXNlVGltZXI7Ci0gICAgV2ViQ29yZTo6RGVmZXJyYWJsZU9uZVNo
b3RUaW1lciBtX3N1c3BlbmRBZnRlckJhY2tncm91bmRpbmdUaW1lcjsKLX07Ci0KLWNsYXNzIEJs
dWV0b290aFByb3hpbWl0eUFzc2VydGlvbiBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrUHJveGltaXR5
QXNzZXJ0aW9uIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBCbHVldG9vdGhQcm94aW1pdHlBc3Nl
cnRpb24oSURTU2VydmljZSAqKTsKLQotICAgIHZvaWQgc3VzcGVuZChTdXNwZW5zaW9uUmVhc29u
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotCi1wcml2YXRlOgotICAgIHZvaWQgaG9s
ZE5vdygpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVsZWFzZU5vdygpIG92ZXJyaWRlOwotCi0gICAg
UmV0YWluUHRyPElEU1NlcnZpY2U+IG1faWRzU2VydmljZTsKLX07Ci0KLWNsYXNzIFdpRmlQcm94
aW1pdHlBc3NlcnRpb24gZmluYWwgOiBwdWJsaWMgTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbiB7
Ci1wdWJsaWM6Ci0gICAgV2lGaVByb3hpbWl0eUFzc2VydGlvbigpOwotCi1wcml2YXRlOgotICAg
IHZvaWQgaG9sZE5vdygpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVsZWFzZU5vdygpIG92ZXJyaWRl
OwotCi0gICAgUmV0YWluUHRyPFdpRmlNYW5hZ2VyQ2xpZW50UmVmPiBtX3dpRmlNYW5hZ2VyQ2xp
ZW50OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoUFJP
WElNSVRZX05FVFdPUktJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dhdGNob3MvTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLm1tCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MjIzYTUzYjkzOTNjODFkYmE1MjUzNTQxN2RhYzhi
MjlmYjRkMDNjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5QXNz
ZXJ0aW9uLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMjQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIk5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24uaCIK
LQotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKLQotI2ltcG9ydCAiTG9nZ2luZy5o
IgotI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3MuaCIKLSNpbXBvcnQgIk5ldHdvcmtQcm94aW1pdHlN
YW5hZ2VyLmgiCi0jaW1wb3J0IDxJRFMvSURTX1ByaXZhdGUuaD4KLSNpbXBvcnQgPHd0Zi9CbG9j
a1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RhdGljIGF1dG8gYXNzZXJ0aW9uUmVs
ZWFzZURlbGF5QWZ0ZXJCYWNrZ3JvdW5kaW5nID0gMTBfczsKLXN0YXRpYyBhdXRvIGFzc2VydGlv
blJlbGVhc2VEZWxheUZvckh5c3RlcmVzaXMgPSAxMF9zOwotCi1OZXR3b3JrUHJveGltaXR5QXNz
ZXJ0aW9uOjpOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uKCkKLSAgICA6IG1fcmVsZWFzZVRpbWVy
IHsgKnRoaXMsICZOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uOjpyZWxlYXNlVGltZXJGaXJlZCwg
YXNzZXJ0aW9uUmVsZWFzZURlbGF5Rm9ySHlzdGVyZXNpcyB9Ci0gICAgLCBtX3N1c3BlbmRBZnRl
ckJhY2tncm91bmRpbmdUaW1lciB7ICp0aGlzLCAmTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6
c3VzcGVuZEFmdGVyQmFja2dyb3VuZGluZ1RpbWVyRmlyZWQsIGFzc2VydGlvblJlbGVhc2VEZWxh
eUFmdGVyQmFja2dyb3VuZGluZyB9Ci17Ci19Ci0KLXZvaWQgTmV0d29ya1Byb3hpbWl0eUFzc2Vy
dGlvbjo6aG9sZCgpCi17Ci0gICAgKyttX2Fzc2VydGlvbkNvdW50OwotCi0gICAgaWYgKG1fc3Rh
dGUgPT0gU3RhdGU6OlN1c3BlbmRlZCkgewotICAgICAgICBBU1NFUlQoIW1faXNIb2xkaW5nQXNz
ZXJ0aW9uKTsKLSAgICAgICAgQVNTRVJUKCFtX3JlbGVhc2VUaW1lci5pc0FjdGl2ZSgpKTsKLSAg
ICAgICAgQVNTRVJUKCFtX3N1c3BlbmRBZnRlckJhY2tncm91bmRpbmdUaW1lci5pc0FjdGl2ZSgp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChtX3JlbGVhc2VUaW1lci5pc0Fj
dGl2ZSgpKSB7Ci0gICAgICAgIEFTU0VSVChtX2lzSG9sZGluZ0Fzc2VydGlvbik7Ci0gICAgICAg
IG1fcmVsZWFzZVRpbWVyLnN0b3AoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChtX2Fzc2VydGlvbkNvdW50ID09IDEpIHsKLSAgICAgICAgQVNTRVJUKCFtX2lzSG9sZGluZ0Fz
c2VydGlvbik7Ci0gICAgICAgIGhvbGROb3coKTsKLSAgICB9Ci0KLSAgICBBU1NFUlQobV9pc0hv
bGRpbmdBc3NlcnRpb24pOwotfQotCi12b2lkIE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb246OnJl
bGVhc2UoKQotewotICAgIEFTU0VSVChtX2Fzc2VydGlvbkNvdW50KTsKLSAgICBpZiAoIW1fYXNz
ZXJ0aW9uQ291bnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC0tbV9hc3NlcnRpb25Db3VudDsK
LQotICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpTdXNwZW5kZWQpIHsKLSAgICAgICAgQVNTRVJU
KCFtX2lzSG9sZGluZ0Fzc2VydGlvbik7Ci0gICAgICAgIEFTU0VSVCghbV9yZWxlYXNlVGltZXIu
aXNBY3RpdmUoKSk7Ci0gICAgICAgIEFTU0VSVCghbV9zdXNwZW5kQWZ0ZXJCYWNrZ3JvdW5kaW5n
VGltZXIuaXNBY3RpdmUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQo
bV9pc0hvbGRpbmdBc3NlcnRpb24pOwotICAgIEFTU0VSVCghbV9yZWxlYXNlVGltZXIuaXNBY3Rp
dmUoKSk7Ci0gICAgaWYgKCFtX2Fzc2VydGlvbkNvdW50KQotICAgICAgICBtX3JlbGVhc2VUaW1l
ci5yZXN0YXJ0KCk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6cmVzdW1l
KFJlc3VtcHRpb25SZWFzb24pCi17Ci0gICAgc3dpdGNoIChtX3N0YXRlKSB7Ci0gICAgY2FzZSBT
dGF0ZTo6QmFja2dyb3VuZGVkOgotICAgICAgICBtX3N1c3BlbmRBZnRlckJhY2tncm91bmRpbmdU
aW1lci5zdG9wKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU3RhdGU6OlJlc3VtZWQ6Ci0g
ICAgICAgIEFTU0VSVCghbV9zdXNwZW5kQWZ0ZXJCYWNrZ3JvdW5kaW5nVGltZXIuaXNBY3RpdmUo
KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU3RhdGU6OlN1c3BlbmRlZDoKLSAgICAgICAg
QVNTRVJUKCFtX2lzSG9sZGluZ0Fzc2VydGlvbik7Ci0gICAgICAgIEFTU0VSVCghbV9yZWxlYXNl
VGltZXIuaXNBY3RpdmUoKSk7Ci0gICAgICAgIEFTU0VSVCghbV9zdXNwZW5kQWZ0ZXJCYWNrZ3Jv
dW5kaW5nVGltZXIuaXNBY3RpdmUoKSk7Ci0gICAgICAgIGhvbGROb3coKTsKLSAgICAgICAgaWYg
KCFtX2Fzc2VydGlvbkNvdW50KQotICAgICAgICAgICAgbV9yZWxlYXNlVGltZXIucmVzdGFydCgp
OwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBtX3N0YXRlID0gU3RhdGU6OlJlc3VtZWQ7
Ci19Ci0KLXZvaWQgTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6c3VzcGVuZChTdXNwZW5zaW9u
UmVhc29uIHJlYXNvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQotewotICAgIHN3aXRjaCAocmVhc29uKSB7Ci0gICAgY2FzZSBTdXNwZW5zaW9uUmVhc29u
OjpQcm9jZXNzQmFja2dyb3VuZGluZzoKLSAgICAgICAgLy8gVGhlIE5ldHdvcmtpbmcgcHJvY2Vz
cyBpcyBiZWluZyBiYWNrZ3JvdW5kZWQuIFdlIHNob3VsZCBkcm9wIG91ciBhc3NlcnRpb25zCi0g
ICAgICAgIC8vIHNvb24sIGluIGNhc2UgdGhlIHN5c3RlbSBzdXNwZW5kcyB0aGUgcHJvY2VzcyBi
ZWZvcmUgd2UgcmVjZWl2ZSBQcm9jZXNzU3VzcGVuZGluZy4KLSAgICAgICAgbV9zdGF0ZSA9IFN0
YXRlOjpCYWNrZ3JvdW5kZWQ7Ci0gICAgICAgIG1fc3VzcGVuZEFmdGVyQmFja2dyb3VuZGluZ1Rp
bWVyLnJlc3RhcnQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdXNwZW5zaW9uUmVhc29u
OjpQcm9jZXNzU3VzcGVuZGluZzoKLSAgICAgICAgLy8gVGhlIE5ldHdvcmtpbmcgcHJvY2VzcyBp
cyBiZWluZyBzdXNwZW5kZWQsIHNvIHdlIG5lZWQgdG8gZHJvcCBvdXIgYXNzZXJ0aW9ucwotICAg
ICAgICAvLyBpbW1lZGlhdGVseSBiZWZvcmUgdGhhdCBoYXBwZW5zLgotICAgICAgICBzdXNwZW5k
Tm93KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
Ci19Ci0KLXZvaWQgTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6c3VzcGVuZE5vdygpCi17Ci0g
ICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN1c3BlbmRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV9zdGF0ZSA9IFN0YXRlOjpTdXNwZW5kZWQ7Ci0gICAgbV9yZWxlYXNlVGltZXIuc3RvcCgp
OwotICAgIG1fc3VzcGVuZEFmdGVyQmFja2dyb3VuZGluZ1RpbWVyLnN0b3AoKTsKLSAgICByZWxl
YXNlTm93KCk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6cmVsZWFzZVRp
bWVyRmlyZWQoKQotewotICAgIEFTU0VSVChtX2lzSG9sZGluZ0Fzc2VydGlvbik7Ci0gICAgQVNT
RVJUKG1fc3RhdGUgIT0gU3RhdGU6OlN1c3BlbmRlZCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlv
bkNvdW50KTsKLSAgICBBU1NFUlQoIW1fcmVsZWFzZVRpbWVyLmlzQWN0aXZlKCkpOwotICAgIHJl
bGVhc2VOb3coKTsKLX0KLQotdm9pZCBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uOjpzdXNwZW5k
QWZ0ZXJCYWNrZ3JvdW5kaW5nVGltZXJGaXJlZCgpCi17Ci0gICAgQVNTRVJUKCFtX3N1c3BlbmRB
ZnRlckJhY2tncm91bmRpbmdUaW1lci5pc0FjdGl2ZSgpKTsKLSAgICBBU1NFUlQobV9zdGF0ZSAh
PSBTdGF0ZTo6U3VzcGVuZGVkKTsKLSAgICBzdXNwZW5kTm93KCk7Ci19Ci0KLUJsdWV0b290aFBy
b3hpbWl0eUFzc2VydGlvbjo6Qmx1ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uKElEU1NlcnZpY2Ug
Kmlkc1NlcnZpY2UpCi0gICAgOiBtX2lkc1NlcnZpY2UgeyBpZHNTZXJ2aWNlIH0KLXsKLX0KLQot
dm9pZCBCbHVldG9vdGhQcm94aW1pdHlBc3NlcnRpb246OnN1c3BlbmQoU3VzcGVuc2lvblJlYXNv
biByZWFzb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
LXsKLSAgICBhdXRvIHdhc0hvbGRpbmdBc3NlcnRpb24gPSBtX2lzSG9sZGluZ0Fzc2VydGlvbjsK
LSAgICBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uOjpzdXNwZW5kKHJlYXNvbiwgW10geyB9KTsK
LQotICAgIHN3aXRjaCAocmVhc29uKSB7Ci0gICAgY2FzZSBTdXNwZW5zaW9uUmVhc29uOjpQcm9j
ZXNzQmFja2dyb3VuZGluZzoKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBTdXNwZW5zaW9uUmVhc29uOjpQcm9jZXNzU3VzcGVuZGluZzoKLSAg
ICAgICAgQVNTRVJUKCFtX2lzSG9sZGluZ0Fzc2VydGlvbik7Ci0gICAgICAgIGlmICghd2FzSG9s
ZGluZ0Fzc2VydGlvbikgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSURTIHByb2Nlc3NlcyAtc2V0
TGlua1ByZWZlcmVuY2VzOiBvbiBhIGJhY2tncm91bmQgZGlzcGF0Y2ggcXVldWUgYW5kIHByb3Zp
ZGVzIG5vCi0gICAgICAgIC8vIGNvbXBsZXRpb24gaGFuZGxlci4gSWYgd2Ugc3VzcGVuZCBiZWZv
cmUgSURTIGZpbmlzaGVzIHNldHRpbmcgbGluayBwcmVmZXJlbmNlcywgdGhlCi0gICAgICAgIC8v
IEJsdWV0b290aCByYWRpbyBtaWdodCBzdGF5IGluIGEgaGlnaCBwb3dlciBtb2RlLCBoYXJtaW5n
IGJhdHRlcnkgbGlmZS4gRGVsYXkgc3VzcGVuc2lvbgotICAgICAgICAvLyBieSAzMCBzZWNvbmRz
IHRvIGVuc3VyZSAtc2V0TGlua1ByZWZlcmVuY2VzOiBhbHdheXMgZmluaXNoZXMgaXRzIHdvcmsu
Ci0gICAgICAgIGRpc3BhdGNoX2FmdGVyKGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1cs
IDMwICogTlNFQ19QRVJfU0VDKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbWFrZUJsb2Nr
UHRyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKS5nZXQoKSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLX0KLQotdm9pZCBCbHVldG9vdGhQcm94aW1pdHlBc3NlcnRpb246OmhvbGROb3coKQot
ewotICAgIGlmIChtX2lzSG9sZGluZ0Fzc2VydGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
UkVMRUFTRV9MT0coUHJveGltaXR5TmV0d29ya2luZywgIkhvbGRpbmcgQmx1ZXRvb3RoIENsYXNz
aWMgYXNzZXJ0aW9uLiIpOwotICAgIFttX2lkc1NlcnZpY2Ugc2V0TGlua1ByZWZlcmVuY2VzOkB7
IElEU0xpbmtQcmVmZXJlbmNlT3B0aW9uUGFja2V0c1BlclNlY29uZEtleSA6IEAoMjAwKSB9XTsK
LSAgICBtX2lzSG9sZGluZ0Fzc2VydGlvbiA9IHRydWU7Ci19Ci0KLXZvaWQgQmx1ZXRvb3RoUHJv
eGltaXR5QXNzZXJ0aW9uOjpyZWxlYXNlTm93KCkKLXsKLSAgICBpZiAoIW1faXNIb2xkaW5nQXNz
ZXJ0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSRUxFQVNFX0xPRyhQcm94aW1pdHlOZXR3
b3JraW5nLCAiUmVsZWFzaW5nIEJsdWV0b290aCBDbGFzc2ljIGFzc2VydGlvbi4iKTsKLSAgICBb
bV9pZHNTZXJ2aWNlIHNldExpbmtQcmVmZXJlbmNlczpAeyBJRFNMaW5rUHJlZmVyZW5jZU9wdGlv
blBhY2tldHNQZXJTZWNvbmRLZXkgOiBAKDApIH1dOwotICAgIG1faXNIb2xkaW5nQXNzZXJ0aW9u
ID0gZmFsc2U7Ci19Ci0KLVdpRmlQcm94aW1pdHlBc3NlcnRpb246OldpRmlQcm94aW1pdHlBc3Nl
cnRpb24oKQotICAgIDogbV93aUZpTWFuYWdlckNsaWVudCB7IGFkb3B0Q0YoV2lGaU1hbmFnZXJD
bGllbnRDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga1dpRmlDbGllbnRUeXBlTm9ybWFsKSkg
fQotewotfQotCi12b2lkIFdpRmlQcm94aW1pdHlBc3NlcnRpb246OmhvbGROb3coKQotewotICAg
IGlmIChtX2lzSG9sZGluZ0Fzc2VydGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUkVMRUFT
RV9MT0coUHJveGltaXR5TmV0d29ya2luZywgIkhvbGRpbmcgV2ktRmkgYXNzZXJ0aW9uLiIpOwot
ICAgIEFTU0VSVChXaUZpTWFuYWdlckNsaWVudEdldFR5cGUobV93aUZpTWFuYWdlckNsaWVudC5n
ZXQoKSkgPT0ga1dpRmlDbGllbnRUeXBlTm9ybWFsKTsKLSAgICBXaUZpTWFuYWdlckNsaWVudFNl
dFR5cGUobV93aUZpTWFuYWdlckNsaWVudC5nZXQoKSwga1dpRmlDbGllbnRUeXBlRGlyZWN0VG9D
bG91ZCk7Ci0gICAgbV9pc0hvbGRpbmdBc3NlcnRpb24gPSB0cnVlOwotfQotCi12b2lkIFdpRmlQ
cm94aW1pdHlBc3NlcnRpb246OnJlbGVhc2VOb3coKQotewotICAgIGlmICghbV9pc0hvbGRpbmdB
c3NlcnRpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIFJFTEVBU0VfTE9HKFByb3hpbWl0eU5l
dHdvcmtpbmcsICJSZWxlYXNpbmcgV2ktRmkgYXNzZXJ0aW9uLiIpOwotICAgIEFTU0VSVChXaUZp
TWFuYWdlckNsaWVudEdldFR5cGUobV93aUZpTWFuYWdlckNsaWVudC5nZXQoKSkgPT0ga1dpRmlD
bGllbnRUeXBlRGlyZWN0VG9DbG91ZCk7Ci0gICAgV2lGaU1hbmFnZXJDbGllbnRTZXRUeXBlKG1f
d2lGaU1hbmFnZXJDbGllbnQuZ2V0KCksIGtXaUZpQ2xpZW50VHlwZU5vcm1hbCk7Ci0gICAgbV9p
c0hvbGRpbmdBc3NlcnRpb24gPSBmYWxzZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
LSNlbmRpZiAvLyBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dhdGNob3MvTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5
TWFuYWdlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzRhNzk4MjhiMDhhYjBl
YjM2MzQ1ZDJhNTc4YjUyZGFmOWRhNTY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3
b3JrUHJveGltaXR5TWFuYWdlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTIxICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lO
RykKLQotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIgotI2luY2x1ZGUgIk5l
dHdvcmtQcm94aW1pdHlBc3NlcnRpb24uaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19DTEFTUyBJRFNTZXJ2aWNlOwotT0JK
Q19DTEFTUyBOU0FycmF5OwotT0JKQ19DTEFTUyBOU1VSTFJlcXVlc3Q7Ci1PQkpDX0NMQVNTIFdL
UHJveGltaXR5U2VydmljZURlbGVnYXRlOwotT0JKQ19DTEFTUyBXUk1faVJBVEludGVyZmFjZTsK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotfQotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgTmV0d29ya1Byb2Nlc3M7Ci1jbGFzcyBOZXR3b3JrRGF0
YVRhc2tDb2NvYTsKLWVudW0gY2xhc3MgTmV0d29ya1Byb3hpbWl0eVJlY29tbWVuZGF0aW9uIDog
dWludDhfdDsKLQotZW51bSBjbGFzcyBSZXN1bXB0aW9uUmVhc29uIDogdWludDhfdCB7Ci0gICAg
UHJvY2Vzc0ZvcmVncm91bmRpbmcsCi0gICAgUHJvY2Vzc1Jlc3VtaW5nLAotfTsKLQotZW51bSBj
bGFzcyBTdXNwZW5zaW9uUmVhc29uIDogdWludDhfdCB7Ci0gICAgUHJvY2Vzc0JhY2tncm91bmRp
bmcsCi0gICAgUHJvY2Vzc1N1c3BlbmRpbmcKLX07Ci0KLWNsYXNzIE5ldHdvcmtQcm94aW1pdHlT
ZXJ2aWNlQ2xpZW50IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5OZXR3b3JrUHJveGltaXR5U2Vy
dmljZUNsaWVudCgpID0gZGVmYXVsdDsKLSAgICB2aXJ0dWFsIHZvaWQgZGV2aWNlc0NoYW5nZWQo
TlNBcnJheSAqZGV2aWNlcykgPSAwOwotfTsKLQotY2xhc3MgTmV0d29ya1Byb3hpbWl0eU1hbmFn
ZXIgZmluYWwgOiBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LCBwcml2YXRlIE5ldHdv
cmtQcm94aW1pdHlTZXJ2aWNlQ2xpZW50IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3b3JrUHJveGltaXR5TWFuYWdlcik7Ci1wdWJs
aWM6Ci0gICAgZXhwbGljaXQgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIoTmV0d29ya1Byb2Nlc3Mm
KTsKLSAgICB+TmV0d29ya1Byb3hpbWl0eU1hbmFnZXIoKTsKLQotICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBzdXBwbGVtZW50TmFtZSgpOwotCi0gICAgdm9pZCBhcHBseVByb3BlcnRpZXMoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgTmV0d29ya0RhdGFUYXNrQ29jb2EmLCBOU1VSTFJl
cXVlc3QgKiYpOwotICAgIHZvaWQgcmVzdW1lKFJlc3VtcHRpb25SZWFzb24pOwotICAgIHZvaWQg
c3VzcGVuZChTdXNwZW5zaW9uUmVhc29uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwot
Ci1wcml2YXRlOgotICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsKLSAgICAgICAgQmFj
a2dyb3VuZGVkLAotICAgICAgICBGb3JlZ3JvdW5kZWQsCi0gICAgICAgIEluaXRpYWxpemVkLAot
ICAgICAgICBSZXN1bWVkLAotICAgICAgICBTdXNwZW5kZWQsCi0gICAgfTsKLQotICAgIGJvb2wg
aXNDb21wYW5pb25JblByb3hpbWl0eSgpIGNvbnN0IHsgcmV0dXJuIG1faXNDb21wYW5pb25JblBy
b3hpbWl0eTsgfQotICAgIE5ldHdvcmtQcm94aW1pdHlSZWNvbW1lbmRhdGlvbiByZWNvbW1lbmRh
dGlvbigpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkVXNlRGlyZWN0V2lGaUluUHJveGltaXR5KCkg
Y29uc3QgeyByZXR1cm4gbV9zaG91bGRVc2VEaXJlY3RXaUZpSW5Qcm94aW1pdHk7IH0KLQotICAg
IHZvaWQgcHJvY2Vzc1JlY29tbWVuZGF0aW9ucyhOU0FycmF5ICpyZWNvbW1lbmRhdGlvbnMpOwot
ICAgIHZvaWQgcmVzdW1lUmVjb21tZW5kYXRpb25zKCk7Ci0gICAgdm9pZCBzdXNwZW5kUmVjb21t
ZW5kYXRpb25zKFN0YXRlIG9sZFN0YXRlKTsKLSAgICB2b2lkIHVwZGF0ZUNvbXBhbmlvblByb3hp
bWl0eSgpOwotICAgIHZvaWQgdXBkYXRlUmVjb21tZW5kYXRpb24oKTsKLQotICAgIC8vIE5ldHdv
cmtQcm9jZXNzU3VwcGxlbWVudAotICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpIG92ZXJyaWRlOwotCi0gICAgLy8gTmV0d29ya1Byb3hp
bWl0eVNlcnZpY2VDbGllbnQKLSAgICB2b2lkIGRldmljZXNDaGFuZ2VkKE5TQXJyYXkgKmRldmlj
ZXMpIG92ZXJyaWRlOwotCi0gICAgdW5zaWduZWQgbV9jb250ZXh0SWRlbnRpZmllciB7IDAgfTsK
LSAgICBib29sIG1faXNDb21wYW5pb25JblByb3hpbWl0eSB7IGZhbHNlIH07Ci0gICAgYm9vbCBt
X3Nob3VsZFVzZURpcmVjdFdpRmlJblByb3hpbWl0eSB7IGZhbHNlIH07Ci0gICAgU3RhdGUgbV9z
dGF0ZSB7IFN0YXRlOjpJbml0aWFsaXplZCB9OwotICAgIFJldGFpblB0cjxXUk1faVJBVEludGVy
ZmFjZT4gbV9pUkFUSW50ZXJmYWNlOwotICAgIFJldGFpblB0cjxJRFNTZXJ2aWNlPiBtX2lkc1Nl
cnZpY2U7Ci0gICAgUmV0YWluUHRyPFdLUHJveGltaXR5U2VydmljZURlbGVnYXRlPiBtX2lkc1Nl
cnZpY2VEZWxlZ2F0ZTsKLSAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBtX3JlY29t
bWVuZGF0aW9uUXVldWU7Ci0gICAgQmx1ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uIG1fYmx1ZXRv
b3RoUHJveGltaXR5QXNzZXJ0aW9uOwotICAgIFdpRmlQcm94aW1pdHlBc3NlcnRpb24gbV93aUZp
UHJveGltaXR5QXNzZXJ0aW9uOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3dhdGNob3MvTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIubW0gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dhdGNob3MvTmV0d29ya1Byb3hpbWl0eU1hbmFn
ZXIubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1NzczZWI0NWRmNGRiMTg1NDlm
ODBkOGE3YjlmOGJjM2E5MGQwNDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93YXRjaG9zL05ldHdvcmtQ
cm94aW1pdHlNYW5hZ2VyLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMzI1ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIk5ldHdvcmtQcm94aW1pdHlNYW5h
Z2VyLmgiCi0KLSNpZiBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCi0KLSNpbXBvcnQgIkxv
Z2dpbmcuaCIKLSNpbXBvcnQgIk5ldHdvcmtEYXRhVGFza0NvY29hLmgiCi0jaW1wb3J0ICJOZXR3
b3JrUHJvY2Vzcy5oIgotI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aCIKLSNpbXBvcnQgPElEUy9JRFMuaD4KLSNpbXBvcnQgPFdpcmVsZXNzQ29leE1hbmFnZXIvV1JN
X2lSQVRJbnRlcmZhY2UuaD4KLSNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+Ci0j
aW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KLSNpbXBvcnQgPHd0Zi9Cb3guaD4KLSNpbXBvcnQgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgotI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+Ci0j
aW1wb3J0IDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KLQotV1RGX0RFQ0xBUkVfQ0Zf
VFlQRV9UUkFJVChTQ05ldHdvcmtJbnRlcmZhY2UpOwotCi1AaW50ZXJmYWNlIFdLUHJveGltaXR5
U2VydmljZURlbGVnYXRlIDogTlNPYmplY3QgPElEU1NlcnZpY2VEZWxlZ2F0ZT4KLS0gKHZvaWQp
c2V0Q2xpZW50OihXZWJLaXQ6Ok5ldHdvcmtQcm94aW1pdHlTZXJ2aWNlQ2xpZW50KiljbGllbnQ7
Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXS1Byb3hpbWl0eVNlcnZpY2VEZWxlZ2F0ZSB7Ci0g
ICAgV2ViS2l0OjpOZXR3b3JrUHJveGltaXR5U2VydmljZUNsaWVudCogX2NsaWVudDsKLX0KLQot
LSAodm9pZClzZXRDbGllbnQ6KFdlYktpdDo6TmV0d29ya1Byb3hpbWl0eVNlcnZpY2VDbGllbnQq
KWNsaWVudAotewotICAgIF9jbGllbnQgPSBjbGllbnQ7Ci19Ci0KLS0gKHZvaWQpc2VydmljZToo
SURTU2VydmljZSAqKXNlcnZpY2UgZGV2aWNlc0NoYW5nZWQ6KE5TQXJyYXkgKilkZXZpY2VzCi17
Ci0gICAgaWYgKF9jbGllbnQpCi0gICAgICAgIF9jbGllbnQtPmRldmljZXNDaGFuZ2VkKGRldmlj
ZXMpOwotfQotCi0tICh2b2lkKXNlcnZpY2U6KElEU1NlcnZpY2UgKilzZXJ2aWNlIG5lYXJieURl
dmljZXNDaGFuZ2VkOihOU0FycmF5ICopZGV2aWNlcwotewotICAgIGlmIChfY2xpZW50KQotICAg
ICAgICBfY2xpZW50LT5kZXZpY2VzQ2hhbmdlZChkZXZpY2VzKTsKLX0KLQotQGVuZAotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotZW51bSBjbGFzcyBOZXR3b3JrUHJveGltaXR5UmVjb21tZW5kYXRp
b24gOiB1aW50OF90IHsKLSAgICBCbHVldG9vdGgsCi0gICAgTm9uZSwKLSAgICBXaUZpLAotfTsK
LQotTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6Ok5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyKE5ldHdv
cmtQcm9jZXNzJikKLSAgICA6IG1faWRzU2VydmljZSB7IGFkb3B0TlMoW1tJRFNTZXJ2aWNlIGFs
bG9jXSBpbml0V2l0aFNlcnZpY2U6QCJjb20uYXBwbGUucHJpdmF0ZS5hbGxveS53ZWJraXRuZXR3
b3JraW5nIl0pIH0KLSAgICAsIG1faWRzU2VydmljZURlbGVnYXRlIHsgYWRvcHROUyhbW1dLUHJv
eGltaXR5U2VydmljZURlbGVnYXRlIGFsbG9jXSBpbml0XSkgfQotICAgICwgbV9yZWNvbW1lbmRh
dGlvblF1ZXVlIHsgYWRvcHRPU09iamVjdChkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYktpdCBO
ZXR3b3JrIFByb3hpbWl0eSBSZWNvbW1lbmRhdGlvbiBRdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NF
UklBTCkpIH0KLSAgICAsIG1fYmx1ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uIHsgbV9pZHNTZXJ2
aWNlLmdldCgpIH0KLXsKLSAgICBbbV9pZHNTZXJ2aWNlRGVsZWdhdGUgc2V0Q2xpZW50OnRoaXNd
OwotICAgIFttX2lkc1NlcnZpY2UgYWRkRGVsZWdhdGU6bV9pZHNTZXJ2aWNlRGVsZWdhdGUuZ2V0
KCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKV07Ci19Ci0KLU5ldHdvcmtQcm94aW1p
dHlNYW5hZ2VyOjp+TmV0d29ya1Byb3hpbWl0eU1hbmFnZXIoKQotewotICAgIFttX2lkc1NlcnZp
Y2VEZWxlZ2F0ZSBzZXRDbGllbnQ6bnVsbHB0cl07Ci19Ci0KLWNvbnN0IGNoYXIqIE5ldHdvcmtQ
cm94aW1pdHlNYW5hZ2VyOjpzdXBwbGVtZW50TmFtZSgpCi17Ci0gICAgcmV0dXJuICJOZXR3b3Jr
UHJveGltaXR5TWFuYWdlciI7Ci19Ci0KLXN0YXRpYyB2b2lkIGJpbmRSZXF1ZXN0VG9XaUZpKE5T
VVJMUmVxdWVzdCAqJiByZXF1ZXN0KQotewotICAgIHN0YXRpYyBOU1N0cmluZyAqd2lGaUludGVy
ZmFjZUlkZW50aWZpZXIgPSBbXSgpIC0+IE5TU3RyaW5nICogewotICAgICAgICBhdXRvIGludGVy
ZmFjZXMgPSBhZG9wdENGKFNDTmV0d29ya0ludGVyZmFjZUNvcHlBbGwoKSk7Ci0gICAgICAgIGZv
ciAoQ0ZJbmRleCBpID0gMCwgY291bnQgPSBDRkFycmF5R2V0Q291bnQoaW50ZXJmYWNlcy5nZXQo
KSk7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvIGludGVyZmFjZSA9IGNoZWNr
ZWRfY2ZfY2FzdDxTQ05ldHdvcmtJbnRlcmZhY2VSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgo
aW50ZXJmYWNlcy5nZXQoKSwgaSkpOwotICAgICAgICAgICAgaWYgKCFDRkVxdWFsKFNDTmV0d29y
a0ludGVyZmFjZUdldEludGVyZmFjZVR5cGUoaW50ZXJmYWNlKSwga1NDTmV0d29ya0ludGVyZmFj
ZVR5cGVJRUVFODAyMTEpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAg
ICBhdXRvIGlkZW50aWZpZXIgPSByZXRhaW5QdHIoU0NOZXR3b3JrSW50ZXJmYWNlR2V0QlNETmFt
ZShpbnRlcmZhY2UpKTsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HKFByb3hpbWl0eU5ldHdvcmtp
bmcsICJEZXRlcm1pbmVkIFdpLUZpIGludGVyZmFjZSBpZGVudGlmaWVyIGlzICVALiIsIGlkZW50
aWZpZXIuZ2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuIChOU1N0cmluZyAqKWlkZW50aWZpZXIu
bGVha1JlZigpOwotICAgICAgICB9Ci0KLSAgICAgICAgUkVMRUFTRV9MT0coUHJveGltaXR5TmV0
d29ya2luZywgIkZhaWxlZCB0byBkZXRlcm1pbmUgV2ktRmkgaW50ZXJmYWNlIGlkZW50aWZpZXIu
Iik7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfSgpOwotCi0gICAgaWYgKCF3aUZpSW50ZXJm
YWNlSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBtdXRhYmxlUmVxdWVz
dCA9IGFkb3B0TlMoW3JlcXVlc3QgbXV0YWJsZUNvcHldKTsKLSAgICBbbXV0YWJsZVJlcXVlc3Qg
c2V0Qm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOndpRmlJbnRlcmZhY2VJZGVudGlmaWVyXTsKLSAg
ICByZXF1ZXN0ID0gbXV0YWJsZVJlcXVlc3QuYXV0b3JlbGVhc2UoKTsKLX0KLQotdm9pZCBOZXR3
b3JrUHJveGltaXR5TWFuYWdlcjo6YXBwbHlQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYSYgZGF0YVRh
c2ssIE5TVVJMUmVxdWVzdCAqJiBuc1JlcXVlc3QpCi17Ci0gICAgLy8gSWYgdGhlIGNsaWVudCBo
YXMgYWxyZWFkeSBib3VuZCB0aGUgcmVxdWVzdCB0byBhbiBpZGVudGlmaWVyLCBkb24ndCBvdmVy
cmlkZSBpdC4KLSAgICBpZiAobnNSZXF1ZXN0LmJvdW5kSW50ZXJmYWNlSWRlbnRpZmllci5sZW5n
dGgpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChkYXRhVGFzay5pc1RvcExldmVsTmF2aWdh
dGlvbigpKQotICAgICAgICB1cGRhdGVSZWNvbW1lbmRhdGlvbigpOwotCi0gICAgc3dpdGNoIChy
ZWNvbW1lbmRhdGlvbigpKSB7Ci0gICAgY2FzZSBOZXR3b3JrUHJveGltaXR5UmVjb21tZW5kYXRp
b246OkJsdWV0b290aDoKLSAgICAgICAgZGF0YVRhc2suaG9sZFByb3hpbWl0eUFzc2VydGlvbiht
X2JsdWV0b290aFByb3hpbWl0eUFzc2VydGlvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
TmV0d29ya1Byb3hpbWl0eVJlY29tbWVuZGF0aW9uOjpOb25lOgotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIE5ldHdvcmtQcm94aW1pdHlSZWNvbW1lbmRhdGlvbjo6V2lGaToKLSAgICAgICAgZGF0
YVRhc2suaG9sZFByb3hpbWl0eUFzc2VydGlvbihtX3dpRmlQcm94aW1pdHlBc3NlcnRpb24pOwot
ICAgICAgICBiaW5kUmVxdWVzdFRvV2lGaShuc1JlcXVlc3QpOwotICAgICAgICBicmVhazsKLSAg
ICB9Ci19Ci0KLXZvaWQgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OnJlc3VtZShSZXN1bXB0aW9u
UmVhc29uIHJlYXNvbikKLXsKLSAgICBzd2l0Y2ggKHJlYXNvbikgewotICAgIGNhc2UgUmVzdW1w
dGlvblJlYXNvbjo6UHJvY2Vzc0ZvcmVncm91bmRpbmc6Ci0gICAgICAgIG1fc3RhdGUgPSBTdGF0
ZTo6Rm9yZWdyb3VuZGVkOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFJlc3VtcHRpb25SZWFz
b246OlByb2Nlc3NSZXN1bWluZzoKLSAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZXN1bWVkOwot
ICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXN1bWVSZWNvbW1lbmRhdGlvbnMoKTsKLQot
ICAgIHN3aXRjaCAocmVjb21tZW5kYXRpb24oKSkgewotICAgIGNhc2UgTmV0d29ya1Byb3hpbWl0
eVJlY29tbWVuZGF0aW9uOjpCbHVldG9vdGg6Ci0gICAgICAgIG1fYmx1ZXRvb3RoUHJveGltaXR5
QXNzZXJ0aW9uLnJlc3VtZShyZWFzb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE5ldHdv
cmtQcm94aW1pdHlSZWNvbW1lbmRhdGlvbjo6Tm9uZToKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBOZXR3b3JrUHJveGltaXR5UmVjb21tZW5kYXRpb246OldpRmk6Ci0gICAgICAgIG1fd2lGaVBy
b3hpbWl0eUFzc2VydGlvbi5yZXN1bWUocmVhc29uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQot
fQotCi12b2lkIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjpzdXNwZW5kKFN1c3BlbnNpb25SZWFz
b24gcmVhc29uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Ci17Ci0gICAgYXV0byBvbGRTdGF0ZSA9IG1fc3RhdGU7Ci0gICAgc3dpdGNoIChyZWFzb24pIHsK
LSAgICBjYXNlIFN1c3BlbnNpb25SZWFzb246OlByb2Nlc3NCYWNrZ3JvdW5kaW5nOgotICAgICAg
ICBtX3N0YXRlID0gU3RhdGU6OkJhY2tncm91bmRlZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBTdXNwZW5zaW9uUmVhc29uOjpQcm9jZXNzU3VzcGVuZGluZzoKLSAgICAgICAgbV9zdGF0ZSA9
IFN0YXRlOjpTdXNwZW5kZWQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHN1c3BlbmRS
ZWNvbW1lbmRhdGlvbnMob2xkU3RhdGUpOwotCi0gICAgYXV0byB3cmFwcGVkQ29tcGxldGlvbkhh
bmRsZXIgPSBbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAg
UkVMRUFTRV9MT0coUHJveGltaXR5TmV0d29ya2luZywgIkZpbmlzaGVkIHN1c3BlbmRpbmcgTmV0
d29ya1Byb3hpbWl0eU1hbmFnZXIgKHN0YXRlOiAlaGh1KS4iLCBtX3N0YXRlKTsKLSAgICB9Owot
Ci0gICAgUkVMRUFTRV9MT0coUHJveGltaXR5TmV0d29ya2luZywgIlN1c3BlbmRpbmcgTmV0d29y
a1Byb3hpbWl0eU1hbmFnZXIgKHN0YXRlOiAlaGh1KS4iLCBtX3N0YXRlKTsKLSAgICBtX2JsdWV0
b290aFByb3hpbWl0eUFzc2VydGlvbi5zdXNwZW5kKHJlYXNvbiwgV1RGTW92ZSh3cmFwcGVkQ29t
cGxldGlvbkhhbmRsZXIpKTsKLSAgICBtX3dpRmlQcm94aW1pdHlBc3NlcnRpb24uc3VzcGVuZChy
ZWFzb24sIFtdIHsgfSk7Ci19Ci0KLU5ldHdvcmtQcm94aW1pdHlSZWNvbW1lbmRhdGlvbiBOZXR3
b3JrUHJveGltaXR5TWFuYWdlcjo6cmVjb21tZW5kYXRpb24oKSBjb25zdAotewotICAgIGlmICgh
aXNDb21wYW5pb25JblByb3hpbWl0eSgpKQotICAgICAgICByZXR1cm4gTmV0d29ya1Byb3hpbWl0
eVJlY29tbWVuZGF0aW9uOjpOb25lOwotCi0gICAgaWYgKHNob3VsZFVzZURpcmVjdFdpRmlJblBy
b3hpbWl0eSgpKQotICAgICAgICByZXR1cm4gTmV0d29ya1Byb3hpbWl0eVJlY29tbWVuZGF0aW9u
OjpXaUZpOwotCi0gICAgcmV0dXJuIE5ldHdvcmtQcm94aW1pdHlSZWNvbW1lbmRhdGlvbjo6Qmx1
ZXRvb3RoOwotfQotCi12b2lkIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjpwcm9jZXNzUmVjb21t
ZW5kYXRpb25zKE5TQXJyYXkgKnJlY29tbWVuZGF0aW9ucykKLXsKLSAgICBtX3Nob3VsZFVzZURp
cmVjdFdpRmlJblByb3hpbWl0eSA9IGZhbHNlOwotICAgIGJvb2wgZGlkU2VlRGlyZWN0V2lGaVJl
Y29tbWVuZGF0aW9uID0gZmFsc2U7Ci0gICAgZm9yIChXUk1faVJBVFByb3hpbWl0eVJlY29tbWVu
ZGF0aW9uICpyZWNvbW1lbmRhdGlvbiBpbiByZWNvbW1lbmRhdGlvbnMpIHsKLSAgICAgICAgc3dp
dGNoIChyZWNvbW1lbmRhdGlvbi5SZWNvbW1lbmRhdGlvblR5cGUpIHsKLSAgICAgICAgY2FzZSBX
Uk1SZWNvbW1lbmRhdGlvbkxpbmtUeXBlQlQ6Ci0gICAgICAgIGNhc2UgV1JNUmVjb21tZW5kYXRp
b25MaW5rVHlwZUNvbXBhbmlvbldpZmk6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBXUk1SZWNvbW1lbmRhdGlvbkxpbmtUeXBlRGlyZWN0V2lmaToKLSAgICAgICAgICAgIEFTU0VS
VCghZGlkU2VlRGlyZWN0V2lGaVJlY29tbWVuZGF0aW9uKTsKLSAgICAgICAgICAgIGRpZFNlZURp
cmVjdFdpRmlSZWNvbW1lbmRhdGlvbiA9IHRydWU7Ci0gICAgICAgICAgICBtX3Nob3VsZFVzZURp
cmVjdFdpRmlJblByb3hpbWl0eSA9IHJlY29tbWVuZGF0aW9uLmxpbmtSZWNvbW1lbmRhdGlvbklz
VmFsaWQgJiYgcmVjb21tZW5kYXRpb24ubGlua0lzUmVjb21tZW5kZWQ7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIFJFTEVBU0VfTE9HKFByb3hpbWl0eU5ldHdv
cmtpbmcsICJQcm9jZXNzZWQgaVJBVE1hbmFnZXIgcmVjb21tZW5kYXRpb25zIChzaG91bGRVc2VE
aXJlY3RXaUZpSW5Qcm94aW1pdHk6ICVkKS5cbiIsIG1fc2hvdWxkVXNlRGlyZWN0V2lGaUluUHJv
eGltaXR5KTsKLX0KLQotc3RhdGljIFdDTVByb2Nlc3NJZCB0b1Byb2Nlc3NJRCh1bnNpZ25lZCBj
b250ZXh0SWRlbnRpZmllcikKLXsKLSAgICBzd2l0Y2ggKGNvbnRleHRJZGVudGlmaWVyKSB7Ci0g
ICAgY2FzZSBXUk1XZWJraXQ6Ci0gICAgICAgIHJldHVybiBXUk1XZWJraXQ7Ci0gICAgY2FzZSBX
Uk1XZWJraXRNYWlsOgotICAgICAgICByZXR1cm4gV1JNV2Via2l0TWFpbDsKLSAgICBjYXNlIFdS
TVdlYmtpdE5vdGlmaWNhdGlvbjoKLSAgICAgICAgcmV0dXJuIFdSTVdlYmtpdE5vdGlmaWNhdGlv
bjsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gV0NNVW5rbm93bjsKLSAgICB9Ci19Ci0K
LXZvaWQgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OnJlc3VtZVJlY29tbWVuZGF0aW9ucygpCi17
Ci0gICAgaWYgKG1faVJBVEludGVyZmFjZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdXBkYXRl
Q29tcGFuaW9uUHJveGltaXR5KCk7Ci0KLSAgICBhdXRvIHByb2Nlc3NJRCA9IHRvUHJvY2Vzc0lE
KG1fY29udGV4dElkZW50aWZpZXIpOwotICAgIGlmIChwcm9jZXNzSUQgPT0gV0NNVW5rbm93bikg
ewotICAgICAgICBSRUxFQVNFX0xPRyhQcm94aW1pdHlOZXR3b3JraW5nLCAiSW52YWxpZCBXQ00g
cHJvY2VzcyBJRCAoJWQpLiIsIG1fY29udGV4dElkZW50aWZpZXIpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgUkVMRUFTRV9MT0coUHJveGltaXR5TmV0d29ya2luZywgIlJlZ2lzdGVy
aW5nIHdpdGggaVJBVE1hbmFnZXIgKFdDTSBwcm9jZXNzIElEOiAlZCwgc3RhdGU6ICVoaHUpLiIs
IHByb2Nlc3NJRCwgbV9zdGF0ZSk7Ci0gICAgbV9pUkFUSW50ZXJmYWNlID0gYWRvcHROUyhbW1dS
TV9pUkFUSW50ZXJmYWNlIGFsbG9jXSBpbml0XSk7Ci0gICAgW21faVJBVEludGVyZmFjZSByZWdp
c3RlckNsaWVudDpwcm9jZXNzSUQgcXVldWU6bV9yZWNvbW1lbmRhdGlvblF1ZXVlLmdldCgpXTsK
LSAgICB1cGRhdGVSZWNvbW1lbmRhdGlvbigpOwotfQotCi12b2lkIE5ldHdvcmtQcm94aW1pdHlN
YW5hZ2VyOjpzdXNwZW5kUmVjb21tZW5kYXRpb25zKFN0YXRlIG9sZFN0YXRlKQotewotICAgIC8v
IElmIHRoaXMgaXMgbm90IGEgZm9yZWdyb3VuZC10by1iYWNrZ3JvdW5kIHRyYW5zaXRpb24sIGF2
b2lkIHVucmVnaXN0ZXJpbmcuIFBhZ2UgbG9hZHMgY2FuCi0gICAgLy8gb2Z0ZW4gY2F1c2UgdGhl
IG5ldHdvcmsgcHJvY2VzcyB0byByZXN1bWUsIHRyYW5zaXRpb24gdG8gdGhlIGJhY2tncm91bmQs
IHRoZW4gdHJhbnNpdGlvbiB0bwotICAgIC8vIHRoZSBmb3JlZ3JvdW5kIGluIHJhcGlkIHN1Y2Nl
c3Npb24sIGNhdXNpbmcgdW5uZWNlc3NhcnkgaVJBVE1hbmFnZXIgcmVnaXN0cmF0aW9uIGNodXJu
IGFuZAotICAgIC8vIGV4cG9zaW5nIGJ1Z3Mgc3VjaCBhcyA8cmRhcjovL3Byb2JsZW0vNDI1NjAz
MjA+LgotICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpCYWNrZ3JvdW5kZWQgJiYgb2xkU3RhdGUg
IT0gU3RhdGU6OkZvcmVncm91bmRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2lS
QVRJbnRlcmZhY2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJFTEVBU0VfTE9HKFByb3hpbWl0
eU5ldHdvcmtpbmcsICJVbnJlZ2lzdGVyaW5nIHdpdGggaVJBVE1hbmFnZXIgKFdDTSBwcm9jZXNz
IElEOiAlZCwgc3RhdGU6ICVoaHUpLiIsIG1fY29udGV4dElkZW50aWZpZXIsIG1fc3RhdGUpOwot
ICAgIFttX2lSQVRJbnRlcmZhY2UgdW5yZWdpc3RlckNsaWVudF07Ci0gICAgbV9pUkFUSW50ZXJm
YWNlID0gbmlsOwotICAgIG1faXNDb21wYW5pb25JblByb3hpbWl0eSA9IGZhbHNlOwotICAgIG1f
c2hvdWxkVXNlRGlyZWN0V2lGaUluUHJveGltaXR5ID0gZmFsc2U7Ci19Ci0KLXZvaWQgTmV0d29y
a1Byb3hpbWl0eU1hbmFnZXI6OnVwZGF0ZUNvbXBhbmlvblByb3hpbWl0eSgpCi17Ci0gICAgbV9p
c0NvbXBhbmlvbkluUHJveGltaXR5ID0gZmFsc2U7Ci0gICAgZm9yIChJRFNEZXZpY2UgKmRldmlj
ZSBpbiBbbV9pZHNTZXJ2aWNlIGRldmljZXNdKSB7Ci0gICAgICAgIGlmIChkZXZpY2UuaXNEZWZh
dWx0UGFpcmVkRGV2aWNlICYmIGRldmljZS5pc05lYXJieSkgewotICAgICAgICAgICAgbV9pc0Nv
bXBhbmlvbkluUHJveGltaXR5ID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgUkVMRUFTRV9MT0coUHJveGltaXR5TmV0d29ya2luZywgIkRldGVybWlu
ZWQgY29tcGFuaW9uIHByb3hpbWl0eSAoaXNDb21wYW5pb25JblByb3hpbWl0eTogJWQpLiIsIG1f
aXNDb21wYW5pb25JblByb3hpbWl0eSk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb3hpbWl0eU1hbmFn
ZXI6OnVwZGF0ZVJlY29tbWVuZGF0aW9uKCkKLXsKLSAgICBpZiAoIWlzQ29tcGFuaW9uSW5Qcm94
aW1pdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2lSQVRJbnRlcmZhY2UpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIFJFTEVBU0VfTE9HKFByb3hpbWl0eU5ldHdvcmtpbmcsICJS
ZXF1ZXN0aW5nIGFuIGltbWVkaWF0ZSByZWNvbW1lbmRhdGlvbiBmcm9tIGlSQVRNYW5hZ2VyLiIp
OwotCi0gICAgYXV0byBzZW1hcGhvcmUgPSBCb3g8QmluYXJ5U2VtYXBob3JlPjo6Y3JlYXRlKCk7
Ci0gICAgW21faVJBVEludGVyZmFjZSBnZXRQcm94aW1pdHlMaW5rUmVjb21tZW5kYXRpb246Tk8g
cmVjb21tZW5kYXRpb246W3RoaXMsIHNlbWFwaG9yZV0oTlNBcnJheTxXUk1faVJBVFByb3hpbWl0
eVJlY29tbWVuZGF0aW9uICo+ICpyZWNvbW1lbmRhdGlvbnMpIHsKLSAgICAgICAgcHJvY2Vzc1Jl
Y29tbWVuZGF0aW9ucyhyZWNvbW1lbmRhdGlvbnMpOwotICAgICAgICBzZW1hcGhvcmUtPnNpZ25h
bCgpOwotICAgIH1dOwotICAgIHNlbWFwaG9yZS0+d2FpdEZvcigxX3MpOwotfQotCi12b2lkIE5l
dHdvcmtQcm94aW1pdHlNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotewotICAgIG1fY29udGV4dElkZW50aWZpZXIg
PSBwYXJhbWV0ZXJzLndpcmVsZXNzQ29udGV4dElkZW50aWZpZXI7Ci0gICAgcmVzdW1lKFJlc3Vt
cHRpb25SZWFzb246OlByb2Nlc3NSZXN1bWluZyk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb3hpbWl0
eU1hbmFnZXI6OmRldmljZXNDaGFuZ2VkKE5TQXJyYXkgKikKLXsKLSAgICB1cGRhdGVDb21wYW5p
b25Qcm94aW1pdHkoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggOTcy
MzZlNzlmZDM1MmVjZjBjNTA5NGJjZDcwYjM0NTI1MGRjM2RjNi4uOWUzNzUyYWIwY2MxZjgwZjlk
ZDlkMjk2Njk4N2ZjZTY3MjY0ZTBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNDgsOSAr
NDgsNiBAQCBOZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0KIE5ldHdvcmtQ
cm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQogTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90
ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCiAKLU5ldHdvcmtQcm9jZXNzL3dhdGNob3MvTmV0d29ya1By
b3hpbWl0eUFzc2VydGlvbi5tbQotTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGlt
aXR5TWFuYWdlci5tbQotCiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xp
ZW50LmNwcAogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLmNwcAogTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5jcHAKaW5kZXggMzMyYjBlNTIxMWJkYzk3YmYxMmM4YTE5ZWI0M2E4YWMzODcwMDA2NS4uM2Ri
NzA1NjljOGE0ZTMzMzQzYjg0ZmEzMjdjMzIwYTMzNThlNGIzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5jcHAKQEAgLTEyNiw5ICsxMjYsNiBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkoKQogICAgIGNvcHktPm1fcHJvY2Vzc1N3YXBz
T25XaW5kb3dPcGVuV2l0aE9wZW5lciA9IHRoaXMtPm1fcHJvY2Vzc1N3YXBzT25XaW5kb3dPcGVu
V2l0aE9wZW5lcjsKICAgICBjb3B5LT5tX2lzQXV0b21hdGljUHJvY2Vzc1dhcm1pbmdFbmFibGVk
QnlDbGllbnQgPSB0aGlzLT5tX2lzQXV0b21hdGljUHJvY2Vzc1dhcm1pbmdFbmFibGVkQnlDbGll
bnQ7CiAgICAgY29weS0+bV91c2VzV2ViUHJvY2Vzc0NhY2hlID0gdGhpcy0+bV91c2VzV2ViUHJv
Y2Vzc0NhY2hlOwotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKLSAgICBjb3B5LT5t
X3dpcmVsZXNzQ29udGV4dElkZW50aWZpZXIgPSB0aGlzLT5tX3dpcmVsZXNzQ29udGV4dElkZW50
aWZpZXI7Ci0jZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBjb3B5LT5tX3N1cHByZXNz
ZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZSA9IHRoaXMtPm1fc3VwcHJlc3Nl
c0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmgKaW5kZXggZDNiMDlhODY1NTE1MGY4OWU2YjAyNDY4MTMxODc2YjExYWE1MjYyYy4uZjIx
YWY1ZjFkZmZmNzU4ZGM3ZDRiYzZkZjM4NjI2NThiODZkYmFmZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
aApAQCAtMTgwLDExICsxODAsNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGN1
c3RvbVdlYkNvbnRlbnRTZXJ2aWNlQnVuZGxlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
Y3VzdG9tV2ViQ29udGVudFNlcnZpY2VCdW5kbGVJZGVudGlmaWVyOyB9CiAgICAgdm9pZCBzZXRD
dXN0b21XZWJDb250ZW50U2VydmljZUJ1bmRsZUlkZW50aWZpZXIoY29uc3QgV1RGOjpTdHJpbmcm
IGN1c3RvbVdlYkNvbnRlbnRTZXJ2aWNlQnVuZGxlSWRlbnRpZmllcikgeyBtX2N1c3RvbVdlYkNv
bnRlbnRTZXJ2aWNlQnVuZGxlSWRlbnRpZmllciA9IGN1c3RvbVdlYkNvbnRlbnRTZXJ2aWNlQnVu
ZGxlSWRlbnRpZmllcjsgfQogCi0jaWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQotICAg
IHVuc2lnbmVkIHdpcmVsZXNzQ29udGV4dElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3dp
cmVsZXNzQ29udGV4dElkZW50aWZpZXI7IH0KLSAgICB2b2lkIHNldFdpcmVsZXNzQ29udGV4dElk
ZW50aWZpZXIodW5zaWduZWQgd2lyZWxlc3NDb250ZXh0SWRlbnRpZmllcikgeyBtX3dpcmVsZXNz
Q29udGV4dElkZW50aWZpZXIgPSB3aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyOyB9Ci0jZW5kaWYK
LQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgc3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJt
aW5hdGlvbk9uU3lzdGVtQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwcmVzc2VzQ29ubmVj
dGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2U7IH0KICAgICB2b2lkIHNldFN1cHByZXNzZXND
b25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZShib29sIHN1cHByZXNzZXNDb25uZWN0
aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZSkgeyBtX3N1cHByZXNzZXNDb25uZWN0aW9uVGVy
bWluYXRpb25PblN5c3RlbUNoYW5nZSA9IHN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25P
blN5c3RlbUNoYW5nZTsgfQpAQCAtMjM3LDEwICsyMzIsNiBAQCBwcml2YXRlOgogICAgIFdURjo6
U3RyaW5nIG1fY3REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlOwogI2VuZGlmCiAKLSNpZiBFTkFC
TEUoUFJPWElNSVRZX05FVFdPUktJTkcpCi0gICAgdW5zaWduZWQgbV93aXJlbGVzc0NvbnRleHRJ
ZGVudGlmaWVyIHsgMCB9OwotI2VuZGlmCi0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29s
IG1fc3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlIHsgZmFsc2Ug
fTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCmluZGV4IDNhYjBjM2JmNTFl
NjViODA3YmE0MzQ2NzBmMWY2ZWUzODE1NTUyZTUuLmUxODhkZDhmYjAxZmY4NDE4NjFkOGFmYjNm
ZjJhNjBlNTYzMTBkMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKQEAgLTQyLDcg
KzQyLDcgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpCiBAcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSkgTlNBcnJheTxOU1VSTCAqPiAqYWRkaXRpb25hbFJlYWRB
Y2Nlc3NBbGxvd2VkVVJMcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSwgaW9zKDExLjAp
KTsKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUgJiYgIVRBUkdFVF9PU19TSU1VTEFUT1IKLUBwcm9w
ZXJ0eSAobm9uYXRvbWljKSBOU1VJbnRlZ2VyIHdpcmVsZXNzQ29udGV4dElkZW50aWZpZXI7CitA
cHJvcGVydHkgKG5vbmF0b21pYykgTlNVSW50ZWdlciB3aXJlbGVzc0NvbnRleHRJZGVudGlmaWVy
IFdLX0FQSV9ERVBSRUNBVEVEKCJVc2Ugb2YgdGhpcyBBUEkgaXMgbm8gbG9uZ2VyIG5lY2Vzc2Fy
eSBhbmQgY2FuIGJlIHJlbW92ZWQiLCBpb3MoMTAuMTIsIFdLX0lPU19UQkEpKTsKICNlbmRpZgog
CiAvLyBOZXR3b3JrIFByb2Nlc3MgcHJvcGVydGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24ubW0KaW5kZXggOTZiMGE5ODVmZjNkMWFiNGI3NDI1NmMxODZkNDQ5M2VmZGU0ZmM1ZS4uMTZj
MzIzYjg4MDNkMTc0NzBkMTQxNjgzMWFjZmU1ZTdjYzhhOThhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLm1tCkBAIC0xMzcsMTUgKzEzNywxNCBAQCAtICh2b2lkKXNldEFkZGl0aW9u
YWxSZWFkQWNjZXNzQWxsb3dlZFVSTHM6KE5TQXJyYXk8TlNVUkwgKj4gKilhZGRpdGlvbmFsUmVh
ZEFjYwogICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNldEFkZGl0aW9uYWxSZWFkQWNj
ZXNzQWxsb3dlZFBhdGhzKFdURk1vdmUocGF0aHMpKTsKIH0KIAotI2lmIEVOQUJMRShQUk9YSU1J
VFlfTkVUV09SS0lORykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9T
X0ZBTUlMWV9TSU1VTEFUT1IpCiAtIChOU1VJbnRlZ2VyKXdpcmVsZXNzQ29udGV4dElkZW50aWZp
ZXIKIHsKLSAgICByZXR1cm4gX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+d2lyZWxlc3NDb250
ZXh0SWRlbnRpZmllcigpOworICAgIHJldHVybiAwOwogfQogCiAtICh2b2lkKXNldFdpcmVsZXNz
Q29udGV4dElkZW50aWZpZXI6KE5TVUludGVnZXIpaWRlbnRpZmllcgogewotICAgIF9wcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24tPnNldFdpcmVsZXNzQ29udGV4dElkZW50aWZpZXIoaWRlbnRpZmll
cik7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5kZXggYmVhMGQ5MmQ3MmQ5YTUzYzVhNDJhNjU4ZjJi
YTE2MTdhNzE4M2RjMi4uZWY5MmJhZDM1NjM1OWM0ZmRlYzFmZmMzYTdkYWQ4MTgyMGIyNWY0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9v
bENvY29hLm1tCkBAIC0yOTYsMTAgKzI5Niw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRm
b3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhCiAg
ICAgcGFyYW1ldGVycy5zdG9yYWdlQWNjZXNzQVBJRW5hYmxlZCA9IHN0b3JhZ2VBY2Nlc3NBUElF
bmFibGVkKCk7CiAgICAgcGFyYW1ldGVycy5zdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9u
T25TeXN0ZW1DaGFuZ2UgPSBtX2NvbmZpZ3VyYXRpb24tPnN1cHByZXNzZXNDb25uZWN0aW9uVGVy
bWluYXRpb25PblN5c3RlbUNoYW5nZSgpOwogCi0jaWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JL
SU5HKQotICAgIHBhcmFtZXRlcnMud2lyZWxlc3NDb250ZXh0SWRlbnRpZmllciA9IG1fY29uZmln
dXJhdGlvbi0+d2lyZWxlc3NDb250ZXh0SWRlbnRpZmllcigpOwotI2VuZGlmCi0KICAgICBwYXJh
bWV0ZXJzLnNob3VsZEVuYWJsZUlUUERhdGFiYXNlID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6W05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJbnRlcm5hbERlYnVnJUAiLCBXZWJQcmVmZXJlbmNl
c0tleTo6aXNJVFBEYXRhYmFzZUVuYWJsZWRLZXkoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpXV07
CiAgICAgcGFyYW1ldGVycy5kb3dubG9hZE1vbml0b3JTcGVlZE11bHRpcGxpZXIgPSBtX2NvbmZp
Z3VyYXRpb24tPmRvd25sb2FkTW9uaXRvclNwZWVkTXVsdGlwbGllcigpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzYzNkMGFhMzRm
YWEwNGVlYzVhYWI5YmM5MzNmMTg4MmE0YjBiOWNiLi4wOTg2M2VlNDg2MWEzY2M0YzgyZjZhYjI1
MjBjOGQ1N2VhYTdmMTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTEyODMsOCArMTI4Myw2IEBACiAJCUExMDJBNzA4MUVDMEVFRTkw
MEQ4MUQ4MiAvKiBjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIgRVNSLnBsdWdpbi5zYiBpbiBD
b3B5IFBsdWctaW4gU2FuZGJveCBQcm9maWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QTVFMzk0OTFENUJEOEE3MDBCNEI3Q0UgLyogY29tLm1hY3JvbWVkaWEuRmxhc2gg
UGxheWVyIEVTUi5wbHVnaW4uc2IgKi87IH07CiAJCUExMDQ2RUExMjA3OTI2MzEwMEYwQzVEOCAv
KiBXS1BERlZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExMDQ2RTlGMjA3OTI2MzEwMEYwQzVEOCAvKiBXS1BERlZpZXcuaCAqLzsgfTsKIAkJQTEw
NUQwRDEyMTI3MzRCMjAwMzRGNkM3IC8qIE5ldHdvcmtCbG9iUmVnaXN0cnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMDVEMEQwMjEyNzM0QjEwMDM0
RjZDNyAvKiBOZXR3b3JrQmxvYlJlZ2lzdHJ5LmggKi87IH07Ci0JCUExMTQ1NUFDMjExRkNGQ0Ew
MENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE0NTVBQTIxMUZDRkNBMDBDQTkzNUIgLyog
TmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbi5oICovOyB9OwotCQlBMTE0NTVCMDIxMUZEMjUyMDBD
QTkzNUIgLyogTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTQ1NUFFMjExRkQyNTIwMENBOTM1QiAvKiBOZXR3
b3JrUHJveGltaXR5TWFuYWdlci5oICovOyB9OwogCQlBMTE1REM3MjE5MUQ4MkRBMDBEQTgwNzIg
LyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE1REM2RTE5MUQ4MkFCMDBEQTgwNzIgLyogX1dLV2ViVmll
d1ByaW50Rm9ybWF0dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQTExOEE5RUYxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50
RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEx
OEE5RUQxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5oICovOyB9Owog
CQlBMTE4QTlGMzE5MDhCOEVBMDBGN0M5MkIgLyogX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExOEE5RjExOTA4
QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1hbmFnZXJFeHRyYXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzg3MywxMCArMzg3MSw2IEBACiAJ
CUExMDQ2RTlGMjA3OTI2MzEwMEYwQzVEOCAvKiBXS1BERlZpZXcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
V0tQREZWaWV3Lmg7IHBhdGggPSBpb3MvV0tQREZWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUExMDQ2RUEwMjA3OTI2MzEwMEYwQzVEOCAvKiBXS1BERlZpZXcubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBXS1BERlZpZXcubW07IHBhdGggPSBpb3MvV0tQREZWaWV3Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTA1RDBEMDIxMjczNEIxMDAzNEY2QzcgLyog
TmV0d29ya0Jsb2JSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBO
ZXR3b3JrQmxvYlJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUExMTQ1
NUFBMjExRkNGQ0EwMENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQTExNDU1QUIyMTFGQ0ZDQTAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlB
c3NlcnRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOZXR3b3JrUHJveGltaXR5QXNzZXJ0
aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBMTE0NTVBRTIxMUZEMjUyMDBD
QTkzNUIgLyogTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29y
a1Byb3hpbWl0eU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTExNDU1
QUYyMTFGRDI1MjAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUExMTVEQzZEMTkxRDgyQUIwMERBODA3MiAvKiBfV0tXZWJWaWV3UHJp
bnRGb3JtYXR0ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBf
V0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUExMTVEQzZFMTkxRDgyQUIwMERBODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMThBOUVDMTkwN0FENkYwMEY3Qzky
QiAvKiBRdWlja0xvb2tEb2N1bWVudERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcDsgcGF0aCA9IGlvcy9RdWlja0xv
b2tEb2N1bWVudERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjUyMyw3
ICs2NTE3LDYgQEAKIAkJCQkyREE5NDRCQjE4ODUxMUREMDBFRDg2REIgLyogaW9zICovLAogCQkJ
CTUxMENDN0RDMTYxMzhFMjkwMEQwM0VEMyAvKiBtYWMgKi8sCiAJCQkJOTNCQTA0RDkyMTUxQURD
RDAwN0Y0NTVGIC8qIFNlcnZpY2VXb3JrZXIgKi8sCi0JCQkJQTExNDU1QTEyMTFGQ0U3RjAwQ0E5
MzVCIC8qIHdhdGNob3MgKi8sCiAJCQkJNDEzMDc1OTcxREU4NEVENzAwMzlFQzY5IC8qIHdlYnJ0
YyAqLywKIAkJCQk1M0YzQ0FBNTIwNkM0NDNFMDA4NjQ5MEUgLyogTmV0d29ya0FjdGl2aXR5VHJh
Y2tlci5jcHAgKi8sCiAJCQkJNTM1QkNCOTAyMDY5QzQ5QzAwQ0NDRTAyIC8qIE5ldHdvcmtBY3Rp
dml0eVRyYWNrZXIuaCAqLywKQEAgLTcxODgsMTcgKzcxODEsNiBAQAogCQkJcGF0aCA9IGNvY29h
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJQTExNDU1QTEyMTFGQ0U3RjAw
Q0E5MzVCIC8qIHdhdGNob3MgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVu
ID0gKAotCQkJCUExMTQ1NUFBMjExRkNGQ0EwMENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5QXNz
ZXJ0aW9uLmggKi8sCi0JCQkJQTExNDU1QUIyMTFGQ0ZDQTAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94
aW1pdHlBc3NlcnRpb24ubW0gKi8sCi0JCQkJQTExNDU1QUUyMTFGRDI1MjAwQ0E5MzVCIC8qIE5l
dHdvcmtQcm94aW1pdHlNYW5hZ2VyLmggKi8sCi0JCQkJQTExNDU1QUYyMTFGRDI1MjAwQ0E5MzVC
IC8qIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLm1tICovLAotCQkJKTsKLQkJCXBhdGggPSB3YXRj
aG9zOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJQTE4MkQ1QjExQkU2QkNG
NDAwODdBN0NDIC8qIGlvcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCkBAIC05MzE5LDggKzkzMDEsNiBAQAogCQkJCTUxNzk1NTZFMTYyODc3QjMwMEZBNDNCNiAv
KiBOZXR3b3JrUHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTNBMTYzRDE2MzA4
OEY2MDA1RDdEMjIgLyogTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1QzE0MjZFRTFDMjNGODA5MDBENDExODMgLyogTmV0d29ya1Byb2Nlc3NTdXBwbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlBMTE0NTVBQzIxMUZDRkNBMDBDQTkzNUIgLyogTmV0
d29ya1Byb3hpbWl0eUFzc2VydGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTExNDU1QjAyMTFG
RDI1MjAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MUZEMThCNjE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMTUyNTUxQjE3MDExODE5MDAzRDdBREIgLyogTmV0d29ya1Jl
c291cmNlTG9hZGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMjQwRUMwMjIwQjY5
NEMwMDVDRkM2MyAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkTWFwLmggaW4gSGVhZGVycyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365829</attachid>
            <date>2019-03-24 09:18:56 -0700</date>
            <delta_ts>2019-03-24 09:30:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196188-20190324091855.patch</filename>
            <type>text/plain</type>
            <size>57588</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg4NGQ4ODQxOGNhMGZjNjZlZmNmMWVh
NGU4MTRmMDU4ZDExNTlmYjkuLmEzMDE2ZTQ5N2M3MDJlOWNkYzdhNzgyNjA4ZTliYjRiYzFmMmNl
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMDMtMjQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFt3YXRjaE9TXSBSZW1vdmUgdW51c2VkIFByb3hpbWl0eSBO
ZXR3b3JraW5nIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NjE4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL0ZlYXR1cmVEZWZpbmVzLmg6CisKIDIwMTktMDMtMjIgIEtlaXRoIFJvbGxp
biAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSBUaGluTFRPIHN1cHBvcnQg
aW4gUHJvZHVjdGlvbiBidWlsZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMGE1MDJkNWQyZDAxYzE4YzNlMGZiNzc3
ODNiYzY0Y2RhNDY0OWIzMi4uY2I2ODY3OThhMzc0ZGY0NWIzOTA0ZjNlMGY5MDI3YzA5NDVhMWZi
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxOS0wMy0yNCAgQW5keSBFc3RlcyAgPGFl
c3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW3dhdGNoT1NdIFJlbW92ZSB1bnVzZWQgUHJveGlt
aXR5IE5ldHdvcmtpbmcgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk2MTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2Nv
YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtUHJlcGFyZVRvU3Vz
cGVuZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVByb2Nlc3NE
aWRSZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Qcm9j
ZXNzRGlkVHJhbnNpdGlvblRvQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpwbGF0Zm9ybVByb2Nlc3NEaWRUcmFuc2l0aW9uVG9Gb3JlZ3JvdW5kKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy93YXRjaG9zL05ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24uaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93YXRjaG9zL05ldHdvcmtQcm94aW1p
dHlBc3NlcnRpb24ubW06IFJlbW92ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2F0Y2hv
cy9OZXR3b3JrUHJveGltaXR5TWFuYWdlci5oOiBSZW1vdmVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3dhdGNob3MvTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIubW06IFJlbW92ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAg
ICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbToKKyAg
ICAgICAgKC1bX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHdpcmVsZXNzQ29udGV4dElkZW50
aWZpZXJdKToKKyAgICAgICAgKC1bX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFdpcmVs
ZXNzQ29udGV4dElkZW50aWZpZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0
Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMDMtMjMgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBw
bGUuY29tPgogCiAgICAgICAgIFtBcHBsZSBQYXldIFJlbW92ZSB0aGUgQXZhaWxhYmxlUGF5bWVu
dE5ldHdvcmtzIHN5bmNocm9ub3VzIG1lc3NhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0ZlYXR1cmVEZWZpbmVzLmggYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCmluZGV4
IGUyNjk4ZjZkZmVjMzhlOTNhMDg2MjlhMjI4ZDIxODEzMDkxMDJhNjEuLmM0MDY5YWNlZWExMmVm
YWI2NGUxYmQyOTQ2ZDVlZmU4N2EyZGY4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zl
YXR1cmVEZWZpbmVzLmgKKysrIGIvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaApAQCAt
MTk4LDEyICsxOTgsNiBAQCB0aGUgcHVibGljIGlPUyBTREsuIFNlZSA8aHR0cHM6Ly93ZWJraXQu
b3JnL2IvMTc5MTY3Pi4gKi8KIC8qIC0tLS0tLS0tLSBBcHBsZSBXQVRDSE9TIHBvcnQgLS0tLS0t
LS0tICovCiAjaWYgUExBVEZPUk0oV0FUQ0hPUykKIAotI2lmICFkZWZpbmVkKEVOQUJMRV9QUk9Y
SU1JVFlfTkVUV09SS0lORykKLSNpZiAhVEFSR0VUX09TX1NJTVVMQVRPUiAmJiBfX1dBVENIX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgNjAwMDAKLSNkZWZpbmUgRU5BQkxFX1BST1hJTUlUWV9O
RVRXT1JLSU5HIDEKLSNlbmRpZgotI2VuZGlmCi0KICNlbmRpZiAvKiBQTEFURk9STShXQVRDSE9T
KSAqLwogCiAvKiAtLS0tLS0tLS0gQXBwbGUgTUFDIHBvcnQgKG5vdCBJT1MpIC0tLS0tLS0tLSAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9XZWJLaXQueGNjb25m
aWcgYi9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZwppbmRleCA0
NzliZDZkNWI4OGIyZWFiMWFjNTk4ODZjNjc4ODgzZDg5NzY5ZDk1Li5lOGU3N2Y3Yzc1NzZiOWU5
YTRhNTFiMDdkOTY3NTgwYWM5ZDZiODY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NvbmZp
Z3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRp
b25zL1dlYktpdC54Y2NvbmZpZwpAQCAtMTA1LDkgKzEwNSw2IEBAIFdLX1BERktJVF9MREZMQUdT
X2lwaG9uZW9zW3Nkaz1pcGhvbmUqMTEuKl0gPSA7CiBXS19QREZLSVRfTERGTEFHU19pcGhvbmVz
aW11bGF0b3IgPSAkKFdLX1BERktJVF9MREZMQUdTX2lwaG9uZW9zKTsKIFdLX1BERktJVF9MREZM
QUdTX2lwaG9uZXNpbXVsYXRvcltzZGs9aXBob25lKjExLipdID0gOwogCi1XS19QUk9YSU1JVFlf
TkVUV09SS0lOR19MREZMQUdTID0gJChXS19QUk9YSU1JVFlfTkVUV09SS0lOR19MREZMQUdTXyQo
V0tfUExBVEZPUk1fTkFNRSkpOwotV0tfUFJPWElNSVRZX05FVFdPUktJTkdfTERGTEFHU193YXRj
aG9zID0gLWZyYW1ld29yayBJRFMgLWZyYW1ld29yayBNb2JpbGVXaUZpIC1mcmFtZXdvcmsgU3lz
dGVtQ29uZmlndXJhdGlvbiAtZnJhbWV3b3JrIFdpcmVsZXNzQ29leE1hbmFnZXI7Ci0KIFdLX1NB
RkVfQlJPV1NJTkdfTERGTEFHUyA9ICQoV0tfU0FGRV9CUk9XU0lOR19MREZMQUdTXyQoV0tfUExB
VEZPUk1fTkFNRSkpOwogV0tfU0FGRV9CUk9XU0lOR19MREZMQUdTX2lwaG9uZW9zID0gLWZyYW1l
d29yayBTYWZhcmlTYWZlQnJvd3Npbmc7CiBXS19TQUZFX0JST1dTSU5HX0xERkxBR1NfaXBob25l
b3Nbc2RrPWlwaG9uZSoxMC4qXSA9IDsKQEAgLTEzMCw3ICsxMjcsNyBAQCBXS19VUkxfRk9STUFU
VElOR19MREZMQUdTX1lFUyA9IC1mcmFtZXdvcmsgVVJMRm9ybWF0dGluZzsKIFdLX1dFQklOU1BF
Q1RPUlVJX0xERkxBR1MgPSAkKFdLX1dFQklOU1BFQ1RPUlVJX0xERkxBR1NfJChXS19QTEFURk9S
TV9OQU1FKSk7CiBXS19XRUJJTlNQRUNUT1JVSV9MREZMQUdTX21hY29zeCA9IC13ZWFrX2ZyYW1l
d29yayBXZWJJbnNwZWN0b3JVSTsKIAotRlJBTUVXT1JLX0FORF9MSUJSQVJZX0xERkxBR1MgPSAt
bG9iamMgLWZyYW1ld29yayBDRk5ldHdvcmsgLWZyYW1ld29yayBDb3JlQXVkaW8gLWZyYW1ld29y
ayBDb3JlRm91bmRhdGlvbiAtZnJhbWV3b3JrIENvcmVHcmFwaGljcyAtZnJhbWV3b3JrIENvcmVU
ZXh0IC1mcmFtZXdvcmsgRm91bmRhdGlvbiAtZnJhbWV3b3JrIEltYWdlSU8gLWZyYW1ld29yayBJ
T0tpdCAtZnJhbWV3b3JrIFdlYktpdExlZ2FjeSAtbG5ldHdvcmsgJChXS19BQ0NFU1NJQklMSVRZ
X0xERkxBR1MpICQoV0tfQVBQS0lUX0xERkxBR1MpICQoV0tfQVNTRVJUSU9OX1NFUlZJQ0VTX0xE
RkxBR1MpICQoV0tfQ0FSQk9OX0xERkxBR1MpICQoV0tfQ09SRV9QREZfTERGTEFHUykgJChXS19D
T1JFX1BSRURJQ1RJT05fTERGTEFHUykgJChXS19DT1JFX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tf
REVWSUNFX0lERU5USVRZX0xERkxBR1MpICQoV0tfR1JBUEhJQ1NfU0VSVklDRVNfTERGTEFHUykg
JChXS19JT1NVUkZBQ0VfTERGTEFHUykgJChXS19MSUJTQU5EQk9YX0xERkxBR1MpICQoV0tfTElC
V0VCUlRDX0xERkxBR1MpICQoV0tfTU9CSUxFX0NPUkVfU0VSVklDRVNfTERGTEFHUykgJChXS19N
T0JJTEVfR0VTVEFMVF9MREZMQUdTKSAkKFdLX09QRU5HTF9MREZMQUdTKSAkKFdLX1BERktJVF9M
REZMQUdTKSAkKFdLX1BST1hJTUlUWV9ORVRXT1JLSU5HX0xERkxBR1MpICQoV0tfU0FGRV9CUk9X
U0lOR19MREZMQUdTKSAkKFdLX1NFQ1VSSVRZX0lOVEVSRkFDRV9MREZMQUdTKSAkKFdLX1VJS0lU
X0xERkxBR1MpICQoV0tfVVJMX0ZPUk1BVFRJTkdfTERGTEFHUykgJChXS19XRUJJTlNQRUNUT1JV
SV9MREZMQUdTKTsKK0ZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTID0gLWxvYmpjIC1mcmFt
ZXdvcmsgQ0ZOZXR3b3JrIC1mcmFtZXdvcmsgQ29yZUF1ZGlvIC1mcmFtZXdvcmsgQ29yZUZvdW5k
YXRpb24gLWZyYW1ld29yayBDb3JlR3JhcGhpY3MgLWZyYW1ld29yayBDb3JlVGV4dCAtZnJhbWV3
b3JrIEZvdW5kYXRpb24gLWZyYW1ld29yayBJbWFnZUlPIC1mcmFtZXdvcmsgSU9LaXQgLWZyYW1l
d29yayBXZWJLaXRMZWdhY3kgLWxuZXR3b3JrICQoV0tfQUNDRVNTSUJJTElUWV9MREZMQUdTKSAk
KFdLX0FQUEtJVF9MREZMQUdTKSAkKFdLX0FTU0VSVElPTl9TRVJWSUNFU19MREZMQUdTKSAkKFdL
X0NBUkJPTl9MREZMQUdTKSAkKFdLX0NPUkVfUERGX0xERkxBR1MpICQoV0tfQ09SRV9QUkVESUNU
SU9OX0xERkxBR1MpICQoV0tfQ09SRV9TRVJWSUNFU19MREZMQUdTKSAkKFdLX0RFVklDRV9JREVO
VElUWV9MREZMQUdTKSAkKFdLX0dSQVBISUNTX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfSU9TVVJG
QUNFX0xERkxBR1MpICQoV0tfTElCU0FOREJPWF9MREZMQUdTKSAkKFdLX0xJQldFQlJUQ19MREZM
QUdTKSAkKFdLX01PQklMRV9DT1JFX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfTU9CSUxFX0dFU1RB
TFRfTERGTEFHUykgJChXS19PUEVOR0xfTERGTEFHUykgJChXS19QREZLSVRfTERGTEFHUykgJChX
S19TQUZFX0JST1dTSU5HX0xERkxBR1MpICQoV0tfU0VDVVJJVFlfSU5URVJGQUNFX0xERkxBR1Mp
ICQoV0tfVUlLSVRfTERGTEFHUykgJChXS19VUkxfRk9STUFUVElOR19MREZMQUdTKSAkKFdLX1dF
QklOU1BFQ1RPUlVJX0xERkxBR1MpOwogCiAvLyBQcmV2ZW50IEMrKyBzdGFuZGFyZCBsaWJyYXJ5
IGJhc2ljX3N0cmluZ3N0cmVhbSwgb3BlcmF0b3IgbmV3LCBkZWxldGUgYW5kIHRoZWlyIHJlbGF0
ZWQgZXhjZXB0aW9uIHR5cGVzIGZyb20gYmVpbmcgZXhwb3J0ZWQgYXMgd2VhayBzeW1ib2xzLgog
VU5FWFBPUlRFRF9TWU1CT0xfTERGTEFHUyA9IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9f
WlRJU3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRJU3Q5ZXhjZXB0
aW9uIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRTU3Q5YmFkX2FsbG9jIC1XbCwtdW5l
eHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRTU3Q5ZXhjZXB0aW9uIC1XbCwtdW5leHBvcnRlZF9zeW1i
b2wgLVdsLF9fWmRsUHZTXyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pud21QdiAtV2ws
LXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pud20gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2ws
X19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFQzJFT1M0XyAt
V2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3Jl
MTJQb2xpY3lBY3Rpb25FRUVDMUVPUzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5T
dDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRWFTRURuIC1XbCwtdW5l
eHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5LU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xp
Y3lBY3Rpb25FRUVjbEVTMl8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aTlN0M19fMThm
dW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFNHN3YXBFUlM0XyAtV2wsLXVuZXhw
b3J0ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lB
Y3Rpb25FRUVDMUVSS1M0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1
bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVDMkVSS1M0XyAtV2wsLXVuZXhwb3J0
ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rp
b25FRUVEMUV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25J
RnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRUQyRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAt
V2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFYVNFUktT
NF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVFZOU3QzX18xMTdiYWRfZnVuY3Rpb25f
Y2FsbEUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVENOU3QzX18xMThiYXNpY19zdHJp
bmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRTBfTlNfMTNi
YXNpY19pc3RyZWFtSWNTMl9FRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUQ05TdDNf
XzExOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9y
SWNFRUVFMF9OU18xNGJhc2ljX2lvc3RyZWFtSWNTMl9FRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9s
IC1XbCxfX1pUQ05TdDNfXzExOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0lj
RUVOU185YWxsb2NhdG9ySWNFRUVFMTZfTlNfMTNiYXNpY19vc3RyZWFtSWNTMl9FRSAtV2wsLXVu
ZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUVE5TdDNfXzExOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNf
MTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFIC1XbCwtdW5leHBvcnRlZF9zeW1i
b2wgLVdsLF9fWlRWTlN0M19fMTE1YmFzaWNfc3RyaW5nYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNF
RU5TXzlhbGxvY2F0b3JJY0VFRUUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVFZOU3Qz
X18xMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRv
ckljRUVFRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUQ05TdDNfXzExOGJhc2ljX3N0
cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFOF9OU18x
M2Jhc2ljX29zdHJlYW1JY1MyX0VFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBiNWI3YmVjMDQxMWY1YjdhOGRjNjhmZTc2YmQzZjRk
Y2EyMzA5NmY5Li43M2YxYjQ4Mzc2OWViZGRjZWY5YmQ0YjdmNGVjMTAzYWM1YTlmNGEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAt
NDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJOZXR3b3JrUHJv
eGltaXR5TWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnMuaCIKQEAgLTE0NSw5ICsxNDQsNiBAQCBOZXR3b3JrUHJvY2Vzczo6TmV0d29y
a1Byb2Nlc3MoQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYmIHBhcmFt
ZQogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkKICAgICBMZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXI6Om5ldHdvcmtQcm9jZXNzQ3JlYXRlZCgqdGhpcyk7CiAjZW5kaWYKLSNpZiBF
TkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCi0gICAgYWRkU3VwcGxlbWVudDxOZXR3b3JrUHJv
eGltaXR5TWFuYWdlcj4oKTsKLSNlbmRpZgogCiAjaWYgVVNFKFNPVVApCiAgICAgRE5TUmVzb2x2
ZVF1ZXVlU291cDo6c2V0R2xvYmFsRGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkFjY2Vzc29y
KFt0aGlzXSgpIC0+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgewpAQCAtMTgzLDEzICsxNzksNiBA
QCBEb3dubG9hZE1hbmFnZXImIE5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZE1hbmFnZXIoKQogICAg
IHJldHVybiBtX2Rvd25sb2FkTWFuYWdlcjsKIH0KIAotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVU
V09SS0lORykKLU5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyJiBOZXR3b3JrUHJvY2Vzczo6cHJveGlt
aXR5TWFuYWdlcigpCi17Ci0gICAgcmV0dXJuICpzdXBwbGVtZW50PE5ldHdvcmtQcm94aW1pdHlN
YW5hZ2VyPigpOwotfQotI2VuZGlmCi0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBj
b25uZWN0aW9uKQogewogICAgIGF1dG8gY291bnQgPSBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5y
ZW1vdmVBbGxNYXRjaGluZyhbJl0gKGNvbnN0IGF1dG8mIGMpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBjYzI2OGRjYjAxNTc2YjJjYTJl
NGM1NmE5ODRkN2IzY2I1YTQ3MTM1Li41MjlmODc5MjIwZjZlNTFhMzQwZWU0Yjc2M2EyMDIzMWE3
NDY3ZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCkBAIC0xNTQsOSArMTU0LDYgQEAgcHVibGljOgogCiAgICAgQXV0aGVudGljYXRpb25NYW5h
Z2VyJiBhdXRoZW50aWNhdGlvbk1hbmFnZXIoKTsKICAgICBEb3dubG9hZE1hbmFnZXImIGRvd25s
b2FkTWFuYWdlcigpOwotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKLSAgICBOZXR3
b3JrUHJveGltaXR5TWFuYWdlciYgcHJveGltaXR5TWFuYWdlcigpOwotI2VuZGlmCiAKICAgICBO
ZXR3b3JrQ2FjaGU6OkNhY2hlKiBjYWNoZSgpIHsgcmV0dXJuIG1fY2FjaGUuZ2V0KCk7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCBhYjUxOTU5YTQ4N2U3ODQ2NTBm
MWQ5Yjg4ZjViMjE4YjU1NWI4MDIyLi5lZDMxOTk3NWQ4NmQ1M2NlY2E3OGZmNTYzODQ4NjIyYmJk
ZGY1ZjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtODUsMTAgKzg1
LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3Rl
cmVkQXNDT1JTRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3RlcmVkQXND
YW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdDsKIAotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09S
S0lORykKLSAgICBlbmNvZGVyIDw8IHdpcmVsZXNzQ29udGV4dElkZW50aWZpZXI7Ci0jZW5kaWYK
LQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBlbmNvZGVyIDw8IHNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPDwgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZSA8PCB1cmxTY2hlbWVzU2VydmljZVdvcmtlcnNDYW5IYW5kbGUg
PDwgc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheTsKICNl
bmRpZgpAQCAtMTk1LDExICsxOTEsNiBAQCBib29sIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3JrUHJvYwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnVybFNjaGVtZXNSZWdpc3RlcmVkQXNDYW5EaXNwbGF5
T25seUlmQ2FuUmVxdWVzdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotI2lmIEVOQUJMRShQ
Uk9YSU1JVFlfTkVUV09SS0lORykKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC53aXJl
bGVzc0NvbnRleHRJZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0K
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCAwYWExYWJkM2ZmOWZmZDgy
ZmM3MjgxODU4OTM2YzFjZDk4ZmQxZjBlLi4wZjFmNDQwNzEwN2U4ZDMzNjhmMzIwMzI2Y2Y3Yzll
NDEwYjNiMmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0xMDAsMTAgKzEw
MCw2IEBAIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgVmVj
dG9yPFN0cmluZz4gdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1
ZXN0OwogICAgIFZlY3RvcjxTdHJpbmc+IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxl
ZDsKIAotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKLSAgICB1bnNpZ25lZCB3aXJl
bGVzc0NvbnRleHRJZGVudGlmaWVyIHsgMCB9OwotI2VuZGlmCi0KICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAgICAgU3RyaW5nIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7
CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKaW5kZXggMmNlNjc3ZGJh
MTlkNDgyYzJhMjViZjE0ZGY0MjM5ZDkzMGJjMGNmZC4uOTY1YzZmYTY2NGJjZDE1NWY3NmNkYjNi
NGQ3MzI2ZWVlMDNlOTE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaApAQCAtMjgsNyArMjgsNiBAQAog
I2luY2x1ZGUgIk5ldHdvcmtBY3Rpdml0eVRyYWNrZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrRGF0
YVRhc2suaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlICJO
ZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9h
ZE1ldHJpY3MuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTczLDE0ICs3Miw2
IEBAIHB1YmxpYzoKICAgICB1aW50NjRfdCBmcmFtZUlEKCkgY29uc3QgeyByZXR1cm4gbV9mcmFt
ZUlEOyB9OwogICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9
OwogCi0jaWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQotICAgIHZvaWQgaG9sZFByb3hp
bWl0eUFzc2VydGlvbihOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uJiBhc3NlcnRpb24pCi0gICAg
ewotICAgICAgICBBU1NFUlQoIW1fcHJveGltaXR5QXNzZXJ0aW9uVG9rZW4pOwotICAgICAgICBt
X3Byb3hpbWl0eUFzc2VydGlvblRva2VuLmVtcGxhY2UoYXNzZXJ0aW9uKTsKLSAgICB9Ci0jZW5k
aWYKLQogICAgIFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRl
OgpAQCAtMTA3LDEwICs5OCw2IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKICAgICBib29sIG1faGFzQmVlblNldFRvVXNlU3RhdGVsZXNzQ29va2llU3Rv
cmFnZSB7IGZhbHNlIH07CiAjZW5kaWYKLQotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lO
RykKLSAgICBPcHRpb25hbDxOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uOjpUb2tlbj4gbV9wcm94
aW1pdHlBc3NlcnRpb25Ub2tlbjsKLSNlbmRpZgogfTsKIAogV2ViQ29yZTo6Q3JlZGVudGlhbCBz
ZXJ2ZXJUcnVzdENyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IDVjZGQzMTY1MjM2NzBmNzRkNjhlNzJhN2Yw
OTBiMTdkNmE5YmRjMDguLjFkMGE1OWY3OGM2NDIzYzQ3ZTlhNzYxZTg1MDIyYzhiODJjN2JjNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtMzIsNyArMzIsNiBAQAogI2ltcG9ydCAiRG93bmxv
YWRQcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJOZXR3b3Jr
UHJvY2Vzcy5oIgotI2ltcG9ydCAiTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIuaCIKICNpbXBvcnQg
Ik5ldHdvcmtTZXNzaW9uQ29jb2EuaCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgogI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgpAQCAtMjAwLDkg
KzE5OSw2IEBAIE5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3
b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUCiAKICAgICBOU1VSTFJlcXVlc3QgKm5z
UmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9s
aWN5OjpVcGRhdGVIVFRQQm9keSk7CiAgICAgYXBwbHlTbmlmZmluZ1BvbGljaWVzQW5kQmluZFJl
cXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKG5zUmVxdWVzdCwgc2hvdWxkQ29udGVudFNuaWZmID09
IFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeTo6U25pZmZDb250ZW50ICYmICF1cmwuaXNM
b2NhbEZpbGUoKSwgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYgPT0gV2ViQ29yZTo6Q29udGVu
dEVuY29kaW5nU25pZmZpbmdQb2xpY3k6OlNuaWZmKTsKLSNpZiBFTkFCTEUoUFJPWElNSVRZX05F
VFdPUktJTkcpCi0gICAgbV9zZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLnByb3hpbWl0eU1hbmFn
ZXIoKS5hcHBseVByb3BlcnRpZXMocmVxdWVzdCwgKnRoaXMsIG5zUmVxdWVzdCk7Ci0jZW5kaWYK
IAogICAgIGF1dG8mIGNvY29hU2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29j
b2EmPihtX3Nlc3Npb24uZ2V0KCkpOwogICAgIGlmIChzdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9
PSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2Eu
bW0KaW5kZXggNzBiMzljOWE3YmM0YTU4ZDcxZGU1NWE1NzU2ZTZkZjA5ZTUxOGU4YS4uNWFlNDlm
NmM5MmRiY2M3OThhZjYxMWJkOGI0MTY2NDA3OWZjMWVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQpA
QCAtMzAsNyArMzAsNiBAQAogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTmV0d29ya0Nh
Y2hlLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2lt
cG9ydCAiTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIuaCIKICNpbXBvcnQgIk5ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oIgogI2ltcG9ydCAiTmV0d29ya1Nlc3Npb25Db2NvYS5oIgogI2ltcG9ydCAiU2Fu
ZGJveEV4dGVuc2lvbi5oIgpAQCAtMjQ3LDMyICsyNDYsMTkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cGxhdGZvcm1TeW5jQWxsQ29va2llcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGkKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1QcmVwYXJlVG9TdXNwZW5kKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSNpZiBFTkFC
TEUoUFJPWElNSVRZX05FVFdPUktJTkcpCi0gICAgcHJveGltaXR5TWFuYWdlcigpLnN1c3BlbmQo
U3VzcGVuc2lvblJlYXNvbjo6UHJvY2Vzc1N1c3BlbmRpbmcsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKLSNlbHNlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSNlbmRpZgogfQogCiB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVByb2Nlc3NEaWRSZXN1bWUoKQogewotI2lmIEVO
QUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKLSAgICBwcm94aW1pdHlNYW5hZ2VyKCkucmVzdW1l
KFJlc3VtcHRpb25SZWFzb246OlByb2Nlc3NSZXN1bWluZyk7Ci0jZW5kaWYKIH0KIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Qcm9jZXNzRGlkVHJhbnNpdGlvblRvQmFja2dyb3VuZCgp
CiB7Ci0jaWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQotICAgIHByb3hpbWl0eU1hbmFn
ZXIoKS5zdXNwZW5kKFN1c3BlbnNpb25SZWFzb246OlByb2Nlc3NCYWNrZ3JvdW5kaW5nLCBbXSB7
IH0pOwotI2VuZGlmCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtUHJvY2Vzc0Rp
ZFRyYW5zaXRpb25Ub0ZvcmVncm91bmQoKQogewotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09S
S0lORykKLSAgICBwcm94aW1pdHlNYW5hZ2VyKCkucmVzdW1lKFJlc3VtcHRpb25SZWFzb246OlBy
b2Nlc3NGb3JlZ3JvdW5kaW5nKTsKLSNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3Jr
UHJveGltaXR5QXNzZXJ0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dhdGNo
b3MvTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA5MTEwNzEyNGY1MDZhYTc5NTA1NDBiYTFlOWNlOTcwMjEzODE2ZjA5Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLmgKKysrIC9kZXYvbnVs
bApAQCAtMSwxMjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQotCi0jaW5jbHVkZSAiTW9iaWxlV2lGaVNQSS5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
LSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLU9CSkNfQ0xBU1MgSURTU2VydmljZTsKLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLWVudW0gY2xhc3MgUmVzdW1wdGlvblJlYXNvbiA6IHVpbnQ4
X3Q7Ci1lbnVtIGNsYXNzIFN1c3BlbnNpb25SZWFzb24gOiB1aW50OF90OwotCi1jbGFzcyBOZXR3
b3JrUHJveGltaXR5QXNzZXJ0aW9uIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3b3Jr
UHJveGltaXR5QXNzZXJ0aW9uKTsKLXB1YmxpYzoKLSAgICBjbGFzcyBUb2tlbiB7Ci0gICAgICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFRva2VuKTsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxp
Y2l0IFRva2VuKE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24mIGFzc2VydGlvbikKLSAgICAgICAg
ICAgIDogbV9hc3NlcnRpb24geyBhc3NlcnRpb24gfQotICAgICAgICB7Ci0gICAgICAgICAgICBt
X2Fzc2VydGlvbi5ob2xkKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB+VG9rZW4oKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBtX2Fzc2VydGlvbi5yZWxlYXNlKCk7Ci0gICAgICAgIH0KLQotICAg
IHByaXZhdGU6Ci0gICAgICAgIE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24mIG1fYXNzZXJ0aW9u
OwotICAgIH07Ci0KLSAgICB2b2lkIHJlc3VtZShSZXN1bXB0aW9uUmVhc29uKTsKLSAgICB2b2lk
IHN1c3BlbmQoU3VzcGVuc2lvblJlYXNvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
LQotcHJvdGVjdGVkOgotICAgIE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24oKTsKLSAgICB2aXJ0
dWFsIH5OZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uKCkgPSBkZWZhdWx0OwotCi0gICAgYm9vbCBt
X2lzSG9sZGluZ0Fzc2VydGlvbiB7IGZhbHNlIH07Ci0KLXByaXZhdGU6Ci0gICAgZW51bSBjbGFz
cyBTdGF0ZSB7Ci0gICAgICAgIEJhY2tncm91bmRlZCwgLy8gQ2FuIGhvbGQgYXNzZXJ0aW9ucyB1
bnRpbCBtX3N1c3BlbmRBZnRlckJhY2tncm91bmRpbmdUaW1lciBmaXJlcy4KLSAgICAgICAgUmVz
dW1lZCwgLy8gQ2FuIGhvbGQgYXNzZXJ0aW9ucyBhdCBhbnkgdGltZS4KLSAgICAgICAgU3VzcGVu
ZGVkLCAvLyBDYW4gbm90IGhvbGQgYXNzZXJ0aW9ucy4KLSAgICB9OwotCi0gICAgdmlydHVhbCB2
b2lkIGhvbGROb3coKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlbGVhc2VOb3coKSA9IDA7Ci0K
LSAgICB2b2lkIGhvbGQoKTsKLSAgICB2b2lkIHJlbGVhc2UoKTsKLSAgICB2b2lkIHJlbGVhc2VU
aW1lckZpcmVkKCk7Ci0gICAgdm9pZCBzdXNwZW5kQWZ0ZXJCYWNrZ3JvdW5kaW5nVGltZXJGaXJl
ZCgpOwotICAgIHZvaWQgc3VzcGVuZE5vdygpOwotCi0gICAgdWludDY0X3QgbV9hc3NlcnRpb25D
b3VudCB7IDAgfTsKLSAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlN1c3BlbmRlZCB9OwotICAg
IFdlYkNvcmU6OkRlZmVycmFibGVPbmVTaG90VGltZXIgbV9yZWxlYXNlVGltZXI7Ci0gICAgV2Vi
Q29yZTo6RGVmZXJyYWJsZU9uZVNob3RUaW1lciBtX3N1c3BlbmRBZnRlckJhY2tncm91bmRpbmdU
aW1lcjsKLX07Ci0KLWNsYXNzIEJsdWV0b290aFByb3hpbWl0eUFzc2VydGlvbiBmaW5hbCA6IHB1
YmxpYyBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBC
bHVldG9vdGhQcm94aW1pdHlBc3NlcnRpb24oSURTU2VydmljZSAqKTsKLQotICAgIHZvaWQgc3Vz
cGVuZChTdXNwZW5zaW9uUmVhc29uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotCi1w
cml2YXRlOgotICAgIHZvaWQgaG9sZE5vdygpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVsZWFzZU5v
dygpIG92ZXJyaWRlOwotCi0gICAgUmV0YWluUHRyPElEU1NlcnZpY2U+IG1faWRzU2VydmljZTsK
LX07Ci0KLWNsYXNzIFdpRmlQcm94aW1pdHlBc3NlcnRpb24gZmluYWwgOiBwdWJsaWMgTmV0d29y
a1Byb3hpbWl0eUFzc2VydGlvbiB7Ci1wdWJsaWM6Ci0gICAgV2lGaVByb3hpbWl0eUFzc2VydGlv
bigpOwotCi1wcml2YXRlOgotICAgIHZvaWQgaG9sZE5vdygpIG92ZXJyaWRlOwotICAgIHZvaWQg
cmVsZWFzZU5vdygpIG92ZXJyaWRlOwotCi0gICAgUmV0YWluUHRyPFdpRmlNYW5hZ2VyQ2xpZW50
UmVmPiBtX3dpRmlNYW5hZ2VyQ2xpZW50OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
LSNlbmRpZiAvLyBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dhdGNob3MvTmV0d29ya1Byb3hpbWl0eUFzc2VydGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGlt
aXR5QXNzZXJ0aW9uLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MjIzYTUzYjkz
OTNjODFkYmE1MjUzNTQxN2RhYzhiMjlmYjRkMDNjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2F0Y2hv
cy9OZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMjQxICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIk5ldHdvcmtQ
cm94aW1pdHlBc3NlcnRpb24uaCIKLQotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykK
LQotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3MuaCIKLSNpbXBv
cnQgIk5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLmgiCi0jaW1wb3J0IDxJRFMvSURTX1ByaXZhdGUu
aD4KLSNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3Rh
dGljIGF1dG8gYXNzZXJ0aW9uUmVsZWFzZURlbGF5QWZ0ZXJCYWNrZ3JvdW5kaW5nID0gMTBfczsK
LXN0YXRpYyBhdXRvIGFzc2VydGlvblJlbGVhc2VEZWxheUZvckh5c3RlcmVzaXMgPSAxMF9zOwot
Ci1OZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uOjpOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uKCkK
LSAgICA6IG1fcmVsZWFzZVRpbWVyIHsgKnRoaXMsICZOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9u
OjpyZWxlYXNlVGltZXJGaXJlZCwgYXNzZXJ0aW9uUmVsZWFzZURlbGF5Rm9ySHlzdGVyZXNpcyB9
Ci0gICAgLCBtX3N1c3BlbmRBZnRlckJhY2tncm91bmRpbmdUaW1lciB7ICp0aGlzLCAmTmV0d29y
a1Byb3hpbWl0eUFzc2VydGlvbjo6c3VzcGVuZEFmdGVyQmFja2dyb3VuZGluZ1RpbWVyRmlyZWQs
IGFzc2VydGlvblJlbGVhc2VEZWxheUFmdGVyQmFja2dyb3VuZGluZyB9Ci17Ci19Ci0KLXZvaWQg
TmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6aG9sZCgpCi17Ci0gICAgKyttX2Fzc2VydGlvbkNv
dW50OwotCi0gICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN1c3BlbmRlZCkgewotICAgICAgICBB
U1NFUlQoIW1faXNIb2xkaW5nQXNzZXJ0aW9uKTsKLSAgICAgICAgQVNTRVJUKCFtX3JlbGVhc2VU
aW1lci5pc0FjdGl2ZSgpKTsKLSAgICAgICAgQVNTRVJUKCFtX3N1c3BlbmRBZnRlckJhY2tncm91
bmRpbmdUaW1lci5pc0FjdGl2ZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChtX3JlbGVhc2VUaW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIEFTU0VSVChtX2lzSG9sZGlu
Z0Fzc2VydGlvbik7Ci0gICAgICAgIG1fcmVsZWFzZVRpbWVyLnN0b3AoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChtX2Fzc2VydGlvbkNvdW50ID09IDEpIHsKLSAgICAgICAg
QVNTRVJUKCFtX2lzSG9sZGluZ0Fzc2VydGlvbik7Ci0gICAgICAgIGhvbGROb3coKTsKLSAgICB9
Ci0KLSAgICBBU1NFUlQobV9pc0hvbGRpbmdBc3NlcnRpb24pOwotfQotCi12b2lkIE5ldHdvcmtQ
cm94aW1pdHlBc3NlcnRpb246OnJlbGVhc2UoKQotewotICAgIEFTU0VSVChtX2Fzc2VydGlvbkNv
dW50KTsKLSAgICBpZiAoIW1fYXNzZXJ0aW9uQ291bnQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IC0tbV9hc3NlcnRpb25Db3VudDsKLQotICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpTdXNwZW5k
ZWQpIHsKLSAgICAgICAgQVNTRVJUKCFtX2lzSG9sZGluZ0Fzc2VydGlvbik7Ci0gICAgICAgIEFT
U0VSVCghbV9yZWxlYXNlVGltZXIuaXNBY3RpdmUoKSk7Ci0gICAgICAgIEFTU0VSVCghbV9zdXNw
ZW5kQWZ0ZXJCYWNrZ3JvdW5kaW5nVGltZXIuaXNBY3RpdmUoKSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBBU1NFUlQobV9pc0hvbGRpbmdBc3NlcnRpb24pOwotICAgIEFTU0VSVCgh
bV9yZWxlYXNlVGltZXIuaXNBY3RpdmUoKSk7Ci0gICAgaWYgKCFtX2Fzc2VydGlvbkNvdW50KQot
ICAgICAgICBtX3JlbGVhc2VUaW1lci5yZXN0YXJ0KCk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb3hp
bWl0eUFzc2VydGlvbjo6cmVzdW1lKFJlc3VtcHRpb25SZWFzb24pCi17Ci0gICAgc3dpdGNoICht
X3N0YXRlKSB7Ci0gICAgY2FzZSBTdGF0ZTo6QmFja2dyb3VuZGVkOgotICAgICAgICBtX3N1c3Bl
bmRBZnRlckJhY2tncm91bmRpbmdUaW1lci5zdG9wKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgU3RhdGU6OlJlc3VtZWQ6Ci0gICAgICAgIEFTU0VSVCghbV9zdXNwZW5kQWZ0ZXJCYWNrZ3Jv
dW5kaW5nVGltZXIuaXNBY3RpdmUoKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU3RhdGU6
OlN1c3BlbmRlZDoKLSAgICAgICAgQVNTRVJUKCFtX2lzSG9sZGluZ0Fzc2VydGlvbik7Ci0gICAg
ICAgIEFTU0VSVCghbV9yZWxlYXNlVGltZXIuaXNBY3RpdmUoKSk7Ci0gICAgICAgIEFTU0VSVCgh
bV9zdXNwZW5kQWZ0ZXJCYWNrZ3JvdW5kaW5nVGltZXIuaXNBY3RpdmUoKSk7Ci0gICAgICAgIGhv
bGROb3coKTsKLSAgICAgICAgaWYgKCFtX2Fzc2VydGlvbkNvdW50KQotICAgICAgICAgICAgbV9y
ZWxlYXNlVGltZXIucmVzdGFydCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBtX3N0
YXRlID0gU3RhdGU6OlJlc3VtZWQ7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb3hpbWl0eUFzc2VydGlv
bjo6c3VzcGVuZChTdXNwZW5zaW9uUmVhc29uIHJlYXNvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIHN3aXRjaCAocmVhc29uKSB7Ci0gICAg
Y2FzZSBTdXNwZW5zaW9uUmVhc29uOjpQcm9jZXNzQmFja2dyb3VuZGluZzoKLSAgICAgICAgLy8g
VGhlIE5ldHdvcmtpbmcgcHJvY2VzcyBpcyBiZWluZyBiYWNrZ3JvdW5kZWQuIFdlIHNob3VsZCBk
cm9wIG91ciBhc3NlcnRpb25zCi0gICAgICAgIC8vIHNvb24sIGluIGNhc2UgdGhlIHN5c3RlbSBz
dXNwZW5kcyB0aGUgcHJvY2VzcyBiZWZvcmUgd2UgcmVjZWl2ZSBQcm9jZXNzU3VzcGVuZGluZy4K
LSAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpCYWNrZ3JvdW5kZWQ7Ci0gICAgICAgIG1fc3VzcGVu
ZEFmdGVyQmFja2dyb3VuZGluZ1RpbWVyLnJlc3RhcnQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBTdXNwZW5zaW9uUmVhc29uOjpQcm9jZXNzU3VzcGVuZGluZzoKLSAgICAgICAgLy8gVGhl
IE5ldHdvcmtpbmcgcHJvY2VzcyBpcyBiZWluZyBzdXNwZW5kZWQsIHNvIHdlIG5lZWQgdG8gZHJv
cCBvdXIgYXNzZXJ0aW9ucwotICAgICAgICAvLyBpbW1lZGlhdGVseSBiZWZvcmUgdGhhdCBoYXBw
ZW5zLgotICAgICAgICBzdXNwZW5kTm93KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb3hpbWl0eUFzc2VydGlv
bjo6c3VzcGVuZE5vdygpCi17Ci0gICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN1c3BlbmRlZCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdGF0ZSA9IFN0YXRlOjpTdXNwZW5kZWQ7Ci0gICAg
bV9yZWxlYXNlVGltZXIuc3RvcCgpOwotICAgIG1fc3VzcGVuZEFmdGVyQmFja2dyb3VuZGluZ1Rp
bWVyLnN0b3AoKTsKLSAgICByZWxlYXNlTm93KCk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb3hpbWl0
eUFzc2VydGlvbjo6cmVsZWFzZVRpbWVyRmlyZWQoKQotewotICAgIEFTU0VSVChtX2lzSG9sZGlu
Z0Fzc2VydGlvbik7Ci0gICAgQVNTRVJUKG1fc3RhdGUgIT0gU3RhdGU6OlN1c3BlbmRlZCk7Ci0g
ICAgQVNTRVJUKCFtX2Fzc2VydGlvbkNvdW50KTsKLSAgICBBU1NFUlQoIW1fcmVsZWFzZVRpbWVy
LmlzQWN0aXZlKCkpOwotICAgIHJlbGVhc2VOb3coKTsKLX0KLQotdm9pZCBOZXR3b3JrUHJveGlt
aXR5QXNzZXJ0aW9uOjpzdXNwZW5kQWZ0ZXJCYWNrZ3JvdW5kaW5nVGltZXJGaXJlZCgpCi17Ci0g
ICAgQVNTRVJUKCFtX3N1c3BlbmRBZnRlckJhY2tncm91bmRpbmdUaW1lci5pc0FjdGl2ZSgpKTsK
LSAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6U3VzcGVuZGVkKTsKLSAgICBzdXNwZW5kTm93
KCk7Ci19Ci0KLUJsdWV0b290aFByb3hpbWl0eUFzc2VydGlvbjo6Qmx1ZXRvb3RoUHJveGltaXR5
QXNzZXJ0aW9uKElEU1NlcnZpY2UgKmlkc1NlcnZpY2UpCi0gICAgOiBtX2lkc1NlcnZpY2UgeyBp
ZHNTZXJ2aWNlIH0KLXsKLX0KLQotdm9pZCBCbHVldG9vdGhQcm94aW1pdHlBc3NlcnRpb246OnN1
c3BlbmQoU3VzcGVuc2lvblJlYXNvbiByZWFzb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBhdXRvIHdhc0hvbGRpbmdBc3NlcnRpb24gPSBt
X2lzSG9sZGluZ0Fzc2VydGlvbjsKLSAgICBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uOjpzdXNw
ZW5kKHJlYXNvbiwgW10geyB9KTsKLQotICAgIHN3aXRjaCAocmVhc29uKSB7Ci0gICAgY2FzZSBT
dXNwZW5zaW9uUmVhc29uOjpQcm9jZXNzQmFja2dyb3VuZGluZzoKLSAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdXNwZW5zaW9uUmVhc29uOjpQ
cm9jZXNzU3VzcGVuZGluZzoKLSAgICAgICAgQVNTRVJUKCFtX2lzSG9sZGluZ0Fzc2VydGlvbik7
Ci0gICAgICAgIGlmICghd2FzSG9sZGluZ0Fzc2VydGlvbikgewotICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ly8gSURTIHByb2Nlc3NlcyAtc2V0TGlua1ByZWZlcmVuY2VzOiBvbiBhIGJhY2tncm91bmQgZGlz
cGF0Y2ggcXVldWUgYW5kIHByb3ZpZGVzIG5vCi0gICAgICAgIC8vIGNvbXBsZXRpb24gaGFuZGxl
ci4gSWYgd2Ugc3VzcGVuZCBiZWZvcmUgSURTIGZpbmlzaGVzIHNldHRpbmcgbGluayBwcmVmZXJl
bmNlcywgdGhlCi0gICAgICAgIC8vIEJsdWV0b290aCByYWRpbyBtaWdodCBzdGF5IGluIGEgaGln
aCBwb3dlciBtb2RlLCBoYXJtaW5nIGJhdHRlcnkgbGlmZS4gRGVsYXkgc3VzcGVuc2lvbgotICAg
ICAgICAvLyBieSAzMCBzZWNvbmRzIHRvIGVuc3VyZSAtc2V0TGlua1ByZWZlcmVuY2VzOiBhbHdh
eXMgZmluaXNoZXMgaXRzIHdvcmsuCi0gICAgICAgIGRpc3BhdGNoX2FmdGVyKGRpc3BhdGNoX3Rp
bWUoRElTUEFUQ0hfVElNRV9OT1csIDMwICogTlNFQ19QRVJfU0VDKSwgZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgbWFrZUJsb2NrUHRyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKS5nZXQo
KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotdm9pZCBCbHVldG9vdGhQcm94aW1pdHlB
c3NlcnRpb246OmhvbGROb3coKQotewotICAgIGlmIChtX2lzSG9sZGluZ0Fzc2VydGlvbikKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgUkVMRUFTRV9MT0coUHJveGltaXR5TmV0d29ya2luZywgIkhv
bGRpbmcgQmx1ZXRvb3RoIENsYXNzaWMgYXNzZXJ0aW9uLiIpOwotICAgIFttX2lkc1NlcnZpY2Ug
c2V0TGlua1ByZWZlcmVuY2VzOkB7IElEU0xpbmtQcmVmZXJlbmNlT3B0aW9uUGFja2V0c1BlclNl
Y29uZEtleSA6IEAoMjAwKSB9XTsKLSAgICBtX2lzSG9sZGluZ0Fzc2VydGlvbiA9IHRydWU7Ci19
Ci0KLXZvaWQgQmx1ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uOjpyZWxlYXNlTm93KCkKLXsKLSAg
ICBpZiAoIW1faXNIb2xkaW5nQXNzZXJ0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSRUxF
QVNFX0xPRyhQcm94aW1pdHlOZXR3b3JraW5nLCAiUmVsZWFzaW5nIEJsdWV0b290aCBDbGFzc2lj
IGFzc2VydGlvbi4iKTsKLSAgICBbbV9pZHNTZXJ2aWNlIHNldExpbmtQcmVmZXJlbmNlczpAeyBJ
RFNMaW5rUHJlZmVyZW5jZU9wdGlvblBhY2tldHNQZXJTZWNvbmRLZXkgOiBAKDApIH1dOwotICAg
IG1faXNIb2xkaW5nQXNzZXJ0aW9uID0gZmFsc2U7Ci19Ci0KLVdpRmlQcm94aW1pdHlBc3NlcnRp
b246OldpRmlQcm94aW1pdHlBc3NlcnRpb24oKQotICAgIDogbV93aUZpTWFuYWdlckNsaWVudCB7
IGFkb3B0Q0YoV2lGaU1hbmFnZXJDbGllbnRDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga1dp
RmlDbGllbnRUeXBlTm9ybWFsKSkgfQotewotfQotCi12b2lkIFdpRmlQcm94aW1pdHlBc3NlcnRp
b246OmhvbGROb3coKQotewotICAgIGlmIChtX2lzSG9sZGluZ0Fzc2VydGlvbikKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgUkVMRUFTRV9MT0coUHJveGltaXR5TmV0d29ya2luZywgIkhvbGRpbmcg
V2ktRmkgYXNzZXJ0aW9uLiIpOwotICAgIEFTU0VSVChXaUZpTWFuYWdlckNsaWVudEdldFR5cGUo
bV93aUZpTWFuYWdlckNsaWVudC5nZXQoKSkgPT0ga1dpRmlDbGllbnRUeXBlTm9ybWFsKTsKLSAg
ICBXaUZpTWFuYWdlckNsaWVudFNldFR5cGUobV93aUZpTWFuYWdlckNsaWVudC5nZXQoKSwga1dp
RmlDbGllbnRUeXBlRGlyZWN0VG9DbG91ZCk7Ci0gICAgbV9pc0hvbGRpbmdBc3NlcnRpb24gPSB0
cnVlOwotfQotCi12b2lkIFdpRmlQcm94aW1pdHlBc3NlcnRpb246OnJlbGVhc2VOb3coKQotewot
ICAgIGlmICghbV9pc0hvbGRpbmdBc3NlcnRpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIFJF
TEVBU0VfTE9HKFByb3hpbWl0eU5ldHdvcmtpbmcsICJSZWxlYXNpbmcgV2ktRmkgYXNzZXJ0aW9u
LiIpOwotICAgIEFTU0VSVChXaUZpTWFuYWdlckNsaWVudEdldFR5cGUobV93aUZpTWFuYWdlckNs
aWVudC5nZXQoKSkgPT0ga1dpRmlDbGllbnRUeXBlRGlyZWN0VG9DbG91ZCk7Ci0gICAgV2lGaU1h
bmFnZXJDbGllbnRTZXRUeXBlKG1fd2lGaU1hbmFnZXJDbGllbnQuZ2V0KCksIGtXaUZpQ2xpZW50
VHlwZU5vcm1hbCk7Ci0gICAgbV9pc0hvbGRpbmdBc3NlcnRpb24gPSBmYWxzZTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJ
TkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dhdGNob3MvTmV0
d29ya1Byb3hpbWl0eU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2F0
Y2hvcy9OZXR3b3JrUHJveGltaXR5TWFuYWdlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMzRhNzk4MjhiMDhhYjBlYjM2MzQ1ZDJhNTc4YjUyZGFmOWRhNTY1Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5TWFuYWdlci5oCisrKyAvZGV2L251bGwK
QEAgLTEsMTIxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShQUk9YSU1JVFlfTkVUV09SS0lORykKLQotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3VwcGxl
bWVudC5oIgotI2luY2x1ZGUgIk5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24uaCIKLSNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUg
PHd0Zi9PU09iamVjdFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19D
TEFTUyBJRFNTZXJ2aWNlOwotT0JKQ19DTEFTUyBOU0FycmF5OwotT0JKQ19DTEFTUyBOU1VSTFJl
cXVlc3Q7Ci1PQkpDX0NMQVNTIFdLUHJveGltaXR5U2VydmljZURlbGVnYXRlOwotT0JKQ19DTEFT
UyBXUk1faVJBVEludGVyZmFjZTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgTmV0d29ya1Byb2Nl
c3M7Ci1jbGFzcyBOZXR3b3JrRGF0YVRhc2tDb2NvYTsKLWVudW0gY2xhc3MgTmV0d29ya1Byb3hp
bWl0eVJlY29tbWVuZGF0aW9uIDogdWludDhfdDsKLQotZW51bSBjbGFzcyBSZXN1bXB0aW9uUmVh
c29uIDogdWludDhfdCB7Ci0gICAgUHJvY2Vzc0ZvcmVncm91bmRpbmcsCi0gICAgUHJvY2Vzc1Jl
c3VtaW5nLAotfTsKLQotZW51bSBjbGFzcyBTdXNwZW5zaW9uUmVhc29uIDogdWludDhfdCB7Ci0g
ICAgUHJvY2Vzc0JhY2tncm91bmRpbmcsCi0gICAgUHJvY2Vzc1N1c3BlbmRpbmcKLX07Ci0KLWNs
YXNzIE5ldHdvcmtQcm94aW1pdHlTZXJ2aWNlQ2xpZW50IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFs
IH5OZXR3b3JrUHJveGltaXR5U2VydmljZUNsaWVudCgpID0gZGVmYXVsdDsKLSAgICB2aXJ0dWFs
IHZvaWQgZGV2aWNlc0NoYW5nZWQoTlNBcnJheSAqZGV2aWNlcykgPSAwOwotfTsKLQotY2xhc3Mg
TmV0d29ya1Byb3hpbWl0eU1hbmFnZXIgZmluYWwgOiBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBw
bGVtZW50LCBwcml2YXRlIE5ldHdvcmtQcm94aW1pdHlTZXJ2aWNlQ2xpZW50IHsKLSAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3b3JrUHJv
eGltaXR5TWFuYWdlcik7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgTmV0d29ya1Byb3hpbWl0eU1h
bmFnZXIoTmV0d29ya1Byb2Nlc3MmKTsKLSAgICB+TmV0d29ya1Byb3hpbWl0eU1hbmFnZXIoKTsK
LQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwotCi0gICAgdm9pZCBh
cHBseVByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgTmV0d29ya0Rh
dGFUYXNrQ29jb2EmLCBOU1VSTFJlcXVlc3QgKiYpOwotICAgIHZvaWQgcmVzdW1lKFJlc3VtcHRp
b25SZWFzb24pOwotICAgIHZvaWQgc3VzcGVuZChTdXNwZW5zaW9uUmVhc29uLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwotCi1wcml2YXRlOgotICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1
aW50OF90IHsKLSAgICAgICAgQmFja2dyb3VuZGVkLAotICAgICAgICBGb3JlZ3JvdW5kZWQsCi0g
ICAgICAgIEluaXRpYWxpemVkLAotICAgICAgICBSZXN1bWVkLAotICAgICAgICBTdXNwZW5kZWQs
Ci0gICAgfTsKLQotICAgIGJvb2wgaXNDb21wYW5pb25JblByb3hpbWl0eSgpIGNvbnN0IHsgcmV0
dXJuIG1faXNDb21wYW5pb25JblByb3hpbWl0eTsgfQotICAgIE5ldHdvcmtQcm94aW1pdHlSZWNv
bW1lbmRhdGlvbiByZWNvbW1lbmRhdGlvbigpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkVXNlRGly
ZWN0V2lGaUluUHJveGltaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRVc2VEaXJlY3RXaUZp
SW5Qcm94aW1pdHk7IH0KLQotICAgIHZvaWQgcHJvY2Vzc1JlY29tbWVuZGF0aW9ucyhOU0FycmF5
ICpyZWNvbW1lbmRhdGlvbnMpOwotICAgIHZvaWQgcmVzdW1lUmVjb21tZW5kYXRpb25zKCk7Ci0g
ICAgdm9pZCBzdXNwZW5kUmVjb21tZW5kYXRpb25zKFN0YXRlIG9sZFN0YXRlKTsKLSAgICB2b2lk
IHVwZGF0ZUNvbXBhbmlvblByb3hpbWl0eSgpOwotICAgIHZvaWQgdXBkYXRlUmVjb21tZW5kYXRp
b24oKTsKLQotICAgIC8vIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudAotICAgIHZvaWQgaW5pdGlh
bGl6ZShjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpIG92ZXJyaWRlOwot
Ci0gICAgLy8gTmV0d29ya1Byb3hpbWl0eVNlcnZpY2VDbGllbnQKLSAgICB2b2lkIGRldmljZXND
aGFuZ2VkKE5TQXJyYXkgKmRldmljZXMpIG92ZXJyaWRlOwotCi0gICAgdW5zaWduZWQgbV9jb250
ZXh0SWRlbnRpZmllciB7IDAgfTsKLSAgICBib29sIG1faXNDb21wYW5pb25JblByb3hpbWl0eSB7
IGZhbHNlIH07Ci0gICAgYm9vbCBtX3Nob3VsZFVzZURpcmVjdFdpRmlJblByb3hpbWl0eSB7IGZh
bHNlIH07Ci0gICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpJbml0aWFsaXplZCB9OwotICAgIFJl
dGFpblB0cjxXUk1faVJBVEludGVyZmFjZT4gbV9pUkFUSW50ZXJmYWNlOwotICAgIFJldGFpblB0
cjxJRFNTZXJ2aWNlPiBtX2lkc1NlcnZpY2U7Ci0gICAgUmV0YWluUHRyPFdLUHJveGltaXR5U2Vy
dmljZURlbGVnYXRlPiBtX2lkc1NlcnZpY2VEZWxlZ2F0ZTsKLSAgICBPU09iamVjdFB0cjxkaXNw
YXRjaF9xdWV1ZV90PiBtX3JlY29tbWVuZGF0aW9uUXVldWU7Ci0gICAgQmx1ZXRvb3RoUHJveGlt
aXR5QXNzZXJ0aW9uIG1fYmx1ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uOwotICAgIFdpRmlQcm94
aW1pdHlBc3NlcnRpb24gbV93aUZpUHJveGltaXR5QXNzZXJ0aW9uOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dhdGNob3MvTmV0d29ya1By
b3hpbWl0eU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dhdGNob3Mv
TmV0d29ya1Byb3hpbWl0eU1hbmFnZXIubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDU1NzczZWI0NWRmNGRiMTg1NDlmODBkOGE3YjlmOGJjM2E5MGQwNDguLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93YXRjaG9zL05ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLm1tCisrKyAvZGV2L251bGwKQEAg
LTEsMzI1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQg
Ik5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLmgiCi0KLSNpZiBFTkFCTEUoUFJPWElNSVRZX05FVFdP
UktJTkcpCi0KLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgIk5ldHdvcmtEYXRhVGFza0Nv
Y29hLmgiCi0jaW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgotI2ltcG9ydCAiTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbXBvcnQgPElEUy9JRFMuaD4KLSNpbXBvcnQgPFdp
cmVsZXNzQ29leE1hbmFnZXIvV1JNX2lSQVRJbnRlcmZhY2UuaD4KLSNpbXBvcnQgPHBhbC9zcGkv
Y2YvQ0ZOZXR3b3JrU1BJLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KLSNpbXBvcnQgPHd0
Zi9Cb3guaD4KLSNpbXBvcnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgotI2ltcG9ydCA8d3Rm
L2NmL1R5cGVDYXN0c0NGLmg+Ci0jaW1wb3J0IDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUu
aD4KLQotV1RGX0RFQ0xBUkVfQ0ZfVFlQRV9UUkFJVChTQ05ldHdvcmtJbnRlcmZhY2UpOwotCi1A
aW50ZXJmYWNlIFdLUHJveGltaXR5U2VydmljZURlbGVnYXRlIDogTlNPYmplY3QgPElEU1NlcnZp
Y2VEZWxlZ2F0ZT4KLS0gKHZvaWQpc2V0Q2xpZW50OihXZWJLaXQ6Ok5ldHdvcmtQcm94aW1pdHlT
ZXJ2aWNlQ2xpZW50KiljbGllbnQ7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXS1Byb3hpbWl0
eVNlcnZpY2VEZWxlZ2F0ZSB7Ci0gICAgV2ViS2l0OjpOZXR3b3JrUHJveGltaXR5U2VydmljZUNs
aWVudCogX2NsaWVudDsKLX0KLQotLSAodm9pZClzZXRDbGllbnQ6KFdlYktpdDo6TmV0d29ya1By
b3hpbWl0eVNlcnZpY2VDbGllbnQqKWNsaWVudAotewotICAgIF9jbGllbnQgPSBjbGllbnQ7Ci19
Ci0KLS0gKHZvaWQpc2VydmljZTooSURTU2VydmljZSAqKXNlcnZpY2UgZGV2aWNlc0NoYW5nZWQ6
KE5TQXJyYXkgKilkZXZpY2VzCi17Ci0gICAgaWYgKF9jbGllbnQpCi0gICAgICAgIF9jbGllbnQt
PmRldmljZXNDaGFuZ2VkKGRldmljZXMpOwotfQotCi0tICh2b2lkKXNlcnZpY2U6KElEU1NlcnZp
Y2UgKilzZXJ2aWNlIG5lYXJieURldmljZXNDaGFuZ2VkOihOU0FycmF5ICopZGV2aWNlcwotewot
ICAgIGlmIChfY2xpZW50KQotICAgICAgICBfY2xpZW50LT5kZXZpY2VzQ2hhbmdlZChkZXZpY2Vz
KTsKLX0KLQotQGVuZAotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotZW51bSBjbGFzcyBOZXR3b3Jr
UHJveGltaXR5UmVjb21tZW5kYXRpb24gOiB1aW50OF90IHsKLSAgICBCbHVldG9vdGgsCi0gICAg
Tm9uZSwKLSAgICBXaUZpLAotfTsKLQotTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6Ok5ldHdvcmtQ
cm94aW1pdHlNYW5hZ2VyKE5ldHdvcmtQcm9jZXNzJikKLSAgICA6IG1faWRzU2VydmljZSB7IGFk
b3B0TlMoW1tJRFNTZXJ2aWNlIGFsbG9jXSBpbml0V2l0aFNlcnZpY2U6QCJjb20uYXBwbGUucHJp
dmF0ZS5hbGxveS53ZWJraXRuZXR3b3JraW5nIl0pIH0KLSAgICAsIG1faWRzU2VydmljZURlbGVn
YXRlIHsgYWRvcHROUyhbW1dLUHJveGltaXR5U2VydmljZURlbGVnYXRlIGFsbG9jXSBpbml0XSkg
fQotICAgICwgbV9yZWNvbW1lbmRhdGlvblF1ZXVlIHsgYWRvcHRPU09iamVjdChkaXNwYXRjaF9x
dWV1ZV9jcmVhdGUoIldlYktpdCBOZXR3b3JrIFByb3hpbWl0eSBSZWNvbW1lbmRhdGlvbiBRdWV1
ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkpIH0KLSAgICAsIG1fYmx1ZXRvb3RoUHJveGltaXR5
QXNzZXJ0aW9uIHsgbV9pZHNTZXJ2aWNlLmdldCgpIH0KLXsKLSAgICBbbV9pZHNTZXJ2aWNlRGVs
ZWdhdGUgc2V0Q2xpZW50OnRoaXNdOwotICAgIFttX2lkc1NlcnZpY2UgYWRkRGVsZWdhdGU6bV9p
ZHNTZXJ2aWNlRGVsZWdhdGUuZ2V0KCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKV07
Ci19Ci0KLU5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjp+TmV0d29ya1Byb3hpbWl0eU1hbmFnZXIo
KQotewotICAgIFttX2lkc1NlcnZpY2VEZWxlZ2F0ZSBzZXRDbGllbnQ6bnVsbHB0cl07Ci19Ci0K
LWNvbnN0IGNoYXIqIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjpzdXBwbGVtZW50TmFtZSgpCi17
Ci0gICAgcmV0dXJuICJOZXR3b3JrUHJveGltaXR5TWFuYWdlciI7Ci19Ci0KLXN0YXRpYyB2b2lk
IGJpbmRSZXF1ZXN0VG9XaUZpKE5TVVJMUmVxdWVzdCAqJiByZXF1ZXN0KQotewotICAgIHN0YXRp
YyBOU1N0cmluZyAqd2lGaUludGVyZmFjZUlkZW50aWZpZXIgPSBbXSgpIC0+IE5TU3RyaW5nICog
ewotICAgICAgICBhdXRvIGludGVyZmFjZXMgPSBhZG9wdENGKFNDTmV0d29ya0ludGVyZmFjZUNv
cHlBbGwoKSk7Ci0gICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMCwgY291bnQgPSBDRkFycmF5R2V0
Q291bnQoaW50ZXJmYWNlcy5nZXQoKSk7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBh
dXRvIGludGVyZmFjZSA9IGNoZWNrZWRfY2ZfY2FzdDxTQ05ldHdvcmtJbnRlcmZhY2VSZWY+KENG
QXJyYXlHZXRWYWx1ZUF0SW5kZXgoaW50ZXJmYWNlcy5nZXQoKSwgaSkpOwotICAgICAgICAgICAg
aWYgKCFDRkVxdWFsKFNDTmV0d29ya0ludGVyZmFjZUdldEludGVyZmFjZVR5cGUoaW50ZXJmYWNl
KSwga1NDTmV0d29ya0ludGVyZmFjZVR5cGVJRUVFODAyMTEpKQotICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSByZXRhaW5QdHIoU0NOZXR3
b3JrSW50ZXJmYWNlR2V0QlNETmFtZShpbnRlcmZhY2UpKTsKLSAgICAgICAgICAgIFJFTEVBU0Vf
TE9HKFByb3hpbWl0eU5ldHdvcmtpbmcsICJEZXRlcm1pbmVkIFdpLUZpIGludGVyZmFjZSBpZGVu
dGlmaWVyIGlzICVALiIsIGlkZW50aWZpZXIuZ2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuIChO
U1N0cmluZyAqKWlkZW50aWZpZXIubGVha1JlZigpOwotICAgICAgICB9Ci0KLSAgICAgICAgUkVM
RUFTRV9MT0coUHJveGltaXR5TmV0d29ya2luZywgIkZhaWxlZCB0byBkZXRlcm1pbmUgV2ktRmkg
aW50ZXJmYWNlIGlkZW50aWZpZXIuIik7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfSgpOwot
Ci0gICAgaWYgKCF3aUZpSW50ZXJmYWNlSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgYXV0byBtdXRhYmxlUmVxdWVzdCA9IGFkb3B0TlMoW3JlcXVlc3QgbXV0YWJsZUNvcHldKTsK
LSAgICBbbXV0YWJsZVJlcXVlc3Qgc2V0Qm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOndpRmlJbnRl
cmZhY2VJZGVudGlmaWVyXTsKLSAgICByZXF1ZXN0ID0gbXV0YWJsZVJlcXVlc3QuYXV0b3JlbGVh
c2UoKTsKLX0KLQotdm9pZCBOZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6YXBwbHlQcm9wZXJ0aWVz
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViS2l0OjpOZXR3b3Jr
RGF0YVRhc2tDb2NvYSYgZGF0YVRhc2ssIE5TVVJMUmVxdWVzdCAqJiBuc1JlcXVlc3QpCi17Ci0g
ICAgLy8gSWYgdGhlIGNsaWVudCBoYXMgYWxyZWFkeSBib3VuZCB0aGUgcmVxdWVzdCB0byBhbiBp
ZGVudGlmaWVyLCBkb24ndCBvdmVycmlkZSBpdC4KLSAgICBpZiAobnNSZXF1ZXN0LmJvdW5kSW50
ZXJmYWNlSWRlbnRpZmllci5sZW5ndGgpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChkYXRh
VGFzay5pc1RvcExldmVsTmF2aWdhdGlvbigpKQotICAgICAgICB1cGRhdGVSZWNvbW1lbmRhdGlv
bigpOwotCi0gICAgc3dpdGNoIChyZWNvbW1lbmRhdGlvbigpKSB7Ci0gICAgY2FzZSBOZXR3b3Jr
UHJveGltaXR5UmVjb21tZW5kYXRpb246OkJsdWV0b290aDoKLSAgICAgICAgZGF0YVRhc2suaG9s
ZFByb3hpbWl0eUFzc2VydGlvbihtX2JsdWV0b290aFByb3hpbWl0eUFzc2VydGlvbik7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgTmV0d29ya1Byb3hpbWl0eVJlY29tbWVuZGF0aW9uOjpOb25l
OgotICAgICAgICBicmVhazsKLSAgICBjYXNlIE5ldHdvcmtQcm94aW1pdHlSZWNvbW1lbmRhdGlv
bjo6V2lGaToKLSAgICAgICAgZGF0YVRhc2suaG9sZFByb3hpbWl0eUFzc2VydGlvbihtX3dpRmlQ
cm94aW1pdHlBc3NlcnRpb24pOwotICAgICAgICBiaW5kUmVxdWVzdFRvV2lGaShuc1JlcXVlc3Qp
OwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXZvaWQgTmV0d29ya1Byb3hpbWl0eU1hbmFn
ZXI6OnJlc3VtZShSZXN1bXB0aW9uUmVhc29uIHJlYXNvbikKLXsKLSAgICBzd2l0Y2ggKHJlYXNv
bikgewotICAgIGNhc2UgUmVzdW1wdGlvblJlYXNvbjo6UHJvY2Vzc0ZvcmVncm91bmRpbmc6Ci0g
ICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6Rm9yZWdyb3VuZGVkOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFJlc3VtcHRpb25SZWFzb246OlByb2Nlc3NSZXN1bWluZzoKLSAgICAgICAgbV9zdGF0
ZSA9IFN0YXRlOjpSZXN1bWVkOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXN1bWVS
ZWNvbW1lbmRhdGlvbnMoKTsKLQotICAgIHN3aXRjaCAocmVjb21tZW5kYXRpb24oKSkgewotICAg
IGNhc2UgTmV0d29ya1Byb3hpbWl0eVJlY29tbWVuZGF0aW9uOjpCbHVldG9vdGg6Ci0gICAgICAg
IG1fYmx1ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uLnJlc3VtZShyZWFzb24pOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIE5ldHdvcmtQcm94aW1pdHlSZWNvbW1lbmRhdGlvbjo6Tm9uZToKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBOZXR3b3JrUHJveGltaXR5UmVjb21tZW5kYXRpb246Oldp
Rmk6Ci0gICAgICAgIG1fd2lGaVByb3hpbWl0eUFzc2VydGlvbi5yZXN1bWUocmVhc29uKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lkIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjpz
dXNwZW5kKFN1c3BlbnNpb25SZWFzb24gcmVhc29uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgYXV0byBvbGRTdGF0ZSA9IG1fc3RhdGU7Ci0g
ICAgc3dpdGNoIChyZWFzb24pIHsKLSAgICBjYXNlIFN1c3BlbnNpb25SZWFzb246OlByb2Nlc3NC
YWNrZ3JvdW5kaW5nOgotICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkJhY2tncm91bmRlZDsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdXNwZW5zaW9uUmVhc29uOjpQcm9jZXNzU3VzcGVuZGlu
ZzoKLSAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpTdXNwZW5kZWQ7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLQotICAgIHN1c3BlbmRSZWNvbW1lbmRhdGlvbnMob2xkU3RhdGUpOwotCi0gICAgYXV0
byB3cmFwcGVkQ29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKLSAgICAgICAgUkVMRUFTRV9MT0coUHJveGltaXR5TmV0d29ya2luZywgIkZp
bmlzaGVkIHN1c3BlbmRpbmcgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIgKHN0YXRlOiAlaGh1KS4i
LCBtX3N0YXRlKTsKLSAgICB9OwotCi0gICAgUkVMRUFTRV9MT0coUHJveGltaXR5TmV0d29ya2lu
ZywgIlN1c3BlbmRpbmcgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIgKHN0YXRlOiAlaGh1KS4iLCBt
X3N0YXRlKTsKLSAgICBtX2JsdWV0b290aFByb3hpbWl0eUFzc2VydGlvbi5zdXNwZW5kKHJlYXNv
biwgV1RGTW92ZSh3cmFwcGVkQ29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBtX3dpRmlQcm94aW1p
dHlBc3NlcnRpb24uc3VzcGVuZChyZWFzb24sIFtdIHsgfSk7Ci19Ci0KLU5ldHdvcmtQcm94aW1p
dHlSZWNvbW1lbmRhdGlvbiBOZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6cmVjb21tZW5kYXRpb24o
KSBjb25zdAotewotICAgIGlmICghaXNDb21wYW5pb25JblByb3hpbWl0eSgpKQotICAgICAgICBy
ZXR1cm4gTmV0d29ya1Byb3hpbWl0eVJlY29tbWVuZGF0aW9uOjpOb25lOwotCi0gICAgaWYgKHNo
b3VsZFVzZURpcmVjdFdpRmlJblByb3hpbWl0eSgpKQotICAgICAgICByZXR1cm4gTmV0d29ya1By
b3hpbWl0eVJlY29tbWVuZGF0aW9uOjpXaUZpOwotCi0gICAgcmV0dXJuIE5ldHdvcmtQcm94aW1p
dHlSZWNvbW1lbmRhdGlvbjo6Qmx1ZXRvb3RoOwotfQotCi12b2lkIE5ldHdvcmtQcm94aW1pdHlN
YW5hZ2VyOjpwcm9jZXNzUmVjb21tZW5kYXRpb25zKE5TQXJyYXkgKnJlY29tbWVuZGF0aW9ucykK
LXsKLSAgICBtX3Nob3VsZFVzZURpcmVjdFdpRmlJblByb3hpbWl0eSA9IGZhbHNlOwotICAgIGJv
b2wgZGlkU2VlRGlyZWN0V2lGaVJlY29tbWVuZGF0aW9uID0gZmFsc2U7Ci0gICAgZm9yIChXUk1f
aVJBVFByb3hpbWl0eVJlY29tbWVuZGF0aW9uICpyZWNvbW1lbmRhdGlvbiBpbiByZWNvbW1lbmRh
dGlvbnMpIHsKLSAgICAgICAgc3dpdGNoIChyZWNvbW1lbmRhdGlvbi5SZWNvbW1lbmRhdGlvblR5
cGUpIHsKLSAgICAgICAgY2FzZSBXUk1SZWNvbW1lbmRhdGlvbkxpbmtUeXBlQlQ6Ci0gICAgICAg
IGNhc2UgV1JNUmVjb21tZW5kYXRpb25MaW5rVHlwZUNvbXBhbmlvbldpZmk6Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBXUk1SZWNvbW1lbmRhdGlvbkxpbmtUeXBlRGlyZWN0V2lm
aToKLSAgICAgICAgICAgIEFTU0VSVCghZGlkU2VlRGlyZWN0V2lGaVJlY29tbWVuZGF0aW9uKTsK
LSAgICAgICAgICAgIGRpZFNlZURpcmVjdFdpRmlSZWNvbW1lbmRhdGlvbiA9IHRydWU7Ci0gICAg
ICAgICAgICBtX3Nob3VsZFVzZURpcmVjdFdpRmlJblByb3hpbWl0eSA9IHJlY29tbWVuZGF0aW9u
LmxpbmtSZWNvbW1lbmRhdGlvbklzVmFsaWQgJiYgcmVjb21tZW5kYXRpb24ubGlua0lzUmVjb21t
ZW5kZWQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIFJFTEVB
U0VfTE9HKFByb3hpbWl0eU5ldHdvcmtpbmcsICJQcm9jZXNzZWQgaVJBVE1hbmFnZXIgcmVjb21t
ZW5kYXRpb25zIChzaG91bGRVc2VEaXJlY3RXaUZpSW5Qcm94aW1pdHk6ICVkKS5cbiIsIG1fc2hv
dWxkVXNlRGlyZWN0V2lGaUluUHJveGltaXR5KTsKLX0KLQotc3RhdGljIFdDTVByb2Nlc3NJZCB0
b1Byb2Nlc3NJRCh1bnNpZ25lZCBjb250ZXh0SWRlbnRpZmllcikKLXsKLSAgICBzd2l0Y2ggKGNv
bnRleHRJZGVudGlmaWVyKSB7Ci0gICAgY2FzZSBXUk1XZWJraXQ6Ci0gICAgICAgIHJldHVybiBX
Uk1XZWJraXQ7Ci0gICAgY2FzZSBXUk1XZWJraXRNYWlsOgotICAgICAgICByZXR1cm4gV1JNV2Vi
a2l0TWFpbDsKLSAgICBjYXNlIFdSTVdlYmtpdE5vdGlmaWNhdGlvbjoKLSAgICAgICAgcmV0dXJu
IFdSTVdlYmtpdE5vdGlmaWNhdGlvbjsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gV0NN
VW5rbm93bjsKLSAgICB9Ci19Ci0KLXZvaWQgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OnJlc3Vt
ZVJlY29tbWVuZGF0aW9ucygpCi17Ci0gICAgaWYgKG1faVJBVEludGVyZmFjZSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgdXBkYXRlQ29tcGFuaW9uUHJveGltaXR5KCk7Ci0KLSAgICBhdXRvIHBy
b2Nlc3NJRCA9IHRvUHJvY2Vzc0lEKG1fY29udGV4dElkZW50aWZpZXIpOwotICAgIGlmIChwcm9j
ZXNzSUQgPT0gV0NNVW5rbm93bikgewotICAgICAgICBSRUxFQVNFX0xPRyhQcm94aW1pdHlOZXR3
b3JraW5nLCAiSW52YWxpZCBXQ00gcHJvY2VzcyBJRCAoJWQpLiIsIG1fY29udGV4dElkZW50aWZp
ZXIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUkVMRUFTRV9MT0coUHJveGltaXR5
TmV0d29ya2luZywgIlJlZ2lzdGVyaW5nIHdpdGggaVJBVE1hbmFnZXIgKFdDTSBwcm9jZXNzIElE
OiAlZCwgc3RhdGU6ICVoaHUpLiIsIHByb2Nlc3NJRCwgbV9zdGF0ZSk7Ci0gICAgbV9pUkFUSW50
ZXJmYWNlID0gYWRvcHROUyhbW1dSTV9pUkFUSW50ZXJmYWNlIGFsbG9jXSBpbml0XSk7Ci0gICAg
W21faVJBVEludGVyZmFjZSByZWdpc3RlckNsaWVudDpwcm9jZXNzSUQgcXVldWU6bV9yZWNvbW1l
bmRhdGlvblF1ZXVlLmdldCgpXTsKLSAgICB1cGRhdGVSZWNvbW1lbmRhdGlvbigpOwotfQotCi12
b2lkIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjpzdXNwZW5kUmVjb21tZW5kYXRpb25zKFN0YXRl
IG9sZFN0YXRlKQotewotICAgIC8vIElmIHRoaXMgaXMgbm90IGEgZm9yZWdyb3VuZC10by1iYWNr
Z3JvdW5kIHRyYW5zaXRpb24sIGF2b2lkIHVucmVnaXN0ZXJpbmcuIFBhZ2UgbG9hZHMgY2FuCi0g
ICAgLy8gb2Z0ZW4gY2F1c2UgdGhlIG5ldHdvcmsgcHJvY2VzcyB0byByZXN1bWUsIHRyYW5zaXRp
b24gdG8gdGhlIGJhY2tncm91bmQsIHRoZW4gdHJhbnNpdGlvbiB0bwotICAgIC8vIHRoZSBmb3Jl
Z3JvdW5kIGluIHJhcGlkIHN1Y2Nlc3Npb24sIGNhdXNpbmcgdW5uZWNlc3NhcnkgaVJBVE1hbmFn
ZXIgcmVnaXN0cmF0aW9uIGNodXJuIGFuZAotICAgIC8vIGV4cG9zaW5nIGJ1Z3Mgc3VjaCBhcyA8
cmRhcjovL3Byb2JsZW0vNDI1NjAzMjA+LgotICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpCYWNr
Z3JvdW5kZWQgJiYgb2xkU3RhdGUgIT0gU3RhdGU6OkZvcmVncm91bmRlZCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKCFtX2lSQVRJbnRlcmZhY2UpCi0gICAgICAgIHJldHVybjsKLQotICAg
IFJFTEVBU0VfTE9HKFByb3hpbWl0eU5ldHdvcmtpbmcsICJVbnJlZ2lzdGVyaW5nIHdpdGggaVJB
VE1hbmFnZXIgKFdDTSBwcm9jZXNzIElEOiAlZCwgc3RhdGU6ICVoaHUpLiIsIG1fY29udGV4dElk
ZW50aWZpZXIsIG1fc3RhdGUpOwotICAgIFttX2lSQVRJbnRlcmZhY2UgdW5yZWdpc3RlckNsaWVu
dF07Ci0gICAgbV9pUkFUSW50ZXJmYWNlID0gbmlsOwotICAgIG1faXNDb21wYW5pb25JblByb3hp
bWl0eSA9IGZhbHNlOwotICAgIG1fc2hvdWxkVXNlRGlyZWN0V2lGaUluUHJveGltaXR5ID0gZmFs
c2U7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OnVwZGF0ZUNvbXBhbmlvblBy
b3hpbWl0eSgpCi17Ci0gICAgbV9pc0NvbXBhbmlvbkluUHJveGltaXR5ID0gZmFsc2U7Ci0gICAg
Zm9yIChJRFNEZXZpY2UgKmRldmljZSBpbiBbbV9pZHNTZXJ2aWNlIGRldmljZXNdKSB7Ci0gICAg
ICAgIGlmIChkZXZpY2UuaXNEZWZhdWx0UGFpcmVkRGV2aWNlICYmIGRldmljZS5pc05lYXJieSkg
ewotICAgICAgICAgICAgbV9pc0NvbXBhbmlvbkluUHJveGltaXR5ID0gdHJ1ZTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgUkVMRUFTRV9MT0coUHJveGltaXR5
TmV0d29ya2luZywgIkRldGVybWluZWQgY29tcGFuaW9uIHByb3hpbWl0eSAoaXNDb21wYW5pb25J
blByb3hpbWl0eTogJWQpLiIsIG1faXNDb21wYW5pb25JblByb3hpbWl0eSk7Ci19Ci0KLXZvaWQg
TmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OnVwZGF0ZVJlY29tbWVuZGF0aW9uKCkKLXsKLSAgICBp
ZiAoIWlzQ29tcGFuaW9uSW5Qcm94aW1pdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYg
KCFtX2lSQVRJbnRlcmZhY2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJFTEVBU0VfTE9HKFBy
b3hpbWl0eU5ldHdvcmtpbmcsICJSZXF1ZXN0aW5nIGFuIGltbWVkaWF0ZSByZWNvbW1lbmRhdGlv
biBmcm9tIGlSQVRNYW5hZ2VyLiIpOwotCi0gICAgYXV0byBzZW1hcGhvcmUgPSBCb3g8QmluYXJ5
U2VtYXBob3JlPjo6Y3JlYXRlKCk7Ci0gICAgW21faVJBVEludGVyZmFjZSBnZXRQcm94aW1pdHlM
aW5rUmVjb21tZW5kYXRpb246Tk8gcmVjb21tZW5kYXRpb246W3RoaXMsIHNlbWFwaG9yZV0oTlNB
cnJheTxXUk1faVJBVFByb3hpbWl0eVJlY29tbWVuZGF0aW9uICo+ICpyZWNvbW1lbmRhdGlvbnMp
IHsKLSAgICAgICAgcHJvY2Vzc1JlY29tbWVuZGF0aW9ucyhyZWNvbW1lbmRhdGlvbnMpOwotICAg
ICAgICBzZW1hcGhvcmUtPnNpZ25hbCgpOwotICAgIH1dOwotICAgIHNlbWFwaG9yZS0+d2FpdEZv
cigxX3MpOwotfQotCi12b2lkIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjppbml0aWFsaXplKGNv
bnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotewotICAg
IG1fY29udGV4dElkZW50aWZpZXIgPSBwYXJhbWV0ZXJzLndpcmVsZXNzQ29udGV4dElkZW50aWZp
ZXI7Ci0gICAgcmVzdW1lKFJlc3VtcHRpb25SZWFzb246OlByb2Nlc3NSZXN1bWluZyk7Ci19Ci0K
LXZvaWQgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OmRldmljZXNDaGFuZ2VkKE5TQXJyYXkgKikK
LXsKLSAgICB1cGRhdGVDb21wYW5pb25Qcm94aW1pdHkoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQKaW5kZXggOTcyMzZlNzlmZDM1MmVjZjBjNTA5NGJjZDcwYjM0NTI1MGRjM2Rj
Ni4uOWUzNzUyYWIwY2MxZjgwZjlkZDlkMjk2Njk4N2ZjZTY3MjY0ZTBjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dApAQCAtNDgsOSArNDgsNiBAQCBOZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1By
b2Nlc3NJT1MubW0KIE5ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQogTmV0
d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCiAKLU5ldHdvcmtQcm9j
ZXNzL3dhdGNob3MvTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbi5tbQotTmV0d29ya1Byb2Nlc3Mv
d2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5TWFuYWdlci5tbQotCiBOZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTGliV2ViUlRDU29ja2V0Q2xpZW50LmNwcAogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENNb25pdG9yLmNwcAogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRl
ci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggMzMyYjBlNTIxMWJkYzk3YmYxMmM4YTE5
ZWI0M2E4YWMzODcwMDA2NS4uM2RiNzA1NjljOGE0ZTMzMzQzYjg0ZmEzMjdjMzIwYTMzNThlNGIz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKQEAgLTEyNiw5ICsxMjYsNiBAQCBSZWY8UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkoKQogICAg
IGNvcHktPm1fcHJvY2Vzc1N3YXBzT25XaW5kb3dPcGVuV2l0aE9wZW5lciA9IHRoaXMtPm1fcHJv
Y2Vzc1N3YXBzT25XaW5kb3dPcGVuV2l0aE9wZW5lcjsKICAgICBjb3B5LT5tX2lzQXV0b21hdGlj
UHJvY2Vzc1dhcm1pbmdFbmFibGVkQnlDbGllbnQgPSB0aGlzLT5tX2lzQXV0b21hdGljUHJvY2Vz
c1dhcm1pbmdFbmFibGVkQnlDbGllbnQ7CiAgICAgY29weS0+bV91c2VzV2ViUHJvY2Vzc0NhY2hl
ID0gdGhpcy0+bV91c2VzV2ViUHJvY2Vzc0NhY2hlOwotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVU
V09SS0lORykKLSAgICBjb3B5LT5tX3dpcmVsZXNzQ29udGV4dElkZW50aWZpZXIgPSB0aGlzLT5t
X3dpcmVsZXNzQ29udGV4dElkZW50aWZpZXI7Ci0jZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBjb3B5LT5tX3N1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5n
ZSA9IHRoaXMtPm1fc3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdl
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKaW5kZXggZDNiMDlhODY1NTE1MGY4OWU2YjAyNDY4
MTMxODc2YjExYWE1MjYyYy4uZjIxYWY1ZjFkZmZmNzU4ZGM3ZDRiYzZkZjM4NjI2NThiODZkYmFm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uaApAQCAtMTgwLDExICsxODAsNiBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgV1RGOjpTdHJpbmcmIGN1c3RvbVdlYkNvbnRlbnRTZXJ2aWNlQnVuZGxlSWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tV2ViQ29udGVudFNlcnZpY2VCdW5kbGVJZGVudGlm
aWVyOyB9CiAgICAgdm9pZCBzZXRDdXN0b21XZWJDb250ZW50U2VydmljZUJ1bmRsZUlkZW50aWZp
ZXIoY29uc3QgV1RGOjpTdHJpbmcmIGN1c3RvbVdlYkNvbnRlbnRTZXJ2aWNlQnVuZGxlSWRlbnRp
ZmllcikgeyBtX2N1c3RvbVdlYkNvbnRlbnRTZXJ2aWNlQnVuZGxlSWRlbnRpZmllciA9IGN1c3Rv
bVdlYkNvbnRlbnRTZXJ2aWNlQnVuZGxlSWRlbnRpZmllcjsgfQogCi0jaWYgRU5BQkxFKFBST1hJ
TUlUWV9ORVRXT1JLSU5HKQotICAgIHVuc2lnbmVkIHdpcmVsZXNzQ29udGV4dElkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX3dpcmVsZXNzQ29udGV4dElkZW50aWZpZXI7IH0KLSAgICB2b2lk
IHNldFdpcmVsZXNzQ29udGV4dElkZW50aWZpZXIodW5zaWduZWQgd2lyZWxlc3NDb250ZXh0SWRl
bnRpZmllcikgeyBtX3dpcmVsZXNzQ29udGV4dElkZW50aWZpZXIgPSB3aXJlbGVzc0NvbnRleHRJ
ZGVudGlmaWVyOyB9Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgc3Vw
cHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlKCkgY29uc3QgeyByZXR1
cm4gbV9zdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2U7IH0KICAg
ICB2b2lkIHNldFN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZShi
b29sIHN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZSkgeyBtX3N1
cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZSA9IHN1cHByZXNzZXND
b25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZTsgfQpAQCAtMjM3LDEwICsyMzIsNiBA
QCBwcml2YXRlOgogICAgIFdURjo6U3RyaW5nIG1fY3REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBl
OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCi0gICAgdW5zaWdu
ZWQgbV93aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyIHsgMCB9OwotI2VuZGlmCi0KICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBib29sIG1fc3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9u
U3lzdGVtQ2hhbmdlIHsgZmFsc2UgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5oCmluZGV4IDNhYjBjM2JmNTFlNjViODA3YmE0MzQ2NzBmMWY2ZWUzODE1NTUyZTUuLmUxODhk
ZDhmYjAxZmY4NDE4NjFkOGFmYjNmZjJhNjBlNTYzMTBkMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmgKQEAgLTQyLDcgKzQyLDcgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEw
LjEwKSwgaW9zKDguMCkpCiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNBcnJheTxOU1VS
TCAqPiAqYWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMcyBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjEzKSwgaW9zKDExLjApKTsKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUgJiYgIVRBUkdF
VF9PU19TSU1VTEFUT1IKLUBwcm9wZXJ0eSAobm9uYXRvbWljKSBOU1VJbnRlZ2VyIHdpcmVsZXNz
Q29udGV4dElkZW50aWZpZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYykgTlNVSW50ZWdlciB3aXJl
bGVzc0NvbnRleHRJZGVudGlmaWVyIFdLX0FQSV9ERVBSRUNBVEVEKCJVc2Ugb2YgdGhpcyBBUEkg
aXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSBhbmQgY2FuIGJlIHJlbW92ZWQiLCBpb3MoMTAuMTIsIFdL
X0lPU19UQkEpKTsKICNlbmRpZgogCiAvLyBOZXR3b3JrIFByb2Nlc3MgcHJvcGVydGllcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KaW5kZXggOTZiMGE5ODVmZjNkMWFiNGI3NDI1NmMx
ODZkNDQ5M2VmZGU0ZmM1ZS4uMTZjMzIzYjg4MDNkMTc0NzBkMTQxNjgzMWFjZmU1ZTdjYzhhOThh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCkBAIC0xMzcsMTUgKzEzNywxNCBA
QCAtICh2b2lkKXNldEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHM6KE5TQXJyYXk8TlNV
UkwgKj4gKilhZGRpdGlvbmFsUmVhZEFjYwogICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24t
PnNldEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKFdURk1vdmUocGF0aHMpKTsKIH0K
IAotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCiAtIChOU1VJbnRlZ2VyKXdp
cmVsZXNzQ29udGV4dElkZW50aWZpZXIKIHsKLSAgICByZXR1cm4gX3Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi0+d2lyZWxlc3NDb250ZXh0SWRlbnRpZmllcigpOworICAgIHJldHVybiAwOwogfQog
CiAtICh2b2lkKXNldFdpcmVsZXNzQ29udGV4dElkZW50aWZpZXI6KE5TVUludGVnZXIpaWRlbnRp
ZmllcgogewotICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNldFdpcmVsZXNzQ29udGV4
dElkZW50aWZpZXIoaWRlbnRpZmllcik7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5kZXggYmVhMGQ5
MmQ3MmQ5YTUzYzVhNDJhNjU4ZjJiYTE2MTdhNzE4M2RjMi4uZWY5MmJhZDM1NjM1OWM0ZmRlYzFm
ZmMzYTdkYWQ4MTgyMGIyNWY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC0yOTYsMTAgKzI5Niw2IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhCiAgICAgcGFyYW1ldGVycy5zdG9yYWdlQWNjZXNzQVBJRW5hYmxl
ZCA9IHN0b3JhZ2VBY2Nlc3NBUElFbmFibGVkKCk7CiAgICAgcGFyYW1ldGVycy5zdXBwcmVzc2Vz
Q29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2UgPSBtX2NvbmZpZ3VyYXRpb24tPnN1
cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZSgpOwogCi0jaWYgRU5B
QkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQotICAgIHBhcmFtZXRlcnMud2lyZWxlc3NDb250ZXh0
SWRlbnRpZmllciA9IG1fY29uZmlndXJhdGlvbi0+d2lyZWxlc3NDb250ZXh0SWRlbnRpZmllcigp
OwotI2VuZGlmCi0KICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZUlUUERhdGFiYXNlID0gW2Rl
ZmF1bHRzIGJvb2xGb3JLZXk6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJbnRlcm5hbERl
YnVnJUAiLCBXZWJQcmVmZXJlbmNlc0tleTo6aXNJVFBEYXRhYmFzZUVuYWJsZWRLZXkoKS5jcmVh
dGVDRlN0cmluZygpLmdldCgpXV07CiAgICAgcGFyYW1ldGVycy5kb3dubG9hZE1vbml0b3JTcGVl
ZE11bHRpcGxpZXIgPSBtX2NvbmZpZ3VyYXRpb24tPmRvd25sb2FkTW9uaXRvclNwZWVkTXVsdGlw
bGllcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCAzYzNkMGFhMzRmYWEwNGVlYzVhYWI5YmM5MzNmMTg4MmE0YjBiOWNiLi4wOTg2
M2VlNDg2MWEzY2M0YzgyZjZhYjI1MjBjOGQ1N2VhYTdmMTNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyODMsOCArMTI4Myw2IEBA
CiAJCUExMDJBNzA4MUVDMEVFRTkwMEQ4MUQ4MiAvKiBjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5
ZXIgRVNSLnBsdWdpbi5zYiBpbiBDb3B5IFBsdWctaW4gU2FuZGJveCBQcm9maWxlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTVFMzk0OTFENUJEOEE3MDBCNEI3Q0UgLyog
Y29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyIEVTUi5wbHVnaW4uc2IgKi87IH07CiAJCUExMDQ2
RUExMjA3OTI2MzEwMEYwQzVEOCAvKiBXS1BERlZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMDQ2RTlGMjA3OTI2MzEwMEYwQzVEOCAvKiBXS1BE
RlZpZXcuaCAqLzsgfTsKIAkJQTEwNUQwRDEyMTI3MzRCMjAwMzRGNkM3IC8qIE5ldHdvcmtCbG9i
UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExMDVEMEQwMjEyNzM0QjEwMDM0RjZDNyAvKiBOZXR3b3JrQmxvYlJlZ2lzdHJ5LmggKi87IH07
Ci0JCUExMTQ1NUFDMjExRkNGQ0EwMENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE0NTVB
QTIxMUZDRkNBMDBDQTkzNUIgLyogTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbi5oICovOyB9Owot
CQlBMTE0NTVCMDIxMUZEMjUyMDBDQTkzNUIgLyogTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTQ1NUFFMjEx
RkQyNTIwMENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5TWFuYWdlci5oICovOyB9OwogCQlBMTE1
REM3MjE5MUQ4MkRBMDBEQTgwNzIgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE1REM2RTE5MUQ4MkFC
MDBEQTgwNzIgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTExOEE5RUYxOTA3QUQ2RjAwRjdDOTJC
IC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTExOEE5RUQxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1aWNrTG9va0Rv
Y3VtZW50RGF0YS5oICovOyB9OwogCQlBMTE4QTlGMzE5MDhCOEVBMDBGN0M5MkIgLyogX1dLTlNG
aWxlTWFuYWdlckV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTExOEE5RjExOTA4QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1hbmFnZXJFeHRy
YXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
Mzg3MywxMCArMzg3MSw2IEBACiAJCUExMDQ2RTlGMjA3OTI2MzEwMEYwQzVEOCAvKiBXS1BERlZp
ZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gV0tQREZWaWV3Lmg7IHBhdGggPSBpb3MvV0tQREZWaWV3Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMDQ2RUEwMjA3OTI2MzEwMEYwQzVEOCAv
KiBXS1BERlZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1BERlZpZXcubW07IHBhdGgg
PSBpb3MvV0tQREZWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTA1RDBE
MDIxMjczNEIxMDAzNEY2QzcgLyogTmV0d29ya0Jsb2JSZWdpc3RyeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQmxvYlJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUExMTQ1NUFBMjExRkNGQ0EwMENBOTM1QiAvKiBOZXR3b3JrUHJveGlt
aXR5QXNzZXJ0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTExNDU1QUIyMTFGQ0ZDQTAwQ0E5MzVC
IC8qIE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBO
ZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlBMTE0NTVBRTIxMUZEMjUyMDBDQTkzNUIgLyogTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQTExNDU1QUYyMTFGRDI1MjAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1p
dHlNYW5hZ2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya1Byb3hpbWl0eU1hbmFn
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMTVEQzZEMTkxRDgyQUIwMERB
ODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMTVEQzZFMTkxRDgyQUIwMERBODA3MiAvKiBfV0tXZWJW
aWV3UHJpbnRGb3JtYXR0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dL
V2ViVmlld1ByaW50Rm9ybWF0dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEx
MThBOUVDMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVudERhdGEuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUXVpY2tMb29rRG9jdW1lbnREYXRhLmNw
cDsgcGF0aCA9IGlvcy9RdWlja0xvb2tEb2N1bWVudERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNjUyMyw3ICs2NTE3LDYgQEAKIAkJCQkyREE5NDRCQjE4ODUxMUREMDBF
RDg2REIgLyogaW9zICovLAogCQkJCTUxMENDN0RDMTYxMzhFMjkwMEQwM0VEMyAvKiBtYWMgKi8s
CiAJCQkJOTNCQTA0RDkyMTUxQURDRDAwN0Y0NTVGIC8qIFNlcnZpY2VXb3JrZXIgKi8sCi0JCQkJ
QTExNDU1QTEyMTFGQ0U3RjAwQ0E5MzVCIC8qIHdhdGNob3MgKi8sCiAJCQkJNDEzMDc1OTcxREU4
NEVENzAwMzlFQzY5IC8qIHdlYnJ0YyAqLywKIAkJCQk1M0YzQ0FBNTIwNkM0NDNFMDA4NjQ5MEUg
LyogTmV0d29ya0FjdGl2aXR5VHJhY2tlci5jcHAgKi8sCiAJCQkJNTM1QkNCOTAyMDY5QzQ5QzAw
Q0NDRTAyIC8qIE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIuaCAqLywKQEAgLTcxODgsMTcgKzcxODEs
NiBAQAogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsK
LQkJQTExNDU1QTEyMTFGQ0U3RjAwQ0E5MzVCIC8qIHdhdGNob3MgKi8gPSB7Ci0JCQlpc2EgPSBQ
QlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUExMTQ1NUFBMjExRkNGQ0EwMENBOTM1QiAv
KiBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLmggKi8sCi0JCQkJQTExNDU1QUIyMTFGQ0ZDQTAw
Q0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24ubW0gKi8sCi0JCQkJQTExNDU1QUUy
MTFGRDI1MjAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLmggKi8sCi0JCQkJQTEx
NDU1QUYyMTFGRDI1MjAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLm1tICovLAot
CQkJKTsKLQkJCXBhdGggPSB3YXRjaG9zOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJ
fTsKIAkJQTE4MkQ1QjExQkU2QkNGNDAwODdBN0NDIC8qIGlvcyAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC05MzE5LDggKzkzMDEsNiBAQAogCQkJCTUxNzk1
NTZFMTYyODc3QjMwMEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MTNBMTYzRDE2MzA4OEY2MDA1RDdEMjIgLyogTmV0d29ya1Byb2Nlc3NQcm94eU1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzE0MjZFRTFDMjNGODA5MDBENDExODMgLyog
TmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlBMTE0NTVBQzIx
MUZDRkNBMDBDQTkzNUIgLyogTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbi5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJQTExNDU1QjAyMTFGRDI1MjAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUZEMThCNjE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0
d29ya1Jlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTUyNTUxQjE3MDExODE5
MDAzRDdBREIgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxMjQwRUMwMjIwQjY5NEMwMDVDRkM2MyAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkTWFw
LmggaW4gSGVhZGVycyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365830</attachid>
            <date>2019-03-24 09:30:43 -0700</date>
            <delta_ts>2019-03-24 09:36:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196188-20190324093042.patch</filename>
            <type>text/plain</type>
            <size>59580</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg4NGQ4ODQxOGNhMGZjNjZlZmNmMWVh
NGU4MTRmMDU4ZDExNTlmYjkuLmEzMDE2ZTQ5N2M3MDJlOWNkYzdhNzgyNjA4ZTliYjRiYzFmMmNl
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMDMtMjQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFt3YXRjaE9TXSBSZW1vdmUgdW51c2VkIFByb3hpbWl0eSBO
ZXR3b3JraW5nIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NjE4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL0ZlYXR1cmVEZWZpbmVzLmg6CisKIDIwMTktMDMtMjIgIEtlaXRoIFJvbGxp
biAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSBUaGluTFRPIHN1cHBvcnQg
aW4gUHJvZHVjdGlvbiBidWlsZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMGE1MDJkNWQyZDAxYzE4YzNlMGZiNzc3
ODNiYzY0Y2RhNDY0OWIzMi4uOGQ4OTExNWU3NzBhODVhMzhhNWYzMDgyYzAyZWY4ZGE4YjRlMzg5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxOS0wMy0yNCAgQW5keSBFc3RlcyAgPGFl
c3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW3dhdGNoT1NdIFJlbW92ZSB1bnVzZWQgUHJveGlt
aXR5IE5ldHdvcmtpbmcgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk2MTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9XZWJLaXQueGNjb25maWc6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6TmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVByZXBhcmVUb1N1c3BlbmQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Qcm9jZXNzRGlkUmVzdW1lKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtUHJvY2Vzc0RpZFRyYW5zaXRp
b25Ub0JhY2tncm91bmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZv
cm1Qcm9jZXNzRGlkVHJhbnNpdGlvblRvRm9yZWdyb3VuZCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLmg6IFJlbW92ZWQuCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLm1t
OiBSZW1vdmVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dhdGNob3MvTmV0d29ya1Byb3hp
bWl0eU1hbmFnZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93YXRjaG9z
L05ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLm1tOiBSZW1vdmVkLgorICAgICAgICAqIFNvdXJjZXND
b2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5tbToKKyAgICAgICAgKC1bX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHdpcmVs
ZXNzQ29udGV4dElkZW50aWZpZXJdKToKKyAgICAgICAgKC1bX1dLUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIHNldFdpcmVsZXNzQ29udGV4dElkZW50aWZpZXI6XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMDMtMjMgIEFuZHkgRXN0
ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtBcHBsZSBQYXldIFJlbW92ZSB0aGUg
QXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzIHN5bmNocm9ub3VzIG1lc3NhZ2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmggYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJl
RGVmaW5lcy5oCmluZGV4IGUyNjk4ZjZkZmVjMzhlOTNhMDg2MjlhMjI4ZDIxODEzMDkxMDJhNjEu
LmM0MDY5YWNlZWExMmVmYWI2NGUxYmQyOTQ2ZDVlZmU4N2EyZGY4M2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKKysrIGIvU291cmNlL1dURi93dGYvRmVhdHVy
ZURlZmluZXMuaApAQCAtMTk4LDEyICsxOTgsNiBAQCB0aGUgcHVibGljIGlPUyBTREsuIFNlZSA8
aHR0cHM6Ly93ZWJraXQub3JnL2IvMTc5MTY3Pi4gKi8KIC8qIC0tLS0tLS0tLSBBcHBsZSBXQVRD
SE9TIHBvcnQgLS0tLS0tLS0tICovCiAjaWYgUExBVEZPUk0oV0FUQ0hPUykKIAotI2lmICFkZWZp
bmVkKEVOQUJMRV9QUk9YSU1JVFlfTkVUV09SS0lORykKLSNpZiAhVEFSR0VUX09TX1NJTVVMQVRP
UiAmJiBfX1dBVENIX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgNjAwMDAKLSNkZWZpbmUgRU5B
QkxFX1BST1hJTUlUWV9ORVRXT1JLSU5HIDEKLSNlbmRpZgotI2VuZGlmCi0KICNlbmRpZiAvKiBQ
TEFURk9STShXQVRDSE9TKSAqLwogCiAvKiAtLS0tLS0tLS0gQXBwbGUgTUFDIHBvcnQgKG5vdCBJ
T1MpIC0tLS0tLS0tLSAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9u
cy9XZWJLaXQueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54
Y2NvbmZpZwppbmRleCA0NzliZDZkNWI4OGIyZWFiMWFjNTk4ODZjNjc4ODgzZDg5NzY5ZDk1Li5l
OGU3N2Y3Yzc1NzZiOWU5YTRhNTFiMDdkOTY3NTgwYWM5ZDZiODY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZwpAQCAtMTA1LDkgKzEwNSw2IEBAIFdL
X1BERktJVF9MREZMQUdTX2lwaG9uZW9zW3Nkaz1pcGhvbmUqMTEuKl0gPSA7CiBXS19QREZLSVRf
TERGTEFHU19pcGhvbmVzaW11bGF0b3IgPSAkKFdLX1BERktJVF9MREZMQUdTX2lwaG9uZW9zKTsK
IFdLX1BERktJVF9MREZMQUdTX2lwaG9uZXNpbXVsYXRvcltzZGs9aXBob25lKjExLipdID0gOwog
Ci1XS19QUk9YSU1JVFlfTkVUV09SS0lOR19MREZMQUdTID0gJChXS19QUk9YSU1JVFlfTkVUV09S
S0lOR19MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOwotV0tfUFJPWElNSVRZX05FVFdPUktJ
TkdfTERGTEFHU193YXRjaG9zID0gLWZyYW1ld29yayBJRFMgLWZyYW1ld29yayBNb2JpbGVXaUZp
IC1mcmFtZXdvcmsgU3lzdGVtQ29uZmlndXJhdGlvbiAtZnJhbWV3b3JrIFdpcmVsZXNzQ29leE1h
bmFnZXI7Ci0KIFdLX1NBRkVfQlJPV1NJTkdfTERGTEFHUyA9ICQoV0tfU0FGRV9CUk9XU0lOR19M
REZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOwogV0tfU0FGRV9CUk9XU0lOR19MREZMQUdTX2lw
aG9uZW9zID0gLWZyYW1ld29yayBTYWZhcmlTYWZlQnJvd3Npbmc7CiBXS19TQUZFX0JST1dTSU5H
X0xERkxBR1NfaXBob25lb3Nbc2RrPWlwaG9uZSoxMC4qXSA9IDsKQEAgLTEzMCw3ICsxMjcsNyBA
QCBXS19VUkxfRk9STUFUVElOR19MREZMQUdTX1lFUyA9IC1mcmFtZXdvcmsgVVJMRm9ybWF0dGlu
ZzsKIFdLX1dFQklOU1BFQ1RPUlVJX0xERkxBR1MgPSAkKFdLX1dFQklOU1BFQ1RPUlVJX0xERkxB
R1NfJChXS19QTEFURk9STV9OQU1FKSk7CiBXS19XRUJJTlNQRUNUT1JVSV9MREZMQUdTX21hY29z
eCA9IC13ZWFrX2ZyYW1ld29yayBXZWJJbnNwZWN0b3JVSTsKIAotRlJBTUVXT1JLX0FORF9MSUJS
QVJZX0xERkxBR1MgPSAtbG9iamMgLWZyYW1ld29yayBDRk5ldHdvcmsgLWZyYW1ld29yayBDb3Jl
QXVkaW8gLWZyYW1ld29yayBDb3JlRm91bmRhdGlvbiAtZnJhbWV3b3JrIENvcmVHcmFwaGljcyAt
ZnJhbWV3b3JrIENvcmVUZXh0IC1mcmFtZXdvcmsgRm91bmRhdGlvbiAtZnJhbWV3b3JrIEltYWdl
SU8gLWZyYW1ld29yayBJT0tpdCAtZnJhbWV3b3JrIFdlYktpdExlZ2FjeSAtbG5ldHdvcmsgJChX
S19BQ0NFU1NJQklMSVRZX0xERkxBR1MpICQoV0tfQVBQS0lUX0xERkxBR1MpICQoV0tfQVNTRVJU
SU9OX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfQ0FSQk9OX0xERkxBR1MpICQoV0tfQ09SRV9QREZf
TERGTEFHUykgJChXS19DT1JFX1BSRURJQ1RJT05fTERGTEFHUykgJChXS19DT1JFX1NFUlZJQ0VT
X0xERkxBR1MpICQoV0tfREVWSUNFX0lERU5USVRZX0xERkxBR1MpICQoV0tfR1JBUEhJQ1NfU0VS
VklDRVNfTERGTEFHUykgJChXS19JT1NVUkZBQ0VfTERGTEFHUykgJChXS19MSUJTQU5EQk9YX0xE
RkxBR1MpICQoV0tfTElCV0VCUlRDX0xERkxBR1MpICQoV0tfTU9CSUxFX0NPUkVfU0VSVklDRVNf
TERGTEFHUykgJChXS19NT0JJTEVfR0VTVEFMVF9MREZMQUdTKSAkKFdLX09QRU5HTF9MREZMQUdT
KSAkKFdLX1BERktJVF9MREZMQUdTKSAkKFdLX1BST1hJTUlUWV9ORVRXT1JLSU5HX0xERkxBR1Mp
ICQoV0tfU0FGRV9CUk9XU0lOR19MREZMQUdTKSAkKFdLX1NFQ1VSSVRZX0lOVEVSRkFDRV9MREZM
QUdTKSAkKFdLX1VJS0lUX0xERkxBR1MpICQoV0tfVVJMX0ZPUk1BVFRJTkdfTERGTEFHUykgJChX
S19XRUJJTlNQRUNUT1JVSV9MREZMQUdTKTsKK0ZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdT
ID0gLWxvYmpjIC1mcmFtZXdvcmsgQ0ZOZXR3b3JrIC1mcmFtZXdvcmsgQ29yZUF1ZGlvIC1mcmFt
ZXdvcmsgQ29yZUZvdW5kYXRpb24gLWZyYW1ld29yayBDb3JlR3JhcGhpY3MgLWZyYW1ld29yayBD
b3JlVGV4dCAtZnJhbWV3b3JrIEZvdW5kYXRpb24gLWZyYW1ld29yayBJbWFnZUlPIC1mcmFtZXdv
cmsgSU9LaXQgLWZyYW1ld29yayBXZWJLaXRMZWdhY3kgLWxuZXR3b3JrICQoV0tfQUNDRVNTSUJJ
TElUWV9MREZMQUdTKSAkKFdLX0FQUEtJVF9MREZMQUdTKSAkKFdLX0FTU0VSVElPTl9TRVJWSUNF
U19MREZMQUdTKSAkKFdLX0NBUkJPTl9MREZMQUdTKSAkKFdLX0NPUkVfUERGX0xERkxBR1MpICQo
V0tfQ09SRV9QUkVESUNUSU9OX0xERkxBR1MpICQoV0tfQ09SRV9TRVJWSUNFU19MREZMQUdTKSAk
KFdLX0RFVklDRV9JREVOVElUWV9MREZMQUdTKSAkKFdLX0dSQVBISUNTX1NFUlZJQ0VTX0xERkxB
R1MpICQoV0tfSU9TVVJGQUNFX0xERkxBR1MpICQoV0tfTElCU0FOREJPWF9MREZMQUdTKSAkKFdL
X0xJQldFQlJUQ19MREZMQUdTKSAkKFdLX01PQklMRV9DT1JFX1NFUlZJQ0VTX0xERkxBR1MpICQo
V0tfTU9CSUxFX0dFU1RBTFRfTERGTEFHUykgJChXS19PUEVOR0xfTERGTEFHUykgJChXS19QREZL
SVRfTERGTEFHUykgJChXS19TQUZFX0JST1dTSU5HX0xERkxBR1MpICQoV0tfU0VDVVJJVFlfSU5U
RVJGQUNFX0xERkxBR1MpICQoV0tfVUlLSVRfTERGTEFHUykgJChXS19VUkxfRk9STUFUVElOR19M
REZMQUdTKSAkKFdLX1dFQklOU1BFQ1RPUlVJX0xERkxBR1MpOwogCiAvLyBQcmV2ZW50IEMrKyBz
dGFuZGFyZCBsaWJyYXJ5IGJhc2ljX3N0cmluZ3N0cmVhbSwgb3BlcmF0b3IgbmV3LCBkZWxldGUg
YW5kIHRoZWlyIHJlbGF0ZWQgZXhjZXB0aW9uIHR5cGVzIGZyb20gYmVpbmcgZXhwb3J0ZWQgYXMg
d2VhayBzeW1ib2xzLgogVU5FWFBPUlRFRF9TWU1CT0xfTERGTEFHUyA9IC1XbCwtdW5leHBvcnRl
ZF9zeW1ib2wgLVdsLF9fWlRJU3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVds
LF9fWlRJU3Q5ZXhjZXB0aW9uIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRTU3Q5YmFk
X2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRTU3Q5ZXhjZXB0aW9uIC1XbCwt
dW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWmRsUHZTXyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1X
bCxfX1pud21QdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pud20gLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0
aW9uRUVFQzJFT1M0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0
aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVDMUVPUzRfIC1XbCwtdW5leHBvcnRlZF9z
eW1ib2wgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVF
RWFTRURuIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5LU3QzX18xOGZ1bmN0aW9uSUZ2
TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVjbEVTMl8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAt
V2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFNHN3YXBF
UlM0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdX
ZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVDMUVSS1M0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1X
bCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVDMkVSS1M0
XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJD
b3JlMTJQb2xpY3lBY3Rpb25FRUVEMUV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5T
dDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRUQyRXYgLVdsLC11bmV4
cG9ydGVkX3N5bWJvbCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5
QWN0aW9uRUVFYVNFUktTNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVFZOU3QzX18x
MTdiYWRfZnVuY3Rpb25fY2FsbEUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVENOU3Qz
X18xMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRv
ckljRUVFRTBfTlNfMTNiYXNpY19pc3RyZWFtSWNTMl9FRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9s
IC1XbCxfX1pUQ05TdDNfXzExOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0lj
RUVOU185YWxsb2NhdG9ySWNFRUVFMF9OU18xNGJhc2ljX2lvc3RyZWFtSWNTMl9FRSAtV2wsLXVu
ZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUQ05TdDNfXzExOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNf
MTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFMTZfTlNfMTNiYXNpY19vc3RyZWFt
SWNTMl9FRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUVE5TdDNfXzExOGJhc2ljX3N0
cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFIC1XbCwt
dW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRWTlN0M19fMTE1YmFzaWNfc3RyaW5nYnVmSWNOU18x
MWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUgLVdsLC11bmV4cG9ydGVkX3N5bWJv
bCAtV2wsX19aVFZOU3QzX18xMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJ
Y0VFTlNfOWFsbG9jYXRvckljRUVFRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUQ05T
dDNfXzExOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2Nh
dG9ySWNFRUVFOF9OU18xM2Jhc2ljX29zdHJlYW1JY1MyX0VFOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBiNWI3YmVjMDQxMWY1Yjdh
OGRjNjhmZTc2YmQzZjRkY2EyMzA5NmY5Li43M2YxYjQ4Mzc2OWViZGRjZWY5YmQ0YjdmNGVjMTAz
YWM1YTlmNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0
ZWdpZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKLSNpbmNs
dWRlICJOZXR3b3JrUHJveGltaXR5TWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaCIKQEAgLTE0NSw5ICsxNDQsNiBAQCBOZXR3b3Jr
UHJvY2Vzczo6TmV0d29ya1Byb2Nlc3MoQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFy
YW1ldGVycyYmIHBhcmFtZQogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkKICAgICBM
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6Om5ldHdvcmtQcm9jZXNzQ3JlYXRlZCgqdGhpcyk7
CiAjZW5kaWYKLSNpZiBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCi0gICAgYWRkU3VwcGxl
bWVudDxOZXR3b3JrUHJveGltaXR5TWFuYWdlcj4oKTsKLSNlbmRpZgogCiAjaWYgVVNFKFNPVVAp
CiAgICAgRE5TUmVzb2x2ZVF1ZXVlU291cDo6c2V0R2xvYmFsRGVmYXVsdE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbkFjY2Vzc29yKFt0aGlzXSgpIC0+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgewpAQCAt
MTgzLDEzICsxNzksNiBAQCBEb3dubG9hZE1hbmFnZXImIE5ldHdvcmtQcm9jZXNzOjpkb3dubG9h
ZE1hbmFnZXIoKQogICAgIHJldHVybiBtX2Rvd25sb2FkTWFuYWdlcjsKIH0KIAotI2lmIEVOQUJM
RShQUk9YSU1JVFlfTkVUV09SS0lORykKLU5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyJiBOZXR3b3Jr
UHJvY2Vzczo6cHJveGltaXR5TWFuYWdlcigpCi17Ci0gICAgcmV0dXJuICpzdXBwbGVtZW50PE5l
dHdvcmtQcm94aW1pdHlNYW5hZ2VyPigpOwotfQotI2VuZGlmCi0KIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnJlbW92ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQogewogICAgIGF1dG8gY291bnQgPSBtX3dlYlByb2Nl
c3NDb25uZWN0aW9ucy5yZW1vdmVBbGxNYXRjaGluZyhbJl0gKGNvbnN0IGF1dG8mIGMpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBjYzI2
OGRjYjAxNTc2YjJjYTJlNGM1NmE5ODRkN2IzY2I1YTQ3MTM1Li41MjlmODc5MjIwZjZlNTFhMzQw
ZWU0Yjc2M2EyMDIzMWE3NDY3ZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0xNTQsOSArMTU0LDYgQEAgcHVibGljOgogCiAgICAgQXV0
aGVudGljYXRpb25NYW5hZ2VyJiBhdXRoZW50aWNhdGlvbk1hbmFnZXIoKTsKICAgICBEb3dubG9h
ZE1hbmFnZXImIGRvd25sb2FkTWFuYWdlcigpOwotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09S
S0lORykKLSAgICBOZXR3b3JrUHJveGltaXR5TWFuYWdlciYgcHJveGltaXR5TWFuYWdlcigpOwot
I2VuZGlmCiAKICAgICBOZXR3b3JrQ2FjaGU6OkNhY2hlKiBjYWNoZSgpIHsgcmV0dXJuIG1fY2Fj
aGUuZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCBhYjUx
OTU5YTQ4N2U3ODQ2NTBmMWQ5Yjg4ZjViMjE4YjU1NWI4MDIyLi5lZDMxOTk3NWQ4NmQ1M2NlY2E3
OGZmNTYzODQ4NjIyYmJkZGY1ZjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cApAQCAtODUsMTAgKzg1LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
czo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHVy
bFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IHVybFNjaGVt
ZXNSZWdpc3RlcmVkQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdDsKIAotI2lmIEVOQUJMRShQ
Uk9YSU1JVFlfTkVUV09SS0lORykKLSAgICBlbmNvZGVyIDw8IHdpcmVsZXNzQ29udGV4dElkZW50
aWZpZXI7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBlbmNvZGVy
IDw8IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPDwgc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA8PCB1cmxTY2hlbWVzU2VydmljZVdv
cmtlcnNDYW5IYW5kbGUgPDwgc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWlu
YXRpb25EZWxheTsKICNlbmRpZgpAQCAtMTk1LDExICsxOTEsNiBAQCBib29sIE5ldHdvcmtQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBOZXR3
b3JrUHJvYwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnVybFNjaGVtZXNSZWdpc3Rl
cmVkQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKLSAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC53aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCAw
YWExYWJkM2ZmOWZmZDgyZmM3MjgxODU4OTM2YzFjZDk4ZmQxZjBlLi4wZjFmNDQwNzEwN2U4ZDMz
NjhmMzIwMzI2Y2Y3YzllNDEwYjNiMmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
CkBAIC0xMDAsMTAgKzEwMCw2IEBAIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyB7CiAgICAgVmVjdG9yPFN0cmluZz4gdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NhbkRpc3Bs
YXlPbmx5SWZDYW5SZXF1ZXN0OwogICAgIFZlY3RvcjxTdHJpbmc+IHVybFNjaGVtZXNSZWdpc3Rl
cmVkQXNDT1JTRW5hYmxlZDsKIAotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKLSAg
ICB1bnNpZ25lZCB3aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyIHsgMCB9OwotI2VuZGlmCi0KICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgU3RyaW5nIHNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgK
aW5kZXggMmNlNjc3ZGJhMTlkNDgyYzJhMjViZjE0ZGY0MjM5ZDkzMGJjMGNmZC4uOTY1YzZmYTY2
NGJjZDE1NWY3NmNkYjNiNGQ3MzI2ZWVlMDNlOTE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaApAQCAt
MjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtBY3Rpdml0eVRyYWNrZXIuaCIKICNpbmNs
dWRlICJOZXR3b3JrRGF0YVRhc2suaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZFBhcmFtZXRlcnMu
aCIKLSNpbmNsdWRlICJOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9OZXR3b3JrTG9hZE1ldHJpY3MuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAK
QEAgLTczLDE0ICs3Miw2IEBAIHB1YmxpYzoKICAgICB1aW50NjRfdCBmcmFtZUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9mcmFtZUlEOyB9OwogICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFnZUlEOyB9OwogCi0jaWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQotICAg
IHZvaWQgaG9sZFByb3hpbWl0eUFzc2VydGlvbihOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uJiBh
c3NlcnRpb24pCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fcHJveGltaXR5QXNzZXJ0aW9uVG9r
ZW4pOwotICAgICAgICBtX3Byb3hpbWl0eUFzc2VydGlvblRva2VuLmVtcGxhY2UoYXNzZXJ0aW9u
KTsKLSAgICB9Ci0jZW5kaWYKLQogICAgIFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJy
aWRlOwogCiBwcml2YXRlOgpAQCAtMTA3LDEwICs5OCw2IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBib29sIG1faGFzQmVlblNldFRvVXNlU3Rh
dGVsZXNzQ29va2llU3RvcmFnZSB7IGZhbHNlIH07CiAjZW5kaWYKLQotI2lmIEVOQUJMRShQUk9Y
SU1JVFlfTkVUV09SS0lORykKLSAgICBPcHRpb25hbDxOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9u
OjpUb2tlbj4gbV9wcm94aW1pdHlBc3NlcnRpb25Ub2tlbjsKLSNlbmRpZgogfTsKIAogV2ViQ29y
ZTo6Q3JlZGVudGlhbCBzZXJ2ZXJUcnVzdENyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IDVjZGQzMTY1MjM2
NzBmNzRkNjhlNzJhN2YwOTBiMTdkNmE5YmRjMDguLjFkMGE1OWY3OGM2NDIzYzQ3ZTlhNzYxZTg1
MDIyYzhiODJjN2JjNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtMzIsNyArMzIsNiBAQAog
I2ltcG9ydCAiRG93bmxvYWRQcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAj
aW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgotI2ltcG9ydCAiTmV0d29ya1Byb3hpbWl0eU1hbmFn
ZXIuaCIKICNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uQ29jb2EuaCIKICNpbXBvcnQgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oPgpAQCAtMjAwLDkgKzE5OSw2IEBAIE5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0
YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUCiAKICAgICBO
U1VSTFJlcXVlc3QgKm5zUmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhU
VFBCb2R5VXBkYXRlUG9saWN5OjpVcGRhdGVIVFRQQm9keSk7CiAgICAgYXBwbHlTbmlmZmluZ1Bv
bGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKG5zUmVxdWVzdCwgc2hvdWxk
Q29udGVudFNuaWZmID09IFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeTo6U25pZmZDb250
ZW50ICYmICF1cmwuaXNMb2NhbEZpbGUoKSwgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYgPT0g
V2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3k6OlNuaWZmKTsKLSNpZiBFTkFC
TEUoUFJPWElNSVRZX05FVFdPUktJTkcpCi0gICAgbV9zZXNzaW9uLT5uZXR3b3JrUHJvY2Vzcygp
LnByb3hpbWl0eU1hbmFnZXIoKS5hcHBseVByb3BlcnRpZXMocmVxdWVzdCwgKnRoaXMsIG5zUmVx
dWVzdCk7Ci0jZW5kaWYKIAogICAgIGF1dG8mIGNvY29hU2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5l
dHdvcmtTZXNzaW9uQ29jb2EmPihtX3Nlc3Npb24uZ2V0KCkpOwogICAgIGlmIChzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSA9PSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQ
cm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtQcm9jZXNzQ29jb2EubW0KaW5kZXggNzBiMzljOWE3YmM0YTU4ZDcxZGU1NWE1NzU2ZTZkZjA5
ZTUxOGU4YS4uNWFlNDlmNmM5MmRiY2M3OThhZjYxMWJkOGI0MTY2NDA3OWZjMWVjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0Nv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1By
b2Nlc3NDb2NvYS5tbQpAQCAtMzAsNyArMzAsNiBAQAogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2lt
cG9ydCAiTmV0d29ya0NhY2hlLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oIgotI2ltcG9ydCAiTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIuaCIKICNpbXBvcnQg
Ik5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2ltcG9ydCAiTmV0d29ya1Nlc3Npb25Db2NvYS5o
IgogI2ltcG9ydCAiU2FuZGJveEV4dGVuc2lvbi5oIgpAQCAtMjQ3LDMyICsyNDYsMTkgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1TeW5jQWxsQ29va2llcyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGkKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1QcmVw
YXJlVG9TdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSNpZiBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCi0gICAgcHJveGltaXR5TWFu
YWdlcigpLnN1c3BlbmQoU3VzcGVuc2lvblJlYXNvbjo6UHJvY2Vzc1N1c3BlbmRpbmcsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSNlbHNlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
LSNlbmRpZgogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVByb2Nlc3NEaWRSZXN1
bWUoKQogewotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKLSAgICBwcm94aW1pdHlN
YW5hZ2VyKCkucmVzdW1lKFJlc3VtcHRpb25SZWFzb246OlByb2Nlc3NSZXN1bWluZyk7Ci0jZW5k
aWYKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Qcm9jZXNzRGlkVHJhbnNpdGlv
blRvQmFja2dyb3VuZCgpCiB7Ci0jaWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQotICAg
IHByb3hpbWl0eU1hbmFnZXIoKS5zdXNwZW5kKFN1c3BlbnNpb25SZWFzb246OlByb2Nlc3NCYWNr
Z3JvdW5kaW5nLCBbXSB7IH0pOwotI2VuZGlmCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBs
YXRmb3JtUHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0ZvcmVncm91bmQoKQogewotI2lmIEVOQUJMRShQ
Uk9YSU1JVFlfTkVUV09SS0lORykKLSAgICBwcm94aW1pdHlNYW5hZ2VyKCkucmVzdW1lKFJlc3Vt
cHRpb25SZWFzb246OlByb2Nlc3NGb3JlZ3JvdW5kaW5nKTsKLSNlbmRpZgogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dhdGNob3MvTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbi5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA5MTEwNzEyNGY1MDZhYTc5NTA1NDBiYTFlOWNlOTcwMjEzODE2
ZjA5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9u
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQotCi0jaW5jbHVkZSAiTW9i
aWxlV2lGaVNQSS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KLSNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLU9CSkNfQ0xBU1Mg
SURTU2VydmljZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWVudW0gY2xhc3MgUmVzdW1wdGlv
blJlYXNvbiA6IHVpbnQ4X3Q7Ci1lbnVtIGNsYXNzIFN1c3BlbnNpb25SZWFzb24gOiB1aW50OF90
OwotCi1jbGFzcyBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uIHsKLSAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uKTsKLXB1YmxpYzoKLSAgICBjbGFzcyBU
b2tlbiB7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRva2VuKTsKLSAgICBwdWJsaWM6
Ci0gICAgICAgIGV4cGxpY2l0IFRva2VuKE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24mIGFzc2Vy
dGlvbikKLSAgICAgICAgICAgIDogbV9hc3NlcnRpb24geyBhc3NlcnRpb24gfQotICAgICAgICB7
Ci0gICAgICAgICAgICBtX2Fzc2VydGlvbi5ob2xkKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB+
VG9rZW4oKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX2Fzc2VydGlvbi5yZWxlYXNlKCk7Ci0g
ICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIE5ldHdvcmtQcm94aW1pdHlBc3NlcnRp
b24mIG1fYXNzZXJ0aW9uOwotICAgIH07Ci0KLSAgICB2b2lkIHJlc3VtZShSZXN1bXB0aW9uUmVh
c29uKTsKLSAgICB2b2lkIHN1c3BlbmQoU3VzcGVuc2lvblJlYXNvbiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKLQotcHJvdGVjdGVkOgotICAgIE5ldHdvcmtQcm94aW1pdHlBc3NlcnRp
b24oKTsKLSAgICB2aXJ0dWFsIH5OZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uKCkgPSBkZWZhdWx0
OwotCi0gICAgYm9vbCBtX2lzSG9sZGluZ0Fzc2VydGlvbiB7IGZhbHNlIH07Ci0KLXByaXZhdGU6
Ci0gICAgZW51bSBjbGFzcyBTdGF0ZSB7Ci0gICAgICAgIEJhY2tncm91bmRlZCwgLy8gQ2FuIGhv
bGQgYXNzZXJ0aW9ucyB1bnRpbCBtX3N1c3BlbmRBZnRlckJhY2tncm91bmRpbmdUaW1lciBmaXJl
cy4KLSAgICAgICAgUmVzdW1lZCwgLy8gQ2FuIGhvbGQgYXNzZXJ0aW9ucyBhdCBhbnkgdGltZS4K
LSAgICAgICAgU3VzcGVuZGVkLCAvLyBDYW4gbm90IGhvbGQgYXNzZXJ0aW9ucy4KLSAgICB9Owot
Ci0gICAgdmlydHVhbCB2b2lkIGhvbGROb3coKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlbGVh
c2VOb3coKSA9IDA7Ci0KLSAgICB2b2lkIGhvbGQoKTsKLSAgICB2b2lkIHJlbGVhc2UoKTsKLSAg
ICB2b2lkIHJlbGVhc2VUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBzdXNwZW5kQWZ0ZXJCYWNrZ3Jv
dW5kaW5nVGltZXJGaXJlZCgpOwotICAgIHZvaWQgc3VzcGVuZE5vdygpOwotCi0gICAgdWludDY0
X3QgbV9hc3NlcnRpb25Db3VudCB7IDAgfTsKLSAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlN1
c3BlbmRlZCB9OwotICAgIFdlYkNvcmU6OkRlZmVycmFibGVPbmVTaG90VGltZXIgbV9yZWxlYXNl
VGltZXI7Ci0gICAgV2ViQ29yZTo6RGVmZXJyYWJsZU9uZVNob3RUaW1lciBtX3N1c3BlbmRBZnRl
ckJhY2tncm91bmRpbmdUaW1lcjsKLX07Ci0KLWNsYXNzIEJsdWV0b290aFByb3hpbWl0eUFzc2Vy
dGlvbiBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uIHsKLXB1YmxpYzoK
LSAgICBleHBsaWNpdCBCbHVldG9vdGhQcm94aW1pdHlBc3NlcnRpb24oSURTU2VydmljZSAqKTsK
LQotICAgIHZvaWQgc3VzcGVuZChTdXNwZW5zaW9uUmVhc29uLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwotCi1wcml2YXRlOgotICAgIHZvaWQgaG9sZE5vdygpIG92ZXJyaWRlOwotICAg
IHZvaWQgcmVsZWFzZU5vdygpIG92ZXJyaWRlOwotCi0gICAgUmV0YWluUHRyPElEU1NlcnZpY2U+
IG1faWRzU2VydmljZTsKLX07Ci0KLWNsYXNzIFdpRmlQcm94aW1pdHlBc3NlcnRpb24gZmluYWwg
OiBwdWJsaWMgTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbiB7Ci1wdWJsaWM6Ci0gICAgV2lGaVBy
b3hpbWl0eUFzc2VydGlvbigpOwotCi1wcml2YXRlOgotICAgIHZvaWQgaG9sZE5vdygpIG92ZXJy
aWRlOwotICAgIHZvaWQgcmVsZWFzZU5vdygpIG92ZXJyaWRlOwotCi0gICAgUmV0YWluUHRyPFdp
RmlNYW5hZ2VyQ2xpZW50UmVmPiBtX3dpRmlNYW5hZ2VyQ2xpZW50OwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dhdGNob3MvTmV0d29ya1By
b3hpbWl0eUFzc2VydGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2F0Y2hv
cy9OZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3MjIzYTUzYjkzOTNjODFkYmE1MjUzNTQxN2RhYzhiMjlmYjRkMDNjLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLm1tCisrKyAvZGV2L251
bGwKQEAgLTEsMjQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNp
bXBvcnQgIk5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24uaCIKLQotI2lmIEVOQUJMRShQUk9YSU1J
VFlfTkVUV09SS0lORykKLQotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCAiTmV0d29ya1By
b2Nlc3MuaCIKLSNpbXBvcnQgIk5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLmgiCi0jaW1wb3J0IDxJ
RFMvSURTX1ByaXZhdGUuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotc3RhdGljIGF1dG8gYXNzZXJ0aW9uUmVsZWFzZURlbGF5QWZ0ZXJCYWNrZ3Jv
dW5kaW5nID0gMTBfczsKLXN0YXRpYyBhdXRvIGFzc2VydGlvblJlbGVhc2VEZWxheUZvckh5c3Rl
cmVzaXMgPSAxMF9zOwotCi1OZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uOjpOZXR3b3JrUHJveGlt
aXR5QXNzZXJ0aW9uKCkKLSAgICA6IG1fcmVsZWFzZVRpbWVyIHsgKnRoaXMsICZOZXR3b3JrUHJv
eGltaXR5QXNzZXJ0aW9uOjpyZWxlYXNlVGltZXJGaXJlZCwgYXNzZXJ0aW9uUmVsZWFzZURlbGF5
Rm9ySHlzdGVyZXNpcyB9Ci0gICAgLCBtX3N1c3BlbmRBZnRlckJhY2tncm91bmRpbmdUaW1lciB7
ICp0aGlzLCAmTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6c3VzcGVuZEFmdGVyQmFja2dyb3Vu
ZGluZ1RpbWVyRmlyZWQsIGFzc2VydGlvblJlbGVhc2VEZWxheUFmdGVyQmFja2dyb3VuZGluZyB9
Ci17Ci19Ci0KLXZvaWQgTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6aG9sZCgpCi17Ci0gICAg
KyttX2Fzc2VydGlvbkNvdW50OwotCi0gICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN1c3BlbmRl
ZCkgewotICAgICAgICBBU1NFUlQoIW1faXNIb2xkaW5nQXNzZXJ0aW9uKTsKLSAgICAgICAgQVNT
RVJUKCFtX3JlbGVhc2VUaW1lci5pc0FjdGl2ZSgpKTsKLSAgICAgICAgQVNTRVJUKCFtX3N1c3Bl
bmRBZnRlckJhY2tncm91bmRpbmdUaW1lci5pc0FjdGl2ZSgpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChtX3JlbGVhc2VUaW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIEFT
U0VSVChtX2lzSG9sZGluZ0Fzc2VydGlvbik7Ci0gICAgICAgIG1fcmVsZWFzZVRpbWVyLnN0b3Ao
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChtX2Fzc2VydGlvbkNvdW50ID09
IDEpIHsKLSAgICAgICAgQVNTRVJUKCFtX2lzSG9sZGluZ0Fzc2VydGlvbik7Ci0gICAgICAgIGhv
bGROb3coKTsKLSAgICB9Ci0KLSAgICBBU1NFUlQobV9pc0hvbGRpbmdBc3NlcnRpb24pOwotfQot
Ci12b2lkIE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb246OnJlbGVhc2UoKQotewotICAgIEFTU0VS
VChtX2Fzc2VydGlvbkNvdW50KTsKLSAgICBpZiAoIW1fYXNzZXJ0aW9uQ291bnQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIC0tbV9hc3NlcnRpb25Db3VudDsKLQotICAgIGlmIChtX3N0YXRlID09
IFN0YXRlOjpTdXNwZW5kZWQpIHsKLSAgICAgICAgQVNTRVJUKCFtX2lzSG9sZGluZ0Fzc2VydGlv
bik7Ci0gICAgICAgIEFTU0VSVCghbV9yZWxlYXNlVGltZXIuaXNBY3RpdmUoKSk7Ci0gICAgICAg
IEFTU0VSVCghbV9zdXNwZW5kQWZ0ZXJCYWNrZ3JvdW5kaW5nVGltZXIuaXNBY3RpdmUoKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQobV9pc0hvbGRpbmdBc3NlcnRpb24p
OwotICAgIEFTU0VSVCghbV9yZWxlYXNlVGltZXIuaXNBY3RpdmUoKSk7Ci0gICAgaWYgKCFtX2Fz
c2VydGlvbkNvdW50KQotICAgICAgICBtX3JlbGVhc2VUaW1lci5yZXN0YXJ0KCk7Ci19Ci0KLXZv
aWQgTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6cmVzdW1lKFJlc3VtcHRpb25SZWFzb24pCi17
Ci0gICAgc3dpdGNoIChtX3N0YXRlKSB7Ci0gICAgY2FzZSBTdGF0ZTo6QmFja2dyb3VuZGVkOgot
ICAgICAgICBtX3N1c3BlbmRBZnRlckJhY2tncm91bmRpbmdUaW1lci5zdG9wKCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgU3RhdGU6OlJlc3VtZWQ6Ci0gICAgICAgIEFTU0VSVCghbV9zdXNw
ZW5kQWZ0ZXJCYWNrZ3JvdW5kaW5nVGltZXIuaXNBY3RpdmUoKSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgU3RhdGU6OlN1c3BlbmRlZDoKLSAgICAgICAgQVNTRVJUKCFtX2lzSG9sZGluZ0Fz
c2VydGlvbik7Ci0gICAgICAgIEFTU0VSVCghbV9yZWxlYXNlVGltZXIuaXNBY3RpdmUoKSk7Ci0g
ICAgICAgIEFTU0VSVCghbV9zdXNwZW5kQWZ0ZXJCYWNrZ3JvdW5kaW5nVGltZXIuaXNBY3RpdmUo
KSk7Ci0gICAgICAgIGhvbGROb3coKTsKLSAgICAgICAgaWYgKCFtX2Fzc2VydGlvbkNvdW50KQot
ICAgICAgICAgICAgbV9yZWxlYXNlVGltZXIucmVzdGFydCgpOwotICAgICAgICBicmVhazsKLSAg
ICB9Ci0KLSAgICBtX3N0YXRlID0gU3RhdGU6OlJlc3VtZWQ7Ci19Ci0KLXZvaWQgTmV0d29ya1By
b3hpbWl0eUFzc2VydGlvbjo6c3VzcGVuZChTdXNwZW5zaW9uUmVhc29uIHJlYXNvbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIHN3aXRjaCAo
cmVhc29uKSB7Ci0gICAgY2FzZSBTdXNwZW5zaW9uUmVhc29uOjpQcm9jZXNzQmFja2dyb3VuZGlu
ZzoKLSAgICAgICAgLy8gVGhlIE5ldHdvcmtpbmcgcHJvY2VzcyBpcyBiZWluZyBiYWNrZ3JvdW5k
ZWQuIFdlIHNob3VsZCBkcm9wIG91ciBhc3NlcnRpb25zCi0gICAgICAgIC8vIHNvb24sIGluIGNh
c2UgdGhlIHN5c3RlbSBzdXNwZW5kcyB0aGUgcHJvY2VzcyBiZWZvcmUgd2UgcmVjZWl2ZSBQcm9j
ZXNzU3VzcGVuZGluZy4KLSAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpCYWNrZ3JvdW5kZWQ7Ci0g
ICAgICAgIG1fc3VzcGVuZEFmdGVyQmFja2dyb3VuZGluZ1RpbWVyLnJlc3RhcnQoKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBTdXNwZW5zaW9uUmVhc29uOjpQcm9jZXNzU3VzcGVuZGluZzoK
LSAgICAgICAgLy8gVGhlIE5ldHdvcmtpbmcgcHJvY2VzcyBpcyBiZWluZyBzdXNwZW5kZWQsIHNv
IHdlIG5lZWQgdG8gZHJvcCBvdXIgYXNzZXJ0aW9ucwotICAgICAgICAvLyBpbW1lZGlhdGVseSBi
ZWZvcmUgdGhhdCBoYXBwZW5zLgotICAgICAgICBzdXNwZW5kTm93KCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KLQotICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci19Ci0KLXZvaWQgTmV0d29ya1By
b3hpbWl0eUFzc2VydGlvbjo6c3VzcGVuZE5vdygpCi17Ci0gICAgaWYgKG1fc3RhdGUgPT0gU3Rh
dGU6OlN1c3BlbmRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdGF0ZSA9IFN0YXRlOjpT
dXNwZW5kZWQ7Ci0gICAgbV9yZWxlYXNlVGltZXIuc3RvcCgpOwotICAgIG1fc3VzcGVuZEFmdGVy
QmFja2dyb3VuZGluZ1RpbWVyLnN0b3AoKTsKLSAgICByZWxlYXNlTm93KCk7Ci19Ci0KLXZvaWQg
TmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6cmVsZWFzZVRpbWVyRmlyZWQoKQotewotICAgIEFT
U0VSVChtX2lzSG9sZGluZ0Fzc2VydGlvbik7Ci0gICAgQVNTRVJUKG1fc3RhdGUgIT0gU3RhdGU6
OlN1c3BlbmRlZCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbkNvdW50KTsKLSAgICBBU1NFUlQo
IW1fcmVsZWFzZVRpbWVyLmlzQWN0aXZlKCkpOwotICAgIHJlbGVhc2VOb3coKTsKLX0KLQotdm9p
ZCBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uOjpzdXNwZW5kQWZ0ZXJCYWNrZ3JvdW5kaW5nVGlt
ZXJGaXJlZCgpCi17Ci0gICAgQVNTRVJUKCFtX3N1c3BlbmRBZnRlckJhY2tncm91bmRpbmdUaW1l
ci5pc0FjdGl2ZSgpKTsKLSAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6U3VzcGVuZGVkKTsK
LSAgICBzdXNwZW5kTm93KCk7Ci19Ci0KLUJsdWV0b290aFByb3hpbWl0eUFzc2VydGlvbjo6Qmx1
ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uKElEU1NlcnZpY2UgKmlkc1NlcnZpY2UpCi0gICAgOiBt
X2lkc1NlcnZpY2UgeyBpZHNTZXJ2aWNlIH0KLXsKLX0KLQotdm9pZCBCbHVldG9vdGhQcm94aW1p
dHlBc3NlcnRpb246OnN1c3BlbmQoU3VzcGVuc2lvblJlYXNvbiByZWFzb24sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBhdXRvIHdhc0hvbGRp
bmdBc3NlcnRpb24gPSBtX2lzSG9sZGluZ0Fzc2VydGlvbjsKLSAgICBOZXR3b3JrUHJveGltaXR5
QXNzZXJ0aW9uOjpzdXNwZW5kKHJlYXNvbiwgW10geyB9KTsKLQotICAgIHN3aXRjaCAocmVhc29u
KSB7Ci0gICAgY2FzZSBTdXNwZW5zaW9uUmVhc29uOjpQcm9jZXNzQmFja2dyb3VuZGluZzoKLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdXNw
ZW5zaW9uUmVhc29uOjpQcm9jZXNzU3VzcGVuZGluZzoKLSAgICAgICAgQVNTRVJUKCFtX2lzSG9s
ZGluZ0Fzc2VydGlvbik7Ci0gICAgICAgIGlmICghd2FzSG9sZGluZ0Fzc2VydGlvbikgewotICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0KLSAgICAgICAgLy8gSURTIHByb2Nlc3NlcyAtc2V0TGlua1ByZWZlcmVuY2VzOiBvbiBh
IGJhY2tncm91bmQgZGlzcGF0Y2ggcXVldWUgYW5kIHByb3ZpZGVzIG5vCi0gICAgICAgIC8vIGNv
bXBsZXRpb24gaGFuZGxlci4gSWYgd2Ugc3VzcGVuZCBiZWZvcmUgSURTIGZpbmlzaGVzIHNldHRp
bmcgbGluayBwcmVmZXJlbmNlcywgdGhlCi0gICAgICAgIC8vIEJsdWV0b290aCByYWRpbyBtaWdo
dCBzdGF5IGluIGEgaGlnaCBwb3dlciBtb2RlLCBoYXJtaW5nIGJhdHRlcnkgbGlmZS4gRGVsYXkg
c3VzcGVuc2lvbgotICAgICAgICAvLyBieSAzMCBzZWNvbmRzIHRvIGVuc3VyZSAtc2V0TGlua1By
ZWZlcmVuY2VzOiBhbHdheXMgZmluaXNoZXMgaXRzIHdvcmsuCi0gICAgICAgIGRpc3BhdGNoX2Fm
dGVyKGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIDMwICogTlNFQ19QRVJfU0VDKSwg
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbWFrZUJsb2NrUHRyKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKS5nZXQoKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotdm9pZCBCbHVl
dG9vdGhQcm94aW1pdHlBc3NlcnRpb246OmhvbGROb3coKQotewotICAgIGlmIChtX2lzSG9sZGlu
Z0Fzc2VydGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUkVMRUFTRV9MT0coUHJveGltaXR5
TmV0d29ya2luZywgIkhvbGRpbmcgQmx1ZXRvb3RoIENsYXNzaWMgYXNzZXJ0aW9uLiIpOwotICAg
IFttX2lkc1NlcnZpY2Ugc2V0TGlua1ByZWZlcmVuY2VzOkB7IElEU0xpbmtQcmVmZXJlbmNlT3B0
aW9uUGFja2V0c1BlclNlY29uZEtleSA6IEAoMjAwKSB9XTsKLSAgICBtX2lzSG9sZGluZ0Fzc2Vy
dGlvbiA9IHRydWU7Ci19Ci0KLXZvaWQgQmx1ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uOjpyZWxl
YXNlTm93KCkKLXsKLSAgICBpZiAoIW1faXNIb2xkaW5nQXNzZXJ0aW9uKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBSRUxFQVNFX0xPRyhQcm94aW1pdHlOZXR3b3JraW5nLCAiUmVsZWFzaW5nIEJs
dWV0b290aCBDbGFzc2ljIGFzc2VydGlvbi4iKTsKLSAgICBbbV9pZHNTZXJ2aWNlIHNldExpbmtQ
cmVmZXJlbmNlczpAeyBJRFNMaW5rUHJlZmVyZW5jZU9wdGlvblBhY2tldHNQZXJTZWNvbmRLZXkg
OiBAKDApIH1dOwotICAgIG1faXNIb2xkaW5nQXNzZXJ0aW9uID0gZmFsc2U7Ci19Ci0KLVdpRmlQ
cm94aW1pdHlBc3NlcnRpb246OldpRmlQcm94aW1pdHlBc3NlcnRpb24oKQotICAgIDogbV93aUZp
TWFuYWdlckNsaWVudCB7IGFkb3B0Q0YoV2lGaU1hbmFnZXJDbGllbnRDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwga1dpRmlDbGllbnRUeXBlTm9ybWFsKSkgfQotewotfQotCi12b2lkIFdpRmlQ
cm94aW1pdHlBc3NlcnRpb246OmhvbGROb3coKQotewotICAgIGlmIChtX2lzSG9sZGluZ0Fzc2Vy
dGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUkVMRUFTRV9MT0coUHJveGltaXR5TmV0d29y
a2luZywgIkhvbGRpbmcgV2ktRmkgYXNzZXJ0aW9uLiIpOwotICAgIEFTU0VSVChXaUZpTWFuYWdl
ckNsaWVudEdldFR5cGUobV93aUZpTWFuYWdlckNsaWVudC5nZXQoKSkgPT0ga1dpRmlDbGllbnRU
eXBlTm9ybWFsKTsKLSAgICBXaUZpTWFuYWdlckNsaWVudFNldFR5cGUobV93aUZpTWFuYWdlckNs
aWVudC5nZXQoKSwga1dpRmlDbGllbnRUeXBlRGlyZWN0VG9DbG91ZCk7Ci0gICAgbV9pc0hvbGRp
bmdBc3NlcnRpb24gPSB0cnVlOwotfQotCi12b2lkIFdpRmlQcm94aW1pdHlBc3NlcnRpb246OnJl
bGVhc2VOb3coKQotewotICAgIGlmICghbV9pc0hvbGRpbmdBc3NlcnRpb24pCi0gICAgICAgIHJl
dHVybjsKLQotICAgIFJFTEVBU0VfTE9HKFByb3hpbWl0eU5ldHdvcmtpbmcsICJSZWxlYXNpbmcg
V2ktRmkgYXNzZXJ0aW9uLiIpOwotICAgIEFTU0VSVChXaUZpTWFuYWdlckNsaWVudEdldFR5cGUo
bV93aUZpTWFuYWdlckNsaWVudC5nZXQoKSkgPT0ga1dpRmlDbGllbnRUeXBlRGlyZWN0VG9DbG91
ZCk7Ci0gICAgV2lGaU1hbmFnZXJDbGllbnRTZXRUeXBlKG1fd2lGaU1hbmFnZXJDbGllbnQuZ2V0
KCksIGtXaUZpQ2xpZW50VHlwZU5vcm1hbCk7Ci0gICAgbV9pc0hvbGRpbmdBc3NlcnRpb24gPSBm
YWxzZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoUFJP
WElNSVRZX05FVFdPUktJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dhdGNob3MvTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5TWFuYWdlci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMzRhNzk4MjhiMDhhYjBlYjM2MzQ1ZDJhNTc4YjUyZGFmOWRh
NTY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5TWFuYWdlci5o
CisrKyAvZGV2L251bGwKQEAgLTEsMTIxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKLQotI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzU3VwcGxlbWVudC5oIgotI2luY2x1ZGUgIk5ldHdvcmtQcm94aW1pdHlBc3NlcnRp
b24uaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgotI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KLQotT0JKQ19DTEFTUyBJRFNTZXJ2aWNlOwotT0JKQ19DTEFTUyBOU0FycmF5OwotT0JK
Q19DTEFTUyBOU1VSTFJlcXVlc3Q7Ci1PQkpDX0NMQVNTIFdLUHJveGltaXR5U2VydmljZURlbGVn
YXRlOwotT0JKQ19DTEFTUyBXUk1faVJBVEludGVyZmFjZTsKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xh
c3MgTmV0d29ya1Byb2Nlc3M7Ci1jbGFzcyBOZXR3b3JrRGF0YVRhc2tDb2NvYTsKLWVudW0gY2xh
c3MgTmV0d29ya1Byb3hpbWl0eVJlY29tbWVuZGF0aW9uIDogdWludDhfdDsKLQotZW51bSBjbGFz
cyBSZXN1bXB0aW9uUmVhc29uIDogdWludDhfdCB7Ci0gICAgUHJvY2Vzc0ZvcmVncm91bmRpbmcs
Ci0gICAgUHJvY2Vzc1Jlc3VtaW5nLAotfTsKLQotZW51bSBjbGFzcyBTdXNwZW5zaW9uUmVhc29u
IDogdWludDhfdCB7Ci0gICAgUHJvY2Vzc0JhY2tncm91bmRpbmcsCi0gICAgUHJvY2Vzc1N1c3Bl
bmRpbmcKLX07Ci0KLWNsYXNzIE5ldHdvcmtQcm94aW1pdHlTZXJ2aWNlQ2xpZW50IHsKLXB1Ymxp
YzoKLSAgICB2aXJ0dWFsIH5OZXR3b3JrUHJveGltaXR5U2VydmljZUNsaWVudCgpID0gZGVmYXVs
dDsKLSAgICB2aXJ0dWFsIHZvaWQgZGV2aWNlc0NoYW5nZWQoTlNBcnJheSAqZGV2aWNlcykgPSAw
OwotfTsKLQotY2xhc3MgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIgZmluYWwgOiBwdWJsaWMgTmV0
d29ya1Byb2Nlc3NTdXBwbGVtZW50LCBwcml2YXRlIE5ldHdvcmtQcm94aW1pdHlTZXJ2aWNlQ2xp
ZW50IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShOZXR3b3JrUHJveGltaXR5TWFuYWdlcik7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgTmV0
d29ya1Byb3hpbWl0eU1hbmFnZXIoTmV0d29ya1Byb2Nlc3MmKTsKLSAgICB+TmV0d29ya1Byb3hp
bWl0eU1hbmFnZXIoKTsKLQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgp
OwotCi0gICAgdm9pZCBhcHBseVByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgTmV0d29ya0RhdGFUYXNrQ29jb2EmLCBOU1VSTFJlcXVlc3QgKiYpOwotICAgIHZvaWQg
cmVzdW1lKFJlc3VtcHRpb25SZWFzb24pOwotICAgIHZvaWQgc3VzcGVuZChTdXNwZW5zaW9uUmVh
c29uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotCi1wcml2YXRlOgotICAgIGVudW0g
Y2xhc3MgU3RhdGUgOiB1aW50OF90IHsKLSAgICAgICAgQmFja2dyb3VuZGVkLAotICAgICAgICBG
b3JlZ3JvdW5kZWQsCi0gICAgICAgIEluaXRpYWxpemVkLAotICAgICAgICBSZXN1bWVkLAotICAg
ICAgICBTdXNwZW5kZWQsCi0gICAgfTsKLQotICAgIGJvb2wgaXNDb21wYW5pb25JblByb3hpbWl0
eSgpIGNvbnN0IHsgcmV0dXJuIG1faXNDb21wYW5pb25JblByb3hpbWl0eTsgfQotICAgIE5ldHdv
cmtQcm94aW1pdHlSZWNvbW1lbmRhdGlvbiByZWNvbW1lbmRhdGlvbigpIGNvbnN0OwotICAgIGJv
b2wgc2hvdWxkVXNlRGlyZWN0V2lGaUluUHJveGltaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zaG91
bGRVc2VEaXJlY3RXaUZpSW5Qcm94aW1pdHk7IH0KLQotICAgIHZvaWQgcHJvY2Vzc1JlY29tbWVu
ZGF0aW9ucyhOU0FycmF5ICpyZWNvbW1lbmRhdGlvbnMpOwotICAgIHZvaWQgcmVzdW1lUmVjb21t
ZW5kYXRpb25zKCk7Ci0gICAgdm9pZCBzdXNwZW5kUmVjb21tZW5kYXRpb25zKFN0YXRlIG9sZFN0
YXRlKTsKLSAgICB2b2lkIHVwZGF0ZUNvbXBhbmlvblByb3hpbWl0eSgpOwotICAgIHZvaWQgdXBk
YXRlUmVjb21tZW5kYXRpb24oKTsKLQotICAgIC8vIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudAot
ICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYpIG92ZXJyaWRlOwotCi0gICAgLy8gTmV0d29ya1Byb3hpbWl0eVNlcnZpY2VDbGllbnQKLSAg
ICB2b2lkIGRldmljZXNDaGFuZ2VkKE5TQXJyYXkgKmRldmljZXMpIG92ZXJyaWRlOwotCi0gICAg
dW5zaWduZWQgbV9jb250ZXh0SWRlbnRpZmllciB7IDAgfTsKLSAgICBib29sIG1faXNDb21wYW5p
b25JblByb3hpbWl0eSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3Nob3VsZFVzZURpcmVjdFdpRmlJ
blByb3hpbWl0eSB7IGZhbHNlIH07Ci0gICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpJbml0aWFs
aXplZCB9OwotICAgIFJldGFpblB0cjxXUk1faVJBVEludGVyZmFjZT4gbV9pUkFUSW50ZXJmYWNl
OwotICAgIFJldGFpblB0cjxJRFNTZXJ2aWNlPiBtX2lkc1NlcnZpY2U7Ci0gICAgUmV0YWluUHRy
PFdLUHJveGltaXR5U2VydmljZURlbGVnYXRlPiBtX2lkc1NlcnZpY2VEZWxlZ2F0ZTsKLSAgICBP
U09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBtX3JlY29tbWVuZGF0aW9uUXVldWU7Ci0gICAg
Qmx1ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uIG1fYmx1ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9u
OwotICAgIFdpRmlQcm94aW1pdHlBc3NlcnRpb24gbV93aUZpUHJveGltaXR5QXNzZXJ0aW9uOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoUFJPWElNSVRZ
X05FVFdPUktJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dh
dGNob3MvTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dhdGNob3MvTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIubW0KZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDU1NzczZWI0NWRmNGRiMTg1NDlmODBkOGE3YjlmOGJjM2E5MGQwNDgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93YXRjaG9zL05ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLm1tCisr
KyAvZGV2L251bGwKQEAgLTEsMzI1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25m
aWcuaCIKLSNpbXBvcnQgIk5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLmgiCi0KLSNpZiBFTkFCTEUo
UFJPWElNSVRZX05FVFdPUktJTkcpCi0KLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgIk5l
dHdvcmtEYXRhVGFza0NvY29hLmgiCi0jaW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgotI2ltcG9y
dCAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbXBvcnQgPElEUy9JRFMu
aD4KLSNpbXBvcnQgPFdpcmVsZXNzQ29leE1hbmFnZXIvV1JNX2lSQVRJbnRlcmZhY2UuaD4KLSNp
bXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tQdHIu
aD4KLSNpbXBvcnQgPHd0Zi9Cb3guaD4KLSNpbXBvcnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgotI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+Ci0jaW1wb3J0IDx3dGYvdGhyZWFkcy9C
aW5hcnlTZW1hcGhvcmUuaD4KLQotV1RGX0RFQ0xBUkVfQ0ZfVFlQRV9UUkFJVChTQ05ldHdvcmtJ
bnRlcmZhY2UpOwotCi1AaW50ZXJmYWNlIFdLUHJveGltaXR5U2VydmljZURlbGVnYXRlIDogTlNP
YmplY3QgPElEU1NlcnZpY2VEZWxlZ2F0ZT4KLS0gKHZvaWQpc2V0Q2xpZW50OihXZWJLaXQ6Ok5l
dHdvcmtQcm94aW1pdHlTZXJ2aWNlQ2xpZW50KiljbGllbnQ7Ci1AZW5kCi0KLUBpbXBsZW1lbnRh
dGlvbiBXS1Byb3hpbWl0eVNlcnZpY2VEZWxlZ2F0ZSB7Ci0gICAgV2ViS2l0OjpOZXR3b3JrUHJv
eGltaXR5U2VydmljZUNsaWVudCogX2NsaWVudDsKLX0KLQotLSAodm9pZClzZXRDbGllbnQ6KFdl
YktpdDo6TmV0d29ya1Byb3hpbWl0eVNlcnZpY2VDbGllbnQqKWNsaWVudAotewotICAgIF9jbGll
bnQgPSBjbGllbnQ7Ci19Ci0KLS0gKHZvaWQpc2VydmljZTooSURTU2VydmljZSAqKXNlcnZpY2Ug
ZGV2aWNlc0NoYW5nZWQ6KE5TQXJyYXkgKilkZXZpY2VzCi17Ci0gICAgaWYgKF9jbGllbnQpCi0g
ICAgICAgIF9jbGllbnQtPmRldmljZXNDaGFuZ2VkKGRldmljZXMpOwotfQotCi0tICh2b2lkKXNl
cnZpY2U6KElEU1NlcnZpY2UgKilzZXJ2aWNlIG5lYXJieURldmljZXNDaGFuZ2VkOihOU0FycmF5
ICopZGV2aWNlcwotewotICAgIGlmIChfY2xpZW50KQotICAgICAgICBfY2xpZW50LT5kZXZpY2Vz
Q2hhbmdlZChkZXZpY2VzKTsKLX0KLQotQGVuZAotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotZW51
bSBjbGFzcyBOZXR3b3JrUHJveGltaXR5UmVjb21tZW5kYXRpb24gOiB1aW50OF90IHsKLSAgICBC
bHVldG9vdGgsCi0gICAgTm9uZSwKLSAgICBXaUZpLAotfTsKLQotTmV0d29ya1Byb3hpbWl0eU1h
bmFnZXI6Ok5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyKE5ldHdvcmtQcm9jZXNzJikKLSAgICA6IG1f
aWRzU2VydmljZSB7IGFkb3B0TlMoW1tJRFNTZXJ2aWNlIGFsbG9jXSBpbml0V2l0aFNlcnZpY2U6
QCJjb20uYXBwbGUucHJpdmF0ZS5hbGxveS53ZWJraXRuZXR3b3JraW5nIl0pIH0KLSAgICAsIG1f
aWRzU2VydmljZURlbGVnYXRlIHsgYWRvcHROUyhbW1dLUHJveGltaXR5U2VydmljZURlbGVnYXRl
IGFsbG9jXSBpbml0XSkgfQotICAgICwgbV9yZWNvbW1lbmRhdGlvblF1ZXVlIHsgYWRvcHRPU09i
amVjdChkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYktpdCBOZXR3b3JrIFByb3hpbWl0eSBSZWNv
bW1lbmRhdGlvbiBRdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkpIH0KLSAgICAsIG1fYmx1
ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uIHsgbV9pZHNTZXJ2aWNlLmdldCgpIH0KLXsKLSAgICBb
bV9pZHNTZXJ2aWNlRGVsZWdhdGUgc2V0Q2xpZW50OnRoaXNdOwotICAgIFttX2lkc1NlcnZpY2Ug
YWRkRGVsZWdhdGU6bV9pZHNTZXJ2aWNlRGVsZWdhdGUuZ2V0KCkgcXVldWU6ZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKV07Ci19Ci0KLU5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjp+TmV0d29ya1By
b3hpbWl0eU1hbmFnZXIoKQotewotICAgIFttX2lkc1NlcnZpY2VEZWxlZ2F0ZSBzZXRDbGllbnQ6
bnVsbHB0cl07Ci19Ci0KLWNvbnN0IGNoYXIqIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjpzdXBw
bGVtZW50TmFtZSgpCi17Ci0gICAgcmV0dXJuICJOZXR3b3JrUHJveGltaXR5TWFuYWdlciI7Ci19
Ci0KLXN0YXRpYyB2b2lkIGJpbmRSZXF1ZXN0VG9XaUZpKE5TVVJMUmVxdWVzdCAqJiByZXF1ZXN0
KQotewotICAgIHN0YXRpYyBOU1N0cmluZyAqd2lGaUludGVyZmFjZUlkZW50aWZpZXIgPSBbXSgp
IC0+IE5TU3RyaW5nICogewotICAgICAgICBhdXRvIGludGVyZmFjZXMgPSBhZG9wdENGKFNDTmV0
d29ya0ludGVyZmFjZUNvcHlBbGwoKSk7Ci0gICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMCwgY291
bnQgPSBDRkFycmF5R2V0Q291bnQoaW50ZXJmYWNlcy5nZXQoKSk7IGkgPCBjb3VudDsgKytpKSB7
Ci0gICAgICAgICAgICBhdXRvIGludGVyZmFjZSA9IGNoZWNrZWRfY2ZfY2FzdDxTQ05ldHdvcmtJ
bnRlcmZhY2VSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaW50ZXJmYWNlcy5nZXQoKSwgaSkp
OwotICAgICAgICAgICAgaWYgKCFDRkVxdWFsKFNDTmV0d29ya0ludGVyZmFjZUdldEludGVyZmFj
ZVR5cGUoaW50ZXJmYWNlKSwga1NDTmV0d29ya0ludGVyZmFjZVR5cGVJRUVFODAyMTEpKQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBy
ZXRhaW5QdHIoU0NOZXR3b3JrSW50ZXJmYWNlR2V0QlNETmFtZShpbnRlcmZhY2UpKTsKLSAgICAg
ICAgICAgIFJFTEVBU0VfTE9HKFByb3hpbWl0eU5ldHdvcmtpbmcsICJEZXRlcm1pbmVkIFdpLUZp
IGludGVyZmFjZSBpZGVudGlmaWVyIGlzICVALiIsIGlkZW50aWZpZXIuZ2V0KCkpOwotICAgICAg
ICAgICAgcmV0dXJuIChOU1N0cmluZyAqKWlkZW50aWZpZXIubGVha1JlZigpOwotICAgICAgICB9
Ci0KLSAgICAgICAgUkVMRUFTRV9MT0coUHJveGltaXR5TmV0d29ya2luZywgIkZhaWxlZCB0byBk
ZXRlcm1pbmUgV2ktRmkgaW50ZXJmYWNlIGlkZW50aWZpZXIuIik7Ci0gICAgICAgIHJldHVybiBu
aWw7Ci0gICAgfSgpOwotCi0gICAgaWYgKCF3aUZpSW50ZXJmYWNlSWRlbnRpZmllcikKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgYXV0byBtdXRhYmxlUmVxdWVzdCA9IGFkb3B0TlMoW3JlcXVlc3Qg
bXV0YWJsZUNvcHldKTsKLSAgICBbbXV0YWJsZVJlcXVlc3Qgc2V0Qm91bmRJbnRlcmZhY2VJZGVu
dGlmaWVyOndpRmlJbnRlcmZhY2VJZGVudGlmaWVyXTsKLSAgICByZXF1ZXN0ID0gbXV0YWJsZVJl
cXVlc3QuYXV0b3JlbGVhc2UoKTsKLX0KLQotdm9pZCBOZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6
YXBwbHlQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
V2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYSYgZGF0YVRhc2ssIE5TVVJMUmVxdWVzdCAqJiBu
c1JlcXVlc3QpCi17Ci0gICAgLy8gSWYgdGhlIGNsaWVudCBoYXMgYWxyZWFkeSBib3VuZCB0aGUg
cmVxdWVzdCB0byBhbiBpZGVudGlmaWVyLCBkb24ndCBvdmVycmlkZSBpdC4KLSAgICBpZiAobnNS
ZXF1ZXN0LmJvdW5kSW50ZXJmYWNlSWRlbnRpZmllci5sZW5ndGgpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGlmIChkYXRhVGFzay5pc1RvcExldmVsTmF2aWdhdGlvbigpKQotICAgICAgICB1cGRh
dGVSZWNvbW1lbmRhdGlvbigpOwotCi0gICAgc3dpdGNoIChyZWNvbW1lbmRhdGlvbigpKSB7Ci0g
ICAgY2FzZSBOZXR3b3JrUHJveGltaXR5UmVjb21tZW5kYXRpb246OkJsdWV0b290aDoKLSAgICAg
ICAgZGF0YVRhc2suaG9sZFByb3hpbWl0eUFzc2VydGlvbihtX2JsdWV0b290aFByb3hpbWl0eUFz
c2VydGlvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTmV0d29ya1Byb3hpbWl0eVJlY29t
bWVuZGF0aW9uOjpOb25lOgotICAgICAgICBicmVhazsKLSAgICBjYXNlIE5ldHdvcmtQcm94aW1p
dHlSZWNvbW1lbmRhdGlvbjo6V2lGaToKLSAgICAgICAgZGF0YVRhc2suaG9sZFByb3hpbWl0eUFz
c2VydGlvbihtX3dpRmlQcm94aW1pdHlBc3NlcnRpb24pOwotICAgICAgICBiaW5kUmVxdWVzdFRv
V2lGaShuc1JlcXVlc3QpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXZvaWQgTmV0d29y
a1Byb3hpbWl0eU1hbmFnZXI6OnJlc3VtZShSZXN1bXB0aW9uUmVhc29uIHJlYXNvbikKLXsKLSAg
ICBzd2l0Y2ggKHJlYXNvbikgewotICAgIGNhc2UgUmVzdW1wdGlvblJlYXNvbjo6UHJvY2Vzc0Zv
cmVncm91bmRpbmc6Ci0gICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6Rm9yZWdyb3VuZGVkOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFJlc3VtcHRpb25SZWFzb246OlByb2Nlc3NSZXN1bWluZzoK
LSAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZXN1bWVkOwotICAgICAgICBicmVhazsKLSAgICB9
Ci0KLSAgICByZXN1bWVSZWNvbW1lbmRhdGlvbnMoKTsKLQotICAgIHN3aXRjaCAocmVjb21tZW5k
YXRpb24oKSkgewotICAgIGNhc2UgTmV0d29ya1Byb3hpbWl0eVJlY29tbWVuZGF0aW9uOjpCbHVl
dG9vdGg6Ci0gICAgICAgIG1fYmx1ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uLnJlc3VtZShyZWFz
b24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE5ldHdvcmtQcm94aW1pdHlSZWNvbW1lbmRh
dGlvbjo6Tm9uZToKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBOZXR3b3JrUHJveGltaXR5UmVj
b21tZW5kYXRpb246OldpRmk6Ci0gICAgICAgIG1fd2lGaVByb3hpbWl0eUFzc2VydGlvbi5yZXN1
bWUocmVhc29uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lkIE5ldHdvcmtQcm94
aW1pdHlNYW5hZ2VyOjpzdXNwZW5kKFN1c3BlbnNpb25SZWFzb24gcmVhc29uLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgYXV0byBvbGRTdGF0
ZSA9IG1fc3RhdGU7Ci0gICAgc3dpdGNoIChyZWFzb24pIHsKLSAgICBjYXNlIFN1c3BlbnNpb25S
ZWFzb246OlByb2Nlc3NCYWNrZ3JvdW5kaW5nOgotICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkJh
Y2tncm91bmRlZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdXNwZW5zaW9uUmVhc29uOjpQ
cm9jZXNzU3VzcGVuZGluZzoKLSAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpTdXNwZW5kZWQ7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHN1c3BlbmRSZWNvbW1lbmRhdGlvbnMob2xkU3Rh
dGUpOwotCi0gICAgYXV0byB3cmFwcGVkQ29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgUkVMRUFTRV9MT0coUHJveGltaXR5
TmV0d29ya2luZywgIkZpbmlzaGVkIHN1c3BlbmRpbmcgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIg
KHN0YXRlOiAlaGh1KS4iLCBtX3N0YXRlKTsKLSAgICB9OwotCi0gICAgUkVMRUFTRV9MT0coUHJv
eGltaXR5TmV0d29ya2luZywgIlN1c3BlbmRpbmcgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIgKHN0
YXRlOiAlaGh1KS4iLCBtX3N0YXRlKTsKLSAgICBtX2JsdWV0b290aFByb3hpbWl0eUFzc2VydGlv
bi5zdXNwZW5kKHJlYXNvbiwgV1RGTW92ZSh3cmFwcGVkQ29tcGxldGlvbkhhbmRsZXIpKTsKLSAg
ICBtX3dpRmlQcm94aW1pdHlBc3NlcnRpb24uc3VzcGVuZChyZWFzb24sIFtdIHsgfSk7Ci19Ci0K
LU5ldHdvcmtQcm94aW1pdHlSZWNvbW1lbmRhdGlvbiBOZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6
cmVjb21tZW5kYXRpb24oKSBjb25zdAotewotICAgIGlmICghaXNDb21wYW5pb25JblByb3hpbWl0
eSgpKQotICAgICAgICByZXR1cm4gTmV0d29ya1Byb3hpbWl0eVJlY29tbWVuZGF0aW9uOjpOb25l
OwotCi0gICAgaWYgKHNob3VsZFVzZURpcmVjdFdpRmlJblByb3hpbWl0eSgpKQotICAgICAgICBy
ZXR1cm4gTmV0d29ya1Byb3hpbWl0eVJlY29tbWVuZGF0aW9uOjpXaUZpOwotCi0gICAgcmV0dXJu
IE5ldHdvcmtQcm94aW1pdHlSZWNvbW1lbmRhdGlvbjo6Qmx1ZXRvb3RoOwotfQotCi12b2lkIE5l
dHdvcmtQcm94aW1pdHlNYW5hZ2VyOjpwcm9jZXNzUmVjb21tZW5kYXRpb25zKE5TQXJyYXkgKnJl
Y29tbWVuZGF0aW9ucykKLXsKLSAgICBtX3Nob3VsZFVzZURpcmVjdFdpRmlJblByb3hpbWl0eSA9
IGZhbHNlOwotICAgIGJvb2wgZGlkU2VlRGlyZWN0V2lGaVJlY29tbWVuZGF0aW9uID0gZmFsc2U7
Ci0gICAgZm9yIChXUk1faVJBVFByb3hpbWl0eVJlY29tbWVuZGF0aW9uICpyZWNvbW1lbmRhdGlv
biBpbiByZWNvbW1lbmRhdGlvbnMpIHsKLSAgICAgICAgc3dpdGNoIChyZWNvbW1lbmRhdGlvbi5S
ZWNvbW1lbmRhdGlvblR5cGUpIHsKLSAgICAgICAgY2FzZSBXUk1SZWNvbW1lbmRhdGlvbkxpbmtU
eXBlQlQ6Ci0gICAgICAgIGNhc2UgV1JNUmVjb21tZW5kYXRpb25MaW5rVHlwZUNvbXBhbmlvbldp
Zmk6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXUk1SZWNvbW1lbmRhdGlvbkxp
bmtUeXBlRGlyZWN0V2lmaToKLSAgICAgICAgICAgIEFTU0VSVCghZGlkU2VlRGlyZWN0V2lGaVJl
Y29tbWVuZGF0aW9uKTsKLSAgICAgICAgICAgIGRpZFNlZURpcmVjdFdpRmlSZWNvbW1lbmRhdGlv
biA9IHRydWU7Ci0gICAgICAgICAgICBtX3Nob3VsZFVzZURpcmVjdFdpRmlJblByb3hpbWl0eSA9
IHJlY29tbWVuZGF0aW9uLmxpbmtSZWNvbW1lbmRhdGlvbklzVmFsaWQgJiYgcmVjb21tZW5kYXRp
b24ubGlua0lzUmVjb21tZW5kZWQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIFJFTEVBU0VfTE9HKFByb3hpbWl0eU5ldHdvcmtpbmcsICJQcm9jZXNzZWQgaVJB
VE1hbmFnZXIgcmVjb21tZW5kYXRpb25zIChzaG91bGRVc2VEaXJlY3RXaUZpSW5Qcm94aW1pdHk6
ICVkKS5cbiIsIG1fc2hvdWxkVXNlRGlyZWN0V2lGaUluUHJveGltaXR5KTsKLX0KLQotc3RhdGlj
IFdDTVByb2Nlc3NJZCB0b1Byb2Nlc3NJRCh1bnNpZ25lZCBjb250ZXh0SWRlbnRpZmllcikKLXsK
LSAgICBzd2l0Y2ggKGNvbnRleHRJZGVudGlmaWVyKSB7Ci0gICAgY2FzZSBXUk1XZWJraXQ6Ci0g
ICAgICAgIHJldHVybiBXUk1XZWJraXQ7Ci0gICAgY2FzZSBXUk1XZWJraXRNYWlsOgotICAgICAg
ICByZXR1cm4gV1JNV2Via2l0TWFpbDsKLSAgICBjYXNlIFdSTVdlYmtpdE5vdGlmaWNhdGlvbjoK
LSAgICAgICAgcmV0dXJuIFdSTVdlYmtpdE5vdGlmaWNhdGlvbjsKLSAgICBkZWZhdWx0OgotICAg
ICAgICByZXR1cm4gV0NNVW5rbm93bjsKLSAgICB9Ci19Ci0KLXZvaWQgTmV0d29ya1Byb3hpbWl0
eU1hbmFnZXI6OnJlc3VtZVJlY29tbWVuZGF0aW9ucygpCi17Ci0gICAgaWYgKG1faVJBVEludGVy
ZmFjZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdXBkYXRlQ29tcGFuaW9uUHJveGltaXR5KCk7
Ci0KLSAgICBhdXRvIHByb2Nlc3NJRCA9IHRvUHJvY2Vzc0lEKG1fY29udGV4dElkZW50aWZpZXIp
OwotICAgIGlmIChwcm9jZXNzSUQgPT0gV0NNVW5rbm93bikgewotICAgICAgICBSRUxFQVNFX0xP
RyhQcm94aW1pdHlOZXR3b3JraW5nLCAiSW52YWxpZCBXQ00gcHJvY2VzcyBJRCAoJWQpLiIsIG1f
Y29udGV4dElkZW50aWZpZXIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUkVMRUFT
RV9MT0coUHJveGltaXR5TmV0d29ya2luZywgIlJlZ2lzdGVyaW5nIHdpdGggaVJBVE1hbmFnZXIg
KFdDTSBwcm9jZXNzIElEOiAlZCwgc3RhdGU6ICVoaHUpLiIsIHByb2Nlc3NJRCwgbV9zdGF0ZSk7
Ci0gICAgbV9pUkFUSW50ZXJmYWNlID0gYWRvcHROUyhbW1dSTV9pUkFUSW50ZXJmYWNlIGFsbG9j
XSBpbml0XSk7Ci0gICAgW21faVJBVEludGVyZmFjZSByZWdpc3RlckNsaWVudDpwcm9jZXNzSUQg
cXVldWU6bV9yZWNvbW1lbmRhdGlvblF1ZXVlLmdldCgpXTsKLSAgICB1cGRhdGVSZWNvbW1lbmRh
dGlvbigpOwotfQotCi12b2lkIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjpzdXNwZW5kUmVjb21t
ZW5kYXRpb25zKFN0YXRlIG9sZFN0YXRlKQotewotICAgIC8vIElmIHRoaXMgaXMgbm90IGEgZm9y
ZWdyb3VuZC10by1iYWNrZ3JvdW5kIHRyYW5zaXRpb24sIGF2b2lkIHVucmVnaXN0ZXJpbmcuIFBh
Z2UgbG9hZHMgY2FuCi0gICAgLy8gb2Z0ZW4gY2F1c2UgdGhlIG5ldHdvcmsgcHJvY2VzcyB0byBy
ZXN1bWUsIHRyYW5zaXRpb24gdG8gdGhlIGJhY2tncm91bmQsIHRoZW4gdHJhbnNpdGlvbiB0bwot
ICAgIC8vIHRoZSBmb3JlZ3JvdW5kIGluIHJhcGlkIHN1Y2Nlc3Npb24sIGNhdXNpbmcgdW5uZWNl
c3NhcnkgaVJBVE1hbmFnZXIgcmVnaXN0cmF0aW9uIGNodXJuIGFuZAotICAgIC8vIGV4cG9zaW5n
IGJ1Z3Mgc3VjaCBhcyA8cmRhcjovL3Byb2JsZW0vNDI1NjAzMjA+LgotICAgIGlmIChtX3N0YXRl
ID09IFN0YXRlOjpCYWNrZ3JvdW5kZWQgJiYgb2xkU3RhdGUgIT0gU3RhdGU6OkZvcmVncm91bmRl
ZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2lSQVRJbnRlcmZhY2UpCi0gICAgICAg
IHJldHVybjsKLQotICAgIFJFTEVBU0VfTE9HKFByb3hpbWl0eU5ldHdvcmtpbmcsICJVbnJlZ2lz
dGVyaW5nIHdpdGggaVJBVE1hbmFnZXIgKFdDTSBwcm9jZXNzIElEOiAlZCwgc3RhdGU6ICVoaHUp
LiIsIG1fY29udGV4dElkZW50aWZpZXIsIG1fc3RhdGUpOwotICAgIFttX2lSQVRJbnRlcmZhY2Ug
dW5yZWdpc3RlckNsaWVudF07Ci0gICAgbV9pUkFUSW50ZXJmYWNlID0gbmlsOwotICAgIG1faXND
b21wYW5pb25JblByb3hpbWl0eSA9IGZhbHNlOwotICAgIG1fc2hvdWxkVXNlRGlyZWN0V2lGaUlu
UHJveGltaXR5ID0gZmFsc2U7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OnVw
ZGF0ZUNvbXBhbmlvblByb3hpbWl0eSgpCi17Ci0gICAgbV9pc0NvbXBhbmlvbkluUHJveGltaXR5
ID0gZmFsc2U7Ci0gICAgZm9yIChJRFNEZXZpY2UgKmRldmljZSBpbiBbbV9pZHNTZXJ2aWNlIGRl
dmljZXNdKSB7Ci0gICAgICAgIGlmIChkZXZpY2UuaXNEZWZhdWx0UGFpcmVkRGV2aWNlICYmIGRl
dmljZS5pc05lYXJieSkgewotICAgICAgICAgICAgbV9pc0NvbXBhbmlvbkluUHJveGltaXR5ID0g
dHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgUkVMRUFT
RV9MT0coUHJveGltaXR5TmV0d29ya2luZywgIkRldGVybWluZWQgY29tcGFuaW9uIHByb3hpbWl0
eSAoaXNDb21wYW5pb25JblByb3hpbWl0eTogJWQpLiIsIG1faXNDb21wYW5pb25JblByb3hpbWl0
eSk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OnVwZGF0ZVJlY29tbWVuZGF0
aW9uKCkKLXsKLSAgICBpZiAoIWlzQ29tcGFuaW9uSW5Qcm94aW1pdHkoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKCFtX2lSQVRJbnRlcmZhY2UpCi0gICAgICAgIHJldHVybjsKLQotICAg
IFJFTEVBU0VfTE9HKFByb3hpbWl0eU5ldHdvcmtpbmcsICJSZXF1ZXN0aW5nIGFuIGltbWVkaWF0
ZSByZWNvbW1lbmRhdGlvbiBmcm9tIGlSQVRNYW5hZ2VyLiIpOwotCi0gICAgYXV0byBzZW1hcGhv
cmUgPSBCb3g8QmluYXJ5U2VtYXBob3JlPjo6Y3JlYXRlKCk7Ci0gICAgW21faVJBVEludGVyZmFj
ZSBnZXRQcm94aW1pdHlMaW5rUmVjb21tZW5kYXRpb246Tk8gcmVjb21tZW5kYXRpb246W3RoaXMs
IHNlbWFwaG9yZV0oTlNBcnJheTxXUk1faVJBVFByb3hpbWl0eVJlY29tbWVuZGF0aW9uICo+ICpy
ZWNvbW1lbmRhdGlvbnMpIHsKLSAgICAgICAgcHJvY2Vzc1JlY29tbWVuZGF0aW9ucyhyZWNvbW1l
bmRhdGlvbnMpOwotICAgICAgICBzZW1hcGhvcmUtPnNpZ25hbCgpOwotICAgIH1dOwotICAgIHNl
bWFwaG9yZS0+d2FpdEZvcigxX3MpOwotfQotCi12b2lkIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2Vy
Ojppbml0aWFsaXplKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQotewotICAgIG1fY29udGV4dElkZW50aWZpZXIgPSBwYXJhbWV0ZXJzLndpcmVsZXNz
Q29udGV4dElkZW50aWZpZXI7Ci0gICAgcmVzdW1lKFJlc3VtcHRpb25SZWFzb246OlByb2Nlc3NS
ZXN1bWluZyk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OmRldmljZXNDaGFu
Z2VkKE5TQXJyYXkgKikKLXsKLSAgICB1cGRhdGVDb21wYW5pb25Qcm94aW1pdHkoKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoUFJPWElNSVRZX05FVFdP
UktJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggOTcyMzZlNzlmZDM1MmVjZjBjNTA5NGJj
ZDcwYjM0NTI1MGRjM2RjNi4uOWUzNzUyYWIwY2MxZjgwZjlkZDlkMjk2Njk4N2ZjZTY3MjY0ZTBj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNDgsOSArNDgsNiBAQCBOZXR3b3JrUHJvY2Vz
cy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0KIE5ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJv
Y2Vzc01hYy5tbQogTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1t
CiAKLU5ldHdvcmtQcm9jZXNzL3dhdGNob3MvTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbi5tbQot
TmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5TWFuYWdlci5tbQotCiBOZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50LmNwcAogTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLmNwcAogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENQcm92aWRlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggMzMyYjBlNTIx
MWJkYzk3YmYxMmM4YTE5ZWI0M2E4YWMzODcwMDA2NS4uM2RiNzA1NjljOGE0ZTMzMzQzYjg0ZmEz
MjdjMzIwYTMzNThlNGIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKQEAgLTEyNiw5ICsxMjYs
NiBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b246OmNvcHkoKQogICAgIGNvcHktPm1fcHJvY2Vzc1N3YXBzT25XaW5kb3dPcGVuV2l0aE9wZW5l
ciA9IHRoaXMtPm1fcHJvY2Vzc1N3YXBzT25XaW5kb3dPcGVuV2l0aE9wZW5lcjsKICAgICBjb3B5
LT5tX2lzQXV0b21hdGljUHJvY2Vzc1dhcm1pbmdFbmFibGVkQnlDbGllbnQgPSB0aGlzLT5tX2lz
QXV0b21hdGljUHJvY2Vzc1dhcm1pbmdFbmFibGVkQnlDbGllbnQ7CiAgICAgY29weS0+bV91c2Vz
V2ViUHJvY2Vzc0NhY2hlID0gdGhpcy0+bV91c2VzV2ViUHJvY2Vzc0NhY2hlOwotI2lmIEVOQUJM
RShQUk9YSU1JVFlfTkVUV09SS0lORykKLSAgICBjb3B5LT5tX3dpcmVsZXNzQ29udGV4dElkZW50
aWZpZXIgPSB0aGlzLT5tX3dpcmVsZXNzQ29udGV4dElkZW50aWZpZXI7Ci0jZW5kaWYKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBjb3B5LT5tX3N1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRp
b25PblN5c3RlbUNoYW5nZSA9IHRoaXMtPm1fc3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlv
bk9uU3lzdGVtQ2hhbmdlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKaW5kZXggZDNiMDlhODY1
NTE1MGY4OWU2YjAyNDY4MTMxODc2YjExYWE1MjYyYy4uZjIxYWY1ZjFkZmZmNzU4ZGM3ZDRiYzZk
ZjM4NjI2NThiODZkYmFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaApAQCAtMTgwLDExICsxODAsNiBA
QCBwdWJsaWM6CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGN1c3RvbVdlYkNvbnRlbnRTZXJ2aWNl
QnVuZGxlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tV2ViQ29udGVudFNlcnZp
Y2VCdW5kbGVJZGVudGlmaWVyOyB9CiAgICAgdm9pZCBzZXRDdXN0b21XZWJDb250ZW50U2Vydmlj
ZUJ1bmRsZUlkZW50aWZpZXIoY29uc3QgV1RGOjpTdHJpbmcmIGN1c3RvbVdlYkNvbnRlbnRTZXJ2
aWNlQnVuZGxlSWRlbnRpZmllcikgeyBtX2N1c3RvbVdlYkNvbnRlbnRTZXJ2aWNlQnVuZGxlSWRl
bnRpZmllciA9IGN1c3RvbVdlYkNvbnRlbnRTZXJ2aWNlQnVuZGxlSWRlbnRpZmllcjsgfQogCi0j
aWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQotICAgIHVuc2lnbmVkIHdpcmVsZXNzQ29u
dGV4dElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3dpcmVsZXNzQ29udGV4dElkZW50aWZp
ZXI7IH0KLSAgICB2b2lkIHNldFdpcmVsZXNzQ29udGV4dElkZW50aWZpZXIodW5zaWduZWQgd2ly
ZWxlc3NDb250ZXh0SWRlbnRpZmllcikgeyBtX3dpcmVsZXNzQ29udGV4dElkZW50aWZpZXIgPSB3
aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyOyB9Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIGJvb2wgc3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdl
KCkgY29uc3QgeyByZXR1cm4gbV9zdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0
ZW1DaGFuZ2U7IH0KICAgICB2b2lkIHNldFN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25P
blN5c3RlbUNoYW5nZShib29sIHN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3Rl
bUNoYW5nZSkgeyBtX3N1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5n
ZSA9IHN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZTsgfQpAQCAt
MjM3LDEwICsyMzIsNiBAQCBwcml2YXRlOgogICAgIFdURjo6U3RyaW5nIG1fY3REYXRhQ29ubmVj
dGlvblNlcnZpY2VUeXBlOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJ
TkcpCi0gICAgdW5zaWduZWQgbV93aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyIHsgMCB9OwotI2Vu
ZGlmCi0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIG1fc3VwcHJlc3Nlc0Nvbm5lY3Rp
b25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlIHsgZmFsc2UgfTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5oCmluZGV4IDNhYjBjM2JmNTFlNjViODA3YmE0MzQ2NzBmMWY2ZWUz
ODE1NTUyZTUuLmUxODhkZDhmYjAxZmY4NDE4NjFkOGFmYjNmZjJhNjBlNTYzMTBkMGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKQEAgLTQyLDcgKzQyLDcgQEAgV0tfQ0xBU1NfQVZB
SUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpCiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29w
eSkgTlNBcnJheTxOU1VSTCAqPiAqYWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMcyBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSwgaW9zKDExLjApKTsKIAogI2lmIFRBUkdFVF9PU19J
UEhPTkUgJiYgIVRBUkdFVF9PU19TSU1VTEFUT1IKLUBwcm9wZXJ0eSAobm9uYXRvbWljKSBOU1VJ
bnRlZ2VyIHdpcmVsZXNzQ29udGV4dElkZW50aWZpZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYykg
TlNVSW50ZWdlciB3aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyIFdLX0FQSV9ERVBSRUNBVEVEKCJV
c2Ugb2YgdGhpcyBBUEkgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSBhbmQgY2FuIGJlIHJlbW92ZWQi
LCBpb3MoMTAuMTIsIFdLX0lPU19UQkEpKTsKICNlbmRpZgogCiAvLyBOZXR3b3JrIFByb2Nlc3Mg
cHJvcGVydGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KaW5kZXggOTZiMGE5ODVm
ZjNkMWFiNGI3NDI1NmMxODZkNDQ5M2VmZGU0ZmM1ZS4uMTZjMzIzYjg4MDNkMTc0NzBkMTQxNjgz
MWFjZmU1ZTdjYzhhOThhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCkBAIC0x
MzcsMTUgKzEzNywxNCBAQCAtICh2b2lkKXNldEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVS
THM6KE5TQXJyYXk8TlNVUkwgKj4gKilhZGRpdGlvbmFsUmVhZEFjYwogICAgIF9wcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24tPnNldEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKFdURk1v
dmUocGF0aHMpKTsKIH0KIAotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCiAt
IChOU1VJbnRlZ2VyKXdpcmVsZXNzQ29udGV4dElkZW50aWZpZXIKIHsKLSAgICByZXR1cm4gX3By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+d2lyZWxlc3NDb250ZXh0SWRlbnRpZmllcigpOworICAg
IHJldHVybiAwOwogfQogCiAtICh2b2lkKXNldFdpcmVsZXNzQ29udGV4dElkZW50aWZpZXI6KE5T
VUludGVnZXIpaWRlbnRpZmllcgogewotICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNl
dFdpcmVsZXNzQ29udGV4dElkZW50aWZpZXIoaWRlbnRpZmllcik7CiB9CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2Eu
bW0KaW5kZXggYmVhMGQ5MmQ3MmQ5YTUzYzVhNDJhNjU4ZjJiYTE2MTdhNzE4M2RjMi4uZWY5MmJh
ZDM1NjM1OWM0ZmRlYzFmZmMzYTdkYWQ4MTgyMGIyNWY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC0yOTYsMTAg
KzI5Niw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQ
cm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhCiAgICAgcGFyYW1ldGVycy5zdG9yYWdl
QWNjZXNzQVBJRW5hYmxlZCA9IHN0b3JhZ2VBY2Nlc3NBUElFbmFibGVkKCk7CiAgICAgcGFyYW1l
dGVycy5zdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2UgPSBtX2Nv
bmZpZ3VyYXRpb24tPnN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5n
ZSgpOwogCi0jaWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQotICAgIHBhcmFtZXRlcnMu
d2lyZWxlc3NDb250ZXh0SWRlbnRpZmllciA9IG1fY29uZmlndXJhdGlvbi0+d2lyZWxlc3NDb250
ZXh0SWRlbnRpZmllcigpOwotI2VuZGlmCi0KICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZUlU
UERhdGFiYXNlID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCJJbnRlcm5hbERlYnVnJUAiLCBXZWJQcmVmZXJlbmNlc0tleTo6aXNJVFBEYXRhYmFzZUVu
YWJsZWRLZXkoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpXV07CiAgICAgcGFyYW1ldGVycy5kb3du
bG9hZE1vbml0b3JTcGVlZE11bHRpcGxpZXIgPSBtX2NvbmZpZ3VyYXRpb24tPmRvd25sb2FkTW9u
aXRvclNwZWVkTXVsdGlwbGllcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzYzNkMGFhMzRmYWEwNGVlYzVhYWI5YmM5MzNmMTg4
MmE0YjBiOWNiLi4wOTg2M2VlNDg2MWEzY2M0YzgyZjZhYjI1MjBjOGQ1N2VhYTdmMTNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEy
ODMsOCArMTI4Myw2IEBACiAJCUExMDJBNzA4MUVDMEVFRTkwMEQ4MUQ4MiAvKiBjb20ubWFjcm9t
ZWRpYS5GbGFzaCBQbGF5ZXIgRVNSLnBsdWdpbi5zYiBpbiBDb3B5IFBsdWctaW4gU2FuZGJveCBQ
cm9maWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTVFMzk0OTFENUJE
OEE3MDBCNEI3Q0UgLyogY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyIEVTUi5wbHVnaW4uc2Ig
Ki87IH07CiAJCUExMDQ2RUExMjA3OTI2MzEwMEYwQzVEOCAvKiBXS1BERlZpZXcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMDQ2RTlGMjA3OTI2MzEw
MEYwQzVEOCAvKiBXS1BERlZpZXcuaCAqLzsgfTsKIAkJQTEwNUQwRDEyMTI3MzRCMjAwMzRGNkM3
IC8qIE5ldHdvcmtCbG9iUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExMDVEMEQwMjEyNzM0QjEwMDM0RjZDNyAvKiBOZXR3b3JrQmxvYlJl
Z2lzdHJ5LmggKi87IH07Ci0JCUExMTQ1NUFDMjExRkNGQ0EwMENBOTM1QiAvKiBOZXR3b3JrUHJv
eGltaXR5QXNzZXJ0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTE0NTVBQTIxMUZDRkNBMDBDQTkzNUIgLyogTmV0d29ya1Byb3hpbWl0eUFzc2Vy
dGlvbi5oICovOyB9OwotCQlBMTE0NTVCMDIxMUZEMjUyMDBDQTkzNUIgLyogTmV0d29ya1Byb3hp
bWl0eU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExMTQ1NUFFMjExRkQyNTIwMENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5TWFuYWdlci5o
ICovOyB9OwogCQlBMTE1REM3MjE5MUQ4MkRBMDBEQTgwNzIgLyogX1dLV2ViVmlld1ByaW50Rm9y
bWF0dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MTE1REM2RTE5MUQ4MkFCMDBEQTgwNzIgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTExOEE5RUYx
OTA3QUQ2RjAwRjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExOEE5RUQxOTA3QUQ2RjAwRjdDOTJC
IC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5oICovOyB9OwogCQlBMTE4QTlGMzE5MDhCOEVBMDBG
N0M5MkIgLyogX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExOEE5RjExOTA4QjhFQTAwRjdDOTJCIC8qIF9XS05T
RmlsZU1hbmFnZXJFeHRyYXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMzg3MywxMCArMzg3MSw2IEBACiAJCUExMDQ2RTlGMjA3OTI2MzEwMEYw
QzVEOCAvKiBXS1BERlZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tQREZWaWV3Lmg7IHBhdGggPSBp
b3MvV0tQREZWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMDQ2RUEwMjA3
OTI2MzEwMEYwQzVEOCAvKiBXS1BERlZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1BE
RlZpZXcubW07IHBhdGggPSBpb3MvV0tQREZWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBMTA1RDBEMDIxMjczNEIxMDAzNEY2QzcgLyogTmV0d29ya0Jsb2JSZWdpc3RyeS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQmxvYlJlZ2lzdHJ5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUExMTQ1NUFBMjExRkNGQ0EwMENBOTM1QiAv
KiBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtQcm94
aW1pdHlBc3NlcnRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTExNDU1QUIy
MTFGQ0ZDQTAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24ubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlBMTE0NTVBRTIxMUZEMjUyMDBDQTkzNUIgLyogTmV0d29ya1Byb3hp
bWl0eU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTExNDU1QUYyMTFGRDI1MjAwQ0E5MzVCIC8q
IE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29y
a1Byb3hpbWl0eU1hbmFnZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMTVE
QzZEMTkxRDgyQUIwMERBODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMTVEQzZFMTkxRDgyQUIwMERB
ODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUExMThBOUVDMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVu
dERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUXVpY2tMb29r
RG9jdW1lbnREYXRhLmNwcDsgcGF0aCA9IGlvcy9RdWlja0xvb2tEb2N1bWVudERhdGEuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjUyMyw3ICs2NTE3LDYgQEAKIAkJCQkyREE5
NDRCQjE4ODUxMUREMDBFRDg2REIgLyogaW9zICovLAogCQkJCTUxMENDN0RDMTYxMzhFMjkwMEQw
M0VEMyAvKiBtYWMgKi8sCiAJCQkJOTNCQTA0RDkyMTUxQURDRDAwN0Y0NTVGIC8qIFNlcnZpY2VX
b3JrZXIgKi8sCi0JCQkJQTExNDU1QTEyMTFGQ0U3RjAwQ0E5MzVCIC8qIHdhdGNob3MgKi8sCiAJ
CQkJNDEzMDc1OTcxREU4NEVENzAwMzlFQzY5IC8qIHdlYnJ0YyAqLywKIAkJCQk1M0YzQ0FBNTIw
NkM0NDNFMDA4NjQ5MEUgLyogTmV0d29ya0FjdGl2aXR5VHJhY2tlci5jcHAgKi8sCiAJCQkJNTM1
QkNCOTAyMDY5QzQ5QzAwQ0NDRTAyIC8qIE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIuaCAqLywKQEAg
LTcxODgsMTcgKzcxODEsNiBAQAogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKIAkJfTsKLQkJQTExNDU1QTEyMTFGQ0U3RjAwQ0E5MzVCIC8qIHdhdGNob3MgKi8g
PSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUExMTQ1NUFBMjEx
RkNGQ0EwMENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLmggKi8sCi0JCQkJQTEx
NDU1QUIyMTFGQ0ZDQTAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24ubW0gKi8s
Ci0JCQkJQTExNDU1QUUyMTFGRDI1MjAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2Vy
LmggKi8sCi0JCQkJQTExNDU1QUYyMTFGRDI1MjAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlN
YW5hZ2VyLm1tICovLAotCQkJKTsKLQkJCXBhdGggPSB3YXRjaG9zOwotCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKLQkJfTsKIAkJQTE4MkQ1QjExQkU2QkNGNDAwODdBN0NDIC8qIGlvcyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC05MzE5LDggKzkzMDEs
NiBAQAogCQkJCTUxNzk1NTZFMTYyODc3QjMwMEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTNBMTYzRDE2MzA4OEY2MDA1RDdEMjIgLyogTmV0d29y
a1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzE0MjZFRTFDMjNG
ODA5MDBENDExODMgLyogTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LmggaW4gSGVhZGVycyAqLywK
LQkJCQlBMTE0NTVBQzIxMUZDRkNBMDBDQTkzNUIgLyogTmV0d29ya1Byb3hpbWl0eUFzc2VydGlv
bi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTExNDU1QjAyMTFGRDI1MjAwQ0E5MzVCIC8qIE5ldHdv
cmtQcm94aW1pdHlNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUZEMThCNjE2NTFGQkFE
MDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
MTUyNTUxQjE3MDExODE5MDAzRDdBREIgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxMjQwRUMwMjIwQjY5NEMwMDVDRkM2MyAvKiBOZXR3b3Jr
UmVzb3VyY2VMb2FkTWFwLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiNzgyNDIwMGYzZDQ3ZDIxYjUxNmNiYzUwMWYz
M2EyMzUxYzRjNTMzLi5mYWE3ZjA0NWQyOGRhNTExMmExMDZhOTJiNTIxNmRmMTZkOGIwM2UyIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTktMDMtMjQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisg
ICAgICAgIFt3YXRjaE9TXSBSZW1vdmUgdW51c2VkIFByb3hpbWl0eSBOZXR3b3JraW5nIGNvZGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjE4OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbToK
KyAgICAgICAgKFRFU1QpOgorCiAyMDE5LTAzLTIzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIGNoZWNrLXdlYmtpdC1zdHls
ZSBkb2Vzbid0IGNvbXBsYWluIGFib3V0IGlkZW50aWZpZXJzIHdpdGggdW5kZXJzY29yZXMgaW4g
ZmlsZXMgdW5kZXIgZ2xpYiwgZ3RrIG9yIHdwZSBkaXJzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5tbQppbmRleCA0ZWRlNWZiNjZiYmVhZDFiYWMwMzYyNWJkNTNjNDgyZTM1NThk
YThhLi4yOGM4NDQ4Yzk2MzExN2NlNjQyN2NjY2FjZDNmNmE5ZmFiMGY0YjFhIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KQEAgLTY2LDkgKzY2LDYgQEAgVEVTVChXS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiwgQ29weSkKICAgICBFWFBFQ1RfRVEoW2NvbmZpZ3VyYXRp
b24gaWdub3JlU3luY2hyb25vdXNNZXNzYWdpbmdUaW1lb3V0c0ZvclRlc3RpbmddLCBbY29weSBp
Z25vcmVTeW5jaHJvbm91c01lc3NhZ2luZ1RpbWVvdXRzRm9yVGVzdGluZ10pOwogICAgIEVYUEVD
VF9FUShbY29uZmlndXJhdGlvbiBhdHRyU3R5bGVFbmFibGVkXSwgW2NvcHkgYXR0clN0eWxlRW5h
YmxlZF0pOwogICAgIEVYUEVDVF9UUlVFKFtbY29uZmlndXJhdGlvbiBhZGRpdGlvbmFsUmVhZEFj
Y2Vzc0FsbG93ZWRVUkxzXSBpc0VxdWFsOltjb3B5IGFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dl
ZFVSTHNdXSk7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElPU19GQU1J
TFlfU0lNVUxBVE9SKQotICAgIEVYUEVDVF9FUShbY29uZmlndXJhdGlvbiB3aXJlbGVzc0NvbnRl
eHRJZGVudGlmaWVyXSwgW2NvcHkgd2lyZWxlc3NDb250ZXh0SWRlbnRpZmllcl0pOwotI2VuZGlm
CiAgICAgRVhQRUNUX0VRKFtjb25maWd1cmF0aW9uIGRpc2tDYWNoZVNpemVPdmVycmlkZV0sIFtj
b3B5IGRpc2tDYWNoZVNpemVPdmVycmlkZV0pOwogICAgIEVYUEVDVF9UUlVFKFtbY29uZmlndXJh
dGlvbiBjYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lc10gaXNFcXVhbDpbY29weSBjYWNoZVBhcnRp
dGlvbmVkVVJMU2NoZW1lc11dKTsKICAgICBFWFBFQ1RfVFJVRShbW2NvbmZpZ3VyYXRpb24gYWx3
YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzXSBpc0VxdWFsOltjb3B5IGFsd2F5c1JldmFsaWRhdGVk
VVJMU2NoZW1lc11dKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365833</attachid>
            <date>2019-03-24 09:36:18 -0700</date>
            <delta_ts>2019-03-24 13:42:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196188-20190324093617.patch</filename>
            <type>text/plain</type>
            <size>60195</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg4NGQ4ODQxOGNhMGZjNjZlZmNmMWVh
NGU4MTRmMDU4ZDExNTlmYjkuLmEzMDE2ZTQ5N2M3MDJlOWNkYzdhNzgyNjA4ZTliYjRiYzFmMmNl
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMDMtMjQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFt3YXRjaE9TXSBSZW1vdmUgdW51c2VkIFByb3hpbWl0eSBO
ZXR3b3JraW5nIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NjE4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL0ZlYXR1cmVEZWZpbmVzLmg6CisKIDIwMTktMDMtMjIgIEtlaXRoIFJvbGxp
biAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSBUaGluTFRPIHN1cHBvcnQg
aW4gUHJvZHVjdGlvbiBidWlsZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMGE1MDJkNWQyZDAxYzE4YzNlMGZiNzc3
ODNiYzY0Y2RhNDY0OWIzMi4uOGQ4OTExNWU3NzBhODVhMzhhNWYzMDgyYzAyZWY4ZGE4YjRlMzg5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxOS0wMy0yNCAgQW5keSBFc3RlcyAgPGFl
c3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW3dhdGNoT1NdIFJlbW92ZSB1bnVzZWQgUHJveGlt
aXR5IE5ldHdvcmtpbmcgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk2MTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9XZWJLaXQueGNjb25maWc6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6TmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVByZXBhcmVUb1N1c3BlbmQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Qcm9jZXNzRGlkUmVzdW1lKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtUHJvY2Vzc0RpZFRyYW5zaXRp
b25Ub0JhY2tncm91bmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZv
cm1Qcm9jZXNzRGlkVHJhbnNpdGlvblRvRm9yZWdyb3VuZCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLmg6IFJlbW92ZWQuCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLm1t
OiBSZW1vdmVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dhdGNob3MvTmV0d29ya1Byb3hp
bWl0eU1hbmFnZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93YXRjaG9z
L05ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLm1tOiBSZW1vdmVkLgorICAgICAgICAqIFNvdXJjZXND
b2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5tbToKKyAgICAgICAgKC1bX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHdpcmVs
ZXNzQ29udGV4dElkZW50aWZpZXJdKToKKyAgICAgICAgKC1bX1dLUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIHNldFdpcmVsZXNzQ29udGV4dElkZW50aWZpZXI6XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMDMtMjMgIEFuZHkgRXN0
ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtBcHBsZSBQYXldIFJlbW92ZSB0aGUg
QXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzIHN5bmNocm9ub3VzIG1lc3NhZ2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmggYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJl
RGVmaW5lcy5oCmluZGV4IGUyNjk4ZjZkZmVjMzhlOTNhMDg2MjlhMjI4ZDIxODEzMDkxMDJhNjEu
LmM0MDY5YWNlZWExMmVmYWI2NGUxYmQyOTQ2ZDVlZmU4N2EyZGY4M2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKKysrIGIvU291cmNlL1dURi93dGYvRmVhdHVy
ZURlZmluZXMuaApAQCAtMTk4LDEyICsxOTgsNiBAQCB0aGUgcHVibGljIGlPUyBTREsuIFNlZSA8
aHR0cHM6Ly93ZWJraXQub3JnL2IvMTc5MTY3Pi4gKi8KIC8qIC0tLS0tLS0tLSBBcHBsZSBXQVRD
SE9TIHBvcnQgLS0tLS0tLS0tICovCiAjaWYgUExBVEZPUk0oV0FUQ0hPUykKIAotI2lmICFkZWZp
bmVkKEVOQUJMRV9QUk9YSU1JVFlfTkVUV09SS0lORykKLSNpZiAhVEFSR0VUX09TX1NJTVVMQVRP
UiAmJiBfX1dBVENIX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgNjAwMDAKLSNkZWZpbmUgRU5B
QkxFX1BST1hJTUlUWV9ORVRXT1JLSU5HIDEKLSNlbmRpZgotI2VuZGlmCi0KICNlbmRpZiAvKiBQ
TEFURk9STShXQVRDSE9TKSAqLwogCiAvKiAtLS0tLS0tLS0gQXBwbGUgTUFDIHBvcnQgKG5vdCBJ
T1MpIC0tLS0tLS0tLSAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9u
cy9XZWJLaXQueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54
Y2NvbmZpZwppbmRleCA0NzliZDZkNWI4OGIyZWFiMWFjNTk4ODZjNjc4ODgzZDg5NzY5ZDk1Li5l
OGU3N2Y3Yzc1NzZiOWU5YTRhNTFiMDdkOTY3NTgwYWM5ZDZiODY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZwpAQCAtMTA1LDkgKzEwNSw2IEBAIFdL
X1BERktJVF9MREZMQUdTX2lwaG9uZW9zW3Nkaz1pcGhvbmUqMTEuKl0gPSA7CiBXS19QREZLSVRf
TERGTEFHU19pcGhvbmVzaW11bGF0b3IgPSAkKFdLX1BERktJVF9MREZMQUdTX2lwaG9uZW9zKTsK
IFdLX1BERktJVF9MREZMQUdTX2lwaG9uZXNpbXVsYXRvcltzZGs9aXBob25lKjExLipdID0gOwog
Ci1XS19QUk9YSU1JVFlfTkVUV09SS0lOR19MREZMQUdTID0gJChXS19QUk9YSU1JVFlfTkVUV09S
S0lOR19MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOwotV0tfUFJPWElNSVRZX05FVFdPUktJ
TkdfTERGTEFHU193YXRjaG9zID0gLWZyYW1ld29yayBJRFMgLWZyYW1ld29yayBNb2JpbGVXaUZp
IC1mcmFtZXdvcmsgU3lzdGVtQ29uZmlndXJhdGlvbiAtZnJhbWV3b3JrIFdpcmVsZXNzQ29leE1h
bmFnZXI7Ci0KIFdLX1NBRkVfQlJPV1NJTkdfTERGTEFHUyA9ICQoV0tfU0FGRV9CUk9XU0lOR19M
REZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOwogV0tfU0FGRV9CUk9XU0lOR19MREZMQUdTX2lw
aG9uZW9zID0gLWZyYW1ld29yayBTYWZhcmlTYWZlQnJvd3Npbmc7CiBXS19TQUZFX0JST1dTSU5H
X0xERkxBR1NfaXBob25lb3Nbc2RrPWlwaG9uZSoxMC4qXSA9IDsKQEAgLTEzMCw3ICsxMjcsNyBA
QCBXS19VUkxfRk9STUFUVElOR19MREZMQUdTX1lFUyA9IC1mcmFtZXdvcmsgVVJMRm9ybWF0dGlu
ZzsKIFdLX1dFQklOU1BFQ1RPUlVJX0xERkxBR1MgPSAkKFdLX1dFQklOU1BFQ1RPUlVJX0xERkxB
R1NfJChXS19QTEFURk9STV9OQU1FKSk7CiBXS19XRUJJTlNQRUNUT1JVSV9MREZMQUdTX21hY29z
eCA9IC13ZWFrX2ZyYW1ld29yayBXZWJJbnNwZWN0b3JVSTsKIAotRlJBTUVXT1JLX0FORF9MSUJS
QVJZX0xERkxBR1MgPSAtbG9iamMgLWZyYW1ld29yayBDRk5ldHdvcmsgLWZyYW1ld29yayBDb3Jl
QXVkaW8gLWZyYW1ld29yayBDb3JlRm91bmRhdGlvbiAtZnJhbWV3b3JrIENvcmVHcmFwaGljcyAt
ZnJhbWV3b3JrIENvcmVUZXh0IC1mcmFtZXdvcmsgRm91bmRhdGlvbiAtZnJhbWV3b3JrIEltYWdl
SU8gLWZyYW1ld29yayBJT0tpdCAtZnJhbWV3b3JrIFdlYktpdExlZ2FjeSAtbG5ldHdvcmsgJChX
S19BQ0NFU1NJQklMSVRZX0xERkxBR1MpICQoV0tfQVBQS0lUX0xERkxBR1MpICQoV0tfQVNTRVJU
SU9OX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfQ0FSQk9OX0xERkxBR1MpICQoV0tfQ09SRV9QREZf
TERGTEFHUykgJChXS19DT1JFX1BSRURJQ1RJT05fTERGTEFHUykgJChXS19DT1JFX1NFUlZJQ0VT
X0xERkxBR1MpICQoV0tfREVWSUNFX0lERU5USVRZX0xERkxBR1MpICQoV0tfR1JBUEhJQ1NfU0VS
VklDRVNfTERGTEFHUykgJChXS19JT1NVUkZBQ0VfTERGTEFHUykgJChXS19MSUJTQU5EQk9YX0xE
RkxBR1MpICQoV0tfTElCV0VCUlRDX0xERkxBR1MpICQoV0tfTU9CSUxFX0NPUkVfU0VSVklDRVNf
TERGTEFHUykgJChXS19NT0JJTEVfR0VTVEFMVF9MREZMQUdTKSAkKFdLX09QRU5HTF9MREZMQUdT
KSAkKFdLX1BERktJVF9MREZMQUdTKSAkKFdLX1BST1hJTUlUWV9ORVRXT1JLSU5HX0xERkxBR1Mp
ICQoV0tfU0FGRV9CUk9XU0lOR19MREZMQUdTKSAkKFdLX1NFQ1VSSVRZX0lOVEVSRkFDRV9MREZM
QUdTKSAkKFdLX1VJS0lUX0xERkxBR1MpICQoV0tfVVJMX0ZPUk1BVFRJTkdfTERGTEFHUykgJChX
S19XRUJJTlNQRUNUT1JVSV9MREZMQUdTKTsKK0ZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdT
ID0gLWxvYmpjIC1mcmFtZXdvcmsgQ0ZOZXR3b3JrIC1mcmFtZXdvcmsgQ29yZUF1ZGlvIC1mcmFt
ZXdvcmsgQ29yZUZvdW5kYXRpb24gLWZyYW1ld29yayBDb3JlR3JhcGhpY3MgLWZyYW1ld29yayBD
b3JlVGV4dCAtZnJhbWV3b3JrIEZvdW5kYXRpb24gLWZyYW1ld29yayBJbWFnZUlPIC1mcmFtZXdv
cmsgSU9LaXQgLWZyYW1ld29yayBXZWJLaXRMZWdhY3kgLWxuZXR3b3JrICQoV0tfQUNDRVNTSUJJ
TElUWV9MREZMQUdTKSAkKFdLX0FQUEtJVF9MREZMQUdTKSAkKFdLX0FTU0VSVElPTl9TRVJWSUNF
U19MREZMQUdTKSAkKFdLX0NBUkJPTl9MREZMQUdTKSAkKFdLX0NPUkVfUERGX0xERkxBR1MpICQo
V0tfQ09SRV9QUkVESUNUSU9OX0xERkxBR1MpICQoV0tfQ09SRV9TRVJWSUNFU19MREZMQUdTKSAk
KFdLX0RFVklDRV9JREVOVElUWV9MREZMQUdTKSAkKFdLX0dSQVBISUNTX1NFUlZJQ0VTX0xERkxB
R1MpICQoV0tfSU9TVVJGQUNFX0xERkxBR1MpICQoV0tfTElCU0FOREJPWF9MREZMQUdTKSAkKFdL
X0xJQldFQlJUQ19MREZMQUdTKSAkKFdLX01PQklMRV9DT1JFX1NFUlZJQ0VTX0xERkxBR1MpICQo
V0tfTU9CSUxFX0dFU1RBTFRfTERGTEFHUykgJChXS19PUEVOR0xfTERGTEFHUykgJChXS19QREZL
SVRfTERGTEFHUykgJChXS19TQUZFX0JST1dTSU5HX0xERkxBR1MpICQoV0tfU0VDVVJJVFlfSU5U
RVJGQUNFX0xERkxBR1MpICQoV0tfVUlLSVRfTERGTEFHUykgJChXS19VUkxfRk9STUFUVElOR19M
REZMQUdTKSAkKFdLX1dFQklOU1BFQ1RPUlVJX0xERkxBR1MpOwogCiAvLyBQcmV2ZW50IEMrKyBz
dGFuZGFyZCBsaWJyYXJ5IGJhc2ljX3N0cmluZ3N0cmVhbSwgb3BlcmF0b3IgbmV3LCBkZWxldGUg
YW5kIHRoZWlyIHJlbGF0ZWQgZXhjZXB0aW9uIHR5cGVzIGZyb20gYmVpbmcgZXhwb3J0ZWQgYXMg
d2VhayBzeW1ib2xzLgogVU5FWFBPUlRFRF9TWU1CT0xfTERGTEFHUyA9IC1XbCwtdW5leHBvcnRl
ZF9zeW1ib2wgLVdsLF9fWlRJU3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVds
LF9fWlRJU3Q5ZXhjZXB0aW9uIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRTU3Q5YmFk
X2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRTU3Q5ZXhjZXB0aW9uIC1XbCwt
dW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWmRsUHZTXyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1X
bCxfX1pud21QdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pud20gLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0
aW9uRUVFQzJFT1M0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0
aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVDMUVPUzRfIC1XbCwtdW5leHBvcnRlZF9z
eW1ib2wgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVF
RWFTRURuIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5LU3QzX18xOGZ1bmN0aW9uSUZ2
TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVjbEVTMl8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAt
V2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFNHN3YXBF
UlM0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdX
ZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVDMUVSS1M0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1X
bCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVDMkVSS1M0
XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJD
b3JlMTJQb2xpY3lBY3Rpb25FRUVEMUV2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5T
dDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRUQyRXYgLVdsLC11bmV4
cG9ydGVkX3N5bWJvbCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5
QWN0aW9uRUVFYVNFUktTNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVFZOU3QzX18x
MTdiYWRfZnVuY3Rpb25fY2FsbEUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVENOU3Qz
X18xMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRv
ckljRUVFRTBfTlNfMTNiYXNpY19pc3RyZWFtSWNTMl9FRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9s
IC1XbCxfX1pUQ05TdDNfXzExOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0lj
RUVOU185YWxsb2NhdG9ySWNFRUVFMF9OU18xNGJhc2ljX2lvc3RyZWFtSWNTMl9FRSAtV2wsLXVu
ZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUQ05TdDNfXzExOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNf
MTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFMTZfTlNfMTNiYXNpY19vc3RyZWFt
SWNTMl9FRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUVE5TdDNfXzExOGJhc2ljX3N0
cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFIC1XbCwt
dW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRWTlN0M19fMTE1YmFzaWNfc3RyaW5nYnVmSWNOU18x
MWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUgLVdsLC11bmV4cG9ydGVkX3N5bWJv
bCAtV2wsX19aVFZOU3QzX18xMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJ
Y0VFTlNfOWFsbG9jYXRvckljRUVFRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUQ05T
dDNfXzExOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2Nh
dG9ySWNFRUVFOF9OU18xM2Jhc2ljX29zdHJlYW1JY1MyX0VFOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBiNWI3YmVjMDQxMWY1Yjdh
OGRjNjhmZTc2YmQzZjRkY2EyMzA5NmY5Li43M2YxYjQ4Mzc2OWViZGRjZWY5YmQ0YjdmNGVjMTAz
YWM1YTlmNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0
ZWdpZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKLSNpbmNs
dWRlICJOZXR3b3JrUHJveGltaXR5TWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaCIKQEAgLTE0NSw5ICsxNDQsNiBAQCBOZXR3b3Jr
UHJvY2Vzczo6TmV0d29ya1Byb2Nlc3MoQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFy
YW1ldGVycyYmIHBhcmFtZQogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkKICAgICBM
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6Om5ldHdvcmtQcm9jZXNzQ3JlYXRlZCgqdGhpcyk7
CiAjZW5kaWYKLSNpZiBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCi0gICAgYWRkU3VwcGxl
bWVudDxOZXR3b3JrUHJveGltaXR5TWFuYWdlcj4oKTsKLSNlbmRpZgogCiAjaWYgVVNFKFNPVVAp
CiAgICAgRE5TUmVzb2x2ZVF1ZXVlU291cDo6c2V0R2xvYmFsRGVmYXVsdE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbkFjY2Vzc29yKFt0aGlzXSgpIC0+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgewpAQCAt
MTgzLDEzICsxNzksNiBAQCBEb3dubG9hZE1hbmFnZXImIE5ldHdvcmtQcm9jZXNzOjpkb3dubG9h
ZE1hbmFnZXIoKQogICAgIHJldHVybiBtX2Rvd25sb2FkTWFuYWdlcjsKIH0KIAotI2lmIEVOQUJM
RShQUk9YSU1JVFlfTkVUV09SS0lORykKLU5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyJiBOZXR3b3Jr
UHJvY2Vzczo6cHJveGltaXR5TWFuYWdlcigpCi17Ci0gICAgcmV0dXJuICpzdXBwbGVtZW50PE5l
dHdvcmtQcm94aW1pdHlNYW5hZ2VyPigpOwotfQotI2VuZGlmCi0KIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnJlbW92ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQogewogICAgIGF1dG8gY291bnQgPSBtX3dlYlByb2Nl
c3NDb25uZWN0aW9ucy5yZW1vdmVBbGxNYXRjaGluZyhbJl0gKGNvbnN0IGF1dG8mIGMpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBjYzI2
OGRjYjAxNTc2YjJjYTJlNGM1NmE5ODRkN2IzY2I1YTQ3MTM1Li41MjlmODc5MjIwZjZlNTFhMzQw
ZWU0Yjc2M2EyMDIzMWE3NDY3ZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0xNTQsOSArMTU0LDYgQEAgcHVibGljOgogCiAgICAgQXV0
aGVudGljYXRpb25NYW5hZ2VyJiBhdXRoZW50aWNhdGlvbk1hbmFnZXIoKTsKICAgICBEb3dubG9h
ZE1hbmFnZXImIGRvd25sb2FkTWFuYWdlcigpOwotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09S
S0lORykKLSAgICBOZXR3b3JrUHJveGltaXR5TWFuYWdlciYgcHJveGltaXR5TWFuYWdlcigpOwot
I2VuZGlmCiAKICAgICBOZXR3b3JrQ2FjaGU6OkNhY2hlKiBjYWNoZSgpIHsgcmV0dXJuIG1fY2Fj
aGUuZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCBhYjUx
OTU5YTQ4N2U3ODQ2NTBmMWQ5Yjg4ZjViMjE4YjU1NWI4MDIyLi5lZDMxOTk3NWQ4NmQ1M2NlY2E3
OGZmNTYzODQ4NjIyYmJkZGY1ZjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cApAQCAtODUsMTAgKzg1LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
czo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHVy
bFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IHVybFNjaGVt
ZXNSZWdpc3RlcmVkQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdDsKIAotI2lmIEVOQUJMRShQ
Uk9YSU1JVFlfTkVUV09SS0lORykKLSAgICBlbmNvZGVyIDw8IHdpcmVsZXNzQ29udGV4dElkZW50
aWZpZXI7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBlbmNvZGVy
IDw8IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPDwgc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA8PCB1cmxTY2hlbWVzU2VydmljZVdv
cmtlcnNDYW5IYW5kbGUgPDwgc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWlu
YXRpb25EZWxheTsKICNlbmRpZgpAQCAtMTk1LDExICsxOTEsNiBAQCBib29sIE5ldHdvcmtQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBOZXR3
b3JrUHJvYwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnVybFNjaGVtZXNSZWdpc3Rl
cmVkQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKLSAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC53aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCAw
YWExYWJkM2ZmOWZmZDgyZmM3MjgxODU4OTM2YzFjZDk4ZmQxZjBlLi4wZjFmNDQwNzEwN2U4ZDMz
NjhmMzIwMzI2Y2Y3YzllNDEwYjNiMmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
CkBAIC0xMDAsMTAgKzEwMCw2IEBAIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyB7CiAgICAgVmVjdG9yPFN0cmluZz4gdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NhbkRpc3Bs
YXlPbmx5SWZDYW5SZXF1ZXN0OwogICAgIFZlY3RvcjxTdHJpbmc+IHVybFNjaGVtZXNSZWdpc3Rl
cmVkQXNDT1JTRW5hYmxlZDsKIAotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKLSAg
ICB1bnNpZ25lZCB3aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyIHsgMCB9OwotI2VuZGlmCi0KICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgU3RyaW5nIHNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgK
aW5kZXggMmNlNjc3ZGJhMTlkNDgyYzJhMjViZjE0ZGY0MjM5ZDkzMGJjMGNmZC4uOTY1YzZmYTY2
NGJjZDE1NWY3NmNkYjNiNGQ3MzI2ZWVlMDNlOTE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaApAQCAt
MjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtBY3Rpdml0eVRyYWNrZXIuaCIKICNpbmNs
dWRlICJOZXR3b3JrRGF0YVRhc2suaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZFBhcmFtZXRlcnMu
aCIKLSNpbmNsdWRlICJOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9OZXR3b3JrTG9hZE1ldHJpY3MuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAK
QEAgLTczLDE0ICs3Miw2IEBAIHB1YmxpYzoKICAgICB1aW50NjRfdCBmcmFtZUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9mcmFtZUlEOyB9OwogICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFnZUlEOyB9OwogCi0jaWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQotICAg
IHZvaWQgaG9sZFByb3hpbWl0eUFzc2VydGlvbihOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uJiBh
c3NlcnRpb24pCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fcHJveGltaXR5QXNzZXJ0aW9uVG9r
ZW4pOwotICAgICAgICBtX3Byb3hpbWl0eUFzc2VydGlvblRva2VuLmVtcGxhY2UoYXNzZXJ0aW9u
KTsKLSAgICB9Ci0jZW5kaWYKLQogICAgIFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJy
aWRlOwogCiBwcml2YXRlOgpAQCAtMTA3LDEwICs5OCw2IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBib29sIG1faGFzQmVlblNldFRvVXNlU3Rh
dGVsZXNzQ29va2llU3RvcmFnZSB7IGZhbHNlIH07CiAjZW5kaWYKLQotI2lmIEVOQUJMRShQUk9Y
SU1JVFlfTkVUV09SS0lORykKLSAgICBPcHRpb25hbDxOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9u
OjpUb2tlbj4gbV9wcm94aW1pdHlBc3NlcnRpb25Ub2tlbjsKLSNlbmRpZgogfTsKIAogV2ViQ29y
ZTo6Q3JlZGVudGlhbCBzZXJ2ZXJUcnVzdENyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IDVjZGQzMTY1MjM2
NzBmNzRkNjhlNzJhN2YwOTBiMTdkNmE5YmRjMDguLjFkMGE1OWY3OGM2NDIzYzQ3ZTlhNzYxZTg1
MDIyYzhiODJjN2JjNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtMzIsNyArMzIsNiBAQAog
I2ltcG9ydCAiRG93bmxvYWRQcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAj
aW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgotI2ltcG9ydCAiTmV0d29ya1Byb3hpbWl0eU1hbmFn
ZXIuaCIKICNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uQ29jb2EuaCIKICNpbXBvcnQgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oPgpAQCAtMjAwLDkgKzE5OSw2IEBAIE5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0
YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUCiAKICAgICBO
U1VSTFJlcXVlc3QgKm5zUmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhU
VFBCb2R5VXBkYXRlUG9saWN5OjpVcGRhdGVIVFRQQm9keSk7CiAgICAgYXBwbHlTbmlmZmluZ1Bv
bGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKG5zUmVxdWVzdCwgc2hvdWxk
Q29udGVudFNuaWZmID09IFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeTo6U25pZmZDb250
ZW50ICYmICF1cmwuaXNMb2NhbEZpbGUoKSwgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYgPT0g
V2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3k6OlNuaWZmKTsKLSNpZiBFTkFC
TEUoUFJPWElNSVRZX05FVFdPUktJTkcpCi0gICAgbV9zZXNzaW9uLT5uZXR3b3JrUHJvY2Vzcygp
LnByb3hpbWl0eU1hbmFnZXIoKS5hcHBseVByb3BlcnRpZXMocmVxdWVzdCwgKnRoaXMsIG5zUmVx
dWVzdCk7Ci0jZW5kaWYKIAogICAgIGF1dG8mIGNvY29hU2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5l
dHdvcmtTZXNzaW9uQ29jb2EmPihtX3Nlc3Npb24uZ2V0KCkpOwogICAgIGlmIChzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSA9PSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQ
cm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtQcm9jZXNzQ29jb2EubW0KaW5kZXggNzBiMzljOWE3YmM0YTU4ZDcxZGU1NWE1NzU2ZTZkZjA5
ZTUxOGU4YS4uNWFlNDlmNmM5MmRiY2M3OThhZjYxMWJkOGI0MTY2NDA3OWZjMWVjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0Nv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1By
b2Nlc3NDb2NvYS5tbQpAQCAtMzAsNyArMzAsNiBAQAogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2lt
cG9ydCAiTmV0d29ya0NhY2hlLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oIgotI2ltcG9ydCAiTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIuaCIKICNpbXBvcnQg
Ik5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2ltcG9ydCAiTmV0d29ya1Nlc3Npb25Db2NvYS5o
IgogI2ltcG9ydCAiU2FuZGJveEV4dGVuc2lvbi5oIgpAQCAtMjQ3LDMyICsyNDYsMTkgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1TeW5jQWxsQ29va2llcyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGkKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1QcmVw
YXJlVG9TdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSNpZiBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCi0gICAgcHJveGltaXR5TWFu
YWdlcigpLnN1c3BlbmQoU3VzcGVuc2lvblJlYXNvbjo6UHJvY2Vzc1N1c3BlbmRpbmcsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSNlbHNlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
LSNlbmRpZgogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVByb2Nlc3NEaWRSZXN1
bWUoKQogewotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKLSAgICBwcm94aW1pdHlN
YW5hZ2VyKCkucmVzdW1lKFJlc3VtcHRpb25SZWFzb246OlByb2Nlc3NSZXN1bWluZyk7Ci0jZW5k
aWYKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Qcm9jZXNzRGlkVHJhbnNpdGlv
blRvQmFja2dyb3VuZCgpCiB7Ci0jaWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQotICAg
IHByb3hpbWl0eU1hbmFnZXIoKS5zdXNwZW5kKFN1c3BlbnNpb25SZWFzb246OlByb2Nlc3NCYWNr
Z3JvdW5kaW5nLCBbXSB7IH0pOwotI2VuZGlmCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBs
YXRmb3JtUHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0ZvcmVncm91bmQoKQogewotI2lmIEVOQUJMRShQ
Uk9YSU1JVFlfTkVUV09SS0lORykKLSAgICBwcm94aW1pdHlNYW5hZ2VyKCkucmVzdW1lKFJlc3Vt
cHRpb25SZWFzb246OlByb2Nlc3NGb3JlZ3JvdW5kaW5nKTsKLSNlbmRpZgogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dhdGNob3MvTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbi5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA5MTEwNzEyNGY1MDZhYTc5NTA1NDBiYTFlOWNlOTcwMjEzODE2
ZjA5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9u
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQotCi0jaW5jbHVkZSAiTW9i
aWxlV2lGaVNQSS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KLSNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLU9CSkNfQ0xBU1Mg
SURTU2VydmljZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWVudW0gY2xhc3MgUmVzdW1wdGlv
blJlYXNvbiA6IHVpbnQ4X3Q7Ci1lbnVtIGNsYXNzIFN1c3BlbnNpb25SZWFzb24gOiB1aW50OF90
OwotCi1jbGFzcyBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uIHsKLSAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uKTsKLXB1YmxpYzoKLSAgICBjbGFzcyBU
b2tlbiB7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRva2VuKTsKLSAgICBwdWJsaWM6
Ci0gICAgICAgIGV4cGxpY2l0IFRva2VuKE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24mIGFzc2Vy
dGlvbikKLSAgICAgICAgICAgIDogbV9hc3NlcnRpb24geyBhc3NlcnRpb24gfQotICAgICAgICB7
Ci0gICAgICAgICAgICBtX2Fzc2VydGlvbi5ob2xkKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB+
VG9rZW4oKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX2Fzc2VydGlvbi5yZWxlYXNlKCk7Ci0g
ICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIE5ldHdvcmtQcm94aW1pdHlBc3NlcnRp
b24mIG1fYXNzZXJ0aW9uOwotICAgIH07Ci0KLSAgICB2b2lkIHJlc3VtZShSZXN1bXB0aW9uUmVh
c29uKTsKLSAgICB2b2lkIHN1c3BlbmQoU3VzcGVuc2lvblJlYXNvbiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKLQotcHJvdGVjdGVkOgotICAgIE5ldHdvcmtQcm94aW1pdHlBc3NlcnRp
b24oKTsKLSAgICB2aXJ0dWFsIH5OZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uKCkgPSBkZWZhdWx0
OwotCi0gICAgYm9vbCBtX2lzSG9sZGluZ0Fzc2VydGlvbiB7IGZhbHNlIH07Ci0KLXByaXZhdGU6
Ci0gICAgZW51bSBjbGFzcyBTdGF0ZSB7Ci0gICAgICAgIEJhY2tncm91bmRlZCwgLy8gQ2FuIGhv
bGQgYXNzZXJ0aW9ucyB1bnRpbCBtX3N1c3BlbmRBZnRlckJhY2tncm91bmRpbmdUaW1lciBmaXJl
cy4KLSAgICAgICAgUmVzdW1lZCwgLy8gQ2FuIGhvbGQgYXNzZXJ0aW9ucyBhdCBhbnkgdGltZS4K
LSAgICAgICAgU3VzcGVuZGVkLCAvLyBDYW4gbm90IGhvbGQgYXNzZXJ0aW9ucy4KLSAgICB9Owot
Ci0gICAgdmlydHVhbCB2b2lkIGhvbGROb3coKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlbGVh
c2VOb3coKSA9IDA7Ci0KLSAgICB2b2lkIGhvbGQoKTsKLSAgICB2b2lkIHJlbGVhc2UoKTsKLSAg
ICB2b2lkIHJlbGVhc2VUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBzdXNwZW5kQWZ0ZXJCYWNrZ3Jv
dW5kaW5nVGltZXJGaXJlZCgpOwotICAgIHZvaWQgc3VzcGVuZE5vdygpOwotCi0gICAgdWludDY0
X3QgbV9hc3NlcnRpb25Db3VudCB7IDAgfTsKLSAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlN1
c3BlbmRlZCB9OwotICAgIFdlYkNvcmU6OkRlZmVycmFibGVPbmVTaG90VGltZXIgbV9yZWxlYXNl
VGltZXI7Ci0gICAgV2ViQ29yZTo6RGVmZXJyYWJsZU9uZVNob3RUaW1lciBtX3N1c3BlbmRBZnRl
ckJhY2tncm91bmRpbmdUaW1lcjsKLX07Ci0KLWNsYXNzIEJsdWV0b290aFByb3hpbWl0eUFzc2Vy
dGlvbiBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uIHsKLXB1YmxpYzoK
LSAgICBleHBsaWNpdCBCbHVldG9vdGhQcm94aW1pdHlBc3NlcnRpb24oSURTU2VydmljZSAqKTsK
LQotICAgIHZvaWQgc3VzcGVuZChTdXNwZW5zaW9uUmVhc29uLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwotCi1wcml2YXRlOgotICAgIHZvaWQgaG9sZE5vdygpIG92ZXJyaWRlOwotICAg
IHZvaWQgcmVsZWFzZU5vdygpIG92ZXJyaWRlOwotCi0gICAgUmV0YWluUHRyPElEU1NlcnZpY2U+
IG1faWRzU2VydmljZTsKLX07Ci0KLWNsYXNzIFdpRmlQcm94aW1pdHlBc3NlcnRpb24gZmluYWwg
OiBwdWJsaWMgTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbiB7Ci1wdWJsaWM6Ci0gICAgV2lGaVBy
b3hpbWl0eUFzc2VydGlvbigpOwotCi1wcml2YXRlOgotICAgIHZvaWQgaG9sZE5vdygpIG92ZXJy
aWRlOwotICAgIHZvaWQgcmVsZWFzZU5vdygpIG92ZXJyaWRlOwotCi0gICAgUmV0YWluUHRyPFdp
RmlNYW5hZ2VyQ2xpZW50UmVmPiBtX3dpRmlNYW5hZ2VyQ2xpZW50OwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dhdGNob3MvTmV0d29ya1By
b3hpbWl0eUFzc2VydGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2F0Y2hv
cy9OZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3MjIzYTUzYjkzOTNjODFkYmE1MjUzNTQxN2RhYzhiMjlmYjRkMDNjLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLm1tCisrKyAvZGV2L251
bGwKQEAgLTEsMjQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNp
bXBvcnQgIk5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24uaCIKLQotI2lmIEVOQUJMRShQUk9YSU1J
VFlfTkVUV09SS0lORykKLQotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCAiTmV0d29ya1By
b2Nlc3MuaCIKLSNpbXBvcnQgIk5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLmgiCi0jaW1wb3J0IDxJ
RFMvSURTX1ByaXZhdGUuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotc3RhdGljIGF1dG8gYXNzZXJ0aW9uUmVsZWFzZURlbGF5QWZ0ZXJCYWNrZ3Jv
dW5kaW5nID0gMTBfczsKLXN0YXRpYyBhdXRvIGFzc2VydGlvblJlbGVhc2VEZWxheUZvckh5c3Rl
cmVzaXMgPSAxMF9zOwotCi1OZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uOjpOZXR3b3JrUHJveGlt
aXR5QXNzZXJ0aW9uKCkKLSAgICA6IG1fcmVsZWFzZVRpbWVyIHsgKnRoaXMsICZOZXR3b3JrUHJv
eGltaXR5QXNzZXJ0aW9uOjpyZWxlYXNlVGltZXJGaXJlZCwgYXNzZXJ0aW9uUmVsZWFzZURlbGF5
Rm9ySHlzdGVyZXNpcyB9Ci0gICAgLCBtX3N1c3BlbmRBZnRlckJhY2tncm91bmRpbmdUaW1lciB7
ICp0aGlzLCAmTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6c3VzcGVuZEFmdGVyQmFja2dyb3Vu
ZGluZ1RpbWVyRmlyZWQsIGFzc2VydGlvblJlbGVhc2VEZWxheUFmdGVyQmFja2dyb3VuZGluZyB9
Ci17Ci19Ci0KLXZvaWQgTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6aG9sZCgpCi17Ci0gICAg
KyttX2Fzc2VydGlvbkNvdW50OwotCi0gICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN1c3BlbmRl
ZCkgewotICAgICAgICBBU1NFUlQoIW1faXNIb2xkaW5nQXNzZXJ0aW9uKTsKLSAgICAgICAgQVNT
RVJUKCFtX3JlbGVhc2VUaW1lci5pc0FjdGl2ZSgpKTsKLSAgICAgICAgQVNTRVJUKCFtX3N1c3Bl
bmRBZnRlckJhY2tncm91bmRpbmdUaW1lci5pc0FjdGl2ZSgpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChtX3JlbGVhc2VUaW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIEFT
U0VSVChtX2lzSG9sZGluZ0Fzc2VydGlvbik7Ci0gICAgICAgIG1fcmVsZWFzZVRpbWVyLnN0b3Ao
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChtX2Fzc2VydGlvbkNvdW50ID09
IDEpIHsKLSAgICAgICAgQVNTRVJUKCFtX2lzSG9sZGluZ0Fzc2VydGlvbik7Ci0gICAgICAgIGhv
bGROb3coKTsKLSAgICB9Ci0KLSAgICBBU1NFUlQobV9pc0hvbGRpbmdBc3NlcnRpb24pOwotfQot
Ci12b2lkIE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb246OnJlbGVhc2UoKQotewotICAgIEFTU0VS
VChtX2Fzc2VydGlvbkNvdW50KTsKLSAgICBpZiAoIW1fYXNzZXJ0aW9uQ291bnQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIC0tbV9hc3NlcnRpb25Db3VudDsKLQotICAgIGlmIChtX3N0YXRlID09
IFN0YXRlOjpTdXNwZW5kZWQpIHsKLSAgICAgICAgQVNTRVJUKCFtX2lzSG9sZGluZ0Fzc2VydGlv
bik7Ci0gICAgICAgIEFTU0VSVCghbV9yZWxlYXNlVGltZXIuaXNBY3RpdmUoKSk7Ci0gICAgICAg
IEFTU0VSVCghbV9zdXNwZW5kQWZ0ZXJCYWNrZ3JvdW5kaW5nVGltZXIuaXNBY3RpdmUoKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQobV9pc0hvbGRpbmdBc3NlcnRpb24p
OwotICAgIEFTU0VSVCghbV9yZWxlYXNlVGltZXIuaXNBY3RpdmUoKSk7Ci0gICAgaWYgKCFtX2Fz
c2VydGlvbkNvdW50KQotICAgICAgICBtX3JlbGVhc2VUaW1lci5yZXN0YXJ0KCk7Ci19Ci0KLXZv
aWQgTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6cmVzdW1lKFJlc3VtcHRpb25SZWFzb24pCi17
Ci0gICAgc3dpdGNoIChtX3N0YXRlKSB7Ci0gICAgY2FzZSBTdGF0ZTo6QmFja2dyb3VuZGVkOgot
ICAgICAgICBtX3N1c3BlbmRBZnRlckJhY2tncm91bmRpbmdUaW1lci5zdG9wKCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgU3RhdGU6OlJlc3VtZWQ6Ci0gICAgICAgIEFTU0VSVCghbV9zdXNw
ZW5kQWZ0ZXJCYWNrZ3JvdW5kaW5nVGltZXIuaXNBY3RpdmUoKSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgU3RhdGU6OlN1c3BlbmRlZDoKLSAgICAgICAgQVNTRVJUKCFtX2lzSG9sZGluZ0Fz
c2VydGlvbik7Ci0gICAgICAgIEFTU0VSVCghbV9yZWxlYXNlVGltZXIuaXNBY3RpdmUoKSk7Ci0g
ICAgICAgIEFTU0VSVCghbV9zdXNwZW5kQWZ0ZXJCYWNrZ3JvdW5kaW5nVGltZXIuaXNBY3RpdmUo
KSk7Ci0gICAgICAgIGhvbGROb3coKTsKLSAgICAgICAgaWYgKCFtX2Fzc2VydGlvbkNvdW50KQot
ICAgICAgICAgICAgbV9yZWxlYXNlVGltZXIucmVzdGFydCgpOwotICAgICAgICBicmVhazsKLSAg
ICB9Ci0KLSAgICBtX3N0YXRlID0gU3RhdGU6OlJlc3VtZWQ7Ci19Ci0KLXZvaWQgTmV0d29ya1By
b3hpbWl0eUFzc2VydGlvbjo6c3VzcGVuZChTdXNwZW5zaW9uUmVhc29uIHJlYXNvbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIHN3aXRjaCAo
cmVhc29uKSB7Ci0gICAgY2FzZSBTdXNwZW5zaW9uUmVhc29uOjpQcm9jZXNzQmFja2dyb3VuZGlu
ZzoKLSAgICAgICAgLy8gVGhlIE5ldHdvcmtpbmcgcHJvY2VzcyBpcyBiZWluZyBiYWNrZ3JvdW5k
ZWQuIFdlIHNob3VsZCBkcm9wIG91ciBhc3NlcnRpb25zCi0gICAgICAgIC8vIHNvb24sIGluIGNh
c2UgdGhlIHN5c3RlbSBzdXNwZW5kcyB0aGUgcHJvY2VzcyBiZWZvcmUgd2UgcmVjZWl2ZSBQcm9j
ZXNzU3VzcGVuZGluZy4KLSAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpCYWNrZ3JvdW5kZWQ7Ci0g
ICAgICAgIG1fc3VzcGVuZEFmdGVyQmFja2dyb3VuZGluZ1RpbWVyLnJlc3RhcnQoKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBTdXNwZW5zaW9uUmVhc29uOjpQcm9jZXNzU3VzcGVuZGluZzoK
LSAgICAgICAgLy8gVGhlIE5ldHdvcmtpbmcgcHJvY2VzcyBpcyBiZWluZyBzdXNwZW5kZWQsIHNv
IHdlIG5lZWQgdG8gZHJvcCBvdXIgYXNzZXJ0aW9ucwotICAgICAgICAvLyBpbW1lZGlhdGVseSBi
ZWZvcmUgdGhhdCBoYXBwZW5zLgotICAgICAgICBzdXNwZW5kTm93KCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KLQotICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci19Ci0KLXZvaWQgTmV0d29ya1By
b3hpbWl0eUFzc2VydGlvbjo6c3VzcGVuZE5vdygpCi17Ci0gICAgaWYgKG1fc3RhdGUgPT0gU3Rh
dGU6OlN1c3BlbmRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdGF0ZSA9IFN0YXRlOjpT
dXNwZW5kZWQ7Ci0gICAgbV9yZWxlYXNlVGltZXIuc3RvcCgpOwotICAgIG1fc3VzcGVuZEFmdGVy
QmFja2dyb3VuZGluZ1RpbWVyLnN0b3AoKTsKLSAgICByZWxlYXNlTm93KCk7Ci19Ci0KLXZvaWQg
TmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6cmVsZWFzZVRpbWVyRmlyZWQoKQotewotICAgIEFT
U0VSVChtX2lzSG9sZGluZ0Fzc2VydGlvbik7Ci0gICAgQVNTRVJUKG1fc3RhdGUgIT0gU3RhdGU6
OlN1c3BlbmRlZCk7Ci0gICAgQVNTRVJUKCFtX2Fzc2VydGlvbkNvdW50KTsKLSAgICBBU1NFUlQo
IW1fcmVsZWFzZVRpbWVyLmlzQWN0aXZlKCkpOwotICAgIHJlbGVhc2VOb3coKTsKLX0KLQotdm9p
ZCBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uOjpzdXNwZW5kQWZ0ZXJCYWNrZ3JvdW5kaW5nVGlt
ZXJGaXJlZCgpCi17Ci0gICAgQVNTRVJUKCFtX3N1c3BlbmRBZnRlckJhY2tncm91bmRpbmdUaW1l
ci5pc0FjdGl2ZSgpKTsKLSAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6U3VzcGVuZGVkKTsK
LSAgICBzdXNwZW5kTm93KCk7Ci19Ci0KLUJsdWV0b290aFByb3hpbWl0eUFzc2VydGlvbjo6Qmx1
ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uKElEU1NlcnZpY2UgKmlkc1NlcnZpY2UpCi0gICAgOiBt
X2lkc1NlcnZpY2UgeyBpZHNTZXJ2aWNlIH0KLXsKLX0KLQotdm9pZCBCbHVldG9vdGhQcm94aW1p
dHlBc3NlcnRpb246OnN1c3BlbmQoU3VzcGVuc2lvblJlYXNvbiByZWFzb24sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBhdXRvIHdhc0hvbGRp
bmdBc3NlcnRpb24gPSBtX2lzSG9sZGluZ0Fzc2VydGlvbjsKLSAgICBOZXR3b3JrUHJveGltaXR5
QXNzZXJ0aW9uOjpzdXNwZW5kKHJlYXNvbiwgW10geyB9KTsKLQotICAgIHN3aXRjaCAocmVhc29u
KSB7Ci0gICAgY2FzZSBTdXNwZW5zaW9uUmVhc29uOjpQcm9jZXNzQmFja2dyb3VuZGluZzoKLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdXNw
ZW5zaW9uUmVhc29uOjpQcm9jZXNzU3VzcGVuZGluZzoKLSAgICAgICAgQVNTRVJUKCFtX2lzSG9s
ZGluZ0Fzc2VydGlvbik7Ci0gICAgICAgIGlmICghd2FzSG9sZGluZ0Fzc2VydGlvbikgewotICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0KLSAgICAgICAgLy8gSURTIHByb2Nlc3NlcyAtc2V0TGlua1ByZWZlcmVuY2VzOiBvbiBh
IGJhY2tncm91bmQgZGlzcGF0Y2ggcXVldWUgYW5kIHByb3ZpZGVzIG5vCi0gICAgICAgIC8vIGNv
bXBsZXRpb24gaGFuZGxlci4gSWYgd2Ugc3VzcGVuZCBiZWZvcmUgSURTIGZpbmlzaGVzIHNldHRp
bmcgbGluayBwcmVmZXJlbmNlcywgdGhlCi0gICAgICAgIC8vIEJsdWV0b290aCByYWRpbyBtaWdo
dCBzdGF5IGluIGEgaGlnaCBwb3dlciBtb2RlLCBoYXJtaW5nIGJhdHRlcnkgbGlmZS4gRGVsYXkg
c3VzcGVuc2lvbgotICAgICAgICAvLyBieSAzMCBzZWNvbmRzIHRvIGVuc3VyZSAtc2V0TGlua1By
ZWZlcmVuY2VzOiBhbHdheXMgZmluaXNoZXMgaXRzIHdvcmsuCi0gICAgICAgIGRpc3BhdGNoX2Fm
dGVyKGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIDMwICogTlNFQ19QRVJfU0VDKSwg
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbWFrZUJsb2NrUHRyKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKS5nZXQoKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotdm9pZCBCbHVl
dG9vdGhQcm94aW1pdHlBc3NlcnRpb246OmhvbGROb3coKQotewotICAgIGlmIChtX2lzSG9sZGlu
Z0Fzc2VydGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUkVMRUFTRV9MT0coUHJveGltaXR5
TmV0d29ya2luZywgIkhvbGRpbmcgQmx1ZXRvb3RoIENsYXNzaWMgYXNzZXJ0aW9uLiIpOwotICAg
IFttX2lkc1NlcnZpY2Ugc2V0TGlua1ByZWZlcmVuY2VzOkB7IElEU0xpbmtQcmVmZXJlbmNlT3B0
aW9uUGFja2V0c1BlclNlY29uZEtleSA6IEAoMjAwKSB9XTsKLSAgICBtX2lzSG9sZGluZ0Fzc2Vy
dGlvbiA9IHRydWU7Ci19Ci0KLXZvaWQgQmx1ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uOjpyZWxl
YXNlTm93KCkKLXsKLSAgICBpZiAoIW1faXNIb2xkaW5nQXNzZXJ0aW9uKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBSRUxFQVNFX0xPRyhQcm94aW1pdHlOZXR3b3JraW5nLCAiUmVsZWFzaW5nIEJs
dWV0b290aCBDbGFzc2ljIGFzc2VydGlvbi4iKTsKLSAgICBbbV9pZHNTZXJ2aWNlIHNldExpbmtQ
cmVmZXJlbmNlczpAeyBJRFNMaW5rUHJlZmVyZW5jZU9wdGlvblBhY2tldHNQZXJTZWNvbmRLZXkg
OiBAKDApIH1dOwotICAgIG1faXNIb2xkaW5nQXNzZXJ0aW9uID0gZmFsc2U7Ci19Ci0KLVdpRmlQ
cm94aW1pdHlBc3NlcnRpb246OldpRmlQcm94aW1pdHlBc3NlcnRpb24oKQotICAgIDogbV93aUZp
TWFuYWdlckNsaWVudCB7IGFkb3B0Q0YoV2lGaU1hbmFnZXJDbGllbnRDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwga1dpRmlDbGllbnRUeXBlTm9ybWFsKSkgfQotewotfQotCi12b2lkIFdpRmlQ
cm94aW1pdHlBc3NlcnRpb246OmhvbGROb3coKQotewotICAgIGlmIChtX2lzSG9sZGluZ0Fzc2Vy
dGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUkVMRUFTRV9MT0coUHJveGltaXR5TmV0d29y
a2luZywgIkhvbGRpbmcgV2ktRmkgYXNzZXJ0aW9uLiIpOwotICAgIEFTU0VSVChXaUZpTWFuYWdl
ckNsaWVudEdldFR5cGUobV93aUZpTWFuYWdlckNsaWVudC5nZXQoKSkgPT0ga1dpRmlDbGllbnRU
eXBlTm9ybWFsKTsKLSAgICBXaUZpTWFuYWdlckNsaWVudFNldFR5cGUobV93aUZpTWFuYWdlckNs
aWVudC5nZXQoKSwga1dpRmlDbGllbnRUeXBlRGlyZWN0VG9DbG91ZCk7Ci0gICAgbV9pc0hvbGRp
bmdBc3NlcnRpb24gPSB0cnVlOwotfQotCi12b2lkIFdpRmlQcm94aW1pdHlBc3NlcnRpb246OnJl
bGVhc2VOb3coKQotewotICAgIGlmICghbV9pc0hvbGRpbmdBc3NlcnRpb24pCi0gICAgICAgIHJl
dHVybjsKLQotICAgIFJFTEVBU0VfTE9HKFByb3hpbWl0eU5ldHdvcmtpbmcsICJSZWxlYXNpbmcg
V2ktRmkgYXNzZXJ0aW9uLiIpOwotICAgIEFTU0VSVChXaUZpTWFuYWdlckNsaWVudEdldFR5cGUo
bV93aUZpTWFuYWdlckNsaWVudC5nZXQoKSkgPT0ga1dpRmlDbGllbnRUeXBlRGlyZWN0VG9DbG91
ZCk7Ci0gICAgV2lGaU1hbmFnZXJDbGllbnRTZXRUeXBlKG1fd2lGaU1hbmFnZXJDbGllbnQuZ2V0
KCksIGtXaUZpQ2xpZW50VHlwZU5vcm1hbCk7Ci0gICAgbV9pc0hvbGRpbmdBc3NlcnRpb24gPSBm
YWxzZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoUFJP
WElNSVRZX05FVFdPUktJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dhdGNob3MvTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5TWFuYWdlci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMzRhNzk4MjhiMDhhYjBlYjM2MzQ1ZDJhNTc4YjUyZGFmOWRh
NTY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5TWFuYWdlci5o
CisrKyAvZGV2L251bGwKQEAgLTEsMTIxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKLQotI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzU3VwcGxlbWVudC5oIgotI2luY2x1ZGUgIk5ldHdvcmtQcm94aW1pdHlBc3NlcnRp
b24uaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgotI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KLQotT0JKQ19DTEFTUyBJRFNTZXJ2aWNlOwotT0JKQ19DTEFTUyBOU0FycmF5OwotT0JK
Q19DTEFTUyBOU1VSTFJlcXVlc3Q7Ci1PQkpDX0NMQVNTIFdLUHJveGltaXR5U2VydmljZURlbGVn
YXRlOwotT0JKQ19DTEFTUyBXUk1faVJBVEludGVyZmFjZTsKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xh
c3MgTmV0d29ya1Byb2Nlc3M7Ci1jbGFzcyBOZXR3b3JrRGF0YVRhc2tDb2NvYTsKLWVudW0gY2xh
c3MgTmV0d29ya1Byb3hpbWl0eVJlY29tbWVuZGF0aW9uIDogdWludDhfdDsKLQotZW51bSBjbGFz
cyBSZXN1bXB0aW9uUmVhc29uIDogdWludDhfdCB7Ci0gICAgUHJvY2Vzc0ZvcmVncm91bmRpbmcs
Ci0gICAgUHJvY2Vzc1Jlc3VtaW5nLAotfTsKLQotZW51bSBjbGFzcyBTdXNwZW5zaW9uUmVhc29u
IDogdWludDhfdCB7Ci0gICAgUHJvY2Vzc0JhY2tncm91bmRpbmcsCi0gICAgUHJvY2Vzc1N1c3Bl
bmRpbmcKLX07Ci0KLWNsYXNzIE5ldHdvcmtQcm94aW1pdHlTZXJ2aWNlQ2xpZW50IHsKLXB1Ymxp
YzoKLSAgICB2aXJ0dWFsIH5OZXR3b3JrUHJveGltaXR5U2VydmljZUNsaWVudCgpID0gZGVmYXVs
dDsKLSAgICB2aXJ0dWFsIHZvaWQgZGV2aWNlc0NoYW5nZWQoTlNBcnJheSAqZGV2aWNlcykgPSAw
OwotfTsKLQotY2xhc3MgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIgZmluYWwgOiBwdWJsaWMgTmV0
d29ya1Byb2Nlc3NTdXBwbGVtZW50LCBwcml2YXRlIE5ldHdvcmtQcm94aW1pdHlTZXJ2aWNlQ2xp
ZW50IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShOZXR3b3JrUHJveGltaXR5TWFuYWdlcik7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgTmV0
d29ya1Byb3hpbWl0eU1hbmFnZXIoTmV0d29ya1Byb2Nlc3MmKTsKLSAgICB+TmV0d29ya1Byb3hp
bWl0eU1hbmFnZXIoKTsKLQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgp
OwotCi0gICAgdm9pZCBhcHBseVByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgTmV0d29ya0RhdGFUYXNrQ29jb2EmLCBOU1VSTFJlcXVlc3QgKiYpOwotICAgIHZvaWQg
cmVzdW1lKFJlc3VtcHRpb25SZWFzb24pOwotICAgIHZvaWQgc3VzcGVuZChTdXNwZW5zaW9uUmVh
c29uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotCi1wcml2YXRlOgotICAgIGVudW0g
Y2xhc3MgU3RhdGUgOiB1aW50OF90IHsKLSAgICAgICAgQmFja2dyb3VuZGVkLAotICAgICAgICBG
b3JlZ3JvdW5kZWQsCi0gICAgICAgIEluaXRpYWxpemVkLAotICAgICAgICBSZXN1bWVkLAotICAg
ICAgICBTdXNwZW5kZWQsCi0gICAgfTsKLQotICAgIGJvb2wgaXNDb21wYW5pb25JblByb3hpbWl0
eSgpIGNvbnN0IHsgcmV0dXJuIG1faXNDb21wYW5pb25JblByb3hpbWl0eTsgfQotICAgIE5ldHdv
cmtQcm94aW1pdHlSZWNvbW1lbmRhdGlvbiByZWNvbW1lbmRhdGlvbigpIGNvbnN0OwotICAgIGJv
b2wgc2hvdWxkVXNlRGlyZWN0V2lGaUluUHJveGltaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zaG91
bGRVc2VEaXJlY3RXaUZpSW5Qcm94aW1pdHk7IH0KLQotICAgIHZvaWQgcHJvY2Vzc1JlY29tbWVu
ZGF0aW9ucyhOU0FycmF5ICpyZWNvbW1lbmRhdGlvbnMpOwotICAgIHZvaWQgcmVzdW1lUmVjb21t
ZW5kYXRpb25zKCk7Ci0gICAgdm9pZCBzdXNwZW5kUmVjb21tZW5kYXRpb25zKFN0YXRlIG9sZFN0
YXRlKTsKLSAgICB2b2lkIHVwZGF0ZUNvbXBhbmlvblByb3hpbWl0eSgpOwotICAgIHZvaWQgdXBk
YXRlUmVjb21tZW5kYXRpb24oKTsKLQotICAgIC8vIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudAot
ICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYpIG92ZXJyaWRlOwotCi0gICAgLy8gTmV0d29ya1Byb3hpbWl0eVNlcnZpY2VDbGllbnQKLSAg
ICB2b2lkIGRldmljZXNDaGFuZ2VkKE5TQXJyYXkgKmRldmljZXMpIG92ZXJyaWRlOwotCi0gICAg
dW5zaWduZWQgbV9jb250ZXh0SWRlbnRpZmllciB7IDAgfTsKLSAgICBib29sIG1faXNDb21wYW5p
b25JblByb3hpbWl0eSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3Nob3VsZFVzZURpcmVjdFdpRmlJ
blByb3hpbWl0eSB7IGZhbHNlIH07Ci0gICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpJbml0aWFs
aXplZCB9OwotICAgIFJldGFpblB0cjxXUk1faVJBVEludGVyZmFjZT4gbV9pUkFUSW50ZXJmYWNl
OwotICAgIFJldGFpblB0cjxJRFNTZXJ2aWNlPiBtX2lkc1NlcnZpY2U7Ci0gICAgUmV0YWluUHRy
PFdLUHJveGltaXR5U2VydmljZURlbGVnYXRlPiBtX2lkc1NlcnZpY2VEZWxlZ2F0ZTsKLSAgICBP
U09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBtX3JlY29tbWVuZGF0aW9uUXVldWU7Ci0gICAg
Qmx1ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uIG1fYmx1ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9u
OwotICAgIFdpRmlQcm94aW1pdHlBc3NlcnRpb24gbV93aUZpUHJveGltaXR5QXNzZXJ0aW9uOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoUFJPWElNSVRZ
X05FVFdPUktJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dh
dGNob3MvTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dhdGNob3MvTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIubW0KZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDU1NzczZWI0NWRmNGRiMTg1NDlmODBkOGE3YjlmOGJjM2E5MGQwNDgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93YXRjaG9zL05ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLm1tCisr
KyAvZGV2L251bGwKQEAgLTEsMzI1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25m
aWcuaCIKLSNpbXBvcnQgIk5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLmgiCi0KLSNpZiBFTkFCTEUo
UFJPWElNSVRZX05FVFdPUktJTkcpCi0KLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgIk5l
dHdvcmtEYXRhVGFza0NvY29hLmgiCi0jaW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgotI2ltcG9y
dCAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbXBvcnQgPElEUy9JRFMu
aD4KLSNpbXBvcnQgPFdpcmVsZXNzQ29leE1hbmFnZXIvV1JNX2lSQVRJbnRlcmZhY2UuaD4KLSNp
bXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tQdHIu
aD4KLSNpbXBvcnQgPHd0Zi9Cb3guaD4KLSNpbXBvcnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgotI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+Ci0jaW1wb3J0IDx3dGYvdGhyZWFkcy9C
aW5hcnlTZW1hcGhvcmUuaD4KLQotV1RGX0RFQ0xBUkVfQ0ZfVFlQRV9UUkFJVChTQ05ldHdvcmtJ
bnRlcmZhY2UpOwotCi1AaW50ZXJmYWNlIFdLUHJveGltaXR5U2VydmljZURlbGVnYXRlIDogTlNP
YmplY3QgPElEU1NlcnZpY2VEZWxlZ2F0ZT4KLS0gKHZvaWQpc2V0Q2xpZW50OihXZWJLaXQ6Ok5l
dHdvcmtQcm94aW1pdHlTZXJ2aWNlQ2xpZW50KiljbGllbnQ7Ci1AZW5kCi0KLUBpbXBsZW1lbnRh
dGlvbiBXS1Byb3hpbWl0eVNlcnZpY2VEZWxlZ2F0ZSB7Ci0gICAgV2ViS2l0OjpOZXR3b3JrUHJv
eGltaXR5U2VydmljZUNsaWVudCogX2NsaWVudDsKLX0KLQotLSAodm9pZClzZXRDbGllbnQ6KFdl
YktpdDo6TmV0d29ya1Byb3hpbWl0eVNlcnZpY2VDbGllbnQqKWNsaWVudAotewotICAgIF9jbGll
bnQgPSBjbGllbnQ7Ci19Ci0KLS0gKHZvaWQpc2VydmljZTooSURTU2VydmljZSAqKXNlcnZpY2Ug
ZGV2aWNlc0NoYW5nZWQ6KE5TQXJyYXkgKilkZXZpY2VzCi17Ci0gICAgaWYgKF9jbGllbnQpCi0g
ICAgICAgIF9jbGllbnQtPmRldmljZXNDaGFuZ2VkKGRldmljZXMpOwotfQotCi0tICh2b2lkKXNl
cnZpY2U6KElEU1NlcnZpY2UgKilzZXJ2aWNlIG5lYXJieURldmljZXNDaGFuZ2VkOihOU0FycmF5
ICopZGV2aWNlcwotewotICAgIGlmIChfY2xpZW50KQotICAgICAgICBfY2xpZW50LT5kZXZpY2Vz
Q2hhbmdlZChkZXZpY2VzKTsKLX0KLQotQGVuZAotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotZW51
bSBjbGFzcyBOZXR3b3JrUHJveGltaXR5UmVjb21tZW5kYXRpb24gOiB1aW50OF90IHsKLSAgICBC
bHVldG9vdGgsCi0gICAgTm9uZSwKLSAgICBXaUZpLAotfTsKLQotTmV0d29ya1Byb3hpbWl0eU1h
bmFnZXI6Ok5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyKE5ldHdvcmtQcm9jZXNzJikKLSAgICA6IG1f
aWRzU2VydmljZSB7IGFkb3B0TlMoW1tJRFNTZXJ2aWNlIGFsbG9jXSBpbml0V2l0aFNlcnZpY2U6
QCJjb20uYXBwbGUucHJpdmF0ZS5hbGxveS53ZWJraXRuZXR3b3JraW5nIl0pIH0KLSAgICAsIG1f
aWRzU2VydmljZURlbGVnYXRlIHsgYWRvcHROUyhbW1dLUHJveGltaXR5U2VydmljZURlbGVnYXRl
IGFsbG9jXSBpbml0XSkgfQotICAgICwgbV9yZWNvbW1lbmRhdGlvblF1ZXVlIHsgYWRvcHRPU09i
amVjdChkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYktpdCBOZXR3b3JrIFByb3hpbWl0eSBSZWNv
bW1lbmRhdGlvbiBRdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkpIH0KLSAgICAsIG1fYmx1
ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uIHsgbV9pZHNTZXJ2aWNlLmdldCgpIH0KLXsKLSAgICBb
bV9pZHNTZXJ2aWNlRGVsZWdhdGUgc2V0Q2xpZW50OnRoaXNdOwotICAgIFttX2lkc1NlcnZpY2Ug
YWRkRGVsZWdhdGU6bV9pZHNTZXJ2aWNlRGVsZWdhdGUuZ2V0KCkgcXVldWU6ZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKV07Ci19Ci0KLU5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjp+TmV0d29ya1By
b3hpbWl0eU1hbmFnZXIoKQotewotICAgIFttX2lkc1NlcnZpY2VEZWxlZ2F0ZSBzZXRDbGllbnQ6
bnVsbHB0cl07Ci19Ci0KLWNvbnN0IGNoYXIqIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjpzdXBw
bGVtZW50TmFtZSgpCi17Ci0gICAgcmV0dXJuICJOZXR3b3JrUHJveGltaXR5TWFuYWdlciI7Ci19
Ci0KLXN0YXRpYyB2b2lkIGJpbmRSZXF1ZXN0VG9XaUZpKE5TVVJMUmVxdWVzdCAqJiByZXF1ZXN0
KQotewotICAgIHN0YXRpYyBOU1N0cmluZyAqd2lGaUludGVyZmFjZUlkZW50aWZpZXIgPSBbXSgp
IC0+IE5TU3RyaW5nICogewotICAgICAgICBhdXRvIGludGVyZmFjZXMgPSBhZG9wdENGKFNDTmV0
d29ya0ludGVyZmFjZUNvcHlBbGwoKSk7Ci0gICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMCwgY291
bnQgPSBDRkFycmF5R2V0Q291bnQoaW50ZXJmYWNlcy5nZXQoKSk7IGkgPCBjb3VudDsgKytpKSB7
Ci0gICAgICAgICAgICBhdXRvIGludGVyZmFjZSA9IGNoZWNrZWRfY2ZfY2FzdDxTQ05ldHdvcmtJ
bnRlcmZhY2VSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaW50ZXJmYWNlcy5nZXQoKSwgaSkp
OwotICAgICAgICAgICAgaWYgKCFDRkVxdWFsKFNDTmV0d29ya0ludGVyZmFjZUdldEludGVyZmFj
ZVR5cGUoaW50ZXJmYWNlKSwga1NDTmV0d29ya0ludGVyZmFjZVR5cGVJRUVFODAyMTEpKQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBy
ZXRhaW5QdHIoU0NOZXR3b3JrSW50ZXJmYWNlR2V0QlNETmFtZShpbnRlcmZhY2UpKTsKLSAgICAg
ICAgICAgIFJFTEVBU0VfTE9HKFByb3hpbWl0eU5ldHdvcmtpbmcsICJEZXRlcm1pbmVkIFdpLUZp
IGludGVyZmFjZSBpZGVudGlmaWVyIGlzICVALiIsIGlkZW50aWZpZXIuZ2V0KCkpOwotICAgICAg
ICAgICAgcmV0dXJuIChOU1N0cmluZyAqKWlkZW50aWZpZXIubGVha1JlZigpOwotICAgICAgICB9
Ci0KLSAgICAgICAgUkVMRUFTRV9MT0coUHJveGltaXR5TmV0d29ya2luZywgIkZhaWxlZCB0byBk
ZXRlcm1pbmUgV2ktRmkgaW50ZXJmYWNlIGlkZW50aWZpZXIuIik7Ci0gICAgICAgIHJldHVybiBu
aWw7Ci0gICAgfSgpOwotCi0gICAgaWYgKCF3aUZpSW50ZXJmYWNlSWRlbnRpZmllcikKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgYXV0byBtdXRhYmxlUmVxdWVzdCA9IGFkb3B0TlMoW3JlcXVlc3Qg
bXV0YWJsZUNvcHldKTsKLSAgICBbbXV0YWJsZVJlcXVlc3Qgc2V0Qm91bmRJbnRlcmZhY2VJZGVu
dGlmaWVyOndpRmlJbnRlcmZhY2VJZGVudGlmaWVyXTsKLSAgICByZXF1ZXN0ID0gbXV0YWJsZVJl
cXVlc3QuYXV0b3JlbGVhc2UoKTsKLX0KLQotdm9pZCBOZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6
YXBwbHlQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
V2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYSYgZGF0YVRhc2ssIE5TVVJMUmVxdWVzdCAqJiBu
c1JlcXVlc3QpCi17Ci0gICAgLy8gSWYgdGhlIGNsaWVudCBoYXMgYWxyZWFkeSBib3VuZCB0aGUg
cmVxdWVzdCB0byBhbiBpZGVudGlmaWVyLCBkb24ndCBvdmVycmlkZSBpdC4KLSAgICBpZiAobnNS
ZXF1ZXN0LmJvdW5kSW50ZXJmYWNlSWRlbnRpZmllci5sZW5ndGgpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGlmIChkYXRhVGFzay5pc1RvcExldmVsTmF2aWdhdGlvbigpKQotICAgICAgICB1cGRh
dGVSZWNvbW1lbmRhdGlvbigpOwotCi0gICAgc3dpdGNoIChyZWNvbW1lbmRhdGlvbigpKSB7Ci0g
ICAgY2FzZSBOZXR3b3JrUHJveGltaXR5UmVjb21tZW5kYXRpb246OkJsdWV0b290aDoKLSAgICAg
ICAgZGF0YVRhc2suaG9sZFByb3hpbWl0eUFzc2VydGlvbihtX2JsdWV0b290aFByb3hpbWl0eUFz
c2VydGlvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTmV0d29ya1Byb3hpbWl0eVJlY29t
bWVuZGF0aW9uOjpOb25lOgotICAgICAgICBicmVhazsKLSAgICBjYXNlIE5ldHdvcmtQcm94aW1p
dHlSZWNvbW1lbmRhdGlvbjo6V2lGaToKLSAgICAgICAgZGF0YVRhc2suaG9sZFByb3hpbWl0eUFz
c2VydGlvbihtX3dpRmlQcm94aW1pdHlBc3NlcnRpb24pOwotICAgICAgICBiaW5kUmVxdWVzdFRv
V2lGaShuc1JlcXVlc3QpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXZvaWQgTmV0d29y
a1Byb3hpbWl0eU1hbmFnZXI6OnJlc3VtZShSZXN1bXB0aW9uUmVhc29uIHJlYXNvbikKLXsKLSAg
ICBzd2l0Y2ggKHJlYXNvbikgewotICAgIGNhc2UgUmVzdW1wdGlvblJlYXNvbjo6UHJvY2Vzc0Zv
cmVncm91bmRpbmc6Ci0gICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6Rm9yZWdyb3VuZGVkOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFJlc3VtcHRpb25SZWFzb246OlByb2Nlc3NSZXN1bWluZzoK
LSAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpSZXN1bWVkOwotICAgICAgICBicmVhazsKLSAgICB9
Ci0KLSAgICByZXN1bWVSZWNvbW1lbmRhdGlvbnMoKTsKLQotICAgIHN3aXRjaCAocmVjb21tZW5k
YXRpb24oKSkgewotICAgIGNhc2UgTmV0d29ya1Byb3hpbWl0eVJlY29tbWVuZGF0aW9uOjpCbHVl
dG9vdGg6Ci0gICAgICAgIG1fYmx1ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uLnJlc3VtZShyZWFz
b24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE5ldHdvcmtQcm94aW1pdHlSZWNvbW1lbmRh
dGlvbjo6Tm9uZToKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBOZXR3b3JrUHJveGltaXR5UmVj
b21tZW5kYXRpb246OldpRmk6Ci0gICAgICAgIG1fd2lGaVByb3hpbWl0eUFzc2VydGlvbi5yZXN1
bWUocmVhc29uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lkIE5ldHdvcmtQcm94
aW1pdHlNYW5hZ2VyOjpzdXNwZW5kKFN1c3BlbnNpb25SZWFzb24gcmVhc29uLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgYXV0byBvbGRTdGF0
ZSA9IG1fc3RhdGU7Ci0gICAgc3dpdGNoIChyZWFzb24pIHsKLSAgICBjYXNlIFN1c3BlbnNpb25S
ZWFzb246OlByb2Nlc3NCYWNrZ3JvdW5kaW5nOgotICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkJh
Y2tncm91bmRlZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdXNwZW5zaW9uUmVhc29uOjpQ
cm9jZXNzU3VzcGVuZGluZzoKLSAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpTdXNwZW5kZWQ7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHN1c3BlbmRSZWNvbW1lbmRhdGlvbnMob2xkU3Rh
dGUpOwotCi0gICAgYXV0byB3cmFwcGVkQ29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgUkVMRUFTRV9MT0coUHJveGltaXR5
TmV0d29ya2luZywgIkZpbmlzaGVkIHN1c3BlbmRpbmcgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIg
KHN0YXRlOiAlaGh1KS4iLCBtX3N0YXRlKTsKLSAgICB9OwotCi0gICAgUkVMRUFTRV9MT0coUHJv
eGltaXR5TmV0d29ya2luZywgIlN1c3BlbmRpbmcgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIgKHN0
YXRlOiAlaGh1KS4iLCBtX3N0YXRlKTsKLSAgICBtX2JsdWV0b290aFByb3hpbWl0eUFzc2VydGlv
bi5zdXNwZW5kKHJlYXNvbiwgV1RGTW92ZSh3cmFwcGVkQ29tcGxldGlvbkhhbmRsZXIpKTsKLSAg
ICBtX3dpRmlQcm94aW1pdHlBc3NlcnRpb24uc3VzcGVuZChyZWFzb24sIFtdIHsgfSk7Ci19Ci0K
LU5ldHdvcmtQcm94aW1pdHlSZWNvbW1lbmRhdGlvbiBOZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6
cmVjb21tZW5kYXRpb24oKSBjb25zdAotewotICAgIGlmICghaXNDb21wYW5pb25JblByb3hpbWl0
eSgpKQotICAgICAgICByZXR1cm4gTmV0d29ya1Byb3hpbWl0eVJlY29tbWVuZGF0aW9uOjpOb25l
OwotCi0gICAgaWYgKHNob3VsZFVzZURpcmVjdFdpRmlJblByb3hpbWl0eSgpKQotICAgICAgICBy
ZXR1cm4gTmV0d29ya1Byb3hpbWl0eVJlY29tbWVuZGF0aW9uOjpXaUZpOwotCi0gICAgcmV0dXJu
IE5ldHdvcmtQcm94aW1pdHlSZWNvbW1lbmRhdGlvbjo6Qmx1ZXRvb3RoOwotfQotCi12b2lkIE5l
dHdvcmtQcm94aW1pdHlNYW5hZ2VyOjpwcm9jZXNzUmVjb21tZW5kYXRpb25zKE5TQXJyYXkgKnJl
Y29tbWVuZGF0aW9ucykKLXsKLSAgICBtX3Nob3VsZFVzZURpcmVjdFdpRmlJblByb3hpbWl0eSA9
IGZhbHNlOwotICAgIGJvb2wgZGlkU2VlRGlyZWN0V2lGaVJlY29tbWVuZGF0aW9uID0gZmFsc2U7
Ci0gICAgZm9yIChXUk1faVJBVFByb3hpbWl0eVJlY29tbWVuZGF0aW9uICpyZWNvbW1lbmRhdGlv
biBpbiByZWNvbW1lbmRhdGlvbnMpIHsKLSAgICAgICAgc3dpdGNoIChyZWNvbW1lbmRhdGlvbi5S
ZWNvbW1lbmRhdGlvblR5cGUpIHsKLSAgICAgICAgY2FzZSBXUk1SZWNvbW1lbmRhdGlvbkxpbmtU
eXBlQlQ6Ci0gICAgICAgIGNhc2UgV1JNUmVjb21tZW5kYXRpb25MaW5rVHlwZUNvbXBhbmlvbldp
Zmk6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXUk1SZWNvbW1lbmRhdGlvbkxp
bmtUeXBlRGlyZWN0V2lmaToKLSAgICAgICAgICAgIEFTU0VSVCghZGlkU2VlRGlyZWN0V2lGaVJl
Y29tbWVuZGF0aW9uKTsKLSAgICAgICAgICAgIGRpZFNlZURpcmVjdFdpRmlSZWNvbW1lbmRhdGlv
biA9IHRydWU7Ci0gICAgICAgICAgICBtX3Nob3VsZFVzZURpcmVjdFdpRmlJblByb3hpbWl0eSA9
IHJlY29tbWVuZGF0aW9uLmxpbmtSZWNvbW1lbmRhdGlvbklzVmFsaWQgJiYgcmVjb21tZW5kYXRp
b24ubGlua0lzUmVjb21tZW5kZWQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIFJFTEVBU0VfTE9HKFByb3hpbWl0eU5ldHdvcmtpbmcsICJQcm9jZXNzZWQgaVJB
VE1hbmFnZXIgcmVjb21tZW5kYXRpb25zIChzaG91bGRVc2VEaXJlY3RXaUZpSW5Qcm94aW1pdHk6
ICVkKS5cbiIsIG1fc2hvdWxkVXNlRGlyZWN0V2lGaUluUHJveGltaXR5KTsKLX0KLQotc3RhdGlj
IFdDTVByb2Nlc3NJZCB0b1Byb2Nlc3NJRCh1bnNpZ25lZCBjb250ZXh0SWRlbnRpZmllcikKLXsK
LSAgICBzd2l0Y2ggKGNvbnRleHRJZGVudGlmaWVyKSB7Ci0gICAgY2FzZSBXUk1XZWJraXQ6Ci0g
ICAgICAgIHJldHVybiBXUk1XZWJraXQ7Ci0gICAgY2FzZSBXUk1XZWJraXRNYWlsOgotICAgICAg
ICByZXR1cm4gV1JNV2Via2l0TWFpbDsKLSAgICBjYXNlIFdSTVdlYmtpdE5vdGlmaWNhdGlvbjoK
LSAgICAgICAgcmV0dXJuIFdSTVdlYmtpdE5vdGlmaWNhdGlvbjsKLSAgICBkZWZhdWx0OgotICAg
ICAgICByZXR1cm4gV0NNVW5rbm93bjsKLSAgICB9Ci19Ci0KLXZvaWQgTmV0d29ya1Byb3hpbWl0
eU1hbmFnZXI6OnJlc3VtZVJlY29tbWVuZGF0aW9ucygpCi17Ci0gICAgaWYgKG1faVJBVEludGVy
ZmFjZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdXBkYXRlQ29tcGFuaW9uUHJveGltaXR5KCk7
Ci0KLSAgICBhdXRvIHByb2Nlc3NJRCA9IHRvUHJvY2Vzc0lEKG1fY29udGV4dElkZW50aWZpZXIp
OwotICAgIGlmIChwcm9jZXNzSUQgPT0gV0NNVW5rbm93bikgewotICAgICAgICBSRUxFQVNFX0xP
RyhQcm94aW1pdHlOZXR3b3JraW5nLCAiSW52YWxpZCBXQ00gcHJvY2VzcyBJRCAoJWQpLiIsIG1f
Y29udGV4dElkZW50aWZpZXIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUkVMRUFT
RV9MT0coUHJveGltaXR5TmV0d29ya2luZywgIlJlZ2lzdGVyaW5nIHdpdGggaVJBVE1hbmFnZXIg
KFdDTSBwcm9jZXNzIElEOiAlZCwgc3RhdGU6ICVoaHUpLiIsIHByb2Nlc3NJRCwgbV9zdGF0ZSk7
Ci0gICAgbV9pUkFUSW50ZXJmYWNlID0gYWRvcHROUyhbW1dSTV9pUkFUSW50ZXJmYWNlIGFsbG9j
XSBpbml0XSk7Ci0gICAgW21faVJBVEludGVyZmFjZSByZWdpc3RlckNsaWVudDpwcm9jZXNzSUQg
cXVldWU6bV9yZWNvbW1lbmRhdGlvblF1ZXVlLmdldCgpXTsKLSAgICB1cGRhdGVSZWNvbW1lbmRh
dGlvbigpOwotfQotCi12b2lkIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjpzdXNwZW5kUmVjb21t
ZW5kYXRpb25zKFN0YXRlIG9sZFN0YXRlKQotewotICAgIC8vIElmIHRoaXMgaXMgbm90IGEgZm9y
ZWdyb3VuZC10by1iYWNrZ3JvdW5kIHRyYW5zaXRpb24sIGF2b2lkIHVucmVnaXN0ZXJpbmcuIFBh
Z2UgbG9hZHMgY2FuCi0gICAgLy8gb2Z0ZW4gY2F1c2UgdGhlIG5ldHdvcmsgcHJvY2VzcyB0byBy
ZXN1bWUsIHRyYW5zaXRpb24gdG8gdGhlIGJhY2tncm91bmQsIHRoZW4gdHJhbnNpdGlvbiB0bwot
ICAgIC8vIHRoZSBmb3JlZ3JvdW5kIGluIHJhcGlkIHN1Y2Nlc3Npb24sIGNhdXNpbmcgdW5uZWNl
c3NhcnkgaVJBVE1hbmFnZXIgcmVnaXN0cmF0aW9uIGNodXJuIGFuZAotICAgIC8vIGV4cG9zaW5n
IGJ1Z3Mgc3VjaCBhcyA8cmRhcjovL3Byb2JsZW0vNDI1NjAzMjA+LgotICAgIGlmIChtX3N0YXRl
ID09IFN0YXRlOjpCYWNrZ3JvdW5kZWQgJiYgb2xkU3RhdGUgIT0gU3RhdGU6OkZvcmVncm91bmRl
ZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2lSQVRJbnRlcmZhY2UpCi0gICAgICAg
IHJldHVybjsKLQotICAgIFJFTEVBU0VfTE9HKFByb3hpbWl0eU5ldHdvcmtpbmcsICJVbnJlZ2lz
dGVyaW5nIHdpdGggaVJBVE1hbmFnZXIgKFdDTSBwcm9jZXNzIElEOiAlZCwgc3RhdGU6ICVoaHUp
LiIsIG1fY29udGV4dElkZW50aWZpZXIsIG1fc3RhdGUpOwotICAgIFttX2lSQVRJbnRlcmZhY2Ug
dW5yZWdpc3RlckNsaWVudF07Ci0gICAgbV9pUkFUSW50ZXJmYWNlID0gbmlsOwotICAgIG1faXND
b21wYW5pb25JblByb3hpbWl0eSA9IGZhbHNlOwotICAgIG1fc2hvdWxkVXNlRGlyZWN0V2lGaUlu
UHJveGltaXR5ID0gZmFsc2U7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OnVw
ZGF0ZUNvbXBhbmlvblByb3hpbWl0eSgpCi17Ci0gICAgbV9pc0NvbXBhbmlvbkluUHJveGltaXR5
ID0gZmFsc2U7Ci0gICAgZm9yIChJRFNEZXZpY2UgKmRldmljZSBpbiBbbV9pZHNTZXJ2aWNlIGRl
dmljZXNdKSB7Ci0gICAgICAgIGlmIChkZXZpY2UuaXNEZWZhdWx0UGFpcmVkRGV2aWNlICYmIGRl
dmljZS5pc05lYXJieSkgewotICAgICAgICAgICAgbV9pc0NvbXBhbmlvbkluUHJveGltaXR5ID0g
dHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgUkVMRUFT
RV9MT0coUHJveGltaXR5TmV0d29ya2luZywgIkRldGVybWluZWQgY29tcGFuaW9uIHByb3hpbWl0
eSAoaXNDb21wYW5pb25JblByb3hpbWl0eTogJWQpLiIsIG1faXNDb21wYW5pb25JblByb3hpbWl0
eSk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OnVwZGF0ZVJlY29tbWVuZGF0
aW9uKCkKLXsKLSAgICBpZiAoIWlzQ29tcGFuaW9uSW5Qcm94aW1pdHkoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKCFtX2lSQVRJbnRlcmZhY2UpCi0gICAgICAgIHJldHVybjsKLQotICAg
IFJFTEVBU0VfTE9HKFByb3hpbWl0eU5ldHdvcmtpbmcsICJSZXF1ZXN0aW5nIGFuIGltbWVkaWF0
ZSByZWNvbW1lbmRhdGlvbiBmcm9tIGlSQVRNYW5hZ2VyLiIpOwotCi0gICAgYXV0byBzZW1hcGhv
cmUgPSBCb3g8QmluYXJ5U2VtYXBob3JlPjo6Y3JlYXRlKCk7Ci0gICAgW21faVJBVEludGVyZmFj
ZSBnZXRQcm94aW1pdHlMaW5rUmVjb21tZW5kYXRpb246Tk8gcmVjb21tZW5kYXRpb246W3RoaXMs
IHNlbWFwaG9yZV0oTlNBcnJheTxXUk1faVJBVFByb3hpbWl0eVJlY29tbWVuZGF0aW9uICo+ICpy
ZWNvbW1lbmRhdGlvbnMpIHsKLSAgICAgICAgcHJvY2Vzc1JlY29tbWVuZGF0aW9ucyhyZWNvbW1l
bmRhdGlvbnMpOwotICAgICAgICBzZW1hcGhvcmUtPnNpZ25hbCgpOwotICAgIH1dOwotICAgIHNl
bWFwaG9yZS0+d2FpdEZvcigxX3MpOwotfQotCi12b2lkIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2Vy
Ojppbml0aWFsaXplKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQotewotICAgIG1fY29udGV4dElkZW50aWZpZXIgPSBwYXJhbWV0ZXJzLndpcmVsZXNz
Q29udGV4dElkZW50aWZpZXI7Ci0gICAgcmVzdW1lKFJlc3VtcHRpb25SZWFzb246OlByb2Nlc3NS
ZXN1bWluZyk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OmRldmljZXNDaGFu
Z2VkKE5TQXJyYXkgKikKLXsKLSAgICB1cGRhdGVDb21wYW5pb25Qcm94aW1pdHkoKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoUFJPWElNSVRZX05FVFdP
UktJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggOTcyMzZlNzlmZDM1MmVjZjBjNTA5NGJj
ZDcwYjM0NTI1MGRjM2RjNi4uOWUzNzUyYWIwY2MxZjgwZjlkZDlkMjk2Njk4N2ZjZTY3MjY0ZTBj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNDgsOSArNDgsNiBAQCBOZXR3b3JrUHJvY2Vz
cy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0KIE5ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJv
Y2Vzc01hYy5tbQogTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1t
CiAKLU5ldHdvcmtQcm9jZXNzL3dhdGNob3MvTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbi5tbQot
TmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5TWFuYWdlci5tbQotCiBOZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50LmNwcAogTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLmNwcAogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENQcm92aWRlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggMzMyYjBlNTIx
MWJkYzk3YmYxMmM4YTE5ZWI0M2E4YWMzODcwMDA2NS4uM2RiNzA1NjljOGE0ZTMzMzQzYjg0ZmEz
MjdjMzIwYTMzNThlNGIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKQEAgLTEyNiw5ICsxMjYs
NiBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b246OmNvcHkoKQogICAgIGNvcHktPm1fcHJvY2Vzc1N3YXBzT25XaW5kb3dPcGVuV2l0aE9wZW5l
ciA9IHRoaXMtPm1fcHJvY2Vzc1N3YXBzT25XaW5kb3dPcGVuV2l0aE9wZW5lcjsKICAgICBjb3B5
LT5tX2lzQXV0b21hdGljUHJvY2Vzc1dhcm1pbmdFbmFibGVkQnlDbGllbnQgPSB0aGlzLT5tX2lz
QXV0b21hdGljUHJvY2Vzc1dhcm1pbmdFbmFibGVkQnlDbGllbnQ7CiAgICAgY29weS0+bV91c2Vz
V2ViUHJvY2Vzc0NhY2hlID0gdGhpcy0+bV91c2VzV2ViUHJvY2Vzc0NhY2hlOwotI2lmIEVOQUJM
RShQUk9YSU1JVFlfTkVUV09SS0lORykKLSAgICBjb3B5LT5tX3dpcmVsZXNzQ29udGV4dElkZW50
aWZpZXIgPSB0aGlzLT5tX3dpcmVsZXNzQ29udGV4dElkZW50aWZpZXI7Ci0jZW5kaWYKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBjb3B5LT5tX3N1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRp
b25PblN5c3RlbUNoYW5nZSA9IHRoaXMtPm1fc3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlv
bk9uU3lzdGVtQ2hhbmdlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKaW5kZXggZDNiMDlhODY1
NTE1MGY4OWU2YjAyNDY4MTMxODc2YjExYWE1MjYyYy4uZjIxYWY1ZjFkZmZmNzU4ZGM3ZDRiYzZk
ZjM4NjI2NThiODZkYmFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaApAQCAtMTgwLDExICsxODAsNiBA
QCBwdWJsaWM6CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGN1c3RvbVdlYkNvbnRlbnRTZXJ2aWNl
QnVuZGxlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tV2ViQ29udGVudFNlcnZp
Y2VCdW5kbGVJZGVudGlmaWVyOyB9CiAgICAgdm9pZCBzZXRDdXN0b21XZWJDb250ZW50U2Vydmlj
ZUJ1bmRsZUlkZW50aWZpZXIoY29uc3QgV1RGOjpTdHJpbmcmIGN1c3RvbVdlYkNvbnRlbnRTZXJ2
aWNlQnVuZGxlSWRlbnRpZmllcikgeyBtX2N1c3RvbVdlYkNvbnRlbnRTZXJ2aWNlQnVuZGxlSWRl
bnRpZmllciA9IGN1c3RvbVdlYkNvbnRlbnRTZXJ2aWNlQnVuZGxlSWRlbnRpZmllcjsgfQogCi0j
aWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQotICAgIHVuc2lnbmVkIHdpcmVsZXNzQ29u
dGV4dElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3dpcmVsZXNzQ29udGV4dElkZW50aWZp
ZXI7IH0KLSAgICB2b2lkIHNldFdpcmVsZXNzQ29udGV4dElkZW50aWZpZXIodW5zaWduZWQgd2ly
ZWxlc3NDb250ZXh0SWRlbnRpZmllcikgeyBtX3dpcmVsZXNzQ29udGV4dElkZW50aWZpZXIgPSB3
aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyOyB9Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIGJvb2wgc3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdl
KCkgY29uc3QgeyByZXR1cm4gbV9zdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0
ZW1DaGFuZ2U7IH0KICAgICB2b2lkIHNldFN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25P
blN5c3RlbUNoYW5nZShib29sIHN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3Rl
bUNoYW5nZSkgeyBtX3N1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5n
ZSA9IHN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZTsgfQpAQCAt
MjM3LDEwICsyMzIsNiBAQCBwcml2YXRlOgogICAgIFdURjo6U3RyaW5nIG1fY3REYXRhQ29ubmVj
dGlvblNlcnZpY2VUeXBlOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJ
TkcpCi0gICAgdW5zaWduZWQgbV93aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyIHsgMCB9OwotI2Vu
ZGlmCi0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIG1fc3VwcHJlc3Nlc0Nvbm5lY3Rp
b25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlIHsgZmFsc2UgfTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5oCmluZGV4IDNhYjBjM2JmNTFlNjViODA3YmE0MzQ2NzBmMWY2ZWUz
ODE1NTUyZTUuLmUxODhkZDhmYjAxZmY4NDE4NjFkOGFmYjNmZjJhNjBlNTYzMTBkMGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKQEAgLTQyLDcgKzQyLDcgQEAgV0tfQ0xBU1NfQVZB
SUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpCiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29w
eSkgTlNBcnJheTxOU1VSTCAqPiAqYWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMcyBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSwgaW9zKDExLjApKTsKIAogI2lmIFRBUkdFVF9PU19J
UEhPTkUgJiYgIVRBUkdFVF9PU19TSU1VTEFUT1IKLUBwcm9wZXJ0eSAobm9uYXRvbWljKSBOU1VJ
bnRlZ2VyIHdpcmVsZXNzQ29udGV4dElkZW50aWZpZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYykg
TlNVSW50ZWdlciB3aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyIFdLX0FQSV9ERVBSRUNBVEVEKCJV
c2Ugb2YgdGhpcyBBUEkgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSBhbmQgY2FuIGJlIHJlbW92ZWQi
LCBpb3MoMTAuMTIsIFdLX0lPU19UQkEpKTsKICNlbmRpZgogCiAvLyBOZXR3b3JrIFByb2Nlc3Mg
cHJvcGVydGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KaW5kZXggOTZiMGE5ODVm
ZjNkMWFiNGI3NDI1NmMxODZkNDQ5M2VmZGU0ZmM1ZS4uMTZjMzIzYjg4MDNkMTc0NzBkMTQxNjgz
MWFjZmU1ZTdjYzhhOThhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCkBAIC0x
MzcsMTUgKzEzNywxNCBAQCAtICh2b2lkKXNldEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVS
THM6KE5TQXJyYXk8TlNVUkwgKj4gKilhZGRpdGlvbmFsUmVhZEFjYwogICAgIF9wcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24tPnNldEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKFdURk1v
dmUocGF0aHMpKTsKIH0KIAotI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCiAt
IChOU1VJbnRlZ2VyKXdpcmVsZXNzQ29udGV4dElkZW50aWZpZXIKIHsKLSAgICByZXR1cm4gX3By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+d2lyZWxlc3NDb250ZXh0SWRlbnRpZmllcigpOworICAg
IHJldHVybiAwOwogfQogCiAtICh2b2lkKXNldFdpcmVsZXNzQ29udGV4dElkZW50aWZpZXI6KE5T
VUludGVnZXIpaWRlbnRpZmllcgogewotICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNl
dFdpcmVsZXNzQ29udGV4dElkZW50aWZpZXIoaWRlbnRpZmllcik7CiB9CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2Eu
bW0KaW5kZXggYmVhMGQ5MmQ3MmQ5YTUzYzVhNDJhNjU4ZjJiYTE2MTdhNzE4M2RjMi4uZWY5MmJh
ZDM1NjM1OWM0ZmRlYzFmZmMzYTdkYWQ4MTgyMGIyNWY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC0yOTYsMTAg
KzI5Niw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQ
cm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhCiAgICAgcGFyYW1ldGVycy5zdG9yYWdl
QWNjZXNzQVBJRW5hYmxlZCA9IHN0b3JhZ2VBY2Nlc3NBUElFbmFibGVkKCk7CiAgICAgcGFyYW1l
dGVycy5zdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2UgPSBtX2Nv
bmZpZ3VyYXRpb24tPnN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5n
ZSgpOwogCi0jaWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQotICAgIHBhcmFtZXRlcnMu
d2lyZWxlc3NDb250ZXh0SWRlbnRpZmllciA9IG1fY29uZmlndXJhdGlvbi0+d2lyZWxlc3NDb250
ZXh0SWRlbnRpZmllcigpOwotI2VuZGlmCi0KICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZUlU
UERhdGFiYXNlID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCJJbnRlcm5hbERlYnVnJUAiLCBXZWJQcmVmZXJlbmNlc0tleTo6aXNJVFBEYXRhYmFzZUVu
YWJsZWRLZXkoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpXV07CiAgICAgcGFyYW1ldGVycy5kb3du
bG9hZE1vbml0b3JTcGVlZE11bHRpcGxpZXIgPSBtX2NvbmZpZ3VyYXRpb24tPmRvd25sb2FkTW9u
aXRvclNwZWVkTXVsdGlwbGllcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzYzNkMGFhMzRmYWEwNGVlYzVhYWI5YmM5MzNmMTg4
MmE0YjBiOWNiLi4wOTg2M2VlNDg2MWEzY2M0YzgyZjZhYjI1MjBjOGQ1N2VhYTdmMTNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEy
ODMsOCArMTI4Myw2IEBACiAJCUExMDJBNzA4MUVDMEVFRTkwMEQ4MUQ4MiAvKiBjb20ubWFjcm9t
ZWRpYS5GbGFzaCBQbGF5ZXIgRVNSLnBsdWdpbi5zYiBpbiBDb3B5IFBsdWctaW4gU2FuZGJveCBQ
cm9maWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTVFMzk0OTFENUJE
OEE3MDBCNEI3Q0UgLyogY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyIEVTUi5wbHVnaW4uc2Ig
Ki87IH07CiAJCUExMDQ2RUExMjA3OTI2MzEwMEYwQzVEOCAvKiBXS1BERlZpZXcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMDQ2RTlGMjA3OTI2MzEw
MEYwQzVEOCAvKiBXS1BERlZpZXcuaCAqLzsgfTsKIAkJQTEwNUQwRDEyMTI3MzRCMjAwMzRGNkM3
IC8qIE5ldHdvcmtCbG9iUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExMDVEMEQwMjEyNzM0QjEwMDM0RjZDNyAvKiBOZXR3b3JrQmxvYlJl
Z2lzdHJ5LmggKi87IH07Ci0JCUExMTQ1NUFDMjExRkNGQ0EwMENBOTM1QiAvKiBOZXR3b3JrUHJv
eGltaXR5QXNzZXJ0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTE0NTVBQTIxMUZDRkNBMDBDQTkzNUIgLyogTmV0d29ya1Byb3hpbWl0eUFzc2Vy
dGlvbi5oICovOyB9OwotCQlBMTE0NTVCMDIxMUZEMjUyMDBDQTkzNUIgLyogTmV0d29ya1Byb3hp
bWl0eU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExMTQ1NUFFMjExRkQyNTIwMENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5TWFuYWdlci5o
ICovOyB9OwogCQlBMTE1REM3MjE5MUQ4MkRBMDBEQTgwNzIgLyogX1dLV2ViVmlld1ByaW50Rm9y
bWF0dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MTE1REM2RTE5MUQ4MkFCMDBEQTgwNzIgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTExOEE5RUYx
OTA3QUQ2RjAwRjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExOEE5RUQxOTA3QUQ2RjAwRjdDOTJC
IC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5oICovOyB9OwogCQlBMTE4QTlGMzE5MDhCOEVBMDBG
N0M5MkIgLyogX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExOEE5RjExOTA4QjhFQTAwRjdDOTJCIC8qIF9XS05T
RmlsZU1hbmFnZXJFeHRyYXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMzg3MywxMCArMzg3MSw2IEBACiAJCUExMDQ2RTlGMjA3OTI2MzEwMEYw
QzVEOCAvKiBXS1BERlZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tQREZWaWV3Lmg7IHBhdGggPSBp
b3MvV0tQREZWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMDQ2RUEwMjA3
OTI2MzEwMEYwQzVEOCAvKiBXS1BERlZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1BE
RlZpZXcubW07IHBhdGggPSBpb3MvV0tQREZWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBMTA1RDBEMDIxMjczNEIxMDAzNEY2QzcgLyogTmV0d29ya0Jsb2JSZWdpc3RyeS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQmxvYlJlZ2lzdHJ5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUExMTQ1NUFBMjExRkNGQ0EwMENBOTM1QiAv
KiBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtQcm94
aW1pdHlBc3NlcnRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTExNDU1QUIy
MTFGQ0ZDQTAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24ubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlBMTE0NTVBRTIxMUZEMjUyMDBDQTkzNUIgLyogTmV0d29ya1Byb3hp
bWl0eU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTExNDU1QUYyMTFGRDI1MjAwQ0E5MzVCIC8q
IE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29y
a1Byb3hpbWl0eU1hbmFnZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMTVE
QzZEMTkxRDgyQUIwMERBODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMTVEQzZFMTkxRDgyQUIwMERB
ODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUExMThBOUVDMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVu
dERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUXVpY2tMb29r
RG9jdW1lbnREYXRhLmNwcDsgcGF0aCA9IGlvcy9RdWlja0xvb2tEb2N1bWVudERhdGEuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjUyMyw3ICs2NTE3LDYgQEAKIAkJCQkyREE5
NDRCQjE4ODUxMUREMDBFRDg2REIgLyogaW9zICovLAogCQkJCTUxMENDN0RDMTYxMzhFMjkwMEQw
M0VEMyAvKiBtYWMgKi8sCiAJCQkJOTNCQTA0RDkyMTUxQURDRDAwN0Y0NTVGIC8qIFNlcnZpY2VX
b3JrZXIgKi8sCi0JCQkJQTExNDU1QTEyMTFGQ0U3RjAwQ0E5MzVCIC8qIHdhdGNob3MgKi8sCiAJ
CQkJNDEzMDc1OTcxREU4NEVENzAwMzlFQzY5IC8qIHdlYnJ0YyAqLywKIAkJCQk1M0YzQ0FBNTIw
NkM0NDNFMDA4NjQ5MEUgLyogTmV0d29ya0FjdGl2aXR5VHJhY2tlci5jcHAgKi8sCiAJCQkJNTM1
QkNCOTAyMDY5QzQ5QzAwQ0NDRTAyIC8qIE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIuaCAqLywKQEAg
LTcxODgsMTcgKzcxODEsNiBAQAogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKIAkJfTsKLQkJQTExNDU1QTEyMTFGQ0U3RjAwQ0E5MzVCIC8qIHdhdGNob3MgKi8g
PSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUExMTQ1NUFBMjEx
RkNGQ0EwMENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLmggKi8sCi0JCQkJQTEx
NDU1QUIyMTFGQ0ZDQTAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24ubW0gKi8s
Ci0JCQkJQTExNDU1QUUyMTFGRDI1MjAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2Vy
LmggKi8sCi0JCQkJQTExNDU1QUYyMTFGRDI1MjAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlN
YW5hZ2VyLm1tICovLAotCQkJKTsKLQkJCXBhdGggPSB3YXRjaG9zOwotCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKLQkJfTsKIAkJQTE4MkQ1QjExQkU2QkNGNDAwODdBN0NDIC8qIGlvcyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC05MzE5LDggKzkzMDEs
NiBAQAogCQkJCTUxNzk1NTZFMTYyODc3QjMwMEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTNBMTYzRDE2MzA4OEY2MDA1RDdEMjIgLyogTmV0d29y
a1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzE0MjZFRTFDMjNG
ODA5MDBENDExODMgLyogTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LmggaW4gSGVhZGVycyAqLywK
LQkJCQlBMTE0NTVBQzIxMUZDRkNBMDBDQTkzNUIgLyogTmV0d29ya1Byb3hpbWl0eUFzc2VydGlv
bi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTExNDU1QjAyMTFGRDI1MjAwQ0E5MzVCIC8qIE5ldHdv
cmtQcm94aW1pdHlNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUZEMThCNjE2NTFGQkFE
MDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
MTUyNTUxQjE3MDExODE5MDAzRDdBREIgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxMjQwRUMwMjIwQjY5NEMwMDVDRkM2MyAvKiBOZXR3b3Jr
UmVzb3VyY2VMb2FkTWFwLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiNzgyNDIwMGYzZDQ3ZDIxYjUxNmNiYzUwMWYz
M2EyMzUxYzRjNTMzLi5mYWE3ZjA0NWQyOGRhNTExMmExMDZhOTJiNTIxNmRmMTZkOGIwM2UyIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTktMDMtMjQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisg
ICAgICAgIFt3YXRjaE9TXSBSZW1vdmUgdW51c2VkIFByb3hpbWl0eSBOZXR3b3JraW5nIGNvZGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjE4OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbToK
KyAgICAgICAgKFRFU1QpOgorCiAyMDE5LTAzLTIzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIGNoZWNrLXdlYmtpdC1zdHls
ZSBkb2Vzbid0IGNvbXBsYWluIGFib3V0IGlkZW50aWZpZXJzIHdpdGggdW5kZXJzY29yZXMgaW4g
ZmlsZXMgdW5kZXIgZ2xpYiwgZ3RrIG9yIHdwZSBkaXJzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5tbQppbmRleCA0ZWRlNWZiNjZiYmVhZDFiYWMwMzYyNWJkNTNjNDgyZTM1NThk
YThhLi5kM2I1MzBkOTAxZTY0N2EyNzYwNDRjNmE0OWViYjRlZTExODVmY2ZlIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KQEAgLTM4LDkgKzM4LDYgQEAgVEVTVChXS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiwgQ29weSkKICAgICBbY29uZmlndXJhdGlvbiBzZXRJZ25v
cmVTeW5jaHJvbm91c01lc3NhZ2luZ1RpbWVvdXRzRm9yVGVzdGluZzpZRVNdOwogICAgIFtjb25m
aWd1cmF0aW9uIHNldEF0dHJTdHlsZUVuYWJsZWQ6WUVTXTsKICAgICBbY29uZmlndXJhdGlvbiBz
ZXRBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzOkBbIFtOU1VSTCBmaWxlVVJMV2l0aFBh
dGg6QCIvcGF0aC90by9hbGxvdy9yZWFkL2FjY2Vzcy8iXSBdXTsKLSNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCi0gICAgW2NvbmZpZ3Vy
YXRpb24gc2V0V2lyZWxlc3NDb250ZXh0SWRlbnRpZmllcjoyNV07Ci0jZW5kaWYKICAgICBbY29u
ZmlndXJhdGlvbiBzZXREaXNrQ2FjaGVTaXplT3ZlcnJpZGU6NDIwMDBdOwogICAgIFtjb25maWd1
cmF0aW9uIHNldENhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzOkBbIEAic3NoIiwgQCJ2bmMiIF1d
OwogICAgIFtjb25maWd1cmF0aW9uIHNldEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lczpAWyBA
ImFmcCIsIEAic21iIiBdXTsKQEAgLTY2LDkgKzYzLDYgQEAgVEVTVChXS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiwgQ29weSkKICAgICBFWFBFQ1RfRVEoW2NvbmZpZ3VyYXRpb24gaWdub3JlU3lu
Y2hyb25vdXNNZXNzYWdpbmdUaW1lb3V0c0ZvclRlc3RpbmddLCBbY29weSBpZ25vcmVTeW5jaHJv
bm91c01lc3NhZ2luZ1RpbWVvdXRzRm9yVGVzdGluZ10pOwogICAgIEVYUEVDVF9FUShbY29uZmln
dXJhdGlvbiBhdHRyU3R5bGVFbmFibGVkXSwgW2NvcHkgYXR0clN0eWxlRW5hYmxlZF0pOwogICAg
IEVYUEVDVF9UUlVFKFtbY29uZmlndXJhdGlvbiBhZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRV
UkxzXSBpc0VxdWFsOltjb3B5IGFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNdXSk7Ci0j
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9S
KQotICAgIEVYUEVDVF9FUShbY29uZmlndXJhdGlvbiB3aXJlbGVzc0NvbnRleHRJZGVudGlmaWVy
XSwgW2NvcHkgd2lyZWxlc3NDb250ZXh0SWRlbnRpZmllcl0pOwotI2VuZGlmCiAgICAgRVhQRUNU
X0VRKFtjb25maWd1cmF0aW9uIGRpc2tDYWNoZVNpemVPdmVycmlkZV0sIFtjb3B5IGRpc2tDYWNo
ZVNpemVPdmVycmlkZV0pOwogICAgIEVYUEVDVF9UUlVFKFtbY29uZmlndXJhdGlvbiBjYWNoZVBh
cnRpdGlvbmVkVVJMU2NoZW1lc10gaXNFcXVhbDpbY29weSBjYWNoZVBhcnRpdGlvbmVkVVJMU2No
ZW1lc11dKTsKICAgICBFWFBFQ1RfVFJVRShbW2NvbmZpZ3VyYXRpb24gYWx3YXlzUmV2YWxpZGF0
ZWRVUkxTY2hlbWVzXSBpc0VxdWFsOltjb3B5IGFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lc11d
KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>